@ibiz-template/runtime 0.5.3-beta.1 → 0.5.3-beta.11

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 (229) hide show
  1. package/dist/index.esm.js +1870 -553
  2. package/dist/index.system.min.js +1 -1
  3. package/out/app-hub.d.ts +12 -2
  4. package/out/app-hub.d.ts.map +1 -1
  5. package/out/app-hub.js +22 -2
  6. package/out/application.js +1 -1
  7. package/out/command/app/open-app-view/open-app-view.d.ts.map +1 -1
  8. package/out/command/app/open-app-view/open-app-view.js +8 -1
  9. package/out/controller/common/editor/editor.controller.d.ts +24 -0
  10. package/out/controller/common/editor/editor.controller.d.ts.map +1 -1
  11. package/out/controller/common/editor/editor.controller.js +50 -0
  12. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  13. package/out/controller/common/view/view.controller.js +5 -2
  14. package/out/controller/constant/control/index.d.ts +1 -0
  15. package/out/controller/constant/control/index.d.ts.map +1 -1
  16. package/out/controller/constant/control/index.js +1 -0
  17. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts +5 -0
  18. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts.map +1 -0
  19. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.js +6 -0
  20. package/out/controller/control/chart/chart.controller.js +1 -1
  21. package/out/controller/control/form/edit-form/edit-form.controller.js +1 -1
  22. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  23. package/out/controller/control/form/form/form.controller.js +4 -1
  24. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
  25. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +4 -0
  26. package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.d.ts +8 -0
  27. package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.d.ts.map +1 -1
  28. package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.js +10 -0
  29. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.d.ts +8 -0
  30. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.d.ts.map +1 -1
  31. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.js +15 -0
  32. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.d.ts +7 -0
  33. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.d.ts.map +1 -1
  34. package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.js +10 -0
  35. package/out/controller/control/grid/grid/grid.service.d.ts.map +1 -1
  36. package/out/controller/control/grid/grid/grid.service.js +1 -10
  37. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +7 -0
  38. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
  39. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +11 -2
  40. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts +0 -7
  41. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts.map +1 -1
  42. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.js +0 -9
  43. package/out/controller/control/tree/tree.controller.d.ts +17 -0
  44. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  45. package/out/controller/control/tree/tree.controller.js +22 -0
  46. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts +1 -0
  47. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts.map +1 -1
  48. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.js +1 -0
  49. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts +10 -0
  50. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts.map +1 -1
  51. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.js +12 -0
  52. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts +34 -0
  53. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts.map +1 -1
  54. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.js +68 -0
  55. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.d.ts +205 -0
  56. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.d.ts.map +1 -0
  57. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.js +345 -0
  58. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts +3 -0
  59. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts.map +1 -1
  60. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.js +14 -1
  61. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts +16 -8
  62. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts.map +1 -1
  63. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.js +26 -12
  64. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +59 -0
  65. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -1
  66. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +240 -1
  67. package/out/controller/utils/jsonschema/entity.d.ts.map +1 -1
  68. package/out/controller/utils/jsonschema/entity.js +4 -1
  69. package/out/de-logic/utils/handle-src-val.d.ts +15 -0
  70. package/out/de-logic/utils/handle-src-val.d.ts.map +1 -1
  71. package/out/de-logic/utils/handle-src-val.js +10 -1
  72. package/out/global/global-util/global-util.d.ts +8 -1
  73. package/out/global/global-util/global-util.d.ts.map +1 -1
  74. package/out/global/global-util/global-util.js +8 -1
  75. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +4 -3
  76. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  77. package/out/interface/controller/common/i-icon/i-icon.d.ts +1 -0
  78. package/out/interface/controller/common/i-icon/i-icon.d.ts.map +1 -1
  79. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +23 -1
  80. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -1
  81. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +17 -0
  82. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -1
  83. package/out/interface/controller/state/control/i-drbar.state.d.ts +7 -0
  84. package/out/interface/controller/state/control/i-drbar.state.d.ts.map +1 -1
  85. package/out/interface/controller/state/control/i-drtab.state.d.ts +7 -0
  86. package/out/interface/controller/state/control/i-drtab.state.d.ts.map +1 -1
  87. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +60 -2
  88. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -1
  89. package/out/interface/provider/i-async-action.provider.d.ts +3 -2
  90. package/out/interface/provider/i-async-action.provider.d.ts.map +1 -1
  91. package/out/interface/service/i-transaction/i-transaction.d.ts +83 -0
  92. package/out/interface/service/i-transaction/i-transaction.d.ts.map +1 -0
  93. package/out/interface/service/i-transaction/i-transaction.js +1 -0
  94. package/out/interface/service/index.d.ts +1 -0
  95. package/out/interface/service/index.d.ts.map +1 -1
  96. package/out/interface/service/service/i-app-de.service.d.ts +9 -3
  97. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  98. package/out/interface/util/i-view-stack/i-view-stack.d.ts +53 -0
  99. package/out/interface/util/i-view-stack/i-view-stack.d.ts.map +1 -0
  100. package/out/interface/util/i-view-stack/i-view-stack.js +1 -0
  101. package/out/interface/util/index.d.ts +1 -0
  102. package/out/interface/util/index.d.ts.map +1 -1
  103. package/out/plugin/index.d.ts +1 -1
  104. package/out/plugin/index.d.ts.map +1 -1
  105. package/out/plugin/remote-plugin-item/remote-plugin-item.d.ts +46 -0
  106. package/out/plugin/remote-plugin-item/remote-plugin-item.d.ts.map +1 -1
  107. package/out/register/helper/app-menu-item-register.d.ts.map +1 -1
  108. package/out/register/helper/app-menu-item-register.js +1 -6
  109. package/out/register/helper/panel-item-register.d.ts.map +1 -1
  110. package/out/register/helper/panel-item-register.js +36 -30
  111. package/out/service/dto/method.dto.d.ts +1 -12
  112. package/out/service/dto/method.dto.d.ts.map +1 -1
  113. package/out/service/dto/method.dto.js +8 -20
  114. package/out/service/mqtt/mqtt.service.js +2 -2
  115. package/out/service/service/auth/v7-auth.service.d.ts +1 -2
  116. package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
  117. package/out/service/service/auth/v7-auth.service.js +29 -7
  118. package/out/service/service/entity/de.service.d.ts +1 -2
  119. package/out/service/service/entity/de.service.d.ts.map +1 -1
  120. package/out/service/service/entity/de.service.js +5 -2
  121. package/out/service/service/entity/method/de-action.d.ts +13 -1
  122. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  123. package/out/service/service/entity/method/de-action.js +167 -59
  124. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  125. package/out/service/service/entity/method/fetch.js +24 -21
  126. package/out/service/service/entity/method/method-renturn.d.ts.map +1 -1
  127. package/out/service/service/entity/method/method-renturn.js +6 -0
  128. package/out/service/utils/de-cache/de-cache.d.ts +11 -1
  129. package/out/service/utils/de-cache/de-cache.d.ts.map +1 -1
  130. package/out/service/utils/de-cache/de-cache.js +122 -18
  131. package/out/service/utils/de-dq-cond/ps-model-cond-engine-base.d.ts.map +1 -1
  132. package/out/service/utils/de-dq-cond/ps-model-cond-engine-base.js +4 -0
  133. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +1 -1
  134. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  135. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +34 -27
  136. package/out/service/utils/res-path/res-path.d.ts +2 -2
  137. package/out/service/utils/res-path/res-path.d.ts.map +1 -1
  138. package/out/service/utils/res-path/res-path.js +1 -1
  139. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts +6 -0
  140. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  141. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +93 -41
  142. package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
  143. package/out/service/vo/tree-node-data/tree-node-data.js +3 -0
  144. package/out/ui-action/provider/front-ui-action-provider.d.ts +1 -1
  145. package/out/ui-action/provider/front-ui-action-provider.d.ts.map +1 -1
  146. package/out/ui-action/provider/front-ui-action-provider.js +5 -1
  147. package/out/ui-logic/ui-logic-node/debug-param-node/debug-param-node.js +1 -1
  148. package/out/ui-logic/ui-logic-node/raw-js-code-node/raw-js-code-node.d.ts.map +1 -1
  149. package/out/ui-logic/ui-logic-node/raw-js-code-node/raw-js-code-node.js +0 -1
  150. package/out/utils/index.d.ts +1 -0
  151. package/out/utils/index.d.ts.map +1 -1
  152. package/out/utils/index.js +1 -0
  153. package/out/utils/script/script-function.js +1 -1
  154. package/out/utils/ui-domain/transaction.d.ts +66 -0
  155. package/out/utils/ui-domain/transaction.d.ts.map +1 -0
  156. package/out/utils/ui-domain/transaction.js +94 -0
  157. package/out/utils/ui-domain/ui-domain.d.ts +50 -6
  158. package/out/utils/ui-domain/ui-domain.d.ts.map +1 -1
  159. package/out/utils/ui-domain/ui-domain.js +68 -9
  160. package/out/utils/view-stack/view-stack.d.ts +29 -0
  161. package/out/utils/view-stack/view-stack.d.ts.map +1 -0
  162. package/out/utils/view-stack/view-stack.js +47 -0
  163. package/package.json +5 -5
  164. package/src/app-hub.ts +27 -2
  165. package/src/application.ts +1 -1
  166. package/src/command/app/open-app-view/open-app-view.ts +8 -1
  167. package/src/controller/common/editor/editor.controller.ts +54 -0
  168. package/src/controller/common/view/view.controller.ts +7 -2
  169. package/src/controller/constant/control/index.ts +1 -0
  170. package/src/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.ts +5 -0
  171. package/src/controller/control/chart/chart.controller.ts +1 -1
  172. package/src/controller/control/form/edit-form/edit-form.controller.ts +1 -1
  173. package/src/controller/control/form/form/form.controller.ts +11 -1
  174. package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +4 -0
  175. package/src/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.ts +14 -0
  176. package/src/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.ts +16 -0
  177. package/src/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.ts +9 -1
  178. package/src/controller/control/grid/grid/grid.service.ts +1 -11
  179. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +12 -2
  180. package/src/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.ts +0 -10
  181. package/src/controller/control/tree/tree.controller.ts +35 -0
  182. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/index.ts +1 -0
  183. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts +22 -0
  184. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.ts +88 -2
  185. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.ts +522 -0
  186. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.ts +18 -1
  187. package/src/controller/control/tree-grid-ex/tree-grid-ex-row.state.ts +43 -12
  188. package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +305 -2
  189. package/src/controller/utils/jsonschema/entity.ts +4 -1
  190. package/src/de-logic/utils/handle-src-val.ts +29 -1
  191. package/src/global/global-util/global-util.ts +9 -0
  192. package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +4 -3
  193. package/src/interface/controller/common/i-icon/i-icon.ts +1 -0
  194. package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +27 -2
  195. package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +15 -1
  196. package/src/interface/controller/state/control/i-drbar.state.ts +8 -0
  197. package/src/interface/controller/state/control/i-drtab.state.ts +8 -0
  198. package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +64 -2
  199. package/src/interface/provider/i-async-action.provider.ts +3 -2
  200. package/src/interface/service/i-transaction/i-transaction.ts +88 -0
  201. package/src/interface/service/index.ts +4 -0
  202. package/src/interface/service/service/i-app-de.service.ts +10 -3
  203. package/src/interface/util/i-view-stack/i-view-stack.ts +53 -0
  204. package/src/interface/util/index.ts +1 -0
  205. package/src/plugin/index.ts +4 -1
  206. package/src/plugin/remote-plugin-item/remote-plugin-item.ts +43 -0
  207. package/src/register/helper/app-menu-item-register.ts +1 -5
  208. package/src/register/helper/panel-item-register.ts +43 -37
  209. package/src/service/dto/method.dto.ts +7 -20
  210. package/src/service/mqtt/mqtt.service.ts +2 -2
  211. package/src/service/service/auth/v7-auth.service.ts +39 -19
  212. package/src/service/service/entity/de.service.ts +7 -9
  213. package/src/service/service/entity/method/de-action.ts +186 -64
  214. package/src/service/service/entity/method/fetch.ts +28 -29
  215. package/src/service/service/entity/method/method-renturn.ts +6 -0
  216. package/src/service/utils/de-cache/de-cache.ts +128 -19
  217. package/src/service/utils/de-dq-cond/ps-model-cond-engine-base.ts +4 -0
  218. package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +35 -32
  219. package/src/service/utils/res-path/res-path.ts +2 -2
  220. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +111 -46
  221. package/src/service/vo/tree-node-data/tree-node-data.ts +3 -0
  222. package/src/ui-action/provider/front-ui-action-provider.ts +10 -1
  223. package/src/ui-logic/ui-logic-node/debug-param-node/debug-param-node.ts +1 -1
  224. package/src/ui-logic/ui-logic-node/raw-js-code-node/raw-js-code-node.ts +0 -1
  225. package/src/utils/index.ts +1 -0
  226. package/src/utils/script/script-function.ts +1 -1
  227. package/src/utils/ui-domain/transaction.ts +100 -0
  228. package/src/utils/ui-domain/ui-domain.ts +73 -9
  229. package/src/utils/view-stack/view-stack.ts +64 -0
@@ -0,0 +1,522 @@
1
+ import {
2
+ IAppCodeList,
3
+ IDETreeNode,
4
+ IDETreeNodeDataItem,
5
+ IDETreeNodeEditItem,
6
+ IDETreeNodeFieldColumn,
7
+ IUIActionGroupDetail,
8
+ } from '@ibiz/model-core';
9
+ import {
10
+ DataTypes,
11
+ RuntimeError,
12
+ RuntimeModelError,
13
+ } from '@ibiz-template/core';
14
+ import { clone } from 'ramda';
15
+ import dayjs from 'dayjs';
16
+ import {
17
+ CodeListItem,
18
+ IEditorContainerController,
19
+ IEditorController,
20
+ IEditorProvider,
21
+ IModalData,
22
+ ITreeGridExRowState,
23
+ } from '../../../../../interface';
24
+ import { TreeGridExFieldColumnController } from './tree-grid-ex-field-column.controller';
25
+ import { getEditorProvider } from '../../../../../register';
26
+ import { convertNavData, getWFContext } from '../../../../../utils';
27
+ import { OpenAppViewCommand } from '../../../../../command';
28
+ import { parseUserParams } from '../../../../../model';
29
+ import { UIActionUtil } from '../../../../../ui-action';
30
+ import {
31
+ ButtonContainerState,
32
+ UIActionButtonState,
33
+ ValueExUtil,
34
+ } from '../../../../utils';
35
+ import { TreeGridExController } from '../../tree-grid-ex.controller';
36
+ import { TreeGridExNotifyState } from '../../../../constant';
37
+ import { TreeGridExRowState } from '../../tree-grid-ex-row.state';
38
+
39
+ /**
40
+ * 树表格的某一个属性列对应某一种实体节点的节点数据的控制器
41
+ * @author lxm
42
+ * @date 2024-01-09 10:07:02
43
+ * @export
44
+ * @class TreeGridExNodeColumnController
45
+ * @implements {IEditorContainerController}
46
+ */
47
+ export class TreeGridExNodeColumnController
48
+ implements IEditorContainerController
49
+ {
50
+ /**
51
+ * 树节点表格列(必有,没有不会创建该控制器)
52
+ * @author lxm
53
+ * @date 2024-01-09 10:08:17
54
+ * @type {IDETreeNodeFieldColumn}
55
+ */
56
+ nodeColumn!: IDETreeNodeFieldColumn;
57
+
58
+ /**
59
+ * 节点数据项
60
+ * @author lxm
61
+ * @date 2024-01-09 10:08:28
62
+ * @type {IDETreeNodeDataItem}
63
+ */
64
+ nodeDataItem!: IDETreeNodeDataItem;
65
+
66
+ /**
67
+ * 节点编辑项(启用了行编辑才有)
68
+ * @author lxm
69
+ * @date 2024-01-09 10:09:15
70
+ * @type {IDETreeNodeEditItem}
71
+ */
72
+ nodeEditItem?: IDETreeNodeEditItem;
73
+
74
+ /**
75
+ * 编辑器适配器
76
+ *
77
+ * @author lxm
78
+ * @date 2022-08-24 20:08:42
79
+ * @type {EditorController}
80
+ */
81
+ editorProvider?: IEditorProvider;
82
+
83
+ /**
84
+ * 编辑器控制器
85
+ *
86
+ * @author lxm
87
+ * @date 2022-08-24 20:08:42
88
+ * @type {IEditorController}
89
+ */
90
+ editor?: IEditorController;
91
+
92
+ /**
93
+ * 代码表项
94
+ *
95
+ * @author lxm
96
+ * @date 2022-09-28 16:09:51
97
+ * @type {readonly}
98
+ */
99
+ codeListItems?: readonly CodeListItem[];
100
+
101
+ /**
102
+ * 代码表模型
103
+ * @return {*}
104
+ * @author: zhujiamin
105
+ * @Date: 2023-05-24 10:55:50
106
+ */
107
+ codeList: IAppCodeList | undefined = undefined;
108
+
109
+ get unitName(): string | undefined {
110
+ return this.nodeEditItem?.unitName;
111
+ }
112
+
113
+ get valueFormat(): string | undefined {
114
+ return this.nodeColumn.valueFormat;
115
+ }
116
+
117
+ get context(): IContext {
118
+ return this.fieldColumn.context;
119
+ }
120
+
121
+ get params(): IParams {
122
+ return this.fieldColumn.params;
123
+ }
124
+
125
+ get dataType(): number | undefined {
126
+ return this.nodeDataItem?.dataType;
127
+ }
128
+
129
+ /**
130
+ * 树表格列标识(用于取数和各种比较判断)
131
+ * @author lxm
132
+ * @date 2024-01-09 11:33:37
133
+ * @readonly
134
+ * @type {string}
135
+ */
136
+ get name(): string {
137
+ return this.fieldColumn.name;
138
+ }
139
+
140
+ /**
141
+ *树表格增强部件
142
+ * @author lxm
143
+ * @date 2024-01-10 11:49:23
144
+ * @readonly
145
+ * @type {TreeGridExController}
146
+ */
147
+ get treeGrid(): TreeGridExController {
148
+ return this.fieldColumn.treeGrid;
149
+ }
150
+
151
+ /**
152
+ * 是否是链接列
153
+ *
154
+ * @author lxm
155
+ * @date 2022-09-28 17:09:15
156
+ * @returns {*}
157
+ */
158
+ get isLinkColumn(): boolean {
159
+ return !!this.nodeColumn.enableLinkView && !!this.nodeColumn.linkAppViewId;
160
+ }
161
+
162
+ /**
163
+ * 是否有触发界面行为
164
+ *
165
+ * @author lxm
166
+ * @date 2022-12-08 14:12:37
167
+ * @readonly
168
+ * @type {boolean}
169
+ */
170
+ get hasClickAction(): boolean {
171
+ return !!this.nodeColumn.deuiactionId;
172
+ }
173
+
174
+ /**
175
+ * 单元格超出呈现模式
176
+ * @author lxm
177
+ * @date 2024-01-09 05:36:36
178
+ * @readonly
179
+ * @type {('wrap' | 'ellipsis')}
180
+ */
181
+ get overflowMode(): 'wrap' | 'ellipsis' {
182
+ return this.fieldColumn.treeGrid.overflowMode;
183
+ }
184
+
185
+ /**
186
+ * @author lxm
187
+ * @date 2024-01-09 10:04:05
188
+ * @param {TreeGridExFieldColumnController} fieldColumn 树表格属性列控制器
189
+ * @param {IDETreeNode} nodeModel 对应实体节点模型
190
+ */
191
+ constructor(
192
+ public fieldColumn: TreeGridExFieldColumnController,
193
+ public nodeModel: IDETreeNode,
194
+ ) {
195
+ const { detreeNodeColumns, detreeNodeDataItems, detreeNodeEditItems } =
196
+ nodeModel;
197
+
198
+ const nodeColumn = detreeNodeColumns?.find(column => {
199
+ return column.detreeColumnId === this.fieldColumn.model.id;
200
+ });
201
+
202
+ const nodeDataItem = detreeNodeDataItems?.find(
203
+ (treeNodeDataItem: IDETreeNodeDataItem) => {
204
+ return treeNodeDataItem.id === nodeColumn!.dataItemName;
205
+ },
206
+ );
207
+
208
+ if (!nodeColumn || !nodeDataItem) {
209
+ throw new RuntimeModelError(
210
+ nodeModel,
211
+ `节点没有配置对应表格列${this.fieldColumn.name}的数据项`,
212
+ );
213
+ }
214
+
215
+ this.nodeColumn = nodeColumn;
216
+ this.nodeDataItem = nodeDataItem;
217
+
218
+ // 启用了行编辑就会有行编辑项
219
+ if (nodeColumn.enableRowEdit) {
220
+ const nodeEditItem = detreeNodeEditItems?.find(
221
+ (treeNodeEditItem: IDETreeNodeEditItem) => {
222
+ return treeNodeEditItem.id === nodeColumn.id;
223
+ },
224
+ );
225
+ if (!nodeEditItem) {
226
+ throw new RuntimeModelError(
227
+ nodeModel,
228
+ `没有找到对应表格列${this.fieldColumn.name}的编辑项模型`,
229
+ );
230
+ }
231
+ this.nodeEditItem = nodeEditItem;
232
+ }
233
+ }
234
+
235
+ /**
236
+ * 初始化
237
+ * @author lxm
238
+ * @date 2024-01-09 10:02:16
239
+ * @return {*} {Promise<void>}
240
+ */
241
+ async init(): Promise<void> {
242
+ if (
243
+ this.nodeEditItem?.editor &&
244
+ this.nodeEditItem.editor.editorType !== 'HIDDEN'
245
+ ) {
246
+ this.editorProvider = await getEditorProvider(this.nodeEditItem.editor);
247
+ if (this.editorProvider) {
248
+ this.editor = await this.editorProvider.createController(
249
+ this.nodeEditItem.editor,
250
+ this,
251
+ );
252
+ }
253
+ }
254
+
255
+ // 没有编辑项的时候加载代码表,否则由编辑器去解析
256
+ if (!this.nodeEditItem) {
257
+ await this.loadCodeList();
258
+ }
259
+ }
260
+
261
+ /**
262
+ * 初始化属性列界面行为组按钮状态
263
+ *
264
+ * @author lxm
265
+ * @date 2022-09-07 21:09:43
266
+ * @param {GridRowState} row
267
+ */
268
+ initActionStates(row: ITreeGridExRowState): void {
269
+ // 属性列界面行为按钮状态
270
+ const { deuiactionGroup } = this.nodeColumn;
271
+ if (deuiactionGroup && deuiactionGroup.uiactionGroupDetails) {
272
+ const containerState = new ButtonContainerState();
273
+ deuiactionGroup.uiactionGroupDetails.forEach(detail => {
274
+ const actionid = detail.uiactionId;
275
+ if (actionid) {
276
+ const buttonState = new UIActionButtonState(
277
+ detail.id!,
278
+ this.context.srfappid!,
279
+ actionid,
280
+ );
281
+ containerState.addState(detail.id!, buttonState);
282
+ }
283
+ });
284
+ row.columnActionsStates[this.name!] = containerState;
285
+ }
286
+ }
287
+
288
+ /**
289
+ * 文本点击事件
290
+ *
291
+ * @author zk
292
+ * @date 2023-07-13 12:07:53
293
+ * @param {MouseEvent} event
294
+ */
295
+ onTextClick(row: ITreeGridExRowState, event: MouseEvent): void {
296
+ // 阻止触发行点击
297
+ if (this.isLinkColumn) {
298
+ event.stopPropagation();
299
+ this.openLinkView(row, event);
300
+ } else if (this.hasClickAction) {
301
+ event.stopPropagation();
302
+ this.triggerAction(row, event);
303
+ }
304
+ }
305
+
306
+ /**
307
+ * 打开链接视图
308
+ *
309
+ * @author lxm
310
+ * @date 2024-01-09 02:45:34
311
+ * @param {ITreeGridExRowState} row
312
+ * @param {MouseEvent} event
313
+ * @return {*} {Promise<void>}
314
+ */
315
+ async openLinkView(
316
+ row: ITreeGridExRowState,
317
+ event: MouseEvent,
318
+ ): Promise<void> {
319
+ const curValue = (row.data as IData)[this.fieldColumn.name];
320
+ if (!curValue) {
321
+ // 当前值不存在,不继续走打开链接视图逻辑
322
+ return;
323
+ }
324
+ const valueItem = this.nodeColumn.linkValueItem || 'srfkey';
325
+ const value = (row.data as IData)[valueItem];
326
+ if (value == null) {
327
+ throw new RuntimeError(`未在行数据中取到 ${valueItem} 的值`);
328
+ }
329
+ const { linkAppViewId } = this.nodeColumn;
330
+ if (!linkAppViewId) {
331
+ return;
332
+ }
333
+ const wfContext = getWFContext(row.data);
334
+ const tempContext = Object.assign(this.context.clone(), {
335
+ srfkey: value,
336
+ ...wfContext,
337
+ });
338
+ const tempParams = clone(this.params);
339
+
340
+ // *自定义参数转换额外的上下文和视图参数
341
+ const { userParam } = this.nodeColumn;
342
+ if (userParam) {
343
+ const { navigateContexts, navigateParams } = parseUserParams(userParam);
344
+ let selfContext = {};
345
+ if (navigateContexts && row.data) {
346
+ selfContext = convertNavData(
347
+ navigateContexts!,
348
+ row.data,
349
+ tempParams,
350
+ tempContext,
351
+ );
352
+ }
353
+ Object.assign(tempContext, selfContext);
354
+ let selfParams = {};
355
+ if (navigateParams && row.data) {
356
+ selfParams = convertNavData(
357
+ navigateParams!,
358
+ row.data,
359
+ tempParams,
360
+ tempContext,
361
+ );
362
+ }
363
+ Object.assign(tempParams, selfParams);
364
+ }
365
+
366
+ // 打开视图
367
+ const res: IModalData = await ibiz.commands.execute(
368
+ OpenAppViewCommand.TAG,
369
+ linkAppViewId,
370
+ tempContext,
371
+ tempParams,
372
+ { event },
373
+ );
374
+ if (res?.ok) {
375
+ this.fieldColumn.treeGrid.refresh();
376
+ }
377
+ }
378
+
379
+ /**
380
+ * 触发表格列附加界面行为
381
+ *
382
+ * @author lxm
383
+ * @date 2022-12-08 15:12:35
384
+ * @param {GridRowState} row 行数据
385
+ * @param {MouseEvent} event 鼠标事件
386
+ * @returns {*} {Promise<void>}
387
+ */
388
+ async triggerAction(
389
+ row: ITreeGridExRowState,
390
+ event: MouseEvent,
391
+ ): Promise<void> {
392
+ const actionId = this.nodeColumn.deuiactionId;
393
+ await UIActionUtil.execAndResolved(
394
+ actionId!,
395
+ {
396
+ context: this.context,
397
+ params: this.params,
398
+ data: [row.data],
399
+ view: this.treeGrid.view,
400
+ event,
401
+ },
402
+ this.nodeColumn.appId,
403
+ );
404
+ }
405
+
406
+ /**
407
+ * 触发界面行为组点击事件
408
+ *
409
+ * @author lxm
410
+ * @date 2024-01-11 02:26:12
411
+ * @param {IUIActionGroupDetail} detail
412
+ * @param {ITreeGridExRowState} row
413
+ * @param {MouseEvent} event
414
+ * @return {*} {Promise<void>}
415
+ */
416
+ async onActionClick(
417
+ detail: IUIActionGroupDetail,
418
+ row: ITreeGridExRowState,
419
+ event: MouseEvent,
420
+ ): Promise<void> {
421
+ const actionId = detail.uiactionId;
422
+ await UIActionUtil.execAndResolved(
423
+ actionId!,
424
+ {
425
+ context: this.context,
426
+ params: this.params,
427
+ data: [row.data],
428
+ view: this.treeGrid.view,
429
+ event,
430
+ },
431
+ detail.appId,
432
+ );
433
+ }
434
+
435
+ /**
436
+ * 值格式化
437
+ * @author lxm
438
+ * @date 2024-01-09 03:37:34
439
+ * @param {unknown} [value='']
440
+ * @return {*} {string}
441
+ */
442
+ formatValue(value: unknown = ''): string {
443
+ // 根据数据类型增强转换显示文本
444
+ if (this.nodeColumn.valueType !== 'SIMPLE') {
445
+ return ValueExUtil.toText(this.nodeColumn, value);
446
+ }
447
+
448
+ // 根据格式化配置格式化显示
449
+ const strVal = `${value}`;
450
+ if (!this.valueFormat) {
451
+ return strVal;
452
+ }
453
+ const isDate = DataTypes.isDate(this.dataType!);
454
+ if (isDate || this.fieldColumn.name === 'createdate') {
455
+ const formatVal = dayjs(strVal).format(this.valueFormat);
456
+ if (formatVal !== 'Invalid Date') {
457
+ return formatVal;
458
+ }
459
+ return strVal;
460
+ }
461
+ return ibiz.util.text.format(strVal, this.valueFormat);
462
+ }
463
+
464
+ /**
465
+ * 加载代码表数据
466
+ *
467
+ * @author lxm
468
+ * @date 2022-09-28 15:09:38
469
+ * @returns {*}
470
+ */
471
+ async loadCodeList(): Promise<Readonly<CodeListItem[]> | undefined> {
472
+ const appCodeListId = this.nodeColumn.appCodeListId!;
473
+ if (!appCodeListId) {
474
+ return;
475
+ }
476
+ const app = ibiz.hub.getApp(this.context.srfappid);
477
+
478
+ // 顺便加载代码表模型
479
+ if (!this.codeList) {
480
+ this.codeList = app.codeList.getCodeList(appCodeListId);
481
+ }
482
+
483
+ const dataItems = await app.codeList.get(
484
+ appCodeListId,
485
+ this.context,
486
+ this.params,
487
+ );
488
+ this.codeListItems = dataItems;
489
+ return dataItems;
490
+ }
491
+
492
+ gridStateNotify(row: TreeGridExRowState, state: TreeGridExNotifyState): void {
493
+ if (
494
+ state === TreeGridExNotifyState.LOAD ||
495
+ state === TreeGridExNotifyState.SAVE
496
+ ) {
497
+ const uaColState = row.columnActionsStates[this.name];
498
+ if (uaColState && row.data._nodeType === 'DE') {
499
+ // 实体节点更新操作列状态
500
+ uaColState.update(row.data._deData);
501
+ }
502
+ }
503
+ }
504
+
505
+ /**
506
+ * 设置行属性的值
507
+ *
508
+ * @author lxm
509
+ * @date 2022-08-24 10:08:40
510
+ * @param {GridRowState} row 行状态控制器
511
+ * @param {unknown} value 要设置的值
512
+ * @param {string} name 要设置的表单数据的属性名称
513
+ */
514
+ async setRowValue(
515
+ row: TreeGridExRowState,
516
+ value: unknown,
517
+ name?: string,
518
+ ): Promise<void> {
519
+ name = name || this.name;
520
+ await this.treeGrid.setRowValue(row, name, value);
521
+ }
522
+ }
@@ -5,6 +5,8 @@ import { UIActionUtil } from '../../../../../ui-action';
5
5
  import { ButtonContainerState, UIActionButtonState } from '../../../../utils';
6
6
  import { TreeGridExColumnController } from '../tree-grid-ex-column/tree-grid-ex-column.controller';
7
7
  import { ITreeGridExRowState } from '../../../../../interface';
8
+ import { TreeGridExNotifyState } from '../../../../constant';
9
+ import { TreeGridExRowState } from '../../tree-grid-ex-row.state';
8
10
 
9
11
  /**
10
12
  * 树表格(增强)操作列控制器
@@ -26,6 +28,7 @@ export class TreeGridExUAColumnController extends TreeGridExColumnController<IDE
26
28
  // 操作列按钮状态控制
27
29
  const { deuiactionGroup } = this.model;
28
30
  if (!deuiactionGroup) {
31
+ return;
29
32
  throw new RuntimeModelError(this.model, '操作列没有配置界面行为组');
30
33
  }
31
34
  if (!deuiactionGroup.uiactionGroupDetails?.length) {
@@ -44,7 +47,7 @@ export class TreeGridExUAColumnController extends TreeGridExColumnController<IDE
44
47
  containerState.addState(detail.id!, buttonState);
45
48
  }
46
49
  });
47
- row.uaColStates[this.model.codeName!] = containerState;
50
+ row.columnActionsStates[this.model.id!] = containerState;
48
51
  }
49
52
 
50
53
  /**
@@ -73,4 +76,18 @@ export class TreeGridExUAColumnController extends TreeGridExColumnController<IDE
73
76
  detail.appId,
74
77
  );
75
78
  }
79
+
80
+ gridStateNotify(row: TreeGridExRowState, state: TreeGridExNotifyState): void {
81
+ super.gridStateNotify(row, state);
82
+ if (
83
+ state === TreeGridExNotifyState.LOAD ||
84
+ state === TreeGridExNotifyState.SAVE
85
+ ) {
86
+ const uaColState = row.columnActionsStates[this.model.id!];
87
+ if (uaColState && row.data._nodeType === 'DE') {
88
+ // 实体节点更新操作列状态
89
+ uaColState.update(row.data._deData);
90
+ }
91
+ }
92
+ }
76
93
  }
@@ -17,20 +17,51 @@ import { TreeGridExController } from './tree-grid-ex.controller';
17
17
  export class TreeGridExRowState implements ITreeGridExRowState {
18
18
  data: ITreeNodeData;
19
19
 
20
- /**
21
- * 操作列状态(p是操作列的标识)
22
- *
23
- * @author lxm
24
- * @date 2022-09-07 22:09:38
25
- * @type {({ [p: string]: IButtonContainerState })}
26
- */
27
- uaColStates: { [p: string]: IButtonContainerState } = {};
20
+ cacheData?: ITreeNodeData;
21
+
22
+ errors: { [p: string]: string | null } = {};
23
+
24
+ columnActionsStates: { [p: string]: IButtonContainerState } = {};
25
+
26
+ editColStates: {
27
+ [p: string]: {
28
+ disabled: boolean;
29
+ readonly: boolean;
30
+ editable: boolean;
31
+ required: boolean;
32
+ };
33
+ } = {};
34
+
35
+ modified: boolean = false;
36
+
37
+ showRowEdit: boolean = false;
38
+
39
+ processing: boolean = false;
28
40
 
29
41
  constructor(data: ITreeNodeData, treeGrid: TreeGridExController) {
30
42
  this.data = data;
31
- // 初始化操作列状态
32
- Object.values(treeGrid.uaColumns).forEach(column => {
33
- column.initActionStates(this);
34
- });
43
+
44
+ // 实体类型节点才需要初始化这些
45
+ if (data._nodeType === 'DE') {
46
+ // 初始化操作列状态
47
+ Object.values(treeGrid.uaColumns).forEach(column => {
48
+ column.initActionStates(this);
49
+ });
50
+
51
+ // 初始化属性列的界面行为组状态
52
+ Object.values(treeGrid.fieldColumns).forEach(column => {
53
+ column.initActionStates(this);
54
+ });
55
+
56
+ // 初始化编辑项状态
57
+ Object.values(treeGrid.fieldColumns).forEach(fieldColumn => {
58
+ this.editColStates[fieldColumn.name] = {
59
+ disabled: false,
60
+ readonly: false,
61
+ editable: ibiz.config.grid.editShowMode === 'all',
62
+ required: false,
63
+ };
64
+ });
65
+ }
35
66
  }
36
67
  }