@ibiz-template/runtime 0.1.36 → 0.1.38

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 (187) hide show
  1. package/dist/index.esm.js +13465 -1025
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/application.d.ts +9 -1
  5. package/out/application.d.ts.map +1 -1
  6. package/out/application.js +9 -2
  7. package/out/constant/view-call-tag.d.ts +5 -1
  8. package/out/constant/view-call-tag.d.ts.map +1 -1
  9. package/out/constant/view-call-tag.js +4 -0
  10. package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts.map +1 -1
  11. package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.js +1 -0
  12. package/out/controller/control/exp-bar/chart-exp-bar.controller.d.ts +24 -0
  13. package/out/controller/control/exp-bar/chart-exp-bar.controller.d.ts.map +1 -0
  14. package/out/controller/control/exp-bar/chart-exp-bar.controller.js +32 -0
  15. package/out/controller/control/exp-bar/index.d.ts +1 -0
  16. package/out/controller/control/exp-bar/index.d.ts.map +1 -1
  17. package/out/controller/control/exp-bar/index.js +1 -0
  18. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts +3 -3
  19. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
  20. package/out/controller/control/form/form-detail/form-item/form-item.controller.js +13 -8
  21. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +1 -0
  22. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
  23. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +8 -0
  24. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts +3 -3
  25. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts.map +1 -1
  26. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.js +13 -8
  27. package/out/controller/control/index.d.ts +1 -0
  28. package/out/controller/control/index.d.ts.map +1 -1
  29. package/out/controller/control/index.js +1 -0
  30. package/out/controller/control/medit-view-panel/index.d.ts +3 -0
  31. package/out/controller/control/medit-view-panel/index.d.ts.map +1 -0
  32. package/out/controller/control/medit-view-panel/index.js +2 -0
  33. package/out/controller/control/medit-view-panel/medit-view-panel.controller.d.ts +107 -0
  34. package/out/controller/control/medit-view-panel/medit-view-panel.controller.d.ts.map +1 -0
  35. package/out/controller/control/medit-view-panel/medit-view-panel.controller.js +260 -0
  36. package/out/controller/control/medit-view-panel/medit-view-panel.service.d.ts +11 -0
  37. package/out/controller/control/medit-view-panel/medit-view-panel.service.d.ts.map +1 -0
  38. package/out/controller/control/medit-view-panel/medit-view-panel.service.js +9 -0
  39. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  40. package/out/controller/control/search-bar/search-bar.controller.js +3 -3
  41. package/out/controller/utils/value-rule/value-rule.d.ts +10 -1
  42. package/out/controller/utils/value-rule/value-rule.d.ts.map +1 -1
  43. package/out/controller/utils/value-rule/value-rule.js +64 -1
  44. package/out/de-logic/de-logic-context.d.ts +4 -4
  45. package/out/de-logic/de-logic-context.d.ts.map +1 -1
  46. package/out/de-logic/de-logic-context.js +2 -1
  47. package/out/de-logic/de-logic-link/de-logic-link.js +1 -1
  48. package/out/de-logic/de-logic-param/de-logic-param.d.ts.map +1 -1
  49. package/out/de-logic/de-logic-param/de-logic-param.js +7 -1
  50. package/out/de-logic/de-logic.d.ts +1 -1
  51. package/out/de-logic/de-logic.d.ts.map +1 -1
  52. package/out/de-logic/index.d.ts +5 -5
  53. package/out/de-logic/index.d.ts.map +1 -1
  54. package/out/de-logic/index.js +32 -5
  55. package/out/engine/md-view.engine.d.ts +3 -3
  56. package/out/engine/md-view.engine.d.ts.map +1 -1
  57. package/out/engine/md-view.engine.js +14 -12
  58. package/out/hub/config/app-view-config-service.d.ts +3 -1
  59. package/out/hub/config/app-view-config-service.d.ts.map +1 -1
  60. package/out/hub/config/app-view-config-service.js +9 -0
  61. package/out/interface/common/i-app-view-config-service/i-app-view-config-service.d.ts +20 -2
  62. package/out/interface/common/i-app-view-config-service/i-app-view-config-service.d.ts.map +1 -1
  63. package/out/interface/controller/controller/control/i-chart-exp-bar.controller.d.ts +15 -0
  64. package/out/interface/controller/controller/control/i-chart-exp-bar.controller.d.ts.map +1 -0
  65. package/out/interface/controller/controller/control/i-chart-exp-bar.controller.js +1 -0
  66. package/out/interface/controller/controller/control/i-medit-view-panel.controller.d.ts +14 -0
  67. package/out/interface/controller/controller/control/i-medit-view-panel.controller.d.ts.map +1 -0
  68. package/out/interface/controller/controller/control/i-medit-view-panel.controller.js +1 -0
  69. package/out/interface/controller/controller/control/index.d.ts +2 -0
  70. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  71. package/out/interface/controller/controller/control/index.js +2 -0
  72. package/out/interface/controller/event/control/i-chart-exp-bar.event.d.ts +11 -0
  73. package/out/interface/controller/event/control/i-chart-exp-bar.event.d.ts.map +1 -0
  74. package/out/interface/controller/event/control/i-chart-exp-bar.event.js +1 -0
  75. package/out/interface/controller/event/control/i-medit-view-panel.event.d.ts +9 -0
  76. package/out/interface/controller/event/control/i-medit-view-panel.event.d.ts.map +1 -0
  77. package/out/interface/controller/event/control/i-medit-view-panel.event.js +1 -0
  78. package/out/interface/controller/event/control/index.d.ts +2 -0
  79. package/out/interface/controller/event/control/index.d.ts.map +1 -1
  80. package/out/interface/controller/event/control/index.js +2 -0
  81. package/out/interface/controller/event/view/i-chart-exp-view.event.d.ts +11 -0
  82. package/out/interface/controller/event/view/i-chart-exp-view.event.d.ts.map +1 -0
  83. package/out/interface/controller/event/view/i-chart-exp-view.event.js +1 -0
  84. package/out/interface/controller/event/view/i-medit-view9.event.d.ts +10 -0
  85. package/out/interface/controller/event/view/i-medit-view9.event.d.ts.map +1 -0
  86. package/out/interface/controller/event/view/i-medit-view9.event.js +1 -0
  87. package/out/interface/controller/event/view/index.d.ts +2 -0
  88. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  89. package/out/interface/controller/event/view/index.js +2 -0
  90. package/out/interface/controller/state/control/i-chart-exp-bar.state.d.ts +11 -0
  91. package/out/interface/controller/state/control/i-chart-exp-bar.state.d.ts.map +1 -0
  92. package/out/interface/controller/state/control/i-chart-exp-bar.state.js +1 -0
  93. package/out/interface/controller/state/control/i-medit-view-panel.state.d.ts +29 -0
  94. package/out/interface/controller/state/control/i-medit-view-panel.state.d.ts.map +1 -0
  95. package/out/interface/controller/state/control/i-medit-view-panel.state.js +1 -0
  96. package/out/interface/controller/state/control/index.d.ts +2 -0
  97. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  98. package/out/interface/controller/state/control/index.js +2 -0
  99. package/out/interface/controller/state/view/i-chart-exp-view.state.d.ts +11 -0
  100. package/out/interface/controller/state/view/i-chart-exp-view.state.d.ts.map +1 -0
  101. package/out/interface/controller/state/view/i-chart-exp-view.state.js +1 -0
  102. package/out/interface/controller/state/view/i-medit-view9.state.d.ts +11 -0
  103. package/out/interface/controller/state/view/i-medit-view9.state.d.ts.map +1 -0
  104. package/out/interface/controller/state/view/i-medit-view9.state.js +1 -0
  105. package/out/interface/controller/state/view/index.d.ts +2 -0
  106. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  107. package/out/interface/controller/state/view/index.js +2 -0
  108. package/out/interface/service/code-list-item/code-list-item.d.ts +16 -0
  109. package/out/interface/service/code-list-item/code-list-item.d.ts.map +1 -1
  110. package/out/service/index.d.ts +1 -0
  111. package/out/service/index.d.ts.map +1 -1
  112. package/out/service/index.js +1 -0
  113. package/out/service/mqtt/mqtt.service.d.ts +66 -0
  114. package/out/service/mqtt/mqtt.service.d.ts.map +1 -0
  115. package/out/service/mqtt/mqtt.service.js +95 -0
  116. package/out/service/service/code-list/code-list.service.d.ts.map +1 -1
  117. package/out/service/service/code-list/code-list.service.js +12 -1
  118. package/out/service/service/entity/de.service.d.ts +2 -2
  119. package/out/service/service/entity/de.service.d.ts.map +1 -1
  120. package/out/service/service/entity/method/de-action.d.ts +14 -5
  121. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  122. package/out/service/service/entity/method/de-action.js +56 -15
  123. package/out/service/service/entity/method/fetch.d.ts +1 -1
  124. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  125. package/out/service/service/entity/method/fetch.js +9 -6
  126. package/out/service/service/entity/method/method.d.ts +13 -13
  127. package/out/service/service/entity/method/method.d.ts.map +1 -1
  128. package/out/service/service/entity/method/method.js +16 -11
  129. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +7 -1
  130. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  131. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +76 -8
  132. package/out/ui-action/uiaction-util.js +3 -3
  133. package/out/ui-logic/ui-logic-param/ui-logic-param.d.ts.map +1 -1
  134. package/out/ui-logic/ui-logic-param/ui-logic-param.js +7 -1
  135. package/out/utils/script/script-factory.d.ts +10 -0
  136. package/out/utils/script/script-factory.d.ts.map +1 -1
  137. package/out/utils/script/script-factory.js +15 -0
  138. package/package.json +5 -3
  139. package/src/application.ts +22 -1
  140. package/src/constant/view-call-tag.ts +4 -0
  141. package/src/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.ts +2 -0
  142. package/src/controller/control/exp-bar/chart-exp-bar.controller.ts +51 -0
  143. package/src/controller/control/exp-bar/index.ts +1 -0
  144. package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +22 -9
  145. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +14 -0
  146. package/src/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.ts +18 -13
  147. package/src/controller/control/index.ts +1 -0
  148. package/src/controller/control/medit-view-panel/index.ts +2 -0
  149. package/src/controller/control/medit-view-panel/medit-view-panel.controller.ts +305 -0
  150. package/src/controller/control/medit-view-panel/medit-view-panel.service.ts +10 -0
  151. package/src/controller/control/search-bar/search-bar.controller.ts +6 -5
  152. package/src/controller/utils/value-rule/value-rule.ts +97 -2
  153. package/src/de-logic/de-logic-context.ts +6 -5
  154. package/src/de-logic/de-logic-link/de-logic-link.ts +1 -1
  155. package/src/de-logic/de-logic-param/de-logic-param.ts +6 -1
  156. package/src/de-logic/de-logic.ts +5 -1
  157. package/src/de-logic/index.ts +49 -8
  158. package/src/engine/md-view.engine.ts +16 -13
  159. package/src/hub/config/app-view-config-service.ts +12 -1
  160. package/src/interface/common/i-app-view-config-service/i-app-view-config-service.ts +22 -4
  161. package/src/interface/controller/controller/control/i-chart-exp-bar.controller.ts +19 -0
  162. package/src/interface/controller/controller/control/i-medit-view-panel.controller.ts +17 -0
  163. package/src/interface/controller/controller/control/index.ts +2 -0
  164. package/src/interface/controller/event/control/i-chart-exp-bar.event.ts +10 -0
  165. package/src/interface/controller/event/control/i-medit-view-panel.event.ts +9 -0
  166. package/src/interface/controller/event/control/index.ts +2 -0
  167. package/src/interface/controller/event/view/i-chart-exp-view.event.ts +11 -0
  168. package/src/interface/controller/event/view/i-medit-view9.event.ts +10 -0
  169. package/src/interface/controller/event/view/index.ts +2 -0
  170. package/src/interface/controller/state/control/i-chart-exp-bar.state.ts +10 -0
  171. package/src/interface/controller/state/control/i-medit-view-panel.state.ts +36 -0
  172. package/src/interface/controller/state/control/index.ts +2 -0
  173. package/src/interface/controller/state/view/i-chart-exp-view.state.ts +10 -0
  174. package/src/interface/controller/state/view/i-medit-view9.state.ts +10 -0
  175. package/src/interface/controller/state/view/index.ts +2 -0
  176. package/src/interface/service/code-list-item/code-list-item.ts +20 -0
  177. package/src/service/index.ts +1 -0
  178. package/src/service/mqtt/mqtt.service.ts +117 -0
  179. package/src/service/service/code-list/code-list.service.ts +15 -1
  180. package/src/service/service/entity/de.service.ts +2 -2
  181. package/src/service/service/entity/method/de-action.ts +74 -33
  182. package/src/service/service/entity/method/fetch.ts +12 -11
  183. package/src/service/service/entity/method/method.ts +28 -19
  184. package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +103 -10
  185. package/src/ui-action/uiaction-util.ts +3 -3
  186. package/src/ui-logic/ui-logic-param/ui-logic-param.ts +6 -1
  187. package/src/utils/script/script-factory.ts +16 -0
@@ -6,6 +6,7 @@ import {
6
6
  import { ascSort, descSort } from 'qx-util';
7
7
  import { clone, equals, isEmpty, isNil, where } from 'ramda';
8
8
  import { IAppDEDataSet } from '@ibiz/model-core';
9
+ import { isArray } from 'lodash-es';
9
10
  import { PSDEDQCondEngine, SearchFilter } from '../../../utils';
10
11
  import { Method } from './method';
11
12
  import { IDataEntity } from '../../../../interface';
@@ -30,14 +31,17 @@ export class FetchMethod extends Method {
30
31
 
31
32
  async exec(
32
33
  context: IParams,
33
- data: IData,
34
- params: IParams,
34
+ params?: IData | IData[],
35
+ params2?: IParams,
35
36
  ): Promise<HttpResponse<IDataEntity[]>> {
37
+ // 过滤参数,必须是对象
38
+ const searchParams = params && isArray(params) ? params : params2 || {};
39
+
36
40
  if (this.isLocalMode) {
37
41
  // 临时数据
38
42
  const items = await this.searchLocal(
39
43
  null,
40
- new SearchFilter(context, data),
44
+ new SearchFilter(context, searchParams),
41
45
  );
42
46
  return new HttpResponse<IDataEntity[]>(items, 200);
43
47
  }
@@ -48,12 +52,12 @@ export class FetchMethod extends Method {
48
52
  case 'INDEXDE':
49
53
  case 'CODELIST':
50
54
  case 'MULTIFORM':
51
- res = await this.fetchCodeListSet(context, params);
55
+ res = await this.fetchCodeListSet(context, searchParams);
52
56
  break;
53
57
  case 'REMOTE':
54
58
  {
55
59
  const path = this.calcPath(context);
56
- res = await this.request(path, context, data, params);
60
+ res = await this.request(path, context, params, params2);
57
61
  }
58
62
  break;
59
63
  default:
@@ -68,13 +72,10 @@ export class FetchMethod extends Method {
68
72
  res.data = items.map(item => this.createEntity(item));
69
73
 
70
74
  // 计算属性逻辑,每条数据走一遍
71
- if (res.data.length) {
72
- await Promise.all(
73
- res.data.map((item: IData) =>
74
- execFieldLogics(this.entity, 'compute', context, item, params),
75
- ),
76
- );
75
+ if (res.data) {
76
+ execFieldLogics(this.entity, 'compute', context, res.data, searchParams);
77
77
  }
78
+
78
79
  return res as HttpResponse<IDataEntity[]>;
79
80
  }
80
81
 
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
  import { HttpResponse, RuntimeModelError } from '@ibiz-template/core';
3
3
  import { IAppDataEntity, IAppDEMethod } from '@ibiz/model-core';
4
- import { notNilEmpty } from 'qx-util';
4
+ import { isArray } from 'lodash-es';
5
5
  import { Application } from '../../../../application';
6
6
  import { AppDataEntity } from '../../../app-data-entity/app-data-entity';
7
7
  import { calcResPath } from '../../../utils';
@@ -71,16 +71,17 @@ export abstract class Method {
71
71
  /**
72
72
  * 执行行为
73
73
  *
74
- * @author chitanda
75
- * @date 2022-10-10 14:10:42
76
- * @param {IParams} context
77
- * @param {IData} [params={}]
78
- * @param {IParams} [params2={}]
74
+ * @author lxm
75
+ * @date 2023-10-19 02:42:49
76
+ * @abstract
77
+ * @param {IParams} context 上下文
78
+ * @param {(IData | IData[])} [params] 请求参数
79
+ * @param {IParams} [params2] 查询参数
79
80
  * @return {*} {Promise<HttpResponse>}
80
81
  */
81
82
  abstract exec(
82
83
  context: IParams,
83
- params?: IData,
84
+ params?: IData | IData[],
84
85
  params2?: IParams,
85
86
  ): Promise<HttpResponse>;
86
87
 
@@ -99,7 +100,7 @@ export abstract class Method {
99
100
  protected async request(
100
101
  path: string,
101
102
  context: IParams,
102
- data?: IData,
103
+ data?: IData | IData[],
103
104
  params?: IParams,
104
105
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
105
106
  ): Promise<HttpResponse<any>> {
@@ -111,7 +112,7 @@ export abstract class Method {
111
112
  case 'POST':
112
113
  res = await this.app.net.post(
113
114
  this.mergeRequestPath(path, methodName),
114
- notNilEmpty(data) ? data! : params || {},
115
+ data || params || {},
115
116
  );
116
117
  break;
117
118
  case 'GET':
@@ -123,7 +124,7 @@ export abstract class Method {
123
124
  case 'PUT': {
124
125
  res = await this.app.net.put(
125
126
  this.mergeRequestPath(path, methodName),
126
- notNilEmpty(data) ? data! : params || {},
127
+ data || params || {},
127
128
  );
128
129
  break;
129
130
  }
@@ -184,17 +185,25 @@ export abstract class Method {
184
185
 
185
186
  /**
186
187
  * 创建实体
187
- *
188
- * @author chitanda
189
- * @date 2022-10-11 22:10:05
188
+ * @author lxm
189
+ * @date 2023-10-19 03:22:00
190
190
  * @protected
191
- * @param {(IData | IDataEntity)} data
192
- * @return {*} {IDataEntity}
191
+ * @param {(IData[] | IDataEntity[] | IData | IDataEntity)} data
192
+ * @return {*} {(IDataEntity | IDataEntity[])}
193
193
  */
194
- protected createEntity(data: IData | IDataEntity): IDataEntity {
195
- if (data instanceof AppDataEntity) {
196
- return data.clone();
194
+ protected createEntity(
195
+ data: IData[] | IDataEntity[] | IData | IDataEntity,
196
+ ): IDataEntity | IDataEntity[] {
197
+ const toEntity = (single: IData | IDataEntity): IDataEntity => {
198
+ if (single instanceof AppDataEntity) {
199
+ return single.clone();
200
+ }
201
+ return new AppDataEntity(this.entity, single);
202
+ };
203
+
204
+ if (isArray(data)) {
205
+ return data.map(item => toEntity(item));
197
206
  }
198
- return new AppDataEntity(this.entity, data);
207
+ return toEntity(data);
199
208
  }
200
209
  }
@@ -3,6 +3,7 @@ import { ModelError, RuntimeModelError } from '@ibiz-template/core';
3
3
  import { isNil } from 'ramda';
4
4
  import { Application } from '../../../application';
5
5
  import { CodeListItem } from '../../../interface';
6
+ import { ScriptFactory } from '../../../utils';
6
7
 
7
8
  /**
8
9
  * 实际缓存对象
@@ -129,17 +130,59 @@ export class DynamicCodeListCache {
129
130
  * @param {IData} data
130
131
  * @returns {*}
131
132
  */
132
- protected convertData(data: IData): Readonly<IData> {
133
- // todo 根据模型转换
134
- const result: IData = {};
133
+ protected convertData(data: IData): CodeListItem {
134
+ const result = {} as CodeListItem;
135
+ const {
136
+ valueAppDEFieldId,
137
+ textAppDEFieldId,
138
+ iconClsAppDEFieldId,
139
+ iconClsXAppDEFieldId,
140
+ iconPathAppDEFieldId,
141
+ iconPathXAppDEFieldId,
142
+ disableAppDEFieldId,
143
+ dataAppDEFieldId,
144
+ } = this.codeList;
135
145
  // 值属性
136
- const { valueAppDEFieldId, textAppDEFieldId } = this.codeList;
137
146
  const value = valueAppDEFieldId ? data[valueAppDEFieldId] : data.srfkey;
138
147
  result.id = value;
139
148
  result.value = value;
140
149
  // 文本属性
141
150
  result.text = textAppDEFieldId ? data[textAppDEFieldId] : data.srfmajortext;
142
- return Object.freeze(result);
151
+ if (
152
+ iconClsAppDEFieldId ||
153
+ iconClsXAppDEFieldId ||
154
+ iconPathAppDEFieldId ||
155
+ iconPathXAppDEFieldId
156
+ ) {
157
+ result.sysImage = {};
158
+ // 图标样式属性
159
+ if (iconClsAppDEFieldId) {
160
+ result.sysImage.cssClass = data[iconClsAppDEFieldId];
161
+ }
162
+ // 图标样式(倍数)属性
163
+ if (iconClsXAppDEFieldId) {
164
+ result.sysImage.cssClassX = data[iconClsXAppDEFieldId];
165
+ }
166
+ // 图标路径属性
167
+ if (iconPathAppDEFieldId) {
168
+ result.sysImage.imagePath = data[iconPathAppDEFieldId];
169
+ }
170
+ // 图标路径(倍数)属性
171
+ if (iconPathXAppDEFieldId) {
172
+ result.sysImage.imagePathX = data[iconPathXAppDEFieldId];
173
+ }
174
+ }
175
+ // 禁止选择属性
176
+ if (disableAppDEFieldId) {
177
+ result.disableSelect = data[disableAppDEFieldId];
178
+ }
179
+ // 数据属性
180
+ if (dataAppDEFieldId && data[dataAppDEFieldId]) {
181
+ result.data = ScriptFactory.execSingleLine(
182
+ data[dataAppDEFieldId],
183
+ ) as IData;
184
+ }
185
+ return result;
143
186
  }
144
187
 
145
188
  /**
@@ -157,11 +200,24 @@ export class DynamicCodeListCache {
157
200
  params: IParams = {},
158
201
  ): Promise<CodeListItem[]> {
159
202
  const app = ibiz.hub.getApp(context.srfappid);
203
+ const {
204
+ appDataEntityId,
205
+ appDEDataSetId,
206
+ minorSortAppDEFieldId,
207
+ minorSortDir,
208
+ pvalueAppDEFieldId,
209
+ } = this.codeList;
160
210
  // *预定义加载
161
211
  // 特殊处理,避免预置代码表加载不全
162
212
  if (!params.size) {
163
213
  params = { ...params, size: 10000 };
164
214
  }
215
+ // 排序
216
+ if (minorSortAppDEFieldId && minorSortDir) {
217
+ Object.assign(params, {
218
+ sort: `${minorSortAppDEFieldId.toLowerCase()},${minorSortDir.toLowerCase()}`,
219
+ });
220
+ }
165
221
  if (this.isPredefined) {
166
222
  const res = await app.net.get(
167
223
  `/dictionaries/codelist/${this.codeList.codeName}`,
@@ -171,7 +227,6 @@ export class DynamicCodeListCache {
171
227
  }
172
228
 
173
229
  // *加载实体服务数据
174
- const { appDataEntityId, appDEDataSetId } = this.codeList;
175
230
  if (!appDataEntityId) {
176
231
  throw new RuntimeModelError(this.codeList, '未配置应用实体');
177
232
  }
@@ -188,12 +243,50 @@ export class DynamicCodeListCache {
188
243
  );
189
244
  let resultItems: CodeListItem[] = [];
190
245
  if (res.data.length) {
191
- resultItems = res.data.map((item: IData) => {
192
- return this.convertData(item);
246
+ res.data.forEach((item: IData) => {
247
+ if (pvalueAppDEFieldId) {
248
+ const tempItems = this.prepareTreeData(res.data as IData[]);
249
+ if (tempItems) {
250
+ resultItems = tempItems;
251
+ }
252
+ } else {
253
+ resultItems.push(this.convertData(item));
254
+ }
193
255
  });
194
- // todo 动态树形代码表
195
256
  }
196
- return resultItems;
257
+ return Object.freeze(resultItems) as CodeListItem[];
258
+ }
259
+
260
+ /**
261
+ * 组装树形代码表数据
262
+ *
263
+ * @return {codeListItem[] | undefined}
264
+ */
265
+ protected prepareTreeData(
266
+ items: IData[],
267
+ pValue?: string | number,
268
+ ): CodeListItem[] | undefined {
269
+ const { pvalueAppDEFieldId } = this.codeList;
270
+ let filteredData: IData[] = [];
271
+ filteredData = items.filter(item => {
272
+ if (pValue) {
273
+ // 有传父value去后台数据里找出来子项pValue等于父value的
274
+ return item[pvalueAppDEFieldId!] === pValue;
275
+ }
276
+ // 没有传父value,只需要找出来没有父值属性的
277
+ return !item[pvalueAppDEFieldId!];
278
+ });
279
+ if (filteredData.length === 0) {
280
+ return;
281
+ }
282
+ return filteredData.map(data => {
283
+ const tempCodeListItem = this.convertData(data);
284
+ tempCodeListItem.children = this.prepareTreeData(
285
+ items,
286
+ tempCodeListItem.value,
287
+ );
288
+ return tempCodeListItem;
289
+ });
197
290
  }
198
291
 
199
292
  /**
@@ -61,13 +61,13 @@ export class UIActionUtil {
61
61
  } else if (result.refresh) {
62
62
  switch (result.refreshMode) {
63
63
  case 1:
64
- await params.view.callUIAction(SysUIActionTag.REFRESH);
64
+ params.view.callUIAction(SysUIActionTag.REFRESH);
65
65
  break;
66
66
  case 2:
67
- await params.view.parentView?.callUIAction(SysUIActionTag.REFRESH);
67
+ params.view.parentView?.callUIAction(SysUIActionTag.REFRESH);
68
68
  break;
69
69
  case 3:
70
- await params.view.getTopView()?.callUIAction(SysUIActionTag.REFRESH);
70
+ params.view.getTopView()?.callUIAction(SysUIActionTag.REFRESH);
71
71
  break;
72
72
  default:
73
73
  }
@@ -41,7 +41,12 @@ export class UILogicParam {
41
41
  }
42
42
 
43
43
  if (m.default) {
44
- ctx.params[tag] = data && data.length > 0 ? data[0] : {};
44
+ // 配置了数据对象列表的,default给数组格式的数据
45
+ if (m.entityListParam) {
46
+ ctx.params[tag] = data || [];
47
+ } else {
48
+ ctx.params[tag] = data && data.length > 0 ? data[0] : {};
49
+ }
45
50
  } else if (m.activeContainerParam) {
46
51
  ctx.params[tag] = parameters.ctrl || parameters.view;
47
52
  } else if (m.activeCtrlParam) {
@@ -38,4 +38,20 @@ export class ScriptFactory {
38
38
  args,
39
39
  );
40
40
  }
41
+
42
+ /**
43
+ * 执行单行脚本
44
+ * @author lxm
45
+ * @date 2023-10-20 03:20:56
46
+ * @static
47
+ * @param {string} scriptCode 脚本字符串
48
+ * @param {IParams} [args={}] 作用域变量参数对象
49
+ * @return {*} {unknown}
50
+ */
51
+ static execSingleLine(scriptCode: string, args: IParams = {}): unknown {
52
+ return this.execScriptFn(args, scriptCode, {
53
+ singleRowReturn: true,
54
+ isAsync: false,
55
+ });
56
+ }
41
57
  }