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,589 +1,655 @@
1
- import {
2
- deepClone,
3
- copyToClipboard,
4
- generateId,
5
- getQueryParam,
6
- traverseAllWidgets,
7
- addWindowResizeHandler
8
- } from '../../../../components/xform/utils/util';
9
- import i18n from '../../../../components/xform/utils/i18n';
10
- import {
11
- generateCode
12
- } from '../../../../components/xform/utils/code-generator';
13
- import {
14
- genSFC
15
- } from '../../../../components/xform/utils/sfc-generator';
16
- import loadBeautifier from '../../../../components/xform/utils/beautifierLoader';
17
- import {
18
- saveAs
19
- } from 'file-saver';
20
- import axios from 'axios';
21
-
22
- let modules = {};
23
- const baseRefUtil = {
24
- i18n,
25
- generateCode,
26
- genSFC,
27
- loadBeautifier,
28
- saveAs,
29
- axios,
30
- deepClone,
31
- copyToClipboard,
32
- generateId,
33
- getQueryParam,
34
- traverseAllWidgets,
35
- addWindowResizeHandler
36
- };
37
-
38
- modules = {
39
- mixins: [baseRefUtil.i18n],
40
- props: {
41
- designer: Object
42
- },
43
- inject: ['getDesignerConfig', 'saveReportTemplate', 'getReportTemplate', 'getFormTemplateTableDTOs', 'readonly'],
44
- data() {
45
- return {
46
- designerConfig: this.getDesignerConfig(),
47
- showRender: true,
48
- toolbarWidth: 600,
49
- showPreviewDialogFlag: false,
50
- showImportJsonDialogFlag: false,
51
- showExportJsonDialogFlag: false,
52
- showExportCodeDialogFlag: false,
53
- showFormDataDialogFlag: false,
54
- showExportSFCDialogFlag: false,
55
- showNodeTreeDrawerFlag: false,
56
-
57
- nodeTreeData: [],
58
-
59
- testFunc: '',
60
- importTemplate: '',
61
- jsonContent: '',
62
- jsonRawContent: '',
63
-
64
- formDataJson: '',
65
- formDataRawJson: '',
66
-
67
- vueCode: '',
68
- htmlCode: '',
69
-
70
- sfcCode: '',
71
- sfcCodeV3: '',
72
-
73
- activeCodeTab: 'vue',
74
- activeSFCTab: 'vue2',
75
-
76
- testFormData: {},
77
- testOptionData: {},
78
-
79
- activeName: 'first',
80
- formInsListFieldDTOs: [],
81
- vxeOption: {},
82
- formData: {},
83
- showFormConfigDialog: false
84
- };
85
- },
86
- computed: {
87
- formJson() {
88
- return {
89
- // widgetList: this.designer.widgetList,
90
- // formConfig: this.designer.formConfig
91
-
92
- widgetList: baseRefUtil.deepClone(this.designer.widgetList),
93
- formConfig: baseRefUtil.deepClone(this.designer.formConfig)
94
- };
95
- },
96
-
97
- undoDisabled() {
98
- return !this.designer.undoEnabled();
99
- },
100
-
101
- redoDisabled() {
102
- return !this.designer.redoEnabled();
103
- },
104
-
105
- layoutType() {
106
- return this.designer.getLayoutType();
107
- }
108
- },
109
- watch: {
110
- 'designer.widgetList': {
111
- deep: true,
112
- handler(val) {
113
- //console.log('test-----', val)
114
- //this.refreshNodeTree()
115
- }
116
- }
117
- },
118
- mounted() {
119
- let maxTBWidth = this.designerConfig.toolbarMaxWidth || 380;
120
- let minTBWidth = this.designerConfig.toolbarMinWidth || 300;
121
- let newTBWidth = window.innerWidth - 260 - 300 - 320 - 80;
122
- //this.toolbarWidth = newTBWidth >= maxTBWidth ? maxTBWidth : newTBWidth <= minTBWidth ? minTBWidth : newTBWidth;
123
- baseRefUtil.addWindowResizeHandler(() => {
124
- this.$nextTick(() => {
125
- let newTBWidth2 = window.innerWidth - 260 - 300 - 320 - 80;
126
- //this.toolbarWidth = newTBWidth2 >= maxTBWidth ? maxTBWidth : newTBWidth2 <= minTBWidth ? minTBWidth :
127
- newTBWidth2;
128
- });
129
- });
130
- },
131
- methods: {
132
- showToolButton(configName) {
133
- if (this.designerConfig[configName] === undefined) {
134
- return true;
135
- }
136
-
137
- return !!this.designerConfig[configName];
138
- },
139
-
140
- buildTreeNodeOfWidget(widget, treeNode) {
141
- let curNode = {
142
- id: widget.id,
143
- label: widget.options.label || widget.type
144
- //selectable: true,
145
- };
146
- treeNode.push(curNode);
147
-
148
- if (widget.category === undefined) {
149
- return;
150
- }
151
-
152
- curNode.children = [];
153
- if (widget.type === 'grid') {
154
- widget.cols.map(col => {
155
- let colNode = {
156
- id: col.id,
157
- label: col.options.name || widget.type,
158
- children: []
159
- };
160
- curNode.children.push(colNode);
161
- col.widgetList.map(wChild => {
162
- this.buildTreeNodeOfWidget(wChild, colNode.children);
163
- });
164
- });
165
- } else if (widget.type === 'table') {
166
- //TODO: 需要考虑合并单元格!!
167
- widget.rows.map(row => {
168
- let rowNode = {
169
- id: row.id,
170
- label: 'table-row',
171
- selectable: false,
172
- children: []
173
- };
174
- curNode.children.push(rowNode);
175
-
176
- row.cols.map(cell => {
177
- if (!!cell.merged) {
178
- //跳过合并单元格!!
179
- return;
180
- }
181
-
182
- let rowChildren = rowNode.children;
183
- let cellNode = {
184
- id: cell.id,
185
- label: 'table-cell',
186
- children: []
187
- };
188
- rowChildren.push(cellNode);
189
-
190
- cell.widgetList.map(wChild => {
191
- this.buildTreeNodeOfWidget(wChild, cellNode.children);
192
- });
193
- });
194
- });
195
- } else if (widget.type === 'h5-table') {
196
- //TODO: 需要考虑合并单元格!!
197
- widget.rows.map(row => {
198
- let rowNode = {
199
- id: row.id,
200
- label: 'table-row',
201
- selectable: false,
202
- children: []
203
- };
204
- curNode.children.push(rowNode);
205
-
206
- row.cols.map(cell => {
207
- if (!!cell.merged) {
208
- //跳过合并单元格!!
209
- return;
210
- }
211
-
212
- let rowChildren = rowNode.children;
213
- let cellNode = {
214
- id: cell.id,
215
- label: 'table-cell',
216
- children: []
217
- };
218
- rowChildren.push(cellNode);
219
-
220
- cell.widgetList.map(wChild => {
221
- this.buildTreeNodeOfWidget(wChild, cellNode.children);
222
- });
223
- });
224
- });
225
- } else if (widget.type === 'tab') {
226
- widget.tabs.map(tab => {
227
- let tabNode = {
228
- id: tab.id,
229
- label: tab.options.name || widget.type,
230
- selectable: false,
231
- children: []
232
- };
233
- curNode.children.push(tabNode);
234
- tab.widgetList.map(wChild => {
235
- this.buildTreeNodeOfWidget(wChild, tabNode.children);
236
- });
237
- });
238
- } else if (widget.type === 'sub-form') {
239
- widget.widgetList.map(wChild => {
240
- this.buildTreeNodeOfWidget(wChild, curNode.children);
241
- });
242
- } else if (widget.category === 'container') {
243
- //自定义容器
244
- widget.widgetList.map(wChild => {
245
- this.buildTreeNodeOfWidget(wChild, curNode.children);
246
- });
247
- }
248
- },
249
-
250
- refreshNodeTree() {
251
- this.nodeTreeData.length = 0;
252
- this.designer.widgetList.forEach(wItem => {
253
- this.buildTreeNodeOfWidget(wItem, this.nodeTreeData);
254
- });
255
- },
256
-
257
- showNodeTreeDrawer() {
258
- this.refreshNodeTree();
259
- this.showNodeTreeDrawerFlag = true;
260
- this.$nextTick(() => {
261
- if (!!this.designer.selectedId) {
262
- //同步当前选中组件到节点树!!!
263
- this.$refs.nodeTree.setCurrentKey(this.designer.selectedId);
264
- }
265
- });
266
- },
267
-
268
- undoHistory() {
269
- this.designer.undoHistoryStep();
270
- },
271
-
272
- redoHistory() {
273
- this.designer.redoHistoryStep();
274
- },
275
-
276
- changeLayoutType(newType) {
277
- this.designer.changeLayoutType(newType);
278
- this.$emit("loadWidgets");
279
- },
280
-
281
- clearFormWidget() {
282
- this.designer.clearDesigner(),
283
- this.designer.formWidget.clearWidgetRefList(),
284
- this.designer.emitEvent("form-json-imported", []);
285
- this.$emit("loadWidgets");
286
- },
287
-
288
- previewForm() {
289
- this.reportTemplate = this.getReportTemplate();
290
- this.showPreviewDialogFlag = true;
291
- this.activeName = 'first';
292
- },
293
-
294
- saveAsFile(fileContent, defaultFileName) {
295
- this.$prompt(this.i18nt('designer.hint.fileNameForSave'), this.i18nt('designer.hint.saveFileTitle'), {
296
- inputValue: defaultFileName,
297
- closeOnClickModal: false,
298
- inputPlaceholder: this.i18nt('designer.hint.fileNameInputPlaceholder')
299
- })
300
- .then(({
301
- value
302
- }) => {
303
- if (!value) {
304
- value = defaultFileName;
305
- }
306
-
307
- if (baseRefUtil.getQueryParam('vscode') == 1) {
308
- this.vsSaveFile(value, fileContent);
309
- return;
310
- }
311
-
312
- const fileBlob = new Blob([fileContent], {
313
- type: 'text/plain;charset=utf-8'
314
- });
315
- baseRefUtil.saveAs(fileBlob, value);
316
- })
317
- .catch(() => {
318
- //
319
- });
320
- },
321
-
322
- vsSaveFile(fileName, fileContent) {
323
- const msgObj = {
324
- cmd: 'writeFile',
325
- data: {
326
- fileName,
327
- code: fileContent
328
- }
329
- };
330
- window.parent.postMessage(msgObj, '*');
331
- },
332
-
333
- importJson() {
334
- this.importTemplate = JSON.stringify(this.designer.getImportTemplate(), null, ' ');
335
- this.showImportJsonDialogFlag = true;
336
- },
337
- doJsonImport() {
338
- try {
339
- let importObj = JSON.parse(this.importTemplate);
340
- this.designer.handleImportJson(importObj)
341
- this.designer.loadFormJson(importObj);
342
-
343
- this.showImportJsonDialogFlag = false;
344
- this.$message.success(this.i18nt('designer.hint.importJsonSuccess'));
345
-
346
- this.designer.emitHistoryChange();
347
-
348
- this.designer.emitEvent('form-json-imported', []);
349
- } catch (ex) {
350
- this.$message.error(ex + '');
351
- }
352
- },
353
-
354
- exportJson() {
355
- let widgetList = baseRefUtil.deepClone(this.designer.widgetList);
356
- let formConfig = baseRefUtil.deepClone(this.designer.formConfig);
357
- let formCode = this.designer?.vueInstance?.reportTemplate?.formCode;
358
- if(formCode){
359
- formConfig.formCode = formCode;
360
- }
361
- this.jsonContent = JSON.stringify({
362
- widgetList,
363
- formConfig
364
- }, null, ' ');
365
- this.jsonRawContent = JSON.stringify({
366
- widgetList,
367
- formConfig
368
- });
369
- this.showExportJsonDialogFlag = true;
370
- },
371
-
372
- copyFormJson(e) {
373
- baseRefUtil.copyToClipboard(this.jsonRawContent, e, this.$message, this.i18nt('designer.hint.copyJsonSuccess'),
374
- this.i18nt(
375
- 'designer.hint.copyJsonFail'));
376
- },
377
-
378
- saveFormJson() {
379
- this.saveAsFile(this.jsonContent, `vform${baseRefUtil.generateId()}.json`);
380
- },
381
-
382
- exportCode() {
383
- this.vueCode = baseRefUtil.generateCode(this.formJson);
384
- this.htmlCode = baseRefUtil.generateCode(this.formJson, 'html');
385
- this.showExportCodeDialogFlag = true;
386
- },
387
-
388
- copyVueCode(e) {
389
- baseRefUtil.copyToClipboard(this.vueCode, e, this.$message, this.i18nt('designer.hint.copyVueCodeSuccess'), this
390
- .i18nt(
391
- 'designer.hint.copyVueCodeFail'));
392
- },
393
-
394
- copyHtmlCode(e) {
395
- baseRefUtil.copyToClipboard(this.htmlCode, e, this.$message, this.i18nt('designer.hint.copyHtmlCodeSuccess'),
396
- this.i18nt(
397
- 'designer.hint.copyHtmlCodeFail'));
398
- },
399
-
400
- saveVueCode() {
401
- this.saveAsFile(this.vueCode, `vform${baseRefUtil.generateId()}.vue`);
402
- },
403
-
404
- saveHtmlCode() {
405
- this.saveAsFile(this.htmlCode, `vform${baseRefUtil.generateId()}.html`);
406
- },
407
-
408
- generateSFC() {
409
- baseRefUtil.loadBeautifier(beautifier => {
410
- this.sfcCode = baseRefUtil.genSFC(this.designer.formConfig, this.designer.widgetList, beautifier);
411
- this.sfcCodeV3 = baseRefUtil.genSFC(this.designer.formConfig, this.designer.widgetList, beautifier, true);
412
- this.showExportSFCDialogFlag = true;
413
- });
414
- },
415
-
416
- copyV2SFC(e) {
417
- baseRefUtil.copyToClipboard(this.sfcCode, e, this.$message, this.i18nt('designer.hint.copySFCSuccess'), this
418
- .i18nt(
419
- 'designer.hint.copySFCFail'));
420
- },
421
-
422
- copyV3SFC(e) {
423
- baseRefUtil.copyToClipboard(this.sfcCodeV3, e, this.$message, this.i18nt('designer.hint.copySFCSuccess'), this
424
- .i18nt(
425
- 'designer.hint.copySFCFail'));
426
- },
427
-
428
- saveV2SFC() {
429
- this.saveAsFile(this.sfcCode, `vformV2-${baseRefUtil.generateId()}.vue`);
430
- },
431
-
432
- saveV3SFC() {
433
- this.saveAsFile(this.sfcCodeV3, `vformV3-${baseRefUtil.generateId()}.vue`);
434
- },
435
-
436
- getFormData() {
437
- this.$refs['preForm']
438
- .getFormData()
439
- .then(formData => {
440
- this.formDataJson = JSON.stringify(formData, null, ' ');
441
- this.formDataRawJson = JSON.stringify(formData);
442
-
443
- this.showFormDataDialogFlag = true;
444
- })
445
- .catch(error => {
446
- this.$message.error(error);
447
- });
448
- },
449
-
450
- copyFormDataJson(e) {
451
- baseRefUtil.copyToClipboard(this.formDataRawJson, e, this.$message, this.i18nt('designer.hint.copyJsonSuccess'),
452
- this.i18nt(
453
- 'designer.hint.copyJsonFail'));
454
- },
455
-
456
- saveFormData() {
457
- this.saveAsFile(this.htmlCode, `formData${baseRefUtil.generateId()}.json`);
458
- },
459
-
460
- resetForm() {
461
- this.$refs['preForm'].resetForm();
462
- },
463
-
464
- setFormDisabled() {
465
- this.$refs['preForm'].disableForm();
466
- },
467
-
468
- setFormEnabled() {
469
- this.$refs['preForm'].enableForm();
470
- },
471
-
472
- printFormJson() {
473
- let tmpFS = {
474
- widgetList: baseRefUtil.deepClone(this.designer.widgetList),
475
- formConfig: baseRefUtil.deepClone(this.designer.formConfig)
476
- };
477
-
478
- console.log(tmpFS);
479
- },
480
-
481
- testValidate() {
482
- console.log('test===', this.$refs['preForm'].validateForm());
483
- },
484
-
485
- testSetFormData() {
486
- // let fData = {
487
- // 'fuTest': [
488
- // {
489
- // name: '上传文件测试.xlsx',
490
- // url: 'https://www.vform666.com/123.xlsx'
491
- // }
492
- // ]
493
- // }
494
- // this.$refs['preForm'].setFormData(fData)
495
-
496
- let nfData = {
497
- checkbox45524: [1, 2]
498
- };
499
- this.$refs['preForm'].setFormData(nfData);
500
- },
501
-
502
- handleFormChange(fieldName, newValue, oldValue, formModel) {
503
- /*
504
- console.log('---formChange start---')
505
- console.log('fieldName', fieldName)
506
- console.log('newValue', newValue)
507
- console.log('oldValue', oldValue)
508
- console.log('formModel', formModel)
509
- console.log('---formChange end---')
510
- */
511
- },
512
-
513
- testOnAppendButtonClick(clickedWidget) {
514
- console.log('test', clickedWidget);
515
- },
516
-
517
- testOnButtonClick(button) {
518
- console.log('test', button);
519
- },
520
-
521
- findWidgetById(wId) {
522
- let foundW = null;
523
- baseRefUtil.traverseAllWidgets(this.designer.widgetList, w => {
524
- if (w.id === wId) {
525
- foundW = w;
526
- }
527
- });
528
-
529
- return foundW;
530
- },
531
-
532
- onNodeTreeClick(nodeData, node, nodeEl) {
533
- //console.log('test', JSON.stringify(nodeData))
534
-
535
- if (nodeData.selectable !== undefined && !nodeData.selectable) {
536
- this.$message.info(this.i18nt('designer.hint.currentNodeCannotBeSelected'));
537
- } else {
538
- const selectedId = nodeData.id;
539
- const foundW = this.findWidgetById(selectedId);
540
- if (!!foundW) {
541
- this.designer.setSelected(foundW);
542
- }
543
- }
544
- },
545
- initSearchCondition() {
546
- let formConfig = this.designer.formConfig;
547
- let gridConfig = formConfig.gridConfig || {};
548
- let searchFields = gridConfig.searchFields || [];
549
- searchFields = searchFields.filter(item => {
550
- return !!item.prop && !!item.label;
551
- });
552
- this.searchFields = searchFields;
553
- },
554
- createColumns() {
555
- let formConfig = this.designer.formConfig;
556
- let gridConfig = formConfig.gridConfig || {};
557
- let tableColumns = gridConfig.tableColumns || [];
558
- if (tableColumns.length) {
559
- return tableColumns.map((row, index) => {
560
- let column = {
561
- title: row.label,
562
- field: row.prop,
563
- width: 150
564
- }
565
- if (index === 0) {
566
- column.fixed = 'left';
567
- }
568
- return column;
569
- })
570
- } else {
571
- let formTemplateTableDTOs = this.getFormTemplateTableDTOs();
572
- let formTemplateTableDTO = formTemplateTableDTOs.find(item => item.tableType == 0);
573
- let formInsListFieldDTOs = [];
574
- if (formTemplateTableDTO) {
575
- formInsListFieldDTOs = formTemplateTableDTO.formTemplateFieldDTOs || [];
576
- }
577
- return formInsListFieldDTOs.map(row => {
578
- return {
579
- title: row.fieldDesc,
580
- field: row.fieldName,
581
- width: 150
582
- }
583
- })
584
- }
585
- }
586
- }
587
- };
588
-
589
- export default modules;
1
+ import {
2
+ deepClone,
3
+ copyToClipboard,
4
+ generateId,
5
+ getQueryParam,
6
+ traverseAllWidgets,
7
+ addWindowResizeHandler,
8
+ } from "../../../../components/xform/utils/util";
9
+ import i18n from "../../../../components/xform/utils/i18n";
10
+ import { generateCode } from "../../../../components/xform/utils/code-generator";
11
+ import { genSFC } from "../../../../components/xform/utils/sfc-generator";
12
+ import loadBeautifier from "../../../../components/xform/utils/beautifierLoader";
13
+ import { saveAs } from "file-saver";
14
+ import axios from "axios";
15
+
16
+ let modules = {};
17
+ const baseRefUtil = {
18
+ i18n,
19
+ generateCode,
20
+ genSFC,
21
+ loadBeautifier,
22
+ saveAs,
23
+ axios,
24
+ deepClone,
25
+ copyToClipboard,
26
+ generateId,
27
+ getQueryParam,
28
+ traverseAllWidgets,
29
+ addWindowResizeHandler,
30
+ };
31
+
32
+ modules = {
33
+ mixins: [baseRefUtil.i18n],
34
+ props: {
35
+ designer: Object,
36
+ },
37
+ inject: [
38
+ "getDesignerConfig",
39
+ "saveReportTemplate",
40
+ "getReportTemplate",
41
+ "getFormTemplateTableDTOs",
42
+ "readonly",
43
+ ],
44
+ data() {
45
+ return {
46
+ designerConfig: this.getDesignerConfig(),
47
+ showRender: true,
48
+ toolbarWidth: 600,
49
+ showPreviewDialogFlag: false,
50
+ showImportJsonDialogFlag: false,
51
+ showExportJsonDialogFlag: false,
52
+ showExportCodeDialogFlag: false,
53
+ showFormDataDialogFlag: false,
54
+ showExportSFCDialogFlag: false,
55
+ showNodeTreeDrawerFlag: false,
56
+
57
+ nodeTreeData: [],
58
+
59
+ testFunc: "",
60
+ importTemplate: "",
61
+ jsonContent: "",
62
+ jsonRawContent: "",
63
+
64
+ formDataJson: "",
65
+ formDataRawJson: "",
66
+
67
+ vueCode: "",
68
+ htmlCode: "",
69
+
70
+ sfcCode: "",
71
+ sfcCodeV3: "",
72
+
73
+ activeCodeTab: "vue",
74
+ activeSFCTab: "vue2",
75
+
76
+ testFormData: {},
77
+ testOptionData: {},
78
+
79
+ activeName: "first",
80
+ formInsListFieldDTOs: [],
81
+ vxeOption: {},
82
+ formData: {},
83
+ showFormConfigDialog: false,
84
+ };
85
+ },
86
+ computed: {
87
+ formJson() {
88
+ return {
89
+ // widgetList: this.designer.widgetList,
90
+ // formConfig: this.designer.formConfig
91
+
92
+ widgetList: baseRefUtil.deepClone(this.designer.widgetList),
93
+ formConfig: baseRefUtil.deepClone(this.designer.formConfig),
94
+ };
95
+ },
96
+
97
+ undoDisabled() {
98
+ return !this.designer.undoEnabled();
99
+ },
100
+
101
+ redoDisabled() {
102
+ return !this.designer.redoEnabled();
103
+ },
104
+
105
+ layoutType() {
106
+ return this.designer.getLayoutType();
107
+ },
108
+ },
109
+ watch: {
110
+ "designer.widgetList": {
111
+ deep: true,
112
+ handler(val) {
113
+ //console.log('test-----', val)
114
+ //this.refreshNodeTree()
115
+ },
116
+ },
117
+ },
118
+ mounted() {
119
+ let maxTBWidth = this.designerConfig.toolbarMaxWidth || 380;
120
+ let minTBWidth = this.designerConfig.toolbarMinWidth || 300;
121
+ let newTBWidth = window.innerWidth - 260 - 300 - 320 - 80;
122
+ //this.toolbarWidth = newTBWidth >= maxTBWidth ? maxTBWidth : newTBWidth <= minTBWidth ? minTBWidth : newTBWidth;
123
+ this.winResizeUnbind = baseRefUtil.addWindowResizeHandler(() => {
124
+ this.$nextTick(() => {
125
+ let newTBWidth2 = window.innerWidth - 260 - 300 - 320 - 80;
126
+ //this.toolbarWidth = newTBWidth2 >= maxTBWidth ? maxTBWidth : newTBWidth2 <= minTBWidth ? minTBWidth :
127
+ newTBWidth2;
128
+ });
129
+ });
130
+ },
131
+ beforeDestroy() {
132
+ // window 级监听持有本实例,销毁时必须解绑,否则工具栏面板整树泄露
133
+ if (this.winResizeUnbind) {
134
+ this.winResizeUnbind();
135
+ this.winResizeUnbind = null;
136
+ }
137
+ },
138
+ methods: {
139
+ showToolButton(configName) {
140
+ if (this.designerConfig[configName] === undefined) {
141
+ return true;
142
+ }
143
+
144
+ return !!this.designerConfig[configName];
145
+ },
146
+
147
+ buildTreeNodeOfWidget(widget, treeNode) {
148
+ let curNode = {
149
+ id: widget.id,
150
+ label: widget.options.label || widget.type,
151
+ //selectable: true,
152
+ };
153
+ treeNode.push(curNode);
154
+
155
+ if (widget.category === undefined) {
156
+ return;
157
+ }
158
+
159
+ curNode.children = [];
160
+ if (widget.type === "grid") {
161
+ widget.cols.map((col) => {
162
+ let colNode = {
163
+ id: col.id,
164
+ label: col.options.name || widget.type,
165
+ children: [],
166
+ };
167
+ curNode.children.push(colNode);
168
+ col.widgetList.map((wChild) => {
169
+ this.buildTreeNodeOfWidget(wChild, colNode.children);
170
+ });
171
+ });
172
+ } else if (widget.type === "table") {
173
+ //TODO: 需要考虑合并单元格!!
174
+ widget.rows.map((row) => {
175
+ let rowNode = {
176
+ id: row.id,
177
+ label: "table-row",
178
+ selectable: false,
179
+ children: [],
180
+ };
181
+ curNode.children.push(rowNode);
182
+
183
+ row.cols.map((cell) => {
184
+ if (!!cell.merged) {
185
+ //跳过合并单元格!!
186
+ return;
187
+ }
188
+
189
+ let rowChildren = rowNode.children;
190
+ let cellNode = {
191
+ id: cell.id,
192
+ label: "table-cell",
193
+ children: [],
194
+ };
195
+ rowChildren.push(cellNode);
196
+
197
+ cell.widgetList.map((wChild) => {
198
+ this.buildTreeNodeOfWidget(wChild, cellNode.children);
199
+ });
200
+ });
201
+ });
202
+ } else if (widget.type === "h5-table") {
203
+ //TODO: 需要考虑合并单元格!!
204
+ widget.rows.map((row) => {
205
+ let rowNode = {
206
+ id: row.id,
207
+ label: "table-row",
208
+ selectable: false,
209
+ children: [],
210
+ };
211
+ curNode.children.push(rowNode);
212
+
213
+ row.cols.map((cell) => {
214
+ if (!!cell.merged) {
215
+ //跳过合并单元格!!
216
+ return;
217
+ }
218
+
219
+ let rowChildren = rowNode.children;
220
+ let cellNode = {
221
+ id: cell.id,
222
+ label: "table-cell",
223
+ children: [],
224
+ };
225
+ rowChildren.push(cellNode);
226
+
227
+ cell.widgetList.map((wChild) => {
228
+ this.buildTreeNodeOfWidget(wChild, cellNode.children);
229
+ });
230
+ });
231
+ });
232
+ } else if (widget.type === "tab") {
233
+ widget.tabs.map((tab) => {
234
+ let tabNode = {
235
+ id: tab.id,
236
+ label: tab.options.name || widget.type,
237
+ selectable: false,
238
+ children: [],
239
+ };
240
+ curNode.children.push(tabNode);
241
+ tab.widgetList.map((wChild) => {
242
+ this.buildTreeNodeOfWidget(wChild, tabNode.children);
243
+ });
244
+ });
245
+ } else if (widget.type === "sub-form") {
246
+ widget.widgetList.map((wChild) => {
247
+ this.buildTreeNodeOfWidget(wChild, curNode.children);
248
+ });
249
+ } else if (widget.category === "container") {
250
+ //自定义容器
251
+ widget.widgetList.map((wChild) => {
252
+ this.buildTreeNodeOfWidget(wChild, curNode.children);
253
+ });
254
+ }
255
+ },
256
+
257
+ refreshNodeTree() {
258
+ this.nodeTreeData.length = 0;
259
+ this.designer.widgetList.forEach((wItem) => {
260
+ this.buildTreeNodeOfWidget(wItem, this.nodeTreeData);
261
+ });
262
+ },
263
+
264
+ showNodeTreeDrawer() {
265
+ this.refreshNodeTree();
266
+ this.showNodeTreeDrawerFlag = true;
267
+ this.$nextTick(() => {
268
+ if (!!this.designer.selectedId) {
269
+ //同步当前选中组件到节点树!!!
270
+ this.$refs.nodeTree.setCurrentKey(this.designer.selectedId);
271
+ }
272
+ });
273
+ },
274
+
275
+ undoHistory() {
276
+ this.designer.undoHistoryStep();
277
+ },
278
+
279
+ redoHistory() {
280
+ this.designer.redoHistoryStep();
281
+ },
282
+
283
+ changeLayoutType(newType) {
284
+ this.designer.changeLayoutType(newType);
285
+ this.$emit("loadWidgets");
286
+ },
287
+
288
+ clearFormWidget() {
289
+ this.designer.clearDesigner(),
290
+ this.designer.formWidget.clearWidgetRefList(),
291
+ this.designer.emitEvent("form-json-imported", []);
292
+ this.$emit("loadWidgets");
293
+ },
294
+
295
+ previewForm() {
296
+ this.reportTemplate = this.getReportTemplate();
297
+ this.showPreviewDialogFlag = true;
298
+ this.activeName = "first";
299
+ },
300
+
301
+ saveAsFile(fileContent, defaultFileName) {
302
+ this.$prompt(
303
+ this.i18nt("designer.hint.fileNameForSave"),
304
+ this.i18nt("designer.hint.saveFileTitle"),
305
+ {
306
+ inputValue: defaultFileName,
307
+ closeOnClickModal: false,
308
+ inputPlaceholder: this.i18nt(
309
+ "designer.hint.fileNameInputPlaceholder"
310
+ ),
311
+ }
312
+ )
313
+ .then(({ value }) => {
314
+ if (!value) {
315
+ value = defaultFileName;
316
+ }
317
+
318
+ if (baseRefUtil.getQueryParam("vscode") == 1) {
319
+ this.vsSaveFile(value, fileContent);
320
+ return;
321
+ }
322
+
323
+ const fileBlob = new Blob([fileContent], {
324
+ type: "text/plain;charset=utf-8",
325
+ });
326
+ baseRefUtil.saveAs(fileBlob, value);
327
+ })
328
+ .catch(() => {
329
+ //
330
+ });
331
+ },
332
+
333
+ vsSaveFile(fileName, fileContent) {
334
+ const msgObj = {
335
+ cmd: "writeFile",
336
+ data: {
337
+ fileName,
338
+ code: fileContent,
339
+ },
340
+ };
341
+ window.parent.postMessage(msgObj, "*");
342
+ },
343
+
344
+ importJson() {
345
+ this.importTemplate = JSON.stringify(
346
+ this.designer.getImportTemplate(),
347
+ null,
348
+ " "
349
+ );
350
+ this.showImportJsonDialogFlag = true;
351
+ },
352
+ doJsonImport() {
353
+ try {
354
+ let importObj = JSON.parse(this.importTemplate);
355
+ this.designer.handleImportJson(importObj);
356
+ this.designer.loadFormJson(importObj);
357
+
358
+ this.showImportJsonDialogFlag = false;
359
+ this.$message.success(this.i18nt("designer.hint.importJsonSuccess"));
360
+
361
+ this.designer.emitHistoryChange();
362
+
363
+ this.designer.emitEvent("form-json-imported", []);
364
+ } catch (ex) {
365
+ this.$message.error(ex + "");
366
+ }
367
+ },
368
+
369
+ exportJson() {
370
+ let widgetList = baseRefUtil.deepClone(this.designer.widgetList);
371
+ let formConfig = baseRefUtil.deepClone(this.designer.formConfig);
372
+ let formCode = this.designer?.vueInstance?.reportTemplate?.formCode;
373
+ if (formCode) {
374
+ formConfig.formCode = formCode;
375
+ }
376
+ this.jsonContent = JSON.stringify(
377
+ {
378
+ widgetList,
379
+ formConfig,
380
+ },
381
+ null,
382
+ " "
383
+ );
384
+ this.jsonRawContent = JSON.stringify({
385
+ widgetList,
386
+ formConfig,
387
+ });
388
+ this.showExportJsonDialogFlag = true;
389
+ },
390
+
391
+ copyFormJson(e) {
392
+ baseRefUtil.copyToClipboard(
393
+ this.jsonRawContent,
394
+ e,
395
+ this.$message,
396
+ this.i18nt("designer.hint.copyJsonSuccess"),
397
+ this.i18nt("designer.hint.copyJsonFail")
398
+ );
399
+ },
400
+
401
+ saveFormJson() {
402
+ this.saveAsFile(
403
+ this.jsonContent,
404
+ `vform${baseRefUtil.generateId()}.json`
405
+ );
406
+ },
407
+
408
+ exportCode() {
409
+ this.vueCode = baseRefUtil.generateCode(this.formJson);
410
+ this.htmlCode = baseRefUtil.generateCode(this.formJson, "html");
411
+ this.showExportCodeDialogFlag = true;
412
+ },
413
+
414
+ copyVueCode(e) {
415
+ baseRefUtil.copyToClipboard(
416
+ this.vueCode,
417
+ e,
418
+ this.$message,
419
+ this.i18nt("designer.hint.copyVueCodeSuccess"),
420
+ this.i18nt("designer.hint.copyVueCodeFail")
421
+ );
422
+ },
423
+
424
+ copyHtmlCode(e) {
425
+ baseRefUtil.copyToClipboard(
426
+ this.htmlCode,
427
+ e,
428
+ this.$message,
429
+ this.i18nt("designer.hint.copyHtmlCodeSuccess"),
430
+ this.i18nt("designer.hint.copyHtmlCodeFail")
431
+ );
432
+ },
433
+
434
+ saveVueCode() {
435
+ this.saveAsFile(this.vueCode, `vform${baseRefUtil.generateId()}.vue`);
436
+ },
437
+
438
+ saveHtmlCode() {
439
+ this.saveAsFile(this.htmlCode, `vform${baseRefUtil.generateId()}.html`);
440
+ },
441
+
442
+ generateSFC() {
443
+ baseRefUtil.loadBeautifier((beautifier) => {
444
+ this.sfcCode = baseRefUtil.genSFC(
445
+ this.designer.formConfig,
446
+ this.designer.widgetList,
447
+ beautifier
448
+ );
449
+ this.sfcCodeV3 = baseRefUtil.genSFC(
450
+ this.designer.formConfig,
451
+ this.designer.widgetList,
452
+ beautifier,
453
+ true
454
+ );
455
+ this.showExportSFCDialogFlag = true;
456
+ });
457
+ },
458
+
459
+ copyV2SFC(e) {
460
+ baseRefUtil.copyToClipboard(
461
+ this.sfcCode,
462
+ e,
463
+ this.$message,
464
+ this.i18nt("designer.hint.copySFCSuccess"),
465
+ this.i18nt("designer.hint.copySFCFail")
466
+ );
467
+ },
468
+
469
+ copyV3SFC(e) {
470
+ baseRefUtil.copyToClipboard(
471
+ this.sfcCodeV3,
472
+ e,
473
+ this.$message,
474
+ this.i18nt("designer.hint.copySFCSuccess"),
475
+ this.i18nt("designer.hint.copySFCFail")
476
+ );
477
+ },
478
+
479
+ saveV2SFC() {
480
+ this.saveAsFile(this.sfcCode, `vformV2-${baseRefUtil.generateId()}.vue`);
481
+ },
482
+
483
+ saveV3SFC() {
484
+ this.saveAsFile(
485
+ this.sfcCodeV3,
486
+ `vformV3-${baseRefUtil.generateId()}.vue`
487
+ );
488
+ },
489
+
490
+ getFormData() {
491
+ this.$refs["preForm"]
492
+ .getFormData()
493
+ .then((formData) => {
494
+ this.formDataJson = JSON.stringify(formData, null, " ");
495
+ this.formDataRawJson = JSON.stringify(formData);
496
+
497
+ this.showFormDataDialogFlag = true;
498
+ })
499
+ .catch((error) => {
500
+ this.$message.error(error);
501
+ });
502
+ },
503
+
504
+ copyFormDataJson(e) {
505
+ baseRefUtil.copyToClipboard(
506
+ this.formDataRawJson,
507
+ e,
508
+ this.$message,
509
+ this.i18nt("designer.hint.copyJsonSuccess"),
510
+ this.i18nt("designer.hint.copyJsonFail")
511
+ );
512
+ },
513
+
514
+ saveFormData() {
515
+ this.saveAsFile(
516
+ this.htmlCode,
517
+ `formData${baseRefUtil.generateId()}.json`
518
+ );
519
+ },
520
+
521
+ resetForm() {
522
+ this.$refs["preForm"].resetForm();
523
+ },
524
+
525
+ setFormDisabled() {
526
+ this.$refs["preForm"].disableForm();
527
+ },
528
+
529
+ setFormEnabled() {
530
+ this.$refs["preForm"].enableForm();
531
+ },
532
+
533
+ printFormJson() {
534
+ let tmpFS = {
535
+ widgetList: baseRefUtil.deepClone(this.designer.widgetList),
536
+ formConfig: baseRefUtil.deepClone(this.designer.formConfig),
537
+ };
538
+
539
+ console.log(tmpFS);
540
+ },
541
+
542
+ testValidate() {
543
+ console.log("test===", this.$refs["preForm"].validateForm());
544
+ },
545
+
546
+ testSetFormData() {
547
+ // let fData = {
548
+ // 'fuTest': [
549
+ // {
550
+ // name: '上传文件测试.xlsx',
551
+ // url: 'https://www.vform666.com/123.xlsx'
552
+ // }
553
+ // ]
554
+ // }
555
+ // this.$refs['preForm'].setFormData(fData)
556
+
557
+ let nfData = {
558
+ checkbox45524: [1, 2],
559
+ };
560
+ this.$refs["preForm"].setFormData(nfData);
561
+ },
562
+
563
+ handleFormChange(fieldName, newValue, oldValue, formModel) {
564
+ /*
565
+ console.log('---formChange start---')
566
+ console.log('fieldName', fieldName)
567
+ console.log('newValue', newValue)
568
+ console.log('oldValue', oldValue)
569
+ console.log('formModel', formModel)
570
+ console.log('---formChange end---')
571
+ */
572
+ },
573
+
574
+ testOnAppendButtonClick(clickedWidget) {
575
+ console.log("test", clickedWidget);
576
+ },
577
+
578
+ testOnButtonClick(button) {
579
+ console.log("test", button);
580
+ },
581
+
582
+ findWidgetById(wId) {
583
+ let foundW = null;
584
+ baseRefUtil.traverseAllWidgets(this.designer.widgetList, (w) => {
585
+ if (w.id === wId) {
586
+ foundW = w;
587
+ }
588
+ });
589
+
590
+ return foundW;
591
+ },
592
+
593
+ onNodeTreeClick(nodeData, node, nodeEl) {
594
+ //console.log('test', JSON.stringify(nodeData))
595
+
596
+ if (nodeData.selectable !== undefined && !nodeData.selectable) {
597
+ this.$message.info(
598
+ this.i18nt("designer.hint.currentNodeCannotBeSelected")
599
+ );
600
+ } else {
601
+ const selectedId = nodeData.id;
602
+ const foundW = this.findWidgetById(selectedId);
603
+ if (!!foundW) {
604
+ this.designer.setSelected(foundW);
605
+ }
606
+ }
607
+ },
608
+ initSearchCondition() {
609
+ let formConfig = this.designer.formConfig;
610
+ let gridConfig = formConfig.gridConfig || {};
611
+ let searchFields = gridConfig.searchFields || [];
612
+ searchFields = searchFields.filter((item) => {
613
+ return !!item.prop && !!item.label;
614
+ });
615
+ this.searchFields = searchFields;
616
+ },
617
+ createColumns() {
618
+ let formConfig = this.designer.formConfig;
619
+ let gridConfig = formConfig.gridConfig || {};
620
+ let tableColumns = gridConfig.tableColumns || [];
621
+ if (tableColumns.length) {
622
+ return tableColumns.map((row, index) => {
623
+ let column = {
624
+ title: row.label,
625
+ field: row.prop,
626
+ width: 150,
627
+ };
628
+ if (index === 0) {
629
+ column.fixed = "left";
630
+ }
631
+ return column;
632
+ });
633
+ } else {
634
+ let formTemplateTableDTOs = this.getFormTemplateTableDTOs();
635
+ let formTemplateTableDTO = formTemplateTableDTOs.find(
636
+ (item) => item.tableType == 0
637
+ );
638
+ let formInsListFieldDTOs = [];
639
+ if (formTemplateTableDTO) {
640
+ formInsListFieldDTOs =
641
+ formTemplateTableDTO.formTemplateFieldDTOs || [];
642
+ }
643
+ return formInsListFieldDTOs.map((row) => {
644
+ return {
645
+ title: row.fieldDesc,
646
+ field: row.fieldName,
647
+ width: 150,
648
+ };
649
+ });
650
+ }
651
+ },
652
+ },
653
+ };
654
+
655
+ export default modules;