@ibiz-template/runtime 0.1.27 → 0.1.29-dev.0

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 (239) hide show
  1. package/dist/index.esm.js +1352 -304
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/app-hub.d.ts +9 -0
  5. package/out/app-hub.d.ts.map +1 -1
  6. package/out/app-hub.js +4 -0
  7. package/out/application.d.ts +9 -1
  8. package/out/application.d.ts.map +1 -1
  9. package/out/application.js +2 -1
  10. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  11. package/out/controller/common/control/md-control.controller.js +3 -0
  12. package/out/controller/common/view/view.controller.d.ts +23 -1
  13. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  14. package/out/controller/common/view/view.controller.js +52 -0
  15. package/out/controller/control/dashboard/custom-dashboard.controller.d.ts +69 -0
  16. package/out/controller/control/dashboard/custom-dashboard.controller.d.ts.map +1 -0
  17. package/out/controller/control/dashboard/custom-dashboard.controller.js +85 -0
  18. package/out/controller/control/dashboard/index.d.ts +1 -0
  19. package/out/controller/control/dashboard/index.d.ts.map +1 -1
  20. package/out/controller/control/dashboard/index.js +1 -0
  21. package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts +15 -1
  22. package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts.map +1 -1
  23. package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.js +26 -9
  24. package/out/controller/control/data-view/data-view.controller.d.ts.map +1 -1
  25. package/out/controller/control/data-view/data-view.controller.js +5 -4
  26. package/out/controller/control/index.d.ts +2 -0
  27. package/out/controller/control/index.d.ts.map +1 -1
  28. package/out/controller/control/index.js +2 -0
  29. package/out/controller/control/panel/panel/panel-item.controller.d.ts +34 -2
  30. package/out/controller/control/panel/panel/panel-item.controller.d.ts.map +1 -1
  31. package/out/controller/control/panel/panel/panel-item.controller.js +84 -5
  32. package/out/controller/control/panel/panel/panel.controller.d.ts +2 -1
  33. package/out/controller/control/panel/panel/panel.controller.d.ts.map +1 -1
  34. package/out/controller/control/panel/panel/panel.controller.js +11 -1
  35. package/out/controller/control/toolbar/toolbar.controllerr.d.ts.map +1 -1
  36. package/out/controller/control/toolbar/toolbar.controllerr.js +33 -21
  37. package/out/controller/control/tree-grid/index.d.ts +3 -0
  38. package/out/controller/control/tree-grid/index.d.ts.map +1 -0
  39. package/out/controller/control/tree-grid/index.js +2 -0
  40. package/out/controller/control/tree-grid/tree-grid.controller.d.ts +5 -0
  41. package/out/controller/control/tree-grid/tree-grid.controller.d.ts.map +1 -0
  42. package/out/controller/control/tree-grid/tree-grid.controller.js +3 -0
  43. package/out/controller/control/tree-grid/tree-grid.service.d.ts +13 -0
  44. package/out/controller/control/tree-grid/tree-grid.service.d.ts.map +1 -0
  45. package/out/controller/control/tree-grid/tree-grid.service.js +12 -0
  46. package/out/controller/control/tree-grid-ex/index.d.ts +3 -0
  47. package/out/controller/control/tree-grid-ex/index.d.ts.map +1 -0
  48. package/out/controller/control/tree-grid-ex/index.js +2 -0
  49. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +134 -0
  50. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -0
  51. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +240 -0
  52. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts +65 -0
  53. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts.map +1 -0
  54. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.js +143 -0
  55. package/out/controller/utils/event/controller-event.d.ts +7 -0
  56. package/out/controller/utils/event/controller-event.d.ts.map +1 -1
  57. package/out/controller/utils/event/controller-event.js +12 -0
  58. package/out/controller/utils/view-msg/index.d.ts +2 -0
  59. package/out/controller/utils/view-msg/index.d.ts.map +1 -0
  60. package/out/controller/utils/view-msg/index.js +1 -0
  61. package/out/controller/utils/view-msg/view-msg-controller.d.ts +69 -0
  62. package/out/controller/utils/view-msg/view-msg-controller.d.ts.map +1 -0
  63. package/out/controller/utils/view-msg/view-msg-controller.js +176 -0
  64. package/out/de-logic/de-logic-context.d.ts +8 -0
  65. package/out/de-logic/de-logic-context.d.ts.map +1 -1
  66. package/out/de-logic/de-logic-context.js +11 -0
  67. package/out/de-logic/de-logic-node/prepare-param-node/prepare-param-node.d.ts.map +1 -1
  68. package/out/de-logic/de-logic-node/prepare-param-node/prepare-param-node.js +5 -1
  69. package/out/de-logic/utils/handle-src-val.d.ts.map +1 -1
  70. package/out/de-logic/utils/handle-src-val.js +19 -8
  71. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +9 -0
  72. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  73. package/out/interface/common/i-app-service/i-app-service.d.ts +9 -0
  74. package/out/interface/common/i-app-service/i-app-service.d.ts.map +1 -1
  75. package/out/interface/controller/common/index.d.ts +1 -0
  76. package/out/interface/controller/common/index.d.ts.map +1 -1
  77. package/out/interface/controller/common/index.js +1 -0
  78. package/out/interface/controller/common/view-message/i-view-message.d.ts +39 -0
  79. package/out/interface/controller/common/view-message/i-view-message.d.ts.map +1 -0
  80. package/out/interface/controller/common/view-message/i-view-message.js +1 -0
  81. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +16 -0
  82. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -0
  83. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.js +1 -0
  84. package/out/interface/controller/controller/control/i-tree-grid.controller.d.ts +13 -0
  85. package/out/interface/controller/controller/control/i-tree-grid.controller.d.ts.map +1 -0
  86. package/out/interface/controller/controller/control/i-tree-grid.controller.js +1 -0
  87. package/out/interface/controller/controller/control/index.d.ts +2 -0
  88. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  89. package/out/interface/controller/controller/control/index.js +2 -0
  90. package/out/interface/controller/controller/control/panel-item/i-panel-item.controller.d.ts +2 -2
  91. package/out/interface/controller/controller/control/panel-item/i-panel-item.controller.d.ts.map +1 -1
  92. package/out/interface/controller/controller/control/portlet/i-portlet.controller.d.ts +7 -0
  93. package/out/interface/controller/controller/control/portlet/i-portlet.controller.d.ts.map +1 -1
  94. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +13 -0
  95. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -0
  96. package/out/interface/controller/event/control/i-tree-grid-ex.event.js +1 -0
  97. package/out/interface/controller/event/control/i-tree-grid.event.d.ts +13 -0
  98. package/out/interface/controller/event/control/i-tree-grid.event.d.ts.map +1 -0
  99. package/out/interface/controller/event/control/i-tree-grid.event.js +1 -0
  100. package/out/interface/controller/event/control/index.d.ts +2 -0
  101. package/out/interface/controller/event/control/index.d.ts.map +1 -1
  102. package/out/interface/controller/event/control/index.js +2 -0
  103. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.d.ts +12 -0
  104. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.d.ts.map +1 -0
  105. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.js +1 -0
  106. package/out/interface/controller/event/view/i-tree-grid-view.event.d.ts +12 -0
  107. package/out/interface/controller/event/view/i-tree-grid-view.event.d.ts.map +1 -0
  108. package/out/interface/controller/event/view/i-tree-grid-view.event.js +1 -0
  109. package/out/interface/controller/event/view/index.d.ts +2 -0
  110. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  111. package/out/interface/controller/event/view/index.js +2 -0
  112. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +52 -0
  113. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -0
  114. package/out/interface/controller/state/control/i-tree-grid-ex.state.js +1 -0
  115. package/out/interface/controller/state/control/i-tree-grid.state.d.ts +13 -0
  116. package/out/interface/controller/state/control/i-tree-grid.state.d.ts.map +1 -0
  117. package/out/interface/controller/state/control/i-tree-grid.state.js +1 -0
  118. package/out/interface/controller/state/control/index.d.ts +2 -0
  119. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  120. package/out/interface/controller/state/control/index.js +2 -0
  121. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.d.ts +13 -0
  122. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.d.ts.map +1 -0
  123. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.js +1 -0
  124. package/out/interface/controller/state/view/i-tree-grid-view.state.d.ts +13 -0
  125. package/out/interface/controller/state/view/i-tree-grid-view.state.d.ts.map +1 -0
  126. package/out/interface/controller/state/view/i-tree-grid-view.state.js +1 -0
  127. package/out/interface/controller/state/view/i-view.state.d.ts +10 -0
  128. package/out/interface/controller/state/view/i-view.state.d.ts.map +1 -1
  129. package/out/interface/controller/state/view/index.d.ts +2 -0
  130. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  131. package/out/interface/controller/state/view/index.js +2 -0
  132. package/out/interface/provider/i-grid-column.provider.d.ts +2 -1
  133. package/out/interface/provider/i-grid-column.provider.d.ts.map +1 -1
  134. package/out/interface/service/service/i-app-de.service.d.ts +9 -0
  135. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  136. package/out/interface/service/service/i-config.service.d.ts +20 -0
  137. package/out/interface/service/service/i-config.service.d.ts.map +1 -0
  138. package/out/interface/service/service/i-config.service.js +1 -0
  139. package/out/interface/service/service/index.d.ts +1 -0
  140. package/out/interface/service/service/index.d.ts.map +1 -1
  141. package/out/logic-scheduler/trigger/item-dyna-logic-trigger.d.ts.map +1 -1
  142. package/out/logic-scheduler/trigger/item-dyna-logic-trigger.js +4 -1
  143. package/out/service/app-data-entity/app-data-entity.d.ts +10 -0
  144. package/out/service/app-data-entity/app-data-entity.d.ts.map +1 -1
  145. package/out/service/app-data-entity/app-data-entity.js +40 -13
  146. package/out/service/service/config/config.service.d.ts +43 -0
  147. package/out/service/service/config/config.service.d.ts.map +1 -0
  148. package/out/service/service/config/config.service.js +54 -0
  149. package/out/service/service/entity/de.service.d.ts +9 -0
  150. package/out/service/service/entity/de.service.d.ts.map +1 -1
  151. package/out/service/service/entity/de.service.js +2 -0
  152. package/out/service/service/entity/method/method.d.ts.map +1 -1
  153. package/out/service/service/entity/method/method.js +2 -2
  154. package/out/service/service/index.d.ts +1 -0
  155. package/out/service/service/index.d.ts.map +1 -1
  156. package/out/service/service/index.js +1 -0
  157. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +4 -4
  158. package/out/service/vo/control.vo.d.ts.map +1 -1
  159. package/out/service/vo/control.vo.js +1 -5
  160. package/out/ui-action/provider/backend-ui-action-provider.d.ts.map +1 -1
  161. package/out/ui-action/provider/backend-ui-action-provider.js +5 -2
  162. package/out/ui-action/provider/ui-action-provider-base.d.ts +12 -1
  163. package/out/ui-action/provider/ui-action-provider-base.d.ts.map +1 -1
  164. package/out/ui-action/provider/ui-action-provider-base.js +55 -5
  165. package/out/ui-logic/ui-logic-context.d.ts +8 -0
  166. package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
  167. package/out/ui-logic/ui-logic-context.js +11 -0
  168. package/out/ui-logic/ui-logic-link/ui-logic-link.js +1 -1
  169. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts.map +1 -1
  170. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.js +5 -1
  171. package/out/ui-logic/utils/handle-src-val.d.ts.map +1 -1
  172. package/out/ui-logic/utils/handle-src-val.js +17 -4
  173. package/out/utils/wf-helper/wf-helper.js +2 -2
  174. package/package.json +3 -3
  175. package/src/app-hub.ts +17 -0
  176. package/src/application.ts +20 -1
  177. package/src/controller/common/control/md-control.controller.ts +3 -0
  178. package/src/controller/common/view/view.controller.ts +67 -0
  179. package/src/controller/control/dashboard/custom-dashboard.controller.ts +107 -0
  180. package/src/controller/control/dashboard/index.ts +1 -0
  181. package/src/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.ts +32 -9
  182. package/src/controller/control/data-view/data-view.controller.ts +5 -4
  183. package/src/controller/control/index.ts +2 -0
  184. package/src/controller/control/panel/panel/panel-item.controller.ts +105 -5
  185. package/src/controller/control/panel/panel/panel.controller.ts +17 -1
  186. package/src/controller/control/toolbar/toolbar.controllerr.ts +40 -24
  187. package/src/controller/control/tree-grid/index.ts +2 -0
  188. package/src/controller/control/tree-grid/tree-grid.controller.ts +6 -0
  189. package/src/controller/control/tree-grid/tree-grid.service.ts +12 -0
  190. package/src/controller/control/tree-grid-ex/index.ts +2 -0
  191. package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +283 -0
  192. package/src/controller/control/tree-grid-ex/tree-grid-ex.service.ts +171 -0
  193. package/src/controller/utils/event/controller-event.ts +16 -0
  194. package/src/controller/utils/view-msg/index.ts +1 -0
  195. package/src/controller/utils/view-msg/view-msg-controller.ts +250 -0
  196. package/src/de-logic/de-logic-context.ts +12 -0
  197. package/src/de-logic/de-logic-node/prepare-param-node/prepare-param-node.ts +7 -1
  198. package/src/de-logic/utils/handle-src-val.ts +23 -10
  199. package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +10 -0
  200. package/src/interface/common/i-app-service/i-app-service.ts +10 -0
  201. package/src/interface/controller/common/index.ts +1 -0
  202. package/src/interface/controller/common/view-message/i-view-message.ts +42 -0
  203. package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +20 -0
  204. package/src/interface/controller/controller/control/i-tree-grid.controller.ts +12 -0
  205. package/src/interface/controller/controller/control/index.ts +2 -0
  206. package/src/interface/controller/controller/control/panel-item/i-panel-item.controller.ts +2 -2
  207. package/src/interface/controller/controller/control/portlet/i-portlet.controller.ts +8 -0
  208. package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +12 -0
  209. package/src/interface/controller/event/control/i-tree-grid.event.ts +12 -0
  210. package/src/interface/controller/event/control/index.ts +2 -0
  211. package/src/interface/controller/event/view/i-tree-grid-ex-view.event.ts +12 -0
  212. package/src/interface/controller/event/view/i-tree-grid-view.event.ts +12 -0
  213. package/src/interface/controller/event/view/index.ts +2 -0
  214. package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +56 -0
  215. package/src/interface/controller/state/control/i-tree-grid.state.ts +12 -0
  216. package/src/interface/controller/state/control/index.ts +2 -0
  217. package/src/interface/controller/state/view/i-tree-grid-ex-view.state.ts +12 -0
  218. package/src/interface/controller/state/view/i-tree-grid-view.state.ts +12 -0
  219. package/src/interface/controller/state/view/i-view.state.ts +9 -0
  220. package/src/interface/controller/state/view/index.ts +2 -0
  221. package/src/interface/provider/i-grid-column.provider.ts +2 -1
  222. package/src/interface/service/service/i-app-de.service.ts +10 -0
  223. package/src/interface/service/service/i-config.service.ts +20 -0
  224. package/src/interface/service/service/index.ts +1 -0
  225. package/src/logic-scheduler/trigger/item-dyna-logic-trigger.ts +5 -1
  226. package/src/service/app-data-entity/app-data-entity.ts +44 -13
  227. package/src/service/service/config/config.service.ts +65 -0
  228. package/src/service/service/entity/de.service.ts +15 -0
  229. package/src/service/service/entity/method/method.ts +5 -2
  230. package/src/service/service/index.ts +1 -0
  231. package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +4 -4
  232. package/src/service/vo/control.vo.ts +1 -6
  233. package/src/ui-action/provider/backend-ui-action-provider.ts +5 -2
  234. package/src/ui-action/provider/ui-action-provider-base.ts +68 -6
  235. package/src/ui-logic/ui-logic-context.ts +12 -0
  236. package/src/ui-logic/ui-logic-link/ui-logic-link.ts +1 -1
  237. package/src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts +7 -1
  238. package/src/ui-logic/utils/handle-src-val.ts +20 -4
  239. package/src/utils/wf-helper/wf-helper.ts +2 -2
@@ -0,0 +1,107 @@
1
+ import { IDashboard } from '@ibiz/model-core';
2
+ import { ConfigService } from '../../../service';
3
+
4
+ /**
5
+ * 自定义数据看板部件控制器
6
+ * @author lxm
7
+ * @date 2023-07-07 03:27:29
8
+ * @export
9
+ * @class CustomDashboardController
10
+ */
11
+ export class CustomDashboardController {
12
+ /**
13
+ * 自定义布局模型数据
14
+ *
15
+ * @author: zhujiamin
16
+ * @Date: 2023-09-20 16:42:36
17
+ */
18
+ customModelData: IData[] = [];
19
+
20
+ /**
21
+ * 动态设计水平列数
22
+ *
23
+ * @author: zhujiamin
24
+ * @Date: 2023-09-20 16:43:39
25
+ */
26
+ layoutColNum: number = 12;
27
+
28
+ /**
29
+ * 动态设计单元格高度,80px
30
+ *
31
+ * @author: zhujiamin
32
+ * @Date: 2023-09-20 16:43:39
33
+ */
34
+ layoutRowH: number = 80;
35
+
36
+ /**
37
+ * 看板模型
38
+ *
39
+ * @author: zhujiamin
40
+ * @Date: 2023-09-20 16:43:39
41
+ */
42
+ model: IDashboard | null = null;
43
+
44
+ /**
45
+ * 应用配置存储服务
46
+ *
47
+ * @return {*}
48
+ * @author: zhujiamin
49
+ * @Date: 2023-09-22 18:07:42
50
+ */
51
+ config: ConfigService;
52
+
53
+ /**
54
+ * Creates an instance of BaseController.
55
+ * @author lxm
56
+ * @date 2023-04-26 06:46:21
57
+ * @param {CTX} ctx 跨组件上下文环境,内部机制不暴露
58
+ */
59
+ constructor(model: IDashboard) {
60
+ this.model = model;
61
+ this.config = new ConfigService(
62
+ model.appId!,
63
+ 'dynadashboard',
64
+ `dashboard_${
65
+ this.model.appDataEntityId?.toLowerCase() || 'app'
66
+ }_${this.model.codeName?.toLowerCase()}`,
67
+ );
68
+ }
69
+
70
+ /**
71
+ * 加载自定义布局模型数据
72
+ *
73
+ * @author: zhujiamin
74
+ * @Date: 2023-09-20 16:22:49
75
+ */
76
+ async loadCustomModelData(): Promise<IData[]> {
77
+ const res = await this.config.load();
78
+ if (res.model) {
79
+ this.customModelData = res.model;
80
+ }
81
+ if (res.colNum) {
82
+ this.layoutColNum = res.colNum;
83
+ }
84
+ if (res.rowH) {
85
+ this.layoutRowH = res.rowH;
86
+ }
87
+ return this.customModelData;
88
+ }
89
+
90
+ /**
91
+ * 保存自定义布局模型数据
92
+ *
93
+ * @author: zhujiamin
94
+ * @Date: 2023-09-20 16:22:49
95
+ */
96
+ async saveCustomModelData(model: IData[]): Promise<IData[]> {
97
+ const res = await this.config.save({
98
+ model,
99
+ colNum: this.layoutColNum,
100
+ rowH: this.layoutRowH,
101
+ });
102
+ if (res) {
103
+ this.customModelData = model;
104
+ }
105
+ return model;
106
+ }
107
+ }
@@ -1,2 +1,3 @@
1
1
  export * from './dashboard.controller';
2
+ export * from './custom-dashboard.controller';
2
3
  export * from './portlet/index';
@@ -3,6 +3,7 @@ import {
3
3
  IPortletController,
4
4
  IDashboardController,
5
5
  IPortletContainerController,
6
+ DataChangeEvent,
6
7
  } from '../../../../../interface';
7
8
  import { calcLayoutHeightWidth, calcDynaClass } from '../../../../../model';
8
9
  import { ControlVO } from '../../../../../service';
@@ -144,6 +145,26 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
144
145
  return new PortletPartState();
145
146
  }
146
147
 
148
+ /**
149
+ * 数据改变方法
150
+ * @param {DataChangeEvent} event
151
+ * @return {*}
152
+ * @author: zhujiamin
153
+ * @Date: 2023-09-22 17:39:44
154
+ */
155
+ onDataChange(event: DataChangeEvent): void {
156
+ let data = event.data[0];
157
+ if (data && data instanceof ControlVO) {
158
+ data = data.getOrigin();
159
+ }
160
+ if (data) {
161
+ this.state.actionGroupState!.update(
162
+ data,
163
+ this.dashboard.view.model.appDataEntityId!,
164
+ );
165
+ }
166
+ }
167
+
147
168
  /**
148
169
  * 初始化标题右侧界面行为按钮的状态
149
170
  *
@@ -175,15 +196,7 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
175
196
  // 实体门户视图监听视图数据变更,刷新界面行为组的状态。
176
197
  const { appDataEntityId } = this.dashboard.view.model;
177
198
  if (appDataEntityId) {
178
- this.dashboard.view.evt.on('onDataChange', event => {
179
- let data = event.data[0];
180
- if (data && data instanceof ControlVO) {
181
- data = data.getOrigin();
182
- }
183
- if (data) {
184
- this.state.actionGroupState!.update(data, appDataEntityId);
185
- }
186
- });
199
+ this.dashboard.view.evt.on('onDataChange', this.onDataChange);
187
200
  }
188
201
  }
189
202
 
@@ -243,4 +256,14 @@ export class PortletPartController<T extends IDBPortletPart = IDBPortletPart>
243
256
  }
244
257
  }
245
258
  }
259
+
260
+ /**
261
+ * 销毁
262
+ * @author lxm
263
+ * @date 2023-04-25 11:08:54
264
+ */
265
+ async destroyed(): Promise<void> {
266
+ ibiz.log.debug(`${this.model.codeName} onDestroyed`);
267
+ this.dashboard.view.evt.off('onDataChange', this.onDataChange);
268
+ }
246
269
  }
@@ -195,6 +195,7 @@ export class DataViewControlController<
195
195
  }
196
196
 
197
197
  async afterLoad(args: MDCtrlLoadParams, items: IData[]): Promise<IData[]> {
198
+ await this.initGroupCodeListItems();
198
199
  await this.handleDataGroup();
199
200
  await this.initGroupActionStates();
200
201
  return items;
@@ -340,7 +341,7 @@ export class DataViewControlController<
340
341
  protected async initGroupCodeListItems(): Promise<void> {
341
342
  const { groupCodeListId } = this.model;
342
343
  if (!groupCodeListId) {
343
- throw new RuntimeModelError(this.model, '分组代码表没有配置');
344
+ return;
344
345
  }
345
346
  const app = ibiz.hub.getApp(this.context.srfappid);
346
347
  this.groupCodeListItems = await app.codeList.get(
@@ -356,9 +357,9 @@ export class DataViewControlController<
356
357
  * @memberof DataViewControlController
357
358
  */
358
359
  async handleCodeListGroup(): Promise<void> {
359
- const { groupAppDEFieldId } = this.model;
360
- if (!this.groupCodeListItems) {
361
- await this.initGroupCodeListItems();
360
+ const { groupAppDEFieldId, groupCodeListId } = this.model;
361
+ if (!groupCodeListId) {
362
+ throw new RuntimeModelError(this.model, '分组代码表没有配置');
362
363
  }
363
364
  const { items } = this.state;
364
365
  const groupMap: Map<string | number, IData[]> = new Map();
@@ -19,3 +19,5 @@ export * from './tree/index';
19
19
  export * from './wizard-panel/index';
20
20
  export * from './md-ctrl/index';
21
21
  export * from './kanban/index';
22
+ export * from './tree-grid-ex/index';
23
+ export * from './tree-grid/index';
@@ -133,10 +133,15 @@ export class PanelItemController<T extends IPanelItem = IPanelItem>
133
133
  * @date 2022-09-20 18:09:56
134
134
  * @param {string[]} names
135
135
  */
136
- dataChangeNotify(names: string[]): void {
136
+ async dataChangeNotify(names: string[]): Promise<void> {
137
137
  // 计算动态控制逻辑
138
138
  this.calcDynamicLogic(names);
139
139
 
140
+ // 计算显示,禁用,必填状态
141
+ this.calcItemDisabled(this.data);
142
+ this.calcItemVisible(this.data);
143
+ this.calcItemRequired(this.data);
144
+
140
145
  // 计算动态样式表
141
146
  this.calcDynaClass(this.data);
142
147
  }
@@ -147,14 +152,109 @@ export class PanelItemController<T extends IPanelItem = IPanelItem>
147
152
  * @author lxm
148
153
  * @date 2022-09-20 18:09:07
149
154
  */
150
- panelStateNotify(_state: PanelNotifyState): void {
155
+ async panelStateNotify(_state: PanelNotifyState): Promise<void> {
151
156
  // 计算动态控制逻辑
152
157
  this.calcDynamicLogic([], true);
153
158
 
159
+ // 计算显示,禁用,必填状态
160
+ this.calcItemDisabled(this.data);
161
+ this.calcItemVisible(this.data);
162
+ this.calcItemRequired(this.data);
163
+
154
164
  // 计算动态样式表
155
165
  this.calcDynaClass(this.data);
156
166
  }
157
167
 
168
+ /**
169
+ * 计算项的禁用状态
170
+ * @author lxm
171
+ * @date 2023-06-26 06:19:00
172
+ * @param {IData} data
173
+ */
174
+ calcItemDisabled(data: IData): void {
175
+ let enable = !this.dynaLogicResult.disabled;
176
+
177
+ // 上层计算为启用时计算预定义项启用逻辑
178
+ if (enable && this.panel.scheduler) {
179
+ const itemEnable = this.panel.scheduler.triggerItemEnable(
180
+ this.model.id!,
181
+ {
182
+ data: [data],
183
+ },
184
+ );
185
+ if (itemEnable !== undefined) {
186
+ enable = itemEnable;
187
+ }
188
+ }
189
+
190
+ // 修改state
191
+ this.state.disabled = !enable;
192
+ }
193
+
194
+ /**
195
+ * 计算项的显示状态
196
+ * @author lxm
197
+ * @date 2023-06-26 06:19:00
198
+ * @param {IData} data
199
+ */
200
+ calcItemVisible(data: IData): void {
201
+ let { visible } = this.dynaLogicResult;
202
+
203
+ // 上层计算为显示时计算预定义项显示逻辑
204
+ if (visible && this.panel.scheduler) {
205
+ const itemVIsible = this.panel.scheduler.triggerItemVisible(
206
+ this.model.id!,
207
+ {
208
+ data: [data],
209
+ },
210
+ );
211
+ if (itemVIsible !== undefined) {
212
+ visible = itemVIsible;
213
+ }
214
+ }
215
+
216
+ // 修改state
217
+ this.state.visible = visible;
218
+ }
219
+
220
+ /**
221
+ * 计算项的必填状态
222
+ * @author lxm
223
+ * @date 2023-06-26 06:19:00
224
+ * @param {IData} data
225
+ */
226
+ calcItemRequired(data: IData): void {
227
+ let allowEmpty = !this.dynaLogicResult.required;
228
+
229
+ // 上层计算为启用时计算预定义项启用逻辑
230
+ if (allowEmpty && this.panel.scheduler) {
231
+ const itemAllowEmpty = this.panel.scheduler.triggerItemBlank(
232
+ this.model.id!,
233
+ {
234
+ data: [data],
235
+ },
236
+ );
237
+ if (itemAllowEmpty !== undefined) {
238
+ allowEmpty = itemAllowEmpty;
239
+ }
240
+ }
241
+
242
+ // 修改state
243
+ this.state.required = !allowEmpty;
244
+ }
245
+
246
+ /**
247
+ * 动态逻辑结果
248
+ * @author lxm
249
+ * @date 2023-09-21 03:36:37
250
+ * @protected
251
+ */
252
+ protected dynaLogicResult = {
253
+ visible: true,
254
+ disabled: false,
255
+ required: false,
256
+ };
257
+
158
258
  /**
159
259
  * 计算动态逻辑
160
260
  *
@@ -182,15 +282,15 @@ export class PanelItemController<T extends IPanelItem = IPanelItem>
182
282
  switch (logic.logicCat) {
183
283
  // 动态空输入,不满足则必填
184
284
  case 'ITEMBLANK':
185
- this.state.required = !ok;
285
+ this.dynaLogicResult.required = !ok;
186
286
  break;
187
287
  // 动态启用,满足则启用
188
288
  case 'ITEMENABLE':
189
- this.state.disabled = !ok;
289
+ this.dynaLogicResult.disabled = !ok;
190
290
  break;
191
291
  // 动态显示,满足则显示
192
292
  case 'PANELVISIBLE':
193
- this.state.visible = ok;
293
+ this.dynaLogicResult.visible = ok;
194
294
  break;
195
295
  default:
196
296
  }
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable no-param-reassign */
2
- import { RuntimeError } from '@ibiz-template/core';
2
+ import { recursiveIterate, RuntimeError } from '@ibiz-template/core';
3
3
  import {
4
+ IControlLogic,
4
5
  IPanel,
5
6
  IPanelContainer,
6
7
  IPanelItem,
@@ -268,4 +269,19 @@ export class PanelController<
268
269
  this.state.data[name] = value;
269
270
  this.dataChangeNotify([name]);
270
271
  }
272
+
273
+ protected initControlScheduler(logics: IControlLogic[] = []): void {
274
+ const actualLogics = [...logics];
275
+ // 遍历所有的项,如果有逻辑的话加入
276
+ recursiveIterate(
277
+ this.model,
278
+ (item: IPanelItem) => {
279
+ if (item.controlLogics) {
280
+ actualLogics.push(...item.controlLogics);
281
+ }
282
+ },
283
+ { childrenFields: ['rootPanelItems', 'panelItems', 'panelTabPages'] },
284
+ );
285
+ super.initControlScheduler(actualLogics);
286
+ }
271
287
  }
@@ -1,4 +1,4 @@
1
- import { recursiveIterate } from '@ibiz-template/core';
1
+ import { recursiveIterate, RuntimeError } from '@ibiz-template/core';
2
2
  import {
3
3
  IDEToolbar,
4
4
  IDEToolbarItem,
@@ -13,6 +13,7 @@ import {
13
13
  IExtraButton,
14
14
  IButtonState,
15
15
  } from '../../../interface';
16
+ import { getUIActionById } from '../../../model';
16
17
  import { ControlVO } from '../../../service';
17
18
  import { UIActionUtil } from '../../../ui-action';
18
19
  import { ControlController } from '../../common';
@@ -69,15 +70,35 @@ export class ToolbarController<
69
70
  // 执行界面行为
70
71
  if (item.itemType === 'DEUIACTION') {
71
72
  const actionId = (item as IDETBUIActionItem).uiactionId;
72
- const res = await this.ctx.view.call(ViewCallTag.GET_DATA);
73
- const data = res || [];
74
- const args = this.getEventArgs();
75
- args.params = Object.assign(param, args.params);
76
- await UIActionUtil.execAndResolved(actionId!, {
77
- ...args,
78
- data,
79
- event,
80
- });
73
+ const uiAction = await getUIActionById(actionId!);
74
+ if (!uiAction) {
75
+ throw new RuntimeError(`没有找到界面行为模型${actionId}`);
76
+ }
77
+
78
+ // 是否过程中启用loading
79
+ const enableLoading =
80
+ ['SYS', 'BACKEND', 'WFBACKEND'].includes(uiAction.uiactionMode!) &&
81
+ uiAction.showBusyIndicator !== false;
82
+
83
+ if (enableLoading) {
84
+ this.state.buttonsState.setLoading(item.id!);
85
+ }
86
+
87
+ try {
88
+ const res = await this.ctx.view.call(ViewCallTag.GET_DATA);
89
+ const data = res || [];
90
+ const args = this.getEventArgs();
91
+ args.params = Object.assign(param, args.params);
92
+ await UIActionUtil.execAndResolved(actionId!, {
93
+ ...args,
94
+ data,
95
+ event,
96
+ });
97
+ } finally {
98
+ if (enableLoading) {
99
+ this.state.buttonsState.setLoading('');
100
+ }
101
+ }
81
102
  }
82
103
  }
83
104
 
@@ -122,21 +143,16 @@ export class ToolbarController<
122
143
  event: MouseEvent,
123
144
  params?: IData,
124
145
  ): Promise<void> {
125
- this.state.buttonsState.setLoading(item.id!);
126
146
  const isExtra = (item as IExtraButton).buttonType === 'extra';
127
- try {
128
- await this._evt.emit('onClick', {
129
- event,
130
- eventArg: item.id!,
131
- buttonType: isExtra ? 'extra' : 'deuiaction',
132
- });
133
-
134
- // 工具栏才走界面行为
135
- if (!isExtra) {
136
- await this.doUIAction(item, event, params);
137
- }
138
- } finally {
139
- this.state.buttonsState.setLoading('');
147
+ await this._evt.emit('onClick', {
148
+ event,
149
+ eventArg: item.id!,
150
+ buttonType: isExtra ? 'extra' : 'deuiaction',
151
+ });
152
+
153
+ // 工具栏才走界面行为
154
+ if (!isExtra) {
155
+ await this.doUIAction(item, event, params);
140
156
  }
141
157
  }
142
158
 
@@ -0,0 +1,2 @@
1
+ export * from './tree-grid.controller';
2
+ export * from './tree-grid.service';
@@ -0,0 +1,6 @@
1
+ import { ITreeGridController } from '../../../interface';
2
+ import { GridController } from '../grid';
3
+
4
+ export class TreeGridController
5
+ extends GridController
6
+ implements ITreeGridController {}
@@ -0,0 +1,12 @@
1
+ import { GridService } from '../grid';
2
+
3
+ /**
4
+ * 树表格部件服务
5
+ *
6
+ * @author zk
7
+ * @date 2023-09-25 05:09:52
8
+ * @export
9
+ * @class TreeGridService
10
+ * @extends {TreeService}
11
+ */
12
+ export class TreeGridService extends GridService {}
@@ -0,0 +1,2 @@
1
+ export * from './tree-grid-ex.controller';
2
+ export * from './tree-grid-ex.service';