@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
@@ -1,4 +1,5 @@
1
1
  import { IViewSession } from '../../../studio';
2
+ import { IViewMessage } from '../../common';
2
3
  import { IControllerState } from '../common/i-controller.state';
3
4
 
4
5
  /**
@@ -40,4 +41,12 @@ export interface IViewState extends IControllerState, IViewSession {
40
41
  * @type {boolean}
41
42
  */
42
43
  closeOK?: boolean;
44
+
45
+ /**
46
+ * 视图消息数据
47
+ * @author lxm
48
+ * @date 2023-09-20 09:48:29
49
+ * @type {{ [p: string]: IViewMessage[] }}
50
+ */
51
+ viewMessages: { [p: string]: IViewMessage[] };
43
52
  }
@@ -38,3 +38,5 @@ export * from './i-calendar-exp-view.state';
38
38
  export * from './i-pickup-md-view.state';
39
39
  export * from './i-kanban-view.state';
40
40
  export * from './i-form-pickup-data-view.state';
41
+ export * from './i-tree-grid-view.state';
42
+ export * from './i-tree-grid-ex-view.state';
@@ -1,4 +1,5 @@
1
1
  import { IDEGridColumn } from '@ibiz/model-core';
2
+ import { TreeGridExController } from '../../controller';
2
3
  import { IGridColumnController, IGridController } from '../controller';
3
4
 
4
5
  /**
@@ -31,7 +32,7 @@ export interface IGridColumnProvider {
31
32
  */
32
33
  createController(
33
34
  columnModel: IDEGridColumn,
34
- grid: IGridController,
35
+ grid: IGridController | TreeGridExController,
35
36
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
36
37
  ): Promise<IGridColumnController>;
37
38
  }
@@ -2,6 +2,7 @@ import { IHttpResponse } from '@ibiz-template/core';
2
2
  import { DECache } from '../../../service/utils';
3
3
  import { IFileService } from './i-file.service';
4
4
  import { IWorkFlowService } from './i-wf.service';
5
+ import { IConfigService } from './i-config.service';
5
6
 
6
7
  /**
7
8
  * 实体服务
@@ -21,6 +22,15 @@ export interface IAppDEService {
21
22
  */
22
23
  readonly local: DECache;
23
24
 
25
+ /**
26
+ * 实体配置存储服务
27
+ *
28
+ * @author chitanda
29
+ * @date 2023-09-22 10:09:55
30
+ * @type {IConfigService}
31
+ */
32
+ readonly configCache: IConfigService;
33
+
24
34
  /**
25
35
  * 工作流相关服务
26
36
  *
@@ -0,0 +1,20 @@
1
+ export interface IConfigService {
2
+ /**
3
+ * 保存配置
4
+ *
5
+ * @author chitanda
6
+ * @date 2023-09-22 10:09:05
7
+ * @param {IData} data
8
+ * @return {*} {Promise<boolean>}
9
+ */
10
+ save(data: IData): Promise<boolean>;
11
+
12
+ /**
13
+ * 加载配置
14
+ *
15
+ * @author chitanda
16
+ * @date 2023-09-22 10:09:10
17
+ * @return {*} {Promise<IData>}
18
+ */
19
+ load(): Promise<IData>;
20
+ }
@@ -1,4 +1,5 @@
1
1
  export type { IAppDeAuthorityService } from './i-app-de-authority.service';
2
+ export type { IConfigService } from './i-config.service';
2
3
  export type { IAppDEService } from './i-app-de.service';
3
4
  export type { IAuthService } from './i-auth.service';
4
5
  export type { IFileService } from './i-file.service';
@@ -39,7 +39,11 @@ export class ItemDynaLogicTrigger extends LogicTrigger {
39
39
 
40
40
  match(matchParams: ITriggerMatchParams): boolean {
41
41
  const superResult = super.match(matchParams);
42
- return superResult && matchParams.itemName === this.logic.itemName;
42
+ return (
43
+ superResult &&
44
+ // 忽略大小写匹配
45
+ matchParams.itemName?.toLowerCase() === this.logic.itemName?.toLowerCase()
46
+ );
43
47
  }
44
48
 
45
49
  execute(executeParams: IUILogicParams): boolean {
@@ -2,7 +2,8 @@
2
2
  /* eslint-disable no-constructor-return */
3
3
  /* eslint-disable max-classes-per-file */
4
4
  import { IAppDataEntity } from '@ibiz/model-core';
5
- import { clone } from 'ramda';
5
+ import { clone, isNil } from 'ramda';
6
+ import { DataTypes } from '@ibiz-template/core';
6
7
  import { Srfuf } from '../constant';
7
8
  import { findModelChild } from '../../model';
8
9
  import { IDataEntity } from '../../interface';
@@ -133,7 +134,7 @@ export class AppDataEntity implements IDataEntity {
133
134
  * @protected
134
135
  */
135
136
  protected defineProperties(): void {
136
- const { _data } = this;
137
+ const { _data, convertVal } = this;
137
138
  const properties: { [key: string]: PropertyDescriptor } = {};
138
139
  const keys = Object.keys(_data);
139
140
  keys.forEach(key => {
@@ -149,17 +150,17 @@ export class AppDataEntity implements IDataEntity {
149
150
  });
150
151
  this._entity.appDEFields?.forEach(field => {
151
152
  const key = field.codeName!.toLowerCase();
152
- if (!keys.includes(key)) {
153
- properties[key] = {
154
- enumerable: true,
155
- set(val: unknown): void {
156
- _data[key] = val;
157
- },
158
- get(): any {
159
- return _data[key];
160
- },
161
- };
162
- }
153
+ properties[key] = {
154
+ enumerable: true,
155
+ set(val: unknown): void {
156
+ _data[key] = convertVal(val, field.stdDataType);
157
+ },
158
+ get(): any {
159
+ return _data[key];
160
+ },
161
+ };
162
+ // 初始值转换
163
+ _data[key] = convertVal(_data[key], field.stdDataType);
163
164
  });
164
165
  Object.defineProperties(this, properties);
165
166
  }
@@ -193,4 +194,34 @@ export class AppDataEntity implements IDataEntity {
193
194
  }
194
195
  return this;
195
196
  }
197
+
198
+ /**
199
+ * 根据属性的数据类型转换值
200
+ * @author lxm
201
+ * @date 2023-09-25 03:37:28
202
+ * @protected
203
+ * @param {unknown} value
204
+ * @param {(number | undefined)} dataType
205
+ * @return {*} {unknown}
206
+ */
207
+ protected convertVal(value: unknown, dataType: number | undefined): unknown {
208
+ // 没有数据类型的给原值
209
+ if (isNil(dataType)) {
210
+ return value;
211
+ }
212
+
213
+ // 数值转换
214
+ if (DataTypes.isNumber(dataType)) {
215
+ const numVal = !isNil(value) && value !== '' ? Number(value) : value;
216
+
217
+ if (Number.isNaN(numVal)) {
218
+ // 不能转换的给原值
219
+ ibiz.log.debug(`${value}不能转换成数字`);
220
+ return value;
221
+ }
222
+ return numVal;
223
+ }
224
+
225
+ return value;
226
+ }
196
227
  }
@@ -0,0 +1,65 @@
1
+ import { Application } from '../../../application';
2
+ import { IConfigService } from '../../../interface';
3
+
4
+ /**
5
+ * 应用配置存储服务
6
+ *
7
+ * @author chitanda
8
+ * @date 2023-09-22 10:09:05
9
+ * @export
10
+ * @class ConfigService
11
+ */
12
+ export class ConfigService implements IConfigService {
13
+ private app: Application;
14
+
15
+ /**
16
+ * Creates an instance of ConfigService.
17
+ *
18
+ * @author chitanda
19
+ * @date 2023-09-22 10:09:16
20
+ * @param {string} appId 应用标识
21
+ * @param {string} folder 定义文件夹
22
+ * @param {string} tag 存储标识
23
+ */
24
+ constructor(
25
+ protected appId: string,
26
+ protected folder: string,
27
+ protected tag: string,
28
+ ) {
29
+ this.app = ibiz.hub.getApp(appId);
30
+ }
31
+
32
+ /**
33
+ * 保存配置
34
+ *
35
+ * @author chitanda
36
+ * @date 2023-09-22 10:09:05
37
+ * @param {IData} data
38
+ * @return {*} {Promise<boolean>}
39
+ */
40
+ async save(data: IData): Promise<boolean> {
41
+ const res = await this.app.net.put(
42
+ `/configs/${this.folder}/${this.tag}`,
43
+ data,
44
+ );
45
+ if (res.ok) {
46
+ return res.data as unknown as boolean;
47
+ }
48
+ return false;
49
+ }
50
+
51
+ /**
52
+ * 加载配置
53
+ *
54
+ * @author chitanda
55
+ * @date 2023-09-22 10:09:10
56
+ * @return {*} {Promise<IData>}
57
+ */
58
+ async load(): Promise<IData> {
59
+ const res = await this.app.net.get(`/configs/${this.folder}/${this.tag}`);
60
+ if (res.ok) {
61
+ return res.data;
62
+ }
63
+ return {};
64
+ }
65
+ }
@@ -8,6 +8,7 @@ import { findModelChild } from '../../../model';
8
8
  import { DEActionMethod } from './method/de-action';
9
9
  import { FetchMethod } from './method/fetch';
10
10
  import { IAppDEService } from '../../../interface';
11
+ import { ConfigService } from '../config/config.service';
11
12
 
12
13
  /**
13
14
  * 实体服务
@@ -18,6 +19,15 @@ import { IAppDEService } from '../../../interface';
18
19
  * @class DEService
19
20
  */
20
21
  export class DEService implements IAppDEService {
22
+ /**
23
+ * 实体配置存储服务
24
+ *
25
+ * @author chitanda
26
+ * @date 2023-09-22 10:09:55
27
+ * @type {ConfigService}
28
+ */
29
+ readonly configCache: ConfigService;
30
+
21
31
  /**
22
32
  * 工作流相关服务
23
33
  *
@@ -63,6 +73,11 @@ export class DEService implements IAppDEService {
63
73
  * @param {IAppDataEntity} model 应用实体模型
64
74
  */
65
75
  constructor(protected model: IAppDataEntity) {
76
+ this.configCache = new ConfigService(
77
+ model.appId!,
78
+ 'PSAppDataEntity',
79
+ model.codeName!,
80
+ );
66
81
  this.wf = new WorkFlowService(model);
67
82
  this.file = new FileService(model);
68
83
  }
@@ -115,7 +115,7 @@ export abstract class Method {
115
115
  );
116
116
  break;
117
117
  case 'GET':
118
- res = await this.app.net.get(`${path}/${methodName}`, data);
118
+ res = await this.app.net.get(`${path}/${methodName}`, data || params);
119
119
  break;
120
120
  case 'PUT': {
121
121
  res = await this.app.net.put(
@@ -125,7 +125,10 @@ export abstract class Method {
125
125
  break;
126
126
  }
127
127
  case 'DELETE':
128
- res = await this.app.net.delete(`${path}/${methodName}`, data);
128
+ res = await this.app.net.delete(
129
+ `${path}/${methodName}`,
130
+ data || params,
131
+ );
129
132
  break;
130
133
  default:
131
134
  if (requestMethod) {
@@ -1,4 +1,5 @@
1
1
  export { CodeListService } from './code-list/code-list.service';
2
+ export { ConfigService } from './config/config.service';
2
3
  export { CounterService } from './counter/counter.service';
3
4
  export { DEService } from './entity/de.service';
4
5
  export { WorkFlowService } from './work-flow/work-flow.service';
@@ -158,11 +158,11 @@ export class DynamicCodeListCache {
158
158
  ): Promise<CodeListItem[]> {
159
159
  const app = ibiz.hub.getApp(context.srfappid);
160
160
  // *预定义加载
161
+ // 特殊处理,避免预置代码表加载不全
162
+ if (!params.size) {
163
+ params = { ...params, size: 10000 };
164
+ }
161
165
  if (this.isPredefined) {
162
- // 特殊处理,避免预置代码表加载不全
163
- if (!params.size) {
164
- params = { ...params, size: 10000 };
165
- }
166
166
  const res = await app.net.get(
167
167
  `/dictionaries/codelist/${this.codeList.codeName}`,
168
168
  params,
@@ -192,14 +192,9 @@ export class ControlVO {
192
192
  },
193
193
  set(val) {
194
194
  // 有mapField的走它的转换
195
- this.$origin[dataKey] = mapField ? mapField.convertVal(val) : val;
195
+ this.$origin[dataKey] = val;
196
196
  },
197
197
  });
198
-
199
- // 一开始初始化的时候先把值转换一下。
200
- if (mapField) {
201
- this[uiKey] = mapField.convertVal(this.$origin[dataKey]);
202
- }
203
198
  } else {
204
199
  Object.defineProperty(this, uiKey, {
205
200
  enumerable: true,
@@ -77,8 +77,11 @@ export class BackendUIActionProvider extends UIActionProviderBase {
77
77
  );
78
78
 
79
79
  // 适配界面行为成功提示信息
80
- if (res.ok && action.successMsg) {
81
- ibiz.message.success(action.successMsg);
80
+ if (res.ok) {
81
+ const successMsg = this.calcMessage('success', action, args);
82
+ if (successMsg) {
83
+ ibiz.message.success(successMsg);
84
+ }
82
85
  }
83
86
  Object.assign(actionResult, {
84
87
  data: isArray(res.data) ? res.data : [res.data],
@@ -1,5 +1,5 @@
1
1
  import { RuntimeModelError } from '@ibiz-template/core';
2
- import { IAppDEUIAction, INavigateParam } from '@ibiz/model-core';
2
+ import { IAppDEUIAction, ILanguageRes, INavigateParam } from '@ibiz/model-core';
3
3
  import {
4
4
  IUIActionProvider,
5
5
  IUIActionResult,
@@ -7,7 +7,7 @@ import {
7
7
  } from '../../interface';
8
8
  import { calcDeCodeNameById } from '../../model';
9
9
  import { execUILogic } from '../../ui-logic';
10
- import { convertNavData, formatMultiData } from '../../utils';
10
+ import { convertNavData, formatMultiData, ScriptFactory } from '../../utils';
11
11
  import { UIActionUtil } from '../uiaction-util';
12
12
 
13
13
  /**
@@ -49,7 +49,7 @@ export abstract class UIActionProviderBase implements IUIActionProvider {
49
49
  }
50
50
 
51
51
  // **用户操作确认**
52
- if (!(await this.isConfirm(action))) {
52
+ if (!(await this.isConfirm(action, args))) {
53
53
  return this.returnError(result);
54
54
  }
55
55
 
@@ -110,9 +110,13 @@ export abstract class UIActionProviderBase implements IUIActionProvider {
110
110
  * @param {IAppDEUIAction} action 界面行为模型
111
111
  * @returns {*} {Promise<boolean>}
112
112
  */
113
- async isConfirm(action: IAppDEUIAction): Promise<boolean> {
114
- if (action.enableConfirm && action.confirmMsg) {
115
- return ibiz.modal.confirm({ title: action.confirmMsg });
113
+ async isConfirm(
114
+ action: IAppDEUIAction,
115
+ args: IUILogicParams,
116
+ ): Promise<boolean> {
117
+ const confirmMsg = this.calcMessage('confirm', action, args);
118
+ if (action.enableConfirm && confirmMsg) {
119
+ return ibiz.modal.confirm({ title: confirmMsg });
116
120
  }
117
121
  return true;
118
122
  }
@@ -265,4 +269,62 @@ export abstract class UIActionProviderBase implements IUIActionProvider {
265
269
  );
266
270
  return { resultContext, resultData, resultParams };
267
271
  }
272
+
273
+ /**
274
+ * 计算消息信息(动态,多语言资源)
275
+ * @author lxm
276
+ * @date 2023-09-25 03:03:01
277
+ * @protected
278
+ * @param {('confirm' | 'success')} type
279
+ * @param {IAppDEUIAction} action
280
+ * @param {IUILogicParams} args
281
+ * @return {*}
282
+ */
283
+ protected calcMessage(
284
+ type: 'confirm' | 'success',
285
+ action: IAppDEUIAction,
286
+ args: IUILogicParams,
287
+ ): string | undefined {
288
+ let msg: string | undefined;
289
+ let msgRes: ILanguageRes | undefined;
290
+ const { confirmMsg, cmlanguageRes, successMsg, smlanguageRes } = action;
291
+ switch (type) {
292
+ case 'confirm':
293
+ msg = confirmMsg;
294
+ msgRes = cmlanguageRes;
295
+ break;
296
+ case 'success':
297
+ msg = successMsg;
298
+ msgRes = smlanguageRes;
299
+ break;
300
+ default:
301
+ }
302
+
303
+ // 多语言资源转换
304
+ if (msgRes) {
305
+ const msgResContent = ibiz.i18n.t(
306
+ msgRes.lanResTag!,
307
+ msgRes.defaultContent || msg,
308
+ );
309
+ if (msgResContent !== msgRes.lanResTag) {
310
+ msg = msgResContent;
311
+ }
312
+ }
313
+
314
+ if (msg) {
315
+ const { data } = args;
316
+ const scriptParams: IParams = { ...args };
317
+ if (data.length === 1) {
318
+ // 单数据
319
+ [scriptParams.data] = data;
320
+ } else if (data.length === 0) {
321
+ // 无数据
322
+ delete scriptParams.data;
323
+ }
324
+ return ScriptFactory.execScriptFn(scriptParams, `\`${msg}\``, {
325
+ isAsync: false,
326
+ singleRowReturn: true,
327
+ }) as string;
328
+ }
329
+ }
268
330
  }
@@ -143,4 +143,16 @@ export class UILogicContext {
143
143
  get: () => this.lastReturn,
144
144
  });
145
145
  }
146
+
147
+ /**
148
+ * 是否是实体参数变量(即后台数据对象)
149
+ * @author lxm
150
+ * @date 2023-09-22 03:40:30
151
+ * @param {string} paramId
152
+ * @return {*} {boolean}
153
+ */
154
+ isEntityParam(paramId: string): boolean {
155
+ const deLogicParams = this.deLogicParams.get(paramId);
156
+ return !!(deLogicParams && deLogicParams.model.entityParam);
157
+ }
146
158
  }
@@ -49,7 +49,7 @@ export class UILogicLink {
49
49
  */
50
50
  constructor(public model: IDEUILogicLink) {
51
51
  const { linkMode, deuilogicLinkGroupCond } = this.model;
52
- if (linkMode === 0) {
52
+ if ((linkMode || 0) === 0) {
53
53
  if (deuilogicLinkGroupCond) {
54
54
  this.groupCond = new UILogicLinkGroupCond(deuilogicLinkGroupCond);
55
55
  }
@@ -74,7 +74,13 @@ export class PrepareJSParamNode extends UILogicNode {
74
74
  ): void {
75
75
  const { dstFieldName, dstDEUILogicParamId } = nodeParam;
76
76
  // 目标参数
77
- const dstField = dstFieldName;
77
+ let dstField = dstFieldName;
78
+
79
+ // 实体参数对象转小写
80
+ if (ctx.isEntityParam(dstDEUILogicParamId!)) {
81
+ dstField = dstField?.toLowerCase();
82
+ }
83
+
78
84
  // 源参数
79
85
  const srcVal = handleSrcVal(ctx, nodeParam);
80
86
  if (dstField) {
@@ -1,5 +1,6 @@
1
1
  import { ModelError } from '@ibiz-template/core';
2
2
  import { clone } from 'ramda';
3
+ import { ScriptFactory } from '../../utils';
3
4
  import { UILogicContext } from '../ui-logic-context';
4
5
 
5
6
  type SrcValParams = {
@@ -37,12 +38,18 @@ export function handleSrcVal(
37
38
  const { srcDEUILogicParamId, srcFieldName, srcValue } = srcValParams;
38
39
  // 没有源值类型就是逻辑参数
39
40
  const srcValueType = srcValParams.srcValueType || 'SRCDLPARAM';
41
+ // 取属性值
42
+ let srcField = srcFieldName;
40
43
 
41
44
  let value: unknown;
42
45
  switch (srcValueType) {
43
46
  // 源逻辑参数
44
47
  case 'SRCDLPARAM':
45
48
  value = ctx.params[srcDEUILogicParamId!];
49
+ // 如果是实体参数对象则转换成小写。
50
+ if (ctx.isEntityParam(srcDEUILogicParamId!)) {
51
+ srcField = srcField?.toLowerCase();
52
+ }
46
53
  break;
47
54
  // 空值类型
48
55
  case 'NULLVALUE':
@@ -71,11 +78,20 @@ export function handleSrcVal(
71
78
  throw new ModelError(srcValParams, `暂未支持源值类型${srcValueType}`);
72
79
  }
73
80
 
74
- // 取属性值
75
- const srcField = srcFieldName;
76
81
  if (value && srcField) {
77
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
78
- value = (value as any)[srcField];
82
+ try {
83
+ value = ScriptFactory.execScriptFn(
84
+ { srcValue: value },
85
+ `srcValue.${srcField}`,
86
+ {
87
+ singleRowReturn: true,
88
+ isAsync: false,
89
+ },
90
+ );
91
+ } catch (error) {
92
+ ibiz.log.error(`从源参数取属性${srcField}报错,源参数:`, value);
93
+ throw error;
94
+ }
79
95
  }
80
96
 
81
97
  return value;
@@ -34,8 +34,8 @@ export function getWFSubmitViewId(
34
34
  const key = type
35
35
  ? `WFUTILACTION@${type.toUpperCase()}`
36
36
  : `WFACTION@${ibiz.env.isMob ? sequenceflowmobview : sequenceflowview}`;
37
- const submitViewRef = appViewRefs!.find(viewRef => {
38
- return viewRef.name === key;
37
+ const submitViewRef = appViewRefs?.find(viewRef => {
38
+ return viewRef.name!.indexOf(key) !== -1;
39
39
  });
40
40
  return submitViewRef?.refAppViewId;
41
41
  }