cloud-web-corejs 1.0.54-dev.76 → 1.0.54-dev.761

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 (576) hide show
  1. package/package.json +196 -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 +2 -2
  8. package/src/components/VabUpload/index.js +69 -1
  9. package/src/components/VabUpload/index.vue +9 -1
  10. package/src/components/VabUpload/mixins/fileLibraryDialog.js +1112 -0
  11. package/src/components/VabUpload/mixins.js +1881 -2
  12. package/src/components/VabUpload/propertiesDialog.vue +1 -1
  13. package/src/components/VabUpload/view.vue +209 -120
  14. package/src/components/advancedSearchDialog/mixins.js +28 -1
  15. package/src/components/base-textarea/index.vue +104 -0
  16. package/src/components/baseAlert/index.js +44 -1
  17. package/src/components/baseAlert/index.vue +24 -20
  18. package/src/components/baseAlert/mixins.js +61 -1
  19. package/src/components/baseArea/index.vue +1628 -0
  20. package/src/components/baseAttachment/index.vue +49 -40
  21. package/src/components/baseAttachment/install.js +21 -5
  22. package/src/components/baseAttachment/mixins.js +310 -1
  23. package/src/components/baseInputBatch/mixins.js +58 -1
  24. package/src/components/baseInputExport/index.vue +21 -14
  25. package/src/components/baseInputExport/mixins.js +391 -1
  26. package/src/components/baseInputNumber/index.vue +9 -9
  27. package/src/components/baseTabs/index.vue +16 -8
  28. package/src/components/baseTabs/mixins.js +177 -1
  29. package/src/components/cnPrint/index.js +44 -1
  30. package/src/components/cnPrint/mixins.js +189 -1
  31. package/src/components/code-editor/index.vue +131 -62
  32. package/src/components/confirmDialog/index.js +41 -1
  33. package/src/components/confirmDialog/index.vue +24 -17
  34. package/src/components/confirmDialog/mixins.js +31 -1
  35. package/src/components/errorMsg/index.js +47 -3
  36. package/src/components/errorMsg/index.vue +78 -70
  37. package/src/components/errorMsg/mixins.js +103 -5
  38. package/src/components/excelExport/button.vue +86 -24
  39. package/src/components/excelExport/exportFieldDialog.vue +246 -90
  40. package/src/components/excelExport/index.js +65 -6
  41. package/src/components/excelExport/index.vue +109 -26
  42. package/src/components/excelExport/mixins.js +1132 -8
  43. package/src/components/excelImport/index.js +13 -13
  44. package/src/components/excelImport/mixins.js +2 -1
  45. package/src/components/fileLibrary/categoryMoveDialog.vue +109 -109
  46. package/src/components/fileLibrary/fileObjAuthDialog.vue +297 -208
  47. package/src/components/fileLibrary/fileObjAuthEditDialog.vue +6 -0
  48. package/src/components/fileLibrary/filterDialog.vue +454 -0
  49. package/src/components/fileLibrary/index.vue +1109 -687
  50. package/src/components/fileLibrary/mixins/categoryMoveDialogMixins.js +1 -1
  51. package/src/components/fileLibrary/mixins/fileCategoryDialogMixins.js +1 -1
  52. package/src/components/fileLibrary/mixins/fileHistoryDialogMixins.js +2 -2
  53. package/src/components/fileLibrary/mixins/fileObjAuthDialogMixin.js +339 -211
  54. package/src/components/fileLibrary/mixins/fileObjAuthEditDialogMixin.js +31 -27
  55. package/src/components/fileLibrary/mixins/fileObjAuthEditMixin.js +4 -4
  56. package/src/components/fileLibrary/mixins/indexMixins.js +230 -101
  57. package/src/components/fileLibrary/mixins/propertiesDialogMixins.js +62 -3
  58. package/src/components/fileLibrary/mixins/recycleBinDialogMixins.js +3 -3
  59. package/src/components/fileLibrary/propertiesDialog.vue +190 -145
  60. package/src/components/fileLibrary/recycleBinDialog.vue +237 -236
  61. package/src/components/fileLibrary/shareDialog.vue +1 -1
  62. package/src/components/formDialog/README.md +239 -0
  63. package/src/components/formDialog/index.js +35 -0
  64. package/src/components/formDialog/index.vue +724 -0
  65. package/src/components/formOplog/mixins.js +85 -4
  66. package/src/components/hiprint/css/bootstrap.min.css +6 -0
  67. package/src/components/hiprint/fonts/glyphicons-halflings-regular.eot +0 -0
  68. package/src/components/hiprint/fonts/glyphicons-halflings-regular.svg +288 -0
  69. package/src/components/hiprint/fonts/glyphicons-halflings-regular.ttf +0 -0
  70. package/src/components/hiprint/fonts/glyphicons-halflings-regular.woff +0 -0
  71. package/src/components/hiprint/fonts/glyphicons-halflings-regular.woff2 +0 -0
  72. package/src/components/hiprint/hiprint.bundle.js +15 -3
  73. package/src/components/hiprint/view/design/index.vue +140 -47
  74. package/src/components/hiprint/view/design/mixins.js +611 -1
  75. package/src/components/hiprint/view/design/preview.vue +75 -52
  76. package/src/components/hiprint/view/json-view.vue +31 -31
  77. package/src/components/jdPrint/index.js +44 -1
  78. package/src/components/jdPrint/mixins.js +208 -1
  79. package/src/components/jsonImport/exportUtil.js +106 -0
  80. package/src/components/jsonImport/index.js +212 -17
  81. package/src/components/jsonImport/mixins.js +350 -16
  82. package/src/components/langImport/index.js +80 -1
  83. package/src/components/langImport/mixins.js +487 -1
  84. package/src/components/langTag/mixins/addButton.js +51 -5
  85. package/src/components/langTag/mixins/deleteButton.js +55 -5
  86. package/src/components/langTag/mixins/view.js +47 -5
  87. package/src/components/luckysheet/dialog.vue +159 -0
  88. package/src/components/luckysheet/export.js +595 -0
  89. package/src/components/luckysheet/fileUtils.js +147 -0
  90. package/src/components/luckysheet/index.js +72 -0
  91. package/src/components/luckysheet/templateJson.js +12078 -0
  92. package/src/components/luckysheet/view.vue +210 -0
  93. package/src/components/mobile/file/index.vue +10 -0
  94. package/src/components/obsUpload/index.js +34 -0
  95. package/src/components/obsUpload/index.vue +231 -0
  96. package/src/components/obsUpload/mixins.js +1476 -0
  97. package/src/components/onlineTalk/index.vue +1 -1
  98. package/src/components/onlineTalk/mixins.js +852 -1
  99. package/src/components/onlineTalk/talkUserDialog.vue +280 -0
  100. package/src/components/oplogTable/mixins.js +83 -4
  101. package/src/components/pddPrint/index.js +44 -1
  102. package/src/components/pddPrint/mixins.js +252 -1
  103. package/src/components/projectTag/mixins/addButton.js +52 -1
  104. package/src/components/projectTag/mixins/deleteButton.js +52 -1
  105. package/src/components/projectTag/mixins/view.js +43 -1
  106. package/src/components/scriptDescription/button.vue +12 -4
  107. package/src/components/scriptDescription/mixins.js +30 -1
  108. package/src/components/scriptTest/mixins.js +90 -1
  109. package/src/components/statusTag/mixins.js +66 -1
  110. package/src/components/table/CellSlot.vue +12 -9
  111. package/src/components/table/config.js +74 -1
  112. package/src/components/table/index.js +1215 -11
  113. package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.es6.min.js +11028 -0
  114. package/src/components/table/plugins/extend-cell-area/vxe-table-extend-cell-area.min.css +200 -0
  115. package/src/components/table/tableForm.vue +99 -63
  116. package/src/components/table/tableFormMixin.js +285 -1
  117. package/src/components/table/util/index.js +337 -0
  118. package/src/components/table/vxeFilter/index.js +153 -1
  119. package/src/components/table/vxeFilter/mixin.js +310 -6
  120. package/src/components/tempStorage/index.vue +76 -55
  121. package/src/components/tempStorage/tempStorageDialog.vue +179 -54
  122. package/src/components/vb-tabs/x-tabs.vue +57 -30
  123. package/src/components/vipPrint/index.js +44 -1
  124. package/src/components/vipPrint/mixins.js +268 -1
  125. package/src/components/wf/addOpinionButton.vue +57 -0
  126. package/src/components/wf/content.vue +834 -362
  127. package/src/components/wf/mixins/addOpinionButton.js +53 -0
  128. package/src/components/wf/mixins/setCandidateButton.js +161 -0
  129. package/src/components/wf/mixins/setCandidateDialog.js +217 -5
  130. package/src/components/wf/mixins/setCandidateDialog2.js +252 -0
  131. package/src/components/wf/mixins/wfFlowEleScriptDialog.js +131 -0
  132. package/src/components/wf/mixins/wfTaskUserRangeDialog.js +69 -0
  133. package/src/components/wf/setCandidateButton.vue +40 -0
  134. package/src/components/wf/setCandidateDialog.vue +10 -0
  135. package/src/components/wf/setCandidateDialog2.vue +105 -0
  136. package/src/components/wf/wf.js +2221 -30
  137. package/src/components/wf/wfFlowEleScriptDialog.vue +89 -0
  138. package/src/components/wf/wfStartDialog.vue +66 -42
  139. package/src/components/wf/wfTaskUserRangeDialog.vue +65 -0
  140. package/src/components/wf/wfUtil.js +280 -1
  141. 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
  142. 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
  143. 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
  144. 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
  145. 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
  146. 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
  147. 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
  148. package/src/components/xform/form-designer/designer.js +2027 -29
  149. package/src/components/xform/form-designer/form-widget/components/gantt/index.vue +434 -0
  150. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +108 -1
  151. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +291 -8
  152. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +14 -1
  153. package/src/components/xform/form-designer/form-widget/container-widget/detail-pane-widget.vue +3 -2
  154. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +3 -3
  155. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog copy.vue +971 -0
  156. package/src/components/xform/form-designer/form-widget/dialog/baseFormulaDialog.vue +971 -0
  157. package/src/components/xform/form-designer/form-widget/dialog/exportDialog.vue +13 -0
  158. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +300 -0
  159. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +85 -49
  160. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +6 -3
  161. package/src/components/xform/form-designer/form-widget/dialog/formulaDialog.vue +799 -0
  162. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +30 -8
  163. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1774 -19
  164. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +222 -76
  165. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +67 -54
  166. package/src/components/xform/form-designer/form-widget/field-widget/a-text-widget.vue +1 -1
  167. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +272 -0
  168. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +119 -0
  169. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +216 -184
  170. package/src/components/xform/form-designer/form-widget/field-widget/button-widget.vue +76 -66
  171. package/src/components/xform/form-designer/form-widget/field-widget/cascader-widget.vue +209 -90
  172. package/src/components/xform/form-designer/form-widget/field-widget/census-widget.vue +41 -35
  173. package/src/components/xform/form-designer/form-widget/field-widget/checkbox-widget.vue +18 -7
  174. package/src/components/xform/form-designer/form-widget/field-widget/color-widget.vue +4 -1
  175. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +95 -0
  176. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +14 -3
  177. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +48 -5
  178. package/src/components/xform/form-designer/form-widget/field-widget/download-button-widget.vue +133 -0
  179. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-item-widget.vue +86 -0
  180. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-widget.vue +170 -0
  181. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +1939 -16
  182. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +657 -108
  183. package/src/components/xform/form-designer/form-widget/field-widget/gantt-widget.vue +964 -0
  184. package/src/components/xform/form-designer/form-widget/field-widget/html-text-widget.vue +6 -2
  185. package/src/components/xform/form-designer/form-widget/field-widget/import-button-widget.vue +22 -11
  186. package/src/components/xform/form-designer/form-widget/field-widget/import2-button-widget.vue +90 -0
  187. package/src/components/xform/form-designer/form-widget/field-widget/input-widget.vue +7 -2
  188. package/src/components/xform/form-designer/form-widget/field-widget/mixins/autocomplete-mixin.js +451 -0
  189. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +157 -0
  190. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +3 -9
  191. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +3 -9
  192. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +3 -9
  193. package/src/components/xform/form-designer/form-widget/field-widget/mixins/utc-transform-mixin.js +75 -0
  194. package/src/components/xform/form-designer/form-widget/field-widget/mixins/vabsearch-mixin.js +192 -0
  195. package/src/components/xform/form-designer/form-widget/field-widget/multiSearch-widget.vue +53 -0
  196. package/src/components/xform/form-designer/form-widget/field-widget/number-widget.vue +117 -81
  197. package/src/components/xform/form-designer/form-widget/field-widget/oplog-widget.vue +186 -0
  198. package/src/components/xform/form-designer/form-widget/field-widget/print-button-widget.vue +55 -28
  199. package/src/components/xform/form-designer/form-widget/field-widget/print-detail-button-widget.vue +119 -0
  200. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +156 -54
  201. package/src/components/xform/form-designer/form-widget/field-widget/radio-widget.vue +26 -6
  202. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +112 -0
  203. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +146 -0
  204. package/src/components/xform/form-designer/form-widget/field-widget/search_button-widget.vue +2 -2
  205. package/src/components/xform/form-designer/form-widget/field-widget/select-export-button-widget.vue +86 -0
  206. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +92 -0
  207. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +24 -9
  208. package/src/components/xform/form-designer/form-widget/field-widget/singerSearch-widget.vue +53 -0
  209. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +145 -0
  210. package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +16 -1
  211. package/src/components/xform/form-designer/form-widget/field-widget/static-text-widget.vue +8 -3
  212. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +93 -49
  213. package/src/components/xform/form-designer/form-widget/field-widget/switch-widget.vue +9 -1
  214. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +38 -38
  215. package/src/components/xform/form-designer/form-widget/field-widget/tempStorage-widget.vue +147 -0
  216. package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +111 -34
  217. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +4 -3
  218. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +2 -1
  219. package/src/components/xform/form-designer/form-widget/field-widget/vabSearch-widget.vue +3 -171
  220. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +187 -70
  221. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload2-widget.vue +753 -0
  222. package/src/components/xform/form-designer/form-widget/field-widget/vue-page-widget.vue +231 -0
  223. package/src/components/xform/form-designer/form-widget/index.vue +6 -1
  224. package/src/components/xform/form-designer/form-widget/indexMixin.js +184 -2
  225. package/src/components/xform/form-designer/index.vue +195 -191
  226. package/src/components/xform/form-designer/indexMixin.js +855 -24
  227. package/src/components/xform/form-designer/refMixinDesign.js +27 -28
  228. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +601 -0
  229. package/src/components/xform/form-designer/setting-panel/form-setting.vue +1553 -629
  230. package/src/components/xform/form-designer/setting-panel/index.vue +313 -305
  231. package/src/components/xform/form-designer/setting-panel/indexMixin.js +370 -12
  232. package/src/components/xform/form-designer/setting-panel/option-items-setting.vue +585 -302
  233. package/src/components/xform/form-designer/setting-panel/property-editor/a-link-editor.vue +4 -4
  234. package/src/components/xform/form-designer/setting-panel/property-editor/a-text-editor.vue +3 -3
  235. package/src/components/xform/form-designer/setting-panel/property-editor/autoValueEnabled-editor.vue +38 -0
  236. package/src/components/xform/form-designer/setting-panel/property-editor/buttonIcon-editor.vue +14 -15
  237. package/src/components/xform/form-designer/setting-panel/property-editor/censusClass-editor.vue +6 -0
  238. package/src/components/xform/form-designer/setting-panel/property-editor/colorClass-editor.vue +28 -0
  239. package/src/components/xform/form-designer/setting-panel/property-editor/commonAttributeEnabled-editor.vue +41 -0
  240. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/columnRenderDialog.vue +124 -0
  241. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +1154 -1048
  242. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/edit-tree-button-group-config-dialog.vue +281 -0
  243. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/exportItemColumns-dialog.vue +432 -0
  244. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/onCheckboxChange-editor.vue +1 -1
  245. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +1632 -592
  246. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +3 -3
  247. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail-pane/detail-pane-editor.vue +3 -3
  248. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-offset-editor.vue +1 -1
  249. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-pull-editor.vue +1 -1
  250. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-push-editor.vue +1 -1
  251. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +34 -46
  252. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +344 -0
  253. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree/tree-customClass-editor.vue +31 -2
  254. package/src/components/xform/form-designer/setting-panel/property-editor/copyButton-editor.vue +36 -0
  255. package/src/components/xform/form-designer/setting-panel/property-editor/downloadButtonFlag-editor.vue +32 -0
  256. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +133 -0
  257. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/eventMixin.js +2 -2
  258. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onClick-editor.vue +23 -8
  259. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +25 -0
  260. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -0
  261. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +20 -0
  262. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +199 -0
  263. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindEvent-editor.vue +35 -20
  264. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/icon-editor.vue +14 -15
  265. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +64 -5
  266. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/cascader-multiple-editor.vue +8 -3
  267. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/checkStrictly-editor.vue +11 -13
  268. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/showAllLevels-editor.vue +21 -0
  269. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +157 -0
  270. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-item-editor.vue +21 -0
  271. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-menu-editor.vue +59 -0
  272. package/src/components/xform/form-designer/setting-panel/property-editor/field-gantt/gantt-editor.vue +36 -0
  273. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +75 -21
  274. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +96 -0
  275. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-button-editor.vue +44 -15
  276. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-detail-button-editor.vue +115 -0
  277. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue +1 -1
  278. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +55 -0
  279. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/preWrap-editor.vue +23 -0
  280. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/textContent-editor.vue +1 -1
  281. package/src/components/xform/form-designer/setting-panel/property-editor/field-status/field-status-editor.vue +67 -41
  282. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-button-editor.vue +56 -0
  283. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +71 -0
  284. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchName-editor.vue +13 -1
  285. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/field-vabUpload-editor.vue +33 -1
  286. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload2/field-vabUpload2-editor.vue +66 -0
  287. package/src/components/xform/form-designer/setting-panel/property-editor/field-vue-page/vue-page-editor.vue +48 -0
  288. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +107 -19
  289. package/src/components/xform/form-designer/setting-panel/property-editor/formatType-editor.vue +137 -0
  290. package/src/components/xform/form-designer/setting-panel/property-editor/formula-editor.vue +721 -466
  291. package/src/components/xform/form-designer/setting-panel/property-editor/labelColor-editor.vue +20 -11
  292. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconClass-editor.vue +17 -16
  293. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +25 -25
  294. package/src/components/xform/form-designer/setting-panel/property-editor/labelTooltip-editor.vue +67 -13
  295. package/src/components/xform/form-designer/setting-panel/property-editor/limit-editor.vue +1 -1
  296. package/src/components/xform/form-designer/setting-panel/property-editor/multiple-editor.vue +19 -14
  297. package/src/components/xform/form-designer/setting-panel/property-editor/multipleLimit-editor.vue +1 -1
  298. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +127 -50
  299. package/src/components/xform/form-designer/setting-panel/property-editor/oplog-editor.vue +31 -0
  300. package/src/components/xform/form-designer/setting-panel/property-editor/precision-editor.vue +1 -1
  301. package/src/components/xform/form-designer/setting-panel/property-editor/prefixIcon-editor.vue +14 -15
  302. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +349 -0
  303. package/src/components/xform/form-designer/setting-panel/property-editor/required-editor.vue +10 -6
  304. package/src/components/xform/form-designer/setting-panel/property-editor/requiredHint-editor.vue +3 -3
  305. package/src/components/xform/form-designer/setting-panel/property-editor/showViewButton-editor.vue +29 -0
  306. package/src/components/xform/form-designer/setting-panel/property-editor/suffixIcon-editor.vue +14 -15
  307. package/src/components/xform/form-designer/setting-panel/property-editor/tempStorage-editor.vue +42 -0
  308. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +304 -19
  309. package/src/components/xform/form-designer/setting-panel/property-editor/utcTransformEnabled-editor.vue +19 -0
  310. package/src/components/xform/form-designer/setting-panel/property-editor/validation-editor.vue +2 -2
  311. package/src/components/xform/form-designer/setting-panel/property-editor/validationHint-editor.vue +2 -2
  312. package/src/components/xform/form-designer/setting-panel/property-editor/wfFlag-editor.vue +372 -50
  313. package/src/components/xform/form-designer/setting-panel/property-editor/widgetShowRuleFlag-editor.vue +263 -0
  314. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +369 -324
  315. package/src/components/xform/form-designer/setting-panel/widgetPropertyDialogMixin.js +186 -0
  316. package/src/components/xform/form-designer/toolbar-panel/index.vue +267 -103
  317. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +655 -24
  318. package/src/components/xform/form-designer/widget-panel/index.vue +389 -321
  319. package/src/components/xform/form-designer/widget-panel/indexMixin.js +334 -2
  320. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +4531 -3141
  321. package/src/components/xform/form-render/compareDelList.vue +83 -0
  322. package/src/components/xform/form-render/compareView.vue +76 -0
  323. package/src/components/xform/form-render/container-item/containerItemMixin.js +404 -11
  324. package/src/components/xform/form-render/container-item/data-table-item.vue +221 -203
  325. package/src/components/xform/form-render/container-item/data-table-mixin.js +3716 -858
  326. package/src/components/xform/form-render/container-item/detail-h5-item.vue +173 -172
  327. package/src/components/xform/form-render/container-item/detail-item.vue +287 -158
  328. package/src/components/xform/form-render/container-item/detail-pane-item.vue +17 -3
  329. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +285 -0
  330. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +416 -0
  331. package/src/components/xform/form-render/container-item/grid-col-item.vue +10 -3
  332. package/src/components/xform/form-render/container-item/grid-item.vue +1 -1
  333. package/src/components/xform/form-render/container-item/list-h5-item.vue +1184 -419
  334. package/src/components/xform/form-render/container-item/sub-form-item.vue +10 -2
  335. package/src/components/xform/form-render/container-item/tab-item.vue +125 -88
  336. package/src/components/xform/form-render/container-item/table-cell-item.vue +38 -32
  337. package/src/components/xform/form-render/container-item/table-item.vue +7 -7
  338. package/src/components/xform/form-render/container-item/table2-cell-item.vue +53 -34
  339. package/src/components/xform/form-render/container-item/table2-item.vue +198 -99
  340. package/src/components/xform/form-render/container-item/tree-item.vue +32 -11
  341. package/src/components/xform/form-render/dynamicDialogRender.js +238 -3
  342. package/src/components/xform/form-render/dynamicDrawerRender.js +229 -0
  343. package/src/components/xform/form-render/formDynamicFieldMixin.js +131 -0
  344. package/src/components/xform/form-render/index.vue +86 -21
  345. package/src/components/xform/form-render/indexMixin.js +5070 -37
  346. package/src/components/xform/form-render/refMixin.js +34 -3
  347. package/src/components/xform/icon-picker/icons.json +284 -0
  348. package/src/components/xform/icon-picker/index.vue +145 -0
  349. package/src/components/xform/lang/en-US.js +457 -438
  350. package/src/components/xform/lang/en-US_extension.js +4 -0
  351. package/src/components/xform/lang/zh-CN.js +628 -593
  352. package/src/components/xform/mixins/defaultHandle.js +474 -2
  353. package/src/components/xform/mixins/scriptHttp.js +179 -3
  354. package/src/components/xform/utils/dynamicSchemaUtil.js +361 -0
  355. package/src/components/xform/utils/emitter.js +4 -4
  356. package/src/components/xform/utils/formHttp.js +162 -0
  357. package/src/components/xform/utils/format.js +205 -172
  358. package/src/components/xform/utils/formula-util.js +969 -0
  359. package/src/components/xform/utils/sfc-generator.js +2 -2
  360. package/src/components/xform/utils/smart-vue-i18n/index.js +2 -1
  361. package/src/components/xform/utils/tableCellValidateUtil.js +148 -0
  362. package/src/components/xform/utils/tableColumnHelper.js +155 -0
  363. package/src/components/xform/utils/util.js +1591 -1
  364. package/src/components/xform/utils/validators.js +185 -4
  365. package/src/components/xform/utils/vue2js-generator.js +2 -2
  366. package/src/components/xhsPrint/index.js +44 -1
  367. package/src/components/xhsPrint/mixins.js +269 -1
  368. package/src/directive/LimitNumber/index.js +144 -1
  369. package/src/directive/el-dialog-center/index.js +34 -1
  370. package/src/directive/el-drag-dialog/drag.js +86 -1
  371. package/src/directive/el-readonly/index.js +15 -1
  372. package/src/directive/permission/hasPermi.js +34 -1
  373. package/src/index.js +240 -63
  374. package/src/lang/index.js +56 -51
  375. package/src/lang/locale/en/login.js +27 -0
  376. package/src/lang/locale/zh/login.js +26 -0
  377. package/src/layout/components/AppMain.vue +148 -111
  378. package/src/layout/components/Sidebar/default.vue +1655 -1223
  379. package/src/layout/components/Sidebar/index.vue +6 -1
  380. package/src/layout/components/TagsView/index.vue +57 -15
  381. package/src/layout/components/createCompany/createCompanyDialog.vue +157 -0
  382. package/src/layout/components/extractedCode/createDialog.vue +92 -0
  383. package/src/layout/components/extractedCode/queryDialog.vue +103 -0
  384. package/src/layout/components/extractedCode/viewDialog.vue +207 -0
  385. package/src/layout/components/langTool.vue +128 -120
  386. package/src/layout/components/watermark/index.vue +83 -0
  387. package/src/layout/defaultLayout.vue +170 -150
  388. package/src/microRouter/index.js +521 -0
  389. package/src/mixins/selectDialog/index.js +266 -1
  390. package/src/mixins/tableTree/index.js +199 -4
  391. package/src/mixins/wf/index.js +33 -1
  392. package/src/permission.js +168 -1
  393. package/src/public-path.js +8 -0
  394. package/src/resources/js/base/common.js +109 -109
  395. package/src/router/index.js +4 -7
  396. package/src/router/modules/customer.js +21 -18
  397. package/src/router/modules/system.js +4 -0
  398. package/src/store/config/index.js +667 -600
  399. package/src/store/getters.js +4 -1
  400. package/src/store/modules/micro.js +56 -0
  401. package/src/store/modules/permission.js +495 -23
  402. package/src/store/modules/settings.js +26 -1
  403. package/src/store/modules/tagsView.js +206 -5
  404. package/src/store/modules/user.js +419 -29
  405. package/src/utils/aes.js +21 -1
  406. package/src/utils/auth.js +27 -1
  407. package/src/utils/componentDialog.js +322 -0
  408. package/src/utils/global.js +370 -8
  409. package/src/utils/index.js +579 -7
  410. package/src/utils/keepAlive.js +189 -1
  411. package/src/utils/menuAdapter.js +183 -0
  412. package/src/utils/pddLog.js +92 -0
  413. package/src/utils/pdfUtil.js +71 -0
  414. package/src/utils/repeatOpen.js +48 -0
  415. package/src/utils/request.js +417 -28
  416. package/src/utils/vab.js +1275 -27
  417. package/src/utils/validate.js +104 -1
  418. package/src/utils/wf.js +4 -4
  419. package/src/views/bd/setting/bd_attach_setting/edit.vue +5 -5
  420. package/src/views/bd/setting/bd_attach_setting/list.vue +28 -55
  421. package/src/views/bd/setting/bd_attach_setting/mixins/dialog.js +84 -1
  422. package/src/views/bd/setting/bd_attach_setting/mixins/edit.js +116 -5
  423. package/src/views/bd/setting/bd_attach_setting/mixins/list.js +239 -1
  424. package/src/views/bd/setting/bd_company_env/dialog.vue +174 -0
  425. package/src/views/bd/setting/bd_company_env/edit.vue +193 -0
  426. package/src/views/bd/setting/bd_company_env/list.vue +175 -0
  427. package/src/views/bd/setting/config_manage/list.vue +83 -0
  428. package/src/views/bd/setting/formVersion/button.vue +55 -0
  429. package/src/views/bd/setting/formVersion/compareBasicSection.vue +125 -0
  430. package/src/views/bd/setting/formVersion/compareCodeSection.vue +539 -0
  431. package/src/views/bd/setting/formVersion/compareContMixin.scss +65 -0
  432. package/src/views/bd/setting/formVersion/compareContent.vue +63 -0
  433. package/src/views/bd/setting/formVersion/compareDialog.vue +88 -0
  434. package/src/views/bd/setting/formVersion/compareMixin.js +93 -0
  435. package/src/views/bd/setting/formVersion/fieldCompare.vue +54 -0
  436. package/src/views/bd/setting/formVersion/formScriptCompareView.vue +94 -0
  437. package/src/views/bd/setting/formVersion/formTemplateCompareView.vue +74 -0
  438. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +483 -0
  439. package/src/views/bd/setting/formVersion/link.vue +58 -0
  440. package/src/views/bd/setting/formVersion/preformDialog.vue +87 -0
  441. package/src/views/bd/setting/formVersion/reverButton.vue +82 -0
  442. package/src/views/bd/setting/formVersion/tableDetailDiff.js +99 -0
  443. package/src/views/bd/setting/formVersion/tableModelCompareView.vue +514 -0
  444. package/src/views/bd/setting/formVersion/textDiff.js +102 -0
  445. package/src/views/bd/setting/form_import_log/edit.vue +130 -0
  446. package/src/views/bd/setting/form_import_log/list.vue +211 -0
  447. package/src/views/bd/setting/form_script/edit.vue +196 -74
  448. package/src/views/bd/setting/form_script/edit1.vue +410 -187
  449. package/src/views/bd/setting/form_script/form_list.vue +174 -85
  450. package/src/views/bd/setting/form_script/list.vue +95 -21
  451. package/src/views/bd/setting/form_script/list1.vue +205 -118
  452. package/src/views/bd/setting/form_script/mixins/dialog.js +130 -1
  453. package/src/views/bd/setting/form_script/mixins/edit.js +265 -7
  454. package/src/views/bd/setting/form_script/mixins/edit1.js +259 -9
  455. package/src/views/bd/setting/form_script/mixins/form_list.js +320 -4
  456. package/src/views/bd/setting/form_script/mixins/list.js +307 -4
  457. package/src/views/bd/setting/form_script/mixins/list1.js +512 -14
  458. package/src/views/bd/setting/form_script/mixins/list2.js +10 -1
  459. package/src/views/bd/setting/form_script/mixins/otherAuthDialog.js +194 -0
  460. package/src/views/bd/setting/form_script/mixins/preformDialog.js +34 -1
  461. package/src/views/bd/setting/form_script/otherAuthDialog.vue +83 -0
  462. package/src/views/bd/setting/form_template/batchWfObjConfigDialog.vue +3 -3
  463. package/src/views/bd/setting/form_template/edit.vue +355 -184
  464. package/src/views/bd/setting/form_template/formDesignerDialog.vue +171 -0
  465. package/src/views/bd/setting/form_template/list.vue +301 -214
  466. package/src/views/bd/setting/form_template/mixins/batchWfObjConfigDialog.js +279 -1
  467. package/src/views/bd/setting/form_template/mixins/dialog.js +103 -1
  468. package/src/views/bd/setting/form_template/mixins/edit.js +277 -9
  469. package/src/views/bd/setting/form_template/mixins/editWfObjConfigDialog.js +92 -1
  470. package/src/views/bd/setting/form_template/mixins/ftHistoryDialog.js +91 -1
  471. package/src/views/bd/setting/form_template/mixins/itemEdit.js +104 -1
  472. package/src/views/bd/setting/form_template/mixins/itemList.js +234 -1
  473. package/src/views/bd/setting/form_template/mixins/list.js +721 -22
  474. package/src/views/bd/setting/form_template/mixins/list2.js +411 -0
  475. package/src/views/bd/setting/form_template/mixins/otherAuthDialog.js +193 -0
  476. package/src/views/bd/setting/form_template/mixins/preformDialog.js +28 -3
  477. package/src/views/bd/setting/form_template/mixins/wf_list.js +421 -3
  478. package/src/views/bd/setting/form_template/otherAuthDialog.vue +83 -0
  479. package/src/views/bd/setting/form_template/wfObjConfigDialog.vue +253 -254
  480. package/src/views/bd/setting/form_template/wf_list.vue +161 -127
  481. package/src/views/bd/setting/logic_param/edit.vue +146 -0
  482. package/src/views/bd/setting/logic_param/edit1.vue +106 -0
  483. package/src/views/bd/setting/logic_param/edit2.vue +139 -0
  484. package/src/views/bd/setting/logic_param/list.vue +74 -0
  485. package/src/views/bd/setting/logic_param/list1.vue +12 -0
  486. package/src/views/bd/setting/logic_param/list2.vue +12 -0
  487. package/src/views/bd/setting/logic_param/mixins/edit.js +93 -0
  488. package/src/views/bd/setting/logic_param/mixins/list.js +376 -0
  489. package/src/views/bd/setting/menu_kind/list.vue +172 -83
  490. package/src/views/bd/setting/menu_kind/mixins/authDialog.js +300 -7
  491. package/src/views/bd/setting/menu_kind/mixins/dialog.js +139 -1
  492. package/src/views/bd/setting/menu_kind/mixins/list.js +201 -1
  493. package/src/views/bd/setting/push_data/edit.vue +139 -0
  494. package/src/views/bd/setting/push_data/list.vue +283 -0
  495. package/src/views/bd/setting/push_data_h/edit.vue +153 -0
  496. package/src/views/bd/setting/push_data_h/list.vue +293 -0
  497. package/src/views/bd/setting/request_async_setting/edit.vue +320 -0
  498. package/src/views/bd/setting/request_async_setting/list.vue +372 -0
  499. package/src/views/bd/setting/request_setting/edit.vue +300 -0
  500. package/src/views/bd/setting/request_setting/list.vue +301 -0
  501. package/src/views/bd/setting/table_model/edit.vue +1079 -426
  502. package/src/views/bd/setting/table_model/list.vue +218 -128
  503. package/src/views/bd/setting/table_model/mixins/dialog.js +71 -1
  504. package/src/views/bd/setting/table_model/mixins/edit.js +1309 -13
  505. package/src/views/bd/setting/table_model/mixins/list.js +463 -2
  506. package/src/views/bd/setting/table_model/mixins/otherAuthDialog.js +201 -0
  507. package/src/views/bd/setting/table_model/mixins/zdDialog.js +114 -3
  508. package/src/views/bd/setting/table_model/otherAuthDialog.vue +83 -0
  509. package/src/views/bd/setting/utils/index.js +75 -1
  510. package/src/views/support/form-dialog-demo/demoPickerDialog.vue +72 -0
  511. package/src/views/support/form-dialog-demo/index.vue +537 -0
  512. package/src/views/user/access_log/list.vue +418 -349
  513. package/src/views/user/area/dialog.vue +223 -117
  514. package/src/views/user/area/list.vue +318 -0
  515. package/src/views/user/commMenu/index.vue +2 -2
  516. package/src/views/user/common_attribute/list.vue +4 -1
  517. package/src/views/user/company_info/dialog.vue +195 -163
  518. package/src/views/user/extend_datasource/dialog.vue +3 -0
  519. package/src/views/user/extend_datasource/edit.vue +2 -1
  520. package/src/views/user/extend_datasource/list.vue +3 -0
  521. package/src/views/user/fieldTranslation/editDialog.vue +8 -8
  522. package/src/views/user/fieldTranslation/list.vue +33 -33
  523. package/src/views/user/form/vform/designer.vue +792 -749
  524. package/src/views/user/form/vform/formFieldMapping.js +2 -3
  525. package/src/views/user/form/vform/out_render.vue +1 -1
  526. package/src/views/user/form/vform/render.vue +65 -52
  527. package/src/views/user/form/view/edit.vue +56 -37
  528. package/src/views/user/form/view/list.vue +474 -54
  529. package/src/views/user/home/default.vue +1117 -979
  530. package/src/views/user/home/default2.vue +1158 -0
  531. package/src/views/user/home/dev.vue +29 -0
  532. package/src/views/user/home/index.vue +18 -7
  533. package/src/views/user/login/default.vue +165 -44
  534. package/src/views/user/login/index.vue +4 -6
  535. package/src/views/user/login/indexMixin.js +661 -425
  536. package/src/views/user/menu/list.vue +50 -1
  537. package/src/views/user/menuFallback/index.vue +123 -0
  538. package/src/views/user/notify_message/dialog.vue +44 -22
  539. package/src/views/user/notify_template/edit.vue +188 -187
  540. package/src/views/user/notify_template/edit2.vue +176 -0
  541. package/src/views/user/notify_template/list.vue +4 -1
  542. package/src/views/user/notify_template/list2.vue +190 -0
  543. package/src/views/user/outLink/form_view.vue +211 -211
  544. package/src/views/user/outLink/index.vue +64 -15
  545. package/src/views/user/position/list.vue +4 -4
  546. package/src/views/user/project_tag/dialog.vue +9 -4
  547. package/src/views/user/project_tag/edit.vue +2 -2
  548. package/src/views/user/project_tag/list.vue +9 -4
  549. package/src/views/user/request_setting/edit.vue +258 -0
  550. package/src/views/user/request_setting/list.vue +248 -0
  551. package/src/views/user/role/authConfig.vue +89 -0
  552. package/src/views/user/role/dialog.vue +70 -48
  553. package/src/views/user/role/edit.vue +609 -429
  554. package/src/views/user/role/list.vue +4 -4
  555. package/src/views/user/sale_org/dialog.vue +1 -1
  556. package/src/views/user/sale_org/list.vue +4 -1
  557. package/src/views/user/system_notice/infoDialog.vue +61 -1
  558. package/src/views/user/user/dialog.vue +46 -23
  559. package/src/views/user/user/edit.vue +1391 -1021
  560. package/src/views/user/user/form_dialog.vue +158 -0
  561. package/src/views/user/user/form_info.vue +210 -0
  562. package/src/views/user/user/info.vue +253 -140
  563. package/src/views/user/user/list.vue +652 -563
  564. package/src/views/user/user/modifyPasswordDialog.vue +64 -53
  565. package/src/views/user/wf/wfReport/index.vue +625 -0
  566. package/src/views/user/wf/wf_auto_submit_data/list.vue +2 -0
  567. package/src/views/user/wf/wf_manage/list.vue +640 -256
  568. package/src/views/user/wf/wf_manage/list2.vue +854 -0
  569. package/src/views/user/wf/wf_manage/wfContentDialog.vue +25 -22
  570. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +109 -0
  571. package/src/views/user/wf/wf_obj_config/itemEdit.vue +25 -1
  572. package/src/views/user/wf/wf_obj_config/list.vue +114 -9
  573. package/src/views/user/wf/wf_transfer_setting/edit.vue +282 -0
  574. package/src/views/user/wf/wf_transfer_setting/list.vue +319 -0
  575. package/src/views/user/workbench_menu/list.vue +555 -0
  576. package/src/components/xform/form-render/container-item/list-h5-item2.vue +0 -1347
@@ -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,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
+ ```