cloud-web-corejs 1.0.54-dev.781 → 1.0.54-dev.783

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 (33) hide show
  1. package/package.json +1 -1
  2. package/src/components/VabUpload/index.vue +242 -242
  3. package/src/components/VabUpload/mixins.js +1971 -1971
  4. package/src/components/VabUpload/privateProfileDialog.vue +2 -2
  5. package/src/components/hiprint/view/design/index.vue +7 -2
  6. package/src/components/obsUpload/index.vue +234 -234
  7. package/src/components/obsUpload/mixins.js +1542 -1542
  8. package/src/components/vb-tabs/x-tabs.vue +7 -3
  9. package/src/components/xform/docs//346/240/221/350/241/250rowField/346/224/266/346/225/233-/350/220/275/345/234/260/346/226/207/346/241/243.md +1427 -0
  10. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +2 -2
  11. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +2 -2
  12. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +2 -2
  13. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +11 -2
  14. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +369 -369
  15. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesSelect.vue +69 -23
  16. package/src/components/xform/form-render/container-item/data-table-item.vue +1 -1
  17. package/src/components/xform/form-render/container-item/data-table-mixin.js +1469 -428
  18. package/src/components/xform/form-render/indexMixin.js +379 -263
  19. package/src/components/xform/mixins/defaultHandle.js +234 -28
  20. package/src/components/xform/mixins/scriptHttp.js +4 -4
  21. package/src/components/xform/utils/treeTableUtil.js +1265 -0
  22. package/src/components/xform/utils/util.js +29 -14
  23. package/src/microRouter/index.js +3 -0
  24. package/src/mixins/tableTree/index.js +77 -14
  25. package/src/store/config/index.js +28 -28
  26. package/src/utils/menuAdapter.js +277 -277
  27. package/src/utils/resolveViewComponent.js +203 -203
  28. package/src/utils/vab.js +6 -3
  29. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +9 -2
  30. package/src/views/user/common_attribute/list.vue +1 -1
  31. package/src/views/user/form/vform/render.vue +17 -2
  32. package/src/views/user/form/view/list.vue +11 -10
  33. package/src/views/user/wf/wfReport/index.vue +625 -625
@@ -233,27 +233,42 @@ export const insertCustomCssToHead = function (cssCode, formId = "") {
233
233
  head.appendChild(newStyle);
234
234
  };
235
235
 
236
+ /**
237
+ * 注入表单全局函数(formConfig.functions):把代码执行在【真实全局作用域】,
238
+ * 使表单各类事件脚本能引用到其中定义的函数。
239
+ *
240
+ * 为什么不再插 <script>:事件脚本一律由 new Function 创建,其作用域链恒为真实全局作用域;
241
+ * 而 qiankun 沙箱 patch 了 head/body 的 appendChild,子应用里动态 script 不会进 DOM,
242
+ * 改由 execScripts 以 (function(window){with(window){...}}).bind(proxy) 包裹执行——
243
+ * `function foo(){}` 落在包裹函数的作用域里、`window.foo=` 落在 proxy 上,两者在真实
244
+ * window 上都不存在,调用侧必然 ReferenceError 且被各处 try/catch 吞掉(静默失效)。
245
+ *
246
+ * 间接 eval 由规范保证在全局作用域、非严格模式下求值,函数声明因此成为真实 window 的属性,
247
+ * 与 new Function 的取值环境对齐;qiankun 对 `eval` 有显式特判(proxySandbox 返回原生 eval),
248
+ * 主应用形态与子应用形态行为一致。
249
+ *
250
+ * 函数名与 formId 参数保持不变:调用方(含 haier 分支)沿用此签名,改名只增加同步面。
251
+ * 现已不产生 DOM 节点、无需按 id 清理,formId 仅用于 sourceURL 定位。
252
+ */
236
253
  export const insertGlobalFunctionsToHtml = function (
237
254
  functionsCode,
238
255
  formId = ""
239
256
  ) {
240
- let bodyEle = document.getElementsByTagName("body")[0];
241
- let oldScriptEle = document.getElementById("v_form_global_functions");
242
- !!oldScriptEle && bodyEle.removeChild(oldScriptEle); //先清除后插入!!
243
- if (!!formId) {
244
- oldScriptEle = document.getElementById(
245
- "v_form_global_functions" + "-" + formId
246
- );
247
- !!oldScriptEle && bodyEle.removeChild(oldScriptEle); //先清除后插入!!
257
+ if (!functionsCode || typeof functionsCode !== "string") {
258
+ return;
248
259
  }
249
-
250
- let newScriptEle = document.createElement("script");
251
- newScriptEle.id = !!formId
260
+ let sourceName = !!formId
252
261
  ? "v_form_global_functions" + "-" + formId
253
262
  : "v_form_global_functions";
254
- newScriptEle.type = "text/javascript";
255
- newScriptEle.innerHTML = functionsCode;
256
- bodyEle.appendChild(newScriptEle);
263
+ try {
264
+ // (0, eval) 是间接调用形式,不可简写为 eval(...):直接 eval 会继承当前模块作用域,
265
+ // 函数声明将落在模块内而非真实 window 上。sourceURL 让 devtools 里可定位、可下断点。
266
+ (0, eval)(functionsCode + "\n//# sourceURL=" + sourceName + ".js");
267
+ } catch (e) {
268
+ // 原先 <script> 注入时语法/运行时错误只进 window.onerror、不影响表单渲染,
269
+ // 这里必须同样吞掉:否则会中断 initFormObject 整条表单初始化链路
270
+ console.error("[xform] 表单全局函数执行失败:" + sourceName, e);
271
+ }
257
272
  };
258
273
 
259
274
  export const optionExists = function (optionsObj, optionName) {
@@ -258,6 +258,9 @@ function activateMicroApp(key) {
258
258
  const loadingInstance = Loading.service({
259
259
  target: appMain || wrapper,
260
260
  text: "加载中…",
261
+ // 全局 .el-loading-spinner 的转圈伪元素是 position:fixed(按全屏遮罩写的),
262
+ // 局部遮罩下会跑到视口中心、与文字错位,靠这个类在样式里纠正(见 style.scss)
263
+ customClass: "micro-loading",
261
264
  });
262
265
  if (appMain && loadingInstance.$el && loadingInstance.$el.style) {
263
266
  loadingInstance.$el.style.top = wrapper.offsetTop + "px";
@@ -1,4 +1,11 @@
1
1
  /**version-1.0*/
2
+ import {
3
+ resolveTreeFields,
4
+ resolveTreeIdentityConfig,
5
+ treeKeyEquals,
6
+ isTemporaryTreeKey,
7
+ } from "../../components/xform/utils/treeTableUtil";
8
+
2
9
  let mixins = {};
3
10
  mixins = {
4
11
  components: {},
@@ -39,6 +46,8 @@ mixins = {
39
46
  let that = this;
40
47
  let $grid = obj.$table.$xegrid;
41
48
  let originOption = $grid.originOption;
49
+ let treeContext = this.resolveTableTreeContext($grid);
50
+ let physicalIdField = treeContext.identityConfig.physicalIdField;
42
51
  let formData = commonDataUtil.handleForm(obj.row);
43
52
  that.$http({
44
53
  url: originOption.editSaveUrl || '',
@@ -50,7 +59,12 @@ mixins = {
50
59
  type: 'success',
51
60
  message: '保存成功!'
52
61
  });
53
- if (obj.row.id == res.objx.id) {
62
+ if (
63
+ treeKeyEquals(
64
+ obj.row[physicalIdField],
65
+ res.objx[physicalIdField]
66
+ )
67
+ ) {
54
68
  $grid.clearActived().then(() => {
55
69
  Object.assign(obj.row, res.objx);
56
70
  });
@@ -62,17 +76,27 @@ mixins = {
62
76
  }
63
77
  })
64
78
  },
65
- findAllRows(rows,grid) {
79
+ findAllRows(rows, grid, visited) {
66
80
  let newRows = [];
67
- let childrenField = grid.treeConfig?.childrenField;
68
- if (!childrenField) {
69
- return rows;
70
- }
81
+ let fields = this.resolveTableTreeContext(grid).fields;
82
+ let childrenFields = [
83
+ fields.childrenField,
84
+ fields.mapChildrenField,
85
+ ].filter((field, index, values) => field && values.indexOf(field) === index);
86
+ let seen = visited || new WeakSet();
71
87
  for (let i = 0; i < rows.length; i++) {
72
88
  let row = rows[i];
89
+ if (!row || typeof row !== "object" || seen.has(row)) {
90
+ continue;
91
+ }
92
+ seen.add(row);
73
93
  newRows.push(row);
74
- if (row[childrenField]) {
75
- let cRows = this.findAllRows(row[childrenField],grid);
94
+ for (let j = 0; j < childrenFields.length; j++) {
95
+ let children = row[childrenFields[j]];
96
+ if (!Array.isArray(children)) {
97
+ continue;
98
+ }
99
+ let cRows = this.findAllRows(children, grid, seen);
76
100
  if (cRows) {
77
101
  newRows = newRows.concat(cRows);
78
102
  }
@@ -90,7 +114,7 @@ mixins = {
90
114
  let rows = this.findAllRows(fullData,$grid);
91
115
  for (let i = 0; i < rows.length; i++) {
92
116
  let row = rows[i];
93
- if (!this.hasSaveRow(row)) {
117
+ if (!this.hasSaveRow(row, $grid)) {
94
118
  return true;
95
119
  }
96
120
  }
@@ -98,7 +122,7 @@ mixins = {
98
122
  let rows = this.findAllRows(tableData,$grid);
99
123
  for (let i = 0; i < rows.length; i++) {
100
124
  let row = rows[i];
101
- if (!this.hasSaveRow(row)) {
125
+ if (!this.hasSaveRow(row, $grid)) {
102
126
  return true;
103
127
  }
104
128
  }
@@ -186,12 +210,51 @@ mixins = {
186
210
  });
187
211
  });
188
212
  },
189
- hasSaveRow(row) {
190
- if (!row || !row.id || row.id.toString().indexOf("row_") == 0) {
213
+ resolveTableTreeContext($grid) {
214
+ let grid = $grid
215
+ || (typeof this.getGridTable === "function"
216
+ ? this.getGridTable()
217
+ : null);
218
+ let originOption = grid?.params?.originOption || grid?.originOption || {};
219
+ let treeConfig = this.resolvedTreeConfig
220
+ || grid?.treeConfig
221
+ || originOption.config?.treeConfig
222
+ || { rowField: "id" };
223
+ let fields = resolveTreeFields(treeConfig, { strict: false });
224
+ let identityConfig = this.resolvedTreeIdentityConfig
225
+ || originOption.treeIdentityConfig
226
+ || resolveTreeIdentityConfig(treeConfig, {});
227
+ return { fields, identityConfig };
228
+ },
229
+ hasSaveRow(row, $grid) {
230
+ if (!row) {
231
+ return false;
232
+ }
233
+ let treeContext = this.resolveTableTreeContext($grid);
234
+ let physicalIdField = treeContext.identityConfig.physicalIdField || "id";
235
+ let physicalId = row[physicalIdField];
236
+ if (physicalId == null || physicalId === "") {
237
+ return false;
238
+ }
239
+ if (
240
+ physicalIdField === treeContext.fields.rowField
241
+ && isTemporaryTreeKey(
242
+ row,
243
+ treeContext.fields.rowField,
244
+ treeContext.identityConfig
245
+ )
246
+ ) {
247
+ return false;
248
+ }
249
+ // 兼容仅写入 row_*、尚无显式 marker 的历史默认 id 新行。
250
+ if (
251
+ physicalIdField === "id"
252
+ && treeContext.fields.rowField === "id"
253
+ && physicalId.toString().indexOf("row_") === 0
254
+ ) {
191
255
  return false;
192
- } else {
193
- return true;
194
256
  }
257
+ return true;
195
258
  }
196
259
  }
197
260
  }
@@ -15,7 +15,7 @@ modules = {
15
15
  menuEnName: null,
16
16
  menuCode: "menu_kind:list",
17
17
  sn: null,
18
- menuImg: null,
18
+ menuImg: "icon-fenlei",
19
19
  url: "@base/views/bd/setting/menu_kind/list",
20
20
  route: "/bd/setting/menu_kind/list",
21
21
  enabled: true,
@@ -38,7 +38,7 @@ modules = {
38
38
  menuEnName: null,
39
39
  menuCode: "table_model:list",
40
40
  sn: null,
41
- menuImg: null,
41
+ menuImg: "icon-biaoge",
42
42
  url: "@base/views/bd/setting/table_model/list",
43
43
  route: "/bd/setting/table_model/list",
44
44
  enabled: true,
@@ -61,7 +61,7 @@ modules = {
61
61
  menuEnName: null,
62
62
  menuCode: "bd_form_template:list",
63
63
  sn: null,
64
- menuImg: null,
64
+ menuImg: "icon-biaodanguanli",
65
65
  url: "@base/views/bd/setting/form_template/list",
66
66
  route: "/bd/setting/form_template/list",
67
67
  enabled: true,
@@ -84,7 +84,7 @@ modules = {
84
84
  menuEnName: null,
85
85
  menuCode: "form_script:list",
86
86
  sn: null,
87
- menuImg: null,
87
+ menuImg: "icon-jiaobentitle",
88
88
  url: "@base/views/bd/setting/form_script/list",
89
89
  route: "/bd/setting/form_script/list",
90
90
  enabled: true,
@@ -107,7 +107,7 @@ modules = {
107
107
  menuEnName: null,
108
108
  menuCode: "form_script:list1",
109
109
  sn: null,
110
- menuImg: null,
110
+ menuImg: "icon-liuchengshu",
111
111
  url: "@base/views/bd/setting/form_script/list1",
112
112
  route: "/bd/setting/form_script/list1",
113
113
  enabled: true,
@@ -130,7 +130,7 @@ modules = {
130
130
  menuEnName: null,
131
131
  menuCode: "form_script:list2",
132
132
  sn: null,
133
- menuImg: null,
133
+ menuImg: "icon-bianma1",
134
134
  url: "@base/views/bd/setting/form_script/list2",
135
135
  route: "/bd/setting/form_script/list2",
136
136
  enabled: true,
@@ -153,7 +153,7 @@ modules = {
153
153
  menuEnName: null,
154
154
  menuCode: "project_tag:list",
155
155
  sn: null,
156
- menuImg: null,
156
+ menuImg: "icon-biaoqianweihu",
157
157
  url: "@base/views/user/project_tag/list",
158
158
  route: "/user/project_tag/list",
159
159
  enabled: true,
@@ -176,7 +176,7 @@ modules = {
176
176
  menuEnName: null,
177
177
  menuCode: "bd_attach_setting:list",
178
178
  sn: null,
179
- menuImg: null,
179
+ menuImg: "icon-xitongshezhi",
180
180
  url: "@base/views/bd/setting/config_manage/list",
181
181
  route: "/bd/setting/config_manage/list",
182
182
  enabled: true,
@@ -199,7 +199,7 @@ modules = {
199
199
  menuEnName: null,
200
200
  menuCode: "user:form_list",
201
201
  sn: null,
202
- menuImg: "icon-kehuxinzeng",
202
+ menuImg: "icon-yonghuguanli",
203
203
  url: "@base/views/user/user/form_list",
204
204
  route: "/user/user/form_list",
205
205
  enabled: true,
@@ -221,7 +221,7 @@ modules = {
221
221
  menuEnName: null,
222
222
  menuCode: "groups:list",
223
223
  sn: null,
224
- menuImg: "icon-kehuxinzeng",
224
+ menuImg: "icon-fenzu",
225
225
  url: "@base/views/user/groups/list",
226
226
  route: "/user/groups/list",
227
227
  enabled: true,
@@ -243,7 +243,7 @@ modules = {
243
243
  menuEnName: null,
244
244
  menuCode: "form_template:wf_list",
245
245
  sn: null,
246
- menuImg: null,
246
+ menuImg: "icon-danjuliuchengshezhi",
247
247
  url: "@base/views/bd/setting/form_template/wf_list",
248
248
  route: "/bd/setting/form_template/wf_list",
249
249
  enabled: true,
@@ -265,7 +265,7 @@ modules = {
265
265
  menuEnName: null,
266
266
  menuCode: "extend_datasource:list",
267
267
  sn: null,
268
- menuImg: null,
268
+ menuImg: "icon-shujuguanli",
269
269
  url: "@base/views/user/extend_datasource/list",
270
270
  route: "/user/extend_datasource/list",
271
271
  enabled: true,
@@ -287,7 +287,7 @@ modules = {
287
287
  menuEnName: null,
288
288
  menuCode: "form_import_log:list",
289
289
  sn: null,
290
- menuImg: null,
290
+ menuImg: "icon-yanfaguanli-rizhiguanli",
291
291
  url: "@base/views/bd/setting/form_import_log/list",
292
292
  route: "/bd/setting/form_import_log/list",
293
293
  enabled: true,
@@ -311,7 +311,7 @@ modules = {
311
311
  menuEnName: null,
312
312
  menuCode: "menu_kind:list",
313
313
  sn: null,
314
- menuImg: null,
314
+ menuImg: "icon-fenlei",
315
315
  url: "@base/views/bd/setting/menu_kind/list",
316
316
  route: "/bd/setting/menu_kind/list",
317
317
  enabled: true,
@@ -334,7 +334,7 @@ modules = {
334
334
  menuEnName: null,
335
335
  menuCode: "user:form_list",
336
336
  sn: null,
337
- menuImg: "icon-kehuxinzeng",
337
+ menuImg: "icon-yonghuguanli",
338
338
  url: "@base/views/user/user/form_list",
339
339
  route: "/user/user/form_list",
340
340
  enabled: true,
@@ -357,7 +357,7 @@ modules = {
357
357
  menuEnName: null,
358
358
  menuCode: "groups:list",
359
359
  sn: null,
360
- menuImg: "icon-kehuxinzeng",
360
+ menuImg: "icon-fenzu",
361
361
  url: "@base/views/user/groups/list",
362
362
  route: "/user/groups/list",
363
363
  enabled: true,
@@ -379,7 +379,7 @@ modules = {
379
379
  menuEnName: null,
380
380
  menuCode: "form_template:wf_list",
381
381
  sn: null,
382
- menuImg: null,
382
+ menuImg: "icon-danjuliuchengshezhi",
383
383
  url: "@base/views/bd/setting/form_template/wf_list",
384
384
  route: "/bd/setting/form_template/wf_list",
385
385
  enabled: true,
@@ -401,7 +401,7 @@ modules = {
401
401
  menuEnName: null,
402
402
  menuCode: "extend_datasource:list",
403
403
  sn: null,
404
- menuImg: null,
404
+ menuImg: "icon-shujuguanli",
405
405
  url: "@base/views/user/extend_datasource/list",
406
406
  route: "/user/extend_datasource/list",
407
407
  enabled: true,
@@ -423,7 +423,7 @@ modules = {
423
423
  menuEnName: null,
424
424
  menuCode: "form_import_log:list",
425
425
  sn: null,
426
- menuImg: null,
426
+ menuImg: "icon-yanfaguanli-rizhiguanli",
427
427
  url: "@base/views/bd/setting/form_import_log/list",
428
428
  route: "/bd/setting/form_import_log/list",
429
429
  enabled: true,
@@ -447,7 +447,7 @@ modules = {
447
447
  menuEnName: null,
448
448
  menuCode: "menu_kind:list",
449
449
  sn: null,
450
- menuImg: null,
450
+ menuImg: "icon-fenlei",
451
451
  url: "@base/views/bd/setting/menu_kind/list",
452
452
  route: "/bd/setting/menu_kind/list",
453
453
  enabled: true,
@@ -470,7 +470,7 @@ modules = {
470
470
  menuEnName: null,
471
471
  menuCode: "table_model:list",
472
472
  sn: null,
473
- menuImg: null,
473
+ menuImg: "icon-biaoge",
474
474
  url: "@base/views/bd/setting/table_model/list",
475
475
  route: "/bd/setting/table_model/list",
476
476
  enabled: true,
@@ -493,7 +493,7 @@ modules = {
493
493
  menuEnName: null,
494
494
  menuCode: "bd_form_template:list",
495
495
  sn: null,
496
- menuImg: null,
496
+ menuImg: "icon-biaodanguanli",
497
497
  url: "@base/views/bd/setting/form_template/list",
498
498
  route: "/bd/setting/form_template/list",
499
499
  enabled: true,
@@ -516,7 +516,7 @@ modules = {
516
516
  menuEnName: null,
517
517
  menuCode: "form_script:list1",
518
518
  sn: null,
519
- menuImg: null,
519
+ menuImg: "icon-liuchengshu",
520
520
  url: "@base/views/bd/setting/form_script/list1",
521
521
  route: "/bd/setting/form_script/list1",
522
522
  enabled: true,
@@ -539,7 +539,7 @@ modules = {
539
539
  menuEnName: null,
540
540
  menuCode: "project_tag:list",
541
541
  sn: null,
542
- menuImg: null,
542
+ menuImg: "icon-biaoqianweihu",
543
543
  url: "@base/views/user/project_tag/list",
544
544
  route: "/user/project_tag/list",
545
545
  enabled: true,
@@ -562,7 +562,7 @@ modules = {
562
562
  menuEnName: null,
563
563
  menuCode: "bd_attach_setting:list",
564
564
  sn: null,
565
- menuImg: null,
565
+ menuImg: "icon-xitongshezhi",
566
566
  url: "@base/views/bd/setting/config_manage/list",
567
567
  route: "/bd/setting/config_manage/list",
568
568
  enabled: true,
@@ -585,7 +585,7 @@ modules = {
585
585
  menuEnName: null,
586
586
  menuCode: "user:form_list",
587
587
  sn: null,
588
- menuImg: "icon-kehuxinzeng",
588
+ menuImg: "icon-yonghuguanli",
589
589
  url: "@base/views/user/user/form_list",
590
590
  route: "/user/user/form_list",
591
591
  enabled: true,
@@ -607,7 +607,7 @@ modules = {
607
607
  menuEnName: null,
608
608
  menuCode: "form_template:wf_list",
609
609
  sn: null,
610
- menuImg: null,
610
+ menuImg: "icon-danjuliuchengshezhi",
611
611
  url: "@base/views/bd/setting/form_template/wf_list",
612
612
  route: "/bd/setting/form_template/wf_list",
613
613
  enabled: true,
@@ -651,7 +651,7 @@ modules = {
651
651
  menuEnName: null,
652
652
  menuCode: "form_import_log:list",
653
653
  sn: null,
654
- menuImg: null,
654
+ menuImg: "icon-yanfaguanli-rizhiguanli",
655
655
  url: "@base/views/bd/setting/form_import_log/list",
656
656
  route: "/bd/setting/form_import_log/list",
657
657
  enabled: true,