aldehyde 0.2.480 → 0.2.481

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 (582) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +2 -2
  3. package/lib/controls/2dEditor/2dEditor/index.less +5 -5
  4. package/lib/controls/2dEditor/2dView/index.less +8 -8
  5. package/lib/controls/2dEditor/components/component.less +83 -83
  6. package/lib/controls/action/index.css +8 -8
  7. package/lib/controls/action/index.d.ts.map +1 -1
  8. package/lib/controls/chemstruc/graph.d.ts.map +1 -1
  9. package/lib/controls/chemstruc/index.css +28 -28
  10. package/lib/controls/collapse-card/index.css +8 -8
  11. package/lib/controls/collapse-card/index.d.ts.map +1 -1
  12. package/lib/controls/cquery/cquick-button.d.ts.map +1 -1
  13. package/lib/controls/entity-select/entity-select.d.ts.map +1 -1
  14. package/lib/controls/entity-select/index.css +7 -7
  15. package/lib/controls/entity-select/lab-tree-select.d.ts.map +1 -1
  16. package/lib/controls/entity-select/popover-entity-select.d.ts.map +1 -1
  17. package/lib/controls/file-view/index.less +9 -9
  18. package/lib/controls/html-editor/index.less +67 -67
  19. package/lib/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.css +147 -147
  20. package/lib/controls/password-setter/index.css +2 -2
  21. package/lib/controls/password-setter/index.d.ts.map +1 -1
  22. package/lib/controls/qr-code/index.less +28 -28
  23. package/lib/controls/relation-existion/index.css +3 -3
  24. package/lib/controls/relation-existion/index.d.ts.map +1 -1
  25. package/lib/controls/rfield/index.css +4 -4
  26. package/lib/controls/rfield/index.d.ts.map +1 -1
  27. package/lib/controls/select/index.d.ts.map +1 -1
  28. package/lib/controls/signature/index.d.ts.map +1 -1
  29. package/lib/controls/text/ellipsis-text.d.ts.map +1 -1
  30. package/lib/controls/text/index.less +7 -7
  31. package/lib/controls/upload/index.d.ts.map +1 -1
  32. package/lib/controls/upload/mult-file-upload.d.ts.map +1 -1
  33. package/lib/custom-page/dtmpl-custom-edit-modal-page.d.ts.map +1 -1
  34. package/lib/detail/button/bottom-submit-button-bar.d.ts.map +1 -1
  35. package/lib/detail/button/cquery-button-bar.d.ts.map +1 -1
  36. package/lib/detail/button/fix-right-submit-button-bar.d.ts.map +1 -1
  37. package/lib/detail/button/index.css +42 -42
  38. package/lib/detail/dtmpl.css +67 -67
  39. package/lib/detail/edit/fields-edit-card.d.ts.map +1 -1
  40. package/lib/detail/edit/modal-row-edit.d.ts.map +1 -1
  41. package/lib/detail/edit/popover-edit-card.d.ts.map +1 -1
  42. package/lib/detail/rightbar/index.css +34 -34
  43. package/lib/detail/rightbar/index.d.ts.map +1 -1
  44. package/lib/detail/view/act-dtmpl-view.d.ts.map +1 -1
  45. package/lib/detail/view/field-view-group.d.ts.map +1 -1
  46. package/lib/detail/view/modal-dtmpl-view.d.ts.map +1 -1
  47. package/lib/detail/view/snapshot-timeline.d.ts.map +1 -1
  48. package/lib/detail/view/tab-act-dtmpl-view.d.ts.map +1 -1
  49. package/lib/draw-canvas-edit/components/render/components/index.d.ts +3 -0
  50. package/lib/draw-canvas-edit/components/render/components/index.d.ts.map +1 -0
  51. package/lib/draw-canvas-edit/components/render/components/index.js +3 -0
  52. package/lib/draw-canvas-edit/components/render/components/index.js.map +1 -0
  53. package/lib/draw-canvas-edit/components/render/components/workstation-component.d.ts +31 -0
  54. package/lib/draw-canvas-edit/components/render/components/workstation-component.d.ts.map +1 -0
  55. package/lib/draw-canvas-edit/components/render/components/workstation-component.js +105 -0
  56. package/lib/draw-canvas-edit/components/render/components/workstation-component.js.map +1 -0
  57. package/lib/draw-canvas-edit/components/render/tools/component-factory.d.ts +2 -0
  58. package/lib/draw-canvas-edit/components/render/tools/component-factory.d.ts.map +1 -1
  59. package/lib/draw-canvas-edit/components/render/tools/component-factory.js +10 -42
  60. package/lib/draw-canvas-edit/components/render/tools/component-factory.js.map +1 -1
  61. package/lib/draw-canvas-edit/components/render/types.d.ts +3 -0
  62. package/lib/draw-canvas-edit/components/render/types.d.ts.map +1 -1
  63. package/lib/draw-canvas-edit/components/render/types.js.map +1 -1
  64. package/lib/draw-canvas-edit/index.less +48 -48
  65. package/lib/draw-canvas-view/index.less +59 -59
  66. package/lib/draw-canvas-view/view.d.ts.map +1 -1
  67. package/lib/draw-canvas-view/view.js +19 -6
  68. package/lib/draw-canvas-view/view.js.map +1 -1
  69. package/lib/export/export-frame.css +2 -2
  70. package/lib/export/export-frame.d.ts.map +1 -1
  71. package/lib/export/select-code-export-frame.d.ts.map +1 -1
  72. package/lib/form/dtmpl-form.css +3 -3
  73. package/lib/form/dtmpl-form.d.ts.map +1 -1
  74. package/lib/form/dtmpl-form.js +1 -1
  75. package/lib/form/dtmpl-form.js.map +1 -1
  76. package/lib/form/field-group-form.d.ts.map +1 -1
  77. package/lib/form/form-Item-group.d.ts.map +1 -1
  78. package/lib/form/index.css +12 -12
  79. package/lib/import/excel-import.d.ts.map +1 -1
  80. package/lib/import/index.css +53 -53
  81. package/lib/import/template.css +50 -50
  82. package/lib/layout/common.css +64 -64
  83. package/lib/layout/coverstyle.css +51 -51
  84. package/lib/layout/footer/index.css +5 -5
  85. package/lib/layout/header/index.css +122 -122
  86. package/lib/layout/menu/block.css +7 -7
  87. package/lib/layout/menu/block.d.ts.map +1 -1
  88. package/lib/layout/menu/l2menu-quick-bar.d.ts.map +1 -1
  89. package/lib/layout/menu/menu-2layers.d.ts.map +1 -1
  90. package/lib/layout/menu/message-bar.less +73 -73
  91. package/lib/layout/menu/reset-password.d.ts.map +1 -1
  92. package/lib/layout/menu/user-bar.d.ts.map +1 -1
  93. package/lib/layout/menu/userinfo-bar.d.ts.map +1 -1
  94. package/lib/layout/sidebar/index.css +57 -57
  95. package/lib/layout2/css/header.css +41 -41
  96. package/lib/layout2/css/sider.less +17 -17
  97. package/lib/layout2/css/tabs-layout.less +18 -18
  98. package/lib/layout3/css/header.less +195 -195
  99. package/lib/layout3/css/main.less +161 -161
  100. package/lib/layout3/css/sider.less +32 -32
  101. package/lib/layout3/css/tabs-layout.less +38 -38
  102. package/lib/layout4/css/header.less +196 -196
  103. package/lib/layout4/css/main.less +154 -154
  104. package/lib/layout4/css/sider.less +37 -37
  105. package/lib/layout4/css/tabs-layout.less +42 -42
  106. package/lib/layout5/css/header.less +35 -35
  107. package/lib/layout5/css/sider.less +18 -18
  108. package/lib/list/calendar/index.less +20 -20
  109. package/lib/list/card-list/index.less +154 -154
  110. package/lib/list/gantt/index.less +8 -8
  111. package/lib/list/vertical-list/index.less +208 -208
  112. package/lib/login/index.css +19 -19
  113. package/lib/login/login.d.ts.map +1 -1
  114. package/lib/login/vertify/index.css +143 -143
  115. package/lib/login3/index.less +136 -136
  116. package/lib/lowcode-components/act-table/index.less +26 -26
  117. package/lib/lowcode-components/base-button/index.less +7 -7
  118. package/lib/lowcode-components/base-map/index.js +6 -6
  119. package/lib/lowcode-components/base-radio/index.less +23 -23
  120. package/lib/lowcode-components/base-tabs/index.less +14 -14
  121. package/lib/lowcode-components/border/border10/index.less +26 -26
  122. package/lib/lowcode-components/border/border11/index.js +46 -46
  123. package/lib/lowcode-components/border/border11/index.less +17 -17
  124. package/lib/lowcode-components/border/border12/index.js +13 -13
  125. package/lib/lowcode-components/border/border12/index.less +13 -13
  126. package/lib/lowcode-components/border/border13/index.js +5 -5
  127. package/lib/lowcode-components/border/border13/index.less +13 -13
  128. package/lib/lowcode-components/border/border2/index.less +17 -17
  129. package/lib/lowcode-components/border/border3/index.less +25 -25
  130. package/lib/lowcode-components/border/border4/index.js +2 -2
  131. package/lib/lowcode-components/border/border4/index.less +72 -72
  132. package/lib/lowcode-components/border/border5/index.js +2 -2
  133. package/lib/lowcode-components/border/border5/index.less +35 -35
  134. package/lib/lowcode-components/border/border6/index.less +17 -17
  135. package/lib/lowcode-components/border/border7/index.less +26 -26
  136. package/lib/lowcode-components/border/border8/index.less +13 -13
  137. package/lib/lowcode-components/border/border9/index.js +14 -14
  138. package/lib/lowcode-components/border/border9/index.less +13 -13
  139. package/lib/lowcode-components/decoration/decoration1/index.less +7 -7
  140. package/lib/lowcode-components/decoration/decoration10/index.js +3 -3
  141. package/lib/lowcode-components/decoration/decoration10/index.less +5 -5
  142. package/lib/lowcode-components/decoration/decoration11/index.less +5 -5
  143. package/lib/lowcode-components/decoration/decoration2/index.less +6 -6
  144. package/lib/lowcode-components/decoration/decoration3/index.less +7 -7
  145. package/lib/lowcode-components/decoration/decoration4/index.less +29 -29
  146. package/lib/lowcode-components/decoration/decoration5/index.less +3 -3
  147. package/lib/lowcode-components/decoration/decoration6/index.less +7 -7
  148. package/lib/lowcode-components/decoration/decoration7/index.less +4 -4
  149. package/lib/lowcode-components/decoration/decoration8/index.less +14 -14
  150. package/lib/lowcode-components/decoration/decoration9/index.less +4 -4
  151. package/lib/lowcode-components/effectScatter-map/index.js +6 -6
  152. package/lib/lowcode-components/effectScatter-map-3d/index.js +6 -6
  153. package/lib/lowcode-components/lowcode-view/index.less +19 -19
  154. package/lib/lowcode-components/search-form/index.less +25 -25
  155. package/lib/module/dtmpl-edit-card.d.ts.map +1 -1
  156. package/lib/module/dtmpl-edit-page.d.ts.map +1 -1
  157. package/lib/module/index.less +4 -4
  158. package/lib/module/ltmpl-modal.d.ts.map +1 -1
  159. package/lib/module/ltmpl-table.d.ts.map +1 -1
  160. package/lib/routable/index.less +25 -25
  161. package/lib/table/act-table.d.ts.map +1 -1
  162. package/lib/table/column/index.less +63 -63
  163. package/lib/table/index.css +211 -211
  164. package/lib/table/modal-select-table.d.ts.map +1 -1
  165. package/lib/table/pagination.css +14 -14
  166. package/lib/table/pagination.d.ts.map +1 -1
  167. package/lib/table/relation-table.d.ts.map +1 -1
  168. package/lib/table/select-table.d.ts.map +1 -1
  169. package/lib/table/select-table.js +14 -2
  170. package/lib/table/select-table.js.map +1 -1
  171. package/lib/table/selected-rows-card.d.ts.map +1 -1
  172. package/lib/table/stat/restat.d.ts.map +1 -1
  173. package/lib/tree/act-tree.d.ts.map +1 -1
  174. package/lib/tree/block-menu-auth-tree.d.ts.map +1 -1
  175. package/lib/tree/index.css +22 -22
  176. package/lib/tree/tmpl-tree.d.ts.map +1 -1
  177. package/lib/welcome/components/menu-card.less +96 -96
  178. package/lib/welcome/components/page-card.less +49 -49
  179. package/lib/welcome/components/quick-entrance.less +120 -120
  180. package/lib/welcome/components/user-menus.less +192 -192
  181. package/lib/welcome/components/workbench.less +118 -118
  182. package/lib/welcome/index.css +13 -13
  183. package/package.json +223 -223
  184. package/src/aldehyde/controls/2dEditor/2dEditor/index.less +5 -5
  185. package/src/aldehyde/controls/2dEditor/2dEditor/index.tsx +270 -270
  186. package/src/aldehyde/controls/2dEditor/2dView/index.less +8 -8
  187. package/src/aldehyde/controls/2dEditor/2dView/index.tsx +110 -110
  188. package/src/aldehyde/controls/2dEditor/components/card.tsx +256 -256
  189. package/src/aldehyde/controls/2dEditor/components/component.less +83 -83
  190. package/src/aldehyde/controls/2dEditor/components/data.d.ts +32 -32
  191. package/src/aldehyde/controls/2dEditor/components/hotspot.tsx +80 -80
  192. package/src/aldehyde/controls/2dEditor/components/html-box.tsx +101 -101
  193. package/src/aldehyde/controls/2dEditor/components/image.tsx +99 -99
  194. package/src/aldehyde/controls/2dEditor/components/line.tsx +73 -73
  195. package/src/aldehyde/controls/action/index.css +8 -8
  196. package/src/aldehyde/controls/action/index.tsx +406 -406
  197. package/src/aldehyde/controls/action/utils.tsx +306 -306
  198. package/src/aldehyde/controls/auto-complete/index.tsx +82 -82
  199. package/src/aldehyde/controls/cascader/index.tsx +112 -112
  200. package/src/aldehyde/controls/chemstruc/graph.tsx +185 -185
  201. package/src/aldehyde/controls/chemstruc/index.css +28 -28
  202. package/src/aldehyde/controls/code-editor/sql-code-editor.tsx +73 -73
  203. package/src/aldehyde/controls/collapse-card/index.css +8 -8
  204. package/src/aldehyde/controls/collapse-card/index.tsx +109 -109
  205. package/src/aldehyde/controls/color-picker/index.tsx +21 -21
  206. package/src/aldehyde/controls/counting-tag/index.tsx +53 -53
  207. package/src/aldehyde/controls/cquery/cquick-button.tsx +145 -145
  208. package/src/aldehyde/controls/date-picker/index.tsx +199 -199
  209. package/src/aldehyde/controls/direct-file-view/drawer-file-view.tsx +54 -54
  210. package/src/aldehyde/controls/direct-file-view/index.tsx +145 -145
  211. package/src/aldehyde/controls/direct-upload/index.tsx +139 -139
  212. package/src/aldehyde/controls/entity-select/entity-select.tsx +791 -791
  213. package/src/aldehyde/controls/entity-select/index.css +7 -7
  214. package/src/aldehyde/controls/entity-select/lab-tree-select.tsx +154 -154
  215. package/src/aldehyde/controls/entity-select/popover-entity-select.tsx +205 -205
  216. package/src/aldehyde/controls/entry-control.tsx +418 -418
  217. package/src/aldehyde/controls/enum-badge/index.tsx +42 -42
  218. package/src/aldehyde/controls/enum-tag/index.tsx +45 -45
  219. package/src/aldehyde/controls/field-history/index.tsx +81 -81
  220. package/src/aldehyde/controls/file-export/select-code-export.tsx +40 -40
  221. package/src/aldehyde/controls/file-view/drawer-file-view.tsx +117 -117
  222. package/src/aldehyde/controls/file-view/index.less +9 -9
  223. package/src/aldehyde/controls/file-view/index.tsx +148 -148
  224. package/src/aldehyde/controls/file-view/multi-file-view.tsx +39 -39
  225. package/src/aldehyde/controls/file-view/newin-file-view.tsx +40 -40
  226. package/src/aldehyde/controls/html-editor/draft.tsx +136 -136
  227. package/src/aldehyde/controls/html-editor/index.less +67 -67
  228. package/src/aldehyde/controls/icon-selector/app-icon-selector.tsx +68 -68
  229. package/src/aldehyde/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.css +147 -147
  230. package/src/aldehyde/controls/icon-selector/icon/aldehyde-menu-icon/iconfont.json +240 -240
  231. package/src/aldehyde/controls/icon-selector/pc-icon-selector.tsx +68 -68
  232. package/src/aldehyde/controls/input-number/index.tsx +148 -148
  233. package/src/aldehyde/controls/input-range/index.tsx +59 -59
  234. package/src/aldehyde/controls/password-setter/index.css +2 -2
  235. package/src/aldehyde/controls/password-setter/index.js +88 -88
  236. package/src/aldehyde/controls/progress/index.tsx +74 -74
  237. package/src/aldehyde/controls/qr-code/index.less +28 -28
  238. package/src/aldehyde/controls/qr-code/index.tsx +40 -40
  239. package/src/aldehyde/controls/relation-existion/index.css +3 -3
  240. package/src/aldehyde/controls/relation-existion/index.tsx +144 -144
  241. package/src/aldehyde/controls/rfield/index.css +4 -4
  242. package/src/aldehyde/controls/rfield/index.tsx +225 -225
  243. package/src/aldehyde/controls/select/index.tsx +216 -216
  244. package/src/aldehyde/controls/signature/index.tsx +226 -226
  245. package/src/aldehyde/controls/single-checkbox/index.tsx +18 -18
  246. package/src/aldehyde/controls/steps/index.tsx +59 -59
  247. package/src/aldehyde/controls/text/ellipsis-text.tsx +98 -98
  248. package/src/aldehyde/controls/text/index.less +7 -7
  249. package/src/aldehyde/controls/tree-select/navigation-tree.tsx +122 -122
  250. package/src/aldehyde/controls/tree-select/tree-entity-select.tsx +121 -121
  251. package/src/aldehyde/controls/upload/index.tsx +128 -128
  252. package/src/aldehyde/controls/upload/mult-file-upload.tsx +240 -240
  253. package/src/aldehyde/controls/view-control.tsx +289 -289
  254. package/src/aldehyde/custom-page/custom-detail-modal-page.tsx +69 -69
  255. package/src/aldehyde/custom-page/custom-page-router.tsx +64 -64
  256. package/src/aldehyde/custom-page/def-custom-page.tsx +17 -17
  257. package/src/aldehyde/custom-page/dtmpl-custom-edit-modal-page.tsx +88 -88
  258. package/src/aldehyde/detail/button/bottom-submit-button-bar.tsx +91 -91
  259. package/src/aldehyde/detail/button/cquery-button-bar.tsx +144 -144
  260. package/src/aldehyde/detail/button/edit-button.tsx +61 -61
  261. package/src/aldehyde/detail/button/fix-right-submit-button-bar.tsx +186 -186
  262. package/src/aldehyde/detail/button/index.css +42 -42
  263. package/src/aldehyde/detail/button/inline-edit-button.tsx +40 -40
  264. package/src/aldehyde/detail/button/submit-button-bar.tsx +57 -57
  265. package/src/aldehyde/detail/button/view-button.tsx +64 -64
  266. package/src/aldehyde/detail/dtmpl.css +67 -67
  267. package/src/aldehyde/detail/edit/dtmpl-edit.tsx +279 -279
  268. package/src/aldehyde/detail/edit/fields-edit-card.tsx +145 -145
  269. package/src/aldehyde/detail/edit/modal-row-edit.tsx +95 -95
  270. package/src/aldehyde/detail/edit/popover-edit-card.tsx +167 -167
  271. package/src/aldehyde/detail/edit/popover-editor.tsx +70 -70
  272. package/src/aldehyde/detail/edit/post-result/index.tsx +86 -86
  273. package/src/aldehyde/detail/rightbar/index.css +34 -34
  274. package/src/aldehyde/detail/rightbar/index.tsx +92 -92
  275. package/src/aldehyde/detail/tooltipbar/index.tsx +32 -32
  276. package/src/aldehyde/detail/view/act-dtmpl-view.tsx +288 -288
  277. package/src/aldehyde/detail/view/dtmpl-view.tsx +314 -314
  278. package/src/aldehyde/detail/view/field-view-group.tsx +88 -88
  279. package/src/aldehyde/detail/view/modal-dtmpl-view.tsx +73 -73
  280. package/src/aldehyde/detail/view/snapshot-timeline.tsx +231 -231
  281. package/src/aldehyde/detail/view/tab-act-dtmpl-view.tsx +304 -304
  282. package/src/aldehyde/detail/view/view-compare-panel.tsx +57 -57
  283. package/src/aldehyde/draw-canvas-edit/components/render/components/index.ts +3 -0
  284. package/src/aldehyde/draw-canvas-edit/components/render/components/workstation-component.tsx +104 -0
  285. package/src/aldehyde/draw-canvas-edit/components/render/draws/bg-draw.ts +176 -176
  286. package/src/aldehyde/draw-canvas-edit/components/render/draws/contextmenu-draw.ts +329 -329
  287. package/src/aldehyde/draw-canvas-edit/components/render/graphs/bezier.ts +542 -542
  288. package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-outside-handlers.ts +72 -72
  289. package/src/aldehyde/draw-canvas-edit/components/render/handlers/selection-handlers.ts +396 -396
  290. package/src/aldehyde/draw-canvas-edit/components/render/index.ts +808 -808
  291. package/src/aldehyde/draw-canvas-edit/components/render/tools/attract-tool.ts +457 -457
  292. package/src/aldehyde/draw-canvas-edit/components/render/tools/component-factory.ts +270 -302
  293. package/src/aldehyde/draw-canvas-edit/components/render/tools/copy-tool.ts +244 -244
  294. package/src/aldehyde/draw-canvas-edit/components/render/tools/import-export-tool.ts +576 -576
  295. package/src/aldehyde/draw-canvas-edit/components/render/tools/index.ts +10 -10
  296. package/src/aldehyde/draw-canvas-edit/components/render/tools/position-tool.ts +191 -191
  297. package/src/aldehyde/draw-canvas-edit/components/render/tools/selection-tool.ts +140 -140
  298. package/src/aldehyde/draw-canvas-edit/components/render/types.ts +294 -291
  299. package/src/aldehyde/draw-canvas-edit/components/setting-form/index.tsx +291 -291
  300. package/src/aldehyde/draw-canvas-edit/constant.ts +5 -5
  301. package/src/aldehyde/draw-canvas-edit/index.less +48 -48
  302. package/src/aldehyde/draw-canvas-edit/index.tsx +201 -201
  303. package/src/aldehyde/draw-canvas-view/index.less +59 -59
  304. package/src/aldehyde/draw-canvas-view/index.tsx +49 -49
  305. package/src/aldehyde/draw-canvas-view/view.tsx +17 -5
  306. package/src/aldehyde/export/export-frame.css +2 -2
  307. package/src/aldehyde/export/export-frame.tsx +301 -301
  308. package/src/aldehyde/export/select-code-export-frame.tsx +212 -212
  309. package/src/aldehyde/form/criteria-form.tsx +604 -604
  310. package/src/aldehyde/form/dtmpl-form.css +3 -3
  311. package/src/aldehyde/form/dtmpl-form.tsx +552 -552
  312. package/src/aldehyde/form/field-group-form.tsx +102 -102
  313. package/src/aldehyde/form/fields-form.tsx +45 -45
  314. package/src/aldehyde/form/form-Item-group.tsx +245 -245
  315. package/src/aldehyde/form/index.css +12 -12
  316. package/src/aldehyde/hooks/use-match-route/index.tsx +62 -62
  317. package/src/aldehyde/hooks/use-tabs/index.tsx +139 -139
  318. package/src/aldehyde/hooks/useVarCssColor.ts +6 -6
  319. package/src/aldehyde/icon/aliIcon.tsx +9 -9
  320. package/src/aldehyde/icon/index.tsx +28 -28
  321. package/src/aldehyde/import/excel-import.tsx +450 -450
  322. package/src/aldehyde/import/index.css +53 -53
  323. package/src/aldehyde/import/template.css +50 -50
  324. package/src/aldehyde/index.tsx +220 -220
  325. package/src/aldehyde/layout/MainPage.tsx +334 -334
  326. package/src/aldehyde/layout/common.css +64 -64
  327. package/src/aldehyde/layout/coverstyle.css +51 -51
  328. package/src/aldehyde/layout/footer/index.css +5 -5
  329. package/src/aldehyde/layout/footer/index.js +17 -17
  330. package/src/aldehyde/layout/header/index.css +122 -122
  331. package/src/aldehyde/layout/header/index.tsx +152 -152
  332. package/src/aldehyde/layout/menu/block.css +7 -7
  333. package/src/aldehyde/layout/menu/block.tsx +174 -174
  334. package/src/aldehyde/layout/menu/l2menu-message-bar.tsx +160 -160
  335. package/src/aldehyde/layout/menu/l2menu-quick-bar.tsx +175 -175
  336. package/src/aldehyde/layout/menu/menu-2layers.tsx +117 -117
  337. package/src/aldehyde/layout/menu/menu-render.tsx +168 -168
  338. package/src/aldehyde/layout/menu/message-bar.less +73 -73
  339. package/src/aldehyde/layout/menu/reset-password.tsx +255 -255
  340. package/src/aldehyde/layout/menu/user-bar.tsx +259 -259
  341. package/src/aldehyde/layout/menu/userinfo-bar.tsx +69 -69
  342. package/src/aldehyde/layout/sidebar/index.css +57 -57
  343. package/src/aldehyde/layout/sidebar/index.tsx +84 -84
  344. package/src/aldehyde/layout2/components/icon-font.tsx +7 -7
  345. package/src/aldehyde/layout2/components/screenfull-button.tsx +21 -21
  346. package/src/aldehyde/layout2/components/search-menu.tsx +85 -85
  347. package/src/aldehyde/layout2/components/system-messages.tsx +75 -75
  348. package/src/aldehyde/layout2/components/theme-button.tsx +65 -65
  349. package/src/aldehyde/layout2/components/user-button.tsx +258 -258
  350. package/src/aldehyde/layout2/components/user-notification.tsx +74 -74
  351. package/src/aldehyde/layout2/css/header.css +41 -41
  352. package/src/aldehyde/layout2/css/sider.less +17 -17
  353. package/src/aldehyde/layout2/css/tabs-layout.less +18 -18
  354. package/src/aldehyde/layout2/header.tsx +278 -278
  355. package/src/aldehyde/layout2/layout-context.tsx +95 -95
  356. package/src/aldehyde/layout2/main.tsx +30 -30
  357. package/src/aldehyde/layout2/page.tsx +315 -315
  358. package/src/aldehyde/layout2/sider.tsx +230 -230
  359. package/src/aldehyde/layout2/tabs/tabs-context.tsx +37 -37
  360. package/src/aldehyde/layout2/tabs/tabs-layout.tsx +146 -146
  361. package/src/aldehyde/layout2/type/layout-type.ts +15 -15
  362. package/src/aldehyde/layout2/util/menu-util.tsx +125 -125
  363. package/src/aldehyde/layout3/components/tabs-layout.tsx +110 -110
  364. package/src/aldehyde/layout3/components/time.tsx +25 -25
  365. package/src/aldehyde/layout3/css/header.less +195 -195
  366. package/src/aldehyde/layout3/css/main.less +161 -161
  367. package/src/aldehyde/layout3/css/sider.less +32 -32
  368. package/src/aldehyde/layout3/css/tabs-layout.less +38 -38
  369. package/src/aldehyde/layout3/header.tsx +187 -187
  370. package/src/aldehyde/layout3/main.tsx +29 -29
  371. package/src/aldehyde/layout3/page.tsx +110 -110
  372. package/src/aldehyde/layout3/sider.tsx +198 -198
  373. package/src/aldehyde/layout4/components/tabs-layout.tsx +110 -110
  374. package/src/aldehyde/layout4/css/header.less +196 -196
  375. package/src/aldehyde/layout4/css/main.less +154 -154
  376. package/src/aldehyde/layout4/css/sider.less +37 -37
  377. package/src/aldehyde/layout4/css/tabs-layout.less +42 -42
  378. package/src/aldehyde/layout4/header.tsx +190 -190
  379. package/src/aldehyde/layout4/main.tsx +29 -29
  380. package/src/aldehyde/layout4/page.tsx +125 -125
  381. package/src/aldehyde/layout4/sider.tsx +201 -201
  382. package/src/aldehyde/layout5/css/header.less +35 -35
  383. package/src/aldehyde/layout5/css/sider.less +18 -18
  384. package/src/aldehyde/layout5/header.tsx +204 -204
  385. package/src/aldehyde/layout5/page.tsx +107 -107
  386. package/src/aldehyde/layout5/sider.tsx +235 -235
  387. package/src/aldehyde/list/calendar/index.less +20 -20
  388. package/src/aldehyde/list/calendar/index.tsx +157 -157
  389. package/src/aldehyde/list/card-list/card-list-item.tsx +111 -111
  390. package/src/aldehyde/list/card-list/index.less +154 -154
  391. package/src/aldehyde/list/card-list/index.tsx +83 -83
  392. package/src/aldehyde/list/gantt/index.less +8 -8
  393. package/src/aldehyde/list/gantt/index.tsx +508 -508
  394. package/src/aldehyde/list/vertical-list/index.less +208 -208
  395. package/src/aldehyde/list/vertical-list/index.tsx +55 -55
  396. package/src/aldehyde/list/vertical-list/item.tsx +136 -136
  397. package/src/aldehyde/locale/LocaleButton.tsx +48 -48
  398. package/src/aldehyde/locale/LocaleProvider.tsx +265 -265
  399. package/src/aldehyde/locale/langMp.ts +45 -45
  400. package/src/aldehyde/locale/translate.ts +80 -80
  401. package/src/aldehyde/locale/useLocale.ts +72 -72
  402. package/src/aldehyde/login/context-setter.tsx +130 -130
  403. package/src/aldehyde/login/index.css +19 -19
  404. package/src/aldehyde/login/login.tsx +255 -255
  405. package/src/aldehyde/login/router-login.tsx +107 -107
  406. package/src/aldehyde/login/vertify/index.css +143 -143
  407. package/src/aldehyde/login/vertify/index.tsx +360 -360
  408. package/src/aldehyde/login/vertify/tool.ts +13 -13
  409. package/src/aldehyde/login2/login-page.tsx +92 -92
  410. package/src/aldehyde/login2/login.tsx +226 -226
  411. package/src/aldehyde/login3/index.less +136 -136
  412. package/src/aldehyde/login3/login-page.tsx +71 -71
  413. package/src/aldehyde/lowcode-components/act-table/index.less +26 -26
  414. package/src/aldehyde/lowcode-components/act-table/index.tsx +139 -139
  415. package/src/aldehyde/lowcode-components/assets/lowcode-constant.tsx +12 -12
  416. package/src/aldehyde/lowcode-components/bar-chart/index.tsx +268 -268
  417. package/src/aldehyde/lowcode-components/base-button/index.less +7 -7
  418. package/src/aldehyde/lowcode-components/base-button/index.tsx +197 -197
  419. package/src/aldehyde/lowcode-components/base-image/index.tsx +220 -220
  420. package/src/aldehyde/lowcode-components/base-map/index.tsx +292 -292
  421. package/src/aldehyde/lowcode-components/base-radio/index.less +23 -23
  422. package/src/aldehyde/lowcode-components/base-radio/index.tsx +157 -157
  423. package/src/aldehyde/lowcode-components/base-table/index.tsx +268 -268
  424. package/src/aldehyde/lowcode-components/base-tabs/index.less +14 -14
  425. package/src/aldehyde/lowcode-components/base-tabs/index.tsx +183 -183
  426. package/src/aldehyde/lowcode-components/base-text/index.tsx +58 -58
  427. package/src/aldehyde/lowcode-components/border/border1/index.tsx +70 -70
  428. package/src/aldehyde/lowcode-components/border/border10/index.less +26 -26
  429. package/src/aldehyde/lowcode-components/border/border10/index.tsx +45 -45
  430. package/src/aldehyde/lowcode-components/border/border11/index.less +17 -17
  431. package/src/aldehyde/lowcode-components/border/border11/index.tsx +232 -232
  432. package/src/aldehyde/lowcode-components/border/border12/index.less +13 -13
  433. package/src/aldehyde/lowcode-components/border/border12/index.tsx +115 -115
  434. package/src/aldehyde/lowcode-components/border/border13/index.less +13 -13
  435. package/src/aldehyde/lowcode-components/border/border13/index.tsx +69 -69
  436. package/src/aldehyde/lowcode-components/border/border2/index.less +17 -17
  437. package/src/aldehyde/lowcode-components/border/border2/index.tsx +51 -51
  438. package/src/aldehyde/lowcode-components/border/border3/index.less +25 -25
  439. package/src/aldehyde/lowcode-components/border/border3/index.tsx +61 -61
  440. package/src/aldehyde/lowcode-components/border/border4/index.less +72 -72
  441. package/src/aldehyde/lowcode-components/border/border4/index.tsx +79 -79
  442. package/src/aldehyde/lowcode-components/border/border5/index.less +35 -35
  443. package/src/aldehyde/lowcode-components/border/border5/index.tsx +75 -75
  444. package/src/aldehyde/lowcode-components/border/border6/index.less +17 -17
  445. package/src/aldehyde/lowcode-components/border/border6/index.tsx +60 -60
  446. package/src/aldehyde/lowcode-components/border/border7/index.less +26 -26
  447. package/src/aldehyde/lowcode-components/border/border7/index.tsx +75 -75
  448. package/src/aldehyde/lowcode-components/border/border8/index.less +13 -13
  449. package/src/aldehyde/lowcode-components/border/border8/index.tsx +84 -84
  450. package/src/aldehyde/lowcode-components/border/border9/index.less +13 -13
  451. package/src/aldehyde/lowcode-components/border/border9/index.tsx +154 -154
  452. package/src/aldehyde/lowcode-components/capsule-bar-chart/index.tsx +290 -290
  453. package/src/aldehyde/lowcode-components/carousel/index.tsx +218 -218
  454. package/src/aldehyde/lowcode-components/circular-progress-chart/index.tsx +263 -263
  455. package/src/aldehyde/lowcode-components/column-3d-chart/index.tsx +438 -438
  456. package/src/aldehyde/lowcode-components/column-chart/index.tsx +293 -293
  457. package/src/aldehyde/lowcode-components/data-number/index.tsx +219 -219
  458. package/src/aldehyde/lowcode-components/data.d.ts +18 -18
  459. package/src/aldehyde/lowcode-components/decoration/decoration1/index.less +7 -7
  460. package/src/aldehyde/lowcode-components/decoration/decoration1/index.tsx +153 -153
  461. package/src/aldehyde/lowcode-components/decoration/decoration10/index.less +5 -5
  462. package/src/aldehyde/lowcode-components/decoration/decoration10/index.tsx +89 -89
  463. package/src/aldehyde/lowcode-components/decoration/decoration11/index.less +5 -5
  464. package/src/aldehyde/lowcode-components/decoration/decoration11/index.tsx +133 -133
  465. package/src/aldehyde/lowcode-components/decoration/decoration2/index.less +6 -6
  466. package/src/aldehyde/lowcode-components/decoration/decoration2/index.tsx +61 -61
  467. package/src/aldehyde/lowcode-components/decoration/decoration3/index.less +7 -7
  468. package/src/aldehyde/lowcode-components/decoration/decoration3/index.tsx +87 -87
  469. package/src/aldehyde/lowcode-components/decoration/decoration4/index.less +29 -29
  470. package/src/aldehyde/lowcode-components/decoration/decoration4/index.tsx +53 -53
  471. package/src/aldehyde/lowcode-components/decoration/decoration5/index.less +3 -3
  472. package/src/aldehyde/lowcode-components/decoration/decoration5/index.tsx +116 -116
  473. package/src/aldehyde/lowcode-components/decoration/decoration6/index.less +7 -7
  474. package/src/aldehyde/lowcode-components/decoration/decoration6/index.tsx +121 -121
  475. package/src/aldehyde/lowcode-components/decoration/decoration7/index.less +4 -4
  476. package/src/aldehyde/lowcode-components/decoration/decoration7/index.tsx +70 -70
  477. package/src/aldehyde/lowcode-components/decoration/decoration8/index.less +14 -14
  478. package/src/aldehyde/lowcode-components/decoration/decoration8/index.tsx +122 -122
  479. package/src/aldehyde/lowcode-components/decoration/decoration9/index.less +4 -4
  480. package/src/aldehyde/lowcode-components/decoration/decoration9/index.tsx +196 -196
  481. package/src/aldehyde/lowcode-components/effectScatter-map/index.tsx +315 -315
  482. package/src/aldehyde/lowcode-components/effectScatter-map-3d/index.tsx +419 -419
  483. package/src/aldehyde/lowcode-components/gauge-chart/index.tsx +254 -254
  484. package/src/aldehyde/lowcode-components/index.ts +130 -130
  485. package/src/aldehyde/lowcode-components/line-bar-chart/index.tsx +300 -300
  486. package/src/aldehyde/lowcode-components/line-chart/index.tsx +290 -290
  487. package/src/aldehyde/lowcode-components/liquid-chart/index.tsx +250 -250
  488. package/src/aldehyde/lowcode-components/lowcode-view/component/assets.ts +478 -478
  489. package/src/aldehyde/lowcode-components/lowcode-view/component/component-controller.ts +153 -153
  490. package/src/aldehyde/lowcode-components/lowcode-view/component/component-definition.ts +23 -23
  491. package/src/aldehyde/lowcode-components/lowcode-view/component/loading.tsx +20 -20
  492. package/src/aldehyde/lowcode-components/lowcode-view/component/util.ts +27 -27
  493. package/src/aldehyde/lowcode-components/lowcode-view/index.less +19 -19
  494. package/src/aldehyde/lowcode-components/lowcode-view/index.tsx +277 -277
  495. package/src/aldehyde/lowcode-components/lowcode-view/interface.ts +189 -189
  496. package/src/aldehyde/lowcode-components/pie-chart/index.tsx +349 -349
  497. package/src/aldehyde/lowcode-components/progress-chart/index.tsx +295 -295
  498. package/src/aldehyde/lowcode-components/radar-chart/index.tsx +322 -322
  499. package/src/aldehyde/lowcode-components/search-form/index.less +25 -25
  500. package/src/aldehyde/lowcode-components/search-form/index.tsx +121 -121
  501. package/src/aldehyde/lowcode-components/stroke-animation/index.tsx +219 -219
  502. package/src/aldehyde/module/block-menu-tree-drawer.tsx +118 -118
  503. package/src/aldehyde/module/criteria-page.tsx1 +175 -175
  504. package/src/aldehyde/module/draggable-modal.tsx +66 -66
  505. package/src/aldehyde/module/dtmpl-edit-card.tsx +437 -437
  506. package/src/aldehyde/module/dtmpl-edit-drawer.tsx +23 -23
  507. package/src/aldehyde/module/dtmpl-edit-modal.tsx +25 -25
  508. package/src/aldehyde/module/dtmpl-edit-page.tsx +558 -558
  509. package/src/aldehyde/module/dtmpl-editor.tsx +165 -165
  510. package/src/aldehyde/module/dtmpl-view-card.tsx +64 -64
  511. package/src/aldehyde/module/dtmpl-view-drawer.tsx +71 -71
  512. package/src/aldehyde/module/dtmpl-view-modal.tsx +56 -56
  513. package/src/aldehyde/module/embed-dtmpl-edit-page.tsx +137 -137
  514. package/src/aldehyde/module/index.less +4 -4
  515. package/src/aldehyde/module/ltmpl-drawer.tsx +60 -60
  516. package/src/aldehyde/module/ltmpl-modal.tsx +63 -63
  517. package/src/aldehyde/module/ltmpl-table.tsx +378 -378
  518. package/src/aldehyde/module/ttmpl-tree.tsx +47 -47
  519. package/src/aldehyde/routable/dtmpl-route.tsx +173 -173
  520. package/src/aldehyde/routable/import-route.tsx +35 -35
  521. package/src/aldehyde/routable/index.less +25 -25
  522. package/src/aldehyde/routable/ltmpl-route.tsx +539 -539
  523. package/src/aldehyde/routable/splitview-ltmpl-route.tsx +377 -377
  524. package/src/aldehyde/routable/ttmpl-route.tsx +93 -93
  525. package/src/aldehyde/routable/withroute.tsx +36 -36
  526. package/src/aldehyde/sso-Login/index.tsx +73 -73
  527. package/src/aldehyde/sso-Login/service/index.js +16 -16
  528. package/src/aldehyde/sso-Login/service/login.js +75 -75
  529. package/src/aldehyde/table/act-table.tsx +1831 -1831
  530. package/src/aldehyde/table/column/column-builder.tsx +864 -864
  531. package/src/aldehyde/table/column/column-selector.tsx +130 -130
  532. package/src/aldehyde/table/column/index.less +63 -63
  533. package/src/aldehyde/table/column/summary-builder.tsx +712 -712
  534. package/src/aldehyde/table/column/theme-color-getter.tsx +25 -25
  535. package/src/aldehyde/table/control-table-x-axis-wrapper.tsx +80 -80
  536. package/src/aldehyde/table/index.css +211 -211
  537. package/src/aldehyde/table/l2-act-table.tsx +91 -91
  538. package/src/aldehyde/table/modal-select-table.tsx +308 -308
  539. package/src/aldehyde/table/page-config-button.tsx +203 -203
  540. package/src/aldehyde/table/pagination.css +14 -14
  541. package/src/aldehyde/table/pagination.tsx +81 -81
  542. package/src/aldehyde/table/query-table.tsx +658 -658
  543. package/src/aldehyde/table/relation-table.tsx +1093 -1093
  544. package/src/aldehyde/table/report-table.tsx +125 -125
  545. package/src/aldehyde/table/resizable-table.tsx +97 -97
  546. package/src/aldehyde/table/select-table.tsx +559 -548
  547. package/src/aldehyde/table/selected-rows-card.tsx +78 -78
  548. package/src/aldehyde/table/stat/restat.tsx +122 -122
  549. package/src/aldehyde/table/table-util.tsx +25 -25
  550. package/src/aldehyde/tmpl/control-type-supportor.tsx +154 -154
  551. package/src/aldehyde/tmpl/hc-data-source.tsx +566 -566
  552. package/src/aldehyde/tmpl/hcservice-v3.tsx +1590 -1590
  553. package/src/aldehyde/tmpl/interface.tsx +919 -919
  554. package/src/aldehyde/tmpl/model-struc-v3.tsx +111 -111
  555. package/src/aldehyde/tmpl/superagent.js +146 -146
  556. package/src/aldehyde/tmpl/tmpl-config-analysis.tsx +585 -585
  557. package/src/aldehyde/tmpl/web-socket.ts +366 -366
  558. package/src/aldehyde/tree/act-tree.tsx +217 -217
  559. package/src/aldehyde/tree/block-menu-auth-tree.tsx +189 -189
  560. package/src/aldehyde/tree/index.css +22 -22
  561. package/src/aldehyde/tree/navigation-tree.tsx +39 -39
  562. package/src/aldehyde/tree/tmpl-tree.tsx +751 -751
  563. package/src/aldehyde/tree/tree-node.tsx +73 -73
  564. package/src/aldehyde/tree/tree-utils.tsx +317 -317
  565. package/src/aldehyde/units/EncryptUtils.js +37 -37
  566. package/src/aldehyde/units/image.d.ts +7 -7
  567. package/src/aldehyde/units/index.tsx +1367 -1367
  568. package/src/aldehyde/units/storage.js +2 -2
  569. package/src/aldehyde/utils/dsu.ts +27 -27
  570. package/src/aldehyde/welcome/HCWelcome.js +404 -404
  571. package/src/aldehyde/welcome/HCWelcome1.js +259 -259
  572. package/src/aldehyde/welcome/components/menu-card.less +96 -96
  573. package/src/aldehyde/welcome/components/menu-card.tsx +70 -70
  574. package/src/aldehyde/welcome/components/page-card.less +49 -49
  575. package/src/aldehyde/welcome/components/page-card.tsx +97 -97
  576. package/src/aldehyde/welcome/components/quick-entrance.less +120 -120
  577. package/src/aldehyde/welcome/components/quick-entrance.tsx +80 -80
  578. package/src/aldehyde/welcome/components/user-menus.less +192 -192
  579. package/src/aldehyde/welcome/components/user-menus.tsx +279 -279
  580. package/src/aldehyde/welcome/components/workbench.less +118 -118
  581. package/src/aldehyde/welcome/components/workbench.tsx +146 -146
  582. package/src/aldehyde/welcome/index.css +13 -13
@@ -1,558 +1,558 @@
1
- import React, { ReactNode } from "react";
2
- import {
3
- Button,
4
- Drawer,
5
- FormInstance,
6
- Modal,
7
- Popconfirm,
8
- Space,
9
- Card,
10
- } from "antd";
11
- import {
12
- DtmplBaseProps,
13
- DtmplConfig,
14
- DtmplData,
15
- PageType,
16
- } from "../tmpl/interface";
17
- import DtmplForm from "../form/dtmpl-form";
18
- import HCDataSource from "../tmpl/hc-data-source";
19
- import Units from "../units";
20
- import HcserviceV3 from "../tmpl/hcservice-v3";
21
- import Action from "../controls/action";
22
- import Scrollbars from "react-custom-scrollbars";
23
- import Draggable from 'react-draggable';
24
- import DraggableModal from "./draggable-modal";
25
- import TmplConfigAnalysis from "../tmpl/tmpl-config-analysis";
26
- import { LocaleContext } from "../locale/LocaleProvider";
27
-
28
-
29
- interface ModalEditorProps extends DtmplBaseProps {
30
- height?: any;
31
- bodyWidth?: number | string;
32
- width?: number;
33
- open: boolean;
34
- onOk: (code: string, isContinueSave?: boolean) => void;
35
- onCancel: () => void;
36
- pageType: PageType;
37
- placement?: "top" | "right" | "bottom" | "left";
38
- title?: ReactNode;
39
- extendButtons?: ReactNode[];
40
- }
41
-
42
- interface ModalEditorState {
43
- id?: string;
44
- queryingCode?: string;
45
- dtmplConfig?: DtmplConfig;
46
- loading?: boolean;
47
- serial?: number;
48
- dtmplData?: DtmplData;
49
- valueFieldMap?: { [key: string]: any };
50
- isContinueSave?: boolean; // 是否连续保存
51
- btnLoading?: string; // 按钮loading控制
52
- drawerSize?: number | string; // 抽屉组件尺寸
53
- }
54
-
55
- export default class DtmplEditPage extends React.PureComponent<
56
- ModalEditorProps,
57
- ModalEditorState
58
- > {
59
- formRef = React.createRef<FormInstance>();
60
- autoSaveTimer = -1000000000000000;
61
- autoSaveInterval = undefined;
62
-
63
- static contextType = LocaleContext;
64
- context: React.ContextType<typeof LocaleContext>;
65
-
66
- onClickBody = (e) => {
67
- // console.log(e);
68
- //console.log("点击了我" + this.autoSaveTimer);
69
- this.autoSaveTimer = 0;
70
- };
71
- static defaultProps = {
72
- showConfirm: true,
73
- height: "76vh",
74
- width: "76vw",
75
- bodyWidth: "100%",
76
- //antd modal
77
- forceRender: true,
78
- style: { maxWidth: "calc(100vw - 60px)", maxHeight: "calc(100vh - 50px)" },
79
- okText: "确定",
80
- cancelText: "取消",
81
- pageType: "modal",
82
- placement: "left",
83
- };
84
- state = {
85
- id: "modelDtmplEdit" + Units.getRandomNum(6),
86
- dtmplConfig: undefined,
87
- queryingCode: undefined,
88
- loading: false,
89
- serial: 1,
90
- dtmplData: undefined,
91
- valueFieldMap: {},
92
- isContinueSave: false, // 是否连续保存
93
- btnLoading: "",
94
- drawerSize: 0
95
- };
96
-
97
- async componentDidMount() {
98
- const { height, width } = this.props;
99
- const placement = this.props.placement || 'left';
100
- this.setState({ drawerSize: ["top", "bottom"].includes(placement) ? height : width });
101
- if (this.props.open) {
102
- await this.loadConfigData();
103
- }
104
- }
105
-
106
- async componentDidUpdate(prevProps) {
107
- const { dtmplConfig } = this.state;
108
- //debugger
109
- if (prevProps && prevProps != this.props) {
110
- if (
111
- prevProps.sourceId != this.props.sourceId ||
112
- prevProps.code != this.props.code ||
113
- prevProps.addTmplId != this.props.addTmplId ||
114
- !dtmplConfig || dtmplConfig == 'null'
115
- ) {
116
- await this.loadConfigData();
117
- } else {
118
- await this.loadData(dtmplConfig);
119
- }
120
- }
121
- }
122
-
123
- componentWillUnmount(): void {
124
- if (this.autoSaveInterval) {
125
- clearInterval(this.autoSaveInterval);
126
- }
127
- }
128
-
129
- loadConfigData = async () => {
130
- const { sourceId, open, code, serverKey, addTmplId } = this.props;
131
- this.setState({
132
- loading: true,
133
- });
134
- let dtmplConfig = undefined;
135
- if (code) {
136
- dtmplConfig = await HCDataSource.requestDtmplConfig(
137
- serverKey,
138
- sourceId,
139
- code
140
- );
141
- } else {
142
- dtmplConfig = await HCDataSource.requestAddDtmplConfig(
143
- serverKey,
144
- sourceId,
145
- addTmplId
146
- );
147
- }
148
- this.handleRelValueField(dtmplConfig);
149
- // 直接复制
150
- if (dtmplConfig?.entity && dtmplConfig?.entity?.code == code) {
151
- let dtmplData = dtmplConfig.entity;
152
- dtmplConfig.entity = undefined;
153
- this.setState({
154
- dtmplData,
155
- id: code,
156
- loading: false,
157
- });
158
- } else {
159
- await this.loadData(dtmplConfig);
160
- }
161
- this.setState({
162
- dtmplConfig,
163
- loading: false,
164
- });
165
- };
166
-
167
- // 表单关联项secondCriterion处理start
168
- getSubDtmplData = async (valueField, code) => {
169
- const { serverKey } = this.props;
170
- const dtmplData = await HcserviceV3.requestDtmplData(serverKey, valueField.id, code.split("@R@")[0], null);
171
- const subField = valueField.subRelValueField;
172
- const subData = dtmplData.fieldMap[subField.id];
173
- if (subField.subRelValueField && subData) { // 存在下级关联项
174
- return this.getSubDtmplData(subField, subData);
175
- }
176
- return subData;
177
- }
178
-
179
- getSecondCriteria = async (field) => {
180
- const { parentFormInstance } = this.props;
181
- const { relValueField, relValueField3, baseCriteria = {} } = field;
182
- const temForm = parentFormInstance || this.formRef.current;
183
- if (relValueField && temForm) {
184
- let relValueData = temForm.getFieldValue(relValueField.id);
185
- if (relValueField.subRelValueField && relValueData) {
186
- relValueData = await this.getSubDtmplData(relValueField, relValueData);
187
- }
188
- field.baseCriteria = { ...(baseCriteria || {}), "secondCriterion": relValueData };
189
- field.configChanged = true;
190
- }
191
- if (relValueField3 && temForm) {
192
- let relValueData = temForm.getFieldValue(relValueField3.id);
193
- if (relValueField3.subRelValueField && relValueData) {
194
- relValueData = await this.getSubDtmplData(relValueField3, relValueData);
195
- }
196
- field.baseCriteria = { ...(field.baseCriteria || {}), "thirdCriterion": relValueData };
197
- field.configChanged = true;
198
- }
199
- return field;
200
- }
201
- // 表单关联项secondCriterion处理end
202
-
203
- loadData = async (dtmplConfig: DtmplConfig) => {
204
- const {
205
- sourceId,
206
- code: propsCode,
207
- defaultDtmplData,
208
- open,
209
- serverKey,
210
- codeSource
211
- } = this.props;
212
-
213
- if (!open) {
214
- return;
215
- }
216
-
217
- if (dtmplConfig?.autoSaveInterval && dtmplConfig?.autoSaveInterval > 0) {
218
- if (this.autoSaveInterval) {
219
- clearInterval(this.autoSaveInterval);
220
- }
221
- this.autoSaveInterval = setInterval(() => {
222
- if (this.autoSaveTimer >= dtmplConfig.autoSaveInterval) {
223
- //console.log('执行自动保存');
224
- this.autoSaveTimer = -1000000000000000;
225
- this.setState({ btnLoading: "saveLoading" });
226
- this.doSubmit(undefined);
227
- } else {
228
- this.autoSaveTimer = this.autoSaveTimer + 1;
229
- }
230
- }, 1000);
231
- }
232
-
233
- let code = propsCode;
234
- if (!code && codeSource) {
235
- code = await HcserviceV3.queryCode(sourceId, codeSource, serverKey);
236
- }
237
-
238
- if (code) {
239
- this.setState({
240
- loading: true,
241
- queryingCode: code,
242
- dtmplData: undefined,
243
- });
244
-
245
- const dtmplData_: DtmplData = await HcserviceV3.getDtmplData(
246
- dtmplConfig,
247
- serverKey,
248
- sourceId,
249
- code
250
- );
251
-
252
- if ((!this.state.queryingCode || this.state.queryingCode == dtmplData_.code) &&
253
- (!dtmplData_.sourceId || (this.props.sourceId == dtmplData_.sourceId))) {
254
- this.setState({
255
- dtmplData: dtmplData_,
256
- id: code,
257
- });
258
- }
259
- this.setState({
260
- loading: false,
261
- });
262
- } else if (defaultDtmplData) {
263
- this.setState({
264
- dtmplData: defaultDtmplData,
265
- loading: false,
266
- });
267
- } else {
268
- this.setState({
269
- dtmplData: {
270
- code: undefined,
271
- title: undefined,
272
- fieldMap: {},
273
- arrayMap: {},
274
- },
275
- loading: false,
276
- });
277
- }
278
- setTimeout(() => this.onValuesChange(), 300);
279
- };
280
-
281
- /**
282
- * 处理表单关联项
283
- * 匹配关联项的字段,实现值更新关联字段值变化
284
- */
285
- handleRelValueField = (dtmplConfig: DtmplConfig) => {
286
- if(!dtmplConfig){
287
- return;
288
- }
289
- const { groups } = dtmplConfig;
290
- const valueFieldMap = groups.reduce((total, item) => {
291
- if (item.fields) {
292
- item.fields.forEach(field => {
293
- if (field.relValueField) { // 关联取值字段
294
- const temArr = total[field.relValueField.id] || [];
295
- const isSameGroup = item.fields.some(f => f.id === field.relValueField.id);
296
- const temField = isSameGroup ? field : item;
297
- const isItem = temArr.find(r => r.id === temField.id);
298
- if (!isItem) {
299
- total[field.relValueField.id] = [...temArr, temField];
300
- }
301
- }
302
- if (field.relValueField3) { // 关联取值字段扩1
303
- const temArr = total[field.relValueField3.id] || [];
304
- const isSameGroup = item.fields.some(f => f.id === field.relValueField3.id);
305
- const temField = isSameGroup ? field : item;
306
- const isItem = temArr.find(r => r.id === temField.id);
307
- if (!isItem) {
308
- total[field.relValueField3.id] = [...temArr, temField];
309
- }
310
- }
311
- })
312
- }
313
- return total;
314
- }, {});
315
- this.setState({ valueFieldMap });
316
- };
317
-
318
- //关联取值:根据 parentFormInstance / this.formRef 完善 dtmplConfig
319
- handleBuildInFuncFields = async () => {
320
- const { dtmplConfig } = this.state;
321
- if (dtmplConfig) {
322
- if (!dtmplConfig.buildInFuncFields) {
323
- dtmplConfig.buildInFuncFields = TmplConfigAnalysis.buildInFuncFields(dtmplConfig);
324
- }
325
- dtmplConfig.buildInFuncFields = await Promise.all(dtmplConfig.buildInFuncFields.map(field => this.getSecondCriteria(field)));
326
- }
327
- }
328
-
329
- onValuesChange = (changedValues?: any, allValues?: any) => {
330
- const { dtmplData, valueFieldMap, dtmplConfig } = this.state;
331
- this.handleBuildInFuncFields();
332
- const { groups } = dtmplConfig;
333
- const changeValKey = Object.keys(changedValues || {})[0];
334
- const clearValues = {}; // 清空关联字段值
335
- if (changeValKey && valueFieldMap[changeValKey]) {
336
- // 处理关联字段值变化, 表单值变化,处理关联字段值为空
337
- const temArrayMap = valueFieldMap[changeValKey].reduce((total, item) => {
338
- if (groups.some(g => g.id === item.id)) {
339
- total[item.id] = []; // 清空关联字段组
340
- } else {
341
- clearValues[item.id] = undefined;
342
- }
343
- return total;
344
- }, {});
345
- this.setState({ dtmplData: { ...dtmplData, fieldMap: { ...allValues, ...clearValues }, arrayMap: { ...dtmplData.arrayMap, ...temArrayMap } } });
346
- }
347
- this.setState({ serial: this.state.serial + 1 });
348
- };
349
-
350
- doSubmit = (actionId?: number, codes?: string[], params?: object, isContinue?: boolean) => {
351
- const { mainCode } = this.props;
352
- //if (actionId) {
353
- this.formRef.current.setFieldsValue({ actionId: actionId });
354
- // }
355
- if (mainCode) {
356
- this.formRef.current.setFieldsValue({ mainCode: mainCode });
357
- }
358
- if (params) {
359
- this.formRef.current.setFieldsValue(params);
360
- }
361
- this.formRef.current.submit();
362
- this.setState({ isContinueSave: isContinue });
363
- };
364
-
365
- getFooter = () => {
366
- const { onCancel, serverKey } = this.props;
367
- const { dtmplData, serial, loading, btnLoading } = this.state;
368
- const footerButtons = [];
369
- const { dtmplConfig } = this.state;
370
- const { saveBtnTitle, continueSaveBtnTitle } = dtmplConfig || {};
371
- const { translate } = this.context;
372
- if (dtmplConfig?.buttons?.includes("dtmplSave")) {
373
- footerButtons.unshift(
374
- <Button type="primary" loading={loading || btnLoading === "saveLoading"} onClick={() => {
375
- this.setState({ btnLoading: "saveLoading" });
376
- this.doSubmit();
377
- }}>
378
- {translate("${" + (saveBtnTitle || "保存") + "}")}
379
- </Button>
380
- );
381
- if (continueSaveBtnTitle) {
382
- footerButtons.unshift(
383
- <Button type="primary" loading={loading || btnLoading === "continueSaveLoading"} onClick={() => {
384
- this.setState({ btnLoading: "continueSaveLoading" });
385
- this.doSubmit(null, null, null, true);
386
- }}>
387
- {translate("${" + continueSaveBtnTitle + "}")}
388
- </Button>
389
- );
390
- }
391
- }
392
- //处理action
393
- if (dtmplConfig) {
394
- dtmplConfig.actions.forEach((ac, index) => {
395
- footerButtons.unshift(
396
- <Action
397
- serverKey={serverKey}
398
- iconType={"icon-title"}
399
- hiddenType={"disabled"}
400
- serial={serial}
401
- key={ac.id}
402
- data={[dtmplData]}
403
- formRef={this.formRef}
404
- actionConfig={ac}
405
- doAction={(...val) => {
406
- this.setState({ btnLoading: `actionLoading${index}` });
407
- this.doSubmit(...val);
408
- }}
409
- loading={loading || btnLoading === `actionLoading${index}`}
410
- />
411
- );
412
- });
413
- }
414
- footerButtons.unshift(
415
- <Popconfirm
416
- key="back"
417
- placement="topLeft"
418
- title={translate("${确定要取消本次修改内容吗}?")}
419
- onConfirm={onCancel}
420
- okText={translate("${确定}")}
421
- cancelText={translate("${取消}")}
422
- >
423
- <Button>{translate("${取消}")}</Button>
424
- </Popconfirm>
425
- );
426
- return footerButtons;
427
- };
428
-
429
- onFinish = (code) => {
430
- const { code: propsCode } = this.props;
431
- const { isContinueSave } = this.state;
432
- this.setState({ loading: false, btnLoading: "" });
433
- if (code) {
434
- if (propsCode && isContinueSave) {
435
- this.loadConfigData();
436
- } else {
437
- this.props.onOk(code, isContinueSave);
438
- }
439
- }
440
- }
441
-
442
- render() {
443
- const {
444
- height,
445
- onCancel,
446
- sourceId,
447
- open,
448
- mainCode,
449
- width,
450
- pageType,
451
- maxColsOnRow,
452
- title,
453
- serverKey, parentFormInstance
454
- } = this.props;
455
- const { dtmplConfig, id, dtmplData, valueFieldMap, drawerSize } = this.state;
456
- const placement = this.props.placement || "left";
457
- const maxSize = ["top", "bottom"].includes(placement) ? document.documentElement.clientHeight : document.documentElement.clientWidth * 0.9;
458
-
459
- let title1 = title ? title : dtmplConfig ? dtmplConfig.title : "";
460
- const { translate } = this.context;
461
- //判断是不是 字符串
462
- if (typeof title1 === "string") {
463
- title1 = translate("${" + title1 + "}");
464
- }
465
-
466
- return (
467
- <>
468
- {pageType === "modal" ? (
469
- // <Draggable handle=".ant-modal-header">
470
- <DraggableModal
471
- open={open}
472
- width={width}
473
- title={title1}
474
- closable={false}
475
- styles={{ body: { height: height, overflow: "auto" } }}
476
- destroyOnHidden={true}
477
- centered
478
- onCancel={onCancel}
479
- footer={this.getFooter()}
480
- children={<Scrollbars autoHide autoHideTimeout={1000}>
481
- <div onClick={this.onClickBody}>
482
- <DtmplForm
483
- serverKey={serverKey}
484
- mainCode={mainCode}
485
- parentId={id}
486
- dtmplConfig={dtmplConfig}
487
- formRef={this.formRef}
488
- sourceId={sourceId}
489
- onFinish={this.onFinish}
490
- maxColsOnRow={maxColsOnRow}
491
- showConfirm={false}
492
- dtmplData={dtmplData}
493
- onValuesChange={this.onValuesChange}
494
- parentFormInstance={parentFormInstance}
495
- valueFieldMap={valueFieldMap}
496
- />
497
- </div>
498
- </Scrollbars>}
499
- >
500
- </DraggableModal>
501
- // </Draggable>
502
- ) : pageType === "drawer" ? (
503
- <Drawer
504
- onClick={this.onClickBody}
505
- title={title1}
506
- placement={placement}
507
- resizable={{ onResize: (newSize => this.setState({ drawerSize: newSize })) }}
508
- size={drawerSize}
509
- maxSize={maxSize}
510
- closable={true}
511
- mask={false}
512
- onClose={onCancel}
513
- open={open}
514
- style={{ border: "2px solid #d9d9d9" }}
515
- extra={<Space>{this.getFooter()}</Space>}
516
- styles={{ body: { minWidth: width ? width - 4 : 0 } }}
517
- >
518
- <div style={{ width: '100%' }}>
519
- <DtmplForm
520
- serverKey={serverKey}
521
- mainCode={mainCode}
522
- parentId={id}
523
- dtmplConfig={dtmplConfig}
524
- formRef={this.formRef}
525
- sourceId={sourceId}
526
- onFinish={this.onFinish}
527
- maxColsOnRow={maxColsOnRow}
528
- showConfirm={false}
529
- dtmplData={dtmplData}
530
- onValuesChange={this.onValuesChange}
531
- parentFormInstance={parentFormInstance}
532
- valueFieldMap={valueFieldMap}
533
- />
534
- </div>
535
- </Drawer>
536
- ) : (
537
- <Card title={title1}>
538
- <DtmplForm
539
- serverKey={serverKey}
540
- mainCode={mainCode}
541
- parentId={id}
542
- dtmplConfig={dtmplConfig}
543
- formRef={this.formRef}
544
- sourceId={sourceId}
545
- onFinish={this.onFinish}
546
- maxColsOnRow={maxColsOnRow}
547
- showConfirm={false}
548
- dtmplData={dtmplData}
549
- onValuesChange={this.onValuesChange}
550
- parentFormInstance={parentFormInstance}
551
- valueFieldMap={valueFieldMap}
552
- />
553
- </Card>
554
- )}
555
- </>
556
- );
557
- }
558
- }
1
+ import React, { ReactNode } from "react";
2
+ import {
3
+ Button,
4
+ Drawer,
5
+ FormInstance,
6
+ Modal,
7
+ Popconfirm,
8
+ Space,
9
+ Card,
10
+ } from "antd";
11
+ import {
12
+ DtmplBaseProps,
13
+ DtmplConfig,
14
+ DtmplData,
15
+ PageType,
16
+ } from "../tmpl/interface";
17
+ import DtmplForm from "../form/dtmpl-form";
18
+ import HCDataSource from "../tmpl/hc-data-source";
19
+ import Units from "../units";
20
+ import HcserviceV3 from "../tmpl/hcservice-v3";
21
+ import Action from "../controls/action";
22
+ import Scrollbars from "react-custom-scrollbars";
23
+ import Draggable from 'react-draggable';
24
+ import DraggableModal from "./draggable-modal";
25
+ import TmplConfigAnalysis from "../tmpl/tmpl-config-analysis";
26
+ import { LocaleContext } from "../locale/LocaleProvider";
27
+
28
+
29
+ interface ModalEditorProps extends DtmplBaseProps {
30
+ height?: any;
31
+ bodyWidth?: number | string;
32
+ width?: number;
33
+ open: boolean;
34
+ onOk: (code: string, isContinueSave?: boolean) => void;
35
+ onCancel: () => void;
36
+ pageType: PageType;
37
+ placement?: "top" | "right" | "bottom" | "left";
38
+ title?: ReactNode;
39
+ extendButtons?: ReactNode[];
40
+ }
41
+
42
+ interface ModalEditorState {
43
+ id?: string;
44
+ queryingCode?: string;
45
+ dtmplConfig?: DtmplConfig;
46
+ loading?: boolean;
47
+ serial?: number;
48
+ dtmplData?: DtmplData;
49
+ valueFieldMap?: { [key: string]: any };
50
+ isContinueSave?: boolean; // 是否连续保存
51
+ btnLoading?: string; // 按钮loading控制
52
+ drawerSize?: number | string; // 抽屉组件尺寸
53
+ }
54
+
55
+ export default class DtmplEditPage extends React.PureComponent<
56
+ ModalEditorProps,
57
+ ModalEditorState
58
+ > {
59
+ formRef = React.createRef<FormInstance>();
60
+ autoSaveTimer = -1000000000000000;
61
+ autoSaveInterval = undefined;
62
+
63
+ static contextType = LocaleContext;
64
+ context: React.ContextType<typeof LocaleContext>;
65
+
66
+ onClickBody = (e) => {
67
+ // console.log(e);
68
+ //console.log("点击了我" + this.autoSaveTimer);
69
+ this.autoSaveTimer = 0;
70
+ };
71
+ static defaultProps = {
72
+ showConfirm: true,
73
+ height: "76vh",
74
+ width: "76vw",
75
+ bodyWidth: "100%",
76
+ //antd modal
77
+ forceRender: true,
78
+ style: { maxWidth: "calc(100vw - 60px)", maxHeight: "calc(100vh - 50px)" },
79
+ okText: "确定",
80
+ cancelText: "取消",
81
+ pageType: "modal",
82
+ placement: "left",
83
+ };
84
+ state = {
85
+ id: "modelDtmplEdit" + Units.getRandomNum(6),
86
+ dtmplConfig: undefined,
87
+ queryingCode: undefined,
88
+ loading: false,
89
+ serial: 1,
90
+ dtmplData: undefined,
91
+ valueFieldMap: {},
92
+ isContinueSave: false, // 是否连续保存
93
+ btnLoading: "",
94
+ drawerSize: 0
95
+ };
96
+
97
+ async componentDidMount() {
98
+ const { height, width } = this.props;
99
+ const placement = this.props.placement || 'left';
100
+ this.setState({ drawerSize: ["top", "bottom"].includes(placement) ? height : width });
101
+ if (this.props.open) {
102
+ await this.loadConfigData();
103
+ }
104
+ }
105
+
106
+ async componentDidUpdate(prevProps) {
107
+ const { dtmplConfig } = this.state;
108
+ //debugger
109
+ if (prevProps && prevProps != this.props) {
110
+ if (
111
+ prevProps.sourceId != this.props.sourceId ||
112
+ prevProps.code != this.props.code ||
113
+ prevProps.addTmplId != this.props.addTmplId ||
114
+ !dtmplConfig || dtmplConfig == 'null'
115
+ ) {
116
+ await this.loadConfigData();
117
+ } else {
118
+ await this.loadData(dtmplConfig);
119
+ }
120
+ }
121
+ }
122
+
123
+ componentWillUnmount(): void {
124
+ if (this.autoSaveInterval) {
125
+ clearInterval(this.autoSaveInterval);
126
+ }
127
+ }
128
+
129
+ loadConfigData = async () => {
130
+ const { sourceId, open, code, serverKey, addTmplId } = this.props;
131
+ this.setState({
132
+ loading: true,
133
+ });
134
+ let dtmplConfig = undefined;
135
+ if (code) {
136
+ dtmplConfig = await HCDataSource.requestDtmplConfig(
137
+ serverKey,
138
+ sourceId,
139
+ code
140
+ );
141
+ } else {
142
+ dtmplConfig = await HCDataSource.requestAddDtmplConfig(
143
+ serverKey,
144
+ sourceId,
145
+ addTmplId
146
+ );
147
+ }
148
+ this.handleRelValueField(dtmplConfig);
149
+ // 直接复制
150
+ if (dtmplConfig?.entity && dtmplConfig?.entity?.code == code) {
151
+ let dtmplData = dtmplConfig.entity;
152
+ dtmplConfig.entity = undefined;
153
+ this.setState({
154
+ dtmplData,
155
+ id: code,
156
+ loading: false,
157
+ });
158
+ } else {
159
+ await this.loadData(dtmplConfig);
160
+ }
161
+ this.setState({
162
+ dtmplConfig,
163
+ loading: false,
164
+ });
165
+ };
166
+
167
+ // 表单关联项secondCriterion处理start
168
+ getSubDtmplData = async (valueField, code) => {
169
+ const { serverKey } = this.props;
170
+ const dtmplData = await HcserviceV3.requestDtmplData(serverKey, valueField.id, code.split("@R@")[0], null);
171
+ const subField = valueField.subRelValueField;
172
+ const subData = dtmplData.fieldMap[subField.id];
173
+ if (subField.subRelValueField && subData) { // 存在下级关联项
174
+ return this.getSubDtmplData(subField, subData);
175
+ }
176
+ return subData;
177
+ }
178
+
179
+ getSecondCriteria = async (field) => {
180
+ const { parentFormInstance } = this.props;
181
+ const { relValueField, relValueField3, baseCriteria = {} } = field;
182
+ const temForm = parentFormInstance || this.formRef.current;
183
+ if (relValueField && temForm) {
184
+ let relValueData = temForm.getFieldValue(relValueField.id);
185
+ if (relValueField.subRelValueField && relValueData) {
186
+ relValueData = await this.getSubDtmplData(relValueField, relValueData);
187
+ }
188
+ field.baseCriteria = { ...(baseCriteria || {}), "secondCriterion": relValueData };
189
+ field.configChanged = true;
190
+ }
191
+ if (relValueField3 && temForm) {
192
+ let relValueData = temForm.getFieldValue(relValueField3.id);
193
+ if (relValueField3.subRelValueField && relValueData) {
194
+ relValueData = await this.getSubDtmplData(relValueField3, relValueData);
195
+ }
196
+ field.baseCriteria = { ...(field.baseCriteria || {}), "thirdCriterion": relValueData };
197
+ field.configChanged = true;
198
+ }
199
+ return field;
200
+ }
201
+ // 表单关联项secondCriterion处理end
202
+
203
+ loadData = async (dtmplConfig: DtmplConfig) => {
204
+ const {
205
+ sourceId,
206
+ code: propsCode,
207
+ defaultDtmplData,
208
+ open,
209
+ serverKey,
210
+ codeSource
211
+ } = this.props;
212
+
213
+ if (!open) {
214
+ return;
215
+ }
216
+
217
+ if (dtmplConfig?.autoSaveInterval && dtmplConfig?.autoSaveInterval > 0) {
218
+ if (this.autoSaveInterval) {
219
+ clearInterval(this.autoSaveInterval);
220
+ }
221
+ this.autoSaveInterval = setInterval(() => {
222
+ if (this.autoSaveTimer >= dtmplConfig.autoSaveInterval) {
223
+ //console.log('执行自动保存');
224
+ this.autoSaveTimer = -1000000000000000;
225
+ this.setState({ btnLoading: "saveLoading" });
226
+ this.doSubmit(undefined);
227
+ } else {
228
+ this.autoSaveTimer = this.autoSaveTimer + 1;
229
+ }
230
+ }, 1000);
231
+ }
232
+
233
+ let code = propsCode;
234
+ if (!code && codeSource) {
235
+ code = await HcserviceV3.queryCode(sourceId, codeSource, serverKey);
236
+ }
237
+
238
+ if (code) {
239
+ this.setState({
240
+ loading: true,
241
+ queryingCode: code,
242
+ dtmplData: undefined,
243
+ });
244
+
245
+ const dtmplData_: DtmplData = await HcserviceV3.getDtmplData(
246
+ dtmplConfig,
247
+ serverKey,
248
+ sourceId,
249
+ code
250
+ );
251
+
252
+ if ((!this.state.queryingCode || this.state.queryingCode == dtmplData_.code) &&
253
+ (!dtmplData_.sourceId || (this.props.sourceId == dtmplData_.sourceId))) {
254
+ this.setState({
255
+ dtmplData: dtmplData_,
256
+ id: code,
257
+ });
258
+ }
259
+ this.setState({
260
+ loading: false,
261
+ });
262
+ } else if (defaultDtmplData) {
263
+ this.setState({
264
+ dtmplData: defaultDtmplData,
265
+ loading: false,
266
+ });
267
+ } else {
268
+ this.setState({
269
+ dtmplData: {
270
+ code: undefined,
271
+ title: undefined,
272
+ fieldMap: {},
273
+ arrayMap: {},
274
+ },
275
+ loading: false,
276
+ });
277
+ }
278
+ setTimeout(() => this.onValuesChange(), 300);
279
+ };
280
+
281
+ /**
282
+ * 处理表单关联项
283
+ * 匹配关联项的字段,实现值更新关联字段值变化
284
+ */
285
+ handleRelValueField = (dtmplConfig: DtmplConfig) => {
286
+ if(!dtmplConfig){
287
+ return;
288
+ }
289
+ const { groups } = dtmplConfig;
290
+ const valueFieldMap = groups.reduce((total, item) => {
291
+ if (item.fields) {
292
+ item.fields.forEach(field => {
293
+ if (field.relValueField) { // 关联取值字段
294
+ const temArr = total[field.relValueField.id] || [];
295
+ const isSameGroup = item.fields.some(f => f.id === field.relValueField.id);
296
+ const temField = isSameGroup ? field : item;
297
+ const isItem = temArr.find(r => r.id === temField.id);
298
+ if (!isItem) {
299
+ total[field.relValueField.id] = [...temArr, temField];
300
+ }
301
+ }
302
+ if (field.relValueField3) { // 关联取值字段扩1
303
+ const temArr = total[field.relValueField3.id] || [];
304
+ const isSameGroup = item.fields.some(f => f.id === field.relValueField3.id);
305
+ const temField = isSameGroup ? field : item;
306
+ const isItem = temArr.find(r => r.id === temField.id);
307
+ if (!isItem) {
308
+ total[field.relValueField3.id] = [...temArr, temField];
309
+ }
310
+ }
311
+ })
312
+ }
313
+ return total;
314
+ }, {});
315
+ this.setState({ valueFieldMap });
316
+ };
317
+
318
+ //关联取值:根据 parentFormInstance / this.formRef 完善 dtmplConfig
319
+ handleBuildInFuncFields = async () => {
320
+ const { dtmplConfig } = this.state;
321
+ if (dtmplConfig) {
322
+ if (!dtmplConfig.buildInFuncFields) {
323
+ dtmplConfig.buildInFuncFields = TmplConfigAnalysis.buildInFuncFields(dtmplConfig);
324
+ }
325
+ dtmplConfig.buildInFuncFields = await Promise.all(dtmplConfig.buildInFuncFields.map(field => this.getSecondCriteria(field)));
326
+ }
327
+ }
328
+
329
+ onValuesChange = (changedValues?: any, allValues?: any) => {
330
+ const { dtmplData, valueFieldMap, dtmplConfig } = this.state;
331
+ this.handleBuildInFuncFields();
332
+ const { groups } = dtmplConfig;
333
+ const changeValKey = Object.keys(changedValues || {})[0];
334
+ const clearValues = {}; // 清空关联字段值
335
+ if (changeValKey && valueFieldMap[changeValKey]) {
336
+ // 处理关联字段值变化, 表单值变化,处理关联字段值为空
337
+ const temArrayMap = valueFieldMap[changeValKey].reduce((total, item) => {
338
+ if (groups.some(g => g.id === item.id)) {
339
+ total[item.id] = []; // 清空关联字段组
340
+ } else {
341
+ clearValues[item.id] = undefined;
342
+ }
343
+ return total;
344
+ }, {});
345
+ this.setState({ dtmplData: { ...dtmplData, fieldMap: { ...allValues, ...clearValues }, arrayMap: { ...dtmplData.arrayMap, ...temArrayMap } } });
346
+ }
347
+ this.setState({ serial: this.state.serial + 1 });
348
+ };
349
+
350
+ doSubmit = (actionId?: number, codes?: string[], params?: object, isContinue?: boolean) => {
351
+ const { mainCode } = this.props;
352
+ //if (actionId) {
353
+ this.formRef.current.setFieldsValue({ actionId: actionId });
354
+ // }
355
+ if (mainCode) {
356
+ this.formRef.current.setFieldsValue({ mainCode: mainCode });
357
+ }
358
+ if (params) {
359
+ this.formRef.current.setFieldsValue(params);
360
+ }
361
+ this.formRef.current.submit();
362
+ this.setState({ isContinueSave: isContinue });
363
+ };
364
+
365
+ getFooter = () => {
366
+ const { onCancel, serverKey } = this.props;
367
+ const { dtmplData, serial, loading, btnLoading } = this.state;
368
+ const footerButtons = [];
369
+ const { dtmplConfig } = this.state;
370
+ const { saveBtnTitle, continueSaveBtnTitle } = dtmplConfig || {};
371
+ const { translate } = this.context;
372
+ if (dtmplConfig?.buttons?.includes("dtmplSave")) {
373
+ footerButtons.unshift(
374
+ <Button type="primary" loading={loading || btnLoading === "saveLoading"} onClick={() => {
375
+ this.setState({ btnLoading: "saveLoading" });
376
+ this.doSubmit();
377
+ }}>
378
+ {translate("${" + (saveBtnTitle || "保存") + "}")}
379
+ </Button>
380
+ );
381
+ if (continueSaveBtnTitle) {
382
+ footerButtons.unshift(
383
+ <Button type="primary" loading={loading || btnLoading === "continueSaveLoading"} onClick={() => {
384
+ this.setState({ btnLoading: "continueSaveLoading" });
385
+ this.doSubmit(null, null, null, true);
386
+ }}>
387
+ {translate("${" + continueSaveBtnTitle + "}")}
388
+ </Button>
389
+ );
390
+ }
391
+ }
392
+ //处理action
393
+ if (dtmplConfig) {
394
+ dtmplConfig.actions.forEach((ac, index) => {
395
+ footerButtons.unshift(
396
+ <Action
397
+ serverKey={serverKey}
398
+ iconType={"icon-title"}
399
+ hiddenType={"disabled"}
400
+ serial={serial}
401
+ key={ac.id}
402
+ data={[dtmplData]}
403
+ formRef={this.formRef}
404
+ actionConfig={ac}
405
+ doAction={(...val) => {
406
+ this.setState({ btnLoading: `actionLoading${index}` });
407
+ this.doSubmit(...val);
408
+ }}
409
+ loading={loading || btnLoading === `actionLoading${index}`}
410
+ />
411
+ );
412
+ });
413
+ }
414
+ footerButtons.unshift(
415
+ <Popconfirm
416
+ key="back"
417
+ placement="topLeft"
418
+ title={translate("${确定要取消本次修改内容吗}?")}
419
+ onConfirm={onCancel}
420
+ okText={translate("${确定}")}
421
+ cancelText={translate("${取消}")}
422
+ >
423
+ <Button>{translate("${取消}")}</Button>
424
+ </Popconfirm>
425
+ );
426
+ return footerButtons;
427
+ };
428
+
429
+ onFinish = (code) => {
430
+ const { code: propsCode } = this.props;
431
+ const { isContinueSave } = this.state;
432
+ this.setState({ loading: false, btnLoading: "" });
433
+ if (code) {
434
+ if (propsCode && isContinueSave) {
435
+ this.loadConfigData();
436
+ } else {
437
+ this.props.onOk(code, isContinueSave);
438
+ }
439
+ }
440
+ }
441
+
442
+ render() {
443
+ const {
444
+ height,
445
+ onCancel,
446
+ sourceId,
447
+ open,
448
+ mainCode,
449
+ width,
450
+ pageType,
451
+ maxColsOnRow,
452
+ title,
453
+ serverKey, parentFormInstance
454
+ } = this.props;
455
+ const { dtmplConfig, id, dtmplData, valueFieldMap, drawerSize } = this.state;
456
+ const placement = this.props.placement || "left";
457
+ const maxSize = ["top", "bottom"].includes(placement) ? document.documentElement.clientHeight : document.documentElement.clientWidth * 0.9;
458
+
459
+ let title1 = title ? title : dtmplConfig ? dtmplConfig.title : "";
460
+ const { translate } = this.context;
461
+ //判断是不是 字符串
462
+ if (typeof title1 === "string") {
463
+ title1 = translate("${" + title1 + "}");
464
+ }
465
+
466
+ return (
467
+ <>
468
+ {pageType === "modal" ? (
469
+ // <Draggable handle=".ant-modal-header">
470
+ <DraggableModal
471
+ open={open}
472
+ width={width}
473
+ title={title1}
474
+ closable={false}
475
+ styles={{ body: { height: height, overflow: "auto" } }}
476
+ destroyOnHidden={true}
477
+ centered
478
+ onCancel={onCancel}
479
+ footer={this.getFooter()}
480
+ children={<Scrollbars autoHide autoHideTimeout={1000}>
481
+ <div onClick={this.onClickBody}>
482
+ <DtmplForm
483
+ serverKey={serverKey}
484
+ mainCode={mainCode}
485
+ parentId={id}
486
+ dtmplConfig={dtmplConfig}
487
+ formRef={this.formRef}
488
+ sourceId={sourceId}
489
+ onFinish={this.onFinish}
490
+ maxColsOnRow={maxColsOnRow}
491
+ showConfirm={false}
492
+ dtmplData={dtmplData}
493
+ onValuesChange={this.onValuesChange}
494
+ parentFormInstance={parentFormInstance}
495
+ valueFieldMap={valueFieldMap}
496
+ />
497
+ </div>
498
+ </Scrollbars>}
499
+ >
500
+ </DraggableModal>
501
+ // </Draggable>
502
+ ) : pageType === "drawer" ? (
503
+ <Drawer
504
+ onClick={this.onClickBody}
505
+ title={title1}
506
+ placement={placement}
507
+ resizable={{ onResize: (newSize => this.setState({ drawerSize: newSize })) }}
508
+ size={drawerSize}
509
+ maxSize={maxSize}
510
+ closable={true}
511
+ mask={false}
512
+ onClose={onCancel}
513
+ open={open}
514
+ style={{ border: "2px solid #d9d9d9" }}
515
+ extra={<Space>{this.getFooter()}</Space>}
516
+ styles={{ body: { minWidth: width ? width - 4 : 0 } }}
517
+ >
518
+ <div style={{ width: '100%' }}>
519
+ <DtmplForm
520
+ serverKey={serverKey}
521
+ mainCode={mainCode}
522
+ parentId={id}
523
+ dtmplConfig={dtmplConfig}
524
+ formRef={this.formRef}
525
+ sourceId={sourceId}
526
+ onFinish={this.onFinish}
527
+ maxColsOnRow={maxColsOnRow}
528
+ showConfirm={false}
529
+ dtmplData={dtmplData}
530
+ onValuesChange={this.onValuesChange}
531
+ parentFormInstance={parentFormInstance}
532
+ valueFieldMap={valueFieldMap}
533
+ />
534
+ </div>
535
+ </Drawer>
536
+ ) : (
537
+ <Card title={title1}>
538
+ <DtmplForm
539
+ serverKey={serverKey}
540
+ mainCode={mainCode}
541
+ parentId={id}
542
+ dtmplConfig={dtmplConfig}
543
+ formRef={this.formRef}
544
+ sourceId={sourceId}
545
+ onFinish={this.onFinish}
546
+ maxColsOnRow={maxColsOnRow}
547
+ showConfirm={false}
548
+ dtmplData={dtmplData}
549
+ onValuesChange={this.onValuesChange}
550
+ parentFormInstance={parentFormInstance}
551
+ valueFieldMap={valueFieldMap}
552
+ />
553
+ </Card>
554
+ )}
555
+ </>
556
+ );
557
+ }
558
+ }