@ibiz-template/runtime 0.6.18 → 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 (97) hide show
  1. package/dist/index.esm.js +1006 -338
  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/form/form.controller.d.ts.map +1 -1
  16. package/out/controller/control/form/form/form.controller.js +4 -3
  17. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.d.ts +2 -2
  18. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.d.ts.map +1 -1
  19. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.js +2 -2
  20. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts +32 -1
  21. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts.map +1 -1
  22. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.js +63 -0
  23. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts +12 -0
  24. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts.map +1 -0
  25. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.js +13 -0
  26. package/out/controller/control/search-bar/index.d.ts +3 -1
  27. package/out/controller/control/search-bar/index.d.ts.map +1 -1
  28. package/out/controller/control/search-bar/index.js +3 -1
  29. package/out/controller/control/search-bar/interface-util.d.ts +75 -0
  30. package/out/controller/control/search-bar/interface-util.d.ts.map +1 -0
  31. package/out/controller/control/search-bar/interface-util.js +274 -0
  32. package/out/controller/control/search-bar/search-bar-filter-items.controller.d.ts +1 -2
  33. package/out/controller/control/search-bar/search-bar-filter-items.controller.d.ts.map +1 -1
  34. package/out/controller/control/search-bar/search-bar-filter-items.controller.js +13 -10
  35. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.d.ts +37 -0
  36. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.d.ts.map +1 -0
  37. package/out/controller/control/search-bar/search-bar-filter-simple-items.controller.js +47 -0
  38. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts +20 -5
  39. package/out/controller/control/search-bar/search-bar-filter.controller.d.ts.map +1 -1
  40. package/out/controller/control/search-bar/search-bar-filter.controller.js +13 -2
  41. package/out/controller/control/search-bar/search-bar.controller.d.ts +15 -2
  42. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  43. package/out/controller/control/search-bar/search-bar.controller.js +80 -30
  44. package/out/controller/control/search-bar/util.d.ts +35 -0
  45. package/out/controller/control/search-bar/util.d.ts.map +1 -0
  46. package/out/controller/control/search-bar/util.js +45 -0
  47. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts +7 -0
  48. package/out/interface/common/i-app-hub-service/i-app-hub-service.d.ts.map +1 -1
  49. package/out/interface/common/i-app-service/i-app-service.d.ts +7 -0
  50. package/out/interface/common/i-app-service/i-app-service.d.ts.map +1 -1
  51. package/out/interface/controller/controller/control/i-app-menu.controller.d.ts +8 -1
  52. package/out/interface/controller/controller/control/i-app-menu.controller.d.ts.map +1 -1
  53. package/out/interface/controller/state/control/i-chart.state.d.ts +28 -0
  54. package/out/interface/controller/state/control/i-chart.state.d.ts.map +1 -1
  55. package/out/interface/controller/state/control/i-md-control.state.d.ts +4 -0
  56. package/out/interface/controller/state/control/i-md-control.state.d.ts.map +1 -1
  57. package/out/interface/controller/state/control/index.d.ts +1 -1
  58. package/out/interface/controller/state/control/index.d.ts.map +1 -1
  59. package/out/interface/controller/state/control/index.js +1 -1
  60. package/out/interface/controller/state/control/search-bar/i-filter-node.d.ts +157 -0
  61. package/out/interface/controller/state/control/search-bar/i-filter-node.d.ts.map +1 -0
  62. package/out/interface/controller/state/control/search-bar/i-quick-search.d.ts +24 -0
  63. package/out/interface/controller/state/control/search-bar/i-quick-search.d.ts.map +1 -0
  64. package/out/interface/controller/state/control/search-bar/i-quick-search.js +1 -0
  65. package/out/interface/controller/state/control/search-bar/i-search-bar-group.d.ts +89 -0
  66. package/out/interface/controller/state/control/search-bar/i-search-bar-group.d.ts.map +1 -0
  67. package/out/interface/controller/state/control/search-bar/i-search-bar-group.js +1 -0
  68. package/out/interface/controller/state/control/search-bar/i-search-bar.state.d.ts +78 -0
  69. package/out/interface/controller/state/control/search-bar/i-search-bar.state.d.ts.map +1 -0
  70. package/out/interface/controller/state/control/search-bar/i-search-bar.state.js +1 -0
  71. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.d.ts +65 -0
  72. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.d.ts.map +1 -0
  73. package/out/interface/controller/state/control/search-bar/i-search-cond-ex.js +1 -0
  74. package/out/interface/controller/state/control/search-bar/i-search-cond.d.ts +43 -0
  75. package/out/interface/controller/state/control/search-bar/i-search-cond.d.ts.map +1 -0
  76. package/out/interface/controller/state/control/search-bar/i-search-cond.js +1 -0
  77. package/out/interface/controller/state/control/search-bar/index.d.ts +7 -0
  78. package/out/interface/controller/state/control/search-bar/index.d.ts.map +1 -0
  79. package/out/interface/controller/state/control/search-bar/index.js +1 -0
  80. package/out/service/service/code-list/code-list.service.d.ts +14 -0
  81. package/out/service/service/code-list/code-list.service.d.ts.map +1 -1
  82. package/out/service/service/code-list/code-list.service.js +39 -0
  83. package/out/service/service/control/md-control.service.d.ts.map +1 -1
  84. package/out/service/service/control/md-control.service.js +3 -0
  85. package/out/service/service/counter/counter.service.d.ts.map +1 -1
  86. package/out/service/service/counter/counter.service.js +5 -1
  87. package/out/service/utils/app-counter/app-counter.js +1 -1
  88. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts +81 -0
  89. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  90. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +127 -2
  91. package/package.json +2 -2
  92. package/out/controller/control/search-bar/use-searchcond.d.ts +0 -33
  93. package/out/controller/control/search-bar/use-searchcond.d.ts.map +0 -1
  94. package/out/controller/control/search-bar/use-searchcond.js +0 -117
  95. package/out/interface/controller/state/control/i-search-bar.state.d.ts +0 -224
  96. package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +0 -1
  97. /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";
@@ -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
  /**
@@ -18737,7 +19082,7 @@ import { ModelError as ModelError19, RuntimeModelError as RuntimeModelError33 }
18737
19082
 
18738
19083
  // src/ui-logic/utils/handle-src-val.ts
18739
19084
  import { ModelError as ModelError18 } from "@ibiz-template/core";
18740
- import { clone as clone21 } from "ramda";
19085
+ import { clone as clone22 } from "ramda";
18741
19086
  function handleSrcVal2(ctx, srcValParams) {
18742
19087
  const { srcDEUILogicParamId, srcFieldName, srcValue } = srcValParams;
18743
19088
  const srcValueType = srcValParams.srcValueType || "SRCDLPARAM";
@@ -18764,7 +19109,7 @@ function handleSrcVal2(ctx, srcValParams) {
18764
19109
  value = ctx.parameters.context;
18765
19110
  break;
18766
19111
  case "ENVPARAM":
18767
- value = clone21(ibiz.env);
19112
+ value = clone22(ibiz.env);
18768
19113
  break;
18769
19114
  default:
18770
19115
  throw new ModelError18(srcValParams, "\u6682\u672A\u652F\u6301\u6E90\u503C\u7C7B\u578B".concat(srcValueType));
@@ -19158,7 +19503,7 @@ var EndNode2 = class extends UILogicNode {
19158
19503
 
19159
19504
  // src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts
19160
19505
  import { ModelError as ModelError22, RuntimeError as RuntimeError42 } from "@ibiz-template/core";
19161
- import { clone as clone22 } from "ramda";
19506
+ import { clone as clone23 } from "ramda";
19162
19507
  var PrepareJSParamNode = class extends UILogicNode {
19163
19508
  async exec(ctx) {
19164
19509
  const nodeParams = this.model.deuilogicNodeParams;
@@ -19168,7 +19513,7 @@ var PrepareJSParamNode = class extends UILogicNode {
19168
19513
  for (const nodeParam of nodeParams) {
19169
19514
  let originValue;
19170
19515
  if (nodeParam.dstDEUILogicParamId && ibiz.env.logLevel === "DEBUG") {
19171
- originValue = clone22(ctx.params[nodeParam.dstDEUILogicParamId]);
19516
+ originValue = clone23(ctx.params[nodeParam.dstDEUILogicParamId]);
19172
19517
  }
19173
19518
  switch (nodeParam.paramAction) {
19174
19519
  case "SETPARAMVALUE":
@@ -19257,7 +19602,7 @@ var PrepareJSParamNode = class extends UILogicNode {
19257
19602
  copyParam(nodeParam, ctx) {
19258
19603
  const { dstDEUILogicParamId } = nodeParam;
19259
19604
  const srcVal = handleSrcVal2(ctx, nodeParam);
19260
- ctx.params[dstDEUILogicParamId] = clone22(srcVal);
19605
+ ctx.params[dstDEUILogicParamId] = clone23(srcVal);
19261
19606
  }
19262
19607
  /**
19263
19608
  * 绑定参数
@@ -19502,7 +19847,7 @@ var ResetParamNode2 = class extends UILogicNode {
19502
19847
 
19503
19848
  // src/ui-logic/ui-logic-node/copy-param-node/copy-param-node.ts
19504
19849
  import { RuntimeModelError as RuntimeModelError42 } from "@ibiz-template/core";
19505
- import { clone as clone23 } from "ramda";
19850
+ import { clone as clone24 } from "ramda";
19506
19851
  var CopyParamNode2 = class extends UILogicNode {
19507
19852
  async exec(ctx) {
19508
19853
  const { dstDEUILogicParamId, srcDEUILogicParamId } = this.model;
@@ -19513,7 +19858,7 @@ var CopyParamNode2 = class extends UILogicNode {
19513
19858
  );
19514
19859
  }
19515
19860
  const srcVal = handleSrcVal2(ctx, this.model);
19516
- ctx.params[dstDEUILogicParamId] = clone23(srcVal);
19861
+ ctx.params[dstDEUILogicParamId] = clone24(srcVal);
19517
19862
  ctx.setLastReturn(ctx.params[dstDEUILogicParamId]);
19518
19863
  ibiz.log.debug(
19519
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"),
@@ -23068,12 +23413,14 @@ var FormController = class extends ControlController {
23068
23413
  this.counters = {};
23069
23414
  const { appCounterRefs } = this.model;
23070
23415
  if (appCounterRefs && appCounterRefs.length > 0) {
23416
+ const dataKey = this.context[calcDeCodeNameById(this.model.appDataEntityId)];
23071
23417
  try {
23072
23418
  await Promise.all(
23073
23419
  appCounterRefs.map(async (counterRef) => {
23074
23420
  const counter = await CounterService.getCounterByRef(
23075
23421
  counterRef,
23076
- this.context
23422
+ this.context,
23423
+ dataKey ? { customId: dataKey } : void 0
23077
23424
  );
23078
23425
  this.counters[counterRef.id] = counter;
23079
23426
  })
@@ -23093,7 +23440,7 @@ var FormController = class extends ControlController {
23093
23440
  setDetailError(name, message) {
23094
23441
  const detail = this.details[name];
23095
23442
  const state = detail == null ? void 0 : detail.state;
23096
- if (state && state.error) {
23443
+ if (state) {
23097
23444
  state.error = message;
23098
23445
  }
23099
23446
  }
@@ -24008,7 +24355,7 @@ var FormButtonController = class extends FormDetailController {
24008
24355
 
24009
24356
  // src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts
24010
24357
  import { isOverlap as isOverlap2 } from "@ibiz-template/core";
24011
- import { createUUID as createUUID10, notNilEmpty as notNilEmpty8 } from "qx-util";
24358
+ import { createUUID as createUUID10, notNilEmpty as notNilEmpty9 } from "qx-util";
24012
24359
 
24013
24360
  // src/controller/control/form/form-detail/form-druipart/form-druipart.state.ts
24014
24361
  var FormDruipartState = class extends FormDetailState {
@@ -24103,7 +24450,7 @@ var FormDRUIPartController = class extends FormDetailController {
24103
24450
  calcViewParams() {
24104
24451
  let newContext = this.form.context.clone();
24105
24452
  const navContexts = this.model.navigateContexts;
24106
- if (notNilEmpty8(navContexts)) {
24453
+ if (notNilEmpty9(navContexts)) {
24107
24454
  newContext = Object.assign(
24108
24455
  newContext,
24109
24456
  convertNavData(
@@ -24608,7 +24955,27 @@ var FormItemController = class extends FormDetailController {
24608
24955
 
24609
24956
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts
24610
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
24611
24974
  var FormMDCtrlController = class extends FormDetailController {
24975
+ createState() {
24976
+ var _a;
24977
+ return new FormMDCtrlState((_a = this.parent) == null ? void 0 : _a.state);
24978
+ }
24612
24979
  /**
24613
24980
  * 名称
24614
24981
  * @author lxm
@@ -24682,6 +25049,68 @@ var FormMDCtrlController = class extends FormDetailController {
24682
25049
  await this.form.updateFormItem(this.model.deformItemUpdateId);
24683
25050
  }
24684
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
+ }
24685
25114
  /**
24686
25115
  * 刷新
24687
25116
  * @author lxm
@@ -24831,7 +25260,7 @@ import { RuntimeError as RuntimeError54, RuntimeModelError as RuntimeModelError5
24831
25260
  import { createUUID as createUUID11 } from "qx-util";
24832
25261
 
24833
25262
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.ts
24834
- var FormMDCtrlFormState = class extends FormDetailState {
25263
+ var FormMDCtrlFormState = class extends FormMDCtrlState {
24835
25264
  };
24836
25265
 
24837
25266
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts
@@ -25002,7 +25431,7 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
25002
25431
 
25003
25432
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.ts
25004
25433
  import { ModelError as ModelError28 } from "@ibiz-template/core";
25005
- import { clone as clone24 } from "ramda";
25434
+ import { clone as clone25 } from "ramda";
25006
25435
  var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
25007
25436
  constructor() {
25008
25437
  super(...arguments);
@@ -25086,7 +25515,7 @@ var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
25086
25515
  copyFields.forEach((key) => {
25087
25516
  tempForm[key] = this.form.model[key];
25088
25517
  });
25089
- this.repeatedForm = clone24(tempForm);
25518
+ this.repeatedForm = clone25(tempForm);
25090
25519
  }
25091
25520
  /**
25092
25521
  * 设置重复器数据(修改主表单里重复器对应属性)
@@ -25258,14 +25687,14 @@ var FormTabPanelController = class extends FormDetailController {
25258
25687
  // src/controller/control/form/edit-form/edit-form.controller.ts
25259
25688
  import {
25260
25689
  awaitTimeout,
25261
- IBizContext as IBizContext4,
25690
+ IBizContext as IBizContext5,
25262
25691
  isElementSame as isElementSame2,
25263
25692
  mergeInLeft as mergeInLeft2,
25264
25693
  RuntimeError as RuntimeError55
25265
25694
  } from "@ibiz-template/core";
25266
25695
  import { debounce } from "lodash-es";
25267
25696
  import { createUUID as createUUID12 } from "qx-util";
25268
- import { clone as clone25, isNil as isNil27 } from "ramda";
25697
+ import { clone as clone26, isNil as isNil27 } from "ramda";
25269
25698
 
25270
25699
  // src/controller/control/form/edit-form/edit-form.service.ts
25271
25700
  import {
@@ -25630,8 +26059,8 @@ var EditFormController = class extends FormController {
25630
26059
  * @return {*} {Promise<IData>}
25631
26060
  */
25632
26061
  async copy() {
25633
- const context = clone25(this.context);
25634
- const queryParams = clone25(this.params);
26062
+ const context = clone26(this.context);
26063
+ const queryParams = clone26(this.params);
25635
26064
  const appDataEntity = await ibiz.hub.getAppDataEntity(
25636
26065
  this.model.appDataEntityId,
25637
26066
  this.model.appId
@@ -25688,7 +26117,7 @@ var EditFormController = class extends FormController {
25688
26117
  return this.loadDraft();
25689
26118
  }
25690
26119
  const { context, params } = this.handlerAbilityParams(args);
25691
- const queryParams = clone25(params);
26120
+ const queryParams = clone26(params);
25692
26121
  let res;
25693
26122
  try {
25694
26123
  await this.startLoading();
@@ -25973,7 +26402,7 @@ var EditFormController = class extends FormController {
25973
26402
  switch (autoSaveMode) {
25974
26403
  case 3:
25975
26404
  saveParam.data = this.getDiffData();
25976
- saveParam.context = IBizContext4.create({ srfsimple: true });
26405
+ saveParam.context = IBizContext5.create({ srfsimple: true });
25977
26406
  break;
25978
26407
  default:
25979
26408
  }
@@ -26301,7 +26730,7 @@ import {
26301
26730
  RuntimeError as RuntimeError56,
26302
26731
  RuntimeModelError as RuntimeModelError62
26303
26732
  } from "@ibiz-template/core";
26304
- import { clone as clone26 } from "ramda";
26733
+ import { clone as clone27 } from "ramda";
26305
26734
  import dayjs5 from "dayjs";
26306
26735
 
26307
26736
  // src/controller/control/grid/grid/grid.service.ts
@@ -26651,7 +27080,7 @@ var GridController = class extends MDControlController {
26651
27080
  const result = await calcColumnModelBySchema(json, this);
26652
27081
  if (result && result.degridColumns.length > 0) {
26653
27082
  const { degridColumns, degridDataItems } = result;
26654
- this.model = clone26(this.model);
27083
+ this.model = clone27(this.model);
26655
27084
  this.model.degridColumns = [
26656
27085
  ...(this.model.degridColumns || []).filter((item) => {
26657
27086
  return degridColumns.findIndex((x) => x.id === item.id) === -1;
@@ -27238,7 +27667,7 @@ var GridController = class extends MDControlController {
27238
27667
  throw new RuntimeError56("\u540C\u65F6\u53EA\u80FD\u6709\u4E00\u884C\u5F00\u542F\u884C\u7F16\u8F91");
27239
27668
  }
27240
27669
  if (row.data.srfuf === 1 /* UPDATE */) {
27241
- row.cacheData = clone26(row.data);
27670
+ row.cacheData = clone27(row.data);
27242
27671
  const defaultVal = this.calcDefaultValue(row.data, false);
27243
27672
  Object.assign(row.data, defaultVal);
27244
27673
  }
@@ -27377,7 +27806,7 @@ var GridController = class extends MDControlController {
27377
27806
  */
27378
27807
  formatExcelData(data) {
27379
27808
  const { fields = [] } = this.dataExportParam;
27380
- const cloneData = clone26(
27809
+ const cloneData = clone27(
27381
27810
  data.map((item) => {
27382
27811
  return fields.reduce((obj, key) => {
27383
27812
  obj[key] = item[key];
@@ -27641,7 +28070,7 @@ var GridController = class extends MDControlController {
27641
28070
  import { DataTypes as DataTypes4, ModelError as ModelError29, plus as plus2 } from "@ibiz-template/core";
27642
28071
  import dayjs6 from "dayjs";
27643
28072
  import { debounce as debounce2 } from "lodash-es";
27644
- import { clone as clone27, isNil as isNil28 } from "ramda";
28073
+ import { clone as clone28, isNil as isNil28 } from "ramda";
27645
28074
  var GridFieldColumnController = class extends GridColumnController {
27646
28075
  constructor() {
27647
28076
  super(...arguments);
@@ -27779,7 +28208,7 @@ var GridFieldColumnController = class extends GridColumnController {
27779
28208
  srfkey: value,
27780
28209
  ...wfContext
27781
28210
  });
27782
- const tempParams = clone27(this.params);
28211
+ const tempParams = clone28(this.params);
27783
28212
  const { context: newContext, params: newParams } = this.handlePublicParams(
27784
28213
  row.data,
27785
28214
  tempContext,
@@ -29196,11 +29625,33 @@ var PickupViewPanelController = class extends ControlController {
29196
29625
 
29197
29626
  // src/controller/control/search-bar/search-bar.controller.ts
29198
29627
  import { mergeInLeft as mergeInLeft3, recursiveIterate as recursiveIterate10 } from "@ibiz-template/core";
29199
- import { clone as clone29, isNil as isNil30 } from "ramda";
29628
+ import { clone as clone30 } from "ramda";
29200
29629
  import { isString as isString2 } from "lodash-es";
29201
29630
 
29202
29631
  // src/controller/control/search-bar/search-bar-filter.controller.ts
29203
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
29204
29655
  var ExcludeOPs = [
29205
29656
  "ISNULL" /* IS_NULL */,
29206
29657
  "ISNOTNULL" /* IS_NOT_NULL */,
@@ -29221,12 +29672,21 @@ var SearchBarFilterController = class {
29221
29672
  * @type {boolean}
29222
29673
  */
29223
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";
29224
29682
  var _a;
29683
+ this.hidden = isHiddenFilter(model);
29225
29684
  let field;
29226
29685
  if (model.appDEFieldId) {
29227
29686
  field = findFieldById(this.appDataEntity, model.appDEFieldId);
29228
29687
  }
29229
29688
  this.fieldName = field ? field.codeName.toLowerCase() : model.id;
29689
+ this.key = this.fieldName;
29230
29690
  this.label = model.caption || (field == null ? void 0 : field.logicName) || model.id;
29231
29691
  this.valueOP = (_a = model.defsearchMode) == null ? void 0 : _a.valueOP;
29232
29692
  this.noEditor = this.valueOP ? ExcludeOPs.includes(this.valueOP) : !this.model.editor;
@@ -29265,7 +29725,7 @@ var SearchBarFilterController = class {
29265
29725
  * 计算要递给编辑器的参数
29266
29726
  * @author lxm
29267
29727
  * @date 2024-02-04 06:35:28
29268
- * @param {IFilterLeafNode} node
29728
+ * @param {IFilterNodeField} node
29269
29729
  * @return {*} {{ value: unknown; data: IData }}
29270
29730
  */
29271
29731
  calcEditorProps(node) {
@@ -29284,7 +29744,7 @@ var SearchBarFilterController = class {
29284
29744
  * 编辑器值变更处理
29285
29745
  * @author lxm
29286
29746
  * @date 2024-02-04 06:42:04
29287
- * @param {IFilterLeafNode} node
29747
+ * @param {IFilterNodeField} node
29288
29748
  * @param {unknown} value
29289
29749
  * @param {string} [name]
29290
29750
  */
@@ -29638,106 +30098,10 @@ async function calcFilterModelBySchema(json, appDataEntityId, modelAppId) {
29638
30098
  return addSearchBarFilters;
29639
30099
  }
29640
30100
 
29641
- // src/controller/control/search-bar/use-searchcond.ts
29642
- import { RuntimeError as RuntimeError59, recursiveIterate as recursiveIterate9 } from "@ibiz-template/core";
29643
- import { isNil as isNil29 } from "ramda";
29644
- var ExcludeOPs2 = ["ISNULL" /* IS_NULL */, "ISNOTNULL" /* IS_NOT_NULL */];
29645
- function getOriginFilterNodes() {
29646
- return [
29647
- {
29648
- leaf: false,
29649
- logicType: "AND",
29650
- children: [{ leaf: true, field: null, valueOP: null, value: null }]
29651
- }
29652
- ];
29653
- }
29654
- function formatFilters(node) {
29655
- if (!node.leaf) {
29656
- if (node.logicType === "ITEMS") {
29657
- return {
29658
- condtype: "ITEMS",
29659
- fieldname: node.field,
29660
- condop: node.valueOP,
29661
- searchconds: node.children.map((item) => formatFilters(item))
29662
- };
29663
- }
29664
- return {
29665
- condtype: "GROUP",
29666
- condop: node.logicType,
29667
- bnotmode: false,
29668
- searchconds: node.children.map((item) => formatFilters(item))
29669
- };
29670
- }
29671
- const leafNode = node;
29672
- const temp = {
29673
- condtype: "DEFIELD",
29674
- fieldname: node.field,
29675
- condop: node.valueOP,
29676
- value: node.value
29677
- };
29678
- if (leafNode.valueItem) {
29679
- temp.valueItem = leafNode.valueItem;
29680
- }
29681
- return temp;
29682
- }
29683
- function parseFilters(data) {
29684
- if (data.condtype === "GROUP") {
29685
- return {
29686
- leaf: false,
29687
- logicType: data.condop === "AND" ? "AND" : "OR",
29688
- children: (data.searchconds || []).map(
29689
- (item) => parseFilters(item)
29690
- )
29691
- };
29692
- }
29693
- if (data.condtype === "ITEMS") {
29694
- return {
29695
- leaf: false,
29696
- logicType: "ITEMS",
29697
- field: data.fieldname || null,
29698
- valueOP: data.condop || null,
29699
- children: (data.searchconds || []).map(
29700
- (item) => parseFilters(item)
29701
- )
29702
- };
29703
- }
29704
- if (data.condtype === "DEFIELD") {
29705
- return {
29706
- leaf: true,
29707
- field: data.fieldname || null,
29708
- valueOP: data.condop || null,
29709
- value: data.value || null,
29710
- valueItem: data.valueItem || void 0
29711
- };
29712
- }
29713
- throw new RuntimeError59("\u65E0\u6548\u7684condtype:".concat(data.condtype));
29714
- }
29715
- function calcSearchConds(filterNodes) {
29716
- let hasFilter = false;
29717
- let hasError = false;
29718
- recursiveIterate9(filterNodes[0], (node) => {
29719
- if (node.leaf) {
29720
- if (node.field && node.valueOP && !isNil29(node.value) || node.field && node.valueOP && ExcludeOPs2.includes(node.valueOP)) {
29721
- hasFilter = true;
29722
- } else {
29723
- hasError = true;
29724
- }
29725
- }
29726
- });
29727
- if (hasFilter && !hasError) {
29728
- const filter = [formatFilters(filterNodes[0])];
29729
- return filter;
29730
- }
29731
- }
29732
-
29733
30101
  // src/controller/control/search-bar/search-bar-filter-items.controller.ts
29734
- import { RuntimeError as RuntimeError60 } from "@ibiz-template/core";
29735
- import { clone as clone28 } from "ramda";
29736
- var ExcludeOPs3 = [
29737
- "ISNULL" /* IS_NULL */,
29738
- "ISNOTNULL" /* IS_NOT_NULL */
29739
- ];
29740
- 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+)$/;
29741
30105
  var SearchBarFilterItemsController = class extends SearchBarFilterController {
29742
30106
  constructor(filterModels, appDataEntity, context, params) {
29743
30107
  super(filterModels[0], appDataEntity, context, params);
@@ -29757,6 +30121,7 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29757
30121
  * @type {Map<string, SearchBarFilterController>}
29758
30122
  */
29759
30123
  this.subFilterCMap = /* @__PURE__ */ new Map();
30124
+ this.type = "ITEMS";
29760
30125
  }
29761
30126
  /**
29762
30127
  * 计算标识
@@ -29793,7 +30158,7 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29793
30158
  return false;
29794
30159
  });
29795
30160
  if (!minorDEId) {
29796
- 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"));
29797
30162
  }
29798
30163
  this.minorAppDE = await ibiz.hub.getAppDataEntity(
29799
30164
  minorDEId,
@@ -29813,28 +30178,31 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29813
30178
  this.filterModels.forEach((item) => {
29814
30179
  var _a2;
29815
30180
  const subStr = (_a2 = item.defsearchMode.codeName) == null ? void 0 : _a2.split("__")[1];
29816
- const matches = subStr.match(SubFieldRegex);
30181
+ const matches = subStr.match(SubFieldRegex2);
29817
30182
  const subField = matches[1];
29818
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
+ }
29819
30197
  if (!fieldMap.has(subField)) {
29820
30198
  fieldMap.set(subField, {
29821
30199
  name: subField,
29822
30200
  label: "",
29823
- valueOPs: []
30201
+ valueOPs: [],
30202
+ fieldName: subField
29824
30203
  });
29825
30204
  }
29826
30205
  fieldMap.get(subField).valueOPs.push(subOP);
29827
- const cloneItem = clone28(item);
29828
- cloneItem.defsearchMode.valueOP = subOP;
29829
- this.subFilterCMap.set(
29830
- this.calcKey(subField, subOP),
29831
- new SearchBarFilterController(
29832
- cloneItem,
29833
- this.appDataEntity,
29834
- this.context,
29835
- this.params
29836
- )
29837
- );
29838
30206
  });
29839
30207
  (_a = this.minorAppDE.appDEFields) == null ? void 0 : _a.forEach((item) => {
29840
30208
  const codeName = item.codeName.toUpperCase();
@@ -29850,6 +30218,9 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29850
30218
  async init() {
29851
30219
  await this.initMinorAppDE();
29852
30220
  await this.initAllFields();
30221
+ this.hidden = Array.from(this.subFilterCMap.values()).every(
30222
+ (item) => item.hidden
30223
+ );
29853
30224
  }
29854
30225
  /**
29855
30226
  * 获取子搜索栏控制器
@@ -29864,13 +30235,246 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
29864
30235
  }
29865
30236
  };
29866
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
+
29867
30471
  // src/controller/control/search-bar/search-bar.controller.ts
29868
30472
  var ScriptValueRegex2 = /\$\{[^}]*\}/;
29869
30473
  var SearchBarController = class extends ControlController {
29870
30474
  constructor() {
29871
30475
  super(...arguments);
29872
30476
  /**
29873
- * 快速搜索占位符
30477
+ * 快速搜索占位符(根据属性计算出来的快速搜索占位符)
29874
30478
  * @return {*}
29875
30479
  * @author: zhujiamin
29876
30480
  * @Date: 2023-08-11 14:13:10
@@ -29944,6 +30548,10 @@ var SearchBarController = class extends ControlController {
29944
30548
  this.state.selectedGroupItem = null;
29945
30549
  this.state.searchBarGroups = [];
29946
30550
  this.state.selectedSearchGroupItem = null;
30551
+ this.state.advancedQuickSearch = false;
30552
+ this.state.quickSearchItems = [];
30553
+ this.state.quickSearchFieldNames = [];
30554
+ this.state.quickSearchPlaceHolder = "";
29947
30555
  this.resetFilter();
29948
30556
  this.state.visible = !!(this.model.enableQuickSearch || this.model.enableGroup || this.enableFilter);
29949
30557
  }
@@ -29957,6 +30565,7 @@ var SearchBarController = class extends ControlController {
29957
30565
  if (appDataEntity) {
29958
30566
  this.appDataEntity = appDataEntity;
29959
30567
  this.calcQuickSearchPlaceholder();
30568
+ this.initAdvancedQuickSearch();
29960
30569
  }
29961
30570
  if (this.isBackendSearchGroup && this.view.model.codeName) {
29962
30571
  this.service = new SearchBarService(
@@ -30004,7 +30613,7 @@ var SearchBarController = class extends ControlController {
30004
30613
  }
30005
30614
  });
30006
30615
  if (addSearchBarFilters.length > 0) {
30007
- this.model = clone29(this.model);
30616
+ this.model = clone30(this.model);
30008
30617
  this.model.searchBarFilters = addSearchBarFilters.concat(...mergeFilters);
30009
30618
  this.model.enableFilter = true;
30010
30619
  }
@@ -30039,6 +30648,7 @@ var SearchBarController = class extends ControlController {
30039
30648
  });
30040
30649
  if (placeHolders.length > 0) {
30041
30650
  this.placeHolder = placeHolders.join("\u3001");
30651
+ this.state.quickSearchPlaceHolder = this.placeHolder;
30042
30652
  }
30043
30653
  }
30044
30654
  }
@@ -30088,6 +30698,11 @@ var SearchBarController = class extends ControlController {
30088
30698
  const params = {};
30089
30699
  if (this.state.query) {
30090
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
+ }
30091
30706
  }
30092
30707
  if (((_a = this.state.selectedGroupItem) == null ? void 0 : _a.data) && typeof this.state.selectedGroupItem.data === "string" && !this.isBackendSearchGroup) {
30093
30708
  const navParams = ScriptFactory.execSingleLine(
@@ -30124,7 +30739,18 @@ var SearchBarController = class extends ControlController {
30124
30739
  const itemsMap = /* @__PURE__ */ new Map();
30125
30740
  this.searchBarFilters.forEach((item) => {
30126
30741
  var _a2;
30127
- 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
+ }
30128
30754
  const key = "".concat(item.appDEFieldId, "_").concat(item.defsearchMode.valueOP);
30129
30755
  if (!itemsMap.has(key)) {
30130
30756
  itemsMap.set(key, []);
@@ -30162,45 +30788,24 @@ var SearchBarController = class extends ControlController {
30162
30788
  * @date 2023-10-13 05:53:35
30163
30789
  * @return {*} {IData}
30164
30790
  */
30165
- calcFilters(valueFormat = true) {
30791
+ calcFilters() {
30166
30792
  if (!this.enableFilter) {
30167
30793
  return;
30168
30794
  }
30169
- const searchconds = calcSearchConds(this.state.filterNodes);
30170
- if (valueFormat && searchconds) {
30171
- recursiveIterate10(
30172
- searchconds[0],
30173
- (node, parent) => {
30174
- if (node.condtype === "DEFIELD" && !isNil30(node.value)) {
30175
- let controller = this.findFilterController(
30176
- node.fieldname,
30177
- node.condop
30178
- );
30179
- if (!controller && parent.condtype === "ITEMS") {
30180
- const itemC = this.findFilterController(
30181
- parent.fieldname,
30182
- parent.condop
30183
- );
30184
- controller = itemC.getSubFilterController(
30185
- node.fieldname,
30186
- node.condop
30187
- );
30188
- }
30189
- if (controller) {
30190
- if (controller.valueItem && node.valueItem) {
30191
- node.value = node.valueItem;
30192
- delete node.valueItem;
30193
- } else if (ScriptValueRegex2.test(node.value)) {
30194
- node.value = ScriptFactory.execSingleLine("`".concat(node.value, "`"), {
30195
- ...this.getEventArgs()
30196
- });
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()
30197
30803
  }
30198
- }
30804
+ );
30199
30805
  }
30200
- },
30201
- { childrenFields: ["searchconds"] }
30202
- );
30203
- }
30806
+ }
30807
+ }
30808
+ });
30204
30809
  return searchconds;
30205
30810
  }
30206
30811
  /**
@@ -30316,7 +30921,7 @@ var SearchBarController = class extends ControlController {
30316
30921
  */
30317
30922
  async handleSave() {
30318
30923
  if (this.grid && this.state.selectedSearchGroupItem) {
30319
- const filters = this.calcFilters(false);
30924
+ const filters = calcSearchCondExs(this.state.filterNodes);
30320
30925
  const saveParams = {
30321
30926
  searchconds: filters,
30322
30927
  sort: this.grid.state.sortQuery,
@@ -30364,14 +30969,14 @@ var SearchBarController = class extends ControlController {
30364
30969
  }
30365
30970
  if (groupItem.searchGroupData && groupItem.searchGroupData.searchconds && groupItem.searchGroupData.searchconds.length > 0) {
30366
30971
  const filterNodes = groupItem.searchGroupData.searchconds.map(
30367
- (item) => parseFilters(item)
30972
+ (item) => SearchCondEx2filterNode(item)
30368
30973
  );
30369
30974
  this.state.filterNodes = filterNodes;
30370
30975
  } else {
30371
30976
  this.state.filterNodes = getOriginFilterNodes();
30372
30977
  }
30373
30978
  recursiveIterate10(this.state.filterNodes[0], (node) => {
30374
- if (node.leaf) {
30979
+ if (node.nodeType === "FIELD") {
30375
30980
  if (node.field && node.valueOP && isString2(node.value) && ScriptValueRegex2.test(node.value)) {
30376
30981
  node.disabled = true;
30377
30982
  }
@@ -30382,6 +30987,50 @@ var SearchBarController = class extends ControlController {
30382
30987
  await this.grid.load({ isInitialLoad: true });
30383
30988
  }
30384
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
+ }
30385
31034
  };
30386
31035
 
30387
31036
  // src/controller/control/tab-exp-panel/tab-exp-panel.controller.ts
@@ -30630,11 +31279,11 @@ var TabExpPanelController = class extends ControlController {
30630
31279
 
30631
31280
  // src/controller/control/tree/tree.controller.ts
30632
31281
  import {
30633
- RuntimeError as RuntimeError61,
31282
+ RuntimeError as RuntimeError60,
30634
31283
  RuntimeModelError as RuntimeModelError65,
30635
31284
  recursiveIterate as recursiveIterate11
30636
31285
  } from "@ibiz-template/core";
30637
- import { isNil as isNil31 } from "ramda";
31286
+ import { isNil as isNil30 } from "ramda";
30638
31287
 
30639
31288
  // src/controller/control/tree/tree.service.ts
30640
31289
  import { ModelError as ModelError30 } from "@ibiz-template/core";
@@ -31672,7 +32321,7 @@ var TreeController = class extends MDControlController {
31672
32321
  throw new RuntimeModelError65(model, "\u6811\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u7F16\u8F91\u6A21\u5F0F\uFF1A\u540D\u79F0");
31673
32322
  }
31674
32323
  if (nodeData._nodeType !== "DE") {
31675
- 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");
31676
32325
  }
31677
32326
  nodeData._text = text;
31678
32327
  await this.updateDeNodeData([nodeData]);
@@ -31688,7 +32337,7 @@ var TreeController = class extends MDControlController {
31688
32337
  let needRefresh = false;
31689
32338
  const treeNode = this.getNodeModel(item._nodeId);
31690
32339
  if (!treeNode) {
31691
- throw new RuntimeError61("\u672A\u627E\u5230\u6811\u8282\u70B9");
32340
+ throw new RuntimeError60("\u672A\u627E\u5230\u6811\u8282\u70B9");
31692
32341
  }
31693
32342
  const nodeAppDataEntityId = treeNode.appDataEntityId;
31694
32343
  if (nodeAppDataEntityId) {
@@ -31712,7 +32361,7 @@ var TreeController = class extends MDControlController {
31712
32361
  * @return {*} {void}
31713
32362
  */
31714
32363
  onDEDataChange(msg) {
31715
- if (!isNil31(msg.triggerKey) && msg.triggerKey === this.triggerKey) {
32364
+ if (!isNil30(msg.triggerKey) && msg.triggerKey === this.triggerKey) {
31716
32365
  return;
31717
32366
  }
31718
32367
  if (msg.subtype === "OBJECTCREATED") {
@@ -31732,7 +32381,7 @@ var TreeController = class extends MDControlController {
31732
32381
  };
31733
32382
 
31734
32383
  // src/controller/control/wizard-panel/wizard-panel.controller.ts
31735
- import { RuntimeError as RuntimeError62 } from "@ibiz-template/core";
32384
+ import { RuntimeError as RuntimeError61 } from "@ibiz-template/core";
31736
32385
 
31737
32386
  // src/controller/control/wizard-panel/wizard-panel.service.ts
31738
32387
  var WizardPanelService = class extends ControlService {
@@ -31898,7 +32547,7 @@ var WizardPanelController = class extends ControlController {
31898
32547
  const { activeFormTag } = this.state;
31899
32548
  const controller = this.formControllers.get(activeFormTag);
31900
32549
  if (!controller) {
31901
- 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"));
31902
32551
  }
31903
32552
  return controller;
31904
32553
  }
@@ -31940,7 +32589,7 @@ var WizardPanelController = class extends ControlController {
31940
32589
  getWizardFormByTag(tag) {
31941
32590
  var _a;
31942
32591
  if (!((_a = this.model.dewizard) == null ? void 0 : _a.dewizardForms)) {
31943
- 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");
31944
32593
  return;
31945
32594
  }
31946
32595
  const wizardForm = this.model.dewizard.dewizardForms.find(
@@ -31949,7 +32598,7 @@ var WizardPanelController = class extends ControlController {
31949
32598
  }
31950
32599
  );
31951
32600
  if (!wizardForm) {
31952
- 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"));
31953
32602
  }
31954
32603
  return wizardForm;
31955
32604
  }
@@ -32020,7 +32669,7 @@ var WizardPanelController = class extends ControlController {
32020
32669
  prevTag = this.tagHistory[this.tagHistory.length - 1];
32021
32670
  }
32022
32671
  if (!prevTag) {
32023
- throw new RuntimeError62("\u6CA1\u6709\u4E0A\u4E00\u4E2A\u8868\u5355");
32672
+ throw new RuntimeError61("\u6CA1\u6709\u4E0A\u4E00\u4E2A\u8868\u5355");
32024
32673
  }
32025
32674
  this.state.activeFormTag = prevTag;
32026
32675
  }
@@ -32056,7 +32705,7 @@ var WizardPanelController = class extends ControlController {
32056
32705
  });
32057
32706
  const nextWizardStep = wizardSteps[index + 1];
32058
32707
  if (!nextWizardStep) {
32059
- 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");
32060
32709
  }
32061
32710
  const nextWizardForm = this.getWizardFormByTag(nextWizardStep.stepTag);
32062
32711
  if (nextWizardForm && nextWizardForm.formTag) {
@@ -32065,7 +32714,7 @@ var WizardPanelController = class extends ControlController {
32065
32714
  }
32066
32715
  }
32067
32716
  if (!nextTag) {
32068
- 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");
32069
32718
  }
32070
32719
  this.state.activeFormTag = nextTag;
32071
32720
  this.tagHistory.push(nextTag);
@@ -32085,7 +32734,7 @@ var WizardPanelController = class extends ControlController {
32085
32734
 
32086
32735
  // src/controller/control/md-ctrl/md-ctrl.controller.ts
32087
32736
  import { RuntimeModelError as RuntimeModelError66 } from "@ibiz-template/core";
32088
- import { isNil as isNil32 } from "ramda";
32737
+ import { isNil as isNil31 } from "ramda";
32089
32738
 
32090
32739
  // src/controller/control/md-ctrl/md-ctrl.service.ts
32091
32740
  var MDCtrlService = class extends MDControlService {
@@ -32314,7 +32963,7 @@ var MDCtrlController = class extends MDControlController {
32314
32963
  const groupMap = /* @__PURE__ */ new Map();
32315
32964
  items.forEach((item) => {
32316
32965
  const groupVal = item[groupAppDEFieldId];
32317
- if (isNil32(groupVal)) {
32966
+ if (isNil31(groupVal)) {
32318
32967
  return;
32319
32968
  }
32320
32969
  if (!groupMap.has(groupVal)) {
@@ -32390,8 +33039,8 @@ var MDCtrlController = class extends MDControlController {
32390
33039
  };
32391
33040
 
32392
33041
  // src/controller/control/kanban/kanban.controller.ts
32393
- import { RuntimeError as RuntimeError63, RuntimeModelError as RuntimeModelError67 } from "@ibiz-template/core";
32394
- 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";
32395
33044
 
32396
33045
  // src/controller/control/kanban/kanban.service.ts
32397
33046
  var KanbanService = class extends DataViewControlService {
@@ -32477,12 +33126,12 @@ var KanbanController = class extends DataViewControlController {
32477
33126
  const isAsc = minorSortDir === "ASC";
32478
33127
  items.forEach((item) => {
32479
33128
  const sortValue = item[sortField];
32480
- if (isNil33(sortValue)) {
33129
+ if (isNil32(sortValue)) {
32481
33130
  item[sortField] = 0;
32482
33131
  } else {
32483
33132
  const toNum = Number(sortValue);
32484
33133
  if (Number.isNaN(toNum)) {
32485
- throw new RuntimeError63(
33134
+ throw new RuntimeError62(
32486
33135
  "".concat(item.srfmajortext, "\u7684\u6392\u5E8F\u5C5E\u6027\u65E0\u6CD5\u8F6C\u6362\u6210\u6570\u503C")
32487
33136
  );
32488
33137
  }
@@ -32604,7 +33253,7 @@ var KanbanController = class extends DataViewControlController {
32604
33253
  }
32605
33254
  handleDataGroup() {
32606
33255
  if (!this.model.enableGroup || this.model.groupMode === "NONE") {
32607
- 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");
32608
33257
  }
32609
33258
  return super.handleDataGroup();
32610
33259
  }
@@ -32620,7 +33269,7 @@ var KanbanController = class extends DataViewControlController {
32620
33269
  const groupMap = /* @__PURE__ */ new Map();
32621
33270
  items.forEach((item) => {
32622
33271
  const groupVal = item[groupAppDEFieldId];
32623
- if (isNil33(groupVal)) {
33272
+ if (isNil32(groupVal)) {
32624
33273
  return;
32625
33274
  }
32626
33275
  if (!groupMap.has(groupVal)) {
@@ -32947,12 +33596,12 @@ var KanbanController = class extends DataViewControlController {
32947
33596
 
32948
33597
  // src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts
32949
33598
  import {
32950
- RuntimeError as RuntimeError64,
33599
+ RuntimeError as RuntimeError63,
32951
33600
  RuntimeModelError as RuntimeModelError68,
32952
33601
  awaitTimeout as awaitTimeout3,
32953
33602
  recursiveIterate as recursiveIterate12
32954
33603
  } from "@ibiz-template/core";
32955
- import { clone as clone30 } from "ramda";
33604
+ import { clone as clone31 } from "ramda";
32956
33605
 
32957
33606
  // src/controller/control/tree-grid-ex/tree-grid-ex.service.ts
32958
33607
  var TreeGridExService = class extends TreeService {
@@ -33207,11 +33856,11 @@ var TreeGridExController = class extends TreeController {
33207
33856
  return;
33208
33857
  }
33209
33858
  if (nodeData._nodeType !== "DE") {
33210
- 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");
33211
33860
  }
33212
33861
  const rowState = this.state.rows[nodeData._uuid];
33213
33862
  if (!rowState) {
33214
- throw new RuntimeError64("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
33863
+ throw new RuntimeError63("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
33215
33864
  }
33216
33865
  if (!rowState.modified) {
33217
33866
  ibiz.log.debug("\u503C\u6CA1\u6709\u53D1\u751F\u6539\u53D8");
@@ -33225,7 +33874,7 @@ var TreeGridExController = class extends TreeController {
33225
33874
  const { appDataEntityId, updateAppDEActionId } = nodeModel;
33226
33875
  const isCreate = nodeData._deData.srfuf === 0 /* CREATE */;
33227
33876
  if (isCreate) {
33228
- throw new RuntimeError64("\u6682\u4E0D\u652F\u6301\u65B0\u5EFA");
33877
+ throw new RuntimeError63("\u6682\u4E0D\u652F\u6301\u65B0\u5EFA");
33229
33878
  }
33230
33879
  if (!updateAppDEActionId) {
33231
33880
  throw new RuntimeModelError68(nodeModel, "\u6811\u8282\u70B9\u6CA1\u6709\u914D\u7F6E\u66F4\u65B0\u5B9E\u4F53\u884C\u4E3A");
@@ -33385,10 +34034,10 @@ var TreeGridExController = class extends TreeController {
33385
34034
  (item) => item.showRowEdit
33386
34035
  );
33387
34036
  if (editingRow) {
33388
- 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");
33389
34038
  }
33390
34039
  if (row.data._deData.srfuf === 1 /* UPDATE */) {
33391
- row.cacheData = clone30(row.data);
34040
+ row.cacheData = clone31(row.data);
33392
34041
  const defaultVal = this.calcDefaultValue(row.data, false);
33393
34042
  Object.assign(row.data, defaultVal);
33394
34043
  }
@@ -33498,10 +34147,10 @@ var TreeGridExColumnController = class {
33498
34147
  // src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-node-column.controller.ts
33499
34148
  import {
33500
34149
  DataTypes as DataTypes5,
33501
- RuntimeError as RuntimeError65,
34150
+ RuntimeError as RuntimeError64,
33502
34151
  RuntimeModelError as RuntimeModelError69
33503
34152
  } from "@ibiz-template/core";
33504
- import { clone as clone31 } from "ramda";
34153
+ import { clone as clone32 } from "ramda";
33505
34154
  import dayjs7 from "dayjs";
33506
34155
  var TreeGridExNodeColumnController = class {
33507
34156
  /**
@@ -33699,7 +34348,7 @@ var TreeGridExNodeColumnController = class {
33699
34348
  const valueItem = this.nodeColumn.linkValueItem || "srfkey";
33700
34349
  const value = row.data[valueItem];
33701
34350
  if (value == null) {
33702
- 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"));
33703
34352
  }
33704
34353
  const { linkAppViewId } = this.nodeColumn;
33705
34354
  if (!linkAppViewId) {
@@ -33710,7 +34359,7 @@ var TreeGridExNodeColumnController = class {
33710
34359
  srfkey: value,
33711
34360
  ...wfContext
33712
34361
  });
33713
- const tempParams = clone31(this.params);
34362
+ const tempParams = clone32(this.params);
33714
34363
  const { userParam } = this.nodeColumn;
33715
34364
  if (userParam) {
33716
34365
  const { navigateContexts, navigateParams } = parseUserParams(userParam);
@@ -34112,7 +34761,7 @@ var TreeGridService = class extends GridService {
34112
34761
  };
34113
34762
 
34114
34763
  // src/controller/control/medit-view-panel/medit-view-panel.controller.ts
34115
- import { RuntimeError as RuntimeError66 } from "@ibiz-template/core";
34764
+ import { RuntimeError as RuntimeError65 } from "@ibiz-template/core";
34116
34765
  import { createUUID as createUUID14 } from "qx-util";
34117
34766
 
34118
34767
  // src/controller/control/medit-view-panel/medit-view-panel.service.ts
@@ -34328,7 +34977,7 @@ var MEditViewPanelController = class extends MDControlController {
34328
34977
  (item) => item.id === id
34329
34978
  );
34330
34979
  if (panelUiItemIndex < 0) {
34331
- 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");
34332
34981
  }
34333
34982
  const tempUiItem = this.state.panelUiItems[panelUiItemIndex];
34334
34983
  if (tempUiItem.id.startsWith("mockId:")) {
@@ -34838,7 +35487,7 @@ var ReportPanelController = class extends ControlController {
34838
35487
  // src/controller/control/gantt/gantt.controller.ts
34839
35488
  import {
34840
35489
  awaitTimeout as awaitTimeout4,
34841
- RuntimeError as RuntimeError67,
35490
+ RuntimeError as RuntimeError66,
34842
35491
  RuntimeModelError as RuntimeModelError71
34843
35492
  } from "@ibiz-template/core";
34844
35493
 
@@ -35282,11 +35931,11 @@ var GanttController = class extends TreeGridExController {
35282
35931
  */
35283
35932
  async modifyNodeTime(nodeData, { begin, end }) {
35284
35933
  if (nodeData._nodeType !== "DE") {
35285
- 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");
35286
35935
  }
35287
35936
  const rowState = this.getRowState(nodeData._id);
35288
35937
  if (!rowState) {
35289
- throw new RuntimeError67("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
35938
+ throw new RuntimeError66("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
35290
35939
  }
35291
35940
  const { beginDataItemName, endDataItemName } = this.model;
35292
35941
  this.setRowValue(rowState, beginDataItemName, begin);
@@ -35306,11 +35955,11 @@ var GanttController = class extends TreeGridExController {
35306
35955
  return;
35307
35956
  }
35308
35957
  if (nodeData._nodeType !== "DE") {
35309
- 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");
35310
35959
  }
35311
35960
  const rowState = this.state.rows[nodeData._uuid];
35312
35961
  if (!rowState) {
35313
- throw new RuntimeError67("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
35962
+ throw new RuntimeError66("\u884C\u6570\u636E\u4E0D\u5B58\u5728");
35314
35963
  }
35315
35964
  if (!rowState.modified) {
35316
35965
  ibiz.log.debug("\u503C\u6CA1\u6709\u53D1\u751F\u6539\u53D8");
@@ -35358,7 +36007,7 @@ var GanttController = class extends TreeGridExController {
35358
36007
  async remove(args) {
35359
36008
  const { context, params, data } = this.handlerAbilityParams(args);
35360
36009
  if (!(data == null ? void 0 : data.length)) {
35361
- throw new RuntimeError67("\u672A\u9009\u4E2D\u6570\u636E");
36010
+ throw new RuntimeError66("\u672A\u9009\u4E2D\u6570\u636E");
35362
36011
  }
35363
36012
  if ((args == null ? void 0 : args.silent) !== true) {
35364
36013
  const del = await ibiz.confirm.error({
@@ -35467,7 +36116,7 @@ var GanttController = class extends TreeGridExController {
35467
36116
  (item) => item.showRowEdit
35468
36117
  );
35469
36118
  if (editingRow) {
35470
- 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");
35471
36120
  }
35472
36121
  }
35473
36122
  let parentModel;
@@ -35557,16 +36206,16 @@ var HubController = class {
35557
36206
  };
35558
36207
 
35559
36208
  // src/controller/notification/notice.controller.ts
35560
- import { QXEvent as QXEvent9 } from "qx-util";
36209
+ import { QXEvent as QXEvent10 } from "qx-util";
35561
36210
 
35562
36211
  // src/controller/notification/async-action.controller.ts
35563
- import { QXEvent as QXEvent7 } from "qx-util";
35564
- import { clone as clone32 } from "ramda";
35565
- 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";
35566
36215
  import dayjs8 from "dayjs";
35567
36216
  var AsyncActionController = class {
35568
36217
  constructor() {
35569
- this.evt = new QXEvent7();
36218
+ this.evt = new QXEvent8();
35570
36219
  this.total = 0;
35571
36220
  this.actions = [];
35572
36221
  /**
@@ -35637,14 +36286,14 @@ var AsyncActionController = class {
35637
36286
  data[key] = dayjs8(data[key]).format("YYYY-MM-DD HH:mm:ss");
35638
36287
  }
35639
36288
  });
35640
- if (!isNil34(data.actionresult)) {
36289
+ if (!isNil33(data.actionresult)) {
35641
36290
  try {
35642
36291
  const json = JSON.parse(data.actionresult);
35643
36292
  data.actionresult = json;
35644
36293
  } catch (error) {
35645
36294
  }
35646
36295
  }
35647
- if (!isNil34(data.completionrate)) {
36296
+ if (!isNil33(data.completionrate)) {
35648
36297
  const num = Number(data.completionrate);
35649
36298
  if (Number.isNaN(num)) {
35650
36299
  data.completionrate = void 0;
@@ -35669,7 +36318,7 @@ var AsyncActionController = class {
35669
36318
  } else {
35670
36319
  this.noticeResult(action);
35671
36320
  }
35672
- this.evt.emit("add", clone32(action));
36321
+ this.evt.emit("add", clone33(action));
35673
36322
  this.evt.emit("dataChange");
35674
36323
  }
35675
36324
  /**
@@ -35691,7 +36340,7 @@ var AsyncActionController = class {
35691
36340
  }
35692
36341
  this.noticeResult(action);
35693
36342
  }
35694
- this.evt.emit("change", clone32(action));
36343
+ this.evt.emit("change", clone33(action));
35695
36344
  this.evt.emit("dataChange");
35696
36345
  }
35697
36346
  noticeResult(action) {
@@ -35700,7 +36349,7 @@ var AsyncActionController = class {
35700
36349
  };
35701
36350
 
35702
36351
  // src/controller/notification/internal-message.controller.ts
35703
- import { QXEvent as QXEvent8 } from "qx-util";
36352
+ import { QXEvent as QXEvent9 } from "qx-util";
35704
36353
  function isHTML(str) {
35705
36354
  if (str === "")
35706
36355
  return false;
@@ -35709,7 +36358,7 @@ function isHTML(str) {
35709
36358
  }
35710
36359
  var InternalMessageController = class {
35711
36360
  constructor() {
35712
- this.evt = new QXEvent8();
36361
+ this.evt = new QXEvent9();
35713
36362
  this.total = 0;
35714
36363
  this.unreadCount = 0;
35715
36364
  /**
@@ -35869,7 +36518,7 @@ var InternalMessageController = class {
35869
36518
  // src/controller/notification/notice.controller.ts
35870
36519
  var NoticeController = class {
35871
36520
  constructor() {
35872
- this.evt = new QXEvent9();
36521
+ this.evt = new QXEvent10();
35873
36522
  this.total = 0;
35874
36523
  this.asyncAction = new AsyncActionController();
35875
36524
  this.internalMessage = new InternalMessageController();
@@ -36087,7 +36736,7 @@ var AppHub = class {
36087
36736
  this.registerAppView(appView);
36088
36737
  return appView;
36089
36738
  }
36090
- throw new RuntimeError68("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
36739
+ throw new RuntimeError67("\u89C6\u56FE[".concat(id, "]\u4E0D\u5B58\u5728"));
36091
36740
  }
36092
36741
  /**
36093
36742
  * 根据视图模型路径,加参数重新计算视图模型
@@ -36108,7 +36757,7 @@ var AppHub = class {
36108
36757
  );
36109
36758
  return model;
36110
36759
  }
36111
- throw new RuntimeError68("\u89C6\u56FE[".concat(modelPath, "]\u4E0D\u5B58\u5728"));
36760
+ throw new RuntimeError67("\u89C6\u56FE[".concat(modelPath, "]\u4E0D\u5B58\u5728"));
36112
36761
  }
36113
36762
  /**
36114
36763
  * 根据应用实体代码名称查找应用视图
@@ -36139,7 +36788,7 @@ var AppHub = class {
36139
36788
  this.registerAppDataEntity(entity, appId2);
36140
36789
  return entity;
36141
36790
  }
36142
- 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, "]"));
36143
36792
  }
36144
36793
  /**
36145
36794
  * 新建 hub 应用
@@ -36154,7 +36803,7 @@ var AppHub = class {
36154
36803
  return this.appMap.get(id);
36155
36804
  }
36156
36805
  if (!this.modelLoaderProvider) {
36157
- 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");
36158
36807
  }
36159
36808
  const appModel = await this.modelLoaderProvider.getApp(id);
36160
36809
  const app = new Application(appModel);
@@ -36233,6 +36882,17 @@ var AppHub = class {
36233
36882
  this.appMap.clear();
36234
36883
  this.configCache = void 0;
36235
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
+ }
36236
36896
  };
36237
36897
 
36238
36898
  // src/engine/engine-factory.ts
@@ -36285,7 +36945,7 @@ var EngineFactory = class {
36285
36945
  };
36286
36946
 
36287
36947
  // src/engine/view-base.engine.ts
36288
- import { RuntimeError as RuntimeError69, findRecursiveChild as findRecursiveChild3 } from "@ibiz-template/core";
36948
+ import { RuntimeError as RuntimeError68, findRecursiveChild as findRecursiveChild3 } from "@ibiz-template/core";
36289
36949
  var ViewEngineBase = class {
36290
36950
  /**
36291
36951
  * 构造函数在视图控制器的构造函数逻辑内部执行
@@ -36558,7 +37218,7 @@ var ViewEngineBase = class {
36558
37218
  const { appDataEntityId } = this.view.model;
36559
37219
  const { evt, context, params } = this.view;
36560
37220
  if (!appDataEntityId) {
36561
- 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");
36562
37222
  }
36563
37223
  const app = ibiz.hub.getApp(context.srfappid);
36564
37224
  const res = await app.deService.exec(
@@ -36580,7 +37240,7 @@ var ViewEngineBase = class {
36580
37240
 
36581
37241
  // src/engine/md-view.engine.ts
36582
37242
  import { RuntimeModelError as RuntimeModelError72 } from "@ibiz-template/core";
36583
- import { clone as clone33 } from "ramda";
37243
+ import { clone as clone34 } from "ramda";
36584
37244
  var MDViewEngine = class extends ViewEngineBase {
36585
37245
  /**
36586
37246
  * 多数据部件名称
@@ -36861,7 +37521,7 @@ var MDViewEngine = class extends ViewEngineBase {
36861
37521
  if (!openAppViewLogic) {
36862
37522
  throw new RuntimeModelError72(this.view.model, "\u7F3A\u5C11newdata\u7684\u89C6\u56FE\u903B\u8F91");
36863
37523
  }
36864
- const params = clone33(this.view.params);
37524
+ const params = clone34(this.view.params);
36865
37525
  if (copyMode) {
36866
37526
  params.srfcopymode = copyMode;
36867
37527
  }
@@ -37037,7 +37697,7 @@ var MDViewEngine = class extends ViewEngineBase {
37037
37697
  };
37038
37698
 
37039
37699
  // src/global/global-util/global-util.ts
37040
- import { RuntimeError as RuntimeError70 } from "@ibiz-template/core";
37700
+ import { RuntimeError as RuntimeError69 } from "@ibiz-template/core";
37041
37701
  var sourceTitle = document.title;
37042
37702
  var GlobalUtil = class {
37043
37703
  constructor() {
@@ -37170,7 +37830,7 @@ var GlobalUtil = class {
37170
37830
  * @return {*} {IParams}
37171
37831
  */
37172
37832
  getGlobalParam() {
37173
- throw new RuntimeError70("\u83B7\u53D6\u5E94\u7528\u5168\u5C40\u53D8\u91CF\u6CA1\u6709\u5B9E\u73B0");
37833
+ throw new RuntimeError69("\u83B7\u53D6\u5E94\u7528\u5168\u5C40\u53D8\u91CF\u6CA1\u6709\u5B9E\u73B0");
37174
37834
  }
37175
37835
  /**
37176
37836
  * 获取视图路由参数变量,数组类型,基于路由解析出来的,每一个对象里面都有context和params
@@ -37179,12 +37839,12 @@ var GlobalUtil = class {
37179
37839
  * @return {*} {IParams}
37180
37840
  */
37181
37841
  getRouterParams() {
37182
- throw new RuntimeError70("\u83B7\u53D6\u89C6\u56FE\u8DEF\u7531\u53C2\u6570\u53D8\u91CF\u6CA1\u6709\u5B9E\u73B0");
37842
+ throw new RuntimeError69("\u83B7\u53D6\u89C6\u56FE\u8DEF\u7531\u53C2\u6570\u53D8\u91CF\u6CA1\u6709\u5B9E\u73B0");
37183
37843
  }
37184
37844
  };
37185
37845
 
37186
37846
  // src/logic-scheduler/executor/logic-executor.ts
37187
- import { RuntimeError as RuntimeError71 } from "@ibiz-template/core";
37847
+ import { RuntimeError as RuntimeError70 } from "@ibiz-template/core";
37188
37848
  var LogicExecutor = class {
37189
37849
  /**
37190
37850
  * @author lxm
@@ -37205,7 +37865,7 @@ var LogicExecutor = class {
37205
37865
  */
37206
37866
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
37207
37867
  execute(_executeParams) {
37208
- throw new RuntimeError71("Method not implemented.");
37868
+ throw new RuntimeError70("Method not implemented.");
37209
37869
  }
37210
37870
  /**
37211
37871
  * 销毁方法
@@ -37642,7 +38302,7 @@ var LogicSchedulerCenter = class {
37642
38302
  };
37643
38303
 
37644
38304
  // src/logic-scheduler/trigger/logic-trigger.ts
37645
- import { RuntimeError as RuntimeError72 } from "@ibiz-template/core";
38305
+ import { RuntimeError as RuntimeError71 } from "@ibiz-template/core";
37646
38306
  var LogicTrigger = class {
37647
38307
  /**
37648
38308
  * @author lxm
@@ -37702,7 +38362,7 @@ var LogicTrigger = class {
37702
38362
  if (this.executor) {
37703
38363
  return this.executor.execute(executeParams);
37704
38364
  }
37705
- throw new RuntimeError72("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
38365
+ throw new RuntimeError71("".concat(this.logic.id, "\u6CA1\u6709\u7ED1\u5B9Aexecutor"));
37706
38366
  }
37707
38367
  /**
37708
38368
  * 销毁方法
@@ -37719,12 +38379,12 @@ var CustomTrigger = class extends LogicTrigger {
37719
38379
  };
37720
38380
 
37721
38381
  // src/logic-scheduler/trigger/item-dyna-logic-trigger.ts
37722
- import { RuntimeError as RuntimeError73 } from "@ibiz-template/core";
38382
+ import { RuntimeError as RuntimeError72 } from "@ibiz-template/core";
37723
38383
  var ItemDynaLogicTrigger = class extends LogicTrigger {
37724
38384
  bindExecutor(executor) {
37725
38385
  super.bindExecutor(executor);
37726
38386
  if (this.executor.type !== "SCRIPT") {
37727
- throw new RuntimeError73(
38387
+ throw new RuntimeError72(
37728
38388
  "\u9884\u5B9A\u4E49\u903B\u8F91\u7C7B\u578B".concat(this.type, "\u7684\u89E6\u53D1\u5668\u7C7B\u578B\u53EA\u80FD\u662F\u811A\u672C")
37729
38389
  );
37730
38390
  }
@@ -37761,7 +38421,7 @@ var ItemDynaLogicTrigger = class extends LogicTrigger {
37761
38421
  };
37762
38422
 
37763
38423
  // src/logic-scheduler/trigger/timer-trigger.ts
37764
- import { RuntimeError as RuntimeError74, RuntimeModelError as RuntimeModelError74 } from "@ibiz-template/core";
38424
+ import { RuntimeError as RuntimeError73, RuntimeModelError as RuntimeModelError74 } from "@ibiz-template/core";
37765
38425
  var TimerTrigger = class extends LogicTrigger {
37766
38426
  constructor() {
37767
38427
  super(...arguments);
@@ -37773,7 +38433,7 @@ var TimerTrigger = class extends LogicTrigger {
37773
38433
  }
37774
38434
  this.timer = setInterval(() => {
37775
38435
  if (!this.scheduler.defaultParamsCb) {
37776
- throw new RuntimeError74("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
38436
+ throw new RuntimeError73("\u5B9A\u65F6\u5668\u7F3A\u5C11\u9ED8\u8BA4\u53C2\u6570\u56DE\u8C03");
37777
38437
  }
37778
38438
  const params = this.scheduler.defaultParamsCb();
37779
38439
  this.executor.execute(params);
@@ -37790,10 +38450,10 @@ var TimerTrigger = class extends LogicTrigger {
37790
38450
  // src/logic-scheduler/executor/app-ui-logic-executor.ts
37791
38451
  import {
37792
38452
  ModelError as ModelError34,
37793
- RuntimeError as RuntimeError75,
38453
+ RuntimeError as RuntimeError74,
37794
38454
  RuntimeModelError as RuntimeModelError75
37795
38455
  } from "@ibiz-template/core";
37796
- import { notNilEmpty as notNilEmpty9 } from "qx-util";
38456
+ import { notNilEmpty as notNilEmpty10 } from "qx-util";
37797
38457
  var AppUILogicExecutor = class extends LogicExecutor {
37798
38458
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
37799
38459
  async execute(executeParams) {
@@ -37828,7 +38488,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
37828
38488
  const { context, params, ...rest } = parameters;
37829
38489
  const { data } = parameters;
37830
38490
  if (!(data == null ? void 0 : data[0])) {
37831
- throw new RuntimeError75("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
38491
+ throw new RuntimeError74("opendata\u6CA1\u6709\u53EF\u64CD\u4F5C\u6570\u636E\uFF01");
37832
38492
  }
37833
38493
  const openViewRefs = appUILogic.openDataAppViews;
37834
38494
  let openViewRef;
@@ -37857,7 +38517,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
37857
38517
  );
37858
38518
  let tempParams = {};
37859
38519
  const navParams = openViewRef.navigateParams;
37860
- if (notNilEmpty9(navParams)) {
38520
+ if (notNilEmpty10(navParams)) {
37861
38521
  tempParams = convertNavData(navParams, data[0], params, context);
37862
38522
  }
37863
38523
  return ibiz.commands.execute(
@@ -37888,7 +38548,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
37888
38548
  const openViewRefs = appUILogic.openDataAppViews;
37889
38549
  const findView = openViewRefs == null ? void 0 : openViewRefs.find((item) => item.refMode === formTypeValue);
37890
38550
  if (!findView) {
37891
- throw new RuntimeError75(
38551
+ throw new RuntimeError74(
37892
38552
  "\u6CA1\u6709\u627E\u5230\u4E0E\u8868\u5355\u7C7B\u578B".concat(formTypeValue, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
37893
38553
  );
37894
38554
  }
@@ -37945,12 +38605,12 @@ var AppUILogicExecutor = class extends LogicExecutor {
37945
38605
  let tempParams = {};
37946
38606
  const _data = (data == null ? void 0 : data[0]) || {};
37947
38607
  const navContexts = newViewRef.navigateContexts;
37948
- if (notNilEmpty9(navContexts)) {
38608
+ if (notNilEmpty10(navContexts)) {
37949
38609
  tempContext = convertNavData(navContexts, _data, params, context);
37950
38610
  }
37951
38611
  tempContext = Object.assign(context, tempContext);
37952
38612
  const navParams = newViewRef.navigateParams;
37953
- if (notNilEmpty9(navParams)) {
38613
+ if (notNilEmpty10(navParams)) {
37954
38614
  tempParams = convertNavData(navParams, _data, params, context);
37955
38615
  }
37956
38616
  if (params.srfcopymode) {
@@ -38013,7 +38673,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
38013
38673
  }
38014
38674
  const selectData = (_a = result.data) == null ? void 0 : _a[0];
38015
38675
  if (!selectData) {
38016
- throw new RuntimeError75("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
38676
+ throw new RuntimeError74("\u8BF7\u9009\u4E2D\u4E00\u6761\u6570\u636E");
38017
38677
  }
38018
38678
  const indexType = selectData.srfkey;
38019
38679
  const findView = newDataAppViews == null ? void 0 : newDataAppViews.find(
@@ -38023,7 +38683,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
38023
38683
  }
38024
38684
  );
38025
38685
  if (!findView) {
38026
- throw new RuntimeError75(
38686
+ throw new RuntimeError74(
38027
38687
  "\u6CA1\u6709\u627E\u5230\u4E0E\u7D22\u5F15\u7C7B\u578B".concat(indexType, "\u76F8\u5173\u7684\u5B9E\u4F53\u7684\u7F16\u8F91\u89C6\u56FE")
38028
38688
  );
38029
38689
  }
@@ -38060,7 +38720,7 @@ var AppUILogicExecutor = class extends LogicExecutor {
38060
38720
  }
38061
38721
  });
38062
38722
  if (pickParentFieldName === void 0) {
38063
- throw new RuntimeError75(
38723
+ throw new RuntimeError74(
38064
38724
  "\u6CA1\u6709\u627E\u5230".concat(pickParentDeName, "\u5728\u5F53\u524D\u5B9E\u4F53\u7684\u5916\u952E\u5C5E\u6027")
38065
38725
  );
38066
38726
  }
@@ -38450,6 +39110,7 @@ export {
38450
39110
  HubController,
38451
39111
  INTERNAL_MESSAGE_PROVIDER_PREFIX,
38452
39112
  InternalMessageService,
39113
+ ItemsValueOPs,
38453
39114
  KanbanController,
38454
39115
  KanbanService,
38455
39116
  LayoutPanelUtil,
@@ -38508,6 +39169,8 @@ export {
38508
39169
  SearchBarController,
38509
39170
  SearchBarFilterController,
38510
39171
  SearchBarFilterItemsController,
39172
+ SearchBarFilterSimpleItemsController,
39173
+ SearchCondEx2filterNode,
38511
39174
  SearchFilter,
38512
39175
  SearchFormController,
38513
39176
  SearchFormService,
@@ -38575,6 +39238,7 @@ export {
38575
39238
  calcMainStateOPPrivsStrs,
38576
39239
  calcNavParams,
38577
39240
  calcResPath,
39241
+ calcSearchCondExs,
38578
39242
  calcSearchConds,
38579
39243
  compare,
38580
39244
  compareNumber,
@@ -38590,6 +39254,8 @@ export {
38590
39254
  exportData,
38591
39255
  fieldValueToBoolean,
38592
39256
  filterFieldLogics,
39257
+ filterNode2SearchCond,
39258
+ filterNode2SearchCondEx,
38593
39259
  filterValueRules,
38594
39260
  findAppDEMethod,
38595
39261
  findChildFormDetails,
@@ -38597,7 +39263,6 @@ export {
38597
39263
  findEditItem,
38598
39264
  findFieldById,
38599
39265
  findModelChild,
38600
- formatFilters,
38601
39266
  formatMultiData,
38602
39267
  generateEditorRules,
38603
39268
  generateRules,
@@ -38650,10 +39315,12 @@ export {
38650
39315
  installCommand,
38651
39316
  isDataContainer,
38652
39317
  isFormDataContainer,
39318
+ isHiddenFilter,
39319
+ isSimpleItems,
38653
39320
  isValueChange,
38654
39321
  matchMainState,
38655
39322
  openRedirectView,
38656
- parseFilters,
39323
+ parseSubFieldInfo,
38657
39324
  parseUserParams,
38658
39325
  parseViewProtocol,
38659
39326
  presetAppCounterProvider,
@@ -38679,6 +39346,7 @@ export {
38679
39346
  strContain,
38680
39347
  testCond,
38681
39348
  toLocalOpenWFRedirectView,
39349
+ validateFilterNodes,
38682
39350
  verifyDeRules,
38683
39351
  verifyFormGroupLogic,
38684
39352
  verifyPanelGroupLogic