@ibiz-template/runtime 0.4.12 → 0.4.14

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 (163) hide show
  1. package/dist/index.esm.js +1134 -225
  2. package/dist/index.system.min.js +2 -2
  3. package/out/config/global-config.js +1 -1
  4. package/out/controller/common/base.controller.d.ts +7 -0
  5. package/out/controller/common/base.controller.d.ts.map +1 -1
  6. package/out/controller/common/base.controller.js +10 -0
  7. package/out/controller/common/view/view.controller.d.ts +7 -0
  8. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  9. package/out/controller/common/view/view.controller.js +11 -0
  10. package/out/controller/control/app-menu/app-menu.controller.d.ts +7 -0
  11. package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -1
  12. package/out/controller/control/app-menu/app-menu.controller.js +22 -0
  13. package/out/controller/control/caption-bar/caption-bar.controller.d.ts.map +1 -1
  14. package/out/controller/control/caption-bar/caption-bar.controller.js +1 -6
  15. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
  16. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +5 -1
  17. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.d.ts +13 -0
  18. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.d.ts.map +1 -1
  19. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.js +24 -3
  20. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-md.controller.d.ts +13 -0
  21. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-md.controller.d.ts.map +1 -1
  22. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-md.controller.js +26 -2
  23. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.d.ts +0 -8
  24. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.d.ts.map +1 -1
  25. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.js +0 -10
  26. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts +8 -0
  27. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts.map +1 -1
  28. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.js +10 -0
  29. package/out/controller/control/gantt/gantt.controller.d.ts +146 -2
  30. package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
  31. package/out/controller/control/gantt/gantt.controller.js +270 -0
  32. package/out/controller/control/grid/grid/grid-row.state.d.ts +11 -0
  33. package/out/controller/control/grid/grid/grid-row.state.d.ts.map +1 -1
  34. package/out/controller/control/grid/grid/grid-row.state.js +13 -0
  35. package/out/controller/control/grid/grid/grid.controller.d.ts +7 -0
  36. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  37. package/out/controller/control/grid/grid/grid.controller.js +27 -0
  38. package/out/controller/control/grid/grid/grid.service.d.ts.map +1 -1
  39. package/out/controller/control/grid/grid/grid.service.js +30 -20
  40. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +21 -1
  41. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
  42. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +44 -1
  43. package/out/controller/control/kanban/kanban.controller.d.ts +13 -0
  44. package/out/controller/control/kanban/kanban.controller.d.ts.map +1 -1
  45. package/out/controller/control/kanban/kanban.controller.js +72 -0
  46. package/out/controller/control/report-panel/generator/user-generator.js +1 -1
  47. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  48. package/out/controller/control/search-bar/search-bar.controller.js +2 -1
  49. package/out/controller/control/toolbar/toolbar.controllerr.d.ts +7 -0
  50. package/out/controller/control/toolbar/toolbar.controllerr.d.ts.map +1 -1
  51. package/out/controller/control/toolbar/toolbar.controllerr.js +22 -0
  52. package/out/controller/control/tree/tree.controller.d.ts +90 -2
  53. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  54. package/out/controller/control/tree/tree.controller.js +295 -2
  55. package/out/interface/common/i-global-config/i-global-view-config.d.ts +1 -1
  56. package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
  57. package/out/interface/controller/controller/control/i-tree.controller.d.ts +1 -1
  58. package/out/interface/controller/controller/control/i-tree.controller.d.ts.map +1 -1
  59. package/out/interface/controller/event/control/i-gantt.event.d.ts +42 -0
  60. package/out/interface/controller/event/control/i-gantt.event.d.ts.map +1 -1
  61. package/out/interface/controller/event/control/i-tree.event.d.ts +17 -0
  62. package/out/interface/controller/event/control/i-tree.event.d.ts.map +1 -1
  63. package/out/interface/controller/state/control/i-gantt.state.d.ts +22 -0
  64. package/out/interface/controller/state/control/i-gantt.state.d.ts.map +1 -1
  65. package/out/interface/controller/state/control/i-grid.state.d.ts +11 -0
  66. package/out/interface/controller/state/control/i-grid.state.d.ts.map +1 -1
  67. package/out/interface/controller/state/control/i-kanban.state.d.ts +24 -0
  68. package/out/interface/controller/state/control/i-kanban.state.d.ts.map +1 -1
  69. package/out/interface/controller/state/control/i-tree.state.d.ts +7 -0
  70. package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
  71. package/out/interface/provider/i-grid-column.provider.d.ts +2 -2
  72. package/out/interface/provider/i-grid-column.provider.d.ts.map +1 -1
  73. package/out/interface/service/i-data-entity/i-data-entity.d.ts +8 -0
  74. package/out/interface/service/i-data-entity/i-data-entity.d.ts.map +1 -1
  75. package/out/interface/service/service/i-app-de.service.d.ts +11 -0
  76. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  77. package/out/logic-scheduler/executor/app-ui-logic-executor.d.ts.map +1 -1
  78. package/out/logic-scheduler/executor/app-ui-logic-executor.js +4 -2
  79. package/out/model/index.d.ts +1 -0
  80. package/out/model/index.d.ts.map +1 -1
  81. package/out/model/index.js +1 -0
  82. package/out/model/toolbar/toolbar.d.ts +12 -0
  83. package/out/model/toolbar/toolbar.d.ts.map +1 -0
  84. package/out/model/toolbar/toolbar.js +22 -0
  85. package/out/register/helper/grid-column-register.d.ts +2 -2
  86. package/out/register/helper/grid-column-register.d.ts.map +1 -1
  87. package/out/register/helper/grid-column-register.js +14 -0
  88. package/out/service/dto/method.dto.d.ts.map +1 -1
  89. package/out/service/dto/method.dto.js +8 -1
  90. package/out/service/service/entity/de.service.d.ts +9 -1
  91. package/out/service/service/entity/de.service.d.ts.map +1 -1
  92. package/out/service/service/entity/de.service.js +69 -0
  93. package/out/service/service/entity/method/fetch.d.ts +5 -12
  94. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  95. package/out/service/service/entity/method/fetch.js +7 -74
  96. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts +1 -0
  97. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts.map +1 -1
  98. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts +2 -0
  99. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts.map +1 -1
  100. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.js +2 -1
  101. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts +7 -0
  102. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts.map +1 -1
  103. package/out/service/vo/gantt-node-data/gantt-node-data-util.js +18 -0
  104. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts +1 -0
  105. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts.map +1 -1
  106. package/out/service/vo/tree-node-data/tree-code-list-node-data.d.ts.map +1 -1
  107. package/out/service/vo/tree-node-data/tree-code-list-node-data.js +8 -4
  108. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  109. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +8 -4
  110. package/out/service/vo/tree-node-data/tree-node-data.d.ts +1 -0
  111. package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
  112. package/out/service/vo/tree-node-data/tree-node-data.js +2 -0
  113. package/out/service/vo/tree-node-data/tree-static-node-data.d.ts.map +1 -1
  114. package/out/service/vo/tree-node-data/tree-static-node-data.js +8 -2
  115. package/out/utils/layout-panel-util/layout-panel-util.js +1 -1
  116. package/package.json +2 -2
  117. package/src/config/global-config.ts +1 -1
  118. package/src/controller/common/base.controller.ts +11 -0
  119. package/src/controller/common/view/view.controller.ts +15 -0
  120. package/src/controller/control/app-menu/app-menu.controller.ts +25 -0
  121. package/src/controller/control/caption-bar/caption-bar.controller.ts +1 -8
  122. package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +9 -1
  123. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts +27 -3
  124. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-md.controller.ts +26 -2
  125. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.ts +0 -11
  126. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts +11 -0
  127. package/src/controller/control/gantt/gantt.controller.ts +331 -1
  128. package/src/controller/control/grid/grid/grid-row.state.ts +15 -0
  129. package/src/controller/control/grid/grid/grid.controller.ts +34 -0
  130. package/src/controller/control/grid/grid/grid.service.ts +34 -21
  131. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +67 -2
  132. package/src/controller/control/kanban/kanban.controller.ts +81 -0
  133. package/src/controller/control/report-panel/generator/user-generator.ts +1 -1
  134. package/src/controller/control/search-bar/search-bar.controller.ts +2 -1
  135. package/src/controller/control/toolbar/toolbar.controllerr.ts +29 -0
  136. package/src/controller/control/tree/tree.controller.ts +371 -3
  137. package/src/interface/common/i-global-config/i-global-view-config.ts +1 -1
  138. package/src/interface/controller/controller/control/i-tree.controller.ts +1 -1
  139. package/src/interface/controller/event/control/i-gantt.event.ts +37 -1
  140. package/src/interface/controller/event/control/i-tree.event.ts +14 -0
  141. package/src/interface/controller/state/control/i-gantt.state.ts +25 -0
  142. package/src/interface/controller/state/control/i-grid.state.ts +10 -0
  143. package/src/interface/controller/state/control/i-kanban.state.ts +26 -0
  144. package/src/interface/controller/state/control/i-tree.state.ts +8 -0
  145. package/src/interface/provider/i-grid-column.provider.ts +2 -2
  146. package/src/interface/service/i-data-entity/i-data-entity.ts +9 -0
  147. package/src/interface/service/service/i-app-de.service.ts +12 -0
  148. package/src/logic-scheduler/executor/app-ui-logic-executor.ts +8 -2
  149. package/src/model/index.ts +1 -0
  150. package/src/model/toolbar/toolbar.ts +35 -0
  151. package/src/register/helper/grid-column-register.ts +17 -2
  152. package/src/service/dto/method.dto.ts +8 -1
  153. package/src/service/service/entity/de.service.ts +74 -1
  154. package/src/service/service/entity/method/fetch.ts +8 -79
  155. package/src/service/vo/gantt-node-data/gantt-code-list-node-data.ts +2 -0
  156. package/src/service/vo/gantt-node-data/gantt-data-set-node-data.ts +6 -1
  157. package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +21 -0
  158. package/src/service/vo/gantt-node-data/gantt-static-node-data.ts +2 -0
  159. package/src/service/vo/tree-node-data/tree-code-list-node-data.ts +10 -5
  160. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +10 -5
  161. package/src/service/vo/tree-node-data/tree-node-data.ts +3 -0
  162. package/src/service/vo/tree-node-data/tree-static-node-data.ts +10 -3
  163. package/src/utils/layout-panel-util/layout-panel-util.ts +1 -1
package/dist/index.esm.js CHANGED
@@ -5,7 +5,7 @@ var GlobalConfig = class {
5
5
  this.view = {
6
6
  enableDataInfoBar: true,
7
7
  expCacheMode: "TABEXPPANEL:",
8
- noNavTabs: false
8
+ disableHomeTabs: false
9
9
  };
10
10
  // 全局表格配置
11
11
  this.grid = {
@@ -1032,6 +1032,25 @@ function getAllPanelField(model) {
1032
1032
  return _getAllPanelField(model);
1033
1033
  }
1034
1034
 
1035
+ // src/model/toolbar/toolbar.ts
1036
+ import { recursiveIterate } from "@ibiz-template/core";
1037
+ function getUIActionItemsByActionLevel(toolbar, actionLevel) {
1038
+ const result = [];
1039
+ recursiveIterate(
1040
+ toolbar,
1041
+ (item) => {
1042
+ if (item.itemType === "DEUIACTION") {
1043
+ const uiItem = item;
1044
+ if (uiItem.actionLevel === actionLevel) {
1045
+ result.push(uiItem);
1046
+ }
1047
+ }
1048
+ },
1049
+ { childrenFields: ["detoolbarItems"] }
1050
+ );
1051
+ return result;
1052
+ }
1053
+
1035
1054
  // src/utils/open-redirect-view/open-redirect-view.ts
1036
1055
  async function openRedirectView(appView, context, params = {}, opts = {}) {
1037
1056
  return openDERedirectView(
@@ -2035,7 +2054,7 @@ var LayoutPanelUtil = class {
2035
2054
  } else {
2036
2055
  key = "".concat(viewType, "_").concat(viewStyle);
2037
2056
  }
2038
- if (ibiz.config.view.noNavTabs && [
2057
+ if (ibiz.config.view.disableHomeTabs && [
2039
2058
  "APPINDEXVIEW_DEFAULT",
2040
2059
  "APPINDEXVIEW_DEFAULT_LEFT",
2041
2060
  "APPINDEXVIEW_DEFAULT_TOP"
@@ -3321,6 +3340,7 @@ function getProvider5(key) {
3321
3340
  async function getGridColumnProvider(model) {
3322
3341
  let provider;
3323
3342
  const { columnType, enableRowEdit, sysPFPluginId, appId } = model;
3343
+ const { renderSysPFPluginId } = model;
3324
3344
  if (sysPFPluginId) {
3325
3345
  const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);
3326
3346
  if (pluginKey) {
@@ -3332,6 +3352,17 @@ async function getGridColumnProvider(model) {
3332
3352
  return provider;
3333
3353
  }
3334
3354
  }
3355
+ if (renderSysPFPluginId) {
3356
+ const pluginKey = await getPluginRegisterKey(renderSysPFPluginId, appId);
3357
+ if (pluginKey) {
3358
+ provider = getProvider5(pluginKey);
3359
+ }
3360
+ if (!provider) {
3361
+ ibiz.log.error("\u627E\u4E0D\u5230\u6811\u8868\u683C\u5217\u63D2\u4EF6".concat(pluginKey, "\u5BF9\u5E94\u7684\u9002\u914D\u5668"));
3362
+ } else {
3363
+ return provider;
3364
+ }
3365
+ }
3335
3366
  const key = enableRowEdit ? "".concat(columnType, "_EDIT") : columnType;
3336
3367
  provider = getProvider5(key);
3337
3368
  if (!provider) {
@@ -5075,6 +5106,8 @@ import {
5075
5106
  ModelError as ModelError5,
5076
5107
  RuntimeError as RuntimeError16
5077
5108
  } from "@ibiz-template/core";
5109
+ import { equals as equals2, isEmpty as isEmpty7, where as where2 } from "ramda";
5110
+ import { ascSort } from "qx-util";
5078
5111
 
5079
5112
  // src/service/service/work-flow/work-flow.service.ts
5080
5113
  import { RuntimeError as RuntimeError15 } from "@ibiz-template/core";
@@ -5543,6 +5576,55 @@ var DEService = class {
5543
5576
  fetchTempDefault(context, params, params2) {
5544
5577
  return this.exec("FetchTempDefault", context, params, params2);
5545
5578
  }
5579
+ /**
5580
+ * 查询本地数据,根据属性
5581
+ *
5582
+ * @param {IParams} context
5583
+ * @param {IParams} params 根据多实体属性查找,例:{ name: '张三', age: 18, parent: null }
5584
+ * @return {*} {Promise<IDataEntity[]>}
5585
+ */
5586
+ async selectLocal(context, params = {}) {
5587
+ let items = this.local.getList(context);
5588
+ items = ascSort(items, "srfordervalue");
5589
+ const data = {};
5590
+ const nullData = {};
5591
+ const undefinedData = {};
5592
+ const emptyData = {};
5593
+ if (params.srfkey) {
5594
+ data.srfkey = equals2(params.srfkey);
5595
+ delete params.srfkey;
5596
+ }
5597
+ for (const key in params) {
5598
+ if (Object.prototype.hasOwnProperty.call(params, key)) {
5599
+ const val = params[key];
5600
+ if (val == null) {
5601
+ nullData[key] = equals2(null);
5602
+ undefinedData[key] = equals2(void 0);
5603
+ emptyData[key] = equals2("");
5604
+ } else {
5605
+ data[key] = equals2(val);
5606
+ }
5607
+ }
5608
+ }
5609
+ if (!isEmpty7(data)) {
5610
+ const pred = where2(data);
5611
+ const nullPred = where2(nullData);
5612
+ const undefinedPred = where2(undefinedData);
5613
+ const emptyPred = where2(emptyData);
5614
+ items = items.filter((obj) => {
5615
+ if (isEmpty7(nullData)) {
5616
+ if (pred(obj)) {
5617
+ return true;
5618
+ }
5619
+ } else if (pred(obj) && (nullPred(obj) || undefinedPred(obj) || emptyPred(obj))) {
5620
+ return true;
5621
+ }
5622
+ return false;
5623
+ });
5624
+ }
5625
+ const list = items.map((obj) => obj.clone());
5626
+ return list;
5627
+ }
5546
5628
  /**
5547
5629
  * 执行服务方法 ac 模式
5548
5630
  *
@@ -6661,7 +6743,9 @@ var MethodDto = class _MethodDto {
6661
6743
  const service = await this.app.deService.getService(
6662
6744
  field.refAppDataEntityId
6663
6745
  );
6664
- const items = service.local.getList(context);
6746
+ const items = await service.selectLocal(context, {
6747
+ // srfpkey: data[this.entity.keyAppDEFieldId!],
6748
+ });
6665
6749
  if (items) {
6666
6750
  const arr = [];
6667
6751
  for (let j = 0; j < items.length; j++) {
@@ -6708,6 +6792,10 @@ var MethodDto = class _MethodDto {
6708
6792
  const dto = await this.getFieldDto(field);
6709
6793
  const items = datum[key];
6710
6794
  if (items) {
6795
+ const pKey = datum[this.entity.keyAppDEFieldId];
6796
+ items.forEach((item) => {
6797
+ item.srfpkey = pKey;
6798
+ });
6711
6799
  await dto.sets(context, items);
6712
6800
  } else {
6713
6801
  await dto.sets(context, []);
@@ -8439,9 +8527,9 @@ import {
8439
8527
  ModelError as ModelError13,
8440
8528
  RuntimeModelError as RuntimeModelError20
8441
8529
  } from "@ibiz-template/core";
8442
- import { ascSort, descSort } from "qx-util";
8443
- import { clone as clone13, equals as equals2, isEmpty as isEmpty7, isNil as isNil11, where as where2 } from "ramda";
8444
8530
  import { isArray as isArray8 } from "lodash-es";
8531
+ import { clone as clone13, isEmpty as isEmpty8, isNil as isNil11 } from "ramda";
8532
+ import { ascSort as ascSort2, descSort } from "qx-util";
8445
8533
  var FetchMethod = class extends Method {
8446
8534
  get isLocalMode() {
8447
8535
  return isLocalMode(this.method);
@@ -8487,63 +8575,14 @@ var FetchMethod = class extends Method {
8487
8575
  }
8488
8576
  return res;
8489
8577
  }
8490
- /**
8491
- * 查询本地数据,根据属性
8492
- *
8493
- * @param {IParams} context
8494
- * @param {IParams} params 根据多实体属性查找,例:{ name: '张三', age: 18, parent: null }
8495
- * @return {*} {Promise<IDataEntity[]>}
8496
- */
8497
- async selectLocal(context, params = {}) {
8498
- const service = await this.getService();
8499
- let items = service.local.getList(context);
8500
- items = ascSort(items, "srfordervalue");
8501
- const data = {};
8502
- const nullData = {};
8503
- const undefinedData = {};
8504
- const emptyData = {};
8505
- if (params.srfkey) {
8506
- data.srfkey = equals2(params.srfkey);
8507
- delete params.srfkey;
8508
- }
8509
- for (const key in params) {
8510
- if (Object.prototype.hasOwnProperty.call(params, key)) {
8511
- const val = params[key];
8512
- if (val == null) {
8513
- nullData[key] = equals2(null);
8514
- undefinedData[key] = equals2(void 0);
8515
- emptyData[key] = equals2("");
8516
- } else {
8517
- data[key] = equals2(val);
8518
- }
8519
- }
8520
- }
8521
- if (!isEmpty7(data)) {
8522
- const pred = where2(data);
8523
- const nullPred = where2(nullData);
8524
- const undefinedPred = where2(undefinedData);
8525
- const emptyPred = where2(emptyData);
8526
- items = items.filter((obj) => {
8527
- if (isEmpty7(nullData)) {
8528
- if (pred(obj)) {
8529
- return true;
8530
- }
8531
- } else if (pred(obj) && (nullPred(obj) || undefinedPred(obj) || emptyPred(obj))) {
8532
- return true;
8533
- }
8534
- return false;
8535
- });
8536
- }
8537
- const list = items.map((obj) => obj.clone());
8538
- return list;
8539
- }
8540
8578
  /**
8541
8579
  * 搜索本地数据
8542
8580
  *
8543
- * @protected
8544
- * @param {PSDEDQCondEngine | null} cond 查询实例
8581
+ * @author chitanda
8582
+ * @date 2023-12-18 11:12:27
8583
+ * @param {(PSDEDQCondEngine | null)} cond 查询实例
8545
8584
  * @param {SearchFilter} filter 过滤对象
8546
- * @param {string[]} [queryParamKeys=this.entity.quickSearchKeys] 当前实体支持快速搜索的属性
8585
+ * @param {string[]} [queryParamKeys=this.entity.quickSearchAppDEFieldIds!] 当前实体支持快速搜索的属性
8547
8586
  * @return {*} {Promise<IDataEntity[]>}
8548
8587
  */
8549
8588
  async searchLocal(cond, filter, queryParamKeys = this.entity.quickSearchAppDEFieldIds) {
@@ -8555,7 +8594,7 @@ var FetchMethod = class extends Method {
8555
8594
  list = list.filter((obj) => cond.test(obj, filter));
8556
8595
  }
8557
8596
  } else {
8558
- list = await this.selectLocal(filter.context, filter.data);
8597
+ list = await service.selectLocal(filter.context, filter.data);
8559
8598
  if (list.length > 0) {
8560
8599
  if (filter.query && filter.query !== "") {
8561
8600
  if (queryParamKeys) {
@@ -8574,11 +8613,11 @@ var FetchMethod = class extends Method {
8574
8613
  }
8575
8614
  }
8576
8615
  }
8577
- if (!isNil11(filter.sortField) && !isEmpty7(filter.sortField)) {
8616
+ if (!isNil11(filter.sortField) && !isEmpty8(filter.sortField)) {
8578
8617
  if (filter.sortMode === "DESC") {
8579
8618
  list = descSort(list, filter.sortField);
8580
8619
  } else {
8581
- list = ascSort(list, filter.sortField);
8620
+ list = ascSort2(list, filter.sortField);
8582
8621
  }
8583
8622
  }
8584
8623
  const { page, size } = filter;
@@ -8641,8 +8680,10 @@ function presetDEMethodProvider() {
8641
8680
  }
8642
8681
 
8643
8682
  // src/service/vo/tree-node-data/tree-node-data.ts
8683
+ import { createUUID as createUUID4 } from "qx-util";
8644
8684
  var TreeNodeData = class {
8645
8685
  constructor(model, parentNodeData, opts) {
8686
+ this._uuid = createUUID4();
8646
8687
  this.leaf = false;
8647
8688
  this.leaf = opts.leaf === true;
8648
8689
  this.parent = parentNodeData;
@@ -8687,8 +8728,14 @@ var TreeCodeListNodeData = class extends TreeNodeData {
8687
8728
  const { data } = opts;
8688
8729
  this.text = data.text;
8689
8730
  this.value = data.value;
8690
- this.id = parentNodeData ? "".concat(parentNodeData.id, ":").concat(model.id, "@").concat(this.value) : model.id + this.value;
8691
- this.id = this.id.toLowerCase();
8731
+ const selfId = "".concat(model.id, "@").concat(this.value).toLowerCase();
8732
+ Object.defineProperty(this, "id", {
8733
+ get() {
8734
+ return this.parent ? "".concat(this.parent.id, ":").concat(selfId) : selfId;
8735
+ },
8736
+ enumerable: true,
8737
+ configurable: true
8738
+ });
8692
8739
  if (model.appDataEntityId) {
8693
8740
  const deName = calcDeCodeNameById(model.appDataEntityId);
8694
8741
  this.context = Object.assign(this.context || {}, {
@@ -8709,8 +8756,14 @@ var TreeDataSetNodeData = class extends TreeNodeData {
8709
8756
  this.deData = data;
8710
8757
  this.text = model.textAppDEFieldId ? data[model.textAppDEFieldId] : data.srfmajortext;
8711
8758
  this.value = model.idAppDEFieldId ? data[model.idAppDEFieldId] : data.srfkey;
8712
- this.id = parentNodeData ? "".concat(parentNodeData.id, ":").concat(model.id, "@").concat(data.srfkey) : model.id + data.srfkey;
8713
- this.id = this.id.toLowerCase();
8759
+ const selfId = "".concat(model.id, "@").concat(data.srfkey).toLowerCase();
8760
+ Object.defineProperty(this, "id", {
8761
+ get() {
8762
+ return this.parent ? "".concat(this.parent.id, ":").concat(selfId) : selfId;
8763
+ },
8764
+ enumerable: true,
8765
+ configurable: true
8766
+ });
8714
8767
  if (model.appDataEntityId) {
8715
8768
  const deName = calcDeCodeNameById(model.appDataEntityId);
8716
8769
  this.context = Object.assign(this.context || {}, {
@@ -8784,8 +8837,14 @@ var TreeStaticNodeData = class extends TreeNodeData {
8784
8837
  var _a, _b;
8785
8838
  super(model, parentNodeData, opts);
8786
8839
  const nodeValue = model.nodeValue === "root" ? void 0 : model.nodeValue;
8787
- this.id = parentNodeData ? "".concat(parentNodeData.id, ":").concat(model.id) : model.id;
8788
- this.id = this.id.toLowerCase();
8840
+ const selfId = "".concat(model.id).toLowerCase();
8841
+ Object.defineProperty(this, "id", {
8842
+ get() {
8843
+ return this.parent ? "".concat(this.parent.id, ":").concat(selfId) : selfId;
8844
+ },
8845
+ enumerable: true,
8846
+ configurable: true
8847
+ });
8789
8848
  this.text = model.text;
8790
8849
  this.value = nodeValue;
8791
8850
  if (parentNodeData && opts.parentValueLevel) {
@@ -9086,7 +9145,7 @@ var PanelData = class {
9086
9145
  };
9087
9146
 
9088
9147
  // src/service/vo/chart-data/chart-data.ts
9089
- import { createUUID as createUUID4 } from "qx-util";
9148
+ import { createUUID as createUUID5 } from "qx-util";
9090
9149
  function updateKeyDefine3(target, keys) {
9091
9150
  keys.forEach((key) => {
9092
9151
  if (!Object.prototype.hasOwnProperty.call(target, key)) {
@@ -9104,7 +9163,7 @@ var ChartData = class {
9104
9163
  this._seriesModelId = seriesModel == null ? void 0 : seriesModel.id;
9105
9164
  this._catalog = catalog;
9106
9165
  this._groupName = groupName;
9107
- this._uuid = createUUID4();
9166
+ this._uuid = createUUID5();
9108
9167
  return new Proxy(this, {
9109
9168
  set(target, p, value) {
9110
9169
  if (Object.prototype.hasOwnProperty.call(deData, p)) {
@@ -9147,6 +9206,18 @@ var calcDataItemValue = (fieldCodeName, nodeModel, data = {}) => {
9147
9206
  }
9148
9207
  return result;
9149
9208
  };
9209
+ var calcNodeDataItem = (nodeModel, data) => {
9210
+ var _a;
9211
+ const dataItem = {};
9212
+ (_a = nodeModel.detreeNodeDataItems) == null ? void 0 : _a.forEach((item) => {
9213
+ if (item.id && item.appDEFieldId) {
9214
+ Object.assign(dataItem, {
9215
+ [item.id.toLowerCase()]: data[item.appDEFieldId.toLowerCase()]
9216
+ });
9217
+ }
9218
+ });
9219
+ return dataItem;
9220
+ };
9150
9221
 
9151
9222
  // src/service/vo/gantt-node-data/gantt-static-node-data.ts
9152
9223
  var GanttStaticNodeData = class extends TreeStaticNodeData {
@@ -9208,6 +9279,7 @@ var GanttDataSetNodeData = class extends TreeDataSetNodeData {
9208
9279
  nodeModel,
9209
9280
  data
9210
9281
  );
9282
+ this.nodeDataItem = calcNodeDataItem(nodeModel, data);
9211
9283
  }
9212
9284
  };
9213
9285
 
@@ -9250,7 +9322,7 @@ var GanttCodeListNodeData = class extends TreeCodeListNodeData {
9250
9322
  };
9251
9323
 
9252
9324
  // src/service/mqtt/mqtt.service.ts
9253
- import { QXEvent as QXEvent3, createUUID as createUUID5, isNilOrEmpty as isNilOrEmpty6 } from "qx-util";
9325
+ import { QXEvent as QXEvent3, createUUID as createUUID6, isNilOrEmpty as isNilOrEmpty6 } from "qx-util";
9254
9326
  var MqttService = class {
9255
9327
  /**
9256
9328
  * Creates an instance of MqttService.
@@ -9284,7 +9356,7 @@ var MqttService = class {
9284
9356
  // 超时时间
9285
9357
  connectTimeout: 6e3,
9286
9358
  // 认证信息
9287
- clientId: createUUID5(),
9359
+ clientId: createUUID6(),
9288
9360
  username: "",
9289
9361
  password: "",
9290
9362
  // 心跳时间
@@ -9723,7 +9795,7 @@ function installCommand() {
9723
9795
  }
9724
9796
 
9725
9797
  // src/app-hub.ts
9726
- import { RuntimeError as RuntimeError58 } from "@ibiz-template/core";
9798
+ import { RuntimeError as RuntimeError59 } from "@ibiz-template/core";
9727
9799
 
9728
9800
  // src/application.ts
9729
9801
  import { Net, getToken } from "@ibiz-template/core";
@@ -9990,9 +10062,9 @@ var PanelNotifyState = /* @__PURE__ */ ((PanelNotifyState2) => {
9990
10062
  })(PanelNotifyState || {});
9991
10063
 
9992
10064
  // src/controller/common/view/view.controller.ts
9993
- import { createUUID as createUUID7, notNilEmpty as notNilEmpty6 } from "qx-util";
10065
+ import { createUUID as createUUID8, notNilEmpty as notNilEmpty6 } from "qx-util";
9994
10066
  import { IBizContext as IBizContext2, RuntimeError as RuntimeError31 } from "@ibiz-template/core";
9995
- import { isEmpty as isEmpty8, isNil as isNil18, isNotNil as isNotNil2 } from "ramda";
10067
+ import { isEmpty as isEmpty9, isNil as isNil18, isNotNil as isNotNil2 } from "ramda";
9996
10068
 
9997
10069
  // src/controller/utils/loading/loading.state.ts
9998
10070
  import { NOOP } from "@ibiz-template/core";
@@ -10807,7 +10879,7 @@ var ValueExUtil = class {
10807
10879
  // src/controller/utils/value-default/value-default.ts
10808
10880
  import { RuntimeError as RuntimeError28, ModelError as ModelError16 } from "@ibiz-template/core";
10809
10881
  import dayjs from "dayjs";
10810
- import { createUUID as createUUID6 } from "qx-util";
10882
+ import { createUUID as createUUID7 } from "qx-util";
10811
10883
  import { isNil as isNil16, isNotNil } from "ramda";
10812
10884
  function getDefaultValue(opts, origins) {
10813
10885
  var _a;
@@ -10852,7 +10924,7 @@ function getDefaultValue(opts, origins) {
10852
10924
  case "CONTEXT":
10853
10925
  return params[defaultValue];
10854
10926
  case "UNIQUEID":
10855
- return createUUID6();
10927
+ return createUUID7();
10856
10928
  default:
10857
10929
  throw new ModelError16({}, "\u9ED8\u8BA4\u503C\u7C7B\u578B[".concat(valueType, "]\u672A\u652F\u6301"));
10858
10930
  }
@@ -10984,6 +11056,7 @@ var BaseController = class {
10984
11056
  this.childNames = [];
10985
11057
  this.name = model.name || model.id;
10986
11058
  this.initState();
11059
+ this.convertMultipleLanguages();
10987
11060
  }
10988
11061
  /**
10989
11062
  * 中间层的基类才会使用,用于在内部使用自身的事件,事件类型不是泛型用evt就能正确推导出来。
@@ -11141,6 +11214,14 @@ var BaseController = class {
11141
11214
  listenNewController(cb) {
11142
11215
  this.ctx.evt.on("onRegister", cb);
11143
11216
  }
11217
+ /**
11218
+ * 转换各类多语言
11219
+ *
11220
+ * @date 2023-05-18 02:57:00
11221
+ * @protected
11222
+ */
11223
+ convertMultipleLanguages() {
11224
+ }
11144
11225
  };
11145
11226
 
11146
11227
  // src/controller/utils/view-msg/view-msg-controller.ts
@@ -11576,8 +11657,8 @@ var ViewController = class extends BaseController {
11576
11657
  */
11577
11658
  handleContextParams() {
11578
11659
  this.context.srfappid = this.model.appId;
11579
- if (isNil18(this.context.srfsessionid) || isEmpty8(this.context.srfsessionid)) {
11580
- this.context.srfsessionid = createUUID7();
11660
+ if (isNil18(this.context.srfsessionid) || isEmpty9(this.context.srfsessionid)) {
11661
+ this.context.srfsessionid = createUUID8();
11581
11662
  }
11582
11663
  const navContexts = this.model.appViewNavContexts;
11583
11664
  let context = {};
@@ -11703,6 +11784,20 @@ var ViewController = class extends BaseController {
11703
11784
  this.alertViewMessage(rest);
11704
11785
  }
11705
11786
  }
11787
+ /**
11788
+ * 转换各类多语言
11789
+ *
11790
+ * @date 2023-05-18 02:57:00
11791
+ * @protected
11792
+ */
11793
+ convertMultipleLanguages() {
11794
+ if (this.model.capLanguageRes && this.model.capLanguageRes.lanResTag) {
11795
+ this.model.caption = ibiz.i18n.t(
11796
+ this.model.capLanguageRes.lanResTag,
11797
+ this.model.caption
11798
+ );
11799
+ }
11800
+ }
11706
11801
  };
11707
11802
 
11708
11803
  // src/controller/common/view/mob-view.controller.ts
@@ -12734,6 +12829,31 @@ var AppMenuController = class extends ControlController {
12734
12829
  }
12735
12830
  return null;
12736
12831
  }
12832
+ /**
12833
+ * 转换各类多语言
12834
+ *
12835
+ * @date 2023-05-18 02:57:00
12836
+ * @protected
12837
+ */
12838
+ convertMultipleLanguages() {
12839
+ const convertItemCaption = (menuItems) => {
12840
+ menuItems.forEach((item) => {
12841
+ var _a;
12842
+ if (item.capLanguageRes && item.capLanguageRes.lanResTag) {
12843
+ item.caption = ibiz.i18n.t(
12844
+ item.capLanguageRes.lanResTag,
12845
+ item.caption
12846
+ );
12847
+ }
12848
+ if ((_a = item.appMenuItems) == null ? void 0 : _a.length) {
12849
+ convertItemCaption(item.appMenuItems);
12850
+ }
12851
+ });
12852
+ };
12853
+ if (this.model.appMenuItems && this.model.appMenuItems.length > 0) {
12854
+ convertItemCaption(this.model.appMenuItems);
12855
+ }
12856
+ }
12737
12857
  };
12738
12858
 
12739
12859
  // src/controller/control/app-menu-icon-view/app-menu-icon-view.controller.ts
@@ -14201,14 +14321,7 @@ var ChartController = class extends MDControlController {
14201
14321
  var CaptionBarController = class extends ControlController {
14202
14322
  initState() {
14203
14323
  super.initState();
14204
- if (this.view.model.capLanguageRes) {
14205
- this.state.caption = ibiz.i18n.t(
14206
- this.view.model.capLanguageRes.lanResTag,
14207
- this.view.model.caption
14208
- );
14209
- } else {
14210
- this.state.caption = this.view.model.caption;
14211
- }
14324
+ this.state.caption = this.view.model.caption;
14212
14325
  }
14213
14326
  async onCreated() {
14214
14327
  await super.onCreated();
@@ -14219,7 +14332,7 @@ var CaptionBarController = class extends ControlController {
14219
14332
  };
14220
14333
 
14221
14334
  // src/controller/control/toolbar/toolbar.controllerr.ts
14222
- import { recursiveIterate, RuntimeError as RuntimeError46 } from "@ibiz-template/core";
14335
+ import { recursiveIterate as recursiveIterate2, RuntimeError as RuntimeError46 } from "@ibiz-template/core";
14223
14336
 
14224
14337
  // src/ui-action/provider/backend-ui-action-provider.ts
14225
14338
  import { RuntimeModelError as RuntimeModelError47 } from "@ibiz-template/core";
@@ -16372,7 +16485,7 @@ var ToolbarController = class extends ControlController {
16372
16485
  async onCreated() {
16373
16486
  await super.onCreated();
16374
16487
  this.state.viewMode = this.ctx.view.modal.mode;
16375
- recursiveIterate(
16488
+ recursiveIterate2(
16376
16489
  this.model,
16377
16490
  (item) => {
16378
16491
  if (item.itemType === "DEUIACTION") {
@@ -16422,7 +16535,7 @@ var ToolbarController = class extends ControlController {
16422
16535
  if (_data) {
16423
16536
  logicParams.data = [_data];
16424
16537
  }
16425
- recursiveIterate(
16538
+ recursiveIterate2(
16426
16539
  this.model,
16427
16540
  (item) => {
16428
16541
  const itemState = this.state.buttonsState[item.id];
@@ -16467,7 +16580,7 @@ var ToolbarController = class extends ControlController {
16467
16580
  }
16468
16581
  initControlScheduler(logics = []) {
16469
16582
  const actualLogics = [...logics];
16470
- recursiveIterate(
16583
+ recursiveIterate2(
16471
16584
  this.model,
16472
16585
  (item) => {
16473
16586
  if (item.controlLogics) {
@@ -16478,6 +16591,30 @@ var ToolbarController = class extends ControlController {
16478
16591
  );
16479
16592
  super.initControlScheduler(actualLogics);
16480
16593
  }
16594
+ /**
16595
+ * 转换各类多语言
16596
+ *
16597
+ * @date 2023-05-18 02:57:00
16598
+ * @protected
16599
+ */
16600
+ convertMultipleLanguages() {
16601
+ const convertItemCaption = (items) => {
16602
+ items.forEach((item) => {
16603
+ if (item.capLanguageRes && item.capLanguageRes.lanResTag) {
16604
+ item.caption = ibiz.i18n.t(
16605
+ item.capLanguageRes.lanResTag,
16606
+ item.caption
16607
+ );
16608
+ }
16609
+ if (item.itemType === "ITEMS" && item.detoolbarItems) {
16610
+ convertItemCaption(item.detoolbarItems);
16611
+ }
16612
+ });
16613
+ };
16614
+ if (this.model.detoolbarItems && this.model.detoolbarItems.length > 0) {
16615
+ convertItemCaption(this.model.detoolbarItems);
16616
+ }
16617
+ }
16481
16618
  };
16482
16619
 
16483
16620
  // src/controller/control/context-menu/context-menu.controllerr.ts
@@ -18125,7 +18262,7 @@ var ChartExpBarController = class extends ExpBarControlController {
18125
18262
  import { RuntimeError as RuntimeError49 } from "@ibiz-template/core";
18126
18263
 
18127
18264
  // src/controller/control/form/form/form.controller.ts
18128
- import { debounceAndAsyncMerge, recursiveIterate as recursiveIterate2 } from "@ibiz-template/core";
18265
+ import { debounceAndAsyncMerge, recursiveIterate as recursiveIterate3 } from "@ibiz-template/core";
18129
18266
  var FormController = class extends ControlController {
18130
18267
  constructor() {
18131
18268
  super(...arguments);
@@ -18337,7 +18474,7 @@ var FormController = class extends ControlController {
18337
18474
  */
18338
18475
  initControlScheduler(logics = []) {
18339
18476
  const actualLogics = [...logics];
18340
- recursiveIterate2(
18477
+ recursiveIterate3(
18341
18478
  this.model,
18342
18479
  (item) => {
18343
18480
  if (item.controlLogics) {
@@ -18353,10 +18490,10 @@ var FormController = class extends ControlController {
18353
18490
  };
18354
18491
 
18355
18492
  // src/controller/control/form/search-form/search-form.service.ts
18356
- import { recursiveIterate as recursiveIterate4 } from "@ibiz-template/core";
18493
+ import { recursiveIterate as recursiveIterate5 } from "@ibiz-template/core";
18357
18494
 
18358
18495
  // src/controller/control/form/form/form.service.ts
18359
- import { recursiveIterate as recursiveIterate3 } from "@ibiz-template/core";
18496
+ import { recursiveIterate as recursiveIterate4 } from "@ibiz-template/core";
18360
18497
  var FormService = class extends ControlService {
18361
18498
  /**
18362
18499
  * 设置表单项的默认值
@@ -18368,7 +18505,7 @@ var FormService = class extends ControlService {
18368
18505
  * @param {('create' | 'update')} type 新建还是更新
18369
18506
  */
18370
18507
  setDefault(data, context, params, type) {
18371
- recursiveIterate3(
18508
+ recursiveIterate4(
18372
18509
  this.model,
18373
18510
  (item) => {
18374
18511
  if (item.detailType === "FORMITEM") {
@@ -18424,7 +18561,7 @@ var SearchFormService = class extends FormService {
18424
18561
  * @date 2022-08-31 18:08:37
18425
18562
  */
18426
18563
  initUIDataMap() {
18427
- recursiveIterate4(
18564
+ recursiveIterate5(
18428
18565
  this.model,
18429
18566
  (item) => {
18430
18567
  if (item.detailType === "FORMITEM") {
@@ -18891,7 +19028,7 @@ var FormDetailController = class {
18891
19028
  }
18892
19029
  async onInit() {
18893
19030
  this.state.showMoreMode = this.model.showMoreMode;
18894
- const { layoutPos, sysCss, labelSysCss } = this.model;
19031
+ const { layoutPos, sysCss, labelSysCss, capLanguageRes } = this.model;
18895
19032
  if (layoutPos) {
18896
19033
  const { width, height } = calcLayoutHeightWidth(layoutPos);
18897
19034
  this.state.layout.width = "".concat(width);
@@ -18903,6 +19040,12 @@ var FormDetailController = class {
18903
19040
  if (labelSysCss == null ? void 0 : labelSysCss.cssName) {
18904
19041
  this.state.class.label.push(labelSysCss.cssName);
18905
19042
  }
19043
+ if (capLanguageRes && capLanguageRes.lanResTag) {
19044
+ this.model.caption = ibiz.i18n.t(
19045
+ capLanguageRes.lanResTag,
19046
+ this.model.caption
19047
+ );
19048
+ }
18906
19049
  }
18907
19050
  /**
18908
19051
  * 创建表单状态对象
@@ -19168,7 +19311,7 @@ var FormButtonController = class extends FormDetailController {
19168
19311
 
19169
19312
  // src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts
19170
19313
  import { isOverlap as isOverlap2 } from "@ibiz-template/core";
19171
- import { createUUID as createUUID8, notNilEmpty as notNilEmpty8 } from "qx-util";
19314
+ import { createUUID as createUUID9, notNilEmpty as notNilEmpty8 } from "qx-util";
19172
19315
 
19173
19316
  // src/controller/control/form/form-detail/form-druipart/form-druipart.state.ts
19174
19317
  var FormDruipartState = class extends FormDetailState {
@@ -19281,7 +19424,7 @@ var FormDRUIPartController = class extends FormDetailController {
19281
19424
  this.form.context
19282
19425
  );
19283
19426
  if (!this.state.viewComponentKey) {
19284
- this.state.viewComponentKey = createUUID8();
19427
+ this.state.viewComponentKey = createUUID9();
19285
19428
  this.navContext = newContext;
19286
19429
  this.navParams = newParams;
19287
19430
  } else if (JSON.stringify(this.navContext) !== JSON.stringify(newContext) || JSON.stringify(this.navParams) !== JSON.stringify(newParams)) {
@@ -19789,6 +19932,16 @@ var FormItemController = class extends FormDetailController {
19789
19932
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts
19790
19933
  import { BitMask } from "@ibiz-template/core";
19791
19934
  var FormMDCtrlController = class extends FormDetailController {
19935
+ /**
19936
+ * 名称
19937
+ * @author lxm
19938
+ * @date 2023-11-22 03:31:02
19939
+ * @readonly
19940
+ * @type {string}
19941
+ */
19942
+ get name() {
19943
+ return this.model.id;
19944
+ }
19792
19945
  /**
19793
19946
  * 上下文
19794
19947
  *
@@ -19877,6 +20030,15 @@ import {
19877
20030
  RuntimeModelError as RuntimeModelError53
19878
20031
  } from "@ibiz-template/core";
19879
20032
  var FormMDCtrlMDController = class extends FormMDCtrlController {
20033
+ constructor() {
20034
+ super(...arguments);
20035
+ /**
20036
+ * 忽略下一次自身对应表单项数据变更
20037
+ * @author lxm
20038
+ * @date 2023-12-19 11:47:21
20039
+ */
20040
+ this.ignoreNextSelfChange = false;
20041
+ }
19880
20042
  /**
19881
20043
  * 表单项名称
19882
20044
  *
@@ -19913,10 +20075,10 @@ var FormMDCtrlMDController = class extends FormMDCtrlController {
19913
20075
  setMDControl(controller) {
19914
20076
  this.mdController = controller;
19915
20077
  controller.evt.on("onSaveSuccess", () => {
19916
- this.updateFormItem();
20078
+ this.notifyFormDataChange();
19917
20079
  });
19918
20080
  controller.evt.on("onRemoveSuccess", () => {
19919
- this.updateFormItem();
20081
+ this.notifyFormDataChange();
19920
20082
  });
19921
20083
  }
19922
20084
  updateFormItem() {
@@ -19965,16 +20127,31 @@ var FormMDCtrlMDController = class extends FormMDCtrlController {
19965
20127
  this.refresh();
19966
20128
  }
19967
20129
  async dataChangeNotify(names) {
20130
+ if (names.includes(this.model.id) && this.ignoreNextSelfChange) {
20131
+ this.ignoreNextSelfChange = false;
20132
+ return;
20133
+ }
19968
20134
  await super.dataChangeNotify(names);
19969
20135
  if (names.includes(this.model.id)) {
19970
20136
  this.refresh();
19971
20137
  }
19972
20138
  }
20139
+ /**
20140
+ * 通知表单多数据部件对应的表单项数据变更
20141
+ * @author lxm
20142
+ * @date 2023-12-19 11:46:13
20143
+ * @protected
20144
+ */
20145
+ notifyFormDataChange() {
20146
+ this.updateFormItem();
20147
+ this.ignoreNextSelfChange = true;
20148
+ this.form.dataChangeNotify([this.name]);
20149
+ }
19973
20150
  };
19974
20151
 
19975
20152
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts
19976
20153
  import { RuntimeError as RuntimeError50, RuntimeModelError as RuntimeModelError54 } from "@ibiz-template/core";
19977
- import { createUUID as createUUID9 } from "qx-util";
20154
+ import { createUUID as createUUID10 } from "qx-util";
19978
20155
 
19979
20156
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.ts
19980
20157
  var FormMDCtrlFormState = class extends FormDetailState {
@@ -19984,6 +20161,12 @@ var FormMDCtrlFormState = class extends FormDetailState {
19984
20161
  var FormMDCtrlFormController = class extends FormMDCtrlController {
19985
20162
  constructor() {
19986
20163
  super(...arguments);
20164
+ /**
20165
+ * 忽略下一次自身对应表单项数据变更
20166
+ * @author lxm
20167
+ * @date 2023-12-19 11:47:21
20168
+ */
20169
+ this.ignoreNextSelfChange = false;
19987
20170
  /**
19988
20171
  * 表单控制器Map
19989
20172
  * @author lxm
@@ -20049,7 +20232,7 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
20049
20232
  */
20050
20233
  async formStateNotify(state) {
20051
20234
  await super.formStateNotify(state);
20052
- await this.fetchData();
20235
+ await this.refresh();
20053
20236
  }
20054
20237
  /**
20055
20238
  * 设置表单控制器
@@ -20068,10 +20251,10 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
20068
20251
  item.context[this.deName] = formData.srfkey;
20069
20252
  }
20070
20253
  }
20071
- this.updateFormItem();
20254
+ this.notifyFormDataChange();
20072
20255
  });
20073
20256
  controller.evt.on("onRemoveSuccess", () => {
20074
- this.updateFormItem();
20257
+ this.notifyFormDataChange();
20075
20258
  });
20076
20259
  }
20077
20260
  /**
@@ -20104,7 +20287,7 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
20104
20287
  this.state.items = [];
20105
20288
  }
20106
20289
  const item = {
20107
- id: createUUID9(),
20290
+ id: createUUID10(),
20108
20291
  context,
20109
20292
  params
20110
20293
  };
@@ -20118,11 +20301,26 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
20118
20301
  this.fetchData();
20119
20302
  }
20120
20303
  async dataChangeNotify(names) {
20304
+ if (names.includes(this.model.id) && this.ignoreNextSelfChange) {
20305
+ this.ignoreNextSelfChange = false;
20306
+ return;
20307
+ }
20121
20308
  await super.dataChangeNotify(names);
20122
20309
  if (names.includes(this.model.id)) {
20123
20310
  this.refresh();
20124
20311
  }
20125
20312
  }
20313
+ /**
20314
+ * 通知表单多数据部件对应的表单项数据变更
20315
+ * @author lxm
20316
+ * @date 2023-12-19 11:46:13
20317
+ * @protected
20318
+ */
20319
+ notifyFormDataChange() {
20320
+ this.updateFormItem();
20321
+ this.ignoreNextSelfChange = true;
20322
+ this.form.dataChangeNotify([this.name]);
20323
+ }
20126
20324
  };
20127
20325
 
20128
20326
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.ts
@@ -20146,16 +20344,6 @@ var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
20146
20344
  */
20147
20345
  this.isSingleData = false;
20148
20346
  }
20149
- /**
20150
- * 名称
20151
- * @author lxm
20152
- * @date 2023-11-22 03:31:02
20153
- * @readonly
20154
- * @type {string}
20155
- */
20156
- get name() {
20157
- return this.model.id;
20158
- }
20159
20347
  /**
20160
20348
  * 多数据重复器对应的表单里的值
20161
20349
  *
@@ -20350,12 +20538,12 @@ import {
20350
20538
  RuntimeError as RuntimeError51
20351
20539
  } from "@ibiz-template/core";
20352
20540
  import { debounce as debounce2 } from "lodash-es";
20353
- import { createUUID as createUUID10 } from "qx-util";
20541
+ import { createUUID as createUUID11 } from "qx-util";
20354
20542
  import { clone as clone21 } from "ramda";
20355
20543
 
20356
20544
  // src/controller/control/form/edit-form/edit-form.service.ts
20357
20545
  import {
20358
- recursiveIterate as recursiveIterate5,
20546
+ recursiveIterate as recursiveIterate6,
20359
20547
  RuntimeModelError as RuntimeModelError55
20360
20548
  } from "@ibiz-template/core";
20361
20549
  var EditFormService = class extends FormService {
@@ -20577,7 +20765,7 @@ var EditFormService = class extends FormService {
20577
20765
  // 向导预置
20578
20766
  "srfnextform"
20579
20767
  ];
20580
- recursiveIterate5(
20768
+ recursiveIterate6(
20581
20769
  this.model,
20582
20770
  (item) => {
20583
20771
  if (item.detailType === "FORMITEM" || item.detailType === "MDCTRL") {
@@ -20731,7 +20919,7 @@ var EditFormController = class extends FormController {
20731
20919
  await this.endLoading();
20732
20920
  }
20733
20921
  res.data.srfkey = void 0;
20734
- res.data.tempsrfkey = createUUID10();
20922
+ res.data.tempsrfkey = createUUID11();
20735
20923
  this.state.modified = false;
20736
20924
  this.state.data = res.data;
20737
20925
  this.formStateNotify("LOAD" /* LOAD */);
@@ -21234,6 +21422,15 @@ var GridRowState = class {
21234
21422
  * @type {({ [p: string]: { disabled: boolean } })}
21235
21423
  */
21236
21424
  this.editColStates = {};
21425
+ /**
21426
+ * 界面行为组状态(p是界面行为的标识)
21427
+ *
21428
+ * @author zk
21429
+ * @date 2023-12-15 10:12:42
21430
+ * @type {{ [p: string]: IButtonContainerState }}
21431
+ * @memberof IGridRowState
21432
+ */
21433
+ this.uiActionGroupStates = {};
21237
21434
  /**
21238
21435
  * 是否显示行编辑
21239
21436
  *
@@ -21267,6 +21464,9 @@ var GridRowState = class {
21267
21464
  Object.values(grid.uaColumns).forEach((column) => {
21268
21465
  column.initActionStates(this);
21269
21466
  });
21467
+ Object.values(grid.fieldColumns).forEach((column) => {
21468
+ column.initActionStates(this);
21469
+ });
21270
21470
  Object.values(grid.editColumns).forEach((editColumn) => {
21271
21471
  this.editColStates[editColumn.fieldName] = {
21272
21472
  disabled: false,
@@ -21283,13 +21483,14 @@ import {
21283
21483
  awaitTimeout as awaitTimeout2,
21284
21484
  debounceAndAsyncMerge as debounceAndAsyncMerge2,
21285
21485
  mergeDefaultInLeft,
21286
- recursiveIterate as recursiveIterate6,
21486
+ recursiveIterate as recursiveIterate7,
21287
21487
  RuntimeError as RuntimeError52,
21288
- RuntimeModelError as RuntimeModelError56
21488
+ RuntimeModelError as RuntimeModelError57
21289
21489
  } from "@ibiz-template/core";
21290
21490
  import { clone as clone22 } from "ramda";
21291
21491
 
21292
21492
  // src/controller/control/grid/grid/grid.service.ts
21493
+ import { RuntimeModelError as RuntimeModelError56 } from "@ibiz-template/core";
21293
21494
  var GridService = class extends MDControlService {
21294
21495
  /**
21295
21496
  * 初始化属性映射
@@ -21300,21 +21501,34 @@ var GridService = class extends MDControlService {
21300
21501
  initUIDataMap() {
21301
21502
  var _a;
21302
21503
  super.initUIDataMap();
21303
- (_a = this.model.degridDataItems) == null ? void 0 : _a.forEach((column) => {
21304
- const uiKey = column.id.toLowerCase();
21305
- const deField = column.appDEFieldId;
21306
- let mapField;
21307
- if (deField) {
21308
- const deFieldKey = deField.toLowerCase();
21309
- mapField = new UIMapField(uiKey, deFieldKey, {
21310
- isOriginField: true,
21311
- dataType: column.dataType
21312
- });
21313
- } else {
21314
- mapField = new UIMapField(uiKey, uiKey);
21315
- }
21316
- this.dataUIMap.set(uiKey, mapField);
21317
- });
21504
+ if (this.model.degridColumns) {
21505
+ const dataItems = this.model.degridDataItems || [];
21506
+ (_a = this.model.degridColumns) == null ? void 0 : _a.forEach((column) => {
21507
+ const uiKey = column.id.toLowerCase();
21508
+ const deField = column.appDEFieldId;
21509
+ let mapField;
21510
+ if (deField) {
21511
+ const deFieldKey = deField.toLowerCase();
21512
+ const dataItem = dataItems.find(
21513
+ (item) => item.appDEFieldId === deField
21514
+ );
21515
+ if (dataItem) {
21516
+ mapField = new UIMapField(uiKey, deFieldKey, {
21517
+ isOriginField: true,
21518
+ dataType: dataItem.dataType
21519
+ });
21520
+ } else {
21521
+ throw new RuntimeModelError56(
21522
+ column,
21523
+ "\u672A\u627E\u5230\u5BF9\u5E94\u7684\u8868\u683C\u6570\u636E\u9879[".concat(deField, "]")
21524
+ );
21525
+ }
21526
+ } else {
21527
+ mapField = new UIMapField(uiKey, uiKey);
21528
+ }
21529
+ this.dataUIMap.set(uiKey, mapField);
21530
+ });
21531
+ }
21318
21532
  }
21319
21533
  /**
21320
21534
  * 编辑列更新
@@ -21491,11 +21705,11 @@ var GridController = class extends MDControlController {
21491
21705
  (item) => item.model.appDEFieldId === groupAppDEFieldId
21492
21706
  );
21493
21707
  if (!this.groupFieldColumn) {
21494
- throw new RuntimeModelError56(this.model, "\u6CA1\u6709\u914D\u7F6E\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217");
21708
+ throw new RuntimeModelError57(this.model, "\u6CA1\u6709\u914D\u7F6E\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217");
21495
21709
  }
21496
21710
  const groupFieldName = this.groupFieldColumn.model.id;
21497
21711
  if (!this.groupFieldColumn.model.appCodeListId) {
21498
- throw new RuntimeModelError56(
21712
+ throw new RuntimeModelError57(
21499
21713
  this.groupFieldColumn.model,
21500
21714
  "\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217".concat(groupFieldName, "\u6CA1\u6709\u914D\u7F6E\u4EE3\u7801\u8868")
21501
21715
  );
@@ -21505,7 +21719,7 @@ var GridController = class extends MDControlController {
21505
21719
  );
21506
21720
  if (index !== -1 && index !== 0) {
21507
21721
  if (this.isMultistageHeader) {
21508
- throw new RuntimeModelError56(
21722
+ throw new RuntimeModelError57(
21509
21723
  this.model,
21510
21724
  "\u8BF7\u5C06\u5206\u7EC4\u5C5E\u6027\u5217".concat(groupFieldName, "\u914D\u7F6E\u4E3A\u7B2C\u4E00\u5217")
21511
21725
  );
@@ -21515,10 +21729,10 @@ var GridController = class extends MDControlController {
21515
21729
  }
21516
21730
  if (groupMode === "CODELIST") {
21517
21731
  if (!groupCodeListId) {
21518
- throw new RuntimeModelError56(this.model, "\u4EE3\u7801\u8868\u5206\u7EC4\u6A21\u5F0F\u9700\u8981\u914D\u7F6E\u4EE3\u7801\u8868");
21732
+ throw new RuntimeModelError57(this.model, "\u4EE3\u7801\u8868\u5206\u7EC4\u6A21\u5F0F\u9700\u8981\u914D\u7F6E\u4EE3\u7801\u8868");
21519
21733
  }
21520
21734
  if (this.groupFieldColumn.model.appCodeListId !== groupCodeListId) {
21521
- throw new RuntimeModelError56(
21735
+ throw new RuntimeModelError57(
21522
21736
  this.model,
21523
21737
  "\u5206\u7EC4\u4EE3\u7801\u8868\u4E0E\u5C5E\u6027\u5217".concat(groupFieldName, "\u7684\u4EE3\u7801\u8868\u4E0D\u4E00\u81F4")
21524
21738
  );
@@ -21543,6 +21757,11 @@ var GridController = class extends MDControlController {
21543
21757
  uaState.update(row.data.getOrigin(), this.model.appDataEntityId);
21544
21758
  });
21545
21759
  });
21760
+ this.state.rows.forEach((row) => {
21761
+ Object.values(row.uiActionGroupStates).forEach((uaState) => {
21762
+ uaState.update(row.data.getOrigin(), this.model.appDataEntityId);
21763
+ });
21764
+ });
21546
21765
  this.calcGroupData(items);
21547
21766
  this.calcAggResult(items);
21548
21767
  return items;
@@ -21600,7 +21819,7 @@ var GridController = class extends MDControlController {
21600
21819
  return;
21601
21820
  }
21602
21821
  if (!aggAppDEDataSetId || !aggAppDataEntityId) {
21603
- throw new RuntimeModelError56(this.model, "\u7F3A\u5C11\u914D\u7F6E\u805A\u5408\u5B9E\u4F53\u6216\u805A\u5408\u6570\u636E\u96C6");
21822
+ throw new RuntimeModelError57(this.model, "\u7F3A\u5C11\u914D\u7F6E\u805A\u5408\u5B9E\u4F53\u6216\u805A\u5408\u6570\u636E\u96C6");
21604
21823
  }
21605
21824
  const params = await this.getFetchParams();
21606
21825
  const app = ibiz.hub.getApp(this.context.srfappid);
@@ -21795,7 +22014,7 @@ var GridController = class extends MDControlController {
21795
22014
  * @return {*} {Promise<void>}
21796
22015
  */
21797
22016
  initColumnStates() {
21798
- recursiveIterate6(
22017
+ recursiveIterate7(
21799
22018
  this.model,
21800
22019
  (column) => {
21801
22020
  if (column.columnType !== "GROUPGRIDCOLUMN") {
@@ -22255,6 +22474,30 @@ var GridController = class extends MDControlController {
22255
22474
  await this.setActive(data);
22256
22475
  }
22257
22476
  }
22477
+ /**
22478
+ * 转换各类多语言
22479
+ *
22480
+ * @date 2023-05-18 02:57:00
22481
+ * @protected
22482
+ */
22483
+ convertMultipleLanguages() {
22484
+ const convertColumnCaption = (columns) => {
22485
+ columns.forEach((column) => {
22486
+ if (column.capLanguageRes && column.capLanguageRes.lanResTag) {
22487
+ column.caption = ibiz.i18n.t(
22488
+ column.capLanguageRes.lanResTag,
22489
+ column.caption
22490
+ );
22491
+ }
22492
+ if (column.columnType === "GROUPGRIDCOLUMN" && column.degridColumns) {
22493
+ convertColumnCaption(column.degridColumns);
22494
+ }
22495
+ });
22496
+ };
22497
+ if (this.model.degridColumns && this.model.degridColumns.length > 0) {
22498
+ convertColumnCaption(this.model.degridColumns);
22499
+ }
22500
+ }
22258
22501
  };
22259
22502
 
22260
22503
  // src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts
@@ -22302,6 +22545,31 @@ var GridFieldColumnController = class extends GridColumnController {
22302
22545
  });
22303
22546
  this.loadCodeList();
22304
22547
  }
22548
+ /**
22549
+ * 初始化属性列界面行为组按钮状态
22550
+ *
22551
+ * @author lxm
22552
+ * @date 2022-09-07 21:09:43
22553
+ * @param {GridRowState} row
22554
+ */
22555
+ initActionStates(row) {
22556
+ const { deuiactionGroup } = this.model;
22557
+ if (deuiactionGroup && deuiactionGroup.uiactionGroupDetails) {
22558
+ const containerState = new ButtonContainerState();
22559
+ deuiactionGroup.uiactionGroupDetails.forEach((detail) => {
22560
+ const actionid = detail.uiactionId;
22561
+ if (actionid) {
22562
+ const buttonState = new UIActionButtonState(
22563
+ detail.id,
22564
+ this.grid.context.srfappid,
22565
+ actionid
22566
+ );
22567
+ containerState.addState(detail.id, buttonState);
22568
+ }
22569
+ });
22570
+ row.uiActionGroupStates[this.model.codeName] = containerState;
22571
+ }
22572
+ }
22305
22573
  /**
22306
22574
  * 行是否可点击(影响列的界面样式)
22307
22575
  *
@@ -22508,10 +22776,35 @@ var GridFieldColumnController = class extends GridColumnController {
22508
22776
  }
22509
22777
  return ibiz.util.text.format(strVal, this.valueFormat);
22510
22778
  }
22779
+ /**
22780
+ * 触发界面行为组点击事件
22781
+ *
22782
+ * @author zk
22783
+ * @date 2023-12-15 11:12:01
22784
+ * @param {IUIActionGroupDetail} detail
22785
+ * @param {GridRowState} row
22786
+ * @param {MouseEvent} event
22787
+ * @return {*} {Promise<void>}
22788
+ * @memberof GridFieldColumnController
22789
+ */
22790
+ async onActionClick(detail, row, event) {
22791
+ const actionId = detail.uiactionId;
22792
+ await UIActionUtil.execAndResolved(
22793
+ actionId,
22794
+ {
22795
+ context: this.context,
22796
+ params: this.params,
22797
+ data: [row.data],
22798
+ view: this.grid.view,
22799
+ event
22800
+ },
22801
+ detail.appId
22802
+ );
22803
+ }
22511
22804
  };
22512
22805
 
22513
22806
  // src/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.ts
22514
- import { RuntimeModelError as RuntimeModelError57 } from "@ibiz-template/core";
22807
+ import { RuntimeModelError as RuntimeModelError58 } from "@ibiz-template/core";
22515
22808
  var GridUAColumnController = class extends GridColumnController {
22516
22809
  /**
22517
22810
  * 给rowController初始化操作列的状态
@@ -22524,7 +22817,7 @@ var GridUAColumnController = class extends GridColumnController {
22524
22817
  var _a;
22525
22818
  const { deuiactionGroup } = this.model;
22526
22819
  if (!deuiactionGroup) {
22527
- throw new RuntimeModelError57(this.model, "\u64CD\u4F5C\u5217\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A\u7EC4");
22820
+ throw new RuntimeModelError58(this.model, "\u64CD\u4F5C\u5217\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A\u7EC4");
22528
22821
  }
22529
22822
  if (!((_a = deuiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {
22530
22823
  ibiz.log.debug("\u64CD\u4F5C\u5217\u754C\u9762\u884C\u4E3A\u7EC4\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A");
@@ -23076,7 +23369,7 @@ var ListController = class extends MDControlController {
23076
23369
  };
23077
23370
 
23078
23371
  // src/controller/control/panel/panel/panel.controller.ts
23079
- import { recursiveIterate as recursiveIterate7, RuntimeError as RuntimeError54 } from "@ibiz-template/core";
23372
+ import { recursiveIterate as recursiveIterate8, RuntimeError as RuntimeError54 } from "@ibiz-template/core";
23080
23373
  var PanelController = class extends ControlController {
23081
23374
  constructor(model, context, params, ctx, container) {
23082
23375
  super(model, context, params, ctx);
@@ -23285,7 +23578,7 @@ var PanelController = class extends ControlController {
23285
23578
  }
23286
23579
  initControlScheduler(logics = []) {
23287
23580
  const actualLogics = [...logics];
23288
- recursiveIterate7(
23581
+ recursiveIterate8(
23289
23582
  this.model,
23290
23583
  (item) => {
23291
23584
  if (item.controlLogics) {
@@ -23795,11 +24088,11 @@ var PickupViewPanelController = class extends ControlController {
23795
24088
  };
23796
24089
 
23797
24090
  // src/controller/control/search-bar/search-bar.controller.ts
23798
- import { recursiveIterate as recursiveIterate8 } from "@ibiz-template/core";
24091
+ import { recursiveIterate as recursiveIterate9 } from "@ibiz-template/core";
23799
24092
  import { isNil as isNil23 } from "ramda";
23800
24093
 
23801
24094
  // src/controller/control/search-bar/search-bar-filter.controller.ts
23802
- import { RuntimeModelError as RuntimeModelError58 } from "@ibiz-template/core";
24095
+ import { RuntimeModelError as RuntimeModelError59 } from "@ibiz-template/core";
23803
24096
  var SearchBarFilterController = class {
23804
24097
  constructor(model, searchBar) {
23805
24098
  this.model = model;
@@ -23827,7 +24120,7 @@ var SearchBarFilterController = class {
23827
24120
  */
23828
24121
  async init() {
23829
24122
  if (!this.model.editor) {
23830
- throw new RuntimeModelError58(this.model, "\u7F3A\u5C11\u7F16\u8F91\u5668\u6A21\u578B");
24123
+ throw new RuntimeModelError59(this.model, "\u7F3A\u5C11\u7F16\u8F91\u5668\u6A21\u578B");
23831
24124
  }
23832
24125
  this.editorProvider = await getEditorProvider(this.model.editor);
23833
24126
  if (this.editorProvider) {
@@ -23969,6 +24262,7 @@ var SearchBarController = class extends ControlController {
23969
24262
  children: [{ leaf: true, field: null, valueOP: null, value: null }]
23970
24263
  }
23971
24264
  ];
24265
+ this.evt.emit("onSearch", void 0);
23972
24266
  }
23973
24267
  /**
23974
24268
  * 初始化过滤项控制器
@@ -24001,7 +24295,7 @@ var SearchBarController = class extends ControlController {
24001
24295
  }
24002
24296
  let hasFilter = false;
24003
24297
  let hasError = false;
24004
- recursiveIterate8(this.state.filterNodes[0], (node) => {
24298
+ recursiveIterate9(this.state.filterNodes[0], (node) => {
24005
24299
  if (node.leaf) {
24006
24300
  if (node.field && node.valueOP && !isNil23(node.value)) {
24007
24301
  hasFilter = true;
@@ -24028,7 +24322,7 @@ var SearchBarController = class extends ControlController {
24028
24322
  condtype: "GROUP",
24029
24323
  condop: node.logicType,
24030
24324
  bnotmode: false,
24031
- searchcondlist: node.children.map((item) => this.formatFilters(item))
24325
+ searchconds: node.children.map((item) => this.formatFilters(item))
24032
24326
  };
24033
24327
  }
24034
24328
  return {
@@ -24277,7 +24571,11 @@ var TabExpPanelController = class extends ControlController {
24277
24571
  };
24278
24572
 
24279
24573
  // src/controller/control/tree/tree.controller.ts
24280
- import { recursiveIterate as recursiveIterate9 } from "@ibiz-template/core";
24574
+ import {
24575
+ RuntimeError as RuntimeError55,
24576
+ RuntimeModelError as RuntimeModelError60,
24577
+ recursiveIterate as recursiveIterate10
24578
+ } from "@ibiz-template/core";
24281
24579
 
24282
24580
  // src/controller/control/tree/tree.service.ts
24283
24581
  import { ModelError as ModelError29 } from "@ibiz-template/core";
@@ -24573,6 +24871,18 @@ var TreeController = class extends MDControlController {
24573
24871
  * @type {boolean}
24574
24872
  */
24575
24873
  this.enableQuickSearch = false;
24874
+ /**
24875
+ * 拖入节点关系处理
24876
+ * @author lxm
24877
+ * @date 2023-12-14 03:05:38
24878
+ */
24879
+ this.dropNodeRss = /* @__PURE__ */ new Map();
24880
+ /**
24881
+ * 节点对应的上下文菜单里第一个行为级别为常用操作的项
24882
+ * @author lxm
24883
+ * @date 2023-12-19 03:14:03
24884
+ */
24885
+ this.nodeClickTBUIActionItem = /* @__PURE__ */ new Map();
24576
24886
  }
24577
24887
  initState() {
24578
24888
  super.initState();
@@ -24610,6 +24920,8 @@ var TreeController = class extends MDControlController {
24610
24920
  this.state.placeHolder = placeHolders.join("\u3001");
24611
24921
  }
24612
24922
  }
24923
+ this.initDropNodeRss();
24924
+ this.initNodeClickTBUIActionItem();
24613
24925
  this.service = new TreeService(this.model);
24614
24926
  await this.service.init(this.context);
24615
24927
  this.model.detreeNodes.forEach((node) => {
@@ -24627,6 +24939,59 @@ var TreeController = class extends MDControlController {
24627
24939
  Object.values(this.contextMenus).map((menu) => menu.created())
24628
24940
  );
24629
24941
  }
24942
+ /**
24943
+ * 初始化节点拖入关系处理
24944
+ * @author lxm
24945
+ * @date 2023-12-14 03:13:42
24946
+ * @protected
24947
+ */
24948
+ initDropNodeRss() {
24949
+ var _a;
24950
+ (_a = this.model.detreeNodes) == null ? void 0 : _a.forEach((node) => {
24951
+ if (!node.allowDrop) {
24952
+ return;
24953
+ }
24954
+ const infos = [];
24955
+ const nodeRSs = getChildNodeRSs(this.model, {
24956
+ parentId: node.id,
24957
+ hasQuery: false
24958
+ });
24959
+ nodeRSs.forEach((nodeRS) => {
24960
+ var _a2;
24961
+ if ((_a2 = nodeRS.parentDER1N) == null ? void 0 : _a2.pickupDEFName) {
24962
+ const childNode = this.getNodeModel(nodeRS.childDETreeNodeId);
24963
+ if ((childNode == null ? void 0 : childNode.treeNodeType) === "DE" && childNode.appDataEntityId) {
24964
+ infos.push({
24965
+ minorEntityId: childNode.appDataEntityId,
24966
+ pickupDEFName: nodeRS.parentDER1N.pickupDEFName.toLowerCase(),
24967
+ childDETreeNodeId: nodeRS.childDETreeNodeId
24968
+ });
24969
+ }
24970
+ }
24971
+ });
24972
+ if (infos.length > 0) {
24973
+ this.dropNodeRss.set(node.id, infos);
24974
+ }
24975
+ });
24976
+ }
24977
+ /**
24978
+ * 初始化节点点击后触发的第一个常用操作的上下文菜单项
24979
+ * @author lxm
24980
+ * @date 2023-12-19 03:18:43
24981
+ * @protected
24982
+ */
24983
+ initNodeClickTBUIActionItem() {
24984
+ var _a;
24985
+ (_a = this.model.detreeNodes) == null ? void 0 : _a.forEach((node) => {
24986
+ var _a2, _b;
24987
+ if ((_b = (_a2 = node.decontextMenu) == null ? void 0 : _a2.detoolbarItems) == null ? void 0 : _b.length) {
24988
+ const items = getUIActionItemsByActionLevel(node.decontextMenu, 200);
24989
+ if (items.length > 0) {
24990
+ this.nodeClickTBUIActionItem.set(node.id, items[0]);
24991
+ }
24992
+ }
24993
+ });
24994
+ }
24630
24995
  /**
24631
24996
  * 树部件加载,从根节点开始重新加载
24632
24997
  *
@@ -24688,7 +25053,7 @@ var TreeController = class extends MDControlController {
24688
25053
  this.state.rootNodes = nodes;
24689
25054
  }
24690
25055
  this.state.items = [];
24691
- recursiveIterate9(
25056
+ recursiveIterate10(
24692
25057
  { children: this.state.rootNodes },
24693
25058
  (node) => {
24694
25059
  this.state.items.push(node);
@@ -24704,7 +25069,11 @@ var TreeController = class extends MDControlController {
24704
25069
  * @returns {*} {Promise<void>}
24705
25070
  * @memberof TreeController
24706
25071
  */
24707
- async onTreeNodeClick(nodeData) {
25072
+ async onTreeNodeClick(nodeData, event) {
25073
+ if (this.nodeClickTBUIActionItem.has(nodeData.nodeId)) {
25074
+ const item = this.nodeClickTBUIActionItem.get(nodeData.nodeId);
25075
+ return this.doUIAction(item.uiactionId, nodeData, event, item.appId);
25076
+ }
24708
25077
  if (this.state.navigational) {
24709
25078
  const nodeModel = this.getNodeModel(nodeData.nodeId);
24710
25079
  if (!(nodeModel == null ? void 0 : nodeModel.navAppViewId)) {
@@ -24842,7 +25211,7 @@ var TreeController = class extends MDControlController {
24842
25211
  */
24843
25212
  calcExpandedKeys(nodes) {
24844
25213
  let expandedKeys = [...this.state.expandedKeys];
24845
- recursiveIterate9({ children: nodes }, (node) => {
25214
+ recursiveIterate10({ children: nodes }, (node) => {
24846
25215
  var _a;
24847
25216
  if ((_a = node.children) == null ? void 0 : _a.length) {
24848
25217
  expandedKeys.push(node.id);
@@ -24902,10 +25271,206 @@ var TreeController = class extends MDControlController {
24902
25271
  })
24903
25272
  );
24904
25273
  }
25274
+ /**
25275
+ * 计算是否允许拖动
25276
+ * @author lxm
25277
+ * @date 2023-12-14 11:28:07
25278
+ * @param {ITreeNodeData} draggingNode
25279
+ * @return {*} {boolean}
25280
+ */
25281
+ calcAllowDrag(draggingNode) {
25282
+ const nodeModel = this.getNodeModel(draggingNode.nodeId);
25283
+ return (nodeModel == null ? void 0 : nodeModel.allowDrag) === true;
25284
+ }
25285
+ /**
25286
+ * 计算是否允许拖入
25287
+ * @author lxm
25288
+ * @date 2023-12-14 02:04:15
25289
+ * @param {ITreeNodeData} draggingNode
25290
+ * @param {ITreeNodeData} dropNode
25291
+ * @param {('inner' | 'prev' | 'next')} type
25292
+ * @return {*} {boolean}
25293
+ */
25294
+ calcAllowDrop(draggingNode, dropNode, type) {
25295
+ var _a, _b;
25296
+ const draggingNodeModel = this.getNodeModel(draggingNode.nodeId);
25297
+ if (type === "inner") {
25298
+ return !!this.findDropNodeRS(
25299
+ dropNode.nodeId,
25300
+ draggingNodeModel.appDataEntityId
25301
+ );
25302
+ }
25303
+ if (((_a = draggingNode.parent) == null ? void 0 : _a.id) !== ((_b = dropNode.parent) == null ? void 0 : _b.id)) {
25304
+ return !!this.findDropNodeRS(
25305
+ dropNode.parent.nodeId,
25306
+ draggingNodeModel.appDataEntityId
25307
+ );
25308
+ }
25309
+ const parentNodeModel = this.getNodeModel(dropNode.nodeId);
25310
+ return (parentNodeModel == null ? void 0 : parentNodeModel.allowOrder) === true;
25311
+ }
25312
+ /**
25313
+ * 找到指定父节点下的节点关系里面
25314
+ * 配置的实体关系的子实体是指定实体的
25315
+ * @author lxm
25316
+ * @date 2023-12-14 01:43:41
25317
+ * @protected
25318
+ * @param {string} parentId 父节点模型id
25319
+ * @param {string} appDataEntityId
25320
+ * @return {*} {(IDETreeNodeRS | undefined)}
25321
+ */
25322
+ findDropNodeRS(parentId, appDataEntityId) {
25323
+ const nodeRSs = this.dropNodeRss.get(parentId);
25324
+ return nodeRSs == null ? void 0 : nodeRSs.find((item) => item.minorEntityId === appDataEntityId);
25325
+ }
25326
+ /**
25327
+ * 处理节点拖入事件
25328
+ * @author lxm
25329
+ * @date 2023-12-15 04:23:29
25330
+ * @param {ITreeNodeData} draggingNode
25331
+ * @param {ITreeNodeData} dropNode
25332
+ * @param {('inner' | 'prev' | 'next')} dropType
25333
+ * @return {*} {Promise<void>}
25334
+ */
25335
+ async onNodeDrop(draggingNode, dropNode, dropType) {
25336
+ var _a, _b, _c, _d;
25337
+ if (dropType === "inner" && !dropNode.leaf && dropNode.children === void 0) {
25338
+ await this.expandNodeByKey([dropNode.id]);
25339
+ }
25340
+ const modifiedNodeDatas = [];
25341
+ const draggingNodeModel = this.getNodeModel(draggingNode.nodeId);
25342
+ const dropInNode = dropType === "inner" ? dropNode : dropNode.parent;
25343
+ const isChangedParent = ((_a = dropNode.parent) == null ? void 0 : _a.id) !== ((_b = draggingNode.parent) == null ? void 0 : _b.id);
25344
+ let orderNodeModel = this.getNodeModel(dropNode.nodeId);
25345
+ if (dropType === "inner" || ((_c = dropNode.parent) == null ? void 0 : _c.id) !== ((_d = draggingNode.parent) == null ? void 0 : _d.id)) {
25346
+ const dropNodeRs = this.findDropNodeRS(
25347
+ dropInNode.nodeId,
25348
+ draggingNodeModel.appDataEntityId
25349
+ );
25350
+ if (dropNodeRs) {
25351
+ draggingNode.deData[dropNodeRs.pickupDEFName] = dropInNode.value;
25352
+ modifiedNodeDatas.push(draggingNode);
25353
+ orderNodeModel = this.getNodeModel(dropNodeRs.childDETreeNodeId);
25354
+ }
25355
+ }
25356
+ const originArr = draggingNode.parent.children;
25357
+ originArr.splice(originArr.indexOf(draggingNode), 1);
25358
+ if (dropType === "inner") {
25359
+ if (!dropNode.children) {
25360
+ dropNode.children = [];
25361
+ dropNode.leaf = true;
25362
+ this.state.expandedKeys.push(dropNode.id);
25363
+ }
25364
+ dropNode.children.push(draggingNode);
25365
+ } else {
25366
+ let insertIndex = dropInNode.children.indexOf(dropNode);
25367
+ if (dropType === "next") {
25368
+ insertIndex += 1;
25369
+ }
25370
+ dropInNode.children.splice(insertIndex, 0, draggingNode);
25371
+ }
25372
+ if (dropType === "inner" || isChangedParent) {
25373
+ draggingNode.parent = dropInNode;
25374
+ draggingNode.nodeId = orderNodeModel.id;
25375
+ this.state.expandedKeys = this.calcExpandedKeys([dropInNode]);
25376
+ }
25377
+ const { sortAppDEFieldId, sortDir, allowOrder } = orderNodeModel;
25378
+ if (allowOrder === true) {
25379
+ if (!sortAppDEFieldId) {
25380
+ throw new RuntimeModelError60(orderNodeModel, "\u7F3A\u5C11\u914D\u7F6E\u6392\u5E8F\u5C5E\u6027");
25381
+ }
25382
+ const sortField = sortAppDEFieldId.toLowerCase();
25383
+ const isAsc = sortDir === "ASC";
25384
+ const changedArr = [...dropInNode.children];
25385
+ if (!isAsc) {
25386
+ changedArr.reverse();
25387
+ }
25388
+ const getNextSort = (num) => {
25389
+ return num + (100 - num % 100);
25390
+ };
25391
+ const getSort = (deData) => {
25392
+ return deData[sortField] || 0;
25393
+ };
25394
+ let lastSort;
25395
+ changedArr.forEach((item, index) => {
25396
+ const deData = item.deData;
25397
+ if (lastSort === void 0) {
25398
+ if (item === draggingNode) {
25399
+ if (index === 0) {
25400
+ lastSort = 100;
25401
+ } else {
25402
+ lastSort = getNextSort(getSort(changedArr[index - 1].deData));
25403
+ }
25404
+ deData[sortField] = lastSort;
25405
+ if (modifiedNodeDatas.indexOf(item) === -1) {
25406
+ modifiedNodeDatas.push(item);
25407
+ }
25408
+ }
25409
+ } else {
25410
+ if (lastSort >= getSort(deData)) {
25411
+ deData[sortField] = getNextSort(lastSort);
25412
+ modifiedNodeDatas.push(item);
25413
+ }
25414
+ lastSort = getSort(deData);
25415
+ }
25416
+ });
25417
+ }
25418
+ await this.updateDeNodeData(modifiedNodeDatas);
25419
+ this.evt.emit("onAfterNodeDrop", { isChangedParent });
25420
+ }
25421
+ /**
25422
+ * 更新实体节点数据
25423
+ * @author lxm
25424
+ * @date 2023-12-15 04:19:36
25425
+ * @protected
25426
+ * @param {ITreeNodeData[]} nodeDatas 节点数据集合
25427
+ * @return {*} {Promise<void>}
25428
+ */
25429
+ async updateDeNodeData(nodeDatas) {
25430
+ const app = ibiz.hub.getApp(this.context.srfappid);
25431
+ await Promise.all(
25432
+ nodeDatas.map(async (node) => {
25433
+ const model = this.getNodeModel(node.nodeId);
25434
+ const deData = node.deData;
25435
+ const deName = calcDeCodeNameById(model.appDataEntityId);
25436
+ const tempContext = this.context.clone();
25437
+ tempContext[deName] = deData.srfkey;
25438
+ const res = await app.deService.exec(
25439
+ model.appDataEntityId,
25440
+ "update",
25441
+ tempContext,
25442
+ deData
25443
+ );
25444
+ if (res.data) {
25445
+ node.deData = res.data;
25446
+ }
25447
+ })
25448
+ );
25449
+ }
25450
+ /**
25451
+ * 修改节点文本
25452
+ * @author lxm
25453
+ * @date 2023-12-15 04:32:52
25454
+ * @param {ITreeNodeData} nodeData
25455
+ * @param {string} text
25456
+ * @return {*} {Promise<void>}
25457
+ */
25458
+ async modifyNodeText(nodeData, text) {
25459
+ const model = this.getNodeModel(nodeData.nodeId);
25460
+ if (!model.allowEditText) {
25461
+ throw new RuntimeModelError60(model, "\u6811\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u7F16\u8F91\u6A21\u5F0F\uFF1A\u540D\u79F0");
25462
+ }
25463
+ if (!nodeData.deData) {
25464
+ throw new RuntimeError55("\u4E0D\u662F\u5B9E\u4F53\u6811\u8282\u70B9\u6570\u636E");
25465
+ }
25466
+ nodeData.text = text;
25467
+ nodeData.deData[model.textAppDEFieldId] = text;
25468
+ await this.updateDeNodeData([nodeData]);
25469
+ }
24905
25470
  };
24906
25471
 
24907
25472
  // src/controller/control/wizard-panel/wizard-panel.controller.ts
24908
- import { RuntimeError as RuntimeError55 } from "@ibiz-template/core";
25473
+ import { RuntimeError as RuntimeError56 } from "@ibiz-template/core";
24909
25474
 
24910
25475
  // src/controller/control/wizard-panel/wizard-panel.service.ts
24911
25476
  var WizardPanelService = class extends ControlService {
@@ -25071,7 +25636,7 @@ var WizardPanelController = class extends ControlController {
25071
25636
  const { activeFormTag } = this.state;
25072
25637
  const controller = this.formControllers.get(activeFormTag);
25073
25638
  if (!controller) {
25074
- throw new RuntimeError55("\u627E\u4E0D\u5230".concat(activeFormTag, "\u7684\u8868\u5355\u63A7\u5236\u5668"));
25639
+ throw new RuntimeError56("\u627E\u4E0D\u5230".concat(activeFormTag, "\u7684\u8868\u5355\u63A7\u5236\u5668"));
25075
25640
  }
25076
25641
  return controller;
25077
25642
  }
@@ -25113,7 +25678,7 @@ var WizardPanelController = class extends ControlController {
25113
25678
  getWizardFormByTag(tag) {
25114
25679
  var _a;
25115
25680
  if (!((_a = this.model.dewizard) == null ? void 0 : _a.dewizardForms)) {
25116
- throw new RuntimeError55("\u6CA1\u6709\u914D\u7F6E\u5411\u5BFC\u8868\u5355\u96C6\u5408");
25681
+ throw new RuntimeError56("\u6CA1\u6709\u914D\u7F6E\u5411\u5BFC\u8868\u5355\u96C6\u5408");
25117
25682
  return;
25118
25683
  }
25119
25684
  const wizardForm = this.model.dewizard.dewizardForms.find(
@@ -25122,7 +25687,7 @@ var WizardPanelController = class extends ControlController {
25122
25687
  }
25123
25688
  );
25124
25689
  if (!wizardForm) {
25125
- throw new RuntimeError55("\u627E\u4E0D\u5230\u6807\u8BC6\u4E3A".concat(tag, "\u7684\u5411\u5BFC\u8868\u5355"));
25690
+ throw new RuntimeError56("\u627E\u4E0D\u5230\u6807\u8BC6\u4E3A".concat(tag, "\u7684\u5411\u5BFC\u8868\u5355"));
25126
25691
  }
25127
25692
  return wizardForm;
25128
25693
  }
@@ -25193,7 +25758,7 @@ var WizardPanelController = class extends ControlController {
25193
25758
  prevTag = this.tagHistory[this.tagHistory.length - 1];
25194
25759
  }
25195
25760
  if (!prevTag) {
25196
- throw new RuntimeError55("\u6CA1\u6709\u4E0A\u4E00\u4E2A\u8868\u5355");
25761
+ throw new RuntimeError56("\u6CA1\u6709\u4E0A\u4E00\u4E2A\u8868\u5355");
25197
25762
  }
25198
25763
  this.state.activeFormTag = prevTag;
25199
25764
  }
@@ -25229,7 +25794,7 @@ var WizardPanelController = class extends ControlController {
25229
25794
  });
25230
25795
  const nextWizardStep = wizardSteps[index + 1];
25231
25796
  if (!nextWizardStep) {
25232
- throw new RuntimeError55("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u6B65\u9AA4");
25797
+ throw new RuntimeError56("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u6B65\u9AA4");
25233
25798
  }
25234
25799
  const nextWizardForm = this.getWizardFormByTag(nextWizardStep.stepTag);
25235
25800
  if (nextWizardForm && nextWizardForm.formTag) {
@@ -25238,7 +25803,7 @@ var WizardPanelController = class extends ControlController {
25238
25803
  }
25239
25804
  }
25240
25805
  if (!nextTag) {
25241
- throw new RuntimeError55("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u8868\u5355");
25806
+ throw new RuntimeError56("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u8868\u5355");
25242
25807
  }
25243
25808
  this.state.activeFormTag = nextTag;
25244
25809
  this.tagHistory.push(nextTag);
@@ -25257,7 +25822,7 @@ var WizardPanelController = class extends ControlController {
25257
25822
  };
25258
25823
 
25259
25824
  // src/controller/control/md-ctrl/md-ctrl.controller.ts
25260
- import { RuntimeModelError as RuntimeModelError59 } from "@ibiz-template/core";
25825
+ import { RuntimeModelError as RuntimeModelError61 } from "@ibiz-template/core";
25261
25826
  import { isNil as isNil24 } from "ramda";
25262
25827
 
25263
25828
  // src/controller/control/md-ctrl/md-ctrl.service.ts
@@ -25484,7 +26049,7 @@ var MDCtrlController = class extends MDControlController {
25484
26049
  const { enableGroup, groupMode, groupAppDEFieldId } = this.model;
25485
26050
  if (enableGroup && groupMode) {
25486
26051
  if (!groupAppDEFieldId) {
25487
- throw new RuntimeModelError59(this.model, "\u5206\u7EC4\u5C5E\u6027\u6CA1\u6709\u914D\u7F6E");
26052
+ throw new RuntimeModelError61(this.model, "\u5206\u7EC4\u5C5E\u6027\u6CA1\u6709\u914D\u7F6E");
25488
26053
  }
25489
26054
  if (groupMode === "AUTO") {
25490
26055
  this.handleAutoGroup();
@@ -25551,7 +26116,7 @@ var MDCtrlController = class extends MDControlController {
25551
26116
  async handleCodeListGroup() {
25552
26117
  const { groupAppDEFieldId, groupCodeListId } = this.model;
25553
26118
  if (!groupCodeListId) {
25554
- throw new RuntimeModelError59(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
26119
+ throw new RuntimeModelError61(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
25555
26120
  }
25556
26121
  const { items } = this.state;
25557
26122
  const groupMap = /* @__PURE__ */ new Map();
@@ -25581,7 +26146,7 @@ var MDCtrlController = class extends MDControlController {
25581
26146
  };
25582
26147
 
25583
26148
  // src/controller/control/kanban/kanban.controller.ts
25584
- import { RuntimeError as RuntimeError56, RuntimeModelError as RuntimeModelError60 } from "@ibiz-template/core";
26149
+ import { RuntimeError as RuntimeError57, RuntimeModelError as RuntimeModelError62 } from "@ibiz-template/core";
25585
26150
  import { isNil as isNil25 } from "ramda";
25586
26151
 
25587
26152
  // src/controller/control/kanban/kanban.service.ts
@@ -25656,10 +26221,10 @@ var KanbanController = class extends DataViewControlController {
25656
26221
  const sortField = this.model.minorSortAppDEFieldId;
25657
26222
  const { minorSortDir } = this.model;
25658
26223
  if (!sortField) {
25659
- throw new RuntimeModelError60(this.model, "\u6392\u5E8F\u5C5E\u6027\u6CA1\u914D\u7F6E");
26224
+ throw new RuntimeModelError62(this.model, "\u6392\u5E8F\u5C5E\u6027\u6CA1\u914D\u7F6E");
25660
26225
  }
25661
26226
  if (!minorSortDir) {
25662
- throw new RuntimeModelError60(this.model, "\u6392\u5E8F\u65B9\u5411\u6CA1\u914D\u7F6E");
26227
+ throw new RuntimeModelError62(this.model, "\u6392\u5E8F\u65B9\u5411\u6CA1\u914D\u7F6E");
25663
26228
  }
25664
26229
  const isAsc = minorSortDir === "ASC";
25665
26230
  items.forEach((item) => {
@@ -25669,7 +26234,7 @@ var KanbanController = class extends DataViewControlController {
25669
26234
  } else {
25670
26235
  const toNum = Number(sortValue);
25671
26236
  if (Number.isNaN(toNum)) {
25672
- throw new RuntimeError56(
26237
+ throw new RuntimeError57(
25673
26238
  "".concat(item.srfmajortext, "\u7684\u6392\u5E8F\u5C5E\u6027\u65E0\u6CD5\u8F6C\u6362\u6210\u6570\u503C")
25674
26239
  );
25675
26240
  }
@@ -25685,10 +26250,82 @@ var KanbanController = class extends DataViewControlController {
25685
26250
  }
25686
26251
  handleDataGroup() {
25687
26252
  if (!this.model.enableGroup || this.model.groupMode === "NONE") {
25688
- throw new RuntimeError56("\u770B\u677F\u90E8\u4EF6\u5FC5\u987B\u5F00\u542F\u5206\u7EC4");
26253
+ throw new RuntimeError57("\u770B\u677F\u90E8\u4EF6\u5FC5\u987B\u5F00\u542F\u5206\u7EC4");
25689
26254
  }
25690
26255
  return super.handleDataGroup();
25691
26256
  }
26257
+ /**
26258
+ * 处理自动分组
26259
+ *
26260
+ * @memberof KanbanController
26261
+ */
26262
+ handleAutoGroup() {
26263
+ const { groupAppDEFieldId } = this.model;
26264
+ if (groupAppDEFieldId) {
26265
+ const { items } = this.state;
26266
+ const groupMap = /* @__PURE__ */ new Map();
26267
+ items.forEach((item) => {
26268
+ const groupVal = item[groupAppDEFieldId];
26269
+ if (isNil25(groupVal)) {
26270
+ return;
26271
+ }
26272
+ if (!groupMap.has(groupVal)) {
26273
+ groupMap.set(groupVal, []);
26274
+ }
26275
+ groupMap.get(groupVal).push(item);
26276
+ });
26277
+ const groups = [];
26278
+ groupMap.forEach((value, key) => {
26279
+ const codeListItem = this.groupCodeListItems.find(
26280
+ (item) => item.value === key
26281
+ );
26282
+ groups.push({
26283
+ caption: codeListItem.text,
26284
+ color: codeListItem.color,
26285
+ key: codeListItem.value,
26286
+ children: [...value]
26287
+ });
26288
+ });
26289
+ this.state.groups = groups;
26290
+ }
26291
+ }
26292
+ /**
26293
+ * 处理代码表分组
26294
+ *
26295
+ * @return {*} {Promise<void>}
26296
+ * @memberof KanbanController
26297
+ */
26298
+ async handleCodeListGroup() {
26299
+ const { groupAppDEFieldId, groupCodeListId } = this.model;
26300
+ if (!groupCodeListId) {
26301
+ throw new RuntimeModelError62(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
26302
+ }
26303
+ const { items } = this.state;
26304
+ const groupMap = /* @__PURE__ */ new Map();
26305
+ this.groupCodeListItems.forEach((item) => {
26306
+ groupMap.set(item.value, []);
26307
+ });
26308
+ items.forEach((item) => {
26309
+ const groupVal = item[groupAppDEFieldId];
26310
+ const groupArr = groupMap.get(groupVal);
26311
+ if (groupArr) {
26312
+ groupArr.push(item);
26313
+ }
26314
+ });
26315
+ const groups = [];
26316
+ groupMap.forEach((arr, key) => {
26317
+ const codeListItem = this.groupCodeListItems.find(
26318
+ (item) => item.value === key
26319
+ );
26320
+ groups.push({
26321
+ caption: codeListItem.text,
26322
+ color: codeListItem.color,
26323
+ key: codeListItem.value,
26324
+ children: arr
26325
+ });
26326
+ });
26327
+ this.state.groups = groups;
26328
+ }
25692
26329
  /**
25693
26330
  * 拖拽变更事件处理回调
25694
26331
  * @author lxm
@@ -25809,7 +26446,7 @@ var KanbanController = class extends DataViewControlController {
25809
26446
  };
25810
26447
 
25811
26448
  // src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts
25812
- import { recursiveIterate as recursiveIterate10 } from "@ibiz-template/core";
26449
+ import { recursiveIterate as recursiveIterate11 } from "@ibiz-template/core";
25813
26450
 
25814
26451
  // src/controller/control/tree-grid-ex/tree-grid-ex.service.ts
25815
26452
  import { isArray as isArray10 } from "qx-util";
@@ -26049,7 +26686,7 @@ var TreeGridExController = class extends MDControlController {
26049
26686
  * @memberof TreeGridExController
26050
26687
  */
26051
26688
  initColumnStates() {
26052
- recursiveIterate10(
26689
+ recursiveIterate11(
26053
26690
  this.model,
26054
26691
  (column) => {
26055
26692
  if (column.columnType !== "GROUPGRIDCOLUMN") {
@@ -26137,7 +26774,7 @@ var TreeGridExController = class extends MDControlController {
26137
26774
  this.state.rootNodes = nodes;
26138
26775
  }
26139
26776
  this.state.items = [];
26140
- recursiveIterate10(
26777
+ recursiveIterate11(
26141
26778
  { children: this.state.rootNodes },
26142
26779
  (node) => {
26143
26780
  this.state.items.push(node);
@@ -26156,7 +26793,7 @@ var TreeGridExController = class extends MDControlController {
26156
26793
  */
26157
26794
  calcExpandedKeys(nodes) {
26158
26795
  let expandedKeys = [];
26159
- recursiveIterate10({ children: nodes }, (node) => {
26796
+ recursiveIterate11({ children: nodes }, (node) => {
26160
26797
  var _a;
26161
26798
  if ((_a = node.children) == null ? void 0 : _a.length) {
26162
26799
  expandedKeys.push(node.id);
@@ -26179,8 +26816,8 @@ var TreeGridService = class extends GridService {
26179
26816
  };
26180
26817
 
26181
26818
  // src/controller/control/medit-view-panel/medit-view-panel.controller.ts
26182
- import { RuntimeError as RuntimeError57 } from "@ibiz-template/core";
26183
- import { createUUID as createUUID11 } from "qx-util";
26819
+ import { RuntimeError as RuntimeError58 } from "@ibiz-template/core";
26820
+ import { createUUID as createUUID12 } from "qx-util";
26184
26821
 
26185
26822
  // src/controller/control/medit-view-panel/medit-view-panel.service.ts
26186
26823
  var MEditViewPanelService = class extends MDControlService {
@@ -26267,7 +26904,7 @@ var MEditViewPanelController = class extends MDControlController {
26267
26904
  */
26268
26905
  handlePanelItemParams(arg) {
26269
26906
  const [{ parameterName }] = this.parameters;
26270
- const id = arg[parameterName] ? arg[parameterName] : "mockId:".concat(createUUID11());
26907
+ const id = arg[parameterName] ? arg[parameterName] : "mockId:".concat(createUUID12());
26271
26908
  const item = {
26272
26909
  id,
26273
26910
  context: this.context.clone(),
@@ -26395,7 +27032,7 @@ var MEditViewPanelController = class extends MDControlController {
26395
27032
  (item) => item.id === id
26396
27033
  );
26397
27034
  if (panelUiItemIndex < 0) {
26398
- throw new RuntimeError57("\u7F16\u8F91\u89C6\u56FE\u9762\u677F\u90E8\u4EF6UI\u6570\u636E\u4E0D\u5B58\u5728");
27035
+ throw new RuntimeError58("\u7F16\u8F91\u89C6\u56FE\u9762\u677F\u90E8\u4EF6UI\u6570\u636E\u4E0D\u5B58\u5728");
26399
27036
  }
26400
27037
  const tempUiItem = this.state.panelUiItems[panelUiItemIndex];
26401
27038
  if (tempUiItem.id.startsWith("mockId:")) {
@@ -26708,7 +27345,7 @@ var UserReportPanelGenerator = class extends ReportPanelBaseGenerator {
26708
27345
  callBack: "{{ const nodes = data.controller.graph.getNodes(); if (nodes.length < 25) { data.controller.graph.zoomTo(1); data.controller.graph.fitCenter() } }}"
26709
27346
  }
26710
27347
  ],
26711
- nodeDataHook: "{{ data.forEach(node => { const type = node.data.source_lables || node.data.target_lables; Object.assign(node, { label: node.data.name, size: 66, style: { fill: node.color },donutAttrs: { prop1: 10000, prop2: 10 },donutColorMap: { prop1: node.color, prop2: node.color },icon: {show: true,img: type === 'NEO4J_ZT' ? resource.dir('/assets/images/user-avatar.png') : resource.dir('/assets/images/phone.png'),width: 40,height: 40}})})}}",
27348
+ nodeDataHook: "{{ data.forEach(node => { const type = node.data.source_lables || node.data.target_lables; Object.assign(node, { label: node.data.name, size: 66, style: { fill: node.color },donutAttrs: { prop1: 10000, prop2: 10 },donutColorMap: { prop1: node.color, prop2: node.color },icon: {show: true,img: type === 'NEO4J_ZT' ? resource.dir('assets/images/user-avatar.png') : resource.dir('assets/images/phone.png'),width: 40,height: 40}})})}}",
26712
27349
  edgeDataHook: "{{ data.forEach(edge => {Object.assign(edge, { label: edge.name })}) }}"
26713
27350
  }
26714
27351
  };
@@ -26902,7 +27539,7 @@ var ReportPanelController = class extends ControlController {
26902
27539
  };
26903
27540
 
26904
27541
  // src/controller/control/gantt/gantt.controller.ts
26905
- import { recursiveIterate as recursiveIterate11 } from "@ibiz-template/core";
27542
+ import { recursiveIterate as recursiveIterate12 } from "@ibiz-template/core";
26906
27543
 
26907
27544
  // src/controller/control/gantt/gantt.service.ts
26908
27545
  import { ModelError as ModelError30 } from "@ibiz-template/core";
@@ -27141,6 +27778,34 @@ var GanttService = class extends TreeService {
27141
27778
  var GanttController = class extends MDControlController {
27142
27779
  constructor() {
27143
27780
  super(...arguments);
27781
+ /**
27782
+ * 表格列适配器
27783
+ *
27784
+ * @type {{ [key: string]: IGridColumnProvider }}
27785
+ * @memberof GanttController
27786
+ */
27787
+ this.providers = {};
27788
+ /**
27789
+ * 所有表格列控制器集合
27790
+ *
27791
+ * @type {{ [key: string]: GridColumnController }}
27792
+ * @memberof GanttController
27793
+ */
27794
+ this.columns = {};
27795
+ /**
27796
+ * 所有表格属性列的控制器
27797
+ *
27798
+ * @type {{ [key: string]: GridFieldColumnController }}
27799
+ * @memberof GanttController
27800
+ */
27801
+ this.fieldColumns = {};
27802
+ /**
27803
+ * 所有表格操作列的控制器
27804
+ *
27805
+ * @type {{ [key: string]: GridUAColumnController }}
27806
+ * @memberof GanttController
27807
+ */
27808
+ this.uaColumns = {};
27144
27809
  /**
27145
27810
  * 上下文菜单控制器
27146
27811
  *
@@ -27169,10 +27834,14 @@ var GanttController = class extends MDControlController {
27169
27834
  super.initState();
27170
27835
  this.state.size = 0;
27171
27836
  this.state.query = "";
27837
+ this.state.columnStates = [];
27838
+ this.state.rootNodes = [];
27172
27839
  }
27173
27840
  async onCreated() {
27174
27841
  var _a, _b;
27175
27842
  await super.onCreated();
27843
+ await this.initGridColumns();
27844
+ this.initColumnStates();
27176
27845
  if ((_a = this.model.detreeNodes) == null ? void 0 : _a[0].enableQuickSearch) {
27177
27846
  this.enableQuickSearch = true;
27178
27847
  }
@@ -27214,6 +27883,86 @@ var GanttController = class extends MDControlController {
27214
27883
  Object.values(this.contextMenus).map((menu) => menu.created())
27215
27884
  );
27216
27885
  }
27886
+ /**
27887
+ * 初始化表格列
27888
+ *
27889
+ * @protected
27890
+ * @return {*} {Promise<void>}
27891
+ * @memberof GanttController
27892
+ */
27893
+ async initGridColumns() {
27894
+ if (this.model.detreeColumns) {
27895
+ await Promise.all(
27896
+ this.model.detreeColumns.map(
27897
+ async (column) => this.initColumnsController(column)
27898
+ )
27899
+ );
27900
+ }
27901
+ }
27902
+ /**
27903
+ * 初始化表格属性列,操作列,编辑项控制器
27904
+ *
27905
+ * @protected
27906
+ * @param {IDETreeColumn} column
27907
+ * @return {*} {Promise<void>}
27908
+ * @memberof GanttController
27909
+ */
27910
+ async initColumnsController(column) {
27911
+ const provider = await getGridColumnProvider(column);
27912
+ if (!provider) {
27913
+ return;
27914
+ }
27915
+ this.providers[column.codeName] = provider;
27916
+ const controller = await provider.createController(column, this);
27917
+ this.columns[column.codeName] = controller;
27918
+ if (column.columnType === "DEFGRIDCOLUMN") {
27919
+ this.fieldColumns[column.codeName] = controller;
27920
+ } else if (column.columnType === "UAGRIDCOLUMN") {
27921
+ this.uaColumns[column.codeName] = controller;
27922
+ }
27923
+ }
27924
+ /**
27925
+ * 初始化表格列状态
27926
+ *
27927
+ * @protected
27928
+ * @memberof GanttController
27929
+ */
27930
+ initColumnStates() {
27931
+ recursiveIterate12(
27932
+ this.model,
27933
+ (column) => {
27934
+ if (column.columnType !== "GROUPGRIDCOLUMN") {
27935
+ this.state.columnStates.push({
27936
+ key: column.codeName,
27937
+ caption: column.caption,
27938
+ hidden: !!column.hideDefault,
27939
+ uaColumn: column.columnType === "UAGRIDCOLUMN"
27940
+ });
27941
+ }
27942
+ },
27943
+ { childrenFields: ["detreeColumns"] }
27944
+ );
27945
+ this.calcColumnFixed();
27946
+ }
27947
+ /**
27948
+ * 计算列的固定状态
27949
+ *
27950
+ * @protected
27951
+ * @memberof GanttController
27952
+ */
27953
+ calcColumnFixed() {
27954
+ const showColumns = this.state.columnStates.filter(
27955
+ (column) => !column.hidden
27956
+ );
27957
+ const allNum = showColumns.length;
27958
+ showColumns.forEach((column, index) => {
27959
+ if (column.uaColumn) {
27960
+ column.fixed = index + 1 <= Math.floor(allNum / 2) ? "left" : "right";
27961
+ } else {
27962
+ column.fixed = "right";
27963
+ }
27964
+ });
27965
+ }
27217
27966
  /**
27218
27967
  * 加载
27219
27968
  *
@@ -27242,6 +27991,17 @@ var GanttController = class extends MDControlController {
27242
27991
  });
27243
27992
  return nodes;
27244
27993
  }
27994
+ /**
27995
+ * 获取节点模型
27996
+ *
27997
+ * @param {string} id
27998
+ * @return {*} {(IDETreeNode | undefined)}
27999
+ * @memberof GanttController
28000
+ */
28001
+ getNodeModel(id) {
28002
+ var _a;
28003
+ return (_a = this.model.detreeNodes) == null ? void 0 : _a.find((item) => item.id === id);
28004
+ }
27245
28005
  /**
27246
28006
  * 获取查询参数
27247
28007
  *
@@ -27286,7 +28046,7 @@ var GanttController = class extends MDControlController {
27286
28046
  this.state.rootNodes = nodes;
27287
28047
  }
27288
28048
  this.state.items = [];
27289
- recursiveIterate11(
28049
+ recursiveIterate12(
27290
28050
  { children: this.state.rootNodes },
27291
28051
  (node) => {
27292
28052
  this.state.items.push(node);
@@ -27294,6 +28054,154 @@ var GanttController = class extends MDControlController {
27294
28054
  );
27295
28055
  return nodes;
27296
28056
  }
28057
+ /**
28058
+ * 甘特节点点击事件
28059
+ *
28060
+ * @param {IGanttNodeData} nodeData
28061
+ * @return {*} {Promise<void>}
28062
+ * @memberof GanttController
28063
+ */
28064
+ async onGanttNodeClick(nodeData) {
28065
+ if (this.state.singleSelect) {
28066
+ const { selectedData } = this.state;
28067
+ const filterArr = selectedData.filter((item) => item.id !== nodeData.id);
28068
+ if (filterArr.length === selectedData.length) {
28069
+ this.setSelection(
28070
+ this.state.singleSelect ? [nodeData] : selectedData.concat([nodeData])
28071
+ );
28072
+ } else {
28073
+ this.setSelection(filterArr);
28074
+ }
28075
+ }
28076
+ if (this.state.mdctrlActiveMode === 1) {
28077
+ await this.setActive(nodeData);
28078
+ }
28079
+ }
28080
+ /**
28081
+ * 甘特节点双击事件
28082
+ *
28083
+ * @param {IGanttNodeData} nodeData
28084
+ * @return {*} {Promise<void>}
28085
+ * @memberof GanttController
28086
+ */
28087
+ async onDbGanttNodeClick(nodeData) {
28088
+ if (this.state.mdctrlActiveMode === 2) {
28089
+ await this.setActive(nodeData);
28090
+ }
28091
+ }
28092
+ /**
28093
+ * 设置激活
28094
+ *
28095
+ * @param {IGanttNodeData} item
28096
+ * @return {*} {Promise<void>}
28097
+ * @memberof GanttController
28098
+ */
28099
+ setActive(item) {
28100
+ const nodeParams = this.parseGanttNodeData(item);
28101
+ return this.evt.emit("onActive", { ...nodeParams, nodeData: item });
28102
+ }
28103
+ /**
28104
+ * 设置选中
28105
+ *
28106
+ * @param {IData[]} selection
28107
+ * @memberof GanttController
28108
+ */
28109
+ setSelection(selection) {
28110
+ const selectionIds = selection.map((item) => item.id);
28111
+ const filterArr = this.state.items.filter(
28112
+ (item) => selectionIds.includes(item.id)
28113
+ );
28114
+ super.setSelection(filterArr);
28115
+ }
28116
+ /**
28117
+ * 执行界面行为
28118
+ *
28119
+ * @param {string} uiActionId
28120
+ * @param {IGanttNodeData} nodeData
28121
+ * @param {MouseEvent} event
28122
+ * @param {string} appId
28123
+ * @return {*} {Promise<void>}
28124
+ * @memberof GanttController
28125
+ */
28126
+ async doUIAction(uiActionId, nodeData, event, appId) {
28127
+ const eventArgs = this.getEventArgs();
28128
+ const nodeParams = this.parseGanttNodeData(nodeData);
28129
+ const result = await UIActionUtil.exec(
28130
+ uiActionId,
28131
+ {
28132
+ ...eventArgs,
28133
+ ...nodeParams,
28134
+ event
28135
+ },
28136
+ appId
28137
+ );
28138
+ if (result.closeView) {
28139
+ this.view.closeView();
28140
+ } else if (result.refresh) {
28141
+ switch (result.refreshMode) {
28142
+ case 1:
28143
+ this.refreshNodeChildren(nodeData);
28144
+ break;
28145
+ case 2:
28146
+ this.refreshNodeChildren(nodeData, true);
28147
+ break;
28148
+ case 3:
28149
+ this.refresh();
28150
+ break;
28151
+ default:
28152
+ }
28153
+ }
28154
+ }
28155
+ /**
28156
+ * 解析甘特节点获取通用数据,和完整的上下文和视图参数。
28157
+ *
28158
+ * @protected
28159
+ * @param {IGanttNodeData} nodeData
28160
+ * @return {*} {{
28161
+ * data: IData[];
28162
+ * context: IContext;
28163
+ * params: IParams;
28164
+ * }}
28165
+ * @memberof GanttController
28166
+ */
28167
+ parseGanttNodeData(nodeData) {
28168
+ return {
28169
+ data: [{ ...nodeData, ...nodeData.deData || {} }],
28170
+ context: Object.assign(this.context.clone(), nodeData.context || {}),
28171
+ params: { ...this.params, ...nodeData.params || {} }
28172
+ };
28173
+ }
28174
+ /**
28175
+ * 刷新指定树节点的子节点数据
28176
+ *
28177
+ * @param {(IGanttNodeData | IData)} nodeData 指定树节点数据,可以是节点数据,也可以是对应的实体数据
28178
+ * @param {boolean} [refreshParent=false] 是否是刷新给定节点数据的父节点的子节点数据
28179
+ * @return {*} {Promise<void>}
28180
+ * @memberof GanttController
28181
+ */
28182
+ async refreshNodeChildren(nodeData, refreshParent = false) {
28183
+ const key = nodeData.srfkey ? "srfkey" : "id";
28184
+ const currentNode = this.state.items.find(
28185
+ (item) => item[key] === nodeData[key]
28186
+ );
28187
+ if (!currentNode) {
28188
+ ibiz.log.error("\u627E\u4E0D\u5230\u5BF9\u5E94\u7684\u6811\u8282\u70B9\u6570\u636E", nodeData);
28189
+ return;
28190
+ }
28191
+ if (refreshParent) {
28192
+ const { parent } = currentNode;
28193
+ if (!parent || !this.model.rootVisible && this.state.rootNodes.includes(parent)) {
28194
+ this.refresh();
28195
+ return;
28196
+ }
28197
+ }
28198
+ const targetNode = refreshParent ? currentNode.parent : currentNode;
28199
+ const nodes = await this.loadNodes(targetNode);
28200
+ this.evt.emit("onAfterRefreshParent", {
28201
+ parentNode: targetNode,
28202
+ children: nodes
28203
+ });
28204
+ }
27297
28205
  };
27298
28206
 
27299
28207
  // src/controller/hub.controller.ts
@@ -27492,7 +28400,7 @@ var AppHub = class {
27492
28400
  this.registerAppView(appView);
27493
28401
  return appView;
27494
28402
  }
27495
- throw new RuntimeError58("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
28403
+ throw new RuntimeError59("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
27496
28404
  }
27497
28405
  /**
27498
28406
  * 根据应用实体代码名称查找应用视图
@@ -27523,7 +28431,7 @@ var AppHub = class {
27523
28431
  this.registerAppDataEntity(entity, appId);
27524
28432
  return entity;
27525
28433
  }
27526
- throw new RuntimeError58("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
28434
+ throw new RuntimeError59("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
27527
28435
  }
27528
28436
  /**
27529
28437
  * 新建 hub 应用
@@ -27538,7 +28446,7 @@ var AppHub = class {
27538
28446
  return this.appMap.get(id);
27539
28447
  }
27540
28448
  if (!this.modelLoaderProvider) {
27541
- throw new RuntimeError58("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
28449
+ throw new RuntimeError59("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
27542
28450
  }
27543
28451
  const appModel = await this.modelLoaderProvider.getApp(id);
27544
28452
  const app = new Application(appModel);
@@ -27638,7 +28546,7 @@ var EngineFactory = class {
27638
28546
  };
27639
28547
 
27640
28548
  // src/engine/view-base.engine.ts
27641
- import { RuntimeError as RuntimeError59 } from "@ibiz-template/core";
28549
+ import { RuntimeError as RuntimeError60 } from "@ibiz-template/core";
27642
28550
  var ViewEngineBase = class {
27643
28551
  /**
27644
28552
  * 构造函数在视图控制器的构造函数逻辑内部执行
@@ -27826,7 +28734,7 @@ var ViewEngineBase = class {
27826
28734
  const { appDataEntityId } = this.view.model;
27827
28735
  const { evt, context, params } = this.view;
27828
28736
  if (!appDataEntityId) {
27829
- throw new RuntimeError59("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
28737
+ throw new RuntimeError60("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
27830
28738
  }
27831
28739
  const app = ibiz.hub.getApp(context.srfappid);
27832
28740
  const res = await app.deService.exec(
@@ -27847,7 +28755,7 @@ var ViewEngineBase = class {
27847
28755
  };
27848
28756
 
27849
28757
  // src/engine/md-view.engine.ts
27850
- import { RuntimeModelError as RuntimeModelError61 } from "@ibiz-template/core";
28758
+ import { RuntimeModelError as RuntimeModelError63 } from "@ibiz-template/core";
27851
28759
  import { clone as clone24 } from "ramda";
27852
28760
  var MDViewEngine = class extends ViewEngineBase {
27853
28761
  /**
@@ -28031,7 +28939,7 @@ var MDViewEngine = class extends ViewEngineBase {
28031
28939
  view: this.view
28032
28940
  }));
28033
28941
  if (result === -1) {
28034
- throw new RuntimeModelError61(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28942
+ throw new RuntimeModelError63(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28035
28943
  } else {
28036
28944
  return {
28037
28945
  cancel: !result.ok
@@ -28054,7 +28962,7 @@ var MDViewEngine = class extends ViewEngineBase {
28054
28962
  (item) => item.id === "newdata"
28055
28963
  );
28056
28964
  if (!openAppViewLogic) {
28057
- throw new RuntimeModelError61(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28965
+ throw new RuntimeModelError63(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28058
28966
  }
28059
28967
  const params = clone24(this.view.params);
28060
28968
  if (copyMode) {
@@ -28068,7 +28976,7 @@ var MDViewEngine = class extends ViewEngineBase {
28068
28976
  view: this.view
28069
28977
  }));
28070
28978
  if (result === -1) {
28071
- throw new RuntimeModelError61(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28979
+ throw new RuntimeModelError63(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28072
28980
  } else {
28073
28981
  return {
28074
28982
  cancel: !result.ok
@@ -28187,15 +29095,15 @@ var MDViewEngine = class extends ViewEngineBase {
28187
29095
 
28188
29096
  // src/utils/error-handler/default-error-handler.ts
28189
29097
  import {
28190
- RuntimeModelError as RuntimeModelError62,
29098
+ RuntimeModelError as RuntimeModelError64,
28191
29099
  ModelError as ModelError31,
28192
29100
  HttpError as HttpError5,
28193
29101
  NoticeError as NoticeError2,
28194
- RuntimeError as RuntimeError60
29102
+ RuntimeError as RuntimeError61
28195
29103
  } from "@ibiz-template/core";
28196
29104
  var DefaultErrorHandler = class {
28197
29105
  handle(error) {
28198
- if (error instanceof RuntimeModelError62 || error instanceof ModelError31) {
29106
+ if (error instanceof RuntimeModelError64 || error instanceof ModelError31) {
28199
29107
  ibiz.message.error(error.message, 10, true);
28200
29108
  } else if (error instanceof HttpError5) {
28201
29109
  if (error.status === 401) {
@@ -28209,7 +29117,7 @@ var DefaultErrorHandler = class {
28209
29117
  }
28210
29118
  } else if (error instanceof NoticeError2) {
28211
29119
  ibiz.message.error(error.message, error.duration, error.duration === 0);
28212
- } else if (error instanceof RuntimeError60) {
29120
+ } else if (error instanceof RuntimeError61) {
28213
29121
  ibiz.message.error(error.message, 10, true);
28214
29122
  }
28215
29123
  ibiz.log.error(error);
@@ -28351,7 +29259,7 @@ var GlobalUtil = class {
28351
29259
  };
28352
29260
 
28353
29261
  // src/logic-scheduler/executor/logic-executor.ts
28354
- import { RuntimeError as RuntimeError61 } from "@ibiz-template/core";
29262
+ import { RuntimeError as RuntimeError62 } from "@ibiz-template/core";
28355
29263
  var LogicExecutor = class {
28356
29264
  /**
28357
29265
  * @author lxm
@@ -28372,7 +29280,7 @@ var LogicExecutor = class {
28372
29280
  */
28373
29281
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28374
29282
  execute(_executeParams) {
28375
- throw new RuntimeError61("Method not implemented.");
29283
+ throw new RuntimeError62("Method not implemented.");
28376
29284
  }
28377
29285
  /**
28378
29286
  * 销毁方法
@@ -28463,13 +29371,13 @@ var ScriptExecutor = class extends LogicExecutor {
28463
29371
  };
28464
29372
 
28465
29373
  // src/logic-scheduler/executor/app-de-ui-logic-executor.ts
28466
- import { RuntimeModelError as RuntimeModelError63 } from "@ibiz-template/core";
29374
+ import { RuntimeModelError as RuntimeModelError65 } from "@ibiz-template/core";
28467
29375
  var AppDEUILogicExecutor = class extends LogicExecutor {
28468
29376
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28469
29377
  execute(executeParams) {
28470
29378
  const { appDEUILogicId, appDataEntityId } = this.logic;
28471
29379
  if (!appDEUILogicId) {
28472
- throw new RuntimeModelError63(this.logic, "\u6CA1\u6709\u914D\u7F6E\u5B9E\u4F53\u754C\u9762\u903B\u8F91");
29380
+ throw new RuntimeModelError65(this.logic, "\u6CA1\u6709\u914D\u7F6E\u5B9E\u4F53\u754C\u9762\u903B\u8F91");
28473
29381
  }
28474
29382
  execUILogic(appDEUILogicId, appDataEntityId, executeParams);
28475
29383
  }
@@ -28809,7 +29717,7 @@ var LogicSchedulerCenter = class {
28809
29717
  };
28810
29718
 
28811
29719
  // src/logic-scheduler/trigger/logic-trigger.ts
28812
- import { RuntimeError as RuntimeError62 } from "@ibiz-template/core";
29720
+ import { RuntimeError as RuntimeError63 } from "@ibiz-template/core";
28813
29721
  var LogicTrigger = class {
28814
29722
  /**
28815
29723
  * @author lxm
@@ -28869,7 +29777,7 @@ var LogicTrigger = class {
28869
29777
  if (this.executor) {
28870
29778
  return this.executor.execute(executeParams);
28871
29779
  }
28872
- throw new RuntimeError62("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
29780
+ throw new RuntimeError63("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
28873
29781
  }
28874
29782
  /**
28875
29783
  * 销毁方法
@@ -28886,12 +29794,12 @@ var CustomTrigger = class extends LogicTrigger {
28886
29794
  };
28887
29795
 
28888
29796
  // src/logic-scheduler/trigger/item-dyna-logic-trigger.ts
28889
- import { RuntimeError as RuntimeError63 } from "@ibiz-template/core";
29797
+ import { RuntimeError as RuntimeError64 } from "@ibiz-template/core";
28890
29798
  var ItemDynaLogicTrigger = class extends LogicTrigger {
28891
29799
  bindExecutor(executor) {
28892
29800
  super.bindExecutor(executor);
28893
29801
  if (this.executor.type !== "SCRIPT") {
28894
- throw new RuntimeError63(
29802
+ throw new RuntimeError64(
28895
29803
  "\u9884\u5B9A\u4E49\u903B\u8F91\u7C7B\u578B".concat(this.type, "\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u53EA\u80FD\u662F\u811A\u672C")
28896
29804
  );
28897
29805
  }
@@ -28927,7 +29835,7 @@ var ItemDynaLogicTrigger = class extends LogicTrigger {
28927
29835
  };
28928
29836
 
28929
29837
  // src/logic-scheduler/trigger/timer-trigger.ts
28930
- import { RuntimeError as RuntimeError64, RuntimeModelError as RuntimeModelError64 } from "@ibiz-template/core";
29838
+ import { RuntimeError as RuntimeError65, RuntimeModelError as RuntimeModelError66 } from "@ibiz-template/core";
28931
29839
  var TimerTrigger = class extends LogicTrigger {
28932
29840
  constructor() {
28933
29841
  super(...arguments);
@@ -28935,11 +29843,11 @@ var TimerTrigger = class extends LogicTrigger {
28935
29843
  }
28936
29844
  start() {
28937
29845
  if (!this.logic.timer) {
28938
- throw new RuntimeModelError64(this.logic, "\u5B9A\u65F6\u5668\u7F3A\u5C11\u5B9A\u65F6\u95F4\u9694");
29846
+ throw new RuntimeModelError66(this.logic, "\u5B9A\u65F6\u5668\u7F3A\u5C11\u5B9A\u65F6\u95F4\u9694");
28939
29847
  }
28940
29848
  this.timer = setInterval(() => {
28941
29849
  if (!this.scheduler.defaultParamsCb) {
28942
- throw new RuntimeError64("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
29850
+ throw new RuntimeError65("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
28943
29851
  }
28944
29852
  const params = this.scheduler.defaultParamsCb();
28945
29853
  this.executor.execute(params);
@@ -28956,8 +29864,8 @@ var TimerTrigger = class extends LogicTrigger {
28956
29864
  // src/logic-scheduler/executor/app-ui-logic-executor.ts
28957
29865
  import {
28958
29866
  ModelError as ModelError34,
28959
- RuntimeError as RuntimeError65,
28960
- RuntimeModelError as RuntimeModelError65
29867
+ RuntimeError as RuntimeError66,
29868
+ RuntimeModelError as RuntimeModelError67
28961
29869
  } from "@ibiz-template/core";
28962
29870
  import { notNilEmpty as notNilEmpty9 } from "qx-util";
28963
29871
  var AppUILogicExecutor = class extends LogicExecutor {
@@ -28965,12 +29873,12 @@ var AppUILogicExecutor = class extends LogicExecutor {
28965
29873
  async execute(executeParams) {
28966
29874
  let result;
28967
29875
  try {
28968
- if (this.logic.id === "opendata" && this.logic.builtinAppUILogic) {
29876
+ if (this.logic.builtinAppUILogic && this.logic.builtinAppUILogic.viewLogicType === "APP_OPENDATA") {
28969
29877
  result = await this.executeOpenDataAppUILogic(
28970
29878
  this.logic.builtinAppUILogic,
28971
29879
  executeParams
28972
29880
  );
28973
- } else if (this.logic.id === "newdata" && this.logic.builtinAppUILogic) {
29881
+ } else if (this.logic.builtinAppUILogic && this.logic.builtinAppUILogic.viewLogicType === "APP_NEWDATA") {
28974
29882
  result = await this.executeNewDataAppUILogic(
28975
29883
  this.logic.builtinAppUILogic,
28976
29884
  executeParams
@@ -28994,7 +29902,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
28994
29902
  const { context, params, ...rest } = parameters;
28995
29903
  const { data } = parameters;
28996
29904
  if (!(data == null ? void 0 : data[0])) {
28997
- throw new RuntimeError65("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
29905
+ throw new RuntimeError66("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
28998
29906
  }
28999
29907
  const openViewRefs = appUILogic.openDataAppViews;
29000
29908
  let openViewRef;
@@ -29003,7 +29911,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29003
29911
  } else {
29004
29912
  openViewRef = appUILogic.openDataAppView;
29005
29913
  if (!openViewRef) {
29006
- throw new RuntimeModelError65(
29914
+ throw new RuntimeModelError67(
29007
29915
  appUILogic,
29008
29916
  "opendata\u89C6\u56FE\u903B\u8F91\u6CA1\u6709\u914D\u7F6E\u9ED8\u8BA4\u6253\u5F00\u89C6\u56FE"
29009
29917
  );
@@ -29011,7 +29919,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29011
29919
  }
29012
29920
  const openView = openViewRef.refAppViewId;
29013
29921
  if (!openView) {
29014
- throw new RuntimeModelError65(
29922
+ throw new RuntimeModelError67(
29015
29923
  appUILogic,
29016
29924
  "opendata\u89C6\u56FE\u903B\u8F91\u7684\u9ED8\u8BA4\u6253\u5F00\u89C6\u56FE\u6CA1\u6709\u5B9E\u9645\u5F15\u7528\u89C6\u56FE"
29017
29925
  );
@@ -29041,7 +29949,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29041
29949
  );
29042
29950
  const typeFileName = appDataEntity.formTypeAppDEFieldId || appDataEntity.dataTypeAppDEFieldId;
29043
29951
  if (!typeFileName) {
29044
- throw new RuntimeModelError65(
29952
+ throw new RuntimeModelError67(
29045
29953
  appUILogic,
29046
29954
  "".concat(appDataEntity.codeName, "[\u591A\u8868\u5355\u5B9E\u4F53] or [\u7D22\u5F15\u5B9E\u4F53]\u7F3A\u5C11\u7C7B\u578B\u5C5E\u6027\u914D\u7F6E")
29047
29955
  );
@@ -29049,12 +29957,12 @@ var AppUILogicExecutor = class extends LogicExecutor {
29049
29957
  const { data } = parameters;
29050
29958
  const formTypeValue = data[0][typeFileName];
29051
29959
  if (!formTypeValue) {
29052
- throw new RuntimeModelError65(appUILogic, "\u6570\u636E\u6E90\u65E0\u8868\u5355\u7C7B\u578B\u5E94\u7528\u5B9E\u4F53\u5C5E\u6027\u503C");
29960
+ throw new RuntimeModelError67(appUILogic, "\u6570\u636E\u6E90\u65E0\u8868\u5355\u7C7B\u578B\u5E94\u7528\u5B9E\u4F53\u5C5E\u6027\u503C");
29053
29961
  }
29054
29962
  const openViewRefs = appUILogic.openDataAppViews;
29055
29963
  const findView = openViewRefs == null ? void 0 : openViewRefs.find((item) => item.refMode === formTypeValue);
29056
29964
  if (!findView) {
29057
- throw new RuntimeError65(
29965
+ throw new RuntimeError66(
29058
29966
  "\u6CA1\u6709\u627E\u5230\u4E0E\u8868\u5355\u7C7B\u578B".concat(formTypeValue, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
29059
29967
  );
29060
29968
  }
@@ -29091,7 +29999,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29091
29999
  return viewRef.refMode.toLowerCase() !== parentDeName;
29092
30000
  });
29093
30001
  if (!newViewRef) {
29094
- throw new RuntimeModelError65(
30002
+ throw new RuntimeModelError67(
29095
30003
  appUILogic,
29096
30004
  "\u6CA1\u6709\u627E\u5230\u6279\u6DFB\u52A0\u9700\u8981\u6253\u5F00\u7684\u9009\u62E9\u89C6\u56FE"
29097
30005
  );
@@ -29101,7 +30009,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29101
30009
  } else {
29102
30010
  newViewRef = newDataAppView;
29103
30011
  if (!newViewRef || !newViewRef.refAppViewId) {
29104
- throw new RuntimeModelError65(
30012
+ throw new RuntimeModelError67(
29105
30013
  appUILogic,
29106
30014
  "newdata\u89C6\u56FE\u903B\u8F91\u6CA1\u6709\u914D\u7F6E\u9ED8\u8BA4\u65B0\u5EFA\u6570\u636E\u89C6\u56FE"
29107
30015
  );
@@ -29159,7 +30067,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29159
30067
  const { wizardAppView, newDataAppViews } = appUILogic;
29160
30068
  const { context, params, ...rest } = parameters;
29161
30069
  if (!wizardAppView || !wizardAppView.refAppViewId) {
29162
- throw new RuntimeModelError65(appUILogic, "\u7F3A\u5C11\u9ED8\u8BA4\u7D22\u5F15\u5B9E\u4F53\u9009\u62E9\u89C6\u56FE");
30070
+ throw new RuntimeModelError67(appUILogic, "\u7F3A\u5C11\u9ED8\u8BA4\u7D22\u5F15\u5B9E\u4F53\u9009\u62E9\u89C6\u56FE");
29163
30071
  }
29164
30072
  const result = await ibiz.commands.execute(
29165
30073
  OpenAppViewCommand.TAG,
@@ -29173,7 +30081,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29173
30081
  }
29174
30082
  const selectData = (_a = result.data) == null ? void 0 : _a[0];
29175
30083
  if (!selectData) {
29176
- throw new RuntimeError65("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
30084
+ throw new RuntimeError66("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
29177
30085
  }
29178
30086
  const indexType = selectData.srfkey;
29179
30087
  const findView = newDataAppViews == null ? void 0 : newDataAppViews.find(
@@ -29183,7 +30091,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29183
30091
  }
29184
30092
  );
29185
30093
  if (!findView) {
29186
- throw new RuntimeError65(
30094
+ throw new RuntimeError66(
29187
30095
  "\u6CA1\u6709\u627E\u5230\u4E0E\u7D22\u5F15\u7C7B\u578B".concat(indexType, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
29188
30096
  );
29189
30097
  }
@@ -29210,7 +30118,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29210
30118
  const minorDERs = selfDe.minorAppDERSs;
29211
30119
  const pickParentDeName = newViewRef.refMode.toLowerCase();
29212
30120
  if (!minorDERs) {
29213
- throw new RuntimeModelError65(selfDe, "\u5B9E\u4F53\u6CA1\u6709\u4ECE\u5173\u7CFB\u96C6\u5408\uFF01");
30121
+ throw new RuntimeModelError67(selfDe, "\u5B9E\u4F53\u6CA1\u6709\u4ECE\u5173\u7CFB\u96C6\u5408\uFF01");
29214
30122
  }
29215
30123
  let pickParentFieldName;
29216
30124
  minorDERs == null ? void 0 : minorDERs.forEach((item) => {
@@ -29309,12 +30217,12 @@ var ControlEventTrigger = class extends LogicTrigger {
29309
30217
  };
29310
30218
 
29311
30219
  // src/logic-scheduler/executor/app-ui-action-executor.ts
29312
- import { RuntimeModelError as RuntimeModelError66 } from "@ibiz-template/core";
30220
+ import { RuntimeModelError as RuntimeModelError68 } from "@ibiz-template/core";
29313
30221
  var AppDEUIActionExecutor = class extends LogicExecutor {
29314
30222
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
29315
30223
  execute(executeParams) {
29316
30224
  if (!this.logic.appDEUIActionId) {
29317
- throw new RuntimeModelError66(
30225
+ throw new RuntimeModelError68(
29318
30226
  this.logic,
29319
30227
  "\u903B\u8F91\u4E2D\u7F3A\u5C11\u89E6\u53D1\u5E94\u7528\u5B9E\u4F53\u754C\u9762\u884C\u4E3Aid"
29320
30228
  );
@@ -29748,6 +30656,7 @@ export {
29748
30656
  getRootNode,
29749
30657
  getTreeNode,
29750
30658
  getUIActionById,
30659
+ getUIActionItemsByActionLevel,
29751
30660
  getUIActionProvider,
29752
30661
  getUILogicNodeProvider,
29753
30662
  getViewEngines,