@ibiz-template/runtime 0.1.31 → 0.1.33

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 (41) hide show
  1. package/dist/index.esm.js +178 -115
  2. package/dist/index.system.min.js +1 -1
  3. package/dist/index.system.min.js.map +1 -1
  4. package/out/constant/view-call-tag.d.ts +5 -1
  5. package/out/constant/view-call-tag.d.ts.map +1 -1
  6. package/out/constant/view-call-tag.js +4 -0
  7. package/out/controller/common/control/md-control.controller.js +1 -1
  8. package/out/controller/common/editor/code-list-editor.controller.d.ts.map +1 -1
  9. package/out/controller/common/editor/code-list-editor.controller.js +1 -1
  10. package/out/controller/control/form/search-form/search-form.service.d.ts +8 -0
  11. package/out/controller/control/form/search-form/search-form.service.d.ts.map +1 -1
  12. package/out/controller/control/form/search-form/search-form.service.js +19 -2
  13. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
  14. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +3 -1
  15. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  16. package/out/controller/control/tree/tree.controller.js +15 -7
  17. package/out/interface/service/code-list-item/code-list-item.d.ts +7 -0
  18. package/out/interface/service/code-list-item/code-list-item.d.ts.map +1 -1
  19. package/out/service/service/code-list/code-list.service.d.ts.map +1 -1
  20. package/out/service/service/code-list/code-list.service.js +1 -0
  21. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  22. package/out/service/service/entity/method/de-action.js +2 -1
  23. package/out/ui-action/uiaction-util.d.ts.map +1 -1
  24. package/out/ui-action/uiaction-util.js +8 -1
  25. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.d.ts.map +1 -1
  26. package/out/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.js +16 -2
  27. package/out/ui-logic/ui-logic-param/ui-logic-param.d.ts.map +1 -1
  28. package/out/ui-logic/ui-logic-param/ui-logic-param.js +5 -0
  29. package/package.json +5 -5
  30. package/src/constant/view-call-tag.ts +4 -0
  31. package/src/controller/common/control/md-control.controller.ts +1 -1
  32. package/src/controller/common/editor/code-list-editor.controller.ts +4 -1
  33. package/src/controller/control/form/search-form/search-form.service.ts +20 -2
  34. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +5 -1
  35. package/src/controller/control/tree/tree.controller.ts +15 -8
  36. package/src/interface/service/code-list-item/code-list-item.ts +8 -0
  37. package/src/service/service/code-list/code-list.service.ts +1 -0
  38. package/src/service/service/entity/method/de-action.ts +7 -1
  39. package/src/ui-action/uiaction-util.ts +8 -1
  40. package/src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts +24 -2
  41. package/src/ui-logic/ui-logic-param/ui-logic-param.ts +7 -0
@@ -17,6 +17,10 @@ export declare enum ViewCallTag {
17
17
  /**
18
18
  * 获取所有数据(多数据专用,获取全部数据)
19
19
  */
20
- 'GET_ALL_DATA' = "GetAllData"
20
+ 'GET_ALL_DATA' = "GetAllData",
21
+ /**
22
+ * 校验数据(编辑视图才用)
23
+ */
24
+ 'VALIDATE' = "Validate"
21
25
  }
22
26
  //# sourceMappingURL=view-call-tag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"view-call-tag.d.ts","sourceRoot":"","sources":["../../src/constant/view-call-tag.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,oBAAY,WAAW;IACrB;;OAEG;IACH,MAAM,SAAS;IACf;;OAEG;IACH,UAAU,YAAY;IACtB;;OAEG;IACH,cAAc,eAAe;CAC9B"}
1
+ {"version":3,"file":"view-call-tag.d.ts","sourceRoot":"","sources":["../../src/constant/view-call-tag.ts"],"names":[],"mappings":"AACA;;;;;;GAMG;AACH,oBAAY,WAAW;IACrB;;OAEG;IACH,MAAM,SAAS;IACf;;OAEG;IACH,UAAU,YAAY;IACtB;;OAEG;IACH,cAAc,eAAe;IAC7B;;OAEG;IACH,UAAU,aAAa;CACxB"}
@@ -20,4 +20,8 @@ export var ViewCallTag;
20
20
  * 获取所有数据(多数据专用,获取全部数据)
21
21
  */
22
22
  ViewCallTag["GET_ALL_DATA"] = "GetAllData";
23
+ /**
24
+ * 校验数据(编辑视图才用)
25
+ */
26
+ ViewCallTag["VALIDATE"] = "Validate";
23
27
  })(ViewCallTag || (ViewCallTag = {}));
@@ -245,7 +245,7 @@ export class MDControlController extends ControlController {
245
245
  }
246
246
  // 刷新数据,补全这一页缺少的数据
247
247
  if (needRefresh) {
248
- this.refresh();
248
+ await this.refresh();
249
249
  }
250
250
  }
251
251
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"code-list-editor.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/common/editor/code-list-editor.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;GAQG;AACH,qBAAa,wBAAwB,CACnC,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3C,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC3B;;;;;OAKG;IACU,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;CAkBzE"}
1
+ {"version":3,"file":"code-list-editor.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/common/editor/code-list-editor.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;GAQG;AACH,qBAAa,wBAAwB,CACnC,CAAC,SAAS,eAAe,GAAG,eAAe,CAC3C,SAAQ,gBAAgB,CAAC,CAAC,CAAC;IAC3B;;;;;OAKG;IACU,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;CAqBzE"}
@@ -24,6 +24,6 @@ export class CodeListEditorController extends EditorController {
24
24
  dataItems = await app.codeList.get(this.model.appCodeListId, context, params);
25
25
  return dataItems;
26
26
  }
27
- throw new RuntimeModelError(this.model, '请配置代码表');
27
+ throw new RuntimeModelError(this.model, `编辑器类型[${this.model.editorType}],未配置代码表`);
28
28
  }
29
29
  }
@@ -38,5 +38,13 @@ export declare class SearchFormService<T extends IDESearchForm = IDESearchForm>
38
38
  * @returns {*} {IHttpResponse}
39
39
  */
40
40
  handleResponse(response: IHttpResponse): IHttpResponse<ControlVO>;
41
+ /**
42
+ * 根据表单项过滤出数据
43
+ *
44
+ * @return {*}
45
+ * @author: zhujiamin
46
+ * @Date: 2023-09-01 10:04:25
47
+ */
48
+ getFilteredData(data: IData): IData;
41
49
  }
42
50
  //# sourceMappingURL=search-form.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-form.service.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/form/search-form/search-form.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAiB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAc,MAAM,qBAAqB,CAAC;AAE5E;;;;;;;;;GASG;AACH,qBAAa,iBAAiB,CAC5B,CAAC,SAAS,aAAa,GAAG,aAAa,CACvC,SAAQ,cAAc,CAAC,CAAC,CAAC;IACzB;;;;;;;;OAQG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAMpC;;;;;OAKG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAgB/B;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC;CAOlE"}
1
+ {"version":3,"file":"search-form.service.d.ts","sourceRoot":"","sources":["../../../../../src/controller/control/form/search-form/search-form.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,aAAa,EAAiB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAc,MAAM,qBAAqB,CAAC;AAE5E;;;;;;;;;GASG;AACH,qBAAa,iBAAiB,CAC5B,CAAC,SAAS,aAAa,GAAG,aAAa,CACvC,SAAQ,cAAc,CAAC,CAAC,CAAC;IACzB;;;;;;;;OAQG;IACG,QAAQ,CACZ,QAAQ,EAAE,OAAO,EACjB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAOpC;;;;;OAKG;IACH,SAAS,CAAC,aAAa,IAAI,IAAI;IAgB/B;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC;IAQjE;;;;;;OAMG;IACH,eAAe,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK;CASpC"}
@@ -21,7 +21,8 @@ export class SearchFormService extends ControlService {
21
21
  * @returns {*} {Promise<IHttpResponse>}
22
22
  */
23
23
  async getDraft(_context, params = {}) {
24
- let res = { ok: true, status: 200, data: Object.assign({}, params) };
24
+ const tempData = this.getFilteredData(Object.assign({}, params));
25
+ let res = { ok: true, status: 200, data: tempData };
25
26
  res = this.handleResponse(res);
26
27
  return res;
27
28
  }
@@ -39,7 +40,7 @@ export class SearchFormService extends ControlService {
39
40
  this.dataUIMap.set(uiKey, new UIMapField(uiKey, uiKey));
40
41
  }
41
42
  }, {
42
- childrenFields: ['deformPages', 'deformDetails'],
43
+ childrenFields: ['deformPages', 'deformTabPages', 'deformDetails'],
43
44
  });
44
45
  }
45
46
  /**
@@ -57,4 +58,20 @@ export class SearchFormService extends ControlService {
57
58
  }
58
59
  return res;
59
60
  }
61
+ /**
62
+ * 根据表单项过滤出数据
63
+ *
64
+ * @return {*}
65
+ * @author: zhujiamin
66
+ * @Date: 2023-09-01 10:04:25
67
+ */
68
+ getFilteredData(data) {
69
+ const tempData = {};
70
+ this.dataUIMap.forEach(dataUI => {
71
+ if (data[dataUI.dataKey] !== undefined) {
72
+ tempData[dataUI.dataKey] = data[dataUI.dataKey];
73
+ }
74
+ });
75
+ return tempData;
76
+ }
60
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grid-field-column.controller.d.ts","sourceRoot":"","sources":["../../../../../../src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAIpE,OAAO,EAAE,YAAY,EAAc,MAAM,0BAA0B,CAAC;AAKpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,oBAAoB,CAAC,kBAAkB,CAAC;IACrF;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAa;IAE/C;;;;;;OAMG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;;;;OAOG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAKrC;;;;;OAKG;IACI,kBAAkB,CACvB,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,OAAO,GACd;QAAE,OAAO,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;IAoBzC;;;;;;;;OAQG;IACG,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCvE;;;;;;;;OAQG;IACG,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxE;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;IAqBnE;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,SAAS;IAiEhD;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,GAAE,OAAY,GAAG,MAAM;CAiBzC"}
1
+ {"version":3,"file":"grid-field-column.controller.d.ts","sourceRoot":"","sources":["../../../../../../src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAIpE,OAAO,EAAE,YAAY,EAAc,MAAM,0BAA0B,CAAC;AAKpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,oBAAoB,CAAC,kBAAkB,CAAC;IACrF;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAExC;;;;;OAKG;IACH,QAAQ,EAAE,YAAY,GAAG,SAAS,CAAa;IAE/C;;;;;;OAMG;IACH,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED;;;;;;;OAOG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;;;;OAMG;IACH,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO;IAKrC;;;;;OAKG;IACI,kBAAkB,CACvB,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,OAAO,GACd;QAAE,OAAO,EAAE,QAAQ,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE;IAoBzC;;;;;;;;OAQG;IACG,YAAY,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAuCvE;;;;;;;;OAQG;IACG,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAWxE;;;;;;OAMG;IACG,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC;IAqBnE;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,GAAG,SAAS;IAqEhD;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,GAAE,OAAY,GAAG,MAAM;CAiBzC"}
@@ -1,7 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
2
  import { DataTypes, ModelError } from '@ibiz-template/core';
3
3
  import dayjs from 'dayjs';
4
- import { clone } from 'ramda';
4
+ import { clone, isNil } from 'ramda';
5
5
  import { OpenAppViewCommand } from '../../../../../command';
6
6
  import { parseUserParams } from '../../../../../model';
7
7
  import { UIActionUtil } from '../../../../../ui-action';
@@ -171,6 +171,8 @@ export class GridFieldColumnController extends GridColumnController {
171
171
  return;
172
172
  }
173
173
  const fieldName = aggField || this.model.id;
174
+ // 排除属性无值的数据,不纳入统计
175
+ items = items.filter(item => !isNil(item[fieldName]));
174
176
  let aggValue;
175
177
  if (this.grid.model.aggMode === 'PAGE') {
176
178
  switch (aggMode) {
@@ -1 +1 @@
1
- {"version":3,"file":"tree.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/tree/tree.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,UAAU,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;;;;GAQG;AACH,qBAAa,cACX,SAAQ,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAC3D,YAAW,eAAe;IAElB,OAAO,EAAE,WAAW,CAAC;IAE7B;;;;;OAKG;IACH,YAAY,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAM;IAE1D,SAAS,CAAC,SAAS,IAAI,IAAI;cAQX,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B1C;;;;;OAKG;IACG,IAAI,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAsBjE;;;;;;OAMG;IACG,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAkCrE;;;;;;OAMG;IACG,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7D;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAYhE;;;;;;OAMG;IACG,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/D,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI;IAWtC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIjD;;;;;;;;OAQG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC;IA6BhB;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG;QACpD,IAAI,EAAE,KAAK,EAAE,CAAC;QACd,OAAO,EAAE,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;KACjB;IAQD;;;;;;;OAOG;IACH,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE;IAgBlD;;;;;;;OAOG;IACG,mBAAmB,CACvB,QAAQ,EAAE,aAAa,GAAG,KAAK,EAC/B,aAAa,UAAQ,GACpB,OAAO,CAAC,IAAI,CAAC;CA+BjB"}
1
+ {"version":3,"file":"tree.controller.d.ts","sourceRoot":"","sources":["../../../../src/controller/control/tree/tree.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,UAAU,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;;;;GAQG;AACH,qBAAa,cACX,SAAQ,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,CAC3D,YAAW,eAAe;IAElB,OAAO,EAAE,WAAW,CAAC;IAE7B;;;;;OAKG;IACH,YAAY,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAA;KAAE,CAAM;IAE1D,SAAS,CAAC,SAAS,IAAI,IAAI;cAQX,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B1C;;;;;OAKG;IACG,IAAI,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAsBjE;;;;;;OAMG;IACG,SAAS,CAAC,UAAU,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAyCrE;;;;;;OAMG;IACG,eAAe,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7D;;;;;;OAMG;IACH,cAAc,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI;IAYhE;;;;;;OAMG;IACG,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/D,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI;IAWtC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIjD;;;;;;;;OAQG;IACG,UAAU,CACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC;IA6BhB;;;;;;OAMG;IACH,SAAS,CAAC,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG;QACpD,IAAI,EAAE,KAAK,EAAE,CAAC;QACd,OAAO,EAAE,QAAQ,CAAC;QAClB,MAAM,EAAE,OAAO,CAAC;KACjB;IAQD;;;;;;;OAOG;IACH,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,MAAM,EAAE;IAgBlD;;;;;;;OAOG;IACG,mBAAmB,CACvB,QAAQ,EAAE,aAAa,GAAG,KAAK,EAC/B,aAAa,UAAQ,GACpB,OAAO,CAAC,IAAI,CAAC;CA+BjB"}
@@ -83,13 +83,21 @@ export class TreeController extends MDControlController {
83
83
  async loadNodes(parentNode) {
84
84
  const params = await this.getFetchParams();
85
85
  const hasQuery = !!params.query;
86
- // 请求服务获取子节点数据
87
- const nodes = (await this.service.fetchChildNodes(parentNode, {
88
- context: this.context.clone(),
89
- params,
90
- hasQuery,
91
- defaultExpandedKeys: this.state.expandedKeys,
92
- })) || [];
86
+ this.state.isLoading = true;
87
+ let nodes;
88
+ try {
89
+ // 请求服务获取子节点数据
90
+ nodes =
91
+ (await this.service.fetchChildNodes(parentNode, {
92
+ context: this.context.clone(),
93
+ params,
94
+ hasQuery,
95
+ defaultExpandedKeys: this.state.expandedKeys,
96
+ })) || [];
97
+ }
98
+ finally {
99
+ this.state.isLoading = false;
100
+ }
93
101
  // 有父节点绑定到父节点数据上,无父节点替换rootNodes
94
102
  if (parentNode) {
95
103
  parentNode.children = nodes;
@@ -37,5 +37,12 @@ export interface CodeListItem {
37
37
  * @type {string}
38
38
  */
39
39
  textCls?: string;
40
+ /**
41
+ * 禁止选择
42
+ * @author lxm
43
+ * @date 2023-10-08 03:49:40
44
+ * @type {boolean}
45
+ */
46
+ disableSelect?: boolean;
40
47
  }
41
48
  //# sourceMappingURL=code-list-item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-list-item.d.ts","sourceRoot":"","sources":["../../../../src/interface/service/code-list-item/code-list-item.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"code-list-item.d.ts","sourceRoot":"","sources":["../../../../src/interface/service/code-list-item/code-list-item.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAEvB;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"code-list.service.d.ts","sourceRoot":"","sources":["../../../../src/service/service/code-list/code-list.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;GAOG;AACH,qBAAa,eAAe;IAoBd,SAAS,CAAC,QAAQ,EAAE,YAAY;IAnB5C;;;;;OAKG;IACH,SAAS,CAAC,YAAY,4BAAmC;IAEzD;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,oBAAoB,CAAC,CAChE;gBAEU,QAAQ,EAAE,YAAY;IAE5C;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE;IAc3D;;;;;;;;OAQG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMzC;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIlD;;;;;;;;;OASG;IACH,SAAS,CAAC,iBAAiB,CACzB,SAAS,EAAE,SAAS,EAAE,EACtB,aAAa,EAAE,OAAO,GACrB,QAAQ,CAAC,YAAY,CAAC,EAAE;IAwB3B;;;;;;;;OAQG;cACa,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,OAAY,EACrB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAa1B;;;;;;;;;OASG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;CAcpC"}
1
+ {"version":3,"file":"code-list.service.d.ts","sourceRoot":"","sources":["../../../../src/service/service/code-list/code-list.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;GAOG;AACH,qBAAa,eAAe;IAoBd,SAAS,CAAC,QAAQ,EAAE,YAAY;IAnB5C;;;;;OAKG;IACH,SAAS,CAAC,YAAY,4BAAmC;IAEzD;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,oBAAoB,CAAC,CAChE;gBAEU,QAAQ,EAAE,YAAY;IAE5C;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,EAAE;IAc3D;;;;;;;;OAQG;IACH,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAMzC;;;;;;;;OAQG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIlD;;;;;;;;;OASG;IACH,SAAS,CAAC,iBAAiB,CACzB,SAAS,EAAE,SAAS,EAAE,EACtB,aAAa,EAAE,OAAO,GACrB,QAAQ,CAAC,YAAY,CAAC,EAAE;IAyB3B;;;;;;;;OAQG;cACa,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,OAAO,GAAE,OAAY,EACrB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,YAAY,EAAE,CAAC;IAa1B;;;;;;;;;OASG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,OAAO,EACjB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,SAAS,YAAY,EAAE,CAAC;CAcpC"}
@@ -99,6 +99,7 @@ export class CodeListService {
99
99
  color: codeItem.color,
100
100
  id: codeItem.codeName,
101
101
  textCls: codeItem.textCls,
102
+ disableSelect: codeItem.disableSelect,
102
103
  };
103
104
  if ((_a = codeItem.codeItems) === null || _a === void 0 ? void 0 : _a.length) {
104
105
  _codeItem.children = this.formatStaticItems(codeItem.codeItems, isValueNumber);
@@ -1 +1 @@
1
- {"version":3,"file":"de-action.d.ts","sourceRoot":"","sources":["../../../../../src/service/service/entity/method/de-action.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;IAChC,MAAM,EAAE,YAAY,CAAC;IAE7B;;;;;;;;OAQG;IACH,SAAS,KAAK,WAAW,IAAI,OAAO,CAEnC;IAEK,IAAI,CACR,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IA8E/B;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAUtC;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAYtC;;;;;;;;;OASG;IACG,MAAM,CACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,WAAW,EACzB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IActC;;;;;;;;OAQG;IACG,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,QAAQ,CACZ,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAUhC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,GACZ,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAUtC;;;;;;;;OAQG;IACG,YAAY,CAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAoBtC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,GACZ,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAqBtC;;;;;;OAMG;IACG,eAAe,CACnB,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC;CAc1B"}
1
+ {"version":3,"file":"de-action.d.ts","sourceRoot":"","sources":["../../../../../src/service/service/entity/method/de-action.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EAEd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD;;;;;;;;GAQG;AACH,qBAAa,cAAe,SAAQ,MAAM;IAChC,MAAM,EAAE,YAAY,CAAC;IAE7B;;;;;;;;OAQG;IACH,SAAS,KAAK,WAAW,IAAI,OAAO,CAEnC;IAEK,IAAI,CACR,OAAO,EAAE,OAAO,EAChB,IAAI,CAAC,EAAE,KAAK,EACZ,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAmF/B;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,EACX,MAAM,EAAE,OAAO,GACd,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAUtC;;;;;;;;OAQG;IACG,MAAM,CACV,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAYtC;;;;;;;;;OASG;IACG,MAAM,CACV,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,KAAK,GAAG,WAAW,EACzB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IActC;;;;;;;;OAQG;IACG,GAAG,CACP,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,OAAY,GACnB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,QAAQ,CACZ,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAUhC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,GACZ,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAUtC;;;;;;;;OAQG;IACG,YAAY,CAChB,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAoBtC;;;;;;;;OAQG;IACG,UAAU,CACd,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,KAAK,GACZ,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAatC;;;;;;;;OAQG;IACG,OAAO,CACX,OAAO,EAAE,OAAO,EAChB,MAAM,CAAC,EAAE,OAAO,GACf,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAqBtC;;;;;;OAMG;IACG,eAAe,CACnB,QAAQ,EAAE,OAAO,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,aAAa,CAAC;CAc1B"}
@@ -1,4 +1,5 @@
1
1
  import { HttpResponse, RuntimeModelError, } from '@ibiz-template/core';
2
+ import { clone } from 'ramda';
2
3
  import { Method } from './method';
3
4
  import { findDELogic } from '../../../../model';
4
5
  import { execDELogicAction, execFieldLogics } from '../../../../de-logic';
@@ -32,7 +33,7 @@ export class DEActionMethod extends Method {
32
33
  if (!deLogic) {
33
34
  throw new RuntimeModelError(this.method, '缺少实体处理逻辑');
34
35
  }
35
- return execDELogicAction(deLogic, context, data || {}, params || {});
36
+ return execDELogicAction(deLogic, clone(context), data ? clone(data) : {}, params ? clone(params) : {});
36
37
  }
37
38
  if (data && !this.isLocalMode) {
38
39
  data = await this.input.handle(context, data);
@@ -1 +1 @@
1
- {"version":3,"file":"uiaction-util.d.ts","sourceRoot":"","sources":["../../src/ui-action/uiaction-util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAI/D;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB;;;;;;;;;OASG;WACU,IAAI,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,eAAe,CAAC;IAS3B;;;;;;;OAOG;WACU,eAAe,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;CAoBjB"}
1
+ {"version":3,"file":"uiaction-util.d.ts","sourceRoot":"","sources":["../../src/ui-action/uiaction-util.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAI/D;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB;;;;;;;;;OASG;WACU,IAAI,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,eAAe,CAAC;IAgB3B;;;;;;;OAOG;WACU,eAAe,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,IAAI,CAAC;CAoBjB"}
@@ -1,5 +1,5 @@
1
1
  import { RuntimeError } from '@ibiz-template/core';
2
- import { SysUIActionTag } from '../constant';
2
+ import { SysUIActionTag, ViewCallTag } from '../constant';
3
3
  import { getUIActionById } from '../model';
4
4
  import { getUIActionProvider } from '../register';
5
5
  /**
@@ -26,6 +26,13 @@ export class UIActionUtil {
26
26
  if (!action) {
27
27
  throw new RuntimeError(`没找到${actionId}的界面行为模型`);
28
28
  }
29
+ // 单项数据的界面行为执行前校验表单的数据,不通过则拦截
30
+ if (action.actionTarget === 'SINGLEDATA') {
31
+ const validateResult = await params.view.call(ViewCallTag.VALIDATE);
32
+ if (validateResult === false) {
33
+ return { cancel: true };
34
+ }
35
+ }
29
36
  const provider = await getUIActionProvider(action);
30
37
  return provider.exec(action, params);
31
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-js-param-node.d.ts","sourceRoot":"","sources":["../../../../src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAC3C,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C9C;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,CACrB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAmBP;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,CACjB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAMP;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,CACjB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAKP;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,CAClB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAKP;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,CAClB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAKP;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CACnB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAaP;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,CACjB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;CAQR"}
1
+ {"version":3,"file":"prepare-js-param-node.d.ts","sourceRoot":"","sources":["../../../../src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;;;;;;;GAQG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IAC3C,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA4C9C;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,CACrB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAwCP;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,CACjB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAMP;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,CACjB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAKP;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,CAClB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAKP;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,CAClB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAKP;;;;;;;OAOG;IACH,SAAS,CAAC,WAAW,CACnB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;IAaP;;;;;;;OAOG;IACH,SAAS,CAAC,SAAS,CACjB,SAAS,EAAE,mBAAmB,EAC9B,GAAG,EAAE,cAAc,GAClB,IAAI;CAQR"}
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable no-await-in-loop */
2
- import { ModelError } from '@ibiz-template/core';
2
+ import { ModelError, RuntimeError } from '@ibiz-template/core';
3
3
  import { clone } from 'ramda';
4
+ import { ScriptFactory } from '../../../utils';
4
5
  import { handleSrcVal } from '../../utils';
5
6
  import { UILogicNode } from '../ui-logic-node';
6
7
  /**
@@ -63,6 +64,9 @@ export class PrepareJSParamNode extends UILogicNode {
63
64
  */
64
65
  setParamValue(nodeParam, ctx) {
65
66
  const { dstFieldName, dstDEUILogicParamId } = nodeParam;
67
+ if (!dstDEUILogicParamId) {
68
+ throw new RuntimeError('没有目标参数对象id');
69
+ }
66
70
  // 目标参数
67
71
  let dstField = dstFieldName;
68
72
  // 实体参数对象转小写
@@ -72,7 +76,17 @@ export class PrepareJSParamNode extends UILogicNode {
72
76
  // 源参数
73
77
  const srcVal = handleSrcVal(ctx, nodeParam);
74
78
  if (dstField) {
75
- ctx.params[dstDEUILogicParamId][dstField] = srcVal;
79
+ // 赋值属性的时候支持脚本写法
80
+ try {
81
+ ScriptFactory.execScriptFn({ srcVal, dstParam: ctx.params[dstDEUILogicParamId] }, `dstParam.${dstFieldName} = srcVal`, {
82
+ singleRowReturn: false,
83
+ isAsync: false,
84
+ });
85
+ }
86
+ catch (error) {
87
+ ibiz.log.error(`给目标参数属性${dstFieldName}赋值报错,目标参数:`, ctx.params[dstDEUILogicParamId]);
88
+ throw error;
89
+ }
76
90
  }
77
91
  else {
78
92
  ctx.params[dstDEUILogicParamId] = srcVal;
@@ -1 +1 @@
1
- {"version":3,"file":"ui-logic-param.d.ts","sourceRoot":"","sources":["../../../src/ui-logic/ui-logic-param/ui-logic-param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,qBAAa,YAAY;IAQJ,KAAK,EAAE,eAAe;IAPzC;;;;;;OAMG;gBACgB,KAAK,EAAE,eAAe;IAEzC;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IA8D/B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;CAWjC"}
1
+ {"version":3,"file":"ui-logic-param.d.ts","sourceRoot":"","sources":["../../../src/ui-logic/ui-logic-param/ui-logic-param.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD;;;;;;;GAOG;AACH,qBAAa,YAAY;IAQJ,KAAK,EAAE,eAAe;IAPzC;;;;;;OAMG;gBACgB,KAAK,EAAE,eAAe;IAEzC;;;;;;OAMG;IACH,IAAI,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;IAqE/B;;;;;OAKG;IACH,KAAK,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI;CAWjC"}
@@ -30,6 +30,11 @@ export class UILogicParam {
30
30
  const m = this.model;
31
31
  const { context, viewParams, data, parameters } = ctx;
32
32
  const app = ibiz.hub.getApp(context.srfappid);
33
+ // 特殊变量的特殊处理
34
+ if (m.codeName === 'layoutPanel') {
35
+ ctx.params[tag] = parameters.view.layoutPanel.panelItems;
36
+ return;
37
+ }
33
38
  if (m.default) {
34
39
  ctx.params[tag] = data && data.length > 0 ? data[0] : {};
35
40
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/runtime",
3
- "version": "0.1.31",
3
+ "version": "0.1.33",
4
4
  "description": "控制器包",
5
5
  "type": "module",
6
6
  "main": "out/index.js",
@@ -29,8 +29,8 @@
29
29
  "author": "chitanda",
30
30
  "license": "MIT",
31
31
  "devDependencies": {
32
- "@ibiz-template/core": "^0.1.31",
33
- "@ibiz/model-core": "^0.0.18",
32
+ "@ibiz-template/core": "^0.1.33",
33
+ "@ibiz/model-core": "^0.0.19",
34
34
  "@types/path-browserify": "^1.0.0",
35
35
  "@types/qs": "^6.9.8",
36
36
  "@types/systemjs": "^6.13.3",
@@ -46,7 +46,7 @@
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@ibiz-template/core": "^0.1.0",
49
- "@ibiz/model-core": "^0.0.18",
49
+ "@ibiz/model-core": "^0.0.19",
50
50
  "async-validator": "^4.2.5",
51
51
  "dayjs": "^1.11.7",
52
52
  "echarts": "^5.4.3",
@@ -57,5 +57,5 @@
57
57
  "qx-util": "^0.4.8",
58
58
  "ramda": "^0.29.0"
59
59
  },
60
- "gitHead": "c431fb7031558c3ae1762f6005f601d32d1f0b49"
60
+ "gitHead": "769acca4bc7229f5d27f57e803a9f1d3ea7172ac"
61
61
  }
@@ -19,4 +19,8 @@ export enum ViewCallTag {
19
19
  * 获取所有数据(多数据专用,获取全部数据)
20
20
  */
21
21
  'GET_ALL_DATA' = 'GetAllData',
22
+ /**
23
+ * 校验数据(编辑视图才用)
24
+ */
25
+ 'VALIDATE' = 'Validate',
22
26
  }
@@ -309,7 +309,7 @@ export class MDControlController<
309
309
 
310
310
  // 刷新数据,补全这一页缺少的数据
311
311
  if (needRefresh) {
312
- this.refresh();
312
+ await this.refresh();
313
313
  }
314
314
  } catch (error) {
315
315
  await this._evt.emit('onRemoveError', undefined);
@@ -37,6 +37,9 @@ export class CodeListEditorController<
37
37
  );
38
38
  return dataItems;
39
39
  }
40
- throw new RuntimeModelError(this.model, '请配置代码表');
40
+ throw new RuntimeModelError(
41
+ this.model,
42
+ `编辑器类型[${this.model.editorType}],未配置代码表`,
43
+ );
41
44
  }
42
45
  }
@@ -28,7 +28,8 @@ export class SearchFormService<
28
28
  _context: IParams,
29
29
  params: IParams = {},
30
30
  ): Promise<IHttpResponse<ControlVO>> {
31
- let res = { ok: true, status: 200, data: { ...params } } as IHttpResponse;
31
+ const tempData = this.getFilteredData({ ...params });
32
+ let res = { ok: true, status: 200, data: tempData } as IHttpResponse;
32
33
  res = this.handleResponse(res);
33
34
  return res as IHttpResponse<ControlVO>;
34
35
  }
@@ -50,7 +51,7 @@ export class SearchFormService<
50
51
  }
51
52
  },
52
53
  {
53
- childrenFields: ['deformPages', 'deformDetails'],
54
+ childrenFields: ['deformPages', 'deformTabPages', 'deformDetails'],
54
55
  },
55
56
  );
56
57
  }
@@ -70,4 +71,21 @@ export class SearchFormService<
70
71
  }
71
72
  return res as IHttpResponse<ControlVO>;
72
73
  }
74
+
75
+ /**
76
+ * 根据表单项过滤出数据
77
+ *
78
+ * @return {*}
79
+ * @author: zhujiamin
80
+ * @Date: 2023-09-01 10:04:25
81
+ */
82
+ getFilteredData(data: IData): IData {
83
+ const tempData: IData = {};
84
+ this.dataUIMap.forEach(dataUI => {
85
+ if (data[dataUI.dataKey] !== undefined) {
86
+ tempData[dataUI.dataKey] = data[dataUI.dataKey];
87
+ }
88
+ });
89
+ return tempData;
90
+ }
73
91
  }
@@ -2,7 +2,7 @@
2
2
  import { DataTypes, ModelError } from '@ibiz-template/core';
3
3
  import { IAppCodeList, IDEGridFieldColumn } from '@ibiz/model-core';
4
4
  import dayjs from 'dayjs';
5
- import { clone } from 'ramda';
5
+ import { clone, isNil } from 'ramda';
6
6
  import { OpenAppViewCommand } from '../../../../../command';
7
7
  import { CodeListItem, IModalData } from '../../../../../interface';
8
8
  import { parseUserParams } from '../../../../../model';
@@ -212,6 +212,10 @@ export class GridFieldColumnController extends GridColumnController<IDEGridField
212
212
  return;
213
213
  }
214
214
  const fieldName = aggField || this.model.id!;
215
+
216
+ // 排除属性无值的数据,不纳入统计
217
+ items = items.filter(item => !isNil(item[fieldName]));
218
+
215
219
  let aggValue: number;
216
220
  if (this.grid.model.aggMode === 'PAGE') {
217
221
  switch (aggMode) {
@@ -109,14 +109,21 @@ export class TreeController
109
109
  const params = await this.getFetchParams();
110
110
  const hasQuery = !!params.query;
111
111
 
112
- // 请求服务获取子节点数据
113
- const nodes =
114
- (await this.service.fetchChildNodes(parentNode, {
115
- context: this.context.clone(),
116
- params,
117
- hasQuery,
118
- defaultExpandedKeys: this.state.expandedKeys,
119
- })) || [];
112
+ this.state.isLoading = true;
113
+
114
+ let nodes;
115
+ try {
116
+ // 请求服务获取子节点数据
117
+ nodes =
118
+ (await this.service.fetchChildNodes(parentNode, {
119
+ context: this.context.clone(),
120
+ params,
121
+ hasQuery,
122
+ defaultExpandedKeys: this.state.expandedKeys,
123
+ })) || [];
124
+ } finally {
125
+ this.state.isLoading = false;
126
+ }
120
127
 
121
128
  // 有父节点绑定到父节点数据上,无父节点替换rootNodes
122
129
  if (parentNode) {
@@ -42,4 +42,12 @@ export interface CodeListItem {
42
42
  * @type {string}
43
43
  */
44
44
  textCls?: string;
45
+
46
+ /**
47
+ * 禁止选择
48
+ * @author lxm
49
+ * @date 2023-10-08 03:49:40
50
+ * @type {boolean}
51
+ */
52
+ disableSelect?: boolean;
45
53
  }
@@ -109,6 +109,7 @@ export class CodeListService {
109
109
  color: codeItem.color,
110
110
  id: codeItem.codeName!,
111
111
  textCls: codeItem.textCls,
112
+ disableSelect: codeItem.disableSelect,
112
113
  };
113
114
  if (codeItem.codeItems?.length) {
114
115
  _codeItem.children = this.formatStaticItems(
@@ -4,6 +4,7 @@ import {
4
4
  RuntimeModelError,
5
5
  } from '@ibiz-template/core';
6
6
  import { IAppDEAction } from '@ibiz/model-core';
7
+ import { clone } from 'ramda';
7
8
  import { Method } from './method';
8
9
  import { IDataEntity } from '../../../../interface';
9
10
  import { findDELogic } from '../../../../model';
@@ -47,7 +48,12 @@ export class DEActionMethod extends Method {
47
48
  if (!deLogic) {
48
49
  throw new RuntimeModelError(this.method, '缺少实体处理逻辑');
49
50
  }
50
- return execDELogicAction(deLogic, context, data || {}, params || {});
51
+ return execDELogicAction(
52
+ deLogic,
53
+ clone(context),
54
+ data ? clone(data) : {},
55
+ params ? clone(params) : {},
56
+ );
51
57
  }
52
58
 
53
59
  if (data && !this.isLocalMode) {
@@ -1,5 +1,5 @@
1
1
  import { RuntimeError } from '@ibiz-template/core';
2
- import { SysUIActionTag } from '../constant';
2
+ import { SysUIActionTag, ViewCallTag } from '../constant';
3
3
  import { IUILogicParams, IUIActionResult } from '../interface';
4
4
  import { getUIActionById } from '../model';
5
5
  import { getUIActionProvider } from '../register';
@@ -31,6 +31,13 @@ export class UIActionUtil {
31
31
  if (!action) {
32
32
  throw new RuntimeError(`没找到${actionId}的界面行为模型`);
33
33
  }
34
+ // 单项数据的界面行为执行前校验表单的数据,不通过则拦截
35
+ if (action.actionTarget === 'SINGLEDATA') {
36
+ const validateResult = await params.view.call(ViewCallTag.VALIDATE);
37
+ if (validateResult === false) {
38
+ return { cancel: true };
39
+ }
40
+ }
34
41
  const provider = await getUIActionProvider(action);
35
42
  return provider.exec(action, params);
36
43
  }
@@ -1,7 +1,8 @@
1
1
  /* eslint-disable no-await-in-loop */
2
- import { ModelError } from '@ibiz-template/core';
2
+ import { ModelError, RuntimeError } from '@ibiz-template/core';
3
3
  import { IDEUILogicNodeParam } from '@ibiz/model-core';
4
4
  import { clone } from 'ramda';
5
+ import { ScriptFactory } from '../../../utils';
5
6
  import { UILogicContext } from '../../ui-logic-context';
6
7
  import { handleSrcVal } from '../../utils';
7
8
  import { UILogicNode } from '../ui-logic-node';
@@ -73,6 +74,11 @@ export class PrepareJSParamNode extends UILogicNode {
73
74
  ctx: UILogicContext,
74
75
  ): void {
75
76
  const { dstFieldName, dstDEUILogicParamId } = nodeParam;
77
+
78
+ if (!dstDEUILogicParamId) {
79
+ throw new RuntimeError('没有目标参数对象id');
80
+ }
81
+
76
82
  // 目标参数
77
83
  let dstField = dstFieldName;
78
84
 
@@ -84,7 +90,23 @@ export class PrepareJSParamNode extends UILogicNode {
84
90
  // 源参数
85
91
  const srcVal = handleSrcVal(ctx, nodeParam);
86
92
  if (dstField) {
87
- ctx.params[dstDEUILogicParamId!][dstField] = srcVal;
93
+ // 赋值属性的时候支持脚本写法
94
+ try {
95
+ ScriptFactory.execScriptFn(
96
+ { srcVal, dstParam: ctx.params[dstDEUILogicParamId] },
97
+ `dstParam.${dstFieldName} = srcVal`,
98
+ {
99
+ singleRowReturn: false,
100
+ isAsync: false,
101
+ },
102
+ );
103
+ } catch (error) {
104
+ ibiz.log.error(
105
+ `给目标参数属性${dstFieldName}赋值报错,目标参数:`,
106
+ ctx.params[dstDEUILogicParamId],
107
+ );
108
+ throw error;
109
+ }
88
110
  } else {
89
111
  ctx.params[dstDEUILogicParamId!] = srcVal;
90
112
  }
@@ -32,6 +32,13 @@ export class UILogicParam {
32
32
  const m = this.model;
33
33
  const { context, viewParams, data, parameters } = ctx;
34
34
  const app = ibiz.hub.getApp(context.srfappid);
35
+
36
+ // 特殊变量的特殊处理
37
+ if (m.codeName === 'layoutPanel') {
38
+ ctx.params[tag] = parameters.view.layoutPanel!.panelItems;
39
+ return;
40
+ }
41
+
35
42
  if (m.default) {
36
43
  ctx.params[tag] = data && data.length > 0 ? data[0] : {};
37
44
  } else if (m.activeContainerParam) {