@ibiz-template/runtime 0.1.37 → 0.2.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 (136) hide show
  1. package/dist/index.esm.js +12431 -360
  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/controller/control/exp-bar/chart-exp-bar.controller.d.ts +24 -0
  8. package/out/controller/control/exp-bar/chart-exp-bar.controller.d.ts.map +1 -0
  9. package/out/controller/control/exp-bar/chart-exp-bar.controller.js +32 -0
  10. package/out/controller/control/exp-bar/index.d.ts +1 -0
  11. package/out/controller/control/exp-bar/index.d.ts.map +1 -1
  12. package/out/controller/control/exp-bar/index.js +1 -0
  13. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +1 -0
  14. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
  15. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +8 -0
  16. package/out/controller/control/medit-view-panel/medit-view-panel.controller.d.ts +1 -13
  17. package/out/controller/control/medit-view-panel/medit-view-panel.controller.d.ts.map +1 -1
  18. package/out/controller/control/medit-view-panel/medit-view-panel.controller.js +7 -67
  19. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  20. package/out/controller/control/search-bar/search-bar.controller.js +3 -3
  21. package/out/de-logic/de-logic-context.d.ts +4 -4
  22. package/out/de-logic/de-logic-context.d.ts.map +1 -1
  23. package/out/de-logic/de-logic-context.js +2 -1
  24. package/out/de-logic/de-logic-link/de-logic-link.js +1 -1
  25. package/out/de-logic/de-logic-param/de-logic-param.d.ts.map +1 -1
  26. package/out/de-logic/de-logic-param/de-logic-param.js +7 -1
  27. package/out/de-logic/de-logic.d.ts +1 -1
  28. package/out/de-logic/de-logic.d.ts.map +1 -1
  29. package/out/de-logic/index.d.ts +5 -5
  30. package/out/de-logic/index.d.ts.map +1 -1
  31. package/out/de-logic/index.js +32 -5
  32. package/out/engine/md-view.engine.d.ts +3 -3
  33. package/out/engine/md-view.engine.d.ts.map +1 -1
  34. package/out/engine/md-view.engine.js +14 -12
  35. package/out/hub/config/app-view-config-service.d.ts +3 -1
  36. package/out/hub/config/app-view-config-service.d.ts.map +1 -1
  37. package/out/hub/config/app-view-config-service.js +9 -0
  38. package/out/interface/common/i-app-view-config-service/i-app-view-config-service.d.ts +20 -2
  39. package/out/interface/common/i-app-view-config-service/i-app-view-config-service.d.ts.map +1 -1
  40. package/out/interface/controller/controller/control/i-chart-exp-bar.controller.d.ts +15 -0
  41. package/out/interface/controller/controller/control/i-chart-exp-bar.controller.d.ts.map +1 -0
  42. package/out/interface/controller/controller/control/i-chart-exp-bar.controller.js +1 -0
  43. package/out/interface/controller/controller/control/index.d.ts +1 -0
  44. package/out/interface/controller/controller/control/index.d.ts.map +1 -1
  45. package/out/interface/controller/controller/control/index.js +1 -0
  46. package/out/interface/controller/event/control/i-chart-exp-bar.event.d.ts +11 -0
  47. package/out/interface/controller/event/control/i-chart-exp-bar.event.d.ts.map +1 -0
  48. package/out/interface/controller/event/control/i-chart-exp-bar.event.js +1 -0
  49. package/out/interface/controller/event/control/index.d.ts +1 -0
  50. package/out/interface/controller/event/control/index.d.ts.map +1 -1
  51. package/out/interface/controller/event/control/index.js +1 -0
  52. package/out/interface/controller/event/view/i-chart-exp-view.event.d.ts +11 -0
  53. package/out/interface/controller/event/view/i-chart-exp-view.event.d.ts.map +1 -0
  54. package/out/interface/controller/event/view/i-chart-exp-view.event.js +1 -0
  55. package/out/interface/controller/event/view/index.d.ts +1 -0
  56. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  57. package/out/interface/controller/event/view/index.js +1 -0
  58. package/out/interface/controller/state/control/i-chart-exp-bar.state.d.ts +11 -0
  59. package/out/interface/controller/state/control/i-chart-exp-bar.state.d.ts.map +1 -0
  60. package/out/interface/controller/state/control/i-chart-exp-bar.state.js +1 -0
  61. package/out/interface/controller/state/control/index.d.ts +1 -0
  62. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  63. package/out/interface/controller/state/control/index.js +1 -0
  64. package/out/interface/controller/state/view/i-chart-exp-view.state.d.ts +11 -0
  65. package/out/interface/controller/state/view/i-chart-exp-view.state.d.ts.map +1 -0
  66. package/out/interface/controller/state/view/i-chart-exp-view.state.js +1 -0
  67. package/out/interface/controller/state/view/index.d.ts +1 -0
  68. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  69. package/out/interface/controller/state/view/index.js +1 -0
  70. package/out/interface/service/code-list-item/code-list-item.d.ts +16 -0
  71. package/out/interface/service/code-list-item/code-list-item.d.ts.map +1 -1
  72. package/out/service/index.d.ts +1 -0
  73. package/out/service/index.d.ts.map +1 -1
  74. package/out/service/index.js +1 -0
  75. package/out/service/mqtt/mqtt.service.d.ts +66 -0
  76. package/out/service/mqtt/mqtt.service.d.ts.map +1 -0
  77. package/out/service/mqtt/mqtt.service.js +95 -0
  78. package/out/service/service/code-list/code-list.service.d.ts.map +1 -1
  79. package/out/service/service/code-list/code-list.service.js +12 -1
  80. package/out/service/service/entity/de.service.d.ts +2 -2
  81. package/out/service/service/entity/de.service.d.ts.map +1 -1
  82. package/out/service/service/entity/method/de-action.d.ts +14 -5
  83. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  84. package/out/service/service/entity/method/de-action.js +56 -15
  85. package/out/service/service/entity/method/fetch.d.ts +1 -1
  86. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  87. package/out/service/service/entity/method/fetch.js +9 -6
  88. package/out/service/service/entity/method/method.d.ts +13 -13
  89. package/out/service/service/entity/method/method.d.ts.map +1 -1
  90. package/out/service/service/entity/method/method.js +16 -11
  91. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +7 -1
  92. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  93. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +89 -13
  94. package/out/ui-action/uiaction-util.js +3 -3
  95. package/out/ui-logic/ui-logic-param/ui-logic-param.d.ts.map +1 -1
  96. package/out/ui-logic/ui-logic-param/ui-logic-param.js +7 -1
  97. package/out/utils/script/script-factory.d.ts +10 -0
  98. package/out/utils/script/script-factory.d.ts.map +1 -1
  99. package/out/utils/script/script-factory.js +15 -0
  100. package/package.json +5 -3
  101. package/src/application.ts +22 -1
  102. package/src/controller/control/exp-bar/chart-exp-bar.controller.ts +51 -0
  103. package/src/controller/control/exp-bar/index.ts +1 -0
  104. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +14 -0
  105. package/src/controller/control/medit-view-panel/medit-view-panel.controller.ts +8 -78
  106. package/src/controller/control/search-bar/search-bar.controller.ts +6 -5
  107. package/src/de-logic/de-logic-context.ts +6 -5
  108. package/src/de-logic/de-logic-link/de-logic-link.ts +1 -1
  109. package/src/de-logic/de-logic-param/de-logic-param.ts +6 -1
  110. package/src/de-logic/de-logic.ts +5 -1
  111. package/src/de-logic/index.ts +49 -8
  112. package/src/engine/md-view.engine.ts +16 -13
  113. package/src/hub/config/app-view-config-service.ts +12 -1
  114. package/src/interface/common/i-app-view-config-service/i-app-view-config-service.ts +22 -4
  115. package/src/interface/controller/controller/control/i-chart-exp-bar.controller.ts +19 -0
  116. package/src/interface/controller/controller/control/index.ts +1 -0
  117. package/src/interface/controller/event/control/i-chart-exp-bar.event.ts +10 -0
  118. package/src/interface/controller/event/control/index.ts +1 -0
  119. package/src/interface/controller/event/view/i-chart-exp-view.event.ts +11 -0
  120. package/src/interface/controller/event/view/index.ts +1 -0
  121. package/src/interface/controller/state/control/i-chart-exp-bar.state.ts +10 -0
  122. package/src/interface/controller/state/control/index.ts +1 -0
  123. package/src/interface/controller/state/view/i-chart-exp-view.state.ts +10 -0
  124. package/src/interface/controller/state/view/index.ts +1 -0
  125. package/src/interface/service/code-list-item/code-list-item.ts +20 -0
  126. package/src/service/index.ts +1 -0
  127. package/src/service/mqtt/mqtt.service.ts +117 -0
  128. package/src/service/service/code-list/code-list.service.ts +15 -1
  129. package/src/service/service/entity/de.service.ts +2 -2
  130. package/src/service/service/entity/method/de-action.ts +74 -33
  131. package/src/service/service/entity/method/fetch.ts +12 -11
  132. package/src/service/service/entity/method/method.ts +28 -19
  133. package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +121 -16
  134. package/src/ui-action/uiaction-util.ts +3 -3
  135. package/src/ui-logic/ui-logic-param/ui-logic-param.ts +6 -1
  136. package/src/utils/script/script-factory.ts +16 -0
@@ -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 { convertNavData, 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,21 +200,45 @@ export class DynamicCodeListCache {
157
200
  params: IParams = {},
158
201
  ): Promise<CodeListItem[]> {
159
202
  const app = ibiz.hub.getApp(context.srfappid);
160
- // *预定义加载
203
+ const {
204
+ appDataEntityId,
205
+ appDEDataSetId,
206
+ minorSortAppDEFieldId,
207
+ minorSortDir,
208
+ pvalueAppDEFieldId,
209
+ customCond,
210
+ } = this.codeList;
211
+
212
+ // *处理查询参数
213
+ const tempParams = { ...params };
214
+
215
+ // 排序
216
+ if (minorSortAppDEFieldId && minorSortDir) {
217
+ Object.assign(tempParams, {
218
+ sort: `${minorSortAppDEFieldId.toLowerCase()},${minorSortDir.toLowerCase()}`,
219
+ });
220
+ }
221
+ // 自定义查询
222
+ if (customCond) {
223
+ const navParams = ScriptFactory.execSingleLine(customCond) as IData;
224
+ const addParams = convertNavData(navParams, tempParams, context);
225
+ Object.assign(tempParams, addParams);
226
+ }
161
227
  // 特殊处理,避免预置代码表加载不全
162
- if (!params.size) {
163
- params = { ...params, size: 10000 };
228
+ if (!tempParams.size) {
229
+ tempParams.size = 10000;
164
230
  }
231
+
232
+ // *预定义加载
165
233
  if (this.isPredefined) {
166
234
  const res = await app.net.get(
167
235
  `/dictionaries/codelist/${this.codeList.codeName}`,
168
- params,
236
+ tempParams,
169
237
  );
170
238
  return Object.freeze(res.data.items);
171
239
  }
172
240
 
173
241
  // *加载实体服务数据
174
- const { appDataEntityId, appDEDataSetId } = this.codeList;
175
242
  if (!appDataEntityId) {
176
243
  throw new RuntimeModelError(this.codeList, '未配置应用实体');
177
244
  }
@@ -183,17 +250,55 @@ export class DynamicCodeListCache {
183
250
  appDataEntityId!,
184
251
  appDEDataSetId,
185
252
  context,
186
- {},
187
- params,
253
+ undefined,
254
+ tempParams,
188
255
  );
189
256
  let resultItems: CodeListItem[] = [];
190
257
  if (res.data.length) {
191
- resultItems = res.data.map((item: IData) => {
192
- return this.convertData(item);
258
+ res.data.forEach((item: IData) => {
259
+ if (pvalueAppDEFieldId) {
260
+ const tempItems = this.prepareTreeData(res.data as IData[]);
261
+ if (tempItems) {
262
+ resultItems = tempItems;
263
+ }
264
+ } else {
265
+ resultItems.push(this.convertData(item));
266
+ }
193
267
  });
194
- // todo 动态树形代码表
195
268
  }
196
- return resultItems;
269
+ return Object.freeze(resultItems) as CodeListItem[];
270
+ }
271
+
272
+ /**
273
+ * 组装树形代码表数据
274
+ *
275
+ * @return {codeListItem[] | undefined}
276
+ */
277
+ protected prepareTreeData(
278
+ items: IData[],
279
+ pValue?: string | number,
280
+ ): CodeListItem[] | undefined {
281
+ const { pvalueAppDEFieldId } = this.codeList;
282
+ let filteredData: IData[] = [];
283
+ filteredData = items.filter(item => {
284
+ if (pValue) {
285
+ // 有传父value去后台数据里找出来子项pValue等于父value的
286
+ return item[pvalueAppDEFieldId!] === pValue;
287
+ }
288
+ // 没有传父value,只需要找出来没有父值属性的
289
+ return !item[pvalueAppDEFieldId!];
290
+ });
291
+ if (filteredData.length === 0) {
292
+ return;
293
+ }
294
+ return filteredData.map(data => {
295
+ const tempCodeListItem = this.convertData(data);
296
+ tempCodeListItem.children = this.prepareTreeData(
297
+ items,
298
+ tempCodeListItem.value,
299
+ );
300
+ return tempCodeListItem;
301
+ });
197
302
  }
198
303
 
199
304
  /**
@@ -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
  }