cloud-web-corejs 1.0.54-dev.81 → 1.0.54-dev.810

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 (804) hide show
  1. package/package.json +203 -183
  2. package/src/App.vue +73 -75
  3. package/src/api/user.js +85 -40
  4. package/src/components/Qrcode/fileParse.vue +0 -1
  5. package/src/components/Tinymce/index.vue +112 -71
  6. package/src/components/VabUpload/fileLibraryDialog.vue +296 -0
  7. package/src/components/VabUpload/image-viewer.vue +3 -3
  8. package/src/components/VabUpload/index.js +69 -1
  9. package/src/components/VabUpload/index.vue +242 -231
  10. package/src/components/VabUpload/mixins/fileLibraryDialog.js +1112 -0
  11. package/src/components/VabUpload/mixins.js +2004 -9
  12. package/src/components/VabUpload/previewGroup.js +128 -0
  13. package/src/components/VabUpload/privateProfileDialog.vue +2 -2
  14. package/src/components/VabUpload/propertiesDialog.vue +1 -1
  15. package/src/components/VabUpload/view.vue +209 -120
  16. package/src/components/advancedSearchDialog/mixins.js +28 -1
  17. package/src/components/base-textarea/index.vue +104 -0
  18. package/src/components/baseAlert/index.js +44 -1
  19. package/src/components/baseAlert/index.vue +24 -20
  20. package/src/components/baseAlert/mixins.js +61 -1
  21. package/src/components/baseArea/index.vue +1683 -0
  22. package/src/components/baseAttachment/index.vue +49 -40
  23. package/src/components/baseAttachment/install.js +21 -5
  24. package/src/components/baseAttachment/mixins.js +310 -1
  25. package/src/components/baseInputBatch/mixins.js +58 -1
  26. package/src/components/baseInputExport/index.vue +21 -14
  27. package/src/components/baseInputExport/mixins.js +415 -8
  28. package/src/components/baseInputNumber/index.vue +9 -9
  29. package/src/components/baseTabs/index.vue +16 -8
  30. package/src/components/baseTabs/mixins.js +176 -1
  31. package/src/components/bizTab/BizBillActions.vue +129 -0
  32. package/src/components/bizTab/BizTabListPage.vue +391 -0
  33. package/src/components/bizTab/README.md +378 -0
  34. package/src/components/bizTab/billTableUtil.js +48 -0
  35. package/src/components/bizTab/billValidators.js +136 -0
  36. package/src/components/bizTab/bizBillDetailMixin.js +705 -0
  37. package/src/components/bizTab/index.js +24 -0
  38. package/src/components/cnPrint/index.js +44 -1
  39. package/src/components/cnPrint/mixins.js +189 -1
  40. package/src/components/code-editor/async.js +29 -0
  41. package/src/components/code-editor/index.vue +190 -62
  42. package/src/components/confirmDialog/index.js +41 -1
  43. package/src/components/confirmDialog/index.vue +24 -17
  44. package/src/components/confirmDialog/mixins.js +31 -1
  45. package/src/components/errorMsg/index.js +47 -3
  46. package/src/components/errorMsg/index.vue +78 -70
  47. package/src/components/errorMsg/mixins.js +103 -5
  48. package/src/components/excelExport/button.vue +86 -24
  49. package/src/components/excelExport/exportFieldDialog.vue +386 -211
  50. package/src/components/excelExport/exportItemConfigUtil.js +30 -0
  51. package/src/components/excelExport/exportType.js +49 -0
  52. package/src/components/excelExport/index.js +65 -6
  53. package/src/components/excelExport/index.vue +109 -26
  54. package/src/components/excelExport/mixins.js +1153 -17
  55. package/src/components/excelImport/index.js +75 -13
  56. package/src/components/excelImport/mixins.js +841 -8
  57. package/src/components/fileLibrary/categoryMoveDialog.vue +109 -109
  58. package/src/components/fileLibrary/fileHistoryDialog.vue +1 -1
  59. package/src/components/fileLibrary/fileObjAuthDialog.vue +297 -208
  60. package/src/components/fileLibrary/fileObjAuthEdit.vue +1 -1
  61. package/src/components/fileLibrary/fileObjAuthEditDialog.vue +6 -0
  62. package/src/components/fileLibrary/filterDialog.vue +454 -0
  63. package/src/components/fileLibrary/index.vue +1109 -687
  64. package/src/components/fileLibrary/mixins/categoryMoveDialogMixins.js +1 -1
  65. package/src/components/fileLibrary/mixins/fileCategoryDialogMixins.js +1 -1
  66. package/src/components/fileLibrary/mixins/fileHistoryDialogMixins.js +2 -2
  67. package/src/components/fileLibrary/mixins/fileObjAuthDialogMixin.js +339 -211
  68. package/src/components/fileLibrary/mixins/fileObjAuthEditDialogMixin.js +31 -27
  69. package/src/components/fileLibrary/mixins/fileObjAuthEditMixin.js +4 -4
  70. package/src/components/fileLibrary/mixins/indexMixins.js +230 -101
  71. package/src/components/fileLibrary/mixins/propertiesDialogMixins.js +62 -3
  72. package/src/components/fileLibrary/mixins/recycleBinDialogMixins.js +3 -3
  73. package/src/components/fileLibrary/propertiesDialog.vue +190 -145
  74. package/src/components/fileLibrary/recycleBinDialog.vue +237 -236
  75. package/src/components/fileLibrary/shareDialog.vue +1 -1
  76. package/src/components/formDialog/README.md +371 -0
  77. package/src/components/formDialog/actionButtons.js +90 -0
  78. package/src/components/formDialog/index.js +48 -0
  79. package/src/components/formDialog/index.vue +802 -0
  80. package/src/components/formDrawer/drawer.vue +722 -0
  81. package/src/components/formDrawer/index.js +50 -0
  82. package/src/components/formOplog/mixins.js +85 -4
  83. package/src/components/hiprint/css/bootstrap.min.css +6 -0
  84. package/src/components/hiprint/fonts/glyphicons-halflings-regular.eot +0 -0
  85. package/src/components/hiprint/fonts/glyphicons-halflings-regular.svg +288 -0
  86. package/src/components/hiprint/fonts/glyphicons-halflings-regular.ttf +0 -0
  87. package/src/components/hiprint/fonts/glyphicons-halflings-regular.woff +0 -0
  88. package/src/components/hiprint/fonts/glyphicons-halflings-regular.woff2 +0 -0
  89. package/src/components/hiprint/hiprint.bundle.js +15 -3
  90. package/src/components/hiprint/view/design/index.vue +146 -48
  91. package/src/components/hiprint/view/design/mixins.js +611 -1
  92. package/src/components/hiprint/view/design/preview.vue +75 -52
  93. package/src/components/hiprint/view/json-view.vue +31 -31
  94. package/src/components/jdPrint/index.js +44 -1
  95. package/src/components/jdPrint/mixins.js +208 -1
  96. package/src/components/jsonImport/exportUtil.js +106 -0
  97. package/src/components/jsonImport/index.js +212 -17
  98. package/src/components/jsonImport/mixins.js +350 -16
  99. package/src/components/langImport/index.js +80 -1
  100. package/src/components/langImport/mixins.js +487 -1
  101. package/src/components/langTag/mixins/addButton.js +51 -5
  102. package/src/components/langTag/mixins/deleteButton.js +55 -5
  103. package/src/components/langTag/mixins/view.js +47 -5
  104. package/src/components/luckysheet/dialog.vue +159 -0
  105. package/src/components/luckysheet/export.js +595 -0
  106. package/src/components/luckysheet/fileUtils.js +147 -0
  107. package/src/components/luckysheet/index.js +72 -0
  108. package/src/components/luckysheet/templateJson.js +12078 -0
  109. package/src/components/luckysheet/view.vue +210 -0
  110. package/src/components/micro-view-host/contract.js +66 -0
  111. package/src/components/micro-view-host/index.vue +148 -0
  112. package/src/components/mobile/file/index.vue +10 -0
  113. package/src/components/mobile/wf/mixins/wfModifyDialogMixin.js +51 -47
  114. package/src/components/obsUpload/index.js +34 -0
  115. package/src/components/obsUpload/index.vue +234 -0
  116. package/src/components/obsUpload/mixins.js +1542 -0
  117. package/src/components/onlineTalk/index.vue +1 -1
  118. package/src/components/onlineTalk/mixins.js +852 -1
  119. package/src/components/onlineTalk/talkUserDialog.vue +280 -0
  120. package/src/components/oplogTable/mixins.js +83 -4
  121. package/src/components/pddPrint/index.js +44 -1
  122. package/src/components/pddPrint/mixins.js +252 -1
  123. package/src/components/projectTag/mixins/addButton.js +52 -1
  124. package/src/components/projectTag/mixins/deleteButton.js +52 -1
  125. package/src/components/projectTag/mixins/view.js +43 -1
  126. package/src/components/scriptDescription/button.vue +12 -4
  127. package/src/components/scriptDescription/mixins.js +30 -1
  128. package/src/components/scriptTest/mixins.js +90 -1
  129. package/src/components/statusTag/mixins.js +66 -1
  130. package/src/components/table/CellSlot.vue +12 -9
  131. package/src/components/table/config.js +76 -1
  132. package/src/components/table/index.js +1276 -11
  133. package/src/components/table/plugins/cell-area/index.js +1055 -0
  134. package/src/components/table/plugins/cell-area/index.scss +77 -0
  135. package/src/components/table/plugins/cell-area/util.js +224 -0
  136. package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.es6.min.js +11028 -0
  137. package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.min.css +200 -0
  138. package/src/components/table/state.js +42 -0
  139. package/src/components/table/tableForm.vue +118 -69
  140. package/src/components/table/tableFormMixin.js +313 -1
  141. package/src/components/table/util/index.js +337 -0
  142. package/src/components/table/vxeFilter/index.js +155 -1
  143. package/src/components/table/vxeFilter/mixin.js +316 -6
  144. package/src/components/tempStorage/index.vue +76 -55
  145. package/src/components/tempStorage/tempStorageDialog.vue +179 -54
  146. package/src/components/vb-tabs/x-tabs.vue +167 -112
  147. package/src/components/vipPrint/index.js +44 -1
  148. package/src/components/vipPrint/mixins.js +268 -1
  149. package/src/components/wf/addOpinionButton.vue +57 -0
  150. package/src/components/wf/addTaskUserdialog.vue +1 -1
  151. package/src/components/wf/content.vue +848 -362
  152. package/src/components/wf/content2.vue +4 -2
  153. package/src/components/wf/mixins/addOpinionButton.js +53 -0
  154. package/src/components/wf/mixins/setCandidateButton.js +161 -0
  155. package/src/components/wf/mixins/setCandidateDialog.js +217 -5
  156. package/src/components/wf/mixins/setCandidateDialog2.js +252 -0
  157. package/src/components/wf/mixins/wfFlowEleScriptDialog.js +131 -0
  158. package/src/components/wf/mixins/wfTaskUserRangeDialog.js +69 -0
  159. package/src/components/wf/setCandidateButton.vue +40 -0
  160. package/src/components/wf/setCandidateDialog.vue +10 -0
  161. package/src/components/wf/setCandidateDialog2.vue +105 -0
  162. package/src/components/wf/wf.js +2293 -30
  163. package/src/components/wf/wfActionDropdown.vue +85 -0
  164. package/src/components/wf/wfActionItems.js +136 -0
  165. package/src/components/wf/wfAutoConfirm.js +55 -0
  166. package/src/components/wf/wfButtonName.js +60 -0
  167. package/src/components/wf/wfFlowEleScriptDialog.vue +89 -0
  168. package/src/components/wf/wfStartDialog.vue +66 -42
  169. package/src/components/wf/wfTaskUserRangeDialog.vue +65 -0
  170. package/src/components/wf/wfUserRange.js +53 -0
  171. package/src/components/wf/wfUtil.js +373 -13
  172. package/src/components/xform/XFormTabContainer//346/226/260/345/242/236/351/241/265/347/255/276/346/250/241/345/274/217-/346/234/200/347/273/210/345/256/236/347/216/260.md +195 -0
  173. package/src/components/xform/docs/2026-07 table/344/270/216excelExport/344/277/256/345/244/215/345/217/212/345/257/274/345/207/272/344/274/230/345/214/226.md" +57 -0
  174. package/src/components/xform/docs/2026-07 /346/216/222/346/237/245/344/277/256/345/244/215/350/256/260/345/275/225.md" +73 -0
  175. package/src/components/xform/docs/2026-08 /345/210/227/350/241/250/345/257/274/345/207/272/350/204/261/346/225/217/345/210/227/345/211/224/351/231/244/350/220/275/345/234/260/346/226/207/346/241/243.md" +173 -0
  176. package/src/components/xform/docs/autocomplete /350/207/252/345/212/250/345/256/214/346/210/220/347/273/204/344/273/266/350/257/264/346/230/216.md" +126 -0
  177. package/src/components/xform/docs//345/220/216/345/217/260/345/255/227/346/256/265/357/274/210/345/212/250/346/200/201/347/224/237/346/210/220/357/274/211JSON /350/257/264/346/230/216.md" +1286 -0
  178. package/src/components/xform/docs//345/257/271/346/257/224/345/212/237/350/203/275/350/220/275/345/234/260/346/226/271/346/241/210.md +986 -0
  179. package/src/components/xform/docs//346/225/260/346/215/256/350/241/250/346/240/274/345/212/250/346/200/201/345/210/227 JSON /350/257/264/346/230/216.md" +657 -0
  180. 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
  181. package/src/components/xform/form-designer/designer.js +2085 -29
  182. package/src/components/xform/form-designer/form-widget/components/gantt/index.vue +434 -0
  183. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +108 -1
  184. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +291 -8
  185. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +24 -5
  186. package/src/components/xform/form-designer/form-widget/container-widget/detail-pane-widget.vue +3 -2
  187. package/src/components/xform/form-designer/form-widget/container-widget/detail-plain-widget.vue +76 -0
  188. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +62 -8
  189. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog copy.vue +971 -0
  190. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog.vue +971 -0
  191. package/src/components/xform/form-designer/form-widget/dialog/exportDialog.vue +13 -0
  192. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +320 -0
  193. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +212 -51
  194. package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +1 -1
  195. package/src/components/xform/form-designer/form-widget/dialog/formulaDialog.vue +799 -0
  196. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +30 -8
  197. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1774 -19
  198. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +223 -77
  199. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +3 -2
  200. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +67 -54
  201. package/src/components/xform/form-designer/form-widget/field-widget/a-text-widget.vue +1 -1
  202. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +272 -0
  203. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +119 -0
  204. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +287 -184
  205. package/src/components/xform/form-designer/form-widget/field-widget/button-widget.vue +76 -66
  206. package/src/components/xform/form-designer/form-widget/field-widget/cascader-widget.vue +209 -90
  207. package/src/components/xform/form-designer/form-widget/field-widget/census-widget.vue +41 -35
  208. package/src/components/xform/form-designer/form-widget/field-widget/checkbox-widget.vue +18 -7
  209. package/src/components/xform/form-designer/form-widget/field-widget/color-widget.vue +4 -1
  210. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +104 -0
  211. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +16 -4
  212. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +61 -7
  213. package/src/components/xform/form-designer/form-widget/field-widget/download-button-widget.vue +133 -0
  214. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-item-widget.vue +86 -0
  215. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-widget.vue +170 -0
  216. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +1977 -16
  217. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +608 -108
  218. package/src/components/xform/form-designer/form-widget/field-widget/gantt-widget.vue +964 -0
  219. package/src/components/xform/form-designer/form-widget/field-widget/html-text-widget.vue +6 -2
  220. package/src/components/xform/form-designer/form-widget/field-widget/import-button-widget.vue +22 -11
  221. package/src/components/xform/form-designer/form-widget/field-widget/import2-button-widget.vue +90 -0
  222. package/src/components/xform/form-designer/form-widget/field-widget/input-widget.vue +7 -2
  223. package/src/components/xform/form-designer/form-widget/field-widget/mixins/autocomplete-mixin.js +451 -0
  224. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +178 -0
  225. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +3 -9
  226. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +3 -9
  227. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +3 -9
  228. package/src/components/xform/form-designer/form-widget/field-widget/mixins/relative-default-mixin.js +107 -0
  229. package/src/components/xform/form-designer/form-widget/field-widget/mixins/relativeDateUtil.js +321 -0
  230. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -0
  231. package/src/components/xform/form-designer/form-widget/field-widget/mixins/utc-transform-mixin.js +75 -0
  232. package/src/components/xform/form-designer/form-widget/field-widget/mixins/vabsearch-mixin.js +192 -0
  233. package/src/components/xform/form-designer/form-widget/field-widget/multiSearch-widget.vue +53 -0
  234. package/src/components/xform/form-designer/form-widget/field-widget/number-widget.vue +119 -81
  235. package/src/components/xform/form-designer/form-widget/field-widget/oplog-widget.vue +186 -0
  236. package/src/components/xform/form-designer/form-widget/field-widget/print-button-widget.vue +55 -28
  237. package/src/components/xform/form-designer/form-widget/field-widget/print-detail-button-widget.vue +119 -0
  238. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +156 -54
  239. package/src/components/xform/form-designer/form-widget/field-widget/radio-widget.vue +26 -6
  240. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +115 -0
  241. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +149 -0
  242. package/src/components/xform/form-designer/form-widget/field-widget/search_button-widget.vue +2 -2
  243. package/src/components/xform/form-designer/form-widget/field-widget/select-export-button-widget.vue +86 -0
  244. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +126 -0
  245. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +25 -10
  246. package/src/components/xform/form-designer/form-widget/field-widget/singerSearch-widget.vue +53 -0
  247. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +145 -0
  248. package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +16 -1
  249. package/src/components/xform/form-designer/form-widget/field-widget/static-text-widget.vue +8 -3
  250. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +93 -49
  251. package/src/components/xform/form-designer/form-widget/field-widget/switch-widget.vue +9 -1
  252. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +38 -38
  253. package/src/components/xform/form-designer/form-widget/field-widget/tempStorage-widget.vue +147 -0
  254. package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +111 -34
  255. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +6 -4
  256. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +36 -5
  257. package/src/components/xform/form-designer/form-widget/field-widget/vabSearch-widget.vue +3 -171
  258. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +338 -251
  259. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload2-widget.vue +753 -0
  260. package/src/components/xform/form-designer/form-widget/field-widget/vue-page-widget.vue +231 -0
  261. package/src/components/xform/form-designer/form-widget/index.vue +6 -1
  262. package/src/components/xform/form-designer/form-widget/indexMixin.js +184 -2
  263. package/src/components/xform/form-designer/index.vue +194 -191
  264. package/src/components/xform/form-designer/indexMixin.js +860 -24
  265. package/src/components/xform/form-designer/refMixinDesign.js +27 -28
  266. package/src/components/xform/form-designer/setting-panel/action-button-config-dialog.vue +241 -0
  267. package/src/components/xform/form-designer/setting-panel/dataSource-setting.vue +397 -397
  268. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +602 -0
  269. package/src/components/xform/form-designer/setting-panel/form-setting.vue +1791 -626
  270. package/src/components/xform/form-designer/setting-panel/index.vue +309 -305
  271. package/src/components/xform/form-designer/setting-panel/indexMixin.js +370 -12
  272. package/src/components/xform/form-designer/setting-panel/option-items-setting.vue +519 -236
  273. package/src/components/xform/form-designer/setting-panel/property-editor/a-link-editor.vue +5 -5
  274. package/src/components/xform/form-designer/setting-panel/property-editor/a-text-editor.vue +4 -4
  275. package/src/components/xform/form-designer/setting-panel/property-editor/alignType-editor.vue +1 -1
  276. package/src/components/xform/form-designer/setting-panel/property-editor/autoValueEnabled-editor.vue +38 -0
  277. package/src/components/xform/form-designer/setting-panel/property-editor/buttonIcon-editor.vue +14 -15
  278. package/src/components/xform/form-designer/setting-panel/property-editor/censusClass-editor.vue +7 -1
  279. package/src/components/xform/form-designer/setting-panel/property-editor/colorClass-editor.vue +28 -0
  280. package/src/components/xform/form-designer/setting-panel/property-editor/commonAttributeEnabled-editor.vue +41 -0
  281. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/columnRenderDialog.vue +124 -0
  282. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +729 -626
  283. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/edit-tree-button-group-config-dialog.vue +281 -0
  284. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +438 -0
  285. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/onCheckboxChange-editor.vue +1 -1
  286. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +1636 -592
  287. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +96 -74
  288. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail-pane/detail-pane-editor.vue +3 -3
  289. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail-plain/detail-plain-editor.vue +75 -0
  290. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/colHeight-editor.vue +1 -1
  291. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +14 -13
  292. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-height-editor.vue +1 -1
  293. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-offset-editor.vue +2 -2
  294. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-pull-editor.vue +2 -2
  295. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-push-editor.vue +2 -2
  296. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue +4 -4
  297. package/src/components/xform/form-designer/setting-panel/property-editor/container-h5-card/h5-card-editor.vue +124 -124
  298. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +34 -46
  299. package/src/components/xform/form-designer/setting-panel/property-editor/container-panel/height-editor.vue +1 -1
  300. package/src/components/xform/form-designer/setting-panel/property-editor/container-panel/width-editor.vue +1 -1
  301. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue +119 -119
  302. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tabClass-editor.vue +45 -45
  303. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +342 -0
  304. package/src/components/xform/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue +1 -1
  305. package/src/components/xform/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue +1 -1
  306. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree/tree-customClass-editor.vue +32 -3
  307. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree-pane/tree-pane-editor.vue +1 -1
  308. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/cancelButtonLabel-editor.vue +1 -1
  309. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/okButtonLabel-editor.vue +1 -1
  310. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/title-editor.vue +1 -1
  311. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue +1 -1
  312. package/src/components/xform/form-designer/setting-panel/property-editor/containerClass-editor.vue +1 -1
  313. package/src/components/xform/form-designer/setting-panel/property-editor/copyButton-editor.vue +36 -0
  314. package/src/components/xform/form-designer/setting-panel/property-editor/customClass-editor.vue +1 -1
  315. package/src/components/xform/form-designer/setting-panel/property-editor/defaultValue-editor.vue +1 -1
  316. package/src/components/xform/form-designer/setting-panel/property-editor/descriptionsItems-editor.vue +4 -4
  317. package/src/components/xform/form-designer/setting-panel/property-editor/downloadButtonFlag-editor.vue +32 -0
  318. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +137 -0
  319. package/src/components/xform/form-designer/setting-panel/property-editor/dsName-editor.vue +1 -1
  320. package/src/components/xform/form-designer/setting-panel/property-editor/echartHeight-editor.vue +1 -1
  321. package/src/components/xform/form-designer/setting-panel/property-editor/endPlaceholder-editor.vue +1 -1
  322. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/afterColumnsCreated-editor.vue +30 -0
  323. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/eventMixin.js +2 -2
  324. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +23 -8
  325. package/src/components/xform/form-designer/setting-panel/property-editor/field-accessUrl/accessUrl-editor.vue +2 -2
  326. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +25 -0
  327. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -0
  328. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +20 -0
  329. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +199 -0
  330. package/src/components/xform/form-designer/setting-panel/property-editor/field-baseAttachment/baseAttachment-fileTypes-editor.vue +23 -0
  331. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/addTableData-event-editor.vue +84 -85
  332. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/button-type-editor.vue +1 -1
  333. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindActions.js +262 -0
  334. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindEvent-editor.vue +97 -73
  335. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/form-host-event-editor.vue +188 -0
  336. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/icon-editor.vue +14 -15
  337. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +88 -12
  338. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/cascader-multiple-editor.vue +8 -3
  339. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/checkStrictly-editor.vue +11 -13
  340. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue +21 -0
  341. package/src/components/xform/form-designer/setting-panel/property-editor/field-common/keyName-editor.vue +74 -67
  342. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +179 -0
  343. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +35 -18
  344. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-format-editor.vue +1 -1
  345. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-type-editor.vue +1 -1
  346. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-valueFormat-editor.vue +1 -1
  347. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultTime-editor.vue +1 -1
  348. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +35 -18
  349. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-format-editor.vue +1 -1
  350. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-type-editor.vue +1 -1
  351. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-valueFormat-editor.vue +1 -1
  352. package/src/components/xform/form-designer/setting-panel/property-editor/field-divider/contentPosition-editor.vue +1 -1
  353. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-item-editor.vue +21 -0
  354. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-menu-editor.vue +59 -0
  355. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-bar-editor.vue +11 -11
  356. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-category-editor.vue +10 -10
  357. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-pie-editor.vue +12 -12
  358. package/src/components/xform/form-designer/setting-panel/property-editor/field-file-upload/file-upload-fileTypes-editor.vue +44 -44
  359. package/src/components/xform/form-designer/setting-panel/property-editor/field-gantt/gantt-editor.vue +36 -0
  360. package/src/components/xform/form-designer/setting-panel/property-editor/field-html-text/htmlContent-editor.vue +29 -29
  361. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +78 -24
  362. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -0
  363. package/src/components/xform/form-designer/setting-panel/property-editor/field-number/controlsPosition-editor.vue +1 -1
  364. package/src/components/xform/form-designer/setting-panel/property-editor/field-picture-upload/picture-upload-fileTypes-editor.vue +44 -44
  365. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-button-editor.vue +115 -86
  366. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-detail-button-editor.vue +115 -0
  367. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/highThreshold-editor.vue +1 -1
  368. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/lowThreshold-editor.vue +1 -1
  369. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue +2 -2
  370. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-max-editor.vue +1 -1
  371. package/src/components/xform/form-designer/setting-panel/property-editor/field-script/script-editor.vue +4 -4
  372. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +55 -0
  373. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/fontSize-editor.vue +1 -1
  374. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/preWrap-editor.vue +23 -0
  375. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/textContent-editor.vue +2 -2
  376. package/src/components/xform/form-designer/setting-panel/property-editor/field-status/field-status-editor.vue +67 -41
  377. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/activeText-editor.vue +1 -1
  378. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/inactiveText-editor.vue +1 -1
  379. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/switchWidth-editor.vue +1 -1
  380. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-button-editor.vue +56 -0
  381. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +125 -0
  382. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +3 -3
  383. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +34 -18
  384. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-format-editor.vue +1 -1
  385. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-timeLimit-editor.vue +53 -0
  386. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +35 -18
  387. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-format-editor.vue +1 -1
  388. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchField-editor.vue +2 -2
  389. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchName-editor.vue +15 -3
  390. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/field-vabUpload-editor.vue +33 -1
  391. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/vabUpload-fileTypes-editor.vue +23 -0
  392. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload2/field-vabUpload2-editor.vue +66 -0
  393. package/src/components/xform/form-designer/setting-panel/property-editor/field-vue-page/vue-page-editor.vue +48 -0
  394. package/src/components/xform/form-designer/setting-panel/property-editor/fileMaxSize-editor.vue +1 -1
  395. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesEditorMixin.js +116 -0
  396. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesSelect.vue +176 -0
  397. package/src/components/xform/form-designer/setting-panel/property-editor/fixedQuery-editor.vue +39 -0
  398. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +124 -18
  399. package/src/components/xform/form-designer/setting-panel/property-editor/formatType-editor.vue +137 -0
  400. package/src/components/xform/form-designer/setting-panel/property-editor/formula-editor.vue +972 -717
  401. package/src/components/xform/form-designer/setting-panel/property-editor/iconClass-editor.vue +1 -1
  402. package/src/components/xform/form-designer/setting-panel/property-editor/label-editor.vue +1 -1
  403. package/src/components/xform/form-designer/setting-panel/property-editor/labelAlign-editor.vue +1 -1
  404. package/src/components/xform/form-designer/setting-panel/property-editor/labelColor-editor.vue +21 -12
  405. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconClass-editor.vue +17 -16
  406. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +26 -26
  407. package/src/components/xform/form-designer/setting-panel/property-editor/labelTooltip-editor.vue +67 -13
  408. package/src/components/xform/form-designer/setting-panel/property-editor/labelWidth-editor.vue +1 -1
  409. package/src/components/xform/form-designer/setting-panel/property-editor/limit-editor.vue +2 -2
  410. package/src/components/xform/form-designer/setting-panel/property-editor/max-editor.vue +1 -1
  411. package/src/components/xform/form-designer/setting-panel/property-editor/maxLength-editor.vue +1 -1
  412. package/src/components/xform/form-designer/setting-panel/property-editor/min-editor.vue +1 -1
  413. package/src/components/xform/form-designer/setting-panel/property-editor/minLength-editor.vue +1 -1
  414. package/src/components/xform/form-designer/setting-panel/property-editor/multiple-editor.vue +19 -14
  415. package/src/components/xform/form-designer/setting-panel/property-editor/multipleLimit-editor.vue +2 -2
  416. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +135 -48
  417. package/src/components/xform/form-designer/setting-panel/property-editor/oplog-editor.vue +31 -0
  418. package/src/components/xform/form-designer/setting-panel/property-editor/placeholder-editor.vue +1 -1
  419. package/src/components/xform/form-designer/setting-panel/property-editor/precision-editor.vue +2 -2
  420. package/src/components/xform/form-designer/setting-panel/property-editor/prefixIcon-editor.vue +14 -15
  421. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +349 -0
  422. package/src/components/xform/form-designer/setting-panel/property-editor/relative-default-block.vue +369 -0
  423. package/src/components/xform/form-designer/setting-panel/property-editor/required-editor.vue +10 -6
  424. package/src/components/xform/form-designer/setting-panel/property-editor/requiredHint-editor.vue +4 -4
  425. package/src/components/xform/form-designer/setting-panel/property-editor/rows-editor.vue +1 -1
  426. package/src/components/xform/form-designer/setting-panel/property-editor/showViewButton-editor.vue +29 -0
  427. package/src/components/xform/form-designer/setting-panel/property-editor/space-editor-editor.vue +1 -1
  428. package/src/components/xform/form-designer/setting-panel/property-editor/startPlaceholder-editor.vue +1 -1
  429. package/src/components/xform/form-designer/setting-panel/property-editor/step-editor.vue +1 -1
  430. package/src/components/xform/form-designer/setting-panel/property-editor/styleTableClass-editor.vue +1 -1
  431. package/src/components/xform/form-designer/setting-panel/property-editor/styleTitClass-editor.vue +1 -1
  432. package/src/components/xform/form-designer/setting-panel/property-editor/suffixIcon-editor.vue +14 -15
  433. package/src/components/xform/form-designer/setting-panel/property-editor/tempStorage-editor.vue +42 -0
  434. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +304 -19
  435. package/src/components/xform/form-designer/setting-panel/property-editor/type-editor.vue +1 -1
  436. package/src/components/xform/form-designer/setting-panel/property-editor/uploadTip-editor.vue +1 -1
  437. package/src/components/xform/form-designer/setting-panel/property-editor/uploadURL-editor.vue +1 -1
  438. package/src/components/xform/form-designer/setting-panel/property-editor/urlValueEnabled-editor.vue +91 -0
  439. package/src/components/xform/form-designer/setting-panel/property-editor/utcTransformEnabled-editor.vue +19 -0
  440. package/src/components/xform/form-designer/setting-panel/property-editor/validation-editor.vue +3 -3
  441. package/src/components/xform/form-designer/setting-panel/property-editor/validationHint-editor.vue +3 -3
  442. package/src/components/xform/form-designer/setting-panel/property-editor/wfFlag-editor.vue +372 -50
  443. package/src/components/xform/form-designer/setting-panel/property-editor/widgetShowRuleFlag-editor.vue +263 -0
  444. package/src/components/xform/form-designer/setting-panel/property-editor/widgetWidth-editor.vue +1 -1
  445. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +374 -324
  446. package/src/components/xform/form-designer/setting-panel/widgetPropertyDialogMixin.js +186 -0
  447. package/src/components/xform/form-designer/toolbar-panel/index.vue +267 -103
  448. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +655 -24
  449. package/src/components/xform/form-designer/widget-panel/index.vue +391 -321
  450. package/src/components/xform/form-designer/widget-panel/indexMixin.js +335 -2
  451. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +4646 -3141
  452. package/src/components/xform/form-render/compareDelList.vue +83 -0
  453. package/src/components/xform/form-render/compareView.vue +76 -0
  454. package/src/components/xform/form-render/container-item/containerItemMixin.js +404 -11
  455. package/src/components/xform/form-render/container-item/data-table-item.vue +221 -203
  456. package/src/components/xform/form-render/container-item/data-table-mixin.js +5052 -978
  457. package/src/components/xform/form-render/container-item/detail-h5-item.vue +173 -172
  458. package/src/components/xform/form-render/container-item/detail-item.vue +446 -158
  459. package/src/components/xform/form-render/container-item/detail-pane-item.vue +17 -3
  460. package/src/components/xform/form-render/container-item/detail-plain-item.vue +92 -0
  461. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +285 -0
  462. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +416 -0
  463. package/src/components/xform/form-render/container-item/grid-col-item.vue +10 -3
  464. package/src/components/xform/form-render/container-item/grid-item.vue +1 -1
  465. package/src/components/xform/form-render/container-item/list-h5-item.vue +1198 -419
  466. package/src/components/xform/form-render/container-item/sub-form-item.vue +10 -2
  467. package/src/components/xform/form-render/container-item/tab-item.vue +129 -88
  468. package/src/components/xform/form-render/container-item/table-cell-item.vue +38 -32
  469. package/src/components/xform/form-render/container-item/table-item.vue +7 -7
  470. package/src/components/xform/form-render/container-item/table2-cell-item.vue +53 -34
  471. package/src/components/xform/form-render/container-item/table2-item.vue +198 -99
  472. package/src/components/xform/form-render/container-item/tree-item.vue +32 -11
  473. package/src/components/xform/form-render/dynamicDialogRender.js +238 -3
  474. package/src/components/xform/form-render/dynamicDrawerRender.js +229 -0
  475. package/src/components/xform/form-render/formDynamicFieldMixin.js +131 -0
  476. package/src/components/xform/form-render/index.vue +79 -21
  477. package/src/components/xform/form-render/indexMixin.js +5299 -37
  478. package/src/components/xform/form-render/refMixin.js +34 -3
  479. package/src/components/xform/icon-picker/icons.json +284 -0
  480. package/src/components/xform/icon-picker/index.vue +145 -0
  481. package/src/components/xform/lang/en-US.js +473 -438
  482. package/src/components/xform/lang/en-US_extension.js +4 -0
  483. package/src/components/xform/lang/zh-CN.js +646 -593
  484. package/src/components/xform/mixins/defaultHandle.js +704 -2
  485. package/src/components/xform/mixins/scriptHttp.js +179 -3
  486. package/src/components/xform/utils/attachmentValueUtil.js +239 -0
  487. package/src/components/xform/utils/dynamicSchemaUtil.js +361 -0
  488. package/src/components/xform/utils/emitter.js +4 -4
  489. package/src/components/xform/utils/fixedQueryUtil.js +93 -0
  490. package/src/components/xform/utils/formHttp.js +162 -0
  491. package/src/components/xform/utils/format.js +205 -172
  492. package/src/components/xform/utils/formula-util.js +969 -0
  493. package/src/components/xform/utils/queryParamUtil.js +84 -0
  494. package/src/components/xform/utils/sfc-generator.js +2 -2
  495. package/src/components/xform/utils/smart-vue-i18n/index.js +2 -1
  496. package/src/components/xform/utils/tableCellValidateUtil.js +148 -0
  497. package/src/components/xform/utils/tableColumnHelper.js +155 -0
  498. package/src/components/xform/utils/textMaskUtil.js +182 -0
  499. package/src/components/xform/utils/treeTableUtil.js +1265 -0
  500. package/src/components/xform/utils/util.js +1663 -1
  501. package/src/components/xform/utils/validators.js +185 -4
  502. package/src/components/xform/utils/vue2js-generator.js +2 -2
  503. package/src/components/xhsPrint/index.js +44 -1
  504. package/src/components/xhsPrint/mixins.js +269 -1
  505. package/src/directive/LimitNumber/index.js +144 -1
  506. package/src/directive/el-dialog-center/index.js +34 -1
  507. package/src/directive/el-drag-dialog/drag.js +86 -1
  508. package/src/directive/el-readonly/index.js +15 -1
  509. package/src/directive/permission/hasPermi.js +34 -1
  510. package/src/index.js +407 -84
  511. package/src/lang/index.js +56 -51
  512. package/src/lang/locale/en/login.js +27 -0
  513. package/src/lang/locale/zh/login.js +26 -0
  514. package/src/layout/components/AppMain.vue +147 -111
  515. package/src/layout/components/Sidebar/default.vue +1655 -1222
  516. package/src/layout/components/Sidebar/index.vue +6 -1
  517. package/src/layout/components/TagsView/index.vue +57 -15
  518. package/src/layout/components/createCompany/createCompanyDialog.vue +157 -0
  519. package/src/layout/components/extractedCode/createDialog.vue +92 -0
  520. package/src/layout/components/extractedCode/queryDialog.vue +103 -0
  521. package/src/layout/components/extractedCode/viewDialog.vue +207 -0
  522. package/src/layout/components/langTool.vue +128 -120
  523. package/src/layout/components/watermark/index.vue +83 -0
  524. package/src/layout/defaultLayout.vue +170 -150
  525. package/src/microRouter/index.js +447 -0
  526. package/src/mixins/selectDialog/index.js +266 -1
  527. package/src/mixins/tableTree/index.js +262 -4
  528. package/src/mixins/wf/index.js +40 -6
  529. package/src/permission.js +158 -16
  530. package/src/public-path.js +38 -0
  531. package/src/resources/js/base/common.js +109 -109
  532. package/src/router/index.js +4 -7
  533. package/src/router/modules/customer.js +70 -17
  534. package/src/router/modules/system.js +4 -0
  535. package/src/store/config/index.js +945 -600
  536. package/src/store/getters.js +4 -1
  537. package/src/store/modules/micro.js +57 -0
  538. package/src/store/modules/permission.js +517 -23
  539. package/src/store/modules/settings.js +26 -1
  540. package/src/store/modules/tagsView.js +208 -5
  541. package/src/store/modules/user.js +418 -28
  542. package/src/utils/aes.js +21 -1
  543. package/src/utils/auth.js +27 -1
  544. package/src/utils/componentDialog.js +339 -0
  545. package/src/utils/global.js +370 -8
  546. package/src/utils/index.js +579 -7
  547. package/src/utils/keepAlive.js +185 -1
  548. package/src/utils/lazyPlugin.js +66 -0
  549. package/src/utils/menuAdapter.js +277 -0
  550. package/src/utils/pddLog.js +92 -0
  551. package/src/utils/pdfUtil.js +429 -0
  552. package/src/utils/repeatOpen.js +48 -0
  553. package/src/utils/request.js +417 -28
  554. package/src/utils/resolveViewComponent.js +203 -0
  555. package/src/utils/scrollUtil.js +25 -0
  556. package/src/utils/vab.js +1279 -27
  557. package/src/utils/validate.js +104 -1
  558. package/src/views/bd/project/branch/bd_branch/edit.vue +145 -0
  559. package/src/views/bd/project/branch/bd_branch/list.vue +72 -0
  560. package/src/views/bd/project/branch/bd_branch/menuKindDialog.vue +106 -0
  561. package/src/views/bd/project/branch/bd_branch/mixins/edit.js +189 -0
  562. package/src/views/bd/project/branch/bd_branch/mixins/list.js +124 -0
  563. package/src/views/bd/project/branch/bd_branch/mixins/menuKindDialog.js +85 -0
  564. package/src/views/bd/project/branch/form_script/list.vue +31 -0
  565. package/src/views/bd/project/branch/form_template/list.vue +30 -0
  566. package/src/views/bd/project/branch/menu_kind/list.vue +31 -0
  567. package/src/views/bd/project/common/form_script/list.vue +16 -0
  568. package/src/views/bd/project/common/form_template/list.vue +15 -0
  569. package/src/views/bd/project/common/menu_kind/list.vue +15 -0
  570. package/src/views/bd/project/core/branchContext.js +100 -0
  571. package/src/views/bd/project/core/branchPage.js +78 -0
  572. package/src/views/bd/project/core/branchPageWrap.vue +225 -0
  573. package/src/views/bd/project/core/branchScope.js +44 -0
  574. package/src/views/bd/project/core/branchSearchPage.js +285 -0
  575. package/src/views/bd/project/core/branchSelect.vue +85 -0
  576. package/src/views/bd/project/core/branchTreeBar.vue +81 -0
  577. package/src/views/bd/project/core/httpBranchPatch.js +58 -0
  578. package/src/views/bd/project/datatable/menu_kind/list.vue +15 -0
  579. package/src/views/bd/project/datatable/table_model/list.vue +15 -0
  580. package/src/views/bd/setting/bd_attach_setting/dialog.vue +1 -1
  581. package/src/views/bd/setting/bd_attach_setting/edit.vue +5 -5
  582. package/src/views/bd/setting/bd_attach_setting/list.vue +28 -55
  583. package/src/views/bd/setting/bd_attach_setting/mixins/dialog.js +84 -1
  584. package/src/views/bd/setting/bd_attach_setting/mixins/edit.js +116 -5
  585. package/src/views/bd/setting/bd_attach_setting/mixins/list.js +239 -1
  586. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -0
  587. package/src/views/bd/setting/bd_company_env/edit.vue +193 -0
  588. package/src/views/bd/setting/bd_company_env/list.vue +175 -0
  589. package/src/views/bd/setting/config_manage/list.vue +83 -0
  590. package/src/views/bd/setting/formVersion/button.vue +60 -0
  591. package/src/views/bd/setting/formVersion/compareBasicSection.vue +125 -0
  592. package/src/views/bd/setting/formVersion/compareCodeSection.vue +539 -0
  593. package/src/views/bd/setting/formVersion/compareContMixin.scss +65 -0
  594. package/src/views/bd/setting/formVersion/compareContent.vue +63 -0
  595. package/src/views/bd/setting/formVersion/compareDialog.vue +88 -0
  596. package/src/views/bd/setting/formVersion/compareMixin.js +93 -0
  597. package/src/views/bd/setting/formVersion/fieldCompare.vue +54 -0
  598. package/src/views/bd/setting/formVersion/formScriptCompareView.vue +94 -0
  599. package/src/views/bd/setting/formVersion/formTemplateCompareView.vue +74 -0
  600. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +501 -0
  601. package/src/views/bd/setting/formVersion/link.vue +63 -0
  602. package/src/views/bd/setting/formVersion/preformDialog.vue +87 -0
  603. package/src/views/bd/setting/formVersion/reverButton.vue +82 -0
  604. package/src/views/bd/setting/formVersion/tableDetailDiff.js +99 -0
  605. package/src/views/bd/setting/formVersion/tableModelCompareView.vue +514 -0
  606. package/src/views/bd/setting/formVersion/textDiff.js +102 -0
  607. package/src/views/bd/setting/form_import_log/edit.vue +130 -0
  608. package/src/views/bd/setting/form_import_log/list.vue +211 -0
  609. package/src/views/bd/setting/form_script/dialog.vue +1 -1
  610. package/src/views/bd/setting/form_script/edit.vue +197 -74
  611. package/src/views/bd/setting/form_script/edit1.vue +411 -187
  612. package/src/views/bd/setting/form_script/form_list.vue +175 -85
  613. package/src/views/bd/setting/form_script/list.vue +96 -21
  614. package/src/views/bd/setting/form_script/list1.vue +207 -118
  615. package/src/views/bd/setting/form_script/mixins/dialog.js +130 -1
  616. package/src/views/bd/setting/form_script/mixins/edit.js +265 -7
  617. package/src/views/bd/setting/form_script/mixins/edit1.js +259 -9
  618. package/src/views/bd/setting/form_script/mixins/form_list.js +320 -4
  619. package/src/views/bd/setting/form_script/mixins/list.js +307 -4
  620. package/src/views/bd/setting/form_script/mixins/list1.js +512 -14
  621. package/src/views/bd/setting/form_script/mixins/list2.js +10 -1
  622. package/src/views/bd/setting/form_script/mixins/otherAuthDialog.js +194 -0
  623. package/src/views/bd/setting/form_script/mixins/preformDialog.js +34 -1
  624. package/src/views/bd/setting/form_script/otherAuthDialog.vue +83 -0
  625. package/src/views/bd/setting/form_template/batchWfObjConfigDialog.vue +3 -3
  626. package/src/views/bd/setting/form_template/dialog.vue +1 -1
  627. package/src/views/bd/setting/form_template/edit.vue +356 -184
  628. package/src/views/bd/setting/form_template/formDesignerDialog.vue +172 -0
  629. package/src/views/bd/setting/form_template/ftHistoryDialog.vue +1 -1
  630. package/src/views/bd/setting/form_template/itemList.vue +1 -1
  631. package/src/views/bd/setting/form_template/list.vue +303 -214
  632. package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +279 -1
  633. package/src/views/bd/setting/form_template/mixins/dialog.js +103 -1
  634. package/src/views/bd/setting/form_template/mixins/edit.js +280 -9
  635. package/src/views/bd/setting/form_template/mixins/editWfObjConfigDialog.js +92 -1
  636. package/src/views/bd/setting/form_template/mixins/ftHistoryDialog.js +91 -1
  637. package/src/views/bd/setting/form_template/mixins/itemEdit.js +104 -1
  638. package/src/views/bd/setting/form_template/mixins/itemList.js +234 -1
  639. package/src/views/bd/setting/form_template/mixins/list.js +721 -22
  640. package/src/views/bd/setting/form_template/mixins/list2.js +411 -0
  641. package/src/views/bd/setting/form_template/mixins/otherAuthDialog.js +193 -0
  642. package/src/views/bd/setting/form_template/mixins/preformDialog.js +28 -3
  643. package/src/views/bd/setting/form_template/mixins/wf_list.js +421 -3
  644. package/src/views/bd/setting/form_template/otherAuthDialog.vue +83 -0
  645. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +253 -254
  646. package/src/views/bd/setting/form_template/wf_list.vue +161 -127
  647. package/src/views/bd/setting/logic_param/edit.vue +146 -0
  648. package/src/views/bd/setting/logic_param/edit1.vue +106 -0
  649. package/src/views/bd/setting/logic_param/edit2.vue +139 -0
  650. package/src/views/bd/setting/logic_param/list.vue +74 -0
  651. package/src/views/bd/setting/logic_param/list1.vue +12 -0
  652. package/src/views/bd/setting/logic_param/list2.vue +12 -0
  653. package/src/views/bd/setting/logic_param/mixins/edit.js +93 -0
  654. package/src/views/bd/setting/logic_param/mixins/list.js +376 -0
  655. package/src/views/bd/setting/menu_kind/dialog.vue +1 -1
  656. package/src/views/bd/setting/menu_kind/list.vue +172 -83
  657. package/src/views/bd/setting/menu_kind/mixins/authDialog.js +300 -7
  658. package/src/views/bd/setting/menu_kind/mixins/dialog.js +139 -1
  659. package/src/views/bd/setting/menu_kind/mixins/list.js +201 -1
  660. package/src/views/bd/setting/push_data/edit.vue +139 -0
  661. package/src/views/bd/setting/push_data/list.vue +283 -0
  662. package/src/views/bd/setting/push_data_h/edit.vue +153 -0
  663. package/src/views/bd/setting/push_data_h/list.vue +293 -0
  664. package/src/views/bd/setting/request_async_setting/edit.vue +320 -0
  665. package/src/views/bd/setting/request_async_setting/list.vue +372 -0
  666. package/src/views/bd/setting/request_setting/edit.vue +300 -0
  667. package/src/views/bd/setting/request_setting/list.vue +301 -0
  668. package/src/views/bd/setting/table_model/dialog.vue +1 -1
  669. package/src/views/bd/setting/table_model/edit.vue +1066 -426
  670. package/src/views/bd/setting/table_model/list.vue +219 -128
  671. package/src/views/bd/setting/table_model/mixins/dialog.js +71 -1
  672. package/src/views/bd/setting/table_model/mixins/edit.js +1455 -13
  673. package/src/views/bd/setting/table_model/mixins/list.js +463 -2
  674. package/src/views/bd/setting/table_model/mixins/otherAuthDialog.js +201 -0
  675. package/src/views/bd/setting/table_model/mixins/zdDialog.js +146 -3
  676. package/src/views/bd/setting/table_model/otherAuthDialog.vue +83 -0
  677. package/src/views/bd/setting/table_model/zdDialog.vue +1 -1
  678. package/src/views/bd/setting/utils/index.js +75 -1
  679. package/src/views/demo/bizTab/bill/billConfig.js +41 -0
  680. package/src/views/demo/bizTab/bill/detail.vue +436 -0
  681. package/src/views/demo/bizTab/bill/list.vue +288 -0
  682. package/src/views/demo/bizTab/bill/productDialog.vue +176 -0
  683. package/src/views/demo/bizTab/simple/billApi.js +123 -0
  684. package/src/views/demo/bizTab/simple/detail.vue +407 -0
  685. package/src/views/demo/bizTab/simple/list.vue +217 -0
  686. package/src/views/demo/bizTab/standalone/index.vue +121 -0
  687. package/src/views/demo/bizTab/wf/billConfig.js +44 -0
  688. package/src/views/demo/bizTab/wf/detail.vue +661 -0
  689. package/src/views/demo/bizTab/wf/list.vue +242 -0
  690. package/src/views/support/export_template/list.vue +1 -1
  691. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  692. package/src/views/support/form-dialog-demo/index.vue +537 -0
  693. package/src/views/user/access_log/list.vue +418 -349
  694. package/src/views/user/access_log/list2.vue +1 -1
  695. package/src/views/user/api_request/list.vue +1 -1
  696. package/src/views/user/area/dialog.vue +223 -117
  697. package/src/views/user/area/list.vue +318 -0
  698. package/src/views/user/bill_setting/list.vue +1 -1
  699. package/src/views/user/bill_setting/userDialog.vue +1 -1
  700. package/src/views/user/code_rules/list.vue +1 -1
  701. package/src/views/user/commMenu/index.vue +2 -2
  702. package/src/views/user/common_attribute/list.vue +6 -3
  703. package/src/views/user/common_script/list.vue +1 -1
  704. package/src/views/user/company_info/dialog.vue +195 -163
  705. package/src/views/user/company_info/edit.vue +149 -88
  706. package/src/views/user/country/dialog.vue +1 -1
  707. package/src/views/user/country/list.vue +1 -1
  708. package/src/views/user/data_type_setting/dialog.vue +1 -1
  709. package/src/views/user/extend_datasource/dialog.vue +4 -1
  710. package/src/views/user/extend_datasource/edit.vue +2 -1
  711. package/src/views/user/extend_datasource/list.vue +4 -1
  712. package/src/views/user/fieldTranslation/editDialog.vue +8 -8
  713. package/src/views/user/fieldTranslation/list.vue +34 -34
  714. package/src/views/user/field_values_invisible/list.vue +1 -1
  715. package/src/views/user/file_type/list.vue +1 -1
  716. package/src/views/user/file_view_area/list.vue +1 -1
  717. package/src/views/user/file_view_ins/list.vue +22 -1
  718. package/src/views/user/form/form_template/dialog.vue +1 -1
  719. package/src/views/user/form/form_template/itemList.vue +1 -1
  720. package/src/views/user/form/form_template/list.vue +1 -1
  721. package/src/views/user/form/form_template_field/dialog.vue +1 -1
  722. package/src/views/user/form/form_type/dialog.vue +1 -1
  723. package/src/views/user/form/form_type/list.vue +1 -1
  724. package/src/views/user/form/report_requestaccess/dialog.vue +1 -1
  725. package/src/views/user/form/report_requestaccess/list.vue +1 -1
  726. package/src/views/user/form/vform/designer.vue +821 -749
  727. package/src/views/user/form/vform/formFieldMapping.js +2 -3
  728. package/src/views/user/form/vform/out_render.vue +1 -1
  729. package/src/views/user/form/vform/render.vue +80 -52
  730. package/src/views/user/form/view/edit.vue +56 -37
  731. package/src/views/user/form/view/list.vue +475 -54
  732. package/src/views/user/groups/dialog.vue +1 -1
  733. package/src/views/user/groups/list.vue +1 -1
  734. package/src/views/user/home/default.vue +1117 -979
  735. package/src/views/user/home/default2.vue +1158 -0
  736. package/src/views/user/home/dev.vue +29 -0
  737. package/src/views/user/home/index.vue +20 -16
  738. package/src/views/user/home/wjl/content.vue +1206 -0
  739. package/src/views/user/lang_tag/dialog.vue +1 -1
  740. package/src/views/user/lang_tag/list.vue +1 -1
  741. package/src/views/user/language_setting/list.vue +1 -1
  742. package/src/views/user/login/default.vue +165 -44
  743. package/src/views/user/login/index.vue +4 -6
  744. package/src/views/user/login/indexMixin.js +582 -380
  745. package/src/views/user/menu/list.vue +51 -2
  746. package/src/views/user/menu/voc_list.vue +686 -0
  747. package/src/views/user/menuFallback/index.vue +123 -0
  748. package/src/views/user/mobile_menu/list.vue +1 -1
  749. package/src/views/user/notify_message/dialog.vue +65 -22
  750. package/src/views/user/notify_message/list.vue +1 -1
  751. package/src/views/user/notify_template/edit.vue +188 -187
  752. package/src/views/user/notify_template/edit2.vue +176 -0
  753. package/src/views/user/notify_template/list.vue +5 -2
  754. package/src/views/user/notify_template/list2.vue +190 -0
  755. package/src/views/user/oplog/list.vue +1 -1
  756. package/src/views/user/outLink/cc_form_view.vue +188 -0
  757. package/src/views/user/outLink/form_view.vue +202 -211
  758. package/src/views/user/outLink/index.vue +62 -18
  759. package/src/views/user/outLink/view.vue +5 -13
  760. package/src/views/user/position/dialog.vue +1 -1
  761. package/src/views/user/position/list.vue +5 -5
  762. package/src/views/user/project_tag/dialog.vue +10 -5
  763. package/src/views/user/project_tag/edit.vue +2 -2
  764. package/src/views/user/project_tag/list.vue +10 -5
  765. package/src/views/user/push_setting/list.vue +1 -1
  766. package/src/views/user/request_setting/edit.vue +258 -0
  767. package/src/views/user/request_setting/list.vue +248 -0
  768. package/src/views/user/role/authConfig.vue +89 -0
  769. package/src/views/user/role/dialog.vue +70 -48
  770. package/src/views/user/role/edit.vue +632 -429
  771. package/src/views/user/role/list.vue +149 -71
  772. package/src/views/user/role/voc_edit.vue +293 -0
  773. package/src/views/user/sale_org/dialog.vue +2 -2
  774. package/src/views/user/sale_org/list.vue +5 -2
  775. package/src/views/user/system_notice/infoDialog.vue +61 -1
  776. package/src/views/user/system_notice/list.vue +1 -1
  777. package/src/views/user/system_parameter/list.vue +1 -1
  778. package/src/views/user/user/dialog.vue +47 -24
  779. package/src/views/user/user/edit.vue +1485 -1021
  780. package/src/views/user/user/form_dialog.vue +158 -0
  781. package/src/views/user/user/form_info.vue +210 -0
  782. package/src/views/user/user/form_list.vue +1 -1
  783. package/src/views/user/user/info.vue +253 -140
  784. package/src/views/user/user/list.vue +652 -563
  785. package/src/views/user/user/modifyPasswordDialog.vue +64 -53
  786. package/src/views/user/user_log_classify/list.vue +1 -1
  787. package/src/views/user/wf/iframe/index.vue +6 -1
  788. package/src/views/user/wf/iframe/index2.vue +6 -1
  789. package/src/views/user/wf/wfReport/index.vue +648 -0
  790. package/src/views/user/wf/wf_auto_submit_data/list.vue +4 -2
  791. package/src/views/user/wf/wf_manage/list.vue +699 -256
  792. package/src/views/user/wf/wf_manage/list2.vue +875 -0
  793. package/src/views/user/wf/wf_manage/wfContentDialog.vue +47 -22
  794. package/src/views/user/wf/wf_obj_config/dialog.vue +1 -1
  795. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +109 -0
  796. package/src/views/user/wf/wf_obj_config/itemEdit.vue +25 -1
  797. package/src/views/user/wf/wf_obj_config/list.vue +115 -10
  798. package/src/views/user/wf/wf_obj_config/list_form.vue +1 -1
  799. package/src/views/user/wf/wf_transfer_setting/edit.vue +282 -0
  800. package/src/views/user/wf/wf_transfer_setting/list.vue +319 -0
  801. package/src/views/user/workbench_menu/list.vue +555 -0
  802. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +0 -207
  803. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1347
  804. package/src/utils/wf.js +0 -21
@@ -0,0 +1,195 @@
1
+ # xform 表单「新增页签模式」——最终实现(已落地)
2
+
3
+ > 本文记录**实际已落地**的实现,替代前几版方案文档(`新增页签模式实现方案.md` / `新增页签模式-落地实施文档.md` / `新增页签模式-归一落地方案.md` / 弃用的 `IMPLEMENTATION_PLAN.md`)。
4
+ > 需求:去掉固定「常规」页签承载新增 → 新增打开独立可关闭页签(标题"新增")→ 保存后本页变编辑态(标题变名称字段)→ 提交(启动流程)后可配置「关闭页签回列表刷新」或「刷新本页」,并正确处理保存成功/提交失败/取消等边界。
5
+
6
+ ---
7
+
8
+ ## 一、最终交互与配置
9
+
10
+ ### 配置项(列表表单 formConfig,设计器「列表标签页信息」分组)
11
+
12
+ | 字段 | 类型 | 默认 | 含义 |
13
+ |------|------|------|------|
14
+ | `addTabEnabled` | Boolean | `false` | 新增打开独立页签总开关。开启后新增走动态可关闭页签,不走「常规」 |
15
+ | `submitBehavior` | String | `"closeToList"` | 提交后行为:`closeToList`(关页签回列表刷新)/ `refreshCurrent`(刷新本页出流程信息) |
16
+
17
+ > 新增页签初始标题**固定为「新增」**,不提供配置项(保存后升级为名称字段值)。
18
+
19
+ 复用既有字段(未新造):`hideNormalTab`(隐藏常规页签)、`multiTabLabelField`(页签标题字段,新增/编辑共用)、`multiTabEnabled`(编辑页签多开,语义不变)。
20
+
21
+ > **配置位置统一在「列表表单」**,与 `multiTabEnabled` 同处。`submitBehavior` 运行时优先读列表表单配置。
22
+
23
+ ### 端到端行为(详情内容恰好刷新一次)
24
+
25
+ | 分支 | 行为 | 详情刷新 |
26
+ |------|------|:---:|
27
+ | 新增保存(纯保存) | 页签升级编辑态、标题变名称字段、`dataId`=单号 | 1(编辑态重载) |
28
+ | 保存并提交 → 提交成功 + `refreshCurrent` | 刷新本页,出流程信息 | 1 |
29
+ | 保存并提交 → 提交成功 + `closeToList` | 关当前页签 → 切列表 → 刷新列表 | 0(详情) |
30
+ | 保存并提交 → 提交失败 / 取消候选人弹框 | 刷新当前详情到编辑态(不重复入库) | 1 |
31
+ | 直接启动流程(`wfStartBindSave` 开)→ 失败/取消 | 刷新到编辑态 | 1 |
32
+ | **直接启动流程(`wfStartBindSave` 关)→ 失败/取消** | **不刷新表单** | 0 |
33
+ | 直接启动流程 → 成功 | 按 `submitBehavior` 关页签/刷新 | 0 或 1 |
34
+
35
+ ---
36
+
37
+ ## 二、设计要点
38
+
39
+ 1. **归一**:新增 = 一个「还没有单号的编辑页签」,复用现有 `x-tabs` + `editTab` 插槽机制,不另写容器/分支体系。
40
+ 2. **合成唯一 id**:新增时给虚拟 row 合成 `id = tabName = "add_<时间戳>_<随机>"`,使 `x-tabs` 去重(按 `data.id`)/`tabName`/`paneName` 三者对齐;`dataId` 显式置 `null`,避免被当真实单号去 `getOne`。
41
+ 3. **元数据升级与内容重载解耦**:表单不 `watch` `dataId`,故改 `tab.dataId` 不触发重载。保存成功先只升级页签元数据(`dataId`/`isAdd`/`formCode`/标题),内容的那一次刷新交给流程结束后的分支,保证详情不刷两次。
42
+ 4. **wf 组件零业务耦合**:`wf.js` 只认通用钩子 `option.onStartSuccess` / `onStartFail` / `onCancel`,页签相关逻辑全部收在 xform 侧(`indexMixin`)。
43
+ 5. **两个入口统一**:「保存并提交」(`defaultHandle`)与「直接启动流程」(`indexMixin` 构造的 wf option)都通过同一批 xform 方法处理。
44
+
45
+ ---
46
+
47
+ ## 三、改动清单(实际代码)
48
+
49
+ ### 1. `components/xform/utils/util.js` — `getDefaultFormConfig()`
50
+ 新增 2 个默认字段(**真正生效的默认值源**,非 designer.js 内联对象):
51
+ ```js
52
+ addTabEnabled: false,
53
+ submitBehavior: "closeToList",
54
+ ```
55
+
56
+ ### 2. `components/xform/form-designer/setting-panel/form-setting.vue`
57
+ 「列表标签页信息」分组新增:`addTabEnabled` 开关、`submitBehavior` 单选(新增页签标题固定「新增」,无输入项)。
58
+
59
+ ### 3. `components/vb-tabs/x-tabs.vue` — `removeTab` 既有 bug 修复
60
+ `tabNameEnable=true` 且关闭非首个页签时引用了未定义的 `tab`,修为 `this.tabs[tabIndex-1]`:
61
+ ```js
62
+ let prev = this.tabs[tabIndex - 1];
63
+ this.activeName = tabNameEnable ? prev.tabName : prev.data[paneKeyName] + "";
64
+ ```
65
+
66
+ ### 4. `views/user/form/view/list.vue`
67
+
68
+ **`openEditDialog`** — 归一分支,新增合成唯一 id、`dataId:null`、`isAdd`:
69
+ ```js
70
+ let isAdd = !dataId;
71
+ let addTab = formConfig.addTabEnabled && isAdd && tabLabelField;
72
+ if ((multiTabEnabled && dataId) || addTab) {
73
+ let key = isAdd ? "add_" + Date.now() + "_" + Math.random().toString(36).slice(2,6) : dataId;
74
+ let openRow = isAdd ? { ...row, id: key, [tabLabelField]: "新增" } : row;
75
+ this.$refs.xTabs.openEditTab(openRow, param, {
76
+ tabParam: { formCode, tabLabelField, tabName: key, isAdd, ...(isAdd ? { dataId: null } : {}) },
77
+ });
78
+ } else { /* 原「常规」分支不变 */ }
79
+ ```
80
+
81
+ **新增方法**(`editTab` 插槽 `@reload` 改为 `(...args) => onEditTabReload(tab, ...args)`):
82
+ - `resolveFormModel(target)`:逐级解析真实表单 `formDataModel`(`target` → `target.$refs.vFormRef` → `target.getFormRef()`)。
83
+ - `applyTabSaveResult(tab, dataId, formCode, formModel)`:升级编辑态 + 同步标题(标题取名称字段值,无值不回退单号)。**不含内容重渲染**。
84
+ - `onEditTabReload(tab, target, param)`:纯保存路径 → `applyTabSaveResult` + `reloadTabContent`(重渲染)。
85
+ - `promoteActiveAddTab(dataId, formCode, target)`:保存并提交路径 → 只对当前活动页签 `applyTabSaveResult`,**不重渲染**。
86
+
87
+ ### 5. `components/xform/mixins/defaultHandle.js` — `saveAndSubmitWfHandle`
88
+ 保存成功回调里:**先只升级页签元数据**(不刷详情),再开流程弹框,注入统一钩子:
89
+ ```js
90
+ success: (res) => {
91
+ let editFormCode = formConfig.editFormCode;
92
+ let listPageRef = formRef.getListPageRef && formRef.getListPageRef();
93
+ if (listPageRef && listPageRef.promoteActiveAddTab) {
94
+ listPageRef.promoteActiveAddTab(res.objx, editFormCode, formRef); // 元数据升级,防重复入库,不刷详情
95
+ }
96
+ openStartWfDialog(formRef, {
97
+ objId: res.objx, wfCode: ..., formCode: ..., serviceId: ..., skipStartConfirm: true,
98
+ onStartSuccess: () => formRef.onWfStartSuccess && formRef.onWfStartSuccess(),
99
+ onStartFail: () => formRef.onWfStartAbort && formRef.onWfStartAbort(), // 有保存 → 失败刷编辑态
100
+ onCancel: () => formRef.onWfStartAbort && formRef.onWfStartAbort(), // 有保存 → 取消刷编辑态
101
+ });
102
+ option?.config?.success && option.config.success(res);
103
+ },
104
+ ```
105
+
106
+ ### 6. `components/xform/form-render/indexMixin.js`
107
+
108
+ **wf option 构造处**(直接启动按钮入口,约 L1379):
109
+ ```js
110
+ onStartSuccess: () => this.onWfStartSuccess(), // 成功始终处理
111
+ // ...
112
+ if (formConfig.wfStartBindSave) { // 仅当伴随自动保存时,失败/取消才刷新
113
+ option.onStartFail = () => this.onWfStartAbort();
114
+ option.onCancel = () => this.onWfStartAbort();
115
+ option.onStart = ...; option.onBeforeStartSubmit = ...; // 既有自动保存逻辑
116
+ }
117
+ ```
118
+
119
+ **新增方法**(`switchToListTab` 附近):
120
+ ```js
121
+ getAddTabContext() {
122
+ // 返回 {xTabs, currentName, submitBehavior},仅当处于开启 addTabEnabled 的动态页签内;否则 null
123
+ }
124
+ onWfStartSuccess() {
125
+ let ctx = this.getAddTabContext();
126
+ if (ctx) {
127
+ if (ctx.submitBehavior === "refreshCurrent") this.$baseReload();
128
+ else { this.switchToListTab({ handleType: "reload" }); ctx.xTabs.removeTab(ctx.currentName); }
129
+ return;
130
+ }
131
+ this.$baseReload(); // 非本模式:原默认行为
132
+ }
133
+ onWfStartAbort() {
134
+ // 失败/取消:本模式下刷新当前详情到编辑态(dataId 已升级为单号);非本模式不处理
135
+ if (this.getAddTabContext()) this.$baseReload();
136
+ }
137
+ ```
138
+ > `getAddTabContext` 判定:当前页签名非 `first`/`second`/`otherTab*`,且列表表单 `addTabEnabled` 为真。
139
+
140
+ ### 7. `components/wf/wf.js` — `wfStartMixin`(仅通用钩子,无业务逻辑)
141
+ - `data` 增 `wfSubmitted: false`。
142
+ - `startSubmitHanlde` 首行 `this.wfSubmitted = true;`(进入提交后关闭弹框不算取消)。
143
+ - 新增 `handleWfCancel()`:未提交则一次性回调 `option.onCancel`(防多弹框重复触发)。
144
+ - `close()` 调 `handleWfCancel()`;新增 `watch.showSetCandidateDialog2`:候选人弹框未提交就关闭 → `handleWfCancel()`。
145
+ - 失败分支沿用既有 `option.onStartFail && option.onStartFail()`。
146
+
147
+ ---
148
+
149
+ ## 四、关键边界与结论
150
+
151
+ - **多次新增不覆盖**:合成唯一 id 保证每次新增各开一页签。
152
+ - **新增不误触发 getOne**:`tabParam.dataId = null` 覆盖 x-tabs 默认取 `row.id`。
153
+ - **标题**:取名称字段(`multiTabLabelField`)真实值,编辑态改名再保存会同步;无值保持原标题不回退单号。
154
+ - **防重复入库**:保存成功即升级 `tab.dataId`=单号,提交失败/取消后再保存走更新。
155
+ - **详情最多刷一次**:元数据升级不重渲染,内容刷新集中在流程结束分支。
156
+ - **wf 解耦**:`wf.js` 仅新增通用 `onCancel` 钩子;页签逻辑全在 xform。
157
+ - **`wfStartBindSave` 关 + 直接启动 + 失败/取消**:无保存,不注入 abort 钩子 → 不刷新表单。
158
+ - **向后兼容**:`addTabEnabled` 默认 false,存量表单(含 `multiTabEnabled=true`)行为不变;非 xform 的 wf 表单不受影响。
159
+
160
+ ---
161
+
162
+ ## 五、测试清单
163
+
164
+ | # | 场景 | 预期 |
165
+ |---|------|------|
166
+ | 1 | 旧表单未开 `addTabEnabled` 点新增 | 走「常规」,不变 |
167
+ | 2 | 存量 `multiTabEnabled=true` 未开 `addTabEnabled` | 编辑开页签,新增仍走常规 |
168
+ | 3 | 连续点新增 | 各开一页签,不覆盖 |
169
+ | 4 | 新增点开 | 空白新增表单,不调 getOne |
170
+ | 5 | 新增保存 | 标题变名称字段、转编辑态、`dataId` 正确、不新开页签、详情刷一次 |
171
+ | 6 | 编辑态改名再保存 | 页签标题同步为新名称 |
172
+ | 7 | 保存并提交成功 + `refreshCurrent` | 详情刷一次,出流程信息 |
173
+ | 8 | 保存并提交成功 + `closeToList` | 关页签、切列表、列表刷新 |
174
+ | 9 | 保存并提交 → 提交失败 | 详情刷到编辑态,不重复入库 |
175
+ | 10 | 保存并提交 → 关候选人弹框取消 | 详情刷到编辑态,不重复入库 |
176
+ | 11 | 保存并提交后重复提交 | 走更新,不产生重复单据 |
177
+ | 12 | `wfStartBindSave` 关 + 直接启动 + 失败/取消 | 表单不刷新 |
178
+ | 13 | `wfStartBindSave` 开 + 直接启动 + 失败/取消 | 刷到编辑态 |
179
+ | 14 | 关闭非首个动态页签 | 不报错(x-tabs 修复) |
180
+ | 15 | 非 xform 表单用流程 | 失败/取消不刷新,成功行为不变 |
181
+
182
+ ---
183
+
184
+ ## 六、涉及文件
185
+
186
+ | 文件 | 改动 |
187
+ |------|------|
188
+ | `components/xform/utils/util.js` | `getDefaultFormConfig` 加 3 字段 |
189
+ | `components/xform/form-designer/setting-panel/form-setting.vue` | 配置 UI |
190
+ | `components/vb-tabs/x-tabs.vue` | `removeTab` bug 修复 |
191
+ | `views/user/form/view/list.vue` | `openEditDialog` 归一分支 + `resolveFormModel`/`applyTabSaveResult`/`onEditTabReload`/`promoteActiveAddTab` |
192
+ | `components/xform/mixins/defaultHandle.js` | `saveAndSubmitWfHandle` 元数据升级 + 注入钩子 |
193
+ | `components/xform/form-render/indexMixin.js` | wf option 注入 + `getAddTabContext`/`onWfStartSuccess`/`onWfStartAbort` |
194
+ | `components/wf/wf.js` | `wfStartMixin` 通用 `onCancel` 钩子 + `wfSubmitted` 标志 |
195
+ </content>
@@ -0,0 +1,57 @@
1
+ # table / excelExport 排查修复与导出优化记录(2026-07)
2
+
3
+ > 排查范围:`src/components/table/**`、`src/components/excelExport/**`(xform 数据表格与列表导出的底层依赖)。
4
+ > 本轮实施了方案的第一期(稳定性)与第二期(性能),第三期(体验:分片上送、完成通知、可中断取消、blob 下载)未实施。
5
+ > 验证:`npm run build:prod` 编译通过;ESLint 改动文件除存量 `operator-linebreak` 外零错误。
6
+
7
+ ## 一、table/ 修复清单
8
+
9
+ | # | 位置 | 问题 | 修复 |
10
+ |---|------|------|------|
11
+ | T1 | `index.js` handleToolbar | 引用未定义的 `that`,配置 `bindToolbar: true` 即 ReferenceError | 改用 `$grid.$nextTick` |
12
+ | T2 | `index.js` addTableData | `success` 回调被塞进请求体 data,永不执行 | 移到 `$http` 顶层参数 |
13
+ | T3 | `index.js` exportConfig | vxe 原生导出 mode=all 的 `queryAll` 用无鉴权 `fetch`,从未可用 | 删除 queryAll,`modes` 收敛为 `["current"]`(全量导出走 `$excelExport`) |
14
+ | T4 | `index.js` columnDrop.onEnd | 原地放下不触发 onMove 时 `tableColumn[-1]` 崩 | oldIndex 从 `dropParam.oldIndex` 兜底 + `!oldColumn \|\| !newColumn` 防护;顺带清理 6 个调试残留变量 |
15
+ | T5 | `vxeFilter/mixin.js` searchEvent | 列含空值/数值时 `value.indexOf` 崩(筛选面板输入关键字必现) | `value != null && String(value).indexOf(...)` |
16
+ | T6 | `index.js` ×3 | `console.log` 残留(列拖拽/自定义列保存高频打印) | 删除 |
17
+ | T7 | `index.js` | `$http({async:false})` 无效参数;`addTableExportJson(){}` 空函数 | 删除 |
18
+ | — | `util/index.js` groupDomRender | 存量空代码块(no-empty) | 合并条件 |
19
+
20
+ ## 二、excelExport/ 修复清单
21
+
22
+ | # | 位置 | 问题 | 修复 |
23
+ |---|------|------|------|
24
+ | E1 | `mixins.js` | `exportTimer/countTimer` 是 IIFE 模块级共享变量,**并发导出互相清除对方定时器/泄漏** | 移入组件 `data()`,全部引用改 `this.*`;无用的 `exportMtTimer` 删除 |
25
+ | E2 | `index.js` | 单例 `instance` 被二次调用直接覆盖(旧实例与 DOM 泄漏);`destroyComponent(undefined)` 时 `loadingObj.close()` 崩 | initInstance 先销毁旧实例;loadingObj 判空(对齐 button.vue 版本) |
26
+ | E3 | `mixins.js` | `clearInterval(loopToDo)` 传的是函数(no-op),分页调度 interval 空转 | 改 `clearInterval(that.exportTimer)` 并置空 |
27
+ | E4 | `mixins.js` hadleMergeExcel | 合并阶段同步 `clearExportTimer` 把用时统计一起停掉;`startPage > endPage` 不 return 仍发非法请求 | 删同步清除;越界改 `abortExport() + return` |
28
+ | E5 | `mixins.js` startProcess/2 | `path.split`:path 为函数时崩、`'#'` 时得到 `/undefined` | 函数先求值 + `'#'` 排除;推不出 prefix 时明确提示并中止 |
29
+ | E6 | `mixins.js` exportAll | `input.tpye` 拼写错误 | `input.type` |
30
+ | E7 | `exportFieldDialog.vue` dialogConfirm + `mixins.js` getHeadTitleJson | rowSpan 只对顶层无 children 列设置,≥3 层分组表头导出错位;且依赖导出明细列上不存在的 `item.level` | 按勾选后的实际树深度计算:叶子 `rowSpan = maxRowspan - depth + 1`,分组行 `rowSpan = 1` |
31
+ | E8 | `exportFieldDialog.vue` generateId | 随机数范围 0~12.5 万,列多时 node-key 碰撞导致勾选错乱 | `"expcol_" + Date.now() + "_" + 自增序号` |
32
+ | E9 | `mixins.js` 全链路 | 任何一页失败只静默 clearTimer:无提示、进度条永卡 | 新增 `abortExport(msg?)`:停定时器 + 进度条置 exception(index.vue 两个进度条挂 `:status`)+ 按需弹错(服务端已 toast 的不重复弹);createExcelFile/addExcelData/mergeExcel 失败路径全部接入 |
33
+ | 重试 | `mixins.js` loopToDo | 网络抖动一页失败整个导出报废 | 单页拉取失败自动重试 1 次(500ms 后),仍失败中止并提示失败页码(**缺页合并会静默丢行,必须中止而非跳过**) |
34
+
35
+ ## 三、导出性能优化(第二期)
36
+
37
+ 1. **取值快路径**(`mixins.js` 新增 `getExportCellValue`):导出取值按 `column.params.exportVal` → `slots.filterVal` → `formatter`(纯函数)→ 原始字段 的优先级;配置了 `renderCell` / 函数型或字符串型 `slots.default` 的列才走 `getCellValue` 的 vNode 挂载渲染兜底。此前每个渲染型单元格都要挂载一次 Vue 组件再爬 DOM(千行×20列 = 2 万次挂载),是导出耗时大头。
38
+ - **行为变化注意**:formatter 列(如 d1/n1 日期数字格式化、UTC 转换列)此前导出的是**原始值**,现在导出**格式化后的值**(与界面显示一致)。属修正,但导出文件内容会与旧版不同。
39
+ 2. **vNode 渲染实例批量复用**(`table/util/index.js` 新增 `beginCellValueBatch/endCellValueBatch`):导出期间兜底路径复用同一个临时实例,`getExcelData` 以 try/finally 包裹,结束统一销毁。筛选面板等其它 `getCellValue` 调用方行为不变。
40
+
41
+ ## 三补、导出取值补充修复(超链接按钮列导出为空 / 值错位)
42
+
43
+ 1. **字符串具名插槽列支持导出**(`table/util/index.js` getCellValue):xform 的 aLink 超链接按钮、widget、widgetList 等列的 `slots.default` 是字符串插槽名(由 data-table-item.vue 的 `#widget` 等模板提供),此前导出侧无法执行——修复前直接当函数调用会崩,快路径版本则退化为取原始字段,而设计器对按钮类列会清空 `prop`(table-column-dialog.vue changeFormatS:`row.prop = null`),导致**超链接按钮列导出全为空**。现在 getCellValue 遇到字符串插槽时从 `$table.$xegrid.$scopedSlots[插槽名]` 解析出插槽函数再走 vNode 渲染(所见即所得:isFormLabel 的按钮导出表单值,静态标签导出按钮文字);解析不到仍回退原始字段。`mixins.js` getExportCellValue 同步把字符串插槽列纳入渲染兜底。
44
+ 2. **vNode 挂载补唯一 key**(`table/util/index.js` ensureVNodeKey):复用临时实例连续挂载**无 key** 的同类型组件 vNode 时,Vue patch 会复用旧组件实例、props 更新异步生效,同步爬 DOM 拿到的是**上一个单元格的内容**(jsdom 实测:`["AAA","AAA","AAA"]`;带 key 则正确)。该问题在旧代码中已存在于"同一单元格多个组件 vNode"场景(多个按钮只有第一个的值),批量复用后扩大到跨单元格。现挂载前为无 key 的 vNode 补全局唯一 key,强制全新挂载、同步渲染正确内容。
45
+
46
+ ## 四、未实施(第三期备忘)
47
+
48
+ - `startProcess2`(当前页/勾选导出)仍是一次性单包上送,大数据量有请求体超限风险 → 建议分片复用分页 append;
49
+ - 导出完成无右下角通知;「取消」只销毁前端组件,进行中的请求与服务端临时文件不中止/清理(后端如有 `/excel/clear` 类接口可接入 beforeDestroy);
50
+ - 下载仍为表单 POST 携带 `access_token`,可改 axios blob + header 鉴权(需后端支持)。
51
+
52
+ ## 五、对下游的兼容性提示
53
+
54
+ - vxe 原生导出(toolbar 自带导出按钮)不再提供 mode=all 选项(该选项从未真正可用);
55
+ - formatter 列导出值从原始值变为格式化值(见三.1);
56
+ - 超链接按钮/按钮类列现在会导出渲染文字(isFormLabel 按钮导出表单值,静态标签按钮导出按钮文字);此前这类列导出为空或使导出崩溃;
57
+ - 建议回归:条件导出(含多文件分卷 >10 万行场景)、勾选/当前页导出、分组表头(2 层与 3 层)导出、带图片列导出、超链接按钮列导出、同一单元格多组件列导出(值不应重复第一个)、导出中途断网(应弹错并置红进度条)、两个页签同时导出。
@@ -0,0 +1,73 @@
1
+ # xform 排查修复记录(2026-07)
2
+
3
+ > 排查范围:`src/components/xform/**`(501 文件,约 3.7 万行)与 `src/views/user/form/view/**`。
4
+ > 本目录**无 git 历史**,本文档是本轮修改的唯一完整记录,请勿删除。
5
+ > 验证:`npm run build:prod` 编译通过;ESLint 改动文件除存量 `operator-linebreak` 风格问题外零错误。
6
+
7
+ ## 一、背景
8
+
9
+ 对 xform 低代码表单引擎和表单列表/详情视图做整体排查,共确认 20 个问题(16 个首轮 + 4 个混淆代码解开后新增),本轮修复其中 18 个,2 个遗留(见第六节)。
10
+
11
+ 多数崩溃级问题的根因一致:**历史上曾把 webpack 编译产物反搬回源码**,残留了编译期局部变量(`ie`、`o`、`we`、`searviceName`、`regeneratorRuntime`),这些函数一经调用即抛 ReferenceError。
12
+
13
+ ## 二、崩溃级修复
14
+
15
+ | # | 文件 | 问题 | 修复 |
16
+ |---|------|------|------|
17
+ | 1 | `form-render/indexMixin.js` | `executeDataSource` 引用未定义的 `ie`/`regeneratorRuntime`,调用即崩 | 重写为普通 async 函数,语义不变 |
18
+ | 2 | `form-render/indexMixin.js` | `showDrawer` 引用未定义的 `o`/`we`(同结构的 `showDialog` 之前已修,此处漏改) | 新建 `form-render/dynamicDrawerRender.js`(照 `dynamicDialogRender.js` 改为 el-drawer 版),`showDrawer` 改用之 |
19
+ | 3 | `form-render/indexMixin.js` | `findFieldWidgetById` 使用的 `getFieldWidgetById` 未 import | import 补齐(util.js 本就有导出) |
20
+ | 4 | `fieldMixin.js` | `loadRowGloatOptions` 里 `getOptionItemValueKey()()` 双重调用,必抛 "not a function" | 去掉多余的 `()` |
21
+ | 5 | `views/user/form/view/list.vue` | `reloadAutoContent` 引用不存在的 `this.tabs`(组件 data 无此属性),otherTab 表单 reload 必崩 | 按 `activeName`(`otherTab{N}`)定位 `otherTabList` 对应项 |
22
+ | 6 | `views/user/form/view/list.vue` | `openEditDialog` 裸取 `option.activeName`,两参调用(业务脚本常见)即崩 | 改 `option?.activeName` |
23
+ | 7 | `views/user/form/view/list.vue` | `openOtherTab` 找不到对应 formCode 时对 undefined 赋值;`initOtherTabList` 在 `otherTabList` 未配置时对 undefined 调 `.filter` | findIndex<0 时提示并返回;`otherTabList || []` 兜底 |
24
+ | 8 | `container-item/data-table-mixin.js` | `getSearchFormData` 的 `loop` 对容器传自身递归 → 查询区含布局容器时点搜索栈溢出 | 改用已导入的 `loopHandleWidget` 递归各类容器,容器节点跳过、仅收集字段 |
25
+ | 9 | `views/user/form/vform/render.vue` | formCode 无效/模板内容为空时读 `formConfig.layoutType` 白屏崩溃 | 提示「表单模板不存在或内容为空」并中止 |
26
+
27
+ ## 三、逻辑/数据类修复
28
+
29
+ | # | 文件 | 问题 | 修复 |
30
+ |---|------|------|------|
31
+ | 10 | `data-table-mixin.js` | `moveUpRow` 非树表分支判 `rowIndex >= 0`,首行上移触发 `splice(-1)` 负索引,**行被挪到倒数第二位** | 改 `rowIndex > 0` |
32
+ | 11 | `data-table-mixin.js` | `moveDownRow` 未防 `getRowIndex` 返回 -1,可能误删末行 | 补 `rowIndex >= 0 &&` |
33
+ | 12 | `mixins/defaultHandle.js` | `deleteRelRows` 边界分支返回 `{masters, slaves}`、正常分支返回 `{list1, list2}`,解构方在越界时静默拿到 undefined | 边界分支统一为 `{list1, list2}` |
34
+ | 13 | `fieldMixin.js` | `handleConfirmSearchDialog`:① 未配 `searchDialogConfig` 时裸取 `.multipleChoices` 崩;② 非 vabsearch 分支清空时 `row[item.sourceField]` 对 null 取值崩 | ① 改用已做 `\|\| {}` 防护的局部变量;② `!isClear && row` 前置判断 |
35
+ | 14 | `form-render/indexMixin.js` | `saveForm` 的 validateForm 回调忽略 valid 参数,校验失败仍继续(靠二次校验兜底,产生未捕获 rejection 与双重报错) | `if (!valid) return;` |
36
+ | 15 | `containerItemMixin.js` | `unregisterFromRefList` 只删 `refList[name]`,与 `refMixin.initRefList` 的行内 key(`name + "@row" + rowIndex`)不对齐 → 行内容器销毁不注销(幽灵引用),且可能误删主表单同名容器 | 注销 key 与注册对齐;仅当 key 仍指向当前实例时才删除(与 fieldMixin 已修策略一致) |
37
+ | 16 | `containerItemMixin.js` | `handleCustomEvent` 缺 `!this.designState` 防护(fieldMixin/indexMixin 同名方法均有) | 补齐 |
38
+
39
+ ## 四、scriptHttp 机制整体清除(经确认:功能废弃)
40
+
41
+ `this.scriptHttp(...)` 在全库**没有任何实现**(`mixins/scriptHttp.js` 文件名叫 scriptHttp 但只导出 `formHttp`;唯一定义是 designer 侧 provide 的空桩),所有运行态调用点自带即崩,说明该功能从未可用。经确认按废弃处理,调用点与死代码全部清除:
42
+
43
+ - `fieldMixin.js`:删 `autoExcScript` 方法及 `handleOnMounted` 中的调用(原 `accessAutoExc` 配置触发点);
44
+ - `containerItemMixin.js`:删死代码 `autoExcScript`(调用处早已注释);
45
+ - `views/user/form/vform/render.vue`:删死方法 `getFormInsData`(实际走 `getFormInsData2`);
46
+ - `form-designer/form-widget/dialog/vabSearchDialog.vue`:**整文件删除**(经确认组件已废弃,且全库无 import 引用);另外 4 个 dialog 里注释掉的 `// name: "vabSearchDialog"` 一并清理;
47
+ - `form-designer/indexMixin.js`:删 provide 里的空桩 `scriptHttp: () => {}`。
48
+
49
+ **影响说明**:字段配置里的 `accessAutoExc`(自动执行脚本)、`isLoadDataByAccess`/`scriptUuid`(脚本查询)从此为 no-op——原本配置了也必崩,故无存量可用场景。设计器面板中 `isLoadDataByAccess` 开关 UI 仍保留(`script-editor.vue`),`accessAutoExc` 开关本就被注释。
50
+
51
+ ## 五、死代码与文件清理
52
+
53
+ | 操作 | 对象 | 原因 |
54
+ |------|------|------|
55
+ | 删除文件 | `utils/formHttp.js` | 引用未定义的 `searviceName`(错拼),全库无 import,纯地雷 |
56
+ | 删除文件 | `form-designer/form-widget/dialog/baseFormulaDialog copy.vue` | 971 行无引用副本,且会随 npm 包发布 |
57
+ | 删除文件 | `form-designer/form-widget/dialog/vabSearchDialog.vue` | 见第四节 |
58
+ | 删除方法 | `form-render/indexMixin.js` 的 `exportPdf1/2/4/5` | 四个实验变体共 399 行,全库无引用;保留正式版 `exportPdf` |
59
+ | 删除语句 | `debugger` ×3(list.vue ×2、indexMixin `goChangeBill`)、`console.log` ×2(`openCopyEditTab`)、`let a = 1` | 调试残留;`debugger` 在用户开 DevTools 时会冻结界面 |
60
+ | 新建文件 | `form-render/dynamicDrawerRender.js` | el-drawer 动态渲染组件,补齐 `showDrawer` 缺失的依赖 |
61
+
62
+ ## 六、遗留事项(未修,需决策/后续处理)
63
+
64
+ 1. **`view/edit.vue` 的 `Number(dataId)` 精度风险**:若后端 id 为超过 2^53 的雪花 long,URL 直开编辑页会丢精度打开错单。等确认后端 id 方案后决定是否改为字符串透传。
65
+ 2. **结构性优化(可选)**:`handleCustomEvent`/`getEventParam` 在三处各有一份且行为不一(建议抽公共 mixin);`mixins/scriptHttp.js` 建议改名 `formHttp.js`(牵动几十处 import,需单独提交);`utils/emitter.js` 全树递归广播在大表单有性能隐患。
66
+ 3. **存量 ESLint 风格问题**:约 319 处 `operator-linebreak`(修复前即存在),可 `npx eslint --fix` 一次清理,diff 较大建议单独提交。
67
+ 4. `form-render/refMixin.js`、`utils/request.js` 等仍为混淆/压缩代码,后续如需审计或修改需先解开。
68
+
69
+ ## 七、对消费方(npm 包 cloud-web-corejs)的兼容性提示
70
+
71
+ - 删除的 `exportPdf1/2/4/5`、`vabSearchDialog`、`utils/formHttp.js`:源码内无引用;若下游应用的**表单低代码脚本**(onClick 等)直接调用过 `exportPdf1/2/4/5`,升级后会报 undefined——但这些变体导出效果本就不完整,风险极低。
72
+ - `executeDataSource` / `showDrawer` / `findFieldWidgetById`:由「调用即崩」变为可用,属纯修复。
73
+ - `moveUpRow` 首行行为变化:原先首行“上移”会错位到倒数第二,现为无操作(正确语义)。
@@ -0,0 +1,173 @@
1
+ # 列表导出脱敏列剔除(2026-08)
2
+
3
+ > 起因:配置了「加密」(密文文本)的字段,页面显示 `138****1234`,导出 Excel 却是完整明文。
4
+ > 排查范围:`src/components/xform/**`、`src/components/excelExport/**`、`src/components/table/**`。
5
+
6
+ ## 一、问题定性
7
+
8
+ 「加密」是**纯前端展示遮罩**,不是数据加密:
9
+
10
+ - 配置入口:属性面板 `textFlag-editor.vue` → `options.userTextRuleEnabled` + `options.userTextRuleConfig[]`
11
+ - 单条规则 `{ serveName, companyCodes, roleCodes, type, encryptFormula }`,`type=1` 角色不匹配时脱敏、`type=2` 角色匹配时脱敏,`encryptFormula` 形如 `3*3`
12
+ - 改造前实现只有一处:`form-item-wrapper.vue` —— `created` → `initShowType()` 算出 `widgetTextFlag=2`,模板改渲染 `<span>{{ getShowValue() }}</span>`,`getShowValue()` → `getProcessText()` 做星号替换
13
+
14
+ **原始值始终完整存在于 `row[field]` / `fieldModel` 中**,遮罩只发生在渲染层。
15
+
16
+ ## 二、根因:导出取值绕开渲染层
17
+
18
+ 导出取值优先级(`excelExport/mixins.js:828 getExportCellValue`):
19
+
20
+ 1. `column.params.exportVal`
21
+ 2. **`column.slots.filterVal(params)`** ← 命中点
22
+ 3. 无自定义渲染 → `row[field]`(有 `formatter` 则格式化)
23
+ 4. 兜底 `getCellValue()`:挂载 vNode 渲染再爬 DOM
24
+
25
+ 而 `data-table-mixin.js:1888` 对 `input / number / text / select / checkbox / radio / status / vabsearch / date / textarea / a-link / a-text` 这 12 类组件列统一注册了 `col.slots.filterVal`,函数体直接返回 `row[field]`(select/radio/checkbox 返回 optionLabel,vabsearch 返回 label 字段,date 返回格式化值)——**整条路径不碰 `form-item-wrapper`,不读 `widgetTextFlag`**。
26
+
27
+ 这 12 类恰好是最常配脱敏的字段类型。副作用是不一致:不在这 12 类里的组件列(`slots.default = "widget"`,无 `filterVal`)走第 4 条兜底,会真实渲染 wrapper 并爬 DOM,**导出的反而是星号**。同一张表有的列明文、有的列打码,且非有意设计。
28
+
29
+ 其它同源泄漏点:
30
+
31
+ | 路径 | 改造前 |
32
+ |---|---|
33
+ | 明细导出(`exportItemColumns`,`data-table-mixin.js:2406`) | 必明文:列只有 `field/title`,行数据后端原样返回 |
34
+ | 条件导出 / 全量导出 | 明文:`loopToDo` 分页拉后端原始行 → 同一个 `getExcelData` |
35
+ | H5 列表容器 `list-h5-item.vue` | 明文:独立 `exportData`,列带 `params.widget` 但无 `filterVal` |
36
+ | vxe 工具栏自带导出(`table/index.js` `exportConfig`) | 明文:vxe 用行原始值 |
37
+ | 列筛选下拉候选值(`vxeFilter/mixin.js`) | 明文(不属导出,本轮未处理) |
38
+ | 接口响应 / JS 内存 | 明文(需后端脱敏,前端不可解) |
39
+
40
+ ## 三、方案选型
41
+
42
+ | 档位 | 做法 | 结论 |
43
+ |---|---|---|
44
+ | 1 | 前端一致性:给 `filterVal` 结果也套一层遮罩 | 未选。要同步改 4 处取值路径,且"导出打码值"对下游数据消费无意义 |
45
+ | **2** | **命中脱敏规则的列直接整列不导出** | **本次采用** |
46
+ | 3 | 后端按角色脱敏返回 / 提供脱敏导出接口 | 真正解法,本轮范围外。方案 1、2 都只是"看不见",不是"拿不到" |
47
+
48
+ 方案 2 之所以成立:**所有导出(列表 / 条件 / 选择 / 明细)都必须先过 `exportFieldDialog`**(`mixins.js:133` 是唯一入口,`:1072` 回传 columns/leafColumns),而 `params.exportDisabled` 已被三处消费:
49
+
50
+ | 位置 | 效果 |
51
+ |---|---|
52
+ | `exportFieldDialog.vue:95 filterNonDataExportColumns`(`:160` 调用) | 字段选择树里不出现该列,子列全没了则父分组也去掉 |
53
+ | `exportFieldDialog.vue:319 dialogConfirm→loopDo` | 生成表头 JSON 时跳过 |
54
+ | `excelExport/mixins.js:860 getExcelData` | 取数时过滤 `leafColumns` |
55
+
56
+ 所以只要把标记打到列上即可一次收口,无需改任何取值逻辑。
57
+
58
+ > 曾评估过变体「保留表头、值置空」:需给通用 `excelExport` 新增 `exportMasked` 语义,且整列空白易被下游误读成"该记录无值",已否决。
59
+
60
+ ## 四、改动清单
61
+
62
+ ### 1. 新增 `src/components/xform/utils/textMaskUtil.js`
63
+
64
+ 脱敏判定的**唯一实现**,渲染侧与导出侧共用(否则界面打码、导出放行必然漂移)。
65
+
66
+ | 导出 | 职责 |
67
+ |---|---|
68
+ | `resolveTextMaskFlag(widgetOptions, ctx)` | 判定是否脱敏 + 带出命中的 `encryptFormula` |
69
+ | `compareToList(list1, list2)` | 编码列表匹配,空列表表示不限 |
70
+ | `hasTextMaskRule(widgetOptions)` | 是否配了有效规则(不代表当前用户命中) |
71
+ | `buildTextMaskContext(formRef, companyCode)` | 组装 `{ bdService, companyCode, roleCodeList }` |
72
+ | `markMaskedExportColumns($grid, ctx)` | 给命中列打 `params.exportDisabled`,并同步到明细导出列 |
73
+
74
+ 判定逻辑逐行照搬原 `initShowType`,包括两个易被"优化"掉的细节:
75
+
76
+ - 规则列表**全遍历而非命中即止**,后置规则会覆盖前置结论;
77
+ - `encryptFormula` 只要 serveName/companyCodes 命中就赋值,与 masked 与否无关。
78
+
79
+ ### 2. `form-item-wrapper.vue:676 initShowType`
80
+
81
+ 保留两个早退外壳(`!!this.designer`、`isLoadEntity && !dataId`)与 `field.options.widgetTextFlag` 写回,中间判定改调 util。行为等价,净减 73 行。
82
+
83
+ `compareToList` 保留为薄封装委托 util —— 本包对外发布,不删以免破坏下游调用。
84
+
85
+ ### 3. `data-table-mixin.js`
86
+
87
+ - `:3231 markMaskedColumnsForExport()` —— 3 行委托 util
88
+ - `:3245 exportData()` 入口调用
89
+ - `:253 mounted` 建列后 `$nextTick` 再调一次(见下节决策 3)
90
+
91
+ ### 4. `list-h5-item.vue:1664 / :1671`
92
+
93
+ H5 列表容器有独立 `exportData`,同样处理。这是编码阶段才发现的第二条泄漏路径。
94
+
95
+ ### 5. `components/table/index.js:580`
96
+
97
+ `exportConfig` 增加 `columnFilterMethod`,堵 vxe 工具栏自带导出旁路。
98
+
99
+ **行为变化**:原有的操作列、图片列等 `exportDisabled` 列也会从原生导出中消失。属修正,但需业务知晓。
100
+
101
+ ### 6. `tests/unit/components/xform/textMaskUtil.spec.js`
102
+
103
+ 17 个用例,覆盖规则匹配的各分支、fail-closed、自愈还原、分组表头递归、明细列对齐。
104
+
105
+ ## 五、关键设计决策
106
+
107
+ **决策 1 —— 判定放在导出触发时,不放在建列时。**
108
+ `bdService` / `userRoleDTOs` 由异步接口填充(`form-render/indexMixin.js:458、479、498`),建列时可能尚未就绪。
109
+
110
+ **决策 2 —— 不做"上下文未就绪"的收紧判断(踩过坑,见第十节)。**
111
+ 判定结论与渲染层严格一致即可:同一个 `resolveTextMaskFlag`、同一份用户上下文,且导出必然发生在单元格渲染之后(用户已经看到明文或密文)。**不要再引入任何"上下文是否就绪"的启发式**。
112
+
113
+ **决策 3 —— `mounted` 也标记一次。**
114
+ vxe 原生导出不走 `exportData()`,若只在导出入口标记,`columnFilterMethod` 会拿到一张没标记的列表,等于没堵。故建列后先按当时的上下文标记一次;此刻结论未必准,但只会"少防护"不会误伤,之后每次 `exportData` 会按最新上下文自愈修正。
115
+
116
+ **决策 4 —— 标记幂等且可自愈,用私有键区分归属。**
117
+ `exportDisabled` 也可能是 `isNonDataExportColumn`(`data-table-mixin.js:1710`)打的。若无差别地 `delete`,自愈会误放行操作列。故引入 `MASK_MARK_KEY = "exportDisabledByTextMask"`(`textMaskUtil.js:19`):
118
+
119
+ - 列本就带 `exportDisabled` 且无私有键 → 不接管,不打私有键
120
+ - 由本函数从无到有打上 → 同时写私有键
121
+ - 撤销时只在私有键存在时才删
122
+
123
+ ## 六、覆盖范围
124
+
125
+ | 泄漏点 | 现状 |
126
+ |---|---|
127
+ | 列表导出 / 条件导出 / 选择导出 | ✅ 堵住 |
128
+ | H5 列表导出 | ✅ 堵住 |
129
+ | 明细导出 | ⚠️ 按 field 名对齐,见局限 L1 |
130
+ | vxe 工具栏原生导出 | ✅ 决策 3 + 改动 5 |
131
+ | 列筛选下拉候选值明文 | ❌ 未纳入(不属导出) |
132
+ | 接口响应 / JS 内存明文 | ❌ 需后端脱敏 |
133
+ | 打印 / PDF | 走 DOM,应是打码的,**未验证** |
134
+ | 单元格区域复制 | **未验证**,疑似明文 |
135
+
136
+ ## 七、已知局限
137
+
138
+ - **L1**:明细导出列只有 `field/title`,只能按字段名匹配主表脱敏字段集合。明细独有字段、或明细导出脚本返回的字段名与主表不一致时,仍会明文导出。
139
+ - **L2**:动态列 / 行级 schema(`fieldSchemaMap`)下同列不同行配置可能不同,判定按列模板走;模板未配、个别行配了的情况会漏。
140
+ - **L3**:表单低代码脚本里直接读 `row.xxx`、或列上配了自定义 `params.exportVal` 的,不受影响。
141
+ - **L4**:脱敏是**列级**判定;将来若出现行级脱敏,本方案不适用。
142
+ - **L5**:`exportFieldDialog.addTableExportColumns()`(`:252`)会把勾选状态持久化到 `$grid.exportColumns`。脱敏列不在树里 → 记为 `export:false`。同一用户换成不脱敏角色后,该列默认不勾选,需手动勾一次。
143
+
144
+ ## 八、验证情况
145
+
146
+ 已验证:
147
+
148
+ - `npx jest`:13 套 157 个用例全过(新增 18 个)
149
+ - ESLint:新增文件 0 error;改动文件只剩改动前就存在的既有错误(全库 132 个,`npm run lint` 本就不通过)
150
+
151
+ **未做真机联调**,以下回归项待验:
152
+
153
+ 1. 配了脱敏的字段列,四种导出(列表 / 条件 / 选择 / 明细)文件中均无该列;
154
+ 2. 两种规则方向:`type=2 + 角色匹配`、`type=1 + 角色不匹配`;
155
+ 3. 未配脱敏的列完全不受影响;
156
+ 4. **分组表头 2 层 / 3 层下剔除叶子列后表头不错位**(`loopDo` 会重算 `colSpan/rowSpan`,本轮风险最高的一处);
157
+ 5. 页面遮罩显示效果与改造前一致(验证 `initShowType` 重构无回归);
158
+ 6. vxe 工具栏导出(若宿主开启了该按钮)。
159
+
160
+ ## 九、联调发现的问题(2026-08-04,已修)
161
+
162
+ **现象**:配了规则后,部分用户看明文、部分看密文(符合预期),但**所有用户导出时该列都消失**。
163
+
164
+ **根因**:首版实现有一个 `isTextMaskContextReady(ctx)`,用 `ctx.bdService` 非空 + 角色列表非空当作"用户上下文已就绪"的判据,未就绪时 fail-closed 剔除整列。但 `bdService` 来自 `/form_develop/getBdService`(`indexMixin.js:489`),`res.objx` 在大量环境本就是空值 —— 于是 `contextReady` 恒为 false,凡配了规则的列对所有用户一律被剔除。
165
+
166
+ **修复**:删除 `isTextMaskContextReady`,`markMaskedExportColumns` 直接采用 `resolveTextMaskFlag` 的结论。
167
+
168
+ **教训**:fail-closed 本身没错,错在"就绪"判据是拿业务值反推运行状态的启发式。这里根本不需要它 —— 渲染层用同一函数、同一上下文,且导出必然晚于渲染,结论天然一致;页面显示什么,导出就该按什么处理。回归用例见 spec 中「bdService 为空时结论仍只由规则决定」。
169
+
170
+ ## 十、同步提示
171
+
172
+ - `textMaskUtil.js` 属包内新增文件,海尔分支(stdxx)整体覆盖时需一并带上,否则 `form-item-wrapper.vue` 与两个容器的 import 会解析失败;
173
+ - 改动 5 落在 `components/table/index.js`(通用表格默认配置),影响面超出 xform,同步时注意与分支上的本地修改合并。
@@ -0,0 +1,126 @@
1
+ # autocomplete 自动完成组件
2
+
3
+ 基于 `el-autocomplete` 的远程搜索表单字段,支持**同时存储 ID 和名称**,可配置**后台逻辑脚本编码**进行远程搜索。
4
+
5
+ ## 特性
6
+
7
+ - 远程搜索:输入关键词实时调用后台逻辑脚本获取候选项
8
+ - 双值存储:选中后 ID 存入字段本身(`keyName`),名称存入展示字段(`vabSearchName`)
9
+ - 逻辑脚本配置:复用 `httpConfig`(`formScriptCode` / `formScriptParam` / `formScriptSuccess`)
10
+ - 选中回填:选中某项后可自动回填其他表单字段
11
+ - ID 反查:编辑态可选通过反查脚本根据 ID 获取名称回显
12
+ - 自定义下拉项模板:支持脚本自定义候选项展示 HTML
13
+ - 支持子表单、只读模式、流程属性、显示规则等通用能力
14
+
15
+ ## 文件清单
16
+
17
+ | 文件 | 作用 |
18
+ |------|------|
19
+ | `form-designer/form-widget/field-widget/autocomplete-widget.vue` | 运行期/设计期共用字段组件 |
20
+ | `form-designer/form-widget/field-widget/mixins/autocomplete-mixin.js` | 核心逻辑(远程搜索、选择、回填、反查) |
21
+ | `form-designer/widget-panel/widgetsConfig.js` | `autocompleteConfig` schema + 注册到 `advancedFields` |
22
+ | `form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue` | 属性编辑器(展示字段、回填配置等) |
23
+ | `lang/zh-CN.js` / `lang/en-US.js` | 组件库标签 i18n |
24
+
25
+ ## 设计器配置
26
+
27
+ 在表单设计器左侧「高级字段」分组中拖入「自动完成」组件,右侧属性面板可配置:
28
+
29
+ ### 自动完成设置(`autocomplete-vabSearchName-editor`)
30
+
31
+ 面板精简为核心配置(参考「搜索框」组件的精简风格):
32
+ - **来源ID字段**(`valueField`):候选项数据中 ID 对应的字段名,留空则使用字段本身 `keyName`;ID 始终存入字段本身
33
+ - **来源名称字段**(`vabSearchName`):候选项数据中名称对应的字段名,同时作为名称持久化的展示字段
34
+ - **选中回填**(`autocompleteFillConfig`):数组,每项 `{ targetField, targetFormField, sourceField }`
35
+
36
+ 其余通用项由标准编辑器提供:**输入提示**(`placeholder`)、**可清空**(`clearable`)在「常用设置」中配置;**清空回调**(`onSearchClear`)在「事件设置」中配置;**查询脚本编码**等在下方「请求访问设置」区块维护。
37
+
38
+ > 以下选项仍保留在 `autocompleteConfig` schema 中(保证旧表单兼容与运行时行为),但已从设计器面板移除,如需使用可直接写入组件 `options` JSON:
39
+ > - `triggerOnFocus`(默认 `true`):聚焦空输入框时是否触发一次查询
40
+ > - `debounce`(默认 `300`):输入防抖毫秒数
41
+ > - `getByIdScriptCode`:编辑态根据 ID 反查名称的脚本编码
42
+ > - `autocompleteItemTemplate`:自定义下拉项模板脚本(入参 `item`,返回 HTML 字符串)
43
+
44
+ ## 远程搜索请求约定
45
+
46
+ `querySearchAsync` 调用 `formHttp`,请求结构:
47
+
48
+ ```js
49
+ {
50
+ scriptCode: formScriptCode, // 配置的逻辑脚本编码
51
+ data: {
52
+ formCode, // 当前表单编码
53
+ formVersion, // 表单版本
54
+ taBm: fieldKeyName, // 字段名
55
+ data: {
56
+ ...accessParam, // formScriptParam 返回的额外参数
57
+ keyword: queryString // 用户输入的关键词
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ 后台脚本返回的数据(`res.objx`)应为数组(或 `{ records: [...] }`),每个元素至少包含:
64
+ - ID 字段:对应配置的 `valueField`(或字段 `keyName`)
65
+ - 名称字段:对应配置的 `vabSearchName`
66
+
67
+ `formScriptSuccess` 回调可对返回结果二次处理,返回新数组。
68
+
69
+ ## 选中行为
70
+
71
+ `handleSelect(item)`:
72
+ 1. 取 `item[valueField]` 作为 ID,写入 `currentData[fieldKeyName]`(提交字段)
73
+ 2. 取 `item[labelField]` 作为名称,写入 `currentData[vabSearchName]`(展示字段)
74
+ 3. 按 `autocompleteFillConfig` 把 `item[sourceField]` 回填到目标字段/属性
75
+ 4. 触发 `onChange(value, oldValue, item)` 自定义事件
76
+
77
+ ## 清空行为
78
+
79
+ `handleClear()`:同时清空 ID 与名称,触发 `onSearchClear`。
80
+
81
+ ## 编辑态回显
82
+
83
+ - 默认:表单数据中 ID(`keyName`)与名称(`vabSearchName`)同时存在时,直接回显名称
84
+ - 仅 ID 无名称:若配置了 `getByIdScriptCode`,`mounted` 时自动调用反查脚本获取名称回显
85
+
86
+ 反查脚本请求结构:
87
+ ```js
88
+ {
89
+ scriptCode: getByIdScriptCode,
90
+ data: { formCode, formVersion, taBm, data: { ...accessParam, id } }
91
+ }
92
+ ```
93
+
94
+ ## 与 vabsearch 的区别
95
+
96
+ | 维度 | vabsearch | autocomplete |
97
+ |------|-----------|--------------|
98
+ | 交互 | 点击弹框选择 | 输入实时搜索下拉选择 |
99
+ | 组件 | `el-input` + 弹框 | `el-autocomplete` |
100
+ | 多选 | 支持 | 不支持(单选) |
101
+ | 脚本 | 弹框表单编码 | 逻辑脚本编码(远程搜索) |
102
+ | 存储 | ID + 名称 | ID + 名称(同) |
103
+
104
+ ## 关键选项 JSON 示例
105
+
106
+ ```json
107
+ {
108
+ "type": "autocomplete",
109
+ "options": {
110
+ "name": "input123456",
111
+ "keyNameEnabled": true,
112
+ "keyName": "customer_id",
113
+ "vabSearchName": "customer_name",
114
+ "label": "客户",
115
+ "valueField": "id",
116
+ "formScriptEnabled": true,
117
+ "formScriptCode": "searchCustomer",
118
+ "triggerOnFocus": true,
119
+ "debounce": 300,
120
+ "clearable": true,
121
+ "autocompleteFillConfig": [
122
+ { "targetFormField": "customer_code", "sourceField": "code" }
123
+ ]
124
+ }
125
+ }
126
+ ```