cloud-web-corejs 1.1.0-dev.6 → 1.1.0-dev.61

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 (499) hide show
  1. package/README.md +38 -0
  2. package/bin/core-resources.js +16 -0
  3. package/bin/create-child-app.js +34 -0
  4. package/docs/child-app/README.md +95 -0
  5. package/docs/child-app/activiti-resources.md +63 -0
  6. package/docs/child-app/generate-prompt.md +55 -0
  7. package/docs/child-app/luckysheet-resources.md +80 -0
  8. package/docs/child-app/public-resources-plan.md +288 -0
  9. package/docs/child-app/resources-implementation.md +101 -0
  10. package/docs/child-app/tinymce-resources.md +88 -0
  11. package/docs/child-app/validation.md +34 -0
  12. package/docs/qiankun/346/216/245/345/205/245/345/215/217/350/256/256.md +298 -0
  13. package/docs/qiankun/350/257/246/346/203/205/346/211/277/350/275/275/345/255/220/345/272/224/347/224/250/345/257/271/346/216/245/346/270/205/345/215/225.md +111 -0
  14. package/package.json +29 -4
  15. package/resource-tools/index.js +126 -0
  16. package/src/app-bootstrap.js +531 -0
  17. package/src/app-bootstrap.sync.js +502 -0
  18. package/src/boot-assets.legacy.js +13 -0
  19. package/src/boot-assets.next.js +7 -0
  20. package/src/components/Qrcode/fileParse.vue +11 -0
  21. package/src/components/Tinymce/dynamicLoadScript.js +51 -59
  22. package/src/components/Tinymce/index.vue +382 -336
  23. package/src/components/Tinymce/mce-chrome.scss +150 -0
  24. package/src/components/VabUpload/image-viewer.vue +18 -10
  25. package/src/components/VabUpload/index.js +11 -4
  26. package/src/components/VabUpload/index.vue +1 -1
  27. package/src/components/VabUpload/mixins/fileLibraryDialog.js +2 -0
  28. package/src/components/VabUpload/mixins.js +72 -40
  29. package/src/components/VabUpload/partUploadConfig.js +95 -0
  30. package/src/components/VabUpload/privateProfileDialogMixins.js +2 -0
  31. package/src/components/VabUpload/style.scss +282 -0
  32. package/src/components/VabUpload/view.vue +19 -18
  33. package/src/components/baseArea/index.vue +2 -2
  34. package/src/components/baseInputExport/mixins.js +1 -6
  35. package/src/components/bizTab/BizTabListPage.vue +66 -33
  36. package/src/components/bizTab/README.md +3 -1
  37. package/src/components/bizTab/bizBillDetailMixin.js +2 -0
  38. package/src/components/code-editor/ace-chrome.scss +17 -0
  39. package/src/components/code-editor/index.vue +361 -340
  40. package/src/components/errorMsg/index.vue +142 -13
  41. package/src/components/errorMsg/mixins.js +53 -0
  42. package/src/components/excelExport/conditionExportConfig.js +112 -0
  43. package/src/components/excelExport/exportColumnMemory.js +118 -0
  44. package/src/components/excelExport/exportFieldDialog.vue +50 -38
  45. package/src/components/excelExport/exportType.js +8 -0
  46. package/src/components/excelExport/index.js +30 -13
  47. package/src/components/excelExport/index.vue +7 -1
  48. package/src/components/excelExport/mixins.js +782 -293
  49. package/src/components/excelImport/index.vue +156 -156
  50. package/src/components/excelImport/mixins.js +888 -834
  51. package/src/components/fileLibrary/mixins/indexMixins.js +2 -0
  52. package/src/components/fileLibrary/style.scss +579 -0
  53. package/src/components/formDialog/index.vue +11 -8
  54. package/src/components/hiprint/style.scss +188 -0
  55. package/src/components/hiprint/view/json-view.vue +4 -4
  56. package/src/components/jdPrint/mixins.js +2 -0
  57. package/src/components/jsonImport/index.vue +1 -1
  58. package/src/components/jsonImport/mixins.js +6 -10
  59. package/src/components/langImport/index.vue +1 -1
  60. package/src/components/langImport/mixins.js +6 -10
  61. package/src/components/luckysheet/loadResources.js +64 -0
  62. package/src/components/luckysheet/view.vue +239 -210
  63. package/src/components/mobile/buttonGroup/index.vue +1 -1
  64. package/src/components/mobile/wf/addTaskUserdialog.vue +100 -80
  65. package/src/components/mobile/wf/content.vue +1734 -1662
  66. package/src/components/mobile/wf/deleteTaskUserDialog.vue +73 -54
  67. package/src/components/mobile/wf/selectUserDialog.vue +118 -0
  68. package/src/components/mobile/wf/setCandidateDialog.vue +69 -48
  69. package/src/components/mobile/wf/urgingDialog.vue +75 -52
  70. package/src/components/mobile/wf/wfModifyDialog.vue +4 -0
  71. package/src/components/obsUpload/index.js +4 -1
  72. package/src/components/obsUpload/index.vue +1 -1
  73. package/src/components/obsUpload/mixins.js +45 -15
  74. package/src/components/onlineTalk/index.vue +4 -4
  75. package/src/components/onlineTalk/mixins.js +21 -7
  76. package/src/components/table/index.js +96 -81
  77. package/src/components/table/plugins/cell-area/index.js +10 -3
  78. package/src/components/table/style.scss +1399 -0
  79. package/src/components/table/vxeFilter/mixin.js +28 -18
  80. package/src/components/wf/content.vue +3 -2
  81. package/src/components/wf/content2.vue +1 -1
  82. package/src/components/wf/style.scss +265 -0
  83. package/src/components/wf/wf.js +7 -0
  84. package/src/components/wf/wfActionItems.js +3 -0
  85. package/src/components/wf/wfStartDialog.vue +1 -0
  86. package/src/components/wf/wfTransferEnabled.js +54 -0
  87. package/src/components/wf/wfUtil.js +47 -29
  88. package/src/components/wf/wfVisibility.js +6 -0
  89. 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" +64 -57
  90. package/src/components/xform/docs/2026-08 xform H5 P0 /345/256/236/347/216/260/350/247/204/346/240/274.md" +1 -1
  91. package/src/components/xform/docs/2026-08 xform /347/247/273/345/212/250/347/253/257/345/270/203/345/261/200/345/257/271/351/275/220 bill_setting /346/226/271/346/241/210.md" +1 -1
  92. package/src/components/xform/docs/2026-09 /345/212/250/346/200/201/345/255/227/346/256/265/350/247/204/345/210/231/344/270/216/346/265/201/347/250/213/346/216/247/345/210/266/346/211/247/350/241/214/351/241/272/345/272/217/350/220/275/345/234/260/346/226/271/346/241/210.md" +409 -0
  93. package/src/components/xform/docs/2026-09 /346/235/241/344/273/266/345/257/274/345/207/272/345/244/247/346/225/260/346/215/256/351/207/217/345/264/251/346/272/203/346/216/222/346/237/245.md" +389 -0
  94. package/src/components/xform/docs/2026-09 /346/265/217/350/247/210/345/231/250/345/264/251/346/272/203/346/262/273/347/220/206P0/344/273/243/347/240/201/350/257/204/345/256/241.md" +255 -0
  95. package/src/components/xform/docs/2026-09 /346/265/217/350/247/210/345/231/250/345/264/251/346/272/203/346/262/273/347/220/206P0/346/265/213/350/257/225/351/252/214/350/257/201/345/256/236/346/226/275/346/226/207/346/241/243.md" +595 -0
  96. package/src/components/xform/docs/2026-09 /347/274/226/350/276/221/350/241/250/350/241/214/345/206/205/344/277/235/345/255/230/346/240/241/351/252/214/350/214/203/345/233/264/344/270/216/345/210/227/345/277/205/345/241/253/350/247/243/346/236/220/344/277/256/345/244/215.md" +233 -0
  97. package/src/components/xform/docs/2026-09 /350/241/250/345/215/225/345/257/274/345/205/245/351/200/232/351/201/223/346/242/263/347/220/206/344/270/216/350/220/275/345/234/260/346/226/271/346/241/210.md" +745 -0
  98. package/src/components/xform/docs//346/265/217/350/247/210/345/231/250/345/264/251/346/272/203/346/262/273/347/220/206/344/270/216/344/277/256/345/244/215/350/220/275/345/234/260/346/226/271/346/241/210.md +324 -0
  99. package/src/components/xform/form-designer/designer.js +2133 -2100
  100. package/src/components/xform/form-designer/form-widget/container-widget/data-table-mixin.js +7 -0
  101. package/src/components/xform/form-designer/form-widget/container-widget/data-table-widget.vue +4 -2
  102. package/src/components/xform/form-designer/form-widget/container-widget/detail-h5-widget.vue +243 -227
  103. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-pane-widget.vue +228 -207
  104. package/src/components/xform/form-designer/form-widget/container-widget/h5-card-widget.vue +165 -136
  105. package/src/components/xform/form-designer/form-widget/dialog/formDialog.vue +30 -4
  106. package/src/components/xform/form-designer/form-widget/dialog/importDialog.vue +190 -185
  107. package/src/components/xform/form-designer/form-widget/dialog/importDialogMixin.js +2657 -1774
  108. package/src/components/xform/form-designer/form-widget/dialog/searchFormDialog.vue +27 -4
  109. package/src/components/xform/form-designer/form-widget/field-widget/a-link-widget.vue +1 -1
  110. package/src/components/xform/form-designer/form-widget/field-widget/a-text-widget.vue +1 -1
  111. package/src/components/xform/form-designer/form-widget/field-widget/area-select-widget.vue +1 -1
  112. package/src/components/xform/form-designer/form-widget/field-widget/autocomplete-widget.vue +1 -1
  113. package/src/components/xform/form-designer/form-widget/field-widget/baseAttachment-widget.vue +1 -1
  114. package/src/components/xform/form-designer/form-widget/field-widget/button-widget.vue +1 -1
  115. package/src/components/xform/form-designer/form-widget/field-widget/cascader-widget.vue +1 -1
  116. package/src/components/xform/form-designer/form-widget/field-widget/census-widget.vue +1 -1
  117. package/src/components/xform/form-designer/form-widget/field-widget/checkbox-widget.vue +1 -1
  118. package/src/components/xform/form-designer/form-widget/field-widget/color-widget.vue +1 -1
  119. package/src/components/xform/form-designer/form-widget/field-widget/copy_button-widget.vue +1 -1
  120. package/src/components/xform/form-designer/form-widget/field-widget/date-range-widget.vue +1 -1
  121. package/src/components/xform/form-designer/form-widget/field-widget/date-widget.vue +1 -1
  122. package/src/components/xform/form-designer/form-widget/field-widget/descriptions-widget.vue +1 -1
  123. package/src/components/xform/form-designer/form-widget/field-widget/divider-widget.vue +1 -1
  124. package/src/components/xform/form-designer/form-widget/field-widget/download-button-widget.vue +1 -1
  125. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-item-widget.vue +1 -1
  126. package/src/components/xform/form-designer/form-widget/field-widget/dropdown-widget.vue +35 -4
  127. package/src/components/xform/form-designer/form-widget/field-widget/echart-bar-widget.vue +1 -1
  128. package/src/components/xform/form-designer/form-widget/field-widget/echart-category-widget.vue +1 -1
  129. package/src/components/xform/form-designer/form-widget/field-widget/echart-pie-widget.vue +1 -1
  130. package/src/components/xform/form-designer/form-widget/field-widget/fieldMixin.js +64 -10
  131. package/src/components/xform/form-designer/form-widget/field-widget/file-upload-widget.vue +1 -1
  132. package/src/components/xform/form-designer/form-widget/field-widget/form-item-wrapper.vue +14 -4
  133. package/src/components/xform/form-designer/form-widget/field-widget/html-text-widget.vue +1 -1
  134. package/src/components/xform/form-designer/form-widget/field-widget/import-button-widget.vue +19 -6
  135. package/src/components/xform/form-designer/form-widget/field-widget/import2-button-widget.vue +1 -1
  136. package/src/components/xform/form-designer/form-widget/field-widget/index.js +10 -1
  137. package/src/components/xform/form-designer/form-widget/field-widget/input-batch-widget.vue +1 -1
  138. package/src/components/xform/form-designer/form-widget/field-widget/input-widget.vue +29 -3
  139. package/src/components/xform/form-designer/form-widget/field-widget/multiSearch-widget.vue +1 -1
  140. package/src/components/xform/form-designer/form-widget/field-widget/news-list-widget.vue +1 -1
  141. package/src/components/xform/form-designer/form-widget/field-widget/number-widget.vue +1 -1
  142. package/src/components/xform/form-designer/form-widget/field-widget/oplog-widget.vue +1 -1
  143. package/src/components/xform/form-designer/form-widget/field-widget/picture-upload-widget.vue +1 -1
  144. package/src/components/xform/form-designer/form-widget/field-widget/print-button-widget.vue +1 -1
  145. package/src/components/xform/form-designer/form-widget/field-widget/print-detail-button-widget.vue +1 -1
  146. package/src/components/xform/form-designer/form-widget/field-widget/project-tag-widget.vue +1 -1
  147. package/src/components/xform/form-designer/form-widget/field-widget/radio-widget.vue +1 -1
  148. package/src/components/xform/form-designer/form-widget/field-widget/rate-widget.vue +1 -1
  149. package/src/components/xform/form-designer/form-widget/field-widget/rich-editor-widget.vue +1 -1
  150. package/src/components/xform/form-designer/form-widget/field-widget/row-col-select-widget.vue +64 -0
  151. package/src/components/xform/form-designer/form-widget/field-widget/save_submit_wf_button-widget.vue +1 -1
  152. package/src/components/xform/form-designer/form-widget/field-widget/script-input-widget.vue +1 -1
  153. package/src/components/xform/form-designer/form-widget/field-widget/search_button-widget.vue +1 -1
  154. package/src/components/xform/form-designer/form-widget/field-widget/select-export-button-widget.vue +1 -1
  155. package/src/components/xform/form-designer/form-widget/field-widget/select-export-item-button-widget.vue +6 -2
  156. package/src/components/xform/form-designer/form-widget/field-widget/select-widget.vue +1 -1
  157. package/src/components/xform/form-designer/form-widget/field-widget/singerSearch-widget.vue +1 -1
  158. package/src/components/xform/form-designer/form-widget/field-widget/singleUpload-widget.vue +145 -145
  159. package/src/components/xform/form-designer/form-widget/field-widget/slider-widget.vue +1 -1
  160. package/src/components/xform/form-designer/form-widget/field-widget/static-content-wrapper.vue +1 -1
  161. package/src/components/xform/form-designer/form-widget/field-widget/static-text-widget.vue +1 -1
  162. package/src/components/xform/form-designer/form-widget/field-widget/status-widget.vue +1 -1
  163. package/src/components/xform/form-designer/form-widget/field-widget/switch-widget.vue +1 -1
  164. package/src/components/xform/form-designer/form-widget/field-widget/table-export-button-widget.vue +3 -2
  165. package/src/components/xform/form-designer/form-widget/field-widget/tempStorage-widget.vue +1 -1
  166. package/src/components/xform/form-designer/form-widget/field-widget/text-widget.vue +1 -1
  167. package/src/components/xform/form-designer/form-widget/field-widget/textarea-widget.vue +1 -1
  168. package/src/components/xform/form-designer/form-widget/field-widget/time-range-widget.vue +1 -1
  169. package/src/components/xform/form-designer/form-widget/field-widget/time-widget.vue +1 -1
  170. package/src/components/xform/form-designer/form-widget/field-widget/title-head-widget.vue +1 -1
  171. package/src/components/xform/form-designer/form-widget/field-widget/vabSearch-widget.vue +1 -1
  172. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload-widget.vue +3 -3
  173. package/src/components/xform/form-designer/form-widget/field-widget/vabUpload2-widget.vue +25 -1
  174. package/src/components/xform/form-designer/form-widget/field-widget/vue-page-widget.vue +1 -1
  175. package/src/components/xform/form-designer/indexMixin.js +27 -0
  176. package/src/components/xform/form-designer/setting-panel/form-dynamicField-setting.vue +687 -602
  177. package/src/components/xform/form-designer/setting-panel/form-setting.vue +269 -36
  178. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/data-table-editor.vue +335 -12
  179. package/src/components/xform/form-designer/setting-panel/property-editor/container-data-table/table-column-dialog.vue +23 -7
  180. package/src/components/xform/form-designer/setting-panel/property-editor/container-detail/detail-temp-edito.vue +13 -1
  181. package/src/components/xform/form-designer/setting-panel/property-editor/container-list-h5/list-h5-editor.vue +846 -860
  182. package/src/components/xform/form-designer/setting-panel/property-editor/container-tab/tab-lazyRender-editor.vue +27 -0
  183. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onTabChange-editor.vue +28 -0
  184. package/src/components/xform/form-designer/setting-panel/property-editor/event-handler/onTabClick-editor.vue +28 -0
  185. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import-button-editor.vue +62 -1
  186. package/src/components/xform/form-designer/setting-panel/property-editor/field-import-button/import2-button-editor.vue +142 -2
  187. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/empty-number-input.vue +51 -0
  188. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/select-export-item-button-editor.vue +27 -2
  189. package/src/components/xform/form-designer/setting-panel/property-editor/field-table-export-button/table-export-button-editor.vue +33 -3
  190. package/src/components/xform/form-designer/setting-panel/property-editor/project-tag-editor.vue +2 -4
  191. package/src/components/xform/form-designer/setting-panel/property-editor/suffixIconClickable-editor.vue +23 -0
  192. package/src/components/xform/form-designer/setting-panel/propertyRegister.js +18 -4
  193. package/src/components/xform/form-designer/toolbar-panel/index.vue +884 -874
  194. package/src/components/xform/form-designer/toolbar-panel/indexMixin.js +13 -0
  195. package/src/components/xform/form-designer/widget-panel/index.vue +11 -7
  196. package/src/components/xform/form-designer/widget-panel/indexMixin.js +15 -2
  197. package/src/components/xform/form-designer/widget-panel/widgetsConfig.js +152 -9
  198. package/src/components/xform/form-render/container-item/containerItemMixin.js +93 -8
  199. package/src/components/xform/form-render/container-item/data-table-item.vue +352 -347
  200. package/src/components/xform/form-render/container-item/data-table-mixin.js +7261 -5985
  201. package/src/components/xform/form-render/container-item/detail-h5-item.vue +48 -19
  202. package/src/components/xform/form-render/container-item/detail-item.vue +350 -446
  203. package/src/components/xform/form-render/container-item/dynamicFieldMixin.js +55 -1
  204. package/src/components/xform/form-render/container-item/list-h5-item.vue +261 -178
  205. package/src/components/xform/form-render/container-item/panel-item.vue +1 -1
  206. package/src/components/xform/form-render/container-item/tab-item.vue +177 -129
  207. package/src/components/xform/form-render/fieldControlEngine.js +218 -0
  208. package/src/components/xform/form-render/fieldControlMixin.js +536 -0
  209. package/src/components/xform/form-render/index.vue +164 -153
  210. package/src/components/xform/form-render/indexMixin.js +5443 -5311
  211. package/src/components/xform/form-render/pageDialogScope.js +54 -0
  212. package/src/components/xform/icon-picker/index.vue +1 -1
  213. package/src/components/xform/lang/en-US.js +8 -0
  214. package/src/components/xform/lang/zh-CN.js +9 -0
  215. package/src/components/xform/mixins/businessLock.js +59 -0
  216. package/src/components/xform/mixins/defaultHandle.js +713 -707
  217. package/src/components/xform/mixins/scriptHttp.js +42 -21
  218. package/src/components/xform/mixins/wfStart.js +105 -0
  219. package/src/components/xform/mixins/wfVisibility.js +33 -0
  220. package/src/components/xform/styles/census.scss +288 -0
  221. package/src/components/xform/styles/containers.scss +215 -0
  222. package/src/components/xform/styles/designer.scss +904 -0
  223. package/src/components/xform/styles/detail-temp.scss +71 -0
  224. package/src/components/xform/styles/h5-designer.scss +191 -0
  225. package/src/components/xform/styles/h5-runtime.scss +520 -0
  226. package/src/components/xform/styles/h5.scss +836 -516
  227. package/src/components/xform/styles/skins.scss +398 -0
  228. package/src/components/xform/styles/table-layout.scss +91 -0
  229. package/src/components/xform/styles/titles.scss +255 -0
  230. package/src/components/xform/utils/dynamicSchemaUtil.js +385 -361
  231. package/src/components/xform/utils/fixedQueryUtil.js +29 -4
  232. package/src/components/xform/utils/serviceNameCache.js +69 -0
  233. package/src/components/xform/utils/tableColumnHelper.js +46 -4
  234. package/src/components/xform/utils/util.js +1776 -1708
  235. package/src/core-resources/css/h5.scss +548 -0
  236. package/src/core-resources/css/iconfont.css +1447 -0
  237. package/src/core-resources/font/iconfont.ttf +0 -0
  238. package/src/core-resources/font/iconfont.woff +0 -0
  239. package/src/core-resources/font/iconfont.woff2 +0 -0
  240. package/src/core-resources/images/default-header.png +0 -0
  241. package/src/core-resources/images/ico-default_wenjian.svg +1 -0
  242. package/src/core-resources/images/ico-excel.svg +1 -0
  243. package/src/core-resources/images/ico-ftl.svg +7 -0
  244. package/src/core-resources/images/ico-html.svg +1 -0
  245. package/src/core-resources/images/ico-java.svg +1 -0
  246. package/src/core-resources/images/ico-music.svg +1 -0
  247. package/src/core-resources/images/ico-pdf.svg +1 -0
  248. package/src/core-resources/images/ico-photo.svg +1 -0
  249. package/src/core-resources/images/ico-ppt.svg +1 -0
  250. package/src/core-resources/images/ico-psd.svg +1 -0
  251. package/src/core-resources/images/ico-service.png +0 -0
  252. package/src/core-resources/images/ico-txt.svg +1 -0
  253. package/src/core-resources/images/ico-video.svg +1 -0
  254. package/src/core-resources/images/ico-vue.svg +8 -0
  255. package/src/core-resources/images/ico-wenjianjia.svg +1 -0
  256. package/src/core-resources/images/ico-wrod.svg +1 -0
  257. package/src/core-resources/images/ico-xml.svg +1 -0
  258. package/src/core-resources/images/ico-yasuobao.svg +1 -0
  259. package/src/core-resources/images/icon-error.png +0 -0
  260. package/src/core-resources/images/icon-tips.png +0 -0
  261. package/src/core-resources/images/nodata.png +0 -0
  262. package/src/core-resources/images/nodata2.png +0 -0
  263. package/src/directive/append-to-body/index.js +48 -0
  264. package/src/directive/el-dialog-center/index.js +3 -2
  265. package/src/directive/el-drag-dialog/drag.js +33 -4
  266. package/src/icons/index.js +9 -0
  267. package/src/icons/svg/404.svg +1 -0
  268. package/src/icons/svg/alert.svg +1 -0
  269. package/src/icons/svg/bug.svg +1 -0
  270. package/src/icons/svg/button.svg +1 -0
  271. package/src/icons/svg/card.svg +1 -0
  272. package/src/icons/svg/cascader-field.svg +1 -0
  273. package/src/icons/svg/census.svg +1 -0
  274. package/src/icons/svg/chart.svg +1 -0
  275. package/src/icons/svg/checkbox-field.svg +1 -0
  276. package/src/icons/svg/clipboard.svg +1 -0
  277. package/src/icons/svg/color-field.svg +1 -0
  278. package/src/icons/svg/component.svg +1 -0
  279. package/src/icons/svg/custom-component.svg +1 -0
  280. package/src/icons/svg/dashboard.svg +1 -0
  281. package/src/icons/svg/data-table.svg +1 -0
  282. package/src/icons/svg/date-field.svg +1 -0
  283. package/src/icons/svg/date-range-field.svg +1 -0
  284. package/src/icons/svg/descriptions.svg +1 -0
  285. package/src/icons/svg/divider.svg +1 -0
  286. package/src/icons/svg/document.svg +1 -0
  287. package/src/icons/svg/documentation.svg +1 -0
  288. package/src/icons/svg/drag.svg +1 -0
  289. package/src/icons/svg/echart-category.svg +1 -0
  290. package/src/icons/svg/echart-pie.svg +1 -0
  291. package/src/icons/svg/echart.svg +1 -0
  292. package/src/icons/svg/edit.svg +1 -0
  293. package/src/icons/svg/education.svg +1 -0
  294. package/src/icons/svg/email.svg +1 -0
  295. package/src/icons/svg/example.svg +1 -0
  296. package/src/icons/svg/excel.svg +1 -0
  297. package/src/icons/svg/exit-fullscreen.svg +1 -0
  298. package/src/icons/svg/eye-open.svg +1 -0
  299. package/src/icons/svg/eye.svg +1 -0
  300. package/src/icons/svg/file-upload-field.svg +1 -0
  301. package/src/icons/svg/form.svg +1 -0
  302. package/src/icons/svg/fullscreen.svg +1 -0
  303. package/src/icons/svg/github.svg +1 -0
  304. package/src/icons/svg/grid.svg +1 -0
  305. package/src/icons/svg/guide.svg +1 -0
  306. package/src/icons/svg/html-text.svg +1 -0
  307. package/src/icons/svg/ico-more.svg +1 -0
  308. package/src/icons/svg/ico-wenjianjia.svg +1 -0
  309. package/src/icons/svg/icon.svg +1 -0
  310. package/src/icons/svg/input-batch.svg +1 -0
  311. package/src/icons/svg/international.svg +1 -0
  312. package/src/icons/svg/language.svg +1 -0
  313. package/src/icons/svg/link.svg +1 -0
  314. package/src/icons/svg/list-export.svg +1 -0
  315. package/src/icons/svg/list.svg +1 -0
  316. package/src/icons/svg/lock.svg +1 -0
  317. package/src/icons/svg/message.svg +1 -0
  318. package/src/icons/svg/money.svg +1 -0
  319. package/src/icons/svg/nested.svg +1 -0
  320. package/src/icons/svg/news-list.svg +1 -0
  321. package/src/icons/svg/node-tree.svg +1 -0
  322. package/src/icons/svg/number-field.svg +1 -0
  323. package/src/icons/svg/password.svg +1 -0
  324. package/src/icons/svg/pdf.svg +1 -0
  325. package/src/icons/svg/people.svg +1 -0
  326. package/src/icons/svg/peoples.svg +1 -0
  327. package/src/icons/svg/picture-upload-field.svg +1 -0
  328. package/src/icons/svg/qq.svg +1 -0
  329. package/src/icons/svg/query.svg +1 -0
  330. package/src/icons/svg/radio-field.svg +1 -0
  331. package/src/icons/svg/rate-field.svg +1 -0
  332. package/src/icons/svg/redo.svg +1 -0
  333. package/src/icons/svg/rich-editor-field.svg +1 -0
  334. package/src/icons/svg/search.svg +1 -0
  335. package/src/icons/svg/searchbox.svg +1 -0
  336. package/src/icons/svg/section.svg +1 -0
  337. package/src/icons/svg/select-field.svg +1 -0
  338. package/src/icons/svg/shopping.svg +1 -0
  339. package/src/icons/svg/size.svg +1 -0
  340. package/src/icons/svg/skill.svg +1 -0
  341. package/src/icons/svg/slider-field.svg +1 -0
  342. package/src/icons/svg/slot-component.svg +1 -0
  343. package/src/icons/svg/slot-field.svg +1 -0
  344. package/src/icons/svg/star.svg +1 -0
  345. package/src/icons/svg/static-text.svg +1 -0
  346. package/src/icons/svg/status.svg +1 -0
  347. package/src/icons/svg/sub-form.svg +1 -0
  348. package/src/icons/svg/switch-field.svg +1 -0
  349. package/src/icons/svg/tab.svg +1 -0
  350. package/src/icons/svg/table.svg +1 -0
  351. package/src/icons/svg/text-field.svg +1 -0
  352. package/src/icons/svg/text.svg +1 -0
  353. package/src/icons/svg/textarea-field.svg +1 -0
  354. package/src/icons/svg/theme.svg +1 -0
  355. package/src/icons/svg/time-field.svg +1 -0
  356. package/src/icons/svg/time-range-field.svg +1 -0
  357. package/src/icons/svg/tips-text.svg +1 -0
  358. package/src/icons/svg/title-head.svg +1 -0
  359. package/src/icons/svg/tree-pane.svg +1 -0
  360. package/src/icons/svg/tree-table.svg +1 -0
  361. package/src/icons/svg/tree.svg +1 -0
  362. package/src/icons/svg/undo.svg +1 -0
  363. package/src/icons/svg/uploadbox.svg +1 -0
  364. package/src/icons/svg/user.svg +1 -0
  365. package/src/icons/svg/vf-box.svg +1 -0
  366. package/src/icons/svg/vf-dialog.svg +1 -0
  367. package/src/icons/svg/vf-drawer.svg +1 -0
  368. package/src/icons/svg/vue-sfc.svg +1 -0
  369. package/src/icons/svg/wechat.svg +1 -0
  370. package/src/icons/svg/zip.svg +1 -0
  371. package/src/index.js +2 -510
  372. package/src/index.next.js +5 -0
  373. package/src/index.sync.js +5 -0
  374. package/src/layout/components/Sidebar/default.vue +1656 -1655
  375. package/src/layout/components/TagsView/index.vue +330 -323
  376. package/src/layout/components/TagsView/style.scss +92 -0
  377. package/src/layout/components/watermark/index.vue +1 -1
  378. package/src/layout/defaultLayout.vue +2 -2
  379. package/src/router/index.js +43 -48
  380. package/src/router/modules/customer.js +12 -0
  381. package/src/store/modules/settings.js +1 -1
  382. package/src/store/modules/tagsView.js +241 -217
  383. package/src/store/modules/user.js +16 -12
  384. package/src/styles/btn.scss +315 -0
  385. package/src/styles/dialog.scss +1710 -0
  386. package/src/styles/element-ui.scss +1076 -0
  387. package/src/styles/element-variables.scss +31 -0
  388. package/src/styles/global.scss +115 -0
  389. package/src/styles/index.scss +245 -0
  390. package/src/styles/layout-skins.scss +840 -0
  391. package/src/styles/legacy-base.scss +19 -0
  392. package/src/styles/menu-icons.scss +75 -0
  393. package/src/styles/mixin.scss +80 -0
  394. package/src/styles/nprogress.scss +14 -0
  395. package/src/styles/page-shell.scss +723 -0
  396. package/src/styles/sidebar.scss +296 -0
  397. package/src/styles/split-handle.scss +52 -0
  398. package/src/styles/theme-variables.scss +7 -0
  399. package/src/styles/transition.scss +48 -0
  400. package/src/styles/utilities.scss +253 -0
  401. package/src/styles/variables.scss +72 -0
  402. package/src/utils/baseDictsCache.js +197 -0
  403. package/src/utils/chunkLoadError.js +24 -0
  404. package/src/utils/featureResources.js +57 -0
  405. package/src/utils/importLimit.js +72 -0
  406. package/src/utils/pdfUtil.js +6 -1
  407. package/src/utils/request.js +149 -9
  408. package/src/utils/resolveViewComponent.js +45 -90
  409. package/src/utils/runtimeRecovery.js +105 -0
  410. package/src/utils/swiperLoader.js +20 -0
  411. package/src/utils/vab.js +1334 -1283
  412. package/src/utils/xlsxLoader.js +29 -0
  413. package/src/views/bd/setting/formVersion/compareContMixin.scss +1 -1
  414. package/src/views/bd/setting/form_template/edit.vue +378 -356
  415. package/src/views/bd/setting/form_template/formDesignerDialog.vue +6 -0
  416. package/src/views/bd/setting/form_template/formTemplateType.js +43 -0
  417. package/src/views/bd/setting/form_template/list.vue +304 -303
  418. package/src/views/bd/setting/form_template/mixins/edit.js +344 -280
  419. package/src/views/bd/setting/form_template/mixins/list.js +749 -721
  420. package/src/views/bd/setting/form_template/mixins/list2.js +412 -411
  421. package/src/views/bd/setting/form_template/mixins/wf_list.js +431 -430
  422. package/src/views/mobile/user/area/dialog.vue +1 -1
  423. package/src/views/mobile/user/user/dialog.vue +1 -1
  424. package/src/views/user/bill_setting/mixins/wf.js +8 -0
  425. package/src/views/user/bill_setting/render.vue +1 -1
  426. package/src/views/user/commMenu/index.vue +3 -1
  427. package/src/views/user/commMenu/style.scss +123 -0
  428. package/src/views/user/common_attribute/edit.vue +2 -0
  429. package/src/views/user/common_attribute/itemEdit.vue +2 -0
  430. package/src/views/user/file_view_ins/list.vue +970 -970
  431. package/src/views/user/form/form_template/list.vue +527 -506
  432. package/src/views/user/form/vform/designer.vue +823 -821
  433. package/src/views/user/form/view/list.vue +24 -1
  434. package/src/views/user/home/default.vue +1124 -1117
  435. package/src/views/user/home/default2.vue +12 -8
  436. package/src/views/user/home/index.vue +102 -102
  437. package/src/views/user/home/wjl/content.vue +1581 -1569
  438. package/src/views/user/intf_permission/edit.vue +230 -0
  439. package/src/views/user/intf_permission/list.vue +196 -0
  440. package/src/views/user/menuFallback/index.vue +23 -0
  441. package/src/views/user/notify_message/dialog.vue +139 -139
  442. package/src/views/user/outLink/form_view.vue +202 -202
  443. package/src/views/user/outLink/index.vue +110 -110
  444. package/src/views/user/role/edit.vue +4 -0
  445. package/src/views/user/role/role-box.scss +83 -0
  446. package/src/views/user/role/voc_edit.vue +4 -0
  447. package/src/views/user/user/list.vue +28 -6
  448. package/src/views/user/wf/iframe/index.vue +51 -51
  449. package/src/views/user/wf/iframe/index2.vue +64 -64
  450. package/src/views/user/wf/wf_diy_attribute/edit.vue +1 -1
  451. package/src/views/user/wf/wf_manage/list2.vue +871 -871
  452. package/src/views/user/wf/wf_manage/wfContentDialog.vue +177 -126
  453. package/src/views/user/wf/wf_obj_config/activiti_wf.vue +134 -133
  454. package/src/views/user/wf/wf_obj_config/importItemDialog.vue +1 -1
  455. package/src/views/user/wf/wf_obj_config/list.vue +747 -746
  456. package/src/views/user/wf/wf_obj_config/list_form.vue +374 -373
  457. package/templates/child-app/.env +3 -0
  458. package/templates/child-app/README.md +49 -0
  459. package/templates/child-app/app.config.js +6 -0
  460. package/templates/child-app/babel.config.js +1 -0
  461. package/templates/child-app/core-resources.config.js +15 -0
  462. package/templates/child-app/gitignore +7 -0
  463. package/templates/child-app/package.json +34 -0
  464. package/templates/child-app/public/index.html +12 -0
  465. package/templates/child-app/src/assets/401_images/401.gif +0 -0
  466. package/templates/child-app/src/assets/404_images/404.png +0 -0
  467. package/templates/child-app/src/assets/404_images/404_cloud.png +0 -0
  468. package/templates/child-app/src/assets/logo.png +0 -0
  469. package/templates/child-app/src/corejsConfig.js +2 -0
  470. package/templates/child-app/src/icons/index.js +2 -0
  471. package/templates/child-app/src/icons/svg/child-demo.svg +1 -0
  472. package/templates/child-app/src/layout/index.vue +4 -0
  473. package/templates/child-app/src/main.js +5 -0
  474. package/templates/child-app/src/prefixConfig.js +13 -0
  475. package/templates/child-app/src/resources/css/login.scss +29 -0
  476. package/templates/child-app/src/resources/images/bg-login5.jpg +0 -0
  477. package/templates/child-app/src/resources/images/home-img.png +0 -0
  478. package/templates/child-app/src/router/modules/customer.js +3 -0
  479. package/templates/child-app/src/settings.js +25 -0
  480. package/templates/child-app/src/styles/app.scss +2 -0
  481. package/templates/child-app/src/views/demo/detail.vue +19 -0
  482. package/templates/child-app/src/views/demo/list.vue +38 -0
  483. package/templates/child-app/src/views/user/login/index.vue +18 -0
  484. package/templates/child-app/vue.config.js +107 -0
  485. package/src/components/xform/form-render/container-item/dynamicFieldEngine.js +0 -285
  486. package/src/components/xform/form-render/formDynamicFieldMixin.js +0 -131
  487. package/src/views/demo/bizTab/bill/billConfig.js +0 -41
  488. package/src/views/demo/bizTab/bill/detail.vue +0 -436
  489. package/src/views/demo/bizTab/bill/list.vue +0 -288
  490. package/src/views/demo/bizTab/bill/productDialog.vue +0 -176
  491. package/src/views/demo/bizTab/simple/billApi.js +0 -123
  492. package/src/views/demo/bizTab/simple/detail.vue +0 -407
  493. package/src/views/demo/bizTab/simple/list.vue +0 -217
  494. package/src/views/demo/bizTab/standalone/index.vue +0 -121
  495. package/src/views/demo/bizTab/wf/billConfig.js +0 -44
  496. package/src/views/demo/bizTab/wf/detail.vue +0 -661
  497. package/src/views/demo/bizTab/wf/list.vue +0 -242
  498. package/src/views/user/outLink/cc_form_view.vue +0 -188
  499. /package/src/{resources → core-resources}/js/base/common.js +0 -0
@@ -1,874 +1,884 @@
1
- <template>
2
- <div class="toolbar-container">
3
- <div class="left-toolbar">
4
- <el-button
5
- type="text"
6
- :disabled="undoDisabled"
7
- :title="i18nt('designer.toolbar.undoHint')"
8
- @click="undoHistory"
9
- >
10
- <svg-icon icon-class="undo" />
11
- </el-button>
12
- <el-button
13
- type="text"
14
- :disabled="redoDisabled"
15
- :title="i18nt('designer.toolbar.redoHint')"
16
- @click="redoHistory"
17
- >
18
- <svg-icon icon-class="redo" />
19
- </el-button>
20
- <el-button-group>
21
- <el-button
22
- :type="layoutType === 'PC' ? 'info' : ''"
23
- @click="changeLayoutType('PC')"
24
- size="mini"
25
- >
26
- {{ i18nt("designer.toolbar.pcLayout") }}
27
- </el-button>
28
- <!-- <el-button :type="layoutType === 'Pad' ? 'info' : ''" @click="changeLayoutType('Pad')">{{ i18nt('designer.toolbar.padLayout') }}</el-button>-->
29
- <el-button
30
- :type="layoutType === 'H5' ? 'info' : ''"
31
- @click="changeLayoutType('H5')"
32
- size="mini"
33
- >
34
- {{ i18nt("designer.toolbar.mobileLayout") }}
35
- </el-button>
36
- </el-button-group>
37
- <!-- <el-button type="" style="margin-left: 20px" :title="i18nt('designer.toolbar.nodeTreeHint')" @click="showNodeTreeDrawer"><svg-icon icon-class="node-tree" /></el-button>-->
38
- </div>
39
-
40
- <el-drawer
41
- :title="i18nt('designer.toolbar.nodeTreeTitle')"
42
- direction="ltr"
43
- :visible.sync="showNodeTreeDrawerFlag"
44
- :modal="false"
45
- :size="280"
46
- :destroy-on-close="true"
47
- class="node-tree-drawer"
48
- >
49
- <el-tree
50
- ref="nodeTree"
51
- :data="nodeTreeData"
52
- node-key="id"
53
- default-expand-all
54
- highlight-current
55
- class="node-tree"
56
- icon-class="el-icon-arrow-right"
57
- @node-click="onNodeTreeClick"
58
- ></el-tree>
59
- </el-drawer>
60
-
61
- <div class="right-toolbar" :style="{ width: 'auto' }">
62
- <div class="right-toolbar-con">
63
- <!-- <el-button type="text" @click="showFormConfigDialog=true">
64
- <i class="iconfont icon-liebiaoshezhi-list-setting"/>
65
- 表单/列表设置
66
- </el-button>-->
67
- <el-button
68
- type="primary"
69
- @click="saveReportTemplate()"
70
- plain
71
- v-if="
72
- designer.vueInstance.isDev &&
73
- designer.vueInstance.menuKindAuth.editAuth === 1 &&
74
- !readonly
75
- "
76
- >
77
- <i class="el-icon-check" />
78
- 保存
79
- </el-button>
80
- <el-divider direction="vertical"></el-divider>
81
- <el-button
82
- v-if="showToolButton('clearDesignerButton') && !readonly"
83
- type="text"
84
- @click="clearFormWidget"
85
- >
86
- <i class="el-icon-delete" />
87
- {{ i18nt("designer.toolbar.clear") }}
88
- </el-button>
89
- <el-button
90
- v-if="showToolButton('previewFormButton')"
91
- type="text"
92
- @click="previewForm"
93
- >
94
- <i class="el-icon-view" />
95
- {{ i18nt("designer.toolbar.preview") }}
96
- </el-button>
97
- <el-divider direction="vertical"></el-divider>
98
- <el-button
99
- v-if="showToolButton('importJsonButton') && !readonly"
100
- type="text"
101
- @click="importJson"
102
- >
103
- {{ i18nt("designer.toolbar.importJson") }}
104
- </el-button>
105
- <el-button
106
- v-if="showToolButton('exportJsonButton')"
107
- type="text"
108
- @click="exportJson"
109
- >
110
- {{ i18nt("designer.toolbar.exportJson") }}
111
- </el-button>
112
- <!--<el-button v-if="showToolButton('exportCodeButton')" type="text" @click="exportCode">{{ i18nt('designer.toolbar.exportCode') }}</el-button>
113
- <el-button v-if="showToolButton('generateSFCButton')" type="text" @click="generateSFC">
114
- <svg-icon icon-class="vue-sfc" />
115
- {{ i18nt('designer.toolbar.generateSFC') }}
116
- </el-button> -->
117
- <template v-for="(idx, slotName) in $slots">
118
- <slot :name="slotName"></slot>
119
- </template>
120
- </div>
121
- </div>
122
-
123
- <el-dialog
124
- :title="i18nt('designer.toolbar.preview')"
125
- :visible.sync="showPreviewDialogFlag"
126
- v-if="showPreviewDialogFlag"
127
- :show-close="true"
128
- :close-on-click-modal="false"
129
- :close-on-press-escape="false"
130
- center
131
- v-dialog-drag
132
- :destroy-on-close="true"
133
- :append-to-body="true"
134
- :modal-append-to-body="true"
135
- class="small-padding-dialog preview-dialog"
136
- width="75%"
137
- :fullscreen="true"
138
- @close="showPreviewDialogFlag = false"
139
- >
140
- <div>
141
- <div
142
- class="form-render-wrapper"
143
- id="containt"
144
- :class="[
145
- layoutType === 'H5'
146
- ? 'h5-layout'
147
- : layoutType === 'Pad'
148
- ? 'pad-layout'
149
- : '',
150
- ]"
151
- >
152
- <VFormRender
153
- ref="preForm"
154
- :form-json="formJson"
155
- :form-data="testFormData"
156
- :preview-state="true"
157
- :option-data="testOptionData"
158
- @appendButtonClick="testOnAppendButtonClick"
159
- @buttonClick="testOnButtonClick"
160
- @formChange="handleFormChange"
161
- :reportTemplate.sync="reportTemplate"
162
- v-if="showRender"
163
- visible-key="showRender"
164
- :parent-target="_self"
165
- @reload="$reloadHandle"
166
- >
167
- <!--
168
- <div slot="testSlot">aaaa</div>
169
- -->
170
- </VFormRender>
171
- </div>
172
- </div>
173
- <!-- <el-tabs v-model="activeName" class="tab-box">
174
- <el-tab-pane label="常规" name="first">
175
- <div>
176
- <div class="form-render-wrapper" id="containt"
177
- :class="[layoutType === 'H5' ? 'h5-layout' : layoutType === 'Pad' ? 'pad-layout' : '']">
178
- <VFormRender
179
- ref="preForm"
180
- :form-json="formJson"
181
- :form-data="testFormData"
182
- :preview-state="true"
183
- :option-data="testOptionData"
184
- @appendButtonClick="testOnAppendButtonClick"
185
- @buttonClick="testOnButtonClick"
186
- @formChange="handleFormChange"
187
- :reportTemplate.sync="reportTemplate"
188
- v-if="showRender" visible-key="showRender" :parent-target="_self" @reload="$reloadHandle"
189
- >
190
- &lt;!&ndash;
191
- <div slot="testSlot">aaaa</div>
192
- &ndash;&gt;
193
- </VFormRender>
194
- </div>
195
- </div>
196
- <code-editor v-model="testFunc" style="display: none"></code-editor>
197
- </el-tab-pane>
198
- <el-tab-pane label="列表" name="second">
199
- <template v-if="false">
200
- <div class="grid-height">
201
- <vxe-grid ref="table-m1" v-bind="vxeOption" @resizable-change="$vxeTableUtil.onColumnWitchChange"
202
- @custom="$vxeTableUtil.customHandle">
203
- <template #form>
204
- <div class="clearfix screen-btns">
205
- <div class="fl">
206
- <vxe-button status="primary" class="button-sty" icon="el-icon-plus">新增
207
- </vxe-button>
208
- </div>
209
- <div class="fr">
210
- <vxe-button icon="el-icon-brush" class="button-sty" type="text" status="primary" plain
211
- @click="formData={}">重置
212
- </vxe-button>
213
- <vxe-button status="warning" icon="el-icon-search" class="button-sty">搜索
214
- </vxe-button>
215
- </div>
216
- </div>
217
- <template v-if="searchFields.length>0">
218
- <vxe-form ref="form" class="screen-box" title-width="92px" title-align="right" :data="formData">
219
- <vxe-form-item v-for="(item,index) in searchFields"
220
- :key="index" :title="item.label+':'">
221
- <template v-slot>
222
- <el-input v-model="formData[item.prop]" size="small" clearable/>
223
- </template>
224
- </vxe-form-item>
225
- </vxe-form>
226
- </template>
227
- </template>
228
- </vxe-grid>
229
- </div>
230
- </template>
231
- <template v-else>
232
- <div id="containt">
233
- <div class="tree-box fl">
234
- <div class="tit"><b>机构分类</b></div>
235
- <el-tree
236
- :props="treeOption.defaultProps"
237
- :load="loadNode"
238
- node-key="id"
239
- ref="tree"
240
- highlight-current
241
- lazy
242
- :expand-on-click-node="false"
243
- @node-click="handleNodeClick"
244
- class="tree-list"
245
- icon-class="el-icon-arrow-down"
246
- ></el-tree>
247
- </div>
248
- <label id="labBtn">
249
- <div class="icon">
250
- <i class="el-icon-more"></i>
251
- <i class="el-icon-more"></i>
252
- </div>
253
- </label>
254
- <div class="main-right fr" style="padding-left:6px;">
255
- <div class="grid-height">
256
- <vxe-grid ref="table-m1" v-bind="vxeOption" @resizable-change="$vxeTableUtil.onColumnWitchChange"
257
- @custom="$vxeTableUtil.customHandle">
258
- <template #form>
259
- <div class="clearfix screen-btns">
260
- <div class="fl">
261
- <vxe-button status="primary" class="button-sty" icon="el-icon-plus">新增
262
- </vxe-button>
263
- </div>
264
- <div class="fr">
265
- <vxe-button icon="el-icon-brush" class="button-sty" type="text" status="primary" plain
266
- @click="formData={}">重置
267
- </vxe-button>
268
- <vxe-button status="warning" icon="el-icon-search" class="button-sty">搜索
269
- </vxe-button>
270
- </div>
271
- </div>
272
- <template v-if="searchFields.length>0">
273
- <vxe-form ref="form" class="screen-box" title-width="92px" title-align="right" :data="formData">
274
- <vxe-form-item v-for="(item,index) in searchFields"
275
- :key="index" :title="item.label+':'">
276
- <template v-slot>
277
- <el-input v-model="formData[item.prop]" size="small" clearable/>
278
- </template>
279
- </vxe-form-item>
280
- </vxe-form>
281
- </template>
282
- </template>
283
- </vxe-grid>
284
- </div>
285
- </div>
286
- </div>
287
- </template>
288
- </el-tab-pane>
289
- </el-tabs>-->
290
- <div slot="footer" class="dialog-footer" v-if="false">
291
- <!-- <el-button type="primary" @click="getFormData" class="button-sty">{{ i18nt('designer.hint.getFormData') }}</el-button>
292
- <el-button type="primary" @click="resetForm" class="button-sty">{{ i18nt('designer.hint.resetForm') }}</el-button>
293
- <el-button type="primary" @click="setFormDisabled" class="button-sty">{{ i18nt('designer.hint.disableForm') }}</el-button>
294
- <el-button type="primary" @click="setFormEnabled" class="button-sty">{{ i18nt('designer.hint.enableForm') }}</el-button>
295
- <el-button type="" @click="showPreviewDialogFlag = false" class="button-sty">{{ i18nt('designer.hint.closePreview') }}</el-button> -->
296
- <el-button v-if="false" @click="printFormJson" class="button-sty"
297
- >PrintFormJson</el-button
298
- >
299
- <el-button v-if="false" @click="testValidate" class="button-sty"
300
- >TestValidate</el-button
301
- >
302
- <el-button v-if="false" @click="testSetFormData" class="button-sty"
303
- >TestSF</el-button
304
- >
305
- <el-button @click="$refs['preForm'].saveForm()" class="button-sty"
306
- >测试保存</el-button
307
- >
308
- </div>
309
- </el-dialog>
310
-
311
- <el-dialog
312
- :title="i18nt('designer.toolbar.importJson')"
313
- :visible.sync="showImportJsonDialogFlag"
314
- v-if="showImportJsonDialogFlag"
315
- :show-close="true"
316
- class="small-padding-dialog preview-dialog"
317
- center
318
- v-dialog-drag
319
- :close-on-click-modal="false"
320
- :close-on-press-escape="false"
321
- :destroy-on-close="true"
322
- :append-to-body="true"
323
- :modal-append-to-body="true"
324
- >
325
- <el-alert
326
- type="info"
327
- :title="i18nt('designer.hint.importJsonHint')"
328
- show-icon
329
- class="alert-padding"
330
- ></el-alert>
331
- <code-editor
332
- :mode="'json'"
333
- :readonly="false"
334
- v-model="importTemplate"
335
- ></code-editor>
336
- <div slot="footer" class="dialog-footer">
337
- <el-button type="primary" @click="doJsonImport" class="button-sty"
338
- >{{ i18nt("designer.hint.import") }}
339
- </el-button>
340
- <el-button @click="showImportJsonDialogFlag = false" class="button-sty"
341
- >{{ i18nt("designer.hint.cancel") }}
342
- </el-button>
343
- </div>
344
- </el-dialog>
345
-
346
- <el-dialog
347
- :title="i18nt('designer.toolbar.exportJson')"
348
- :visible.sync="showExportJsonDialogFlag"
349
- v-if="showExportJsonDialogFlag"
350
- :show-close="true"
351
- class="small-padding-dialog preview-dialog"
352
- center
353
- v-dialog-drag
354
- :close-on-click-modal="false"
355
- :close-on-press-escape="false"
356
- :destroy-on-close="true"
357
- :append-to-body="true"
358
- :modal-append-to-body="true"
359
- >
360
- <code-editor
361
- :mode="'json'"
362
- :readonly="true"
363
- v-model="jsonContent"
364
- ></code-editor>
365
- <div slot="footer" class="dialog-footer">
366
- <el-button
367
- type="primary"
368
- class="copy-json-btn button-sty"
369
- :data-clipboard-text="jsonRawContent"
370
- @click="copyFormJson"
371
- >{{ i18nt("designer.hint.copyJson") }}
372
- </el-button>
373
- <el-button @click="saveFormJson" class="button-sty">{{
374
- i18nt("designer.hint.saveFormJson")
375
- }}</el-button>
376
- <el-button
377
- type=""
378
- @click="showExportJsonDialogFlag = false"
379
- class="button-sty"
380
- >
381
- {{ i18nt("designer.hint.closePreview") }}
382
- </el-button>
383
- </div>
384
- </el-dialog>
385
-
386
- <el-dialog
387
- :title="i18nt('designer.toolbar.exportCode')"
388
- :visible.sync="showExportCodeDialogFlag"
389
- v-if="showExportCodeDialogFlag"
390
- :show-close="true"
391
- class="small-padding-dialog preview-dialog"
392
- center
393
- v-dialog-drag
394
- width="65%"
395
- :close-on-click-modal="false"
396
- :close-on-press-escape="false"
397
- :destroy-on-close="true"
398
- :append-to-body="true"
399
- :modal-append-to-body="true"
400
- >
401
- <el-tabs
402
- type="border-card"
403
- class="no-box-shadow no-padding"
404
- v-model="activeCodeTab"
405
- >
406
- <el-tab-pane label="Vue" name="vue">
407
- <code-editor
408
- :mode="'html'"
409
- :readonly="true"
410
- v-model="vueCode"
411
- :user-worker="false"
412
- ></code-editor>
413
- </el-tab-pane>
414
- <el-tab-pane label="HTML" name="html">
415
- <code-editor
416
- :mode="'html'"
417
- :readonly="true"
418
- v-model="htmlCode"
419
- :user-worker="false"
420
- ></code-editor>
421
- </el-tab-pane>
422
- </el-tabs>
423
- <div slot="footer" class="dialog-footer">
424
- <el-button
425
- type="primary"
426
- class="copy-vue-btn button-sty"
427
- :data-clipboard-text="vueCode"
428
- @click="copyVueCode"
429
- >
430
- {{ i18nt("designer.hint.copyVueCode") }}
431
- </el-button>
432
- <el-button
433
- type="primary"
434
- class="copy-html-btn button-sty"
435
- :data-clipboard-text="htmlCode"
436
- @click="copyHtmlCode"
437
- >{{ i18nt("designer.hint.copyHtmlCode") }}
438
- </el-button>
439
- <el-button @click="saveVueCode" class="button-sty">{{
440
- i18nt("designer.hint.saveVueCode")
441
- }}</el-button>
442
- <el-button @click="saveHtmlCode" class="button-sty">{{
443
- i18nt("designer.hint.saveHtmlCode")
444
- }}</el-button>
445
- <el-button
446
- type=""
447
- @click="showExportCodeDialogFlag = false"
448
- class="button-sty"
449
- >
450
- {{ i18nt("designer.hint.closePreview") }}
451
- </el-button>
452
- </div>
453
- </el-dialog>
454
-
455
- <el-dialog
456
- :title="i18nt('designer.hint.exportFormData')"
457
- :visible.sync="showFormDataDialogFlag"
458
- v-if="showFormDataDialogFlag"
459
- :show-close="true"
460
- class="dialog-title-light-bg preview-dialog"
461
- center
462
- v-dialog-drag
463
- :close-on-click-modal="false"
464
- :close-on-press-escape="false"
465
- :destroy-on-close="true"
466
- :append-to-body="true"
467
- :modal-append-to-body="true"
468
- >
469
- <div style="border: 1px solid #dcdfe6">
470
- <code-editor
471
- :mode="'json'"
472
- :readonly="true"
473
- v-model="formDataJson"
474
- ></code-editor>
475
- </div>
476
- <div slot="footer" class="dialog-footer">
477
- <el-button
478
- type="primary"
479
- class="copy-form-data-json-btn button-sty"
480
- :data-clipboard-text="formDataRawJson"
481
- @click="copyFormDataJson"
482
- >
483
- {{ i18nt("designer.hint.copyFormData") }}
484
- </el-button>
485
- <el-button @click="saveFormData" class="button-sty">{{
486
- i18nt("designer.hint.saveFormData")
487
- }}</el-button>
488
- <el-button
489
- type=""
490
- @click="showFormDataDialogFlag = false"
491
- class="button-sty"
492
- >
493
- {{ i18nt("designer.hint.closePreview") }}
494
- </el-button>
495
- </div>
496
- </el-dialog>
497
-
498
- <el-dialog
499
- :title="i18nt('designer.toolbar.generateSFC')"
500
- :visible.sync="showExportSFCDialogFlag"
501
- v-if="showExportSFCDialogFlag"
502
- :show-close="true"
503
- class="small-padding-dialog preview-dialog"
504
- center
505
- v-dialog-drag
506
- width="65%"
507
- :close-on-click-modal="false"
508
- :close-on-press-escape="false"
509
- :destroy-on-close="true"
510
- :append-to-body="true"
511
- :modal-append-to-body="true"
512
- >
513
- <el-tabs
514
- type="border-card"
515
- class="no-box-shadow no-padding"
516
- v-model="activeSFCTab"
517
- >
518
- <el-tab-pane label="Vue2" name="vue2">
519
- <code-editor
520
- :mode="'html'"
521
- :readonly="true"
522
- v-model="sfcCode"
523
- :user-worker="false"
524
- ></code-editor>
525
- </el-tab-pane>
526
- <el-tab-pane label="Vue3" name="vue3">
527
- <code-editor
528
- :mode="'html'"
529
- :readonly="true"
530
- v-model="sfcCodeV3"
531
- :user-worker="false"
532
- ></code-editor>
533
- </el-tab-pane>
534
- </el-tabs>
535
- <div slot="footer" class="dialog-footer">
536
- <el-button
537
- type="primary"
538
- class="copy-vue2-sfc-btn button-sty"
539
- :data-clipboard-text="sfcCode"
540
- @click="copyV2SFC"
541
- >{{ i18nt("designer.hint.copyVue2SFC") }}
542
- </el-button>
543
- <el-button
544
- type="primary"
545
- class="copy-vue3-sfc-btn button-sty"
546
- :data-clipboard-text="sfcCodeV3"
547
- @click="copyV3SFC"
548
- >{{ i18nt("designer.hint.copyVue3SFC") }}
549
- </el-button>
550
- <el-button @click="saveV2SFC" class="button-sty">{{
551
- i18nt("designer.hint.saveVue2SFC")
552
- }}</el-button>
553
- <el-button @click="saveV3SFC" class="button-sty">{{
554
- i18nt("designer.hint.saveVue3SFC")
555
- }}</el-button>
556
- <el-button
557
- type=""
558
- @click="showExportSFCDialogFlag = false"
559
- class="button-sty"
560
- >
561
- {{ i18nt("designer.hint.closePreview") }}
562
- </el-button>
563
- </div>
564
- </el-dialog>
565
- <el-dialog
566
- :title="i18nt('表单编辑')"
567
- v-if="showFormConfigDialog"
568
- :visible.sync="showFormConfigDialog"
569
- :modal="false"
570
- :show-close="!0"
571
- custom-class="dialog-style list-dialog"
572
- :close-on-click-modal="!1"
573
- :close-on-press-escape="!1"
574
- :destroy-on-close="!0"
575
- v-el-drag-dialog
576
- v-el-dialog-center
577
- >
578
- <div class="cont" style="height: auto; max-height: 500px">
579
- <el-scrollbar class="setting-scrollbar">
580
- <form-setting
581
- :designer="designer"
582
- :form-config="designer.formConfig"
583
- ></form-setting>
584
- </el-scrollbar>
585
- </div>
586
- </el-dialog>
587
- </div>
588
- </template>
589
-
590
- <script>
591
- import VFormRender from "../../../../components/xform/form-render/index";
592
- import indexMixin from "./indexMixin.js";
593
- import FormSetting from "../../../../components/xform/form-designer/setting-panel/form-setting";
594
-
595
- export default {
596
- name: "ToolbarPanel",
597
- components: {
598
- VFormRender,
599
- FormSetting,
600
- },
601
- inject: ["readonly"],
602
- mixins: [indexMixin],
603
- data() {
604
- return {
605
- defaultProps: {
606
- label: "name", //这里是树结构中需显示的数据(即接口返回的需展示在页面上的参数)
607
- children: [],
608
- isLeaf: "leaf",
609
- },
610
- treeOption: {
611
- title: "机构分类",
612
- defaultProps: {
613
- label: "name",
614
- children: [],
615
- isLeaf: "leaf",
616
- },
617
- url1: "/user/sale_org/getAllList",
618
- url2: "/user/sale_org/getChildren",
619
- formRewriteMap: {
620
- saleOrgId: "id",
621
- saleOrgName: "name",
622
- },
623
- preHadnleData(row) {
624
- row.leaf = !row.hasChild;
625
- },
626
- treeNodeParam(row) {
627
- return {
628
- parent: row.id,
629
- enabled: true,
630
- };
631
- },
632
- },
633
- };
634
- },
635
- methods: {
636
- handleNodeClick(data, node, v) {
637
- let treeOption = this.treeOption;
638
- let formRewriteMap = treeOption.formRewriteMap || {};
639
- let formData = {};
640
- Object.keys(formRewriteMap).forEach((key) => {
641
- // this.$set(this.formData, key, data[formRewriteMap[key]]);
642
- formData[key] = data[formRewriteMap[key]];
643
- });
644
-
645
- this.$forceUpdate();
646
- /*
647
- this.searchEvent();*/
648
- },
649
- // 异步树叶子节点懒加载逻辑
650
- loadNode(node, resolve) {
651
- let treeOption = this.treeOption;
652
- let id = node && node.data && node.data.id ? node.data.id || "" : "";
653
- let param = (treeOption.treeNodeParam
654
- ? treeOption.treeNodeParam(node?.data || {})
655
- : null) || {
656
- parent: id,
657
- enabled: true,
658
- };
659
- let url = !id ? treeOption.url1 : treeOption.url2;
660
- this.$http({
661
- url: url,
662
- method: "post",
663
- data: param,
664
- success: (res) => {
665
- res.objx.forEach((value) => {
666
- treeOption.preHadnleData(value);
667
- });
668
- resolve(res.objx);
669
- },
670
- });
671
- },
672
- },
673
- };
674
- </script>
675
-
676
- <style lang="scss" scoped>
677
- div.toolbar-container {
678
- //min-width: 728px; /* 解决工具按钮栏换行的问题 */
679
- /* 上一行css有问题,当窗口宽度不足时会把按钮挤出到右边的属性设置区,弃之! */
680
- }
681
-
682
- .left-toolbar {
683
- float: left;
684
- font-size: 16px;
685
- }
686
-
687
- .right-toolbar {
688
- float: right;
689
- //width: 420px;
690
- text-align: right;
691
- overflow: hidden;
692
-
693
- .right-toolbar-con {
694
- text-align: right;
695
-
696
- .el-button {
697
- margin-left: 15px;
698
- margin-right: 15px;
699
- font-size: 14px;
700
- vertical-align: middle;
701
-
702
- &.el-button--primary {
703
- padding: 7px 14px;
704
- }
705
- }
706
- }
707
- }
708
-
709
- .el-button i {
710
- margin-right: 3px;
711
- }
712
-
713
- .small-padding-dialog {
714
- ::v-deep .el-dialog__header {
715
- //padding-top: 3px;
716
- //padding-bottom: 3px;
717
- background: #f1f2f3;
718
- }
719
-
720
- ::v-deep .el-dialog__body {
721
- //padding: 12px 15px 12px 15px;
722
- padding: 0;
723
-
724
- .el-alert.alert-padding {
725
- padding: 0 10px;
726
- }
727
- }
728
-
729
- ::v-deep .ace-container {
730
- border: 1px solid #dcdfe6;
731
- }
732
- }
733
-
734
- .dialog-title-light-bg {
735
- ::v-deep .el-dialog__header {
736
- background: #f1f2f3;
737
- }
738
- }
739
-
740
- .no-box-shadow {
741
- box-shadow: none;
742
- }
743
-
744
- .no-padding.el-tabs--border-card {
745
- ::v-deep .el-tabs__content {
746
- padding: 0;
747
- }
748
- }
749
-
750
- .form-render-wrapper {
751
- //height: calc(100vh - 142px);
752
- //all: revert !important; /* 防止表单继承el-dialog等外部样式,未生效,原因不明?? */
753
- }
754
-
755
- .form-render-wrapper.h5-layout {
756
- margin: 0 auto;
757
- width: 420px;
758
- border-radius: 15px;
759
- //border-width: 10px;
760
- box-shadow: 0 0 1px 10px #495060;
761
- height: calc(100vh - 142px);
762
- overflow-y: auto;
763
- overflow-x: hidden;
764
- }
765
-
766
- .form-render-wrapper.pad-layout {
767
- margin: 0 auto;
768
- width: 960px;
769
- border-radius: 15px;
770
- //border-width: 10px;
771
- box-shadow: 0 0 1px 10px #495060;
772
- height: calc(100vh - 125px);
773
- overflow-y: auto;
774
- overflow-x: hidden;
775
- }
776
-
777
- .node-tree-drawer ::v-deep {
778
- .el-drawer {
779
- padding: 10px;
780
- overflow: auto;
781
- }
782
-
783
- .el-drawer__header {
784
- margin-bottom: 12px;
785
- padding: 5px 5px 0;
786
- }
787
-
788
- .el-drawer__body {
789
- padding-left: 5px;
790
- }
791
- }
792
-
793
- /*.node-tree-scroll-bar {*/
794
- /* height: 100%;*/
795
- /* overflow: auto;*/
796
- /*}*/
797
-
798
- .node-tree ::v-deep {
799
- .el-tree > .el-tree-node:after {
800
- border-top: none;
801
- }
802
-
803
- .el-tree-node {
804
- position: relative;
805
- padding-left: 12px;
806
- }
807
-
808
- .el-tree-node__content {
809
- padding-left: 0 !important;
810
- }
811
-
812
- .el-tree-node__expand-icon.is-leaf {
813
- display: none;
814
- }
815
-
816
- .el-tree-node__children {
817
- padding-left: 12px;
818
- overflow: visible !important; /* 加入此行让el-tree宽度自动撑开,超出宽度el-draw自动出现水平滚动条! */
819
- }
820
-
821
- .el-tree-node :last-child:before {
822
- height: 38px;
823
- }
824
-
825
- .el-tree > .el-tree-node:before {
826
- border-left: none;
827
- }
828
-
829
- .el-tree > .el-tree-node:after {
830
- border-top: none;
831
- }
832
-
833
- .el-tree-node:before {
834
- content: "";
835
- left: -4px;
836
- position: absolute;
837
- right: auto;
838
- border-width: 1px;
839
- }
840
-
841
- .el-tree-node:after {
842
- content: "";
843
- left: -4px;
844
- position: absolute;
845
- right: auto;
846
- border-width: 1px;
847
- }
848
-
849
- .el-tree-node:before {
850
- border-left: 1px dashed #4386c6;
851
- bottom: 0px;
852
- height: 100%;
853
- top: -10px;
854
- width: 1px;
855
- }
856
-
857
- .el-tree-node:after {
858
- border-top: 1px dashed #4386c6;
859
- height: 20px;
860
- top: 12px;
861
- width: 16px;
862
- }
863
-
864
- .el-tree-node.is-current > .el-tree-node__content {
865
- background: #c2d6ea !important;
866
- }
867
-
868
- .el-tree-node__expand-icon {
869
- margin-left: -3px;
870
- padding: 6px 6px 6px 0px;
871
- font-size: 16px;
872
- }
873
- }
874
- </style>
1
+ <template>
2
+ <div class="toolbar-container">
3
+ <div class="left-toolbar">
4
+ <el-button
5
+ type="text"
6
+ :disabled="undoDisabled"
7
+ :title="i18nt('designer.toolbar.undoHint')"
8
+ @click="undoHistory"
9
+ >
10
+ <svg-icon icon-class="undo" />
11
+ </el-button>
12
+ <el-button
13
+ type="text"
14
+ :disabled="redoDisabled"
15
+ :title="i18nt('designer.toolbar.redoHint')"
16
+ @click="redoHistory"
17
+ >
18
+ <svg-icon icon-class="redo" />
19
+ </el-button>
20
+ <el-button-group :title="layoutTypeLocked ? layoutTypeLockedTip : ''">
21
+ <!-- 锁定时只保留当前模式一个按钮,另一个不显示 -->
22
+ <el-button
23
+ v-if="!layoutTypeLocked || layoutType === 'PC'"
24
+ :type="layoutType === 'PC' ? 'info' : ''"
25
+ :disabled="layoutTypeLocked"
26
+ @click="changeLayoutType('PC')"
27
+ size="mini"
28
+ >
29
+ {{ i18nt("designer.toolbar.pcLayout") }}
30
+ </el-button>
31
+ <!-- <el-button :type="layoutType === 'Pad' ? 'info' : ''" @click="changeLayoutType('Pad')">{{ i18nt('designer.toolbar.padLayout') }}</el-button>-->
32
+ <el-button
33
+ v-if="!layoutTypeLocked || layoutType === 'H5'"
34
+ :type="layoutType === 'H5' ? 'info' : ''"
35
+ :disabled="layoutTypeLocked"
36
+ @click="changeLayoutType('H5')"
37
+ size="mini"
38
+ >
39
+ {{ i18nt("designer.toolbar.mobileLayout") }}
40
+ </el-button>
41
+ </el-button-group>
42
+ <!-- <el-button type="" style="margin-left: 20px" :title="i18nt('designer.toolbar.nodeTreeHint')" @click="showNodeTreeDrawer"><svg-icon icon-class="node-tree" /></el-button>-->
43
+ </div>
44
+
45
+ <el-drawer
46
+ :title="i18nt('designer.toolbar.nodeTreeTitle')"
47
+ direction="ltr"
48
+ :visible.sync="showNodeTreeDrawerFlag"
49
+ :modal="false"
50
+ :size="280"
51
+ :destroy-on-close="true"
52
+ class="node-tree-drawer"
53
+ >
54
+ <el-tree
55
+ ref="nodeTree"
56
+ :data="nodeTreeData"
57
+ node-key="id"
58
+ default-expand-all
59
+ highlight-current
60
+ class="node-tree"
61
+ icon-class="el-icon-arrow-right"
62
+ @node-click="onNodeTreeClick"
63
+ ></el-tree>
64
+ </el-drawer>
65
+
66
+ <div class="right-toolbar" :style="{ width: 'auto' }">
67
+ <div class="right-toolbar-con">
68
+ <!-- <el-button type="text" @click="showFormConfigDialog=true">
69
+ <i class="iconfont icon-liebiaoshezhi-list-setting"/>
70
+ 表单/列表设置
71
+ </el-button>-->
72
+ <el-button
73
+ type="primary"
74
+ @click="saveReportTemplate()"
75
+ plain
76
+ v-if="
77
+ designer.vueInstance.isDev &&
78
+ designer.vueInstance.menuKindAuth.editAuth === 1 &&
79
+ !readonly
80
+ "
81
+ >
82
+ <i class="el-icon-check" />
83
+ 保存
84
+ </el-button>
85
+ <el-divider direction="vertical"></el-divider>
86
+ <el-button
87
+ v-if="showToolButton('clearDesignerButton') && !readonly"
88
+ type="text"
89
+ @click="clearFormWidget"
90
+ >
91
+ <i class="el-icon-delete" />
92
+ {{ i18nt("designer.toolbar.clear") }}
93
+ </el-button>
94
+ <el-button
95
+ v-if="showToolButton('previewFormButton')"
96
+ type="text"
97
+ @click="previewForm"
98
+ >
99
+ <i class="el-icon-view" />
100
+ {{ i18nt("designer.toolbar.preview") }}
101
+ </el-button>
102
+ <el-divider direction="vertical"></el-divider>
103
+ <el-button
104
+ v-if="showToolButton('importJsonButton') && !readonly"
105
+ type="text"
106
+ @click="importJson"
107
+ >
108
+ {{ i18nt("designer.toolbar.importJson") }}
109
+ </el-button>
110
+ <el-button
111
+ v-if="showToolButton('exportJsonButton')"
112
+ type="text"
113
+ @click="exportJson"
114
+ >
115
+ {{ i18nt("designer.toolbar.exportJson") }}
116
+ </el-button>
117
+ <!--<el-button v-if="showToolButton('exportCodeButton')" type="text" @click="exportCode">{{ i18nt('designer.toolbar.exportCode') }}</el-button>
118
+ <el-button v-if="showToolButton('generateSFCButton')" type="text" @click="generateSFC">
119
+ <svg-icon icon-class="vue-sfc" />
120
+ {{ i18nt('designer.toolbar.generateSFC') }}
121
+ </el-button> -->
122
+ <template v-for="(idx, slotName) in $slots">
123
+ <slot :name="slotName"></slot>
124
+ </template>
125
+ </div>
126
+ </div>
127
+
128
+ <el-dialog
129
+ :title="i18nt('designer.toolbar.preview')"
130
+ :visible.sync="showPreviewDialogFlag"
131
+ v-if="showPreviewDialogFlag"
132
+ :show-close="true"
133
+ :close-on-click-modal="false"
134
+ :close-on-press-escape="false"
135
+ center
136
+ v-dialog-drag
137
+ :destroy-on-close="true"
138
+ :append-to-body="true"
139
+ :modal-append-to-body="true"
140
+ class="small-padding-dialog preview-dialog"
141
+ width="75%"
142
+ :fullscreen="true"
143
+ @close="showPreviewDialogFlag = false"
144
+ >
145
+ <div>
146
+ <div
147
+ class="form-render-wrapper"
148
+ id="containt"
149
+ :class="[
150
+ layoutType === 'H5'
151
+ ? 'h5-layout'
152
+ : layoutType === 'Pad'
153
+ ? 'pad-layout'
154
+ : '',
155
+ ]"
156
+ >
157
+ <VFormRender
158
+ ref="preForm"
159
+ :form-json="formJson"
160
+ :form-data="testFormData"
161
+ :preview-state="true"
162
+ :option-data="testOptionData"
163
+ @appendButtonClick="testOnAppendButtonClick"
164
+ @buttonClick="testOnButtonClick"
165
+ @formChange="handleFormChange"
166
+ :reportTemplate.sync="reportTemplate"
167
+ v-if="showRender"
168
+ visible-key="showRender"
169
+ :parent-target="_self"
170
+ @reload="$reloadHandle"
171
+ >
172
+ <!--
173
+ <div slot="testSlot">aaaa</div>
174
+ -->
175
+ </VFormRender>
176
+ </div>
177
+ </div>
178
+ <!-- <el-tabs v-model="activeName" class="tab-box">
179
+ <el-tab-pane label="常规" name="first">
180
+ <div>
181
+ <div class="form-render-wrapper" id="containt"
182
+ :class="[layoutType === 'H5' ? 'h5-layout' : layoutType === 'Pad' ? 'pad-layout' : '']">
183
+ <VFormRender
184
+ ref="preForm"
185
+ :form-json="formJson"
186
+ :form-data="testFormData"
187
+ :preview-state="true"
188
+ :option-data="testOptionData"
189
+ @appendButtonClick="testOnAppendButtonClick"
190
+ @buttonClick="testOnButtonClick"
191
+ @formChange="handleFormChange"
192
+ :reportTemplate.sync="reportTemplate"
193
+ v-if="showRender" visible-key="showRender" :parent-target="_self" @reload="$reloadHandle"
194
+ >
195
+ &lt;!&ndash;
196
+ <div slot="testSlot">aaaa</div>
197
+ &ndash;&gt;
198
+ </VFormRender>
199
+ </div>
200
+ </div>
201
+ <code-editor v-model="testFunc" style="display: none"></code-editor>
202
+ </el-tab-pane>
203
+ <el-tab-pane label="列表" name="second">
204
+ <template v-if="false">
205
+ <div class="grid-height">
206
+ <vxe-grid ref="table-m1" v-bind="vxeOption" @resizable-change="$vxeTableUtil.onColumnWitchChange"
207
+ @custom="$vxeTableUtil.customHandle">
208
+ <template #form>
209
+ <div class="clearfix screen-btns">
210
+ <div class="fl">
211
+ <vxe-button status="primary" class="button-sty" icon="el-icon-plus">新增
212
+ </vxe-button>
213
+ </div>
214
+ <div class="fr">
215
+ <vxe-button icon="el-icon-brush" class="button-sty" type="text" status="primary" plain
216
+ @click="formData={}">重置
217
+ </vxe-button>
218
+ <vxe-button status="warning" icon="el-icon-search" class="button-sty">搜索
219
+ </vxe-button>
220
+ </div>
221
+ </div>
222
+ <template v-if="searchFields.length>0">
223
+ <vxe-form ref="form" class="screen-box" title-width="92px" title-align="right" :data="formData">
224
+ <vxe-form-item v-for="(item,index) in searchFields"
225
+ :key="index" :title="item.label+':'">
226
+ <template v-slot>
227
+ <el-input v-model="formData[item.prop]" size="small" clearable/>
228
+ </template>
229
+ </vxe-form-item>
230
+ </vxe-form>
231
+ </template>
232
+ </template>
233
+ </vxe-grid>
234
+ </div>
235
+ </template>
236
+ <template v-else>
237
+ <div id="containt">
238
+ <div class="tree-box fl">
239
+ <div class="tit"><b>机构分类</b></div>
240
+ <el-tree
241
+ :props="treeOption.defaultProps"
242
+ :load="loadNode"
243
+ node-key="id"
244
+ ref="tree"
245
+ highlight-current
246
+ lazy
247
+ :expand-on-click-node="false"
248
+ @node-click="handleNodeClick"
249
+ class="tree-list"
250
+ icon-class="el-icon-arrow-down"
251
+ ></el-tree>
252
+ </div>
253
+ <label id="labBtn">
254
+ <div class="icon">
255
+ <i class="el-icon-more"></i>
256
+ <i class="el-icon-more"></i>
257
+ </div>
258
+ </label>
259
+ <div class="main-right fr" style="padding-left:6px;">
260
+ <div class="grid-height">
261
+ <vxe-grid ref="table-m1" v-bind="vxeOption" @resizable-change="$vxeTableUtil.onColumnWitchChange"
262
+ @custom="$vxeTableUtil.customHandle">
263
+ <template #form>
264
+ <div class="clearfix screen-btns">
265
+ <div class="fl">
266
+ <vxe-button status="primary" class="button-sty" icon="el-icon-plus">新增
267
+ </vxe-button>
268
+ </div>
269
+ <div class="fr">
270
+ <vxe-button icon="el-icon-brush" class="button-sty" type="text" status="primary" plain
271
+ @click="formData={}">重置
272
+ </vxe-button>
273
+ <vxe-button status="warning" icon="el-icon-search" class="button-sty">搜索
274
+ </vxe-button>
275
+ </div>
276
+ </div>
277
+ <template v-if="searchFields.length>0">
278
+ <vxe-form ref="form" class="screen-box" title-width="92px" title-align="right" :data="formData">
279
+ <vxe-form-item v-for="(item,index) in searchFields"
280
+ :key="index" :title="item.label+':'">
281
+ <template v-slot>
282
+ <el-input v-model="formData[item.prop]" size="small" clearable/>
283
+ </template>
284
+ </vxe-form-item>
285
+ </vxe-form>
286
+ </template>
287
+ </template>
288
+ </vxe-grid>
289
+ </div>
290
+ </div>
291
+ </div>
292
+ </template>
293
+ </el-tab-pane>
294
+ </el-tabs>-->
295
+ <div slot="footer" class="dialog-footer" v-if="false">
296
+ <!-- <el-button type="primary" @click="getFormData" class="button-sty">{{ i18nt('designer.hint.getFormData') }}</el-button>
297
+ <el-button type="primary" @click="resetForm" class="button-sty">{{ i18nt('designer.hint.resetForm') }}</el-button>
298
+ <el-button type="primary" @click="setFormDisabled" class="button-sty">{{ i18nt('designer.hint.disableForm') }}</el-button>
299
+ <el-button type="primary" @click="setFormEnabled" class="button-sty">{{ i18nt('designer.hint.enableForm') }}</el-button>
300
+ <el-button type="" @click="showPreviewDialogFlag = false" class="button-sty">{{ i18nt('designer.hint.closePreview') }}</el-button> -->
301
+ <el-button v-if="false" @click="printFormJson" class="button-sty"
302
+ >PrintFormJson</el-button
303
+ >
304
+ <el-button v-if="false" @click="testValidate" class="button-sty"
305
+ >TestValidate</el-button
306
+ >
307
+ <el-button v-if="false" @click="testSetFormData" class="button-sty"
308
+ >TestSF</el-button
309
+ >
310
+ <el-button @click="$refs['preForm'].saveForm()" class="button-sty"
311
+ >测试保存</el-button
312
+ >
313
+ </div>
314
+ </el-dialog>
315
+
316
+ <el-dialog
317
+ :title="i18nt('designer.toolbar.importJson')"
318
+ :visible.sync="showImportJsonDialogFlag"
319
+ v-if="showImportJsonDialogFlag"
320
+ :show-close="true"
321
+ class="small-padding-dialog preview-dialog"
322
+ center
323
+ v-dialog-drag
324
+ :close-on-click-modal="false"
325
+ :close-on-press-escape="false"
326
+ :destroy-on-close="true"
327
+ :append-to-body="true"
328
+ :modal-append-to-body="true"
329
+ >
330
+ <el-alert
331
+ type="info"
332
+ :title="i18nt('designer.hint.importJsonHint')"
333
+ show-icon
334
+ class="alert-padding"
335
+ ></el-alert>
336
+ <code-editor
337
+ :mode="'json'"
338
+ :readonly="false"
339
+ v-model="importTemplate"
340
+ ></code-editor>
341
+ <div slot="footer" class="dialog-footer">
342
+ <el-button type="primary" @click="doJsonImport" class="button-sty"
343
+ >{{ i18nt("designer.hint.import") }}
344
+ </el-button>
345
+ <el-button @click="showImportJsonDialogFlag = false" class="button-sty"
346
+ >{{ i18nt("designer.hint.cancel") }}
347
+ </el-button>
348
+ </div>
349
+ </el-dialog>
350
+
351
+ <el-dialog
352
+ :title="i18nt('designer.toolbar.exportJson')"
353
+ :visible.sync="showExportJsonDialogFlag"
354
+ v-if="showExportJsonDialogFlag"
355
+ :show-close="true"
356
+ class="small-padding-dialog preview-dialog"
357
+ center
358
+ v-dialog-drag
359
+ :close-on-click-modal="false"
360
+ :close-on-press-escape="false"
361
+ :destroy-on-close="true"
362
+ :append-to-body="true"
363
+ :modal-append-to-body="true"
364
+ >
365
+ <code-editor
366
+ :mode="'json'"
367
+ :readonly="true"
368
+ v-model="jsonContent"
369
+ ></code-editor>
370
+ <div slot="footer" class="dialog-footer">
371
+ <el-button
372
+ type="primary"
373
+ class="copy-json-btn button-sty"
374
+ :data-clipboard-text="jsonRawContent"
375
+ @click="copyFormJson"
376
+ >{{ i18nt("designer.hint.copyJson") }}
377
+ </el-button>
378
+ <el-button @click="saveFormJson" class="button-sty">{{
379
+ i18nt("designer.hint.saveFormJson")
380
+ }}</el-button>
381
+ <el-button
382
+ type=""
383
+ @click="showExportJsonDialogFlag = false"
384
+ class="button-sty"
385
+ >
386
+ {{ i18nt("designer.hint.closePreview") }}
387
+ </el-button>
388
+ </div>
389
+ </el-dialog>
390
+
391
+ <el-dialog
392
+ :title="i18nt('designer.toolbar.exportCode')"
393
+ :visible.sync="showExportCodeDialogFlag"
394
+ v-if="showExportCodeDialogFlag"
395
+ :show-close="true"
396
+ class="small-padding-dialog preview-dialog"
397
+ center
398
+ v-dialog-drag
399
+ width="65%"
400
+ :close-on-click-modal="false"
401
+ :close-on-press-escape="false"
402
+ :destroy-on-close="true"
403
+ :append-to-body="true"
404
+ :modal-append-to-body="true"
405
+ >
406
+ <el-tabs
407
+ type="border-card"
408
+ class="no-box-shadow no-padding"
409
+ v-model="activeCodeTab"
410
+ >
411
+ <el-tab-pane label="Vue" name="vue">
412
+ <code-editor
413
+ :mode="'html'"
414
+ :readonly="true"
415
+ v-model="vueCode"
416
+ :user-worker="false"
417
+ ></code-editor>
418
+ </el-tab-pane>
419
+ <el-tab-pane label="HTML" name="html">
420
+ <code-editor
421
+ :mode="'html'"
422
+ :readonly="true"
423
+ v-model="htmlCode"
424
+ :user-worker="false"
425
+ ></code-editor>
426
+ </el-tab-pane>
427
+ </el-tabs>
428
+ <div slot="footer" class="dialog-footer">
429
+ <el-button
430
+ type="primary"
431
+ class="copy-vue-btn button-sty"
432
+ :data-clipboard-text="vueCode"
433
+ @click="copyVueCode"
434
+ >
435
+ {{ i18nt("designer.hint.copyVueCode") }}
436
+ </el-button>
437
+ <el-button
438
+ type="primary"
439
+ class="copy-html-btn button-sty"
440
+ :data-clipboard-text="htmlCode"
441
+ @click="copyHtmlCode"
442
+ >{{ i18nt("designer.hint.copyHtmlCode") }}
443
+ </el-button>
444
+ <el-button @click="saveVueCode" class="button-sty">{{
445
+ i18nt("designer.hint.saveVueCode")
446
+ }}</el-button>
447
+ <el-button @click="saveHtmlCode" class="button-sty">{{
448
+ i18nt("designer.hint.saveHtmlCode")
449
+ }}</el-button>
450
+ <el-button
451
+ type=""
452
+ @click="showExportCodeDialogFlag = false"
453
+ class="button-sty"
454
+ >
455
+ {{ i18nt("designer.hint.closePreview") }}
456
+ </el-button>
457
+ </div>
458
+ </el-dialog>
459
+
460
+ <el-dialog
461
+ :title="i18nt('designer.hint.exportFormData')"
462
+ :visible.sync="showFormDataDialogFlag"
463
+ v-if="showFormDataDialogFlag"
464
+ :show-close="true"
465
+ class="dialog-title-light-bg preview-dialog"
466
+ center
467
+ v-dialog-drag
468
+ :close-on-click-modal="false"
469
+ :close-on-press-escape="false"
470
+ :destroy-on-close="true"
471
+ :append-to-body="true"
472
+ :modal-append-to-body="true"
473
+ >
474
+ <div style="border: 1px solid #dcdfe6">
475
+ <code-editor
476
+ :mode="'json'"
477
+ :readonly="true"
478
+ v-model="formDataJson"
479
+ ></code-editor>
480
+ </div>
481
+ <div slot="footer" class="dialog-footer">
482
+ <el-button
483
+ type="primary"
484
+ class="copy-form-data-json-btn button-sty"
485
+ :data-clipboard-text="formDataRawJson"
486
+ @click="copyFormDataJson"
487
+ >
488
+ {{ i18nt("designer.hint.copyFormData") }}
489
+ </el-button>
490
+ <el-button @click="saveFormData" class="button-sty">{{
491
+ i18nt("designer.hint.saveFormData")
492
+ }}</el-button>
493
+ <el-button
494
+ type=""
495
+ @click="showFormDataDialogFlag = false"
496
+ class="button-sty"
497
+ >
498
+ {{ i18nt("designer.hint.closePreview") }}
499
+ </el-button>
500
+ </div>
501
+ </el-dialog>
502
+
503
+ <el-dialog
504
+ :title="i18nt('designer.toolbar.generateSFC')"
505
+ :visible.sync="showExportSFCDialogFlag"
506
+ v-if="showExportSFCDialogFlag"
507
+ :show-close="true"
508
+ class="small-padding-dialog preview-dialog"
509
+ center
510
+ v-dialog-drag
511
+ width="65%"
512
+ :close-on-click-modal="false"
513
+ :close-on-press-escape="false"
514
+ :destroy-on-close="true"
515
+ :append-to-body="true"
516
+ :modal-append-to-body="true"
517
+ >
518
+ <el-tabs
519
+ type="border-card"
520
+ class="no-box-shadow no-padding"
521
+ v-model="activeSFCTab"
522
+ >
523
+ <el-tab-pane label="Vue2" name="vue2">
524
+ <code-editor
525
+ :mode="'html'"
526
+ :readonly="true"
527
+ v-model="sfcCode"
528
+ :user-worker="false"
529
+ ></code-editor>
530
+ </el-tab-pane>
531
+ <el-tab-pane label="Vue3" name="vue3">
532
+ <code-editor
533
+ :mode="'html'"
534
+ :readonly="true"
535
+ v-model="sfcCodeV3"
536
+ :user-worker="false"
537
+ ></code-editor>
538
+ </el-tab-pane>
539
+ </el-tabs>
540
+ <div slot="footer" class="dialog-footer">
541
+ <el-button
542
+ type="primary"
543
+ class="copy-vue2-sfc-btn button-sty"
544
+ :data-clipboard-text="sfcCode"
545
+ @click="copyV2SFC"
546
+ >{{ i18nt("designer.hint.copyVue2SFC") }}
547
+ </el-button>
548
+ <el-button
549
+ type="primary"
550
+ class="copy-vue3-sfc-btn button-sty"
551
+ :data-clipboard-text="sfcCodeV3"
552
+ @click="copyV3SFC"
553
+ >{{ i18nt("designer.hint.copyVue3SFC") }}
554
+ </el-button>
555
+ <el-button @click="saveV2SFC" class="button-sty">{{
556
+ i18nt("designer.hint.saveVue2SFC")
557
+ }}</el-button>
558
+ <el-button @click="saveV3SFC" class="button-sty">{{
559
+ i18nt("designer.hint.saveVue3SFC")
560
+ }}</el-button>
561
+ <el-button
562
+ type=""
563
+ @click="showExportSFCDialogFlag = false"
564
+ class="button-sty"
565
+ >
566
+ {{ i18nt("designer.hint.closePreview") }}
567
+ </el-button>
568
+ </div>
569
+ </el-dialog>
570
+ <el-dialog
571
+ :title="i18nt('表单编辑')"
572
+ v-if="showFormConfigDialog"
573
+ :visible.sync="showFormConfigDialog"
574
+ :modal="false"
575
+ :show-close="!0"
576
+ custom-class="dialog-style list-dialog"
577
+ :close-on-click-modal="!1"
578
+ :close-on-press-escape="!1"
579
+ :destroy-on-close="!0"
580
+ v-el-drag-dialog
581
+ v-el-dialog-center
582
+ >
583
+ <div class="cont" style="height: auto; max-height: 500px">
584
+ <el-scrollbar class="setting-scrollbar">
585
+ <form-setting
586
+ :designer="designer"
587
+ :form-config="designer.formConfig"
588
+ ></form-setting>
589
+ </el-scrollbar>
590
+ </div>
591
+ </el-dialog>
592
+ </div>
593
+ </template>
594
+
595
+ <script>
596
+ import VFormRender from "../../../../components/xform/form-render/index";
597
+ import indexMixin from "./indexMixin.js";
598
+ import FormSetting from "../../../../components/xform/form-designer/setting-panel/form-setting";
599
+
600
+ export default {
601
+ name: "ToolbarPanel",
602
+ components: {
603
+ VFormRender,
604
+ FormSetting,
605
+ },
606
+ inject: ["readonly"],
607
+ mixins: [indexMixin],
608
+ data() {
609
+ return {
610
+ defaultProps: {
611
+ label: "name", //这里是树结构中需显示的数据(即接口返回的需展示在页面上的参数)
612
+ children: [],
613
+ isLeaf: "leaf",
614
+ },
615
+ treeOption: {
616
+ title: "机构分类",
617
+ defaultProps: {
618
+ label: "name",
619
+ children: [],
620
+ isLeaf: "leaf",
621
+ },
622
+ url1: "/user/sale_org/getAllList",
623
+ url2: "/user/sale_org/getChildren",
624
+ formRewriteMap: {
625
+ saleOrgId: "id",
626
+ saleOrgName: "name",
627
+ },
628
+ preHadnleData(row) {
629
+ row.leaf = !row.hasChild;
630
+ },
631
+ treeNodeParam(row) {
632
+ return {
633
+ parent: row.id,
634
+ enabled: true,
635
+ };
636
+ },
637
+ },
638
+ };
639
+ },
640
+ methods: {
641
+ handleNodeClick(data, node, v) {
642
+ let treeOption = this.treeOption;
643
+ let formRewriteMap = treeOption.formRewriteMap || {};
644
+ let formData = {};
645
+ Object.keys(formRewriteMap).forEach((key) => {
646
+ // this.$set(this.formData, key, data[formRewriteMap[key]]);
647
+ formData[key] = data[formRewriteMap[key]];
648
+ });
649
+
650
+ this.$forceUpdate();
651
+ /*
652
+ this.searchEvent();*/
653
+ },
654
+ // 异步树叶子节点懒加载逻辑
655
+ loadNode(node, resolve) {
656
+ let treeOption = this.treeOption;
657
+ let id = node && node.data && node.data.id ? node.data.id || "" : "";
658
+ let param = (treeOption.treeNodeParam
659
+ ? treeOption.treeNodeParam(node?.data || {})
660
+ : null) || {
661
+ parent: id,
662
+ enabled: true,
663
+ };
664
+ let url = !id ? treeOption.url1 : treeOption.url2;
665
+ this.$http({
666
+ url: url,
667
+ method: "post",
668
+ data: param,
669
+ success: (res) => {
670
+ res.objx.forEach((value) => {
671
+ treeOption.preHadnleData(value);
672
+ });
673
+ resolve(res.objx);
674
+ },
675
+ });
676
+ },
677
+ },
678
+ };
679
+ </script>
680
+
681
+ <style lang="scss" scoped>
682
+ div.toolbar-container {
683
+ //min-width: 728px; /* 解决工具按钮栏换行的问题 */
684
+ /* 上一行css有问题,当窗口宽度不足时会把按钮挤出到右边的属性设置区,弃之! */
685
+ }
686
+
687
+ .left-toolbar {
688
+ float: left;
689
+ font-size: 16px;
690
+
691
+ /* 按钮组不是 .el-button,吃不到 element 的 .el-button+.el-button 间距,得自己补 */
692
+ .el-button-group {
693
+ margin-left: 10px;
694
+ }
695
+ }
696
+
697
+ .right-toolbar {
698
+ float: right;
699
+ //width: 420px;
700
+ text-align: right;
701
+ overflow: hidden;
702
+
703
+ .right-toolbar-con {
704
+ text-align: right;
705
+
706
+ .el-button {
707
+ margin-left: 15px;
708
+ margin-right: 15px;
709
+ font-size: 14px;
710
+ vertical-align: middle;
711
+
712
+ &.el-button--primary {
713
+ padding: 7px 14px;
714
+ }
715
+ }
716
+ }
717
+ }
718
+
719
+ .el-button i {
720
+ margin-right: 3px;
721
+ }
722
+
723
+ .small-padding-dialog {
724
+ ::v-deep .el-dialog__header {
725
+ //padding-top: 3px;
726
+ //padding-bottom: 3px;
727
+ background: #f1f2f3;
728
+ }
729
+
730
+ ::v-deep .el-dialog__body {
731
+ //padding: 12px 15px 12px 15px;
732
+ padding: 0;
733
+
734
+ .el-alert.alert-padding {
735
+ padding: 0 10px;
736
+ }
737
+ }
738
+
739
+ ::v-deep .ace-container {
740
+ border: 1px solid #dcdfe6;
741
+ }
742
+ }
743
+
744
+ .dialog-title-light-bg {
745
+ ::v-deep .el-dialog__header {
746
+ background: #f1f2f3;
747
+ }
748
+ }
749
+
750
+ .no-box-shadow {
751
+ box-shadow: none;
752
+ }
753
+
754
+ .no-padding.el-tabs--border-card {
755
+ ::v-deep .el-tabs__content {
756
+ padding: 0;
757
+ }
758
+ }
759
+
760
+ .form-render-wrapper {
761
+ //height: calc(100vh - 142px);
762
+ //all: revert !important; /* 防止表单继承el-dialog等外部样式,未生效,原因不明?? */
763
+ }
764
+
765
+ .form-render-wrapper.h5-layout {
766
+ margin: 0 auto;
767
+ width: 420px;
768
+ border-radius: 15px;
769
+ //border-width: 10px;
770
+ box-shadow: 0 0 1px 10px #495060;
771
+ height: calc(100vh - 142px);
772
+ overflow-y: auto;
773
+ overflow-x: hidden;
774
+ }
775
+
776
+ .form-render-wrapper.pad-layout {
777
+ margin: 0 auto;
778
+ width: 960px;
779
+ border-radius: 15px;
780
+ //border-width: 10px;
781
+ box-shadow: 0 0 1px 10px #495060;
782
+ height: calc(100vh - 125px);
783
+ overflow-y: auto;
784
+ overflow-x: hidden;
785
+ }
786
+
787
+ .node-tree-drawer ::v-deep {
788
+ .el-drawer {
789
+ padding: 10px;
790
+ overflow: auto;
791
+ }
792
+
793
+ .el-drawer__header {
794
+ margin-bottom: 12px;
795
+ padding: 5px 5px 0;
796
+ }
797
+
798
+ .el-drawer__body {
799
+ padding-left: 5px;
800
+ }
801
+ }
802
+
803
+ /*.node-tree-scroll-bar {*/
804
+ /* height: 100%;*/
805
+ /* overflow: auto;*/
806
+ /*}*/
807
+
808
+ .node-tree ::v-deep {
809
+ .el-tree > .el-tree-node:after {
810
+ border-top: none;
811
+ }
812
+
813
+ .el-tree-node {
814
+ position: relative;
815
+ padding-left: 12px;
816
+ }
817
+
818
+ .el-tree-node__content {
819
+ padding-left: 0 !important;
820
+ }
821
+
822
+ .el-tree-node__expand-icon.is-leaf {
823
+ display: none;
824
+ }
825
+
826
+ .el-tree-node__children {
827
+ padding-left: 12px;
828
+ overflow: visible !important; /* 加入此行让el-tree宽度自动撑开,超出宽度el-draw自动出现水平滚动条! */
829
+ }
830
+
831
+ .el-tree-node :last-child:before {
832
+ height: 38px;
833
+ }
834
+
835
+ .el-tree > .el-tree-node:before {
836
+ border-left: none;
837
+ }
838
+
839
+ .el-tree > .el-tree-node:after {
840
+ border-top: none;
841
+ }
842
+
843
+ .el-tree-node:before {
844
+ content: "";
845
+ left: -4px;
846
+ position: absolute;
847
+ right: auto;
848
+ border-width: 1px;
849
+ }
850
+
851
+ .el-tree-node:after {
852
+ content: "";
853
+ left: -4px;
854
+ position: absolute;
855
+ right: auto;
856
+ border-width: 1px;
857
+ }
858
+
859
+ .el-tree-node:before {
860
+ border-left: 1px dashed #4386c6;
861
+ bottom: 0px;
862
+ height: 100%;
863
+ top: -10px;
864
+ width: 1px;
865
+ }
866
+
867
+ .el-tree-node:after {
868
+ border-top: 1px dashed #4386c6;
869
+ height: 20px;
870
+ top: 12px;
871
+ width: 16px;
872
+ }
873
+
874
+ .el-tree-node.is-current > .el-tree-node__content {
875
+ background: #c2d6ea !important;
876
+ }
877
+
878
+ .el-tree-node__expand-icon {
879
+ margin-left: -3px;
880
+ padding: 6px 6px 6px 0px;
881
+ font-size: 16px;
882
+ }
883
+ }
884
+ </style>