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,847 +1,860 @@
1
- import {
2
- createDesigner
3
- } from '../../../components/xform/form-designer/designer';
4
- import {
5
- addWindowResizeHandler,
6
- deepClone,
7
- getAllContainerWidgets,
8
- getAllFieldWidgets,
9
- getQueryParam,
10
- traverseAllWidgets,
11
- traverseAllWidgetsNew
12
- } from '../../../components/xform/utils/util';
13
- import {
14
- MOCK_CASE_URL,
15
- VARIANT_FORM_VERSION
16
- } from '../../../components/xform/utils/config';
17
- import i18n, {
18
- changeLocale
19
- } from '../../../components/xform/utils/i18n';
20
- import axios from 'axios';
21
- import {getBdFlag} from "@base/api/user";
22
-
23
- let modules = {};
24
-
25
- const baseRefUtil = {
26
- createDesigner,
27
- MOCK_CASE_URL,
28
- VARIANT_FORM_VERSION,
29
- i18n,
30
- changeLocale,
31
- axios,
32
- addWindowResizeHandler,
33
- deepClone,
34
- getAllContainerWidgets,
35
- getAllFieldWidgets,
36
- getQueryParam,
37
- traverseAllWidgets,
38
- };
39
-
40
- modules = {
41
- componentName: 'VFormDesigner',
42
- mixins: [baseRefUtil.i18n],
43
- props: {
44
- reportTemplate: {
45
- type: Object,
46
- default: null
47
- },
48
- /* 后端字段列表API */
49
- fieldListApi: {
50
- type: Object,
51
- default: null
52
- },
53
- fieldListData: {type: Object, default: null},
54
- /* 禁止显示的组件名称数组 */
55
- bannedWidgets: {
56
- type: Array,
57
- default: () => []
58
- },
59
-
60
- designerConfig: {
61
- type: Object,
62
- default: () => {
63
- return {
64
- languageMenu: true, //是否显示语言切换菜单
65
- externalLink: true, //是否显示GitHub、文档等外部链接
66
- formTemplates: true, //是否显示表单模板
67
-
68
- componentLib: !0,
69
- chartLib: !1,
70
- metadataLib: !1,
71
- layoutTypeButton: !0,
72
-
73
- eventCollapse: true, //是否显示组件事件属性折叠面板
74
- widgetNameReadonly: false, //禁止修改组件名称
75
-
76
- clearDesignerButton: true, //是否显示清空设计器按钮
77
- previewFormButton: true, //是否显示预览表单按钮
78
- importJsonButton: true, //是否显示导入JSON按钮
79
- exportJsonButton: true, //是否显示导出JSON器按钮
80
- exportCodeButton: true, //是否显示导出代码按钮
81
- generateSFCButton: true, //是否显示生成SFC按钮
82
- logoHeader: !0,
83
- toolbarMaxWidth: 420, //设计器工具按钮栏最大宽度(单位像素)
84
- toolbarMinWidth: 300, //设计器工具按钮栏最小宽度(单位像素)
85
- productName: "",
86
- productTitle: "",
87
- presetCssCode: '', //设计器预设CSS样式代码
88
- languageName: "zh-CN",
89
- resetFormJson: true //是否在设计器初始化时将表单内容重置为空
90
- };
91
- }
92
- },
93
- globalDsv: {type: Object, default: () => ({})},
94
- formTemplates: {type: Array, default: null},
95
- testOptionData: {type: Object, default: null},
96
- readonly: Boolean,
97
- columnFlag: Boolean,
98
- sourceData:Object
99
- },
100
- data() {
101
- return {
102
- vFormVersion: baseRefUtil.VARIANT_FORM_VERSION,
103
- curLangName: '',
104
-
105
- vsCodeFlag: false,
106
- caseName: '',
107
-
108
- docUrl: 'https://www.vform666.com/document.html',
109
- gitUrl: 'https://github.com/vform666/variant-form',
110
- chatUrl: 'https://www.vform666.com/pages/chat-group/',
111
- subScribeUrl: 'https://www.vform666.com/subscribe.html',
112
-
113
- scrollerHeight: 0,
114
-
115
- designer: baseRefUtil.createDesigner(this),
116
-
117
- fieldList: [],
118
- subFormList: [],
119
- optionData: this.testOptionData,
120
- externalComponents: {},
121
- leftAsideVisible: !0,
122
- rightAsideVisible: !0,
123
- isDev: true,
124
- menuKindAuth: {
125
- editAuth: 0
126
- },
127
- showPreformDialog: false,
128
- itemFieldMap: {
129
- grid: "cols",
130
- table: "rows",
131
- "table-cell": "widgetList",
132
- 'h5-table': "rows",
133
- "h5-table-cell": "widgetList",
134
- tab: "tabs",
135
- "tab-pane": "widgetList",
136
- "grid-col": "widgetList",
137
- "vf-box": "widgetList",
138
- "card": "widgetList",
139
- "detail": "panes",
140
- "detail-pane": "widgetList",
141
- "detail-h5": "panes",
142
- "h5-card": "panes",
143
- "h5-card-pane": "widgetList",
144
- }
145
- };
146
- },
147
- provide() {
148
- return {
149
- serverFieldList: this.fieldList,
150
- getServerSubFormList: () => this.subFormList,
151
- getDesignerConfig: () => this.designerConfig,
152
- getBannedWidgets: () => this.bannedWidgets,
153
- saveReportTemplate: this.saveReportTemplate,
154
- getReportTemplate: () => this.reportTemplate,
155
- getFormTemplateTableDTOs: this.getFormTemplateTableDTOs,
156
- scriptHttp: () => {
157
- },
158
- getObjectFieldFlag: () => !1,
159
- getObjectName: () => "",
160
- getHasWf: () => false,
161
- readonly:this.readonly,
162
- columnFlag:this.columnFlag,
163
- widgetKeyNameMap:{},
164
- sourceData:this.sourceData
165
- };
166
- },
167
- created() {
168
- this.vsCodeFlag = baseRefUtil.getQueryParam('vscode') == 1;
169
- this.caseName = baseRefUtil.getQueryParam('case');
170
- this.designer.handleEvent("canvas-select-field", (o) => {
171
- this.$emit("field-widget-used", o);
172
- }),
173
- this.designer.handleEvent("canvas-remove-field", (o) => {
174
- this.$emit("field-widget-removed", o);
175
- }),
176
- this.designer.handleEvent("form-json-imported", () => {
177
- this.$emit("form-json-updated", "form-json-imported");
178
- }),
179
- this.designer.handleEvent("canvas-undo", () => {
180
- this.$emit("form-json-updated", "canvas-undo");
181
- }),
182
- this.designer.handleEvent("canvas-redo", () => {
183
- this.$emit("form-json-updated", "canvas-redo");
184
- }),
185
- this.designer.handleEvent("canvas-remove-container", () => {
186
- this.$emit(
187
- "form-json-updated",
188
- "canvas-remove-container"
189
- );
190
- });
191
- },
192
- mounted() {
193
- this.initLocale();
194
-
195
- this.scrollerHeight = window.innerHeight - 85 + 'px';
196
- baseRefUtil.addWindowResizeHandler(() => {
197
- this.$nextTick(() => {
198
- this.scrollerHeight = window.innerHeight - 85 + 'px';
199
- });
200
- });
201
-
202
- this.loadCase();
203
-
204
- // this.loadFieldListFromServer();
205
- this.initServerFields();
206
- this.getBdEnv();
207
- this.getMenuKindAuth();
208
- },
209
- methods: {
210
- showLink(configName) {
211
- if (this.designerConfig[configName] === undefined) {
212
- return true;
213
- }
214
-
215
- return !!this.designerConfig[configName];
216
- },
217
-
218
- openHome() {
219
- if (!!this.vsCodeFlag) {
220
- const msgObj = {
221
- cmd: 'openUrl',
222
- data: {
223
- url: 'https://www.vform666.com/'
224
- }
225
- };
226
- window.parent.postMessage(msgObj, '*');
227
- }
228
- },
229
-
230
- openUrl(event, url) {
231
- if (!!this.vsCodeFlag) {
232
- const msgObj = {
233
- cmd: 'openUrl',
234
- data: {
235
- url
236
- }
237
- };
238
- window.parent.postMessage(msgObj, '*');
239
- } else {
240
- let aDom = event.currentTarget;
241
- aDom.href = url;
242
- //window.open(url, '_blank') //直接打开新窗口,会被浏览器拦截
243
- }
244
- },
245
-
246
- loadCase() {
247
- if (!this.caseName) {
248
- return;
249
- }
250
-
251
- baseRefUtil.axios
252
- .get(baseRefUtil.MOCK_CASE_URL + this.caseName + '.txt')
253
- .then(res => {
254
- if (!!res.data.code) {
255
- this.$message.error(this.i18nt('designer.hint.sampleLoadedFail'));
256
- return;
257
- }
258
-
259
- this.setFormJson(res.data);
260
- this.$message.success(this.i18nt('designer.hint.sampleLoadedSuccess'));
261
- })
262
- .catch(error => {
263
- this.$message.error(this.i18nt('designer.hint.sampleLoadedFail') + ':' + error);
264
- });
265
- },
266
-
267
- initLocale() {
268
- let curLocale = localStorage.getItem('v_form_locale');
269
- if (!!this.vsCodeFlag) {
270
- curLocale = curLocale || 'en-US';
271
- } else {
272
- curLocale = curLocale || 'zh-CN';
273
- }
274
- this.curLangName = this.i18nt('application.' + curLocale);
275
- this.changeLanguage(curLocale);
276
- },
277
-
278
- loadFieldListFromServer() {
279
- if (!this.fieldListApi) {
280
- return;
281
- }
282
-
283
- let headers = this.fieldListApi.headers || {};
284
- baseRefUtil.axios
285
- .get(this.fieldListApi.URL, {
286
- headers: headers
287
- })
288
- .then(res => {
289
- let labelKey = this.fieldListApi.labelKey || 'label';
290
- let nameKey = this.fieldListApi.nameKey || 'name';
291
-
292
- this.fieldList.splice(0, this.fieldList.length); //清空已有
293
- res.data.forEach(fieldItem => {
294
- this.fieldList.push({
295
- label: fieldItem[labelKey],
296
- name: fieldItem[nameKey]
297
- });
298
- });
299
- })
300
- .catch(error => {
301
- this.$message.error(error);
302
- });
303
- },
304
- initServerFields() {
305
- !!this.fieldListData && !!this.fieldListData.fieldList
306
- ? (this.fieldList.splice(
307
- 0,
308
- this.fieldList.length,
309
- ...this.fieldListData.fieldList
310
- ),
311
- this.fieldListData.subFormList &&
312
- this.subFormList.splice(
313
- 0,
314
- this.subFormList.length,
315
- ...this.fieldListData.subFormList
316
- ))
317
- : this.loadFieldListFromServer();
318
- },
319
- setFieldListData(o) {
320
- !!o &&
321
- !!o.fieldList &&
322
- (this.fieldList.splice(
323
- 0,
324
- this.fieldList.length,
325
- ...o.fieldList
326
- ),
327
- o.subFormList &&
328
- this.subFormList.splice(
329
- 0,
330
- this.subFormList.length,
331
- ...o.subFormList
332
- ));
333
- },
334
- setMetaFields(o) {
335
- this.$refs.widgetPanelRef.setMetaFields(o);
336
- },
337
- handleLanguageChanged(command) {
338
- this.changeLanguage(command);
339
- this.curLangName = this.i18nt('application.' + command);
340
- },
341
-
342
- changeLanguage(langName) {
343
- baseRefUtil.changeLocale(langName);
344
- },
345
-
346
- setFormJson(formJson) {
347
- let modifiedFlag = false;
348
- if (!!formJson) {
349
- if (typeof formJson === 'string') {
350
- let newFormJson = JSON.parse(formJson);
351
- this.upgradeFormJson(newFormJson);
352
- modifiedFlag = this.designer.loadFormJson(newFormJson);
353
- } else if (formJson.constructor === Object) {
354
- this.upgradeFormJson(formJson);
355
- modifiedFlag = this.designer.loadFormJson(formJson);
356
- }
357
-
358
- if (modifiedFlag) {
359
- this.designer.emitHistoryChange();
360
- }
361
- } else {
362
- this.clearDesigner();
363
- }
364
- },
365
-
366
- getFormJson() {
367
- return {
368
- widgetList: baseRefUtil.deepClone(this.designer.widgetList),
369
- formConfig: baseRefUtil.deepClone(this.designer.formConfig)
370
- };
371
- },
372
-
373
- clearDesigner() {
374
- this.$refs.toolbarRef.clearFormWidget();
375
- },
376
-
377
- /**
378
- * 刷新表单设计器
379
- */
380
- refreshDesigner() {
381
- //this.designer.loadFormJson( this.getFormJson() ) //只有第一次调用生效??
382
-
383
- let fJson = this.getFormJson();
384
- this.designer.clearDesigner(true); //不触发历史记录变更
385
- this.designer.loadFormJson(fJson);
386
- },
387
-
388
- /**
389
- * 预览表单
390
- */
391
- previewForm() {
392
- this.$refs.toolbarRef.previewForm();
393
- },
394
-
395
- /**
396
- * 导入表单JSON
397
- */
398
- importJson() {
399
- this.$refs.toolbarRef.importJson();
400
- },
401
-
402
- /**
403
- * 导出表单JSON
404
- */
405
- exportJson() {
406
- this.$refs.toolbarRef.exportJson();
407
- },
408
-
409
- /**
410
- * 导出Vue/HTML代码
411
- */
412
- exportCode() {
413
- this.$refs.toolbarRef.exportCode();
414
- },
415
-
416
- /**
417
- * 生成SFC代码
418
- */
419
- generateSFC() {
420
- this.$refs.toolbarRef.generateSFC();
421
- },
422
-
423
- /**
424
- * 获取所有字段组件
425
- * @returns {*[]}
426
- */
427
- getFieldWidgets(widgetList = null) {
428
- return !!widgetList ? baseRefUtil.getAllFieldWidgets(widgetList) : baseRefUtil.getAllFieldWidgets(this.designer
429
- .widgetList);
430
- },
431
-
432
- /**
433
- * 获取所有容器组件
434
- * @returns {*[]}
435
- */
436
- getContainerWidgets(widgetList = null) {
437
- return !!widgetList ? baseRefUtil.getAllContainerWidgets(widgetList) : baseRefUtil.getAllContainerWidgets(this
438
- .designer.widgetList);
439
- },
440
-
441
- /**
442
- * 升级表单json,以补充最新的组件属性
443
- * @param formJson
444
- */
445
- upgradeFormJson(formJson) {
446
- if (!formJson.widgetList || !formJson.formConfig) {
447
- this.$message.error('Invalid form json!');
448
- return;
449
- }
450
-
451
- traverseAllWidgetsNew(formJson.widgetList, w => {
452
- this.designer.upgradeWidgetConfig(w);
453
- });
454
- this.designer.upgradeFormConfig(formJson.formConfig);
455
-
456
- return formJson;
457
- },
458
-
459
- getWidgetRef(widgetName, showError = false) {
460
- return this.$refs['formRef'].getWidgetRef(widgetName, showError);
461
- },
462
-
463
- getSelectedWidgetRef() {
464
- return this.$refs['formRef'].getSelectedWidgetRef();
465
- },
466
- getWfBizDataSettingDTOs(formJson, code) {
467
- let result = [];
468
- let formCode = code || this.reportTemplate.formCode;
469
- let fields = [];
470
- let fJson = formJson || this.getFormJson();
471
- let formConfig = fJson.formConfig;
472
- let entity = formConfig.entity;
473
- if (!entity) return [];
474
- if(formConfig.wfTheme){
475
- result.push({
476
- action: "setWfName",
477
- toValue: formConfig.wfTheme,
478
- tableName: entity,
479
- tableField: null
480
- })
481
- }
482
- let itemFieldMap = this.itemFieldMap;
483
-
484
- let loopDo = (widgetList) => {
485
- if (!widgetList) return;
486
- widgetList.forEach(widget => {
487
- let widgetName = widget.options.name;
488
- let optionModel = widget.options;
489
- if (widget.category != "container") {
490
- if (optionModel.wfModifyDataEnabled) {
491
- let wfModifyDataConfig = optionModel.wfModifyDataConfig || [];
492
- if (wfModifyDataConfig.length) {
493
- let fieldKeyName = this.getFieldKeyName(widget)
494
- let items = wfModifyDataConfig.filter(item => {
495
- return !!item.action
496
- }).map(item => {
497
- return {
498
- action: item.action,
499
- toValue: item.toValue,
500
- tableName: entity,
501
- tableField: fieldKeyName
502
- }
503
- })
504
- result.push(...items)
505
- }
506
- }
507
- } else {
508
- let itemField = itemFieldMap[widget.type];
509
- if (itemField) {
510
- if ("table" == widget.type) {
511
- widget[itemField].forEach(item => {
512
- loopDo(item.cols);
513
- })
514
- } else if ("h5-table" == widget.type) {
515
- widget[itemField].forEach(item => {
516
- loopDo(item.cols);
517
- })
518
- } else {
519
- loopDo(widget[itemField]);
520
- }
521
- }
522
- }
523
- })
524
- }
525
- loopDo(fJson.widgetList);
526
- return result;
527
- },
528
- getFormTemplateTableDTOs(formJson, code) {
529
- let formTemplateTableDTOs = [];
530
- let formCode = code || this.reportTemplate.formCode;
531
- let fields = [];
532
- let fJson = formJson || this.getFormJson();
533
- /*let itemFieldMap = {
534
- grid: "cols",
535
- table: "rows",
536
- "table-cell": "widgetList",
537
- 'h5-table': "rows",
538
- "h5-table-cell": "widgetList",
539
- tab: "tabs",
540
- "tab-pane": "widgetList",
541
- "grid-col": "widgetList",
542
- "vf-box": "widgetList",
543
- "card": "widgetList",
544
- "detail": "panes",
545
- "detail-pane": "widgetList",
546
- "detail-h5": "panes",
547
- "h5-card": "panes",
548
- "h5-card-pane": "widgetList",
549
- }*/
550
- let itemFieldMap = this.itemFieldMap;
551
- let loopDo = (widgetList) => {
552
- if (!widgetList) return;
553
- widgetList.forEach(widget => {
554
- let widgetName = widget.options.name;
555
- if (widget.tableField && (widget.type == 'data-table' || widget.type == 'list-h5')) {
556
- let vailColumns = widget.options.tableColumns.filter(item => item.prop && item.label);
557
- let itemFields = [];
558
- vailColumns.forEach(item => {
559
- if (item.formatS == 'editSearch') {
560
- itemFields.push({
561
- fieldDesc: item.label + "ID",
562
- fieldName: item.prop
563
- })
564
- let vabSearchName = item?.columnOption?.vabSearchName;
565
- if (vabSearchName) {
566
- itemFields.push({
567
- fieldDesc: item.label,
568
- fieldName: vabSearchName
569
- })
570
- }
571
-
572
- } else {
573
- itemFields.push({
574
- fieldDesc: item.label,
575
- fieldName: item.prop
576
- });
577
- }
578
- });
579
- /*let itemFields = widget.options.tableColumns.filter(item => item.prop && item.label).map(item => {
580
- return {
581
- fieldDesc: item.label,
582
- fieldName: item.prop
583
- }
584
- })*/
585
- if (itemFields.length) {
586
- let formTemplateTable = {
587
- tableAlias: widgetName,
588
- formCode: formCode,
589
- tableType: 1,
590
- formTemplateFieldDTOs: []
591
- };
592
- formTemplateTable.formTemplateFieldDTOs = itemFields;
593
- formTemplateTableDTOs.push(formTemplateTable);
594
- }
595
- } else if (widget.tableField && widget.type == 'vabUpload') {
596
- let formTemplateTable = {
597
- tableAlias: widgetName,
598
- formCode: formCode,
599
- tableType: 2
600
- };
601
- formTemplateTableDTOs.push(formTemplateTable);
602
- } else if (widget.tableField && this.isVabsearchFlagWidget(widget)) {
603
- fields.push({
604
- fieldDesc: widget.options.label + "ID",
605
- fieldName: widgetName
606
- })
607
- let vabSearchName = widget.options.vabSearchName;
608
- if (vabSearchName) {
609
- fields.push({
610
- fieldDesc: widget.options.label,
611
- fieldName: vabSearchName
612
- });
613
- }
614
- } else if (widget.tableField) {
615
- fields.push({
616
- fieldDesc: widget.options.label,
617
- fieldName: widgetName
618
- })
619
- } else {
620
- if (widget.category == "container") {
621
- let itemField = itemFieldMap[widget.type];
622
- if (itemField) {
623
- if ("table" == widget.type) {
624
- widget[itemField].forEach(item => {
625
- loopDo(item.cols);
626
- })
627
- } else if ("h5-table" == widget.type) {
628
- widget[itemField].forEach(item => {
629
- loopDo(item.cols);
630
- })
631
- } else {
632
- loopDo(widget[itemField]);
633
- }
634
- }
635
- }
636
- }
637
- })
638
- }
639
-
640
- loopDo(fJson.widgetList);
641
- if (fields.length) {
642
- let formTemplateTable = {
643
- tableAlias: null,
644
- formCode: formCode,
645
- tableType: 0,
646
- formTemplateFieldDTOs: fields
647
- }
648
- formTemplateTableDTOs.push(formTemplateTable);
649
- }
650
-
651
- return formTemplateTableDTOs;
652
- },
653
- isVabsearchFlagWidget(widget) {
654
- let type = widget?.type;
655
- return type == "vabsearch" || type == "singerSearch" || type == "multiSearch";
656
- },
657
- getTableFileds() {
658
- let fields = [];
659
- let fJson = this.getFormJson();
660
- /*let itemFieldMap = {
661
- grid: "cols",
662
- table: "rows",
663
- "table-cell": "widgetList",
664
- 'h5-table': "rows",
665
- "h5-table-cell": "widgetList",
666
- tab: "tabs",
667
- "tab-pane": "widgetList",
668
- "grid-col": "widgetList",
669
- "vf-box": "widgetList",
670
- "card": "widgetList",
671
- "detail": "panes",
672
- "detail-pane": "widgetList",
673
- "detail-h5": "panes",
674
- "h5-card": "panes",
675
- "h5-card-pane": "widgetList",
676
- }*/
677
- let itemFieldMap = this.itemFieldMap;
678
- let loopDo = (widgetList) => {
679
- if (!widgetList) return;
680
- widgetList.forEach(widget => {
681
- /*if (widget.tableField && widget.type == 'data-table') {
682
- let itemFields = widget.options.tableColumns.filter(item.prop && item.label).map(item => {
683
- return {
684
- fieldDesc: item.options.label,
685
- fieldName: item.prop
686
- }
687
- })
688
- }*/
689
- let widgetName = widget.options.name;
690
- if (widget.tableField) {
691
- fields.push({
692
- fieldDesc: widget.options.label,
693
- fieldName: widgetName
694
- })
695
- } else {
696
- if (widget.category == "container") {
697
- let itemField = itemFieldMap[widget.type];
698
- if (itemField) {
699
- if ("table" == widget.type) {
700
- widget[itemField].forEach(item => {
701
- loopDo(item.cols);
702
- })
703
- } else if ("h5-table" == widget.type) {
704
- widget[itemField].forEach(item => {
705
- loopDo(item.cols);
706
- })
707
- } else {
708
- loopDo(widget[itemField]);
709
- }
710
- }
711
- }
712
- }
713
- })
714
- }
715
- loopDo(fJson.widgetList);
716
- return fields;
717
- },
718
- getFormScriptDTOs() {
719
- let reportTemplate = this.reportTemplate;
720
- let fJson = this.getFormJson();
721
- let scripts = fJson.formConfig.scriptList || [];
722
- return scripts.filter(item => {
723
- return !!item.uuid && !!item.script;
724
- }).map(item => {
725
- return {
726
- formCode: reportTemplate.formCode,
727
- formVersion: reportTemplate.formVersion,
728
- scriptCode: item.uuid,
729
- scriptName: item.uuid,
730
- script: item.script
731
- }
732
- })
733
- },
734
- handleColumnConfirm(){
735
- let fJson = this.getFormJson();
736
- this.$emit("customConfirm",fJson)
737
- },
738
- saveReportTemplate() {
739
- if(this.columnFlag){
740
- this.handleColumnConfirm();
741
- return
742
- }
743
- this.openPreformDialog();
744
- },
745
- saveDataHandle(preformData) {
746
- if (this.reportTemplate) {
747
- let formTemplateTableDTOs = this.getFormTemplateTableDTOs();
748
- let fJson = this.getFormJson();
749
- let formViewContent = JSON.stringify(fJson);
750
- let tableFileds = this.getTableFileds();
751
- let reportTemplate = baseRefUtil.deepClone(this.reportTemplate);
752
- reportTemplate.formViewContent = formViewContent;
753
- reportTemplate.formTemplateTableDTOs = formTemplateTableDTOs;
754
-
755
- let formScriptDTOs = this.getFormScriptDTOs();
756
- reportTemplate.formScriptDTOs = formScriptDTOs;
757
- reportTemplate.hasWf = fJson.formConfig.wfEnabled || false;
758
-
759
- let wfBizDataSettingDTOs = this.getWfBizDataSettingDTOs();
760
-
761
- let formData = {
762
- ...reportTemplate,
763
- wfBizDataSettingDTOs,
764
- logContent: preformData.logContent
765
- };
766
-
767
- var url = USER_PREFIX + `/formTemplate/updateDesign`;
768
- this.$http({
769
- url: url,
770
- method: `post`,
771
- data: formData,
772
- isLoading: true,
773
- loadingTarget: document.body,
774
- success: res => {
775
- this.reflushReportTemplate(res.objx);
776
- this.$message({
777
- message: res.content,
778
- type: 'success',
779
- duration: 500,
780
- onClose: t => {
781
- }
782
- });
783
- this.$emit('reflushTemplateList');
784
- }
785
- });
786
-
787
- }
788
- },
789
- openPreformDialog() {
790
- this.showPreformDialog = true;
791
- },
792
- confirmPreformDialog(preformData) {
793
- this.saveDataHandle(preformData);
794
- },
795
- reflushReportTemplate(id) {
796
- this.$http({
797
- url: USER_PREFIX + `/formTemplate/get`,
798
- method: `post`,
799
- data: {
800
- id: id
801
- },
802
- isLoading: true,
803
- loadingTarget: document.body,
804
- modalStrictly: true,
805
- success: res => {
806
- let reportTemplate = res.objx || {};
807
- this.$emit("update:reportTemplate", reportTemplate)
808
- }
809
- });
810
- },
811
- loadWidgets() {
812
- this.$refs.widgetPanelRef.loadWidgets();
813
- },
814
- getBdEnv() {
815
- getBdFlag({
816
- success: res => {
817
- this.isDev = res.objx == 1;
818
- }
819
- });
820
- },
821
- getMenuKindAuth() {
822
- let menuKindCode = this.reportTemplate?.menuKindCode;
823
- if (menuKindCode) {
824
- this.$http({
825
- aes: true,
826
- url: USER_PREFIX + '/menu_kind_auth/getAuth',
827
- method: `post`,
828
- data: {stringOne: menuKindCode},
829
- isLoading: true,
830
- success: res => {
831
- this.menuKindAuth = res.objx || {}
832
- }
833
- });
834
- }
835
- },
836
- getFieldKeyName(widget) {
837
- let o = widget.options.name;
838
- return (
839
- (widget.options.keyNameEnabled
840
- && widget.options.keyName)
841
- || o
842
- );
843
- },
844
- //TODO: 增加更多方法!!
845
- }
846
- };
847
- export default modules;
1
+ import { createDesigner } from "../../../components/xform/form-designer/designer";
2
+ import {
3
+ addWindowResizeHandler,
4
+ deepClone,
5
+ getAllContainerWidgets,
6
+ getAllFieldWidgets,
7
+ getQueryParam,
8
+ traverseAllWidgets,
9
+ traverseAllWidgetsNew,
10
+ flattenLeafColumns,
11
+ } from "../../../components/xform/utils/util";
12
+ import {
13
+ MOCK_CASE_URL,
14
+ VARIANT_FORM_VERSION,
15
+ } from "../../../components/xform/utils/config";
16
+ import i18n, { changeLocale } from "../../../components/xform/utils/i18n";
17
+ import axios from "axios";
18
+ import { getBdFlag } from "@base/api/user";
19
+
20
+ let modules = {};
21
+
22
+ const baseRefUtil = {
23
+ createDesigner,
24
+ MOCK_CASE_URL,
25
+ VARIANT_FORM_VERSION,
26
+ i18n,
27
+ changeLocale,
28
+ axios,
29
+ addWindowResizeHandler,
30
+ deepClone,
31
+ getAllContainerWidgets,
32
+ getAllFieldWidgets,
33
+ getQueryParam,
34
+ traverseAllWidgets,
35
+ };
36
+
37
+ modules = {
38
+ componentName: "VFormDesigner",
39
+ mixins: [baseRefUtil.i18n],
40
+ props: {
41
+ reportTemplate: {
42
+ type: Object,
43
+ default: null,
44
+ },
45
+ /* 后端字段列表API */
46
+ fieldListApi: {
47
+ type: Object,
48
+ default: null,
49
+ },
50
+ fieldListData: { type: Object, default: null },
51
+ /* 禁止显示的组件名称数组 */
52
+ bannedWidgets: {
53
+ type: Array,
54
+ default: () => [],
55
+ },
56
+
57
+ designerConfig: {
58
+ type: Object,
59
+ default: () => {
60
+ return {
61
+ languageMenu: true, //是否显示语言切换菜单
62
+ externalLink: true, //是否显示GitHub、文档等外部链接
63
+ formTemplates: true, //是否显示表单模板
64
+
65
+ componentLib: !0,
66
+ chartLib: !1,
67
+ metadataLib: !1,
68
+ layoutTypeButton: !0,
69
+
70
+ eventCollapse: true, //是否显示组件事件属性折叠面板
71
+ widgetNameReadonly: false, //禁止修改组件名称
72
+
73
+ clearDesignerButton: true, //是否显示清空设计器按钮
74
+ previewFormButton: true, //是否显示预览表单按钮
75
+ importJsonButton: true, //是否显示导入JSON按钮
76
+ exportJsonButton: true, //是否显示导出JSON器按钮
77
+ exportCodeButton: true, //是否显示导出代码按钮
78
+ generateSFCButton: true, //是否显示生成SFC按钮
79
+ logoHeader: !0,
80
+ toolbarMaxWidth: 420, //设计器工具按钮栏最大宽度(单位像素)
81
+ toolbarMinWidth: 300, //设计器工具按钮栏最小宽度(单位像素)
82
+ productName: "",
83
+ productTitle: "",
84
+ presetCssCode: "", //设计器预设CSS样式代码
85
+ languageName: "zh-CN",
86
+ resetFormJson: true, //是否在设计器初始化时将表单内容重置为空
87
+ };
88
+ },
89
+ },
90
+ globalDsv: { type: Object, default: () => ({}) },
91
+ formTemplates: { type: Array, default: null },
92
+ testOptionData: { type: Object, default: null },
93
+ readonly: Boolean,
94
+ columnFlag: Boolean,
95
+ sourceData: Object,
96
+ },
97
+ data() {
98
+ return {
99
+ vFormVersion: baseRefUtil.VARIANT_FORM_VERSION,
100
+ curLangName: "",
101
+
102
+ vsCodeFlag: false,
103
+ caseName: "",
104
+
105
+ docUrl: "https://www.vform666.com/document.html",
106
+ gitUrl: "https://github.com/vform666/variant-form",
107
+ chatUrl: "https://www.vform666.com/pages/chat-group/",
108
+ subScribeUrl: "https://www.vform666.com/subscribe.html",
109
+
110
+ scrollerHeight: 0,
111
+
112
+ designer: baseRefUtil.createDesigner(this),
113
+
114
+ fieldList: [],
115
+ subFormList: [],
116
+ optionData: this.testOptionData,
117
+ externalComponents: {},
118
+ leftAsideVisible: !0,
119
+ rightAsideVisible: !0,
120
+ isDev: true,
121
+ menuKindAuth: {
122
+ editAuth: 0,
123
+ },
124
+ showPreformDialog: false,
125
+ itemFieldMap: {
126
+ grid: "cols",
127
+ table: "rows",
128
+ "table-cell": "widgetList",
129
+ "h5-table": "rows",
130
+ "h5-table-cell": "widgetList",
131
+ tab: "tabs",
132
+ "tab-pane": "widgetList",
133
+ "grid-col": "widgetList",
134
+ "vf-box": "widgetList",
135
+ card: "widgetList",
136
+ detail: "panes",
137
+ "detail-plain": "panes",
138
+ "detail-pane": "widgetList",
139
+ "detail-h5": "panes",
140
+ "h5-card": "panes",
141
+ "h5-card-pane": "widgetList",
142
+ },
143
+ };
144
+ },
145
+ provide() {
146
+ return {
147
+ serverFieldList: this.fieldList,
148
+ getServerSubFormList: () => this.subFormList,
149
+ getDesignerConfig: () => this.designerConfig,
150
+ getBannedWidgets: () => this.bannedWidgets,
151
+ saveReportTemplate: this.saveReportTemplate,
152
+ getReportTemplate: () => this.reportTemplate,
153
+ getFormTemplateTableDTOs: this.getFormTemplateTableDTOs,
154
+ getObjectFieldFlag: () => !1,
155
+ getObjectName: () => "",
156
+ getHasWf: () => false,
157
+ readonly: this.readonly,
158
+ columnFlag: this.columnFlag,
159
+ widgetKeyNameMap: {},
160
+ sourceData: this.sourceData,
161
+ setCETriggerFlag: () => {},
162
+ clearCETriggerFlag: () => {},
163
+ };
164
+ },
165
+ created() {
166
+ this.vsCodeFlag = baseRefUtil.getQueryParam("vscode") === 1;
167
+ this.caseName = baseRefUtil.getQueryParam("case");
168
+ this.designer.handleEvent("canvas-select-field", (o) => {
169
+ this.$emit("field-widget-used", o);
170
+ }),
171
+ this.designer.handleEvent("canvas-remove-field", (o) => {
172
+ this.$emit("field-widget-removed", o);
173
+ }),
174
+ this.designer.handleEvent("form-json-imported", () => {
175
+ this.$emit("form-json-updated", "form-json-imported");
176
+ }),
177
+ this.designer.handleEvent("canvas-undo", () => {
178
+ this.$emit("form-json-updated", "canvas-undo");
179
+ }),
180
+ this.designer.handleEvent("canvas-redo", () => {
181
+ this.$emit("form-json-updated", "canvas-redo");
182
+ }),
183
+ this.designer.handleEvent("canvas-remove-container", () => {
184
+ this.$emit("form-json-updated", "canvas-remove-container");
185
+ });
186
+ },
187
+ mounted() {
188
+ this.initLocale();
189
+
190
+ this.scrollerHeight = window.innerHeight - 42 + "px";
191
+ this.winResizeUnbind = baseRefUtil.addWindowResizeHandler(() => {
192
+ this.$nextTick(() => {
193
+ this.scrollerHeight = window.innerHeight - 42 + "px";
194
+ });
195
+ });
196
+
197
+ this.loadCase();
198
+
199
+ // this.loadFieldListFromServer();
200
+ this.initServerFields();
201
+ this.getBdEnv();
202
+ this.getMenuKindAuth();
203
+ },
204
+ beforeDestroy() {
205
+ // window 级监听持有本实例,销毁时必须解绑,否则设计器整树泄露
206
+ if (this.winResizeUnbind) {
207
+ this.winResizeUnbind();
208
+ this.winResizeUnbind = null;
209
+ }
210
+ },
211
+ methods: {
212
+ showLink(configName) {
213
+ if (this.designerConfig[configName] === undefined) {
214
+ return true;
215
+ }
216
+
217
+ return !!this.designerConfig[configName];
218
+ },
219
+
220
+ openHome() {
221
+ if (!!this.vsCodeFlag) {
222
+ const msgObj = {
223
+ cmd: "openUrl",
224
+ data: {
225
+ url: "https://www.vform666.com/",
226
+ },
227
+ };
228
+ window.parent.postMessage(msgObj, "*");
229
+ }
230
+ },
231
+
232
+ openUrl(event, url) {
233
+ if (!!this.vsCodeFlag) {
234
+ const msgObj = {
235
+ cmd: "openUrl",
236
+ data: {
237
+ url,
238
+ },
239
+ };
240
+ window.parent.postMessage(msgObj, "*");
241
+ } else {
242
+ let aDom = event.currentTarget;
243
+ aDom.href = url;
244
+ //window.open(url, '_blank') //直接打开新窗口,会被浏览器拦截
245
+ }
246
+ },
247
+
248
+ loadCase() {
249
+ if (!this.caseName) {
250
+ return;
251
+ }
252
+
253
+ baseRefUtil.axios
254
+ .get(baseRefUtil.MOCK_CASE_URL + this.caseName + ".txt")
255
+ .then((res) => {
256
+ if (!!res.data.code) {
257
+ this.$message.error(this.i18nt("designer.hint.sampleLoadedFail"));
258
+ return;
259
+ }
260
+
261
+ this.setFormJson(res.data);
262
+ this.$message.success(
263
+ this.i18nt("designer.hint.sampleLoadedSuccess")
264
+ );
265
+ })
266
+ .catch((error) => {
267
+ this.$message.error(
268
+ this.i18nt("designer.hint.sampleLoadedFail") + ":" + error
269
+ );
270
+ });
271
+ },
272
+
273
+ initLocale() {
274
+ let curLocale = localStorage.getItem("v_form_locale");
275
+ if (!!this.vsCodeFlag) {
276
+ curLocale = curLocale || "en-US";
277
+ } else {
278
+ curLocale = curLocale || "zh-CN";
279
+ }
280
+ this.curLangName = this.i18nt("application." + curLocale);
281
+ this.changeLanguage(curLocale);
282
+ },
283
+
284
+ loadFieldListFromServer() {
285
+ if (!this.fieldListApi) {
286
+ return;
287
+ }
288
+
289
+ let headers = this.fieldListApi.headers || {};
290
+ baseRefUtil.axios
291
+ .get(this.fieldListApi.URL, {
292
+ headers: headers,
293
+ })
294
+ .then((res) => {
295
+ let labelKey = this.fieldListApi.labelKey || "label";
296
+ let nameKey = this.fieldListApi.nameKey || "name";
297
+
298
+ this.fieldList.splice(0, this.fieldList.length); //清空已有
299
+ res.data.forEach((fieldItem) => {
300
+ this.fieldList.push({
301
+ label: fieldItem[labelKey],
302
+ name: fieldItem[nameKey],
303
+ });
304
+ });
305
+ })
306
+ .catch((error) => {
307
+ this.$message.error(error);
308
+ });
309
+ },
310
+ initServerFields() {
311
+ !!this.fieldListData && !!this.fieldListData.fieldList
312
+ ? (this.fieldList.splice(
313
+ 0,
314
+ this.fieldList.length,
315
+ ...this.fieldListData.fieldList
316
+ ),
317
+ this.fieldListData.subFormList &&
318
+ this.subFormList.splice(
319
+ 0,
320
+ this.subFormList.length,
321
+ ...this.fieldListData.subFormList
322
+ ))
323
+ : this.loadFieldListFromServer();
324
+ },
325
+ setFieldListData(o) {
326
+ !!o &&
327
+ !!o.fieldList &&
328
+ (this.fieldList.splice(0, this.fieldList.length, ...o.fieldList),
329
+ o.subFormList &&
330
+ this.subFormList.splice(
331
+ 0,
332
+ this.subFormList.length,
333
+ ...o.subFormList
334
+ ));
335
+ },
336
+ setMetaFields(o) {
337
+ this.$refs.widgetPanelRef.setMetaFields(o);
338
+ },
339
+ handleLanguageChanged(command) {
340
+ this.changeLanguage(command);
341
+ this.curLangName = this.i18nt("application." + command);
342
+ },
343
+
344
+ changeLanguage(langName) {
345
+ baseRefUtil.changeLocale(langName);
346
+ },
347
+
348
+ setFormJson(formJson) {
349
+ let modifiedFlag = false;
350
+ if (!!formJson) {
351
+ if (typeof formJson === "string") {
352
+ let newFormJson = JSON.parse(formJson);
353
+ this.upgradeFormJson(newFormJson);
354
+ modifiedFlag = this.designer.loadFormJson(newFormJson);
355
+ } else if (formJson.constructor === Object) {
356
+ this.upgradeFormJson(formJson);
357
+ modifiedFlag = this.designer.loadFormJson(formJson);
358
+ }
359
+
360
+ if (modifiedFlag) {
361
+ this.designer.emitHistoryChange();
362
+ }
363
+ } else {
364
+ this.clearDesigner();
365
+ }
366
+ },
367
+
368
+ getFormJson() {
369
+ return {
370
+ widgetList: baseRefUtil.deepClone(this.designer.widgetList),
371
+ formConfig: baseRefUtil.deepClone(this.designer.formConfig),
372
+ };
373
+ },
374
+
375
+ clearDesigner() {
376
+ this.$refs.toolbarRef.clearFormWidget();
377
+ },
378
+
379
+ /**
380
+ * 刷新表单设计器
381
+ */
382
+ refreshDesigner() {
383
+ //this.designer.loadFormJson( this.getFormJson() ) //只有第一次调用生效??
384
+
385
+ let fJson = this.getFormJson();
386
+ this.designer.clearDesigner(true); //不触发历史记录变更
387
+ this.designer.loadFormJson(fJson);
388
+ },
389
+
390
+ /**
391
+ * 预览表单
392
+ */
393
+ previewForm() {
394
+ this.$refs.toolbarRef.previewForm();
395
+ },
396
+
397
+ /**
398
+ * 导入表单JSON
399
+ */
400
+ importJson() {
401
+ this.$refs.toolbarRef.importJson();
402
+ },
403
+
404
+ /**
405
+ * 导出表单JSON
406
+ */
407
+ exportJson() {
408
+ this.$refs.toolbarRef.exportJson();
409
+ },
410
+
411
+ /**
412
+ * 导出Vue/HTML代码
413
+ */
414
+ exportCode() {
415
+ this.$refs.toolbarRef.exportCode();
416
+ },
417
+
418
+ /**
419
+ * 生成SFC代码
420
+ */
421
+ generateSFC() {
422
+ this.$refs.toolbarRef.generateSFC();
423
+ },
424
+
425
+ /**
426
+ * 获取所有字段组件
427
+ * @returns {*[]}
428
+ */
429
+ getFieldWidgets(widgetList = null) {
430
+ return !!widgetList
431
+ ? baseRefUtil.getAllFieldWidgets(widgetList)
432
+ : baseRefUtil.getAllFieldWidgets(this.designer.widgetList);
433
+ },
434
+
435
+ /**
436
+ * 获取所有容器组件
437
+ * @returns {*[]}
438
+ */
439
+ getContainerWidgets(widgetList = null) {
440
+ return !!widgetList
441
+ ? baseRefUtil.getAllContainerWidgets(widgetList)
442
+ : baseRefUtil.getAllContainerWidgets(this.designer.widgetList);
443
+ },
444
+
445
+ /**
446
+ * 升级表单json,以补充最新的组件属性
447
+ * @param formJson
448
+ */
449
+ upgradeFormJson(formJson) {
450
+ if (!formJson.widgetList || !formJson.formConfig) {
451
+ this.$message.error("Invalid form json!");
452
+ return;
453
+ }
454
+
455
+ traverseAllWidgetsNew(formJson.widgetList, (w) => {
456
+ this.designer.upgradeWidgetConfig(w);
457
+ });
458
+ this.designer.upgradeFormConfig(formJson.formConfig);
459
+
460
+ return formJson;
461
+ },
462
+
463
+ getWidgetRef(widgetName, showError = false) {
464
+ return this.$refs["formRef"].getWidgetRef(widgetName, showError);
465
+ },
466
+
467
+ getSelectedWidgetRef() {
468
+ return this.$refs["formRef"].getSelectedWidgetRef();
469
+ },
470
+ getWfBizDataSettingDTOs(formJson, code) {
471
+ let result = [];
472
+ let formCode = code || this.reportTemplate.formCode;
473
+ let fields = [];
474
+ let fJson = formJson || this.getFormJson();
475
+ let formConfig = fJson.formConfig;
476
+ let entity = formConfig.entity;
477
+ if (!entity) return [];
478
+ if (formConfig.wfTheme) {
479
+ result.push({
480
+ action: "setWfName",
481
+ toValue: formConfig.wfTheme,
482
+ tableName: entity,
483
+ tableField: null,
484
+ });
485
+ }
486
+ let itemFieldMap = this.itemFieldMap;
487
+
488
+ let loopDo = (widgetList) => {
489
+ if (!widgetList) return;
490
+ widgetList.forEach((widget) => {
491
+ let widgetName = widget.options.name;
492
+ let optionModel = widget.options;
493
+ if (widget.category !== "container") {
494
+ if (optionModel.wfModifyDataEnabled) {
495
+ let wfModifyDataConfig = optionModel.wfModifyDataConfig || [];
496
+ if (wfModifyDataConfig.length) {
497
+ let fieldKeyName = this.getFieldKeyName(widget);
498
+ let items = wfModifyDataConfig
499
+ .filter((item) => {
500
+ return !!item.action;
501
+ })
502
+ .map((item) => {
503
+ return {
504
+ action: item.action,
505
+ toValue: item.toValue,
506
+ tableName: entity,
507
+ tableField: fieldKeyName,
508
+ };
509
+ });
510
+ result.push(...items);
511
+ }
512
+ }
513
+ } else {
514
+ let itemField = itemFieldMap[widget.type];
515
+ if (itemField) {
516
+ if ("table" === widget.type) {
517
+ widget[itemField].forEach((item) => {
518
+ loopDo(item.cols);
519
+ });
520
+ } else if ("h5-table" === widget.type) {
521
+ widget[itemField].forEach((item) => {
522
+ loopDo(item.cols);
523
+ });
524
+ } else {
525
+ loopDo(widget[itemField]);
526
+ }
527
+ }
528
+ }
529
+ });
530
+ };
531
+ loopDo(fJson.widgetList);
532
+ return result;
533
+ },
534
+ getFormTemplateTableDTOs(formJson, code) {
535
+ let formTemplateTableDTOs = [];
536
+ let formCode = code || this.reportTemplate.formCode;
537
+ let fields = [];
538
+ let fJson = formJson || this.getFormJson();
539
+ /*let itemFieldMap = {
540
+ grid: "cols",
541
+ table: "rows",
542
+ "table-cell": "widgetList",
543
+ 'h5-table': "rows",
544
+ "h5-table-cell": "widgetList",
545
+ tab: "tabs",
546
+ "tab-pane": "widgetList",
547
+ "grid-col": "widgetList",
548
+ "vf-box": "widgetList",
549
+ "card": "widgetList",
550
+ "detail": "panes",
551
+ "detail-pane": "widgetList",
552
+ "detail-h5": "panes",
553
+ "h5-card": "panes",
554
+ "h5-card-pane": "widgetList",
555
+ }*/
556
+ let itemFieldMap = this.itemFieldMap;
557
+ let loopDo = (widgetList) => {
558
+ if (!widgetList) return;
559
+ widgetList.forEach((widget) => {
560
+ let widgetName = widget.options.name;
561
+ if (
562
+ widget.tableField &&
563
+ (widget.type === "data-table" || widget.type === "list-h5")
564
+ ) {
565
+ // form-render/indexMixin 的 getFormTemplateTableDTOs 同口径:
566
+ // 分组表头自身 prop 为空,业务字段挂在 children 上,必须先展平叶子列,
567
+ // 否则「列全部分组」的表格算不出字段,子表不会写进模板表结构。
568
+ let vailColumns = flattenLeafColumns(
569
+ widget.options.tableColumns
570
+ ).filter((item) => item.prop && item.label);
571
+ let itemFields = [];
572
+ vailColumns.forEach((item) => {
573
+ if (item.formatS === "editSearch") {
574
+ itemFields.push({
575
+ fieldDesc: item.label + "ID",
576
+ fieldName: item.prop,
577
+ });
578
+ let vabSearchName = item?.columnOption?.vabSearchName;
579
+ if (vabSearchName) {
580
+ itemFields.push({
581
+ fieldDesc: item.label,
582
+ fieldName: vabSearchName,
583
+ });
584
+ }
585
+ } else {
586
+ itemFields.push({
587
+ fieldDesc: item.label,
588
+ fieldName: item.prop,
589
+ });
590
+ }
591
+ });
592
+ /*let itemFields = widget.options.tableColumns.filter(item => item.prop && item.label).map(item => {
593
+ return {
594
+ fieldDesc: item.label,
595
+ fieldName: item.prop
596
+ }
597
+ })*/
598
+ if (itemFields.length) {
599
+ let formTemplateTable = {
600
+ tableAlias: widgetName,
601
+ formCode: formCode,
602
+ tableType: 1,
603
+ formTemplateFieldDTOs: [],
604
+ };
605
+ formTemplateTable.formTemplateFieldDTOs = itemFields;
606
+ formTemplateTableDTOs.push(formTemplateTable);
607
+ }
608
+ } else if (widget.tableField && widget.type === "vabUpload") {
609
+ let formTemplateTable = {
610
+ tableAlias: widgetName,
611
+ formCode: formCode,
612
+ tableType: 2,
613
+ };
614
+ formTemplateTableDTOs.push(formTemplateTable);
615
+ } else if (widget.tableField && this.isVabsearchFlagWidget(widget)) {
616
+ fields.push({
617
+ fieldDesc: widget.options.label + "ID",
618
+ fieldName: widgetName,
619
+ });
620
+ let vabSearchName = widget.options.vabSearchName;
621
+ if (vabSearchName) {
622
+ fields.push({
623
+ fieldDesc: widget.options.label,
624
+ fieldName: vabSearchName,
625
+ });
626
+ }
627
+ } else if (widget.tableField) {
628
+ fields.push({
629
+ fieldDesc: widget.options.label,
630
+ fieldName: widgetName,
631
+ });
632
+ } else {
633
+ if (widget.category === "container") {
634
+ let itemField = itemFieldMap[widget.type];
635
+ if (itemField) {
636
+ if ("table" === widget.type) {
637
+ widget[itemField].forEach((item) => {
638
+ loopDo(item.cols);
639
+ });
640
+ } else if ("h5-table" === widget.type) {
641
+ widget[itemField].forEach((item) => {
642
+ loopDo(item.cols);
643
+ });
644
+ } else {
645
+ loopDo(widget[itemField]);
646
+ }
647
+ }
648
+ }
649
+ }
650
+ });
651
+ };
652
+
653
+ loopDo(fJson.widgetList);
654
+ if (fields.length) {
655
+ let formTemplateTable = {
656
+ tableAlias: null,
657
+ formCode: formCode,
658
+ tableType: 0,
659
+ formTemplateFieldDTOs: fields,
660
+ };
661
+ formTemplateTableDTOs.push(formTemplateTable);
662
+ }
663
+
664
+ return formTemplateTableDTOs;
665
+ },
666
+ isVabsearchFlagWidget(widget) {
667
+ let type = widget?.type;
668
+ return (
669
+ type === "vabsearch" ||
670
+ type === "singerSearch" ||
671
+ type === "multiSearch"
672
+ );
673
+ },
674
+ getTableFileds() {
675
+ let fields = [];
676
+ let fJson = this.getFormJson();
677
+ /*let itemFieldMap = {
678
+ grid: "cols",
679
+ table: "rows",
680
+ "table-cell": "widgetList",
681
+ 'h5-table': "rows",
682
+ "h5-table-cell": "widgetList",
683
+ tab: "tabs",
684
+ "tab-pane": "widgetList",
685
+ "grid-col": "widgetList",
686
+ "vf-box": "widgetList",
687
+ "card": "widgetList",
688
+ "detail": "panes",
689
+ "detail-pane": "widgetList",
690
+ "detail-h5": "panes",
691
+ "h5-card": "panes",
692
+ "h5-card-pane": "widgetList",
693
+ }*/
694
+ let itemFieldMap = this.itemFieldMap;
695
+ let loopDo = (widgetList) => {
696
+ if (!widgetList) return;
697
+ widgetList.forEach((widget) => {
698
+ /*if (widget.tableField && widget.type === 'data-table') {
699
+ let itemFields = widget.options.tableColumns.filter(item.prop && item.label).map(item => {
700
+ return {
701
+ fieldDesc: item.options.label,
702
+ fieldName: item.prop
703
+ }
704
+ })
705
+ }*/
706
+ let widgetName = widget.options.name;
707
+ if (widget.tableField) {
708
+ fields.push({
709
+ fieldDesc: widget.options.label,
710
+ fieldName: widgetName,
711
+ });
712
+ } else {
713
+ if (widget.category === "container") {
714
+ let itemField = itemFieldMap[widget.type];
715
+ if (itemField) {
716
+ if ("table" === widget.type) {
717
+ widget[itemField].forEach((item) => {
718
+ loopDo(item.cols);
719
+ });
720
+ } else if ("h5-table" === widget.type) {
721
+ widget[itemField].forEach((item) => {
722
+ loopDo(item.cols);
723
+ });
724
+ } else {
725
+ loopDo(widget[itemField]);
726
+ }
727
+ }
728
+ }
729
+ }
730
+ });
731
+ };
732
+ loopDo(fJson.widgetList);
733
+ return fields;
734
+ },
735
+ getFormScriptDTOs() {
736
+ let reportTemplate = this.reportTemplate;
737
+ let fJson = this.getFormJson();
738
+ let scripts = fJson.formConfig.scriptList || [];
739
+ return scripts
740
+ .filter((item) => {
741
+ return !!item.uuid && !!item.script;
742
+ })
743
+ .map((item) => {
744
+ return {
745
+ formCode: reportTemplate.formCode,
746
+ formVersion: reportTemplate.formVersion,
747
+ scriptCode: item.uuid,
748
+ scriptName: item.uuid,
749
+ script: item.script,
750
+ };
751
+ });
752
+ },
753
+ handleColumnConfirm() {
754
+ let fJson = this.getFormJson();
755
+ this.$emit("customConfirm", fJson);
756
+ },
757
+ saveReportTemplate() {
758
+ if (this.columnFlag) {
759
+ this.handleColumnConfirm();
760
+ return;
761
+ }
762
+ this.openPreformDialog();
763
+ },
764
+ saveDataHandle(preformData) {
765
+ if (this.reportTemplate) {
766
+ let formTemplateTableDTOs = this.getFormTemplateTableDTOs();
767
+ let fJson = this.getFormJson();
768
+ let formViewContent = JSON.stringify(fJson);
769
+ let tableFileds = this.getTableFileds();
770
+ let reportTemplate = baseRefUtil.deepClone(this.reportTemplate);
771
+ reportTemplate.formViewContent = formViewContent;
772
+ reportTemplate.formTemplateTableDTOs = formTemplateTableDTOs;
773
+
774
+ let formScriptDTOs = this.getFormScriptDTOs();
775
+ reportTemplate.formScriptDTOs = formScriptDTOs;
776
+ reportTemplate.hasWf = fJson.formConfig.wfEnabled || false;
777
+
778
+ let wfBizDataSettingDTOs = this.getWfBizDataSettingDTOs();
779
+
780
+ let formData = {
781
+ ...reportTemplate,
782
+ wfBizDataSettingDTOs,
783
+ logContent: preformData.logContent,
784
+ };
785
+
786
+ let url = USER_PREFIX + `/formTemplate/updateDesign`;
787
+ this.$http({
788
+ url: url,
789
+ method: `post`,
790
+ data: formData,
791
+ isLoading: true,
792
+ loadingTarget: document.body,
793
+ success: (res) => {
794
+ this.reflushReportTemplate(res.objx);
795
+ this.$message({
796
+ message: res.content,
797
+ type: "success",
798
+ duration: 500,
799
+ onClose: (t) => {},
800
+ });
801
+ this.$emit("reflushTemplateList");
802
+ },
803
+ });
804
+ }
805
+ },
806
+ openPreformDialog() {
807
+ this.showPreformDialog = true;
808
+ },
809
+ confirmPreformDialog(preformData) {
810
+ this.saveDataHandle(preformData);
811
+ },
812
+ reflushReportTemplate(id) {
813
+ this.$http({
814
+ url: USER_PREFIX + `/formTemplate/get`,
815
+ method: `post`,
816
+ data: {
817
+ id: id,
818
+ },
819
+ isLoading: true,
820
+ loadingTarget: document.body,
821
+ modalStrictly: true,
822
+ success: (res) => {
823
+ let reportTemplate = res.objx || {};
824
+ this.$emit("update:reportTemplate", reportTemplate);
825
+ },
826
+ });
827
+ },
828
+ loadWidgets() {
829
+ this.$refs.widgetPanelRef.loadWidgets();
830
+ },
831
+ getBdEnv() {
832
+ getBdFlag({
833
+ success: (res) => {
834
+ this.isDev = res.objx === 1;
835
+ },
836
+ });
837
+ },
838
+ getMenuKindAuth() {
839
+ let menuKindCode = this.reportTemplate?.menuKindCode;
840
+ if (menuKindCode) {
841
+ this.$http({
842
+ aes: true,
843
+ url: USER_PREFIX + "/menu_kind_auth/getAuth",
844
+ method: `post`,
845
+ data: { stringOne: menuKindCode },
846
+ isLoading: true,
847
+ success: (res) => {
848
+ this.menuKindAuth = res.objx || {};
849
+ },
850
+ });
851
+ }
852
+ },
853
+ getFieldKeyName(widget) {
854
+ let o = widget.options.name;
855
+ return (widget.options.keyNameEnabled && widget.options.keyName) || o;
856
+ },
857
+ //TODO: 增加更多方法!!
858
+ },
859
+ };
860
+ export default modules;