@ibiz-template/runtime 0.1.28 → 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 (212) hide show
  1. package/dist/index.esm.js +1205 -265
  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/index.d.ts +2 -0
  25. package/out/controller/control/index.d.ts.map +1 -1
  26. package/out/controller/control/index.js +2 -0
  27. package/out/controller/control/tree-grid/index.d.ts +3 -0
  28. package/out/controller/control/tree-grid/index.d.ts.map +1 -0
  29. package/out/controller/control/tree-grid/index.js +2 -0
  30. package/out/controller/control/tree-grid/tree-grid.controller.d.ts +5 -0
  31. package/out/controller/control/tree-grid/tree-grid.controller.d.ts.map +1 -0
  32. package/out/controller/control/tree-grid/tree-grid.controller.js +3 -0
  33. package/out/controller/control/tree-grid/tree-grid.service.d.ts +13 -0
  34. package/out/controller/control/tree-grid/tree-grid.service.d.ts.map +1 -0
  35. package/out/controller/control/tree-grid/tree-grid.service.js +12 -0
  36. package/out/controller/control/tree-grid-ex/index.d.ts +3 -0
  37. package/out/controller/control/tree-grid-ex/index.d.ts.map +1 -0
  38. package/out/controller/control/tree-grid-ex/index.js +2 -0
  39. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +134 -0
  40. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -0
  41. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +240 -0
  42. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts +65 -0
  43. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts.map +1 -0
  44. package/out/controller/control/tree-grid-ex/tree-grid-ex.service.js +143 -0
  45. package/out/controller/utils/event/controller-event.d.ts +7 -0
  46. package/out/controller/utils/event/controller-event.d.ts.map +1 -1
  47. package/out/controller/utils/event/controller-event.js +12 -0
  48. package/out/controller/utils/view-msg/index.d.ts +2 -0
  49. package/out/controller/utils/view-msg/index.d.ts.map +1 -0
  50. package/out/controller/utils/view-msg/index.js +1 -0
  51. package/out/controller/utils/view-msg/view-msg-controller.d.ts +69 -0
  52. package/out/controller/utils/view-msg/view-msg-controller.d.ts.map +1 -0
  53. package/out/controller/utils/view-msg/view-msg-controller.js +176 -0
  54. package/out/de-logic/de-logic-context.d.ts +8 -0
  55. package/out/de-logic/de-logic-context.d.ts.map +1 -1
  56. package/out/de-logic/de-logic-context.js +11 -0
  57. package/out/de-logic/de-logic-node/prepare-param-node/prepare-param-node.d.ts.map +1 -1
  58. package/out/de-logic/de-logic-node/prepare-param-node/prepare-param-node.js +5 -1
  59. package/out/de-logic/utils/handle-src-val.d.ts.map +1 -1
  60. package/out/de-logic/utils/handle-src-val.js +19 -8
  61. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +9 -0
  62. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  63. package/out/interface/common/i-app-service/i-app-service.d.ts +9 -0
  64. package/out/interface/common/i-app-service/i-app-service.d.ts.map +1 -1
  65. package/out/interface/controller/common/index.d.ts +1 -0
  66. package/out/interface/controller/common/index.d.ts.map +1 -1
  67. package/out/interface/controller/common/index.js +1 -0
  68. package/out/interface/controller/common/view-message/i-view-message.d.ts +39 -0
  69. package/out/interface/controller/common/view-message/i-view-message.d.ts.map +1 -0
  70. package/out/interface/controller/common/view-message/i-view-message.js +1 -0
  71. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +16 -0
  72. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -0
  73. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.js +1 -0
  74. package/out/interface/controller/controller/control/i-tree-grid.controller.d.ts +13 -0
  75. package/out/interface/controller/controller/control/i-tree-grid.controller.d.ts.map +1 -0
  76. package/out/interface/controller/controller/control/i-tree-grid.controller.js +1 -0
  77. package/out/interface/controller/controller/control/index.d.ts +2 -0
  78. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  79. package/out/interface/controller/controller/control/index.js +2 -0
  80. package/out/interface/controller/controller/control/portlet/i-portlet.controller.d.ts +7 -0
  81. package/out/interface/controller/controller/control/portlet/i-portlet.controller.d.ts.map +1 -1
  82. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +13 -0
  83. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -0
  84. package/out/interface/controller/event/control/i-tree-grid-ex.event.js +1 -0
  85. package/out/interface/controller/event/control/i-tree-grid.event.d.ts +13 -0
  86. package/out/interface/controller/event/control/i-tree-grid.event.d.ts.map +1 -0
  87. package/out/interface/controller/event/control/i-tree-grid.event.js +1 -0
  88. package/out/interface/controller/event/control/index.d.ts +2 -0
  89. package/out/interface/controller/event/control/index.d.ts.map +1 -1
  90. package/out/interface/controller/event/control/index.js +2 -0
  91. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.d.ts +12 -0
  92. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.d.ts.map +1 -0
  93. package/out/interface/controller/event/view/i-tree-grid-ex-view.event.js +1 -0
  94. package/out/interface/controller/event/view/i-tree-grid-view.event.d.ts +12 -0
  95. package/out/interface/controller/event/view/i-tree-grid-view.event.d.ts.map +1 -0
  96. package/out/interface/controller/event/view/i-tree-grid-view.event.js +1 -0
  97. package/out/interface/controller/event/view/index.d.ts +2 -0
  98. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  99. package/out/interface/controller/event/view/index.js +2 -0
  100. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +52 -0
  101. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -0
  102. package/out/interface/controller/state/control/i-tree-grid-ex.state.js +1 -0
  103. package/out/interface/controller/state/control/i-tree-grid.state.d.ts +13 -0
  104. package/out/interface/controller/state/control/i-tree-grid.state.d.ts.map +1 -0
  105. package/out/interface/controller/state/control/i-tree-grid.state.js +1 -0
  106. package/out/interface/controller/state/control/index.d.ts +2 -0
  107. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  108. package/out/interface/controller/state/control/index.js +2 -0
  109. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.d.ts +13 -0
  110. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.d.ts.map +1 -0
  111. package/out/interface/controller/state/view/i-tree-grid-ex-view.state.js +1 -0
  112. package/out/interface/controller/state/view/i-tree-grid-view.state.d.ts +13 -0
  113. package/out/interface/controller/state/view/i-tree-grid-view.state.d.ts.map +1 -0
  114. package/out/interface/controller/state/view/i-tree-grid-view.state.js +1 -0
  115. package/out/interface/controller/state/view/i-view.state.d.ts +10 -0
  116. package/out/interface/controller/state/view/i-view.state.d.ts.map +1 -1
  117. package/out/interface/controller/state/view/index.d.ts +2 -0
  118. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  119. package/out/interface/controller/state/view/index.js +2 -0
  120. package/out/interface/provider/i-grid-column.provider.d.ts +2 -1
  121. package/out/interface/provider/i-grid-column.provider.d.ts.map +1 -1
  122. package/out/interface/service/service/i-app-de.service.d.ts +9 -0
  123. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  124. package/out/interface/service/service/i-config.service.d.ts +20 -0
  125. package/out/interface/service/service/i-config.service.d.ts.map +1 -0
  126. package/out/interface/service/service/i-config.service.js +1 -0
  127. package/out/interface/service/service/index.d.ts +1 -0
  128. package/out/interface/service/service/index.d.ts.map +1 -1
  129. package/out/service/app-data-entity/app-data-entity.d.ts +10 -0
  130. package/out/service/app-data-entity/app-data-entity.d.ts.map +1 -1
  131. package/out/service/app-data-entity/app-data-entity.js +40 -13
  132. package/out/service/service/config/config.service.d.ts +43 -0
  133. package/out/service/service/config/config.service.d.ts.map +1 -0
  134. package/out/service/service/config/config.service.js +54 -0
  135. package/out/service/service/entity/de.service.d.ts +9 -0
  136. package/out/service/service/entity/de.service.d.ts.map +1 -1
  137. package/out/service/service/entity/de.service.js +2 -0
  138. package/out/service/service/index.d.ts +1 -0
  139. package/out/service/service/index.d.ts.map +1 -1
  140. package/out/service/service/index.js +1 -0
  141. package/out/service/vo/control.vo.d.ts.map +1 -1
  142. package/out/service/vo/control.vo.js +1 -5
  143. package/out/ui-action/provider/backend-ui-action-provider.d.ts.map +1 -1
  144. package/out/ui-action/provider/backend-ui-action-provider.js +5 -2
  145. package/out/ui-action/provider/ui-action-provider-base.d.ts +12 -1
  146. package/out/ui-action/provider/ui-action-provider-base.d.ts.map +1 -1
  147. package/out/ui-action/provider/ui-action-provider-base.js +55 -5
  148. package/out/ui-logic/ui-logic-context.d.ts +8 -0
  149. package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
  150. package/out/ui-logic/ui-logic-context.js +11 -0
  151. package/out/ui-logic/ui-logic-link/ui-logic-link.js +1 -1
  152. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts.map +1 -1
  153. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.js +5 -1
  154. package/out/ui-logic/utils/handle-src-val.d.ts.map +1 -1
  155. package/out/ui-logic/utils/handle-src-val.js +17 -4
  156. package/package.json +2 -2
  157. package/src/app-hub.ts +17 -0
  158. package/src/application.ts +20 -1
  159. package/src/controller/common/control/md-control.controller.ts +3 -0
  160. package/src/controller/common/view/view.controller.ts +67 -0
  161. package/src/controller/control/dashboard/custom-dashboard.controller.ts +107 -0
  162. package/src/controller/control/dashboard/index.ts +1 -0
  163. package/src/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.ts +32 -9
  164. package/src/controller/control/index.ts +2 -0
  165. package/src/controller/control/tree-grid/index.ts +2 -0
  166. package/src/controller/control/tree-grid/tree-grid.controller.ts +6 -0
  167. package/src/controller/control/tree-grid/tree-grid.service.ts +12 -0
  168. package/src/controller/control/tree-grid-ex/index.ts +2 -0
  169. package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +283 -0
  170. package/src/controller/control/tree-grid-ex/tree-grid-ex.service.ts +171 -0
  171. package/src/controller/utils/event/controller-event.ts +16 -0
  172. package/src/controller/utils/view-msg/index.ts +1 -0
  173. package/src/controller/utils/view-msg/view-msg-controller.ts +250 -0
  174. package/src/de-logic/de-logic-context.ts +12 -0
  175. package/src/de-logic/de-logic-node/prepare-param-node/prepare-param-node.ts +7 -1
  176. package/src/de-logic/utils/handle-src-val.ts +23 -10
  177. package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +10 -0
  178. package/src/interface/common/i-app-service/i-app-service.ts +10 -0
  179. package/src/interface/controller/common/index.ts +1 -0
  180. package/src/interface/controller/common/view-message/i-view-message.ts +42 -0
  181. package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +20 -0
  182. package/src/interface/controller/controller/control/i-tree-grid.controller.ts +12 -0
  183. package/src/interface/controller/controller/control/index.ts +2 -0
  184. package/src/interface/controller/controller/control/portlet/i-portlet.controller.ts +8 -0
  185. package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +12 -0
  186. package/src/interface/controller/event/control/i-tree-grid.event.ts +12 -0
  187. package/src/interface/controller/event/control/index.ts +2 -0
  188. package/src/interface/controller/event/view/i-tree-grid-ex-view.event.ts +12 -0
  189. package/src/interface/controller/event/view/i-tree-grid-view.event.ts +12 -0
  190. package/src/interface/controller/event/view/index.ts +2 -0
  191. package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +56 -0
  192. package/src/interface/controller/state/control/i-tree-grid.state.ts +12 -0
  193. package/src/interface/controller/state/control/index.ts +2 -0
  194. package/src/interface/controller/state/view/i-tree-grid-ex-view.state.ts +12 -0
  195. package/src/interface/controller/state/view/i-tree-grid-view.state.ts +12 -0
  196. package/src/interface/controller/state/view/i-view.state.ts +9 -0
  197. package/src/interface/controller/state/view/index.ts +2 -0
  198. package/src/interface/provider/i-grid-column.provider.ts +2 -1
  199. package/src/interface/service/service/i-app-de.service.ts +10 -0
  200. package/src/interface/service/service/i-config.service.ts +20 -0
  201. package/src/interface/service/service/index.ts +1 -0
  202. package/src/service/app-data-entity/app-data-entity.ts +44 -13
  203. package/src/service/service/config/config.service.ts +65 -0
  204. package/src/service/service/entity/de.service.ts +15 -0
  205. package/src/service/service/index.ts +1 -0
  206. package/src/service/vo/control.vo.ts +1 -6
  207. package/src/ui-action/provider/backend-ui-action-provider.ts +5 -2
  208. package/src/ui-action/provider/ui-action-provider-base.ts +68 -6
  209. package/src/ui-logic/ui-logic-context.ts +12 -0
  210. package/src/ui-logic/ui-logic-link/ui-logic-link.ts +1 -1
  211. package/src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts +7 -1
  212. package/src/ui-logic/utils/handle-src-val.ts +20 -4
@@ -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';
@@ -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
  }
@@ -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';
@@ -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;