aldehyde 0.2.488 → 0.2.490

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