@ibiz-template/runtime 0.5.3-beta.4 → 0.5.3-beta.6

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 (88) hide show
  1. package/dist/index.esm.js +1079 -284
  2. package/dist/index.system.min.js +1 -1
  3. package/out/app-hub.d.ts +12 -2
  4. package/out/app-hub.d.ts.map +1 -1
  5. package/out/app-hub.js +22 -2
  6. package/out/command/app/open-app-view/open-app-view.js +2 -2
  7. package/out/controller/constant/control/index.d.ts +1 -0
  8. package/out/controller/constant/control/index.d.ts.map +1 -1
  9. package/out/controller/constant/control/index.js +1 -0
  10. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts +5 -0
  11. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.d.ts.map +1 -0
  12. package/out/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.js +6 -0
  13. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  14. package/out/controller/control/form/form/form.controller.js +4 -1
  15. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts +1 -0
  16. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts.map +1 -1
  17. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.js +1 -0
  18. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts +10 -0
  19. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts.map +1 -1
  20. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.js +12 -0
  21. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts +34 -0
  22. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts.map +1 -1
  23. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.js +68 -0
  24. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.d.ts +205 -0
  25. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.d.ts.map +1 -0
  26. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.js +345 -0
  27. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts +3 -0
  28. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts.map +1 -1
  29. package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.js +14 -1
  30. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts +16 -8
  31. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts.map +1 -1
  32. package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.js +26 -12
  33. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +59 -0
  34. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -1
  35. package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +238 -1
  36. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +4 -3
  37. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  38. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +23 -1
  39. package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -1
  40. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +17 -0
  41. package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -1
  42. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +60 -2
  43. package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -1
  44. package/out/interface/provider/i-async-action.provider.d.ts +3 -2
  45. package/out/interface/provider/i-async-action.provider.d.ts.map +1 -1
  46. package/out/register/helper/app-menu-item-register.d.ts.map +1 -1
  47. package/out/register/helper/app-menu-item-register.js +1 -6
  48. package/out/register/helper/panel-item-register.d.ts.map +1 -1
  49. package/out/register/helper/panel-item-register.js +36 -30
  50. package/out/service/dto/method.dto.d.ts +0 -9
  51. package/out/service/dto/method.dto.d.ts.map +1 -1
  52. package/out/service/dto/method.dto.js +8 -13
  53. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  54. package/out/service/service/entity/method/fetch.js +22 -20
  55. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +1 -1
  56. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  57. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +25 -26
  58. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts +6 -0
  59. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  60. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +93 -41
  61. package/out/utils/ui-domain/ui-domain.d.ts +32 -6
  62. package/out/utils/ui-domain/ui-domain.d.ts.map +1 -1
  63. package/out/utils/ui-domain/ui-domain.js +46 -9
  64. package/package.json +4 -4
  65. package/src/app-hub.ts +27 -2
  66. package/src/command/app/open-app-view/open-app-view.ts +2 -2
  67. package/src/controller/constant/control/index.ts +1 -0
  68. package/src/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.ts +5 -0
  69. package/src/controller/control/form/form/form.controller.ts +11 -1
  70. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/index.ts +1 -0
  71. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts +22 -0
  72. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.ts +88 -2
  73. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.ts +522 -0
  74. package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.ts +18 -1
  75. package/src/controller/control/tree-grid-ex/tree-grid-ex-row.state.ts +43 -12
  76. package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +296 -1
  77. package/src/interface/common/i-app-hub-service/i-app-hub-service.ts +4 -3
  78. package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +27 -2
  79. package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +15 -1
  80. package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +64 -2
  81. package/src/interface/provider/i-async-action.provider.ts +3 -2
  82. package/src/register/helper/app-menu-item-register.ts +1 -5
  83. package/src/register/helper/panel-item-register.ts +43 -37
  84. package/src/service/dto/method.dto.ts +8 -14
  85. package/src/service/service/entity/method/fetch.ts +26 -25
  86. package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +24 -32
  87. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +111 -46
  88. package/src/utils/ui-domain/ui-domain.ts +49 -9
package/dist/index.esm.js CHANGED
@@ -2861,14 +2861,31 @@ var UIDomain = class {
2861
2861
  */
2862
2862
  constructor(id) {
2863
2863
  /**
2864
- * DTO 父子关系映射
2864
+ * 状态
2865
+ *
2866
+ * @author chitanda
2867
+ * @date 2024-01-15 19:01:51
2868
+ * @type {{ rsInit: boolean }} 关系是否已经初始化
2869
+ */
2870
+ this.state = { rsInit: false };
2871
+ /**
2872
+ * DTO 子父关系映射
2865
2873
  *
2866
2874
  * @author chitanda
2867
2875
  * @date 2023-12-26 15:12:13
2868
2876
  * @protected
2869
- * @type {Map<string, IAppDERS[]>}
2877
+ * @type {Map<string, IAppDERS[]>} Map<子实体, 当前实体的父关系>
2870
2878
  */
2871
2879
  this.rsMap = /* @__PURE__ */ new Map();
2880
+ /**
2881
+ * DTO 父子关系映射
2882
+ *
2883
+ * @author chitanda
2884
+ * @date 2024-01-15 17:01:42
2885
+ * @protected
2886
+ * @type {Map<string, IAppDERS[]>}
2887
+ */
2888
+ this.rs2Map = /* @__PURE__ */ new Map();
2872
2889
  if (id) {
2873
2890
  this.id = id;
2874
2891
  } else {
@@ -2880,26 +2897,46 @@ var UIDomain = class {
2880
2897
  *
2881
2898
  * @author chitanda
2882
2899
  * @date 2023-12-26 15:12:31
2883
- * @param {string} entity
2900
+ * @param {string} appDataEntityId
2884
2901
  * @param {IAppDERS} configs
2885
2902
  */
2886
- setDERConfig(deCodeName, configs) {
2887
- this.rsMap.set(deCodeName, configs);
2903
+ setDERConfig(appDataEntityId, configs) {
2904
+ this.rsMap.set(appDataEntityId, configs);
2888
2905
  }
2889
2906
  /**
2890
2907
  * 获取当前界面域下,具体实体的关系(在数据加载完成之后才有值)
2891
2908
  *
2892
2909
  * @author chitanda
2893
2910
  * @date 2023-12-26 16:12:07
2894
- * @param {string} deCodeName
2911
+ * @param {string} appDataEntityId
2895
2912
  * @return {*} {IAppDERS[]}
2896
2913
  */
2897
- getDERConfig(deCodeName) {
2898
- if (this.rsMap.has(deCodeName)) {
2899
- return this.rsMap.get(deCodeName);
2914
+ getDERConfig(appDataEntityId) {
2915
+ if (this.rsMap.has(appDataEntityId)) {
2916
+ return this.rsMap.get(appDataEntityId);
2900
2917
  }
2901
2918
  return [];
2902
2919
  }
2920
+ /**
2921
+ * 根据模型给的子实体中的父关系模型,计算每个实体的子关系模型
2922
+ *
2923
+ * @author chitanda
2924
+ * @date 2024-01-15 19:01:49
2925
+ */
2926
+ calcParentRs() {
2927
+ this.rs2Map.clear();
2928
+ this.rsMap.forEach((configs, appDataEntityId) => {
2929
+ configs.forEach((config) => {
2930
+ config.minorAppDataEntityId = appDataEntityId;
2931
+ const major = config.majorAppDataEntityId;
2932
+ if (!this.rs2Map.has(major)) {
2933
+ this.rs2Map.set(major, []);
2934
+ }
2935
+ this.rs2Map.get(major).push(config);
2936
+ });
2937
+ });
2938
+ console.log(Array.from(this.rs2Map.values()));
2939
+ }
2903
2940
  /**
2904
2941
  * 界面域销毁
2905
2942
  *
@@ -3028,7 +3065,7 @@ async function handleAllSettled(values, isThrow = true) {
3028
3065
 
3029
3066
  // src/command/app/open-app-view/open-app-view.ts
3030
3067
  import { ModelError as ModelError15, RuntimeError as RuntimeError23 } from "@ibiz-template/core";
3031
- import { clone as clone15 } from "ramda";
3068
+ import { clone as clone16 } from "ramda";
3032
3069
 
3033
3070
  // src/service/utils/de-dq-cond/ps-de-dq-cond-engine.ts
3034
3071
  import { isEmpty as isEmpty3 } from "ramda";
@@ -3652,7 +3689,7 @@ function getProvider6(key) {
3652
3689
  async function getPanelItemProvider(model) {
3653
3690
  var _a;
3654
3691
  let provider;
3655
- const { itemType, sysPFPluginId, appId: appId2 } = model;
3692
+ const { itemType, sysPFPluginId, appId: appId2, controlRenders } = model;
3656
3693
  if (sysPFPluginId) {
3657
3694
  const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId2);
3658
3695
  if (pluginKey) {
@@ -3664,41 +3701,45 @@ async function getPanelItemProvider(model) {
3664
3701
  return provider;
3665
3702
  }
3666
3703
  }
3667
- if (itemType === "CONTAINER") {
3668
- const predefinedType = model.predefinedType || "DEFAULT";
3669
- const key = "CONTAINER_".concat(predefinedType);
3670
- provider = getProvider6(key);
3671
- if (!provider) {
3672
- ibiz.log.error(
3673
- "\u627E\u4E0D\u5230\u9762\u677F\u5BB9\u5668\u9884\u7F6E\u7C7B\u578B\u4E3A".concat(predefinedType, "\u7684\u9002\u914D\u5668\uFF0C\u6CE8\u518Ckey\u4E3A").concat(key)
3674
- );
3675
- } else {
3676
- return provider;
3677
- }
3678
- }
3679
- if (itemType === "RAWITEM") {
3680
- const predefinedType = ((_a = model.rawItem) == null ? void 0 : _a.predefinedType) || "DEFAULT";
3681
- const key = "RAWITEM_".concat(predefinedType);
3682
- provider = getProvider6(key);
3683
- if (!provider) {
3684
- ibiz.log.error(
3685
- "\u627E\u4E0D\u5230\u9762\u677F\u6210\u5458\u76F4\u63A5\u5185\u5BB9\u9884\u7F6E\u7C7B\u578B\u4E3A".concat(predefinedType, "\u7684\u9002\u914D\u5668\uFF0C\u6CE8\u518Ckey\u4E3A").concat(key)
3686
- );
3687
- } else {
3688
- return provider;
3704
+ if (controlRenders && controlRenders.length > 0) {
3705
+ provider = getProvider6("PREDEFINE_RENDER");
3706
+ } else {
3707
+ if (itemType === "CONTAINER") {
3708
+ const predefinedType = model.predefinedType || "DEFAULT";
3709
+ const key = "CONTAINER_".concat(predefinedType);
3710
+ provider = getProvider6(key);
3711
+ if (!provider) {
3712
+ ibiz.log.error(
3713
+ "\u627E\u4E0D\u5230\u9762\u677F\u5BB9\u5668\u9884\u7F6E\u7C7B\u578B\u4E3A".concat(predefinedType, "\u7684\u9002\u914D\u5668\uFF0C\u6CE8\u518Ckey\u4E3A").concat(key)
3714
+ );
3715
+ } else {
3716
+ return provider;
3717
+ }
3689
3718
  }
3690
- }
3691
- if (itemType === "FIELD") {
3692
- const { editor } = model;
3693
- if (editor && editor.predefinedType) {
3694
- const key = "FIELD_".concat(editor.predefinedType.toUpperCase());
3719
+ if (itemType === "RAWITEM") {
3720
+ const predefinedType = ((_a = model.rawItem) == null ? void 0 : _a.predefinedType) || "DEFAULT";
3721
+ const key = "RAWITEM_".concat(predefinedType);
3695
3722
  provider = getProvider6(key);
3696
- if (provider) {
3723
+ if (!provider) {
3724
+ ibiz.log.error(
3725
+ "\u627E\u4E0D\u5230\u9762\u677F\u6210\u5458\u76F4\u63A5\u5185\u5BB9\u9884\u7F6E\u7C7B\u578B\u4E3A".concat(predefinedType, "\u7684\u9002\u914D\u5668\uFF0C\u6CE8\u518Ckey\u4E3A").concat(key)
3726
+ );
3727
+ } else {
3697
3728
  return provider;
3698
3729
  }
3699
3730
  }
3731
+ if (itemType === "FIELD") {
3732
+ const { editor } = model;
3733
+ if (editor && editor.predefinedType) {
3734
+ const key = "FIELD_".concat(editor.predefinedType.toUpperCase());
3735
+ provider = getProvider6(key);
3736
+ if (provider) {
3737
+ return provider;
3738
+ }
3739
+ }
3740
+ }
3741
+ provider = getProvider6(itemType);
3700
3742
  }
3701
- provider = getProvider6(itemType);
3702
3743
  if (!provider) {
3703
3744
  ibiz.log.error("\u627E\u4E0D\u5230\u9762\u677F\u6210\u5458\u7C7B\u578B".concat(itemType, "\u5BF9\u5E94\u7684\u9002\u914D\u5668"));
3704
3745
  } else {
@@ -4050,11 +4091,7 @@ async function getAppMenuItemProvider(model) {
4050
4091
  }
4051
4092
  }
4052
4093
  provider = getProvider14(itemType);
4053
- if (!provider) {
4054
- ibiz.log.error("\u627E\u4E0D\u5230\u5E94\u7528\u83DC\u5355\u9879\u7C7B\u578B".concat(itemType, "\u5BF9\u5E94\u7684\u9002\u914D\u5668"));
4055
- } else {
4056
- return provider;
4057
- }
4094
+ return provider;
4058
4095
  }
4059
4096
 
4060
4097
  // src/service/utils/app-counter/app-counter.ts
@@ -4532,16 +4569,16 @@ var DynamicCodeListCache = class {
4532
4569
  );
4533
4570
  let resultItems = [];
4534
4571
  if (res.data.length) {
4535
- res.data.forEach((item) => {
4536
- if (pvalueAppDEFieldId) {
4537
- const tempItems = this.prepareTreeData(res.data);
4538
- if (tempItems) {
4539
- resultItems = tempItems;
4540
- }
4541
- } else {
4542
- resultItems.push(this.convertData(item));
4572
+ if (pvalueAppDEFieldId) {
4573
+ const tempItems = this.prepareTreeData(res.data);
4574
+ if (tempItems) {
4575
+ resultItems = tempItems;
4543
4576
  }
4544
- });
4577
+ } else {
4578
+ res.data.forEach((item) => {
4579
+ resultItems.push(this.convertData(item));
4580
+ });
4581
+ }
4545
4582
  }
4546
4583
  return Object.freeze(resultItems);
4547
4584
  }
@@ -4550,26 +4587,23 @@ var DynamicCodeListCache = class {
4550
4587
  *
4551
4588
  * @return {codeListItem[] | undefined}
4552
4589
  */
4553
- prepareTreeData(items, pValue) {
4554
- const { pvalueAppDEFieldId } = this.codeList;
4555
- let filteredData = [];
4556
- filteredData = items.filter((item) => {
4557
- if (pValue) {
4558
- return item[pvalueAppDEFieldId] === pValue;
4590
+ prepareTreeData(items) {
4591
+ const { valueAppDEFieldId, pvalueAppDEFieldId } = this.codeList;
4592
+ const map = {};
4593
+ const nestedList = [];
4594
+ items.forEach((data) => {
4595
+ map[data[valueAppDEFieldId]] = this.convertData(data);
4596
+ });
4597
+ items.forEach((data) => {
4598
+ const parent = map[data[pvalueAppDEFieldId]];
4599
+ if (parent) {
4600
+ parent.children = parent.children || [];
4601
+ parent.children.push(map[data[valueAppDEFieldId]]);
4602
+ } else {
4603
+ nestedList.push(map[data[valueAppDEFieldId]]);
4559
4604
  }
4560
- return !item[pvalueAppDEFieldId];
4561
- });
4562
- if (filteredData.length === 0) {
4563
- return;
4564
- }
4565
- return filteredData.map((data) => {
4566
- const tempCodeListItem = this.convertData(data);
4567
- tempCodeListItem.children = this.prepareTreeData(
4568
- items,
4569
- tempCodeListItem.value
4570
- );
4571
- return tempCodeListItem;
4572
4605
  });
4606
+ return nestedList;
4573
4607
  }
4574
4608
  /**
4575
4609
  * 获取动态的代码项
@@ -5989,15 +6023,6 @@ var MethodDto = class {
5989
6023
  this.dto = dto;
5990
6024
  this.inSelfLoop = inSelfLoop;
5991
6025
  this.dtoMap = /* @__PURE__ */ new Map();
5992
- /**
5993
- * 当前 DTO 是否已经计算过关系相关逻辑
5994
- *
5995
- * @link this.calcRs
5996
- * @author chitanda
5997
- * @date 2023-12-26 16:12:18
5998
- * @protected
5999
- */
6000
- this.isCalcRs = false;
6001
6026
  if (dto) {
6002
6027
  this.app = ibiz.hub.getApp(entity.appId);
6003
6028
  this.fields = dto.appDEMethodDTOFields || [];
@@ -6129,7 +6154,12 @@ var MethodDto = class {
6129
6154
  if (this.isLocalMode && !this.inSelfLoop) {
6130
6155
  this.service.local.clear();
6131
6156
  }
6132
- await this.calcRs(context);
6157
+ const uiDomain = ibiz.uiDomainManager.get(context.srfsessionid);
6158
+ if (uiDomain && uiDomain.state.rsInit !== true) {
6159
+ await this.calcRs(context);
6160
+ uiDomain.calcParentRs();
6161
+ uiDomain.state.rsInit = true;
6162
+ }
6133
6163
  return Promise.all(
6134
6164
  data.map(async (datum) => {
6135
6165
  const all = this.fields.filter((field) => field.type === "DTOS").map(async (field) => {
@@ -6142,7 +6172,7 @@ var MethodDto = class {
6142
6172
  }
6143
6173
  const dto = await this.getFieldDto(context, field);
6144
6174
  const items = datum[key];
6145
- if (items) {
6175
+ if (items && items.length > 0) {
6146
6176
  const pKey = datum[this.entity.keyAppDEFieldId];
6147
6177
  if (field.refPickupAppDEFieldId) {
6148
6178
  items.forEach((item) => {
@@ -6177,10 +6207,9 @@ var MethodDto = class {
6177
6207
  * @return {*} {Promise<void>}
6178
6208
  */
6179
6209
  async calcRs(context, depth = 0) {
6180
- if (this.isCalcRs || depth > 10) {
6210
+ if (depth > 10) {
6181
6211
  return;
6182
6212
  }
6183
- this.isCalcRs = true;
6184
6213
  depth += 1;
6185
6214
  const uiDomain = ibiz.uiDomainManager.get(context.srfsessionid);
6186
6215
  const dtoFields = this.fields.filter((field) => field.type === "DTOS");
@@ -8989,35 +9018,36 @@ import { ascSort, descSort } from "qx-util";
8989
9018
  var FetchMethod = class extends Method {
8990
9019
  async exec(context, params, params2) {
8991
9020
  const searchParams = params && !isArray7(params) ? params : params2 || {};
9021
+ let res;
8992
9022
  if (this.isLocalMode) {
8993
9023
  const cond = DEDQCondUtil.getCond(this.method);
8994
- const items2 = await this.searchLocal(
9024
+ const items = await this.searchLocal(
8995
9025
  cond,
8996
9026
  new SearchFilter(context, searchParams)
8997
9027
  );
8998
- return new HttpResponse4(items2, 200);
8999
- }
9000
- let res;
9001
- switch (this.method.dataSetType) {
9002
- case "INDEXDE":
9003
- case "CODELIST":
9004
- case "MULTIFORM":
9005
- res = await this.fetchCodeListSet(context, searchParams);
9006
- break;
9007
- case "REMOTE":
9008
- {
9009
- const path2 = this.calcPath(context);
9010
- res = await this.request(path2, context, params, params2);
9011
- }
9012
- break;
9013
- default:
9014
- throw new ModelError14(
9015
- this.method,
9016
- "\u6570\u636E\u6765\u6E90\u7C7B\u578B".concat(this.method.dataSetType, "\u6682\u672A\u652F\u6301")
9017
- );
9028
+ res = new HttpResponse4(items, 200);
9029
+ } else {
9030
+ switch (this.method.dataSetType) {
9031
+ case "INDEXDE":
9032
+ case "CODELIST":
9033
+ case "MULTIFORM":
9034
+ res = await this.fetchCodeListSet(context, searchParams);
9035
+ break;
9036
+ case "REMOTE":
9037
+ {
9038
+ const path2 = this.calcPath(context);
9039
+ res = await this.request(path2, context, params, params2);
9040
+ }
9041
+ break;
9042
+ default:
9043
+ throw new ModelError14(
9044
+ this.method,
9045
+ "\u6570\u636E\u6765\u6E90\u7C7B\u578B".concat(this.method.dataSetType, "\u6682\u672A\u652F\u6301")
9046
+ );
9047
+ }
9048
+ const items = res.data || [];
9049
+ res.data = items.map((item) => this.createEntity(item));
9018
9050
  }
9019
- const items = res.data || [];
9020
- res.data = items.map((item) => this.createEntity(item));
9021
9051
  if (res.data) {
9022
9052
  await execFieldLogics(
9023
9053
  this.entity,
@@ -9200,15 +9230,14 @@ var TreeCodeListNodeData = class extends TreeNodeData {
9200
9230
 
9201
9231
  // src/service/vo/tree-node-data/tree-data-set-node-data.ts
9202
9232
  import { updateKeyDefine } from "@ibiz-template/core";
9203
- import { isNil as isNil12 } from "ramda";
9204
- var TreeDataSetNodeData = class extends TreeNodeData {
9233
+ import { clone as clone15, isNil as isNil12 } from "ramda";
9234
+ var CloneExcludeKeys = ["_id", "_value", "_text", "_deData", "clone"];
9235
+ var TreeDataSetNodeData = class _TreeDataSetNodeData extends TreeNodeData {
9205
9236
  constructor(model, parentNodeData, opts) {
9206
9237
  var _a, _b;
9207
9238
  super(model, parentNodeData, opts);
9208
9239
  const { data } = opts;
9209
9240
  this._deData = data;
9210
- this._text = model.textAppDEFieldId ? data[model.textAppDEFieldId] : data.srfmajortext;
9211
- this._value = model.idAppDEFieldId ? data[model.idAppDEFieldId] : data.srfkey;
9212
9241
  const selfId = "".concat(model.id, "@").concat(data.srfkey).toLowerCase();
9213
9242
  Object.defineProperty(this, "_id", {
9214
9243
  get() {
@@ -9217,6 +9246,20 @@ var TreeDataSetNodeData = class extends TreeNodeData {
9217
9246
  enumerable: true,
9218
9247
  configurable: true
9219
9248
  });
9249
+ Object.defineProperty(this, "_text", {
9250
+ get() {
9251
+ return model.textAppDEFieldId ? data[model.textAppDEFieldId] : data.srfmajortext;
9252
+ },
9253
+ enumerable: true,
9254
+ configurable: true
9255
+ });
9256
+ Object.defineProperty(this, "_value", {
9257
+ get() {
9258
+ return model.idAppDEFieldId ? data[model.idAppDEFieldId] : data.srfkey;
9259
+ },
9260
+ enumerable: true,
9261
+ configurable: true
9262
+ });
9220
9263
  if (model.appDataEntityId) {
9221
9264
  const deName = calcDeCodeNameById(model.appDataEntityId);
9222
9265
  this._context = Object.assign(this._context || {}, {
@@ -9229,14 +9272,13 @@ var TreeDataSetNodeData = class extends TreeNodeData {
9229
9272
  this._leaf = fieldValueToBoolean(data[model.leafFlagAppDEFieldId]);
9230
9273
  }
9231
9274
  const dataItemKeyMap = /* @__PURE__ */ new Map();
9232
- dataItemKeyMap.set("srfkey", "srfkey");
9233
- dataItemKeyMap.set("srfmajortext", "srfmajortext");
9275
+ const dataItemDefaultMap = /* @__PURE__ */ new Map();
9234
9276
  (_a = model.detreeNodeDataItems) == null ? void 0 : _a.forEach((dataItem) => {
9235
- const uiKey = dataItem.id.toLowerCase();
9277
+ const dataItemKey = dataItem.id.toLowerCase();
9236
9278
  const deFieldKey = dataItem.appDEFieldId.toLowerCase();
9237
- dataItemKeyMap.set(uiKey, deFieldKey);
9238
- if (dataItem.defaultValue && isNil12(data[deFieldKey])) {
9239
- data[deFieldKey] = dataItem.defaultValue;
9279
+ dataItemKeyMap.set(dataItemKey, deFieldKey);
9280
+ if (dataItem.defaultValue) {
9281
+ dataItemDefaultMap.set(dataItemKey, dataItem.defaultValue);
9240
9282
  }
9241
9283
  });
9242
9284
  const nodeColumnKeyMap = /* @__PURE__ */ new Map();
@@ -9246,35 +9288,60 @@ var TreeDataSetNodeData = class extends TreeNodeData {
9246
9288
  if (!columnKey || !dataItemKey) {
9247
9289
  ibiz.log.error("\u6A21\u578B\u5F02\u5E38\u7F3A\u5C11detreeColumnId\u6216\u8005dataItemName", column);
9248
9290
  } else {
9249
- nodeColumnKeyMap.set(columnKey, dataItemKeyMap.get(dataItemKey));
9291
+ nodeColumnKeyMap.set(columnKey, dataItemKey);
9250
9292
  }
9251
9293
  });
9294
+ const getDeKey = (key) => {
9295
+ if (nodeColumnKeyMap.has(key)) {
9296
+ return dataItemKeyMap.get(nodeColumnKeyMap.get(key));
9297
+ }
9298
+ if (dataItemKeyMap.has(key)) {
9299
+ return dataItemKeyMap.get(key);
9300
+ }
9301
+ if (Object.prototype.hasOwnProperty.call(this._deData, key)) {
9302
+ return key;
9303
+ }
9304
+ };
9305
+ const getKeyDefault = (key) => {
9306
+ if (nodeColumnKeyMap.has(key)) {
9307
+ return dataItemDefaultMap.get(nodeColumnKeyMap.get(key));
9308
+ }
9309
+ if (dataItemDefaultMap.has(key)) {
9310
+ return dataItemDefaultMap.get(key);
9311
+ }
9312
+ };
9313
+ this.clone = () => {
9314
+ const cloneData = clone15(this._deData);
9315
+ const cloneNodeData = new _TreeDataSetNodeData(model, this._parent, {
9316
+ data: cloneData,
9317
+ leaf: this._leaf,
9318
+ navContext: this._context,
9319
+ navParams: this._params
9320
+ });
9321
+ Object.keys(this).forEach((key) => {
9322
+ const deKey = getDeKey(key);
9323
+ if (isNil12(deKey) && !CloneExcludeKeys.includes(key)) {
9324
+ cloneNodeData[key] = this[key];
9325
+ }
9326
+ });
9327
+ return cloneNodeData;
9328
+ };
9252
9329
  return new Proxy(this, {
9253
9330
  set(target, p, value) {
9254
- if (nodeColumnKeyMap.has(p)) {
9255
- target._deData[nodeColumnKeyMap.get(p)] = value;
9256
- } else if (dataItemKeyMap.has(p)) {
9257
- target._deData[dataItemKeyMap.get(p)] = value;
9258
- } else if (Object.prototype.hasOwnProperty.call(target._deData, p)) {
9259
- target._deData[p] = value;
9331
+ const deKey = getDeKey(p);
9332
+ if (!isNil12(deKey)) {
9333
+ target._deData[deKey] = value;
9260
9334
  } else {
9261
9335
  target[p] = value;
9262
9336
  }
9263
9337
  return true;
9264
9338
  },
9265
9339
  get(target, p, _receiver) {
9266
- if (target[p] !== void 0) {
9267
- return target[p];
9268
- }
9269
- if (nodeColumnKeyMap.has(p)) {
9270
- return target._deData[nodeColumnKeyMap.get(p)];
9271
- }
9272
- if (dataItemKeyMap.has(p)) {
9273
- return target._deData[dataItemKeyMap.get(p)];
9274
- }
9275
- if (target._deData[p] !== void 0) {
9276
- return target._deData[p];
9340
+ const deKey = getDeKey(p);
9341
+ if (!isNil12(deKey)) {
9342
+ return isNil12(target._deData[deKey]) ? getKeyDefault(p) : target._deData[deKey];
9277
9343
  }
9344
+ return target[p];
9278
9345
  },
9279
9346
  ownKeys(target) {
9280
9347
  const allKeys = [
@@ -10062,7 +10129,7 @@ var _OpenAppViewCommand = class _OpenAppViewCommand {
10062
10129
  * @return {*} {(Promise<IModalData | void>)}
10063
10130
  */
10064
10131
  async exec(appViewId, _context, params = {}, opts = {}) {
10065
- const context = clone15(_context);
10132
+ const context = clone16(_context);
10066
10133
  const appView = await ibiz.hub.config.view.get(appViewId);
10067
10134
  if (!appView) {
10068
10135
  throw new RuntimeError23("\u5E94\u7528\u89C6\u56FE[".concat(appViewId, "]\u4E0D\u5B58\u5728"));
@@ -10091,7 +10158,7 @@ var _OpenAppViewCommand = class _OpenAppViewCommand {
10091
10158
  const viewOpenMode = opts.openMode || openMode;
10092
10159
  if (viewOpenMode !== void 0 && viewOpenMode !== "INDEXVIEWTAB") {
10093
10160
  if (context.toRouteDepth) {
10094
- delete context.toRouteDepth;
10161
+ context.toRouteDepth = void 0;
10095
10162
  }
10096
10163
  }
10097
10164
  switch (viewOpenMode) {
@@ -10333,7 +10400,7 @@ function installCommand() {
10333
10400
  }
10334
10401
 
10335
10402
  // src/app-hub.ts
10336
- import { RuntimeError as RuntimeError61 } from "@ibiz-template/core";
10403
+ import { RuntimeError as RuntimeError63 } from "@ibiz-template/core";
10337
10404
 
10338
10405
  // src/application.ts
10339
10406
  import { Net, getToken } from "@ibiz-template/core";
@@ -10622,6 +10689,13 @@ var PanelNotifyState = /* @__PURE__ */ ((PanelNotifyState2) => {
10622
10689
  return PanelNotifyState2;
10623
10690
  })(PanelNotifyState || {});
10624
10691
 
10692
+ // src/controller/constant/control/tree-grid-ex/tree-grid-ex-notify.state.ts
10693
+ var TreeGridExNotifyState = /* @__PURE__ */ ((TreeGridExNotifyState2) => {
10694
+ TreeGridExNotifyState2["LOAD"] = "LOAD";
10695
+ TreeGridExNotifyState2["SAVE"] = "SAVE";
10696
+ return TreeGridExNotifyState2;
10697
+ })(TreeGridExNotifyState || {});
10698
+
10625
10699
  // src/controller/common/view/view.controller.ts
10626
10700
  import { notNilEmpty as notNilEmpty6 } from "qx-util";
10627
10701
  import { IBizContext as IBizContext2, RuntimeError as RuntimeError32 } from "@ibiz-template/core";
@@ -12619,7 +12693,7 @@ var CodeListEditorController = class extends EditorController {
12619
12693
 
12620
12694
  // src/controller/common/control/control.controller.ts
12621
12695
  import { IBizContext as IBizContext3, IBizParams, NoticeError as NoticeError2 } from "@ibiz-template/core";
12622
- import { clone as clone16, isNil as isNil20 } from "ramda";
12696
+ import { clone as clone17, isNil as isNil20 } from "ramda";
12623
12697
  import { notNilEmpty as notNilEmpty7 } from "qx-util";
12624
12698
  var ControlController = class extends BaseController {
12625
12699
  /**
@@ -12661,7 +12735,7 @@ var ControlController = class extends BaseController {
12661
12735
  "".concat(model.controlType, "_DEFAULT")
12662
12736
  );
12663
12737
  if (panelModel) {
12664
- this.controlPanel = clone16(panelModel);
12738
+ this.controlPanel = clone17(panelModel);
12665
12739
  }
12666
12740
  }
12667
12741
  this.updateContextParams({});
@@ -13933,7 +14007,7 @@ import isSameOrBefore from "dayjs/plugin/isSameOrBefore";
13933
14007
  import quarterOfYear from "dayjs/plugin/quarterOfYear";
13934
14008
  import weekOfYear from "dayjs/plugin/weekOfYear";
13935
14009
  import isoWeek from "dayjs/plugin/isoWeek";
13936
- import { clone as clone17, isNil as isNil21, mergeDeepRight } from "ramda";
14010
+ import { clone as clone18, isNil as isNil21, mergeDeepRight } from "ramda";
13937
14011
  dayjs4.extend(minMax);
13938
14012
  dayjs4.extend(isSameOrBefore);
13939
14013
  dayjs4.extend(quarterOfYear);
@@ -14208,7 +14282,7 @@ var BaseSeriesGenerator = class {
14208
14282
  dataPreprocess(data) {
14209
14283
  const tempData = [];
14210
14284
  data.forEach((singleData) => {
14211
- tempData.push(clone17(singleData));
14285
+ tempData.push(clone18(singleData));
14212
14286
  });
14213
14287
  const { groupMode } = this.model;
14214
14288
  if (groupMode) {
@@ -15259,7 +15333,7 @@ import { ModelError as ModelError19, RuntimeModelError as RuntimeModelError31 }
15259
15333
 
15260
15334
  // src/ui-logic/utils/handle-src-val.ts
15261
15335
  import { ModelError as ModelError18 } from "@ibiz-template/core";
15262
- import { clone as clone18 } from "ramda";
15336
+ import { clone as clone19 } from "ramda";
15263
15337
  function handleSrcVal2(ctx, srcValParams) {
15264
15338
  const { srcDEUILogicParamId, srcFieldName, srcValue } = srcValParams;
15265
15339
  const srcValueType = srcValParams.srcValueType || "SRCDLPARAM";
@@ -15286,7 +15360,7 @@ function handleSrcVal2(ctx, srcValParams) {
15286
15360
  value = ctx.parameters.context;
15287
15361
  break;
15288
15362
  case "ENVPARAM":
15289
- value = clone18(ibiz.env);
15363
+ value = clone19(ibiz.env);
15290
15364
  break;
15291
15365
  default:
15292
15366
  throw new ModelError18(srcValParams, "\u6682\u672A\u652F\u6301\u6E90\u503C\u7C7B\u578B".concat(srcValueType));
@@ -15645,7 +15719,7 @@ var EndNode2 = class extends UILogicNode {
15645
15719
 
15646
15720
  // src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts
15647
15721
  import { ModelError as ModelError22, RuntimeError as RuntimeError39 } from "@ibiz-template/core";
15648
- import { clone as clone19 } from "ramda";
15722
+ import { clone as clone20 } from "ramda";
15649
15723
  var PrepareJSParamNode = class extends UILogicNode {
15650
15724
  async exec(ctx) {
15651
15725
  const nodeParams = this.model.deuilogicNodeParams;
@@ -15734,7 +15808,7 @@ var PrepareJSParamNode = class extends UILogicNode {
15734
15808
  copyParam(nodeParam, ctx) {
15735
15809
  const { dstDEUILogicParamId } = nodeParam;
15736
15810
  const srcVal = handleSrcVal2(ctx, nodeParam);
15737
- ctx.params[dstDEUILogicParamId] = clone19(srcVal);
15811
+ ctx.params[dstDEUILogicParamId] = clone20(srcVal);
15738
15812
  }
15739
15813
  /**
15740
15814
  * 绑定参数
@@ -15961,7 +16035,7 @@ var ResetParamNode2 = class extends UILogicNode {
15961
16035
 
15962
16036
  // src/ui-logic/ui-logic-node/copy-param-node/copy-param-node.ts
15963
16037
  import { RuntimeModelError as RuntimeModelError40 } from "@ibiz-template/core";
15964
- import { clone as clone20 } from "ramda";
16038
+ import { clone as clone21 } from "ramda";
15965
16039
  var CopyParamNode2 = class extends UILogicNode {
15966
16040
  async exec(ctx) {
15967
16041
  const { dstDEUILogicParamId, srcDEUILogicParamId } = this.model;
@@ -15972,7 +16046,7 @@ var CopyParamNode2 = class extends UILogicNode {
15972
16046
  );
15973
16047
  }
15974
16048
  const srcVal = handleSrcVal2(ctx, this.model);
15975
- ctx.params[dstDEUILogicParamId] = clone20(srcVal);
16049
+ ctx.params[dstDEUILogicParamId] = clone21(srcVal);
15976
16050
  }
15977
16051
  };
15978
16052
 
@@ -19025,7 +19099,11 @@ var ChartExpBarController = class extends ExpBarControlController {
19025
19099
  import { RuntimeError as RuntimeError50 } from "@ibiz-template/core";
19026
19100
 
19027
19101
  // src/controller/control/form/form/form.controller.ts
19028
- import { debounceAndAsyncMerge, recursiveIterate as recursiveIterate3 } from "@ibiz-template/core";
19102
+ import {
19103
+ RuntimeModelError as RuntimeModelError55,
19104
+ debounceAndAsyncMerge,
19105
+ recursiveIterate as recursiveIterate3
19106
+ } from "@ibiz-template/core";
19029
19107
  var FormController = class extends ControlController {
19030
19108
  constructor() {
19031
19109
  super(...arguments);
@@ -19149,6 +19227,12 @@ var FormController = class extends ControlController {
19149
19227
  if (!detailProvider) {
19150
19228
  return;
19151
19229
  }
19230
+ if (form.details[detail.id]) {
19231
+ throw new RuntimeModelError55(
19232
+ detail,
19233
+ "\u521D\u59CB\u5316\u5F02\u5E38: \u8868\u5355\u6210\u5458[".concat(detail.id, "](").concat(detail.detailType, ")\u5DF2\u5B58\u5728\uFF0C\u8868\u5355\u9879\u6807\u8BC6\u91CD\u590D\u8BF7\u68C0\u67E5\u914D\u7F6E")
19234
+ );
19235
+ }
19152
19236
  form.providers[detail.id] = detailProvider;
19153
19237
  const detailController = await detailProvider.createController(
19154
19238
  detail,
@@ -20786,7 +20870,7 @@ var FormMDCtrlController = class extends FormDetailController {
20786
20870
  import {
20787
20871
  mergeInLeft,
20788
20872
  ModelError as ModelError27,
20789
- RuntimeModelError as RuntimeModelError55
20873
+ RuntimeModelError as RuntimeModelError56
20790
20874
  } from "@ibiz-template/core";
20791
20875
  var FormMDCtrlMDController = class extends FormMDCtrlController {
20792
20876
  constructor() {
@@ -20812,7 +20896,7 @@ var FormMDCtrlMDController = class extends FormMDCtrlController {
20812
20896
  await super.onInit();
20813
20897
  const { contentControl } = this.model;
20814
20898
  if (!contentControl) {
20815
- throw new RuntimeModelError55(this.model, "\u591A\u6570\u636E\u90E8\u4EF6\u672A\u914D\u7F6E\u5185\u5BB9\u90E8\u4EF6");
20899
+ throw new RuntimeModelError56(this.model, "\u591A\u6570\u636E\u90E8\u4EF6\u672A\u914D\u7F6E\u5185\u5BB9\u90E8\u4EF6");
20816
20900
  }
20817
20901
  if (contentControl.controlType === "GRID") {
20818
20902
  mergeInLeft(contentControl, {
@@ -20909,7 +20993,7 @@ var FormMDCtrlMDController = class extends FormMDCtrlController {
20909
20993
  };
20910
20994
 
20911
20995
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts
20912
- import { RuntimeError as RuntimeError51, RuntimeModelError as RuntimeModelError56 } from "@ibiz-template/core";
20996
+ import { RuntimeError as RuntimeError51, RuntimeModelError as RuntimeModelError57 } from "@ibiz-template/core";
20913
20997
  import { createUUID as createUUID11 } from "qx-util";
20914
20998
 
20915
20999
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.ts
@@ -20950,7 +21034,7 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
20950
21034
  super.onInit();
20951
21035
  const { contentControl } = this.model;
20952
21036
  if (!contentControl) {
20953
- throw new RuntimeModelError56(this.model, "\u591A\u6570\u636E\u90E8\u4EF6\u672A\u914D\u7F6E\u5185\u5BB9\u90E8\u4EF6");
21037
+ throw new RuntimeModelError57(this.model, "\u591A\u6570\u636E\u90E8\u4EF6\u672A\u914D\u7F6E\u5185\u5BB9\u90E8\u4EF6");
20954
21038
  }
20955
21039
  contentControl.enableAutoSave = this.enableCreate || this.enableUpdate;
20956
21040
  const controlProvider = await getControlProvider(contentControl);
@@ -21084,7 +21168,7 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
21084
21168
 
21085
21169
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.ts
21086
21170
  import { ModelError as ModelError28 } from "@ibiz-template/core";
21087
- import { clone as clone21 } from "ramda";
21171
+ import { clone as clone22 } from "ramda";
21088
21172
  var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
21089
21173
  constructor() {
21090
21174
  super(...arguments);
@@ -21168,7 +21252,7 @@ var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
21168
21252
  copyFields.forEach((key) => {
21169
21253
  tempForm[key] = this.form.model[key];
21170
21254
  });
21171
- this.repeatedForm = clone21(tempForm);
21255
+ this.repeatedForm = clone22(tempForm);
21172
21256
  }
21173
21257
  /**
21174
21258
  * 设置重复器数据(修改主表单里重复器对应属性)
@@ -21298,12 +21382,12 @@ import {
21298
21382
  } from "@ibiz-template/core";
21299
21383
  import { debounce as debounce2 } from "lodash-es";
21300
21384
  import { createUUID as createUUID12 } from "qx-util";
21301
- import { clone as clone22 } from "ramda";
21385
+ import { clone as clone23 } from "ramda";
21302
21386
 
21303
21387
  // src/controller/control/form/edit-form/edit-form.service.ts
21304
21388
  import {
21305
21389
  recursiveIterate as recursiveIterate6,
21306
- RuntimeModelError as RuntimeModelError57
21390
+ RuntimeModelError as RuntimeModelError58
21307
21391
  } from "@ibiz-template/core";
21308
21392
  var EditFormService = class extends FormService {
21309
21393
  /**
@@ -21427,7 +21511,7 @@ var EditFormService = class extends FormService {
21427
21511
  const wizardForm = this.model;
21428
21512
  const methodName = (_a = wizardForm.goBackControlAction) == null ? void 0 : _a.appDEMethodId;
21429
21513
  if (!methodName) {
21430
- throw new RuntimeModelError57(this.model, "\u7F3A\u5C11\u8FD4\u56DE\u64CD\u4F5C\u5B9E\u4F53\u884C\u4E3A");
21514
+ throw new RuntimeModelError58(this.model, "\u7F3A\u5C11\u8FD4\u56DE\u64CD\u4F5C\u5B9E\u4F53\u884C\u4E3A");
21431
21515
  }
21432
21516
  let res = await this.exec(
21433
21517
  methodName,
@@ -21663,8 +21747,8 @@ var EditFormController = class extends FormController {
21663
21747
  * @return {*} {Promise<IData>}
21664
21748
  */
21665
21749
  async copy() {
21666
- const context = clone22(this.context);
21667
- const queryParams = clone22(this.params);
21750
+ const context = clone23(this.context);
21751
+ const queryParams = clone23(this.params);
21668
21752
  const appDataEntity = await ibiz.hub.getAppDataEntity(
21669
21753
  this.model.appDataEntityId,
21670
21754
  this.model.appId
@@ -21721,7 +21805,7 @@ var EditFormController = class extends FormController {
21721
21805
  return this.loadDraft();
21722
21806
  }
21723
21807
  const { context, params } = this.handlerAbilityParams(args);
21724
- const queryParams = clone22(params);
21808
+ const queryParams = clone23(params);
21725
21809
  let res;
21726
21810
  try {
21727
21811
  await this.startLoading();
@@ -22287,12 +22371,12 @@ import {
22287
22371
  mergeDefaultInLeft,
22288
22372
  recursiveIterate as recursiveIterate7,
22289
22373
  RuntimeError as RuntimeError53,
22290
- RuntimeModelError as RuntimeModelError59
22374
+ RuntimeModelError as RuntimeModelError60
22291
22375
  } from "@ibiz-template/core";
22292
- import { clone as clone23 } from "ramda";
22376
+ import { clone as clone24 } from "ramda";
22293
22377
 
22294
22378
  // src/controller/control/grid/grid/grid.service.ts
22295
- import { RuntimeModelError as RuntimeModelError58 } from "@ibiz-template/core";
22379
+ import { RuntimeModelError as RuntimeModelError59 } from "@ibiz-template/core";
22296
22380
  var GridService = class extends MDControlService {
22297
22381
  /**
22298
22382
  * 初始化属性映射
@@ -22320,7 +22404,7 @@ var GridService = class extends MDControlService {
22320
22404
  dataType: dataItem.dataType
22321
22405
  });
22322
22406
  } else {
22323
- throw new RuntimeModelError58(
22407
+ throw new RuntimeModelError59(
22324
22408
  column,
22325
22409
  "\u672A\u627E\u5230\u5BF9\u5E94\u7684\u8868\u683C\u6570\u636E\u9879[".concat(deField, "]")
22326
22410
  );
@@ -22599,7 +22683,7 @@ var GridController = class extends MDControlController {
22599
22683
  const result = await calcColumnModelBySchema(json, this);
22600
22684
  if (result && result.degridColumns.length > 0) {
22601
22685
  const { degridColumns, degridDataItems } = result;
22602
- this.model = clone23(this.model);
22686
+ this.model = clone24(this.model);
22603
22687
  this.model.degridColumns = [
22604
22688
  ...(this.model.degridColumns || []).filter((item) => {
22605
22689
  return degridColumns.findIndex((x) => x.id === item.id) === -1;
@@ -22630,11 +22714,11 @@ var GridController = class extends MDControlController {
22630
22714
  (item) => item.model.appDEFieldId === groupAppDEFieldId
22631
22715
  );
22632
22716
  if (!this.groupFieldColumn) {
22633
- throw new RuntimeModelError59(this.model, "\u6CA1\u6709\u914D\u7F6E\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217");
22717
+ throw new RuntimeModelError60(this.model, "\u6CA1\u6709\u914D\u7F6E\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217");
22634
22718
  }
22635
22719
  const groupFieldName = this.groupFieldColumn.model.id;
22636
22720
  if (!this.groupFieldColumn.model.appCodeListId) {
22637
- throw new RuntimeModelError59(
22721
+ throw new RuntimeModelError60(
22638
22722
  this.groupFieldColumn.model,
22639
22723
  "\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217".concat(groupFieldName, "\u6CA1\u6709\u914D\u7F6E\u4EE3\u7801\u8868")
22640
22724
  );
@@ -22644,7 +22728,7 @@ var GridController = class extends MDControlController {
22644
22728
  );
22645
22729
  if (index !== -1 && index !== 0) {
22646
22730
  if (this.isMultistageHeader) {
22647
- throw new RuntimeModelError59(
22731
+ throw new RuntimeModelError60(
22648
22732
  this.model,
22649
22733
  "\u8BF7\u5C06\u5206\u7EC4\u5C5E\u6027\u5217".concat(groupFieldName, "\u914D\u7F6E\u4E3A\u7B2C\u4E00\u5217")
22650
22734
  );
@@ -22654,10 +22738,10 @@ var GridController = class extends MDControlController {
22654
22738
  }
22655
22739
  if (groupMode === "CODELIST") {
22656
22740
  if (!groupCodeListId) {
22657
- throw new RuntimeModelError59(this.model, "\u4EE3\u7801\u8868\u5206\u7EC4\u6A21\u5F0F\u9700\u8981\u914D\u7F6E\u4EE3\u7801\u8868");
22741
+ throw new RuntimeModelError60(this.model, "\u4EE3\u7801\u8868\u5206\u7EC4\u6A21\u5F0F\u9700\u8981\u914D\u7F6E\u4EE3\u7801\u8868");
22658
22742
  }
22659
22743
  if (this.groupFieldColumn.model.appCodeListId !== groupCodeListId) {
22660
- throw new RuntimeModelError59(
22744
+ throw new RuntimeModelError60(
22661
22745
  this.model,
22662
22746
  "\u5206\u7EC4\u4EE3\u7801\u8868\u4E0E\u5C5E\u6027\u5217".concat(groupFieldName, "\u7684\u4EE3\u7801\u8868\u4E0D\u4E00\u81F4")
22663
22747
  );
@@ -22744,7 +22828,7 @@ var GridController = class extends MDControlController {
22744
22828
  return;
22745
22829
  }
22746
22830
  if (!aggAppDEDataSetId || !aggAppDataEntityId) {
22747
- throw new RuntimeModelError59(this.model, "\u7F3A\u5C11\u914D\u7F6E\u805A\u5408\u5B9E\u4F53\u6216\u805A\u5408\u6570\u636E\u96C6");
22831
+ throw new RuntimeModelError60(this.model, "\u7F3A\u5C11\u914D\u7F6E\u805A\u5408\u5B9E\u4F53\u6216\u805A\u5408\u6570\u636E\u96C6");
22748
22832
  }
22749
22833
  const params = await this.getFetchParams();
22750
22834
  const app = ibiz.hub.getApp(this.context.srfappid);
@@ -23114,7 +23198,7 @@ var GridController = class extends MDControlController {
23114
23198
  throw new RuntimeError53("\u540C\u65F6\u53EA\u80FD\u6709\u4E00\u884C\u5F00\u542F\u884C\u7F16\u8F91");
23115
23199
  }
23116
23200
  if (row.data.srfuf === 1 /* UPDATE */) {
23117
- row.cacheData = clone23(row.data);
23201
+ row.cacheData = clone24(row.data);
23118
23202
  const defaultVal = this.calcDefaultValue(row.data, false);
23119
23203
  Object.assign(row.data, defaultVal);
23120
23204
  }
@@ -23283,7 +23367,7 @@ var GridController = class extends MDControlController {
23283
23367
  }
23284
23368
  });
23285
23369
  }
23286
- const cloneData = clone23(
23370
+ const cloneData = clone24(
23287
23371
  data2.map((item) => {
23288
23372
  return item.getOrigin();
23289
23373
  })
@@ -23521,7 +23605,7 @@ var GridController = class extends MDControlController {
23521
23605
  import { DataTypes as DataTypes4, ModelError as ModelError29, plus as plus2 } from "@ibiz-template/core";
23522
23606
  import dayjs5 from "dayjs";
23523
23607
  import { debounce as debounce3 } from "lodash-es";
23524
- import { clone as clone24, isNil as isNil23 } from "ramda";
23608
+ import { clone as clone25, isNil as isNil23 } from "ramda";
23525
23609
  var GridFieldColumnController = class extends GridColumnController {
23526
23610
  constructor() {
23527
23611
  super(...arguments);
@@ -23650,7 +23734,7 @@ var GridFieldColumnController = class extends GridColumnController {
23650
23734
  srfkey: value,
23651
23735
  ...wfContext
23652
23736
  });
23653
- const tempParams = clone24(this.params);
23737
+ const tempParams = clone25(this.params);
23654
23738
  const { context: newContext, params: newParams } = this.handlePublicParams(
23655
23739
  row.data,
23656
23740
  tempContext,
@@ -23821,7 +23905,7 @@ var GridFieldColumnController = class extends GridColumnController {
23821
23905
  };
23822
23906
 
23823
23907
  // src/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.ts
23824
- import { RuntimeModelError as RuntimeModelError60 } from "@ibiz-template/core";
23908
+ import { RuntimeModelError as RuntimeModelError61 } from "@ibiz-template/core";
23825
23909
  var GridUAColumnController = class extends GridColumnController {
23826
23910
  /**
23827
23911
  * 给rowController初始化操作列的状态
@@ -23834,7 +23918,7 @@ var GridUAColumnController = class extends GridColumnController {
23834
23918
  var _a;
23835
23919
  const { deuiactionGroup } = this.model;
23836
23920
  if (!deuiactionGroup) {
23837
- throw new RuntimeModelError60(this.model, "\u64CD\u4F5C\u5217\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A\u7EC4");
23921
+ throw new RuntimeModelError61(this.model, "\u64CD\u4F5C\u5217\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A\u7EC4");
23838
23922
  }
23839
23923
  if (!((_a = deuiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {
23840
23924
  ibiz.log.debug("\u64CD\u4F5C\u5217\u754C\u9762\u884C\u4E3A\u7EC4\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A");
@@ -25050,10 +25134,10 @@ import {
25050
25134
  mergeInLeft as mergeInLeft3,
25051
25135
  recursiveIterate as recursiveIterate9
25052
25136
  } from "@ibiz-template/core";
25053
- import { clone as clone25, isNil as isNil24 } from "ramda";
25137
+ import { clone as clone26, isNil as isNil24 } from "ramda";
25054
25138
 
25055
25139
  // src/controller/control/search-bar/search-bar-filter.controller.ts
25056
- import { RuntimeModelError as RuntimeModelError61 } from "@ibiz-template/core";
25140
+ import { RuntimeModelError as RuntimeModelError62 } from "@ibiz-template/core";
25057
25141
  var ExcludeOPs = [
25058
25142
  "ISNULL" /* IS_NULL */,
25059
25143
  "ISNOTNULL" /* IS_NOT_NULL */
@@ -25094,7 +25178,7 @@ var SearchBarFilterController = class {
25094
25178
  async init() {
25095
25179
  if (!this.noEditor) {
25096
25180
  if (!this.model.editor) {
25097
- throw new RuntimeModelError61(this.model, "\u7F3A\u5C11\u7F16\u8F91\u5668\u6A21\u578B");
25181
+ throw new RuntimeModelError62(this.model, "\u7F3A\u5C11\u7F16\u8F91\u5668\u6A21\u578B");
25098
25182
  }
25099
25183
  this.editorProvider = await getEditorProvider(this.model.editor);
25100
25184
  if (this.editorProvider) {
@@ -25554,7 +25638,7 @@ var SearchBarController = class extends ControlController {
25554
25638
  }
25555
25639
  });
25556
25640
  if (addSearchBarFilters.length > 0) {
25557
- this.model = clone25(this.model);
25641
+ this.model = clone26(this.model);
25558
25642
  this.model.searchBarFilters = addSearchBarFilters.concat(...mergeFilters);
25559
25643
  this.model.enableFilter = true;
25560
25644
  }
@@ -26138,7 +26222,7 @@ var TabExpPanelController = class extends ControlController {
26138
26222
  // src/controller/control/tree/tree.controller.ts
26139
26223
  import {
26140
26224
  RuntimeError as RuntimeError57,
26141
- RuntimeModelError as RuntimeModelError62,
26225
+ RuntimeModelError as RuntimeModelError63,
26142
26226
  recursiveIterate as recursiveIterate10
26143
26227
  } from "@ibiz-template/core";
26144
26228
 
@@ -27009,7 +27093,7 @@ var TreeController = class extends MDControlController {
27009
27093
  const { sortAppDEFieldId, sortDir, allowOrder } = orderNodeModel;
27010
27094
  if (allowOrder === true) {
27011
27095
  if (!sortAppDEFieldId) {
27012
- throw new RuntimeModelError62(orderNodeModel, "\u7F3A\u5C11\u914D\u7F6E\u6392\u5E8F\u5C5E\u6027");
27096
+ throw new RuntimeModelError63(orderNodeModel, "\u7F3A\u5C11\u914D\u7F6E\u6392\u5E8F\u5C5E\u6027");
27013
27097
  }
27014
27098
  const sortField = sortAppDEFieldId.toLowerCase();
27015
27099
  const isAsc = sortDir === "ASC";
@@ -27090,7 +27174,7 @@ var TreeController = class extends MDControlController {
27090
27174
  async modifyNodeText(nodeData, text) {
27091
27175
  const model = this.getNodeModel(nodeData._nodeId);
27092
27176
  if (!model.allowEditText) {
27093
- throw new RuntimeModelError62(model, "\u6811\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u7F16\u8F91\u6A21\u5F0F\uFF1A\u540D\u79F0");
27177
+ throw new RuntimeModelError63(model, "\u6811\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u7F16\u8F91\u6A21\u5F0F\uFF1A\u540D\u79F0");
27094
27178
  }
27095
27179
  if (!nodeData._deData) {
27096
27180
  throw new RuntimeError57("\u4E0D\u662F\u5B9E\u4F53\u6811\u8282\u70B9\u6570\u636E");
@@ -27454,7 +27538,7 @@ var WizardPanelController = class extends ControlController {
27454
27538
  };
27455
27539
 
27456
27540
  // src/controller/control/md-ctrl/md-ctrl.controller.ts
27457
- import { RuntimeModelError as RuntimeModelError63 } from "@ibiz-template/core";
27541
+ import { RuntimeModelError as RuntimeModelError64 } from "@ibiz-template/core";
27458
27542
  import { isNil as isNil25 } from "ramda";
27459
27543
 
27460
27544
  // src/controller/control/md-ctrl/md-ctrl.service.ts
@@ -27661,7 +27745,7 @@ var MDCtrlController = class extends MDControlController {
27661
27745
  const { enableGroup, groupMode, groupAppDEFieldId } = this.model;
27662
27746
  if (enableGroup && groupMode) {
27663
27747
  if (!groupAppDEFieldId) {
27664
- throw new RuntimeModelError63(this.model, "\u5206\u7EC4\u5C5E\u6027\u6CA1\u6709\u914D\u7F6E");
27748
+ throw new RuntimeModelError64(this.model, "\u5206\u7EC4\u5C5E\u6027\u6CA1\u6709\u914D\u7F6E");
27665
27749
  }
27666
27750
  if (groupMode === "AUTO") {
27667
27751
  this.handleAutoGroup();
@@ -27728,7 +27812,7 @@ var MDCtrlController = class extends MDControlController {
27728
27812
  async handleCodeListGroup() {
27729
27813
  const { groupAppDEFieldId, groupCodeListId } = this.model;
27730
27814
  if (!groupCodeListId) {
27731
- throw new RuntimeModelError63(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
27815
+ throw new RuntimeModelError64(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
27732
27816
  }
27733
27817
  const { items } = this.state;
27734
27818
  const groupMap = /* @__PURE__ */ new Map();
@@ -27758,7 +27842,7 @@ var MDCtrlController = class extends MDControlController {
27758
27842
  };
27759
27843
 
27760
27844
  // src/controller/control/kanban/kanban.controller.ts
27761
- import { RuntimeError as RuntimeError59, RuntimeModelError as RuntimeModelError64 } from "@ibiz-template/core";
27845
+ import { RuntimeError as RuntimeError59, RuntimeModelError as RuntimeModelError65 } from "@ibiz-template/core";
27762
27846
  import { isNil as isNil26 } from "ramda";
27763
27847
 
27764
27848
  // src/controller/control/kanban/kanban.service.ts
@@ -27836,10 +27920,10 @@ var KanbanController = class extends DataViewControlController {
27836
27920
  const sortField = this.model.minorSortAppDEFieldId;
27837
27921
  const { minorSortDir } = this.model;
27838
27922
  if (!sortField) {
27839
- throw new RuntimeModelError64(this.model, "\u6392\u5E8F\u5C5E\u6027\u6CA1\u914D\u7F6E");
27923
+ throw new RuntimeModelError65(this.model, "\u6392\u5E8F\u5C5E\u6027\u6CA1\u914D\u7F6E");
27840
27924
  }
27841
27925
  if (!minorSortDir) {
27842
- throw new RuntimeModelError64(this.model, "\u6392\u5E8F\u65B9\u5411\u6CA1\u914D\u7F6E");
27926
+ throw new RuntimeModelError65(this.model, "\u6392\u5E8F\u65B9\u5411\u6CA1\u914D\u7F6E");
27843
27927
  }
27844
27928
  const isAsc = minorSortDir === "ASC";
27845
27929
  items.forEach((item) => {
@@ -27983,7 +28067,7 @@ var KanbanController = class extends DataViewControlController {
27983
28067
  async handleCodeListGroup() {
27984
28068
  const { groupAppDEFieldId, groupCodeListId } = this.model;
27985
28069
  if (!groupCodeListId) {
27986
- throw new RuntimeModelError64(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
28070
+ throw new RuntimeModelError65(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
27987
28071
  }
27988
28072
  const { items } = this.state;
27989
28073
  const groupMap = /* @__PURE__ */ new Map();
@@ -28277,7 +28361,12 @@ var KanbanController = class extends DataViewControlController {
28277
28361
  };
28278
28362
 
28279
28363
  // src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts
28280
- import { recursiveIterate as recursiveIterate11 } from "@ibiz-template/core";
28364
+ import {
28365
+ RuntimeError as RuntimeError60,
28366
+ awaitTimeout as awaitTimeout3,
28367
+ recursiveIterate as recursiveIterate11
28368
+ } from "@ibiz-template/core";
28369
+ import { clone as clone27 } from "ramda";
28281
28370
 
28282
28371
  // src/controller/control/tree-grid-ex/tree-grid-ex.service.ts
28283
28372
  var TreeGridExService = class extends TreeService {
@@ -28286,18 +28375,29 @@ var TreeGridExService = class extends TreeService {
28286
28375
  // src/controller/control/tree-grid-ex/tree-grid-ex-row.state.ts
28287
28376
  var TreeGridExRowState = class {
28288
28377
  constructor(data, treeGrid) {
28289
- /**
28290
- * 操作列状态(p是操作列的标识)
28291
- *
28292
- * @author lxm
28293
- * @date 2022-09-07 22:09:38
28294
- * @type {({ [p: string]: IButtonContainerState })}
28295
- */
28296
- this.uaColStates = {};
28378
+ this.errors = {};
28379
+ this.columnActionsStates = {};
28380
+ this.editColStates = {};
28381
+ this.modified = false;
28382
+ this.showRowEdit = false;
28383
+ this.processing = false;
28297
28384
  this.data = data;
28298
- Object.values(treeGrid.uaColumns).forEach((column) => {
28299
- column.initActionStates(this);
28300
- });
28385
+ if (data._nodeType === "DE") {
28386
+ Object.values(treeGrid.uaColumns).forEach((column) => {
28387
+ column.initActionStates(this);
28388
+ });
28389
+ Object.values(treeGrid.fieldColumns).forEach((column) => {
28390
+ column.initActionStates(this);
28391
+ });
28392
+ Object.values(treeGrid.fieldColumns).forEach((fieldColumn) => {
28393
+ this.editColStates[fieldColumn.name] = {
28394
+ disabled: false,
28395
+ readonly: false,
28396
+ editable: ibiz.config.grid.editShowMode === "all",
28397
+ required: false
28398
+ };
28399
+ });
28400
+ }
28301
28401
  }
28302
28402
  };
28303
28403
 
@@ -28342,6 +28442,9 @@ var TreeGridExController = class extends TreeController {
28342
28442
  */
28343
28443
  this.uaColumns = {};
28344
28444
  }
28445
+ get _evt() {
28446
+ return this.evt;
28447
+ }
28345
28448
  /**
28346
28449
  * 是否有配置宽度自适应列
28347
28450
  *
@@ -28361,11 +28464,22 @@ var TreeGridExController = class extends TreeController {
28361
28464
  get overflowMode() {
28362
28465
  return ibiz.config.grid.overflowMode;
28363
28466
  }
28467
+ /**
28468
+ * 允许使用行编辑
28469
+ * @author lxm
28470
+ * @date 2023-08-17 02:52:07
28471
+ * @readonly
28472
+ * @type {boolean}
28473
+ */
28474
+ get allowRowEdit() {
28475
+ return this.state.rowEditOpen;
28476
+ }
28364
28477
  initState() {
28365
28478
  super.initState();
28366
28479
  this.state.columnStates = [];
28367
28480
  this.state.rootNodes = [];
28368
28481
  this.state.rows = {};
28482
+ this.state.rowEditOpen = true;
28369
28483
  }
28370
28484
  async onCreated() {
28371
28485
  await super.onCreated();
@@ -28501,42 +28615,238 @@ var TreeGridExController = class extends TreeController {
28501
28615
  convertColumnCaption(this.model.detreeColumns);
28502
28616
  }
28503
28617
  }
28504
- };
28505
-
28506
- // src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts
28507
- var TreeGridExColumnController = class {
28618
+ async save(nodeData) {
28619
+ if (this.state.isSimple) {
28620
+ ibiz.log.debug("\u7B80\u5355\u6A21\u5F0F\uFF0C\u4E0D\u4FDD\u5B58");
28621
+ return;
28622
+ }
28623
+ if (nodeData._nodeType !== "DE") {
28624
+ throw new RuntimeError60("\u975E\u5B9E\u4F53\u8282\u70B9\u6570\u636E\u4E0D\u80FD\u4FDD\u5B58");
28625
+ }
28626
+ const rowState = this.state.rows[nodeData._uuid];
28627
+ if (!rowState) {
28628
+ throw new RuntimeError60("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
28629
+ }
28630
+ if (!rowState.modified) {
28631
+ ibiz.log.debug("\u503C\u6CA1\u6709\u53D1\u751F\u6539\u53D8");
28632
+ return;
28633
+ }
28634
+ if (rowState.processing) {
28635
+ await awaitTimeout3(500, this.save.bind(this), [nodeData]);
28636
+ return;
28637
+ }
28638
+ const nodeModel = this.getNodeModel(nodeData._nodeId);
28639
+ const { appDataEntityId } = nodeModel;
28640
+ const isCreate = nodeData._deData.srfuf === 0 /* CREATE */;
28641
+ if (isCreate) {
28642
+ throw new RuntimeError60("\u6682\u4E0D\u652F\u6301\u65B0\u5EFA");
28643
+ }
28644
+ const methodAction = "update";
28645
+ const deName = calcDeCodeNameById(appDataEntityId);
28646
+ const tempContext = this.context.clone();
28647
+ tempContext[deName] = nodeData._deData.srfkey;
28648
+ const app = ibiz.hub.getApp(this.context.srfappid);
28649
+ let res;
28650
+ try {
28651
+ res = await app.deService.exec(
28652
+ appDataEntityId,
28653
+ methodAction,
28654
+ tempContext,
28655
+ nodeData._deData
28656
+ );
28657
+ } catch (error) {
28658
+ await this._evt.emit("onSaveError", void 0);
28659
+ this.actionNotification("".concat(isCreate ? "CREATE" : "UPDATE", "ERROR"), {
28660
+ error,
28661
+ data: rowState.data
28662
+ });
28663
+ throw error;
28664
+ }
28665
+ rowState.data._deData = res.data;
28666
+ rowState.modified = false;
28667
+ this.gridStateNotify(rowState, "SAVE" /* SAVE */);
28668
+ await this._evt.emit("onSaveSuccess", void 0);
28669
+ }
28670
+ async saveAll() {
28671
+ const needSaveData = Object.values(this.state.rows).filter((row) => row.modified).map((row) => row.data);
28672
+ if (!needSaveData.length) {
28673
+ return;
28674
+ }
28675
+ await handleAllSettled(
28676
+ needSaveData.map((data) => {
28677
+ return this.save(data);
28678
+ })
28679
+ );
28680
+ }
28508
28681
  /**
28509
- * Creates an instance of GridFieldColumnController.
28682
+ * 树表格状态变更通知
28683
+ *
28510
28684
  * @author lxm
28511
- * @date 2022-08-24 20:08:22
28512
- * @param {T} model
28685
+ * @date 2022-09-20 18:09:07
28513
28686
  */
28514
- constructor(model, treeGrid) {
28515
- /**
28516
- * 是否是自适应列
28517
- * @author lxm
28518
- * @date 2023-07-07 11:20:16
28519
- * @type {boolean}
28520
- */
28521
- this.isAdaptiveColumn = false;
28522
- /**
28523
- * 是否是脚本代码
28524
- * @return {*}
28525
- * @author: zhujiamin
28526
- * @Date: 2023-08-15 10:51:25
28527
- */
28528
- this.isCustomCode = false;
28529
- this.model = model;
28530
- this.treeGrid = treeGrid;
28531
- this.isAdaptiveColumn = model.widthUnit === "STAR";
28687
+ gridStateNotify(row, state) {
28688
+ Object.values(this.columns).forEach((column) => {
28689
+ column.gridStateNotify(row, state);
28690
+ });
28532
28691
  }
28533
28692
  /**
28534
- * 上下文
28693
+ * 设置行属性的值
28535
28694
  *
28536
28695
  * @author lxm
28537
- * @date 2022-09-05 19:09:24
28538
- * @readonly
28539
- * @type {IContext}
28696
+ * @date 2022-08-24 10:08:40
28697
+ * @param {GridRowState} row 行状态控制器
28698
+ * @param {unknown} value 要设置的值
28699
+ * @param {string} name 要设置的表单数据的属性名称
28700
+ */
28701
+ async setRowValue(row, name, value) {
28702
+ if (Object.prototype.hasOwnProperty.call(row.data, name) && !isValueChange(row.data[name], value)) {
28703
+ return;
28704
+ }
28705
+ row.data[name] = value;
28706
+ row.modified = true;
28707
+ row.processing = true;
28708
+ try {
28709
+ await this.dataChangeNotify(row, [name]);
28710
+ } finally {
28711
+ row.processing = false;
28712
+ }
28713
+ }
28714
+ /**
28715
+ * 通知所有表格编辑项成员表格编辑项数据变更
28716
+ *
28717
+ * @author lxm
28718
+ * @date 2022-09-20 22:09:49
28719
+ * @param {GridRowState} row 行数据
28720
+ * @param {string[]} names 更新的属性
28721
+ */
28722
+ async dataChangeNotify(row, names) {
28723
+ await handleAllSettled(
28724
+ Object.values(this.columns).map(async (column) => {
28725
+ return column.dataChangeNotify(row, names);
28726
+ })
28727
+ );
28728
+ }
28729
+ async toggleRowEdit() {
28730
+ this.state.rowEditOpen = !this.state.rowEditOpen;
28731
+ }
28732
+ /**
28733
+ * 计算默认值并返回一个对象,对象里的属性就是要填充的默认值
28734
+ * 没有的属性就是不需要填充默认值的属性
28735
+ * @author lxm
28736
+ * @date 2023-09-18 04:01:06
28737
+ * @param {IData} data
28738
+ * @param {boolean} isCreate
28739
+ * @return {*} {IData}
28740
+ */
28741
+ calcDefaultValue(data, isCreate) {
28742
+ const result = {};
28743
+ Object.values(this.fieldColumns).forEach((c) => {
28744
+ const nodeColumn = c.nodeColumnControllerMap.get(data._nodeId);
28745
+ if (!nodeColumn || !nodeColumn.nodeEditItem) {
28746
+ return;
28747
+ }
28748
+ const { createDV, createDVT, updateDV, updateDVT } = nodeColumn.nodeEditItem;
28749
+ const valueType = isCreate ? createDVT : updateDVT;
28750
+ const defaultValue = isCreate ? createDV : updateDV;
28751
+ const defaultVal = getDefaultValue(
28752
+ {
28753
+ name: c.name,
28754
+ valueType,
28755
+ defaultValue,
28756
+ valueFormat: nodeColumn.valueFormat
28757
+ },
28758
+ { data, context: this.context, params: this.params }
28759
+ );
28760
+ if (defaultVal !== void 0) {
28761
+ result[c.name] = defaultVal;
28762
+ }
28763
+ });
28764
+ return result;
28765
+ }
28766
+ /**
28767
+ * 切换单行的编辑状态
28768
+ * @author lxm
28769
+ * @date 2023-08-08 06:45:54
28770
+ * @param {GridRowState} row
28771
+ * @param {boolean} [editable]
28772
+ */
28773
+ async switchRowEdit(row, editable, isSave = true) {
28774
+ if (!this.allowRowEdit) {
28775
+ return;
28776
+ }
28777
+ if (row.data._nodeType !== "DE") {
28778
+ return;
28779
+ }
28780
+ const toState = editable === void 0 ? !row.showRowEdit : editable;
28781
+ if (row.showRowEdit === toState) {
28782
+ return;
28783
+ }
28784
+ if (toState === false) {
28785
+ if (isSave) {
28786
+ await this.save(row.data);
28787
+ } else if (row.data._deData.srfuf === 0 /* CREATE */) {
28788
+ row.showRowEdit = false;
28789
+ this._evt.emit("onRowEditChange", { row });
28790
+ return this.remove({ data: [row.data], silent: true });
28791
+ } else if (row.cacheData) {
28792
+ row.data = row.cacheData;
28793
+ delete row.cacheData;
28794
+ }
28795
+ } else {
28796
+ const editingRow = Object.values(this.state.rows).find(
28797
+ (item) => item.showRowEdit
28798
+ );
28799
+ if (editingRow) {
28800
+ throw new RuntimeError60("\u540C\u65F6\u53EA\u80FD\u6709\u4E00\u884C\u5F00\u542F\u884C\u7F16\u8F91");
28801
+ }
28802
+ if (row.data._deData.srfuf === 1 /* UPDATE */) {
28803
+ row.cacheData = clone27(row.data);
28804
+ const defaultVal = this.calcDefaultValue(row.data, false);
28805
+ Object.assign(row.data, defaultVal);
28806
+ }
28807
+ }
28808
+ row.showRowEdit = toState;
28809
+ Object.values(this.fieldColumns).forEach((column) => {
28810
+ row.editColStates[column.name].editable = toState;
28811
+ });
28812
+ this._evt.emit("onRowEditChange", { row });
28813
+ }
28814
+ };
28815
+
28816
+ // src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts
28817
+ var TreeGridExColumnController = class {
28818
+ /**
28819
+ * Creates an instance of GridFieldColumnController.
28820
+ * @author lxm
28821
+ * @date 2022-08-24 20:08:22
28822
+ * @param {T} model
28823
+ */
28824
+ constructor(model, treeGrid) {
28825
+ /**
28826
+ * 是否是自适应列
28827
+ * @author lxm
28828
+ * @date 2023-07-07 11:20:16
28829
+ * @type {boolean}
28830
+ */
28831
+ this.isAdaptiveColumn = false;
28832
+ /**
28833
+ * 是否是脚本代码
28834
+ * @return {*}
28835
+ * @author: zhujiamin
28836
+ * @Date: 2023-08-15 10:51:25
28837
+ */
28838
+ this.isCustomCode = false;
28839
+ this.model = model;
28840
+ this.treeGrid = treeGrid;
28841
+ this.isAdaptiveColumn = model.widthUnit === "STAR";
28842
+ }
28843
+ /**
28844
+ * 上下文
28845
+ *
28846
+ * @author lxm
28847
+ * @date 2022-09-05 19:09:24
28848
+ * @readonly
28849
+ * @type {IContext}
28540
28850
  */
28541
28851
  get context() {
28542
28852
  return this.treeGrid.context;
@@ -28585,14 +28895,468 @@ var TreeGridExColumnController = class {
28585
28895
  */
28586
28896
  async onInit() {
28587
28897
  }
28898
+ /**
28899
+ * 表格状态变更通知
28900
+ *
28901
+ * @author lxm
28902
+ * @date 2022-09-20 18:09:07
28903
+ */
28904
+ gridStateNotify(_row, _state) {
28905
+ }
28906
+ async dataChangeNotify(_row, _names) {
28907
+ }
28908
+ };
28909
+
28910
+ // src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.ts
28911
+ import {
28912
+ DataTypes as DataTypes5,
28913
+ RuntimeError as RuntimeError61,
28914
+ RuntimeModelError as RuntimeModelError66
28915
+ } from "@ibiz-template/core";
28916
+ import { clone as clone28 } from "ramda";
28917
+ import dayjs6 from "dayjs";
28918
+ var TreeGridExNodeColumnController = class {
28919
+ /**
28920
+ * @author lxm
28921
+ * @date 2024-01-09 10:04:05
28922
+ * @param {TreeGridExFieldColumnController} fieldColumn 树表格属性列控制器
28923
+ * @param {IDETreeNode} nodeModel 对应实体节点模型
28924
+ */
28925
+ constructor(fieldColumn, nodeModel) {
28926
+ this.fieldColumn = fieldColumn;
28927
+ this.nodeModel = nodeModel;
28928
+ /**
28929
+ * 代码表模型
28930
+ * @return {*}
28931
+ * @author: zhujiamin
28932
+ * @Date: 2023-05-24 10:55:50
28933
+ */
28934
+ this.codeList = void 0;
28935
+ const { detreeNodeColumns, detreeNodeDataItems, detreeNodeEditItems } = nodeModel;
28936
+ const nodeColumn = detreeNodeColumns == null ? void 0 : detreeNodeColumns.find((column) => {
28937
+ return column.detreeColumnId === this.fieldColumn.model.id;
28938
+ });
28939
+ const nodeDataItem = detreeNodeDataItems == null ? void 0 : detreeNodeDataItems.find(
28940
+ (treeNodeDataItem) => {
28941
+ return treeNodeDataItem.id === nodeColumn.dataItemName;
28942
+ }
28943
+ );
28944
+ if (!nodeColumn || !nodeDataItem) {
28945
+ throw new RuntimeModelError66(
28946
+ nodeModel,
28947
+ "\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u5BF9\u5E94\u8868\u683C\u5217".concat(this.fieldColumn.name, "\u7684\u6570\u636E\u9879")
28948
+ );
28949
+ }
28950
+ this.nodeColumn = nodeColumn;
28951
+ this.nodeDataItem = nodeDataItem;
28952
+ if (nodeColumn.enableRowEdit) {
28953
+ const nodeEditItem = detreeNodeEditItems == null ? void 0 : detreeNodeEditItems.find(
28954
+ (treeNodeEditItem) => {
28955
+ return treeNodeEditItem.id === nodeColumn.id;
28956
+ }
28957
+ );
28958
+ if (!nodeEditItem) {
28959
+ throw new RuntimeModelError66(
28960
+ nodeModel,
28961
+ "\u6CA1\u6709\u627E\u5230\u5BF9\u5E94\u8868\u683C\u5217".concat(this.fieldColumn.name, "\u7684\u7F16\u8F91\u9879\u6A21\u578B")
28962
+ );
28963
+ }
28964
+ this.nodeEditItem = nodeEditItem;
28965
+ }
28966
+ }
28967
+ get unitName() {
28968
+ var _a;
28969
+ return (_a = this.nodeEditItem) == null ? void 0 : _a.unitName;
28970
+ }
28971
+ get valueFormat() {
28972
+ return this.nodeColumn.valueFormat;
28973
+ }
28974
+ get context() {
28975
+ return this.fieldColumn.context;
28976
+ }
28977
+ get params() {
28978
+ return this.fieldColumn.params;
28979
+ }
28980
+ get dataType() {
28981
+ var _a;
28982
+ return (_a = this.nodeDataItem) == null ? void 0 : _a.dataType;
28983
+ }
28984
+ /**
28985
+ * 树表格列标识(用于取数和各种比较判断)
28986
+ * @author lxm
28987
+ * @date 2024-01-09 11:33:37
28988
+ * @readonly
28989
+ * @type {string}
28990
+ */
28991
+ get name() {
28992
+ return this.fieldColumn.name;
28993
+ }
28994
+ /**
28995
+ *树表格增强部件
28996
+ * @author lxm
28997
+ * @date 2024-01-10 11:49:23
28998
+ * @readonly
28999
+ * @type {TreeGridExController}
29000
+ */
29001
+ get treeGrid() {
29002
+ return this.fieldColumn.treeGrid;
29003
+ }
29004
+ /**
29005
+ * 是否是链接列
29006
+ *
29007
+ * @author lxm
29008
+ * @date 2022-09-28 17:09:15
29009
+ * @returns {*}
29010
+ */
29011
+ get isLinkColumn() {
29012
+ return !!this.nodeColumn.enableLinkView && !!this.nodeColumn.linkAppViewId;
29013
+ }
29014
+ /**
29015
+ * 是否有触发界面行为
29016
+ *
29017
+ * @author lxm
29018
+ * @date 2022-12-08 14:12:37
29019
+ * @readonly
29020
+ * @type {boolean}
29021
+ */
29022
+ get hasClickAction() {
29023
+ return !!this.nodeColumn.deuiactionId;
29024
+ }
29025
+ /**
29026
+ * 单元格超出呈现模式
29027
+ * @author lxm
29028
+ * @date 2024-01-09 05:36:36
29029
+ * @readonly
29030
+ * @type {('wrap' | 'ellipsis')}
29031
+ */
29032
+ get overflowMode() {
29033
+ return this.fieldColumn.treeGrid.overflowMode;
29034
+ }
29035
+ /**
29036
+ * 初始化
29037
+ * @author lxm
29038
+ * @date 2024-01-09 10:02:16
29039
+ * @return {*} {Promise<void>}
29040
+ */
29041
+ async init() {
29042
+ var _a;
29043
+ if (((_a = this.nodeEditItem) == null ? void 0 : _a.editor) && this.nodeEditItem.editor.editorType !== "HIDDEN") {
29044
+ this.editorProvider = await getEditorProvider(this.nodeEditItem.editor);
29045
+ if (this.editorProvider) {
29046
+ this.editor = await this.editorProvider.createController(
29047
+ this.nodeEditItem.editor,
29048
+ this
29049
+ );
29050
+ }
29051
+ }
29052
+ if (!this.nodeEditItem) {
29053
+ await this.loadCodeList();
29054
+ }
29055
+ }
29056
+ /**
29057
+ * 初始化属性列界面行为组按钮状态
29058
+ *
29059
+ * @author lxm
29060
+ * @date 2022-09-07 21:09:43
29061
+ * @param {GridRowState} row
29062
+ */
29063
+ initActionStates(row) {
29064
+ const { deuiactionGroup } = this.nodeColumn;
29065
+ if (deuiactionGroup && deuiactionGroup.uiactionGroupDetails) {
29066
+ const containerState = new ButtonContainerState();
29067
+ deuiactionGroup.uiactionGroupDetails.forEach((detail) => {
29068
+ const actionid = detail.uiactionId;
29069
+ if (actionid) {
29070
+ const buttonState = new UIActionButtonState(
29071
+ detail.id,
29072
+ this.context.srfappid,
29073
+ actionid
29074
+ );
29075
+ containerState.addState(detail.id, buttonState);
29076
+ }
29077
+ });
29078
+ row.columnActionsStates[this.name] = containerState;
29079
+ }
29080
+ }
29081
+ /**
29082
+ * 文本点击事件
29083
+ *
29084
+ * @author zk
29085
+ * @date 2023-07-13 12:07:53
29086
+ * @param {MouseEvent} event
29087
+ */
29088
+ onTextClick(row, event) {
29089
+ if (this.isLinkColumn) {
29090
+ event.stopPropagation();
29091
+ this.openLinkView(row, event);
29092
+ } else if (this.hasClickAction) {
29093
+ event.stopPropagation();
29094
+ this.triggerAction(row, event);
29095
+ }
29096
+ }
29097
+ /**
29098
+ * 打开链接视图
29099
+ *
29100
+ * @author lxm
29101
+ * @date 2024-01-09 02:45:34
29102
+ * @param {ITreeGridExRowState} row
29103
+ * @param {MouseEvent} event
29104
+ * @return {*} {Promise<void>}
29105
+ */
29106
+ async openLinkView(row, event) {
29107
+ const curValue = row.data[this.fieldColumn.name];
29108
+ if (!curValue) {
29109
+ return;
29110
+ }
29111
+ const valueItem = this.nodeColumn.linkValueItem || "srfkey";
29112
+ const value = row.data[valueItem];
29113
+ if (value == null) {
29114
+ throw new RuntimeError61("\u672A\u5728\u884C\u6570\u636E\u4E2D\u53D6\u5230 ".concat(valueItem, " \u7684\u503C"));
29115
+ }
29116
+ const { linkAppViewId } = this.nodeColumn;
29117
+ if (!linkAppViewId) {
29118
+ return;
29119
+ }
29120
+ const wfContext = getWFContext(row.data);
29121
+ const tempContext = Object.assign(this.context.clone(), {
29122
+ srfkey: value,
29123
+ ...wfContext
29124
+ });
29125
+ const tempParams = clone28(this.params);
29126
+ const { userParam } = this.nodeColumn;
29127
+ if (userParam) {
29128
+ const { navigateContexts, navigateParams } = parseUserParams(userParam);
29129
+ let selfContext = {};
29130
+ if (navigateContexts && row.data) {
29131
+ selfContext = convertNavData(
29132
+ navigateContexts,
29133
+ row.data,
29134
+ tempParams,
29135
+ tempContext
29136
+ );
29137
+ }
29138
+ Object.assign(tempContext, selfContext);
29139
+ let selfParams = {};
29140
+ if (navigateParams && row.data) {
29141
+ selfParams = convertNavData(
29142
+ navigateParams,
29143
+ row.data,
29144
+ tempParams,
29145
+ tempContext
29146
+ );
29147
+ }
29148
+ Object.assign(tempParams, selfParams);
29149
+ }
29150
+ const res = await ibiz.commands.execute(
29151
+ OpenAppViewCommand.TAG,
29152
+ linkAppViewId,
29153
+ tempContext,
29154
+ tempParams,
29155
+ { event }
29156
+ );
29157
+ if (res == null ? void 0 : res.ok) {
29158
+ this.fieldColumn.treeGrid.refresh();
29159
+ }
29160
+ }
29161
+ /**
29162
+ * 触发表格列附加界面行为
29163
+ *
29164
+ * @author lxm
29165
+ * @date 2022-12-08 15:12:35
29166
+ * @param {GridRowState} row 行数据
29167
+ * @param {MouseEvent} event 鼠标事件
29168
+ * @returns {*} {Promise<void>}
29169
+ */
29170
+ async triggerAction(row, event) {
29171
+ const actionId = this.nodeColumn.deuiactionId;
29172
+ await UIActionUtil.execAndResolved(
29173
+ actionId,
29174
+ {
29175
+ context: this.context,
29176
+ params: this.params,
29177
+ data: [row.data],
29178
+ view: this.treeGrid.view,
29179
+ event
29180
+ },
29181
+ this.nodeColumn.appId
29182
+ );
29183
+ }
29184
+ /**
29185
+ * 触发界面行为组点击事件
29186
+ *
29187
+ * @author lxm
29188
+ * @date 2024-01-11 02:26:12
29189
+ * @param {IUIActionGroupDetail} detail
29190
+ * @param {ITreeGridExRowState} row
29191
+ * @param {MouseEvent} event
29192
+ * @return {*} {Promise<void>}
29193
+ */
29194
+ async onActionClick(detail, row, event) {
29195
+ const actionId = detail.uiactionId;
29196
+ await UIActionUtil.execAndResolved(
29197
+ actionId,
29198
+ {
29199
+ context: this.context,
29200
+ params: this.params,
29201
+ data: [row.data],
29202
+ view: this.treeGrid.view,
29203
+ event
29204
+ },
29205
+ detail.appId
29206
+ );
29207
+ }
29208
+ /**
29209
+ * 值格式化
29210
+ * @author lxm
29211
+ * @date 2024-01-09 03:37:34
29212
+ * @param {unknown} [value='']
29213
+ * @return {*} {string}
29214
+ */
29215
+ formatValue(value = "") {
29216
+ if (this.nodeColumn.valueType !== "SIMPLE") {
29217
+ return ValueExUtil.toText(this.nodeColumn, value);
29218
+ }
29219
+ const strVal = "".concat(value);
29220
+ if (!this.valueFormat) {
29221
+ return strVal;
29222
+ }
29223
+ const isDate = DataTypes5.isDate(this.dataType);
29224
+ if (isDate || this.fieldColumn.name === "createdate") {
29225
+ const formatVal = dayjs6(strVal).format(this.valueFormat);
29226
+ if (formatVal !== "Invalid Date") {
29227
+ return formatVal;
29228
+ }
29229
+ return strVal;
29230
+ }
29231
+ return ibiz.util.text.format(strVal, this.valueFormat);
29232
+ }
29233
+ /**
29234
+ * 加载代码表数据
29235
+ *
29236
+ * @author lxm
29237
+ * @date 2022-09-28 15:09:38
29238
+ * @returns {*}
29239
+ */
29240
+ async loadCodeList() {
29241
+ const appCodeListId = this.nodeColumn.appCodeListId;
29242
+ if (!appCodeListId) {
29243
+ return;
29244
+ }
29245
+ const app = ibiz.hub.getApp(this.context.srfappid);
29246
+ if (!this.codeList) {
29247
+ this.codeList = app.codeList.getCodeList(appCodeListId);
29248
+ }
29249
+ const dataItems = await app.codeList.get(
29250
+ appCodeListId,
29251
+ this.context,
29252
+ this.params
29253
+ );
29254
+ this.codeListItems = dataItems;
29255
+ return dataItems;
29256
+ }
29257
+ gridStateNotify(row, state) {
29258
+ if (state === "LOAD" /* LOAD */ || state === "SAVE" /* SAVE */) {
29259
+ const uaColState = row.columnActionsStates[this.name];
29260
+ if (uaColState && row.data._nodeType === "DE") {
29261
+ uaColState.update(row.data._deData);
29262
+ }
29263
+ }
29264
+ }
29265
+ /**
29266
+ * 设置行属性的值
29267
+ *
29268
+ * @author lxm
29269
+ * @date 2022-08-24 10:08:40
29270
+ * @param {GridRowState} row 行状态控制器
29271
+ * @param {unknown} value 要设置的值
29272
+ * @param {string} name 要设置的表单数据的属性名称
29273
+ */
29274
+ async setRowValue(row, value, name) {
29275
+ name = name || this.name;
29276
+ await this.treeGrid.setRowValue(row, name, value);
29277
+ }
28588
29278
  };
28589
29279
 
28590
29280
  // src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.ts
28591
29281
  var TreeGridExFieldColumnController = class extends TreeGridExColumnController {
29282
+ constructor() {
29283
+ super(...arguments);
29284
+ /**
29285
+ * 该树表格列对应不同节点模型的节点列控制器
29286
+ * @author lxm
29287
+ * @date 2024-01-08 05:40:56
29288
+ * @type {Map<string, IDETreeNodeColumn>}
29289
+ */
29290
+ this.nodeColumnControllerMap = /* @__PURE__ */ new Map();
29291
+ }
29292
+ /**
29293
+ * 树表格列标识(用于取数和各种比较判断)
29294
+ * @author lxm
29295
+ * @date 2024-01-09 11:33:37
29296
+ * @readonly
29297
+ * @type {string}
29298
+ */
29299
+ get name() {
29300
+ return this.model.id;
29301
+ }
29302
+ async init() {
29303
+ await this.onInit();
29304
+ await this.initNodeColumnController();
29305
+ }
29306
+ /**
29307
+ * 解析模型并初始化相关属性
29308
+ * @author lxm
29309
+ * @date 2024-01-08 05:59:12
29310
+ * @return {*} {Promise<void>}
29311
+ */
29312
+ async initNodeColumnController() {
29313
+ var _a;
29314
+ (_a = this.treeGrid.model.detreeNodes) == null ? void 0 : _a.forEach((node) => {
29315
+ var _a2;
29316
+ if (node.treeNodeType !== "DE") {
29317
+ return;
29318
+ }
29319
+ const nodeColumn = (_a2 = node.detreeNodeColumns) == null ? void 0 : _a2.find(
29320
+ (column) => {
29321
+ return column.detreeColumnId === this.model.id;
29322
+ }
29323
+ );
29324
+ if (nodeColumn) {
29325
+ this.nodeColumnControllerMap.set(
29326
+ node.id,
29327
+ new TreeGridExNodeColumnController(this, node)
29328
+ );
29329
+ }
29330
+ });
29331
+ await Promise.all(
29332
+ Array.from(this.nodeColumnControllerMap.values()).map(
29333
+ (controller) => controller.init()
29334
+ )
29335
+ );
29336
+ }
29337
+ /**
29338
+ * 初始化属性列界面行为组按钮状态
29339
+ * @author lxm
29340
+ * @date 2024-01-11 01:48:38
29341
+ * @param {ITreeGridExRowState} row
29342
+ */
29343
+ initActionStates(row) {
29344
+ const nodeColumn = this.nodeColumnControllerMap.get(row.data._nodeId);
29345
+ if (nodeColumn) {
29346
+ nodeColumn.initActionStates(row);
29347
+ }
29348
+ }
29349
+ gridStateNotify(row, state) {
29350
+ super.gridStateNotify(row, state);
29351
+ const nodeColumn = this.nodeColumnControllerMap.get(row.data._nodeId);
29352
+ if (nodeColumn) {
29353
+ nodeColumn.gridStateNotify(row, state);
29354
+ }
29355
+ }
28592
29356
  };
28593
29357
 
28594
29358
  // src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.ts
28595
- import { RuntimeModelError as RuntimeModelError65 } from "@ibiz-template/core";
29359
+ import { RuntimeModelError as RuntimeModelError67 } from "@ibiz-template/core";
28596
29360
  var TreeGridExUAColumnController = class extends TreeGridExColumnController {
28597
29361
  /**
28598
29362
  * 给rowController初始化操作列的状态
@@ -28605,7 +29369,8 @@ var TreeGridExUAColumnController = class extends TreeGridExColumnController {
28605
29369
  var _a;
28606
29370
  const { deuiactionGroup } = this.model;
28607
29371
  if (!deuiactionGroup) {
28608
- throw new RuntimeModelError65(this.model, "\u64CD\u4F5C\u5217\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A\u7EC4");
29372
+ return;
29373
+ throw new RuntimeModelError67(this.model, "\u64CD\u4F5C\u5217\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A\u7EC4");
28609
29374
  }
28610
29375
  if (!((_a = deuiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {
28611
29376
  ibiz.log.debug("\u64CD\u4F5C\u5217\u754C\u9762\u884C\u4E3A\u7EC4\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A");
@@ -28623,7 +29388,7 @@ var TreeGridExUAColumnController = class extends TreeGridExColumnController {
28623
29388
  containerState.addState(detail.id, buttonState);
28624
29389
  }
28625
29390
  });
28626
- row.uaColStates[this.model.codeName] = containerState;
29391
+ row.columnActionsStates[this.model.id] = containerState;
28627
29392
  }
28628
29393
  /**
28629
29394
  * 触发操作列点击事件
@@ -28647,10 +29412,19 @@ var TreeGridExUAColumnController = class extends TreeGridExColumnController {
28647
29412
  detail.appId
28648
29413
  );
28649
29414
  }
29415
+ gridStateNotify(row, state) {
29416
+ super.gridStateNotify(row, state);
29417
+ if (state === "LOAD" /* LOAD */ || state === "SAVE" /* SAVE */) {
29418
+ const uaColState = row.columnActionsStates[this.model.id];
29419
+ if (uaColState && row.data._nodeType === "DE") {
29420
+ uaColState.update(row.data._deData);
29421
+ }
29422
+ }
29423
+ }
28650
29424
  };
28651
29425
 
28652
29426
  // src/controller/control/tree-grid/tree-grid.controller.ts
28653
- import { RuntimeModelError as RuntimeModelError66 } from "@ibiz-template/core";
29427
+ import { RuntimeModelError as RuntimeModelError68 } from "@ibiz-template/core";
28654
29428
  var TreeGridController = class extends GridController {
28655
29429
  constructor() {
28656
29430
  super(...arguments);
@@ -28695,10 +29469,10 @@ var TreeGridController = class extends GridController {
28695
29469
  return item.treeColumnMode === 2 || item.treeColumnMode === 3;
28696
29470
  });
28697
29471
  if (!treeGridParent) {
28698
- throw new RuntimeModelError66(this.model, "\u6811\u8868\u683C\u65E0\u503C\u5217\u6A21\u5F0F");
29472
+ throw new RuntimeModelError68(this.model, "\u6811\u8868\u683C\u65E0\u503C\u5217\u6A21\u5F0F");
28699
29473
  }
28700
29474
  if (!treeGridValue) {
28701
- throw new RuntimeModelError66(this.model, "\u6811\u8868\u683C\u65E0\u7236\u503C\u5217\u6A21\u5F0F");
29475
+ throw new RuntimeModelError68(this.model, "\u6811\u8868\u683C\u65E0\u7236\u503C\u5217\u6A21\u5F0F");
28702
29476
  }
28703
29477
  this.treeGridValueField = treeGridValue.appDEFieldId.toLowerCase();
28704
29478
  this.treeGridParentField = treeGridParent.appDEFieldId.toLowerCase();
@@ -28718,7 +29492,7 @@ var TreeGridService = class extends GridService {
28718
29492
  };
28719
29493
 
28720
29494
  // src/controller/control/medit-view-panel/medit-view-panel.controller.ts
28721
- import { RuntimeError as RuntimeError60 } from "@ibiz-template/core";
29495
+ import { RuntimeError as RuntimeError62 } from "@ibiz-template/core";
28722
29496
  import { createUUID as createUUID13 } from "qx-util";
28723
29497
 
28724
29498
  // src/controller/control/medit-view-panel/medit-view-panel.service.ts
@@ -28934,7 +29708,7 @@ var MEditViewPanelController = class extends MDControlController {
28934
29708
  (item) => item.id === id
28935
29709
  );
28936
29710
  if (panelUiItemIndex < 0) {
28937
- throw new RuntimeError60("\u7F16\u8F91\u89C6\u56FE\u9762\u677F\u90E8\u4EF6UI\u6570\u636E\u4E0D\u5B58\u5728");
29711
+ throw new RuntimeError62("\u7F16\u8F91\u89C6\u56FE\u9762\u677F\u90E8\u4EF6UI\u6570\u636E\u4E0D\u5B58\u5728");
28938
29712
  }
28939
29713
  const tempUiItem = this.state.panelUiItems[panelUiItemIndex];
28940
29714
  if (tempUiItem.id.startsWith("mockId:")) {
@@ -29850,6 +30624,15 @@ var AppHub = class {
29850
30624
  * @type {Map<string, string>} Map<视图 id, 视图所属应用>
29851
30625
  */
29852
30626
  this.view2appMap = /* @__PURE__ */ new Map();
30627
+ /**
30628
+ * 当前注册的应用视图优先级
30629
+ *
30630
+ * @author chitanda
30631
+ * @date 2024-01-15 15:01:57
30632
+ * @protected
30633
+ * @type {Map<string, number>}
30634
+ */
30635
+ this.view2appPriorityMap = /* @__PURE__ */ new Map();
29853
30636
  /**
29854
30637
  * 实例化的应用视图模型
29855
30638
  *
@@ -29941,13 +30724,23 @@ var AppHub = class {
29941
30724
  * 设置应用视图所属应用
29942
30725
  *
29943
30726
  * @author chitanda
29944
- * @date 2023-04-17 23:04:37
30727
+ * @date 2024-01-15 15:01:41
29945
30728
  * @param {string} tag 视图 codeName 或者视图 id
29946
30729
  * @param {string} [appId=ibiz.env.appId]
30730
+ * @param {number} [priority=-1] 视图的优先级,值越小优先级越高。1为最高优先级
29947
30731
  */
29948
- setAppView(tag, appId2 = ibiz.env.appId) {
30732
+ setAppView(tag, appId2 = ibiz.env.appId, priority = -1) {
29949
30733
  const id = this.calcAppViewId(tag);
30734
+ if (this.view2appMap.has(id)) {
30735
+ const _priority = this.view2appPriorityMap.get(id);
30736
+ if (_priority && _priority < priority) {
30737
+ return;
30738
+ }
30739
+ }
29950
30740
  this.view2appMap.set(id, appId2);
30741
+ if (priority !== -1) {
30742
+ this.view2appPriorityMap.set(id, priority);
30743
+ }
29951
30744
  }
29952
30745
  /**
29953
30746
  * 判断应用视图是否存在
@@ -29997,7 +30790,7 @@ var AppHub = class {
29997
30790
  this.registerAppView(appView);
29998
30791
  return appView;
29999
30792
  }
30000
- throw new RuntimeError61("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
30793
+ throw new RuntimeError63("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
30001
30794
  }
30002
30795
  /**
30003
30796
  * 根据视图模型路径,加参数重新计算视图模型
@@ -30018,7 +30811,7 @@ var AppHub = class {
30018
30811
  );
30019
30812
  return model;
30020
30813
  }
30021
- throw new RuntimeError61("\u89C6\u56FE[".concat(modelPath, "]\u4E0D\u5B58\u5728"));
30814
+ throw new RuntimeError63("\u89C6\u56FE[".concat(modelPath, "]\u4E0D\u5B58\u5728"));
30022
30815
  }
30023
30816
  /**
30024
30817
  * 根据应用实体代码名称查找应用视图
@@ -30049,7 +30842,7 @@ var AppHub = class {
30049
30842
  this.registerAppDataEntity(entity, appId2);
30050
30843
  return entity;
30051
30844
  }
30052
- throw new RuntimeError61("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
30845
+ throw new RuntimeError63("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
30053
30846
  }
30054
30847
  /**
30055
30848
  * 新建 hub 应用
@@ -30064,7 +30857,7 @@ var AppHub = class {
30064
30857
  return this.appMap.get(id);
30065
30858
  }
30066
30859
  if (!this.modelLoaderProvider) {
30067
- throw new RuntimeError61("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
30860
+ throw new RuntimeError63("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
30068
30861
  }
30069
30862
  const appModel = await this.modelLoaderProvider.getApp(id);
30070
30863
  const app = new Application(appModel);
@@ -30195,7 +30988,7 @@ var EngineFactory = class {
30195
30988
  };
30196
30989
 
30197
30990
  // src/engine/view-base.engine.ts
30198
- import { RuntimeError as RuntimeError62 } from "@ibiz-template/core";
30991
+ import { RuntimeError as RuntimeError64 } from "@ibiz-template/core";
30199
30992
  var ViewEngineBase = class {
30200
30993
  /**
30201
30994
  * 构造函数在视图控制器的构造函数逻辑内部执行
@@ -30383,7 +31176,7 @@ var ViewEngineBase = class {
30383
31176
  const { appDataEntityId } = this.view.model;
30384
31177
  const { evt, context, params } = this.view;
30385
31178
  if (!appDataEntityId) {
30386
- throw new RuntimeError62("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
31179
+ throw new RuntimeError64("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
30387
31180
  }
30388
31181
  const app = ibiz.hub.getApp(context.srfappid);
30389
31182
  const res = await app.deService.exec(
@@ -30404,8 +31197,8 @@ var ViewEngineBase = class {
30404
31197
  };
30405
31198
 
30406
31199
  // src/engine/md-view.engine.ts
30407
- import { RuntimeModelError as RuntimeModelError67 } from "@ibiz-template/core";
30408
- import { clone as clone26 } from "ramda";
31200
+ import { RuntimeModelError as RuntimeModelError69 } from "@ibiz-template/core";
31201
+ import { clone as clone29 } from "ramda";
30409
31202
  var MDViewEngine = class extends ViewEngineBase {
30410
31203
  /**
30411
31204
  * 多数据部件名称
@@ -30588,7 +31381,7 @@ var MDViewEngine = class extends ViewEngineBase {
30588
31381
  view: this.view
30589
31382
  }));
30590
31383
  if (result === -1) {
30591
- throw new RuntimeModelError67(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
31384
+ throw new RuntimeModelError69(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
30592
31385
  } else {
30593
31386
  return {
30594
31387
  cancel: !result.ok
@@ -30611,9 +31404,9 @@ var MDViewEngine = class extends ViewEngineBase {
30611
31404
  (item) => item.id === "newdata"
30612
31405
  );
30613
31406
  if (!openAppViewLogic) {
30614
- throw new RuntimeModelError67(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
31407
+ throw new RuntimeModelError69(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
30615
31408
  }
30616
- const params = clone26(this.view.params);
31409
+ const params = clone29(this.view.params);
30617
31410
  if (copyMode) {
30618
31411
  params.srfcopymode = copyMode;
30619
31412
  }
@@ -30625,7 +31418,7 @@ var MDViewEngine = class extends ViewEngineBase {
30625
31418
  view: this.view
30626
31419
  }));
30627
31420
  if (result === -1) {
30628
- throw new RuntimeModelError67(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
31421
+ throw new RuntimeModelError69(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
30629
31422
  } else {
30630
31423
  return {
30631
31424
  cancel: !result.ok
@@ -30824,7 +31617,7 @@ var GlobalUtil = class {
30824
31617
  };
30825
31618
 
30826
31619
  // src/logic-scheduler/executor/logic-executor.ts
30827
- import { RuntimeError as RuntimeError63 } from "@ibiz-template/core";
31620
+ import { RuntimeError as RuntimeError65 } from "@ibiz-template/core";
30828
31621
  var LogicExecutor = class {
30829
31622
  /**
30830
31623
  * @author lxm
@@ -30845,7 +31638,7 @@ var LogicExecutor = class {
30845
31638
  */
30846
31639
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
30847
31640
  execute(_executeParams) {
30848
- throw new RuntimeError63("Method not implemented.");
31641
+ throw new RuntimeError65("Method not implemented.");
30849
31642
  }
30850
31643
  /**
30851
31644
  * 销毁方法
@@ -30936,13 +31729,13 @@ var ScriptExecutor = class extends LogicExecutor {
30936
31729
  };
30937
31730
 
30938
31731
  // src/logic-scheduler/executor/app-de-ui-logic-executor.ts
30939
- import { RuntimeModelError as RuntimeModelError68 } from "@ibiz-template/core";
31732
+ import { RuntimeModelError as RuntimeModelError70 } from "@ibiz-template/core";
30940
31733
  var AppDEUILogicExecutor = class extends LogicExecutor {
30941
31734
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
30942
31735
  execute(executeParams) {
30943
31736
  const { appDEUILogicId, appDataEntityId } = this.logic;
30944
31737
  if (!appDEUILogicId) {
30945
- throw new RuntimeModelError68(this.logic, "\u6CA1\u6709\u914D\u7F6E\u5B9E\u4F53\u754C\u9762\u903B\u8F91");
31738
+ throw new RuntimeModelError70(this.logic, "\u6CA1\u6709\u914D\u7F6E\u5B9E\u4F53\u754C\u9762\u903B\u8F91");
30946
31739
  }
30947
31740
  execUILogic(appDEUILogicId, appDataEntityId, executeParams);
30948
31741
  }
@@ -31282,7 +32075,7 @@ var LogicSchedulerCenter = class {
31282
32075
  };
31283
32076
 
31284
32077
  // src/logic-scheduler/trigger/logic-trigger.ts
31285
- import { RuntimeError as RuntimeError64 } from "@ibiz-template/core";
32078
+ import { RuntimeError as RuntimeError66 } from "@ibiz-template/core";
31286
32079
  var LogicTrigger = class {
31287
32080
  /**
31288
32081
  * @author lxm
@@ -31342,7 +32135,7 @@ var LogicTrigger = class {
31342
32135
  if (this.executor) {
31343
32136
  return this.executor.execute(executeParams);
31344
32137
  }
31345
- throw new RuntimeError64("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
32138
+ throw new RuntimeError66("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
31346
32139
  }
31347
32140
  /**
31348
32141
  * 销毁方法
@@ -31359,12 +32152,12 @@ var CustomTrigger = class extends LogicTrigger {
31359
32152
  };
31360
32153
 
31361
32154
  // src/logic-scheduler/trigger/item-dyna-logic-trigger.ts
31362
- import { RuntimeError as RuntimeError65 } from "@ibiz-template/core";
32155
+ import { RuntimeError as RuntimeError67 } from "@ibiz-template/core";
31363
32156
  var ItemDynaLogicTrigger = class extends LogicTrigger {
31364
32157
  bindExecutor(executor) {
31365
32158
  super.bindExecutor(executor);
31366
32159
  if (this.executor.type !== "SCRIPT") {
31367
- throw new RuntimeError65(
32160
+ throw new RuntimeError67(
31368
32161
  "\u9884\u5B9A\u4E49\u903B\u8F91\u7C7B\u578B".concat(this.type, "\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u53EA\u80FD\u662F\u811A\u672C")
31369
32162
  );
31370
32163
  }
@@ -31400,7 +32193,7 @@ var ItemDynaLogicTrigger = class extends LogicTrigger {
31400
32193
  };
31401
32194
 
31402
32195
  // src/logic-scheduler/trigger/timer-trigger.ts
31403
- import { RuntimeError as RuntimeError66, RuntimeModelError as RuntimeModelError69 } from "@ibiz-template/core";
32196
+ import { RuntimeError as RuntimeError68, RuntimeModelError as RuntimeModelError71 } from "@ibiz-template/core";
31404
32197
  var TimerTrigger = class extends LogicTrigger {
31405
32198
  constructor() {
31406
32199
  super(...arguments);
@@ -31408,11 +32201,11 @@ var TimerTrigger = class extends LogicTrigger {
31408
32201
  }
31409
32202
  start() {
31410
32203
  if (!this.logic.timer) {
31411
- throw new RuntimeModelError69(this.logic, "\u5B9A\u65F6\u5668\u7F3A\u5C11\u5B9A\u65F6\u95F4\u9694");
32204
+ throw new RuntimeModelError71(this.logic, "\u5B9A\u65F6\u5668\u7F3A\u5C11\u5B9A\u65F6\u95F4\u9694");
31412
32205
  }
31413
32206
  this.timer = setInterval(() => {
31414
32207
  if (!this.scheduler.defaultParamsCb) {
31415
- throw new RuntimeError66("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
32208
+ throw new RuntimeError68("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
31416
32209
  }
31417
32210
  const params = this.scheduler.defaultParamsCb();
31418
32211
  this.executor.execute(params);
@@ -31429,8 +32222,8 @@ var TimerTrigger = class extends LogicTrigger {
31429
32222
  // src/logic-scheduler/executor/app-ui-logic-executor.ts
31430
32223
  import {
31431
32224
  ModelError as ModelError34,
31432
- RuntimeError as RuntimeError67,
31433
- RuntimeModelError as RuntimeModelError70
32225
+ RuntimeError as RuntimeError69,
32226
+ RuntimeModelError as RuntimeModelError72
31434
32227
  } from "@ibiz-template/core";
31435
32228
  import { notNilEmpty as notNilEmpty9 } from "qx-util";
31436
32229
  var AppUILogicExecutor = class extends LogicExecutor {
@@ -31467,7 +32260,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31467
32260
  const { context, params, ...rest } = parameters;
31468
32261
  const { data } = parameters;
31469
32262
  if (!(data == null ? void 0 : data[0])) {
31470
- throw new RuntimeError67("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
32263
+ throw new RuntimeError69("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
31471
32264
  }
31472
32265
  const openViewRefs = appUILogic.openDataAppViews;
31473
32266
  let openViewRef;
@@ -31476,7 +32269,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31476
32269
  } else {
31477
32270
  openViewRef = appUILogic.openDataAppView;
31478
32271
  if (!openViewRef) {
31479
- throw new RuntimeModelError70(
32272
+ throw new RuntimeModelError72(
31480
32273
  appUILogic,
31481
32274
  "opendata\u89C6\u56FE\u903B\u8F91\u6CA1\u6709\u914D\u7F6E\u9ED8\u8BA4\u6253\u5F00\u89C6\u56FE"
31482
32275
  );
@@ -31484,7 +32277,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31484
32277
  }
31485
32278
  const openView = openViewRef.refAppViewId;
31486
32279
  if (!openView) {
31487
- throw new RuntimeModelError70(
32280
+ throw new RuntimeModelError72(
31488
32281
  appUILogic,
31489
32282
  "opendata\u89C6\u56FE\u903B\u8F91\u7684\u9ED8\u8BA4\u6253\u5F00\u89C6\u56FE\u6CA1\u6709\u5B9E\u9645\u5F15\u7528\u89C6\u56FE"
31490
32283
  );
@@ -31514,7 +32307,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31514
32307
  );
31515
32308
  const typeFileName = appDataEntity.formTypeAppDEFieldId || appDataEntity.dataTypeAppDEFieldId;
31516
32309
  if (!typeFileName) {
31517
- throw new RuntimeModelError70(
32310
+ throw new RuntimeModelError72(
31518
32311
  appUILogic,
31519
32312
  "".concat(appDataEntity.codeName, "[\u591A\u8868\u5355\u5B9E\u4F53] or [\u7D22\u5F15\u5B9E\u4F53]\u7F3A\u5C11\u7C7B\u578B\u5C5E\u6027\u914D\u7F6E")
31520
32313
  );
@@ -31522,12 +32315,12 @@ var AppUILogicExecutor = class extends LogicExecutor {
31522
32315
  const { data } = parameters;
31523
32316
  const formTypeValue = data[0][typeFileName];
31524
32317
  if (!formTypeValue) {
31525
- throw new RuntimeModelError70(appUILogic, "\u6570\u636E\u6E90\u65E0\u8868\u5355\u7C7B\u578B\u5E94\u7528\u5B9E\u4F53\u5C5E\u6027\u503C");
32318
+ throw new RuntimeModelError72(appUILogic, "\u6570\u636E\u6E90\u65E0\u8868\u5355\u7C7B\u578B\u5E94\u7528\u5B9E\u4F53\u5C5E\u6027\u503C");
31526
32319
  }
31527
32320
  const openViewRefs = appUILogic.openDataAppViews;
31528
32321
  const findView = openViewRefs == null ? void 0 : openViewRefs.find((item) => item.refMode === formTypeValue);
31529
32322
  if (!findView) {
31530
- throw new RuntimeError67(
32323
+ throw new RuntimeError69(
31531
32324
  "\u6CA1\u6709\u627E\u5230\u4E0E\u8868\u5355\u7C7B\u578B".concat(formTypeValue, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
31532
32325
  );
31533
32326
  }
@@ -31564,7 +32357,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31564
32357
  return viewRef.refMode.toLowerCase() !== parentDeName;
31565
32358
  });
31566
32359
  if (!newViewRef) {
31567
- throw new RuntimeModelError70(
32360
+ throw new RuntimeModelError72(
31568
32361
  appUILogic,
31569
32362
  "\u6CA1\u6709\u627E\u5230\u6279\u6DFB\u52A0\u9700\u8981\u6253\u5F00\u7684\u9009\u62E9\u89C6\u56FE"
31570
32363
  );
@@ -31574,7 +32367,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31574
32367
  } else {
31575
32368
  newViewRef = newDataAppView;
31576
32369
  if (!newViewRef || !newViewRef.refAppViewId) {
31577
- throw new RuntimeModelError70(
32370
+ throw new RuntimeModelError72(
31578
32371
  appUILogic,
31579
32372
  "newdata\u89C6\u56FE\u903B\u8F91\u6CA1\u6709\u914D\u7F6E\u9ED8\u8BA4\u65B0\u5EFA\u6570\u636E\u89C6\u56FE"
31580
32373
  );
@@ -31638,7 +32431,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31638
32431
  const { wizardAppView, newDataAppViews } = appUILogic;
31639
32432
  const { context, params, ...rest } = parameters;
31640
32433
  if (!wizardAppView || !wizardAppView.refAppViewId) {
31641
- throw new RuntimeModelError70(appUILogic, "\u7F3A\u5C11\u9ED8\u8BA4\u7D22\u5F15\u5B9E\u4F53\u9009\u62E9\u89C6\u56FE");
32434
+ throw new RuntimeModelError72(appUILogic, "\u7F3A\u5C11\u9ED8\u8BA4\u7D22\u5F15\u5B9E\u4F53\u9009\u62E9\u89C6\u56FE");
31642
32435
  }
31643
32436
  const result = await ibiz.commands.execute(
31644
32437
  OpenAppViewCommand.TAG,
@@ -31652,7 +32445,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31652
32445
  }
31653
32446
  const selectData = (_a = result.data) == null ? void 0 : _a[0];
31654
32447
  if (!selectData) {
31655
- throw new RuntimeError67("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
32448
+ throw new RuntimeError69("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
31656
32449
  }
31657
32450
  const indexType = selectData.srfkey;
31658
32451
  const findView = newDataAppViews == null ? void 0 : newDataAppViews.find(
@@ -31662,7 +32455,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31662
32455
  }
31663
32456
  );
31664
32457
  if (!findView) {
31665
- throw new RuntimeError67(
32458
+ throw new RuntimeError69(
31666
32459
  "\u6CA1\u6709\u627E\u5230\u4E0E\u7D22\u5F15\u7C7B\u578B".concat(indexType, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
31667
32460
  );
31668
32461
  }
@@ -31689,7 +32482,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31689
32482
  const minorDERs = selfDe.minorAppDERSs;
31690
32483
  const pickParentDeName = newViewRef.refMode.toLowerCase();
31691
32484
  if (!minorDERs) {
31692
- throw new RuntimeModelError70(selfDe, "\u5B9E\u4F53\u6CA1\u6709\u4ECE\u5173\u7CFB\u96C6\u5408\uFF01");
32485
+ throw new RuntimeModelError72(selfDe, "\u5B9E\u4F53\u6CA1\u6709\u4ECE\u5173\u7CFB\u96C6\u5408\uFF01");
31693
32486
  }
31694
32487
  let pickParentFieldName = "";
31695
32488
  minorDERs == null ? void 0 : minorDERs.forEach((item) => {
@@ -31699,7 +32492,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
31699
32492
  }
31700
32493
  });
31701
32494
  if (pickParentFieldName === void 0) {
31702
- throw new RuntimeError67(
32495
+ throw new RuntimeError69(
31703
32496
  "\u6CA1\u6709\u627E\u5230".concat(pickParentDeName, "\u5728\u5F53\u524D\u5B9E\u4F53\u7684\u5916\u952E\u5C5E\u6027")
31704
32497
  );
31705
32498
  }
@@ -31786,12 +32579,12 @@ var ControlEventTrigger = class extends LogicTrigger {
31786
32579
  };
31787
32580
 
31788
32581
  // src/logic-scheduler/executor/app-ui-action-executor.ts
31789
- import { RuntimeModelError as RuntimeModelError71 } from "@ibiz-template/core";
32582
+ import { RuntimeModelError as RuntimeModelError73 } from "@ibiz-template/core";
31790
32583
  var AppDEUIActionExecutor = class extends LogicExecutor {
31791
32584
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
31792
32585
  execute(executeParams) {
31793
32586
  if (!this.logic.appDEUIActionId) {
31794
- throw new RuntimeModelError71(
32587
+ throw new RuntimeModelError73(
31795
32588
  this.logic,
31796
32589
  "\u903B\u8F91\u4E2D\u7F3A\u5C11\u89E6\u53D1\u5E94\u7528\u5B9E\u4F53\u754C\u9762\u884C\u4E3Aid"
31797
32590
  );
@@ -32149,6 +32942,8 @@ export {
32149
32942
  TreeGridExColumnController,
32150
32943
  TreeGridExController,
32151
32944
  TreeGridExFieldColumnController,
32945
+ TreeGridExNodeColumnController,
32946
+ TreeGridExNotifyState,
32152
32947
  TreeGridExRowState,
32153
32948
  TreeGridExService,
32154
32949
  TreeGridExUAColumnController,