cloud-web-corejs 1.0.276 → 1.0.277

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 (305) hide show
  1. package/package.json +28 -24
  2. package/src/App.vue +73 -71
  3. package/src/api/user.js +21 -0
  4. package/src/components/baseArea/index.vue +82 -27
  5. package/src/components/baseTabs/mixins.js +5 -1
  6. package/src/components/luckysheet/dialog.vue +1 -1
  7. package/src/components/micro-view-host/contract.js +66 -0
  8. package/src/components/micro-view-host/index.vue +148 -0
  9. package/src/components/table/tableForm.vue +16 -5
  10. package/src/components/table/tableFormMixin.js +35 -7
  11. package/src/components/vb-tabs/x-tabs.vue +167 -143
  12. package/src/components/wf/content.vue +14 -0
  13. package/src/components/wf/content2.vue +4 -2
  14. package/src/components/wf/wf.js +74 -23
  15. package/src/components/wf/wfActionDropdown.vue +85 -0
  16. package/src/components/wf/wfActionItems.js +136 -0
  17. package/src/components/wf/wfAutoConfirm.js +55 -0
  18. package/src/components/wf/wfButtonName.js +60 -0
  19. package/src/components/wf/wfUserRange.js +53 -0
  20. package/src/components/wf/wfUtil.js +373 -295
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. package/src/components/xform/form-designer/designer.js +2085 -2025
  29. package/src/components/xform/form-designer/form-widget/container-widget/containerMixin.js +9 -11
  30. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +76 -75
  31. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +10 -4
  32. package/src/components/xform/form-designer/form-widget/container-widget/detail-plain-widget.vue +76 -0
  33. package/src/components/xform/form-designer/form-widget/container-widget/detail-widget.vue +59 -5
  34. package/src/components/xform/form-designer/form-widget/dialog/fileReferenceDialog.vue +38 -17
  35. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +138 -13
  36. package/src/components/xform/form-designer/form-widget/dialog/formFieldDialog.vue +1 -1
  37. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +1774 -1772
  38. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +2 -3
  39. package/src/components/xform/form-designer/form-widget/dialog/vabSearchDialog.vue +1 -1
  40. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +66 -53
  41. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +287 -214
  42. package/src/components/xform/form-designer/form-widget/field-widget/button-widget.vue +76 -66
  43. package/src/components/xform/form-designer/form-widget/field-widget/cascader-widget.vue +208 -124
  44. package/src/components/xform/form-designer/form-widget/field-widget/census-widget.vue +3 -9
  45. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +11 -2
  46. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +7 -6
  47. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +43 -19
  48. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +680 -372
  49. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +879 -763
  50. package/src/components/xform/form-designer/form-widget/field-widget/mixins/date-limit-mixin.js +17 -2
  51. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-bar-mixin.js +3 -9
  52. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-category-mixin.js +3 -9
  53. package/src/components/xform/form-designer/form-widget/field-widget/mixins/echart-pie-mixin.js +3 -9
  54. package/src/components/xform/form-designer/form-widget/field-widget/mixins/relative-default-mixin.js +107 -0
  55. package/src/components/xform/form-designer/form-widget/field-widget/mixins/relativeDateUtil.js +321 -0
  56. package/src/components/xform/form-designer/form-widget/field-widget/mixins/time-limit-mixin.js +77 -0
  57. package/src/components/xform/form-designer/form-widget/field-widget/mixins/vabsearch-mixin.js +13 -0
  58. package/src/components/xform/form-designer/form-widget/field-widget/number-widget.vue +13 -8
  59. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +4 -9
  60. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +3 -0
  61. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +120 -120
  62. package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +4 -0
  63. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +11 -0
  64. package/src/components/xform/form-designer/form-widget/field-widget/switch-widget.vue +9 -1
  65. package/src/components/xform/form-designer/form-widget/field-widget/tempStorage-widget.vue +1 -1
  66. package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +7 -3
  67. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +4 -2
  68. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +36 -5
  69. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +338 -374
  70. package/src/components/xform/form-designer/form-widget/index.vue +6 -1
  71. package/src/components/xform/form-designer/form-widget/indexMixin.js +29 -25
  72. package/src/components/xform/form-designer/index.vue +194 -191
  73. package/src/components/xform/form-designer/indexMixin.js +860 -847
  74. package/src/components/xform/form-designer/setting-panel/dataSource-setting.vue +397 -397
  75. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +602 -601
  76. package/src/components/xform/form-designer/setting-panel/form-setting.vue +1790 -1483
  77. package/src/components/xform/form-designer/setting-panel/index.vue +2 -7
  78. package/src/components/xform/form-designer/setting-panel/indexMixin.js +370 -335
  79. package/src/components/xform/form-designer/setting-panel/option-items-setting.vue +585 -544
  80. package/src/components/xform/form-designer/setting-panel/property-editor/a-link-editor.vue +1 -1
  81. package/src/components/xform/form-designer/setting-panel/property-editor/a-text-editor.vue +1 -1
  82. package/src/components/xform/form-designer/setting-panel/property-editor/alignType-editor.vue +1 -1
  83. package/src/components/xform/form-designer/setting-panel/property-editor/buttonIcon-editor.vue +14 -15
  84. package/src/components/xform/form-designer/setting-panel/property-editor/censusClass-editor.vue +1 -1
  85. package/src/components/xform/form-designer/setting-panel/property-editor/colorClass-editor.vue +1 -1
  86. package/src/components/xform/form-designer/setting-panel/property-editor/commonAttributeEnabled-editor.vue +3 -3
  87. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/columnRenderDialog.vue +124 -125
  88. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +1151 -957
  89. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-editor.vue +96 -74
  90. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail-plain/detail-plain-editor.vue +75 -0
  91. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/colHeight-editor.vue +1 -1
  92. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid/gutter-editor.vue +14 -13
  93. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-height-editor.vue +1 -1
  94. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-offset-editor.vue +1 -1
  95. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-pull-editor.vue +1 -1
  96. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-push-editor.vue +1 -1
  97. package/src/components/xform/form-designer/setting-panel/property-editor/container-grid-col/grid-col-span-editor.vue +4 -4
  98. package/src/components/xform/form-designer/setting-panel/property-editor/container-h5-card/h5-card-editor.vue +124 -124
  99. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +26 -31
  100. package/src/components/xform/form-designer/setting-panel/property-editor/container-panel/height-editor.vue +1 -1
  101. package/src/components/xform/form-designer/setting-panel/property-editor/container-panel/width-editor.vue +1 -1
  102. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tab-customClass-editor.vue +119 -119
  103. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tabClass-editor.vue +45 -45
  104. package/src/components/xform/form-designer/setting-panel/property-editor/container-table/table-dynamicField-editor.vue +340 -342
  105. package/src/components/xform/form-designer/setting-panel/property-editor/container-table-cell/cellHeight-editor.vue +1 -1
  106. package/src/components/xform/form-designer/setting-panel/property-editor/container-table-cell/cellWidth-editor.vue +1 -1
  107. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree/tree-customClass-editor.vue +2 -2
  108. package/src/components/xform/form-designer/setting-panel/property-editor/container-tree-pane/tree-pane-editor.vue +1 -1
  109. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/cancelButtonLabel-editor.vue +1 -1
  110. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/okButtonLabel-editor.vue +1 -1
  111. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/title-editor.vue +1 -1
  112. package/src/components/xform/form-designer/setting-panel/property-editor/container-vf-dialog/width-editor.vue +1 -1
  113. package/src/components/xform/form-designer/setting-panel/property-editor/containerClass-editor.vue +1 -1
  114. package/src/components/xform/form-designer/setting-panel/property-editor/customClass-editor.vue +1 -1
  115. package/src/components/xform/form-designer/setting-panel/property-editor/defaultValue-editor.vue +1 -1
  116. package/src/components/xform/form-designer/setting-panel/property-editor/descriptionsItems-editor.vue +4 -4
  117. package/src/components/xform/form-designer/setting-panel/property-editor/downloadButtonFlag-editor.vue +3 -3
  118. package/src/components/xform/form-designer/setting-panel/property-editor/dropdownFlag-editor.vue +6 -2
  119. package/src/components/xform/form-designer/setting-panel/property-editor/dsName-editor.vue +1 -1
  120. package/src/components/xform/form-designer/setting-panel/property-editor/echartHeight-editor.vue +1 -1
  121. package/src/components/xform/form-designer/setting-panel/property-editor/endPlaceholder-editor.vue +1 -1
  122. package/src/components/xform/form-designer/setting-panel/property-editor/field-accessUrl/accessUrl-editor.vue +2 -2
  123. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaDataType-editor.vue +1 -1
  124. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaMinLevel-editor.vue +50 -50
  125. package/src/components/xform/form-designer/setting-panel/property-editor/field-area-select/areaName-editor.vue +1 -1
  126. package/src/components/xform/form-designer/setting-panel/property-editor/field-autocomplete/autocomplete-vabSearchName-editor.vue +7 -7
  127. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/addTableData-event-editor.vue +84 -85
  128. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/button-type-editor.vue +1 -1
  129. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindActions.js +262 -0
  130. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/clickBindEvent-editor.vue +97 -88
  131. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/form-host-event-editor.vue +188 -0
  132. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/icon-editor.vue +14 -15
  133. package/src/components/xform/form-designer/setting-panel/property-editor/field-button/search-dialog-event-editor.vue +27 -10
  134. package/src/components/xform/form-designer/setting-panel/property-editor/field-cascader/checkStrictly-editor.vue +11 -13
  135. package/src/components/xform/form-designer/setting-panel/property-editor/field-common/keyName-editor.vue +74 -67
  136. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-dateLimit-editor.vue +27 -5
  137. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-defaultValue-editor.vue +35 -18
  138. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-format-editor.vue +1 -1
  139. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-type-editor.vue +1 -1
  140. package/src/components/xform/form-designer/setting-panel/property-editor/field-date/date-valueFormat-editor.vue +1 -1
  141. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultTime-editor.vue +1 -1
  142. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-defaultValue-editor.vue +35 -18
  143. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-format-editor.vue +1 -1
  144. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-type-editor.vue +1 -1
  145. package/src/components/xform/form-designer/setting-panel/property-editor/field-date-range/date-range-valueFormat-editor.vue +1 -1
  146. package/src/components/xform/form-designer/setting-panel/property-editor/field-divider/contentPosition-editor.vue +1 -1
  147. package/src/components/xform/form-designer/setting-panel/property-editor/field-dropdown-menu/dropdown-menu-editor.vue +59 -59
  148. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-bar-editor.vue +11 -11
  149. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-category-editor.vue +10 -10
  150. package/src/components/xform/form-designer/setting-panel/property-editor/field-echart/echart-pie-editor.vue +12 -12
  151. package/src/components/xform/form-designer/setting-panel/property-editor/field-file-upload/file-upload-fileTypes-editor.vue +44 -44
  152. package/src/components/xform/form-designer/setting-panel/property-editor/field-html-text/htmlContent-editor.vue +29 -29
  153. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +6 -6
  154. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +4 -4
  155. package/src/components/xform/form-designer/setting-panel/property-editor/field-number/controlsPosition-editor.vue +1 -1
  156. package/src/components/xform/form-designer/setting-panel/property-editor/field-picture-upload/picture-upload-fileTypes-editor.vue +44 -44
  157. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-button-editor.vue +115 -115
  158. package/src/components/xform/form-designer/setting-panel/property-editor/field-print-button/print-detail-button-editor.vue +115 -115
  159. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/highThreshold-editor.vue +1 -1
  160. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/lowThreshold-editor.vue +1 -1
  161. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-defaultValue-editor.vue +1 -1
  162. package/src/components/xform/form-designer/setting-panel/property-editor/field-rate/rate-max-editor.vue +1 -1
  163. package/src/components/xform/form-designer/setting-panel/property-editor/field-script/script-editor.vue +4 -4
  164. package/src/components/xform/form-designer/setting-panel/property-editor/field-script-input/script-input-editor.vue +4 -4
  165. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/fontSize-editor.vue +1 -1
  166. package/src/components/xform/form-designer/setting-panel/property-editor/field-static-text/textContent-editor.vue +1 -1
  167. package/src/components/xform/form-designer/setting-panel/property-editor/field-status/field-status-editor.vue +3 -3
  168. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/activeText-editor.vue +1 -1
  169. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/inactiveText-editor.vue +1 -1
  170. package/src/components/xform/form-designer/setting-panel/property-editor/field-switch/switchWidth-editor.vue +1 -1
  171. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-button-editor.vue +2 -2
  172. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +74 -74
  173. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +3 -3
  174. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-defaultValue-editor.vue +34 -18
  175. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-format-editor.vue +1 -1
  176. package/src/components/xform/form-designer/setting-panel/property-editor/field-time/time-timeLimit-editor.vue +53 -0
  177. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-defaultValue-editor.vue +35 -18
  178. package/src/components/xform/form-designer/setting-panel/property-editor/field-time-range/time-range-format-editor.vue +1 -1
  179. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchField-editor.vue +2 -2
  180. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabSearch/vabSearchName-editor.vue +2 -2
  181. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload/field-vabUpload-editor.vue +1 -1
  182. package/src/components/xform/form-designer/setting-panel/property-editor/field-vabUpload2/field-vabUpload2-editor.vue +1 -1
  183. package/src/components/xform/form-designer/setting-panel/property-editor/field-vue-page/vue-page-editor.vue +2 -2
  184. package/src/components/xform/form-designer/setting-panel/property-editor/fileMaxSize-editor.vue +1 -1
  185. package/src/components/xform/form-designer/setting-panel/property-editor/fileTypesSelect.vue +176 -176
  186. package/src/components/xform/form-designer/setting-panel/property-editor/fixedQuery-editor.vue +39 -0
  187. package/src/components/xform/form-designer/setting-panel/property-editor/formScriptEnabled-editor.vue +41 -6
  188. package/src/components/xform/form-designer/setting-panel/property-editor/formatType-editor.vue +2 -2
  189. package/src/components/xform/form-designer/setting-panel/property-editor/formula-editor.vue +972 -972
  190. package/src/components/xform/form-designer/setting-panel/property-editor/iconClass-editor.vue +1 -1
  191. package/src/components/xform/form-designer/setting-panel/property-editor/label-editor.vue +1 -1
  192. package/src/components/xform/form-designer/setting-panel/property-editor/labelAlign-editor.vue +1 -1
  193. package/src/components/xform/form-designer/setting-panel/property-editor/labelColor-editor.vue +1 -1
  194. package/src/components/xform/form-designer/setting-panel/property-editor/labelIconPosition-editor.vue +1 -1
  195. package/src/components/xform/form-designer/setting-panel/property-editor/labelWidth-editor.vue +1 -1
  196. package/src/components/xform/form-designer/setting-panel/property-editor/limit-editor.vue +1 -1
  197. package/src/components/xform/form-designer/setting-panel/property-editor/max-editor.vue +1 -1
  198. package/src/components/xform/form-designer/setting-panel/property-editor/maxLength-editor.vue +1 -1
  199. package/src/components/xform/form-designer/setting-panel/property-editor/min-editor.vue +1 -1
  200. package/src/components/xform/form-designer/setting-panel/property-editor/minLength-editor.vue +1 -1
  201. package/src/components/xform/form-designer/setting-panel/property-editor/multipleLimit-editor.vue +1 -1
  202. package/src/components/xform/form-designer/setting-panel/property-editor/name-editor.vue +15 -4
  203. package/src/components/xform/form-designer/setting-panel/property-editor/oplog-editor.vue +3 -3
  204. package/src/components/xform/form-designer/setting-panel/property-editor/placeholder-editor.vue +1 -1
  205. package/src/components/xform/form-designer/setting-panel/property-editor/precision-editor.vue +1 -1
  206. package/src/components/xform/form-designer/setting-panel/property-editor/prefixIcon-editor.vue +14 -15
  207. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +6 -6
  208. package/src/components/xform/form-designer/setting-panel/property-editor/relative-default-block.vue +369 -0
  209. package/src/components/xform/form-designer/setting-panel/property-editor/requiredHint-editor.vue +1 -1
  210. package/src/components/xform/form-designer/setting-panel/property-editor/rows-editor.vue +1 -1
  211. package/src/components/xform/form-designer/setting-panel/property-editor/space-editor-editor.vue +1 -1
  212. package/src/components/xform/form-designer/setting-panel/property-editor/startPlaceholder-editor.vue +1 -1
  213. package/src/components/xform/form-designer/setting-panel/property-editor/step-editor.vue +1 -1
  214. package/src/components/xform/form-designer/setting-panel/property-editor/styleTableClass-editor.vue +1 -1
  215. package/src/components/xform/form-designer/setting-panel/property-editor/styleTitClass-editor.vue +1 -1
  216. package/src/components/xform/form-designer/setting-panel/property-editor/suffixIcon-editor.vue +14 -15
  217. package/src/components/xform/form-designer/setting-panel/property-editor/tempStorage-editor.vue +1 -1
  218. package/src/components/xform/form-designer/setting-panel/property-editor/textFlag-editor.vue +2 -3
  219. package/src/components/xform/form-designer/setting-panel/property-editor/type-editor.vue +1 -1
  220. package/src/components/xform/form-designer/setting-panel/property-editor/uploadTip-editor.vue +1 -1
  221. package/src/components/xform/form-designer/setting-panel/property-editor/uploadURL-editor.vue +1 -1
  222. package/src/components/xform/form-designer/setting-panel/property-editor/urlValueEnabled-editor.vue +91 -0
  223. package/src/components/xform/form-designer/setting-panel/property-editor/validation-editor.vue +1 -1
  224. package/src/components/xform/form-designer/setting-panel/property-editor/validationHint-editor.vue +1 -1
  225. package/src/components/xform/form-designer/setting-panel/property-editor/widgetWidth-editor.vue +1 -1
  226. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +374 -351
  227. package/src/components/xform/form-designer/toolbar-panel/index.vue +266 -103
  228. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +655 -589
  229. package/src/components/xform/form-designer/widget-panel/index.vue +391 -341
  230. package/src/components/xform/form-designer/widget-panel/indexMixin.js +351 -308
  231. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +4642 -4028
  232. package/src/components/xform/form-render/container-item/containerItemMixin.js +76 -61
  233. package/src/components/xform/form-render/container-item/data-table-item.vue +24 -13
  234. package/src/components/xform/form-render/container-item/data-table-mixin.js +5927 -3400
  235. package/src/components/xform/form-render/container-item/detail-h5-item.vue +173 -173
  236. package/src/components/xform/form-render/container-item/detail-item.vue +446 -224
  237. package/src/components/xform/form-render/container-item/detail-plain-item.vue +92 -0
  238. package/src/components/xform/form-render/container-item/list-h5-item.vue +1186 -411
  239. package/src/components/xform/form-render/container-item/tab-item.vue +129 -125
  240. package/src/components/xform/form-render/container-item/table-item.vue +0 -3
  241. package/src/components/xform/form-render/container-item/table2-item.vue +18 -10
  242. package/src/components/xform/form-render/dynamicDialogRender.js +140 -99
  243. package/src/components/xform/form-render/index.vue +8 -8
  244. package/src/components/xform/form-render/indexMixin.js +5299 -3766
  245. package/src/components/xform/form-render/refMixin.js +14 -11
  246. package/src/components/xform/lang/en-US.js +473 -438
  247. package/src/components/xform/lang/en-US_extension.js +4 -0
  248. package/src/components/xform/lang/zh-CN.js +646 -620
  249. package/src/components/xform/mixins/defaultHandle.js +363 -26
  250. package/src/components/xform/mixins/scriptHttp.js +54 -51
  251. package/src/components/xform/utils/attachmentValueUtil.js +239 -0
  252. package/src/components/xform/utils/fixedQueryUtil.js +93 -0
  253. package/src/components/xform/utils/format.js +195 -169
  254. package/src/components/xform/utils/queryParamUtil.js +84 -0
  255. package/src/components/xform/utils/tableColumnHelper.js +7 -8
  256. package/src/components/xform/utils/util.js +1663 -1551
  257. package/src/components/xform/utils/validators.js +100 -48
  258. package/src/index.js +403 -89
  259. package/src/layout/components/AppMain.vue +147 -119
  260. package/src/layout/components/Sidebar/default.vue +109 -59
  261. package/src/layout/components/TagsView/index.vue +1 -1
  262. package/src/layout/components/extractedCode/queryDialog.vue +33 -26
  263. package/src/layout/components/extractedCode/viewDialog.vue +207 -193
  264. package/src/layout/components/langTool.vue +128 -123
  265. package/src/layout/defaultLayout.vue +170 -158
  266. package/src/mixins/wf/index.js +40 -38
  267. package/src/public-path.js +38 -0
  268. package/src/router/modules/system.js +4 -0
  269. package/src/store/config/index.js +945 -669
  270. package/src/utils/pdfUtil.js +428 -70
  271. package/src/views/bd/setting/bd_company_env/dialog.vue +1 -1
  272. package/src/views/bd/setting/formVersion/button.vue +5 -0
  273. package/src/views/bd/setting/formVersion/ftHistoryDialog.vue +21 -10
  274. package/src/views/bd/setting/formVersion/link.vue +5 -0
  275. package/src/views/bd/setting/form_script/edit.vue +1 -0
  276. package/src/views/bd/setting/form_script/edit1.vue +1 -0
  277. package/src/views/bd/setting/form_script/form_list.vue +1 -0
  278. package/src/views/bd/setting/form_script/list.vue +1 -0
  279. package/src/views/bd/setting/form_script/list1.vue +2 -0
  280. package/src/views/bd/setting/form_template/edit.vue +1 -0
  281. package/src/views/bd/setting/form_template/list.vue +2 -0
  282. package/src/views/bd/setting/form_template/mixins/edit.js +77 -74
  283. package/src/views/bd/setting/table_model/edit.vue +16 -29
  284. package/src/views/bd/setting/table_model/list.vue +1 -0
  285. package/src/views/bd/setting/table_model/mixins/edit.js +295 -149
  286. package/src/views/bd/setting/table_model/mixins/zdDialog.js +32 -0
  287. package/src/views/support/export_template/list.vue +1 -1
  288. package/src/views/user/company_info/edit.vue +149 -88
  289. package/src/views/user/form/form_template/dialog.vue +1 -1
  290. package/src/views/user/form/form_template/itemList.vue +1 -1
  291. package/src/views/user/form/form_template/list.vue +1 -1
  292. package/src/views/user/form/form_template_field/dialog.vue +1 -1
  293. package/src/views/user/form/form_type/dialog.vue +1 -1
  294. package/src/views/user/form/form_type/list.vue +1 -1
  295. package/src/views/user/form/report_requestaccess/dialog.vue +1 -1
  296. package/src/views/user/form/report_requestaccess/list.vue +1 -1
  297. package/src/views/user/form/vform/designer.vue +51 -22
  298. package/src/views/user/form/vform/render.vue +21 -23
  299. package/src/views/user/form/view/list.vue +134 -37
  300. package/src/views/user/wf/wfReport/index.vue +24 -1
  301. package/src/views/user/wf/wf_manage/list.vue +8 -4
  302. package/src/components/xform/form-designer/form-widget/dialog/formDrawer.vue +0 -209
  303. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin - /345/211/257/346/234/254.js" +0 -1639
  304. package/src/views/bd/setting/table_model/mixins/edit copy.js +0 -903
  305. package/src/views/user/menu/voc_list.vue +0 -686
@@ -1,224 +1,446 @@
1
- <!--
2
- /**
3
- * author: vformAdmin
4
- * email: vdpadmin@163.com
5
- * website: https://www.vform666.com
6
- * date: 2021.08.18
7
- * remark: 如果要分发VForm源码,需在本文件顶部保留此文件头信息!!
8
- */
9
- -->
10
-
11
- <template>
12
- <container-item-wrapper :widget="widget">
13
- <div
14
- class="detail-wrap grid-container"
15
- :class="[customClass]"
16
- :ref="widget.id"
17
- >
18
- <div class="d-header clearfix">
19
- <div class="fl">
20
- <i class="el-icon-info" />
21
- {{ getI18nLabel(widget.options.label) }}
22
- </div>
23
- <!-- <div class="fr">
24
- <el-button type="primary" plain class="button-sty" icon="el-icon-refresh-right" @click="reload">重置
25
- </el-button>
26
- <el-button type="primary" class="button-sty" icon="el-icon-check" @click="saveData" v-if="!wfInfo.id">保存
27
- </el-button>
28
- </div>-->
29
- <div class="fr">
30
- <template v-if="billNav">
31
- <el-button
32
- class="button-sty"
33
- size="mini"
34
- icon="el-icon-arrow-left"
35
- :disabled="!billNav.canPrev"
36
- @click="navBill(-1)"
37
- >上一单</el-button
38
- >
39
- <el-button
40
- class="button-sty"
41
- size="mini"
42
- :disabled="!billNav.canNext"
43
- @click="navBill(1)"
44
- >下一单<i class="el-icon-arrow-right el-icon--right"></i
45
- ></el-button>
46
- </template>
47
- <template v-for="(subWidget, swIdx) in widget.widgetList">
48
- <template v-if="'container' === subWidget.category">
49
- <component
50
- :is="subWidget.type + '-item'"
51
- :widget="subWidget"
52
- :key="swIdx"
53
- :parent-list="widget.widgetList"
54
- :index-of-parent-list="swIdx"
55
- :parent-widget="widget"
56
- >
57
- <!-- 递归传递插槽!!! -->
58
- <template
59
- v-for="slot in Object.keys($scopedSlots)"
60
- v-slot:[slot]="scope"
61
- >
62
- <slot :name="slot" v-bind="scope" />
63
- </template>
64
- </component>
65
- </template>
66
- <template v-else>
67
- <component
68
- :is="subWidget.type + '-widget'"
69
- :field="subWidget"
70
- :designer="null"
71
- :key="swIdx"
72
- :parent-list="widget.widgetList"
73
- :index-of-parent-list="swIdx"
74
- :parent-widget="widget"
75
- >
76
- <!-- 递归传递插槽!!! -->
77
- <template
78
- v-for="slot in Object.keys($scopedSlots)"
79
- v-slot:[slot]="scope"
80
- >
81
- <slot :name="slot" v-bind="scope" />
82
- </template>
83
- </component>
84
- </template>
85
- </template>
86
- </div>
87
- </div>
88
- <baseTabs :showNav="!widget.options.hideNav">
89
- <detail-pane-widget
90
- v-for="(paneWidget, index) in widget.panes"
91
- :key="index"
92
- :widget="paneWidget"
93
- :parent-list="widget.panes"
94
- :index-of-parent-list="index"
95
- :parent-widget="widget"
96
- :col-height="widget.options.colHeight"
97
- tabRef="baseTabRef"
98
- :tabPaneGrade="2"
99
- ></detail-pane-widget>
100
- </baseTabs>
101
- </div>
102
- </container-item-wrapper>
103
- </template>
104
-
105
- <script>
106
- import emitter from "../../../../components/xform/utils/emitter";
107
- import i18n from "../../../../components/xform/utils/i18n";
108
- import refMixin from "../../../../components/xform/form-render/refMixin";
109
- import ContainerItemWrapper from "./container-item-wrapper";
110
- import containerItemMixin from "./containerItemMixin";
111
- import detailPaneWidget from "../../../../components/xform/form-render/container-item/detail-pane-item";
112
- import FieldComponents from "../../../../components/xform/form-designer/form-widget/field-widget/index";
113
-
114
- import { initWf } from "../../../../components/wf/wfUtil";
115
-
116
- export default {
117
- name: "detail-item",
118
- componentName: "ContainerItem",
119
- mixins: [emitter, i18n, refMixin, containerItemMixin],
120
- components: {
121
- ContainerItemWrapper,
122
- detailPaneWidget,
123
- ...FieldComponents,
124
- },
125
- props: {
126
- widget: Object,
127
- },
128
- inject: ["refList", "sfRefList", "globalModel", "previewState"],
129
- created() {
130
- this.initRefList();
131
- this.handleOnCreated();
132
- },
133
- mounted() {
134
- this.handleOnMounted();
135
- this.$nextTick(() => {
136
- this.createWf();
137
- });
138
- },
139
- beforeDestroy() {
140
- this.unregisterFromRefList();
141
- },
142
- data() {
143
- return {
144
- wfInfo: {},
145
- };
146
- },
147
- computed: {
148
- // 「上一单/下一单」翻单按钮状态:详情表单开启 billNavEnabled 且宿主列表有翻单快照时才显示。
149
- // detail-item 在每次翻单时随详情表单重挂载,故此处按当前挂载时机取一次即可。
150
- billNav() {
151
- let formRef = this.getFormRef && this.getFormRef();
152
- let formConfig = formRef && formRef.formConfig;
153
- if (!formConfig || !formConfig.billNavEnabled) return null;
154
- let host = formRef.getListPageRef && formRef.getListPageRef();
155
- if (!host || typeof host.getActiveBillNavState !== "function")
156
- return null;
157
- let state = host.getActiveBillNavState();
158
- if (!state) return null;
159
- return {
160
- canPrev: state.index > 0,
161
- canNext: state.index < state.rows.length - 1,
162
- };
163
- },
164
- },
165
- methods: {
166
- // 触发宿主翻单:step = -1 上一单 / +1 下一单
167
- navBill(step) {
168
- let host = this.getFormRef && this.getFormRef();
169
- host = host && host.getListPageRef && host.getListPageRef();
170
- host && host.navigateActiveBill && host.navigateActiveBill(step);
171
- },
172
- reload() {
173
- this.getFormRef().$parent.$baseReload();
174
- },
175
- saveData() {
176
- if (!!this.previewState) return;
177
- this.getFormRef().saveForm();
178
- },
179
- createWf() {
180
- if (!!this.previewState || !this.widget.options.wfEnabled) return;
181
- let formTarget = this.getFormRef();
182
- let formData = formTarget.formData;
183
- if (formData && formData.object_foreign_id) {
184
- let reportTemplate = formTarget.reportTemplate;
185
- let formCode = reportTemplate.formCode;
186
- let option = {
187
- objId: formData.object_foreign_id, //单据ID
188
- wfCode: formCode, //流程编码
189
- showStartBtn: true, //是否放出启动按钮,流程已启动时此参数失效
190
- serviceId: "user",
191
- startConfirmText: () => formTarget.getWfStartConfirmText(),
192
- callback: ({ wfInfo }) => {
193
- this.wfInfo = wfInfo;
194
- },
195
- };
196
- initWf.call(formTarget.$parent, option);
197
- }
198
- },
199
- },
200
- };
201
- </script>
202
-
203
- <style lang="scss" scoped>
204
- .grid-container {
205
- min-height: 50px;
206
- //line-height: 48px;
207
- //padding: 6px;
208
- outline: 1px dashed #336699;
209
-
210
- > div {
211
- height: 100%;
212
- }
213
-
214
- .form-widget-list {
215
- // min-height: 28px;
216
- height: 100%;
217
- }
218
- }
219
-
220
- .grid-container.selected,
221
- .grid-cell.selected {
222
- outline: 2px solid $--color-primary !important;
223
- }
224
- </style>
1
+ <!--
2
+ /**
3
+ * author: vformAdmin
4
+ * email: vdpadmin@163.com
5
+ * website: https://www.vform666.com
6
+ * date: 2021.08.18
7
+ * remark: 如果要分发VForm源码,需在本文件顶部保留此文件头信息!!
8
+ */
9
+ -->
10
+
11
+ <template>
12
+ <container-item-wrapper :widget="widget">
13
+ <div
14
+ class="detail-wrap grid-container"
15
+ :class="[customClass]"
16
+ :ref="widget.id"
17
+ >
18
+ <div class="d-header clearfix" v-if="showHeader">
19
+ <div class="fl">
20
+ <i class="el-icon-info" />
21
+ {{ getI18nLabel(widget.options.label) }}
22
+ </div>
23
+ <!-- <div class="fr">
24
+ <el-button type="primary" plain class="button-sty" icon="el-icon-refresh-right" @click="reload">重置
25
+ </el-button>
26
+ <el-button type="primary" class="button-sty" icon="el-icon-check" @click="saveData" v-if="!wfInfo.id">保存
27
+ </el-button>
28
+ </div>-->
29
+ <div class="fr">
30
+ <template v-if="billNav">
31
+ <el-button
32
+ class="button-sty"
33
+ size="mini"
34
+ icon="el-icon-arrow-left"
35
+ :disabled="!billNav.canPrev"
36
+ @click="navBill(-1)"
37
+ >上一单</el-button
38
+ >
39
+ <el-button
40
+ class="button-sty"
41
+ size="mini"
42
+ :disabled="!billNav.canNext"
43
+ @click="navBill(1)"
44
+ >下一单<i class="el-icon-arrow-right el-icon--right"></i
45
+ ></el-button>
46
+ </template>
47
+ <el-button
48
+ v-if="showSaveSubmitBtn()"
49
+ class="button-sty"
50
+ type="success"
51
+ icon="el-icon-video-play"
52
+ @click="saveAndSubmitWfHandle()"
53
+ >{{ saveSubmitButtonName }}</el-button
54
+ >
55
+ <el-button
56
+ v-if="showWfStartBtn()"
57
+ class="button-sty yyy"
58
+ type="success"
59
+ icon="el-icon-video-play"
60
+ @click="startWf"
61
+ >{{ wfStartButtonName }}</el-button
62
+ >
63
+ <template v-for="(subWidget, swIdx) in widget.widgetList">
64
+ <template v-if="'container' === subWidget.category">
65
+ <component
66
+ :is="subWidget.type + '-item'"
67
+ :widget="subWidget"
68
+ :key="swIdx"
69
+ :parent-list="widget.widgetList"
70
+ :index-of-parent-list="swIdx"
71
+ :parent-widget="widget"
72
+ >
73
+ <!-- 递归传递插槽!!! -->
74
+ <template
75
+ v-for="slot in Object.keys($scopedSlots)"
76
+ v-slot:[slot]="scope"
77
+ >
78
+ <slot :name="slot" v-bind="scope" />
79
+ </template>
80
+ </component>
81
+ </template>
82
+ <template v-else>
83
+ <component
84
+ :is="subWidget.type + '-widget'"
85
+ :field="subWidget"
86
+ :designer="null"
87
+ :key="swIdx"
88
+ :parent-list="widget.widgetList"
89
+ :index-of-parent-list="swIdx"
90
+ :parent-widget="widget"
91
+ >
92
+ <!-- 递归传递插槽!!! -->
93
+ <template
94
+ v-for="slot in Object.keys($scopedSlots)"
95
+ v-slot:[slot]="scope"
96
+ >
97
+ <slot :name="slot" v-bind="scope" />
98
+ </template>
99
+ </component>
100
+ </template>
101
+ </template>
102
+ </div>
103
+ </div>
104
+ <!-- 正文区:panes 是通用容器列表,既可直接挂 detail-pane(模块),也可挂 tab 等其它容器。
105
+ baseTabs 的锚点导航靠 getTabs() 探测 slot 子级:detail-pane 带 tabPaneGrade=2 会被收进
106
+ navList;tab 等容器两个条件都不满足,被静默跳过——即标签内的模块不进外层导航,由标签内
107
+ 自己的 detail-plain 负责(见 docs/详情模块标签承载方案.md)。 -->
108
+ <baseTabs :showNav="!widget.options.hideNav && !plainMode">
109
+ <template v-for="(paneWidget, index) in widget.panes">
110
+ <detail-pane-widget
111
+ v-if="paneWidget.type === 'detail-pane'"
112
+ :key="paneWidget.id || index"
113
+ :widget="paneWidget"
114
+ :parent-list="widget.panes"
115
+ :index-of-parent-list="index"
116
+ :parent-widget="widget"
117
+ :col-height="widget.options.colHeight"
118
+ tabRef="baseTabRef"
119
+ :tabPaneGrade="2"
120
+ ></detail-pane-widget>
121
+ <component
122
+ v-else-if="'container' === paneWidget.category"
123
+ :is="paneWidget.type + '-item'"
124
+ :key="paneWidget.id || index"
125
+ :widget="paneWidget"
126
+ :parent-list="widget.panes"
127
+ :index-of-parent-list="index"
128
+ :parent-widget="widget"
129
+ >
130
+ <!-- 递归传递插槽!!! -->
131
+ <template
132
+ v-for="slot in Object.keys($scopedSlots)"
133
+ v-slot:[slot]="scope"
134
+ >
135
+ <slot :name="slot" v-bind="scope" />
136
+ </template>
137
+ </component>
138
+ <component
139
+ v-else
140
+ :is="paneWidget.type + '-widget'"
141
+ :key="paneWidget.id || index"
142
+ :field="paneWidget"
143
+ :designer="null"
144
+ :parent-list="widget.panes"
145
+ :index-of-parent-list="index"
146
+ :parent-widget="widget"
147
+ >
148
+ <!-- 递归传递插槽!!! -->
149
+ <template
150
+ v-for="slot in Object.keys($scopedSlots)"
151
+ v-slot:[slot]="scope"
152
+ >
153
+ <slot :name="slot" v-bind="scope" />
154
+ </template>
155
+ </component>
156
+ </template>
157
+ </baseTabs>
158
+ </div>
159
+ </container-item-wrapper>
160
+ </template>
161
+
162
+ <script>
163
+ import emitter from "../../../../components/xform/utils/emitter";
164
+ import i18n from "../../../../components/xform/utils/i18n";
165
+ import refMixin from "../../../../components/xform/form-render/refMixin";
166
+ import ContainerItemWrapper from "./container-item-wrapper";
167
+ import containerItemMixin from "./containerItemMixin";
168
+ import detailPaneWidget from "../../../../components/xform/form-render/container-item/detail-pane-item";
169
+ import FieldComponents from "../../../../components/xform/form-designer/form-widget/field-widget/index";
170
+
171
+ import { initWf, openStartWfDialog } from "../../../../components/wf/wfUtil";
172
+ import {
173
+ getWfButtonNames,
174
+ loadWfButtonNames,
175
+ DEFAULT_SUBMIT_BTN,
176
+ DEFAULT_SAVE_SUBMIT_BTN,
177
+ } from "../../../../components/wf/wfButtonName";
178
+ import { loadWfAutoConfirm } from "../../../../components/wf/wfAutoConfirm";
179
+ import { loadWfUserRange } from "../../../../components/wf/wfUserRange";
180
+ import settingConfig from "@/settings.js";
181
+
182
+ export default {
183
+ name: "detail-item",
184
+ componentName: "ContainerItem",
185
+ mixins: [emitter, i18n, refMixin, containerItemMixin],
186
+ components: {
187
+ ContainerItemWrapper,
188
+ detailPaneWidget,
189
+ ...FieldComponents,
190
+ },
191
+ props: {
192
+ widget: Object,
193
+ },
194
+ inject: ["refList", "sfRefList", "globalModel", "previewState"],
195
+ created() {
196
+ this.initRefList();
197
+ this.handleOnCreated();
198
+ //只有流程表单才需要按钮名/自动确认开关,避免给普通详情页平白多一次请求(模块内全局只发一次)
199
+ if (this.getFormRef()?.formConfig?.wfEnabled) {
200
+ loadWfButtonNames(this);
201
+ loadWfAutoConfirm(this);
202
+ loadWfUserRange(this);
203
+ }
204
+ },
205
+ mounted() {
206
+ this.handleOnMounted();
207
+ this.$nextTick(() => {
208
+ this.createWf();
209
+ });
210
+ },
211
+ beforeDestroy() {
212
+ this.unregisterFromRefList();
213
+ },
214
+ data() {
215
+ return {
216
+ wfInfo: {},
217
+ wfReady: false, // 流程状态是否已就绪(callback 返回后)
218
+ wfHasStarted: false, // 流程是否已启动(已启动则不显示启动按钮)
219
+ wfStartOption: null, // 启动流程所需 option(createWf 构造)
220
+ wfStartCtx: null, // openStartWfDialog 的执行上下文(与 initWf 一致)
221
+ };
222
+ },
223
+ computed: {
224
+ // 素身详情模式(宿主 VFormRender 传 plainDetailMode):去标题栏、去模块导航,只留模块
225
+ plainMode() {
226
+ let formRef = this.getFormRef && this.getFormRef();
227
+ return !!(formRef && formRef.plainDetailMode);
228
+ },
229
+ // 标题栏:模板配 hideHeader 或宿主素身模式,两者任一命中即不渲染
230
+ showHeader() {
231
+ return !this.plainMode && !this.widget.options.hideHeader;
232
+ },
233
+ // 按钮名取值链:后台 param18 → 全局 settings(老部署兼容) → 默认。
234
+ // 只能用 $t1(找不到 key 原样返回):$t2 的第二参在 i18n 命中 key 时会把自定义名整个覆盖掉。
235
+ wfStartButtonName() {
236
+ return (
237
+ getWfButtonNames().submitBtn ||
238
+ settingConfig.wfStartButtonName ||
239
+ this.$t1(DEFAULT_SUBMIT_BTN)
240
+ );
241
+ },
242
+ saveSubmitButtonName() {
243
+ return (
244
+ getWfButtonNames().saveSubmitBtn || this.$t1(DEFAULT_SAVE_SUBMIT_BTN)
245
+ );
246
+ },
247
+ // 「上一单/下一单」翻单按钮状态:详情表单开启 billNavEnabled 且宿主列表有翻单快照时才显示。
248
+ // detail-item 在每次翻单时随详情表单重挂载,故此处按当前挂载时机取一次即可。
249
+ billNav() {
250
+ let formRef = this.getFormRef && this.getFormRef();
251
+ if (
252
+ !formRef ||
253
+ !formRef.formConfig ||
254
+ !formRef.formConfig.billNavEnabled
255
+ ) {
256
+ return null;
257
+ }
258
+ let host = formRef.getListPageRef && formRef.getListPageRef();
259
+ if (!host || typeof host.getActiveBillNavState !== "function")
260
+ return null;
261
+ let state = host.getActiveBillNavState();
262
+ if (!state) return null;
263
+ return {
264
+ canPrev: state.index > 0,
265
+ canNext: state.index < state.rows.length - 1,
266
+ };
267
+ },
268
+ },
269
+ methods: {
270
+ // 解析流程启动信息:优先取表单实例(indexMixin,xform 主链路)暴露的,回退到本组件 createWf(旧路径)。
271
+ // 用方法实时求值,避免 computed 缓存导致早于 wf 就绪时求值后不再更新。
272
+ wfStart() {
273
+ let formRef = this.getFormRef && this.getFormRef();
274
+ if (formRef && formRef.wfStartOption) {
275
+ return {
276
+ ctx: formRef.wfStartCtx || formRef,
277
+ option: formRef.wfStartOption,
278
+ hasWf: !!formRef.hasWf,
279
+ };
280
+ }
281
+ if (this.wfReady && this.wfStartOption && this.wfStartCtx) {
282
+ return {
283
+ ctx: this.wfStartCtx,
284
+ option: this.wfStartOption,
285
+ hasWf: this.wfHasStarted,
286
+ };
287
+ }
288
+ return null;
289
+ },
290
+ // 流程启动按钮:有启动信息、需要按钮(showStartBtn 未显式关闭)、未启动、非预览态才显示。
291
+ // 声明式渲染,替代 wfUtil 的 DOM 强制注入。
292
+ showWfStartBtn() {
293
+ let ws = this.wfStart();
294
+ if (!ws || this.previewState) return false;
295
+ let opt = ws.option || {};
296
+ if (opt.showStartBtn === false || ws.hasWf) return false;
297
+ return this.evalWfStartBtnShow();
298
+ },
299
+ /**
300
+ * 「提交流程」按钮显隐脚本(formConfig.wfStartBtnShow):return false 隐藏,不配则显示。
301
+ * 在渲染期求值,好处是随表单数据自动更新,代价是脚本会被反复执行——所以:
302
+ * 1) 编译结果按脚本原文缓存,避免每次渲染都 new Function;
303
+ * 2) 编译/执行异常一律放行(返回 true),不能因为脚本写错就把提交入口挡死;
304
+ * 3) formData 取轻量的 formRef.formData,不走 getSysFormData/getRealFormData 那套重加工。
305
+ * 脚本里务必只读数据、返回布尔,改数据会引发渲染循环。
306
+ */
307
+ evalWfStartBtnShow() {
308
+ let formRef = this.getFormRef && this.getFormRef();
309
+ let src = formRef && formRef.formConfig && formRef.formConfig.wfStartBtnShow;
310
+ if (!src) return true;
311
+ let cache = this._wfStartShowFn; //挂实例属性即可,不需要响应式
312
+ if (!cache || cache.src !== src) {
313
+ try {
314
+ cache = {
315
+ src,
316
+ fn: new Function("dataId", "formCode", "formData", src),
317
+ };
318
+ } catch (error) {
319
+ console.error("wfStartBtnShow 脚本编译失败", error);
320
+ return true;
321
+ }
322
+ this._wfStartShowFn = cache;
323
+ }
324
+ try {
325
+ let ret = cache.fn.call(
326
+ formRef,
327
+ formRef.dataId,
328
+ formRef.reportTemplate && formRef.reportTemplate.formCode,
329
+ formRef.formData
330
+ );
331
+ return ret !== false;
332
+ } catch (error) {
333
+ console.error("wfStartBtnShow 脚本执行异常", error);
334
+ return true;
335
+ }
336
+ },
337
+ // 「保存并提交流程」内建按钮:表单设置里 saveSubmitEnabled 开启后渲染,只在新增页显示。
338
+ // 与 showWfStartBtn 一样用方法而非 computed:流程状态是异步就绪的,computed 缓存会漏更新。
339
+ showSaveSubmitBtn() {
340
+ if (this.previewState) return false;
341
+ let formRef = this.getFormRef && this.getFormRef();
342
+ let formConfig = formRef && formRef.formConfig;
343
+ if (!formConfig || !formConfig.wfEnabled || !formConfig.saveSubmitEnabled)
344
+ return false;
345
+ if (formRef.dataId) return false; //只有新增页(编辑态一律不显示)
346
+ let wfParam = formRef.wfParam || {};
347
+ //流程已启动不显示(与 save_submit_wf_button-widget 的 isWfStarted 同口径)
348
+ if (formRef.hasWf || wfParam.hasWf || wfParam.wfInfo?.procInstId)
349
+ return false;
350
+ return true;
351
+ },
352
+ // 声明式触发流程启动(替代原注入按钮的点击),复用 wfUtil 的 openStartWfDialog
353
+ startWf() {
354
+ let ws = this.wfStart();
355
+ if (!ws || !ws.option || !ws.ctx) return;
356
+ // startConfirmText 原样透传:它只承载模板脚本 wfStartConfirmText 的文案(见 indexMixin
357
+ // 的 option 构造)。按钮名拼接与「后台 param19 自动确认」都由 wf.js 统一处理——
358
+ // 在这里替它拼默认文案的话,wf.js 会把它当成脚本自定义的告警,自动确认就失效了。
359
+ let innerOnStart = ws.option.onStart;
360
+ let formRef = this.getFormRef && this.getFormRef();
361
+ openStartWfDialog(ws.ctx, {
362
+ ...ws.option, //浅拷贝:wfStartOption 是 formRef 上的共享对象,不可原地改
363
+ // 提交前置处理:确认框在 wfStartDialog 内部,这里(打开弹框前)是唯一能拦的位置。
364
+ // 既有的 onStart 是表单校验(仅 wfStartBindSave 开启时注入),把它的 done 换成
365
+ // 「跑前置脚本」,即得到「先校验、后脚本、再确认框」;没开自动保存时直接跑脚本。
366
+ onStart: (done) => {
367
+ let runBefore = () => {
368
+ if (!formRef || typeof formRef.runBeforeSubmitWf !== "function") {
369
+ return done();
370
+ }
371
+ formRef.runBeforeSubmitWf("wfStart").then((pass) => {
372
+ if (pass) done();
373
+ });
374
+ };
375
+ if (typeof innerOnStart === "function") {
376
+ innerOnStart(runBefore);
377
+ } else {
378
+ runBefore();
379
+ }
380
+ },
381
+ });
382
+ },
383
+ // 触发宿主翻单:step = -1 上一单 / +1 下一单
384
+ navBill(step) {
385
+ let host = this.getFormRef && this.getFormRef();
386
+ host = host && host.getListPageRef && host.getListPageRef();
387
+ host && host.navigateActiveBill && host.navigateActiveBill(step);
388
+ },
389
+ reload() {
390
+ this.getFormRef().$parent.$baseReload();
391
+ },
392
+ saveData() {
393
+ if (!!this.previewState) return;
394
+ this.getFormRef().saveForm();
395
+ },
396
+ createWf() {
397
+ if (!!this.previewState || !this.widget.options.wfEnabled) return;
398
+ let formTarget = this.getFormRef();
399
+ let formData = formTarget.formData;
400
+ if (formData && formData.object_foreign_id) {
401
+ let reportTemplate = formTarget.reportTemplate;
402
+ let formCode = reportTemplate.formCode;
403
+ let option = {
404
+ objId: formData.object_foreign_id, //单据ID
405
+ wfCode: formCode, //流程编码
406
+ showStartBtn: true, //需要启动按钮(语义不变)
407
+ injectStartBtn: false, //不走 DOM 强制注入,改由本组件模板声明式渲染
408
+ serviceId: "user",
409
+ startConfirmText: () => formTarget.getWfStartConfirmText(),
410
+ callback: ({ wfInfo, hasWf }) => {
411
+ this.wfInfo = wfInfo;
412
+ this.wfHasStarted = !!hasWf; //已启动则不显示启动按钮(与原注入条件 !hasWf 一致)
413
+ this.wfReady = true; //状态就绪后才显示按钮,避免回调前闪现
414
+ },
415
+ };
416
+ this.wfStartOption = option;
417
+ this.wfStartCtx = formTarget.$parent; //与 initWf 执行上下文一致,供 openStartWfDialog 使用
418
+ initWf.call(formTarget.$parent, option);
419
+ }
420
+ },
421
+ },
422
+ };
423
+ </script>
424
+
425
+ <style lang="scss" scoped>
426
+ .grid-container {
427
+ min-height: 50px;
428
+ //line-height: 48px;
429
+ //padding: 6px;
430
+ outline: 1px dashed #336699;
431
+
432
+ > div {
433
+ height: 100%;
434
+ }
435
+
436
+ .form-widget-list {
437
+ // min-height: 28px;
438
+ height: 100%;
439
+ }
440
+ }
441
+
442
+ .grid-container.selected,
443
+ .grid-cell.selected {
444
+ outline: 2px solid $--color-primary !important;
445
+ }
446
+ </style>