@ibiz-template/runtime 0.7.41-alpha.7 → 0.7.41-alpha.9

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 (74) hide show
  1. package/dist/index.esm.js +535 -356
  2. package/dist/index.system.min.js +1 -1
  3. package/out/controller/common/editor/code-list-editor.controller.d.ts.map +1 -1
  4. package/out/controller/common/editor/code-list-editor.controller.js +6 -0
  5. package/out/controller/common/editor/editor.controller.d.ts.map +1 -1
  6. package/out/controller/common/editor/editor.controller.js +3 -0
  7. package/out/controller/control/data-view/data-view.controller.d.ts +9 -11
  8. package/out/controller/control/data-view/data-view.controller.d.ts.map +1 -1
  9. package/out/controller/control/data-view/data-view.controller.js +30 -37
  10. package/out/controller/control/form/edit-form/edit-form.service.d.ts.map +1 -1
  11. package/out/controller/control/form/edit-form/edit-form.service.js +5 -1
  12. package/out/controller/control/kanban/kanban.controller.d.ts +31 -12
  13. package/out/controller/control/kanban/kanban.controller.d.ts.map +1 -1
  14. package/out/controller/control/kanban/kanban.controller.js +146 -50
  15. package/out/controller/ctx/ctx.js +2 -2
  16. package/out/engine/md-view.engine.d.ts +2 -2
  17. package/out/engine/md-view.engine.d.ts.map +1 -1
  18. package/out/engine/md-view.engine.js +2 -1
  19. package/out/engine/view-base.engine.d.ts +2 -2
  20. package/out/engine/view-base.engine.d.ts.map +1 -1
  21. package/out/interface/api/call/i-api-index-view.call.d.ts +20 -0
  22. package/out/interface/api/call/i-api-index-view.call.d.ts.map +1 -0
  23. package/out/interface/api/call/i-api-index-view.call.js +1 -0
  24. package/out/interface/api/call/i-api-md-custom-view.call.d.ts +79 -0
  25. package/out/interface/api/call/i-api-md-custom-view.call.d.ts.map +1 -0
  26. package/out/interface/api/call/i-api-md-custom-view.call.js +1 -0
  27. package/out/interface/api/call/i-api-opt-view.call.d.ts +10 -0
  28. package/out/interface/api/call/i-api-opt-view.call.d.ts.map +1 -1
  29. package/out/interface/api/call/i-api-portal-view.call.d.ts +20 -0
  30. package/out/interface/api/call/i-api-portal-view.call.d.ts.map +1 -0
  31. package/out/interface/api/call/i-api-portal-view.call.js +1 -0
  32. package/out/interface/api/call/index.d.ts +3 -0
  33. package/out/interface/api/call/index.d.ts.map +1 -1
  34. package/out/interface/api/controller/control/i-api-edit-form.controller.d.ts +1 -0
  35. package/out/interface/api/controller/control/i-api-edit-form.controller.d.ts.map +1 -1
  36. package/out/interface/api/controller/control/i-api-kanban.controller.d.ts +2 -0
  37. package/out/interface/api/controller/control/i-api-kanban.controller.d.ts.map +1 -1
  38. package/out/interface/api/util/i-api-file-util.d.ts +3 -3
  39. package/out/interface/api/util/i-api-file-util.d.ts.map +1 -1
  40. package/out/interface/common/i-modal/i-modal.d.ts +3 -0
  41. package/out/interface/common/i-modal/i-modal.d.ts.map +1 -1
  42. package/out/interface/controller/controller/common/i-drag-change-info.d.ts +22 -14
  43. package/out/interface/controller/controller/common/i-drag-change-info.d.ts.map +1 -1
  44. package/out/interface/controller/state/control/i-data-view-control.state.d.ts +8 -0
  45. package/out/interface/controller/state/control/i-data-view-control.state.d.ts.map +1 -1
  46. package/out/interface/controller/state/control/i-kanban.state.d.ts +43 -8
  47. package/out/interface/controller/state/control/i-kanban.state.d.ts.map +1 -1
  48. package/out/interface/util/i-app-util/i-app-util.d.ts +6 -0
  49. package/out/interface/util/i-app-util/i-app-util.d.ts.map +1 -1
  50. package/out/locale/en/index.d.ts +1 -0
  51. package/out/locale/en/index.d.ts.map +1 -1
  52. package/out/locale/en/index.js +1 -0
  53. package/out/locale/zh-CN/index.d.ts +1 -0
  54. package/out/locale/zh-CN/index.d.ts.map +1 -1
  55. package/out/locale/zh-CN/index.js +1 -0
  56. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  57. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +2 -1
  58. package/out/service/utils/util/util.d.ts +7 -0
  59. package/out/service/utils/util/util.d.ts.map +1 -1
  60. package/out/service/utils/util/util.js +26 -0
  61. package/out/ui-action/provider/custom-ui-action-provider.js +1 -1
  62. package/out/ui-action/provider/front-ui-action-provider.d.ts.map +1 -1
  63. package/out/ui-action/provider/front-ui-action-provider.js +69 -43
  64. package/out/ui-action/provider/ui-action-provider-base.d.ts +1 -0
  65. package/out/ui-action/provider/ui-action-provider-base.d.ts.map +1 -1
  66. package/out/ui-action/provider/ui-action-provider-base.js +20 -2
  67. package/out/ui-action/uiaction-util.js +2 -2
  68. package/out/ui-logic/ui-logic.d.ts.map +1 -1
  69. package/out/ui-logic/ui-logic.js +5 -1
  70. package/out/utils/modal/modal.d.ts +3 -0
  71. package/out/utils/modal/modal.d.ts.map +1 -1
  72. package/out/utils/modal/modal.js +7 -0
  73. package/out/utils/open-redirect-view/open-redirect-view.js +3 -3
  74. package/package.json +5 -5
package/dist/index.esm.js CHANGED
@@ -16623,25 +16623,25 @@ var require_html2canvas = __commonJS({
16623
16623
  if (isStyleElement(node)) {
16624
16624
  return this.createStyleClone(node);
16625
16625
  }
16626
- var clone54 = node.cloneNode(false);
16627
- if (isImageElement(clone54)) {
16626
+ var clone55 = node.cloneNode(false);
16627
+ if (isImageElement(clone55)) {
16628
16628
  if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {
16629
- clone54.src = node.currentSrc;
16630
- clone54.srcset = "";
16629
+ clone55.src = node.currentSrc;
16630
+ clone55.srcset = "";
16631
16631
  }
16632
- if (clone54.loading === "lazy") {
16633
- clone54.loading = "eager";
16632
+ if (clone55.loading === "lazy") {
16633
+ clone55.loading = "eager";
16634
16634
  }
16635
16635
  }
16636
- if (isCustomElement(clone54)) {
16637
- return this.createCustomElementClone(clone54);
16636
+ if (isCustomElement(clone55)) {
16637
+ return this.createCustomElementClone(clone55);
16638
16638
  }
16639
- return clone54;
16639
+ return clone55;
16640
16640
  };
16641
16641
  DocumentCloner2.prototype.createCustomElementClone = function(node) {
16642
- var clone54 = document.createElement("html2canvascustomelement");
16643
- copyCSSStyles(node.style, clone54);
16644
- return clone54;
16642
+ var clone55 = document.createElement("html2canvascustomelement");
16643
+ copyCSSStyles(node.style, clone55);
16644
+ return clone55;
16645
16645
  };
16646
16646
  DocumentCloner2.prototype.createStyleClone = function(node) {
16647
16647
  try {
@@ -16723,25 +16723,25 @@ var require_html2canvas = __commonJS({
16723
16723
  blankCanvas.height = video.offsetHeight;
16724
16724
  return blankCanvas;
16725
16725
  };
16726
- DocumentCloner2.prototype.appendChildNode = function(clone54, child, copyStyles) {
16726
+ DocumentCloner2.prototype.appendChildNode = function(clone55, child, copyStyles) {
16727
16727
  if (!isElementNode(child) || !isScriptElement(child) && !child.hasAttribute(IGNORE_ATTRIBUTE) && (typeof this.options.ignoreElements !== "function" || !this.options.ignoreElements(child))) {
16728
16728
  if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {
16729
- clone54.appendChild(this.cloneNode(child, copyStyles));
16729
+ clone55.appendChild(this.cloneNode(child, copyStyles));
16730
16730
  }
16731
16731
  }
16732
16732
  };
16733
- DocumentCloner2.prototype.cloneChildNodes = function(node, clone54, copyStyles) {
16733
+ DocumentCloner2.prototype.cloneChildNodes = function(node, clone55, copyStyles) {
16734
16734
  var _this = this;
16735
16735
  for (var child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild; child; child = child.nextSibling) {
16736
16736
  if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === "function") {
16737
16737
  var assignedNodes = child.assignedNodes();
16738
16738
  if (assignedNodes.length) {
16739
16739
  assignedNodes.forEach(function(assignedNode) {
16740
- return _this.appendChildNode(clone54, assignedNode, copyStyles);
16740
+ return _this.appendChildNode(clone55, assignedNode, copyStyles);
16741
16741
  });
16742
16742
  }
16743
16743
  } else {
16744
- this.appendChildNode(clone54, child, copyStyles);
16744
+ this.appendChildNode(clone55, child, copyStyles);
16745
16745
  }
16746
16746
  }
16747
16747
  };
@@ -16754,53 +16754,53 @@ var require_html2canvas = __commonJS({
16754
16754
  }
16755
16755
  var window2 = node.ownerDocument.defaultView;
16756
16756
  if (window2 && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {
16757
- var clone54 = this.createElementClone(node);
16758
- clone54.style.transitionProperty = "none";
16757
+ var clone55 = this.createElementClone(node);
16758
+ clone55.style.transitionProperty = "none";
16759
16759
  var style = window2.getComputedStyle(node);
16760
16760
  var styleBefore = window2.getComputedStyle(node, ":before");
16761
16761
  var styleAfter = window2.getComputedStyle(node, ":after");
16762
- if (this.referenceElement === node && isHTMLElementNode(clone54)) {
16763
- this.clonedReferenceElement = clone54;
16762
+ if (this.referenceElement === node && isHTMLElementNode(clone55)) {
16763
+ this.clonedReferenceElement = clone55;
16764
16764
  }
16765
- if (isBodyElement(clone54)) {
16766
- createPseudoHideStyles(clone54);
16765
+ if (isBodyElement(clone55)) {
16766
+ createPseudoHideStyles(clone55);
16767
16767
  }
16768
16768
  var counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));
16769
- var before = this.resolvePseudoContent(node, clone54, styleBefore, PseudoElementType.BEFORE);
16769
+ var before = this.resolvePseudoContent(node, clone55, styleBefore, PseudoElementType.BEFORE);
16770
16770
  if (isCustomElement(node)) {
16771
16771
  copyStyles = true;
16772
16772
  }
16773
16773
  if (!isVideoElement(node)) {
16774
- this.cloneChildNodes(node, clone54, copyStyles);
16774
+ this.cloneChildNodes(node, clone55, copyStyles);
16775
16775
  }
16776
16776
  if (before) {
16777
- clone54.insertBefore(before, clone54.firstChild);
16777
+ clone55.insertBefore(before, clone55.firstChild);
16778
16778
  }
16779
- var after = this.resolvePseudoContent(node, clone54, styleAfter, PseudoElementType.AFTER);
16779
+ var after = this.resolvePseudoContent(node, clone55, styleAfter, PseudoElementType.AFTER);
16780
16780
  if (after) {
16781
- clone54.appendChild(after);
16781
+ clone55.appendChild(after);
16782
16782
  }
16783
16783
  this.counters.pop(counters);
16784
16784
  if (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node) || copyStyles) {
16785
- copyCSSStyles(style, clone54);
16785
+ copyCSSStyles(style, clone55);
16786
16786
  }
16787
16787
  if (node.scrollTop !== 0 || node.scrollLeft !== 0) {
16788
- this.scrolledElements.push([clone54, node.scrollLeft, node.scrollTop]);
16788
+ this.scrolledElements.push([clone55, node.scrollLeft, node.scrollTop]);
16789
16789
  }
16790
- if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone54) || isSelectElement(clone54))) {
16791
- clone54.value = node.value;
16790
+ if ((isTextareaElement(node) || isSelectElement(node)) && (isTextareaElement(clone55) || isSelectElement(clone55))) {
16791
+ clone55.value = node.value;
16792
16792
  }
16793
- return clone54;
16793
+ return clone55;
16794
16794
  }
16795
16795
  return node.cloneNode(false);
16796
16796
  };
16797
- DocumentCloner2.prototype.resolvePseudoContent = function(node, clone54, style, pseudoElt) {
16797
+ DocumentCloner2.prototype.resolvePseudoContent = function(node, clone55, style, pseudoElt) {
16798
16798
  var _this = this;
16799
16799
  if (!style) {
16800
16800
  return;
16801
16801
  }
16802
16802
  var value = style.content;
16803
- var document2 = clone54.ownerDocument;
16803
+ var document2 = clone55.ownerDocument;
16804
16804
  if (!document2 || !value || value === "none" || value === "-moz-alt-content" || style.display === "none") {
16805
16805
  return;
16806
16806
  }
@@ -16857,10 +16857,10 @@ var require_html2canvas = __commonJS({
16857
16857
  });
16858
16858
  anonymousReplacedElement.className = PSEUDO_HIDE_ELEMENT_CLASS_BEFORE + " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
16859
16859
  var newClassName = pseudoElt === PseudoElementType.BEFORE ? " " + PSEUDO_HIDE_ELEMENT_CLASS_BEFORE : " " + PSEUDO_HIDE_ELEMENT_CLASS_AFTER;
16860
- if (isSVGElementNode(clone54)) {
16861
- clone54.className.baseValue += newClassName;
16860
+ if (isSVGElementNode(clone55)) {
16861
+ clone55.className.baseValue += newClassName;
16862
16862
  } else {
16863
- clone54.className += newClassName;
16863
+ clone55.className += newClassName;
16864
16864
  }
16865
16865
  return anonymousReplacedElement;
16866
16866
  };
@@ -21270,7 +21270,7 @@ async function calcDERdTag(entity, rdView, params, data) {
21270
21270
  const typeFieldId = rdView.typeAppDEFieldId;
21271
21271
  if (typeFieldId) {
21272
21272
  const { codeName } = findFieldById(entity, typeFieldId);
21273
- const value = data[codeName.toLowerCase()];
21273
+ const value = "".concat(data[codeName.toLowerCase()]);
21274
21274
  if (notNilEmpty3(value)) {
21275
21275
  if (value.startsWith("view://")) {
21276
21276
  return value;
@@ -21296,12 +21296,12 @@ async function calcDERdTag(entity, rdView, params, data) {
21296
21296
  let typeValue = "";
21297
21297
  if (entity.indexTypeAppDEFieldId) {
21298
21298
  const { codeName } = findFieldById(entity, entity.indexTypeAppDEFieldId);
21299
- typeValue = data[codeName.toLowerCase()];
21299
+ typeValue = "".concat(data[codeName.toLowerCase()]);
21300
21300
  }
21301
21301
  if (isNilOrEmpty2(typeValue)) {
21302
21302
  if (entity.formTypeAppDEFieldId) {
21303
21303
  const { codeName } = findFieldById(entity, entity.formTypeAppDEFieldId);
21304
- typeValue = data[codeName.toLowerCase()];
21304
+ typeValue = "".concat(data[codeName.toLowerCase()]);
21305
21305
  }
21306
21306
  }
21307
21307
  if (notNilEmpty3(typeValue)) {
@@ -22232,6 +22232,7 @@ var Modal = class {
22232
22232
  this.viewUsage = 4;
22233
22233
  this.ignoreDismissCheck = false;
22234
22234
  this.hooks = {
22235
+ preDismiss: new AsyncSeriesHook(),
22235
22236
  shouldDismiss: new AsyncSeriesHook(),
22236
22237
  beforeDismiss: new AsyncSeriesHook()
22237
22238
  };
@@ -22270,6 +22271,10 @@ var Modal = class {
22270
22271
  }
22271
22272
  async dismiss(data = { ok: false, data: [] }) {
22272
22273
  const context = {};
22274
+ await this.hooks.preDismiss.call(context);
22275
+ if (context.allowNext === false) {
22276
+ return false;
22277
+ }
22273
22278
  if (this.ignoreDismissCheck !== true) {
22274
22279
  await this.hooks.shouldDismiss.call(context);
22275
22280
  }
@@ -22289,6 +22294,7 @@ var Modal = class {
22289
22294
  * @protected
22290
22295
  */
22291
22296
  destroy() {
22297
+ this.hooks.preDismiss.clear();
22292
22298
  this.hooks.shouldDismiss.clear();
22293
22299
  this.hooks.beforeDismiss.clear();
22294
22300
  }
@@ -22453,7 +22459,7 @@ var TextUtil = class {
22453
22459
  };
22454
22460
 
22455
22461
  // src/utils/theme-util/theme-util.ts
22456
- import { clone as clone48 } from "ramda";
22462
+ import { clone as clone49 } from "ramda";
22457
22463
 
22458
22464
  // src/utils/theme-util/custom-theme-util.ts
22459
22465
  import { notNilEmpty as notNilEmpty7 } from "qx-util";
@@ -25622,6 +25628,80 @@ var CodeListDataItem = class {
25622
25628
  }
25623
25629
  };
25624
25630
 
25631
+ // src/service/utils/util/util.ts
25632
+ function fieldValueToBoolean(value) {
25633
+ if (typeof value === "boolean") {
25634
+ return value;
25635
+ }
25636
+ if (typeof value === "number") {
25637
+ return value > 0;
25638
+ }
25639
+ if (typeof value === "string") {
25640
+ switch (value) {
25641
+ case "true":
25642
+ return true;
25643
+ case "false":
25644
+ return false;
25645
+ default: {
25646
+ const num = Number(value);
25647
+ return Number.isNaN(num) ? !!value : num > 0;
25648
+ }
25649
+ }
25650
+ } else {
25651
+ return !!value;
25652
+ }
25653
+ }
25654
+ function convertToObject(input) {
25655
+ const result = {};
25656
+ if (!input) {
25657
+ return result;
25658
+ }
25659
+ const pairs = input.split(",");
25660
+ if (pairs && pairs.length > 0) {
25661
+ pairs.forEach((pair) => {
25662
+ const [key, value] = pair.split(":");
25663
+ result[key] = parseInt(value, 10);
25664
+ });
25665
+ }
25666
+ return result;
25667
+ }
25668
+ function convertArrayToListMap(arr) {
25669
+ const result = {};
25670
+ arr.forEach((obj) => {
25671
+ result[obj.srflistmapfield] = obj;
25672
+ delete obj.srflistmapfield;
25673
+ });
25674
+ return result;
25675
+ }
25676
+ function convertListMapToArray(obj) {
25677
+ const result = [];
25678
+ Object.keys(obj).forEach((key) => {
25679
+ const temp = obj[key];
25680
+ temp.srflistmapfield = key;
25681
+ result.push(temp);
25682
+ });
25683
+ return result;
25684
+ }
25685
+ function getTempContext(context) {
25686
+ const result = {};
25687
+ const presetContext = [
25688
+ "srfappid",
25689
+ "srfsimple",
25690
+ "srfviewid",
25691
+ "srfrunmode",
25692
+ "srfreadonly",
25693
+ "srfnavctrlid",
25694
+ "srfsessionid",
25695
+ "srfnavlogicid"
25696
+ ];
25697
+ Object.keys(context).forEach((key) => {
25698
+ if (!presetContext.includes(key)) {
25699
+ result[key] = context[key];
25700
+ }
25701
+ });
25702
+ return result;
25703
+ }
25704
+
25625
25705
  // src/service/utils/dynamic-code-list/dynamic-code-list.ts
25626
25706
  var DynamicCodeListCache = class {
25627
25707
  constructor(codeList) {
@@ -26008,7 +26088,7 @@ var DynamicCodeListCache = class {
26008
26088
  if (!this.codeList.enableCache) {
26009
26089
  return this.load(context, params);
26010
26090
  }
26011
- const key = this.isOperatorType ? this.codeList.codeListTag : JSON.stringify(context.getTempContext()) + JSON.stringify(params);
26091
+ const key = this.isOperatorType ? this.codeList.codeListTag : JSON.stringify(getTempContext(context)) + JSON.stringify(params);
26012
26092
  if (this.cache.has(key)) {
26013
26093
  const cacheData2 = this.cache.get(key);
26014
26094
  if (cacheData2.expirationTime > (/* @__PURE__ */ new Date()).getTime()) {
@@ -26730,61 +26810,6 @@ var SearchFilter = class {
26730
26810
  }
26731
26811
  };
26732
26812
 
26733
- // src/service/utils/util/util.ts
26734
- function fieldValueToBoolean(value) {
26735
- if (typeof value === "boolean") {
26736
- return value;
26737
- }
26738
- if (typeof value === "number") {
26739
- return value > 0;
26740
- }
26741
- if (typeof value === "string") {
26742
- switch (value) {
26743
- case "true":
26744
- return true;
26745
- case "false":
26746
- return false;
26747
- default: {
26748
- const num = Number(value);
26749
- return Number.isNaN(num) ? !!value : num > 0;
26750
- }
26751
- }
26752
- } else {
26753
- return !!value;
26754
- }
26755
- }
26756
- function convertToObject(input) {
26757
- const result = {};
26758
- if (!input) {
26759
- return result;
26760
- }
26761
- const pairs = input.split(",");
26762
- if (pairs && pairs.length > 0) {
26763
- pairs.forEach((pair) => {
26764
- const [key, value] = pair.split(":");
26765
- result[key] = parseInt(value, 10);
26766
- });
26767
- }
26768
- return result;
26769
- }
26770
- function convertArrayToListMap(arr) {
26771
- const result = {};
26772
- arr.forEach((obj) => {
26773
- result[obj.srflistmapfield] = obj;
26774
- delete obj.srflistmapfield;
26775
- });
26776
- return result;
26777
- }
26778
- function convertListMapToArray(obj) {
26779
- const result = [];
26780
- Object.keys(obj).forEach((key) => {
26781
- const temp = obj[key];
26782
- temp.srflistmapfield = key;
26783
- result.push(temp);
26784
- });
26785
- return result;
26786
- }
26787
-
26788
26813
  // src/service/utils/dyna-sys-params/dyna-sys-params.ts
26789
26814
  async function calcDynaSysParams(appDataEntityId, context, opts = {}) {
26790
26815
  const appId2 = opts.appId || context.srfappid;
@@ -34047,10 +34072,10 @@ var CTX = class {
34047
34072
  * @return {*} {IViewController}
34048
34073
  */
34049
34074
  getTopView() {
34050
- if (!this.parent) {
34075
+ if (!this.parent || this.parent && this.parent.isDestroyed) {
34051
34076
  return this.view;
34052
34077
  }
34053
- if (this.view.modal.routeDepth === 2) {
34078
+ if (this.view && this.view.modal.routeDepth === 2) {
34054
34079
  return this.view;
34055
34080
  }
34056
34081
  return this.parent.getTopView();
@@ -36676,6 +36701,9 @@ var EditorController = class {
36676
36701
  if (this.editorParams.triggerMode) {
36677
36702
  return this.editorParams.triggerMode;
36678
36703
  }
36704
+ if (this.editorParams.triggermode) {
36705
+ return this.editorParams.triggermode;
36706
+ }
36679
36707
  const { form, grid, treeGrid } = this.parent;
36680
36708
  const control = form || grid || treeGrid;
36681
36709
  if (control == null ? void 0 : control.controlParams.triggermode) {
@@ -36907,9 +36935,15 @@ var CodeListEditorController = class extends EditorController {
36907
36935
  if (this.editorParams.allItems) {
36908
36936
  this.allItems = this.toBoolean(this.editorParams.allItems);
36909
36937
  }
36938
+ if (this.editorParams.allitems) {
36939
+ this.allItems = this.toBoolean(this.editorParams.allitems);
36940
+ }
36910
36941
  if (this.editorParams.itemsText) {
36911
36942
  this.itemsText = this.editorParams.itemsText;
36912
36943
  }
36944
+ if (this.editorParams.itemstext) {
36945
+ this.itemsText = this.editorParams.itemstext;
36946
+ }
36913
36947
  }
36914
36948
  }
36915
36949
  /**
@@ -38992,7 +39026,12 @@ import { RuntimeModelError as RuntimeModelError44 } from "@ibiz-template/core";
38992
39026
  import { RuntimeError as RuntimeError41 } from "@ibiz-template/core";
38993
39027
 
38994
39028
  // src/ui-logic/ui-logic.ts
38995
- import { ModelError as ModelError23, RuntimeModelError as RuntimeModelError43 } from "@ibiz-template/core";
39029
+ import {
39030
+ IBizContext as IBizContext6,
39031
+ ModelError as ModelError23,
39032
+ RuntimeModelError as RuntimeModelError43
39033
+ } from "@ibiz-template/core";
39034
+ import { clone as clone25 } from "ramda";
38996
39035
 
38997
39036
  // src/ui-logic/ui-logic-context.ts
38998
39037
  var UILogicContext = class {
@@ -40681,6 +40720,8 @@ var UILogic = class {
40681
40720
  * @return {*} {Promise<IData>}
40682
40721
  */
40683
40722
  async exec(parameters) {
40723
+ parameters.context = IBizContext6.create(parameters.context);
40724
+ parameters.params = clone25(parameters.params || {});
40684
40725
  const ctx = new UILogicContext(this.params, parameters);
40685
40726
  this.initLogicParams(ctx);
40686
40727
  const { startDEUILogicNodeId } = this.model;
@@ -40805,6 +40846,7 @@ var UIActionUtil = class {
40805
40846
  var _a3, _b2;
40806
40847
  const result = await this.exec(actionId, params, appId2);
40807
40848
  if (result.closeView) {
40849
+ params.view.modal.ignoreDismissCheck = true;
40808
40850
  params.view.closeView({ ok: true });
40809
40851
  } else if (result.refresh) {
40810
40852
  switch (result.refreshMode) {
@@ -40871,7 +40913,7 @@ var UIActionProviderBase = class {
40871
40913
  refreshMode: action.refreshMode,
40872
40914
  closeView: action.closeEditView
40873
40915
  };
40874
- const { view } = args;
40916
+ const { context, params, data, view } = args;
40875
40917
  if (action.closeEditView) {
40876
40918
  view.state.isClosing = true;
40877
40919
  }
@@ -40891,6 +40933,15 @@ var UIActionProviderBase = class {
40891
40933
  return this.returnError(result, view);
40892
40934
  }
40893
40935
  const _result = await this.execAction(action, args);
40936
+ const { presetParams } = await this.handleParams(
40937
+ action,
40938
+ context,
40939
+ data,
40940
+ params
40941
+ );
40942
+ if (presetParams.ignoredirtycheck === "true") {
40943
+ view.modal.ignoreDismissCheck = true;
40944
+ }
40894
40945
  Object.assign(result, _result);
40895
40946
  if (result.cancel === true) {
40896
40947
  return this.returnError(result, view);
@@ -41079,7 +41130,16 @@ var UIActionProviderBase = class {
41079
41130
  },
41080
41131
  tempContext
41081
41132
  );
41082
- return { resultContext, resultData, resultParams };
41133
+ const presetParams = {};
41134
+ if (resultParams.hasOwnProperty("ignoredirtycheck")) {
41135
+ presetParams.ignoredirtycheck = resultParams.ignoredirtycheck;
41136
+ delete resultParams.ignoredirtycheck;
41137
+ }
41138
+ if (resultParams.hasOwnProperty("srfexportdataset")) {
41139
+ presetParams.srfexportdataset = resultParams.srfexportdataset;
41140
+ delete resultParams.srfexportdataset;
41141
+ }
41142
+ return { resultContext, resultData, resultParams, presetParams };
41083
41143
  }
41084
41144
  /**
41085
41145
  * 计算消息信息(动态,多语言资源)
@@ -41295,7 +41355,7 @@ import {
41295
41355
  ModelError as ModelError24,
41296
41356
  RuntimeError as RuntimeError43
41297
41357
  } from "@ibiz-template/core";
41298
- import { clone as clone25, mergeRight as mergeRight4 } from "ramda";
41358
+ import { clone as clone26, mergeRight as mergeRight4 } from "ramda";
41299
41359
  var FrontUIActionProvider = class extends UIActionProviderBase {
41300
41360
  async execAction(action, args) {
41301
41361
  const { context, params, data, event, noWaitRoute, view } = args;
@@ -41400,7 +41460,7 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
41400
41460
  }
41401
41461
  if (scriptCode) {
41402
41462
  const result = await ScriptFactory.asyncExecScriptFn(
41403
- { context, params, data, el: event == null ? void 0 : event.target, view, ctrl },
41463
+ { context, params, data, el: event == null ? void 0 : event.target, view, ctrl, action },
41404
41464
  scriptCode
41405
41465
  );
41406
41466
  return result || {};
@@ -41418,55 +41478,69 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
41418
41478
  * @return {*}
41419
41479
  */
41420
41480
  async executePrint(action, args) {
41421
- var _a3;
41422
- const { resultContext, resultParams } = await this.handleParams(
41423
- action,
41424
- args.context,
41425
- args.data,
41426
- args.params
41427
- );
41428
- const appDataEntity = await ibiz.hub.getAppDataEntity(
41429
- action.appDataEntityId,
41430
- action.appId
41431
- );
41432
- const appDEPrint = (_a3 = appDataEntity.appDEPrints) == null ? void 0 : _a3.find((print) => {
41433
- return print.id === action.appDEPrintId;
41434
- });
41435
- if (appDEPrint) {
41436
- let requestUrl = "";
41437
- if (resultContext && resultContext[appDataEntity.codeName.toLowerCase()]) {
41438
- requestUrl += "/".concat(appDataEntity.deapicodeName2, "/printdata/").concat(resultContext[appDataEntity.codeName.toLowerCase()]);
41439
- } else {
41440
- throw new RuntimeError43(ibiz.i18n.t("runtime.uiAction.dataPrimaryKey"));
41441
- }
41442
- const res = await ibiz.net.request(requestUrl, {
41443
- method: "get",
41444
- responseType: "blob",
41445
- params: {
41446
- srfprinttag: appDEPrint.codeName,
41447
- ...resultParams
41448
- }
41481
+ const execute = async (data) => {
41482
+ var _a3;
41483
+ const { resultContext, resultParams } = await this.handleParams(
41484
+ action,
41485
+ args.context,
41486
+ data,
41487
+ args.params
41488
+ );
41489
+ const appDataEntity = await ibiz.hub.getAppDataEntity(
41490
+ action.appDataEntityId,
41491
+ action.appId
41492
+ );
41493
+ const appDEPrint = (_a3 = appDataEntity.appDEPrints) == null ? void 0 : _a3.find((print) => {
41494
+ return print.id === action.appDEPrintId;
41449
41495
  });
41450
- if (res.ok) {
41451
- if (resultParams && resultParams.srfcontenttype) {
41452
- const fileName = ibiz.util.file.getFileName(res);
41453
- const href = URL.createObjectURL(res.data);
41454
- const a = document.createElement("a");
41455
- a.href = href;
41456
- a.download = fileName;
41457
- document.body.appendChild(a);
41458
- a.click();
41459
- document.body.removeChild(a);
41460
- URL.revokeObjectURL(href);
41496
+ if (appDEPrint) {
41497
+ let requestUrl = "";
41498
+ if (resultContext && resultContext[appDataEntity.codeName.toLowerCase()]) {
41499
+ const resPath = calcResPath(resultContext, appDataEntity);
41500
+ requestUrl += "".concat(resPath, "/").concat(appDataEntity.deapicodeName2, "/printdata/").concat(resultContext[appDataEntity.codeName.toLowerCase()]);
41461
41501
  } else {
41462
- const link = window.URL.createObjectURL(res.data);
41463
- window.open(link, "_blank");
41502
+ throw new RuntimeError43(
41503
+ ibiz.i18n.t("runtime.uiAction.dataPrimaryKey")
41504
+ );
41505
+ }
41506
+ const app = await ibiz.hub.getAppAsync(action.appId);
41507
+ const res = await app.net.request(requestUrl, {
41508
+ method: "get",
41509
+ responseType: "blob",
41510
+ params: {
41511
+ srfprinttag: appDEPrint.codeName,
41512
+ ...resultParams
41513
+ }
41514
+ });
41515
+ if (res.ok) {
41516
+ if (resultParams && resultParams.srfcontenttype) {
41517
+ const fileName = ibiz.util.file.getFileName(res);
41518
+ const href = URL.createObjectURL(res.data);
41519
+ const a = document.createElement("a");
41520
+ a.href = href;
41521
+ a.download = fileName;
41522
+ document.body.appendChild(a);
41523
+ a.click();
41524
+ document.body.removeChild(a);
41525
+ URL.revokeObjectURL(href);
41526
+ } else {
41527
+ const link = window.URL.createObjectURL(res.data);
41528
+ window.open(link, "_blank");
41529
+ }
41530
+ } else {
41531
+ throw new RuntimeError43(ibiz.i18n.t("runtime.uiAction.printFailure"));
41464
41532
  }
41465
41533
  } else {
41466
- throw new RuntimeError43(ibiz.i18n.t("runtime.uiAction.printFailure"));
41534
+ throw new RuntimeError43(ibiz.i18n.t("runtime.uiAction.physicalPrint"));
41467
41535
  }
41536
+ };
41537
+ const isMultiData = ["MULTIKEY", "MULTIDATA"].includes(
41538
+ action.actionTarget
41539
+ );
41540
+ if (isMultiData) {
41541
+ await Promise.all(args.data.map((item) => execute([item])));
41468
41542
  } else {
41469
- throw new RuntimeError43(ibiz.i18n.t("runtime.uiAction.physicalPrint"));
41543
+ await execute(args.data);
41470
41544
  }
41471
41545
  }
41472
41546
  /**
@@ -41510,13 +41584,8 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
41510
41584
  * @return {*}
41511
41585
  */
41512
41586
  async executeDataExport(action, args) {
41513
- var _a3;
41514
- const { resultContext, resultParams } = await this.handleParams(
41515
- action,
41516
- args.context,
41517
- args.data,
41518
- args.params
41519
- );
41587
+ var _a3, _b2;
41588
+ const { resultContext, resultParams, presetParams } = await this.handleParams(action, args.context, args.data, args.params);
41520
41589
  const appDataEntity = await ibiz.hub.getAppDataEntity(
41521
41590
  action.appDataEntityId,
41522
41591
  action.appId
@@ -41525,7 +41594,22 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
41525
41594
  return dataExport.id === action.appDEDataExportId;
41526
41595
  });
41527
41596
  if (appDEDataExport) {
41528
- const url = "/".concat(appDataEntity.deapicodeName2, "/exportdata/fetchdefault");
41597
+ let exportDatasetCodeName = presetParams.srfexportdataset;
41598
+ if (!exportDatasetCodeName) {
41599
+ const defaultDataset = (_b2 = appDataEntity.appDEMethods) == null ? void 0 : _b2.find((appDEMethod) => {
41600
+ return appDEMethod.dataSetTag === "Default";
41601
+ });
41602
+ if (defaultDataset) {
41603
+ exportDatasetCodeName = defaultDataset.codeName;
41604
+ }
41605
+ }
41606
+ if (!exportDatasetCodeName) {
41607
+ throw new RuntimeError43(
41608
+ ibiz.i18n.t("runtime.uiAction.exportWithNoDataSet")
41609
+ );
41610
+ }
41611
+ const resPath = calcResPath(resultContext, appDataEntity);
41612
+ const url = "".concat(resPath, "/").concat(appDataEntity.deapicodeName2, "/exportdata/").concat(exportDatasetCodeName);
41529
41613
  const queryParam = { srfexporttag: appDEDataExport.codeName };
41530
41614
  if (resultContext == null ? void 0 : resultContext.srfdatatype) {
41531
41615
  Object.assign(queryParam, { srfdatatype: resultContext.srfdatatype });
@@ -41536,7 +41620,8 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
41536
41620
  ...args.params,
41537
41621
  ...resultParams
41538
41622
  };
41539
- const res = await ibiz.net.request(url, {
41623
+ const app = await ibiz.hub.getAppAsync(action.appId);
41624
+ const res = await app.net.request(url, {
41540
41625
  method: "post",
41541
41626
  responseType: "blob",
41542
41627
  params: queryParam,
@@ -41688,7 +41773,7 @@ var FrontUIActionProvider = class extends UIActionProviderBase {
41688
41773
  * @memberof FrontUIActionProvider
41689
41774
  */
41690
41775
  mergeFormItemModel(formModel, editorModel) {
41691
- const tempFormModel = clone25(formModel);
41776
+ const tempFormModel = clone26(formModel);
41692
41777
  if (tempFormModel && editorModel && tempFormModel.deformPages && tempFormModel.deformPages.length > 0) {
41693
41778
  const { deformDetails } = tempFormModel.deformPages[0];
41694
41779
  deformDetails == null ? void 0 : deformDetails.push(editorModel);
@@ -41774,7 +41859,7 @@ var CustomUIActionProvider = class extends UIActionProviderBase {
41774
41859
  const { context, params, data, event, view, ctrl } = args;
41775
41860
  if (scriptCode) {
41776
41861
  const result = await ScriptFactory.asyncExecScriptFn(
41777
- { context, params, data, el: event == null ? void 0 : event.target, view, ctrl },
41862
+ { context, params, data, el: event == null ? void 0 : event.target, view, ctrl, action },
41778
41863
  scriptCode
41779
41864
  );
41780
41865
  return result || {};
@@ -42664,7 +42749,7 @@ var CalendarController = class extends MDControlController {
42664
42749
  import { RuntimeError as RuntimeError47 } from "@ibiz-template/core";
42665
42750
 
42666
42751
  // src/controller/control/chart/generator/chart-options-generator.ts
42667
- import { clone as clone28, mergeDeepRight as mergeDeepRight3 } from "ramda";
42752
+ import { clone as clone29, mergeDeepRight as mergeDeepRight3 } from "ramda";
42668
42753
  import { isObject as isObject2, isString as isString2 } from "qx-util";
42669
42754
  import { RuntimeError as RuntimeError46 } from "@ibiz-template/core";
42670
42755
 
@@ -42679,7 +42764,7 @@ import isSameOrBefore from "dayjs/plugin/isSameOrBefore";
42679
42764
  import quarterOfYear from "dayjs/plugin/quarterOfYear";
42680
42765
  import weekOfYear from "dayjs/plugin/weekOfYear";
42681
42766
  import isoWeek from "dayjs/plugin/isoWeek";
42682
- import { clone as clone26, isNil as isNil26, mergeDeepRight } from "ramda";
42767
+ import { clone as clone27, isNil as isNil26, mergeDeepRight } from "ramda";
42683
42768
  dayjs5.extend(minMax);
42684
42769
  dayjs5.extend(isSameOrBefore);
42685
42770
  dayjs5.extend(quarterOfYear);
@@ -42980,7 +43065,7 @@ var BaseSeriesGenerator = class {
42980
43065
  })
42981
43066
  )
42982
43067
  );
42983
- const cloneItem = clone26(codeListItems);
43068
+ const cloneItem = clone27(codeListItems);
42984
43069
  cloneItem.sort((a, b) => {
42985
43070
  const aIndex = orginItem.findIndex((_code) => {
42986
43071
  return _code === a.value;
@@ -42993,9 +43078,9 @@ var BaseSeriesGenerator = class {
42993
43078
  return cloneItem;
42994
43079
  }
42995
43080
  if (sort === "desc") {
42996
- return clone26(codeListItems).reverse();
43081
+ return clone27(codeListItems).reverse();
42997
43082
  }
42998
- return clone26(codeListItems);
43083
+ return clone27(codeListItems);
42999
43084
  }
43000
43085
  /**
43001
43086
  * 计算分组数据
@@ -43294,7 +43379,7 @@ var BaseSeriesGenerator = class {
43294
43379
  dataPreprocess(data) {
43295
43380
  const tempData = [];
43296
43381
  data.forEach((singleData) => {
43297
- tempData.push(clone26(singleData));
43382
+ tempData.push(clone27(singleData));
43298
43383
  });
43299
43384
  const { groupMode } = this.model;
43300
43385
  if (groupMode) {
@@ -43620,7 +43705,7 @@ var ScatterSeriesGenerator = class extends BaseSeriesGenerator {
43620
43705
  };
43621
43706
 
43622
43707
  // src/controller/control/chart/generator/radar-series-generator.ts
43623
- import { clone as clone27, mergeDeepRight as mergeDeepRight2 } from "ramda";
43708
+ import { clone as clone28, mergeDeepRight as mergeDeepRight2 } from "ramda";
43624
43709
 
43625
43710
  // src/controller/control/chart/generator/radar-coord-system.ts
43626
43711
  var RadarCoordSystem = class {
@@ -43696,7 +43781,7 @@ var RadarSeriesGenerator = class extends BaseSeriesGenerator {
43696
43781
  */
43697
43782
  calcRadarCoordSystem(data) {
43698
43783
  const tempItems = data.map((item) => {
43699
- return clone27(item);
43784
+ return clone28(item);
43700
43785
  });
43701
43786
  const groupData = this.calcGroupData(tempItems);
43702
43787
  if (!this.chartGenerator.radarMap.has(this.catalogField)) {
@@ -44388,8 +44473,8 @@ var ChartOptionsGenerator3 = class {
44388
44473
  const xaxis = [];
44389
44474
  const yaxis = [];
44390
44475
  for (let i = 0; i < seriesModel.length; i++) {
44391
- const tempXAxis = clone28(xAxisParam);
44392
- const tempYAxis = clone28(yAxisParam);
44476
+ const tempXAxis = clone29(xAxisParam);
44477
+ const tempYAxis = clone29(yAxisParam);
44393
44478
  Object.assign(tempXAxis, { gridIndex: i });
44394
44479
  Object.assign(tempYAxis, { gridIndex: i });
44395
44480
  if (!tempYAxis.axisLabel)
@@ -44441,7 +44526,7 @@ var ChartOptionsGenerator3 = class {
44441
44526
  }
44442
44527
  });
44443
44528
  if (left) {
44444
- const tempAxis = clone28(axisParam);
44529
+ const tempAxis = clone29(axisParam);
44445
44530
  if (tempAxis.showTitle) {
44446
44531
  const serietext = left.map((serie) => {
44447
44532
  return serie.serieText;
@@ -44453,7 +44538,7 @@ var ChartOptionsGenerator3 = class {
44453
44538
  axis.push(tempAxis);
44454
44539
  }
44455
44540
  if (right) {
44456
- const tempAxis = clone28(axisParam);
44541
+ const tempAxis = clone29(axisParam);
44457
44542
  if (tempAxis.showTitle) {
44458
44543
  const serietext = right.map((serie) => {
44459
44544
  return serie.serieText;
@@ -44562,9 +44647,9 @@ var ChartOptionsGenerator3 = class {
44562
44647
  );
44563
44648
  if (codeListItems) {
44564
44649
  if (catalog.sort === "desc") {
44565
- currentLevelItems = clone28(codeListItems).reverse();
44650
+ currentLevelItems = clone29(codeListItems).reverse();
44566
44651
  } else {
44567
- currentLevelItems = clone28(codeListItems);
44652
+ currentLevelItems = clone29(codeListItems);
44568
44653
  }
44569
44654
  }
44570
44655
  } else {
@@ -44773,7 +44858,7 @@ var ChartOptionsGenerator3 = class {
44773
44858
  * @memberof ChartOptionsGenerator
44774
44859
  */
44775
44860
  handleAxisTitleParam(option = {}, titleshow = true) {
44776
- const tempOption = clone28(option);
44861
+ const tempOption = clone29(option);
44777
44862
  Object.assign(tempOption, { show: titleshow });
44778
44863
  return tempOption;
44779
44864
  }
@@ -45434,10 +45519,10 @@ var CaptionBarController = class extends ControlController {
45434
45519
  };
45435
45520
 
45436
45521
  // src/controller/control/dashboard/dashboard.controller.ts
45437
- import { clone as clone30 } from "ramda";
45522
+ import { clone as clone31 } from "ramda";
45438
45523
 
45439
45524
  // src/controller/control/dashboard/dashboard.util.ts
45440
- import { clone as clone29 } from "ramda";
45525
+ import { clone as clone30 } from "ramda";
45441
45526
  function filterDEDQConditions2SearchConds(filterDEDQConditions) {
45442
45527
  const result = [];
45443
45528
  filterDEDQConditions.forEach((filterDEDQCondition) => {
@@ -45481,7 +45566,7 @@ function generateCacheKy(context, dashboard, key) {
45481
45566
  function getFilterSearchConds(searchConds, filterDEDQConditions) {
45482
45567
  let result;
45483
45568
  if (searchConds) {
45484
- result = clone29(searchConds);
45569
+ result = clone30(searchConds);
45485
45570
  }
45486
45571
  if (filterDEDQConditions) {
45487
45572
  if (!result || !result.searchconds) {
@@ -45776,7 +45861,7 @@ var DashboardController = class extends ControlController {
45776
45861
  */
45777
45862
  async loadDynaPortletById(id) {
45778
45863
  const app = ibiz.hub.getApp(ibiz.env.appId);
45779
- const tempContext = clone30(this.context);
45864
+ const tempContext = clone31(this.context);
45780
45865
  Object.assign(tempContext, { psappportlet: id });
45781
45866
  const res = await app.deService.exec(
45782
45867
  "psappportlet",
@@ -46042,7 +46127,7 @@ var DashboardController = class extends ControlController {
46042
46127
  };
46043
46128
 
46044
46129
  // src/controller/control/dashboard/custom-dashboard.controller.ts
46045
- import { clone as clone31 } from "ramda";
46130
+ import { clone as clone32 } from "ramda";
46046
46131
  var CustomDashboardController = class {
46047
46132
  /**
46048
46133
  * Creates an instance of BaseController.
@@ -46264,7 +46349,7 @@ var CustomDashboardController = class {
46264
46349
  async saveCustomModelData(model, config = {}, filter = {}) {
46265
46350
  Object.assign(this.portletConfig, config);
46266
46351
  let res;
46267
- const cloneFilter = clone31(this.portletFilter);
46352
+ const cloneFilter = clone32(this.portletFilter);
46268
46353
  if (Object.keys(filter).length > 0) {
46269
46354
  Object.assign(cloneFilter, filter);
46270
46355
  }
@@ -46315,7 +46400,7 @@ var CustomDashboardController = class {
46315
46400
  // src/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.ts
46316
46401
  import { merge } from "lodash-es";
46317
46402
  import {
46318
- IBizContext as IBizContext6,
46403
+ IBizContext as IBizContext7,
46319
46404
  IBizParams as IBizParams2,
46320
46405
  listenJSEvent,
46321
46406
  Namespace as Namespace2
@@ -46375,7 +46460,7 @@ var PortletPartController = class {
46375
46460
  this.dashboard = dashboard;
46376
46461
  this.parent = parent;
46377
46462
  this.state = this.createState();
46378
- this.state.context = IBizContext6.create({}, this.dashboard.context);
46463
+ this.state.context = IBizContext7.create({}, this.dashboard.context);
46379
46464
  const tempParams = this.getExtendParams();
46380
46465
  if (tempParams) {
46381
46466
  this.params = new IBizParams2(
@@ -46891,7 +46976,7 @@ var ReportPortletController = class extends PortletPartController {
46891
46976
 
46892
46977
  // src/controller/control/search-bar/search-bar.controller.ts
46893
46978
  import { mergeInLeft, recursiveIterate as recursiveIterate4 } from "@ibiz-template/core";
46894
- import { clone as clone33 } from "ramda";
46979
+ import { clone as clone34 } from "ramda";
46895
46980
  import { isString as isString3 } from "lodash-es";
46896
46981
 
46897
46982
  // src/controller/control/search-bar/search-bar-filter.controller.ts
@@ -47387,7 +47472,7 @@ async function calcFilterModelBySchema(json, appDataEntityId, modelAppId) {
47387
47472
 
47388
47473
  // src/controller/control/search-bar/search-bar-filter-items.controller.ts
47389
47474
  import { RuntimeError as RuntimeError48 } from "@ibiz-template/core";
47390
- import { clone as clone32 } from "ramda";
47475
+ import { clone as clone33 } from "ramda";
47391
47476
  var SubFieldRegex2 = /^N_(.\w+)_(.\w+)$/;
47392
47477
  var SearchBarFilterItemsController = class extends SearchBarFilterController {
47393
47478
  constructor(filterModels, appDataEntity, context, params) {
@@ -47472,7 +47557,7 @@ var SearchBarFilterItemsController = class extends SearchBarFilterController {
47472
47557
  const matches = subStr.match(SubFieldRegex2);
47473
47558
  const subField = matches[1];
47474
47559
  const subOP = matches[2];
47475
- const cloneItem = clone32(item);
47560
+ const cloneItem = clone33(item);
47476
47561
  cloneItem.defsearchMode.valueOP = subOP;
47477
47562
  cloneItem.id = subField;
47478
47563
  const filterC = new SearchBarFilterController(
@@ -47983,7 +48068,7 @@ var SearchBarController = class extends ControlController {
47983
48068
  if (!this.addSchemaFilters) {
47984
48069
  return;
47985
48070
  }
47986
- const tempParams = clone33(this.jsonSchemaParams);
48071
+ const tempParams = clone34(this.jsonSchemaParams);
47987
48072
  Object.assign(tempParams, this.params);
47988
48073
  const json = await getEntitySchema(
47989
48074
  this.model.appDataEntityId,
@@ -48012,7 +48097,7 @@ var SearchBarController = class extends ControlController {
48012
48097
  }
48013
48098
  });
48014
48099
  if (addSearchBarFilters.length > 0) {
48015
- this.model = clone33(this.model);
48100
+ this.model = clone34(this.model);
48016
48101
  this.model.searchBarFilters = mergeFilters.concat(...addSearchBarFilters);
48017
48102
  this.model.enableFilter = true;
48018
48103
  }
@@ -48234,7 +48319,7 @@ var SearchBarController = class extends ControlController {
48234
48319
  if (!this.enableFilter) {
48235
48320
  return;
48236
48321
  }
48237
- const nodes = clone33(this.state.filterNodes);
48322
+ const nodes = clone34(this.state.filterNodes);
48238
48323
  this.attachCustomCond(nodes);
48239
48324
  const searchconds = calcSearchConds(nodes, {
48240
48325
  after: (node, cond) => {
@@ -48431,7 +48516,7 @@ var SearchBarController = class extends ControlController {
48431
48516
  */
48432
48517
  async handleSave() {
48433
48518
  if (this.grid && this.state.selectedSearchGroupItem) {
48434
- const nodes = clone33(this.state.filterNodes);
48519
+ const nodes = clone34(this.state.filterNodes);
48435
48520
  this.attachCustomCond(nodes);
48436
48521
  let filters = calcSearchCondExs(nodes);
48437
48522
  if (!filters) {
@@ -48447,7 +48532,7 @@ var SearchBarController = class extends ControlController {
48447
48532
  }
48448
48533
  const tempColumnState = this.grid.state.columnStates.map(
48449
48534
  (item) => {
48450
- const state = clone33(item);
48535
+ const state = clone34(item);
48451
48536
  delete state.columnWidth;
48452
48537
  return state;
48453
48538
  }
@@ -48773,7 +48858,7 @@ var FilterPortletController = class extends PortletPartController {
48773
48858
 
48774
48859
  // src/controller/control/data-view/data-view.controller.ts
48775
48860
  import { RuntimeModelError as RuntimeModelError56, isElementSame as isElementSame2 } from "@ibiz-template/core";
48776
- import { clone as clone34, isNil as isNil29 } from "ramda";
48861
+ import { clone as clone35, isNil as isNil29 } from "ramda";
48777
48862
  import { createUUID as createUUID11, isBoolean } from "qx-util";
48778
48863
 
48779
48864
  // src/controller/control/data-view/data-view.service.ts
@@ -48831,6 +48916,7 @@ var DataViewControlController = class extends MDControlController {
48831
48916
  this.state.collapseKeys = [];
48832
48917
  const { enablePagingBar } = this.model;
48833
48918
  this.state.enablePagingBar = enablePagingBar;
48919
+ this.state.uaState = {};
48834
48920
  }
48835
48921
  /**
48836
48922
  * 初始化
@@ -49009,68 +49095,56 @@ var DataViewControlController = class extends MDControlController {
49009
49095
  await this.initGroupCodeListItems();
49010
49096
  await this.handleDataGroup();
49011
49097
  await this.initGroupActionStates();
49098
+ await this.calcOptItemState(items);
49012
49099
  this.calcShowMode(items);
49013
49100
  return items;
49014
49101
  }
49015
49102
  /**
49016
- * 获取操作项模型
49017
- *
49018
- * @return {*} {(IDEDataViewItem | null)}
49103
+ * @description 获取操作项行为集合模型
49104
+ * @returns {*} {IUIActionGroupDetail[]}
49019
49105
  * @memberof DataViewControlController
49020
49106
  */
49021
49107
  getOptItemModel() {
49022
- let optItemModel = null;
49108
+ const actions = [];
49023
49109
  const { dedataViewItems } = this.model;
49024
- if (dedataViewItems) {
49025
- for (let index = 0; index < dedataViewItems.length; index++) {
49026
- if (dedataViewItems[index].itemType === "ACTIONITEM") {
49027
- optItemModel = dedataViewItems[index];
49028
- }
49110
+ dedataViewItems == null ? void 0 : dedataViewItems.forEach((item) => {
49111
+ if (item.itemType === "ACTIONITEM" && item.deuiactionGroup && item.deuiactionGroup.uiactionGroupDetails) {
49112
+ actions.push(...item.deuiactionGroup.uiactionGroupDetails);
49029
49113
  }
49030
- }
49031
- return optItemModel;
49114
+ });
49115
+ return actions;
49032
49116
  }
49033
49117
  /**
49034
- * 获取操作项行为
49035
- *
49036
- * @param {IData} item
49037
- * @return {*}
49118
+ * @description 计算操作项状态
49119
+ * @param {IData[]} items
49120
+ * @returns {*} {Promise<void>}
49038
49121
  * @memberof DataViewControlController
49039
49122
  */
49040
- getOptItemAction(item) {
49041
- var _a3;
49042
- const containerState = new ButtonContainerState();
49043
- const optItemModel = this.getOptItemModel();
49044
- if (optItemModel) {
49045
- if (!optItemModel.deuiactionGroup) {
49046
- throw new RuntimeModelError56(
49047
- this.model,
49048
- ibiz.i18n.t("runtime.controller.control.dataView.noBehaviourGroup")
49049
- );
49050
- }
49051
- if (!((_a3 = optItemModel.deuiactionGroup.uiactionGroupDetails) == null ? void 0 : _a3.length)) {
49052
- ibiz.log.debug(
49053
- ibiz.i18n.t(
49054
- "runtime.controller.control.dataView.noBehaviourGroupAction"
49055
- )
49056
- );
49057
- return containerState;
49058
- }
49059
- optItemModel.deuiactionGroup.uiactionGroupDetails.forEach((detail) => {
49060
- const actionid = detail.uiactionId;
49061
- if (actionid) {
49062
- const buttonState = new UIActionButtonState(
49063
- detail.id,
49064
- this.context.srfappid,
49065
- actionid,
49066
- detail
49123
+ async calcOptItemState(items) {
49124
+ const actions = this.getOptItemModel();
49125
+ if (actions.length)
49126
+ await Promise.all(
49127
+ items.map(async (item) => {
49128
+ const containerState = new ButtonContainerState();
49129
+ actions.forEach((action) => {
49130
+ const actionid = action.uiactionId;
49131
+ if (actionid) {
49132
+ const buttonState = new UIActionButtonState(
49133
+ action.id,
49134
+ this.context.srfappid,
49135
+ actionid
49136
+ );
49137
+ containerState.addState(action.id, buttonState);
49138
+ }
49139
+ });
49140
+ await containerState.update(
49141
+ this.context,
49142
+ item.getOrigin(),
49143
+ this.model.appDataEntityId
49067
49144
  );
49068
- containerState.addState(detail.id, buttonState);
49069
- }
49070
- });
49071
- containerState.update(this.context, item.getOrigin());
49072
- }
49073
- return containerState;
49145
+ this.state.uaState[item.srfkey] = containerState;
49146
+ })
49147
+ );
49074
49148
  }
49075
49149
  /**
49076
49150
  * 行为点击
@@ -49105,7 +49179,7 @@ var DataViewControlController = class extends MDControlController {
49105
49179
  */
49106
49180
  async execGroup(arg, _params) {
49107
49181
  const group = arg[0];
49108
- this.model = clone34(this.model);
49182
+ this.model = clone35(this.model);
49109
49183
  this.model.groupMode = "AUTO";
49110
49184
  if (!group || !group.groupFieldId) {
49111
49185
  this.state.groups = [];
@@ -50248,7 +50322,7 @@ import {
50248
50322
  RuntimeError as RuntimeError51
50249
50323
  } from "@ibiz-template/core";
50250
50324
  import { isBoolean as isBoolean2 } from "qx-util";
50251
- import { clone as clone35 } from "ramda";
50325
+ import { clone as clone36 } from "ramda";
50252
50326
  var FormController = class extends ControlController {
50253
50327
  constructor() {
50254
50328
  super(...arguments);
@@ -50522,7 +50596,7 @@ var FormController = class extends ControlController {
50522
50596
  * @return {*} {Promise<void>}
50523
50597
  */
50524
50598
  async checkIgnoreInput(data) {
50525
- const formData = clone35(data);
50599
+ const formData = clone36(data);
50526
50600
  const formDataUIMap = formData.$dataUIMap;
50527
50601
  const isCreate = formData.srfuf === 0 /* CREATE */;
50528
50602
  this.formItems.forEach((formItem) => {
@@ -50722,7 +50796,7 @@ import { recursiveIterate as recursiveIterate7 } from "@ibiz-template/core";
50722
50796
 
50723
50797
  // src/controller/control/form/form/form.service.ts
50724
50798
  import { recursiveIterate as recursiveIterate6 } from "@ibiz-template/core";
50725
- import { clone as clone36, isNil as isNil30, isNotNil as isNotNil3 } from "ramda";
50799
+ import { clone as clone37, isNil as isNil30, isNotNil as isNotNil3 } from "ramda";
50726
50800
  var FormService = class extends ControlService {
50727
50801
  constructor() {
50728
50802
  super(...arguments);
@@ -50784,7 +50858,7 @@ var FormService = class extends ControlService {
50784
50858
  * @return {*} {IParams}
50785
50859
  */
50786
50860
  getLoadParams(params) {
50787
- const copyArgs = clone36(params);
50861
+ const copyArgs = clone37(params);
50788
50862
  const defaultData = {};
50789
50863
  if (copyArgs.srfdefdata) {
50790
50864
  Object.assign(defaultData, copyArgs.srfdefdata);
@@ -52122,7 +52196,7 @@ var FormDRUIPartController = class extends FormDetailController {
52122
52196
  };
52123
52197
 
52124
52198
  // src/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.ts
52125
- import { clone as clone37 } from "ramda";
52199
+ import { clone as clone38 } from "ramda";
52126
52200
 
52127
52201
  // src/controller/control/form/form-detail/form-group-panel/form-group-panel.state.ts
52128
52202
  var FormGroupPanelState = class extends FormDetailState {
@@ -52230,7 +52304,7 @@ var FormGroupPanelController = class extends FormDetailController {
52230
52304
  */
52231
52305
  async onActionClick(detail, event, args) {
52232
52306
  const actionId = detail.uiactionId;
52233
- const tempParams = clone37(this.form.params);
52307
+ const tempParams = clone38(this.form.params);
52234
52308
  if (args) {
52235
52309
  Object.assign(tempParams, args);
52236
52310
  }
@@ -53346,7 +53420,7 @@ var FormMDCtrlFormController = class extends FormMDCtrlController {
53346
53420
 
53347
53421
  // src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.ts
53348
53422
  import { ModelError as ModelError26 } from "@ibiz-template/core";
53349
- import { clone as clone38 } from "ramda";
53423
+ import { clone as clone39 } from "ramda";
53350
53424
  var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
53351
53425
  constructor() {
53352
53426
  super(...arguments);
@@ -53451,7 +53525,7 @@ var FormMDCtrlRepeaterController = class extends FormMDCtrlController {
53451
53525
  copyFields.forEach((key) => {
53452
53526
  tempForm[key] = this.form.model[key];
53453
53527
  });
53454
- this.repeatedForm = clone38(tempForm);
53528
+ this.repeatedForm = clone39(tempForm);
53455
53529
  }
53456
53530
  /**
53457
53531
  * @description 设置重复器控制器
@@ -53928,14 +54002,14 @@ var FormButtonListController = class extends FormDetailController {
53928
54002
  // src/controller/control/form/edit-form/edit-form.controller.ts
53929
54003
  import {
53930
54004
  awaitTimeout,
53931
- IBizContext as IBizContext7,
54005
+ IBizContext as IBizContext8,
53932
54006
  isElementSame as isElementSame3,
53933
54007
  mergeInLeft as mergeInLeft3,
53934
54008
  RuntimeError as RuntimeError54
53935
54009
  } from "@ibiz-template/core";
53936
54010
  import { debounce } from "lodash-es";
53937
54011
  import { createUUID as createUUID14 } from "qx-util";
53938
- import { clone as clone39, isNil as isNil31 } from "ramda";
54012
+ import { clone as clone40, isNil as isNil31 } from "ramda";
53939
54013
 
53940
54014
  // src/controller/control/form/edit-form/edit-form.service.ts
53941
54015
  import {
@@ -54088,7 +54162,10 @@ var EditFormService = class extends FormService {
54088
54162
  * @returns {*} {Promise<IHttpResponse<ControlVO>>}
54089
54163
  */
54090
54164
  async updateFormItem(methodName, context, data = {}, params = {}) {
54091
- Object.assign(params, { srfupdateitem: true });
54165
+ var _a3;
54166
+ const { controlParam } = this.model;
54167
+ const srfupdateitem = ((_a3 = controlParam == null ? void 0 : controlParam.ctrlParams) == null ? void 0 : _a3.IGNOREUPDATEITEM) !== "false";
54168
+ Object.assign(params, { srfupdateitem });
54092
54169
  let res = await this.exec(methodName, context, data, params);
54093
54170
  res = this.handleResponse(res);
54094
54171
  return res;
@@ -54357,8 +54434,8 @@ var EditFormController = class extends FormController {
54357
54434
  * @return {*} {Promise<IData>}
54358
54435
  */
54359
54436
  async copy() {
54360
- const context = clone39(this.context);
54361
- const queryParams = clone39(this.params);
54437
+ const context = clone40(this.context);
54438
+ const queryParams = clone40(this.params);
54362
54439
  const appDataEntity = await ibiz.hub.getAppDataEntity(
54363
54440
  this.model.appDataEntityId,
54364
54441
  this.model.appId
@@ -54415,7 +54492,7 @@ var EditFormController = class extends FormController {
54415
54492
  return this.loadDraft();
54416
54493
  }
54417
54494
  const { context, params } = this.handlerAbilityParams(args);
54418
- const queryParams = clone39(params);
54495
+ const queryParams = clone40(params);
54419
54496
  const silent = this.getSilent(args) === true;
54420
54497
  let res;
54421
54498
  try {
@@ -54769,7 +54846,7 @@ var EditFormController = class extends FormController {
54769
54846
  switch (autoSaveMode) {
54770
54847
  case 3:
54771
54848
  saveParam.data = this.getDiffData();
54772
- saveParam.context = IBizContext7.create({ srfsimple: true });
54849
+ saveParam.context = IBizContext8.create({ srfsimple: true });
54773
54850
  break;
54774
54851
  default:
54775
54852
  }
@@ -54799,7 +54876,7 @@ var EditFormController = class extends FormController {
54799
54876
  switch (autoSaveMode) {
54800
54877
  case 3:
54801
54878
  saveParam.data = this.getDiffData();
54802
- saveParam.context = IBizContext7.create({ srfsimple: true });
54879
+ saveParam.context = IBizContext8.create({ srfsimple: true });
54803
54880
  break;
54804
54881
  default:
54805
54882
  }
@@ -55274,7 +55351,7 @@ import {
55274
55351
  mergeDefaultInLeft as mergeDefaultInLeft2,
55275
55352
  debounceAndAsyncMerge as debounceAndAsyncMerge2
55276
55353
  } from "@ibiz-template/core";
55277
- import { clone as clone41, isNil as isNil32 } from "ramda";
55354
+ import { clone as clone42, isNil as isNil32 } from "ramda";
55278
55355
  import dayjs6 from "dayjs";
55279
55356
 
55280
55357
  // src/controller/control/grid/grid/grid.service.ts
@@ -55445,7 +55522,7 @@ async function calcColumnModelBySchema(json, c) {
55445
55522
  }
55446
55523
 
55447
55524
  // src/controller/control/grid/grid/auto-grid.util.ts
55448
- import { clone as clone40 } from "ramda";
55525
+ import { clone as clone41 } from "ramda";
55449
55526
  import { mergeDefaultInLeft } from "@ibiz-template/core";
55450
55527
  var TypeToDataType2 = {
55451
55528
  string: 25,
@@ -55498,7 +55575,7 @@ function getEditorModel(item, appId2, enableCond, isSingleSelect = false) {
55498
55575
  type = "dropdown";
55499
55576
  if (enableCond === 0)
55500
55577
  type = "span";
55501
- const model = Object.assign(clone40(TypeToEditor[type]), {
55578
+ const model = Object.assign(clone41(TypeToEditor[type]), {
55502
55579
  appId: appId2
55503
55580
  });
55504
55581
  if (type === "dropdown" && isSingleSelect)
@@ -55649,7 +55726,7 @@ async function initModelByEntitySchema(c) {
55649
55726
  if (!json)
55650
55727
  return;
55651
55728
  const { degridColumns, degridDataItems, degridEditItems, degridEditItemVRs } = await calcColumnModelBySchema2(json, c);
55652
- c.model = clone40(c.model);
55729
+ c.model = clone41(c.model);
55653
55730
  const uaColumns = ((_a3 = c.model.degridColumns) == null ? void 0 : _a3.filter(
55654
55731
  (column) => column.columnType === "UAGRIDCOLUMN"
55655
55732
  )) || [];
@@ -55696,7 +55773,7 @@ async function switchRowEditDynamic(c, row, editable, _isSave = true) {
55696
55773
  await switchRowEditDynamic(c, editingRow);
55697
55774
  }
55698
55775
  if (row.data.srfuf === 1 /* UPDATE */) {
55699
- row.cacheData = clone40(row.data);
55776
+ row.cacheData = clone41(row.data);
55700
55777
  const defaultVal = c.calcDefaultValue(row.data, false);
55701
55778
  Object.assign(row.data, defaultVal);
55702
55779
  }
@@ -56068,7 +56145,7 @@ var GridController = class extends MDControlController {
56068
56145
  if (!this.addSchemaColumn) {
56069
56146
  return;
56070
56147
  }
56071
- const tempParams = clone41(this.jsonSchemaParams);
56148
+ const tempParams = clone42(this.jsonSchemaParams);
56072
56149
  Object.assign(tempParams, this.params);
56073
56150
  const json = await getEntitySchema(
56074
56151
  this.model.appDataEntityId,
@@ -56082,7 +56159,7 @@ var GridController = class extends MDControlController {
56082
56159
  if (result && result.degridColumns.length > 0) {
56083
56160
  const { degridColumns, degridDataItems } = result;
56084
56161
  this.allCustomColumns = degridColumns;
56085
- this.model = clone41(this.model);
56162
+ this.model = clone42(this.model);
56086
56163
  this.model.degridColumns = [
56087
56164
  ...this.model.degridColumns || [],
56088
56165
  ...degridColumns
@@ -56304,7 +56381,7 @@ var GridController = class extends MDControlController {
56304
56381
  async execGroup(arg, _params) {
56305
56382
  var _a3;
56306
56383
  const group = arg[0];
56307
- this.model = clone41(this.model);
56384
+ this.model = clone42(this.model);
56308
56385
  this.model.groupMode = "AUTO";
56309
56386
  const { columnStates } = this.state;
56310
56387
  const column = (_a3 = this.model.degridColumns) == null ? void 0 : _a3.find(
@@ -56842,7 +56919,7 @@ var GridController = class extends MDControlController {
56842
56919
  await this.switchRowEdit(editingRow, false, false);
56843
56920
  }
56844
56921
  if (row.data.srfuf === 1 /* UPDATE */) {
56845
- row.cacheData = clone41(row.data);
56922
+ row.cacheData = clone42(row.data);
56846
56923
  const defaultVal = this.calcDefaultValue(row.data, false);
56847
56924
  Object.assign(row.data, defaultVal);
56848
56925
  }
@@ -57016,7 +57093,7 @@ var GridController = class extends MDControlController {
57016
57093
  * @Date: 2024-03-20 17:54:16
57017
57094
  */
57018
57095
  formatExcelData(data, fields) {
57019
- const cloneData = clone41(
57096
+ const cloneData = clone42(
57020
57097
  data.map((item) => {
57021
57098
  return fields.reduce((obj, key) => {
57022
57099
  obj[key] = item[key];
@@ -57499,7 +57576,7 @@ import {
57499
57576
  } from "@ibiz-template/core";
57500
57577
  import dayjs7 from "dayjs";
57501
57578
  import { debounce as debounce2 } from "lodash-es";
57502
- import { clone as clone42, isNil as isNil33 } from "ramda";
57579
+ import { clone as clone43, isNil as isNil33 } from "ramda";
57503
57580
  import { isNilOrEmpty as isNilOrEmpty8 } from "qx-util";
57504
57581
  var GridFieldColumnController = class extends GridColumnController {
57505
57582
  constructor() {
@@ -57691,7 +57768,7 @@ var GridFieldColumnController = class extends GridColumnController {
57691
57768
  srfkey: value,
57692
57769
  ...wfContext
57693
57770
  });
57694
- const tempParams = clone42(this.params);
57771
+ const tempParams = clone43(this.params);
57695
57772
  const { context: newContext, params: newParams } = this.handlePublicParams(
57696
57773
  row.data,
57697
57774
  tempContext,
@@ -58250,7 +58327,7 @@ var GridGroupColumnController = class extends GridColumnController {
58250
58327
 
58251
58328
  // src/controller/control/list/list.controller.ts
58252
58329
  import { createUUID as createUUID15, isBoolean as isBoolean3 } from "qx-util";
58253
- import { clone as clone43, isNil as isNil34 } from "ramda";
58330
+ import { clone as clone44, isNil as isNil34 } from "ramda";
58254
58331
  import { isElementSame as isElementSame4 } from "@ibiz-template/core";
58255
58332
 
58256
58333
  // src/controller/control/list/list.service.ts
@@ -58454,7 +58531,7 @@ var ListController = class extends MDControlController {
58454
58531
  */
58455
58532
  async execGroup(arg, _params) {
58456
58533
  const group = arg[0];
58457
- this.model = clone43(this.model);
58534
+ this.model = clone44(this.model);
58458
58535
  this.model.groupMode = "AUTO";
58459
58536
  if (!group || !group.groupFieldId) {
58460
58537
  this.state.groups = [];
@@ -62282,10 +62359,10 @@ import {
62282
62359
  RuntimeError as RuntimeError60,
62283
62360
  RuntimeModelError as RuntimeModelError69
62284
62361
  } from "@ibiz-template/core";
62285
- import { clone as clone45, isNil as isNil37 } from "ramda";
62362
+ import { clone as clone46, isNil as isNil37 } from "ramda";
62286
62363
 
62287
62364
  // src/controller/control/kanban/kanban.service.ts
62288
- import { clone as clone44 } from "ramda";
62365
+ import { clone as clone45 } from "ramda";
62289
62366
  var KanbanService = class extends DataViewControlService {
62290
62367
  /**
62291
62368
  * 更新分组数据
@@ -62314,7 +62391,7 @@ var KanbanService = class extends DataViewControlService {
62314
62391
  */
62315
62392
  async moveOrderItem(context, data, args) {
62316
62393
  const moveAction = this.model.moveControlAction.appDEMethodId;
62317
- const params = clone44(data.getOrigin());
62394
+ const params = clone45(data.getOrigin());
62318
62395
  Object.assign(params, args);
62319
62396
  let res = await this.exec(moveAction, context, params, {
62320
62397
  srfupdateitem: true
@@ -62346,6 +62423,32 @@ var KanbanController = class extends DataViewControlController {
62346
62423
  get enableEditGroup() {
62347
62424
  return this.model.enableCardEditGroup === true;
62348
62425
  }
62426
+ /**
62427
+ * @description 拖拽模式
62428
+ * @readonly
62429
+ * @type {(0 | 1 | 2 | 3)} (无 | 仅分组 | 仅泳道 | 全部)
62430
+ * @memberof KanbanController
62431
+ */
62432
+ get draggableMode() {
62433
+ if (this.controlParams.draggablemode) {
62434
+ const draggablemode = Number(this.controlParams.draggablemode);
62435
+ if (!isNaN(draggablemode))
62436
+ return draggablemode;
62437
+ }
62438
+ return 3;
62439
+ }
62440
+ /**
62441
+ * @description 获取泳道描述
62442
+ * @readonly
62443
+ * @type {(string | undefined)}
62444
+ * @memberof KanbanController
62445
+ */
62446
+ get laneDescription() {
62447
+ var _a3;
62448
+ if (this.controlParams.lanedescription)
62449
+ return this.controlParams.lanedescription;
62450
+ return (_a3 = this.dataEntity) == null ? void 0 : _a3.logicName;
62451
+ }
62349
62452
  async initControlService() {
62350
62453
  this.service = new KanbanService(this.model);
62351
62454
  await this.service.init(this.context);
@@ -62358,7 +62461,7 @@ var KanbanController = class extends DataViewControlController {
62358
62461
  this.state.selectGroupKey = "";
62359
62462
  this.state.readonly = !!(this.context.srfreadonly === true || this.context.srfreadonly === "true");
62360
62463
  this.state.draggable = this.enableEditOrder || this.enableEditGroup;
62361
- this.state.uaState = {};
62464
+ this.state.lanes = [];
62362
62465
  }
62363
62466
  /**
62364
62467
  * 初始化
@@ -62435,43 +62538,9 @@ var KanbanController = class extends DataViewControlController {
62435
62538
  );
62436
62539
  }
62437
62540
  async afterLoad(args, items) {
62438
- var _a3;
62439
62541
  this.sortItems(this.state.items);
62440
62542
  super.afterLoad(args, items);
62441
- const actions = [];
62442
- (_a3 = this.model.dedataViewItems) == null ? void 0 : _a3.forEach((item) => {
62443
- if (item.itemType === "ACTIONITEM") {
62444
- if (item.deuiactionGroup && item.deuiactionGroup.uiactionGroupDetails) {
62445
- actions.push(...item.deuiactionGroup.uiactionGroupDetails);
62446
- }
62447
- }
62448
- });
62449
- if (actions && actions.length > 0) {
62450
- items.forEach((item) => {
62451
- const containerState = new ButtonContainerState();
62452
- actions.forEach((action) => {
62453
- const actionid = action.uiactionId;
62454
- if (actionid) {
62455
- const buttonState = new UIActionButtonState(
62456
- action.id,
62457
- this.context.srfappid,
62458
- actionid
62459
- );
62460
- containerState.addState(action.id, buttonState);
62461
- }
62462
- });
62463
- this.state.uaState[item.srfkey] = containerState;
62464
- });
62465
- }
62466
- items.forEach((item) => {
62467
- if (this.state.uaState[item.srfkey] && Object.keys(this.state.uaState[item.srfkey]).length > 0) {
62468
- this.state.uaState[item.srfkey].update(
62469
- this.context,
62470
- item.getOrigin(),
62471
- this.model.appDataEntityId
62472
- );
62473
- }
62474
- });
62543
+ this.handleLaneData();
62475
62544
  return items;
62476
62545
  }
62477
62546
  /**
@@ -62499,42 +62568,70 @@ var KanbanController = class extends DataViewControlController {
62499
62568
  super.onRowClick(data);
62500
62569
  }
62501
62570
  /**
62502
- * 点击新建时设置选中分组
62503
- *
62571
+ * @description 点击新建并设置设置选中分组
62504
62572
  * @param {MouseEvent} event
62505
- * @param {(string | number)} group
62573
+ * @param {(string | number)} group 分组
62574
+ * @param {IKanbanLane} [lane] 泳道
62506
62575
  * @memberof KanbanController
62507
62576
  */
62508
- onClickNew(event, group) {
62577
+ onClickNew(event, group, lane) {
62509
62578
  this.setSelectGroup(group);
62510
- super.onClickNew(event, group);
62579
+ const params = { ...this.params, srfgroup: group };
62580
+ if (lane)
62581
+ Object.assign(params, { srflane: lane.key });
62582
+ UIActionUtil.execAndResolved(
62583
+ "new",
62584
+ {
62585
+ context: this.context,
62586
+ params,
62587
+ data: [],
62588
+ view: this.view,
62589
+ ctrl: this,
62590
+ event
62591
+ },
62592
+ this.view.model.appId
62593
+ );
62511
62594
  }
62512
62595
  /**
62513
- * 分组工具栏需设置选中分组
62514
- *
62596
+ * @description 分组工具栏点击,需携带分组
62515
62597
  * @param {IUIActionGroupDetail} detail
62516
62598
  * @param {MouseEvent} event
62517
62599
  * @param {IKanbanGroupState} group
62518
- * @return {*} {Promise<void>}
62600
+ * @returns {*} {Promise<void>}
62519
62601
  * @memberof KanbanController
62520
62602
  */
62521
62603
  async onGroupToolbarClick(detail, event, group) {
62522
62604
  this.setSelectGroup(group.key);
62523
- super.onGroupToolbarClick(detail, event, group);
62605
+ const actionId = detail.uiactionId;
62606
+ const params = { ...this.params, srfgroup: group.key };
62607
+ await UIActionUtil.execAndResolved(
62608
+ actionId,
62609
+ {
62610
+ context: this.context,
62611
+ params,
62612
+ data: group.selectedData || [],
62613
+ view: this.view,
62614
+ ctrl: this,
62615
+ event
62616
+ },
62617
+ detail.appId
62618
+ );
62524
62619
  }
62525
62620
  /**
62526
- * 分组行为项点击,需携带分组标识
62527
- *
62621
+ * @description 分组行为项点击, 需携带分组(有泳道时携带泳道)
62528
62622
  * @param {IUIActionGroupDetail} detail
62529
62623
  * @param {IData} item
62530
62624
  * @param {MouseEvent} event
62531
62625
  * @param {IKanbanGroupState} group
62532
- * @return {*} {Promise<void>}
62626
+ * @param {IKanbanLane} [lane]
62627
+ * @returns {*} {Promise<void>}
62533
62628
  * @memberof KanbanController
62534
62629
  */
62535
- async onGroupActionClick(detail, item, event, group) {
62630
+ async onGroupActionClick(detail, item, event, group, lane) {
62536
62631
  this.setSelectGroup(group.key);
62537
62632
  const params = { ...this.params, srfgroup: group };
62633
+ if (lane)
62634
+ Object.assign(params, { srflane: lane.key });
62538
62635
  const actionId = detail.uiactionId;
62539
62636
  await UIActionUtil.execAndResolved(
62540
62637
  actionId,
@@ -62557,6 +62654,80 @@ var KanbanController = class extends DataViewControlController {
62557
62654
  }
62558
62655
  return super.handleDataGroup();
62559
62656
  }
62657
+ /**
62658
+ * @description 处理泳道数据
62659
+ * @returns {*} {Promise<void>}
62660
+ * @memberof KanbanController
62661
+ */
62662
+ async handleLaneData() {
62663
+ var _a3;
62664
+ const { swimlaneCodeListId, swimlaneAppDEFieldId } = this.model;
62665
+ if (!swimlaneAppDEFieldId)
62666
+ return;
62667
+ let lanes = [];
62668
+ const unclassified = {
62669
+ count: 0,
62670
+ key: void 0,
62671
+ isExpand: true,
62672
+ caption: ibiz.i18n.t("runtime.controller.common.md.unclassified")
62673
+ };
62674
+ const { items } = this.state;
62675
+ if (swimlaneCodeListId) {
62676
+ const app = ibiz.hub.getApp(this.context.srfappid);
62677
+ const codeListItems = await app.codeList.get(
62678
+ swimlaneCodeListId,
62679
+ this.context,
62680
+ this.params
62681
+ );
62682
+ lanes = codeListItems.map((item) => {
62683
+ var _a4;
62684
+ return {
62685
+ count: 0,
62686
+ isExpand: true,
62687
+ key: (_a4 = item.value) == null ? void 0 : _a4.toString(),
62688
+ caption: item.text
62689
+ };
62690
+ });
62691
+ items.forEach((item) => {
62692
+ const lane = lanes.find(
62693
+ (l) => {
62694
+ var _a4;
62695
+ return l.key === ((_a4 = item[swimlaneAppDEFieldId]) == null ? void 0 : _a4.toLowerCase());
62696
+ }
62697
+ );
62698
+ if (lane) {
62699
+ lane.count += 1;
62700
+ } else {
62701
+ unclassified.count += 1;
62702
+ }
62703
+ });
62704
+ } else {
62705
+ const deRss = (_a3 = this.dataEntity.minorAppDERSs) == null ? void 0 : _a3.find(
62706
+ (rss) => rss.parentAppDEFieldId === swimlaneAppDEFieldId
62707
+ );
62708
+ const textDEFieldId = (deRss == null ? void 0 : deRss.parentTextAppDEFieldId) || swimlaneAppDEFieldId;
62709
+ items.forEach((item) => {
62710
+ if (item[swimlaneAppDEFieldId]) {
62711
+ const lane = lanes.find((l) => l.key === item[swimlaneAppDEFieldId]);
62712
+ if (lane) {
62713
+ lane.count += 1;
62714
+ } else {
62715
+ lanes.push({
62716
+ count: 1,
62717
+ isExpand: true,
62718
+ key: item[swimlaneAppDEFieldId],
62719
+ caption: item[textDEFieldId]
62720
+ });
62721
+ }
62722
+ } else {
62723
+ unclassified.count += 1;
62724
+ }
62725
+ });
62726
+ }
62727
+ if (unclassified.count)
62728
+ lanes.push(unclassified);
62729
+ this.state.lanes = lanes;
62730
+ }
62560
62731
  /**
62561
62732
  * 处理代码表分组
62562
62733
  *
@@ -62605,7 +62776,6 @@ var KanbanController = class extends DataViewControlController {
62605
62776
  * @return {*} {Promise<void>}
62606
62777
  */
62607
62778
  async onDragChange(info) {
62608
- var _a3;
62609
62779
  if (!this.enableEditGroup) {
62610
62780
  if (info.from !== info.to) {
62611
62781
  ibiz.message.warning(
@@ -62614,24 +62784,32 @@ var KanbanController = class extends DataViewControlController {
62614
62784
  return;
62615
62785
  }
62616
62786
  }
62617
- const { from, to, fromIndex, toIndex } = info;
62618
- const groupField = this.model.groupAppDEFieldId;
62619
- const sortField = this.model.minorSortAppDEFieldId;
62787
+ const { from, to, fromIndex, toIndex, fromLane, toLane } = info;
62788
+ const {
62789
+ groupAppDEFieldId,
62790
+ minorSortAppDEFieldId,
62791
+ moveControlAction,
62792
+ laneAppDEFieldId = "testname"
62793
+ } = this.model;
62794
+ const groupField = groupAppDEFieldId;
62795
+ const sortField = minorSortAppDEFieldId;
62620
62796
  const fromGroup = this.state.groups.find((x) => x.key === from);
62621
62797
  const toGroup = this.state.groups.find((x) => x.key === to);
62622
62798
  if (!this.enableEditOrder) {
62623
- if (info.from === info.to) {
62799
+ if (from === to && fromLane === toLane) {
62624
62800
  ibiz.message.warning(
62625
62801
  ibiz.i18n.t("runtime.controller.control.kanban.noAllowReorder")
62626
62802
  );
62627
62803
  return;
62628
62804
  }
62629
62805
  const draggedItem2 = fromGroup.children[fromIndex];
62630
- draggedItem2[groupField] = info.to;
62806
+ draggedItem2[groupField] = to;
62807
+ if (laneAppDEFieldId)
62808
+ draggedItem2[laneAppDEFieldId] = toLane;
62631
62809
  return this.updateChangedItems([draggedItem2]);
62632
62810
  }
62633
62811
  const originArr = [...toGroup.children];
62634
- const moveAction = (_a3 = this.model.moveControlAction) == null ? void 0 : _a3.appDEMethodId;
62812
+ const moveAction = moveControlAction == null ? void 0 : moveControlAction.appDEMethodId;
62635
62813
  if (!moveAction) {
62636
62814
  throw new RuntimeModelError69(
62637
62815
  this.model,
@@ -62673,7 +62851,7 @@ var KanbanController = class extends DataViewControlController {
62673
62851
  }
62674
62852
  return moveData;
62675
62853
  };
62676
- const draggedItem = clone45(fromGroup.children[fromIndex]);
62854
+ const draggedItem = clone46(fromGroup.children[fromIndex]);
62677
62855
  const removeItems = fromGroup.children.splice(fromIndex, 1);
62678
62856
  toGroup.children.splice(toIndex, 0, ...removeItems);
62679
62857
  if (info.from !== info.to) {
@@ -62948,7 +63126,7 @@ import {
62948
63126
  awaitTimeout as awaitTimeout3,
62949
63127
  recursiveIterate as recursiveIterate12
62950
63128
  } from "@ibiz-template/core";
62951
- import { clone as clone46 } from "ramda";
63129
+ import { clone as clone47 } from "ramda";
62952
63130
 
62953
63131
  // src/controller/control/tree-grid-ex/tree-grid-ex.service.ts
62954
63132
  var TreeGridExService = class extends TreeService {
@@ -63500,7 +63678,7 @@ var TreeGridExController = class extends TreeController {
63500
63678
  );
63501
63679
  }
63502
63680
  if (row.data._deData.srfuf === 1 /* UPDATE */) {
63503
- row.cacheData = clone46(row.data);
63681
+ row.cacheData = clone47(row.data);
63504
63682
  const defaultVal = this.calcDefaultValue(row.data, false);
63505
63683
  Object.assign(row.data, defaultVal);
63506
63684
  }
@@ -63687,7 +63865,7 @@ import {
63687
63865
  RuntimeError as RuntimeError62,
63688
63866
  RuntimeModelError as RuntimeModelError71
63689
63867
  } from "@ibiz-template/core";
63690
- import { clone as clone47 } from "ramda";
63868
+ import { clone as clone48 } from "ramda";
63691
63869
  import dayjs8 from "dayjs";
63692
63870
  var TreeGridExNodeColumnController = class {
63693
63871
  /**
@@ -63895,7 +64073,7 @@ var TreeGridExNodeColumnController = class {
63895
64073
  srfkey: value,
63896
64074
  ...wfContext
63897
64075
  });
63898
- const tempParams = clone47(this.params);
64076
+ const tempParams = clone48(this.params);
63899
64077
  const { userParam } = this.nodeColumn;
63900
64078
  if (userParam) {
63901
64079
  const { navigateContexts, navigateParams } = parseUserParams(userParam);
@@ -66364,7 +66542,7 @@ var ThemeUtil = class {
66364
66542
  * @memberof ThemeUtil
66365
66543
  */
66366
66544
  async loadTheme(theme, type = "COLOR") {
66367
- const data = clone48(theme.themeParams || {});
66545
+ const data = clone49(theme.themeParams || {});
66368
66546
  const path2 = data["theme-package-path"] || theme.themeUrl;
66369
66547
  delete data.appId;
66370
66548
  delete data["theme-package-path"];
@@ -67012,8 +67190,8 @@ var baseStyle = {
67012
67190
  position: "fixed",
67013
67191
  zIndex: "10000"
67014
67192
  };
67015
- function cloneElement(clone54, teleport = document.body, isRemoveChild = true) {
67016
- const element = getAnimationElement(clone54);
67193
+ function cloneElement(clone55, teleport = document.body, isRemoveChild = true) {
67194
+ const element = getAnimationElement(clone55);
67017
67195
  if (element == null) {
67018
67196
  throw new Error(ibiz.i18n.t("runtime.utils.anime.noClone"));
67019
67197
  }
@@ -67432,11 +67610,11 @@ function arrayContains(arr, val) {
67432
67610
  });
67433
67611
  }
67434
67612
  function cloneObject(o) {
67435
- var clone54 = {};
67613
+ var clone55 = {};
67436
67614
  for (var p in o) {
67437
- clone54[p] = o[p];
67615
+ clone55[p] = o[p];
67438
67616
  }
67439
- return clone54;
67617
+ return clone55;
67440
67618
  }
67441
67619
  function replaceObjectProps(o1, o2) {
67442
67620
  var o = cloneObject(o1);
@@ -69019,7 +69197,7 @@ var ShortCutUtil = class {
69019
69197
  };
69020
69198
 
69021
69199
  // src/utils/bi-report-util/bi-report-util.ts
69022
- import { clone as clone49 } from "ramda";
69200
+ import { clone as clone50 } from "ramda";
69023
69201
  import { RuntimeError as RuntimeError66 } from "@ibiz-template/core";
69024
69202
  var BIReportUtil = class {
69025
69203
  /**
@@ -69035,7 +69213,7 @@ var BIReportUtil = class {
69035
69213
  async openDesignPage(context, params, data) {
69036
69214
  if (!data.mode)
69037
69215
  data.mode = "DATA";
69038
- const tempContext = clone49(context);
69216
+ const tempContext = clone50(context);
69039
69217
  let config = {};
69040
69218
  if (data.mode === "DATA") {
69041
69219
  const app = ibiz.hub.getApp(ibiz.env.appId);
@@ -69702,7 +69880,7 @@ var RecordNavUtil = class {
69702
69880
 
69703
69881
  // src/utils/jsonschema-util/jsonschema-util.ts
69704
69882
  import qs5 from "qs";
69705
- import { clone as clone50 } from "ramda";
69883
+ import { clone as clone51 } from "ramda";
69706
69884
  var JsonSchemaUtil = class {
69707
69885
  constructor() {
69708
69886
  /**
@@ -69955,7 +70133,7 @@ var JsonSchemaUtil = class {
69955
70133
  getMockEditor(context, item, valueOP) {
69956
70134
  if (valueOP && this.excludeOPs.includes(valueOP))
69957
70135
  return;
69958
- const baseMockEditor = clone50(this.DataTypeToEditor[item.type]);
70136
+ const baseMockEditor = clone51(this.DataTypeToEditor[item.type]);
69959
70137
  if (!baseMockEditor)
69960
70138
  return;
69961
70139
  baseMockEditor.appId = context.srfappid;
@@ -74131,7 +74309,7 @@ async function getDeDataMajorField(data, context, appDataEntityId) {
74131
74309
 
74132
74310
  // src/command/app/open-app-view/open-app-view.ts
74133
74311
  import { ModelError as ModelError30, RuntimeError as RuntimeError69 } from "@ibiz-template/core";
74134
- import { clone as clone51 } from "ramda";
74312
+ import { clone as clone52 } from "ramda";
74135
74313
  var _OpenAppViewCommand = class _OpenAppViewCommand {
74136
74314
  constructor() {
74137
74315
  ibiz.commands.register(_OpenAppViewCommand.TAG, this.exec.bind(this));
@@ -74148,7 +74326,7 @@ var _OpenAppViewCommand = class _OpenAppViewCommand {
74148
74326
  * @return {*} {(Promise<IModalData | void>)}
74149
74327
  */
74150
74328
  async exec(appViewId, _context, params = {}, opts = {}) {
74151
- const context = clone51(_context);
74329
+ const context = clone52(_context);
74152
74330
  if (context.srfsimple) {
74153
74331
  delete context.srfsimple;
74154
74332
  }
@@ -74900,7 +75078,7 @@ import { QXEvent as QXEvent14 } from "qx-util";
74900
75078
 
74901
75079
  // src/controller/notification/async-action.controller.ts
74902
75080
  import { QXEvent as QXEvent12 } from "qx-util";
74903
- import { clone as clone52 } from "ramda";
75081
+ import { clone as clone53 } from "ramda";
74904
75082
  import { isNil as isNil38, isNumber as isNumber4 } from "lodash-es";
74905
75083
  import dayjs9 from "dayjs";
74906
75084
  var AsyncActionController = class {
@@ -75011,7 +75189,7 @@ var AsyncActionController = class {
75011
75189
  } else {
75012
75190
  this.noticeResult(action);
75013
75191
  }
75014
- this.evt.emit("add", clone52(action));
75192
+ this.evt.emit("add", clone53(action));
75015
75193
  this.evt.emit("dataChange");
75016
75194
  }
75017
75195
  /**
@@ -75033,7 +75211,7 @@ var AsyncActionController = class {
75033
75211
  }
75034
75212
  this.noticeResult(action);
75035
75213
  }
75036
- this.evt.emit("change", clone52(action));
75214
+ this.evt.emit("change", clone53(action));
75037
75215
  this.evt.emit("dataChange");
75038
75216
  }
75039
75217
  noticeResult(action) {
@@ -76159,7 +76337,7 @@ var EngineFactory = class {
76159
76337
  import {
76160
76338
  RuntimeError as RuntimeError73,
76161
76339
  findRecursiveChild as findRecursiveChild3,
76162
- IBizContext as IBizContext8
76340
+ IBizContext as IBizContext9
76163
76341
  } from "@ibiz-template/core";
76164
76342
  import qs6 from "qs";
76165
76343
  var ViewEngineBase = class {
@@ -76490,7 +76668,7 @@ var ViewEngineBase = class {
76490
76668
  caption,
76491
76669
  icon: model.sysImage,
76492
76670
  appViewId: model.id,
76493
- context: IBizContext8.create(context),
76671
+ context: IBizContext9.create(context),
76494
76672
  params: { ...params },
76495
76673
  openMode: modal.mode,
76496
76674
  fullPath: window.location.hash
@@ -76686,7 +76864,7 @@ var ViewEngineBase = class {
76686
76864
 
76687
76865
  // src/engine/md-view.engine.ts
76688
76866
  import { RuntimeModelError as RuntimeModelError74 } from "@ibiz-template/core";
76689
- import { clone as clone53 } from "ramda";
76867
+ import { clone as clone54 } from "ramda";
76690
76868
  var MDViewEngine = class extends ViewEngineBase {
76691
76869
  /**
76692
76870
  * 多数据部件名称
@@ -76863,7 +77041,6 @@ var MDViewEngine = class extends ViewEngineBase {
76863
77041
  this.refresh();
76864
77042
  }
76865
77043
  }
76866
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
76867
77044
  async call(key, args) {
76868
77045
  if (key === "Edit" /* EDIT */ || key === "View" /* VIEW */) {
76869
77046
  return this.openData(args);
@@ -76965,7 +77142,7 @@ var MDViewEngine = class extends ViewEngineBase {
76965
77142
  ibiz.i18n.t("runtime.engine.logicNewdata")
76966
77143
  );
76967
77144
  }
76968
- const params = clone53(this.view.params);
77145
+ const params = clone54(this.view.params);
76969
77146
  if (copyMode) {
76970
77147
  params.srfcopymode = copyMode;
76971
77148
  }
@@ -79460,7 +79637,8 @@ var en = {
79460
79637
  viewParameterModalOption: "View parameter modalOption failed to parse: {error}",
79461
79638
  withdrawalConfirmed: "Is the execution of the withdrawal confirmed?",
79462
79639
  noFoundBehaviorModel: "No interface behavior model found for {actionId}.",
79463
- noEnableAI: "AI support not enabled"
79640
+ noEnableAI: "AI support not enabled",
79641
+ exportWithNoDataSet: "Export data without specifying an export dataset"
79464
79642
  },
79465
79643
  uiLogic: {
79466
79644
  interfaceConnectionConditional: "Interface Connection Conditional Logic Group Unconfigured Logic Item",
@@ -80107,7 +80285,8 @@ var zhCn = {
80107
80285
  viewParameterModalOption: "\u89C6\u56FE\u53C2\u6570modalOption \u89E3\u6790\u5931\u8D25\uFF1A{error}",
80108
80286
  withdrawalConfirmed: "\u662F\u5426\u786E\u8BA4\u6267\u884C\u64A4\u56DE\u64CD\u4F5C\uFF1F",
80109
80287
  noFoundBehaviorModel: "\u6CA1\u627E\u5230{actionId}\u7684\u754C\u9762\u884C\u4E3A\u6A21\u578B",
80110
- noEnableAI: "\u672A\u5F00\u542FAI\u652F\u6301"
80288
+ noEnableAI: "\u672A\u5F00\u542FAI\u652F\u6301",
80289
+ exportWithNoDataSet: "\u5BFC\u51FA\u6570\u636E\u672A\u6307\u5B9A\u5BFC\u51FA\u6570\u636E\u96C6"
80111
80290
  },
80112
80291
  uiLogic: {
80113
80292
  interfaceConnectionConditional: "\u754C\u9762\u8FDE\u63A5\u6761\u4EF6\u903B\u8F91\u7EC4\u672A\u914D\u7F6E\u903B\u8F91\u9879",