@ibiz-template/runtime 0.6.17 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/index.esm.js +1083 -331
  2. package/dist/index.system.min.js +1 -1
  3. package/out/app-hub.d.ts +7 -0
  4. package/out/app-hub.d.ts.map +1 -1
  5. package/out/app-hub.js +11 -0
  6. package/out/application.d.ts +7 -0
  7. package/out/application.d.ts.map +1 -1
  8. package/out/application.js +9 -0
  9. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  10. package/out/controller/common/control/md-control.controller.js +3 -0
  11. package/out/controller/control/chart/chart.controller.d.ts +38 -0
  12. package/out/controller/control/chart/chart.controller.d.ts.map +1 -1
  13. package/out/controller/control/chart/chart.controller.js +183 -0
  14. package/out/controller/control/chart/generator/base-series-generator.js +1 -1
  15. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  16. package/out/controller/control/form/edit-form/edit-form.controller.js +8 -6
  17. package/out/controller/control/form/form/form.controller.d.ts +16 -0
  18. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  19. package/out/controller/control/form/form/form.controller.js +32 -3
  20. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.d.ts +2 -2
  21. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.d.ts.map +1 -1
  22. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.js +2 -2
  23. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts +32 -1
  24. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts.map +1 -1
  25. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.js +63 -0
  26. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts +12 -0
  27. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts.map +1 -0
  28. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.js +13 -0
  29. package/out/controller/control/grid/grid/grid.controller.d.ts +14 -0
  30. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  31. package/out/controller/control/grid/grid/grid.controller.js +20 -1
  32. package/out/controller/control/search-bar/index.d.ts +3 -1
  33. package/out/controller/control/search-bar/index.d.ts.map +1 -1
  34. package/out/controller/control/search-bar/index.js +3 -1
  35. package/out/controller/control/search-bar/interface-util.d.ts +75 -0
  36. package/out/controller/control/search-bar/interface-util.d.ts.map +1 -0
  37. package/out/controller/control/search-bar/interface-util.js +274 -0
  38. package/out/controller/control/search-bar/search-bar-filter-items.controller.d.ts +1 -2
  39. package/out/controller/control/search-bar/search-bar-filter-items.controller.d.ts.map +1 -1
  40. package/out/controller/control/search-bar/search-bar-filter-items.controller.js +13 -10
  41. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.d.ts +37 -0
  42. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.d.ts.map +1 -0
  43. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.js +47 -0
  44. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts +20 -5
  45. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts.map +1 -1
  46. package/out/controller/control/search-bar/search-bar-filter.controller.js +13 -2
  47. package/out/controller/control/search-bar/search-bar.controller.d.ts +15 -2
  48. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  49. package/out/controller/control/search-bar/search-bar.controller.js +80 -30
  50. package/out/controller/control/search-bar/util.d.ts +35 -0
  51. package/out/controller/control/search-bar/util.d.ts.map +1 -0
  52. package/out/controller/control/search-bar/util.js +45 -0
  53. package/out/global/global-util/global-util.d.ts +14 -0
  54. package/out/global/global-util/global-util.d.ts.map +1 -1
  55. package/out/global/global-util/global-util.js +19 -0
  56. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +7 -0
  57. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  58. package/out/interface/common/i-app-service/i-app-service.d.ts +7 -0
  59. package/out/interface/common/i-app-service/i-app-service.d.ts.map +1 -1
  60. package/out/interface/controller/controller/control/i-app-menu.controller.d.ts +8 -1
  61. package/out/interface/controller/controller/control/i-app-menu.controller.d.ts.map +1 -1
  62. package/out/interface/controller/state/control/i-chart.state.d.ts +28 -0
  63. package/out/interface/controller/state/control/i-chart.state.d.ts.map +1 -1
  64. package/out/interface/controller/state/control/i-md-control.state.d.ts +4 -0
  65. package/out/interface/controller/state/control/i-md-control.state.d.ts.map +1 -1
  66. package/out/interface/controller/state/control/index.d.ts +1 -1
  67. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  68. package/out/interface/controller/state/control/index.js +1 -1
  69. package/out/interface/controller/state/control/search-bar/i-filter-node.d.ts +157 -0
  70. package/out/interface/controller/state/control/search-bar/i-filter-node.d.ts.map +1 -0
  71. package/out/interface/controller/state/control/search-bar/i-quick-search.d.ts +24 -0
  72. package/out/interface/controller/state/control/search-bar/i-quick-search.d.ts.map +1 -0
  73. package/out/interface/controller/state/control/search-bar/i-quick-search.js +1 -0
  74. package/out/interface/controller/state/control/search-bar/i-search-bar-group.d.ts +89 -0
  75. package/out/interface/controller/state/control/search-bar/i-search-bar-group.d.ts.map +1 -0
  76. package/out/interface/controller/state/control/search-bar/i-search-bar-group.js +1 -0
  77. package/out/interface/controller/state/control/search-bar/i-search-bar.state.d.ts +78 -0
  78. package/out/interface/controller/state/control/search-bar/i-search-bar.state.d.ts.map +1 -0
  79. package/out/interface/controller/state/control/search-bar/i-search-bar.state.js +1 -0
  80. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.d.ts +65 -0
  81. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.d.ts.map +1 -0
  82. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.js +1 -0
  83. package/out/interface/controller/state/control/search-bar/i-search-cond.d.ts +43 -0
  84. package/out/interface/controller/state/control/search-bar/i-search-cond.d.ts.map +1 -0
  85. package/out/interface/controller/state/control/search-bar/i-search-cond.js +1 -0
  86. package/out/interface/controller/state/control/search-bar/index.d.ts +7 -0
  87. package/out/interface/controller/state/control/search-bar/index.d.ts.map +1 -0
  88. package/out/interface/controller/state/control/search-bar/index.js +1 -0
  89. package/out/service/service/code-list/code-list.service.d.ts +14 -0
  90. package/out/service/service/code-list/code-list.service.d.ts.map +1 -1
  91. package/out/service/service/code-list/code-list.service.js +39 -0
  92. package/out/service/service/control/md-control.service.d.ts.map +1 -1
  93. package/out/service/service/control/md-control.service.js +3 -0
  94. package/out/service/service/counter/counter.service.d.ts.map +1 -1
  95. package/out/service/service/counter/counter.service.js +5 -1
  96. package/out/service/utils/app-counter/app-counter.d.ts.map +1 -1
  97. package/out/service/utils/app-counter/app-counter.js +4 -2
  98. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +81 -0
  99. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  100. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +127 -2
  101. package/out/ui-action/provider/front-ui-action-provider.d.ts.map +1 -1
  102. package/out/ui-action/provider/front-ui-action-provider.js +0 -1
  103. package/out/ui-logic/ui-logic-context.d.ts +7 -0
  104. package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
  105. package/out/ui-logic/ui-logic-context.js +7 -0
  106. package/out/ui-logic/ui-logic-param/ui-logic-param.d.ts.map +1 -1
  107. package/out/ui-logic/ui-logic-param/ui-logic-param.js +16 -3
  108. package/package.json +4 -4
  109. package/out/controller/control/search-bar/use-searchcond.d.ts +0 -33
  110. package/out/controller/control/search-bar/use-searchcond.d.ts.map +0 -1
  111. package/out/controller/control/search-bar/use-searchcond.js +0 -117
  112. package/out/interface/controller/state/control/i-search-bar.state.d.ts +0 -224
  113. package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +0 -1
  114. /package/out/interface/controller/state/control/{i-search-bar.state.js → search-bar/i-filter-node.js} +0 -0
package/dist/index.esm.js CHANGED
@@ -3350,8 +3350,8 @@ var baseStyle = {
3350
3350
  position: "fixed",
3351
3351
  zIndex: "10000"
3352
3352
  };
3353
- function cloneElement(clone34, teleport = document.body, isRemoveChild = true) {
3354
- const element = getAnimationElement(clone34);
3353
+ function cloneElement(clone35, teleport = document.body, isRemoveChild = true) {
3354
+ const element = getAnimationElement(clone35);
3355
3355
  if (element == null) {
3356
3356
  throw new Error("Cannot clone a null or undefined element.");
3357
3357
  }
@@ -3770,11 +3770,11 @@ function arrayContains(arr, val) {
3770
3770
  });
3771
3771
  }
3772
3772
  function cloneObject(o) {
3773
- var clone34 = {};
3773
+ var clone35 = {};
3774
3774
  for (var p in o) {
3775
- clone34[p] = o[p];
3775
+ clone35[p] = o[p];
3776
3776
  }
3777
- return clone34;
3777
+ return clone35;
3778
3778
  }
3779
3779
  function replaceObjectProps(o1, o2) {
3780
3780
  var o = cloneObject(o1);
@@ -5065,7 +5065,7 @@ var FileUtil = class {
5065
5065
 
5066
5066
  // src/command/app/open-app-view/open-app-view.ts
5067
5067
  import { ModelError as ModelError15, RuntimeError as RuntimeError25 } from "@ibiz-template/core";
5068
- import { clone as clone17 } from "ramda";
5068
+ import { clone as clone18 } from "ramda";
5069
5069
 
5070
5070
  // src/service/utils/de-dq-cond/ps-de-dq-cond-engine.ts
5071
5071
  import { isEmpty as isEmpty4 } from "ramda";
@@ -6210,7 +6210,7 @@ var AppCounter = class {
6210
6210
  const data = msg.data;
6211
6211
  if (this.model.appDataEntityId) {
6212
6212
  const codeName = calcDeCodeNameById(this.model.appDataEntityId);
6213
- if (data && data.srfdecodename === codeName) {
6213
+ if (data && data.srfdecodename && data.srfdecodename.toLowerCase() === codeName) {
6214
6214
  this.refresh();
6215
6215
  }
6216
6216
  }
@@ -6330,7 +6330,7 @@ var AppCounter = class {
6330
6330
  this.context.destroy();
6331
6331
  this.destroyInterval();
6332
6332
  this.evt.reset();
6333
- ibiz.mc.command.change.on(this.countChange);
6333
+ ibiz.mc.command.change.off(this.countChange);
6334
6334
  }
6335
6335
  };
6336
6336
 
@@ -6480,8 +6480,13 @@ var DEDQCondUtil = class {
6480
6480
  DEDQCondUtil.map = /* @__PURE__ */ new WeakMap();
6481
6481
 
6482
6482
  // src/service/utils/dynamic-code-list/dynamic-code-list.ts
6483
- import { ModelError as ModelError5, RuntimeModelError as RuntimeModelError7 } from "@ibiz-template/core";
6484
- import { isNil as isNil5 } from "ramda";
6483
+ import {
6484
+ IBizContext as IBizContext2,
6485
+ ModelError as ModelError5,
6486
+ RuntimeModelError as RuntimeModelError7
6487
+ } from "@ibiz-template/core";
6488
+ import { clone as clone4, isNil as isNil5 } from "ramda";
6489
+ import { QXEvent as QXEvent3, notNilEmpty as notNilEmpty6 } from "qx-util";
6485
6490
  var DynamicCodeListCache = class {
6486
6491
  constructor(codeList) {
6487
6492
  /**
@@ -6501,7 +6506,55 @@ var DynamicCodeListCache = class {
6501
6506
  * @type {boolean}
6502
6507
  */
6503
6508
  this.isPredefined = false;
6509
+ /**
6510
+ * 应用上下文
6511
+ *
6512
+ * @author tony001
6513
+ * @date 2024-04-10 15:04:25
6514
+ * @protected
6515
+ * @type {IContext}
6516
+ */
6517
+ this.context = IBizContext2.create();
6518
+ /**
6519
+ * 视图参数
6520
+ *
6521
+ * @author tony001
6522
+ * @date 2024-04-10 15:04:39
6523
+ * @protected
6524
+ * @type {IParams}
6525
+ */
6526
+ this.params = {};
6527
+ /**
6528
+ * 事件对象
6529
+ *
6530
+ * @author tony001
6531
+ * @date 2024-04-10 17:04:00
6532
+ * @protected
6533
+ */
6534
+ this.evt = new QXEvent3();
6504
6535
  this.codeList = codeList;
6536
+ this.codelistChange = this.codelistChange.bind(this);
6537
+ const { appDataEntityId, appDEDataSetId } = this.codeList;
6538
+ if (appDataEntityId && appDEDataSetId) {
6539
+ ibiz.mc.command.change.on(this.codelistChange);
6540
+ }
6541
+ }
6542
+ /**
6543
+ * 设置上下文以及查询参数
6544
+ *
6545
+ * @author tony001
6546
+ * @date 2024-04-10 15:04:04
6547
+ * @protected
6548
+ * @param {IContext} [context]
6549
+ * @param {IParams} [params]
6550
+ */
6551
+ setParams(context, params) {
6552
+ if (context) {
6553
+ this.context = clone4(context);
6554
+ }
6555
+ if (params) {
6556
+ this.params = clone4(params);
6557
+ }
6505
6558
  }
6506
6559
  /**
6507
6560
  * 初始化
@@ -6623,6 +6676,7 @@ var DynamicCodeListCache = class {
6623
6676
  * @returns {*} {Promise<CodeListItem[]>}
6624
6677
  */
6625
6678
  async load(context, params = {}) {
6679
+ this.setParams(context, params);
6626
6680
  const app = ibiz.hub.getApp(context.srfappid);
6627
6681
  const {
6628
6682
  appDataEntityId,
@@ -6754,10 +6808,79 @@ var DynamicCodeListCache = class {
6754
6808
  delete cacheData.promise;
6755
6809
  return result;
6756
6810
  }
6811
+ /**
6812
+ * 接受代码表实体数据变更,刷新代码表
6813
+ *
6814
+ * @author tony001
6815
+ * @date 2024-04-10 15:04:42
6816
+ * @protected
6817
+ * @param {IPortalMessage} msg
6818
+ */
6819
+ codelistChange(msg) {
6820
+ const data = msg.data;
6821
+ const { appDataEntityId } = this.codeList;
6822
+ if (appDataEntityId) {
6823
+ const codeName = calcDeCodeNameById(appDataEntityId);
6824
+ if (data && data.srfdecodename && data.srfdecodename.toLowerCase() === codeName) {
6825
+ this.refresh();
6826
+ }
6827
+ }
6828
+ }
6829
+ /**
6830
+ * 刷新代码表数据
6831
+ *
6832
+ * @author tony001
6833
+ * @date 2024-04-10 17:04:20
6834
+ * @return {*} {Promise<void>}
6835
+ */
6836
+ async refresh() {
6837
+ const key = JSON.stringify(this.context) + JSON.stringify(this.params);
6838
+ this.cache.delete(key);
6839
+ const result = await this.get(this.context, this.params);
6840
+ this.evt.emit("change", result);
6841
+ }
6842
+ /**
6843
+ * 代码表数据变更事件监听
6844
+ *
6845
+ * @author tony001
6846
+ * @date 2024-04-10 17:04:52
6847
+ * @param {(data: CodeListItem[]) => void} fn
6848
+ * @param {boolean} [immediate=true] 当有数据时,立即触发一次回调
6849
+ */
6850
+ onChange(fn, immediate = true) {
6851
+ this.evt.on("change", fn);
6852
+ const key = JSON.stringify(this.context) + JSON.stringify(this.params);
6853
+ const cacheData = this.cache.get(key);
6854
+ if (immediate && notNilEmpty6(cacheData)) {
6855
+ fn(cacheData.items);
6856
+ }
6857
+ }
6858
+ /**
6859
+ * 取消代码表数据变更监听
6860
+ *
6861
+ * @author tony001
6862
+ * @date 2024-04-10 17:04:57
6863
+ * @param {(data: CodeListItem[]) => void} fn
6864
+ */
6865
+ offChange(fn) {
6866
+ this.evt.off("change", fn);
6867
+ }
6868
+ /**
6869
+ * 销毁(取消数据变更监听)
6870
+ *
6871
+ * @author tony001
6872
+ * @date 2024-04-10 15:04:11
6873
+ */
6874
+ destroy() {
6875
+ const { appDataEntityId, appDEDataSetId } = this.codeList;
6876
+ if (appDataEntityId && appDEDataSetId) {
6877
+ ibiz.mc.command.change.off(this.codelistChange);
6878
+ }
6879
+ }
6757
6880
  };
6758
6881
 
6759
6882
  // src/service/utils/de-cache/de-cache.ts
6760
- import { where, equals, clone as clone4, isNil as isNil7, isEmpty as isEmpty6 } from "ramda";
6883
+ import { where, equals, clone as clone5, isNil as isNil7, isEmpty as isEmpty6 } from "ramda";
6761
6884
  import { createUUID as createUUID2 } from "qx-util";
6762
6885
  import { RuntimeError as RuntimeError16 } from "@ibiz-template/core";
6763
6886
 
@@ -6837,7 +6960,7 @@ var DECache = class {
6837
6960
  * @param {IDataEntity} entity
6838
6961
  */
6839
6962
  forceUpdate(_context, entity) {
6840
- this.cacheMap.set(entity.srfkey, clone4(entity));
6963
+ this.cacheMap.set(entity.srfkey, clone5(entity));
6841
6964
  ibiz.log.warn("forceUpdate", entity.srfkey, entity);
6842
6965
  }
6843
6966
  /**
@@ -6876,7 +6999,7 @@ var DECache = class {
6876
6999
  }
6877
7000
  entity.srftempdate = (/* @__PURE__ */ new Date()).getTime();
6878
7001
  const commit = () => {
6879
- this.cacheMap.set(entity.srfkey, clone4(entity));
7002
+ this.cacheMap.set(entity.srfkey, clone5(entity));
6880
7003
  ibiz.log.warn("add", entity.srfkey, entity);
6881
7004
  };
6882
7005
  const t = this.getTransaction(context);
@@ -6906,7 +7029,7 @@ var DECache = class {
6906
7029
  isExistSessionId("get", context);
6907
7030
  const data = this.cacheMap.get(srfKey);
6908
7031
  ibiz.log.warn("get", srfKey, data);
6909
- return clone4(data);
7032
+ return clone5(data);
6910
7033
  } catch (err) {
6911
7034
  ibiz.log.error(err);
6912
7035
  return null;
@@ -6936,7 +7059,7 @@ var DECache = class {
6936
7059
  entity.srftempdate = (/* @__PURE__ */ new Date()).getTime();
6937
7060
  const data = this.cacheMap.get(oldKey);
6938
7061
  if (data) {
6939
- const _data = clone4(data);
7062
+ const _data = clone5(data);
6940
7063
  _data.assign(entity);
6941
7064
  const commit = () => {
6942
7065
  data.assign(entity);
@@ -7019,7 +7142,7 @@ var DECache = class {
7019
7142
  entity.srfkey = createUUID2();
7020
7143
  }
7021
7144
  entity.srftempdate = (/* @__PURE__ */ new Date()).getTime();
7022
- const data = clone4(entity);
7145
+ const data = clone5(entity);
7023
7146
  if (t) {
7024
7147
  t.change(data.srfkey, () => {
7025
7148
  commit(data);
@@ -7069,7 +7192,7 @@ var DECache = class {
7069
7192
  entity.srftempdate = (/* @__PURE__ */ new Date()).getTime();
7070
7193
  const data = this.cacheMap.get(entity.srfkey);
7071
7194
  if (data) {
7072
- const _data = clone4(data);
7195
+ const _data = clone5(data);
7073
7196
  _data.assign(entity);
7074
7197
  entities[i] = _data;
7075
7198
  if (t) {
@@ -7594,6 +7717,44 @@ var CodeListService = class {
7594
7717
  }
7595
7718
  return [];
7596
7719
  }
7720
+ /**
7721
+ * 获取代码表实例对象(动态代码表返回具体实例,静态代码表返回undefined)
7722
+ *
7723
+ * @param tag 代码表标识
7724
+ * @returns 动态代码表实例|undefined
7725
+ */
7726
+ async getCodeListInstance(tag) {
7727
+ let codeListInstance;
7728
+ const codeList = this.allCodeLists.get(tag);
7729
+ if (!codeList) {
7730
+ throw new RuntimeError17("\u627E\u4E0D\u5230".concat(tag, "\u4EE3\u7801\u8868"));
7731
+ }
7732
+ if (codeList.codeListType === "DYNAMIC") {
7733
+ const codeName = codeList.codeName;
7734
+ if (this.cache.has(codeName)) {
7735
+ codeListInstance = this.cache.get(codeName);
7736
+ } else {
7737
+ codeListInstance = new DynamicCodeListCache(codeList);
7738
+ this.cache.set(codeName, codeListInstance);
7739
+ await codeListInstance.init();
7740
+ }
7741
+ }
7742
+ return codeListInstance;
7743
+ }
7744
+ /**
7745
+ * 销毁(清除动态代码表监听)
7746
+ *
7747
+ * @author tony001
7748
+ * @return {void}
7749
+ */
7750
+ destroy() {
7751
+ const cacheList = Array.from(this.cache.values());
7752
+ cacheList.forEach((item) => {
7753
+ if (item instanceof DynamicCodeListCache) {
7754
+ item.destroy();
7755
+ }
7756
+ });
7757
+ }
7597
7758
  };
7598
7759
 
7599
7760
  // src/service/service/config/config.service.ts
@@ -7659,7 +7820,10 @@ var CounterService = class {
7659
7820
  * @return {*} {Promise<AppCounter>}
7660
7821
  */
7661
7822
  static async getCounter(model, context, params) {
7662
- const id = model.id;
7823
+ let id = model.id;
7824
+ if (params && params.customId) {
7825
+ id = params.customId;
7826
+ }
7663
7827
  if (this.counterMap.has(id)) {
7664
7828
  const counter2 = this.counterMap.get(id);
7665
7829
  if (counter2.isDestroyed === false) {
@@ -8073,7 +8237,7 @@ var FileService = class {
8073
8237
  };
8074
8238
 
8075
8239
  // src/service/app-data-entity/app-data-entity.ts
8076
- import { clone as clone5, isNil as isNil9 } from "ramda";
8240
+ import { clone as clone6, isNil as isNil9 } from "ramda";
8077
8241
  import { DataTypes } from "@ibiz-template/core";
8078
8242
  import { createUUID as createUUID3 } from "qx-util";
8079
8243
 
@@ -8106,7 +8270,7 @@ var AppDataEntity = class _AppDataEntity {
8106
8270
  Object.defineProperty(this, "_data", {
8107
8271
  enumerable: false,
8108
8272
  configurable: true,
8109
- value: data instanceof _AppDataEntity ? clone5(data._data) : clone5(data)
8273
+ value: data instanceof _AppDataEntity ? clone6(data._data) : clone6(data)
8110
8274
  });
8111
8275
  Object.defineProperty(this, "srfdeid", {
8112
8276
  get() {
@@ -8273,7 +8437,7 @@ var AppDataEntity = class _AppDataEntity {
8273
8437
 
8274
8438
  // src/service/dto/method.dto.ts
8275
8439
  import { ModelError as ModelError6, RuntimeModelError as RuntimeModelError9 } from "@ibiz-template/core";
8276
- import { clone as clone6 } from "ramda";
8440
+ import { clone as clone7 } from "ramda";
8277
8441
  var MethodDto = class {
8278
8442
  /**
8279
8443
  * Creates an instance of MethodDto.
@@ -8372,7 +8536,7 @@ var MethodDto = class {
8372
8536
  });
8373
8537
  let res;
8374
8538
  if (deRs && deRs.nestedAppDEDataSetId) {
8375
- const _context = clone6(context);
8539
+ const _context = clone7(context);
8376
8540
  _context[this.entity.codeName.toLowerCase()] = data.srfkey;
8377
8541
  const _params = {};
8378
8542
  if (deRs.parentAppDEFieldId) {
@@ -8786,11 +8950,11 @@ var DEService = class {
8786
8950
  };
8787
8951
 
8788
8952
  // src/service/service/control/control.service.ts
8789
- import { clone as clone8 } from "@ibiz-template/core";
8953
+ import { clone as clone9 } from "@ibiz-template/core";
8790
8954
 
8791
8955
  // src/service/vo/control.vo.ts
8792
8956
  import { createUUID as createUUID4 } from "qx-util";
8793
- import { clone as clone7, isNil as isNil10 } from "ramda";
8957
+ import { clone as clone8, isNil as isNil10 } from "ramda";
8794
8958
  var BuildInKeys = [
8795
8959
  "srfkey",
8796
8960
  "srfmajortext",
@@ -8978,7 +9142,7 @@ var ControlVO = class _ControlVO {
8978
9142
  * @return {*} {ControlVO}
8979
9143
  */
8980
9144
  clone() {
8981
- const cloneOrigin = clone7(this.$origin);
9145
+ const cloneOrigin = clone8(this.$origin);
8982
9146
  const newVal = new _ControlVO(cloneOrigin, this.$dataUIMap);
8983
9147
  Object.keys(this).forEach((key) => {
8984
9148
  newVal[key] = this[key];
@@ -9094,7 +9258,7 @@ var ControlService = class {
9094
9258
  * @returns {*} {IHttpResponse}
9095
9259
  */
9096
9260
  handleResponse(res) {
9097
- return clone8(res);
9261
+ return clone9(res);
9098
9262
  }
9099
9263
  /**
9100
9264
  * 实体数据转ui数据
@@ -9261,6 +9425,9 @@ var MDControlService = class extends ControlService {
9261
9425
  if (res.headers["x-total"]) {
9262
9426
  res.total = Number(res.headers["x-total"]);
9263
9427
  }
9428
+ if (res.headers["x-total-pages"]) {
9429
+ res.totalPages = Number(res.headers["x-total-pages"]);
9430
+ }
9264
9431
  }
9265
9432
  if (res.ok) {
9266
9433
  if (isArray3(res.data)) {
@@ -9811,7 +9978,7 @@ import {
9811
9978
  } from "@ibiz-template/core";
9812
9979
  import { isArray as isArray6, isNil as isNil12 } from "lodash-es";
9813
9980
  import { ascSort } from "qx-util";
9814
- import { clone as clone14 } from "ramda";
9981
+ import { clone as clone15 } from "ramda";
9815
9982
 
9816
9983
  // src/service/service/entity/method/method.ts
9817
9984
  import { RuntimeModelError as RuntimeModelError11 } from "@ibiz-template/core";
@@ -10051,7 +10218,7 @@ var Method = class {
10051
10218
  // src/de-logic/index.ts
10052
10219
  import { HttpError as HttpError4, HttpResponse as HttpResponse2, RuntimeError as RuntimeError22 } from "@ibiz-template/core";
10053
10220
  import { isArray as isArray5 } from "lodash-es";
10054
- import { clone as clone13 } from "ramda";
10221
+ import { clone as clone14 } from "ramda";
10055
10222
 
10056
10223
  // src/de-logic/de-logic.ts
10057
10224
  import { ModelError as ModelError13, RuntimeModelError as RuntimeModelError21 } from "@ibiz-template/core";
@@ -10511,11 +10678,11 @@ var EndNode = class extends DELogicNode {
10511
10678
 
10512
10679
  // src/de-logic/de-logic-node/prepare-param-node/prepare-param-node.ts
10513
10680
  import { ModelError as ModelError11 } from "@ibiz-template/core";
10514
- import { clone as clone10 } from "ramda";
10681
+ import { clone as clone11 } from "ramda";
10515
10682
 
10516
10683
  // src/de-logic/utils/handle-src-val.ts
10517
10684
  import { ModelError as ModelError10 } from "@ibiz-template/core";
10518
- import { clone as clone9 } from "ramda";
10685
+ import { clone as clone10 } from "ramda";
10519
10686
  function handleSrcVal(ctx, srcValParams) {
10520
10687
  const { srcDELogicParamId, srcFieldName, srcValue, expression } = srcValParams;
10521
10688
  const srcValueType = srcValParams.srcValueType || "SRCDLPARAM";
@@ -10545,7 +10712,7 @@ function handleSrcVal(ctx, srcValParams) {
10545
10712
  value = ctx.parameters.context;
10546
10713
  break;
10547
10714
  case "ENVPARAM":
10548
- value = clone9(ibiz.env);
10715
+ value = clone10(ibiz.env);
10549
10716
  break;
10550
10717
  case "EXPRESSION":
10551
10718
  if (!expression) {
@@ -10591,7 +10758,7 @@ var PrepareParamNode = class extends DELogicNode {
10591
10758
  let result;
10592
10759
  let originValue;
10593
10760
  if (nodeParam.dstDELogicParamId && ibiz.env.logLevel === "DEBUG") {
10594
- originValue = clone10(ctx.params[nodeParam.dstDELogicParamId]);
10761
+ originValue = clone11(ctx.params[nodeParam.dstDELogicParamId]);
10595
10762
  }
10596
10763
  switch (nodeParam.paramAction) {
10597
10764
  case "SETPARAMVALUE":
@@ -10644,7 +10811,7 @@ var PrepareParamNode = class extends DELogicNode {
10644
10811
  copyParam(nodeParam, ctx) {
10645
10812
  const { dstDELogicParamId } = nodeParam;
10646
10813
  const srcVal = handleSrcVal(ctx, nodeParam);
10647
- ctx.params[dstDELogicParamId] = clone10(srcVal);
10814
+ ctx.params[dstDELogicParamId] = clone11(srcVal);
10648
10815
  }
10649
10816
  /**
10650
10817
  * 绑定参数
@@ -10820,7 +10987,7 @@ var RenewParamNode = class extends DELogicNode {
10820
10987
 
10821
10988
  // src/de-logic/de-logic-node/copy-param-node/copy-param-node.ts
10822
10989
  import { RuntimeModelError as RuntimeModelError18 } from "@ibiz-template/core";
10823
- import { clone as clone11 } from "ramda";
10990
+ import { clone as clone12 } from "ramda";
10824
10991
  var CopyParamNode = class extends DELogicNode {
10825
10992
  async exec(ctx) {
10826
10993
  const { dstDELogicParamId, srcDELogicParamId } = this.model;
@@ -10831,7 +10998,7 @@ var CopyParamNode = class extends DELogicNode {
10831
10998
  );
10832
10999
  }
10833
11000
  const srcVal = handleSrcVal(ctx, this.model);
10834
- ctx.params[dstDELogicParamId] = clone11(srcVal);
11001
+ ctx.params[dstDELogicParamId] = clone12(srcVal);
10835
11002
  ibiz.log.debug(
10836
11003
  "\u5B9E\u4F53\u903B\u8F91\u8282\u70B9\uFF08\u62F7\u8D1D\u53C2\u6570\uFF09\uFF1A".concat(this.model.id, "-\u53C2\u6570\u540D\u79F0\uFF1A").concat(dstDELogicParamId, "-\u503C\uFF1A"),
10837
11004
  srcVal
@@ -10914,7 +11081,7 @@ var ThrowExceptionNode = class extends DELogicNode {
10914
11081
 
10915
11082
  // src/de-logic/de-logic-param/de-logic-param.ts
10916
11083
  import { ModelError as ModelError12 } from "@ibiz-template/core";
10917
- import { clone as clone12 } from "ramda";
11084
+ import { clone as clone13 } from "ramda";
10918
11085
  var DELogicParam = class {
10919
11086
  /**
10920
11087
  * Creates an instance of DELogicParam.
@@ -10946,7 +11113,7 @@ var DELogicParam = class {
10946
11113
  ctx.params[tag] = ctx.data[0] || {};
10947
11114
  }
10948
11115
  } else if (m.appGlobalParam) {
10949
- ctx.params[tag] = clone12(ibiz.env);
11116
+ ctx.params[tag] = clone13(ibiz.env);
10950
11117
  } else if (m.entityListParam) {
10951
11118
  ctx.params[tag] = [];
10952
11119
  } else if (m.entityPageParam) {
@@ -10962,7 +11129,7 @@ var DELogicParam = class {
10962
11129
  } else if (m.simpleParam) {
10963
11130
  ctx.params[tag] = {};
10964
11131
  } else if (m.cloneParam) {
10965
- ctx.params[tag] = clone12(ctx.data || {});
11132
+ ctx.params[tag] = clone13(ctx.data || {});
10966
11133
  } else if (m.envParam) {
10967
11134
  throw new ModelError12(m, "\u672A\u652F\u6301\u7684\u903B\u8F91\u53C2\u6570\u7C7B\u578B: \u7CFB\u7EDF\u73AF\u5883\u53D8\u91CF");
10968
11135
  } else if (m.fileListParam) {
@@ -11210,9 +11377,9 @@ async function execDELogicById(deDELogicId, dataEntityId, context, data, params)
11210
11377
  return execDELogic(deLogic, context, data, params);
11211
11378
  }
11212
11379
  async function execDELogicAction(deDELogic, context, data, params) {
11213
- const _context = clone13(context);
11214
- const _data = data ? clone13(data) : data;
11215
- const _params = params ? clone13(params) : params;
11380
+ const _context = clone14(context);
11381
+ const _data = data ? clone14(data) : data;
11382
+ const _params = params ? clone14(params) : params;
11216
11383
  try {
11217
11384
  const result = await execDELogic(deDELogic, _context, _data, _params);
11218
11385
  return new HttpResponse2(result);
@@ -11587,7 +11754,7 @@ var DEActionMethod = class extends Method {
11587
11754
  context,
11588
11755
  minorAppDataEntityId
11589
11756
  );
11590
- const _context = clone14(context);
11757
+ const _context = clone15(context);
11591
11758
  _context[this.entity.codeName.toLowerCase()] = key;
11592
11759
  const res = await minorService.exec(nestedAppDEDataSetId, _context);
11593
11760
  const items = res.data || [];
@@ -11759,7 +11926,7 @@ import {
11759
11926
  RuntimeModelError as RuntimeModelError23
11760
11927
  } from "@ibiz-template/core";
11761
11928
  import { isArray as isArray7 } from "lodash-es";
11762
- import { clone as clone15, isEmpty as isEmpty8, isNil as isNil13 } from "ramda";
11929
+ import { clone as clone16, isEmpty as isEmpty8, isNil as isNil13 } from "ramda";
11763
11930
  import { ascSort as ascSort2, descSort } from "qx-util";
11764
11931
  var FetchMethod = class extends Method {
11765
11932
  async exec(context, params, params2, header) {
@@ -11846,7 +12013,7 @@ var FetchMethod = class extends Method {
11846
12013
  const { page, size } = filter;
11847
12014
  const start = page * size;
11848
12015
  const end = (page + 1) * size - 1;
11849
- const items = list.slice(start, end).map((item) => clone15(item));
12016
+ const items = list.slice(start, end).map((item) => clone16(item));
11850
12017
  return items;
11851
12018
  }
11852
12019
  /**
@@ -12201,7 +12368,7 @@ var TreeCodeListNodeData = class extends TreeNodeData {
12201
12368
 
12202
12369
  // src/service/vo/tree-node-data/tree-data-set-node-data.ts
12203
12370
  import { updateKeyDefine } from "@ibiz-template/core";
12204
- import { clone as clone16, isNil as isNil15 } from "ramda";
12371
+ import { clone as clone17, isNil as isNil15 } from "ramda";
12205
12372
  var CloneExcludeKeys = [
12206
12373
  "_id",
12207
12374
  "srfnodeid",
@@ -12317,7 +12484,7 @@ var TreeDataSetNodeData = class _TreeDataSetNodeData extends TreeNodeData {
12317
12484
  }
12318
12485
  };
12319
12486
  this.clone = () => {
12320
- const cloneData = clone16(this._deData);
12487
+ const cloneData = clone17(this._deData);
12321
12488
  const cloneNodeData = new _TreeDataSetNodeData(model, this._parent, {
12322
12489
  data: cloneData,
12323
12490
  leaf: this._leaf,
@@ -12659,7 +12826,7 @@ var MapData = class {
12659
12826
  };
12660
12827
 
12661
12828
  // src/service/vo/panel-data/panel-data.ts
12662
- import { QXEvent as QXEvent3 } from "qx-util";
12829
+ import { QXEvent as QXEvent4 } from "qx-util";
12663
12830
  function updateKeyDefine3(target, keys) {
12664
12831
  keys.forEach((key) => {
12665
12832
  if (!Object.prototype.hasOwnProperty.call(target, key)) {
@@ -12674,7 +12841,7 @@ function updateKeyDefine3(target, keys) {
12674
12841
  }
12675
12842
  var PanelData = class {
12676
12843
  constructor(fields, origin) {
12677
- const _evt = new QXEvent3();
12844
+ const _evt = new QXEvent4();
12678
12845
  const keyMap = {};
12679
12846
  const reverseKeyMap = {};
12680
12847
  fields.forEach((field) => {
@@ -12896,7 +13063,7 @@ var GanttCodeListNodeData = class extends TreeCodeListNodeData {
12896
13063
  };
12897
13064
 
12898
13065
  // src/service/mqtt/mqtt.service.ts
12899
- import { QXEvent as QXEvent4, createUUID as createUUID7 } from "qx-util";
13066
+ import { QXEvent as QXEvent5, createUUID as createUUID7 } from "qx-util";
12900
13067
  var MqttService = class {
12901
13068
  /**
12902
13069
  * Creates an instance of MqttService.
@@ -12917,7 +13084,7 @@ var MqttService = class {
12917
13084
  * @author chitanda
12918
13085
  * @date 2023-10-23 15:10:06
12919
13086
  */
12920
- this.evt = new QXEvent4();
13087
+ this.evt = new QXEvent5();
12921
13088
  /**
12922
13089
  * 连接选项
12923
13090
  *
@@ -13169,7 +13336,7 @@ var _OpenAppViewCommand = class _OpenAppViewCommand {
13169
13336
  * @return {*} {(Promise<IModalData | void>)}
13170
13337
  */
13171
13338
  async exec(appViewId, _context, params = {}, opts = {}) {
13172
- const context = clone17(_context);
13339
+ const context = clone18(_context);
13173
13340
  if (context.srfsimple) {
13174
13341
  delete context.srfsimple;
13175
13342
  }
@@ -13463,7 +13630,7 @@ function installCommand() {
13463
13630
  }
13464
13631
 
13465
13632
  // src/app-hub.ts
13466
- import { RuntimeError as RuntimeError68 } from "@ibiz-template/core";
13633
+ import { RuntimeError as RuntimeError67 } from "@ibiz-template/core";
13467
13634
 
13468
13635
  // src/application.ts
13469
13636
  import { Net, getToken } from "@ibiz-template/core";
@@ -13636,6 +13803,15 @@ var Application = class {
13636
13803
  await this.mqtt.connect();
13637
13804
  }
13638
13805
  }
13806
+ /**
13807
+ * 销毁应用
13808
+ *
13809
+ * @author tony001
13810
+ * @date 2024-04-10 15:04:51
13811
+ */
13812
+ destroy() {
13813
+ this.codeList.destroy();
13814
+ }
13639
13815
  };
13640
13816
 
13641
13817
  // src/hub/convert/app-menu-convert/app-menu-convert.ts
@@ -13800,8 +13976,8 @@ var TreeGridExNotifyState = /* @__PURE__ */ ((TreeGridExNotifyState2) => {
13800
13976
  })(TreeGridExNotifyState || {});
13801
13977
 
13802
13978
  // src/controller/common/view/view.controller.ts
13803
- import { notNilEmpty as notNilEmpty6 } from "qx-util";
13804
- import { IBizContext as IBizContext2, RuntimeError as RuntimeError34 } from "@ibiz-template/core";
13979
+ import { notNilEmpty as notNilEmpty7 } from "qx-util";
13980
+ import { IBizContext as IBizContext3, RuntimeError as RuntimeError34 } from "@ibiz-template/core";
13805
13981
  import { isEmpty as isEmpty9, isNil as isNil22, isNotNil as isNotNil2 } from "ramda";
13806
13982
 
13807
13983
  // src/controller/utils/loading/loading.state.ts
@@ -13940,7 +14116,7 @@ var LoadingState = class {
13940
14116
  };
13941
14117
 
13942
14118
  // src/controller/ctx/ctx.ts
13943
- import { QXEvent as QXEvent5 } from "qx-util";
14119
+ import { QXEvent as QXEvent6 } from "qx-util";
13944
14120
 
13945
14121
  // src/controller/ctx/ctx.state.ts
13946
14122
  var CTXState = class {
@@ -13970,7 +14146,7 @@ var CTX = class {
13970
14146
  * @date 2023-04-26 07:54:46
13971
14147
  * @protected
13972
14148
  */
13973
- this.evt = new QXEvent5(3e3);
14149
+ this.evt = new QXEvent6(3e3);
13974
14150
  /**
13975
14151
  * 当前视图控制器集合(包含自身视图控制器,部件控制器,和下一层级的视图的控制器)
13976
14152
  * @author lxm
@@ -14306,8 +14482,8 @@ var ButtonContainerState = class {
14306
14482
  };
14307
14483
 
14308
14484
  // src/controller/utils/event/qx-event-ex.ts
14309
- import { clearAll, QXEvent as QXEvent6 } from "qx-util";
14310
- var QXEventEx = class extends QXEvent6 {
14485
+ import { clearAll, QXEvent as QXEvent7 } from "qx-util";
14486
+ var QXEventEx = class extends QXEvent7 {
14311
14487
  constructor() {
14312
14488
  super(...arguments);
14313
14489
  this.anyEventFns = [];
@@ -15230,7 +15406,7 @@ var ViewController = class extends BaseController {
15230
15406
  */
15231
15407
  constructor(model, context, params, ctx) {
15232
15408
  const _model = ibiz.util.layoutPanel.fill(model);
15233
- super(_model, IBizContext2.create({}, context), params || {}, new CTX(ctx));
15409
+ super(_model, IBizContext3.create({}, context), params || {}, new CTX(ctx));
15234
15410
  this.session = {};
15235
15411
  this.modal = new Modal({});
15236
15412
  this.providers = {};
@@ -15454,13 +15630,13 @@ var ViewController = class extends BaseController {
15454
15630
  }
15455
15631
  const navContexts = this.model.appViewNavContexts;
15456
15632
  let context = {};
15457
- if (notNilEmpty6(navContexts)) {
15633
+ if (notNilEmpty7(navContexts)) {
15458
15634
  context = convertNavData(navContexts, this.params, this.context);
15459
15635
  }
15460
15636
  Object.assign(this.context, context);
15461
15637
  const navParams = this.model.appViewNavParams;
15462
15638
  let params = {};
15463
- if (notNilEmpty6(navParams)) {
15639
+ if (notNilEmpty7(navParams)) {
15464
15640
  params = convertNavData(navParams, this.params, this.context);
15465
15641
  }
15466
15642
  Object.assign(this.params, params);
@@ -15852,13 +16028,13 @@ var CodeListEditorController = class extends EditorController {
15852
16028
  // src/controller/common/control/control.controller.ts
15853
16029
  import {
15854
16030
  HttpError as HttpError6,
15855
- IBizContext as IBizContext3,
16031
+ IBizContext as IBizContext4,
15856
16032
  IBizParams,
15857
16033
  NoticeError as NoticeError2,
15858
16034
  RuntimeError as RuntimeError35
15859
16035
  } from "@ibiz-template/core";
15860
- import { clone as clone18, isNil as isNil23 } from "ramda";
15861
- import { notNilEmpty as notNilEmpty7 } from "qx-util";
16036
+ import { clone as clone19, isNil as isNil23 } from "ramda";
16037
+ import { notNilEmpty as notNilEmpty8 } from "qx-util";
15862
16038
  var ControlController = class extends BaseController {
15863
16039
  /**
15864
16040
  * Creates an instance of ControlController.
@@ -15872,7 +16048,7 @@ var ControlController = class extends BaseController {
15872
16048
  constructor(model, context, params, ctx) {
15873
16049
  super(
15874
16050
  model,
15875
- IBizContext3.create({}, context),
16051
+ IBizContext4.create({}, context),
15876
16052
  new IBizParams({}, params),
15877
16053
  ctx
15878
16054
  );
@@ -15921,7 +16097,7 @@ var ControlController = class extends BaseController {
15921
16097
  "".concat(model.controlType, "_DEFAULT")
15922
16098
  );
15923
16099
  if (panelModel) {
15924
- this.controlPanel = clone18(panelModel);
16100
+ this.controlPanel = clone19(panelModel);
15925
16101
  }
15926
16102
  }
15927
16103
  this.updateContextParams({});
@@ -16015,12 +16191,12 @@ var ControlController = class extends BaseController {
16015
16191
  }
16016
16192
  const { controlNavContexts, controlNavParams } = this.model;
16017
16193
  let context = {};
16018
- if (notNilEmpty7(controlNavContexts)) {
16194
+ if (notNilEmpty8(controlNavContexts)) {
16019
16195
  context = convertNavData(controlNavContexts, this.params, this.context);
16020
16196
  }
16021
16197
  Object.assign(this.context, context);
16022
16198
  let params = {};
16023
- if (notNilEmpty7(controlNavParams)) {
16199
+ if (notNilEmpty8(controlNavParams)) {
16024
16200
  params = convertNavData(controlNavParams, this.params, this.context);
16025
16201
  }
16026
16202
  Object.assign(this.params, params);
@@ -16144,7 +16320,7 @@ var ControlController = class extends BaseController {
16144
16320
  }
16145
16321
  const { ctrlParams } = this.model.controlParam;
16146
16322
  let params = {};
16147
- if (notNilEmpty7(ctrlParams)) {
16323
+ if (notNilEmpty8(ctrlParams)) {
16148
16324
  params = convertNavData(ctrlParams, this.params, this.context);
16149
16325
  }
16150
16326
  Object.assign(this.controlParams, params);
@@ -16492,6 +16668,9 @@ var MDControlController = class extends ControlController {
16492
16668
  if (typeof res.total === "number") {
16493
16669
  this.state.total = res.total;
16494
16670
  }
16671
+ if (typeof res.totalPages === "number") {
16672
+ this.state.totalPages = res.totalPages;
16673
+ }
16495
16674
  if (isLoadMore) {
16496
16675
  this.state.items.push(...res.data);
16497
16676
  } else {
@@ -17033,7 +17212,7 @@ import { RuntimeModelError as RuntimeModelError28 } from "@ibiz-template/core";
17033
17212
 
17034
17213
  // src/controller/control/calendar/calendar.service.ts
17035
17214
  import { RuntimeError as RuntimeError39 } from "@ibiz-template/core";
17036
- import { clone as clone19 } from "ramda";
17215
+ import { clone as clone20 } from "ramda";
17037
17216
  var CalendarService = class extends MDControlService {
17038
17217
  /**
17039
17218
  * 执行查询多条数据的方法
@@ -17054,7 +17233,7 @@ var CalendarService = class extends MDControlService {
17054
17233
  async (item) => {
17055
17234
  const fetchAction = item.appDEDataSetId || "fetchdefault";
17056
17235
  const tempContext = context.clone();
17057
- const tempParams = clone19(params);
17236
+ const tempParams = clone20(params);
17058
17237
  if (item.maxSize) {
17059
17238
  tempParams.size = item.maxSize;
17060
17239
  }
@@ -17390,7 +17569,7 @@ import isSameOrBefore from "dayjs/plugin/isSameOrBefore";
17390
17569
  import quarterOfYear from "dayjs/plugin/quarterOfYear";
17391
17570
  import weekOfYear from "dayjs/plugin/weekOfYear";
17392
17571
  import isoWeek from "dayjs/plugin/isoWeek";
17393
- import { clone as clone20, isNil as isNil25, mergeDeepRight } from "ramda";
17572
+ import { clone as clone21, isNil as isNil25, mergeDeepRight } from "ramda";
17394
17573
  dayjs4.extend(minMax2);
17395
17574
  dayjs4.extend(isSameOrBefore);
17396
17575
  dayjs4.extend(quarterOfYear);
@@ -17577,7 +17756,7 @@ var BaseSeriesGenerator = class {
17577
17756
  }
17578
17757
  groupData[group].get(catalog).value = plus(
17579
17758
  groupData[group].get(catalog).value,
17580
- item[this.valueField]
17759
+ item[this.valueField] || 0
17581
17760
  );
17582
17761
  if (!groupData[group].get(catalog).chartData) {
17583
17762
  this.prepareChartData(groupData, item, catalog, group);
@@ -17666,7 +17845,7 @@ var BaseSeriesGenerator = class {
17666
17845
  dataPreprocess(data) {
17667
17846
  const tempData = [];
17668
17847
  data.forEach((singleData) => {
17669
- tempData.push(clone20(singleData));
17848
+ tempData.push(clone21(singleData));
17670
17849
  });
17671
17850
  const { groupMode } = this.model;
17672
17851
  if (groupMode) {
@@ -18450,6 +18629,10 @@ var ChartController = class extends MDControlController {
18450
18629
  initState() {
18451
18630
  super.initState();
18452
18631
  this.state.size = 1e3;
18632
+ this.state.showGrid = false;
18633
+ this.state.gridHeaders = [];
18634
+ this.state.gridData = [];
18635
+ this.state.gridPosition = "bottom";
18453
18636
  }
18454
18637
  async onCreated() {
18455
18638
  await super.onCreated();
@@ -18457,6 +18640,7 @@ var ChartController = class extends MDControlController {
18457
18640
  await this.service.init(this.context);
18458
18641
  this.generator = new ChartOptionsGenerator2(this.model);
18459
18642
  await this.generator.init(this.context, this.params);
18643
+ this.parseGridParam();
18460
18644
  this.resizeChart = this.resizeChart.bind(this);
18461
18645
  window.addEventListener("resize", this.resizeChart);
18462
18646
  }
@@ -18468,6 +18652,164 @@ var ChartController = class extends MDControlController {
18468
18652
  this.calcOptions();
18469
18653
  return result;
18470
18654
  }
18655
+ /**
18656
+ * 解析表格相关参数
18657
+ *
18658
+ * @memberof ChartController
18659
+ */
18660
+ parseGridParam() {
18661
+ if (this.model.dechartDataGrid) {
18662
+ if (this.model.dechartDataGrid.dataGridPos) {
18663
+ this.state.gridPosition = this.model.dechartDataGrid.dataGridPos.toLocaleLowerCase();
18664
+ } else {
18665
+ this.state.gridPosition = "bottom";
18666
+ }
18667
+ if (this.model.dechartDataGrid.showDataGrid === true) {
18668
+ this.state.showGrid = true;
18669
+ }
18670
+ }
18671
+ }
18672
+ /**
18673
+ * 计算总数
18674
+ *
18675
+ * @param {string} valueField
18676
+ * @return {*}
18677
+ * @memberof ChartController
18678
+ */
18679
+ computeTotal(valueField) {
18680
+ let total = 0;
18681
+ this.state.items.forEach((item) => {
18682
+ const value = Number(item[valueField]);
18683
+ if (!Number.isNaN(value)) {
18684
+ total += Number(value);
18685
+ }
18686
+ });
18687
+ return total;
18688
+ }
18689
+ /**
18690
+ * 处理单序列时的表格数据
18691
+ * 图表单序列时,首先获取配置的分类属性和值属性的title,构建表头,内置支持百分比列
18692
+ * 然后遍历图表默认分出来的分组数据去生成表格的数据
18693
+ *
18694
+ * @memberof ChartController
18695
+ */
18696
+ handleSingleSerieGridData() {
18697
+ const serie = this.generator.seriesGenerators[0];
18698
+ const { catalogField, valueField, groupData } = serie;
18699
+ const fields = serie.chartGenerator.entity.appDEFields;
18700
+ const cataTitle = fields.find((field) => {
18701
+ return field.id === catalogField;
18702
+ });
18703
+ const valueTitle = fields.find((field) => {
18704
+ return field.id === valueField;
18705
+ });
18706
+ const tempGridHeader = [
18707
+ {
18708
+ id: catalogField,
18709
+ name: cataTitle == null ? void 0 : cataTitle.logicName
18710
+ },
18711
+ {
18712
+ id: valueField,
18713
+ name: valueTitle == null ? void 0 : valueTitle.logicName
18714
+ },
18715
+ {
18716
+ id: "srfpercent",
18717
+ name: "\u767E\u5206\u6BD4"
18718
+ }
18719
+ ];
18720
+ this.state.gridHeaders = tempGridHeader;
18721
+ const tempData = [];
18722
+ const total = this.computeTotal(valueField);
18723
+ if (groupData && groupData.$default_group) {
18724
+ const group = groupData.$default_group;
18725
+ for (const [key, value] of group) {
18726
+ const tempValue = Number.isNaN(Number(value.value)) ? 0 : Number(value.value);
18727
+ let percent = "";
18728
+ if (total === 0 || Number.isNaN(Number(value.value))) {
18729
+ percent = "0%";
18730
+ } else {
18731
+ percent = "".concat(Math.round(tempValue / total * 100), "%");
18732
+ }
18733
+ const tempItem = {
18734
+ [catalogField]: key,
18735
+ [valueField]: tempValue,
18736
+ srfpercent: percent
18737
+ };
18738
+ tempData.push(tempItem);
18739
+ }
18740
+ }
18741
+ this.state.gridData = tempData;
18742
+ }
18743
+ /**
18744
+ * 处理多序列时的表格数据
18745
+ * 图表多序列时,首先去遍历序列,然后获取每个序列的分类属性和值属性以及已经分好的分组数据,
18746
+ * 查找当前的表格头数组中是否存在当前的分类或者值属性组成的项,如果没有就将当前分类或者值属性添加到表格头数组中,以序列作为表格列
18747
+ * 同理,循环当前序列的分组数据,并根据当前分组属性的值生成表格数据,如果在表格数据中已经存在具有相同分组属性值,则把当前序列的当前分组属性对应的值属性
18748
+ * 添加到表格数据中对应的项里
18749
+ *
18750
+ * @memberof ChartController
18751
+ */
18752
+ handleMultipleSerieGridData() {
18753
+ const tempHeaders = [];
18754
+ const tempData = [];
18755
+ this.generator.seriesGenerators.forEach((serie) => {
18756
+ const { catalogField, valueField, groupData } = serie;
18757
+ const fields = serie.chartGenerator.entity.appDEFields;
18758
+ const _index = tempHeaders.findIndex((item) => {
18759
+ return item.id === catalogField;
18760
+ });
18761
+ if (_index < 0) {
18762
+ const cataTitle = fields.find((field) => {
18763
+ return field.id === catalogField.toLowerCase();
18764
+ });
18765
+ tempHeaders.push({
18766
+ id: catalogField,
18767
+ name: cataTitle == null ? void 0 : cataTitle.logicName
18768
+ });
18769
+ }
18770
+ const valueTitle = fields.find((field) => {
18771
+ return field.id === valueField.toLowerCase();
18772
+ });
18773
+ tempHeaders.push({
18774
+ id: valueField,
18775
+ name: valueTitle == null ? void 0 : valueTitle.logicName
18776
+ });
18777
+ if (groupData && groupData.$default_group) {
18778
+ const group = groupData.$default_group;
18779
+ for (const [key, value] of group) {
18780
+ const tempValue = Number.isNaN(Number(value.value)) ? 0 : Number(value.value);
18781
+ const index = tempData.findIndex((item) => {
18782
+ return item[catalogField] === key;
18783
+ });
18784
+ if (index < 0) {
18785
+ const tempItem = {
18786
+ [catalogField]: key,
18787
+ [valueField]: tempValue
18788
+ };
18789
+ tempData.push(tempItem);
18790
+ } else {
18791
+ Object.assign(tempData[index], { [valueField]: tempValue });
18792
+ }
18793
+ }
18794
+ }
18795
+ });
18796
+ this.state.gridHeaders = tempHeaders;
18797
+ this.state.gridData = tempData;
18798
+ }
18799
+ /**
18800
+ * 计算表格数据
18801
+ *
18802
+ * @memberof ChartController
18803
+ */
18804
+ computeGridData() {
18805
+ if (this.generator && this.generator.seriesGenerators) {
18806
+ if (this.generator.seriesGenerators.length === 1) {
18807
+ this.handleSingleSerieGridData();
18808
+ } else {
18809
+ this.handleMultipleSerieGridData();
18810
+ }
18811
+ }
18812
+ }
18471
18813
  /**
18472
18814
  * 初始化echarts对象
18473
18815
  * @author lxm
@@ -18492,6 +18834,9 @@ var ChartController = class extends MDControlController {
18492
18834
  */
18493
18835
  calcOptions(data = this.state.items) {
18494
18836
  this.options = this.generator.calcOptionsByData(data);
18837
+ if (this.state.showGrid) {
18838
+ this.computeGridData();
18839
+ }
18495
18840
  this.updateChart();
18496
18841
  }
18497
18842
  /**
@@ -18581,6 +18926,13 @@ var UILogicContext = class {
18581
18926
  constructor(deLogicParams, parameters) {
18582
18927
  this.deLogicParams = deLogicParams;
18583
18928
  this.parameters = parameters;
18929
+ /**
18930
+ * 逻辑操作的会话变量
18931
+ * @author lxm
18932
+ * @date 2024-04-07 11:55:01
18933
+ * @type {IParams}
18934
+ */
18935
+ this.session = {};
18584
18936
  /**
18585
18937
  * 界面逻辑参数
18586
18938
  *
@@ -18730,7 +19082,7 @@ import { ModelError as ModelError19, RuntimeModelError as RuntimeModelError33 }
18730
19082
 
18731
19083
  // src/ui-logic/utils/handle-src-val.ts
18732
19084
  import { ModelError as ModelError18 } from "@ibiz-template/core";
18733
- import { clone as clone21 } from "ramda";
19085
+ import { clone as clone22 } from "ramda";
18734
19086
  function handleSrcVal2(ctx, srcValParams) {
18735
19087
  const { srcDEUILogicParamId, srcFieldName, srcValue } = srcValParams;
18736
19088
  const srcValueType = srcValParams.srcValueType || "SRCDLPARAM";
@@ -18757,7 +19109,7 @@ function handleSrcVal2(ctx, srcValParams) {
18757
19109
  value = ctx.parameters.context;
18758
19110
  break;
18759
19111
  case "ENVPARAM":
18760
- value = clone21(ibiz.env);
19112
+ value = clone22(ibiz.env);
18761
19113
  break;
18762
19114
  default:
18763
19115
  throw new ModelError18(srcValParams, "\u6682\u672A\u652F\u6301\u6E90\u503C\u7C7B\u578B".concat(srcValueType));
@@ -19151,7 +19503,7 @@ var EndNode2 = class extends UILogicNode {
19151
19503
 
19152
19504
  // src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts
19153
19505
  import { ModelError as ModelError22, RuntimeError as RuntimeError42 } from "@ibiz-template/core";
19154
- import { clone as clone22 } from "ramda";
19506
+ import { clone as clone23 } from "ramda";
19155
19507
  var PrepareJSParamNode = class extends UILogicNode {
19156
19508
  async exec(ctx) {
19157
19509
  const nodeParams = this.model.deuilogicNodeParams;
@@ -19161,7 +19513,7 @@ var PrepareJSParamNode = class extends UILogicNode {
19161
19513
  for (const nodeParam of nodeParams) {
19162
19514
  let originValue;
19163
19515
  if (nodeParam.dstDEUILogicParamId && ibiz.env.logLevel === "DEBUG") {
19164
- originValue = clone22(ctx.params[nodeParam.dstDEUILogicParamId]);
19516
+ originValue = clone23(ctx.params[nodeParam.dstDEUILogicParamId]);
19165
19517
  }
19166
19518
  switch (nodeParam.paramAction) {
19167
19519
  case "SETPARAMVALUE":
@@ -19250,7 +19602,7 @@ var PrepareJSParamNode = class extends UILogicNode {
19250
19602
  copyParam(nodeParam, ctx) {
19251
19603
  const { dstDEUILogicParamId } = nodeParam;
19252
19604
  const srcVal = handleSrcVal2(ctx, nodeParam);
19253
- ctx.params[dstDEUILogicParamId] = clone22(srcVal);
19605
+ ctx.params[dstDEUILogicParamId] = clone23(srcVal);
19254
19606
  }
19255
19607
  /**
19256
19608
  * 绑定参数
@@ -19495,7 +19847,7 @@ var ResetParamNode2 = class extends UILogicNode {
19495
19847
 
19496
19848
  // src/ui-logic/ui-logic-node/copy-param-node/copy-param-node.ts
19497
19849
  import { RuntimeModelError as RuntimeModelError42 } from "@ibiz-template/core";
19498
- import { clone as clone23 } from "ramda";
19850
+ import { clone as clone24 } from "ramda";
19499
19851
  var CopyParamNode2 = class extends UILogicNode {
19500
19852
  async exec(ctx) {
19501
19853
  const { dstDEUILogicParamId, srcDEUILogicParamId } = this.model;
@@ -19506,7 +19858,7 @@ var CopyParamNode2 = class extends UILogicNode {
19506
19858
  );
19507
19859
  }
19508
19860
  const srcVal = handleSrcVal2(ctx, this.model);
19509
- ctx.params[dstDEUILogicParamId] = clone23(srcVal);
19861
+ ctx.params[dstDEUILogicParamId] = clone24(srcVal);
19510
19862
  ctx.setLastReturn(ctx.params[dstDEUILogicParamId]);
19511
19863
  ibiz.log.debug(
19512
19864
  "\u754C\u9762\u903B\u8F91\u8282\u70B9\uFF08\u62F7\u8D1D\u53C2\u6570\uFF09\uFF1A".concat(this.model.id, "-\u53C2\u6570\u540D\u79F0\uFF1A").concat(dstDEUILogicParamId, "-\u503C\uFF1A"),
@@ -19774,13 +20126,17 @@ var UILogicParam = class {
19774
20126
  } else if (m.activeViewParam) {
19775
20127
  ctx.params[tag] = parameters.view;
19776
20128
  } else if (m.appGlobalParam) {
19777
- ctx.params[tag] = ibiz.env;
20129
+ let value = ibiz.util.getGlobalParam();
20130
+ if (m.paramFieldName) {
20131
+ value = value[m.paramFieldName];
20132
+ }
20133
+ ctx.params[tag] = value;
19778
20134
  } else if (m.applicationParam) {
19779
20135
  ctx.params[tag] = app;
19780
20136
  } else if (m.entityListParam) {
19781
20137
  ctx.params[tag] = [];
19782
20138
  } else if (m.entityPageParam) {
19783
- ctx.params[tag] = {};
20139
+ ctx.params[tag] = [];
19784
20140
  } else if (m.entityParam) {
19785
20141
  ctx.params[tag] = {};
19786
20142
  } else if (m.lastReturnParam) {
@@ -19788,7 +20144,7 @@ var UILogicParam = class {
19788
20144
  } else if (m.navContextParam) {
19789
20145
  ctx.params[tag] = context;
19790
20146
  } else if (m.navViewParamParam) {
19791
- throw new ModelError24(m, "\u672A\u652F\u6301\u7684\u903B\u8F91\u53C2\u6570\u7C7B\u578B: \u89C6\u56FE\u8DEF\u7531\u53C2\u6570");
20147
+ ctx.params[tag] = ibiz.util.getRouterParams();
19792
20148
  } else if (m.routeViewSessionParam) {
19793
20149
  let value = parameters.view.getTopView().state;
19794
20150
  if (m.paramFieldName) {
@@ -19809,6 +20165,10 @@ var UILogicParam = class {
19809
20165
  ctx.params[tag] = value;
19810
20166
  } else if (m.filterParam) {
19811
20167
  ctx.params[tag] = {};
20168
+ } else if (m.envParam) {
20169
+ ctx.params[tag] = ibiz.env;
20170
+ } else if (m.sessionParam) {
20171
+ ctx.params[tag] = ctx.session;
19812
20172
  }
19813
20173
  ibiz.log.debug("\u8BA1\u7B97\u754C\u9762\u903B\u8F91\u53C2\u6570\uFF0C\u6807\u8BC6\uFF1A".concat(tag), "-\u503C\uFF1A", ctx.params[tag]);
19814
20174
  }
@@ -20820,7 +21180,6 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
20820
21180
  * @return {*} {IUIActionResult}
20821
21181
  */
20822
21182
  async openEditForm(action, args) {
20823
- console.log(action.deeditForm, args);
20824
21183
  const actionResult = {};
20825
21184
  const { context, params, data, event } = args;
20826
21185
  if (!event) {
@@ -22784,7 +23143,8 @@ import { RuntimeError as RuntimeError53 } from "@ibiz-template/core";
22784
23143
  import {
22785
23144
  RuntimeModelError as RuntimeModelError57,
22786
23145
  debounceAndAsyncMerge,
22787
- recursiveIterate as recursiveIterate3
23146
+ recursiveIterate as recursiveIterate3,
23147
+ EntityError
22788
23148
  } from "@ibiz-template/core";
22789
23149
  var FormController = class extends ControlController {
22790
23150
  constructor() {
@@ -22999,7 +23359,21 @@ var FormController = class extends ControlController {
22999
23359
  );
23000
23360
  return values.findIndex((value) => !value) === -1;
23001
23361
  }
23362
+ /**
23363
+ * 执行对应部件行为消息提示
23364
+ * @author zzq
23365
+ * @date 2024-04-03 15:51:21
23366
+ * @param {string} tag
23367
+ * @param {({ default?: string; data?: IData | IData[]; error?: Error })} [opts]
23368
+ * @return {*} {void}
23369
+ */
23002
23370
  actionNotification(tag, opts) {
23371
+ if ((opts == null ? void 0 : opts.error) && opts.error instanceof EntityError) {
23372
+ const { details } = opts.error;
23373
+ details.forEach((detail) => {
23374
+ this.setDetailError(detail.name, detail.errorInfo);
23375
+ });
23376
+ }
23003
23377
  super.actionNotification(tag, { data: this.data, ...opts || {} });
23004
23378
  }
23005
23379
  /**
@@ -23039,12 +23413,14 @@ var FormController = class extends ControlController {
23039
23413
  this.counters = {};
23040
23414
  const { appCounterRefs } = this.model;
23041
23415
  if (appCounterRefs && appCounterRefs.length > 0) {
23416
+ const dataKey = this.context[calcDeCodeNameById(this.model.appDataEntityId)];
23042
23417
  try {
23043
23418
  await Promise.all(
23044
23419
  appCounterRefs.map(async (counterRef) => {
23045
23420
  const counter = await CounterService.getCounterByRef(
23046
23421
  counterRef,
23047
- this.context
23422
+ this.context,
23423
+ dataKey ? { customId: dataKey } : void 0
23048
23424
  );
23049
23425
  this.counters[counterRef.id] = counter;
23050
23426
  })
@@ -23054,6 +23430,20 @@ var FormController = class extends ControlController {
23054
23430
  }
23055
23431
  }
23056
23432
  }
23433
+ /**
23434
+ * 设置表单项错误信息
23435
+ * @author zzq
23436
+ * @date 2024-04-03 18:12:02
23437
+ * @protected
23438
+ * @return {*} {void}
23439
+ */
23440
+ setDetailError(name, message) {
23441
+ const detail = this.details[name];
23442
+ const state = detail == null ? void 0 : detail.state;
23443
+ if (state) {
23444
+ state.error = message;
23445
+ }
23446
+ }
23057
23447
  };
23058
23448
 
23059
23449
  // src/controller/control/form/search-form/search-form.service.ts
@@ -23965,7 +24355,7 @@ var FormButtonController = class extends FormDetailController {
23965
24355
 
23966
24356
  // src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts
23967
24357
  import { isOverlap as isOverlap2 } from "@ibiz-template/core";
23968
- import { createUUID as createUUID10, notNilEmpty as notNilEmpty8 } from "qx-util";
24358
+ import { createUUID as createUUID10, notNilEmpty as notNilEmpty9 } from "qx-util";
23969
24359
 
23970
24360
  // src/controller/control/form/form-detail/form-druipart/form-druipart.state.ts
23971
24361
  var FormDruipartState = class extends FormDetailState {
@@ -24060,7 +24450,7 @@ var FormDRUIPartController = class extends FormDetailController {
24060
24450
  calcViewParams() {
24061
24451
  let newContext = this.form.context.clone();
24062
24452
  const navContexts = this.model.navigateContexts;
24063
- if (notNilEmpty8(navContexts)) {
24453
+ if (notNilEmpty9(navContexts)) {
24064
24454
  newContext = Object.assign(
24065
24455
  newContext,
24066
24456
  convertNavData(
@@ -24565,7 +24955,27 @@ var FormItemController = class extends FormDetailController {
24565
24955
 
24566
24956
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts
24567
24957
  import { BitMask } from "@ibiz-template/core";
24958
+
24959
+ // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.ts
24960
+ var FormMDCtrlState = class extends FormDetailState {
24961
+ constructor() {
24962
+ super(...arguments);
24963
+ /**
24964
+ * 界面行为组状态
24965
+ *
24966
+ * @type {(IButtonContainerState | null)}
24967
+ * @memberof PortletPartState
24968
+ */
24969
+ this.actionGroupState = null;
24970
+ }
24971
+ };
24972
+
24973
+ // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts
24568
24974
  var FormMDCtrlController = class extends FormDetailController {
24975
+ createState() {
24976
+ var _a;
24977
+ return new FormMDCtrlState((_a = this.parent) == null ? void 0 : _a.state);
24978
+ }
24569
24979
  /**
24570
24980
  * 名称
24571
24981
  * @author lxm
@@ -24639,6 +25049,68 @@ var FormMDCtrlController = class extends FormDetailController {
24639
25049
  await this.form.updateFormItem(this.model.deformItemUpdateId);
24640
25050
  }
24641
25051
  }
25052
+ async formStateNotify(state) {
25053
+ super.formStateNotify(state);
25054
+ if (this.state.actionGroupState) {
25055
+ const deData = this.data.getOrigin ? this.data.getOrigin() : this.data;
25056
+ this.state.actionGroupState.update(this.form.context, deData);
25057
+ }
25058
+ }
25059
+ /**
25060
+ * 初始化
25061
+ *
25062
+ * @author zk
25063
+ * @date 2023-07-25 10:07:11
25064
+ * @return {*} {Promise<void>}
25065
+ * @memberof FormMDCtrlController
25066
+ */
25067
+ async onInit() {
25068
+ super.onInit();
25069
+ await this.initActionStates();
25070
+ }
25071
+ async initActionStates() {
25072
+ var _a;
25073
+ const { uiactionGroup } = this.model;
25074
+ if (!((_a = uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {
25075
+ return;
25076
+ }
25077
+ const containerState = new ButtonContainerState();
25078
+ uiactionGroup.uiactionGroupDetails.forEach((detail) => {
25079
+ const actionid = detail.uiactionId;
25080
+ if (actionid) {
25081
+ const buttonState = new UIActionButtonState(
25082
+ detail.id,
25083
+ this.form.context.srfappid,
25084
+ actionid
25085
+ );
25086
+ containerState.addState(detail.id, buttonState);
25087
+ }
25088
+ });
25089
+ await containerState.update(this.form.context);
25090
+ this.state.actionGroupState = containerState;
25091
+ }
25092
+ /**
25093
+ * 触发操作列点击事件
25094
+ *
25095
+ * @author lxm
25096
+ * @date 2022-09-07 22:09:46
25097
+ * @param {IPSUIActionGroupDetail} detail
25098
+ * @param {MouseEvent} event
25099
+ */
25100
+ async onActionClick(detail, event) {
25101
+ const actionId = detail.uiactionId;
25102
+ await UIActionUtil.execAndResolved(
25103
+ actionId,
25104
+ {
25105
+ context: this.context,
25106
+ params: this.params,
25107
+ data: [this.data],
25108
+ view: this.form.view,
25109
+ event
25110
+ },
25111
+ detail.appId
25112
+ );
25113
+ }
24642
25114
  /**
24643
25115
  * 刷新
24644
25116
  * @author lxm
@@ -24788,7 +25260,7 @@ import { RuntimeError as RuntimeError54, RuntimeModelError as RuntimeModelError5
24788
25260
  import { createUUID as createUUID11 } from "qx-util";
24789
25261
 
24790
25262
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.ts
24791
- var FormMDCtrlFormState = class extends FormDetailState {
25263
+ var FormMDCtrlFormState = class extends FormMDCtrlState {
24792
25264
  };
24793
25265
 
24794
25266
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts
@@ -24959,7 +25431,7 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
24959
25431
 
24960
25432
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.ts
24961
25433
  import { ModelError as ModelError28 } from "@ibiz-template/core";
24962
- import { clone as clone24 } from "ramda";
25434
+ import { clone as clone25 } from "ramda";
24963
25435
  var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
24964
25436
  constructor() {
24965
25437
  super(...arguments);
@@ -25043,7 +25515,7 @@ var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
25043
25515
  copyFields.forEach((key) => {
25044
25516
  tempForm[key] = this.form.model[key];
25045
25517
  });
25046
- this.repeatedForm = clone24(tempForm);
25518
+ this.repeatedForm = clone25(tempForm);
25047
25519
  }
25048
25520
  /**
25049
25521
  * 设置重复器数据(修改主表单里重复器对应属性)
@@ -25215,14 +25687,14 @@ var FormTabPanelController = class extends FormDetailController {
25215
25687
  // src/controller/control/form/edit-form/edit-form.controller.ts
25216
25688
  import {
25217
25689
  awaitTimeout,
25218
- IBizContext as IBizContext4,
25690
+ IBizContext as IBizContext5,
25219
25691
  isElementSame as isElementSame2,
25220
25692
  mergeInLeft as mergeInLeft2,
25221
25693
  RuntimeError as RuntimeError55
25222
25694
  } from "@ibiz-template/core";
25223
25695
  import { debounce } from "lodash-es";
25224
25696
  import { createUUID as createUUID12 } from "qx-util";
25225
- import { clone as clone25, isNil as isNil27 } from "ramda";
25697
+ import { clone as clone26, isNil as isNil27 } from "ramda";
25226
25698
 
25227
25699
  // src/controller/control/form/edit-form/edit-form.service.ts
25228
25700
  import {
@@ -25587,8 +26059,8 @@ var EditFormController = class extends FormController {
25587
26059
  * @return {*} {Promise<IData>}
25588
26060
  */
25589
26061
  async copy() {
25590
- const context = clone25(this.context);
25591
- const queryParams = clone25(this.params);
26062
+ const context = clone26(this.context);
26063
+ const queryParams = clone26(this.params);
25592
26064
  const appDataEntity = await ibiz.hub.getAppDataEntity(
25593
26065
  this.model.appDataEntityId,
25594
26066
  this.model.appId
@@ -25645,7 +26117,7 @@ var EditFormController = class extends FormController {
25645
26117
  return this.loadDraft();
25646
26118
  }
25647
26119
  const { context, params } = this.handlerAbilityParams(args);
25648
- const queryParams = clone25(params);
26120
+ const queryParams = clone26(params);
25649
26121
  let res;
25650
26122
  try {
25651
26123
  await this.startLoading();
@@ -25930,7 +26402,7 @@ var EditFormController = class extends FormController {
25930
26402
  switch (autoSaveMode) {
25931
26403
  case 3:
25932
26404
  saveParam.data = this.getDiffData();
25933
- saveParam.context = IBizContext4.create({ srfsimple: true });
26405
+ saveParam.context = IBizContext5.create({ srfsimple: true });
25934
26406
  break;
25935
26407
  default:
25936
26408
  }
@@ -26004,11 +26476,13 @@ var EditFormController = class extends FormController {
26004
26476
  if (!isNil27(msg.triggerKey) && msg.triggerKey === this.triggerKey) {
26005
26477
  return;
26006
26478
  }
26007
- const dename = calcDeCodeNameById(this.model.appDataEntityId);
26008
- if (!msg.data || ((_a = msg.data.srfdecodename) == null ? void 0 : _a.toLowerCase()) !== dename || msg.data.srfkey !== this.data.srfkey) {
26009
- return;
26479
+ if (this.model.appDataEntityId) {
26480
+ const dename = calcDeCodeNameById(this.model.appDataEntityId);
26481
+ if (!msg.data || ((_a = msg.data.srfdecodename) == null ? void 0 : _a.toLowerCase()) !== dename || msg.data.srfkey !== this.data.srfkey) {
26482
+ return;
26483
+ }
26484
+ this.doNextActive(() => this.load(), { key: "load" });
26010
26485
  }
26011
- this.doNextActive(() => this.load(), { key: "load" });
26012
26486
  }
26013
26487
  };
26014
26488
 
@@ -26250,12 +26724,13 @@ var GridRowState = class {
26250
26724
  import {
26251
26725
  awaitTimeout as awaitTimeout2,
26252
26726
  debounceAndAsyncMerge as debounceAndAsyncMerge2,
26727
+ EntityError as EntityError2,
26253
26728
  mergeDefaultInLeft,
26254
26729
  recursiveIterate as recursiveIterate7,
26255
26730
  RuntimeError as RuntimeError56,
26256
26731
  RuntimeModelError as RuntimeModelError62
26257
26732
  } from "@ibiz-template/core";
26258
- import { clone as clone26 } from "ramda";
26733
+ import { clone as clone27 } from "ramda";
26259
26734
  import dayjs5 from "dayjs";
26260
26735
 
26261
26736
  // src/controller/control/grid/grid/grid.service.ts
@@ -26605,7 +27080,7 @@ var GridController = class extends MDControlController {
26605
27080
  const result = await calcColumnModelBySchema(json, this);
26606
27081
  if (result && result.degridColumns.length > 0) {
26607
27082
  const { degridColumns, degridDataItems } = result;
26608
- this.model = clone26(this.model);
27083
+ this.model = clone27(this.model);
26609
27084
  this.model.degridColumns = [
26610
27085
  ...(this.model.degridColumns || []).filter((item) => {
26611
27086
  return degridColumns.findIndex((x) => x.id === item.id) === -1;
@@ -26947,7 +27422,8 @@ var GridController = class extends MDControlController {
26947
27422
  await this._evt.emit("onSaveError", void 0);
26948
27423
  this.actionNotification("".concat(isCreate ? "CREATE" : "UPDATE", "ERROR"), {
26949
27424
  error,
26950
- data: rowState.data
27425
+ data: rowState.data,
27426
+ rowState
26951
27427
  });
26952
27428
  throw error;
26953
27429
  }
@@ -27191,7 +27667,7 @@ var GridController = class extends MDControlController {
27191
27667
  throw new RuntimeError56("\u540C\u65F6\u53EA\u80FD\u6709\u4E00\u884C\u5F00\u542F\u884C\u7F16\u8F91");
27192
27668
  }
27193
27669
  if (row.data.srfuf === 1 /* UPDATE */) {
27194
- row.cacheData = clone26(row.data);
27670
+ row.cacheData = clone27(row.data);
27195
27671
  const defaultVal = this.calcDefaultValue(row.data, false);
27196
27672
  Object.assign(row.data, defaultVal);
27197
27673
  }
@@ -27330,7 +27806,7 @@ var GridController = class extends MDControlController {
27330
27806
  */
27331
27807
  formatExcelData(data) {
27332
27808
  const { fields = [] } = this.dataExportParam;
27333
- const cloneData = clone26(
27809
+ const cloneData = clone27(
27334
27810
  data.map((item) => {
27335
27811
  return fields.reduce((obj, key) => {
27336
27812
  obj[key] = item[key];
@@ -27570,13 +28046,31 @@ var GridController = class extends MDControlController {
27570
28046
  JSON.stringify(storageColumnStates)
27571
28047
  );
27572
28048
  }
28049
+ /**
28050
+ * 执行对应部件行为消息提示
28051
+ * @author zzq
28052
+ * @date 2024-04-03 15:51:21
28053
+ * @param {string} tag
28054
+ * @param {({ default?: string; data?: IData | IData[]; error?: Error; rowState?: IGridRowState })} [opts]
28055
+ * @return {*} {void}
28056
+ */
28057
+ actionNotification(tag, opts) {
28058
+ if ((opts == null ? void 0 : opts.error) && (opts == null ? void 0 : opts.rowState) && opts.error instanceof EntityError2) {
28059
+ const { details } = opts.error;
28060
+ const { errors } = opts.rowState;
28061
+ details.forEach((detail) => {
28062
+ errors[detail.name] = detail.errorInfo;
28063
+ });
28064
+ }
28065
+ super.actionNotification(tag, { ...opts || {} });
28066
+ }
27573
28067
  };
27574
28068
 
27575
28069
  // src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts
27576
28070
  import { DataTypes as DataTypes4, ModelError as ModelError29, plus as plus2 } from "@ibiz-template/core";
27577
28071
  import dayjs6 from "dayjs";
27578
28072
  import { debounce as debounce2 } from "lodash-es";
27579
- import { clone as clone27, isNil as isNil28 } from "ramda";
28073
+ import { clone as clone28, isNil as isNil28 } from "ramda";
27580
28074
  var GridFieldColumnController = class extends GridColumnController {
27581
28075
  constructor() {
27582
28076
  super(...arguments);
@@ -27714,7 +28208,7 @@ var GridFieldColumnController = class extends GridColumnController {
27714
28208
  srfkey: value,
27715
28209
  ...wfContext
27716
28210
  });
27717
- const tempParams = clone27(this.params);
28211
+ const tempParams = clone28(this.params);
27718
28212
  const { context: newContext, params: newParams } = this.handlePublicParams(
27719
28213
  row.data,
27720
28214
  tempContext,
@@ -29131,11 +29625,33 @@ var PickupViewPanelController = class extends ControlController {
29131
29625
 
29132
29626
  // src/controller/control/search-bar/search-bar.controller.ts
29133
29627
  import { mergeInLeft as mergeInLeft3, recursiveIterate as recursiveIterate10 } from "@ibiz-template/core";
29134
- import { clone as clone29, isNil as isNil30 } from "ramda";
29628
+ import { clone as clone30 } from "ramda";
29135
29629
  import { isString as isString2 } from "lodash-es";
29136
29630
 
29137
29631
  // src/controller/control/search-bar/search-bar-filter.controller.ts
29138
29632
  import { RuntimeModelError as RuntimeModelError64 } from "@ibiz-template/core";
29633
+
29634
+ // src/controller/control/search-bar/util.ts
29635
+ var ItemsValueOPs = [
29636
+ "EXISTS" /* EXISTS */,
29637
+ "NOTEXISTS" /* NOT_EXISTS */
29638
+ ];
29639
+ var SubFieldRegex = /^N_(.\w+)_(.\w+)$/;
29640
+ function isSimpleItems(model) {
29641
+ var _a;
29642
+ return ((_a = model.userParam) == null ? void 0 : _a.ITEMTYPE) === "SIMPLE";
29643
+ }
29644
+ function isHiddenFilter(model) {
29645
+ var _a;
29646
+ return ((_a = model.userParam) == null ? void 0 : _a.ITEMTYPE) === "HIDDEN";
29647
+ }
29648
+ function parseSubFieldInfo(str) {
29649
+ const subStr = str.split("__")[1];
29650
+ const matches = subStr.match(SubFieldRegex);
29651
+ return { field: matches[1], op: matches[2] };
29652
+ }
29653
+
29654
+ // src/controller/control/search-bar/search-bar-filter.controller.ts
29139
29655
  var ExcludeOPs = [
29140
29656
  "ISNULL" /* IS_NULL */,
29141
29657
  "ISNOTNULL" /* IS_NOT_NULL */,
@@ -29156,12 +29672,21 @@ var SearchBarFilterController = class {
29156
29672
  * @type {boolean}
29157
29673
  */
29158
29674
  this.noEditor = false;
29675
+ /**
29676
+ * 控制器类型
29677
+ * @author lxm
29678
+ * @date 2024-04-10 01:41:40
29679
+ * @type {('ITEMS' | 'SIMPLE_ITEMS' | 'FIELD')}
29680
+ */
29681
+ this.type = "FIELD";
29159
29682
  var _a;
29683
+ this.hidden = isHiddenFilter(model);
29160
29684
  let field;
29161
29685
  if (model.appDEFieldId) {
29162
29686
  field = findFieldById(this.appDataEntity, model.appDEFieldId);
29163
29687
  }
29164
29688
  this.fieldName = field ? field.codeName.toLowerCase() : model.id;
29689
+ this.key = this.fieldName;
29165
29690
  this.label = model.caption || (field == null ? void 0 : field.logicName) || model.id;
29166
29691
  this.valueOP = (_a = model.defsearchMode) == null ? void 0 : _a.valueOP;
29167
29692
  this.noEditor = this.valueOP ? ExcludeOPs.includes(this.valueOP) : !this.model.editor;
@@ -29200,7 +29725,7 @@ var SearchBarFilterController = class {
29200
29725
  * 计算要递给编辑器的参数
29201
29726
  * @author lxm
29202
29727
  * @date 2024-02-04 06:35:28
29203
- * @param {IFilterLeafNode} node
29728
+ * @param {IFilterNodeField} node
29204
29729
  * @return {*} {{ value: unknown; data: IData }}
29205
29730
  */
29206
29731
  calcEditorProps(node) {
@@ -29219,7 +29744,7 @@ var SearchBarFilterController = class {
29219
29744
  * 编辑器值变更处理
29220
29745
  * @author lxm
29221
29746
  * @date 2024-02-04 06:42:04
29222
- * @param {IFilterLeafNode} node
29747
+ * @param {IFilterNodeField} node
29223
29748
  * @param {unknown} value
29224
29749
  * @param {string} [name]
29225
29750
  */
@@ -29573,106 +30098,10 @@ async function calcFilterModelBySchema(json, appDataEntityId, modelAppId) {
29573
30098
  return addSearchBarFilters;
29574
30099
  }
29575
30100
 
29576
- // src/controller/control/search-bar/use-searchcond.ts
29577
- import { RuntimeError as RuntimeError59, recursiveIterate as recursiveIterate9 } from "@ibiz-template/core";
29578
- import { isNil as isNil29 } from "ramda";
29579
- var ExcludeOPs2 = ["ISNULL" /* IS_NULL */, "ISNOTNULL" /* IS_NOT_NULL */];
29580
- function getOriginFilterNodes() {
29581
- return [
29582
- {
29583
- leaf: false,
29584
- logicType: "AND",
29585
- children: [{ leaf: true, field: null, valueOP: null, value: null }]
29586
- }
29587
- ];
29588
- }
29589
- function formatFilters(node) {
29590
- if (!node.leaf) {
29591
- if (node.logicType === "ITEMS") {
29592
- return {
29593
- condtype: "ITEMS",
29594
- fieldname: node.field,
29595
- condop: node.valueOP,
29596
- searchconds: node.children.map((item) => formatFilters(item))
29597
- };
29598
- }
29599
- return {
29600
- condtype: "GROUP",
29601
- condop: node.logicType,
29602
- bnotmode: false,
29603
- searchconds: node.children.map((item) => formatFilters(item))
29604
- };
29605
- }
29606
- const leafNode = node;
29607
- const temp = {
29608
- condtype: "DEFIELD",
29609
- fieldname: node.field,
29610
- condop: node.valueOP,
29611
- value: node.value
29612
- };
29613
- if (leafNode.valueItem) {
29614
- temp.valueItem = leafNode.valueItem;
29615
- }
29616
- return temp;
29617
- }
29618
- function parseFilters(data) {
29619
- if (data.condtype === "GROUP") {
29620
- return {
29621
- leaf: false,
29622
- logicType: data.condop === "AND" ? "AND" : "OR",
29623
- children: (data.searchconds || []).map(
29624
- (item) => parseFilters(item)
29625
- )
29626
- };
29627
- }
29628
- if (data.condtype === "ITEMS") {
29629
- return {
29630
- leaf: false,
29631
- logicType: "ITEMS",
29632
- field: data.fieldname || null,
29633
- valueOP: data.condop || null,
29634
- children: (data.searchconds || []).map(
29635
- (item) => parseFilters(item)
29636
- )
29637
- };
29638
- }
29639
- if (data.condtype === "DEFIELD") {
29640
- return {
29641
- leaf: true,
29642
- field: data.fieldname || null,
29643
- valueOP: data.condop || null,
29644
- value: data.value || null,
29645
- valueItem: data.valueItem || void 0
29646
- };
29647
- }
29648
- throw new RuntimeError59("\u65E0\u6548\u7684condtype:".concat(data.condtype));
29649
- }
29650
- function calcSearchConds(filterNodes) {
29651
- let hasFilter = false;
29652
- let hasError = false;
29653
- recursiveIterate9(filterNodes[0], (node) => {
29654
- if (node.leaf) {
29655
- if (node.field && node.valueOP && !isNil29(node.value) || node.field && node.valueOP && ExcludeOPs2.includes(node.valueOP)) {
29656
- hasFilter = true;
29657
- } else {
29658
- hasError = true;
29659
- }
29660
- }
29661
- });
29662
- if (hasFilter && !hasError) {
29663
- const filter = [formatFilters(filterNodes[0])];
29664
- return filter;
29665
- }
29666
- }
29667
-
29668
30101
  // src/controller/control/search-bar/search-bar-filter-items.controller.ts
29669
- import { RuntimeError as RuntimeError60 } from "@ibiz-template/core";
29670
- import { clone as clone28 } from "ramda";
29671
- var ExcludeOPs3 = [
29672
- "ISNULL" /* IS_NULL */,
29673
- "ISNOTNULL" /* IS_NOT_NULL */
29674
- ];
29675
- var SubFieldRegex = /^N_(.\w+)_(.\w+)$/;
30102
+ import { RuntimeError as RuntimeError59 } from "@ibiz-template/core";
30103
+ import { clone as clone29 } from "ramda";
30104
+ var SubFieldRegex2 = /^N_(.\w+)_(.\w+)$/;
29676
30105
  var SearchBarFilterItemsController = class extends SearchBarFilterController {
29677
30106
  constructor(filterModels, appDataEntity, context, params) {
29678
30107
  super(filterModels[0], appDataEntity, context, params);
@@ -29692,6 +30121,7 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29692
30121
  * @type {Map<string, SearchBarFilterController>}
29693
30122
  */
29694
30123
  this.subFilterCMap = /* @__PURE__ */ new Map();
30124
+ this.type = "ITEMS";
29695
30125
  }
29696
30126
  /**
29697
30127
  * 计算标识
@@ -29728,7 +30158,7 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29728
30158
  return false;
29729
30159
  });
29730
30160
  if (!minorDEId) {
29731
- throw new RuntimeError60("\u627E\u4E0D\u5230\u5C5E\u6027".concat(targetField, "\u5BF9\u5E94\u7684\u5173\u8054\u5B9E\u4F53"));
30161
+ throw new RuntimeError59("\u627E\u4E0D\u5230\u5C5E\u6027".concat(targetField, "\u5BF9\u5E94\u7684\u5173\u8054\u5B9E\u4F53"));
29732
30162
  }
29733
30163
  this.minorAppDE = await ibiz.hub.getAppDataEntity(
29734
30164
  minorDEId,
@@ -29748,28 +30178,31 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29748
30178
  this.filterModels.forEach((item) => {
29749
30179
  var _a2;
29750
30180
  const subStr = (_a2 = item.defsearchMode.codeName) == null ? void 0 : _a2.split("__")[1];
29751
- const matches = subStr.match(SubFieldRegex);
30181
+ const matches = subStr.match(SubFieldRegex2);
29752
30182
  const subField = matches[1];
29753
30183
  const subOP = matches[2];
30184
+ const cloneItem = clone29(item);
30185
+ cloneItem.defsearchMode.valueOP = subOP;
30186
+ cloneItem.id = subField;
30187
+ const filterC = new SearchBarFilterController(
30188
+ cloneItem,
30189
+ this.appDataEntity,
30190
+ this.context,
30191
+ this.params
30192
+ );
30193
+ this.subFilterCMap.set(this.calcKey(subField, subOP), filterC);
30194
+ if (filterC.hidden) {
30195
+ return;
30196
+ }
29754
30197
  if (!fieldMap.has(subField)) {
29755
30198
  fieldMap.set(subField, {
29756
30199
  name: subField,
29757
30200
  label: "",
29758
- valueOPs: []
30201
+ valueOPs: [],
30202
+ fieldName: subField
29759
30203
  });
29760
30204
  }
29761
30205
  fieldMap.get(subField).valueOPs.push(subOP);
29762
- const cloneItem = clone28(item);
29763
- cloneItem.defsearchMode.valueOP = subOP;
29764
- this.subFilterCMap.set(
29765
- this.calcKey(subField, subOP),
29766
- new SearchBarFilterController(
29767
- cloneItem,
29768
- this.appDataEntity,
29769
- this.context,
29770
- this.params
29771
- )
29772
- );
29773
30206
  });
29774
30207
  (_a = this.minorAppDE.appDEFields) == null ? void 0 : _a.forEach((item) => {
29775
30208
  const codeName = item.codeName.toUpperCase();
@@ -29785,6 +30218,9 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29785
30218
  async init() {
29786
30219
  await this.initMinorAppDE();
29787
30220
  await this.initAllFields();
30221
+ this.hidden = Array.from(this.subFilterCMap.values()).every(
30222
+ (item) => item.hidden
30223
+ );
29788
30224
  }
29789
30225
  /**
29790
30226
  * 获取子搜索栏控制器
@@ -29799,13 +30235,246 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29799
30235
  }
29800
30236
  };
29801
30237
 
30238
+ // src/controller/control/search-bar/interface-util.ts
30239
+ import { recursiveIterate as recursiveIterate9 } from "@ibiz-template/core";
30240
+ import { isNil as isNil29 } from "ramda";
30241
+ function getOriginFilterNodes() {
30242
+ return [
30243
+ {
30244
+ nodeType: "GROUP",
30245
+ logicType: "AND",
30246
+ children: [
30247
+ { nodeType: "FIELD", field: null, valueOP: null, value: null }
30248
+ ]
30249
+ }
30250
+ ];
30251
+ }
30252
+ function validateFilterNodes(filterNodes) {
30253
+ const result = { pass: false };
30254
+ let hasFilter = false;
30255
+ let hasError = false;
30256
+ recursiveIterate9(filterNodes[0], (node) => {
30257
+ if (hasError) {
30258
+ return;
30259
+ }
30260
+ if (node.nodeType === "FIELD") {
30261
+ hasFilter = true;
30262
+ hasError = !node.field || !node.valueOP || isNil29(node.value);
30263
+ } else if (node.nodeType === "ITEMS") {
30264
+ hasError = !node.field || !node.valueOP;
30265
+ } else {
30266
+ hasError = !node.logicType;
30267
+ }
30268
+ });
30269
+ if (hasFilter && !hasError) {
30270
+ result.pass = true;
30271
+ }
30272
+ return result;
30273
+ }
30274
+ function filterNode2SearchCond(filterNode, opts) {
30275
+ let result;
30276
+ if (filterNode.nodeType === "GROUP") {
30277
+ const temp = {
30278
+ condop: filterNode.logicType,
30279
+ condtype: "GROUP"
30280
+ };
30281
+ if (filterNode.children.length > 0) {
30282
+ temp.searchconds = filterNode.children.map(
30283
+ (item) => filterNode2SearchCond(item, opts)
30284
+ );
30285
+ }
30286
+ result = temp;
30287
+ if (filterNode.notMode) {
30288
+ temp.notmode = filterNode.notMode;
30289
+ }
30290
+ } else if (filterNode.nodeType === "FIELD") {
30291
+ const temp = {
30292
+ condtype: "DEFIELD",
30293
+ fieldname: filterNode.field,
30294
+ value: filterNode.value,
30295
+ condop: filterNode.valueOP
30296
+ };
30297
+ if (filterNode.valueItem) {
30298
+ temp.value = filterNode.valueItem;
30299
+ }
30300
+ result = temp;
30301
+ } else {
30302
+ const temp = {
30303
+ condop: filterNode.valueOP,
30304
+ fieldname: filterNode.field,
30305
+ condtype: "ITEMS"
30306
+ };
30307
+ if (filterNode.children.length > 0) {
30308
+ temp.searchconds = filterNode.children.map(
30309
+ (item) => filterNode2SearchCond(item, opts)
30310
+ );
30311
+ }
30312
+ result = temp;
30313
+ }
30314
+ if (opts == null ? void 0 : opts.after) {
30315
+ opts.after(filterNode, result);
30316
+ }
30317
+ return result;
30318
+ }
30319
+ function calcSearchConds(filterNodes, opts) {
30320
+ const { pass } = validateFilterNodes(filterNodes);
30321
+ if (!pass) {
30322
+ return;
30323
+ }
30324
+ const result = filterNodes.map((node) => filterNode2SearchCond(node, opts));
30325
+ return result;
30326
+ }
30327
+ function SearchCondEx2filterNode(cond) {
30328
+ var _a, _b;
30329
+ let result;
30330
+ if (cond.condtype === "GROUP") {
30331
+ const temp = {
30332
+ logicType: cond.condop,
30333
+ nodeType: "GROUP",
30334
+ children: []
30335
+ };
30336
+ if ((_a = cond.searchconds) == null ? void 0 : _a.length) {
30337
+ temp.children = cond.searchconds.map(
30338
+ (item) => SearchCondEx2filterNode(item)
30339
+ );
30340
+ }
30341
+ result = temp;
30342
+ if (cond.notmode) {
30343
+ temp.notMode = cond.notmode;
30344
+ }
30345
+ } else if (cond.condtype === "DEFIELD") {
30346
+ const temp = {
30347
+ nodeType: "FIELD",
30348
+ field: cond.fieldname,
30349
+ value: cond.value,
30350
+ valueOP: cond.condop
30351
+ };
30352
+ if (cond.valueItem) {
30353
+ temp.valueItem = cond.valueItem;
30354
+ }
30355
+ result = temp;
30356
+ } else {
30357
+ const temp = {
30358
+ nodeType: "ITEMS",
30359
+ field: cond.fieldname,
30360
+ valueOP: cond.condop,
30361
+ children: []
30362
+ };
30363
+ if ((_b = cond.searchconds) == null ? void 0 : _b.length) {
30364
+ temp.children = cond.searchconds.map(
30365
+ (item) => SearchCondEx2filterNode(item)
30366
+ );
30367
+ }
30368
+ if (cond.simple) {
30369
+ temp.simple = cond.simple;
30370
+ }
30371
+ result = temp;
30372
+ }
30373
+ if (cond.hidden === true) {
30374
+ result.hidden = true;
30375
+ }
30376
+ return result;
30377
+ }
30378
+ function filterNode2SearchCondEx(filterNode) {
30379
+ let result;
30380
+ if (filterNode.nodeType === "GROUP") {
30381
+ const temp = {
30382
+ condop: filterNode.logicType,
30383
+ condtype: "GROUP"
30384
+ };
30385
+ if (filterNode.children.length > 0) {
30386
+ temp.searchconds = filterNode.children.map(
30387
+ (item) => filterNode2SearchCondEx(item)
30388
+ );
30389
+ }
30390
+ result = temp;
30391
+ if (filterNode.notMode) {
30392
+ temp.notmode = filterNode.notMode;
30393
+ }
30394
+ } else if (filterNode.nodeType === "FIELD") {
30395
+ const temp = {
30396
+ condtype: "DEFIELD",
30397
+ fieldname: filterNode.field,
30398
+ value: filterNode.value,
30399
+ condop: filterNode.valueOP
30400
+ };
30401
+ if (filterNode.valueItem) {
30402
+ temp.valueItem = filterNode.valueItem;
30403
+ }
30404
+ result = temp;
30405
+ } else {
30406
+ const temp = {
30407
+ condop: filterNode.valueOP,
30408
+ fieldname: filterNode.field,
30409
+ condtype: "ITEMS"
30410
+ };
30411
+ if (filterNode.children.length > 0) {
30412
+ temp.searchconds = filterNode.children.map(
30413
+ (item) => filterNode2SearchCondEx(item)
30414
+ );
30415
+ }
30416
+ if (filterNode.simple) {
30417
+ temp.simple = filterNode.simple;
30418
+ }
30419
+ result = temp;
30420
+ }
30421
+ if (filterNode.hidden === true) {
30422
+ result.hidden = true;
30423
+ }
30424
+ return result;
30425
+ }
30426
+ function calcSearchCondExs(filterNodes) {
30427
+ const { pass } = validateFilterNodes(filterNodes);
30428
+ if (!pass) {
30429
+ return;
30430
+ }
30431
+ const result = filterNodes.map(filterNode2SearchCondEx);
30432
+ return result;
30433
+ }
30434
+
30435
+ // src/controller/control/search-bar/search-bar-filter-simple-items.controller.ts
30436
+ var SearchBarFilterSimpleItemsController = class extends SearchBarFilterController {
30437
+ constructor(filterModel, appDataEntity, context, params) {
30438
+ super(filterModel, appDataEntity, context, params);
30439
+ this.noEditor = false;
30440
+ this.key = this.model.id;
30441
+ this.type = "SIMPLE_ITEMS";
30442
+ const info = parseSubFieldInfo(filterModel.defsearchMode.codeName);
30443
+ this.subFieldName = info.field;
30444
+ this.subValueOP = info.op;
30445
+ }
30446
+ /**
30447
+ * 简单模式下添加节点逻辑
30448
+ * @author lxm
30449
+ * @date 2024-04-07 05:44:47
30450
+ * @param {IFilterNodeField} node
30451
+ * @return {*} {void}
30452
+ */
30453
+ addSimpleFilterNode(node) {
30454
+ Object.assign(node, {
30455
+ simple: true,
30456
+ field: this.fieldName,
30457
+ nodeType: "ITEMS",
30458
+ valueOP: this.valueOP,
30459
+ children: [
30460
+ {
30461
+ nodeType: "FIELD",
30462
+ field: this.subFieldName,
30463
+ valueOP: this.subValueOP,
30464
+ value: null
30465
+ }
30466
+ ]
30467
+ });
30468
+ }
30469
+ };
30470
+
29802
30471
  // src/controller/control/search-bar/search-bar.controller.ts
29803
30472
  var ScriptValueRegex2 = /\$\{[^}]*\}/;
29804
30473
  var SearchBarController = class extends ControlController {
29805
30474
  constructor() {
29806
30475
  super(...arguments);
29807
30476
  /**
29808
- * 快速搜索占位符
30477
+ * 快速搜索占位符(根据属性计算出来的快速搜索占位符)
29809
30478
  * @return {*}
29810
30479
  * @author: zhujiamin
29811
30480
  * @Date: 2023-08-11 14:13:10
@@ -29879,6 +30548,10 @@ var SearchBarController = class extends ControlController {
29879
30548
  this.state.selectedGroupItem = null;
29880
30549
  this.state.searchBarGroups = [];
29881
30550
  this.state.selectedSearchGroupItem = null;
30551
+ this.state.advancedQuickSearch = false;
30552
+ this.state.quickSearchItems = [];
30553
+ this.state.quickSearchFieldNames = [];
30554
+ this.state.quickSearchPlaceHolder = "";
29882
30555
  this.resetFilter();
29883
30556
  this.state.visible = !!(this.model.enableQuickSearch || this.model.enableGroup || this.enableFilter);
29884
30557
  }
@@ -29892,6 +30565,7 @@ var SearchBarController = class extends ControlController {
29892
30565
  if (appDataEntity) {
29893
30566
  this.appDataEntity = appDataEntity;
29894
30567
  this.calcQuickSearchPlaceholder();
30568
+ this.initAdvancedQuickSearch();
29895
30569
  }
29896
30570
  if (this.isBackendSearchGroup && this.view.model.codeName) {
29897
30571
  this.service = new SearchBarService(
@@ -29939,7 +30613,7 @@ var SearchBarController = class extends ControlController {
29939
30613
  }
29940
30614
  });
29941
30615
  if (addSearchBarFilters.length > 0) {
29942
- this.model = clone29(this.model);
30616
+ this.model = clone30(this.model);
29943
30617
  this.model.searchBarFilters = addSearchBarFilters.concat(...mergeFilters);
29944
30618
  this.model.enableFilter = true;
29945
30619
  }
@@ -29974,6 +30648,7 @@ var SearchBarController = class extends ControlController {
29974
30648
  });
29975
30649
  if (placeHolders.length > 0) {
29976
30650
  this.placeHolder = placeHolders.join("\u3001");
30651
+ this.state.quickSearchPlaceHolder = this.placeHolder;
29977
30652
  }
29978
30653
  }
29979
30654
  }
@@ -30023,6 +30698,11 @@ var SearchBarController = class extends ControlController {
30023
30698
  const params = {};
30024
30699
  if (this.state.query) {
30025
30700
  params.query = this.state.query;
30701
+ if (this.state.advancedQuickSearch && this.state.quickSearchFieldNames.length) {
30702
+ params.queryconds = this.state.quickSearchFieldNames.map(
30703
+ (name) => "n_".concat(name, "_like")
30704
+ );
30705
+ }
30026
30706
  }
30027
30707
  if (((_a = this.state.selectedGroupItem) == null ? void 0 : _a.data) && typeof this.state.selectedGroupItem.data === "string" && !this.isBackendSearchGroup) {
30028
30708
  const navParams = ScriptFactory.execSingleLine(
@@ -30059,7 +30739,18 @@ var SearchBarController = class extends ControlController {
30059
30739
  const itemsMap = /* @__PURE__ */ new Map();
30060
30740
  this.searchBarFilters.forEach((item) => {
30061
30741
  var _a2;
30062
- if (((_a2 = item.defsearchMode) == null ? void 0 : _a2.valueOP) && ["EXISTS", "NOTEXISTS"].includes(item.defsearchMode.valueOP)) {
30742
+ if (((_a2 = item.defsearchMode) == null ? void 0 : _a2.valueOP) && ItemsValueOPs.includes(item.defsearchMode.valueOP)) {
30743
+ if (isSimpleItems(item)) {
30744
+ this.filterControllers.push(
30745
+ new SearchBarFilterSimpleItemsController(
30746
+ item,
30747
+ this.appDataEntity,
30748
+ this.context,
30749
+ this.params
30750
+ )
30751
+ );
30752
+ return;
30753
+ }
30063
30754
  const key = "".concat(item.appDEFieldId, "_").concat(item.defsearchMode.valueOP);
30064
30755
  if (!itemsMap.has(key)) {
30065
30756
  itemsMap.set(key, []);
@@ -30097,45 +30788,24 @@ var SearchBarController = class extends ControlController {
30097
30788
  * @date 2023-10-13 05:53:35
30098
30789
  * @return {*} {IData}
30099
30790
  */
30100
- calcFilters(valueFormat = true) {
30791
+ calcFilters() {
30101
30792
  if (!this.enableFilter) {
30102
30793
  return;
30103
30794
  }
30104
- const searchconds = calcSearchConds(this.state.filterNodes);
30105
- if (valueFormat && searchconds) {
30106
- recursiveIterate10(
30107
- searchconds[0],
30108
- (node, parent) => {
30109
- if (node.condtype === "DEFIELD" && !isNil30(node.value)) {
30110
- let controller = this.findFilterController(
30111
- node.fieldname,
30112
- node.condop
30113
- );
30114
- if (!controller && parent.condtype === "ITEMS") {
30115
- const itemC = this.findFilterController(
30116
- parent.fieldname,
30117
- parent.condop
30118
- );
30119
- controller = itemC.getSubFilterController(
30120
- node.fieldname,
30121
- node.condop
30122
- );
30123
- }
30124
- if (controller) {
30125
- if (controller.valueItem && node.valueItem) {
30126
- node.value = node.valueItem;
30127
- delete node.valueItem;
30128
- } else if (ScriptValueRegex2.test(node.value)) {
30129
- node.value = ScriptFactory.execSingleLine("`".concat(node.value, "`"), {
30130
- ...this.getEventArgs()
30131
- });
30795
+ const searchconds = calcSearchConds(this.state.filterNodes, {
30796
+ after: (node, cond) => {
30797
+ if (node.nodeType === "FIELD" && isString2(node.value)) {
30798
+ if (ScriptValueRegex2.test(node.value)) {
30799
+ cond.value = ScriptFactory.execSingleLine(
30800
+ "`".concat(node.value, "`"),
30801
+ {
30802
+ ...this.getEventArgs()
30132
30803
  }
30133
- }
30804
+ );
30134
30805
  }
30135
- },
30136
- { childrenFields: ["searchconds"] }
30137
- );
30138
- }
30806
+ }
30807
+ }
30808
+ });
30139
30809
  return searchconds;
30140
30810
  }
30141
30811
  /**
@@ -30251,7 +30921,7 @@ var SearchBarController = class extends ControlController {
30251
30921
  */
30252
30922
  async handleSave() {
30253
30923
  if (this.grid && this.state.selectedSearchGroupItem) {
30254
- const filters = this.calcFilters(false);
30924
+ const filters = calcSearchCondExs(this.state.filterNodes);
30255
30925
  const saveParams = {
30256
30926
  searchconds: filters,
30257
30927
  sort: this.grid.state.sortQuery,
@@ -30299,14 +30969,14 @@ var SearchBarController = class extends ControlController {
30299
30969
  }
30300
30970
  if (groupItem.searchGroupData && groupItem.searchGroupData.searchconds && groupItem.searchGroupData.searchconds.length > 0) {
30301
30971
  const filterNodes = groupItem.searchGroupData.searchconds.map(
30302
- (item) => parseFilters(item)
30972
+ (item) => SearchCondEx2filterNode(item)
30303
30973
  );
30304
30974
  this.state.filterNodes = filterNodes;
30305
30975
  } else {
30306
30976
  this.state.filterNodes = getOriginFilterNodes();
30307
30977
  }
30308
30978
  recursiveIterate10(this.state.filterNodes[0], (node) => {
30309
- if (node.leaf) {
30979
+ if (node.nodeType === "FIELD") {
30310
30980
  if (node.field && node.valueOP && isString2(node.value) && ScriptValueRegex2.test(node.value)) {
30311
30981
  node.disabled = true;
30312
30982
  }
@@ -30317,6 +30987,50 @@ var SearchBarController = class extends ControlController {
30317
30987
  await this.grid.load({ isInitialLoad: true });
30318
30988
  }
30319
30989
  }
30990
+ /**
30991
+ * 初始化高级搜索
30992
+ * @author lxm
30993
+ * @date 2024-04-11 11:44:10
30994
+ * @protected
30995
+ */
30996
+ initAdvancedQuickSearch() {
30997
+ var _a;
30998
+ if (this.model.quickSearchMode === 2 && ((_a = this.model.searchBarQuickSearchs) == null ? void 0 : _a.length)) {
30999
+ this.state.advancedQuickSearch = true;
31000
+ this.state.quickSearchItems = [];
31001
+ this.state.quickSearchFieldNames = [];
31002
+ this.model.searchBarQuickSearchs.forEach((item) => {
31003
+ const filed = findFieldById(this.appDataEntity, item.appDEFieldId);
31004
+ const fieldName = filed.codeName.toLowerCase();
31005
+ this.state.quickSearchItems.push({
31006
+ fieldName,
31007
+ label: filed.logicName
31008
+ });
31009
+ this.state.quickSearchFieldNames.push(fieldName);
31010
+ });
31011
+ this.calcQuickSearchPlaceHolder();
31012
+ }
31013
+ }
31014
+ /**
31015
+ * 计算快速搜索占位符
31016
+ * @author lxm
31017
+ * @date 2024-04-11 05:36:52
31018
+ */
31019
+ calcQuickSearchPlaceHolder() {
31020
+ if (this.state.advancedQuickSearch) {
31021
+ if (this.state.quickSearchFieldNames.length) {
31022
+ const labels = [];
31023
+ this.state.quickSearchItems.forEach((item) => {
31024
+ if (this.state.quickSearchFieldNames.includes(item.fieldName)) {
31025
+ labels.push(item.label);
31026
+ }
31027
+ });
31028
+ this.state.quickSearchPlaceHolder = labels.join("\u3001");
31029
+ } else {
31030
+ this.state.quickSearchPlaceHolder = this.placeHolder;
31031
+ }
31032
+ }
31033
+ }
30320
31034
  };
30321
31035
 
30322
31036
  // src/controller/control/tab-exp-panel/tab-exp-panel.controller.ts
@@ -30565,11 +31279,11 @@ var TabExpPanelController = class extends ControlController {
30565
31279
 
30566
31280
  // src/controller/control/tree/tree.controller.ts
30567
31281
  import {
30568
- RuntimeError as RuntimeError61,
31282
+ RuntimeError as RuntimeError60,
30569
31283
  RuntimeModelError as RuntimeModelError65,
30570
31284
  recursiveIterate as recursiveIterate11
30571
31285
  } from "@ibiz-template/core";
30572
- import { isNil as isNil31 } from "ramda";
31286
+ import { isNil as isNil30 } from "ramda";
30573
31287
 
30574
31288
  // src/controller/control/tree/tree.service.ts
30575
31289
  import { ModelError as ModelError30 } from "@ibiz-template/core";
@@ -31607,7 +32321,7 @@ var TreeController = class extends MDControlController {
31607
32321
  throw new RuntimeModelError65(model, "\u6811\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u7F16\u8F91\u6A21\u5F0F\uFF1A\u540D\u79F0");
31608
32322
  }
31609
32323
  if (nodeData._nodeType !== "DE") {
31610
- throw new RuntimeError61("\u4E0D\u662F\u5B9E\u4F53\u6811\u8282\u70B9\u6570\u636E");
32324
+ throw new RuntimeError60("\u4E0D\u662F\u5B9E\u4F53\u6811\u8282\u70B9\u6570\u636E");
31611
32325
  }
31612
32326
  nodeData._text = text;
31613
32327
  await this.updateDeNodeData([nodeData]);
@@ -31623,7 +32337,7 @@ var TreeController = class extends MDControlController {
31623
32337
  let needRefresh = false;
31624
32338
  const treeNode = this.getNodeModel(item._nodeId);
31625
32339
  if (!treeNode) {
31626
- throw new RuntimeError61("\u672A\u627E\u5230\u6811\u8282\u70B9");
32340
+ throw new RuntimeError60("\u672A\u627E\u5230\u6811\u8282\u70B9");
31627
32341
  }
31628
32342
  const nodeAppDataEntityId = treeNode.appDataEntityId;
31629
32343
  if (nodeAppDataEntityId) {
@@ -31647,7 +32361,7 @@ var TreeController = class extends MDControlController {
31647
32361
  * @return {*} {void}
31648
32362
  */
31649
32363
  onDEDataChange(msg) {
31650
- if (!isNil31(msg.triggerKey) && msg.triggerKey === this.triggerKey) {
32364
+ if (!isNil30(msg.triggerKey) && msg.triggerKey === this.triggerKey) {
31651
32365
  return;
31652
32366
  }
31653
32367
  if (msg.subtype === "OBJECTCREATED") {
@@ -31667,7 +32381,7 @@ var TreeController = class extends MDControlController {
31667
32381
  };
31668
32382
 
31669
32383
  // src/controller/control/wizard-panel/wizard-panel.controller.ts
31670
- import { RuntimeError as RuntimeError62 } from "@ibiz-template/core";
32384
+ import { RuntimeError as RuntimeError61 } from "@ibiz-template/core";
31671
32385
 
31672
32386
  // src/controller/control/wizard-panel/wizard-panel.service.ts
31673
32387
  var WizardPanelService = class extends ControlService {
@@ -31833,7 +32547,7 @@ var WizardPanelController = class extends ControlController {
31833
32547
  const { activeFormTag } = this.state;
31834
32548
  const controller = this.formControllers.get(activeFormTag);
31835
32549
  if (!controller) {
31836
- throw new RuntimeError62("\u627E\u4E0D\u5230".concat(activeFormTag, "\u7684\u8868\u5355\u63A7\u5236\u5668"));
32550
+ throw new RuntimeError61("\u627E\u4E0D\u5230".concat(activeFormTag, "\u7684\u8868\u5355\u63A7\u5236\u5668"));
31837
32551
  }
31838
32552
  return controller;
31839
32553
  }
@@ -31875,7 +32589,7 @@ var WizardPanelController = class extends ControlController {
31875
32589
  getWizardFormByTag(tag) {
31876
32590
  var _a;
31877
32591
  if (!((_a = this.model.dewizard) == null ? void 0 : _a.dewizardForms)) {
31878
- throw new RuntimeError62("\u6CA1\u6709\u914D\u7F6E\u5411\u5BFC\u8868\u5355\u96C6\u5408");
32592
+ throw new RuntimeError61("\u6CA1\u6709\u914D\u7F6E\u5411\u5BFC\u8868\u5355\u96C6\u5408");
31879
32593
  return;
31880
32594
  }
31881
32595
  const wizardForm = this.model.dewizard.dewizardForms.find(
@@ -31884,7 +32598,7 @@ var WizardPanelController = class extends ControlController {
31884
32598
  }
31885
32599
  );
31886
32600
  if (!wizardForm) {
31887
- throw new RuntimeError62("\u627E\u4E0D\u5230\u6807\u8BC6\u4E3A".concat(tag, "\u7684\u5411\u5BFC\u8868\u5355"));
32601
+ throw new RuntimeError61("\u627E\u4E0D\u5230\u6807\u8BC6\u4E3A".concat(tag, "\u7684\u5411\u5BFC\u8868\u5355"));
31888
32602
  }
31889
32603
  return wizardForm;
31890
32604
  }
@@ -31955,7 +32669,7 @@ var WizardPanelController = class extends ControlController {
31955
32669
  prevTag = this.tagHistory[this.tagHistory.length - 1];
31956
32670
  }
31957
32671
  if (!prevTag) {
31958
- throw new RuntimeError62("\u6CA1\u6709\u4E0A\u4E00\u4E2A\u8868\u5355");
32672
+ throw new RuntimeError61("\u6CA1\u6709\u4E0A\u4E00\u4E2A\u8868\u5355");
31959
32673
  }
31960
32674
  this.state.activeFormTag = prevTag;
31961
32675
  }
@@ -31991,7 +32705,7 @@ var WizardPanelController = class extends ControlController {
31991
32705
  });
31992
32706
  const nextWizardStep = wizardSteps[index + 1];
31993
32707
  if (!nextWizardStep) {
31994
- throw new RuntimeError62("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u6B65\u9AA4");
32708
+ throw new RuntimeError61("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u6B65\u9AA4");
31995
32709
  }
31996
32710
  const nextWizardForm = this.getWizardFormByTag(nextWizardStep.stepTag);
31997
32711
  if (nextWizardForm && nextWizardForm.formTag) {
@@ -32000,7 +32714,7 @@ var WizardPanelController = class extends ControlController {
32000
32714
  }
32001
32715
  }
32002
32716
  if (!nextTag) {
32003
- throw new RuntimeError62("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u8868\u5355");
32717
+ throw new RuntimeError61("\u627E\u4E0D\u5230\u4E0B\u4E00\u4E2A\u5411\u5BFC\u8868\u5355");
32004
32718
  }
32005
32719
  this.state.activeFormTag = nextTag;
32006
32720
  this.tagHistory.push(nextTag);
@@ -32020,7 +32734,7 @@ var WizardPanelController = class extends ControlController {
32020
32734
 
32021
32735
  // src/controller/control/md-ctrl/md-ctrl.controller.ts
32022
32736
  import { RuntimeModelError as RuntimeModelError66 } from "@ibiz-template/core";
32023
- import { isNil as isNil32 } from "ramda";
32737
+ import { isNil as isNil31 } from "ramda";
32024
32738
 
32025
32739
  // src/controller/control/md-ctrl/md-ctrl.service.ts
32026
32740
  var MDCtrlService = class extends MDControlService {
@@ -32249,7 +32963,7 @@ var MDCtrlController = class extends MDControlController {
32249
32963
  const groupMap = /* @__PURE__ */ new Map();
32250
32964
  items.forEach((item) => {
32251
32965
  const groupVal = item[groupAppDEFieldId];
32252
- if (isNil32(groupVal)) {
32966
+ if (isNil31(groupVal)) {
32253
32967
  return;
32254
32968
  }
32255
32969
  if (!groupMap.has(groupVal)) {
@@ -32325,8 +33039,8 @@ var MDCtrlController = class extends MDControlController {
32325
33039
  };
32326
33040
 
32327
33041
  // src/controller/control/kanban/kanban.controller.ts
32328
- import { RuntimeError as RuntimeError63, RuntimeModelError as RuntimeModelError67 } from "@ibiz-template/core";
32329
- import { isNil as isNil33 } from "ramda";
33042
+ import { RuntimeError as RuntimeError62, RuntimeModelError as RuntimeModelError67 } from "@ibiz-template/core";
33043
+ import { isNil as isNil32 } from "ramda";
32330
33044
 
32331
33045
  // src/controller/control/kanban/kanban.service.ts
32332
33046
  var KanbanService = class extends DataViewControlService {
@@ -32412,12 +33126,12 @@ var KanbanController = class extends DataViewControlController {
32412
33126
  const isAsc = minorSortDir === "ASC";
32413
33127
  items.forEach((item) => {
32414
33128
  const sortValue = item[sortField];
32415
- if (isNil33(sortValue)) {
33129
+ if (isNil32(sortValue)) {
32416
33130
  item[sortField] = 0;
32417
33131
  } else {
32418
33132
  const toNum = Number(sortValue);
32419
33133
  if (Number.isNaN(toNum)) {
32420
- throw new RuntimeError63(
33134
+ throw new RuntimeError62(
32421
33135
  "".concat(item.srfmajortext, "\u7684\u6392\u5E8F\u5C5E\u6027\u65E0\u6CD5\u8F6C\u6362\u6210\u6570\u503C")
32422
33136
  );
32423
33137
  }
@@ -32539,7 +33253,7 @@ var KanbanController = class extends DataViewControlController {
32539
33253
  }
32540
33254
  handleDataGroup() {
32541
33255
  if (!this.model.enableGroup || this.model.groupMode === "NONE") {
32542
- throw new RuntimeError63("\u770B\u677F\u90E8\u4EF6\u5FC5\u987B\u5F00\u542F\u5206\u7EC4");
33256
+ throw new RuntimeError62("\u770B\u677F\u90E8\u4EF6\u5FC5\u987B\u5F00\u542F\u5206\u7EC4");
32543
33257
  }
32544
33258
  return super.handleDataGroup();
32545
33259
  }
@@ -32555,7 +33269,7 @@ var KanbanController = class extends DataViewControlController {
32555
33269
  const groupMap = /* @__PURE__ */ new Map();
32556
33270
  items.forEach((item) => {
32557
33271
  const groupVal = item[groupAppDEFieldId];
32558
- if (isNil33(groupVal)) {
33272
+ if (isNil32(groupVal)) {
32559
33273
  return;
32560
33274
  }
32561
33275
  if (!groupMap.has(groupVal)) {
@@ -32882,12 +33596,12 @@ var KanbanController = class extends DataViewControlController {
32882
33596
 
32883
33597
  // src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts
32884
33598
  import {
32885
- RuntimeError as RuntimeError64,
33599
+ RuntimeError as RuntimeError63,
32886
33600
  RuntimeModelError as RuntimeModelError68,
32887
33601
  awaitTimeout as awaitTimeout3,
32888
33602
  recursiveIterate as recursiveIterate12
32889
33603
  } from "@ibiz-template/core";
32890
- import { clone as clone30 } from "ramda";
33604
+ import { clone as clone31 } from "ramda";
32891
33605
 
32892
33606
  // src/controller/control/tree-grid-ex/tree-grid-ex.service.ts
32893
33607
  var TreeGridExService = class extends TreeService {
@@ -33142,11 +33856,11 @@ var TreeGridExController = class extends TreeController {
33142
33856
  return;
33143
33857
  }
33144
33858
  if (nodeData._nodeType !== "DE") {
33145
- throw new RuntimeError64("\u975E\u5B9E\u4F53\u8282\u70B9\u6570\u636E\u4E0D\u80FD\u4FDD\u5B58");
33859
+ throw new RuntimeError63("\u975E\u5B9E\u4F53\u8282\u70B9\u6570\u636E\u4E0D\u80FD\u4FDD\u5B58");
33146
33860
  }
33147
33861
  const rowState = this.state.rows[nodeData._uuid];
33148
33862
  if (!rowState) {
33149
- throw new RuntimeError64("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
33863
+ throw new RuntimeError63("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
33150
33864
  }
33151
33865
  if (!rowState.modified) {
33152
33866
  ibiz.log.debug("\u503C\u6CA1\u6709\u53D1\u751F\u6539\u53D8");
@@ -33160,7 +33874,7 @@ var TreeGridExController = class extends TreeController {
33160
33874
  const { appDataEntityId, updateAppDEActionId } = nodeModel;
33161
33875
  const isCreate = nodeData._deData.srfuf === 0 /* CREATE */;
33162
33876
  if (isCreate) {
33163
- throw new RuntimeError64("\u6682\u4E0D\u652F\u6301\u65B0\u5EFA");
33877
+ throw new RuntimeError63("\u6682\u4E0D\u652F\u6301\u65B0\u5EFA");
33164
33878
  }
33165
33879
  if (!updateAppDEActionId) {
33166
33880
  throw new RuntimeModelError68(nodeModel, "\u6811\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u66F4\u65B0\u5B9E\u4F53\u884C\u4E3A");
@@ -33320,10 +34034,10 @@ var TreeGridExController = class extends TreeController {
33320
34034
  (item) => item.showRowEdit
33321
34035
  );
33322
34036
  if (editingRow) {
33323
- throw new RuntimeError64("\u540C\u65F6\u53EA\u80FD\u6709\u4E00\u884C\u5F00\u542F\u884C\u7F16\u8F91");
34037
+ throw new RuntimeError63("\u540C\u65F6\u53EA\u80FD\u6709\u4E00\u884C\u5F00\u542F\u884C\u7F16\u8F91");
33324
34038
  }
33325
34039
  if (row.data._deData.srfuf === 1 /* UPDATE */) {
33326
- row.cacheData = clone30(row.data);
34040
+ row.cacheData = clone31(row.data);
33327
34041
  const defaultVal = this.calcDefaultValue(row.data, false);
33328
34042
  Object.assign(row.data, defaultVal);
33329
34043
  }
@@ -33433,10 +34147,10 @@ var TreeGridExColumnController = class {
33433
34147
  // src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.ts
33434
34148
  import {
33435
34149
  DataTypes as DataTypes5,
33436
- RuntimeError as RuntimeError65,
34150
+ RuntimeError as RuntimeError64,
33437
34151
  RuntimeModelError as RuntimeModelError69
33438
34152
  } from "@ibiz-template/core";
33439
- import { clone as clone31 } from "ramda";
34153
+ import { clone as clone32 } from "ramda";
33440
34154
  import dayjs7 from "dayjs";
33441
34155
  var TreeGridExNodeColumnController = class {
33442
34156
  /**
@@ -33634,7 +34348,7 @@ var TreeGridExNodeColumnController = class {
33634
34348
  const valueItem = this.nodeColumn.linkValueItem || "srfkey";
33635
34349
  const value = row.data[valueItem];
33636
34350
  if (value == null) {
33637
- throw new RuntimeError65("\u672A\u5728\u884C\u6570\u636E\u4E2D\u53D6\u5230 ".concat(valueItem, " \u7684\u503C"));
34351
+ throw new RuntimeError64("\u672A\u5728\u884C\u6570\u636E\u4E2D\u53D6\u5230 ".concat(valueItem, " \u7684\u503C"));
33638
34352
  }
33639
34353
  const { linkAppViewId } = this.nodeColumn;
33640
34354
  if (!linkAppViewId) {
@@ -33645,7 +34359,7 @@ var TreeGridExNodeColumnController = class {
33645
34359
  srfkey: value,
33646
34360
  ...wfContext
33647
34361
  });
33648
- const tempParams = clone31(this.params);
34362
+ const tempParams = clone32(this.params);
33649
34363
  const { userParam } = this.nodeColumn;
33650
34364
  if (userParam) {
33651
34365
  const { navigateContexts, navigateParams } = parseUserParams(userParam);
@@ -34047,7 +34761,7 @@ var TreeGridService = class extends GridService {
34047
34761
  };
34048
34762
 
34049
34763
  // src/controller/control/medit-view-panel/medit-view-panel.controller.ts
34050
- import { RuntimeError as RuntimeError66 } from "@ibiz-template/core";
34764
+ import { RuntimeError as RuntimeError65 } from "@ibiz-template/core";
34051
34765
  import { createUUID as createUUID14 } from "qx-util";
34052
34766
 
34053
34767
  // src/controller/control/medit-view-panel/medit-view-panel.service.ts
@@ -34263,7 +34977,7 @@ var MEditViewPanelController = class extends MDControlController {
34263
34977
  (item) => item.id === id
34264
34978
  );
34265
34979
  if (panelUiItemIndex < 0) {
34266
- throw new RuntimeError66("\u7F16\u8F91\u89C6\u56FE\u9762\u677F\u90E8\u4EF6UI\u6570\u636E\u4E0D\u5B58\u5728");
34980
+ throw new RuntimeError65("\u7F16\u8F91\u89C6\u56FE\u9762\u677F\u90E8\u4EF6UI\u6570\u636E\u4E0D\u5B58\u5728");
34267
34981
  }
34268
34982
  const tempUiItem = this.state.panelUiItems[panelUiItemIndex];
34269
34983
  if (tempUiItem.id.startsWith("mockId:")) {
@@ -34773,7 +35487,7 @@ var ReportPanelController = class extends ControlController {
34773
35487
  // src/controller/control/gantt/gantt.controller.ts
34774
35488
  import {
34775
35489
  awaitTimeout as awaitTimeout4,
34776
- RuntimeError as RuntimeError67,
35490
+ RuntimeError as RuntimeError66,
34777
35491
  RuntimeModelError as RuntimeModelError71
34778
35492
  } from "@ibiz-template/core";
34779
35493
 
@@ -35217,11 +35931,11 @@ var GanttController = class extends TreeGridExController {
35217
35931
  */
35218
35932
  async modifyNodeTime(nodeData, { begin, end }) {
35219
35933
  if (nodeData._nodeType !== "DE") {
35220
- throw new RuntimeError67("\u4E0D\u662F\u5B9E\u4F53\u7518\u7279\u8282\u70B9\u6570\u636E");
35934
+ throw new RuntimeError66("\u4E0D\u662F\u5B9E\u4F53\u7518\u7279\u8282\u70B9\u6570\u636E");
35221
35935
  }
35222
35936
  const rowState = this.getRowState(nodeData._id);
35223
35937
  if (!rowState) {
35224
- throw new RuntimeError67("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
35938
+ throw new RuntimeError66("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
35225
35939
  }
35226
35940
  const { beginDataItemName, endDataItemName } = this.model;
35227
35941
  this.setRowValue(rowState, beginDataItemName, begin);
@@ -35241,11 +35955,11 @@ var GanttController = class extends TreeGridExController {
35241
35955
  return;
35242
35956
  }
35243
35957
  if (nodeData._nodeType !== "DE") {
35244
- throw new RuntimeError67("\u975E\u5B9E\u4F53\u8282\u70B9\u6570\u636E\u4E0D\u80FD\u4FDD\u5B58");
35958
+ throw new RuntimeError66("\u975E\u5B9E\u4F53\u8282\u70B9\u6570\u636E\u4E0D\u80FD\u4FDD\u5B58");
35245
35959
  }
35246
35960
  const rowState = this.state.rows[nodeData._uuid];
35247
35961
  if (!rowState) {
35248
- throw new RuntimeError67("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
35962
+ throw new RuntimeError66("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
35249
35963
  }
35250
35964
  if (!rowState.modified) {
35251
35965
  ibiz.log.debug("\u503C\u6CA1\u6709\u53D1\u751F\u6539\u53D8");
@@ -35293,7 +36007,7 @@ var GanttController = class extends TreeGridExController {
35293
36007
  async remove(args) {
35294
36008
  const { context, params, data } = this.handlerAbilityParams(args);
35295
36009
  if (!(data == null ? void 0 : data.length)) {
35296
- throw new RuntimeError67("\u672A\u9009\u4E2D\u6570\u636E");
36010
+ throw new RuntimeError66("\u672A\u9009\u4E2D\u6570\u636E");
35297
36011
  }
35298
36012
  if ((args == null ? void 0 : args.silent) !== true) {
35299
36013
  const del = await ibiz.confirm.error({
@@ -35402,7 +36116,7 @@ var GanttController = class extends TreeGridExController {
35402
36116
  (item) => item.showRowEdit
35403
36117
  );
35404
36118
  if (editingRow) {
35405
- throw new RuntimeError67("\u8BF7\u5148\u5B8C\u6210\u5F53\u524D\u884C\u7F16\u8F91\u4E2D\u7684\u884C\u7684\u64CD\u4F5C");
36119
+ throw new RuntimeError66("\u8BF7\u5148\u5B8C\u6210\u5F53\u524D\u884C\u7F16\u8F91\u4E2D\u7684\u884C\u7684\u64CD\u4F5C");
35406
36120
  }
35407
36121
  }
35408
36122
  let parentModel;
@@ -35492,16 +36206,16 @@ var HubController = class {
35492
36206
  };
35493
36207
 
35494
36208
  // src/controller/notification/notice.controller.ts
35495
- import { QXEvent as QXEvent9 } from "qx-util";
36209
+ import { QXEvent as QXEvent10 } from "qx-util";
35496
36210
 
35497
36211
  // src/controller/notification/async-action.controller.ts
35498
- import { QXEvent as QXEvent7 } from "qx-util";
35499
- import { clone as clone32 } from "ramda";
35500
- import { isNil as isNil34, isNumber as isNumber2 } from "lodash-es";
36212
+ import { QXEvent as QXEvent8 } from "qx-util";
36213
+ import { clone as clone33 } from "ramda";
36214
+ import { isNil as isNil33, isNumber as isNumber2 } from "lodash-es";
35501
36215
  import dayjs8 from "dayjs";
35502
36216
  var AsyncActionController = class {
35503
36217
  constructor() {
35504
- this.evt = new QXEvent7();
36218
+ this.evt = new QXEvent8();
35505
36219
  this.total = 0;
35506
36220
  this.actions = [];
35507
36221
  /**
@@ -35572,14 +36286,14 @@ var AsyncActionController = class {
35572
36286
  data[key] = dayjs8(data[key]).format("YYYY-MM-DD HH:mm:ss");
35573
36287
  }
35574
36288
  });
35575
- if (!isNil34(data.actionresult)) {
36289
+ if (!isNil33(data.actionresult)) {
35576
36290
  try {
35577
36291
  const json = JSON.parse(data.actionresult);
35578
36292
  data.actionresult = json;
35579
36293
  } catch (error) {
35580
36294
  }
35581
36295
  }
35582
- if (!isNil34(data.completionrate)) {
36296
+ if (!isNil33(data.completionrate)) {
35583
36297
  const num = Number(data.completionrate);
35584
36298
  if (Number.isNaN(num)) {
35585
36299
  data.completionrate = void 0;
@@ -35604,7 +36318,7 @@ var AsyncActionController = class {
35604
36318
  } else {
35605
36319
  this.noticeResult(action);
35606
36320
  }
35607
- this.evt.emit("add", clone32(action));
36321
+ this.evt.emit("add", clone33(action));
35608
36322
  this.evt.emit("dataChange");
35609
36323
  }
35610
36324
  /**
@@ -35626,7 +36340,7 @@ var AsyncActionController = class {
35626
36340
  }
35627
36341
  this.noticeResult(action);
35628
36342
  }
35629
- this.evt.emit("change", clone32(action));
36343
+ this.evt.emit("change", clone33(action));
35630
36344
  this.evt.emit("dataChange");
35631
36345
  }
35632
36346
  noticeResult(action) {
@@ -35635,7 +36349,7 @@ var AsyncActionController = class {
35635
36349
  };
35636
36350
 
35637
36351
  // src/controller/notification/internal-message.controller.ts
35638
- import { QXEvent as QXEvent8 } from "qx-util";
36352
+ import { QXEvent as QXEvent9 } from "qx-util";
35639
36353
  function isHTML(str) {
35640
36354
  if (str === "")
35641
36355
  return false;
@@ -35644,7 +36358,7 @@ function isHTML(str) {
35644
36358
  }
35645
36359
  var InternalMessageController = class {
35646
36360
  constructor() {
35647
- this.evt = new QXEvent8();
36361
+ this.evt = new QXEvent9();
35648
36362
  this.total = 0;
35649
36363
  this.unreadCount = 0;
35650
36364
  /**
@@ -35804,7 +36518,7 @@ var InternalMessageController = class {
35804
36518
  // src/controller/notification/notice.controller.ts
35805
36519
  var NoticeController = class {
35806
36520
  constructor() {
35807
- this.evt = new QXEvent9();
36521
+ this.evt = new QXEvent10();
35808
36522
  this.total = 0;
35809
36523
  this.asyncAction = new AsyncActionController();
35810
36524
  this.internalMessage = new InternalMessageController();
@@ -36022,7 +36736,7 @@ var AppHub = class {
36022
36736
  this.registerAppView(appView);
36023
36737
  return appView;
36024
36738
  }
36025
- throw new RuntimeError68("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
36739
+ throw new RuntimeError67("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
36026
36740
  }
36027
36741
  /**
36028
36742
  * 根据视图模型路径,加参数重新计算视图模型
@@ -36043,7 +36757,7 @@ var AppHub = class {
36043
36757
  );
36044
36758
  return model;
36045
36759
  }
36046
- throw new RuntimeError68("\u89C6\u56FE[".concat(modelPath, "]\u4E0D\u5B58\u5728"));
36760
+ throw new RuntimeError67("\u89C6\u56FE[".concat(modelPath, "]\u4E0D\u5B58\u5728"));
36047
36761
  }
36048
36762
  /**
36049
36763
  * 根据应用实体代码名称查找应用视图
@@ -36074,7 +36788,7 @@ var AppHub = class {
36074
36788
  this.registerAppDataEntity(entity, appId2);
36075
36789
  return entity;
36076
36790
  }
36077
- throw new RuntimeError68("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
36791
+ throw new RuntimeError67("\u672A\u627E\u5230\u5E94\u7528\u5B9E\u4F53[".concat(id, "]"));
36078
36792
  }
36079
36793
  /**
36080
36794
  * 新建 hub 应用
@@ -36089,7 +36803,7 @@ var AppHub = class {
36089
36803
  return this.appMap.get(id);
36090
36804
  }
36091
36805
  if (!this.modelLoaderProvider) {
36092
- throw new RuntimeError68("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
36806
+ throw new RuntimeError67("\u8BF7\u5148\u6CE8\u518C\u6A21\u578B\u52A0\u8F7D\u9002\u914D\u5668");
36093
36807
  }
36094
36808
  const appModel = await this.modelLoaderProvider.getApp(id);
36095
36809
  const app = new Application(appModel);
@@ -36168,6 +36882,17 @@ var AppHub = class {
36168
36882
  this.appMap.clear();
36169
36883
  this.configCache = void 0;
36170
36884
  }
36885
+ /**
36886
+ * 销毁基座
36887
+ *
36888
+ * @author tony001
36889
+ * @date 2024-04-10 17:04:38
36890
+ */
36891
+ destroy() {
36892
+ ibiz.hub.getAllApps().forEach((app) => {
36893
+ app.destroy();
36894
+ });
36895
+ }
36171
36896
  };
36172
36897
 
36173
36898
  // src/engine/engine-factory.ts
@@ -36220,7 +36945,7 @@ var EngineFactory = class {
36220
36945
  };
36221
36946
 
36222
36947
  // src/engine/view-base.engine.ts
36223
- import { RuntimeError as RuntimeError69, findRecursiveChild as findRecursiveChild3 } from "@ibiz-template/core";
36948
+ import { RuntimeError as RuntimeError68, findRecursiveChild as findRecursiveChild3 } from "@ibiz-template/core";
36224
36949
  var ViewEngineBase = class {
36225
36950
  /**
36226
36951
  * 构造函数在视图控制器的构造函数逻辑内部执行
@@ -36493,7 +37218,7 @@ var ViewEngineBase = class {
36493
37218
  const { appDataEntityId } = this.view.model;
36494
37219
  const { evt, context, params } = this.view;
36495
37220
  if (!appDataEntityId) {
36496
- throw new RuntimeError69("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
37221
+ throw new RuntimeError68("\u8BE5\u89C6\u56FE\u6CA1\u6709\u5B9E\u4F53\uFF0C\u65E0\u6CD5\u52A0\u8F7D\u5B9E\u4F53\u6570\u636E");
36497
37222
  }
36498
37223
  const app = ibiz.hub.getApp(context.srfappid);
36499
37224
  const res = await app.deService.exec(
@@ -36515,7 +37240,7 @@ var ViewEngineBase = class {
36515
37240
 
36516
37241
  // src/engine/md-view.engine.ts
36517
37242
  import { RuntimeModelError as RuntimeModelError72 } from "@ibiz-template/core";
36518
- import { clone as clone33 } from "ramda";
37243
+ import { clone as clone34 } from "ramda";
36519
37244
  var MDViewEngine = class extends ViewEngineBase {
36520
37245
  /**
36521
37246
  * 多数据部件名称
@@ -36796,7 +37521,7 @@ var MDViewEngine = class extends ViewEngineBase {
36796
37521
  if (!openAppViewLogic) {
36797
37522
  throw new RuntimeModelError72(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
36798
37523
  }
36799
- const params = clone33(this.view.params);
37524
+ const params = clone34(this.view.params);
36800
37525
  if (copyMode) {
36801
37526
  params.srfcopymode = copyMode;
36802
37527
  }
@@ -36972,6 +37697,7 @@ var MDViewEngine = class extends ViewEngineBase {
36972
37697
  };
36973
37698
 
36974
37699
  // src/global/global-util/global-util.ts
37700
+ import { RuntimeError as RuntimeError69 } from "@ibiz-template/core";
36975
37701
  var sourceTitle = document.title;
36976
37702
  var GlobalUtil = class {
36977
37703
  constructor() {
@@ -37097,6 +37823,24 @@ var GlobalUtil = class {
37097
37823
  document.title = tabTitle;
37098
37824
  }
37099
37825
  }
37826
+ /**
37827
+ * 获取应用全局变量
37828
+ * @author lxm
37829
+ * @date 2024-04-01 11:24:58
37830
+ * @return {*} {IParams}
37831
+ */
37832
+ getGlobalParam() {
37833
+ throw new RuntimeError69("\u83B7\u53D6\u5E94\u7528\u5168\u5C40\u53D8\u91CF\u6CA1\u6709\u5B9E\u73B0");
37834
+ }
37835
+ /**
37836
+ * 获取视图路由参数变量,数组类型,基于路由解析出来的,每一个对象里面都有context和params
37837
+ * @author lxm
37838
+ * @date 2024-04-01 11:24:58
37839
+ * @return {*} {IParams}
37840
+ */
37841
+ getRouterParams() {
37842
+ throw new RuntimeError69("\u83B7\u53D6\u89C6\u56FE\u8DEF\u7531\u53C2\u6570\u53D8\u91CF\u6CA1\u6709\u5B9E\u73B0");
37843
+ }
37100
37844
  };
37101
37845
 
37102
37846
  // src/logic-scheduler/executor/logic-executor.ts
@@ -37709,7 +38453,7 @@ import {
37709
38453
  RuntimeError as RuntimeError74,
37710
38454
  RuntimeModelError as RuntimeModelError75
37711
38455
  } from "@ibiz-template/core";
37712
- import { notNilEmpty as notNilEmpty9 } from "qx-util";
38456
+ import { notNilEmpty as notNilEmpty10 } from "qx-util";
37713
38457
  var AppUILogicExecutor = class extends LogicExecutor {
37714
38458
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
37715
38459
  async execute(executeParams) {
@@ -37773,7 +38517,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
37773
38517
  );
37774
38518
  let tempParams = {};
37775
38519
  const navParams = openViewRef.navigateParams;
37776
- if (notNilEmpty9(navParams)) {
38520
+ if (notNilEmpty10(navParams)) {
37777
38521
  tempParams = convertNavData(navParams, data[0], params, context);
37778
38522
  }
37779
38523
  return ibiz.commands.execute(
@@ -37861,12 +38605,12 @@ var AppUILogicExecutor = class extends LogicExecutor {
37861
38605
  let tempParams = {};
37862
38606
  const _data = (data == null ? void 0 : data[0]) || {};
37863
38607
  const navContexts = newViewRef.navigateContexts;
37864
- if (notNilEmpty9(navContexts)) {
38608
+ if (notNilEmpty10(navContexts)) {
37865
38609
  tempContext = convertNavData(navContexts, _data, params, context);
37866
38610
  }
37867
38611
  tempContext = Object.assign(context, tempContext);
37868
38612
  const navParams = newViewRef.navigateParams;
37869
- if (notNilEmpty9(navParams)) {
38613
+ if (notNilEmpty10(navParams)) {
37870
38614
  tempParams = convertNavData(navParams, _data, params, context);
37871
38615
  }
37872
38616
  if (params.srfcopymode) {
@@ -38366,6 +39110,7 @@ export {
38366
39110
  HubController,
38367
39111
  INTERNAL_MESSAGE_PROVIDER_PREFIX,
38368
39112
  InternalMessageService,
39113
+ ItemsValueOPs,
38369
39114
  KanbanController,
38370
39115
  KanbanService,
38371
39116
  LayoutPanelUtil,
@@ -38424,6 +39169,8 @@ export {
38424
39169
  SearchBarController,
38425
39170
  SearchBarFilterController,
38426
39171
  SearchBarFilterItemsController,
39172
+ SearchBarFilterSimpleItemsController,
39173
+ SearchCondEx2filterNode,
38427
39174
  SearchFilter,
38428
39175
  SearchFormController,
38429
39176
  SearchFormService,
@@ -38491,6 +39238,7 @@ export {
38491
39238
  calcMainStateOPPrivsStrs,
38492
39239
  calcNavParams,
38493
39240
  calcResPath,
39241
+ calcSearchCondExs,
38494
39242
  calcSearchConds,
38495
39243
  compare,
38496
39244
  compareNumber,
@@ -38506,6 +39254,8 @@ export {
38506
39254
  exportData,
38507
39255
  fieldValueToBoolean,
38508
39256
  filterFieldLogics,
39257
+ filterNode2SearchCond,
39258
+ filterNode2SearchCondEx,
38509
39259
  filterValueRules,
38510
39260
  findAppDEMethod,
38511
39261
  findChildFormDetails,
@@ -38513,7 +39263,6 @@ export {
38513
39263
  findEditItem,
38514
39264
  findFieldById,
38515
39265
  findModelChild,
38516
- formatFilters,
38517
39266
  formatMultiData,
38518
39267
  generateEditorRules,
38519
39268
  generateRules,
@@ -38566,10 +39315,12 @@ export {
38566
39315
  installCommand,
38567
39316
  isDataContainer,
38568
39317
  isFormDataContainer,
39318
+ isHiddenFilter,
39319
+ isSimpleItems,
38569
39320
  isValueChange,
38570
39321
  matchMainState,
38571
39322
  openRedirectView,
38572
- parseFilters,
39323
+ parseSubFieldInfo,
38573
39324
  parseUserParams,
38574
39325
  parseViewProtocol,
38575
39326
  presetAppCounterProvider,
@@ -38595,6 +39346,7 @@ export {
38595
39346
  strContain,
38596
39347
  testCond,
38597
39348
  toLocalOpenWFRedirectView,
39349
+ validateFilterNodes,
38598
39350
  verifyDeRules,
38599
39351
  verifyFormGroupLogic,
38600
39352
  verifyPanelGroupLogic