@ibiz-template/runtime 0.4.11 → 0.4.13

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 (192) hide show
  1. package/dist/index.esm.js +1190 -282
  2. package/dist/index.system.min.js +2 -2
  3. package/out/config/global-config.d.ts.map +1 -1
  4. package/out/config/global-config.js +1 -0
  5. package/out/controller/common/base.controller.d.ts +7 -0
  6. package/out/controller/common/base.controller.d.ts.map +1 -1
  7. package/out/controller/common/base.controller.js +10 -0
  8. package/out/controller/common/control/control.controller.d.ts +14 -0
  9. package/out/controller/common/control/control.controller.d.ts.map +1 -1
  10. package/out/controller/common/control/control.controller.js +21 -0
  11. package/out/controller/common/control/md-control.controller.d.ts +9 -0
  12. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  13. package/out/controller/common/control/md-control.controller.js +20 -0
  14. package/out/controller/common/view/view.controller.d.ts +15 -1
  15. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  16. package/out/controller/common/view/view.controller.js +23 -4
  17. package/out/controller/control/app-menu/app-menu.controller.d.ts +7 -0
  18. package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -1
  19. package/out/controller/control/app-menu/app-menu.controller.js +22 -0
  20. package/out/controller/control/caption-bar/caption-bar.controller.d.ts.map +1 -1
  21. package/out/controller/control/caption-bar/caption-bar.controller.js +1 -6
  22. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  23. package/out/controller/control/form/edit-form/edit-form.controller.js +9 -22
  24. package/out/controller/control/form/edit-form/edit-form.service.d.ts +3 -2
  25. package/out/controller/control/form/edit-form/edit-form.service.d.ts.map +1 -1
  26. package/out/controller/control/form/edit-form/edit-form.service.js +11 -2
  27. package/out/controller/control/form/form/form.controller.d.ts +0 -7
  28. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  29. package/out/controller/control/form/form/form.controller.js +0 -11
  30. package/out/controller/control/form/form/form.service.d.ts +24 -0
  31. package/out/controller/control/form/form/form.service.d.ts.map +1 -0
  32. package/out/controller/control/form/form/form.service.js +45 -0
  33. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
  34. package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +5 -1
  35. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
  36. package/out/controller/control/form/form-detail/form-item/form-item.controller.js +0 -5
  37. package/out/controller/control/form/search-form/search-form.controller.d.ts.map +1 -1
  38. package/out/controller/control/form/search-form/search-form.controller.js +1 -5
  39. package/out/controller/control/form/search-form/search-form.service.d.ts +4 -3
  40. package/out/controller/control/form/search-form/search-form.service.d.ts.map +1 -1
  41. package/out/controller/control/form/search-form/search-form.service.js +8 -3
  42. package/out/controller/control/gantt/gantt.controller.d.ts +146 -2
  43. package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
  44. package/out/controller/control/gantt/gantt.controller.js +270 -0
  45. package/out/controller/control/grid/grid/grid-row.state.d.ts +11 -0
  46. package/out/controller/control/grid/grid/grid-row.state.d.ts.map +1 -1
  47. package/out/controller/control/grid/grid/grid-row.state.js +13 -0
  48. package/out/controller/control/grid/grid/grid.controller.d.ts +7 -0
  49. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  50. package/out/controller/control/grid/grid/grid.controller.js +27 -0
  51. package/out/controller/control/grid/grid/grid.service.d.ts.map +1 -1
  52. package/out/controller/control/grid/grid/grid.service.js +30 -20
  53. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +21 -1
  54. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
  55. package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +44 -1
  56. package/out/controller/control/kanban/kanban.controller.d.ts +13 -0
  57. package/out/controller/control/kanban/kanban.controller.d.ts.map +1 -1
  58. package/out/controller/control/kanban/kanban.controller.js +72 -0
  59. package/out/controller/control/report-panel/generator/user-generator.js +1 -1
  60. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  61. package/out/controller/control/search-bar/search-bar.controller.js +11 -6
  62. package/out/controller/control/toolbar/toolbar.controllerr.d.ts +7 -0
  63. package/out/controller/control/toolbar/toolbar.controllerr.d.ts.map +1 -1
  64. package/out/controller/control/toolbar/toolbar.controllerr.js +22 -0
  65. package/out/controller/control/tree/tree.controller.d.ts +75 -0
  66. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  67. package/out/controller/control/tree/tree.controller.js +264 -1
  68. package/out/interface/common/i-global-config/i-global-view-config.d.ts +7 -0
  69. package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
  70. package/out/interface/controller/controller/control/i-control.controller.d.ts +14 -0
  71. package/out/interface/controller/controller/control/i-control.controller.d.ts.map +1 -1
  72. package/out/interface/controller/controller/view/i-view.controller.d.ts +14 -0
  73. package/out/interface/controller/controller/view/i-view.controller.d.ts.map +1 -1
  74. package/out/interface/controller/event/control/i-gantt.event.d.ts +42 -0
  75. package/out/interface/controller/event/control/i-gantt.event.d.ts.map +1 -1
  76. package/out/interface/controller/event/control/i-tree.event.d.ts +17 -0
  77. package/out/interface/controller/event/control/i-tree.event.d.ts.map +1 -1
  78. package/out/interface/controller/state/control/i-control.state.d.ts +8 -0
  79. package/out/interface/controller/state/control/i-control.state.d.ts.map +1 -1
  80. package/out/interface/controller/state/control/i-gantt.state.d.ts +22 -0
  81. package/out/interface/controller/state/control/i-gantt.state.d.ts.map +1 -1
  82. package/out/interface/controller/state/control/i-grid.state.d.ts +11 -0
  83. package/out/interface/controller/state/control/i-grid.state.d.ts.map +1 -1
  84. package/out/interface/controller/state/control/i-kanban.state.d.ts +24 -0
  85. package/out/interface/controller/state/control/i-kanban.state.d.ts.map +1 -1
  86. package/out/interface/controller/state/control/i-tree.state.d.ts +7 -0
  87. package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
  88. package/out/interface/controller/state/view/i-view.state.d.ts +8 -0
  89. package/out/interface/controller/state/view/i-view.state.d.ts.map +1 -1
  90. package/out/interface/provider/i-grid-column.provider.d.ts +2 -2
  91. package/out/interface/provider/i-grid-column.provider.d.ts.map +1 -1
  92. package/out/interface/service/i-data-entity/i-data-entity.d.ts +8 -0
  93. package/out/interface/service/i-data-entity/i-data-entity.d.ts.map +1 -1
  94. package/out/interface/service/service/i-app-de.service.d.ts +11 -0
  95. package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
  96. package/out/interface/service/service/i-auth.service.d.ts +3 -2
  97. package/out/interface/service/service/i-auth.service.d.ts.map +1 -1
  98. package/out/logic-scheduler/executor/app-ui-logic-executor.d.ts.map +1 -1
  99. package/out/logic-scheduler/executor/app-ui-logic-executor.js +4 -2
  100. package/out/register/helper/grid-column-register.d.ts +2 -2
  101. package/out/register/helper/grid-column-register.d.ts.map +1 -1
  102. package/out/register/helper/grid-column-register.js +14 -0
  103. package/out/service/dto/method.dto.d.ts.map +1 -1
  104. package/out/service/dto/method.dto.js +8 -1
  105. package/out/service/service/auth/v7-auth.service.d.ts +1 -1
  106. package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
  107. package/out/service/service/auth/v7-auth.service.js +12 -7
  108. package/out/service/service/entity/de.service.d.ts +9 -1
  109. package/out/service/service/entity/de.service.d.ts.map +1 -1
  110. package/out/service/service/entity/de.service.js +69 -0
  111. package/out/service/service/entity/method/fetch.d.ts +5 -12
  112. package/out/service/service/entity/method/fetch.d.ts.map +1 -1
  113. package/out/service/service/entity/method/fetch.js +7 -74
  114. package/out/service/utils/de-cache/de-cache.js +2 -2
  115. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts +1 -0
  116. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts.map +1 -1
  117. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts +2 -0
  118. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts.map +1 -1
  119. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.js +2 -1
  120. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts +7 -0
  121. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts.map +1 -1
  122. package/out/service/vo/gantt-node-data/gantt-node-data-util.js +18 -0
  123. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts +1 -0
  124. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts.map +1 -1
  125. package/out/service/vo/tree-node-data/tree-code-list-node-data.d.ts.map +1 -1
  126. package/out/service/vo/tree-node-data/tree-code-list-node-data.js +8 -4
  127. package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
  128. package/out/service/vo/tree-node-data/tree-data-set-node-data.js +8 -4
  129. package/out/service/vo/tree-node-data/tree-node-data.d.ts +1 -0
  130. package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
  131. package/out/service/vo/tree-node-data/tree-node-data.js +2 -0
  132. package/out/service/vo/tree-node-data/tree-static-node-data.d.ts.map +1 -1
  133. package/out/service/vo/tree-node-data/tree-static-node-data.js +8 -2
  134. package/out/utils/layout-panel-util/layout-panel-util.d.ts.map +1 -1
  135. package/out/utils/layout-panel-util/layout-panel-util.js +16 -2
  136. package/package.json +3 -3
  137. package/src/config/global-config.ts +1 -0
  138. package/src/controller/common/base.controller.ts +11 -0
  139. package/src/controller/common/control/control.controller.ts +23 -0
  140. package/src/controller/common/control/md-control.controller.ts +21 -0
  141. package/src/controller/common/view/view.controller.ts +27 -5
  142. package/src/controller/control/app-menu/app-menu.controller.ts +25 -0
  143. package/src/controller/control/caption-bar/caption-bar.controller.ts +1 -8
  144. package/src/controller/control/form/edit-form/edit-form.controller.ts +11 -26
  145. package/src/controller/control/form/edit-form/edit-form.service.ts +11 -2
  146. package/src/controller/control/form/form/form.controller.ts +0 -14
  147. package/src/controller/control/form/form/form.service.ts +63 -0
  148. package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +9 -1
  149. package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +0 -5
  150. package/src/controller/control/form/search-form/search-form.controller.ts +1 -5
  151. package/src/controller/control/form/search-form/search-form.service.ts +8 -3
  152. package/src/controller/control/gantt/gantt.controller.ts +331 -1
  153. package/src/controller/control/grid/grid/grid-row.state.ts +15 -0
  154. package/src/controller/control/grid/grid/grid.controller.ts +34 -0
  155. package/src/controller/control/grid/grid/grid.service.ts +34 -21
  156. package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +67 -2
  157. package/src/controller/control/kanban/kanban.controller.ts +81 -0
  158. package/src/controller/control/report-panel/generator/user-generator.ts +1 -1
  159. package/src/controller/control/search-bar/search-bar.controller.ts +12 -8
  160. package/src/controller/control/toolbar/toolbar.controllerr.ts +29 -0
  161. package/src/controller/control/tree/tree.controller.ts +327 -2
  162. package/src/interface/common/i-global-config/i-global-view-config.ts +8 -0
  163. package/src/interface/controller/controller/control/i-control.controller.ts +16 -0
  164. package/src/interface/controller/controller/view/i-view.controller.ts +16 -0
  165. package/src/interface/controller/event/control/i-gantt.event.ts +37 -1
  166. package/src/interface/controller/event/control/i-tree.event.ts +14 -0
  167. package/src/interface/controller/state/control/i-control.state.ts +9 -0
  168. package/src/interface/controller/state/control/i-gantt.state.ts +25 -0
  169. package/src/interface/controller/state/control/i-grid.state.ts +10 -0
  170. package/src/interface/controller/state/control/i-kanban.state.ts +26 -0
  171. package/src/interface/controller/state/control/i-tree.state.ts +8 -0
  172. package/src/interface/controller/state/view/i-view.state.ts +9 -0
  173. package/src/interface/provider/i-grid-column.provider.ts +2 -2
  174. package/src/interface/service/i-data-entity/i-data-entity.ts +9 -0
  175. package/src/interface/service/service/i-app-de.service.ts +12 -0
  176. package/src/interface/service/service/i-auth.service.ts +3 -2
  177. package/src/logic-scheduler/executor/app-ui-logic-executor.ts +8 -2
  178. package/src/register/helper/grid-column-register.ts +17 -2
  179. package/src/service/dto/method.dto.ts +8 -1
  180. package/src/service/service/auth/v7-auth.service.ts +18 -8
  181. package/src/service/service/entity/de.service.ts +74 -1
  182. package/src/service/service/entity/method/fetch.ts +8 -79
  183. package/src/service/utils/de-cache/de-cache.ts +2 -2
  184. package/src/service/vo/gantt-node-data/gantt-code-list-node-data.ts +2 -0
  185. package/src/service/vo/gantt-node-data/gantt-data-set-node-data.ts +6 -1
  186. package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +21 -0
  187. package/src/service/vo/gantt-node-data/gantt-static-node-data.ts +2 -0
  188. package/src/service/vo/tree-node-data/tree-code-list-node-data.ts +10 -5
  189. package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +10 -5
  190. package/src/service/vo/tree-node-data/tree-node-data.ts +3 -0
  191. package/src/service/vo/tree-node-data/tree-static-node-data.ts +10 -3
  192. package/src/utils/layout-panel-util/layout-panel-util.ts +17 -2
package/dist/index.esm.js CHANGED
@@ -4,7 +4,8 @@ var GlobalConfig = class {
4
4
  // 全局视图配置
5
5
  this.view = {
6
6
  enableDataInfoBar: true,
7
- expCacheMode: "TABEXPPANEL:"
7
+ expCacheMode: "TABEXPPANEL:",
8
+ disableHomeTabs: false
8
9
  };
9
10
  // 全局表格配置
10
11
  this.grid = {
@@ -2028,10 +2029,20 @@ var LayoutPanelUtil = class {
2028
2029
  } else if (mainMenuAlign) {
2029
2030
  exTag = mainMenuAlign.toUpperCase();
2030
2031
  }
2032
+ let key = "";
2031
2033
  if (exTag !== "") {
2032
- return "".concat(viewType, "_").concat(viewStyle, "_").concat(exTag);
2034
+ key = "".concat(viewType, "_").concat(viewStyle, "_").concat(exTag);
2035
+ } else {
2036
+ key = "".concat(viewType, "_").concat(viewStyle);
2037
+ }
2038
+ if (ibiz.config.view.disableHomeTabs && [
2039
+ "APPINDEXVIEW_DEFAULT",
2040
+ "APPINDEXVIEW_DEFAULT_LEFT",
2041
+ "APPINDEXVIEW_DEFAULT_TOP"
2042
+ ].includes(key)) {
2043
+ key += "_NO_NAV";
2033
2044
  }
2034
- return "".concat(viewType, "_").concat(viewStyle);
2045
+ return key;
2035
2046
  }
2036
2047
  };
2037
2048
 
@@ -3310,6 +3321,7 @@ function getProvider5(key) {
3310
3321
  async function getGridColumnProvider(model) {
3311
3322
  let provider;
3312
3323
  const { columnType, enableRowEdit, sysPFPluginId, appId } = model;
3324
+ const { renderSysPFPluginId } = model;
3313
3325
  if (sysPFPluginId) {
3314
3326
  const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);
3315
3327
  if (pluginKey) {
@@ -3321,6 +3333,17 @@ async function getGridColumnProvider(model) {
3321
3333
  return provider;
3322
3334
  }
3323
3335
  }
3336
+ if (renderSysPFPluginId) {
3337
+ const pluginKey = await getPluginRegisterKey(renderSysPFPluginId, appId);
3338
+ if (pluginKey) {
3339
+ provider = getProvider5(pluginKey);
3340
+ }
3341
+ if (!provider) {
3342
+ ibiz.log.error("\u627E\u4E0D\u5230\u6811\u8868\u683C\u5217\u63D2\u4EF6".concat(pluginKey, "\u5BF9\u5E94\u7684\u9002\u914D\u5668"));
3343
+ } else {
3344
+ return provider;
3345
+ }
3346
+ }
3324
3347
  const key = enableRowEdit ? "".concat(columnType, "_EDIT") : columnType;
3325
3348
  provider = getProvider5(key);
3326
3349
  if (!provider) {
@@ -4633,11 +4656,11 @@ var DECache = class {
4633
4656
  );
4634
4657
  const unionValues = unionKeys.map((key) => {
4635
4658
  if (isNil5(data[key])) {
4636
- throw new RuntimeError13("\u8054\u5408\u952E\u503C\u8BA1\u7B97\u5F02\u5E38\uFF0C".concat(key, "\u5C5E\u6027\u4E3A\u7A7A\u503C\uFF01"));
4659
+ return "__empty__";
4637
4660
  }
4638
4661
  return data[key];
4639
4662
  });
4640
- data.srfkey = unionValues.join("");
4663
+ data.srfkey = unionValues.join("||");
4641
4664
  }
4642
4665
  };
4643
4666
 
@@ -5064,6 +5087,8 @@ import {
5064
5087
  ModelError as ModelError5,
5065
5088
  RuntimeError as RuntimeError16
5066
5089
  } from "@ibiz-template/core";
5090
+ import { equals as equals2, isEmpty as isEmpty7, where as where2 } from "ramda";
5091
+ import { ascSort } from "qx-util";
5067
5092
 
5068
5093
  // src/service/service/work-flow/work-flow.service.ts
5069
5094
  import { RuntimeError as RuntimeError15 } from "@ibiz-template/core";
@@ -5532,6 +5557,55 @@ var DEService = class {
5532
5557
  fetchTempDefault(context, params, params2) {
5533
5558
  return this.exec("FetchTempDefault", context, params, params2);
5534
5559
  }
5560
+ /**
5561
+ * 查询本地数据,根据属性
5562
+ *
5563
+ * @param {IParams} context
5564
+ * @param {IParams} params 根据多实体属性查找,例:{ name: '张三', age: 18, parent: null }
5565
+ * @return {*} {Promise<IDataEntity[]>}
5566
+ */
5567
+ async selectLocal(context, params = {}) {
5568
+ let items = this.local.getList(context);
5569
+ items = ascSort(items, "srfordervalue");
5570
+ const data = {};
5571
+ const nullData = {};
5572
+ const undefinedData = {};
5573
+ const emptyData = {};
5574
+ if (params.srfkey) {
5575
+ data.srfkey = equals2(params.srfkey);
5576
+ delete params.srfkey;
5577
+ }
5578
+ for (const key in params) {
5579
+ if (Object.prototype.hasOwnProperty.call(params, key)) {
5580
+ const val = params[key];
5581
+ if (val == null) {
5582
+ nullData[key] = equals2(null);
5583
+ undefinedData[key] = equals2(void 0);
5584
+ emptyData[key] = equals2("");
5585
+ } else {
5586
+ data[key] = equals2(val);
5587
+ }
5588
+ }
5589
+ }
5590
+ if (!isEmpty7(data)) {
5591
+ const pred = where2(data);
5592
+ const nullPred = where2(nullData);
5593
+ const undefinedPred = where2(undefinedData);
5594
+ const emptyPred = where2(emptyData);
5595
+ items = items.filter((obj) => {
5596
+ if (isEmpty7(nullData)) {
5597
+ if (pred(obj)) {
5598
+ return true;
5599
+ }
5600
+ } else if (pred(obj) && (nullPred(obj) || undefinedPred(obj) || emptyPred(obj))) {
5601
+ return true;
5602
+ }
5603
+ return false;
5604
+ });
5605
+ }
5606
+ const list = items.map((obj) => obj.clone());
5607
+ return list;
5608
+ }
5535
5609
  /**
5536
5610
  * 执行服务方法 ac 模式
5537
5611
  *
@@ -6268,21 +6342,24 @@ var AuthorityService = class {
6268
6342
  import { CoreConst } from "@ibiz-template/core";
6269
6343
  import { clearCookie, getCookie, setCookie } from "qx-util";
6270
6344
  var V7AuthService = class {
6271
- async login(loginname, password, rememberme) {
6345
+ async login(loginName, password, remember) {
6272
6346
  try {
6273
6347
  const res = await ibiz.net.post("/v7/login", {
6274
- loginname,
6348
+ loginname: loginName,
6275
6349
  password,
6276
- rememberme
6350
+ rememberme: remember
6277
6351
  });
6278
6352
  const { data } = res;
6279
6353
  if (data && data.token) {
6280
- setCookie(CoreConst.TOKEN, data.token, rememberme ? 7 : 0, true);
6354
+ if (remember) {
6355
+ setCookie(CoreConst.TOKEN_REMEMBER, "1", 7, true);
6356
+ }
6357
+ setCookie(CoreConst.TOKEN, data.token, remember ? 7 : 0, true);
6281
6358
  const expiredDate = (/* @__PURE__ */ new Date()).getTime() + (data.expirein || 7199) * 1e3;
6282
6359
  setCookie(
6283
6360
  CoreConst.TOKEN_EXPIRES,
6284
6361
  "".concat(expiredDate),
6285
- rememberme ? 7 : 0,
6362
+ remember ? 7 : 0,
6286
6363
  true
6287
6364
  );
6288
6365
  }
@@ -6300,6 +6377,7 @@ var V7AuthService = class {
6300
6377
  await ibiz.net.get("/v7/logout");
6301
6378
  clearCookie(CoreConst.TOKEN);
6302
6379
  clearCookie(CoreConst.TOKEN_EXPIRES);
6380
+ clearCookie(CoreConst.TOKEN_REMEMBER);
6303
6381
  return true;
6304
6382
  } catch (err) {
6305
6383
  ibiz.notification.error({
@@ -6312,6 +6390,7 @@ var V7AuthService = class {
6312
6390
  async extendLogin() {
6313
6391
  const token = getCookie(CoreConst.TOKEN);
6314
6392
  const expirein = getCookie(CoreConst.TOKEN_EXPIRES);
6393
+ const remember = getCookie(CoreConst.TOKEN_REMEMBER);
6315
6394
  if (token && expirein) {
6316
6395
  let wait = Number(expirein) - (/* @__PURE__ */ new Date()).getTime();
6317
6396
  const early = 5 * 60 * 1e3;
@@ -6319,9 +6398,14 @@ var V7AuthService = class {
6319
6398
  setTimeout(async () => {
6320
6399
  const res = await ibiz.net.get("/uaa/refreshtoken2");
6321
6400
  if (res.ok) {
6322
- setCookie(CoreConst.TOKEN, res.data.token, 0, true);
6401
+ setCookie(CoreConst.TOKEN, res.data.token, remember ? 7 : 0, true);
6323
6402
  const expiredDate = (/* @__PURE__ */ new Date()).getTime() + (res.data.expirein || 7199) * 1e3;
6324
- setCookie(CoreConst.TOKEN_EXPIRES, "".concat(expiredDate), 0, true);
6403
+ setCookie(
6404
+ CoreConst.TOKEN_EXPIRES,
6405
+ "".concat(expiredDate),
6406
+ remember ? 7 : 0,
6407
+ true
6408
+ );
6325
6409
  }
6326
6410
  this.extendLogin();
6327
6411
  }, wait);
@@ -6640,7 +6724,9 @@ var MethodDto = class _MethodDto {
6640
6724
  const service = await this.app.deService.getService(
6641
6725
  field.refAppDataEntityId
6642
6726
  );
6643
- const items = service.local.getList(context);
6727
+ const items = await service.selectLocal(context, {
6728
+ srfpkey: data[this.entity.keyAppDEFieldId]
6729
+ });
6644
6730
  if (items) {
6645
6731
  const arr = [];
6646
6732
  for (let j = 0; j < items.length; j++) {
@@ -6687,6 +6773,10 @@ var MethodDto = class _MethodDto {
6687
6773
  const dto = await this.getFieldDto(field);
6688
6774
  const items = datum[key];
6689
6775
  if (items) {
6776
+ const pKey = datum[this.entity.keyAppDEFieldId];
6777
+ items.forEach((item) => {
6778
+ item.srfpkey = pKey;
6779
+ });
6690
6780
  await dto.sets(context, items);
6691
6781
  } else {
6692
6782
  await dto.sets(context, []);
@@ -8418,9 +8508,9 @@ import {
8418
8508
  ModelError as ModelError13,
8419
8509
  RuntimeModelError as RuntimeModelError20
8420
8510
  } from "@ibiz-template/core";
8421
- import { ascSort, descSort } from "qx-util";
8422
- import { clone as clone13, equals as equals2, isEmpty as isEmpty7, isNil as isNil11, where as where2 } from "ramda";
8423
8511
  import { isArray as isArray8 } from "lodash-es";
8512
+ import { clone as clone13, isEmpty as isEmpty8, isNil as isNil11 } from "ramda";
8513
+ import { ascSort as ascSort2, descSort } from "qx-util";
8424
8514
  var FetchMethod = class extends Method {
8425
8515
  get isLocalMode() {
8426
8516
  return isLocalMode(this.method);
@@ -8466,63 +8556,14 @@ var FetchMethod = class extends Method {
8466
8556
  }
8467
8557
  return res;
8468
8558
  }
8469
- /**
8470
- * 查询本地数据,根据属性
8471
- *
8472
- * @param {IParams} context
8473
- * @param {IParams} params 根据多实体属性查找,例:{ name: '张三', age: 18, parent: null }
8474
- * @return {*} {Promise<IDataEntity[]>}
8475
- */
8476
- async selectLocal(context, params = {}) {
8477
- const service = await this.getService();
8478
- let items = service.local.getList(context);
8479
- items = ascSort(items, "srfordervalue");
8480
- const data = {};
8481
- const nullData = {};
8482
- const undefinedData = {};
8483
- const emptyData = {};
8484
- if (params.srfkey) {
8485
- data.srfkey = equals2(params.srfkey);
8486
- delete params.srfkey;
8487
- }
8488
- for (const key in params) {
8489
- if (Object.prototype.hasOwnProperty.call(params, key)) {
8490
- const val = params[key];
8491
- if (val == null) {
8492
- nullData[key] = equals2(null);
8493
- undefinedData[key] = equals2(void 0);
8494
- emptyData[key] = equals2("");
8495
- } else {
8496
- data[key] = equals2(val);
8497
- }
8498
- }
8499
- }
8500
- if (!isEmpty7(data)) {
8501
- const pred = where2(data);
8502
- const nullPred = where2(nullData);
8503
- const undefinedPred = where2(undefinedData);
8504
- const emptyPred = where2(emptyData);
8505
- items = items.filter((obj) => {
8506
- if (isEmpty7(nullData)) {
8507
- if (pred(obj)) {
8508
- return true;
8509
- }
8510
- } else if (pred(obj) && (nullPred(obj) || undefinedPred(obj) || emptyPred(obj))) {
8511
- return true;
8512
- }
8513
- return false;
8514
- });
8515
- }
8516
- const list = items.map((obj) => obj.clone());
8517
- return list;
8518
- }
8519
8559
  /**
8520
8560
  * 搜索本地数据
8521
8561
  *
8522
- * @protected
8523
- * @param {PSDEDQCondEngine | null} cond 查询实例
8562
+ * @author chitanda
8563
+ * @date 2023-12-18 11:12:27
8564
+ * @param {(PSDEDQCondEngine | null)} cond 查询实例
8524
8565
  * @param {SearchFilter} filter 过滤对象
8525
- * @param {string[]} [queryParamKeys=this.entity.quickSearchKeys] 当前实体支持快速搜索的属性
8566
+ * @param {string[]} [queryParamKeys=this.entity.quickSearchAppDEFieldIds!] 当前实体支持快速搜索的属性
8526
8567
  * @return {*} {Promise<IDataEntity[]>}
8527
8568
  */
8528
8569
  async searchLocal(cond, filter, queryParamKeys = this.entity.quickSearchAppDEFieldIds) {
@@ -8534,7 +8575,7 @@ var FetchMethod = class extends Method {
8534
8575
  list = list.filter((obj) => cond.test(obj, filter));
8535
8576
  }
8536
8577
  } else {
8537
- list = await this.selectLocal(filter.context, filter.data);
8578
+ list = await service.selectLocal(filter.context, filter.data);
8538
8579
  if (list.length > 0) {
8539
8580
  if (filter.query && filter.query !== "") {
8540
8581
  if (queryParamKeys) {
@@ -8553,11 +8594,11 @@ var FetchMethod = class extends Method {
8553
8594
  }
8554
8595
  }
8555
8596
  }
8556
- if (!isNil11(filter.sortField) && !isEmpty7(filter.sortField)) {
8597
+ if (!isNil11(filter.sortField) && !isEmpty8(filter.sortField)) {
8557
8598
  if (filter.sortMode === "DESC") {
8558
8599
  list = descSort(list, filter.sortField);
8559
8600
  } else {
8560
- list = ascSort(list, filter.sortField);
8601
+ list = ascSort2(list, filter.sortField);
8561
8602
  }
8562
8603
  }
8563
8604
  const { page, size } = filter;
@@ -8620,8 +8661,10 @@ function presetDEMethodProvider() {
8620
8661
  }
8621
8662
 
8622
8663
  // src/service/vo/tree-node-data/tree-node-data.ts
8664
+ import { createUUID as createUUID4 } from "qx-util";
8623
8665
  var TreeNodeData = class {
8624
8666
  constructor(model, parentNodeData, opts) {
8667
+ this._uuid = createUUID4();
8625
8668
  this.leaf = false;
8626
8669
  this.leaf = opts.leaf === true;
8627
8670
  this.parent = parentNodeData;
@@ -8666,8 +8709,14 @@ var TreeCodeListNodeData = class extends TreeNodeData {
8666
8709
  const { data } = opts;
8667
8710
  this.text = data.text;
8668
8711
  this.value = data.value;
8669
- this.id = parentNodeData ? "".concat(parentNodeData.id, ":").concat(model.id, "@").concat(this.value) : model.id + this.value;
8670
- this.id = this.id.toLowerCase();
8712
+ const selfId = "".concat(model.id, "@").concat(this.value).toLowerCase();
8713
+ Object.defineProperty(this, "id", {
8714
+ get() {
8715
+ return this.parent ? "".concat(this.parent.id, ":").concat(selfId) : selfId;
8716
+ },
8717
+ enumerable: true,
8718
+ configurable: true
8719
+ });
8671
8720
  if (model.appDataEntityId) {
8672
8721
  const deName = calcDeCodeNameById(model.appDataEntityId);
8673
8722
  this.context = Object.assign(this.context || {}, {
@@ -8688,8 +8737,14 @@ var TreeDataSetNodeData = class extends TreeNodeData {
8688
8737
  this.deData = data;
8689
8738
  this.text = model.textAppDEFieldId ? data[model.textAppDEFieldId] : data.srfmajortext;
8690
8739
  this.value = model.idAppDEFieldId ? data[model.idAppDEFieldId] : data.srfkey;
8691
- this.id = parentNodeData ? "".concat(parentNodeData.id, ":").concat(model.id, "@").concat(data.srfkey) : model.id + data.srfkey;
8692
- this.id = this.id.toLowerCase();
8740
+ const selfId = "".concat(model.id, "@").concat(data.srfkey).toLowerCase();
8741
+ Object.defineProperty(this, "id", {
8742
+ get() {
8743
+ return this.parent ? "".concat(this.parent.id, ":").concat(selfId) : selfId;
8744
+ },
8745
+ enumerable: true,
8746
+ configurable: true
8747
+ });
8693
8748
  if (model.appDataEntityId) {
8694
8749
  const deName = calcDeCodeNameById(model.appDataEntityId);
8695
8750
  this.context = Object.assign(this.context || {}, {
@@ -8763,8 +8818,14 @@ var TreeStaticNodeData = class extends TreeNodeData {
8763
8818
  var _a, _b;
8764
8819
  super(model, parentNodeData, opts);
8765
8820
  const nodeValue = model.nodeValue === "root" ? void 0 : model.nodeValue;
8766
- this.id = parentNodeData ? "".concat(parentNodeData.id, ":").concat(model.id) : model.id;
8767
- this.id = this.id.toLowerCase();
8821
+ const selfId = "".concat(model.id).toLowerCase();
8822
+ Object.defineProperty(this, "id", {
8823
+ get() {
8824
+ return this.parent ? "".concat(this.parent.id, ":").concat(selfId) : selfId;
8825
+ },
8826
+ enumerable: true,
8827
+ configurable: true
8828
+ });
8768
8829
  this.text = model.text;
8769
8830
  this.value = nodeValue;
8770
8831
  if (parentNodeData && opts.parentValueLevel) {
@@ -9065,7 +9126,7 @@ var PanelData = class {
9065
9126
  };
9066
9127
 
9067
9128
  // src/service/vo/chart-data/chart-data.ts
9068
- import { createUUID as createUUID4 } from "qx-util";
9129
+ import { createUUID as createUUID5 } from "qx-util";
9069
9130
  function updateKeyDefine3(target, keys) {
9070
9131
  keys.forEach((key) => {
9071
9132
  if (!Object.prototype.hasOwnProperty.call(target, key)) {
@@ -9083,7 +9144,7 @@ var ChartData = class {
9083
9144
  this._seriesModelId = seriesModel == null ? void 0 : seriesModel.id;
9084
9145
  this._catalog = catalog;
9085
9146
  this._groupName = groupName;
9086
- this._uuid = createUUID4();
9147
+ this._uuid = createUUID5();
9087
9148
  return new Proxy(this, {
9088
9149
  set(target, p, value) {
9089
9150
  if (Object.prototype.hasOwnProperty.call(deData, p)) {
@@ -9126,6 +9187,18 @@ var calcDataItemValue = (fieldCodeName, nodeModel, data = {}) => {
9126
9187
  }
9127
9188
  return result;
9128
9189
  };
9190
+ var calcNodeDataItem = (nodeModel, data) => {
9191
+ var _a;
9192
+ const dataItem = {};
9193
+ (_a = nodeModel.detreeNodeDataItems) == null ? void 0 : _a.forEach((item) => {
9194
+ if (item.id && item.appDEFieldId) {
9195
+ Object.assign(dataItem, {
9196
+ [item.id.toLowerCase()]: data[item.appDEFieldId.toLowerCase()]
9197
+ });
9198
+ }
9199
+ });
9200
+ return dataItem;
9201
+ };
9129
9202
 
9130
9203
  // src/service/vo/gantt-node-data/gantt-static-node-data.ts
9131
9204
  var GanttStaticNodeData = class extends TreeStaticNodeData {
@@ -9187,6 +9260,7 @@ var GanttDataSetNodeData = class extends TreeDataSetNodeData {
9187
9260
  nodeModel,
9188
9261
  data
9189
9262
  );
9263
+ this.nodeDataItem = calcNodeDataItem(nodeModel, data);
9190
9264
  }
9191
9265
  };
9192
9266
 
@@ -9229,7 +9303,7 @@ var GanttCodeListNodeData = class extends TreeCodeListNodeData {
9229
9303
  };
9230
9304
 
9231
9305
  // src/service/mqtt/mqtt.service.ts
9232
- import { QXEvent as QXEvent3, createUUID as createUUID5, isNilOrEmpty as isNilOrEmpty6 } from "qx-util";
9306
+ import { QXEvent as QXEvent3, createUUID as createUUID6, isNilOrEmpty as isNilOrEmpty6 } from "qx-util";
9233
9307
  var MqttService = class {
9234
9308
  /**
9235
9309
  * Creates an instance of MqttService.
@@ -9263,7 +9337,7 @@ var MqttService = class {
9263
9337
  // 超时时间
9264
9338
  connectTimeout: 6e3,
9265
9339
  // 认证信息
9266
- clientId: createUUID5(),
9340
+ clientId: createUUID6(),
9267
9341
  username: "",
9268
9342
  password: "",
9269
9343
  // 心跳时间
@@ -9702,7 +9776,7 @@ function installCommand() {
9702
9776
  }
9703
9777
 
9704
9778
  // src/app-hub.ts
9705
- import { RuntimeError as RuntimeError58 } from "@ibiz-template/core";
9779
+ import { RuntimeError as RuntimeError59 } from "@ibiz-template/core";
9706
9780
 
9707
9781
  // src/application.ts
9708
9782
  import { Net, getToken } from "@ibiz-template/core";
@@ -9969,9 +10043,9 @@ var PanelNotifyState = /* @__PURE__ */ ((PanelNotifyState2) => {
9969
10043
  })(PanelNotifyState || {});
9970
10044
 
9971
10045
  // src/controller/common/view/view.controller.ts
9972
- import { createUUID as createUUID7, notNilEmpty as notNilEmpty6 } from "qx-util";
10046
+ import { createUUID as createUUID8, notNilEmpty as notNilEmpty6 } from "qx-util";
9973
10047
  import { IBizContext as IBizContext2, RuntimeError as RuntimeError31 } from "@ibiz-template/core";
9974
- import { isEmpty as isEmpty8, isNil as isNil18, isNotNil as isNotNil2 } from "ramda";
10048
+ import { isEmpty as isEmpty9, isNil as isNil18, isNotNil as isNotNil2 } from "ramda";
9975
10049
 
9976
10050
  // src/controller/utils/loading/loading.state.ts
9977
10051
  import { NOOP } from "@ibiz-template/core";
@@ -10786,7 +10860,7 @@ var ValueExUtil = class {
10786
10860
  // src/controller/utils/value-default/value-default.ts
10787
10861
  import { RuntimeError as RuntimeError28, ModelError as ModelError16 } from "@ibiz-template/core";
10788
10862
  import dayjs from "dayjs";
10789
- import { createUUID as createUUID6 } from "qx-util";
10863
+ import { createUUID as createUUID7 } from "qx-util";
10790
10864
  import { isNil as isNil16, isNotNil } from "ramda";
10791
10865
  function getDefaultValue(opts, origins) {
10792
10866
  var _a;
@@ -10831,7 +10905,7 @@ function getDefaultValue(opts, origins) {
10831
10905
  case "CONTEXT":
10832
10906
  return params[defaultValue];
10833
10907
  case "UNIQUEID":
10834
- return createUUID6();
10908
+ return createUUID7();
10835
10909
  default:
10836
10910
  throw new ModelError16({}, "\u9ED8\u8BA4\u503C\u7C7B\u578B[".concat(valueType, "]\u672A\u652F\u6301"));
10837
10911
  }
@@ -10963,6 +11037,7 @@ var BaseController = class {
10963
11037
  this.childNames = [];
10964
11038
  this.name = model.name || model.id;
10965
11039
  this.initState();
11040
+ this.convertMultipleLanguages();
10966
11041
  }
10967
11042
  /**
10968
11043
  * 中间层的基类才会使用,用于在内部使用自身的事件,事件类型不是泛型用evt就能正确推导出来。
@@ -11120,6 +11195,14 @@ var BaseController = class {
11120
11195
  listenNewController(cb) {
11121
11196
  this.ctx.evt.on("onRegister", cb);
11122
11197
  }
11198
+ /**
11199
+ * 转换各类多语言
11200
+ *
11201
+ * @date 2023-05-18 02:57:00
11202
+ * @protected
11203
+ */
11204
+ convertMultipleLanguages() {
11205
+ }
11123
11206
  };
11124
11207
 
11125
11208
  // src/controller/utils/view-msg/view-msg-controller.ts
@@ -11366,7 +11449,6 @@ var ViewController = class extends BaseController {
11366
11449
  * @type {boolean}
11367
11450
  */
11368
11451
  this.isCloseView = false;
11369
- this._isActive = true;
11370
11452
  if (ctx) {
11371
11453
  ctx.registerController(this.model.name, this);
11372
11454
  }
@@ -11387,8 +11469,16 @@ var ViewController = class extends BaseController {
11387
11469
  var _a;
11388
11470
  return (_a = this.ctx.parent) == null ? void 0 : _a.view;
11389
11471
  }
11472
+ /**
11473
+ * 当前是否为激活状态(缓存下的激活状态,一般与框架的生命周期相同)
11474
+ *
11475
+ * @author chitanda
11476
+ * @date 2023-12-13 11:12:48
11477
+ * @readonly
11478
+ * @type {boolean}
11479
+ */
11390
11480
  get isActive() {
11391
- return this._isActive;
11481
+ return this.state.activated;
11392
11482
  }
11393
11483
  /**
11394
11484
  * 视图重新激活
@@ -11397,7 +11487,7 @@ var ViewController = class extends BaseController {
11397
11487
  * @date 2023-07-12 17:07:55
11398
11488
  */
11399
11489
  onActivated() {
11400
- this._isActive = true;
11490
+ this.state.activated = true;
11401
11491
  ibiz.log.debug("\u89C6\u56FE[".concat(this.model.name, "](").concat(this.model.id, ")\u6FC0\u6D3B"));
11402
11492
  }
11403
11493
  /**
@@ -11407,7 +11497,7 @@ var ViewController = class extends BaseController {
11407
11497
  * @date 2023-07-12 17:07:06
11408
11498
  */
11409
11499
  onDeactivated() {
11410
- this._isActive = false;
11500
+ this.state.activated = false;
11411
11501
  ibiz.log.debug("\u89C6\u56FE[".concat(this.model.name, "](").concat(this.model.id, ")\u6682\u505C"));
11412
11502
  }
11413
11503
  /**
@@ -11468,6 +11558,7 @@ var ViewController = class extends BaseController {
11468
11558
  }
11469
11559
  initState() {
11470
11560
  super.initState();
11561
+ this.state.activated = true;
11471
11562
  this.state.isLoading = false;
11472
11563
  this.state.caption = this.model.caption;
11473
11564
  this.state.srfactiveviewdata = null;
@@ -11547,8 +11638,8 @@ var ViewController = class extends BaseController {
11547
11638
  */
11548
11639
  handleContextParams() {
11549
11640
  this.context.srfappid = this.model.appId;
11550
- if (isNil18(this.context.srfsessionid) || isEmpty8(this.context.srfsessionid)) {
11551
- this.context.srfsessionid = createUUID7();
11641
+ if (isNil18(this.context.srfsessionid) || isEmpty9(this.context.srfsessionid)) {
11642
+ this.context.srfsessionid = createUUID8();
11552
11643
  }
11553
11644
  const navContexts = this.model.appViewNavContexts;
11554
11645
  let context = {};
@@ -11674,6 +11765,20 @@ var ViewController = class extends BaseController {
11674
11765
  this.alertViewMessage(rest);
11675
11766
  }
11676
11767
  }
11768
+ /**
11769
+ * 转换各类多语言
11770
+ *
11771
+ * @date 2023-05-18 02:57:00
11772
+ * @protected
11773
+ */
11774
+ convertMultipleLanguages() {
11775
+ if (this.model.capLanguageRes && this.model.capLanguageRes.lanResTag) {
11776
+ this.model.caption = ibiz.i18n.t(
11777
+ this.model.capLanguageRes.lanResTag,
11778
+ this.model.caption
11779
+ );
11780
+ }
11781
+ }
11677
11782
  };
11678
11783
 
11679
11784
  // src/controller/common/view/mob-view.controller.ts
@@ -11945,6 +12050,7 @@ var ControlController = class extends BaseController {
11945
12050
  }
11946
12051
  initState() {
11947
12052
  super.initState();
12053
+ this.state.activated = true;
11948
12054
  this.state.isLoading = false;
11949
12055
  }
11950
12056
  async onCreated() {
@@ -12045,6 +12151,26 @@ var ControlController = class extends BaseController {
12045
12151
  this.state.isLoading = false;
12046
12152
  this.ctx.endLoading();
12047
12153
  }
12154
+ /**
12155
+ * 部件重新激活
12156
+ *
12157
+ * @author chitanda
12158
+ * @date 2023-07-12 17:07:55
12159
+ */
12160
+ onActivated() {
12161
+ this.state.activated = true;
12162
+ ibiz.log.debug("\u89C6\u56FE[".concat(this.model.name, "](").concat(this.model.id, ")\u6FC0\u6D3B"));
12163
+ }
12164
+ /**
12165
+ * 部件暂时停用
12166
+ *
12167
+ * @author chitanda
12168
+ * @date 2023-07-12 17:07:06
12169
+ */
12170
+ onDeactivated() {
12171
+ this.state.activated = false;
12172
+ ibiz.log.debug("\u89C6\u56FE[".concat(this.model.name, "](").concat(this.model.id, ")\u6682\u505C"));
12173
+ }
12048
12174
  /**
12049
12175
  * 处理数据能力方法通用参数,返回能力执行最终使用的参数
12050
12176
  * @author lxm
@@ -12178,6 +12304,14 @@ import { debounce } from "lodash-es";
12178
12304
  var MDControlController = class extends ControlController {
12179
12305
  constructor() {
12180
12306
  super(...arguments);
12307
+ /**
12308
+ * 在未激活时记录是否有 command 数据变更事件,有就记录。等待激活时刷新
12309
+ *
12310
+ * @author chitanda
12311
+ * @date 2023-12-13 11:12:19
12312
+ * @protected
12313
+ */
12314
+ this.commandDataChange = false;
12181
12315
  /**
12182
12316
  * 实体属性映射,key是id,value是name
12183
12317
  * @author lxm
@@ -12241,7 +12375,18 @@ var MDControlController = class extends ControlController {
12241
12375
  */
12242
12376
  onDataChange(msg) {
12243
12377
  if (msg.data && msg.data.srfdecodename === this.dataEntity.codeName) {
12378
+ if (this.state.activated) {
12379
+ this.refresh();
12380
+ } else {
12381
+ this.commandDataChange = true;
12382
+ }
12383
+ }
12384
+ }
12385
+ onActivated() {
12386
+ super.onActivated();
12387
+ if (this.commandDataChange) {
12244
12388
  this.refresh();
12389
+ this.commandDataChange = false;
12245
12390
  }
12246
12391
  }
12247
12392
  /**
@@ -12665,6 +12810,31 @@ var AppMenuController = class extends ControlController {
12665
12810
  }
12666
12811
  return null;
12667
12812
  }
12813
+ /**
12814
+ * 转换各类多语言
12815
+ *
12816
+ * @date 2023-05-18 02:57:00
12817
+ * @protected
12818
+ */
12819
+ convertMultipleLanguages() {
12820
+ const convertItemCaption = (menuItems) => {
12821
+ menuItems.forEach((item) => {
12822
+ var _a;
12823
+ if (item.capLanguageRes && item.capLanguageRes.lanResTag) {
12824
+ item.caption = ibiz.i18n.t(
12825
+ item.capLanguageRes.lanResTag,
12826
+ item.caption
12827
+ );
12828
+ }
12829
+ if ((_a = item.appMenuItems) == null ? void 0 : _a.length) {
12830
+ convertItemCaption(item.appMenuItems);
12831
+ }
12832
+ });
12833
+ };
12834
+ if (this.model.appMenuItems && this.model.appMenuItems.length > 0) {
12835
+ convertItemCaption(this.model.appMenuItems);
12836
+ }
12837
+ }
12668
12838
  };
12669
12839
 
12670
12840
  // src/controller/control/app-menu-icon-view/app-menu-icon-view.controller.ts
@@ -14132,14 +14302,7 @@ var ChartController = class extends MDControlController {
14132
14302
  var CaptionBarController = class extends ControlController {
14133
14303
  initState() {
14134
14304
  super.initState();
14135
- if (this.view.model.capLanguageRes) {
14136
- this.state.caption = ibiz.i18n.t(
14137
- this.view.model.capLanguageRes.lanResTag,
14138
- this.view.model.caption
14139
- );
14140
- } else {
14141
- this.state.caption = this.view.model.caption;
14142
- }
14305
+ this.state.caption = this.view.model.caption;
14143
14306
  }
14144
14307
  async onCreated() {
14145
14308
  await super.onCreated();
@@ -16409,6 +16572,30 @@ var ToolbarController = class extends ControlController {
16409
16572
  );
16410
16573
  super.initControlScheduler(actualLogics);
16411
16574
  }
16575
+ /**
16576
+ * 转换各类多语言
16577
+ *
16578
+ * @date 2023-05-18 02:57:00
16579
+ * @protected
16580
+ */
16581
+ convertMultipleLanguages() {
16582
+ const convertItemCaption = (items) => {
16583
+ items.forEach((item) => {
16584
+ if (item.capLanguageRes && item.capLanguageRes.lanResTag) {
16585
+ item.caption = ibiz.i18n.t(
16586
+ item.capLanguageRes.lanResTag,
16587
+ item.caption
16588
+ );
16589
+ }
16590
+ if (item.itemType === "ITEMS" && item.detoolbarItems) {
16591
+ convertItemCaption(item.detoolbarItems);
16592
+ }
16593
+ });
16594
+ };
16595
+ if (this.model.detoolbarItems && this.model.detoolbarItems.length > 0) {
16596
+ convertItemCaption(this.model.detoolbarItems);
16597
+ }
16598
+ }
16412
16599
  };
16413
16600
 
16414
16601
  // src/controller/control/context-menu/context-menu.controllerr.ts
@@ -18053,7 +18240,7 @@ var ChartExpBarController = class extends ExpBarControlController {
18053
18240
  };
18054
18241
 
18055
18242
  // src/controller/control/form/search-form/search-form.controller.ts
18056
- import { RuntimeError as RuntimeError49, mergeDefaultInLeft } from "@ibiz-template/core";
18243
+ import { RuntimeError as RuntimeError49 } from "@ibiz-template/core";
18057
18244
 
18058
18245
  // src/controller/control/form/form/form.controller.ts
18059
18246
  import { debounceAndAsyncMerge, recursiveIterate as recursiveIterate2 } from "@ibiz-template/core";
@@ -18166,19 +18353,6 @@ var FormController = class extends ControlController {
18166
18353
  );
18167
18354
  });
18168
18355
  }
18169
- /**
18170
- * 获取加载草稿额外参数,新建默认值
18171
- * @author lxm
18172
- * @date 2023-04-27 10:32:06
18173
- * @return {*}
18174
- */
18175
- async getDraftParams() {
18176
- const result = {};
18177
- await Promise.all(
18178
- this.formItems.map((item) => item.setDefaultValue(true, result))
18179
- );
18180
- return result;
18181
- }
18182
18356
  /**
18183
18357
  * 初始化表单成员控制器
18184
18358
  *
@@ -18297,8 +18471,52 @@ var FormController = class extends ControlController {
18297
18471
  };
18298
18472
 
18299
18473
  // src/controller/control/form/search-form/search-form.service.ts
18474
+ import { recursiveIterate as recursiveIterate4 } from "@ibiz-template/core";
18475
+
18476
+ // src/controller/control/form/form/form.service.ts
18300
18477
  import { recursiveIterate as recursiveIterate3 } from "@ibiz-template/core";
18301
- var SearchFormService = class extends ControlService {
18478
+ var FormService = class extends ControlService {
18479
+ /**
18480
+ * 设置表单项的默认值
18481
+ * @author lxm
18482
+ * @date 2023-12-13 03:16:19
18483
+ * @param {IData} data 表单数据
18484
+ * @param {IParams} context 上下文
18485
+ * @param {IParams} params 视图参数
18486
+ * @param {('create' | 'update')} type 新建还是更新
18487
+ */
18488
+ setDefault(data, context, params, type) {
18489
+ recursiveIterate3(
18490
+ this.model,
18491
+ (item) => {
18492
+ if (item.detailType === "FORMITEM") {
18493
+ const { createDVT, createDV, updateDVT, updateDV, valueFormat } = item;
18494
+ const valueType = type === "create" ? createDVT : updateDVT;
18495
+ const defaultValue = type === "create" ? createDV : updateDV;
18496
+ const name = item.id.toLowerCase();
18497
+ const defaultVal = getDefaultValue(
18498
+ {
18499
+ name,
18500
+ valueType,
18501
+ defaultValue,
18502
+ valueFormat
18503
+ },
18504
+ { data, context, params }
18505
+ );
18506
+ if (defaultVal !== void 0) {
18507
+ data[name] = defaultVal;
18508
+ }
18509
+ }
18510
+ },
18511
+ {
18512
+ childrenFields: ["deformPages", "deformTabPages", "deformDetails"]
18513
+ }
18514
+ );
18515
+ }
18516
+ };
18517
+
18518
+ // src/controller/control/form/search-form/search-form.service.ts
18519
+ var SearchFormService = class extends FormService {
18302
18520
  /**
18303
18521
  * 执行获取草稿方法
18304
18522
  *
@@ -18308,10 +18526,13 @@ var SearchFormService = class extends ControlService {
18308
18526
  * @param {IParams} [params={}] 视图参数
18309
18527
  * @returns {*} {Promise<IHttpResponse>}
18310
18528
  */
18311
- async getDraft(_context, params = {}) {
18529
+ async getDraft(context, params = {}) {
18312
18530
  const tempData = this.getFilteredData({ ...params });
18313
18531
  let res = { ok: true, status: 200, data: tempData };
18314
18532
  res = this.handleResponse(res);
18533
+ if (res.ok && res.data) {
18534
+ this.setDefault(res.data, context, params, "create");
18535
+ }
18315
18536
  return res;
18316
18537
  }
18317
18538
  /**
@@ -18321,7 +18542,7 @@ var SearchFormService = class extends ControlService {
18321
18542
  * @date 2022-08-31 18:08:37
18322
18543
  */
18323
18544
  initUIDataMap() {
18324
- recursiveIterate3(
18545
+ recursiveIterate4(
18325
18546
  this.model,
18326
18547
  (item) => {
18327
18548
  if (item.detailType === "FORMITEM") {
@@ -18396,8 +18617,6 @@ var SearchFormController = class extends FormController {
18396
18617
  */
18397
18618
  async load() {
18398
18619
  const queryParams = { ...this.params };
18399
- const params = await this.getDraftParams();
18400
- Object.assign(queryParams, params);
18401
18620
  await this.evt.emit("onBeforeLoadDraft", { params: queryParams });
18402
18621
  let res;
18403
18622
  try {
@@ -18409,7 +18628,6 @@ var SearchFormController = class extends FormController {
18409
18628
  throw error;
18410
18629
  }
18411
18630
  this.state.data = res.data;
18412
- mergeDefaultInLeft(this.data, params);
18413
18631
  this.state.isLoaded = true;
18414
18632
  this.formStateNotify("DRAFT" /* DRAFT */);
18415
18633
  this.actionNotification("GETDRAFTSUCCESS");
@@ -18791,7 +19009,7 @@ var FormDetailController = class {
18791
19009
  }
18792
19010
  async onInit() {
18793
19011
  this.state.showMoreMode = this.model.showMoreMode;
18794
- const { layoutPos, sysCss, labelSysCss } = this.model;
19012
+ const { layoutPos, sysCss, labelSysCss, capLanguageRes } = this.model;
18795
19013
  if (layoutPos) {
18796
19014
  const { width, height } = calcLayoutHeightWidth(layoutPos);
18797
19015
  this.state.layout.width = "".concat(width);
@@ -18803,6 +19021,12 @@ var FormDetailController = class {
18803
19021
  if (labelSysCss == null ? void 0 : labelSysCss.cssName) {
18804
19022
  this.state.class.label.push(labelSysCss.cssName);
18805
19023
  }
19024
+ if (capLanguageRes && capLanguageRes.lanResTag) {
19025
+ this.model.caption = ibiz.i18n.t(
19026
+ capLanguageRes.lanResTag,
19027
+ this.model.caption
19028
+ );
19029
+ }
18806
19030
  }
18807
19031
  /**
18808
19032
  * 创建表单状态对象
@@ -19068,7 +19292,7 @@ var FormButtonController = class extends FormDetailController {
19068
19292
 
19069
19293
  // src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts
19070
19294
  import { isOverlap as isOverlap2 } from "@ibiz-template/core";
19071
- import { createUUID as createUUID8, notNilEmpty as notNilEmpty8 } from "qx-util";
19295
+ import { createUUID as createUUID9, notNilEmpty as notNilEmpty8 } from "qx-util";
19072
19296
 
19073
19297
  // src/controller/control/form/form-detail/form-druipart/form-druipart.state.ts
19074
19298
  var FormDruipartState = class extends FormDetailState {
@@ -19181,7 +19405,7 @@ var FormDRUIPartController = class extends FormDetailController {
19181
19405
  this.form.context
19182
19406
  );
19183
19407
  if (!this.state.viewComponentKey) {
19184
- this.state.viewComponentKey = createUUID8();
19408
+ this.state.viewComponentKey = createUUID9();
19185
19409
  this.navContext = newContext;
19186
19410
  this.navParams = newParams;
19187
19411
  } else if (JSON.stringify(this.navContext) !== JSON.stringify(newContext) || JSON.stringify(this.navParams) !== JSON.stringify(newParams)) {
@@ -19575,9 +19799,6 @@ var FormItemController = class extends FormDetailController {
19575
19799
  async formStateNotify(state) {
19576
19800
  super.formStateNotify(state);
19577
19801
  this.calcEnableCond();
19578
- if (state === "LOAD" /* LOAD */) {
19579
- this.setDefaultValue(false);
19580
- }
19581
19802
  }
19582
19803
  calcDynamicLogic(names, mustCalc = false) {
19583
19804
  if (!this.model.hidden) {
@@ -19877,7 +20098,7 @@ var FormMDCtrlMDController = class extends FormMDCtrlController {
19877
20098
 
19878
20099
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts
19879
20100
  import { RuntimeError as RuntimeError50, RuntimeModelError as RuntimeModelError54 } from "@ibiz-template/core";
19880
- import { createUUID as createUUID9 } from "qx-util";
20101
+ import { createUUID as createUUID10 } from "qx-util";
19881
20102
 
19882
20103
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.ts
19883
20104
  var FormMDCtrlFormState = class extends FormDetailState {
@@ -20007,7 +20228,7 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
20007
20228
  this.state.items = [];
20008
20229
  }
20009
20230
  const item = {
20010
- id: createUUID9(),
20231
+ id: createUUID10(),
20011
20232
  context,
20012
20233
  params
20013
20234
  };
@@ -20250,19 +20471,18 @@ var FormTabPanelController = class extends FormDetailController {
20250
20471
  import {
20251
20472
  awaitTimeout,
20252
20473
  mergeInLeft as mergeInLeft2,
20253
- RuntimeError as RuntimeError51,
20254
- mergeDefaultInLeft as mergeDefaultInLeft2
20474
+ RuntimeError as RuntimeError51
20255
20475
  } from "@ibiz-template/core";
20256
20476
  import { debounce as debounce2 } from "lodash-es";
20257
- import { createUUID as createUUID10 } from "qx-util";
20477
+ import { createUUID as createUUID11 } from "qx-util";
20258
20478
  import { clone as clone21 } from "ramda";
20259
20479
 
20260
20480
  // src/controller/control/form/edit-form/edit-form.service.ts
20261
20481
  import {
20262
- recursiveIterate as recursiveIterate4,
20482
+ recursiveIterate as recursiveIterate5,
20263
20483
  RuntimeModelError as RuntimeModelError55
20264
20484
  } from "@ibiz-template/core";
20265
- var EditFormService = class extends ControlService {
20485
+ var EditFormService = class extends FormService {
20266
20486
  /**
20267
20487
  * 执行获取单条数据方法
20268
20488
  *
@@ -20281,6 +20501,9 @@ var EditFormService = class extends ControlService {
20281
20501
  params
20282
20502
  );
20283
20503
  res = this.handleResponse(res);
20504
+ if (res.ok && res.data) {
20505
+ this.setDefault(res.data, context, params, "update");
20506
+ }
20284
20507
  return res;
20285
20508
  }
20286
20509
  /**
@@ -20301,6 +20524,9 @@ var EditFormService = class extends ControlService {
20301
20524
  params
20302
20525
  );
20303
20526
  res = this.handleResponse(res);
20527
+ if (res.ok && res.data) {
20528
+ this.setDefault(res.data, context, params, "create");
20529
+ }
20304
20530
  return res;
20305
20531
  }
20306
20532
  /**
@@ -20475,7 +20701,7 @@ var EditFormService = class extends ControlService {
20475
20701
  // 向导预置
20476
20702
  "srfnextform"
20477
20703
  ];
20478
- recursiveIterate4(
20704
+ recursiveIterate5(
20479
20705
  this.model,
20480
20706
  (item) => {
20481
20707
  if (item.detailType === "FORMITEM" || item.detailType === "MDCTRL") {
@@ -20570,8 +20796,6 @@ var EditFormController = class extends FormController {
20570
20796
  */
20571
20797
  async loadDraft(args) {
20572
20798
  const { context, params: queryParams } = this.handlerAbilityParams(args);
20573
- const params = await this.getDraftParams();
20574
- Object.assign(queryParams, params);
20575
20799
  let res;
20576
20800
  try {
20577
20801
  await this.startLoading();
@@ -20587,7 +20811,6 @@ var EditFormController = class extends FormController {
20587
20811
  await this.endLoading();
20588
20812
  }
20589
20813
  this.state.data = res.data;
20590
- mergeDefaultInLeft2(this.data, params);
20591
20814
  this.formStateNotify("DRAFT" /* DRAFT */);
20592
20815
  await this.evt.emit("onLoadDraftSuccess", void 0);
20593
20816
  this.actionNotification("GETDRAFTSUCCESS");
@@ -20632,7 +20855,7 @@ var EditFormController = class extends FormController {
20632
20855
  await this.endLoading();
20633
20856
  }
20634
20857
  res.data.srfkey = void 0;
20635
- res.data.tempsrfkey = createUUID10();
20858
+ res.data.tempsrfkey = createUUID11();
20636
20859
  this.state.modified = false;
20637
20860
  this.state.data = res.data;
20638
20861
  this.formStateNotify("LOAD" /* LOAD */);
@@ -20738,12 +20961,10 @@ var EditFormController = class extends FormController {
20738
20961
  default: "".concat(this.data.srfmajortext || "", "\u4FDD\u5B58\u6210\u529F")
20739
20962
  });
20740
20963
  }
20741
- if (this.view.modal.mode === "ROUTE") {
20742
- ibiz.mc.command.send(
20743
- this.data.$origin,
20744
- isCreate ? "OBJECTCREATED" : "OBJECTUPDATED"
20745
- );
20746
- }
20964
+ ibiz.mc.command.send(
20965
+ this.data.$origin,
20966
+ isCreate ? "OBJECTCREATED" : "OBJECTUPDATED"
20967
+ );
20747
20968
  return this.data;
20748
20969
  }
20749
20970
  /**
@@ -20784,9 +21005,7 @@ var EditFormController = class extends FormController {
20784
21005
  this.state.modified = false;
20785
21006
  await this.evt.emit("onRemoveSuccess", void 0);
20786
21007
  this.actionNotification("REMOVESUCCESS");
20787
- if (this.view.modal.mode === "ROUTE") {
20788
- ibiz.mc.command.send(this.data.$origin, "OBJECTREMOVED");
20789
- }
21008
+ ibiz.mc.command.send(this.data.$origin, "OBJECTREMOVED");
20790
21009
  return ok;
20791
21010
  }
20792
21011
  /**
@@ -20889,10 +21108,8 @@ var EditFormController = class extends FormController {
20889
21108
  const { context, params } = this.handlerAbilityParams(args);
20890
21109
  try {
20891
21110
  await this.service.wfStart(context, params, this.data);
20892
- if (this.view.modal.mode === "ROUTE") {
20893
- ibiz.mc.command.send(this.data.$origin, "OBJECTUPDATED");
20894
- ibiz.mc.command.send({ srfdecodename: "SysTodo" }, "OBJECTUPDATED");
20895
- }
21111
+ ibiz.mc.command.send(this.data.$origin, "OBJECTUPDATED");
21112
+ ibiz.mc.command.send({ srfdecodename: "SysTodo" }, "OBJECTUPDATED");
20896
21113
  } catch (error) {
20897
21114
  this.actionNotification("WFSTARTERROR", {
20898
21115
  error
@@ -20920,10 +21137,8 @@ var EditFormController = class extends FormController {
20920
21137
  const { context, params } = this.handlerAbilityParams(args);
20921
21138
  try {
20922
21139
  await this.service.wfSubmit(context, params, this.data);
20923
- if (this.view.modal.mode === "ROUTE") {
20924
- ibiz.mc.command.send(this.data.$origin, "OBJECTUPDATED");
20925
- ibiz.mc.command.send({ srfdecodename: "SysTodo" }, "OBJECTUPDATED");
20926
- }
21140
+ ibiz.mc.command.send(this.data.$origin, "OBJECTUPDATED");
21141
+ ibiz.mc.command.send({ srfdecodename: "SysTodo" }, "OBJECTUPDATED");
20927
21142
  } catch (error) {
20928
21143
  this.actionNotification("WFSUBMITERROR", {
20929
21144
  error
@@ -21143,6 +21358,15 @@ var GridRowState = class {
21143
21358
  * @type {({ [p: string]: { disabled: boolean } })}
21144
21359
  */
21145
21360
  this.editColStates = {};
21361
+ /**
21362
+ * 界面行为组状态(p是界面行为的标识)
21363
+ *
21364
+ * @author zk
21365
+ * @date 2023-12-15 10:12:42
21366
+ * @type {{ [p: string]: IButtonContainerState }}
21367
+ * @memberof IGridRowState
21368
+ */
21369
+ this.uiActionGroupStates = {};
21146
21370
  /**
21147
21371
  * 是否显示行编辑
21148
21372
  *
@@ -21176,6 +21400,9 @@ var GridRowState = class {
21176
21400
  Object.values(grid.uaColumns).forEach((column) => {
21177
21401
  column.initActionStates(this);
21178
21402
  });
21403
+ Object.values(grid.fieldColumns).forEach((column) => {
21404
+ column.initActionStates(this);
21405
+ });
21179
21406
  Object.values(grid.editColumns).forEach((editColumn) => {
21180
21407
  this.editColStates[editColumn.fieldName] = {
21181
21408
  disabled: false,
@@ -21191,14 +21418,15 @@ var GridRowState = class {
21191
21418
  import {
21192
21419
  awaitTimeout as awaitTimeout2,
21193
21420
  debounceAndAsyncMerge as debounceAndAsyncMerge2,
21194
- mergeDefaultInLeft as mergeDefaultInLeft3,
21195
- recursiveIterate as recursiveIterate5,
21421
+ mergeDefaultInLeft,
21422
+ recursiveIterate as recursiveIterate6,
21196
21423
  RuntimeError as RuntimeError52,
21197
- RuntimeModelError as RuntimeModelError56
21424
+ RuntimeModelError as RuntimeModelError57
21198
21425
  } from "@ibiz-template/core";
21199
21426
  import { clone as clone22 } from "ramda";
21200
21427
 
21201
21428
  // src/controller/control/grid/grid/grid.service.ts
21429
+ import { RuntimeModelError as RuntimeModelError56 } from "@ibiz-template/core";
21202
21430
  var GridService = class extends MDControlService {
21203
21431
  /**
21204
21432
  * 初始化属性映射
@@ -21209,21 +21437,34 @@ var GridService = class extends MDControlService {
21209
21437
  initUIDataMap() {
21210
21438
  var _a;
21211
21439
  super.initUIDataMap();
21212
- (_a = this.model.degridDataItems) == null ? void 0 : _a.forEach((column) => {
21213
- const uiKey = column.id.toLowerCase();
21214
- const deField = column.appDEFieldId;
21215
- let mapField;
21216
- if (deField) {
21217
- const deFieldKey = deField.toLowerCase();
21218
- mapField = new UIMapField(uiKey, deFieldKey, {
21219
- isOriginField: true,
21220
- dataType: column.dataType
21221
- });
21222
- } else {
21223
- mapField = new UIMapField(uiKey, uiKey);
21224
- }
21225
- this.dataUIMap.set(uiKey, mapField);
21226
- });
21440
+ if (this.model.degridColumns) {
21441
+ const dataItems = this.model.degridDataItems || [];
21442
+ (_a = this.model.degridColumns) == null ? void 0 : _a.forEach((column) => {
21443
+ const uiKey = column.id.toLowerCase();
21444
+ const deField = column.appDEFieldId;
21445
+ let mapField;
21446
+ if (deField) {
21447
+ const deFieldKey = deField.toLowerCase();
21448
+ const dataItem = dataItems.find(
21449
+ (item) => item.appDEFieldId === deField
21450
+ );
21451
+ if (dataItem) {
21452
+ mapField = new UIMapField(uiKey, deFieldKey, {
21453
+ isOriginField: true,
21454
+ dataType: dataItem.dataType
21455
+ });
21456
+ } else {
21457
+ throw new RuntimeModelError56(
21458
+ column,
21459
+ "\u672A\u627E\u5230\u5BF9\u5E94\u7684\u8868\u683C\u6570\u636E\u9879[".concat(deField, "]")
21460
+ );
21461
+ }
21462
+ } else {
21463
+ mapField = new UIMapField(uiKey, uiKey);
21464
+ }
21465
+ this.dataUIMap.set(uiKey, mapField);
21466
+ });
21467
+ }
21227
21468
  }
21228
21469
  /**
21229
21470
  * 编辑列更新
@@ -21400,11 +21641,11 @@ var GridController = class extends MDControlController {
21400
21641
  (item) => item.model.appDEFieldId === groupAppDEFieldId
21401
21642
  );
21402
21643
  if (!this.groupFieldColumn) {
21403
- throw new RuntimeModelError56(this.model, "\u6CA1\u6709\u914D\u7F6E\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217");
21644
+ throw new RuntimeModelError57(this.model, "\u6CA1\u6709\u914D\u7F6E\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217");
21404
21645
  }
21405
21646
  const groupFieldName = this.groupFieldColumn.model.id;
21406
21647
  if (!this.groupFieldColumn.model.appCodeListId) {
21407
- throw new RuntimeModelError56(
21648
+ throw new RuntimeModelError57(
21408
21649
  this.groupFieldColumn.model,
21409
21650
  "\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217".concat(groupFieldName, "\u6CA1\u6709\u914D\u7F6E\u4EE3\u7801\u8868")
21410
21651
  );
@@ -21414,7 +21655,7 @@ var GridController = class extends MDControlController {
21414
21655
  );
21415
21656
  if (index !== -1 && index !== 0) {
21416
21657
  if (this.isMultistageHeader) {
21417
- throw new RuntimeModelError56(
21658
+ throw new RuntimeModelError57(
21418
21659
  this.model,
21419
21660
  "\u8BF7\u5C06\u5206\u7EC4\u5C5E\u6027\u5217".concat(groupFieldName, "\u914D\u7F6E\u4E3A\u7B2C\u4E00\u5217")
21420
21661
  );
@@ -21424,10 +21665,10 @@ var GridController = class extends MDControlController {
21424
21665
  }
21425
21666
  if (groupMode === "CODELIST") {
21426
21667
  if (!groupCodeListId) {
21427
- throw new RuntimeModelError56(this.model, "\u4EE3\u7801\u8868\u5206\u7EC4\u6A21\u5F0F\u9700\u8981\u914D\u7F6E\u4EE3\u7801\u8868");
21668
+ throw new RuntimeModelError57(this.model, "\u4EE3\u7801\u8868\u5206\u7EC4\u6A21\u5F0F\u9700\u8981\u914D\u7F6E\u4EE3\u7801\u8868");
21428
21669
  }
21429
21670
  if (this.groupFieldColumn.model.appCodeListId !== groupCodeListId) {
21430
- throw new RuntimeModelError56(
21671
+ throw new RuntimeModelError57(
21431
21672
  this.model,
21432
21673
  "\u5206\u7EC4\u4EE3\u7801\u8868\u4E0E\u5C5E\u6027\u5217".concat(groupFieldName, "\u7684\u4EE3\u7801\u8868\u4E0D\u4E00\u81F4")
21433
21674
  );
@@ -21452,6 +21693,11 @@ var GridController = class extends MDControlController {
21452
21693
  uaState.update(row.data.getOrigin(), this.model.appDataEntityId);
21453
21694
  });
21454
21695
  });
21696
+ this.state.rows.forEach((row) => {
21697
+ Object.values(row.uiActionGroupStates).forEach((uaState) => {
21698
+ uaState.update(row.data.getOrigin(), this.model.appDataEntityId);
21699
+ });
21700
+ });
21455
21701
  this.calcGroupData(items);
21456
21702
  this.calcAggResult(items);
21457
21703
  return items;
@@ -21509,7 +21755,7 @@ var GridController = class extends MDControlController {
21509
21755
  return;
21510
21756
  }
21511
21757
  if (!aggAppDEDataSetId || !aggAppDataEntityId) {
21512
- throw new RuntimeModelError56(this.model, "\u7F3A\u5C11\u914D\u7F6E\u805A\u5408\u5B9E\u4F53\u6216\u805A\u5408\u6570\u636E\u96C6");
21758
+ throw new RuntimeModelError57(this.model, "\u7F3A\u5C11\u914D\u7F6E\u805A\u5408\u5B9E\u4F53\u6216\u805A\u5408\u6570\u636E\u96C6");
21513
21759
  }
21514
21760
  const params = await this.getFetchParams();
21515
21761
  const app = ibiz.hub.getApp(this.context.srfappid);
@@ -21593,7 +21839,7 @@ var GridController = class extends MDControlController {
21593
21839
  throw error;
21594
21840
  }
21595
21841
  const draftData = res.data;
21596
- mergeDefaultInLeft3(draftData, defaultData);
21842
+ mergeDefaultInLeft(draftData, defaultData);
21597
21843
  this.state.items.unshift(draftData);
21598
21844
  const newRow = new GridRowState(draftData, this);
21599
21845
  this.state.rows.unshift(newRow);
@@ -21704,7 +21950,7 @@ var GridController = class extends MDControlController {
21704
21950
  * @return {*} {Promise<void>}
21705
21951
  */
21706
21952
  initColumnStates() {
21707
- recursiveIterate5(
21953
+ recursiveIterate6(
21708
21954
  this.model,
21709
21955
  (column) => {
21710
21956
  if (column.columnType !== "GROUPGRIDCOLUMN") {
@@ -22164,6 +22410,30 @@ var GridController = class extends MDControlController {
22164
22410
  await this.setActive(data);
22165
22411
  }
22166
22412
  }
22413
+ /**
22414
+ * 转换各类多语言
22415
+ *
22416
+ * @date 2023-05-18 02:57:00
22417
+ * @protected
22418
+ */
22419
+ convertMultipleLanguages() {
22420
+ const convertColumnCaption = (columns) => {
22421
+ columns.forEach((column) => {
22422
+ if (column.capLanguageRes && column.capLanguageRes.lanResTag) {
22423
+ column.caption = ibiz.i18n.t(
22424
+ column.capLanguageRes.lanResTag,
22425
+ column.caption
22426
+ );
22427
+ }
22428
+ if (column.columnType === "GROUPGRIDCOLUMN" && column.degridColumns) {
22429
+ convertColumnCaption(column.degridColumns);
22430
+ }
22431
+ });
22432
+ };
22433
+ if (this.model.degridColumns && this.model.degridColumns.length > 0) {
22434
+ convertColumnCaption(this.model.degridColumns);
22435
+ }
22436
+ }
22167
22437
  };
22168
22438
 
22169
22439
  // src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts
@@ -22211,6 +22481,31 @@ var GridFieldColumnController = class extends GridColumnController {
22211
22481
  });
22212
22482
  this.loadCodeList();
22213
22483
  }
22484
+ /**
22485
+ * 初始化属性列界面行为组按钮状态
22486
+ *
22487
+ * @author lxm
22488
+ * @date 2022-09-07 21:09:43
22489
+ * @param {GridRowState} row
22490
+ */
22491
+ initActionStates(row) {
22492
+ const { deuiactionGroup } = this.model;
22493
+ if (deuiactionGroup && deuiactionGroup.uiactionGroupDetails) {
22494
+ const containerState = new ButtonContainerState();
22495
+ deuiactionGroup.uiactionGroupDetails.forEach((detail) => {
22496
+ const actionid = detail.uiactionId;
22497
+ if (actionid) {
22498
+ const buttonState = new UIActionButtonState(
22499
+ detail.id,
22500
+ this.grid.context.srfappid,
22501
+ actionid
22502
+ );
22503
+ containerState.addState(detail.id, buttonState);
22504
+ }
22505
+ });
22506
+ row.uiActionGroupStates[this.model.codeName] = containerState;
22507
+ }
22508
+ }
22214
22509
  /**
22215
22510
  * 行是否可点击(影响列的界面样式)
22216
22511
  *
@@ -22417,10 +22712,35 @@ var GridFieldColumnController = class extends GridColumnController {
22417
22712
  }
22418
22713
  return ibiz.util.text.format(strVal, this.valueFormat);
22419
22714
  }
22715
+ /**
22716
+ * 触发界面行为组点击事件
22717
+ *
22718
+ * @author zk
22719
+ * @date 2023-12-15 11:12:01
22720
+ * @param {IUIActionGroupDetail} detail
22721
+ * @param {GridRowState} row
22722
+ * @param {MouseEvent} event
22723
+ * @return {*} {Promise<void>}
22724
+ * @memberof GridFieldColumnController
22725
+ */
22726
+ async onActionClick(detail, row, event) {
22727
+ const actionId = detail.uiactionId;
22728
+ await UIActionUtil.execAndResolved(
22729
+ actionId,
22730
+ {
22731
+ context: this.context,
22732
+ params: this.params,
22733
+ data: [row.data],
22734
+ view: this.grid.view,
22735
+ event
22736
+ },
22737
+ detail.appId
22738
+ );
22739
+ }
22420
22740
  };
22421
22741
 
22422
22742
  // src/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.ts
22423
- import { RuntimeModelError as RuntimeModelError57 } from "@ibiz-template/core";
22743
+ import { RuntimeModelError as RuntimeModelError58 } from "@ibiz-template/core";
22424
22744
  var GridUAColumnController = class extends GridColumnController {
22425
22745
  /**
22426
22746
  * 给rowController初始化操作列的状态
@@ -22433,7 +22753,7 @@ var GridUAColumnController = class extends GridColumnController {
22433
22753
  var _a;
22434
22754
  const { deuiactionGroup } = this.model;
22435
22755
  if (!deuiactionGroup) {
22436
- throw new RuntimeModelError57(this.model, "\u64CD\u4F5C\u5217\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A\u7EC4");
22756
+ throw new RuntimeModelError58(this.model, "\u64CD\u4F5C\u5217\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A\u7EC4");
22437
22757
  }
22438
22758
  if (!((_a = deuiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {
22439
22759
  ibiz.log.debug("\u64CD\u4F5C\u5217\u754C\u9762\u884C\u4E3A\u7EC4\u6CA1\u6709\u914D\u7F6E\u754C\u9762\u884C\u4E3A");
@@ -22985,7 +23305,7 @@ var ListController = class extends MDControlController {
22985
23305
  };
22986
23306
 
22987
23307
  // src/controller/control/panel/panel/panel.controller.ts
22988
- import { recursiveIterate as recursiveIterate6, RuntimeError as RuntimeError54 } from "@ibiz-template/core";
23308
+ import { recursiveIterate as recursiveIterate7, RuntimeError as RuntimeError54 } from "@ibiz-template/core";
22989
23309
  var PanelController = class extends ControlController {
22990
23310
  constructor(model, context, params, ctx, container) {
22991
23311
  super(model, context, params, ctx);
@@ -23194,7 +23514,7 @@ var PanelController = class extends ControlController {
23194
23514
  }
23195
23515
  initControlScheduler(logics = []) {
23196
23516
  const actualLogics = [...logics];
23197
- recursiveIterate6(
23517
+ recursiveIterate7(
23198
23518
  this.model,
23199
23519
  (item) => {
23200
23520
  if (item.controlLogics) {
@@ -23704,11 +24024,11 @@ var PickupViewPanelController = class extends ControlController {
23704
24024
  };
23705
24025
 
23706
24026
  // src/controller/control/search-bar/search-bar.controller.ts
23707
- import { recursiveIterate as recursiveIterate7 } from "@ibiz-template/core";
24027
+ import { recursiveIterate as recursiveIterate8 } from "@ibiz-template/core";
23708
24028
  import { isNil as isNil23 } from "ramda";
23709
24029
 
23710
24030
  // src/controller/control/search-bar/search-bar-filter.controller.ts
23711
- import { RuntimeModelError as RuntimeModelError58 } from "@ibiz-template/core";
24031
+ import { RuntimeModelError as RuntimeModelError59 } from "@ibiz-template/core";
23712
24032
  var SearchBarFilterController = class {
23713
24033
  constructor(model, searchBar) {
23714
24034
  this.model = model;
@@ -23736,7 +24056,7 @@ var SearchBarFilterController = class {
23736
24056
  */
23737
24057
  async init() {
23738
24058
  if (!this.model.editor) {
23739
- throw new RuntimeModelError58(this.model, "\u7F3A\u5C11\u7F16\u8F91\u5668\u6A21\u578B");
24059
+ throw new RuntimeModelError59(this.model, "\u7F3A\u5C11\u7F16\u8F91\u5668\u6A21\u578B");
23740
24060
  }
23741
24061
  this.editorProvider = await getEditorProvider(this.model.editor);
23742
24062
  if (this.editorProvider) {
@@ -23861,7 +24181,7 @@ var SearchBarController = class extends ControlController {
23861
24181
  }
23862
24182
  const filters = this.calcFilters();
23863
24183
  if (filters) {
23864
- params.filters = filters;
24184
+ params.searchconds = filters;
23865
24185
  }
23866
24186
  return params;
23867
24187
  }
@@ -23878,6 +24198,7 @@ var SearchBarController = class extends ControlController {
23878
24198
  children: [{ leaf: true, field: null, valueOP: null, value: null }]
23879
24199
  }
23880
24200
  ];
24201
+ this.evt.emit("onSearch", void 0);
23881
24202
  }
23882
24203
  /**
23883
24204
  * 初始化过滤项控制器
@@ -23910,7 +24231,7 @@ var SearchBarController = class extends ControlController {
23910
24231
  }
23911
24232
  let hasFilter = false;
23912
24233
  let hasError = false;
23913
- recursiveIterate7(this.state.filterNodes[0], (node) => {
24234
+ recursiveIterate8(this.state.filterNodes[0], (node) => {
23914
24235
  if (node.leaf) {
23915
24236
  if (node.field && node.valueOP && !isNil23(node.value)) {
23916
24237
  hasFilter = true;
@@ -23920,7 +24241,7 @@ var SearchBarController = class extends ControlController {
23920
24241
  }
23921
24242
  });
23922
24243
  if (hasFilter && !hasError) {
23923
- const filter = this.formatFilters(this.state.filterNodes[0]);
24244
+ const filter = [this.formatFilters(this.state.filterNodes[0])];
23924
24245
  return filter;
23925
24246
  }
23926
24247
  }
@@ -23934,15 +24255,17 @@ var SearchBarController = class extends ControlController {
23934
24255
  formatFilters(node) {
23935
24256
  if (!node.leaf) {
23936
24257
  return {
23937
- ["$".concat(node.logicType.toLowerCase())]: node.children.map(
23938
- (item) => this.formatFilters(item)
23939
- )
24258
+ condtype: "GROUP",
24259
+ condop: node.logicType,
24260
+ bnotmode: false,
24261
+ searchconds: node.children.map((item) => this.formatFilters(item))
23940
24262
  };
23941
24263
  }
23942
24264
  return {
23943
- ["".concat(node.field)]: {
23944
- ["$".concat(node.valueOP.toLowerCase())]: node.value
23945
- }
24265
+ condtype: "DEFIELD",
24266
+ fieldname: node.field,
24267
+ condop: node.valueOP,
24268
+ value: node.value
23946
24269
  };
23947
24270
  }
23948
24271
  };
@@ -24184,7 +24507,11 @@ var TabExpPanelController = class extends ControlController {
24184
24507
  };
24185
24508
 
24186
24509
  // src/controller/control/tree/tree.controller.ts
24187
- import { recursiveIterate as recursiveIterate8 } from "@ibiz-template/core";
24510
+ import {
24511
+ RuntimeError as RuntimeError55,
24512
+ RuntimeModelError as RuntimeModelError60,
24513
+ recursiveIterate as recursiveIterate9
24514
+ } from "@ibiz-template/core";
24188
24515
 
24189
24516
  // src/controller/control/tree/tree.service.ts
24190
24517
  import { ModelError as ModelError29 } from "@ibiz-template/core";
@@ -24480,6 +24807,12 @@ var TreeController = class extends MDControlController {
24480
24807
  * @type {boolean}
24481
24808
  */
24482
24809
  this.enableQuickSearch = false;
24810
+ /**
24811
+ * 拖入节点关系处理
24812
+ * @author lxm
24813
+ * @date 2023-12-14 03:05:38
24814
+ */
24815
+ this.dropNodeRss = /* @__PURE__ */ new Map();
24483
24816
  }
24484
24817
  initState() {
24485
24818
  super.initState();
@@ -24517,6 +24850,7 @@ var TreeController = class extends MDControlController {
24517
24850
  this.state.placeHolder = placeHolders.join("\u3001");
24518
24851
  }
24519
24852
  }
24853
+ this.initDropNodeRss();
24520
24854
  this.service = new TreeService(this.model);
24521
24855
  await this.service.init(this.context);
24522
24856
  this.model.detreeNodes.forEach((node) => {
@@ -24534,6 +24868,41 @@ var TreeController = class extends MDControlController {
24534
24868
  Object.values(this.contextMenus).map((menu) => menu.created())
24535
24869
  );
24536
24870
  }
24871
+ /**
24872
+ * 初始化节点拖入关系处理
24873
+ * @author lxm
24874
+ * @date 2023-12-14 03:13:42
24875
+ * @protected
24876
+ */
24877
+ initDropNodeRss() {
24878
+ var _a;
24879
+ (_a = this.model.detreeNodes) == null ? void 0 : _a.forEach((node) => {
24880
+ if (!node.allowDrop) {
24881
+ return;
24882
+ }
24883
+ const infos = [];
24884
+ const nodeRSs = getChildNodeRSs(this.model, {
24885
+ parentId: node.id,
24886
+ hasQuery: false
24887
+ });
24888
+ nodeRSs.forEach((nodeRS) => {
24889
+ var _a2;
24890
+ if ((_a2 = nodeRS.parentDER1N) == null ? void 0 : _a2.pickupDEFName) {
24891
+ const childNode = this.getNodeModel(nodeRS.childDETreeNodeId);
24892
+ if ((childNode == null ? void 0 : childNode.treeNodeType) === "DE" && childNode.appDataEntityId) {
24893
+ infos.push({
24894
+ minorEntityId: childNode.appDataEntityId,
24895
+ pickupDEFName: nodeRS.parentDER1N.pickupDEFName.toLowerCase(),
24896
+ childDETreeNodeId: nodeRS.childDETreeNodeId
24897
+ });
24898
+ }
24899
+ }
24900
+ });
24901
+ if (infos.length > 0) {
24902
+ this.dropNodeRss.set(node.id, infos);
24903
+ }
24904
+ });
24905
+ }
24537
24906
  /**
24538
24907
  * 树部件加载,从根节点开始重新加载
24539
24908
  *
@@ -24595,7 +24964,7 @@ var TreeController = class extends MDControlController {
24595
24964
  this.state.rootNodes = nodes;
24596
24965
  }
24597
24966
  this.state.items = [];
24598
- recursiveIterate8(
24967
+ recursiveIterate9(
24599
24968
  { children: this.state.rootNodes },
24600
24969
  (node) => {
24601
24970
  this.state.items.push(node);
@@ -24749,7 +25118,7 @@ var TreeController = class extends MDControlController {
24749
25118
  */
24750
25119
  calcExpandedKeys(nodes) {
24751
25120
  let expandedKeys = [...this.state.expandedKeys];
24752
- recursiveIterate8({ children: nodes }, (node) => {
25121
+ recursiveIterate9({ children: nodes }, (node) => {
24753
25122
  var _a;
24754
25123
  if ((_a = node.children) == null ? void 0 : _a.length) {
24755
25124
  expandedKeys.push(node.id);
@@ -24809,10 +25178,206 @@ var TreeController = class extends MDControlController {
24809
25178
  })
24810
25179
  );
24811
25180
  }
25181
+ /**
25182
+ * 计算是否允许拖动
25183
+ * @author lxm
25184
+ * @date 2023-12-14 11:28:07
25185
+ * @param {ITreeNodeData} draggingNode
25186
+ * @return {*} {boolean}
25187
+ */
25188
+ calcAllowDrag(draggingNode) {
25189
+ const nodeModel = this.getNodeModel(draggingNode.nodeId);
25190
+ return (nodeModel == null ? void 0 : nodeModel.allowDrag) === true;
25191
+ }
25192
+ /**
25193
+ * 计算是否允许拖入
25194
+ * @author lxm
25195
+ * @date 2023-12-14 02:04:15
25196
+ * @param {ITreeNodeData} draggingNode
25197
+ * @param {ITreeNodeData} dropNode
25198
+ * @param {('inner' | 'prev' | 'next')} type
25199
+ * @return {*} {boolean}
25200
+ */
25201
+ calcAllowDrop(draggingNode, dropNode, type) {
25202
+ var _a, _b;
25203
+ const draggingNodeModel = this.getNodeModel(draggingNode.nodeId);
25204
+ if (type === "inner") {
25205
+ return !!this.findDropNodeRS(
25206
+ dropNode.nodeId,
25207
+ draggingNodeModel.appDataEntityId
25208
+ );
25209
+ }
25210
+ if (((_a = draggingNode.parent) == null ? void 0 : _a.id) !== ((_b = dropNode.parent) == null ? void 0 : _b.id)) {
25211
+ return !!this.findDropNodeRS(
25212
+ dropNode.parent.nodeId,
25213
+ draggingNodeModel.appDataEntityId
25214
+ );
25215
+ }
25216
+ const parentNodeModel = this.getNodeModel(dropNode.nodeId);
25217
+ return (parentNodeModel == null ? void 0 : parentNodeModel.allowOrder) === true;
25218
+ }
25219
+ /**
25220
+ * 找到指定父节点下的节点关系里面
25221
+ * 配置的实体关系的子实体是指定实体的
25222
+ * @author lxm
25223
+ * @date 2023-12-14 01:43:41
25224
+ * @protected
25225
+ * @param {string} parentId 父节点模型id
25226
+ * @param {string} appDataEntityId
25227
+ * @return {*} {(IDETreeNodeRS | undefined)}
25228
+ */
25229
+ findDropNodeRS(parentId, appDataEntityId) {
25230
+ const nodeRSs = this.dropNodeRss.get(parentId);
25231
+ return nodeRSs == null ? void 0 : nodeRSs.find((item) => item.minorEntityId === appDataEntityId);
25232
+ }
25233
+ /**
25234
+ * 处理节点拖入事件
25235
+ * @author lxm
25236
+ * @date 2023-12-15 04:23:29
25237
+ * @param {ITreeNodeData} draggingNode
25238
+ * @param {ITreeNodeData} dropNode
25239
+ * @param {('inner' | 'prev' | 'next')} dropType
25240
+ * @return {*} {Promise<void>}
25241
+ */
25242
+ async onNodeDrop(draggingNode, dropNode, dropType) {
25243
+ var _a, _b, _c, _d;
25244
+ if (dropType === "inner" && !dropNode.leaf && dropNode.children === void 0) {
25245
+ await this.expandNodeByKey([dropNode.id]);
25246
+ }
25247
+ const modifiedNodeDatas = [];
25248
+ const draggingNodeModel = this.getNodeModel(draggingNode.nodeId);
25249
+ const dropInNode = dropType === "inner" ? dropNode : dropNode.parent;
25250
+ const isChangedParent = ((_a = dropNode.parent) == null ? void 0 : _a.id) !== ((_b = draggingNode.parent) == null ? void 0 : _b.id);
25251
+ let orderNodeModel = this.getNodeModel(dropNode.nodeId);
25252
+ if (dropType === "inner" || ((_c = dropNode.parent) == null ? void 0 : _c.id) !== ((_d = draggingNode.parent) == null ? void 0 : _d.id)) {
25253
+ const dropNodeRs = this.findDropNodeRS(
25254
+ dropInNode.nodeId,
25255
+ draggingNodeModel.appDataEntityId
25256
+ );
25257
+ if (dropNodeRs) {
25258
+ draggingNode.deData[dropNodeRs.pickupDEFName] = dropInNode.value;
25259
+ modifiedNodeDatas.push(draggingNode);
25260
+ orderNodeModel = this.getNodeModel(dropNodeRs.childDETreeNodeId);
25261
+ }
25262
+ }
25263
+ const originArr = draggingNode.parent.children;
25264
+ originArr.splice(originArr.indexOf(draggingNode), 1);
25265
+ if (dropType === "inner") {
25266
+ if (!dropNode.children) {
25267
+ dropNode.children = [];
25268
+ dropNode.leaf = true;
25269
+ this.state.expandedKeys.push(dropNode.id);
25270
+ }
25271
+ dropNode.children.push(draggingNode);
25272
+ } else {
25273
+ let insertIndex = dropInNode.children.indexOf(dropNode);
25274
+ if (dropType === "next") {
25275
+ insertIndex += 1;
25276
+ }
25277
+ dropInNode.children.splice(insertIndex, 0, draggingNode);
25278
+ }
25279
+ if (dropType === "inner" || isChangedParent) {
25280
+ draggingNode.parent = dropInNode;
25281
+ draggingNode.nodeId = orderNodeModel.id;
25282
+ this.state.expandedKeys = this.calcExpandedKeys([dropInNode]);
25283
+ }
25284
+ const { sortAppDEFieldId, sortDir, allowOrder } = orderNodeModel;
25285
+ if (allowOrder === true) {
25286
+ if (!sortAppDEFieldId) {
25287
+ throw new RuntimeModelError60(orderNodeModel, "\u7F3A\u5C11\u914D\u7F6E\u6392\u5E8F\u5C5E\u6027");
25288
+ }
25289
+ const sortField = sortAppDEFieldId.toLowerCase();
25290
+ const isAsc = sortDir === "ASC";
25291
+ const changedArr = [...dropInNode.children];
25292
+ if (!isAsc) {
25293
+ changedArr.reverse();
25294
+ }
25295
+ const getNextSort = (num) => {
25296
+ return num + (100 - num % 100);
25297
+ };
25298
+ const getSort = (deData) => {
25299
+ return deData[sortField] || 0;
25300
+ };
25301
+ let lastSort;
25302
+ changedArr.forEach((item, index) => {
25303
+ const deData = item.deData;
25304
+ if (lastSort === void 0) {
25305
+ if (item === draggingNode) {
25306
+ if (index === 0) {
25307
+ lastSort = 100;
25308
+ } else {
25309
+ lastSort = getNextSort(getSort(changedArr[index - 1].deData));
25310
+ }
25311
+ deData[sortField] = lastSort;
25312
+ if (modifiedNodeDatas.indexOf(item) === -1) {
25313
+ modifiedNodeDatas.push(item);
25314
+ }
25315
+ }
25316
+ } else {
25317
+ if (lastSort >= getSort(deData)) {
25318
+ deData[sortField] = getNextSort(lastSort);
25319
+ modifiedNodeDatas.push(item);
25320
+ }
25321
+ lastSort = getSort(deData);
25322
+ }
25323
+ });
25324
+ }
25325
+ await this.updateDeNodeData(modifiedNodeDatas);
25326
+ this.evt.emit("onAfterNodeDrop", { isChangedParent });
25327
+ }
25328
+ /**
25329
+ * 更新实体节点数据
25330
+ * @author lxm
25331
+ * @date 2023-12-15 04:19:36
25332
+ * @protected
25333
+ * @param {ITreeNodeData[]} nodeDatas 节点数据集合
25334
+ * @return {*} {Promise<void>}
25335
+ */
25336
+ async updateDeNodeData(nodeDatas) {
25337
+ const app = ibiz.hub.getApp(this.context.srfappid);
25338
+ await Promise.all(
25339
+ nodeDatas.map(async (node) => {
25340
+ const model = this.getNodeModel(node.nodeId);
25341
+ const deData = node.deData;
25342
+ const deName = calcDeCodeNameById(model.appDataEntityId);
25343
+ const tempContext = this.context.clone();
25344
+ tempContext[deName] = deData.srfkey;
25345
+ const res = await app.deService.exec(
25346
+ model.appDataEntityId,
25347
+ "update",
25348
+ tempContext,
25349
+ deData
25350
+ );
25351
+ if (res.data) {
25352
+ node.deData = res.data;
25353
+ }
25354
+ })
25355
+ );
25356
+ }
25357
+ /**
25358
+ * 修改节点文本
25359
+ * @author lxm
25360
+ * @date 2023-12-15 04:32:52
25361
+ * @param {ITreeNodeData} nodeData
25362
+ * @param {string} text
25363
+ * @return {*} {Promise<void>}
25364
+ */
25365
+ async modifyNodeText(nodeData, text) {
25366
+ const model = this.getNodeModel(nodeData.nodeId);
25367
+ if (!model.allowEditText) {
25368
+ throw new RuntimeModelError60(model, "\u6811\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u7F16\u8F91\u6A21\u5F0F\uFF1A\u540D\u79F0");
25369
+ }
25370
+ if (!nodeData.deData) {
25371
+ throw new RuntimeError55("\u4E0D\u662F\u5B9E\u4F53\u6811\u8282\u70B9\u6570\u636E");
25372
+ }
25373
+ nodeData.text = text;
25374
+ nodeData.deData[model.textAppDEFieldId] = text;
25375
+ await this.updateDeNodeData([nodeData]);
25376
+ }
24812
25377
  };
24813
25378
 
24814
25379
  // src/controller/control/wizard-panel/wizard-panel.controller.ts
24815
- import { RuntimeError as RuntimeError55 } from "@ibiz-template/core";
25380
+ import { RuntimeError as RuntimeError56 } from "@ibiz-template/core";
24816
25381
 
24817
25382
  // src/controller/control/wizard-panel/wizard-panel.service.ts
24818
25383
  var WizardPanelService = class extends ControlService {
@@ -24978,7 +25543,7 @@ var WizardPanelController = class extends ControlController {
24978
25543
  const { activeFormTag } = this.state;
24979
25544
  const controller = this.formControllers.get(activeFormTag);
24980
25545
  if (!controller) {
24981
- throw new RuntimeError55("\u627E\u4E0D\u5230".concat(activeFormTag, "\u7684\u8868\u5355\u63A7\u5236\u5668"));
25546
+ throw new RuntimeError56("\u627E\u4E0D\u5230".concat(activeFormTag, "\u7684\u8868\u5355\u63A7\u5236\u5668"));
24982
25547
  }
24983
25548
  return controller;
24984
25549
  }
@@ -25020,7 +25585,7 @@ var WizardPanelController = class extends ControlController {
25020
25585
  getWizardFormByTag(tag) {
25021
25586
  var _a;
25022
25587
  if (!((_a = this.model.dewizard) == null ? void 0 : _a.dewizardForms)) {
25023
- throw new RuntimeError55("\u6CA1\u6709\u914D\u7F6E\u5411\u5BFC\u8868\u5355\u96C6\u5408");
25588
+ throw new RuntimeError56("\u6CA1\u6709\u914D\u7F6E\u5411\u5BFC\u8868\u5355\u96C6\u5408");
25024
25589
  return;
25025
25590
  }
25026
25591
  const wizardForm = this.model.dewizard.dewizardForms.find(
@@ -25029,7 +25594,7 @@ var WizardPanelController = class extends ControlController {
25029
25594
  }
25030
25595
  );
25031
25596
  if (!wizardForm) {
25032
- throw new RuntimeError55("\u627E\u4E0D\u5230\u6807\u8BC6\u4E3A".concat(tag, "\u7684\u5411\u5BFC\u8868\u5355"));
25597
+ throw new RuntimeError56("\u627E\u4E0D\u5230\u6807\u8BC6\u4E3A".concat(tag, "\u7684\u5411\u5BFC\u8868\u5355"));
25033
25598
  }
25034
25599
  return wizardForm;
25035
25600
  }
@@ -25100,7 +25665,7 @@ var WizardPanelController = class extends ControlController {
25100
25665
  prevTag = this.tagHistory[this.tagHistory.length - 1];
25101
25666
  }
25102
25667
  if (!prevTag) {
25103
- throw new RuntimeError55("\u6CA1\u6709\u4E0A\u4E00\u4E2A\u8868\u5355");
25668
+ throw new RuntimeError56("\u6CA1\u6709\u4E0A\u4E00\u4E2A\u8868\u5355");
25104
25669
  }
25105
25670
  this.state.activeFormTag = prevTag;
25106
25671
  }
@@ -25136,7 +25701,7 @@ var WizardPanelController = class extends ControlController {
25136
25701
  });
25137
25702
  const nextWizardStep = wizardSteps[index + 1];
25138
25703
  if (!nextWizardStep) {
25139
- throw new RuntimeError55("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u6B65\u9AA4");
25704
+ throw new RuntimeError56("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u6B65\u9AA4");
25140
25705
  }
25141
25706
  const nextWizardForm = this.getWizardFormByTag(nextWizardStep.stepTag);
25142
25707
  if (nextWizardForm && nextWizardForm.formTag) {
@@ -25145,7 +25710,7 @@ var WizardPanelController = class extends ControlController {
25145
25710
  }
25146
25711
  }
25147
25712
  if (!nextTag) {
25148
- throw new RuntimeError55("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u8868\u5355");
25713
+ throw new RuntimeError56("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u8868\u5355");
25149
25714
  }
25150
25715
  this.state.activeFormTag = nextTag;
25151
25716
  this.tagHistory.push(nextTag);
@@ -25164,7 +25729,7 @@ var WizardPanelController = class extends ControlController {
25164
25729
  };
25165
25730
 
25166
25731
  // src/controller/control/md-ctrl/md-ctrl.controller.ts
25167
- import { RuntimeModelError as RuntimeModelError59 } from "@ibiz-template/core";
25732
+ import { RuntimeModelError as RuntimeModelError61 } from "@ibiz-template/core";
25168
25733
  import { isNil as isNil24 } from "ramda";
25169
25734
 
25170
25735
  // src/controller/control/md-ctrl/md-ctrl.service.ts
@@ -25391,7 +25956,7 @@ var MDCtrlController = class extends MDControlController {
25391
25956
  const { enableGroup, groupMode, groupAppDEFieldId } = this.model;
25392
25957
  if (enableGroup && groupMode) {
25393
25958
  if (!groupAppDEFieldId) {
25394
- throw new RuntimeModelError59(this.model, "\u5206\u7EC4\u5C5E\u6027\u6CA1\u6709\u914D\u7F6E");
25959
+ throw new RuntimeModelError61(this.model, "\u5206\u7EC4\u5C5E\u6027\u6CA1\u6709\u914D\u7F6E");
25395
25960
  }
25396
25961
  if (groupMode === "AUTO") {
25397
25962
  this.handleAutoGroup();
@@ -25458,7 +26023,7 @@ var MDCtrlController = class extends MDControlController {
25458
26023
  async handleCodeListGroup() {
25459
26024
  const { groupAppDEFieldId, groupCodeListId } = this.model;
25460
26025
  if (!groupCodeListId) {
25461
- throw new RuntimeModelError59(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
26026
+ throw new RuntimeModelError61(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
25462
26027
  }
25463
26028
  const { items } = this.state;
25464
26029
  const groupMap = /* @__PURE__ */ new Map();
@@ -25488,7 +26053,7 @@ var MDCtrlController = class extends MDControlController {
25488
26053
  };
25489
26054
 
25490
26055
  // src/controller/control/kanban/kanban.controller.ts
25491
- import { RuntimeError as RuntimeError56, RuntimeModelError as RuntimeModelError60 } from "@ibiz-template/core";
26056
+ import { RuntimeError as RuntimeError57, RuntimeModelError as RuntimeModelError62 } from "@ibiz-template/core";
25492
26057
  import { isNil as isNil25 } from "ramda";
25493
26058
 
25494
26059
  // src/controller/control/kanban/kanban.service.ts
@@ -25563,10 +26128,10 @@ var KanbanController = class extends DataViewControlController {
25563
26128
  const sortField = this.model.minorSortAppDEFieldId;
25564
26129
  const { minorSortDir } = this.model;
25565
26130
  if (!sortField) {
25566
- throw new RuntimeModelError60(this.model, "\u6392\u5E8F\u5C5E\u6027\u6CA1\u914D\u7F6E");
26131
+ throw new RuntimeModelError62(this.model, "\u6392\u5E8F\u5C5E\u6027\u6CA1\u914D\u7F6E");
25567
26132
  }
25568
26133
  if (!minorSortDir) {
25569
- throw new RuntimeModelError60(this.model, "\u6392\u5E8F\u65B9\u5411\u6CA1\u914D\u7F6E");
26134
+ throw new RuntimeModelError62(this.model, "\u6392\u5E8F\u65B9\u5411\u6CA1\u914D\u7F6E");
25570
26135
  }
25571
26136
  const isAsc = minorSortDir === "ASC";
25572
26137
  items.forEach((item) => {
@@ -25576,7 +26141,7 @@ var KanbanController = class extends DataViewControlController {
25576
26141
  } else {
25577
26142
  const toNum = Number(sortValue);
25578
26143
  if (Number.isNaN(toNum)) {
25579
- throw new RuntimeError56(
26144
+ throw new RuntimeError57(
25580
26145
  "".concat(item.srfmajortext, "\u7684\u6392\u5E8F\u5C5E\u6027\u65E0\u6CD5\u8F6C\u6362\u6210\u6570\u503C")
25581
26146
  );
25582
26147
  }
@@ -25592,28 +26157,100 @@ var KanbanController = class extends DataViewControlController {
25592
26157
  }
25593
26158
  handleDataGroup() {
25594
26159
  if (!this.model.enableGroup || this.model.groupMode === "NONE") {
25595
- throw new RuntimeError56("\u770B\u677F\u90E8\u4EF6\u5FC5\u987B\u5F00\u542F\u5206\u7EC4");
26160
+ throw new RuntimeError57("\u770B\u677F\u90E8\u4EF6\u5FC5\u987B\u5F00\u542F\u5206\u7EC4");
25596
26161
  }
25597
26162
  return super.handleDataGroup();
25598
26163
  }
25599
26164
  /**
25600
- * 拖拽变更事件处理回调
25601
- * @author lxm
25602
- * @date 2023-09-11 04:12:58
25603
- * @param {IDragChangeInfo} info
26165
+ * 处理自动分组
26166
+ *
26167
+ * @memberof KanbanController
26168
+ */
26169
+ handleAutoGroup() {
26170
+ const { groupAppDEFieldId } = this.model;
26171
+ if (groupAppDEFieldId) {
26172
+ const { items } = this.state;
26173
+ const groupMap = /* @__PURE__ */ new Map();
26174
+ items.forEach((item) => {
26175
+ const groupVal = item[groupAppDEFieldId];
26176
+ if (isNil25(groupVal)) {
26177
+ return;
26178
+ }
26179
+ if (!groupMap.has(groupVal)) {
26180
+ groupMap.set(groupVal, []);
26181
+ }
26182
+ groupMap.get(groupVal).push(item);
26183
+ });
26184
+ const groups = [];
26185
+ groupMap.forEach((value, key) => {
26186
+ const codeListItem = this.groupCodeListItems.find(
26187
+ (item) => item.value === key
26188
+ );
26189
+ groups.push({
26190
+ caption: codeListItem.text,
26191
+ color: codeListItem.color,
26192
+ key: codeListItem.value,
26193
+ children: [...value]
26194
+ });
26195
+ });
26196
+ this.state.groups = groups;
26197
+ }
26198
+ }
26199
+ /**
26200
+ * 处理代码表分组
26201
+ *
25604
26202
  * @return {*} {Promise<void>}
26203
+ * @memberof KanbanController
25605
26204
  */
25606
- async onDragChange(info) {
25607
- if (!this.enableEditGroup) {
25608
- if (info.from !== info.to) {
25609
- ibiz.message.warning("\u5F53\u524D\u770B\u677F\u4E0D\u5141\u8BB8\u8C03\u6574\u5206\u7EC4\uFF01");
25610
- return;
25611
- }
26205
+ async handleCodeListGroup() {
26206
+ const { groupAppDEFieldId, groupCodeListId } = this.model;
26207
+ if (!groupCodeListId) {
26208
+ throw new RuntimeModelError62(this.model, "\u5206\u7EC4\u4EE3\u7801\u8868\u6CA1\u6709\u914D\u7F6E");
25612
26209
  }
25613
- const isAsc = this.model.minorSortDir === "ASC";
25614
- const { from, to, fromIndex, toIndex } = info;
25615
- const groupField = this.model.groupAppDEFieldId;
25616
- const sortField = this.model.minorSortAppDEFieldId;
26210
+ const { items } = this.state;
26211
+ const groupMap = /* @__PURE__ */ new Map();
26212
+ this.groupCodeListItems.forEach((item) => {
26213
+ groupMap.set(item.value, []);
26214
+ });
26215
+ items.forEach((item) => {
26216
+ const groupVal = item[groupAppDEFieldId];
26217
+ const groupArr = groupMap.get(groupVal);
26218
+ if (groupArr) {
26219
+ groupArr.push(item);
26220
+ }
26221
+ });
26222
+ const groups = [];
26223
+ groupMap.forEach((arr, key) => {
26224
+ const codeListItem = this.groupCodeListItems.find(
26225
+ (item) => item.value === key
26226
+ );
26227
+ groups.push({
26228
+ caption: codeListItem.text,
26229
+ color: codeListItem.color,
26230
+ key: codeListItem.value,
26231
+ children: arr
26232
+ });
26233
+ });
26234
+ this.state.groups = groups;
26235
+ }
26236
+ /**
26237
+ * 拖拽变更事件处理回调
26238
+ * @author lxm
26239
+ * @date 2023-09-11 04:12:58
26240
+ * @param {IDragChangeInfo} info
26241
+ * @return {*} {Promise<void>}
26242
+ */
26243
+ async onDragChange(info) {
26244
+ if (!this.enableEditGroup) {
26245
+ if (info.from !== info.to) {
26246
+ ibiz.message.warning("\u5F53\u524D\u770B\u677F\u4E0D\u5141\u8BB8\u8C03\u6574\u5206\u7EC4\uFF01");
26247
+ return;
26248
+ }
26249
+ }
26250
+ const isAsc = this.model.minorSortDir === "ASC";
26251
+ const { from, to, fromIndex, toIndex } = info;
26252
+ const groupField = this.model.groupAppDEFieldId;
26253
+ const sortField = this.model.minorSortAppDEFieldId;
25617
26254
  const modifiedItems = [];
25618
26255
  const fromGroup = this.state.groups.find((x) => x.key === from);
25619
26256
  const toGroup = this.state.groups.find((x) => x.key === to);
@@ -25716,7 +26353,7 @@ var KanbanController = class extends DataViewControlController {
25716
26353
  };
25717
26354
 
25718
26355
  // src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts
25719
- import { recursiveIterate as recursiveIterate9 } from "@ibiz-template/core";
26356
+ import { recursiveIterate as recursiveIterate10 } from "@ibiz-template/core";
25720
26357
 
25721
26358
  // src/controller/control/tree-grid-ex/tree-grid-ex.service.ts
25722
26359
  import { isArray as isArray10 } from "qx-util";
@@ -25956,7 +26593,7 @@ var TreeGridExController = class extends MDControlController {
25956
26593
  * @memberof TreeGridExController
25957
26594
  */
25958
26595
  initColumnStates() {
25959
- recursiveIterate9(
26596
+ recursiveIterate10(
25960
26597
  this.model,
25961
26598
  (column) => {
25962
26599
  if (column.columnType !== "GROUPGRIDCOLUMN") {
@@ -26044,7 +26681,7 @@ var TreeGridExController = class extends MDControlController {
26044
26681
  this.state.rootNodes = nodes;
26045
26682
  }
26046
26683
  this.state.items = [];
26047
- recursiveIterate9(
26684
+ recursiveIterate10(
26048
26685
  { children: this.state.rootNodes },
26049
26686
  (node) => {
26050
26687
  this.state.items.push(node);
@@ -26063,7 +26700,7 @@ var TreeGridExController = class extends MDControlController {
26063
26700
  */
26064
26701
  calcExpandedKeys(nodes) {
26065
26702
  let expandedKeys = [];
26066
- recursiveIterate9({ children: nodes }, (node) => {
26703
+ recursiveIterate10({ children: nodes }, (node) => {
26067
26704
  var _a;
26068
26705
  if ((_a = node.children) == null ? void 0 : _a.length) {
26069
26706
  expandedKeys.push(node.id);
@@ -26086,8 +26723,8 @@ var TreeGridService = class extends GridService {
26086
26723
  };
26087
26724
 
26088
26725
  // src/controller/control/medit-view-panel/medit-view-panel.controller.ts
26089
- import { RuntimeError as RuntimeError57 } from "@ibiz-template/core";
26090
- import { createUUID as createUUID11 } from "qx-util";
26726
+ import { RuntimeError as RuntimeError58 } from "@ibiz-template/core";
26727
+ import { createUUID as createUUID12 } from "qx-util";
26091
26728
 
26092
26729
  // src/controller/control/medit-view-panel/medit-view-panel.service.ts
26093
26730
  var MEditViewPanelService = class extends MDControlService {
@@ -26174,7 +26811,7 @@ var MEditViewPanelController = class extends MDControlController {
26174
26811
  */
26175
26812
  handlePanelItemParams(arg) {
26176
26813
  const [{ parameterName }] = this.parameters;
26177
- const id = arg[parameterName] ? arg[parameterName] : "mockId:".concat(createUUID11());
26814
+ const id = arg[parameterName] ? arg[parameterName] : "mockId:".concat(createUUID12());
26178
26815
  const item = {
26179
26816
  id,
26180
26817
  context: this.context.clone(),
@@ -26302,7 +26939,7 @@ var MEditViewPanelController = class extends MDControlController {
26302
26939
  (item) => item.id === id
26303
26940
  );
26304
26941
  if (panelUiItemIndex < 0) {
26305
- throw new RuntimeError57("\u7F16\u8F91\u89C6\u56FE\u9762\u677F\u90E8\u4EF6UI\u6570\u636E\u4E0D\u5B58\u5728");
26942
+ throw new RuntimeError58("\u7F16\u8F91\u89C6\u56FE\u9762\u677F\u90E8\u4EF6UI\u6570\u636E\u4E0D\u5B58\u5728");
26306
26943
  }
26307
26944
  const tempUiItem = this.state.panelUiItems[panelUiItemIndex];
26308
26945
  if (tempUiItem.id.startsWith("mockId:")) {
@@ -26615,7 +27252,7 @@ var UserReportPanelGenerator = class extends ReportPanelBaseGenerator {
26615
27252
  callBack: "{{ const nodes = data.controller.graph.getNodes(); if (nodes.length < 25) { data.controller.graph.zoomTo(1); data.controller.graph.fitCenter() } }}"
26616
27253
  }
26617
27254
  ],
26618
- 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}})})}}",
27255
+ 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}})})}}",
26619
27256
  edgeDataHook: "{{ data.forEach(edge => {Object.assign(edge, { label: edge.name })}) }}"
26620
27257
  }
26621
27258
  };
@@ -26809,7 +27446,7 @@ var ReportPanelController = class extends ControlController {
26809
27446
  };
26810
27447
 
26811
27448
  // src/controller/control/gantt/gantt.controller.ts
26812
- import { recursiveIterate as recursiveIterate10 } from "@ibiz-template/core";
27449
+ import { recursiveIterate as recursiveIterate11 } from "@ibiz-template/core";
26813
27450
 
26814
27451
  // src/controller/control/gantt/gantt.service.ts
26815
27452
  import { ModelError as ModelError30 } from "@ibiz-template/core";
@@ -27048,6 +27685,34 @@ var GanttService = class extends TreeService {
27048
27685
  var GanttController = class extends MDControlController {
27049
27686
  constructor() {
27050
27687
  super(...arguments);
27688
+ /**
27689
+ * 表格列适配器
27690
+ *
27691
+ * @type {{ [key: string]: IGridColumnProvider }}
27692
+ * @memberof GanttController
27693
+ */
27694
+ this.providers = {};
27695
+ /**
27696
+ * 所有表格列控制器集合
27697
+ *
27698
+ * @type {{ [key: string]: GridColumnController }}
27699
+ * @memberof GanttController
27700
+ */
27701
+ this.columns = {};
27702
+ /**
27703
+ * 所有表格属性列的控制器
27704
+ *
27705
+ * @type {{ [key: string]: GridFieldColumnController }}
27706
+ * @memberof GanttController
27707
+ */
27708
+ this.fieldColumns = {};
27709
+ /**
27710
+ * 所有表格操作列的控制器
27711
+ *
27712
+ * @type {{ [key: string]: GridUAColumnController }}
27713
+ * @memberof GanttController
27714
+ */
27715
+ this.uaColumns = {};
27051
27716
  /**
27052
27717
  * 上下文菜单控制器
27053
27718
  *
@@ -27076,10 +27741,14 @@ var GanttController = class extends MDControlController {
27076
27741
  super.initState();
27077
27742
  this.state.size = 0;
27078
27743
  this.state.query = "";
27744
+ this.state.columnStates = [];
27745
+ this.state.rootNodes = [];
27079
27746
  }
27080
27747
  async onCreated() {
27081
27748
  var _a, _b;
27082
27749
  await super.onCreated();
27750
+ await this.initGridColumns();
27751
+ this.initColumnStates();
27083
27752
  if ((_a = this.model.detreeNodes) == null ? void 0 : _a[0].enableQuickSearch) {
27084
27753
  this.enableQuickSearch = true;
27085
27754
  }
@@ -27121,6 +27790,86 @@ var GanttController = class extends MDControlController {
27121
27790
  Object.values(this.contextMenus).map((menu) => menu.created())
27122
27791
  );
27123
27792
  }
27793
+ /**
27794
+ * 初始化表格列
27795
+ *
27796
+ * @protected
27797
+ * @return {*} {Promise<void>}
27798
+ * @memberof GanttController
27799
+ */
27800
+ async initGridColumns() {
27801
+ if (this.model.detreeColumns) {
27802
+ await Promise.all(
27803
+ this.model.detreeColumns.map(
27804
+ async (column) => this.initColumnsController(column)
27805
+ )
27806
+ );
27807
+ }
27808
+ }
27809
+ /**
27810
+ * 初始化表格属性列,操作列,编辑项控制器
27811
+ *
27812
+ * @protected
27813
+ * @param {IDETreeColumn} column
27814
+ * @return {*} {Promise<void>}
27815
+ * @memberof GanttController
27816
+ */
27817
+ async initColumnsController(column) {
27818
+ const provider = await getGridColumnProvider(column);
27819
+ if (!provider) {
27820
+ return;
27821
+ }
27822
+ this.providers[column.codeName] = provider;
27823
+ const controller = await provider.createController(column, this);
27824
+ this.columns[column.codeName] = controller;
27825
+ if (column.columnType === "DEFGRIDCOLUMN") {
27826
+ this.fieldColumns[column.codeName] = controller;
27827
+ } else if (column.columnType === "UAGRIDCOLUMN") {
27828
+ this.uaColumns[column.codeName] = controller;
27829
+ }
27830
+ }
27831
+ /**
27832
+ * 初始化表格列状态
27833
+ *
27834
+ * @protected
27835
+ * @memberof GanttController
27836
+ */
27837
+ initColumnStates() {
27838
+ recursiveIterate11(
27839
+ this.model,
27840
+ (column) => {
27841
+ if (column.columnType !== "GROUPGRIDCOLUMN") {
27842
+ this.state.columnStates.push({
27843
+ key: column.codeName,
27844
+ caption: column.caption,
27845
+ hidden: !!column.hideDefault,
27846
+ uaColumn: column.columnType === "UAGRIDCOLUMN"
27847
+ });
27848
+ }
27849
+ },
27850
+ { childrenFields: ["detreeColumns"] }
27851
+ );
27852
+ this.calcColumnFixed();
27853
+ }
27854
+ /**
27855
+ * 计算列的固定状态
27856
+ *
27857
+ * @protected
27858
+ * @memberof GanttController
27859
+ */
27860
+ calcColumnFixed() {
27861
+ const showColumns = this.state.columnStates.filter(
27862
+ (column) => !column.hidden
27863
+ );
27864
+ const allNum = showColumns.length;
27865
+ showColumns.forEach((column, index) => {
27866
+ if (column.uaColumn) {
27867
+ column.fixed = index + 1 <= Math.floor(allNum / 2) ? "left" : "right";
27868
+ } else {
27869
+ column.fixed = "right";
27870
+ }
27871
+ });
27872
+ }
27124
27873
  /**
27125
27874
  * 加载
27126
27875
  *
@@ -27149,6 +27898,17 @@ var GanttController = class extends MDControlController {
27149
27898
  });
27150
27899
  return nodes;
27151
27900
  }
27901
+ /**
27902
+ * 获取节点模型
27903
+ *
27904
+ * @param {string} id
27905
+ * @return {*} {(IDETreeNode | undefined)}
27906
+ * @memberof GanttController
27907
+ */
27908
+ getNodeModel(id) {
27909
+ var _a;
27910
+ return (_a = this.model.detreeNodes) == null ? void 0 : _a.find((item) => item.id === id);
27911
+ }
27152
27912
  /**
27153
27913
  * 获取查询参数
27154
27914
  *
@@ -27193,7 +27953,7 @@ var GanttController = class extends MDControlController {
27193
27953
  this.state.rootNodes = nodes;
27194
27954
  }
27195
27955
  this.state.items = [];
27196
- recursiveIterate10(
27956
+ recursiveIterate11(
27197
27957
  { children: this.state.rootNodes },
27198
27958
  (node) => {
27199
27959
  this.state.items.push(node);
@@ -27201,6 +27961,154 @@ var GanttController = class extends MDControlController {
27201
27961
  );
27202
27962
  return nodes;
27203
27963
  }
27964
+ /**
27965
+ * 甘特节点点击事件
27966
+ *
27967
+ * @param {IGanttNodeData} nodeData
27968
+ * @return {*} {Promise<void>}
27969
+ * @memberof GanttController
27970
+ */
27971
+ async onGanttNodeClick(nodeData) {
27972
+ if (this.state.singleSelect) {
27973
+ const { selectedData } = this.state;
27974
+ const filterArr = selectedData.filter((item) => item.id !== nodeData.id);
27975
+ if (filterArr.length === selectedData.length) {
27976
+ this.setSelection(
27977
+ this.state.singleSelect ? [nodeData] : selectedData.concat([nodeData])
27978
+ );
27979
+ } else {
27980
+ this.setSelection(filterArr);
27981
+ }
27982
+ }
27983
+ if (this.state.mdctrlActiveMode === 1) {
27984
+ await this.setActive(nodeData);
27985
+ }
27986
+ }
27987
+ /**
27988
+ * 甘特节点双击事件
27989
+ *
27990
+ * @param {IGanttNodeData} nodeData
27991
+ * @return {*} {Promise<void>}
27992
+ * @memberof GanttController
27993
+ */
27994
+ async onDbGanttNodeClick(nodeData) {
27995
+ if (this.state.mdctrlActiveMode === 2) {
27996
+ await this.setActive(nodeData);
27997
+ }
27998
+ }
27999
+ /**
28000
+ * 设置激活
28001
+ *
28002
+ * @param {IGanttNodeData} item
28003
+ * @return {*} {Promise<void>}
28004
+ * @memberof GanttController
28005
+ */
28006
+ setActive(item) {
28007
+ const nodeParams = this.parseGanttNodeData(item);
28008
+ return this.evt.emit("onActive", { ...nodeParams, nodeData: item });
28009
+ }
28010
+ /**
28011
+ * 设置选中
28012
+ *
28013
+ * @param {IData[]} selection
28014
+ * @memberof GanttController
28015
+ */
28016
+ setSelection(selection) {
28017
+ const selectionIds = selection.map((item) => item.id);
28018
+ const filterArr = this.state.items.filter(
28019
+ (item) => selectionIds.includes(item.id)
28020
+ );
28021
+ super.setSelection(filterArr);
28022
+ }
28023
+ /**
28024
+ * 执行界面行为
28025
+ *
28026
+ * @param {string} uiActionId
28027
+ * @param {IGanttNodeData} nodeData
28028
+ * @param {MouseEvent} event
28029
+ * @param {string} appId
28030
+ * @return {*} {Promise<void>}
28031
+ * @memberof GanttController
28032
+ */
28033
+ async doUIAction(uiActionId, nodeData, event, appId) {
28034
+ const eventArgs = this.getEventArgs();
28035
+ const nodeParams = this.parseGanttNodeData(nodeData);
28036
+ const result = await UIActionUtil.exec(
28037
+ uiActionId,
28038
+ {
28039
+ ...eventArgs,
28040
+ ...nodeParams,
28041
+ event
28042
+ },
28043
+ appId
28044
+ );
28045
+ if (result.closeView) {
28046
+ this.view.closeView();
28047
+ } else if (result.refresh) {
28048
+ switch (result.refreshMode) {
28049
+ case 1:
28050
+ this.refreshNodeChildren(nodeData);
28051
+ break;
28052
+ case 2:
28053
+ this.refreshNodeChildren(nodeData, true);
28054
+ break;
28055
+ case 3:
28056
+ this.refresh();
28057
+ break;
28058
+ default:
28059
+ }
28060
+ }
28061
+ }
28062
+ /**
28063
+ * 解析甘特节点获取通用数据,和完整的上下文和视图参数。
28064
+ *
28065
+ * @protected
28066
+ * @param {IGanttNodeData} nodeData
28067
+ * @return {*} {{
28068
+ * data: IData[];
28069
+ * context: IContext;
28070
+ * params: IParams;
28071
+ * }}
28072
+ * @memberof GanttController
28073
+ */
28074
+ parseGanttNodeData(nodeData) {
28075
+ return {
28076
+ data: [{ ...nodeData, ...nodeData.deData || {} }],
28077
+ context: Object.assign(this.context.clone(), nodeData.context || {}),
28078
+ params: { ...this.params, ...nodeData.params || {} }
28079
+ };
28080
+ }
28081
+ /**
28082
+ * 刷新指定树节点的子节点数据
28083
+ *
28084
+ * @param {(IGanttNodeData | IData)} nodeData 指定树节点数据,可以是节点数据,也可以是对应的实体数据
28085
+ * @param {boolean} [refreshParent=false] 是否是刷新给定节点数据的父节点的子节点数据
28086
+ * @return {*} {Promise<void>}
28087
+ * @memberof GanttController
28088
+ */
28089
+ async refreshNodeChildren(nodeData, refreshParent = false) {
28090
+ const key = nodeData.srfkey ? "srfkey" : "id";
28091
+ const currentNode = this.state.items.find(
28092
+ (item) => item[key] === nodeData[key]
28093
+ );
28094
+ if (!currentNode) {
28095
+ ibiz.log.error("\u627E\u4E0D\u5230\u5BF9\u5E94\u7684\u6811\u8282\u70B9\u6570\u636E", nodeData);
28096
+ return;
28097
+ }
28098
+ if (refreshParent) {
28099
+ const { parent } = currentNode;
28100
+ if (!parent || !this.model.rootVisible && this.state.rootNodes.includes(parent)) {
28101
+ this.refresh();
28102
+ return;
28103
+ }
28104
+ }
28105
+ const targetNode = refreshParent ? currentNode.parent : currentNode;
28106
+ const nodes = await this.loadNodes(targetNode);
28107
+ this.evt.emit("onAfterRefreshParent", {
28108
+ parentNode: targetNode,
28109
+ children: nodes
28110
+ });
28111
+ }
27204
28112
  };
27205
28113
 
27206
28114
  // src/controller/hub.controller.ts
@@ -27399,7 +28307,7 @@ var AppHub = class {
27399
28307
  this.registerAppView(appView);
27400
28308
  return appView;
27401
28309
  }
27402
- throw new RuntimeError58("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
28310
+ throw new RuntimeError59("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
27403
28311
  }
27404
28312
  /**
27405
28313
  * 根据应用实体代码名称查找应用视图
@@ -27430,7 +28338,7 @@ var AppHub = class {
27430
28338
  this.registerAppDataEntity(entity, appId);
27431
28339
  return entity;
27432
28340
  }
27433
- throw new RuntimeError58("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
28341
+ throw new RuntimeError59("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
27434
28342
  }
27435
28343
  /**
27436
28344
  * 新建 hub 应用
@@ -27445,7 +28353,7 @@ var AppHub = class {
27445
28353
  return this.appMap.get(id);
27446
28354
  }
27447
28355
  if (!this.modelLoaderProvider) {
27448
- throw new RuntimeError58("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
28356
+ throw new RuntimeError59("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
27449
28357
  }
27450
28358
  const appModel = await this.modelLoaderProvider.getApp(id);
27451
28359
  const app = new Application(appModel);
@@ -27545,7 +28453,7 @@ var EngineFactory = class {
27545
28453
  };
27546
28454
 
27547
28455
  // src/engine/view-base.engine.ts
27548
- import { RuntimeError as RuntimeError59 } from "@ibiz-template/core";
28456
+ import { RuntimeError as RuntimeError60 } from "@ibiz-template/core";
27549
28457
  var ViewEngineBase = class {
27550
28458
  /**
27551
28459
  * 构造函数在视图控制器的构造函数逻辑内部执行
@@ -27733,7 +28641,7 @@ var ViewEngineBase = class {
27733
28641
  const { appDataEntityId } = this.view.model;
27734
28642
  const { evt, context, params } = this.view;
27735
28643
  if (!appDataEntityId) {
27736
- throw new RuntimeError59("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
28644
+ throw new RuntimeError60("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
27737
28645
  }
27738
28646
  const app = ibiz.hub.getApp(context.srfappid);
27739
28647
  const res = await app.deService.exec(
@@ -27754,7 +28662,7 @@ var ViewEngineBase = class {
27754
28662
  };
27755
28663
 
27756
28664
  // src/engine/md-view.engine.ts
27757
- import { RuntimeModelError as RuntimeModelError61 } from "@ibiz-template/core";
28665
+ import { RuntimeModelError as RuntimeModelError63 } from "@ibiz-template/core";
27758
28666
  import { clone as clone24 } from "ramda";
27759
28667
  var MDViewEngine = class extends ViewEngineBase {
27760
28668
  /**
@@ -27938,7 +28846,7 @@ var MDViewEngine = class extends ViewEngineBase {
27938
28846
  view: this.view
27939
28847
  }));
27940
28848
  if (result === -1) {
27941
- throw new RuntimeModelError61(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28849
+ throw new RuntimeModelError63(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
27942
28850
  } else {
27943
28851
  return {
27944
28852
  cancel: !result.ok
@@ -27961,7 +28869,7 @@ var MDViewEngine = class extends ViewEngineBase {
27961
28869
  (item) => item.id === "newdata"
27962
28870
  );
27963
28871
  if (!openAppViewLogic) {
27964
- throw new RuntimeModelError61(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28872
+ throw new RuntimeModelError63(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
27965
28873
  }
27966
28874
  const params = clone24(this.view.params);
27967
28875
  if (copyMode) {
@@ -27975,7 +28883,7 @@ var MDViewEngine = class extends ViewEngineBase {
27975
28883
  view: this.view
27976
28884
  }));
27977
28885
  if (result === -1) {
27978
- throw new RuntimeModelError61(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
28886
+ throw new RuntimeModelError63(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
27979
28887
  } else {
27980
28888
  return {
27981
28889
  cancel: !result.ok
@@ -28094,15 +29002,15 @@ var MDViewEngine = class extends ViewEngineBase {
28094
29002
 
28095
29003
  // src/utils/error-handler/default-error-handler.ts
28096
29004
  import {
28097
- RuntimeModelError as RuntimeModelError62,
29005
+ RuntimeModelError as RuntimeModelError64,
28098
29006
  ModelError as ModelError31,
28099
29007
  HttpError as HttpError5,
28100
29008
  NoticeError as NoticeError2,
28101
- RuntimeError as RuntimeError60
29009
+ RuntimeError as RuntimeError61
28102
29010
  } from "@ibiz-template/core";
28103
29011
  var DefaultErrorHandler = class {
28104
29012
  handle(error) {
28105
- if (error instanceof RuntimeModelError62 || error instanceof ModelError31) {
29013
+ if (error instanceof RuntimeModelError64 || error instanceof ModelError31) {
28106
29014
  ibiz.message.error(error.message, 10, true);
28107
29015
  } else if (error instanceof HttpError5) {
28108
29016
  if (error.status === 401) {
@@ -28116,7 +29024,7 @@ var DefaultErrorHandler = class {
28116
29024
  }
28117
29025
  } else if (error instanceof NoticeError2) {
28118
29026
  ibiz.message.error(error.message, error.duration, error.duration === 0);
28119
- } else if (error instanceof RuntimeError60) {
29027
+ } else if (error instanceof RuntimeError61) {
28120
29028
  ibiz.message.error(error.message, 10, true);
28121
29029
  }
28122
29030
  ibiz.log.error(error);
@@ -28258,7 +29166,7 @@ var GlobalUtil = class {
28258
29166
  };
28259
29167
 
28260
29168
  // src/logic-scheduler/executor/logic-executor.ts
28261
- import { RuntimeError as RuntimeError61 } from "@ibiz-template/core";
29169
+ import { RuntimeError as RuntimeError62 } from "@ibiz-template/core";
28262
29170
  var LogicExecutor = class {
28263
29171
  /**
28264
29172
  * @author lxm
@@ -28279,7 +29187,7 @@ var LogicExecutor = class {
28279
29187
  */
28280
29188
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28281
29189
  execute(_executeParams) {
28282
- throw new RuntimeError61("Method not implemented.");
29190
+ throw new RuntimeError62("Method not implemented.");
28283
29191
  }
28284
29192
  /**
28285
29193
  * 销毁方法
@@ -28370,13 +29278,13 @@ var ScriptExecutor = class extends LogicExecutor {
28370
29278
  };
28371
29279
 
28372
29280
  // src/logic-scheduler/executor/app-de-ui-logic-executor.ts
28373
- import { RuntimeModelError as RuntimeModelError63 } from "@ibiz-template/core";
29281
+ import { RuntimeModelError as RuntimeModelError65 } from "@ibiz-template/core";
28374
29282
  var AppDEUILogicExecutor = class extends LogicExecutor {
28375
29283
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28376
29284
  execute(executeParams) {
28377
29285
  const { appDEUILogicId, appDataEntityId } = this.logic;
28378
29286
  if (!appDEUILogicId) {
28379
- throw new RuntimeModelError63(this.logic, "\u6CA1\u6709\u914D\u7F6E\u5B9E\u4F53\u754C\u9762\u903B\u8F91");
29287
+ throw new RuntimeModelError65(this.logic, "\u6CA1\u6709\u914D\u7F6E\u5B9E\u4F53\u754C\u9762\u903B\u8F91");
28380
29288
  }
28381
29289
  execUILogic(appDEUILogicId, appDataEntityId, executeParams);
28382
29290
  }
@@ -28716,7 +29624,7 @@ var LogicSchedulerCenter = class {
28716
29624
  };
28717
29625
 
28718
29626
  // src/logic-scheduler/trigger/logic-trigger.ts
28719
- import { RuntimeError as RuntimeError62 } from "@ibiz-template/core";
29627
+ import { RuntimeError as RuntimeError63 } from "@ibiz-template/core";
28720
29628
  var LogicTrigger = class {
28721
29629
  /**
28722
29630
  * @author lxm
@@ -28776,7 +29684,7 @@ var LogicTrigger = class {
28776
29684
  if (this.executor) {
28777
29685
  return this.executor.execute(executeParams);
28778
29686
  }
28779
- throw new RuntimeError62("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
29687
+ throw new RuntimeError63("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
28780
29688
  }
28781
29689
  /**
28782
29690
  * 销毁方法
@@ -28793,12 +29701,12 @@ var CustomTrigger = class extends LogicTrigger {
28793
29701
  };
28794
29702
 
28795
29703
  // src/logic-scheduler/trigger/item-dyna-logic-trigger.ts
28796
- import { RuntimeError as RuntimeError63 } from "@ibiz-template/core";
29704
+ import { RuntimeError as RuntimeError64 } from "@ibiz-template/core";
28797
29705
  var ItemDynaLogicTrigger = class extends LogicTrigger {
28798
29706
  bindExecutor(executor) {
28799
29707
  super.bindExecutor(executor);
28800
29708
  if (this.executor.type !== "SCRIPT") {
28801
- throw new RuntimeError63(
29709
+ throw new RuntimeError64(
28802
29710
  "\u9884\u5B9A\u4E49\u903B\u8F91\u7C7B\u578B".concat(this.type, "\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u53EA\u80FD\u662F\u811A\u672C")
28803
29711
  );
28804
29712
  }
@@ -28834,7 +29742,7 @@ var ItemDynaLogicTrigger = class extends LogicTrigger {
28834
29742
  };
28835
29743
 
28836
29744
  // src/logic-scheduler/trigger/timer-trigger.ts
28837
- import { RuntimeError as RuntimeError64, RuntimeModelError as RuntimeModelError64 } from "@ibiz-template/core";
29745
+ import { RuntimeError as RuntimeError65, RuntimeModelError as RuntimeModelError66 } from "@ibiz-template/core";
28838
29746
  var TimerTrigger = class extends LogicTrigger {
28839
29747
  constructor() {
28840
29748
  super(...arguments);
@@ -28842,11 +29750,11 @@ var TimerTrigger = class extends LogicTrigger {
28842
29750
  }
28843
29751
  start() {
28844
29752
  if (!this.logic.timer) {
28845
- throw new RuntimeModelError64(this.logic, "\u5B9A\u65F6\u5668\u7F3A\u5C11\u5B9A\u65F6\u95F4\u9694");
29753
+ throw new RuntimeModelError66(this.logic, "\u5B9A\u65F6\u5668\u7F3A\u5C11\u5B9A\u65F6\u95F4\u9694");
28846
29754
  }
28847
29755
  this.timer = setInterval(() => {
28848
29756
  if (!this.scheduler.defaultParamsCb) {
28849
- throw new RuntimeError64("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
29757
+ throw new RuntimeError65("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
28850
29758
  }
28851
29759
  const params = this.scheduler.defaultParamsCb();
28852
29760
  this.executor.execute(params);
@@ -28863,8 +29771,8 @@ var TimerTrigger = class extends LogicTrigger {
28863
29771
  // src/logic-scheduler/executor/app-ui-logic-executor.ts
28864
29772
  import {
28865
29773
  ModelError as ModelError34,
28866
- RuntimeError as RuntimeError65,
28867
- RuntimeModelError as RuntimeModelError65
29774
+ RuntimeError as RuntimeError66,
29775
+ RuntimeModelError as RuntimeModelError67
28868
29776
  } from "@ibiz-template/core";
28869
29777
  import { notNilEmpty as notNilEmpty9 } from "qx-util";
28870
29778
  var AppUILogicExecutor = class extends LogicExecutor {
@@ -28872,12 +29780,12 @@ var AppUILogicExecutor = class extends LogicExecutor {
28872
29780
  async execute(executeParams) {
28873
29781
  let result;
28874
29782
  try {
28875
- if (this.logic.id === "opendata" && this.logic.builtinAppUILogic) {
29783
+ if (this.logic.builtinAppUILogic && this.logic.builtinAppUILogic.viewLogicType === "APP_OPENDATA") {
28876
29784
  result = await this.executeOpenDataAppUILogic(
28877
29785
  this.logic.builtinAppUILogic,
28878
29786
  executeParams
28879
29787
  );
28880
- } else if (this.logic.id === "newdata" && this.logic.builtinAppUILogic) {
29788
+ } else if (this.logic.builtinAppUILogic && this.logic.builtinAppUILogic.viewLogicType === "APP_NEWDATA") {
28881
29789
  result = await this.executeNewDataAppUILogic(
28882
29790
  this.logic.builtinAppUILogic,
28883
29791
  executeParams
@@ -28901,7 +29809,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
28901
29809
  const { context, params, ...rest } = parameters;
28902
29810
  const { data } = parameters;
28903
29811
  if (!(data == null ? void 0 : data[0])) {
28904
- throw new RuntimeError65("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
29812
+ throw new RuntimeError66("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
28905
29813
  }
28906
29814
  const openViewRefs = appUILogic.openDataAppViews;
28907
29815
  let openViewRef;
@@ -28910,7 +29818,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
28910
29818
  } else {
28911
29819
  openViewRef = appUILogic.openDataAppView;
28912
29820
  if (!openViewRef) {
28913
- throw new RuntimeModelError65(
29821
+ throw new RuntimeModelError67(
28914
29822
  appUILogic,
28915
29823
  "opendata\u89C6\u56FE\u903B\u8F91\u6CA1\u6709\u914D\u7F6E\u9ED8\u8BA4\u6253\u5F00\u89C6\u56FE"
28916
29824
  );
@@ -28918,7 +29826,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
28918
29826
  }
28919
29827
  const openView = openViewRef.refAppViewId;
28920
29828
  if (!openView) {
28921
- throw new RuntimeModelError65(
29829
+ throw new RuntimeModelError67(
28922
29830
  appUILogic,
28923
29831
  "opendata\u89C6\u56FE\u903B\u8F91\u7684\u9ED8\u8BA4\u6253\u5F00\u89C6\u56FE\u6CA1\u6709\u5B9E\u9645\u5F15\u7528\u89C6\u56FE"
28924
29832
  );
@@ -28948,7 +29856,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
28948
29856
  );
28949
29857
  const typeFileName = appDataEntity.formTypeAppDEFieldId || appDataEntity.dataTypeAppDEFieldId;
28950
29858
  if (!typeFileName) {
28951
- throw new RuntimeModelError65(
29859
+ throw new RuntimeModelError67(
28952
29860
  appUILogic,
28953
29861
  "".concat(appDataEntity.codeName, "[\u591A\u8868\u5355\u5B9E\u4F53] or [\u7D22\u5F15\u5B9E\u4F53]\u7F3A\u5C11\u7C7B\u578B\u5C5E\u6027\u914D\u7F6E")
28954
29862
  );
@@ -28956,12 +29864,12 @@ var AppUILogicExecutor = class extends LogicExecutor {
28956
29864
  const { data } = parameters;
28957
29865
  const formTypeValue = data[0][typeFileName];
28958
29866
  if (!formTypeValue) {
28959
- throw new RuntimeModelError65(appUILogic, "\u6570\u636E\u6E90\u65E0\u8868\u5355\u7C7B\u578B\u5E94\u7528\u5B9E\u4F53\u5C5E\u6027\u503C");
29867
+ throw new RuntimeModelError67(appUILogic, "\u6570\u636E\u6E90\u65E0\u8868\u5355\u7C7B\u578B\u5E94\u7528\u5B9E\u4F53\u5C5E\u6027\u503C");
28960
29868
  }
28961
29869
  const openViewRefs = appUILogic.openDataAppViews;
28962
29870
  const findView = openViewRefs == null ? void 0 : openViewRefs.find((item) => item.refMode === formTypeValue);
28963
29871
  if (!findView) {
28964
- throw new RuntimeError65(
29872
+ throw new RuntimeError66(
28965
29873
  "\u6CA1\u6709\u627E\u5230\u4E0E\u8868\u5355\u7C7B\u578B".concat(formTypeValue, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
28966
29874
  );
28967
29875
  }
@@ -28998,7 +29906,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
28998
29906
  return viewRef.refMode.toLowerCase() !== parentDeName;
28999
29907
  });
29000
29908
  if (!newViewRef) {
29001
- throw new RuntimeModelError65(
29909
+ throw new RuntimeModelError67(
29002
29910
  appUILogic,
29003
29911
  "\u6CA1\u6709\u627E\u5230\u6279\u6DFB\u52A0\u9700\u8981\u6253\u5F00\u7684\u9009\u62E9\u89C6\u56FE"
29004
29912
  );
@@ -29008,7 +29916,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29008
29916
  } else {
29009
29917
  newViewRef = newDataAppView;
29010
29918
  if (!newViewRef || !newViewRef.refAppViewId) {
29011
- throw new RuntimeModelError65(
29919
+ throw new RuntimeModelError67(
29012
29920
  appUILogic,
29013
29921
  "newdata\u89C6\u56FE\u903B\u8F91\u6CA1\u6709\u914D\u7F6E\u9ED8\u8BA4\u65B0\u5EFA\u6570\u636E\u89C6\u56FE"
29014
29922
  );
@@ -29066,7 +29974,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29066
29974
  const { wizardAppView, newDataAppViews } = appUILogic;
29067
29975
  const { context, params, ...rest } = parameters;
29068
29976
  if (!wizardAppView || !wizardAppView.refAppViewId) {
29069
- throw new RuntimeModelError65(appUILogic, "\u7F3A\u5C11\u9ED8\u8BA4\u7D22\u5F15\u5B9E\u4F53\u9009\u62E9\u89C6\u56FE");
29977
+ throw new RuntimeModelError67(appUILogic, "\u7F3A\u5C11\u9ED8\u8BA4\u7D22\u5F15\u5B9E\u4F53\u9009\u62E9\u89C6\u56FE");
29070
29978
  }
29071
29979
  const result = await ibiz.commands.execute(
29072
29980
  OpenAppViewCommand.TAG,
@@ -29080,7 +29988,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29080
29988
  }
29081
29989
  const selectData = (_a = result.data) == null ? void 0 : _a[0];
29082
29990
  if (!selectData) {
29083
- throw new RuntimeError65("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
29991
+ throw new RuntimeError66("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
29084
29992
  }
29085
29993
  const indexType = selectData.srfkey;
29086
29994
  const findView = newDataAppViews == null ? void 0 : newDataAppViews.find(
@@ -29090,7 +29998,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29090
29998
  }
29091
29999
  );
29092
30000
  if (!findView) {
29093
- throw new RuntimeError65(
30001
+ throw new RuntimeError66(
29094
30002
  "\u6CA1\u6709\u627E\u5230\u4E0E\u7D22\u5F15\u7C7B\u578B".concat(indexType, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
29095
30003
  );
29096
30004
  }
@@ -29117,7 +30025,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
29117
30025
  const minorDERs = selfDe.minorAppDERSs;
29118
30026
  const pickParentDeName = newViewRef.refMode.toLowerCase();
29119
30027
  if (!minorDERs) {
29120
- throw new RuntimeModelError65(selfDe, "\u5B9E\u4F53\u6CA1\u6709\u4ECE\u5173\u7CFB\u96C6\u5408\uFF01");
30028
+ throw new RuntimeModelError67(selfDe, "\u5B9E\u4F53\u6CA1\u6709\u4ECE\u5173\u7CFB\u96C6\u5408\uFF01");
29121
30029
  }
29122
30030
  let pickParentFieldName;
29123
30031
  minorDERs == null ? void 0 : minorDERs.forEach((item) => {
@@ -29216,12 +30124,12 @@ var ControlEventTrigger = class extends LogicTrigger {
29216
30124
  };
29217
30125
 
29218
30126
  // src/logic-scheduler/executor/app-ui-action-executor.ts
29219
- import { RuntimeModelError as RuntimeModelError66 } from "@ibiz-template/core";
30127
+ import { RuntimeModelError as RuntimeModelError68 } from "@ibiz-template/core";
29220
30128
  var AppDEUIActionExecutor = class extends LogicExecutor {
29221
30129
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
29222
30130
  execute(executeParams) {
29223
30131
  if (!this.logic.appDEUIActionId) {
29224
- throw new RuntimeModelError66(
30132
+ throw new RuntimeModelError68(
29225
30133
  this.logic,
29226
30134
  "\u903B\u8F91\u4E2D\u7F3A\u5C11\u89E6\u53D1\u5E94\u7528\u5B9E\u4F53\u754C\u9762\u884C\u4E3Aid"
29227
30135
  );