cloud-web-corejs 1.0.281 → 1.1.0-dev.10

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 (192) hide show
  1. package/package.json +6 -2
  2. package/src/components/VabUpload/image-viewer.vue +442 -442
  3. package/src/components/VabUpload/index.vue +45 -3
  4. package/src/components/VabUpload/mixins.js +126 -19
  5. package/src/components/VabUpload/view.vue +248 -209
  6. package/src/components/baseTabs/mixins.js +181 -181
  7. package/src/components/bizTab/BizBillActions.vue +129 -0
  8. package/src/components/bizTab/BizTabListPage.vue +391 -0
  9. package/src/components/bizTab/README.md +378 -0
  10. package/src/components/bizTab/billTableUtil.js +48 -0
  11. package/src/components/bizTab/billValidators.js +136 -0
  12. package/src/components/bizTab/bizBillDetailMixin.js +705 -0
  13. package/src/components/bizTab/index.js +24 -0
  14. package/src/components/excelExport/exportFieldDialog.vue +23 -12
  15. package/src/components/excelExport/exportItemConfigUtil.js +30 -0
  16. package/src/components/excelExport/mixins.js +3 -3
  17. package/src/components/excelImport/index.vue +156 -156
  18. package/src/components/jsonImport/index.vue +1 -1
  19. package/src/components/langImport/index.vue +1 -1
  20. package/src/components/mobile/statusTag/mixins.js +1 -61
  21. package/src/components/mobile/wf/addTaskUserdialog.vue +23 -3
  22. package/src/components/mobile/wf/content.vue +1705 -1556
  23. package/src/components/mobile/wf/deleteTaskUserDialog.vue +22 -3
  24. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +8 -6
  25. package/src/components/mobile/wf/selectUserDialog.vue +122 -0
  26. package/src/components/mobile/wf/setCandidateDialog.vue +25 -4
  27. package/src/components/mobile/wf/urgingDialog.vue +26 -3
  28. package/src/components/mobile/wf/wfModifyDialog.vue +4 -0
  29. package/src/components/obsUpload/index.vue +1 -1
  30. package/src/components/table/config.js +78 -78
  31. package/src/components/table/index.js +1276 -1276
  32. package/src/components/table/plugins/cell-area/index.js +1055 -0
  33. package/src/components/table/plugins/cell-area/index.scss +77 -0
  34. package/src/components/table/plugins/cell-area/util.js +224 -0
  35. package/src/components/table/tableForm.vue +330 -330
  36. package/src/components/table/tableFormMixin.js +318 -318
  37. package/src/components/table/vxeFilter/index.js +163 -163
  38. package/src/components/table/vxeFilter/mixin.js +316 -316
  39. package/src/components/wf/content.vue +1188 -1188
  40. package/src/components/wf/wf.js +40 -20
  41. package/src/components/wf/wfActionDropdown.vue +1 -1
  42. package/src/components/wf/wfActionItems.js +1 -1
  43. package/src/components/xform/docs/2026-08 xform H5 P0 /345/256/236/347/216/260/350/247/204/346/240/274.md" +528 -0
  44. package/src/components/xform/docs/2026-08 xform H5 P1 /345/256/236/347/216/260/350/247/204/346/240/274.md" +412 -0
  45. package/src/components/xform/docs/2026-08 xform H5 P2 /345/256/236/347/216/260/350/247/204/346/240/274.md" +287 -0
  46. package/src/components/xform/docs/2026-08 xform /347/247/273/345/212/250/347/253/257/345/270/203/345/261/200/345/257/271/351/275/220 bill_setting /346/226/271/346/241/210.md" +400 -0
  47. package/src/components/xform/form-designer/designer.js +51 -52
  48. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +269 -269
  49. package/src/components/xform/form-designer/form-widget/container-widget/detail-h5-widget.vue +18 -2
  50. package/src/components/xform/form-designer/form-widget/container-widget/detail-temp-widget.vue +132 -0
  51. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +250 -250
  52. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-pane-widget.vue +23 -2
  53. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-widget.vue +30 -1
  54. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +319 -320
  55. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +365 -365
  56. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +185 -185
  57. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +554 -555
  58. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +409 -409
  59. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +150 -132
  60. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +114 -114
  61. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +154 -154
  62. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +47 -1
  63. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -178
  64. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -77
  65. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +6 -0
  66. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +139 -139
  67. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +1 -1
  68. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +106 -106
  69. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +134 -134
  70. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +3 -2
  71. package/src/components/xform/form-designer/indexMixin.js +35 -1
  72. package/src/components/xform/form-designer/setting-panel/form-setting.vue +39 -39
  73. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +10 -10
  74. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -432
  75. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +2103 -2103
  76. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +90 -0
  77. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +82 -82
  78. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +833 -846
  79. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +8 -8
  80. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -137
  81. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +237 -237
  82. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +43 -43
  83. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +43 -43
  84. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -96
  85. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +51 -0
  86. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +42 -42
  87. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +43 -43
  88. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +158 -158
  89. package/src/components/xform/form-designer/setting-panel/property-editor/h5Span-editor.vue +51 -0
  90. package/src/components/xform/form-designer/setting-panel/property-editor/itemStyle-editor.vue +39 -0
  91. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +188 -188
  92. package/src/components/xform/form-designer/setting-panel/property-editor/styleTempClass-editor.vue +51 -0
  93. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +347 -347
  94. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +12 -0
  95. package/src/components/xform/form-designer/toolbar-panel/index.vue +884 -874
  96. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +14 -0
  97. package/src/components/xform/form-designer/widget-panel/index.vue +11 -7
  98. package/src/components/xform/form-designer/widget-panel/indexMixin.js +30 -6
  99. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +112 -4
  100. package/src/components/xform/form-render/container-item/data-table-mixin.js +151 -93
  101. package/src/components/xform/form-render/container-item/detail-h5-item.vue +204 -34
  102. package/src/components/xform/form-render/container-item/detail-temp-item.vue +110 -0
  103. package/src/components/xform/form-render/container-item/h5-card-pane-item.vue +160 -140
  104. package/src/components/xform/form-render/container-item/list-h5-item.vue +1913 -1699
  105. package/src/components/xform/form-render/index.vue +153 -147
  106. package/src/components/xform/form-render/indexMixin.js +35 -3
  107. package/src/components/xform/lang/en-US.js +14 -0
  108. package/src/components/xform/lang/zh-CN.js +17 -0
  109. package/src/components/xform/mixins/defaultHandle.js +707 -707
  110. package/src/components/xform/styles/h5.scss +2238 -0
  111. package/src/components/xform/utils/textMaskUtil.js +182 -179
  112. package/src/components/xform/utils/treeTableUtil.js +1292 -1265
  113. package/src/components/xform/utils/util.js +56 -11
  114. package/src/directive/append-to-body/index.js +48 -0
  115. package/src/index.js +13 -4
  116. package/src/layout/components/Sidebar/default.vue +1655 -1655
  117. package/src/layout/components/extractedCode/viewDialog.vue +7 -7
  118. package/src/router/index.js +48 -27
  119. package/src/router/modules/customer.js +71 -14
  120. package/src/store/modules/permission.js +17 -18
  121. package/src/utils/assetUrl.js +19 -0
  122. package/src/utils/pdfUtil.js +429 -429
  123. package/src/utils/resolveViewComponent.js +142 -16
  124. package/src/utils/vab.js +1283 -1279
  125. package/src/views/bd/project/branch/bd_branch/edit.vue +145 -0
  126. package/src/views/bd/project/branch/bd_branch/list.vue +72 -0
  127. package/src/views/bd/project/branch/bd_branch/menuKindDialog.vue +106 -0
  128. package/src/views/bd/project/branch/bd_branch/mixins/edit.js +189 -0
  129. package/src/views/bd/project/branch/bd_branch/mixins/list.js +124 -0
  130. package/src/views/bd/project/branch/bd_branch/mixins/menuKindDialog.js +85 -0
  131. package/src/views/bd/project/branch/form_script/list.vue +31 -0
  132. package/src/views/bd/project/branch/form_template/list.vue +30 -0
  133. package/src/views/bd/project/branch/menu_kind/list.vue +31 -0
  134. package/src/views/bd/project/common/form_script/list.vue +16 -0
  135. package/src/views/bd/project/common/form_template/list.vue +15 -0
  136. package/src/views/bd/project/common/menu_kind/list.vue +15 -0
  137. package/src/views/bd/project/core/branchContext.js +100 -0
  138. package/src/views/bd/project/core/branchPage.js +78 -0
  139. package/src/views/bd/project/core/branchPageWrap.vue +225 -0
  140. package/src/views/bd/project/core/branchScope.js +44 -0
  141. package/src/views/bd/project/core/branchSearchPage.js +285 -0
  142. package/src/views/bd/project/core/branchSelect.vue +85 -0
  143. package/src/views/bd/project/core/branchTreeBar.vue +81 -0
  144. package/src/views/bd/project/core/httpBranchPatch.js +58 -0
  145. package/src/views/bd/project/datatable/menu_kind/list.vue +15 -0
  146. package/src/views/bd/project/datatable/table_model/list.vue +15 -0
  147. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -174
  148. package/src/views/bd/setting/form_template/edit.vue +378 -356
  149. package/src/views/bd/setting/form_template/formDesignerDialog.vue +6 -0
  150. package/src/views/bd/setting/form_template/formTemplateType.js +43 -0
  151. package/src/views/bd/setting/form_template/list.vue +304 -303
  152. package/src/views/bd/setting/form_template/mixins/edit.js +344 -280
  153. package/src/views/bd/setting/form_template/mixins/list.js +748 -721
  154. package/src/views/bd/setting/table_model/edit.vue +1066 -1066
  155. package/src/views/bd/setting/table_model/mixins/edit.js +1455 -1455
  156. package/src/views/bd/setting/table_model/mixins/zdDialog.js +148 -148
  157. package/src/views/demo/bizTab/bill/billConfig.js +41 -0
  158. package/src/views/demo/bizTab/bill/detail.vue +436 -0
  159. package/src/views/demo/bizTab/bill/list.vue +288 -0
  160. package/src/views/demo/bizTab/bill/productDialog.vue +176 -0
  161. package/src/views/demo/bizTab/simple/billApi.js +123 -0
  162. package/src/views/demo/bizTab/simple/detail.vue +407 -0
  163. package/src/views/demo/bizTab/simple/list.vue +217 -0
  164. package/src/views/demo/bizTab/standalone/index.vue +121 -0
  165. package/src/views/demo/bizTab/wf/billConfig.js +44 -0
  166. package/src/views/demo/bizTab/wf/detail.vue +661 -0
  167. package/src/views/demo/bizTab/wf/list.vue +242 -0
  168. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  169. package/src/views/support/form-dialog-demo/index.vue +537 -0
  170. package/src/views/user/file_view_ins/list.vue +970 -970
  171. package/src/views/user/form/vform/designer.vue +823 -821
  172. package/src/views/user/home/default.vue +1117 -1117
  173. package/src/views/user/home/default2.vue +1 -1
  174. package/src/views/user/home/index.vue +103 -101
  175. package/src/views/user/home/wjl/content.vue +1569 -0
  176. package/src/views/user/notify_message/dialog.vue +139 -137
  177. package/src/views/user/outLink/cc_form_view.vue +188 -0
  178. package/src/views/user/outLink/form_view.vue +202 -202
  179. package/src/views/user/outLink/index.vue +110 -110
  180. package/src/views/user/outLink/view.vue +3 -3
  181. package/src/views/user/role/edit.vue +632 -632
  182. package/src/views/user/role/list.vue +260 -260
  183. package/src/views/user/wf/iframe/index.vue +51 -51
  184. package/src/views/user/wf/iframe/index2.vue +64 -64
  185. package/src/views/user/wf/wf_manage/list.vue +1112 -1116
  186. package/src/views/user/wf/wf_manage/list2.vue +871 -875
  187. package/src/views/user/wf/wf_manage/wfContentDialog.vue +134 -131
  188. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +1 -1
  189. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-menu-widget.vue +0 -106
  190. package/src/components/xform/form-designer/form-widget/field-widget/tableexportbuttonwidget.vue +0 -99
  191. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1340
  192. package/src/utils/wf.js +0 -766
@@ -36,6 +36,7 @@ modules = {
36
36
  },
37
37
  inject: [
38
38
  "getDesignerConfig",
39
+ "getLayoutTypeLocked",
39
40
  "saveReportTemplate",
40
41
  "getReportTemplate",
41
42
  "getFormTemplateTableDTOs",
@@ -105,6 +106,15 @@ modules = {
105
106
  layoutType() {
106
107
  return this.designer.getLayoutType();
107
108
  },
109
+
110
+ /* 布局模式由入口(表单模板类型)锁定时,PC/移动端按钮只回显不可切换 */
111
+ layoutTypeLocked() {
112
+ return !!this.getLayoutTypeLocked();
113
+ },
114
+
115
+ layoutTypeLockedTip() {
116
+ return this.$t1("模板类型由表单模板维护,设计器内不可切换");
117
+ },
108
118
  },
109
119
  watch: {
110
120
  "designer.widgetList": {
@@ -281,6 +291,9 @@ modules = {
281
291
  },
282
292
 
283
293
  changeLayoutType(newType) {
294
+ if (this.layoutTypeLocked) {
295
+ return;
296
+ }
284
297
  this.designer.changeLayoutType(newType);
285
298
  this.$emit("loadWidgets");
286
299
  },
@@ -354,6 +367,7 @@ modules = {
354
367
  let importObj = JSON.parse(this.importTemplate);
355
368
  this.designer.handleImportJson(importObj);
356
369
  this.designer.loadFormJson(importObj);
370
+ this.$emit("loadWidgets");
357
371
 
358
372
  this.showImportJsonDialogFlag = false;
359
373
  this.$message.success(this.i18nt("designer.hint.importJsonSuccess"));
@@ -6,7 +6,7 @@
6
6
  <el-tab-pane v-if="showComponentLib" name="componentLib">
7
7
  <span slot="label"><i class="el-icon-set-up"></i> {{ i18nt('designer.componentLib') }}</span>
8
8
 
9
- <el-collapse v-model="activeNames" class="widget-collapse">
9
+ <el-collapse v-model="activeNames" class="widget-collapse" :key="currentLayoutType">
10
10
  <el-collapse-item name="1" :title="i18nt('designer.containerTitle')">
11
11
  <draggable tag="ul" :list="containers" :group="{name: 'dragGroup', pull: 'clone', put: false}"
12
12
  :clone="handleContainerWidgetClone" ghost-class="ghost" :sort="false"
@@ -34,6 +34,7 @@
34
34
  </draggable>
35
35
  </el-collapse-item>
36
36
 
37
+ <template v-if="advancedFields.length">
37
38
  <el-collapse-item name="3" :title="i18nt('designer.advancedFieldTitle')">
38
39
  <draggable tag="ul" :list="advancedFields" :group="{name: 'dragGroup', pull: 'clone', put: false}"
39
40
  :move="checkFieldMove"
@@ -47,8 +48,9 @@
47
48
  </li>
48
49
  </draggable>
49
50
  </el-collapse-item>
51
+ </template>
50
52
 
51
- <!-- -->
53
+ <template v-if="customFields.length">
52
54
  <el-collapse-item name="4" :title="i18nt('designer.customFieldTitle')">
53
55
  <draggable tag="ul" :list="customFields" :group="{name: 'dragGroup', pull: 'clone', put: false}"
54
56
  :move="checkFieldMove"
@@ -62,7 +64,7 @@
62
64
  </li>
63
65
  </draggable>
64
66
  </el-collapse-item>
65
- <!-- -->
67
+ </template>
66
68
 
67
69
 
68
70
  </el-collapse>
@@ -71,7 +73,7 @@
71
73
  <el-tab-pane v-if="showMetadataLib" name="metadataLib">
72
74
  <span slot="label"><i class="el-icon-set-up"></i> {{ i18nt('designer.metadataLib') }}</span>
73
75
 
74
- <el-collapse v-model="metadataActiveNames" class="widget-collapse">
76
+ <el-collapse v-model="metadataActiveNames" class="widget-collapse" :key="currentLayoutType">
75
77
  <el-collapse-item name="0" :title="i18nt('designer.containerTitle')">
76
78
  <draggable tag="ul" :list="commonContainers" :group="{name: 'dragGroup', pull: 'clone', put: false}"
77
79
  :clone="handleContainerWidgetClone" ghost-class="ghost" :sort="false"
@@ -97,6 +99,7 @@
97
99
  </li>
98
100
  </draggable>
99
101
  </el-collapse-item>
102
+ <template v-if="commonAdvancedFields.length">
100
103
  <el-collapse-item name="3" :title="i18nt('designer.advancedFieldTitle')">
101
104
  <draggable tag="ul" :list="commonAdvancedFields" :group="{name: 'dragGroup', pull: 'clone', put: false}"
102
105
  :move="checkFieldMove"
@@ -110,6 +113,7 @@
110
113
  </li>
111
114
  </draggable>
112
115
  </el-collapse-item>
116
+ </template>
113
117
 
114
118
 
115
119
 
@@ -160,7 +164,7 @@
160
164
  </li>
161
165
  </draggable>
162
166
  </el-collapse-item>
163
- <el-collapse-item name="compare" :title="i18nt('对比组件')">
167
+ <el-collapse-item v-if="currentLayoutType !== 'H5'" name="compare" :title="i18nt('对比组件')">
164
168
  <draggable tag="ul" :list="compareFields" :group="{name: 'dragGroup', pull: 'clone', put: false}"
165
169
  :move="checkFieldMove"
166
170
  :clone="handleFieldWidgetClone" ghost-class="ghost" :sort="false">
@@ -311,8 +315,8 @@ export default {
311
315
  background: #f1f2f3;
312
316
  font-size: 12px;
313
317
  padding-left: 12px;
314
- > span{
315
- display: flex;align-items: center;white-space: normal;line-height: 1.2;height: 35px;
318
+ > span{
319
+ display: flex;align-items: center;white-space: normal;line-height: 1.2;height: 35px;
316
320
  }
317
321
  svg {
318
322
  display: inline-block;
@@ -6,7 +6,8 @@ import {
6
6
  advancedFields,
7
7
  customFields,
8
8
  businessFields,
9
- widgetPanelOrder
9
+ widgetPanelOrder,
10
+ h5PanelAllowTypes
10
11
  } from "./widgetsConfig"
11
12
  import {
12
13
  formTemplates
@@ -115,6 +116,16 @@ modules = {
115
116
  ? !1
116
117
  : !!this.designerConfig.metadataLib;
117
118
  },
119
+ currentLayoutType() {
120
+ return (this.designer && this.designer.formConfig && this.designer.formConfig.layoutType) || "PC";
121
+ },
122
+ },
123
+ watch: {
124
+ /* 打开 H5 模板是 setFormJson 后才写入 layoutType;面板 mounted 时仍是默认 PC。
125
+ 版式变化后必须按新 layoutType 重筛,否则左侧一直停在 PC 组件列表。 */
126
+ currentLayoutType() {
127
+ this.loadWidgets();
128
+ },
118
129
  },
119
130
  mounted() {
120
131
  this.designerConfig.chartLib && (this.firstTab = "chartLib"),
@@ -181,7 +192,8 @@ modules = {
181
192
 
182
193
  this.commonContainers = this.containers.filter(con => !!con.commonFlag && this.getIsShow(con));
183
194
 
184
- this.basicFields = this.basicFields.map(fld => {
195
+ /* 每次从 widgetsConfig 原表筛,不能拿 this.xxx(已被上次 layoutType 滤过)再滤一遍 */
196
+ this.basicFields = basicFields.map(fld => {
185
197
  return {
186
198
  ...fld,
187
199
  displayName: this.i18n2t(`designer.widgetLabel.${fld.type}`, `extension.widgetLabel.${fld.type}`)
@@ -190,13 +202,13 @@ modules = {
190
202
  return !this.isBanned(fld.type) && this.getIsShow(fld);
191
203
  });
192
204
 
193
- this.advancedFields = this.advancedFields.map(fld => {
205
+ this.advancedFields = advancedFields.map(fld => {
194
206
  return {
195
207
  ...fld,
196
208
  displayName: this.i18n2t(`designer.widgetLabel.${fld.type}`, `extension.widgetLabel.${fld.type}`)
197
209
  };
198
210
  }).filter(fld => {
199
- return !this.isBanned(fld.type) && this.getIsShow(fld);
211
+ return !fld.internal && !this.isBanned(fld.type) && this.getIsShow(fld);
200
212
  });
201
213
 
202
214
  /* 面板分组归一:表单数据字段(搜索框/自动完成/级联/凭证/状态等)展示在基础字段分组 */
@@ -209,7 +221,7 @@ modules = {
209
221
  );
210
222
  this.advancedFields = this.sortByPanelOrder(this.advancedFields, widgetPanelOrder.advancedFields);
211
223
 
212
- this.businessFields = this.businessFields.map(fld => {
224
+ this.businessFields = businessFields.map(fld => {
213
225
  return {
214
226
  ...fld,
215
227
  displayName: this.i18n2t(`designer.widgetLabel.${fld.type}`, `extension.widgetLabel.${fld.type}`)
@@ -229,7 +241,7 @@ modules = {
229
241
  && moveTypes.indexOf(fld.type) === -1;
230
242
  }), widgetPanelOrder.advancedFields);
231
243
 
232
- this.customFields = this.customFields.map(fld => {
244
+ this.customFields = customFields.map(fld => {
233
245
  return {
234
246
  ...fld,
235
247
  displayName: this.i18n2t(`designer.widgetLabel.${fld.type}`, `extension.widgetLabel.${fld.type}`)
@@ -257,6 +269,14 @@ modules = {
257
269
  return !this.isBanned(fld.type) && this.getIsShow(fld);
258
270
  });
259
271
 
272
+ /* 空分组不渲染(见 index.vue 的 v-if),展开项按当前版式重算:
273
+ 不能只做减法,否则从 H5 切回 PC 时分组回来了却是收起状态 */
274
+ this.activeNames = ["1", "2"]
275
+ .concat(this.advancedFields.length ? ["3"] : [])
276
+ .concat(this.customFields.length ? ["4"] : []);
277
+ this.metadataActiveNames = ["0", "1", "2", "4"]
278
+ .concat(this.commonAdvancedFields.length ? ["3"] : []);
279
+
260
280
  },
261
281
 
262
282
  /* 按 widgetPanelOrder 排序面板展示列表;未列出的类型(含扩展组件)排在末尾,保持原有相对顺序 */
@@ -343,6 +363,10 @@ modules = {
343
363
  let flag = !ftd.layoutType || ftd.layoutType === layoutType;
344
364
  let flag2 = this.checkColumnFlag(ftd)
345
365
  let flag3 = !!ftd.commonFlag
366
+ /* H5 面板按白名单收口,PC 不受影响 */
367
+ if (layoutType === "H5") {
368
+ flag = flag && h5PanelAllowTypes.indexOf(ftd.type) > -1;
369
+ }
346
370
  return flag && flag2 && flag3;
347
371
  }
348
372
  }
@@ -51,6 +51,7 @@ export const containers = [
51
51
  category: "container",
52
52
  icon: "table",
53
53
  commonFlag: !0,
54
+ layoutType: "PC",
54
55
  columnFlag: true,
55
56
  rows: [],
56
57
  options: {
@@ -341,6 +342,7 @@ export const containers = [
341
342
  category: "container",
342
343
  icon: "text-field",
343
344
  commonFlag: !0,
345
+ layoutType: "PC",
344
346
  formItemFlag: !0,
345
347
  widgetList: [],
346
348
  options: {
@@ -445,6 +447,26 @@ export const containers = [
445
447
  customClass: ""
446
448
  }
447
449
  },*/
450
+ {
451
+ type: "detail-temp",
452
+ category: "container",
453
+ icon: "form",
454
+ commonFlag: !0,
455
+ layoutType: "PC",
456
+ panes: [],
457
+ widgetList: [],
458
+ options: {
459
+ name: "",
460
+ hidden: !1,
461
+ label: "模板模块",
462
+ detailTempContainer: true,
463
+ styleTempClass: 'd-temp-1',
464
+ customClass: "",
465
+ wfEnabled: false,
466
+ onCreated: "",
467
+ onMounted: "",
468
+ },
469
+ },
448
470
  {
449
471
  type: "detail",
450
472
  category: "container",
@@ -548,6 +570,7 @@ export const containers = [
548
570
  detailH5Container: true,
549
571
  // colHeight: null,
550
572
  customClass: "",
573
+ // 底栏平铺个数不做成选项,写死在 detail-h5-item 的 H5_BOTTOM_MAX_BUTTONS(=3)
551
574
  wfEnabled: false,
552
575
  onCreated: "",
553
576
  onMounted: "",
@@ -573,6 +596,8 @@ export const containers = [
573
596
  listH5: true,
574
597
  // colHeight: null,
575
598
  customClass: "",
599
+ // 明细行样式:'plain'=原有朴素列表(默认,保持存量表现);'card'=卡片皮肤
600
+ itemStyle: "plain",
576
601
  isQueryTable: false,
577
602
 
578
603
  accessUrl: null,
@@ -693,6 +718,7 @@ export const containers = [
693
718
  category: "container",
694
719
  icon: "tree-pane",
695
720
  commonFlag: !0,
721
+ layoutType: "PC",
696
722
  leftWidgetList: [],
697
723
  widgetList: [],
698
724
  options: {
@@ -748,7 +774,7 @@ export const containers = [
748
774
  name: "",
749
775
  hidden: !1,
750
776
  customClass: "",
751
- fullWidth: false,
777
+ fullWidth: true,
752
778
  },
753
779
  },
754
780
  {
@@ -772,6 +798,7 @@ export const containers = [
772
798
  icon: "tree",
773
799
  category: "container",
774
800
  commonFlag: !0,
801
+ layoutType: "PC",
775
802
  widgetList: [],
776
803
  options: {
777
804
  name: "tree",
@@ -1151,6 +1178,7 @@ export const basicFields = [
1151
1178
  type: "input-batch",
1152
1179
  icon: "input-batch",
1153
1180
  commonFlag: !0,
1181
+ layoutType: "PC",
1154
1182
  formItemFlag: !0,
1155
1183
  columnFlag: true,
1156
1184
  tableField: null,
@@ -2048,6 +2076,7 @@ export const basicFields = [
2048
2076
  type: "html-text",
2049
2077
  icon: "html-text",
2050
2078
  commonFlag: !0,
2079
+ layoutType: "PC",
2051
2080
  formItemFlag: !1,
2052
2081
  columnFlag: false,
2053
2082
  options: {
@@ -2374,6 +2403,7 @@ export const advancedFields = [
2374
2403
  type: "echart-pie",
2375
2404
  icon: "echart-pie",
2376
2405
  commonFlag: !0,
2406
+ layoutType: "PC",
2377
2407
  formItemFlag: false,
2378
2408
  options: {
2379
2409
  name: "",
@@ -2478,6 +2508,7 @@ export const advancedFields = [
2478
2508
  type: "echart-bar",
2479
2509
  icon: "echart",
2480
2510
  commonFlag: !0,
2511
+ layoutType: "PC",
2481
2512
  formItemFlag: false,
2482
2513
  options: {
2483
2514
  name: "",
@@ -2668,6 +2699,7 @@ export const advancedFields = [
2668
2699
  type: "echart-category",
2669
2700
  icon: "echart-category",
2670
2701
  commonFlag: !0,
2702
+ layoutType: "PC",
2671
2703
  formItemFlag: false,
2672
2704
  options: {
2673
2705
  name: "",
@@ -3241,6 +3273,7 @@ export const advancedFields = [
3241
3273
  icon: "el-icon-upload",
3242
3274
  formItemFlag: !1,
3243
3275
  commonFlag: !0,
3276
+ layoutType: "PC",
3244
3277
  columnFlag: true,
3245
3278
  tableField: null,
3246
3279
  options: {
@@ -3270,6 +3303,7 @@ export const advancedFields = [
3270
3303
  icon: "el-icon-upload",
3271
3304
  formItemFlag: !1,
3272
3305
  commonFlag: !0,
3306
+ layoutType: "PC",
3273
3307
  columnFlag: true,
3274
3308
  options: {
3275
3309
  name: "",
@@ -3301,6 +3335,7 @@ export const advancedFields = [
3301
3335
  icon: "el-icon-upload",
3302
3336
  formItemFlag: !1,
3303
3337
  commonFlag: !0,
3338
+ layoutType: "PC",
3304
3339
  columnFlag: true,
3305
3340
  options: {
3306
3341
  name: "",
@@ -3318,6 +3353,10 @@ export const advancedFields = [
3318
3353
  showImageAtTable: false,
3319
3354
  selectExportItemFlag: 1,
3320
3355
  exportItemConditionEnabled: !1,
3356
+ // 按钮级明细导出配置:三项各自独立,留空的那项沿用数据表格属性上维护的
3357
+ exportItemColumns: [],
3358
+ exportItemScriptCode: null,
3359
+ exportItemParam: "",
3321
3360
 
3322
3361
  onCreated: "",
3323
3362
  onMounted: "",
@@ -3369,6 +3408,7 @@ export const advancedFields = [
3369
3408
  type: "import-button",
3370
3409
  icon: "el-icon-download",
3371
3410
  commonFlag: !0,
3411
+ layoutType: "PC",
3372
3412
  columnFlag: true,
3373
3413
  formItemFlag: !1,
3374
3414
  options: {
@@ -3421,6 +3461,7 @@ export const advancedFields = [
3421
3461
  type: "import2-button",
3422
3462
  icon: "el-icon-download",
3423
3463
  commonFlag: !0,
3464
+ layoutType: "PC",
3424
3465
  columnFlag: true,
3425
3466
  formItemFlag: !1,
3426
3467
  options: {
@@ -3469,6 +3510,7 @@ export const advancedFields = [
3469
3510
  type: "print-button",
3470
3511
  icon: "el-icon-printer",
3471
3512
  commonFlag: !0,
3513
+ layoutType: "PC",
3472
3514
  columnFlag: true,
3473
3515
  formItemFlag: !1,
3474
3516
  options: {
@@ -3510,6 +3552,7 @@ export const advancedFields = [
3510
3552
  type: "print-detail-button",
3511
3553
  icon: "el-icon-printer",
3512
3554
  commonFlag: !0,
3555
+ layoutType: "PC",
3513
3556
  columnFlag: false,
3514
3557
  formItemFlag: !1,
3515
3558
  options: {
@@ -3627,6 +3670,7 @@ export const advancedFields = [
3627
3670
  type: "census",
3628
3671
  icon: "census",
3629
3672
  commonFlag: !0,
3673
+ layoutType: "PC",
3630
3674
  formItemFlag: false,
3631
3675
  options: {
3632
3676
  name: "",
@@ -3693,6 +3737,7 @@ export const advancedFields = [
3693
3737
  category: "container",
3694
3738
  icon: "tree-table",
3695
3739
  commonFlag: !0,
3740
+ layoutType: "PC",
3696
3741
  formItemFlag: !0,
3697
3742
  rows: [],
3698
3743
  options: {
@@ -3769,6 +3814,7 @@ export const advancedFields = [
3769
3814
  type: "gantt",
3770
3815
  icon: "chart",
3771
3816
  commonFlag: !0,
3817
+ layoutType: "PC",
3772
3818
  formItemFlag: !1,
3773
3819
  options: {
3774
3820
  name: "",
@@ -3791,6 +3837,7 @@ export const advancedFields = [
3791
3837
  type: "download-button",
3792
3838
  icon: "el-icon-download",
3793
3839
  commonFlag: !0,
3840
+ layoutType: "PC",
3794
3841
  columnFlag: true,
3795
3842
  formItemFlag: !1,
3796
3843
  options: {
@@ -3829,6 +3876,7 @@ export const advancedFields = [
3829
3876
  type: "vue-page",
3830
3877
  icon: "vue-sfc",
3831
3878
  commonFlag: !0,
3879
+ layoutType: "PC",
3832
3880
  formItemFlag: !1,
3833
3881
  columnFlag: false,
3834
3882
  options: {
@@ -4077,6 +4125,8 @@ export const businessFields = [
4077
4125
  commonFlag: !0,
4078
4126
  columnFlag: true,
4079
4127
  formItemFlag: !0,
4128
+ /* H5 业务组件只保留创建人/更新人/创建时间/更新时间 */
4129
+ layoutType: "PC",
4080
4130
  tableField: null,
4081
4131
  options: {
4082
4132
  ...vabsearchConfig,
@@ -4100,6 +4150,7 @@ export const businessFields = [
4100
4150
  commonFlag: !0,
4101
4151
  columnFlag: true,
4102
4152
  formItemFlag: !0,
4153
+ layoutType: "PC",
4103
4154
  tableField: null,
4104
4155
  options: {
4105
4156
  ...vabsearchConfig,
@@ -4124,6 +4175,7 @@ export const businessFields = [
4124
4175
  commonFlag: !0,
4125
4176
  columnFlag: true,
4126
4177
  formItemFlag: !0,
4178
+ layoutType: "PC",
4127
4179
  tableField: null,
4128
4180
  options: {
4129
4181
  ...projectTagConfig,
@@ -4145,6 +4197,7 @@ export const businessFields = [
4145
4197
  commonFlag: !0,
4146
4198
  columnFlag: true,
4147
4199
  formItemFlag: !0,
4200
+ layoutType: "PC",
4148
4201
  tableField: null,
4149
4202
  options: {
4150
4203
  ...projectTagConfig,
@@ -4207,6 +4260,7 @@ export const businessFields = [
4207
4260
  commonFlag: !0,
4208
4261
  columnFlag: true,
4209
4262
  formItemFlag: !1,
4263
+ layoutType: "PC",
4210
4264
  options: {
4211
4265
  name: "",
4212
4266
  label: "复制",
@@ -4237,6 +4291,7 @@ export const businessFields = [
4237
4291
  commonFlag: !0,
4238
4292
  columnFlag: true,
4239
4293
  formItemFlag: !1,
4294
+ layoutType: "PC",
4240
4295
  options: {
4241
4296
  name: "",
4242
4297
  // label: "暂存",
@@ -4259,6 +4314,7 @@ export const businessFields = [
4259
4314
  type: "oplog",
4260
4315
  icon: "list",
4261
4316
  commonFlag: !0,
4317
+ layoutType: "PC",
4262
4318
  formItemFlag: !1,
4263
4319
  options: {
4264
4320
  name: "",
@@ -4281,6 +4337,7 @@ export const businessFields = [
4281
4337
  icon: "file-upload-field",
4282
4338
  commonFlag: !0,
4283
4339
  formItemFlag: !0,
4340
+ layoutType: "PC",
4284
4341
  tableField: null,
4285
4342
  options: {
4286
4343
  name: "",
@@ -4544,6 +4601,7 @@ export const widgetPanelOrder = {
4544
4601
  "detail-tabs",
4545
4602
  "detail-plain",
4546
4603
  "detail-pane",
4604
+ "detail-temp",
4547
4605
  "tree-pane",
4548
4606
  "tree",
4549
4607
  "vf-dialog",
@@ -4625,18 +4683,68 @@ export const widgetPanelOrder = {
4625
4683
  ],
4626
4684
  };
4627
4685
 
4686
+ /**
4687
+ * H5 版式左侧组件面板白名单(仅影响面板展示,不影响已有模板渲染与按 type 查找)。
4688
+ * 容器:H5详情 / H5列表 / H5卡片 / h5表格
4689
+ * 基础字段:文本、状态、凭证、下拉选项
4690
+ * (status / vabUpload 定义在 advancedFields,面板会归入基础字段)
4691
+ * 业务组件:创建人、更新人、创建时间、更新时间
4692
+ */
4693
+ export const h5PanelAllowTypes = [
4694
+ "detail-h5",
4695
+ "list-h5",
4696
+ "h5-card",
4697
+ "h5-table",
4698
+ "text",
4699
+ "status",
4700
+ "vabUpload",
4701
+ "select",
4702
+ "create_by-text",
4703
+ "modify_by-text",
4704
+ "create_date-text",
4705
+ "modify_date-text",
4706
+ ];
4707
+
4708
+ /**
4709
+ * H5 版式:所有表单字段统一具备 h5Span(整宽/半宽)。
4710
+ *
4711
+ * 为什么用后处理而不是在 42 个字段定义里逐个展开 ...defaultH5Config:
4712
+ * 1) 一处逻辑覆盖全部字段,不会漏;
4713
+ * 2) 顺带覆盖 extension 通过 add*Schema 动态注册的组件;
4714
+ * 3) 用函数调用而非展开运算符,不踩本文件头部注释里那个 Babel TDZ 的坑。
4715
+ *
4716
+ * 属性面板显不显示「H5 占宽」由 designer.hasConfig 决定,它查的是**原型 widget
4717
+ * 的 options**(不是实例),所以必须在这里写进原型。
4718
+ * 详见 docs/2026-08 xform H5 P0 实现规格.md §3.1。
4719
+ */
4720
+ export const defaultH5Config = {
4721
+ h5Span: "full", // 'full' | 'half'
4722
+ };
4723
+
4724
+ function applyH5FieldDefaults(schema) {
4725
+ if (!schema || !schema.formItemFlag || !schema.options) return schema;
4726
+ if (!Object.prototype.hasOwnProperty.call(schema.options, "h5Span")) {
4727
+ Object.assign(schema.options, defaultH5Config);
4728
+ }
4729
+ return schema;
4730
+ }
4731
+
4732
+ [basicFields, advancedFields, businessFields, customFields].forEach((list) =>
4733
+ list.forEach(applyH5FieldDefaults)
4734
+ );
4735
+
4628
4736
  export function addContainerWidgetSchema(containerSchema) {
4629
4737
  containers.push(containerSchema);
4630
4738
  }
4631
4739
 
4632
4740
  export function addBasicFieldSchema(fieldSchema) {
4633
- basicFields.push(fieldSchema);
4741
+ basicFields.push(applyH5FieldDefaults(fieldSchema));
4634
4742
  }
4635
4743
 
4636
4744
  export function addAdvancedFieldSchema(fieldSchema) {
4637
- advancedFields.push(fieldSchema);
4745
+ advancedFields.push(applyH5FieldDefaults(fieldSchema));
4638
4746
  }
4639
4747
 
4640
4748
  export function addCustomWidgetSchema(widgetSchema) {
4641
- customFields.push(widgetSchema);
4749
+ customFields.push(applyH5FieldDefaults(widgetSchema));
4642
4750
  }