syntec3-0-ui-components-test 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/README.md +5 -0
  2. package/dist/S3_0UC_main.csv +4 -0
  3. package/dist/S3_0UC_sub.csv +2 -0
  4. package/dist/globalVariableS3_0UC.json +1 -0
  5. package/dist/style.css +1 -0
  6. package/dist/syntec3-0-ui-components.es.js +19518 -0
  7. package/dist/syntec3-0-ui-components.es.js.map +1 -0
  8. package/dist/syntec3-0-ui-components.umd.js +23 -0
  9. package/dist/syntec3-0-ui-components.umd.js.map +1 -0
  10. package/dist/vite.svg +1 -0
  11. package/dist/web.config +17 -0
  12. package/package.json +137 -0
  13. package/src/App.vue +31 -0
  14. package/src/assets/fonts/genYoGothicTW-normal.js +7 -0
  15. package/src/assets/image/defaultImage.png +0 -0
  16. package/src/assets/vue.svg +1 -0
  17. package/src/components/Layout/modules/fullPageGlobal.vue +113 -0
  18. package/src/components/Layout/modules/viewFile/config.js +65 -0
  19. package/src/components/Layout/modules/viewFile/createView.vue +1000 -0
  20. package/src/components/Layout/modules/viewFile/filterCriteria.vue +816 -0
  21. package/src/components/Layout/modules/viewFile/viewList.vue +291 -0
  22. package/src/components/Layout/modules/viewFile/viewManageTool.js +271 -0
  23. package/src/components/Layout/modules/viewFile/viewRecord.vue +472 -0
  24. package/src/components/Layout/modules/viewFile/viewTabs.vue +542 -0
  25. package/src/components/Layout/tools/GlobalDialog.vue +115 -0
  26. package/src/components/Pagination.vue +139 -0
  27. package/src/components/columnConfigNext.vue +273 -0
  28. package/src/components/customFilter/customFilter.vue +492 -0
  29. package/src/components/customFilter/filterCriteria.vue +769 -0
  30. package/src/components/customTable/components/headerOperation/index.vue +136 -0
  31. package/src/components/customTable/components/headerTabs/index.vue +171 -0
  32. package/src/components/customTable/components/tableContent/index.vue +440 -0
  33. package/src/components/customTable/index.vue +305 -0
  34. package/src/components/dialog.vue +85 -0
  35. package/src/components/pageContent.vue +48 -0
  36. package/src/components/popover.vue +402 -0
  37. package/src/configFiles/apiFile/baseApiList.json +11 -0
  38. package/src/configFiles/apiFile/coreApiList.json +24 -0
  39. package/src/configFiles/apiFile/mesApiList.json +4 -0
  40. package/src/configFiles/apiFile/mmsApiList.json +3 -0
  41. package/src/configFiles/errorCode.json +291 -0
  42. package/src/configFiles/version.js +2 -0
  43. package/src/i18n/lang/en-us.json +2060 -0
  44. package/src/i18n/lang/errorCodeTranslate.mjs +847 -0
  45. package/src/i18n/lang/zh-cn.json +2062 -0
  46. package/src/i18n/lang/zh-tw.json +2059 -0
  47. package/src/index.js +115 -0
  48. package/src/main.js +51 -0
  49. package/src/plugins/excel.js +88 -0
  50. package/src/router/index.js +41 -0
  51. package/src/scriptFiles/apiConfig/baseApis.js +10 -0
  52. package/src/scriptFiles/apiConfig/mesApis.js +10 -0
  53. package/src/scriptFiles/apiConfig/mmsApis.js +10 -0
  54. package/src/scriptFiles/apiConfig/privateCloudCoreApis.js +13 -0
  55. package/src/scriptFiles/apiConfig/serviceRoute.js +23 -0
  56. package/src/scriptFiles/apis/baseApiFunction.js +63 -0
  57. package/src/scriptFiles/apis/mesApiFunction.js +15 -0
  58. package/src/scriptFiles/apis/mmsApiFunction.js +9 -0
  59. package/src/scriptFiles/apis/privateCloudCoreApiFunction.js +101 -0
  60. package/src/scriptFiles/backendApiFunction.js +11 -0
  61. package/src/scriptFiles/checkApiErrorMechanism.js +137 -0
  62. package/src/scriptFiles/common/objectDataProcessing.js +65 -0
  63. package/src/scss/base/commom.scss +1068 -0
  64. package/src/scss/base/dialog.scss +45 -0
  65. package/src/scss/base/index.scss +3 -0
  66. package/src/scss/base/table.scss +28 -0
  67. package/src/store/index.js +25 -0
  68. package/src/store/module/langStore.js +116 -0
  69. package/src/style.css +52 -0
  70. package/src/utils/excel.js +86 -0
  71. package/src/utils/formula.js +69 -0
  72. package/src/utils/https.js +13 -0
  73. package/src/utils/i18n.js +42 -0
  74. package/src/utils/shiftSelect.js +164 -0
  75. package/src/utils/summation.js +77 -0
  76. package/src/utils/tableWidth.js +29 -0
  77. package/src/utils/toolFun.js +93 -0
  78. package/src/views/productionWorkOrder/components/columnConfig.vue +242 -0
  79. package/src/views/productionWorkOrder/components/docCustomFieldForm.vue +739 -0
  80. package/src/views/productionWorkOrder/components/filePreview.vue +148 -0
  81. package/src/views/productionWorkOrder/components/querySearch.vue +363 -0
  82. package/src/views/productionWorkOrder/configFiles/excelImportErrorCode.json +94 -0
  83. package/src/views/productionWorkOrder/configFiles/pdfDefaultConfig.js +933 -0
  84. package/src/views/productionWorkOrder/configFiles/planMakingScript.js +600 -0
  85. package/src/views/productionWorkOrder/configFiles/productionRelatedScript.js +368 -0
  86. package/src/views/productionWorkOrder/configFiles/rulse.js +23 -0
  87. package/src/views/productionWorkOrder/configFiles/status.js +50 -0
  88. package/src/views/productionWorkOrder/index.vue +2174 -0
  89. package/src/views/productionWorkOrder/productionFlowLabel/component/addCirculationLabel.vue +394 -0
  90. package/src/views/productionWorkOrder/productionFlowLabel/component/circulationLabelTable.vue +124 -0
  91. package/src/views/productionWorkOrder/productionFlowLabel/component/materialPartFilePreview.vue +167 -0
  92. package/src/views/productionWorkOrder/productionFlowLabel/component/workOrderInformation.vue +28 -0
  93. package/src/views/productionWorkOrder/productionFlowLabel/index.vue +604 -0
  94. package/src/views/production_work_order/components/priorityTooltip.vue +53 -0
  95. package/src/views/production_work_order/index.vue +1307 -0
  96. package/src/views/review_record/components/materialInfo.vue +50 -0
  97. package/src/views/review_record/components/rootCause.vue +42 -0
  98. package/src/views/review_record/components/workDetail.vue +115 -0
  99. package/src/views/review_record/index.vue +884 -0
@@ -0,0 +1,402 @@
1
+ <template>
2
+ <el-popover v-model="isVisible" placement="right" width="350" :hide-after="200">
3
+ <template #reference>
4
+ <slot name="reference"></slot>
5
+ </template>
6
+ <div v-loading="isShowlading">
7
+ <!-- 标题 -->
8
+ <div class="custom-title">{{ t('materialDetails') }}</div>
9
+ <el-divider />
10
+ <div style="overflow: auto; max-height: 500px">
11
+ <!-- 表单 -->
12
+ <el-form :model="form" label-width="25%" label-position="right">
13
+ <!-- 物料名称 -->
14
+ <el-form-item :label="t('productName')">
15
+ <el-input class="input-max-width" :value="form[currentStrategy.nameField]" readonly />
16
+ </el-form-item>
17
+
18
+ <!-- 规格 -->
19
+ <!-- 可能存在页面无型号规格 -->
20
+ <el-form-item :label="t('spec')">
21
+ <el-input class="input-max-width" :value="form[currentStrategy.specField] || '--'" readonly />
22
+ </el-form-item>
23
+
24
+ <!-- 物料自定义栏位 -->
25
+ <!-- 无自定义栏位则不显示 -->
26
+ <el-form-item
27
+ v-for="CustomizeFields in props.popCustomizeFields"
28
+ :key="CustomizeFields[currentStrategy.customizeField.key]"
29
+ >
30
+ <!-- label -->
31
+ <template #label>
32
+ <el-tooltip
33
+ v-if="CustomizeFields[currentStrategy.customizeField.label].length > 6"
34
+ effect="dark"
35
+ :content="CustomizeFields[currentStrategy.customizeField.label]"
36
+ placement="top"
37
+ >
38
+ <template #default>
39
+ <span>{{ `${CustomizeFields[currentStrategy.customizeField.label].slice(0, 6)}...` }}</span>
40
+ </template>
41
+ </el-tooltip>
42
+ <span v-else> {{ CustomizeFields[currentStrategy.customizeField.label] }} </span>
43
+ </template>
44
+ <!-- 附件 -->
45
+ <span
46
+ v-if="
47
+ CustomizeFields[currentStrategy.customizeField.type] === 5 &&
48
+ handleCustomFieldAndValues(
49
+ CustomizeFields[currentStrategy.customizeField.key],
50
+ form[currentStrategy.customizeField.value],
51
+ ).length !== 0
52
+ "
53
+ class="input-max-width"
54
+ >
55
+ <el-check-tag
56
+ v-for="multipleItem in handleCustomFieldAndValues(
57
+ CustomizeFields[currentStrategy.customizeField.key],
58
+ form[currentStrategy.customizeField.value],
59
+ )"
60
+ :key="multipleItem.fileId"
61
+ checked
62
+ type="primary"
63
+ style="margin-right: 0.5rem"
64
+ round
65
+ @click="dowFileItem(multipleItem)"
66
+ >
67
+ {{ multipleItem.fileName }}
68
+ </el-check-tag>
69
+ </span>
70
+ <!-- 超链接 -->
71
+ <span
72
+ v-else-if="
73
+ CustomizeFields[currentStrategy.customizeField.type] === 6 &&
74
+ handleCustomFieldAndValues(
75
+ CustomizeFields[currentStrategy.customizeField.key],
76
+ form[currentStrategy.customizeField.value],
77
+ ) !== ''
78
+ "
79
+ >
80
+ <el-tooltip
81
+ :content="
82
+ handleCustomFieldAndValues(
83
+ CustomizeFields[currentStrategy.customizeField.key],
84
+ form[currentStrategy.customizeField.value],
85
+ )
86
+ "
87
+ placement="top"
88
+ :enterable="false"
89
+ >
90
+ <el-button link @click="hyperLinkClick(CustomizeFields, form[currentStrategy.customizeField.value])">
91
+ <v-icon class="mdi mdi-link"></v-icon>
92
+ </el-button>
93
+ </el-tooltip>
94
+ </span>
95
+ <!-- 单选 -->
96
+ <span
97
+ v-else-if="
98
+ CustomizeFields[currentStrategy.customizeField.type] === 7 &&
99
+ handleCustomFieldAndValues(
100
+ CustomizeFields[currentStrategy.customizeField.key],
101
+ form[currentStrategy.customizeField.value],
102
+ ) !== ''
103
+ "
104
+ class="input-max-width"
105
+ >
106
+ <el-tag type="primary" style="margin-right: 0.5rem" round>
107
+ {{
108
+ handleCustomFieldAndValues(
109
+ CustomizeFields[currentStrategy.customizeField.key],
110
+ form[currentStrategy.customizeField.value],
111
+ )
112
+ }}
113
+ </el-tag>
114
+ </span>
115
+ <!-- 多选 -->
116
+ <span
117
+ v-else-if="
118
+ CustomizeFields[currentStrategy.customizeField.type] === 8 &&
119
+ handleCustomFieldAndValues(
120
+ CustomizeFields[currentStrategy.customizeField.key],
121
+ form[currentStrategy.customizeField.value],
122
+ ) !== ''
123
+ "
124
+ class="input-max-width"
125
+ >
126
+ <el-tag
127
+ v-for="(multipleItem, multipleItemIndex) in handleCustomFieldAndValues(
128
+ CustomizeFields[currentStrategy.customizeField.key],
129
+ form[currentStrategy.customizeField.value],
130
+ )"
131
+ :key="multipleItemIndex"
132
+ type="primary"
133
+ style="margin-right: 0.5rem"
134
+ round
135
+ >
136
+ {{ multipleItem }}
137
+ </el-tag>
138
+ </span>
139
+ <!-- 其余自定义栏位 -->
140
+ <el-input
141
+ v-else
142
+ class="input-max-width"
143
+ :value="
144
+ handleCustomFieldAndValues(
145
+ CustomizeFields[currentStrategy.customizeField.key],
146
+ form[currentStrategy.customizeField.value],
147
+ ) || '--'
148
+ "
149
+ readonly
150
+ />
151
+ </el-form-item>
152
+
153
+ <!-- 图片预览 -->
154
+ <!-- 长宽最大200px,比例自适应 -->
155
+ <el-form-item :label="t('preview')">
156
+ <div v-if="url" style="max-height: 200px; max-width: 200px">
157
+ <el-image :src="url" fit="contain" />
158
+ </div>
159
+ <el-input v-else class="input-max-width" :value="imageText" readonly />
160
+ </el-form-item>
161
+ </el-form>
162
+ </div>
163
+ </div>
164
+ </el-popover>
165
+ </template>
166
+
167
+ <script setup>
168
+ import { ref, onMounted, nextTick, computed } from 'vue';
169
+ import backendApiFunction from '@/scriptFiles/checkApiErrorMechanism';
170
+ import { useI18n } from 'vue-i18n';
171
+ import { dayjs, ElMessage } from 'element-plus';
172
+
173
+ const { t } = useI18n();
174
+ /* 字段映射额外说明
175
+ props.popStrategies
176
+ {
177
+ numberField: 'productNumber', //物料编号
178
+ nameField: 'materialName', //物料名称
179
+ specField: 'materialSpec', //物料规格
180
+ customizeField: { //自定义字段
181
+ key: 'customAttributeId', //表单内字段数据与自定义字段串联key
182
+ customizeFieldKey: 'customAttributeId',
183
+ label: 'label', //form-ltem上的label
184
+ value: 'customValues', //表单内的数据
185
+ writeValue: 'attributeValue', //值
186
+ type: 'displayType', //不同类型的枚举,不同路由下枚举字段未统一
187
+ expandField: 'customAttribute', //自定义字段存放的层级不同,无法筛选,需要展开至同一层级,无需展开则不传
188
+ },
189
+ }
190
+ */
191
+ const props = defineProps({
192
+ value: {
193
+ type: Boolean,
194
+ required: true,
195
+ },
196
+ popInformation: {
197
+ type: Object,
198
+ required: true,
199
+ }, //数据(缺少自定义字段数据)
200
+ popType: String, //路由
201
+ popCustomizeFields: {
202
+ type: Object,
203
+ default: () => {
204
+ [];
205
+ },
206
+ }, //自定义字段
207
+ popTitle: {
208
+ type: String,
209
+ default: '物料详情',
210
+ }, //标题
211
+ popStrategies: {
212
+ type: Object,
213
+ required: true,
214
+ }, //字段映射
215
+ });
216
+ const isVisible = ref(props.value);
217
+ const isShowlading = ref(false);
218
+ const form = ref({});
219
+
220
+ // 当前策略
221
+ const currentStrategy = computed(() => props.popStrategies);
222
+
223
+ /* 图片相关 */
224
+ const url = ref(null);
225
+ const imageText = t('materialNoImage');
226
+ const fetchPopoverImage = async () => {
227
+ try {
228
+ const { data } = await backendApiFunction.getMaterialImage({
229
+ materialPartNumber: form.value[currentStrategy.value.numberField],
230
+ });
231
+ if (data?.type.includes('image')) {
232
+ const blob = new Blob([data], { type: data.type });
233
+ const reader = new FileReader();
234
+ reader.readAsDataURL(blob);
235
+ reader.onload = () => {
236
+ url.value = reader.result;
237
+ };
238
+ }
239
+ } catch (error) {
240
+ console.error('[error]错误:', error);
241
+ ElMessage.error(t('apiError'));
242
+ }
243
+ };
244
+
245
+ /**
246
+ * 自定义字段是超链接时的点击事件
247
+ * @param {object} item 自定义字段对象
248
+ * @param {array} docCustomFieldAndValues 自定义字段所有数据
249
+ */
250
+ const hyperLinkClick = (item, docCustomFieldAndValues) => {
251
+ const hyperLinkUrlStr = docCustomFieldAndValues.filter(
252
+ (ite) => ite.docCustomId === item[currentStrategy.value.customizeField.customizeFieldKey],
253
+ )[0][currentStrategy.value.customizeField.writeValue];
254
+ window.open(hyperLinkUrlStr, '_blank');
255
+ };
256
+ /**
257
+ * 下载附件序列化方法
258
+ * @param {string} fileName 文件名
259
+ * @param {object} res 请求响应对象
260
+ */
261
+ const fileDownSerialize = (fileName, res) => {
262
+ // 创建一个 Blob URL 指向这个 Blob 对象
263
+ const url = window.URL.createObjectURL(new Blob([res.data], { type: res.headers['content-type'] }));
264
+ // 创建一个临时的 <a> 元素
265
+ const link = document.createElement('a');
266
+ link.href = url;
267
+ // 设置下载的文件名(可选,但推荐)
268
+ // 如果服务器没有在响应头中提供 Content-Disposition,你需要手动设置文件名
269
+ link.setAttribute('download', fileName);
270
+ // 将 <a> 元素添加到文档中(不需要真正添加到可视区域)
271
+ document.body.appendChild(link);
272
+ // 触发点击事件以下载文件
273
+ link.click();
274
+ // 释放 Blob URL(可选,但推荐)
275
+ // 注意:这应该在确保文件下载已经开始之后进行,否则在某些浏览器中可能会导致下载失败
276
+ setTimeout(() => {
277
+ window.URL.revokeObjectURL(url);
278
+ document.body.removeChild(link);
279
+ }, 0);
280
+ };
281
+ /**
282
+ * 自定义字段是附件时的点击事件
283
+ * @param {object} item 附件对象
284
+ */
285
+ const dowFileItem = async (item) => {
286
+ const fileName = item.fileName;
287
+ if (item) {
288
+ const data = {
289
+ docCode: 'doc_5',
290
+ docCustomId: item.docCustomId,
291
+ fileId: item.fileId,
292
+ };
293
+ isShowlading.value = true;
294
+ try {
295
+ const res = await backendApiFunction.docDownloadFile(data);
296
+ if (res.status === 200) {
297
+ fileDownSerialize(fileName, res);
298
+ ElMessage.success(t('downloadSuccessful'));
299
+ } else {
300
+ ElMessage.error(t('apiError'));
301
+ }
302
+ } catch (error) {
303
+ console.error('[error]错误:', error);
304
+ ElMessage.error(t('apiError'));
305
+ } finally {
306
+ isShowlading.value = false;
307
+ }
308
+ }
309
+ };
310
+ /**
311
+ * 根据type进行数据处理
312
+ * @param fieldId 自定义字段数据key
313
+ * @param list 表单数据value
314
+ */
315
+ const handleCustomFieldAndValues = (fieldId, list) => {
316
+ const field = props.popCustomizeFields.find(
317
+ (item) => item[currentStrategy.value.customizeField.customizeFieldKey] === fieldId,
318
+ );
319
+ const i = list?.find((item) => item.docCustomId === fieldId);
320
+ if (list && field && i) {
321
+ // 日期
322
+ if (field[currentStrategy.value.customizeField.type] === 3) {
323
+ return dayjs(Number(i[currentStrategy.value.customizeField.writeValue])).format('YYYY-MM-DD HH:mm:ss');
324
+ }
325
+ // 日期区间
326
+ if (field[currentStrategy.value.customizeField.type] === 4) {
327
+ try {
328
+ const val = JSON.parse(i[currentStrategy.value.customizeField.writeValue]);
329
+ if (val) {
330
+ return `${dayjs(Number(val[0])).format('YYYY-MM-DD HH:mm:ss')} ~ ${dayjs(Number(val[1])).format('YYYY-MM-DD HH:mm:ss')}`;
331
+ }
332
+ return '';
333
+ } catch (error) {
334
+ return '';
335
+ }
336
+ }
337
+ // 附件
338
+ if (field[currentStrategy.value.customizeField.type] === 5) {
339
+ if (i.fileData && i.fileData.length !== 0) {
340
+ return i.fileData.map((item) => ({
341
+ ...item,
342
+ docCustomId: i.docCustomId,
343
+ }));
344
+ } else {
345
+ return '';
346
+ }
347
+ }
348
+ // 单选
349
+ if (field[currentStrategy.value.customizeField.type] === 7) {
350
+ return i[currentStrategy.value.customizeField.writeValue]
351
+ ? JSON.parse(i[currentStrategy.value.customizeField.writeValue])
352
+ : '';
353
+ }
354
+ // 复选框
355
+ if (field[currentStrategy.value.customizeField.type] === 8) {
356
+ return i[currentStrategy.value.customizeField.writeValue]
357
+ ? JSON.parse(i[currentStrategy.value.customizeField.writeValue])
358
+ : '';
359
+ }
360
+ return i[currentStrategy.value.customizeField.writeValue] || '';
361
+ }
362
+ return '';
363
+ };
364
+ const fetchPopoverInfo = async () => {
365
+ try {
366
+ form.value = props.popInformation;
367
+ if (currentStrategy.value.customizeField?.expandField) {
368
+ form.value.customValues = form.value.customValues.map((customValue) => {
369
+ const { customAttribute, ...rest } = customValue;
370
+ return {
371
+ ...rest,
372
+ ...customAttribute,
373
+ };
374
+ });
375
+ }
376
+ } catch (error) {
377
+ console.error('[error]错误:', error);
378
+ ElMessage.error(t('apiError'));
379
+ }
380
+ };
381
+
382
+ onMounted(() => {
383
+ nextTick(async () => {
384
+ isShowlading.value = true;
385
+ await fetchPopoverInfo();
386
+ await fetchPopoverImage();
387
+ isShowlading.value = false;
388
+ });
389
+ });
390
+ </script>
391
+ <style scoped>
392
+ .el-divider {
393
+ margin: 4px 0px 12px;
394
+ }
395
+ .custom-title {
396
+ font-size: 16px;
397
+ text-align: center;
398
+ }
399
+ .input-max-width {
400
+ max-width: 96%;
401
+ }
402
+ </style>
@@ -0,0 +1,11 @@
1
+ {
2
+ "docCustomUpload": "/Internal/FrontEnd/DmlDocCustom/Upload",
3
+ "querySetting": "/Internal/FrontEnd/DmlDocCustom/QuerySetting",
4
+ "docDownloadFile": "/Internal/FrontEnd/DmlDocCustom/DownloadFile",
5
+ "docViewFile": "/Internal/FrontEnd/DmlDocCustom/ViewFile",
6
+ "updateColumnSettingNext": "/Internal/FrontEnd/EmpDisplayConfig/Field",
7
+ "queryColumnSettingNext": "/Internal/FrontEnd/EmpDisplayConfig/Field/Query",
8
+ "insertOrUpdateFilterCondition":"/Internal/FrontEnd/DmlFilterCondition/DmlFilterCondition/InsertOrUpdate",
9
+ "queryFilterCondition":"/Internal/FrontEnd/DmlFilterCondition/DmlFilterCondition/Query",
10
+ "getFieldSetting":"/Internal/FrontEnd/DmlFilterCondition/DmlFilterCondition/GetFieldSetting"
11
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "logins": "/Internal/FrontEnd/Auth/Login",
3
+ "logout": "/Internal/FrontEnd/Auth/Logout",
4
+ "refreshToken": "/Internal/FrontEnd/Auth/Refresh",
5
+ "materialList": "/Internal/Common/Query/MaterialList",
6
+ "empID": "/Internal/FrontEnd/Auth/User/EmpID",
7
+ "employeeList": "/Internal/FrontEnd/Management/Employee/List",
8
+ "QueryMyPermission": "/Internal/FrontEnd/Management/Permission/QueryMyPermission",
9
+ "queryPageSetting": "/Internal/FrontEnd/Management/Employee/QueryPageSetting",
10
+ "updatePageSetting": "/Internal/FrontEnd/Management/Employee/UpdatePageSetting",
11
+ "getViewOnlyReadList": "/Internal/View/CommonList",
12
+ "getViewOptEmployeeList": "/Internal/View/GetUserList",
13
+ "getViewLogList": "/Internal/View/OperateLogList",
14
+ "getViewList": "/Internal/View/List",
15
+ "addView": "/Internal/View/InsertView",
16
+ "IsExistViewName": "/Internal/View/IsExistViewName",
17
+ "modifyView": "/Internal/View/EditView",
18
+ "deleteView": "/Internal/View/DeleteView",
19
+ "getViewTabDetail": "/Internal/View/GetView",
20
+ "getViewFieldList": "/Internal/View/GetFieldList",
21
+ "upadateViewOrder": "/Internal/View/UpdateViewOrder",
22
+ "getViewPermissionEmployeeList": "/Internal/FrontEnd/Management/Employee/EmployeeList",
23
+ "getViewpersionList": "/Internal/FrontEnd/Management/Employee/AllEmployeeList"
24
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "planFormulationQuery": "/Internal/Common/ProductionPlan/MainPage/Search",
3
+ "GetReviewRecord": "/Internal/Common/ProductionReview/GetReviewRecord"
4
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "materialCategoryLastLevel": "/Internal/FrontEnd/Command/materialType/GetMaterialCategoryLowestLevel"
3
+ }