@ibiz-template/runtime 0.4.3 → 0.4.5

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 (65) hide show
  1. package/dist/index.esm.js +269 -70
  2. package/dist/index.system.min.js +2 -3
  3. package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts +8 -0
  4. package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts.map +1 -1
  5. package/out/controller/control/exp-bar/tree-exp-bar.controller.js +17 -0
  6. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.d.ts +1 -1
  7. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.d.ts.map +1 -1
  8. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.js +9 -3
  9. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.d.ts +1 -1
  10. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.d.ts.map +1 -1
  11. package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.js +7 -2
  12. package/out/controller/control/grid/grid/grid.controller.d.ts +8 -0
  13. package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
  14. package/out/controller/control/grid/grid/grid.controller.js +15 -0
  15. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts.map +1 -1
  16. package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.js +13 -0
  17. package/out/controller/control/toolbar/toolbar.controllerr.d.ts.map +1 -1
  18. package/out/controller/control/toolbar/toolbar.controllerr.js +3 -0
  19. package/out/controller/control/tree/tree.controller.d.ts +8 -0
  20. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  21. package/out/controller/control/tree/tree.controller.js +38 -0
  22. package/out/controller/control/tree/tree.service.js +1 -1
  23. package/out/global/global-util/global-util.d.ts +8 -1
  24. package/out/global/global-util/global-util.d.ts.map +1 -1
  25. package/out/global/global-util/global-util.js +8 -1
  26. package/out/interface/common/i-plugin-factory/i-plugin-factory.d.ts +4 -5
  27. package/out/interface/common/i-plugin-factory/i-plugin-factory.d.ts.map +1 -1
  28. package/out/interface/controller/state/control/i-tree.state.d.ts +14 -0
  29. package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
  30. package/out/model/utils/util.d.ts +4 -2
  31. package/out/model/utils/util.d.ts.map +1 -1
  32. package/out/platform/provider/platform-provider-base.d.ts.map +1 -1
  33. package/out/platform/provider/platform-provider-base.js +1 -0
  34. package/out/service/utils/dynamic-code-list/dynamic-code-list.d.ts.map +1 -1
  35. package/out/service/utils/dynamic-code-list/dynamic-code-list.js +6 -1
  36. package/out/ui-action/provider/front-ui-action-provider.js +2 -2
  37. package/out/ui-action/provider/index.d.ts +2 -1
  38. package/out/ui-action/provider/index.d.ts.map +1 -1
  39. package/out/ui-action/provider/index.js +2 -1
  40. package/out/utils/index.d.ts +1 -0
  41. package/out/utils/index.d.ts.map +1 -1
  42. package/out/utils/index.js +1 -0
  43. package/out/utils/theme-util/theme-util.d.ts +57 -0
  44. package/out/utils/theme-util/theme-util.d.ts.map +1 -0
  45. package/out/utils/theme-util/theme-util.js +95 -0
  46. package/package.json +5 -5
  47. package/src/controller/control/exp-bar/tree-exp-bar.controller.ts +18 -0
  48. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts +8 -3
  49. package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.ts +6 -2
  50. package/src/controller/control/grid/grid/grid.controller.ts +17 -0
  51. package/src/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.ts +14 -0
  52. package/src/controller/control/toolbar/toolbar.controllerr.ts +3 -0
  53. package/src/controller/control/tree/tree.controller.ts +45 -0
  54. package/src/controller/control/tree/tree.service.ts +1 -1
  55. package/src/global/global-util/global-util.ts +9 -0
  56. package/src/interface/common/i-plugin-factory/i-plugin-factory.ts +4 -5
  57. package/src/interface/controller/state/control/i-tree.state.ts +16 -0
  58. package/src/model/utils/util.ts +4 -1
  59. package/src/platform/provider/platform-provider-base.ts +1 -0
  60. package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +9 -3
  61. package/src/ui-action/provider/front-ui-action-provider.ts +2 -2
  62. package/src/ui-action/provider/index.ts +2 -0
  63. package/src/utils/index.ts +1 -0
  64. package/src/utils/theme-util/theme-util.ts +102 -0
  65. package/dist/index.system.min.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.system.min.js","sources":["../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/minMax.js","../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/isSameOrBefore.js","../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/quarterOfYear.js","../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/weekOfYear.js","../../../node_modules/.pnpm/dayjs@1.11.10/node_modules/dayjs/plugin/isoWeek.js","index.esm.js"],"sourcesContent":["!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_minMax=n()}(this,(function(){\"use strict\";return function(e,n,t){var i=function(e,n){if(!n||!n.length||1===n.length&&!n[0]||1===n.length&&Array.isArray(n[0])&&!n[0].length)return null;var t;1===n.length&&n[0].length>0&&(n=n[0]);t=(n=n.filter((function(e){return e})))[0];for(var i=1;i<n.length;i+=1)n[i].isValid()&&!n[i][e](t)||(t=n[i]);return t};t.max=function(){var e=[].slice.call(arguments,0);return i(\"isAfter\",e)},t.min=function(){var e=[].slice.call(arguments,0);return i(\"isBefore\",e)}}}));","!function(e,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isSameOrBefore=i()}(this,(function(){\"use strict\";return function(e,i){i.prototype.isSameOrBefore=function(e,i){return this.isSame(e,i)||this.isBefore(e,i)}}}));","!function(t,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=n():\"function\"==typeof define&&define.amd?define(n):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_quarterOfYear=n()}(this,(function(){\"use strict\";var t=\"month\",n=\"quarter\";return function(e,i){var r=i.prototype;r.quarter=function(t){return this.$utils().u(t)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(t-1))};var s=r.add;r.add=function(e,i){return e=Number(e),this.$utils().p(i)===n?this.add(3*e,t):s.bind(this)(e,i)};var u=r.startOf;r.startOf=function(e,i){var r=this.$utils(),s=!!r.u(i)||i;if(r.p(e)===n){var o=this.quarter()-1;return s?this.month(3*o).startOf(t).startOf(\"day\"):this.month(3*o+2).endOf(t).endOf(\"day\")}return u.bind(this)(e,i)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekOfYear=t()}(this,(function(){\"use strict\";var e=\"week\",t=\"year\";return function(i,n,r){var f=n.prototype;f.week=function(i){if(void 0===i&&(i=null),null!==i)return this.add(7*(i-this.week()),\"day\");var n=this.$locale().yearStart||1;if(11===this.month()&&this.date()>25){var f=r(this).startOf(t).add(1,t).date(n),s=r(this).endOf(e);if(f.isBefore(s))return 1}var a=r(this).startOf(t).date(n).startOf(e).subtract(1,\"millisecond\"),o=this.diff(a,e,!0);return o<0?r(this).startOf(\"week\").week():Math.ceil(o)},f.weeks=function(e){return void 0===e&&(e=null),this.week(e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_isoWeek=t()}(this,(function(){\"use strict\";var e=\"day\";return function(t,i,s){var a=function(t){return t.add(4-t.isoWeekday(),e)},d=i.prototype;d.isoWeekYear=function(){return a(this).year()},d.isoWeek=function(t){if(!this.$utils().u(t))return this.add(7*(t-this.isoWeek()),e);var i,d,n,o,r=a(this),u=(i=this.isoWeekYear(),d=this.$u,n=(d?s.utc:s)().year(i).startOf(\"year\"),o=4-n.isoWeekday(),n.isoWeekday()>4&&(o+=7),n.add(o,e));return r.diff(u,\"week\")+1},d.isoWeekday=function(e){return this.$utils().u(e)?this.day()||7:this.day(this.day()%7?e:e-7)};var n=d.startOf;d.startOf=function(e,t){var i=this.$utils(),s=!!i.u(t)||t;return\"isoweek\"===i.p(e)?s?this.date(this.date()-(this.isoWeekday()-1)).startOf(\"day\"):this.date(this.date()-1-(this.isoWeekday()-1)+7).endOf(\"day\"):n.bind(this)(e,t)}}}));","// src/config/global-config.ts\nvar GlobalConfig = class {\n constructor() {\n // 全局视图配置\n this.view = {\n enableDataInfoBar: true,\n expCacheMode: \"TABEXPPANEL:\"\n };\n // 全局表格配置\n this.grid = {\n editShowMode: \"row\",\n editSaveMode: \"cell-blur\",\n overflowMode: \"wrap\"\n };\n // 全局菜单配置\n this.appMenu = {\n enableEcho: true\n };\n // 全局代码表配置\n this.codeList = {\n timeout: 60 * 60 * 1e3\n };\n // 全局表单配置\n this.form = {\n mdCtrlConfirmBeforeRemove: true\n };\n }\n};\n\n// src/register/register-center.ts\nvar RegisterCenter = class {\n constructor() {\n /**\n * 已注册的适配器Map\n * @author lxm\n * @date 2023-05-06 09:55:33\n * @protected\n * @type {Map<string, NewProvider>}\n */\n this.providers = /* @__PURE__ */ new Map();\n }\n /**\n * 注册适配器\n * @author lxm\n * @date 2023-05-06 09:55:55\n * @param {string} key 唯一标识\n * @param {NewProvider} newProvider 创建适配器实例的回调\n */\n register(key, newProvider) {\n this.providers.set(key, newProvider);\n }\n /**\n * 注销适配器\n * @author lxm\n * @date 2023-05-06 09:56:19\n * @param {string} key\n */\n unRegister(key) {\n this.providers.delete(key);\n }\n /**\n * 获取适配器的实例\n * @author lxm\n * @date 2023-05-06 09:56:34\n * @param {string} key 唯一标识\n * @param {...Parameters<NewProvider>} args 回调参数\n * @return {*} {(IProvider | undefined)}\n */\n get(key, ...args) {\n const func = this.providers.get(key);\n if (func) {\n return func(...args);\n }\n }\n};\n\n// src/command/app/app-func/app-func.ts\nimport { ModelError as ModelError15, RuntimeError as RuntimeError22 } from \"@ibiz-template/core\";\n\n// src/utils/handlebars/utils/helper/helper.ts\nvar HelperUtil = class {\n /**\n * 判断字符串是否为助手\n *\n * @author chitanda\n * @date 2021-12-30 10:12:26\n * @static\n * @param {string} name\n * @return {*} {boolean}\n */\n static isHelperName(name) {\n return this.helperNames.includes(name);\n }\n /**\n * 判断类助手统一结果调用处理\n *\n * @author chitanda\n * @date 2021-12-29 17:12:23\n * @static\n * @param {unknown} context 执行上下文\n * @param {boolean} bol 判断结果\n * @param {Handlebars.HelperOptions} options\n * @return {*} {(string | boolean)}\n */\n static handleJudgmentExecute(context, bol, options) {\n if (options.fn) {\n return bol ? options.fn(context) : options.inverse(context);\n }\n return bol ? options.hash.yes = true : options.hash.no = false;\n }\n};\n/**\n * 当前所有助手 tag 名称\n *\n * @author chitanda\n * @date 2021-12-30 10:12:39\n * @protected\n * @type {string[]}\n */\nHelperUtil.helperNames = [\n \"lookup\",\n \"log\",\n \"and\",\n \"camelCase\",\n \"concat\",\n \"eq\",\n \"gt\",\n \"get\",\n \"lowerCase\",\n \"lt\",\n \"lte\",\n \"neq\",\n \"not\",\n \"or\",\n \"pascalCase\",\n \"pluralize\",\n \"snakeCase\",\n \"spinalCase\",\n \"upperCase\"\n];\n\n// src/utils/handlebars/helpers/helper-base.ts\nvar HelperBase = class {\n /**\n * Creates an instance of HelperBase.\n *\n * @author chitanda\n * @date 2021-12-29 14:12:47\n * @param {string} tag 助手标识\n */\n constructor(Handlebars2, tag) {\n Handlebars2.registerHelper(tag, this.onExecute);\n }\n};\n\n// src/utils/handlebars/helpers/and/and.ts\nvar HelperAnd = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"and\");\n }\n onExecute(...args) {\n const options = args[args.length - 1];\n args.pop();\n const arr = args.filter((item) => !!item);\n const bol = arr.length === args.length;\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/camel-case/camel-case.ts\nimport { camelCase } from \"lodash-es\";\nvar HelperCamelCase = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"camelCase\");\n }\n onExecute(param) {\n if (!param) {\n return \"\";\n }\n return camelCase(param);\n }\n};\n\n// src/utils/handlebars/helpers/concat/concat.ts\nvar HelperConcat = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"concat\");\n }\n onExecute(...args) {\n args.pop();\n return args.join(\"\");\n }\n};\n\n// src/utils/handlebars/helpers/eq/eq.ts\nimport { eq } from \"lodash-es\";\nvar HelperEq = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"eq\");\n }\n onExecute(param, param2, options) {\n const bol = eq(param, param2);\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/gt/gt.ts\nimport { gt } from \"lodash-es\";\nvar HelperGt = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"gt\");\n }\n onExecute(param, param2, options) {\n const bol = gt(param, param2);\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/gte/gte.ts\nimport { gte } from \"lodash-es\";\nvar HelperGte = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"gte\");\n }\n onExecute(param, param2, options) {\n const bol = gte(param, param2);\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/eq-property-value/eq-property-value.ts\nimport { eq as eq2, findIndex, isArray } from \"lodash-es\";\nvar HelperEqPropertyValue = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"eqPropertyValue\");\n }\n onExecute(obj, key, val, options) {\n let bol = false;\n if (isArray(obj)) {\n bol = !eq2(\n findIndex(obj, (o) => eq2(o[key], val)),\n -1\n );\n } else {\n bol = // eslint-disable-next-line no-prototype-builtins\n obj.hasOwnProperty(key) && (bol = eq2(obj[key], val));\n }\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/json/json-parse.ts\nvar HelperJsonParse = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"jsonParse\");\n }\n onExecute(obj) {\n return JSON.parse(obj);\n }\n};\n\n// src/utils/handlebars/helpers/json/json-stringify.ts\nvar HelperJsonStringify = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"jsonStringify\");\n }\n onExecute(obj, space) {\n return JSON.stringify(\n obj,\n null,\n typeof space === \"number\" ? space : void 0\n );\n }\n};\n\n// src/utils/handlebars/helpers/lower-case/lower-case.ts\nvar HelperLowerCase = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"lowerCase\");\n }\n onExecute(param) {\n if (!param) {\n return \"\";\n }\n return param.toLowerCase();\n }\n};\n\n// src/utils/handlebars/helpers/lt/lt.ts\nimport { lt } from \"lodash-es\";\nvar HelperLt = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"lt\");\n }\n onExecute(param, param2, options) {\n const bol = lt(param, param2);\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/lte/lte.ts\nimport { lte } from \"lodash-es\";\nvar HelperLte = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"lte\");\n }\n onExecute(param, param2, options) {\n const bol = lte(param, param2);\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/neq/neq.ts\nimport { eq as eq3 } from \"lodash-es\";\nvar HelperNeq = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"neq\");\n }\n onExecute(param, param2, options) {\n const bol = !eq3(param, param2);\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/not/not.ts\nvar HelperNot = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"not\");\n }\n onExecute(param, options) {\n const bol = Handlebars.Utils.isEmpty(param);\n return HelperUtil.handleJudgmentExecute(this, bol, options);\n }\n};\n\n// src/utils/handlebars/helpers/or/or.ts\nvar HelperOr = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"or\");\n }\n onExecute(...args) {\n var _a;\n const options = args[args.length - 1];\n args.pop();\n const item = args.find((itemArg) => !!itemArg);\n if (options.fn) {\n const data = ((_a = options.data) == null ? void 0 : _a.root) || {};\n return item ? options.fn(data) : options.inverse(data);\n }\n return item || \"\";\n }\n};\n\n// src/utils/handlebars/helpers/pascal-case/pascal-case.ts\nimport { upperFirst } from \"lodash-es\";\nvar HelperPascalCase = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"pascalCase\");\n }\n onExecute(param) {\n if (!param) {\n return \"\";\n }\n return upperFirst(param);\n }\n};\n\n// src/utils/handlebars/helpers/snake-case/snake-case.ts\nimport { snakeCase } from \"lodash-es\";\nvar HelperSnakeCase = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"snakeCase\");\n }\n onExecute(param) {\n if (!param) {\n return \"\";\n }\n return snakeCase(param);\n }\n};\n\n// src/utils/handlebars/helpers/spinal-case/spinal-case.ts\nimport { kebabCase } from \"lodash-es\";\nvar HelperSpinalCase = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"spinalCase\");\n }\n onExecute(param) {\n if (!param) {\n return \"\";\n }\n return kebabCase(param);\n }\n};\n\n// src/utils/handlebars/helpers/upper-case/upper-case.ts\nvar HelperUpperCase = class extends HelperBase {\n constructor(hbs) {\n super(hbs, \"upperCase\");\n }\n onExecute(param) {\n if (!param) {\n return \"\";\n }\n return param.toUpperCase();\n }\n};\n\n// src/utils/handlebars/helpers/index.ts\nfunction installHelpers(hsb) {\n new HelperAnd(hsb);\n new HelperCamelCase(hsb);\n new HelperConcat(hsb);\n new HelperEq(hsb);\n new HelperGt(hsb);\n new HelperGte(hsb);\n new HelperJsonParse(hsb);\n new HelperJsonStringify(hsb);\n new HelperLowerCase(hsb);\n new HelperLt(hsb);\n new HelperLte(hsb);\n new HelperNeq(hsb);\n new HelperNot(hsb);\n new HelperOr(hsb);\n new HelperPascalCase(hsb);\n new HelperSnakeCase(hsb);\n new HelperSpinalCase(hsb);\n new HelperUpperCase(hsb);\n new HelperEqPropertyValue(hsb);\n}\n\n// src/utils/handlebars/handlebars.ts\nvar HandlebarsUtil = class {\n constructor() {\n /**\n * 如果已经在请求中,则不再重复请求\n *\n * @author chitanda\n * @date 2023-08-30 11:08:58\n * @protected\n * @type {(Promise<unknown> | null)}\n */\n this.p = null;\n }\n /**\n * handlebars 是否已经初始化\n *\n * @author chitanda\n * @date 2023-08-28 18:08:01\n * @readonly\n * @type {boolean}\n */\n get isInit() {\n return !!this.hsb;\n }\n /**\n * 异步加载,初始化 handlebars\n *\n * @author chitanda\n * @date 2023-08-28 17:08:24\n * @return {*} {Promise<unknown>}\n */\n async init() {\n if (this.isInit) {\n return;\n }\n if (this.p) {\n return this.p;\n }\n this.p = import(\"handlebars\");\n const module = await this.p;\n this.hsb = module.default || module;\n this.p = null;\n installHelpers(this.hsb);\n return this.hsb;\n }\n /**\n * 异步绘制模板,返回渲染后的字符串\n *\n * @author chitanda\n * @date 2023-08-28 18:08:10\n * @param {string} template\n * @param {IData} data\n * @return {*} {Promise<string>}\n */\n async render(template, data) {\n if (!this.hsb) {\n await this.init();\n }\n const tmp = this.hsb.compile(template);\n return tmp(data);\n }\n /**\n * 同步绘制模板,返回渲染后的字符串\n *\n * @description 需要自己保证 handlebars 已经加载\n * @author chitanda\n * @date 2023-08-28 18:08:14\n * @param {string} template\n * @param {IData} data\n * @return {*} {string}\n */\n syncRender(template, data) {\n if (!this.hsb) {\n throw new Error(\"handlebars not init\");\n }\n const tmp = this.hsb.compile(template);\n return tmp(data);\n }\n};\n\n// src/utils/nav-params/nav-params.ts\nimport { isEmpty } from \"lodash-es\";\nimport { isNilOrEmpty, notNilEmpty } from \"qx-util\";\nfunction convertObjectToNavParams(navParams) {\n const result = [];\n const reg2 = /^%(.+)%$/;\n for (const key in navParams) {\n let rawValue = true;\n let value = navParams[key];\n if (notNilEmpty(navParams[key]) && reg2.test(navParams[key])) {\n rawValue = false;\n value = navParams[key].substring(1, navParams[key].length - 1);\n }\n result.push({\n key: key.toLowerCase(),\n rawValue,\n value\n });\n }\n return result;\n}\nfunction convertNavData(navParams, ...origins) {\n if (!navParams || isEmpty(navParams)) {\n return {};\n }\n const navParamsArr = Array.isArray(navParams) ? navParams : convertObjectToNavParams(navParams);\n return convertNavDataByArray(navParamsArr, ...origins);\n}\nfunction getVal(origins, key) {\n const findOrigin = origins.find((item) => {\n if (isNilOrEmpty(item)) {\n return false;\n }\n return (\n // proxy数据判断是否能拿到值\n item[key] || // 上下文等判断是否有这个属性,如果有且值为空,则赋该空值\n Object.prototype.hasOwnProperty.call(item, key)\n );\n });\n return { find: !!findOrigin, value: findOrigin == null ? void 0 : findOrigin[key] };\n}\nfunction convertNavDataByArray(naviDatas, ...origins) {\n const regex = /\\$\\{[^}]*\\}/g;\n const result = {};\n for (const naviData of naviDatas) {\n if (!naviData.rawValue) {\n const matchArr = naviData.value.match(regex);\n if (matchArr !== null) {\n let valueStr = naviData.value;\n matchArr.forEach((key) => {\n const { find, value } = getVal(\n origins,\n // 去掉${},适配平台模型转小写取值\n key.slice(2, -1).toLowerCase()\n );\n if (find) {\n valueStr = valueStr.replace(key, \"\".concat(value));\n }\n });\n result[naviData.key.toLowerCase()] = valueStr;\n } else {\n const { find, value } = getVal(origins, naviData.value.toLowerCase());\n if (find) {\n result[naviData.key.toLowerCase()] = value;\n }\n }\n } else {\n result[naviData.key.toLowerCase()] = naviData.value || null;\n }\n }\n return result;\n}\nfunction formatMultiData(navParams, dataArr) {\n const result = {};\n if (!navParams) {\n return result;\n }\n const naviArr = Array.isArray(navParams) ? navParams : convertObjectToNavParams(navParams);\n const data1 = dataArr[0];\n naviArr.forEach((naviParam) => {\n const { rawValue, value } = naviParam;\n if (!rawValue && value && Object.prototype.hasOwnProperty.call(data1, value)) {\n result[value] = dataArr.map((item) => item[value]).join(\";\");\n }\n });\n return result;\n}\n\n// src/utils/nav-params/calc-nav-params.ts\nfunction calcNavParams(model, originParams) {\n const { deName, navFilter, pickupDEFName, navContexts, navParams } = model;\n const { context, params, data, derValue } = originParams;\n const resultContext = {};\n const resultParams = {};\n const deSrfkey = derValue || data.srfkey;\n if (deSrfkey) {\n if (deName) {\n resultContext[deName] = deSrfkey;\n }\n if (navFilter) {\n resultParams[navFilter] = deSrfkey;\n }\n if (pickupDEFName) {\n resultParams[\"n_\".concat(pickupDEFName.toLowerCase(), \"_eq\")] = deSrfkey;\n }\n }\n const tempContext = convertNavData(navContexts, data, params, context);\n const tempParams = convertNavData(navParams, data, params, context);\n Object.assign(resultContext, tempContext);\n Object.assign(resultParams, tempParams);\n return {\n resultContext,\n resultParams\n };\n}\n\n// src/utils/open-redirect-view/open-redirect-view.ts\nimport { RuntimeError, RuntimeModelError as RuntimeModelError2 } from \"@ibiz-template/core\";\nimport { isNilOrEmpty as isNilOrEmpty2, notNilEmpty as notNilEmpty3 } from \"qx-util\";\nimport qs from \"qs\";\n\n// src/model/utils/util.ts\nimport { RuntimeModelError } from \"@ibiz-template/core\";\nfunction findModelChild(models, id) {\n if (models && id) {\n const model = models.find((item) => {\n if (item.id) {\n return item.id.toLowerCase() === id.toLowerCase();\n }\n return false;\n });\n if (model) {\n return model;\n }\n }\n return null;\n}\nfunction getControl(view, key) {\n var _a, _b;\n let controls = view.controls || [];\n if ((_b = (_a = view.viewLayoutPanel) == null ? void 0 : _a.controls) == null ? void 0 : _b.length) {\n controls = controls.concat(view.viewLayoutPanel.controls);\n }\n return controls.find((item) => {\n return item.name === key || item.codeName === key || item.id === key;\n });\n}\nfunction getAppViewRef(view, key) {\n var _a, _b;\n let appViewRefs = view.appViewRefs || [];\n if ((_b = (_a = view.viewLayoutPanel) == null ? void 0 : _a.appViewRefs) == null ? void 0 : _b.length) {\n appViewRefs = appViewRefs.concat(view.viewLayoutPanel.appViewRefs);\n }\n return appViewRefs.find((item) => {\n return item.name === key || item.id === key;\n });\n}\nfunction parseUserParams(userParams) {\n const navigateContexts = {};\n const navigateParams = {};\n const other = {};\n for (const key in userParams) {\n if (Object.prototype.hasOwnProperty.call(userParams, key)) {\n const param = userParams[key];\n if (key.indexOf(\".\") !== -1) {\n const splitArr = key.split(\".\");\n switch (splitArr[0]) {\n case \"SRFNAVPARAM\":\n Object.assign(navigateParams, { [splitArr[1]]: param });\n break;\n case \"SRFNAVCTX\":\n Object.assign(navigateContexts, { [splitArr[1]]: param });\n break;\n default:\n Object.assign(other, { key: param });\n break;\n }\n }\n }\n }\n return { navigateContexts, navigateParams, other };\n}\nfunction getPFPlugin(id, appId) {\n const app = ibiz.hub.getApp(appId);\n if (!app) {\n throw new RuntimeModelError(app, \"\\u672A\\u627E\\u5230\\u5E94\\u7528\");\n }\n const { model } = app;\n if (!model.appPFPluginRefs) {\n throw new RuntimeModelError(model, \"\\u5E94\\u7528\\u672A\\u914D\\u7F6E\\u63D2\\u4EF6\");\n }\n const plugin = model.appPFPluginRefs.find(\n (item) => item.pluginCode.toLowerCase() === id.toLowerCase()\n );\n if (!plugin) {\n throw new Error(\"\\u672A\\u627E\\u5230\\u63D2\\u4EF6\".concat(id));\n }\n return plugin;\n}\nfunction getControlPanel(control) {\n let layoutPanel;\n if (control.controlRenders) {\n const panelRender = control.controlRenders.find(\n (item) => item.renderType === \"LAYOUTPANEL\" && !!item.layoutPanel\n );\n layoutPanel = panelRender == null ? void 0 : panelRender.layoutPanel;\n }\n return layoutPanel;\n}\n\n// src/model/layout/layout.ts\nimport { isArray as isArray2, isObject, isString } from \"lodash-es\";\nfunction calcLayoutHeightWidth(layoutPos) {\n const { width, height, widthMode, heightMode } = layoutPos;\n const result = { width: \"\", height: \"\" };\n if (widthMode === \"FULL\") {\n result.width = \"100%\";\n } else if (width && width > 0) {\n if (width > 0 && width <= 1) {\n result.width = \"\".concat(width * 100, \"%\");\n } else if (widthMode === \"PERCENTAGE\") {\n result.width = \"\".concat(width, \"%\");\n } else {\n result.width = \"\".concat(width, \"px\");\n }\n }\n if (heightMode === \"FULL\") {\n result.height = \"100%\";\n } else if (height && height > 0) {\n if (height > 0 && height <= 1) {\n result.height = \"\".concat(height * 100, \"%\");\n } else if (heightMode === \"PERCENTAGE\") {\n result.height = \"\".concat(height, \"%\");\n } else {\n result.height = \"\".concat(height, \"px\");\n }\n }\n return result;\n}\nfunction calcContentAlignStyle(layoutPos) {\n const { valignSelf, halignSelf } = layoutPos;\n let result;\n if (valignSelf || halignSelf) {\n result = { display: \"flex\" };\n switch (valignSelf) {\n case \"TOP\":\n Object.assign(result, { \"align-items\": \"flex-start\" });\n break;\n case \"MIDDLE\":\n Object.assign(result, { \"align-items\": \"center\" });\n break;\n case \"BOTTOM\":\n Object.assign(result, { \"align-items\": \"flex-end\" });\n break;\n default:\n break;\n }\n switch (halignSelf) {\n case \"LEFT\":\n Object.assign(result, { \"justify-content\": \"flex-start\" });\n break;\n case \"CENTER\":\n Object.assign(result, { \"justify-content\": \"center\" });\n break;\n case \"RIGHT\":\n Object.assign(result, { \"justify-content\": \"flex-end\" });\n break;\n case \"JUSTIFY\":\n Object.assign(result, { \"justify-content\": \"space-between\" });\n break;\n default:\n break;\n }\n }\n return result;\n}\nfunction calcGridLayoutPos(layoutPos) {\n const {\n layout,\n colXS,\n colXSOffset,\n colSM,\n colSMOffset,\n colMD,\n colMDOffset,\n colLG,\n colLGOffset\n } = layoutPos;\n const calcActualValues = (span, offset) => {\n const multiplier = layout === \"TABLE_24COL\" ? 1 : 2;\n const spanDefault = layout === \"TABLE_24COL\" ? 24 : 12;\n const _span = (!span || span === -1 ? spanDefault : span) * multiplier;\n const _offset = !offset || offset === -1 ? void 0 : offset;\n return {\n span: _span,\n offset: _offset\n };\n };\n return {\n xs: calcActualValues(colXS, colXSOffset),\n sm: calcActualValues(colSM, colSMOffset),\n md: calcActualValues(colMD, colMDOffset),\n lg: calcActualValues(colLG, colLGOffset)\n };\n}\nfunction calcDynaClass(expression, data) {\n const classArr = [];\n const result = ScriptFactory.execScriptFn({ data }, expression, {\n singleRowReturn: true,\n isAsync: false\n });\n if (isString(result)) {\n classArr.push(result);\n } else if (isArray2(result)) {\n classArr.push(...result);\n } else if (isObject(result)) {\n Object.keys(result).forEach((key) => {\n if (result[key]) {\n classArr.push(key);\n }\n });\n }\n return classArr;\n}\n\n// src/model/main-state/main-state.ts\nfunction matchMainState(appDataEntity, data) {\n const { mainStateAppDEFieldIds, demainStates } = appDataEntity;\n if (mainStateAppDEFieldIds && demainStates) {\n const values = [];\n mainStateAppDEFieldIds.forEach((field) => {\n values.push(data[field]);\n });\n return demainStates.find((item) => {\n const { stateValue, state2Value, state3Value } = item;\n let result = true;\n const stateValues = [stateValue, state2Value, state3Value];\n for (let i = 0; i < values.length; i++) {\n if (\"\".concat(values[i]) !== \"\".concat(stateValues[i])) {\n result = false;\n break;\n }\n }\n return result;\n });\n }\n}\nfunction calcMainStateOPPrivsStrs(mainState, appDataEntity) {\n const app = ibiz.hub.getApp().model;\n const { demainStateOPPrivs, opprivAllowMode } = mainState;\n const mainStateOPPrivIds = (demainStateOPPrivs == null ? void 0 : demainStateOPPrivs.map((item) => item.name)) || [];\n let opprivs = [];\n if (opprivAllowMode) {\n opprivs = mainStateOPPrivIds;\n } else {\n const allOPPrivs = [...app.deopprivs, ...appDataEntity.deopprivs];\n opprivs = allOPPrivs.filter((item) => !mainStateOPPrivIds.includes(item.name)).map((item) => item.name);\n }\n return opprivs;\n}\n\n// src/model/data-entity/data-entity.ts\nimport { notNilEmpty as notNilEmpty2 } from \"qx-util\";\nfunction calcDeCodeNameById(id) {\n const arr = id.split(\".\");\n return arr.pop();\n}\nfunction hasDeCodeName(params, entityId) {\n const codeName = calcDeCodeNameById(entityId);\n return notNilEmpty2(params[codeName]);\n}\nasync function getDeACMode(appDEACModeId, entityId, srfappid) {\n var _a;\n const appDataEntity = await ibiz.hub.getAppDataEntity(entityId, srfappid);\n const deACMode = (_a = appDataEntity.appDEACModes) == null ? void 0 : _a.find((mode) => {\n return mode.id === appDEACModeId;\n });\n return deACMode;\n}\nfunction findDELogic(appDELogicId, entity) {\n var _a;\n return (_a = entity.appDELogics) == null ? void 0 : _a.find((item) => item.id === appDELogicId);\n}\nfunction filterFieldLogics(entity, type) {\n var _a, _b;\n const resultIds = [];\n (_a = entity.appDEFields) == null ? void 0 : _a.forEach((field) => {\n if (type === \"compute\" && field.computeAppDEFLogicId) {\n resultIds.push(field.computeAppDEFLogicId);\n } else if (type === \"change\" && field.onChangeAppDEFLogicId) {\n resultIds.push(field.onChangeAppDEFLogicId);\n } else if (type === \"default\" && field.defaultValueAppDEFLogicId) {\n resultIds.push(field.defaultValueAppDEFLogicId);\n }\n });\n return ((_b = entity.appDELogics) == null ? void 0 : _b.filter((item) => resultIds.includes(item.id))) || [];\n}\nfunction findFieldById(entity, fieldId) {\n var _a;\n return (_a = entity.appDEFields) == null ? void 0 : _a.find((item) => item.id === fieldId);\n}\n\n// src/model/ui-action/ui-action.ts\nasync function getUIActionById(id) {\n const [, , appId] = id.split(\"@\");\n const app = ibiz.hub.getApp(appId);\n return app.getUIAction(id);\n}\n\n// src/model/tree/tree-node.ts\nfunction getRootNode(tree) {\n return tree.detreeNodes.find((node) => node.rootNode);\n}\nfunction getTreeNode(tree, id) {\n return tree.detreeNodes.find((node) => node.id === id);\n}\n\n// src/model/tree/tree-node-rs.ts\nfunction isNodeRsShow(searchMode, hasQuery) {\n return searchMode === 3 || (hasQuery ? searchMode === 1 : searchMode === 2);\n}\nfunction getChildNodeRSs(tree, args) {\n const parentId = args.parentId || getRootNode(tree).id;\n return tree.detreeNodeRSs.filter((nodeRs) => {\n return nodeRs.parentDETreeNodeId === parentId && isNodeRsShow(nodeRs.searchMode, args.hasQuery);\n });\n}\n\n// src/model/grid/column.ts\nfunction findEditItem(grid, codeName) {\n var _a;\n return (_a = grid.degridEditItems) == null ? void 0 : _a.find((item) => {\n return item.codeName === codeName;\n });\n}\n\n// src/model/form/form-detail.ts\nfunction findChildFormDetails(parent) {\n let childDetails;\n switch (parent.detailType) {\n case \"TABPANEL\":\n childDetails = parent.deformTabPages;\n break;\n case \"FORMPAGE\":\n case \"TABPAGE\":\n case \"GROUPPANEL\":\n childDetails = parent.deformDetails;\n break;\n default:\n break;\n }\n return childDetails || [];\n}\nfunction isFormDataContainer(detail) {\n return detail.detailType === \"MDCTRL\";\n}\n\n// src/model/view/view.ts\nfunction getControlsByView(view) {\n const { viewLayoutPanel } = view;\n const controls = view.controls || [];\n if (viewLayoutPanel) {\n controls.push(...viewLayoutPanel.controls || []);\n }\n return controls;\n}\nfunction getViewLogics(view) {\n const { viewLayoutPanel } = view;\n const viewLogics = view.appViewLogics || [];\n if (viewLayoutPanel) {\n viewLogics.push(...viewLayoutPanel.appViewLogics || []);\n }\n return viewLogics;\n}\nfunction getViewEngines(view) {\n const { viewLayoutPanel } = view;\n const appViewEngines = view.appViewEngines || [];\n if (viewLayoutPanel) {\n appViewEngines.push(...viewLayoutPanel.appViewEngines || []);\n }\n return appViewEngines.filter((engine) => {\n switch (engine.engineCat) {\n case \"CTRL\":\n ibiz.log.warn(\"\\u672A\\u652F\\u6301\\u7684\\u5F15\\u64CE\\u5206\\u7C7B\\uFF1A\".concat(engine.engineType));\n return false;\n default:\n return true;\n }\n });\n}\n\n// src/model/panel/data-container.ts\nfunction isDataContainer(panelItem) {\n return panelItem.itemType === \"CONTAINER\" && [\"CONTAINER_MULTIDATA\", \"CONTAINER_SINGLEDATA\"].includes(\n panelItem.predefinedType\n );\n}\n\n// src/model/panel/panel-field.ts\nvar ChildKeys = [\"panelItems\", \"panelTabPages\", \"rootPanelItems\"];\nfunction _getAllPanelField(model) {\n let childItems = [];\n for (const key of ChildKeys) {\n if (model[key]) {\n childItems = model[key];\n break;\n }\n }\n const fields = [];\n if (childItems.length) {\n fields.push(...childItems.filter((item) => item.itemType === \"FIELD\"));\n childItems.forEach((item) => {\n if (!isDataContainer(item)) {\n fields.push(..._getAllPanelField(item));\n }\n });\n }\n return fields;\n}\nfunction getAllPanelField(model) {\n return _getAllPanelField(model);\n}\n\n// src/utils/open-redirect-view/open-redirect-view.ts\nasync function openRedirectView(appView, context, params = {}, opts = {}) {\n return openDERedirectView(\n appView,\n context,\n params,\n opts\n );\n}\nasync function toLocalOpenWFRedirectView(context, linkUrl, opts = {}) {\n const i = linkUrl.lastIndexOf(\"?\");\n const queryStr = decodeURIComponent(\n linkUrl.substring(i + 1, linkUrl.length)\n );\n const params = qs.parse(queryStr, { delimiter: \";\" });\n const deName = params.srfdename || \"\";\n if (!deName) {\n throw new RuntimeError(\"\\u91CD\\u5B9A\\u5411\\u53C2\\u6570\\u7F3A\\u5C11\\u5B9E\\u4F53\\u540D\\u79F0\");\n }\n const app = ibiz.hub.getApp(context.srfappid);\n const deCodeName = app.deName2DeCodeName.get(deName.toUpperCase());\n if (!deCodeName) {\n throw new RuntimeError(\"\\u672A\\u627E\\u5230\\u6307\\u5B9A\\u5B9E\\u4F53\\u7684codeName: \".concat(deName));\n }\n params[deCodeName.toLowerCase()] = params[deName.toLowerCase()];\n const deRdViewCodeName = \"\".concat(deCodeName).concat(ibiz.env.isMob ? \"Mob\" : \"\", \"RedirectView\");\n const deRdView = await ibiz.hub.getAppView(deRdViewCodeName);\n delete params.srfdename;\n if (params.srfwf !== \"undo\") {\n const tags = params.processDefinitionKey.split(\"-\");\n const wfTag = tags[3];\n const wf = wfTag.substring(0, wfTag.lastIndexOf(\"v\"));\n const wfVersion = wfTag.substring(wfTag.lastIndexOf(\"v\"));\n params.wf = wf;\n params.wfVersion = wfVersion;\n }\n if (params.srfprocessinstanceid) {\n context.srfprocessinstanceid = params.srfprocessinstanceid;\n delete params.srfprocessinstanceid;\n }\n await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n deRdView.id,\n context,\n params,\n opts\n );\n}\nasync function openDERedirectView(appView, context, params = {}, opts = {}) {\n var _a;\n const navContext = appView.appViewNavContexts || [];\n const navContextData = convertNavData(navContext, params, context);\n context = Object.assign(context.clone(), navContextData);\n const navParams = appView.appViewNavParams || [];\n const navParamsData = convertNavData(navParams, params, context);\n Object.assign(params, navParamsData);\n const entityId = appView.appDataEntityId;\n const key = calcDeCodeNameById(entityId);\n let curData = ((_a = opts.data) == null ? void 0 : _a[0]) || {};\n context[key] = curData[key] || context[key] || params[key];\n const actionId = appView.getDataAppDEActionId;\n const app = ibiz.hub.getApp(appView.appId);\n const service = await app.deService.getService(entityId);\n ibiz.loading.showRedirect();\n try {\n const res = await service.exec(actionId || \"get\", context, params);\n if (res.ok) {\n curData = res.data;\n let linkUrl = curData.linkurl;\n if (linkUrl) {\n if (context.srfprocessinstanceid) {\n linkUrl += \";srfprocessinstanceid=\".concat(context.srfprocessinstanceid);\n }\n if (ibiz.env.dev && linkUrl.indexOf(\"appredirectview?\") !== -1) {\n linkUrl = linkUrl.slice(linkUrl.indexOf(\"appredirectview?\"));\n }\n if (linkUrl.startsWith(\"http://\") || linkUrl.startsWith(\"https://\")) {\n return new Promise((resolve) => {\n const newWindow = window.open(linkUrl, \"_blank\");\n if (newWindow) {\n newWindow.callback = () => {\n resolve({ ok: true, data: [] });\n };\n }\n });\n }\n if (linkUrl.startsWith(\"appredirectview?\")) {\n await toLocalOpenWFRedirectView(context, linkUrl, opts);\n return { ok: true, data: [] };\n }\n return { ok: false, data: [] };\n }\n }\n } finally {\n ibiz.loading.hideRedirect();\n }\n const entity = await ibiz.hub.getAppDataEntity(entityId, appView.appId);\n const rdTag = await calcDERdTag(entity, appView, params, curData);\n const rdTagItems = rdTag.split(\":\");\n const wfRdTag = rdTagItems.length === 2 ? rdTag : rdTagItems.slice(0, 2).join(\":\");\n const deRdTag = \"\".concat(entity.name.toUpperCase(), \":\").concat(rdTag);\n const allRefViews = appView.redirectAppViewRefs;\n const refView = allRefViews == null ? void 0 : allRefViews.find((view) => {\n const matchKey = view.name || view.id;\n return matchKey === deRdTag || matchKey === rdTag || matchKey === wfRdTag;\n });\n if (refView) {\n const viewId = refView.refAppViewId;\n if (viewId) {\n const result = await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n viewId,\n context,\n params,\n { ...opts, data: [curData] }\n );\n if (result) {\n return result;\n }\n } else {\n throw new RuntimeModelError2(refView, \"\\u672A\\u914D\\u7F6E\\u5B9E\\u9645\\u5F15\\u7528\\u89C6\\u56FE\");\n }\n } else {\n ibiz.log.error(\n \"\\u91CD\\u5B9A\\u5411\\u89C6\\u56FE\\u5F15\\u7528\\u6709\\uFF1A\",\n allRefViews == null ? void 0 : allRefViews.map(({ refAppViewId, name, realTitle }) => ({\n viewId: refAppViewId,\n tag: name,\n title: realTitle\n }))\n );\n throw new RuntimeModelError2(\n appView,\n \"\\u672A\\u627E\\u5230\\u91CD\\u5B9A\\u5411\\u6807\\u8BC6[\".concat(rdTag, \"]\\u6216[\").concat(deRdTag, \"]\\u6216\\u5DE5\\u4F5C\\u6D41[\").concat(wfRdTag, \"]\\u5BF9\\u5E94\\u89C6\\u56FE\")\n );\n }\n return { ok: true, data: [] };\n}\nasync function calcDERdTag(entity, rdView, params, data) {\n let rdTag = \"\";\n const typeFieldId = rdView.typeAppDEFieldId;\n if (typeFieldId) {\n const { codeName } = findFieldById(entity, typeFieldId);\n const value = data[codeName.toLowerCase()];\n if (notNilEmpty3(value)) {\n return \"\".concat(value);\n }\n ibiz.log.warn(\n \"\\u91CD\\u5B9A\\u5411\\u89C6\\u56FE[\".concat(rdView.name, \"]\\u81EA\\u5B9A\\u4E49\\u7C7B\\u522B\\u5C5E\\u6027[\").concat(typeFieldId, \"]\\u503C\\u4E3A\\u7A7A\"),\n data\n );\n }\n const defView = \"\".concat(ibiz.env.isMob ? \"MOB\" : \"\", \"EDITVIEW\");\n const srfWf = params.srfwf;\n if (notNilEmpty3(srfWf)) {\n if (notNilEmpty3(params.wf)) {\n return \"\".concat(defView, \":\").concat(srfWf.toUpperCase(), \":\").concat(params.wf.toUpperCase());\n }\n return \"\".concat(defView, \":\").concat(srfWf.toUpperCase());\n }\n let typeValue = \"\";\n if (entity.indexTypeAppDEFieldId) {\n const { codeName } = findFieldById(entity, entity.indexTypeAppDEFieldId);\n typeValue = data[codeName.toLowerCase()];\n }\n if (isNilOrEmpty2(typeValue)) {\n if (entity.formTypeAppDEFieldId) {\n const { codeName } = findFieldById(entity, entity.formTypeAppDEFieldId);\n typeValue = data[codeName.toLowerCase()];\n }\n }\n if (notNilEmpty3(typeValue)) {\n rdTag = \"\".concat(defView, \":\").concat(typeValue.toString().toUpperCase());\n } else {\n rdTag = \"\".concat(defView);\n }\n return rdTag;\n}\n\n// src/utils/verify/verify.ts\nimport { RuntimeError as RuntimeError2 } from \"@ibiz-template/core\";\nimport { isNilOrEmpty as isNilOrEmpty3, notNilEmpty as notNilEmpty4 } from \"qx-util\";\nimport { isNil } from \"ramda\";\nfunction testCond(value, op, value2) {\n if (Object.is(op, \"IN\")) {\n return contains(value, value2);\n }\n if (Object.is(op, \"NOTIN\")) {\n return !contains(value, value2);\n }\n switch (op) {\n case \"EQ\":\n return \"\".concat(value) === \"\".concat(value2);\n case \"NOTEQ\":\n return \"\".concat(value) !== \"\".concat(value2);\n case \"LT\":\n return compare(value, value2) < 0;\n case \"LTANDEQ\":\n return compare(value, value2) <= 0;\n case \"GT\":\n return compare(value, value2) > 0;\n case \"GTANDEQ\":\n return compare(value, value2) >= 0;\n case \"ISNULL\":\n return isNilOrEmpty3(value);\n case \"ISNOTNULL\":\n return notNilEmpty4(value);\n case \"TESTNULL\":\n return isNil(value);\n case \"IN\":\n return contains(value, value2);\n case \"NOTIN\":\n return !contains(value, value2);\n case \"LIKE\":\n return strContain(value, value2);\n case \"LEFTLIKE\":\n return strContain(value, value2, \"start\");\n case \"RIGHTLIKE\":\n return strContain(value, value2, \"end\");\n default:\n throw new RuntimeError2(\"\\u503C\\u64CD\\u4F5C\\uFF1A\".concat(op, \"\\uFF0C\\u6682\\u672A\\u652F\\u6301\"));\n }\n}\nfunction compare(value, value2) {\n const number1 = Number(value);\n const number2 = Number(value2);\n if (!Number.isNaN(number1) && !Number.isNaN(number2)) {\n return compareNumber(number1, number2);\n }\n const date1 = new Date(value).getTime();\n const date2 = new Date(value2).getTime();\n if (!Number.isNaN(date1) && !Number.isNaN(date2)) {\n return compareNumber(date1, date2);\n }\n throw new RuntimeError2(\"\".concat(value, \" \\u548C \").concat(value2, \" \\u65E0\\u6CD5\\u6BD4\\u8F83\\u5927\\u5C0F\"));\n}\nfunction compareNumber(value, value2) {\n if (Number.isNaN(value)) {\n value = 0;\n }\n if (Number.isNaN(value2)) {\n value2 = 0;\n }\n if (value > value2) {\n return 1;\n }\n if (value < value2) {\n return -1;\n }\n return 0;\n}\nfunction contains(value, value2) {\n if (!value2 || typeof value2 !== \"string\") {\n throw new RuntimeError2(\"\\u8303\\u56F4\\u6BD4\\u8F83\\u7684\\u6761\\u4EF6\\u503C\\u4E0D\\u5B58\\u6216\\u8005\\u4E0D\\u662F\\u5B57\\u7B26\\u4E32\");\n }\n if (value) {\n const arr = value2.split(\",\");\n return arr.includes(\"\".concat(value));\n }\n return false;\n}\nfunction strContain(value, value2, mode) {\n if (!value || !value2) {\n return false;\n }\n const val = \"\".concat(value).toUpperCase();\n const val2 = \"\".concat(value2).toUpperCase();\n const index = val.indexOf(val2);\n switch (mode) {\n case \"start\":\n return index === 0;\n case \"end\":\n return index + val2.length === val.length;\n default:\n return index !== -1;\n }\n}\n\n// src/utils/verify/de-rule-verify.ts\nimport { RuntimeError as RuntimeError3 } from \"@ibiz-template/core\";\nimport { isNilOrEmpty as isNilOrEmpty4 } from \"qx-util\";\nimport { isEmpty as isEmpty2, isNil as isNil2 } from \"ramda\";\n\n// src/utils/script/script-function.ts\nimport { mergeRight } from \"ramda\";\nvar DefaultOptions = {\n /** 是否是单行脚本,并把表达式结果return */\n singleRowReturn: false,\n isAsync: true\n};\nvar ScriptFunction = class {\n constructor(argKeys, scriptCode, options = DefaultOptions) {\n this.argKeys = [];\n this.options = options;\n const code = this.formatCode(scriptCode, options);\n this.calcArgKeys(argKeys, options);\n const fn = new Function(...this.argKeys, code);\n this.scriptFn = function callBack(...args) {\n try {\n return fn.apply({}, args);\n } catch (error) {\n console.log(\"\\u62A5\\u9519\\u811A\\u672C\", code);\n throw error;\n }\n };\n }\n /**\n * 格式化脚本\n * @author lxm\n * @date 2023-07-25 11:02:33\n * @protected\n * @param {string} scriptCode\n * @param {IScriptFunctionOpts} options\n * @return {*} {string}\n */\n formatCode(scriptCode, options) {\n let code = scriptCode;\n if (options.singleRowReturn) {\n code = \"return (\".concat(code, \")\");\n }\n if (options.isAsync) {\n code = \"return (async function() { \".concat(code, \"} )();\");\n }\n return code;\n }\n /**\n * 计算参数名称集合\n * @author lxm\n * @date 2023-07-25 11:42:37\n * @protected\n * @param {string[]} argKeys\n * @param {IScriptFunctionOpts} options\n */\n calcArgKeys(argKeys, options) {\n const keys = options.presetParams ? Object.keys(options.presetParams) : [];\n keys.push(...argKeys);\n const presetArgsKeys = [\n \"document\",\n \"el\",\n \"selector\",\n \"env\",\n \"appSession\",\n \"topViewSession\",\n \"viewSession\",\n \"context\",\n \"viewParam\",\n \"activeData\",\n \"data\",\n \"app\",\n \"topView\",\n \"parentView\",\n \"view\",\n \"parent\",\n \"util\"\n ];\n keys.push(...presetArgsKeys);\n this.argKeys = Array.from(new Set(keys));\n }\n /**\n * 转换参数,把exec的对象参数转换成数组\n * @author lxm\n * @date 2023-07-25 11:22:03\n * @protected\n * @param {IParams} params\n * @return {*} {any[]}\n */\n convertArgs(params) {\n const { presetParams } = this.options;\n const _params = presetParams ? mergeRight(presetParams, params) : params;\n _params.document = document;\n _params.selector = (className) => {\n return document.getElementsByClassName(className);\n };\n const result = [];\n this.argKeys.forEach((key) => {\n if (_params[key] === void 0) {\n this.fillDefaultParams(key, _params);\n }\n result.push(_params[key]);\n });\n return result;\n }\n /**\n * 填充预置参数\n * @author lxm\n * @date 2023-08-21 04:07:50\n * @protected\n * @param {string} key\n * @param {IParams} param\n */\n fillDefaultParams(key, param) {\n switch (key) {\n case \"util\":\n param.util = {\n message: ibiz.message,\n notification: ibiz.notification,\n modal: ibiz.modal,\n confirm: ibiz.confirm,\n openView: ibiz.openView\n };\n break;\n case \"viewParam\":\n param.viewParam = param.params;\n break;\n case \"env\":\n param.env = ibiz.env;\n break;\n case \"app\":\n param.app = ibiz.hub.controller;\n break;\n case \"appSession\":\n param.appSession = ibiz.hub.controller.session;\n break;\n default:\n break;\n }\n const view = param.view;\n if (view) {\n switch (key) {\n case \"parent\":\n param.parent = view.parentView;\n break;\n case \"topView\":\n param.topView = view.getTopView();\n break;\n case \"parentView\":\n param.parentView = view.parentView;\n break;\n case \"topViewSession\":\n param.topViewSession = view.getTopView().session;\n break;\n case \"viewSession\":\n param.viewSession = view.session;\n break;\n default:\n break;\n }\n }\n }\n /**\n * 执行脚本代码\n * @author lxm\n * @date 2023-07-25 11:21:44\n * @param {IParams} params\n * @return {*}\n */\n exec(params) {\n const scriptArgs = this.convertArgs(params);\n return this.scriptFn(...scriptArgs);\n }\n};\n\n// src/utils/script/script-factory.ts\nvar ScriptFactory = class {\n /**\n * 创建脚本方法\n * @author lxm\n * @date 2023-07-25 11:47:48\n * @param {string[]} argKeys 参数列表\n * @param {string} scriptCode 脚本代码\n * @param {IScriptFunctionOpts} options 选项\n * @return {*} {ScriptFunction}\n */\n static createScriptFn(argKeys, scriptCode, options) {\n return new ScriptFunction(argKeys, scriptCode, options);\n }\n /**\n * 直接创建并执行脚本\n * @author lxm\n * @date 2023-07-25 02:21:28\n * @static\n * @param {IParams} args 脚本参数\n * @param {string} scriptCode 脚本代码\n * @param {IScriptFunctionOpts} options 选项\n * @return {*}\n */\n static execScriptFn(args, scriptCode, options) {\n return this.createScriptFn(Object.keys(args), scriptCode, options).exec(\n args\n );\n }\n /**\n * 执行单行脚本\n * @author lxm\n * @date 2023-10-20 03:20:56\n * @static\n * @param {string} scriptCode 脚本字符串\n * @param {IParams} [args={}] 作用域变量参数对象\n * @return {*} {unknown}\n */\n static execSingleLine(scriptCode, args = {}) {\n return this.execScriptFn(args, scriptCode, {\n singleRowReturn: true,\n isAsync: false\n });\n }\n};\n\n// src/utils/verify/de-rule-verify.ts\nfunction isGroupCondition(condition) {\n return condition.condType === \"GROUP\";\n}\nfunction isSimpleCondition(condition) {\n return condition.condType === \"SIMPLE\";\n}\nfunction isValueRange2Condition(condition) {\n return condition.condType === \"VALUERANGE2\";\n}\nfunction isRegExCondition(condition) {\n return condition.condType === \"REGEX\";\n}\nfunction isStringLengthCondition(condition) {\n return condition.condType === \"STRINGLENGTH\";\n}\nfunction isSysValueRuleCondition(condition) {\n return condition.condType === \"SYSVALUERULE\";\n}\nfunction verifyDeRules(name, data, condition) {\n const flag = { isPast: true, infoMessage: condition.ruleInfo };\n if (isGroupCondition(condition)) {\n const childRules = condition.conds;\n if (childRules && childRules.length > 0) {\n flag.isPast = logicForEach(\n childRules,\n (item) => {\n const { isPast, infoMessage } = verifyDeRules(name, data, item);\n flag.infoMessage = infoMessage;\n return isPast;\n },\n condition.condOp,\n !!condition.notMode\n );\n if (!flag.isPast && (condition.condOp === \"AND\" && condition.notMode || condition.condOp === \"OR\" && !condition.notMode)) {\n flag.infoMessage = condition.ruleInfo;\n }\n }\n } else {\n name = (condition == null ? void 0 : condition.defname.toLowerCase()) || name;\n try {\n if (isSimpleCondition(condition)) {\n flag.isPast = !checkFieldSimpleRule(\n data[name],\n condition.condOp,\n condition.paramValue,\n condition.ruleInfo,\n condition.paramType,\n data,\n condition.keyCond\n );\n } else if (isValueRange2Condition(condition)) {\n flag.isPast = !checkFieldValueRangeRule(\n data[name],\n condition.minValue,\n condition.includeMinValue,\n condition.maxValue,\n condition.includeMaxValue,\n condition.ruleInfo,\n condition.keyCond\n );\n } else if (isRegExCondition(condition)) {\n flag.isPast = !checkFieldRegExRule(\n data[name],\n condition.regExCode,\n condition.ruleInfo,\n condition.keyCond\n );\n } else if (isStringLengthCondition(condition)) {\n flag.isPast = !checkFieldStringLengthRule(\n data[name],\n condition.minValue,\n condition.includeMinValue,\n condition.maxValue,\n condition.includeMaxValue,\n condition.ruleInfo,\n condition.keyCond\n );\n } else if (isSysValueRuleCondition(condition) && (condition == null ? void 0 : condition.sysValueRule)) {\n const { ruleType, regExCode, scriptCode, ruleInfo } = condition.sysValueRule;\n flag.infoMessage = condition.ruleInfo || ruleInfo;\n if (ruleType === \"REG\") {\n flag.isPast = !checkFieldRegExRule(\n data[name],\n regExCode,\n flag.infoMessage,\n condition.keyCond\n );\n } else if (ruleType === \"SCRIPT\") {\n const { isPast, infoMessage } = checkFieldScriptRule(\n data[name],\n data,\n scriptCode,\n flag.infoMessage,\n condition.keyCond\n );\n flag.isPast = isPast;\n flag.infoMessage = infoMessage || flag.infoMessage;\n }\n }\n } catch (error) {\n flag.isPast = false;\n }\n flag.isPast = condition.notMode ? !flag.isPast : flag.isPast;\n }\n return flag;\n}\nfunction logicForEach(array, callback, operateTag = \"AND\", isReverse = false) {\n if (!((array == null ? void 0 : array.length) > 0)) {\n return false;\n }\n let result = operateTag === \"AND\";\n for (let i = 0, len = array.length; i < len; i++) {\n const temp = callback(array[i], i);\n if (operateTag === \"AND\") {\n if (!temp) {\n result = false;\n break;\n }\n } else if (operateTag === \"OR\") {\n if (temp) {\n result = true;\n break;\n }\n }\n }\n return isReverse ? !result : result;\n}\nfunction checkFieldSimpleRule(value, op, value2, errorInfo, paramType, form, primaryModel) {\n if (Object.is(paramType, \"CURTIME\")) {\n value2 = \"\".concat(/* @__PURE__ */ new Date());\n }\n if (Object.is(paramType, \"ENTITYFIELD\")) {\n value2 = value2 ? value2.toLowerCase() : \"\";\n const _value2Field = form[value2] ? form[value2] : value2;\n value2 = _value2Field;\n }\n if (isNil2(errorInfo) || isEmpty2(errorInfo)) {\n errorInfo = \"\\u5185\\u5BB9\\u5FC5\\u987B\\u7B26\\u5408\\u503C\\u89C4\\u5219\";\n }\n const result = testCond(value, op, value2);\n if (!result) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n }\n return !result;\n}\nfunction checkFieldStringLengthRule(viewValue, minLength, indexOfMin, maxLength, indexOfMax, errorInfo, primaryModel) {\n if (isNilOrEmpty4(errorInfo)) {\n errorInfo = \"\\u5185\\u5BB9\\u957F\\u5EA6\\u5FC5\\u987B\\u7B26\\u5408\\u8303\\u56F4\\u89C4\\u5219\";\n }\n const judge = isNilOrEmpty4(viewValue);\n if (judge) {\n if (primaryModel) {\n throw new RuntimeError3(\"\\u503C\\u4E3A\\u7A7A\");\n }\n errorInfo = \"\\u503C\\u4E3A\\u7A7A\";\n return true;\n }\n const viewValueLength = viewValue.length;\n if (minLength !== null) {\n if (indexOfMin) {\n if (viewValueLength < minLength) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n } else if (viewValueLength <= minLength) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n }\n if (maxLength !== null) {\n if (indexOfMax) {\n if (viewValueLength > maxLength) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n } else if (viewValueLength >= maxLength) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n }\n errorInfo = \"\";\n return false;\n}\nfunction checkFieldRegExRule(viewValue, strReg, errorInfo, primaryModel) {\n if (isNilOrEmpty4(errorInfo)) {\n errorInfo = \"\\u503C\\u5FC5\\u987B\\u7B26\\u5408\\u6B63\\u5219\\u89C4\\u5219\";\n }\n const judge = isNilOrEmpty4(viewValue);\n if (judge) {\n if (primaryModel) {\n throw new RuntimeError3(\"\\u503C\\u4E3A\\u7A7A\");\n }\n errorInfo = \"\\u503C\\u4E3A\\u7A7A\";\n return true;\n }\n const regExp = new RegExp(strReg);\n if (!regExp.test(viewValue)) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n errorInfo = \"\";\n return false;\n}\nfunction checkFieldValueRangeRule(viewValue, minNumber, indexOfMin, maxNumber, indexOfMax, errorInfo, primaryModel) {\n if (isNilOrEmpty4(errorInfo)) {\n errorInfo = \"\\u503C\\u5FC5\\u987B\\u7B26\\u5408\\u503C\\u8303\\u56F4\\u89C4\\u5219\";\n }\n const isEmptyVal = isNilOrEmpty4(viewValue);\n if (isEmptyVal) {\n if (primaryModel) {\n throw new RuntimeError3(\"\\u503C\\u4E3A\\u7A7A\");\n }\n errorInfo = \"\\u503C\\u4E3A\\u7A7A\";\n return true;\n }\n const valueFormat = checkFieldRegExRule(\n viewValue,\n /^-?\\d*\\.?\\d+$/,\n \"\",\n primaryModel\n );\n if (valueFormat) {\n return true;\n }\n const data = Number.parseFloat(viewValue);\n if (minNumber !== null) {\n if (indexOfMin) {\n if (data < minNumber) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n } else if (data <= minNumber) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n }\n if (maxNumber != null) {\n if (indexOfMax) {\n if (data > maxNumber) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n } else if (data >= maxNumber) {\n if (primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return true;\n }\n }\n errorInfo = \"\";\n return false;\n}\nfunction checkFieldScriptRule(value, data, scriptCode, errorInfo, primaryModel) {\n if (isNilOrEmpty4(errorInfo)) {\n errorInfo = \"\\u503C\\u5FC5\\u987B\\u7B26\\u5408\\u811A\\u672C\\u89C4\\u5219\";\n }\n const source = data;\n let selfError = \"\";\n let resultBoolean = true;\n const callback = (error) => {\n resultBoolean = false;\n if ((error == null ? void 0 : error.length) > 0) {\n error.forEach((item) => {\n if (item == null ? void 0 : item.message) {\n selfError += item.message;\n }\n });\n } else if (error == null ? void 0 : error.message) {\n selfError = error.message;\n }\n };\n try {\n const result = ScriptFactory.execScriptFn(\n { value, data: source },\n scriptCode,\n { isAsync: false }\n );\n if (typeof result === \"boolean\") {\n resultBoolean = result;\n }\n } catch (error) {\n ibiz.log.error(error);\n callback(error);\n }\n errorInfo = \"\";\n if (!resultBoolean && primaryModel) {\n throw new RuntimeError3(errorInfo);\n }\n return { isPast: resultBoolean, infoMessage: selfError || errorInfo };\n}\n\n// src/utils/verify/form-dynamic-logic.ts\nimport { ModelError, RuntimeModelError as RuntimeModelError3 } from \"@ibiz-template/core\";\nfunction isGroupLogic(logic) {\n return logic.logicType === \"GROUP\";\n}\nfunction isSingleLogic(logic) {\n return logic.logicType === \"SINGLE\";\n}\nfunction verifyFormGroupLogic(data, logic) {\n if (isGroupLogic(logic)) {\n const children = logic.defdlogics;\n if (!children || children.length === 0) {\n throw new RuntimeModelError3(logic, \"\\u53D1\\u73B0\\u7A7A\\u903B\\u8F91\\u7EC4\\uFF0C\\u903B\\u8F91\\u65E0\\u6CD5\\u6B63\\u5E38\\u6267\\u884C\\uFF01\");\n }\n let result = true;\n if (logic.groupOP === \"AND\") {\n const falseItem = children.find((childLogic) => {\n return !verifyFormGroupLogic(data, childLogic);\n });\n result = falseItem === void 0;\n } else if (logic.groupOP === \"OR\") {\n const trueItem = logic.defdlogics.find(\n (childLogic) => {\n return verifyFormGroupLogic(data, childLogic);\n }\n );\n result = trueItem !== void 0;\n }\n return logic.notMode ? !result : result;\n }\n if (isSingleLogic(logic)) {\n return testCond(\n data[logic.defdname.toLowerCase()],\n logic.condOP,\n logic.value\n );\n }\n throw new ModelError(logic, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u7C7B\\u578B\".concat(logic.logicType));\n}\n\n// src/utils/verify/panel-dynamic-logic.ts\nimport { ModelError as ModelError2, RuntimeModelError as RuntimeModelError4 } from \"@ibiz-template/core\";\nfunction isGroupLogic2(logic) {\n return logic.logicType === \"GROUP\";\n}\nfunction isSingleLogic2(logic) {\n return logic.logicType === \"SINGLE\";\n}\nfunction verifyPanelGroupLogic(data, logic) {\n if (isGroupLogic2(logic)) {\n const children = logic.panelItemLogics;\n if (!children || children.length === 0) {\n throw new RuntimeModelError4(logic, \"\\u53D1\\u73B0\\u7A7A\\u903B\\u8F91\\u7EC4\\uFF0C\\u903B\\u8F91\\u65E0\\u6CD5\\u6B63\\u5E38\\u6267\\u884C\\uFF01\");\n }\n let result = true;\n if (logic.groupOP === \"AND\") {\n const falseItem = children.find((childLogic) => {\n return !verifyPanelGroupLogic(data, childLogic);\n });\n result = falseItem === void 0;\n } else if (logic.groupOP === \"OR\") {\n const trueItem = logic.panelItemLogics.find(\n (childLogic) => {\n return verifyPanelGroupLogic(data, childLogic);\n }\n );\n result = trueItem !== void 0;\n }\n return logic.notMode ? !result : result;\n }\n if (isSingleLogic2(logic)) {\n return testCond(\n data[logic.dstModelField.toLowerCase()],\n logic.condOp,\n logic.value\n );\n }\n throw new ModelError2(logic, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u7C7B\\u578B\".concat(logic.logicType));\n}\n\n// src/utils/layout-panel-util/layout-panel-util.ts\nimport { clone } from \"ramda\";\nvar LayoutPanelUtil = class {\n constructor() {\n /**\n * 默认布局缓存\n *\n * @author chitanda\n * @date 2023-04-27 20:04:50\n * @protected\n * @type {Map<string, IViewLayoutPanel>}\n */\n this.cache = /* @__PURE__ */ new Map();\n }\n /**\n * 注册\n *\n * @author chitanda\n * @date 2023-04-27 20:04:04\n * @param {string} tag\n * @param {IViewLayoutPanel} model\n */\n register(tag, model) {\n this.cache.set(tag, model);\n }\n /**\n * 获取\n * @author lxm\n * @date 2023-07-31 02:48:37\n * @param {string} tag\n * @return {*} {(IViewLayoutPanel | undefined)}\n */\n get(tag) {\n return this.cache.get(tag);\n }\n /**\n * 填充默认布局模型\n *\n * @author chitanda\n * @date 2023-04-27 20:04:16\n * @param {IAppView} viewModel\n * @return {*} {IAppView}\n */\n fill(viewModel) {\n const { viewLayoutPanel } = viewModel;\n if (!viewLayoutPanel || viewLayoutPanel.useDefaultLayout === true) {\n const tag = this.calcLayoutTag(viewModel);\n if (this.cache.has(tag)) {\n const layout = clone(this.cache.get(tag));\n viewModel.viewLayoutPanel = layout;\n if (viewModel.appCounterRefs) {\n layout.appCounterRefs = viewModel.appCounterRefs;\n delete viewModel.appCounterRefs;\n }\n if (viewModel.appViewEngines) {\n layout.appViewEngines = viewModel.appViewEngines;\n delete viewModel.appViewEngines;\n }\n if (viewModel.appViewLogics) {\n layout.appViewLogics = viewModel.appViewLogics;\n delete viewModel.appViewLogics;\n }\n if (viewModel.appViewRefs) {\n layout.appViewRefs = viewModel.appViewRefs;\n delete viewModel.appViewRefs;\n }\n if (viewModel.controls) {\n layout.controls = viewModel.controls;\n delete viewModel.controls;\n }\n }\n }\n return viewModel;\n }\n /**\n * 计算布局面板标识\n *\n * @author chitanda\n * @date 2023-07-10 17:07:38\n * @protected\n * @param {IAppView} viewModel\n * @return {*} {string}\n */\n calcLayoutTag(viewModel) {\n const { viewType, viewStyle } = viewModel;\n switch (viewType) {\n case \"APPINDEXVIEW\":\n return this.calcIndexViewLayoutTag(viewModel);\n default:\n return \"\".concat(viewType, \"_\").concat(viewStyle);\n }\n }\n /**\n * 特殊计算首页布局面板标识,匹配多种配置模式下的布局面板呈现\n *\n * @author chitanda\n * @date 2023-07-10 17:07:06\n * @protected\n * @param {IAppIndexView} viewModel\n * @return {*} {string}\n */\n calcIndexViewLayoutTag(viewModel) {\n const { viewType, viewStyle, blankMode, mainMenuAlign } = viewModel;\n let exTag = \"\";\n if (blankMode) {\n exTag = \"BLANK_MODE\";\n } else if (mainMenuAlign) {\n exTag = mainMenuAlign.toUpperCase();\n }\n if (exTag !== \"\") {\n return \"\".concat(viewType, \"_\").concat(viewStyle, \"_\").concat(exTag);\n }\n return \"\".concat(viewType, \"_\").concat(viewStyle);\n }\n};\n\n// src/utils/wf-helper/wf-helper.ts\nfunction getWFContext(data) {\n const tempContext = {};\n if (data.param09) {\n tempContext.srfprocessinstanceid = data.param09;\n }\n return tempContext;\n}\nfunction getWFSubmitViewId(view, link) {\n var _a;\n const { type, sequenceflowview, sequenceflowmobview } = link;\n const appViewRefs = ((_a = view.viewLayoutPanel) == null ? void 0 : _a.appViewRefs) || view.appViewRefs;\n const key = type ? \"WFUTILACTION@\".concat(type.toUpperCase()) : \"WFACTION@\".concat(ibiz.env.isMob ? sequenceflowmobview : sequenceflowview);\n const submitViewRef = appViewRefs == null ? void 0 : appViewRefs.find((viewRef) => {\n return viewRef.name.indexOf(key) !== -1;\n });\n return submitViewRef == null ? void 0 : submitViewRef.refAppViewId;\n}\n\n// src/utils/modal/modal.ts\nimport { AsyncSeriesHook } from \"qx-util\";\n\n// src/constant/control-type.ts\nvar ControlType = /* @__PURE__ */ ((ControlType2) => {\n ControlType2[\"APP_MENU\"] = \"APPMENU\";\n ControlType2[\"GRID\"] = \"GRID\";\n ControlType2[\"FORM\"] = \"FORM\";\n ControlType2[\"SEARCHFORM\"] = \"SEARCHFORM\";\n ControlType2[\"TOOLBAR\"] = \"TOOLBAR\";\n ControlType2[\"DRBAR\"] = \"DRBAR\";\n ControlType2[\"VIEWPANEL\"] = \"VIEWPANEL\";\n ControlType2[\"PICKUP_VIEW_PANEL\"] = \"PICKUPVIEWPANEL\";\n ControlType2[\"DATAVIEW\"] = \"DATAVIEW\";\n ControlType2[\"TREEGRID\"] = \"TREEGRID\";\n ControlType2[\"WF_EXPBAR\"] = \"WFEXPBAR\";\n ControlType2[\"TREEVIEW\"] = \"TREEVIEW\";\n ControlType2[\"TREE_EXP_BAR\"] = \"TREEEXPBAR\";\n ControlType2[\"TAB_VIEWPANEL\"] = \"TABVIEWPANEL\";\n ControlType2[\"DRTAB\"] = \"DRTAB\";\n ControlType2[\"CHART\"] = \"CHART\";\n ControlType2[\"REPORT_PANEL\"] = \"REPORTPANEL\";\n ControlType2[\"LIST\"] = \"LIST\";\n ControlType2[\"MOB_MDCTRL\"] = \"MOBMDCTRL\";\n ControlType2[\"MULTI_EDIT_VIEWPANEL\"] = \"MULTIEDITVIEWPANEL\";\n ControlType2[\"WIZARD_PANEL\"] = \"WIZARDPANEL\";\n ControlType2[\"UPDATE_PANEL\"] = \"UPDATEPANEL\";\n ControlType2[\"SEARCHBAR\"] = \"SEARCHBAR\";\n ControlType2[\"DASHBOARD\"] = \"DASHBOARD\";\n ControlType2[\"CALENDAR\"] = \"CALENDAR\";\n ControlType2[\"PANEL\"] = \"PANEL\";\n ControlType2[\"VIEW_LAYOUT_PANEL\"] = \"VIEWLAYOUTPANEL\";\n ControlType2[\"MAP\"] = \"MAP\";\n ControlType2[\"GANTT\"] = \"GANTT\";\n ControlType2[\"TREE_GRIDEX\"] = \"TREEGRIDEX\";\n ControlType2[\"KANBAN\"] = \"KANBAN\";\n ControlType2[\"CALENDAR_EXPBAR\"] = \"CALENDAREXPBAR\";\n ControlType2[\"CHART_EXPBAR\"] = \"CHARTEXPBAR\";\n ControlType2[\"DATA_VIEW_EXPBAR\"] = \"DATAVIEWEXPBAR\";\n ControlType2[\"GANTT_EXPBAR\"] = \"GANTTEXPBAR\";\n ControlType2[\"GRID_EXPBAR\"] = \"GRIDEXPBAR\";\n ControlType2[\"LIST_EXPBAR\"] = \"LISTEXPBAR\";\n ControlType2[\"MAP_EXPBAR\"] = \"MAPEXPBAR\";\n ControlType2[\"STATE_WIZARD_PANEL\"] = \"STATEWIZARDPANEL\";\n ControlType2[\"TAB_EXP_PANEL\"] = \"TABEXPPANEL\";\n ControlType2[\"CUSTOM\"] = \"CUSTOM\";\n ControlType2[\"CAPTIONBAR\"] = \"CAPTIONBAR\";\n return ControlType2;\n})(ControlType || {});\n\n// src/constant/view-type.ts\nvar ViewType = /* @__PURE__ */ ((ViewType2) => {\n ViewType2[\"APP_INDEX_VIEW\"] = \"APPINDEXVIEW\";\n ViewType2[\"DE_GRID_VIEW\"] = \"DEGRIDVIEW\";\n ViewType2[\"DE_EDIT_VIEW\"] = \"DEEDITVIEW\";\n ViewType2[\"APP_DATA_UPLOAD_VIEW\"] = \"APPDATAUPLOADVIEW\";\n ViewType2[\"APP_ERROR_VIEW\"] = \"APPERRORVIEW\";\n ViewType2[\"APP_FILE_UPLOAD_VIEW\"] = \"APPFILEUPLOADVIEW\";\n ViewType2[\"APP_FUN_PICKUP_VIEW\"] = \"APPFUNCPICKUPVIEW\";\n ViewType2[\"APP_LOGIN_VIEW\"] = \"APPLOGINVIEW\";\n ViewType2[\"APP_LOGOUT_VIEW\"] = \"APPLOGOUTVIEW\";\n ViewType2[\"APP_PANEL_VIEW\"] = \"APPPANELVIEW\";\n ViewType2[\"APP_PIC_UPLOAD_VIEW\"] = \"APPPICUPLOADVIEW\";\n ViewType2[\"APP_PORTAL_VIEW\"] = \"APPPORTALVIEW\";\n ViewType2[\"APP_REDIRECT_VIEW\"] = \"APPREDIRECTVIEW\";\n ViewType2[\"APP_START_VIEW\"] = \"APPSTARTVIEW\";\n ViewType2[\"APP_WELCOME_VIEW\"] = \"APPWELCOMEVIEW\";\n ViewType2[\"APP_WF_ADD_STEP_AFTER_VIEW\"] = \"APPWFADDSTEPAFTERVIEW\";\n ViewType2[\"APP_WF_ADD_STEP_BEFORE_VIEW\"] = \"APPWFADDSTEPBEFOREVIEW\";\n ViewType2[\"APP_WF_REDIRECT_VIEW\"] = \"APPWFREDIRECTVIEW\";\n ViewType2[\"APP_WF_SENDBAC_VIEW\"] = \"APPWFSENDBACKVIEW\";\n ViewType2[\"APP_WF_STEP_ACTOR_VIEW\"] = \"APPWFSTEPACTORVIEW\";\n ViewType2[\"APP_WF_STEP_DATA_VIEW\"] = \"APPWFSTEPDATAVIEW\";\n ViewType2[\"APP_WF_STEP_TRACE_VIEW\"] = \"APPWFSTEPTRACEVIEW\";\n ViewType2[\"APP_WF_SUPPLY_INFO_VIEW\"] = \"APPWFSUPPLYINFOVIEW\";\n ViewType2[\"APP_WF_TAKE_ADVICE_VIEW\"] = \"APPWFTAKEADVICEVIEW\";\n ViewType2[\"DE_CALENDAR_EXP_VIEW\"] = \"DECALENDAREXPVIEW\";\n ViewType2[\"DE_CALENDAR_VIEW\"] = \"DECALENDARVIEW\";\n ViewType2[\"DE_CHART_EXP_VIEW\"] = \"DECHARTEXPVIEW\";\n ViewType2[\"DE_CHART_VIEW\"] = \"DECHARTVIEW\";\n ViewType2[\"DE_CHART_VIEW9\"] = \"DECHARTVIEW9\";\n ViewType2[\"DE_CUSTOM_VIEW\"] = \"DECUSTOMVIEW\";\n ViewType2[\"DE_DATA_VIEW\"] = \"DEDATAVIEW\";\n ViewType2[\"DE_DATA_VIEW9\"] = \"DEDATAVIEW9\";\n ViewType2[\"DE_DATAVIEW_EXP_VIEW\"] = \"DEDATAVIEWEXPVIEW\";\n ViewType2[\"DE_EDIT_VIEW2\"] = \"DEEDITVIEW2\";\n ViewType2[\"DE_EDIT_VIEW3\"] = \"DEEDITVIEW3\";\n ViewType2[\"DE_EDIT_VIEW4\"] = \"DEEDITVIEW4\";\n ViewType2[\"DE_EDIT_VIEW9\"] = \"DEEDITVIEW9\";\n ViewType2[\"DE_FORM_PICKUP_DATA_VIEW\"] = \"DEFORMPICKUPDATAVIEW\";\n ViewType2[\"DE_GANTT_EXP_VIEW\"] = \"DEGANTTEXPVIEW\";\n ViewType2[\"DE_GANTT_VIEW\"] = \"DEGANTTVIEW\";\n ViewType2[\"DE_GANTT_VIEW9\"] = \"DEGANTTVIEW9\";\n ViewType2[\"DE_GRID_EXP_VIEW\"] = \"DEGRIDEXPVIEW\";\n ViewType2[\"DE_GRID_VIEW2\"] = \"DEGRIDVIEW2\";\n ViewType2[\"DE_GRID_VIEW4\"] = \"DEGRIDVIEW4\";\n ViewType2[\"DE_GRID_VIEW8\"] = \"DEGRIDVIEW8\";\n ViewType2[\"DE_GRID_VIEW9\"] = \"DEGRIDVIEW9\";\n ViewType2[\"DE_HTML_VIEW\"] = \"DEHTMLVIEW\";\n ViewType2[\"DE_INDEX_PICKUP_DATA_VIEW\"] = \"DEINDEXPICKUPDATAVIEW\";\n ViewType2[\"DE_INDEX_VIEW\"] = \"DEINDEXVIEW\";\n ViewType2[\"DE_KANBAN_VIEW\"] = \"DEKANBANVIEW\";\n ViewType2[\"DE_KANBAN_VIEW9\"] = \"DEKANBANVIEW9\";\n ViewType2[\"DE_LIST_EXP_VIEW\"] = \"DELISTEXPVIEW\";\n ViewType2[\"DE_LIST_VIEW\"] = \"DELISTVIEW\";\n ViewType2[\"DE_LIST_VIEW9\"] = \"DELISTVIEW9\";\n ViewType2[\"DE_MAP_EXP_VIEW\"] = \"DEMAPEXPVIEW\";\n ViewType2[\"DE_MAP_VIEW\"] = \"DEMAPVIEW\";\n ViewType2[\"DE_MAP_VIEW9\"] = \"DEMAPVIEW9\";\n ViewType2[\"DE_MD_CUSTOM_VIEW\"] = \"DEMDCUSTOMVIEW\";\n ViewType2[\"DE_MEDITVIEW9\"] = \"DEMEDITVIEW9\";\n ViewType2[\"DE_MOB_CALENDAR_EXP_VIEW\"] = \"DEMOBCALENDAREXPVIEW\";\n ViewType2[\"DE_MOB_CALENDAR_VIEW\"] = \"DEMOBCALENDARVIEW\";\n ViewType2[\"DE_MOB_CALENDAR_VIEW9\"] = \"DEMOBCALENDARVIEW9\";\n ViewType2[\"DE_MOB_CHART_EXP_VIEW\"] = \"DEMOBCHARTEXPVIEW\";\n ViewType2[\"DE_MO_BCHART_VIEW\"] = \"DEMOBCHARTVIEW\";\n ViewType2[\"D_EMOB_CHART_VIEW9\"] = \"DEMOBCHARTVIEW9\";\n ViewType2[\"DE_MOB_CUSTOM_VIEW\"] = \"DEMOBCUSTOMVIEW\";\n ViewType2[\"DE_MOB_DATA_VIEW\"] = \"DEMOBDATAVIEW\";\n ViewType2[\"DE_MOB_DATA_VIEW_EXP_VIEW\"] = \"DEMOBDATAVIEWEXPVIEW\";\n ViewType2[\"DE_MOB_EDIT_VIEW\"] = \"DEMOBEDITVIEW\";\n ViewType2[\"DE_MOB_EDIT_VIEW3\"] = \"DEMOBEDITVIEW3\";\n ViewType2[\"DE_MOB_EDITVIEW9\"] = \"DEMOBEDITVIEW9\";\n ViewType2[\"DE_MOB_FORM_PICKUP_MDVIEW\"] = \"DEMOBFORMPICKUPMDVIEW\";\n ViewType2[\"DE_MOB_GANTT_EXP_VIEW\"] = \"DEMOBGANTTEXPVIEW\";\n ViewType2[\"DE_MOB_GANTT_VIEW\"] = \"DEMOBGANTTVIEW\";\n ViewType2[\"DE_MOB_GANTT_VIEW9\"] = \"DEMOBGANTTVIEW9\";\n ViewType2[\"DE_MOB_HTML_VIEW\"] = \"DEMOBHTMLVIEW\";\n ViewType2[\"DE_MOB_INDEX_PICKUP_MDVIEW\"] = \"DEMOBINDEXPICKUPMDVIEW\";\n ViewType2[\"DE_MOB_LIST_EXP_VIEW\"] = \"DEMOBLISTEXPVIEW\";\n ViewType2[\"DE_MOB_LIST_VIEW\"] = \"DEMOBLISTVIEW\";\n ViewType2[\"DE_MOB_MAP_VIEW\"] = \"DEMOBMAPVIEW\";\n ViewType2[\"DE_MOB_MAP_VIEW9\"] = \"DEMOBMAPVIEW9\";\n ViewType2[\"DE_MOB_MDVIEW\"] = \"DEMOBMDVIEW\";\n ViewType2[\"DE_MOB_MDVIEW9\"] = \"DEMOBMDVIEW9\";\n ViewType2[\"DE_MOB_MEDIT_VIEW9\"] = \"DEMOBMEDITVIEW9\";\n ViewType2[\"DE_MOB_MPICKUP_VIEW\"] = \"DEMOBMPICKUPVIEW\";\n ViewType2[\"DE_MOB_OPT_VIEW\"] = \"DEMOBOPTVIEW\";\n ViewType2[\"DE_MOB_PANEL_VIEW\"] = \"DEMOBPANELVIEW\";\n ViewType2[\"DE_MOB_PANEL_VIEW9\"] = \"DEMOBPANELVIEW9\";\n ViewType2[\"DE_MOB_PICKUP_LIST_VIEW\"] = \"DEMOBPICKUPLISTVIEW\";\n ViewType2[\"DE_MOB_PICKUP_MDVIEW\"] = \"DEMOBPICKUPMDVIEW\";\n ViewType2[\"DE_MOB_PICKUP_TREE_VIEW\"] = \"DEMOBPICKUPTREEVIEW\";\n ViewType2[\"DE_MOB_PICKUP_VIEW\"] = \"DEMOBPICKUPVIEW\";\n ViewType2[\"DE_MOB_PORTAL_VIEW\"] = \"DEMOBPORTALVIEW\";\n ViewType2[\"DE_MOB_PORTAL_VIEW9\"] = \"DEMOBPORTALVIEW9\";\n ViewType2[\"DE_MOB_REDIRECT_VIEW\"] = \"DEMOBREDIRECTVIEW\";\n ViewType2[\"DE_MOB_REPORT_VIEW\"] = \"DEMOBREPORTVIEW\";\n ViewType2[\"DE_MOB_TAB_EXP_VIEW\"] = \"DEMOBTABEXPVIEW\";\n ViewType2[\"DE_MOB_TAB_EXP_VIEW9\"] = \"DEMOBTABEXPVIEW9\";\n ViewType2[\"DE_MOB_TAB_SEARCH_VIEW\"] = \"DEMOBTABSEARCHVIEW\";\n ViewType2[\"DE_MOB_TAB_SEARCH_VIEW9\"] = \"DEMOBTABSEARCHVIEW9\";\n ViewType2[\"DE_MOB_TREE_EXP_VIEW\"] = \"DEMOBTREEEXPVIEW\";\n ViewType2[\"DEMOBTREEEXPVIEW9\"] = \"DEMOBTREEEXPVIEW9\";\n ViewType2[\"DE_MOB_TREE_VIEW\"] = \"DEMOBTREEVIEW\";\n ViewType2[\"DE_MOB_WFACTION_VIEW\"] = \"DEMOBWFACTIONVIEW\";\n ViewType2[\"DE_MOB_WF_DATA_REDIRECT_VIEW\"] = \"DEMOBWFDATAREDIRECTVIEW\";\n ViewType2[\"DE_MOB_WF_DYNAACTIO_NVIEW\"] = \"DEMOBWFDYNAACTIONVIEW\";\n ViewType2[\"DE_MOB_WFDYNA_EDIT_VIEW\"] = \"DEMOBWFDYNAEDITVIEW\";\n ViewType2[\"DE_MOB_WF_DYNA_EDIT_VIEW3\"] = \"DEMOBWFDYNAEDITVIEW3\";\n ViewType2[\"DE_MOB_WF_DYNA_EXP_MDVIEW\"] = \"DEMOBWFDYNAEXPMDVIEW\";\n ViewType2[\"DE_MO_BWF_DYNA_START_VIEW\"] = \"DEMOBWFDYNASTARTVIEW\";\n ViewType2[\"DE_MOB_WF_EDIT_VIEW\"] = \"DEMOBWFEDITVIEW\";\n ViewType2[\"DE_MOB_WF_EDIT_VIEW3\"] = \"DEMOBWFEDITVIEW3\";\n ViewType2[\"DE_MOB_WF_MDVIEW\"] = \"DEMOBWFMDVIEW\";\n ViewType2[\"DE_MOB_WF_PROXY_RESULT_VIEW\"] = \"DEMOBWFPROXYRESULTVIEW\";\n ViewType2[\"DE_MOB_WF_PROXY_START_VIEW\"] = \"DEMOBWFPROXYSTARTVIEW\";\n ViewType2[\"DE_MOB_WF_START_VIEW\"] = \"DEMOBWFSTARTVIEW\";\n ViewType2[\"DE_MOB_WIZARD_VIEW\"] = \"DEMOBWIZARDVIEW\";\n ViewType2[\"DE_MPICKUP_VIEW\"] = \"DEMPICKUPVIEW\";\n ViewType2[\"DE_MPICKUP_VIEW2\"] = \"DEMPICKUPVIEW2\";\n ViewType2[\"DE_OPT_VIEW\"] = \"DEOPTVIEW\";\n ViewType2[\"DE_PANEL_VIEW\"] = \"DEPANELVIEW\";\n ViewType2[\"DE_PANEL_VIEW9\"] = \"DEPANELVIEW9\";\n ViewType2[\"DE_PICKUP_DATA_VIEW\"] = \"DEPICKUPDATAVIEW\";\n ViewType2[\"DE_PICKUP_GRID_VIEW\"] = \"DEPICKUPGRIDVIEW\";\n ViewType2[\"DE_PICKUP_TREE_VIEW\"] = \"DEPICKUPTREEVIEW\";\n ViewType2[\"DE_PICKUP_VIEW\"] = \"DEPICKUPVIEW\";\n ViewType2[\"DE_PICKUP_VIEW2\"] = \"DEPICKUPVIEW2\";\n ViewType2[\"DE_PICK_UP_VIEW3\"] = \"DEPICKUPVIEW3\";\n ViewType2[\"DE_PORTAL_VIEW\"] = \"DEPORTALVIEW\";\n ViewType2[\"DE_PORTAL_VIEW9\"] = \"DEPORTALVIEW9\";\n ViewType2[\"DE_REDIRECT_VIEW\"] = \"DEREDIRECTVIEW\";\n ViewType2[\"DE_REPORT_VIEW\"] = \"DEREPORTVIEW\";\n ViewType2[\"DE_TAB_EXP_VIEW\"] = \"DETABEXPVIEW\";\n ViewType2[\"DE_TAB_EXP_VIEW9\"] = \"DETABEXPVIEW9\";\n ViewType2[\"DE_TAB_SEARCH_VIEW\"] = \"DETABSEARCHVIEW\";\n ViewType2[\"DE_TAB_SEARCH_VIEW9\"] = \"DETABSEARCHVIEW9\";\n ViewType2[\"DE_TREE_EXP_VIEW\"] = \"DETREEEXPVIEW\";\n ViewType2[\"DE_TREE_EXP_VIEW2\"] = \"DETREEEXPVIEW2\";\n ViewType2[\"DE_TREE_EXP_VIEW3\"] = \"DETREEEXPVIEW3\";\n ViewType2[\"DE_TREE_GRID_EXVIEW\"] = \"DETREEGRIDEXVIEW\";\n ViewType2[\"DE_TREE_GRID_EXVIEW9\"] = \"DETREEGRIDEXVIEW9\";\n ViewType2[\"DE_TREE_GRID_VIEW\"] = \"DETREEGRIDVIEW\";\n ViewType2[\"DE_TREE_GRID_VIEW9\"] = \"DETREEGRIDVIEW9\";\n ViewType2[\"DE_TREE_VIEW\"] = \"DETREEVIEW\";\n ViewType2[\"DE_TREE_VIEW9\"] = \"DETREEVIEW9\";\n ViewType2[\"DE_WF_ACTION_VIEW\"] = \"DEWFACTIONVIEW\";\n ViewType2[\"DE_WF_DATA_REDIRECT_VIEW\"] = \"DEWFDATAREDIRECTVIEW\";\n ViewType2[\"DE_WF_DYNA_ACTION_VIEW\"] = \"DEWFDYNAACTIONVIEW\";\n ViewType2[\"DE_WF_DYNA_EDIT_VIEW\"] = \"DEWFDYNAEDITVIEW\";\n ViewType2[\"DE_WF_DYNA_EDIT_VIEW3\"] = \"DEWFDYNAEDITVIEW3\";\n ViewType2[\"DE_WF_DYNA_EXP_GRID_VIEW\"] = \"DEWFDYNAEXPGRIDVIEW\";\n ViewType2[\"DE_WF_DYNA_START_VIEW\"] = \"DEWFDYNASTARTVIEW\";\n ViewType2[\"DE_WF_EDIT_PROXY_DATA_VIEW\"] = \"DEWFEDITPROXYDATAVIEW\";\n ViewType2[\"DE_WF_EDIT_VIEW\"] = \"DEWFEDITVIEW\";\n ViewType2[\"DE_WF_EDIT_VIEW2\"] = \"DEWFEDITVIEW2\";\n ViewType2[\"DE_WF_EDIT_VIEW3\"] = \"DEWFEDITVIEW3\";\n ViewType2[\"DE_WF_EDIT_VIEW9\"] = \"DEWFEDITVIEW9\";\n ViewType2[\"DE_WF_EXP_VIEW\"] = \"DEWFEXPVIEW\";\n ViewType2[\"DE_WF_GRID_VIEW\"] = \"DEWFGRIDVIEW\";\n ViewType2[\"DE_WF_PROXY_DATA_VIEW\"] = \"DEWFPROXYDATAVIEW\";\n ViewType2[\"DE_WF_PROXY_RESULT_VIEW\"] = \"DEWFPROXYRESULTVIEW\";\n ViewType2[\"DE_WF_PROXY_START_VIEW\"] = \"DEWFPROXYSTARTVIEW\";\n ViewType2[\"DE_WF_START_VIEW\"] = \"DEWFSTARTVIEW\";\n ViewType2[\"DE_WIZARD_VIEW\"] = \"DEWIZARDVIEW\";\n return ViewType2;\n})(ViewType || {});\n\n// src/constant/view-mode.ts\nvar ViewMode = /* @__PURE__ */ ((ViewMode2) => {\n ViewMode2[\"ROUTE\"] = \"ROUTE\";\n ViewMode2[\"MODAL\"] = \"MODAL\";\n ViewMode2[\"DRAWER\"] = \"DRAWER\";\n ViewMode2[\"EMBED\"] = \"EMBED\";\n ViewMode2[\"POPOVER\"] = \"POPOVER\";\n return ViewMode2;\n})(ViewMode || {});\n\n// src/constant/sys-uiaction-tag.ts\nvar SysUIActionTag = /* @__PURE__ */ ((SysUIActionTag2) => {\n SysUIActionTag2[\"NEW\"] = \"New\";\n SysUIActionTag2[\"EDIT\"] = \"Edit\";\n SysUIActionTag2[\"REFRESH\"] = \"Refresh\";\n SysUIActionTag2[\"EXIT\"] = \"Exit\";\n SysUIActionTag2[\"SAVE_AND_EXIT\"] = \"SaveAndExit\";\n SysUIActionTag2[\"SAVE_AND_NEW\"] = \"SaveAndNew\";\n SysUIActionTag2[\"SAVE\"] = \"Save\";\n SysUIActionTag2[\"SAVE_ROW\"] = \"SaveRow\";\n SysUIActionTag2[\"REMOVE\"] = \"Remove\";\n SysUIActionTag2[\"REMOVE_AND_EXIT\"] = \"RemoveAndExit\";\n SysUIActionTag2[\"NEW_ROW\"] = \"NewRow\";\n SysUIActionTag2[\"TOGGLE_FILTER\"] = \"ToggleFilter\";\n SysUIActionTag2[\"IMPORT\"] = \"Import\";\n SysUIActionTag2[\"EXPORT_EXCEL\"] = \"ExportExcel\";\n SysUIActionTag2[\"SAVE_AND_START\"] = \"SaveAndStart\";\n SysUIActionTag2[\"VIEW_WF_STEP\"] = \"ViewWFStep\";\n SysUIActionTag2[\"NO\"] = \"No\";\n SysUIActionTag2[\"YES\"] = \"Yes\";\n SysUIActionTag2[\"CANCEL\"] = \"Cancel\";\n SysUIActionTag2[\"OK\"] = \"Ok\";\n SysUIActionTag2[\"SEARCH\"] = \"Search\";\n SysUIActionTag2[\"RESET\"] = \"Reset\";\n SysUIActionTag2[\"FINISH\"] = \"Finish\";\n SysUIActionTag2[\"NEXT_STEP\"] = \"NextStep\";\n SysUIActionTag2[\"PREV_STEP\"] = \"PrevStep\";\n SysUIActionTag2[\"ADD_SELECTION\"] = \"AddSelection\";\n SysUIActionTag2[\"REMOVE_SELECTION\"] = \"RemoveSelection\";\n SysUIActionTag2[\"REMOVE_ALL\"] = \"RemoveAll\";\n SysUIActionTag2[\"ADD_ALL\"] = \"AddAll\";\n SysUIActionTag2[\"LOGOUT\"] = \"Logout\";\n SysUIActionTag2[\"LOGIN\"] = \"Login\";\n SysUIActionTag2[\"CANCEL_CHANGES\"] = \"CancelChanges\";\n SysUIActionTag2[\"COPY\"] = \"Copy\";\n SysUIActionTag2[\"VIEW\"] = \"View\";\n SysUIActionTag2[\"TOGGLE_ROW_EDIT\"] = \"ToggleRowEdit\";\n SysUIActionTag2[\"REFRESH_ALL\"] = \"RefreshAll\";\n SysUIActionTag2[\"REFRESH_PARENT\"] = \"RefreshParent\";\n SysUIActionTag2[\"LOAD_MORE\"] = \"LoadMore\";\n return SysUIActionTag2;\n})(SysUIActionTag || {});\n\n// src/constant/view-call-tag.ts\nvar ViewCallTag = /* @__PURE__ */ ((ViewCallTag2) => {\n ViewCallTag2[\"LOAD\"] = \"Load\";\n ViewCallTag2[\"GET_DATA\"] = \"GetData\";\n ViewCallTag2[\"GET_ALL_DATA\"] = \"GetAllData\";\n ViewCallTag2[\"VALIDATE\"] = \"Validate\";\n ViewCallTag2[\"TOGGLE_COLLAPSE\"] = \"ToggleCollapse\";\n ViewCallTag2[\"WF_WITHDRAW\"] = \"WFWithdraw\";\n return ViewCallTag2;\n})(ViewCallTag || {});\n\n// src/constant/value-op.ts\nvar ValueOP = /* @__PURE__ */ ((ValueOP2) => {\n ValueOP2[\"EQ\"] = \"EQ\";\n ValueOP2[\"NOT_EQ\"] = \"NOTEQ\";\n ValueOP2[\"GT\"] = \"GT\";\n ValueOP2[\"GT_AND_EQ\"] = \"GTANDEQ\";\n ValueOP2[\"LT\"] = \"LT\";\n ValueOP2[\"LT_AND_EQ\"] = \"LTANDEQ\";\n ValueOP2[\"IS_NULL\"] = \"ISNULL\";\n ValueOP2[\"IS_NOT_NULL\"] = \"ISNOTNULL\";\n ValueOP2[\"IN\"] = \"IN\";\n ValueOP2[\"NOT_IN\"] = \"NOTIN\";\n ValueOP2[\"LIKE\"] = \"LIKE\";\n ValueOP2[\"LIFT_LIKE\"] = \"LIFTLIKE\";\n ValueOP2[\"RIGHT_LIKE\"] = \"RIGHT_LIKE\";\n ValueOP2[\"CHILD_OF\"] = \"CHILDOF\";\n ValueOP2[\"USER_LIKE\"] = \"USERLIKE\";\n ValueOP2[\"BIT_AND\"] = \"BITAND\";\n ValueOP2[\"EXISTS\"] = \"EXISTS\";\n ValueOP2[\"NOT_EXISTS\"] = \"NOTEXISTS\";\n return ValueOP2;\n})(ValueOP || {});\n\n// src/constant/platform-type.ts\nvar PlatformType = /* @__PURE__ */ ((PlatformType2) => {\n PlatformType2[\"IOS\"] = \"IOS\";\n PlatformType2[\"ANDROID\"] = \"Android\";\n PlatformType2[\"WECHAT\"] = \"WeChat\";\n PlatformType2[\"QQ\"] = \"QQ\";\n PlatformType2[\"DINGTALK\"] = \"DingTalk\";\n PlatformType2[\"BROWSER\"] = \"Browser\";\n PlatformType2[\"WCMP\"] = \"WeChatMiniProgram\";\n PlatformType2[\"DESKTOP\"] = \"Desktop\";\n return PlatformType2;\n})(PlatformType || {});\n\n// src/constant/studio-event.ts\nvar StudioViewEvents = class {\n};\n/**\n * 视图加载\n */\nStudioViewEvents.onViewMounted = \"onMounted\";\n/**\n * 视图销毁\n */\nStudioViewEvents.onViewDestroyed = \"onDestroyed\";\nvar StudioPanelEvents = class {\n};\n/**\n * 点击事件\n */\nStudioPanelEvents.onClick = \"onClick\";\n/**\n * 值变更事件\n */\nStudioPanelEvents.onChange = \"onChange\";\n/**\n * 输入事件\n */\nStudioPanelEvents.onEnter = \"onEnter\";\n/**\n * 离开事件\n */\nStudioPanelEvents.onLeave = \"onLeave\";\nvar StudioControlEvents = class {\n};\n/**\n * 加载之前\n */\nStudioControlEvents.onBeforeLoad = \"onBeforeLoad\";\n/**\n * 加载成功\n */\nStudioControlEvents.onLoadSuccess = \"onLoadSuccess\";\n/**\n * 加载失败\n */\nStudioControlEvents.onLoadError = \"onLoadError\";\n/**\n * 加载草稿之前\n */\nStudioControlEvents.onBeforeLoadDraft = \"onBeforeLoadDraft\";\n/**\n * 加载草稿成功\n */\nStudioControlEvents.onLoadDraftSuccess = \"onLoadDraftSuccess\";\n/**\n * 加载草稿失败\n */\nStudioControlEvents.onLoadDraftError = \"onLoadDraftError\";\n/**\n * 保存之前\n */\nStudioControlEvents.onBeforeSave = \"onBeforeSave\";\n/**\n * 保存成功\n */\nStudioControlEvents.onSaveSuccess = \"onSaveSuccess\";\n/**\n * 保存失败\n */\nStudioControlEvents.onSaveError = \"onSaveError\";\n/**\n * 删除之前\n */\nStudioControlEvents.onBeforeRemove = \"onBeforeRemove\";\n/**\n * 删除成功\n */\nStudioControlEvents.onRemoveSuccess = \"onRemoveSuccess\";\n/**\n * 删除失败\n */\nStudioControlEvents.onRemoveError = \"onRemoveError\";\n/**\n * 原生默认工具栏的点击事件名称\n */\nStudioControlEvents.CLICK = \"onClick\";\n\n// src/utils/modal/modal.ts\nvar Modal = class {\n constructor(opts) {\n this.mode = \"EMBED\" /* EMBED */;\n this.viewUsage = 4;\n this.ignoreDismissCheck = false;\n this.hooks = {\n shouldDismiss: new AsyncSeriesHook(),\n beforeDismiss: new AsyncSeriesHook()\n };\n /**\n * 外部注入的模态等组件实际的关闭操作\n * @author lxm\n * @date 2023-05-12 07:06:56\n */\n this._dismiss = (data) => {\n ibiz.log.error(\"\\u5916\\u90E8\\u5173\\u95ED\\u80FD\\u529B\\u672A\\u6CE8\\u518C\", data);\n };\n if (opts.mode) {\n this.mode = opts.mode;\n }\n if (opts.routeDepth) {\n this.routeDepth = opts.routeDepth;\n }\n if (opts.viewUsage) {\n this.viewUsage = opts.viewUsage;\n }\n if (opts.dismiss) {\n this._dismiss = opts.dismiss;\n }\n }\n /**\n * 注入模态等组件实际的关闭操作\n * @author lxm\n * @date 2023-07-18 03:05:22\n * @param {(data: IModalData) => void} dismiss\n */\n injectDismiss(dismiss) {\n this._dismiss = dismiss;\n }\n async dismiss(data = { ok: false, data: [] }) {\n const context = { allowClose: true };\n if (this.ignoreDismissCheck !== true) {\n await this.hooks.shouldDismiss.call(context);\n }\n if (!context.allowClose) {\n ibiz.log.debug(\"shouldDismiss\\u7ED3\\u679C\\u4E3Afalse,\\u5173\\u95ED\\u4E2D\\u65AD\\u3002\");\n return false;\n }\n await this.hooks.beforeDismiss.call(data);\n this._dismiss(data);\n this.destroy();\n return true;\n }\n /**\n * 执行完一次关闭后就会调销毁\n * @author lxm\n * @date 2023-07-18 03:32:26\n * @protected\n */\n destroy() {\n this.hooks.shouldDismiss.clear();\n this.hooks.beforeDismiss.clear();\n }\n};\n\n// src/utils/value-rule/value-rule.ts\nfunction filterValueRules(vrs, name) {\n return vrs.filter((vr) => {\n const { checkMode } = vr;\n const belongName = vr.deformItemName || vr.degridEditItemName;\n return checkMode !== 2 && belongName === name;\n });\n}\n\n// src/utils/text-util/text-util.ts\nvar TextUtil = class {\n constructor() {\n /**\n * input元素,用于存储拷贝的文本\n *\n * @author zhanghengfeng\n * @date 2023-08-31 20:08:06\n * @private\n * @type {(HTMLInputElement | null)}\n */\n this.inputElement = null;\n }\n /**\n * 值格式化\n *\n * @author zhanghengfeng\n * @date 2023-08-24 14:08:27\n * @param {string} value\n * @param {string} _code\n * @return {*} {string}\n */\n format(value, _code) {\n return value;\n }\n /**\n * 拷贝文本\n *\n * @author zhanghengfeng\n * @date 2023-08-31 11:08:51\n * @param {string} value\n * @return {*} {boolean}\n */\n copy(value) {\n if (!this.inputElement) {\n this.inputElement = document.createElement(\"input\");\n this.inputElement.style.position = \"absolute\";\n this.inputElement.style.left = \"-9999px\";\n document.body.appendChild(this.inputElement);\n }\n this.inputElement.value = value;\n this.inputElement.select();\n return document.execCommand(\"copy\");\n }\n};\n\n// src/utils/raw-value-util/raw-value-util.ts\nvar RawValueUtil = class {\n /**\n * 字符串是否完全由整数/浮点数组成\n *\n * @param {string} str\n * @return {*}\n */\n isNumber(str) {\n return /^-?\\d+(\\.\\d+)?$/.test(str);\n }\n /**\n * 转换直接值\n *\n * @param {string} val\n * @return {*}\n */\n format(val) {\n let tempVal = val;\n if (val !== void 0) {\n if (val === \"true\" || val === \"false\") {\n tempVal = val === \"true\";\n } else if (this.isNumber(val)) {\n tempVal = parseFloat(val);\n }\n }\n return tempVal;\n }\n};\n\n// src/utils/promise/promise.ts\nasync function handleAllSettled(values, isThrow = true) {\n const allResults = await Promise.allSettled(values);\n const successResult = [];\n const errorResult = [];\n allResults.forEach((item) => {\n if (item.status === \"fulfilled\") {\n successResult.push(item.value);\n } else {\n errorResult.push(item.reason);\n }\n });\n if (errorResult.length > 0) {\n const error = errorResult.length === 1 ? errorResult[0] : errorResult;\n if (isThrow) {\n throw error;\n } else {\n ibiz.util.error.handle(error);\n }\n }\n return successResult;\n}\n\n// src/command/app/open-app-view/open-app-view.ts\nimport { ModelError as ModelError14, RuntimeError as RuntimeError21 } from \"@ibiz-template/core\";\nimport { clone as clone13 } from \"ramda\";\n\n// src/service/utils/de-dq-cond/ps-de-dq-cond-engine.ts\nimport { isEmpty as isEmpty3 } from \"ramda\";\n\n// src/service/utils/de-dq-cond/ps-model-cond-engine-base.ts\nvar PSModelCondEngineBase = class {\n constructor() {\n /**\n * 根分组条件\n *\n * @private\n * @type {(PSModelGroupCondBase | null)}\n * @memberof PSModelCondEngineBase\n */\n this.psModelGroupCondBase = null;\n }\n /**\n * 解析条件\n *\n * @param {IData[]} obj\n * @memberof PSModelCondEngineBase\n */\n parse(obj) {\n if (obj instanceof Array) {\n const psModelGroupCondBase = this.createPSModelGroupCond();\n psModelGroupCondBase.parse(obj);\n this.psModelGroupCondBase = psModelGroupCondBase;\n }\n }\n /**\n * 测试项\n *\n * @protected\n * @param {string} strCondOp\n * @param {*} objValue\n * @param {*} objCondValue\n * @return {*} {boolean}\n * @memberof PSModelCondEngineBase\n */\n testSingleCond(strCondOp, objValue, objCondValue) {\n try {\n if (\"ISNULL\" /* CONDOP_ISNULL */ === strCondOp) {\n return objValue == null;\n }\n if (\"ISNOTNULL\" /* CONDOP_ISNOTNULL */ === strCondOp) {\n return objValue != null;\n }\n if (\"EQ\" /* CONDOP_EQ */ === strCondOp || \"ABSEQ\" /* CONDOP_ABSEQ */ === strCondOp || \"GT\" /* CONDOP_GT */ === strCondOp || \"GTANDEQ\" /* CONDOP_GTANDEQ */ === strCondOp || \"LT\" /* CONDOP_LT */ === strCondOp || \"LTANDEQ\" /* CONDOP_LTANDEQ */ === strCondOp || \"NOTEQ\" /* CONDOP_NOTEQ */ === strCondOp) {\n let nRet = -1;\n if (objValue == objCondValue) {\n nRet = 0;\n } else if (objValue > objCondValue) {\n nRet = 1;\n }\n if (\"EQ\" /* CONDOP_EQ */ === strCondOp || \"ABSEQ\" /* CONDOP_ABSEQ */ === strCondOp) {\n return nRet === 0;\n }\n if (\"GT\" /* CONDOP_GT */ === strCondOp) {\n return nRet > 0;\n }\n if (\"GTANDEQ\" /* CONDOP_GTANDEQ */ === strCondOp) {\n return nRet >= 0;\n }\n if (\"LT\" /* CONDOP_LT */ === strCondOp) {\n return nRet < 0;\n }\n if (\"LTANDEQ\" /* CONDOP_LTANDEQ */ === strCondOp) {\n return nRet <= 0;\n }\n if (\"NOTEQ\" /* CONDOP_NOTEQ */ === strCondOp) {\n return nRet !== 0;\n }\n }\n if (\"LIKE\" /* CONDOP_LIKE */ === strCondOp) {\n if (objValue != null && objCondValue != null) {\n return objValue.toString().toUpperCase().indexOf(objCondValue.toString().toUpperCase()) !== -1;\n }\n return false;\n }\n if (\"LEFTLIKE\" /* CONDOP_LEFTLIKE */ === strCondOp) {\n if (objValue != null && objCondValue != null) {\n return objValue.toString().toUpperCase().indexOf(objCondValue.toString().toUpperCase()) === 0;\n }\n return false;\n }\n } catch (err) {\n ibiz.log.error(err);\n }\n return false;\n }\n /**\n * 获取根分组条件\n *\n * @return {*} {PSModelGroupCondBase}\n * @memberof PSModelCondEngineBase\n */\n getPSModelGroupCondBase() {\n return this.psModelGroupCondBase;\n }\n};\n\n// src/service/utils/de-dq-cond/ps-model-group-cond-base.ts\nimport { RuntimeError as RuntimeError4 } from \"@ibiz-template/core\";\n\n// src/service/utils/de-dq-cond/ps-model-cond-base.ts\nvar PSModelCondBase = class {\n constructor() {\n this.strCondOp = null;\n }\n getCondOp() {\n return this.strCondOp;\n }\n setCondOp(strCondOp) {\n this.strCondOp = strCondOp;\n }\n};\n\n// src/service/utils/de-dq-cond/ps-model-single-cond-base.ts\nvar PSModelSingleCondBase = class extends PSModelCondBase {\n /**\n * 编译条件\n *\n * @author chitanda\n * @date 2022-08-17 23:08:35\n * @param {unknown[]} arr\n */\n parse(arr) {\n const nCount = arr.length;\n let bOpStart = true;\n let bParamStart = false;\n let bValueStart = false;\n for (let i = 0; i < nCount; i++) {\n if (bOpStart) {\n const strText = arr[i];\n this.setCondOp(strText);\n bOpStart = false;\n bParamStart = true;\n continue;\n }\n if (bParamStart) {\n const strText = arr[i];\n this.setParam(strText);\n bParamStart = false;\n bValueStart = true;\n continue;\n }\n if (bValueStart) {\n const obj = arr[i];\n if (obj instanceof Object && !(obj instanceof Array)) {\n const data = obj;\n if (data.type != null) {\n this.setValueType(data.type.toString());\n }\n if (data.value != null) {\n this.setValue(data.value.toString());\n }\n } else {\n this.setValue(obj);\n }\n break;\n }\n }\n }\n getValueType() {\n return this.strValueType;\n }\n setValueType(strValueType) {\n this.strValueType = strValueType;\n }\n getValue() {\n return this.strValue;\n }\n setValue(strValue) {\n this.strValue = strValue;\n }\n getParamType() {\n return this.strParamType;\n }\n setParamType(strParamType) {\n this.strParamType = strParamType;\n }\n getParam() {\n return this.strParam;\n }\n setParam(strParam) {\n this.strParam = strParam;\n }\n};\n\n// src/service/utils/de-dq-cond/ps-model-group-cond-base.ts\nvar PSModelGroupCondBase = class _PSModelGroupCondBase extends PSModelCondBase {\n constructor() {\n super(...arguments);\n /**\n * 子条件项\n *\n * @private\n * @type {PSModelCondBase[]}\n * @memberof PSModelGroupCondBase\n */\n this.childCondList = [];\n /**\n * 是否取反\n *\n * @private\n * @memberof PSModelGroupCondBase\n */\n this.bNotMode = false;\n }\n /**\n * 解析分组条件\n *\n * @param {unknown[]} arr\n * @memberof PSModelGroupCondBase\n */\n parse(arr) {\n const nCount = arr.length;\n let bNotStart = true;\n let bOpStart = true;\n let bCondStart = false;\n for (let i = 0; i < nCount; i++) {\n if (bNotStart && bOpStart) {\n const strText = arr[i];\n if (strText === \"!\") {\n this.setNotMode(true);\n bNotStart = false;\n continue;\n }\n }\n if (bOpStart) {\n const strText = arr[i];\n this.setCondOp(strText);\n bOpStart = false;\n bNotStart = false;\n bCondStart = true;\n continue;\n }\n if (bCondStart) {\n const list = arr[i];\n if (list instanceof Array) {\n list.forEach((item) => {\n if (item.length > 0) {\n const strText = item[0].toString();\n if (strText === \"!\" || \"OR\" /* CONDOP_OR */ === strText || \"AND\" /* CONDOP_AND */ === strText) {\n const child = new _PSModelGroupCondBase();\n child.parse(item);\n this.childCondList.push(child);\n } else {\n const child = new PSModelSingleCondBase();\n child.parse(item);\n this.childCondList.push(child);\n }\n }\n });\n } else {\n throw new RuntimeError4(\"\\u503C\\u5FC5\\u987B\\u4E3A\\u6570\\u7EC4\");\n }\n }\n }\n }\n setNotMode(bNotMode) {\n this.bNotMode = bNotMode;\n }\n isNotMode() {\n return this.bNotMode;\n }\n getChildPSModelCondBases() {\n return this.childCondList;\n }\n};\n\n// src/service/utils/de-dq-cond/ps-model-group-cond.ts\nvar PSDEDQGroupCond = class extends PSModelGroupCondBase {\n};\n\n// src/service/utils/de-dq-cond/ps-model-single-cond.ts\nvar PSDEDQSingleCond = class extends PSModelSingleCondBase {\n};\n\n// src/service/utils/de-dq-cond/ps-de-dq-cond-engine.ts\nvar _PSDEDQCondEngine = class _PSDEDQCondEngine extends PSModelCondEngineBase {\n /**\n * 测试\n *\n * @param {IData} data 检测的数据\n * @param {SearchFilter} filter 过滤条件\n * @return {*} {boolean}\n * @memberof PSDEDQCondEngine\n */\n test(data, filter) {\n return this.testCond(this.getPSModelGroupCondBase(), data, filter);\n }\n /**\n * 查询条件判断\n *\n * @author chitanda\n * @date 2022-08-17 23:08:11\n * @protected\n * @param {PSModelCondBase} cond\n * @param {IData} data\n * @param {SearchFilter} filter\n * @return {*} {boolean}\n */\n testCond(cond, data, filter) {\n if (cond instanceof PSModelGroupCondBase) {\n const list = cond.getChildPSModelCondBases();\n if (list == null || isEmpty3(list)) {\n return !cond.isNotMode();\n }\n const bAnd = \"AND\" /* CONDOP_AND */ === cond.getCondOp();\n let bRet = bAnd;\n for (let i = 0; i < list.length; i++) {\n const childCond = list[i];\n if (this.testCond(childCond, data, filter)) {\n if (!bAnd) {\n bRet = true;\n break;\n }\n } else if (bAnd) {\n bRet = false;\n break;\n }\n }\n if (cond.isNotMode()) {\n return !bRet;\n }\n return bRet;\n }\n if (cond instanceof PSModelSingleCondBase) {\n if (isEmpty3(cond.getParam())) {\n ibiz.log.warn(\"\\u6CA1\\u6709\\u6307\\u5B9A\\u5C5E\\u6027\\u540D\\u79F0\", cond);\n }\n const objValue = data[cond.getParam().toLowerCase()];\n let objCondValue = null;\n const valType = cond.getValueType();\n const val = cond.getValue();\n if (valType != null && !isEmpty3(valType)) {\n if (isEmpty3(val)) {\n ibiz.log.warn(\"\\u6CA1\\u6709\\u6307\\u5B9A\\u4E0A\\u4E0B\\u6587\\u53C2\\u6570\\u540D\\u79F0\");\n }\n if (_PSDEDQCondEngine.PARAMTYPE_WEBCONTEXT === valType) {\n objCondValue = filter.data[val.toLowerCase()];\n } else if (_PSDEDQCondEngine.PARAMTYPE_DATACONTEXT === valType) {\n objCondValue = filter.getValue(val.toLowerCase());\n }\n } else {\n objCondValue = cond.getValue();\n }\n return this.testSingleCond(cond.getCondOp(), objValue, objCondValue);\n }\n ibiz.log.warn(\"\\u65E0\\u6CD5\\u8BC6\\u522B\\u7684\\u6761\\u4EF6\\u5BF9\\u8C61\", cond);\n return false;\n }\n createPSModelSingleCond() {\n return new PSDEDQSingleCond();\n }\n createPSModelGroupCond() {\n return new PSDEDQGroupCond();\n }\n};\n/**\n * 数据上下文\n *\n * @static\n * @memberof PSDEDQCondEngine\n */\n_PSDEDQCondEngine.PARAMTYPE_DATACONTEXT = \"DATACONTEXT\";\n/**\n * 网页请求上下文\n *\n * @static\n * @memberof PSDEDQCondEngine\n */\n_PSDEDQCondEngine.PARAMTYPE_WEBCONTEXT = \"WEBCONTEXT\";\nvar PSDEDQCondEngine = _PSDEDQCondEngine;\n\n// src/register/helper/app-counter-register.ts\nimport { RuntimeError as RuntimeError5 } from \"@ibiz-template/core\";\n\n// src/register/helper/common-register.ts\nasync function getPluginRegisterKey(pluginId, appId) {\n var _a;\n const app = ibiz.hub.getApp(appId);\n const plugin = (_a = app.model.appPFPluginRefs) == null ? void 0 : _a.find(\n (item) => item.pluginCode.toLowerCase() === pluginId\n );\n if (!plugin) {\n ibiz.log.error(\"\\u672A\\u5339\\u914D\\u5230\\u63D2\\u4EF6[\".concat(pluginId, \"]\\u6A21\\u578B\"));\n return;\n }\n await ibiz.plugin.loadPlugin(plugin);\n return \"\".concat(plugin.pluginType, \"_\").concat(plugin.pluginCode);\n}\n\n// src/register/helper/app-counter-register.ts\nvar APP_COUNTER_PROVIDER_PREFIX = \"APPCOUNTER\";\nfunction registerAppCounterProvider(key, callback) {\n ibiz.register.register(\"\".concat(APP_COUNTER_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider(key) {\n return ibiz.register.get(\n \"\".concat(APP_COUNTER_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nasync function getAppCounterProvider(model) {\n let provider;\n const { codeName, counterType, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u7CFB\\u7EDF\\u8BA1\\u6570\\u5668\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n if (counterType === \"CUSTOM\") {\n provider = getProvider(codeName);\n if (!provider) {\n throw new RuntimeError5(\"\\u627E\\u4E0D\\u5230\\u81EA\\u5B9A\\u4E49\\u7CFB\\u7EDF\\u8BA1\\u6570\\u5668\".concat(codeName, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n provider = getProvider(counterType);\n if (!provider) {\n throw new RuntimeError5(\"\\u627E\\u4E0D\\u7CFB\\u7EDF\\u8BA1\\u6570\\u5668\\u7C7B\\u578B\".concat(counterType, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/register/helper/control-register.ts\nvar CONTROL_PROVIDER_PREFIX = \"CONTROL\";\nfunction registerControlProvider(key, callback) {\n ibiz.register.register(\"\".concat(CONTROL_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider2(key) {\n return ibiz.register.get(\n \"\".concat(CONTROL_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nasync function getControlProvider(model) {\n let provider;\n const { controlType, controlStyle, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider2(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u90E8\\u4EF6\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n if (controlStyle && controlStyle !== \"DEFAULT\") {\n const key = \"\".concat(controlType, \"_\").concat(controlStyle);\n provider = getProvider2(key);\n if (!provider) {\n ibiz.log.error(\n \"\\u627E\\u4E0D\\u5230\\u90E8\\u4EF6\\u7C7B\\u578B\\uFF1A[\".concat(controlType, \"]\\u7684\\u90E8\\u4EF6\\u6837\\u5F0F\\uFF1A[\").concat(controlStyle, \"]\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"),\n model\n );\n } else {\n return provider;\n }\n }\n provider = getProvider2(controlType);\n if (!provider) {\n switch (controlType) {\n case \"DATAINFOBAR\":\n return;\n default:\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u90E8\\u4EF6\\u7C7B\\u578B\".concat(controlType, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n }\n } else {\n return provider;\n }\n}\n\n// src/register/helper/editor-register.ts\nvar EDITOR_PROVIDER_PREFIX = \"EDITOR\";\nfunction registerEditorProvider(key, callback) {\n ibiz.register.register(\"\".concat(EDITOR_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider3(key) {\n return ibiz.register.get(\n \"\".concat(EDITOR_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nasync function getEditorProvider(model) {\n let provider;\n const { editorType, editorStyle, predefinedType, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider3(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u7F16\\u8F91\\u5668\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n if (editorStyle && editorStyle !== \"DEFAULT\") {\n const key = \"\".concat(editorType, \"_\").concat(editorStyle);\n provider = getProvider3(key);\n if (!provider) {\n ibiz.log.error(\n \"\\u627E\\u4E0D\\u5230\\u7F16\\u8F91\\u5668\\u7C7B\\u578B\\uFF1A[\".concat(editorType, \"]\\u7684\\u7F16\\u8F91\\u5668\\u6837\\u5F0F\\uFF1A[\").concat(editorStyle, \"]\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"),\n model\n );\n } else {\n return provider;\n }\n }\n if (predefinedType) {\n let key = \"\".concat(predefinedType, \"_\").concat(editorType);\n if (editorStyle && editorStyle !== \"DEFAULT\") {\n key += \"_\".concat(editorStyle);\n }\n provider = getProvider3(key);\n if (!provider) {\n ibiz.log.error(\n \"\\u627E\\u4E0D\\u5230\\u7F16\\u8F91\\u5668\\u7C7B\\u578B\\uFF1A[\".concat(editorType, \"]\\u7684\\u9884\\u7F6E\\u7C7B\\u578B\\uFF1A[\").concat(predefinedType, \"]\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"),\n model\n );\n } else {\n return provider;\n }\n }\n provider = getProvider3(editorType);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u7F16\\u8F91\\u5668\\u7C7B\\u578B\".concat(editorType, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/register/helper/form-detail-register.ts\nvar FORMDETAIL_PROVIDER_PREFIX = \"FORMDETAIL\";\nfunction registerFormDetailProvider(key, callback) {\n ibiz.register.register(\"\".concat(FORMDETAIL_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider4(key) {\n return ibiz.register.get(\n \"\".concat(FORMDETAIL_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nasync function getFormDetailProvider(model) {\n let provider;\n const { detailType, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider4(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u8868\\u5355\\u6210\\u5458\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n provider = getProvider4(detailType);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u8868\\u5355\\u6210\\u5458\\u7C7B\\u578B\".concat(detailType, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/register/helper/grid-column-register.ts\nvar GRIDCOLUMN_PROVIDER_PREFIX = \"GRIDCOLUMN\";\nfunction registerGridColumnProvider(key, callback) {\n ibiz.register.register(\"\".concat(GRIDCOLUMN_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider5(key) {\n return ibiz.register.get(\n \"\".concat(GRIDCOLUMN_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nasync function getGridColumnProvider(model) {\n let provider;\n const { columnType, enableRowEdit, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider5(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u8868\\u683C\\u5217\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n const key = enableRowEdit ? \"\".concat(columnType, \"_EDIT\") : columnType;\n provider = getProvider5(key);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u8868\\u683C\\u5217\\u7C7B\\u578B\".concat(key, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/register/helper/panel-item-register.ts\nvar PANELITEM_PROVIDER_PREFIX = \"PANELITEM\";\nfunction registerPanelItemProvider(key, callback) {\n ibiz.register.register(\n \"\".concat(PANELITEM_PROVIDER_PREFIX, \"_\").concat(key.toUpperCase()),\n callback\n );\n}\nfunction getProvider6(key) {\n return ibiz.register.get(\n \"\".concat(PANELITEM_PROVIDER_PREFIX, \"_\").concat(key.toUpperCase())\n );\n}\nasync function getPanelItemProvider(model) {\n var _a;\n let provider;\n const { itemType, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider6(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u9762\\u677F\\u6210\\u5458\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n if (itemType === \"CONTAINER\") {\n const predefinedType = model.predefinedType || \"DEFAULT\";\n const key = \"CONTAINER_\".concat(predefinedType);\n provider = getProvider6(key);\n if (!provider) {\n ibiz.log.error(\n \"\\u627E\\u4E0D\\u5230\\u9762\\u677F\\u5BB9\\u5668\\u9884\\u7F6E\\u7C7B\\u578B\\u4E3A\".concat(predefinedType, \"\\u7684\\u9002\\u914D\\u5668\\uFF0C\\u6CE8\\u518Ckey\\u4E3A\").concat(key)\n );\n } else {\n return provider;\n }\n }\n if (itemType === \"RAWITEM\") {\n const predefinedType = ((_a = model.rawItem) == null ? void 0 : _a.predefinedType) || \"DEFAULT\";\n const key = \"RAWITEM_\".concat(predefinedType);\n provider = getProvider6(key);\n if (!provider) {\n ibiz.log.error(\n \"\\u627E\\u4E0D\\u5230\\u9762\\u677F\\u6210\\u5458\\u76F4\\u63A5\\u5185\\u5BB9\\u9884\\u7F6E\\u7C7B\\u578B\\u4E3A\".concat(predefinedType, \"\\u7684\\u9002\\u914D\\u5668\\uFF0C\\u6CE8\\u518Ckey\\u4E3A\").concat(key)\n );\n } else {\n return provider;\n }\n }\n if (itemType === \"FIELD\") {\n const { editor } = model;\n if (editor && editor.predefinedType) {\n const key = \"FIELD_\".concat(editor.predefinedType.toUpperCase());\n provider = getProvider6(key);\n if (provider) {\n return provider;\n }\n }\n }\n provider = getProvider6(itemType);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u9762\\u677F\\u6210\\u5458\\u7C7B\\u578B\".concat(itemType, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/register/helper/portlet-register.ts\nvar PORTLET_PROVIDER_PREFIX = \"PORTLET\";\nfunction registerPortletProvider(key, callback) {\n ibiz.register.register(\"\".concat(PORTLET_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider7(key) {\n return ibiz.register.get(\n \"\".concat(PORTLET_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nasync function getPortletProvider(model) {\n let provider;\n const { portletType, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider7(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u95E8\\u6237\\u90E8\\u4EF6\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n provider = getProvider7(portletType);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u95E8\\u6237\\u90E8\\u4EF6\\u6210\\u5458\\u7C7B\\u578B\".concat(portletType, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/register/helper/ui-action-register.ts\nimport { RuntimeError as RuntimeError6 } from \"@ibiz-template/core\";\nvar UIACTION_PROVIDER_PREFIX = \"UIACTION\";\nfunction registerUIActionProvider(key, callback) {\n ibiz.register.register(\"\".concat(UIACTION_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider8(key) {\n return ibiz.register.get(\n \"\".concat(UIACTION_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nasync function getUIActionProvider(model) {\n let provider;\n const { uiactionMode, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider8(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u754C\\u9762\\u884C\\u4E3A\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n provider = getProvider8(uiactionMode);\n if (!provider) {\n throw new RuntimeError6(\"\\u627E\\u4E0D\\u754C\\u9762\\u884C\\u4E3A\\u6A21\\u5F0F\".concat(uiactionMode, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/register/helper/ui-logic-node-register.ts\nimport { RuntimeError as RuntimeError7 } from \"@ibiz-template/core\";\nvar UILOGINNODE_PROVIDER_PREFIX = \"UI_LOGIN_NODE\";\nfunction registerUILogicNodeProvider(key, callback) {\n ibiz.register.register(\"\".concat(UILOGINNODE_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nasync function getUILogicNodeProvider(model) {\n let provider;\n const { sysPFPluginId, appId } = model;\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = ibiz.register.get(\n \"\".concat(UILOGINNODE_PROVIDER_PREFIX, \"_\").concat(pluginKey)\n );\n if (provider) {\n return provider;\n }\n throw new RuntimeError7(\n \"\\u627E\\u4E0D\\u5230\\u754C\\u9762\\u903B\\u8F91\\u524D\\u7AEF\\u63D2\\u4EF6\\u8282\\u70B9\\uFF0C\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\")\n );\n }\n}\n\n// src/register/helper/view-register.ts\nvar VIEW_PROVIDER_PREFIX = \"VIEW\";\nfunction registerViewProvider(key, callback) {\n ibiz.register.register(\"\".concat(VIEW_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider9(key) {\n return ibiz.register.get(\"\".concat(VIEW_PROVIDER_PREFIX, \"_\").concat(key));\n}\nasync function getViewProvider(model) {\n let provider;\n const { viewType, viewStyle, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider9(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u89C6\\u56FE\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n if (viewStyle && viewStyle !== \"DEFAULT\") {\n const key = \"\".concat(viewType, \"_\").concat(viewStyle);\n provider = getProvider9(key);\n if (!provider) {\n ibiz.log.error(\n \"\\u627E\\u4E0D\\u5230\\u89C6\\u56FE\\u7C7B\\u578B\\uFF1A[\".concat(viewType, \"]\\u7684\\u89C6\\u56FE\\u6837\\u5F0F\\uFF1A[\").concat(viewStyle, \"]\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"),\n model\n );\n } else {\n return provider;\n }\n }\n if (!provider) {\n provider = getProvider9(viewType);\n }\n if (!provider) {\n provider = getProvider9(\"DEFAULT\");\n }\n return provider;\n}\n\n// src/register/helper/async-action-register.ts\nimport { RuntimeError as RuntimeError8 } from \"@ibiz-template/core\";\nvar ASYNC_ACTION_PROVIDER_PREFIX = \"ASYNC_ACTION\";\nfunction registerAsyncActionProvider(key, callback) {\n ibiz.register.register(\"\".concat(ASYNC_ACTION_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider10(key) {\n return ibiz.register.get(\n \"\".concat(ASYNC_ACTION_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nfunction getAsyncActionProvider(actiontype) {\n const provider = getProvider10(actiontype);\n if (!provider) {\n throw new RuntimeError8(\"\\u627E\\u4E0D\\u5F02\\u6B65\\u64CD\\u4F5C\\u7C7B\\u578B\".concat(actiontype, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/platform/provider/platform-provider-base.ts\nimport { downloadFileFromBlob, RuntimeError as RuntimeError9 } from \"@ibiz-template/core\";\nvar PlatformProviderBase = class {\n back() {\n throw new Error(\"Method not implemented.\");\n }\n init() {\n throw new Error(\"Method not implemented.\");\n }\n async login(loginName, passWord, _verificationCode) {\n return ibiz.auth.login(loginName, passWord);\n }\n async download(url, name) {\n const response = await ibiz.net.request(url, {\n method: \"get\",\n responseType: \"blob\"\n });\n if (response.status !== 200) {\n throw new RuntimeError9(\"\\u4E0B\\u8F7D\\u6587\\u4EF6\\u5931\\u8D25\");\n }\n if (!response.data) {\n throw new RuntimeError9(\"\\u6587\\u4EF6\\u6D41\\u6570\\u636E\\u4E0D\\u5B58\\u5728\");\n } else {\n const fileName = name;\n downloadFileFromBlob(response.data, fileName);\n return Promise.resolve(true);\n }\n }\n};\n\n// src/platform/provider/browser-platform-provider.ts\nvar BrowserPlatformProvider = class extends PlatformProviderBase {\n};\n\n// src/platform/provider/index.ts\nfunction install() {\n const browserPlatformProvider = new BrowserPlatformProvider();\n registerPlatformProvider(\"Browser\" /* BROWSER */, () => browserPlatformProvider);\n}\n\n// src/platform/platform-util.ts\nvar ua = window.navigator.userAgent.toLowerCase();\nfunction isAndroid() {\n return /Android|Adr/i.test(ua);\n}\nfunction isIos() {\n return /iPhone|iPod|iPad/i.test(ua);\n}\nfunction isWeChat() {\n return /MicroMessenger/i.test(ua);\n}\nfunction isDingDing() {\n return /DingTalk/i.test(ua);\n}\nfunction isWxMp() {\n return /miniProgram/i.test(ua) || window.__wxjs_environment === \"miniprogram\";\n}\nfunction getPlatformType() {\n if (isAndroid()) {\n return \"Android\" /* ANDROID */;\n }\n if (isIos()) {\n return \"IOS\" /* IOS */;\n }\n if (isWeChat()) {\n return \"WeChat\" /* WECHAT */;\n }\n if (isDingDing()) {\n return \"DingTalk\" /* DINGTALK */;\n }\n if (isWxMp()) {\n return \"WeChatMiniProgram\" /* WCMP */;\n }\n return \"Browser\" /* BROWSER */;\n}\n\n// src/register/helper/platform-register.ts\nvar PLATFORM_PROVIDER_PREFIX = \"PLATFORM\";\nfunction registerPlatformProvider(key, callback) {\n ibiz.register.register(\"\".concat(PLATFORM_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider11(key) {\n return ibiz.register.get(\n \"\".concat(PLATFORM_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nfunction getPlatformProvider() {\n const platformType = getPlatformType();\n const provider = getProvider11(platformType);\n if (!provider) {\n return getProvider11(\"Browser\" /* BROWSER */);\n }\n return provider;\n}\n\n// src/register/helper/de-method-register.ts\nimport { RuntimeError as RuntimeError10 } from \"@ibiz-template/core\";\nvar DEMETHOD_PROVIDER_PREFIX = \"DEMETHOD\";\nfunction registerDEMethodProvider(key, callback) {\n ibiz.register.register(\"\".concat(DEMETHOD_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider12(key) {\n return ibiz.register.get(\n \"\".concat(DEMETHOD_PROVIDER_PREFIX, \"_\").concat(key)\n );\n}\nasync function getDEMethodProvider(model) {\n let provider;\n const { methodType, sysPFPluginId, appId } = model;\n if (sysPFPluginId) {\n const pluginKey = await getPluginRegisterKey(sysPFPluginId, appId);\n if (pluginKey) {\n provider = getProvider12(pluginKey);\n }\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u5B9E\\u4F53\\u884C\\u4E3A\\u63D2\\u4EF6\".concat(pluginKey, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n }\n provider = getProvider12(methodType);\n if (!provider) {\n throw new RuntimeError10(\"\\u627E\\u4E0D\\u5B9E\\u4F53\\u884C\\u4E3A\\u65B9\\u6CD5\\u7C7B\\u578B\\u4E3A\".concat(methodType, \"\\u7684\\u9002\\u914D\\u5668\"));\n } else {\n return provider;\n }\n}\n\n// src/service/utils/app-counter/app-counter.ts\nimport { IBizContext, RuntimeError as RuntimeError11 } from \"@ibiz-template/core\";\nimport { notNilEmpty as notNilEmpty5, QXEvent } from \"qx-util\";\nimport { clone as clone2 } from \"ramda\";\nvar AppCounter = class {\n /**\n * Creates an instance of AppCounter.\n *\n * @author chitanda\n * @date 2022-10-26 20:10:55\n * @param {IAppCounter} model 应用计数器模型\n */\n constructor(model) {\n this.model = model;\n this.destroyed = false;\n this.context = IBizContext.create();\n this.params = {};\n this.evt = new QXEvent();\n /**\n * 计数器数据\n *\n * @author chitanda\n * @date 2022-10-26 19:10:08\n * @protected\n * @type {IData}\n */\n this.data = {};\n }\n /**\n * 计数器是否已经销毁\n *\n * @author chitanda\n * @date 2022-10-26 20:10:55\n * @protected\n * @type {boolean}\n */\n get isDestroyed() {\n return this.destroyed;\n }\n /**\n * 计数器初始化\n *\n * @author chitanda\n * @date 2022-10-26 19:10:24\n * @param {IParams} [context]\n * @param {IParams} [params]\n */\n async init(context, params) {\n this.setParams(context, params);\n this.interval();\n await this.load();\n }\n /**\n * 设置上下文以及查询参数\n *\n * @author chitanda\n * @date 2022-10-26 19:10:58\n * @protected\n * @param {IParams} [context]\n * @param {IParams} [params]\n */\n setParams(context, params) {\n if (context) {\n this.context = clone2(context);\n }\n if (params) {\n this.params = clone2(params);\n }\n }\n /**\n * 计数器定时刷新\n *\n * @author chitanda\n * @date 2022-10-26 18:10:13\n * @protected\n */\n interval() {\n this.destroyInterval();\n this.intervalTimer = setInterval(() => {\n if (this.evt.getSize(\"change\") > 0) {\n this.load();\n }\n }, this.model.timer || 6e3);\n }\n /**\n * 销毁定时器自动刷新\n *\n * @author chitanda\n * @date 2022-10-26 18:10:31\n * @protected\n */\n destroyInterval() {\n if (this.intervalTimer) {\n clearInterval(this.intervalTimer);\n this.intervalTimer = null;\n }\n }\n /**\n * 加载计数器\n *\n * @author chitanda\n * @date 2022-10-26 19:10:38\n * @protected\n * @return {*} {Promise<IData>}\n */\n async load() {\n throw new RuntimeError11(\"\\u672A\\u5B9E\\u73B0\\u8BA1\\u6570\\u5668\\u52A0\\u8F7D\\u65B9\\u6CD5\");\n }\n /**\n * 计数器刷新\n *\n * @author chitanda\n * @date 2022-10-26 19:10:46\n * @param {IParams} [context]\n * @param {IParams} [params]\n * @return {*} {Promise<IData>}\n */\n refresh(context, params) {\n this.setParams(context, params);\n return this.load();\n }\n /**\n * 计数器数据变更事件监听\n *\n * @author chitanda\n * @date 2022-10-26 20:10:13\n * @param {(data: IData) => void} fn\n * @param {boolean} [immediate=true] 当有计时器数据时,立即触发一次回调\n */\n onChange(fn, immediate = true) {\n this.evt.on(\"change\", fn);\n if (immediate && notNilEmpty5(this.data)) {\n fn(this.data);\n }\n }\n /**\n * 取消计数器数据变更监听\n *\n * @author chitanda\n * @date 2022-10-26 20:10:13\n * @param {(data: IData) => void} fn\n */\n offChange(fn) {\n this.evt.off(\"change\", fn);\n }\n /**\n * 根据计数器标识,获取计数器数值\n *\n * @author chitanda\n * @date 2022-10-26 20:10:08\n * @param {string} tag\n * @return {*} {number}\n */\n getCounter(tag) {\n return this.data[tag.toLowerCase()] || 0;\n }\n /**\n * 销毁计数器\n *\n * @author chitanda\n * @date 2022-10-26 18:10:31\n */\n destroy() {\n this.destroyed = true;\n this.context.destroy();\n this.destroyInterval();\n this.evt.reset();\n }\n};\n\n// src/service/utils/app-counter/app-de-counter.ts\nimport { RuntimeModelError as RuntimeModelError5 } from \"@ibiz-template/core\";\nvar AppDECounter = class extends AppCounter {\n /**\n * 计数器初始化\n *\n * @author chitanda\n * @date 2022-10-26 19:10:24\n * @param {IParams} [context]\n * @param {IParams} [params]\n */\n async init(context, params) {\n this.appDataEntityId = this.model.appDataEntityId;\n const action = this.model.getAppDEActionId;\n if (!action) {\n throw new RuntimeModelError5(this.model, \"\\u672A\\u627E\\u5230\\u83B7\\u53D6\\u8BA1\\u6570\\u5668\\u884C\\u4E3A!\");\n }\n this.action = action;\n await super.init(context, params);\n }\n /**\n * 加载计数器\n *\n * @author chitanda\n * @date 2022-10-26 19:10:38\n * @protected\n * @return {*} {Promise<IData>}\n */\n async load() {\n const app = ibiz.hub.getApp(this.context.srfappid);\n const res = await app.deService.exec(\n this.appDataEntityId,\n this.action,\n this.context,\n this.params\n );\n if (res.ok) {\n this.data = res.data;\n this.evt.emit(\"change\", this.data);\n }\n return this.data;\n }\n};\n\n// src/service/utils/app-counter/app-de-counter.provider.ts\nvar AppDECounterProvider = class {\n createCounter(model) {\n return new AppDECounter(model);\n }\n};\n\n// src/service/utils/app-counter/index.ts\nfunction presetAppCounterProvider() {\n registerAppCounterProvider(\"DEDR\", () => new AppDECounterProvider());\n}\n\n// src/service/utils/de-dq-cond-util/de-dq-cond-util.ts\nimport { ModelError as ModelError3 } from \"@ibiz-template/core\";\nvar DEDQCondUtil = class {\n /**\n * 根据数据查询获取查询\n *\n * @author chitanda\n * @date 2022-08-25 17:08:04\n * @static\n * @param {IAppDEDataSet} dataSet\n * @return {*} {PSDEDQCondEngine}\n */\n static getCond(dataSet) {\n if (this.map.has(dataSet)) {\n return this.map.get(dataSet);\n }\n const groups = dataSet.dedqgroupConditions;\n if (groups) {\n const cond = new PSDEDQCondEngine();\n cond.parse([\"OR\", this.calcCond(groups)]);\n this.map.set(dataSet, cond);\n return cond;\n }\n return null;\n }\n /**\n * 计算查询条件\n *\n * @author chitanda\n * @date 2022-08-25 17:08:39\n * @protected\n * @static\n * @param {IDEDQCondition[]} items\n * @return {*} {unknown[]}\n */\n static calcCond(items) {\n const arr = [];\n items.forEach((item) => {\n const condArr = [];\n if (item.condType === \"GROUP\") {\n const cond = item;\n if (cond.notMode) {\n condArr.push(\"!\");\n }\n condArr.push(item.condOp);\n const children = cond.dedqconditions;\n if (children) {\n const child = this.calcCond(children);\n condArr.push(child);\n }\n } else if (item.condType === \"SINGLE\") {\n const cond = item;\n condArr.push(cond.fieldName);\n if (cond.condValue) {\n } else {\n condArr.push(\"\");\n }\n } else {\n throw new ModelError3(item, \"\\u6682\\u672A\\u652F\\u6301\\u7684\\u67E5\\u8BE2\\u6761\\u4EF6\\u7C7B\\u578B: \".concat(item.condType));\n }\n arr.push(condArr);\n });\n return arr;\n }\n};\n/**\n * 查询条件缓存\n *\n * @author chitanda\n * @date 2022-08-25 17:08:57\n * @protected\n * @static\n * @type {WeakMap<IAppDEDataSet, PSDEDQCondEngine>}\n */\nDEDQCondUtil.map = /* @__PURE__ */ new WeakMap();\n\n// src/service/utils/dynamic-code-list/dynamic-code-list.ts\nimport { ModelError as ModelError4, RuntimeModelError as RuntimeModelError6 } from \"@ibiz-template/core\";\nimport { isNil as isNil3 } from \"ramda\";\nvar DynamicCodeListCache = class {\n constructor(codeList) {\n /**\n * 缓存的map,key是context和params合成的字符串\n *\n * @author lxm\n * @date 2022-08-26 14:08:19\n * @protected\n */\n this.cache = /* @__PURE__ */ new Map();\n /**\n * 是否是预定义类型\n *\n * @author lxm\n * @date 2022-10-20 10:10:48\n * @protected\n * @type {boolean}\n */\n this.isPredefined = false;\n this.codeList = codeList;\n }\n /**\n * 初始化\n *\n * @author lxm\n * @date 2022-08-26 14:08:28\n * @returns {*} {Promise<void>}\n */\n async init() {\n const fn = async () => {\n const { predefinedType } = this.codeList;\n if (predefinedType) {\n this.isPredefined = true;\n if (![\"OPERATOR\", \"RUNTIME\"].includes(predefinedType)) {\n throw new ModelError4(\n this.codeList,\n \"\\u9884\\u5B9A\\u4E49\\u7C7B\\u578B\".concat(predefinedType, \"\\u6682\\u4E0D\\u652F\\u6301\")\n );\n }\n return;\n }\n this.initPromise = void 0;\n };\n this.initPromise = fn();\n return this.initPromise;\n }\n /**\n * 把数据转换成代码项\n *\n * @author lxm\n * @date 2022-08-26 15:08:24\n * @param {IData} data\n * @returns {*}\n */\n convertData(data) {\n const result = {};\n const {\n valueAppDEFieldId,\n textAppDEFieldId,\n iconClsAppDEFieldId,\n iconClsXAppDEFieldId,\n iconPathAppDEFieldId,\n iconPathXAppDEFieldId,\n disableAppDEFieldId,\n dataAppDEFieldId\n } = this.codeList;\n const value = valueAppDEFieldId ? data[valueAppDEFieldId] : data.srfkey;\n result.id = value;\n result.value = value;\n result.text = textAppDEFieldId ? data[textAppDEFieldId] : data.srfmajortext;\n if (iconClsAppDEFieldId || iconClsXAppDEFieldId || iconPathAppDEFieldId || iconPathXAppDEFieldId) {\n result.sysImage = {};\n if (iconClsAppDEFieldId) {\n result.sysImage.cssClass = data[iconClsAppDEFieldId];\n }\n if (iconClsXAppDEFieldId) {\n result.sysImage.cssClassX = data[iconClsXAppDEFieldId];\n }\n if (iconPathAppDEFieldId) {\n result.sysImage.imagePath = data[iconPathAppDEFieldId];\n }\n if (iconPathXAppDEFieldId) {\n result.sysImage.imagePathX = data[iconPathXAppDEFieldId];\n }\n }\n if (disableAppDEFieldId) {\n result.disableSelect = data[disableAppDEFieldId];\n }\n if (dataAppDEFieldId && data[dataAppDEFieldId]) {\n result.data = ScriptFactory.execSingleLine(\n data[dataAppDEFieldId]\n );\n }\n return result;\n }\n /**\n * 加载服务获取数据,返回代码项\n *\n * @author lxm\n * @date 2022-08-26 14:08:08\n * @protected\n * @param {IParams} [context={}]\n * @param {IParams} [params={}]\n * @returns {*} {Promise<CodeListItem[]>}\n */\n async load(context = {}, params = {}) {\n const app = ibiz.hub.getApp(context.srfappid);\n const {\n appDataEntityId,\n appDEDataSetId,\n minorSortAppDEFieldId,\n minorSortDir,\n pvalueAppDEFieldId,\n customCond\n } = this.codeList;\n const tempParams = { ...params };\n if (minorSortAppDEFieldId && minorSortDir) {\n Object.assign(tempParams, {\n sort: \"\".concat(minorSortAppDEFieldId.toLowerCase(), \",\").concat(minorSortDir.toLowerCase())\n });\n }\n if (customCond) {\n const navParams = ScriptFactory.execSingleLine(customCond);\n const addParams = convertNavData(navParams, tempParams, context);\n Object.assign(tempParams, addParams);\n }\n if (!tempParams.size) {\n tempParams.size = 1e4;\n }\n if (this.isPredefined) {\n const res2 = await app.net.get(\n \"/dictionaries/codelist/\".concat(this.codeList.codeName),\n tempParams\n );\n return Object.freeze(res2.data.items);\n }\n if (!appDataEntityId) {\n throw new RuntimeModelError6(this.codeList, \"\\u672A\\u914D\\u7F6E\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!appDEDataSetId) {\n throw new RuntimeModelError6(this.codeList, \"\\u672A\\u914D\\u7F6E\\u6570\\u636E\\u96C6\");\n }\n const res = await app.deService.exec(\n appDataEntityId,\n appDEDataSetId,\n context,\n void 0,\n tempParams\n );\n let resultItems = [];\n if (res.data.length) {\n res.data.forEach((item) => {\n if (pvalueAppDEFieldId) {\n const tempItems = this.prepareTreeData(res.data);\n if (tempItems) {\n resultItems = tempItems;\n }\n } else {\n resultItems.push(this.convertData(item));\n }\n });\n }\n return Object.freeze(resultItems);\n }\n /**\n * 组装树形代码表数据\n *\n * @return {codeListItem[] | undefined}\n */\n prepareTreeData(items, pValue) {\n const { pvalueAppDEFieldId } = this.codeList;\n let filteredData = [];\n filteredData = items.filter((item) => {\n if (pValue) {\n return item[pvalueAppDEFieldId] === pValue;\n }\n return !item[pvalueAppDEFieldId];\n });\n if (filteredData.length === 0) {\n return;\n }\n return filteredData.map((data) => {\n const tempCodeListItem = this.convertData(data);\n tempCodeListItem.children = this.prepareTreeData(\n items,\n tempCodeListItem.value\n );\n return tempCodeListItem;\n });\n }\n /**\n * 获取动态的代码项\n *\n * @author lxm\n * @date 2022-08-26 14:08:44\n * @param {IParams} [context={}]\n * @param {IParams} [params={}]\n * @returns {*} {Promise<IData[]>}\n */\n async get(context = {}, params = {}) {\n if (this.initPromise) {\n await this.initPromise;\n }\n if (!this.codeList.enableCache) {\n return this.load(context, params);\n }\n const key = JSON.stringify(context) + JSON.stringify(params);\n if (this.cache.has(key)) {\n const cacheData2 = this.cache.get(key);\n if (cacheData2.expirationTime > (/* @__PURE__ */ new Date()).getTime()) {\n return cacheData2.promise ? cacheData2.promise : cacheData2.items;\n }\n this.cache.delete(key);\n }\n const promise = this.load(context, params);\n const { cacheTimeout } = this.codeList;\n const waitTime = cacheTimeout === -1 || isNil3(cacheTimeout) ? ibiz.config.codeList.timeout : this.codeList.cacheTimeout;\n const cacheData = {\n expirationTime: (/* @__PURE__ */ new Date()).getTime() + waitTime,\n promise\n };\n this.cache.set(key, cacheData);\n const result = await promise;\n cacheData.items = result;\n delete cacheData.promise;\n return result;\n }\n};\n\n// src/service/utils/de-cache/de-cache.ts\nimport { where, equals, clone as clone3, isNil as isNil5, isEmpty as isEmpty5 } from \"ramda\";\nimport { createUUID } from \"qx-util\";\n\n// src/service/utils/service-exist-util/service-exist-util.ts\nimport { RuntimeError as RuntimeError12 } from \"@ibiz-template/core\";\nimport { isEmpty as isEmpty4, isNil as isNil4 } from \"ramda\";\nfunction isExistSrfKey(funcName, entity) {\n if (entity != null) {\n const { srfkey } = entity;\n if (!isNil4(srfkey) && !isEmpty4(srfkey)) {\n return true;\n }\n }\n throw new RuntimeError12(\"\\u6267\\u884C\\u300C\".concat(funcName, \"\\u300D\\u4E0D\\u5B58\\u5728\\u300Csrfkey\\u300D\\u65E0\\u6CD5\\u5904\\u7406\"));\n}\nfunction isExistSessionId(funcName, context) {\n const { srfsessionid } = context;\n if (!isNil4(srfsessionid) && !isEmpty4(srfsessionid)) {\n return true;\n }\n throw new RuntimeError12(\"\\u6267\\u884C\\u300C\".concat(funcName, \"\\u300D\\u4E0D\\u5B58\\u5728\\u300Csrfsessionid\\u300D\\u65E0\\u6CD5\\u5904\\u7406\"));\n}\n\n// src/service/utils/de-cache/de-cache.ts\nvar DECache = class {\n constructor() {\n /**\n * 数据缓存\n *\n * @author chitanda\n * @date 2022-08-17 23:08:08\n * @type {Map<string, Map<string, IDataEntity>>}\n */\n this.cacheMap = /* @__PURE__ */ new Map();\n }\n /**\n * 强制设置数据,忽略其他逻辑\n *\n * @author chitanda\n * @date 2022-05-10 17:05:45\n * @param {IParams} context\n * @param {IDataEntity} entity\n */\n forceAdd(context, entity) {\n const map = this.getCacheByTag(context);\n const data = map.get(entity.srfkey);\n if (data) {\n data.assign(entity);\n ibiz.log.warn(\"forceAdd\", entity.srfkey, entity);\n }\n }\n /**\n * 强制更新数据,非合并,忽略其他逻辑\n *\n * @author chitanda\n * @date 2022-05-10 17:05:27\n * @param {IParams} context\n * @param {IDataEntity} entity\n */\n forceUpdate(context, entity) {\n const map = this.getCacheByTag(context);\n map.set(entity.srfkey, clone3(entity));\n ibiz.log.warn(\"forceUpdate\", entity.srfkey, entity);\n }\n /**\n * 强制删除数据,忽略其他逻辑\n *\n * @author chitanda\n * @date 2022-05-10 17:05:08\n * @param {IParams} context\n * @param {string} srfKey\n */\n forceDelete(context, srfKey) {\n const map = this.getCacheByTag(context);\n map.delete(srfKey);\n ibiz.log.warn(\"forceDelete\", srfKey);\n }\n /**\n * 新增数据\n *\n * @param {*} context\n * @param {IDataEntity} entity\n * @return {*} {boolean}\n * @memberof EntityCache\n */\n add(context, entity) {\n try {\n isExistSessionId(\"add\", context);\n if (isNil5(entity.srfkey) || isEmpty5(entity.srfkey)) {\n entity.srfkey = createUUID();\n }\n entity.srftempdate = (/* @__PURE__ */ new Date()).getTime();\n const map = this.getCacheByTag(context);\n map.set(entity.srfkey, clone3(entity));\n ibiz.log.warn(\"add\", entity.srfkey, entity);\n return entity;\n } catch (err) {\n ibiz.log.error(err);\n return null;\n }\n }\n /**\n * 查找数据\n *\n * @param {*} context\n * @param {string} srfKey\n * @return {*} {IDataEntity}\n * @memberof EntityCache\n */\n get(context, srfKey) {\n try {\n isExistSessionId(\"get\", context);\n const map = this.getCacheByTag(context);\n const data = map.get(srfKey);\n ibiz.log.warn(\"get\", srfKey, data);\n return clone3(data);\n } catch (err) {\n ibiz.log.error(err);\n return null;\n }\n }\n /**\n * 更新数据\n *\n * @param {IParams} context\n * @param {IDataEntity} entity\n * @return {*} {IDataEntity}\n * @memberof EntityCache\n */\n update(context, entity) {\n try {\n isExistSessionId(\"update\", context);\n isExistSrfKey(\"update\", entity);\n entity.srftempdate = (/* @__PURE__ */ new Date()).getTime();\n const map = this.getCacheByTag(context);\n const data = map.get(entity.srfkey);\n if (data) {\n data.assign(entity);\n map.set(entity.srfkey, data);\n ibiz.log.warn(\"update\", entity.srfkey, entity);\n return clone3(data);\n }\n throw new Error(\"\\u6570\\u636E\\u4E0D\\u5B58\\u5728\\uFF0C\\u65E0\\u6CD5\\u66F4\\u65B0!\");\n } catch (err) {\n ibiz.log.error(err);\n return null;\n }\n }\n /**\n * 删除数据\n *\n * @param {IParams} context\n * @param {string} srfKey\n * @return {*} {(IDataEntity | null)}\n * @memberof EntityCache\n */\n delete(context, srfKey) {\n try {\n isExistSessionId(\"delete\", context);\n const map = this.getCacheByTag(context);\n const key = srfKey;\n if (map.has(key)) {\n const data = map.get(key);\n data.srftempdate = (/* @__PURE__ */ new Date()).getTime();\n map.delete(key);\n ibiz.log.warn(\"delete\", key);\n return data;\n }\n return null;\n } catch (err) {\n ibiz.log.error(err);\n return null;\n }\n }\n /**\n * 批量创建临时数据\n *\n * @author chitanda\n * @date 2022-03-23 11:03:52\n * @param {IParams} context\n * @param {IDataEntity[]} entities\n * @return {*} {IDataEntity[]}\n */\n createBatch(context, entities) {\n try {\n isExistSessionId(\"add\", context);\n const map = this.getCacheByTag(context);\n for (let i = 0; i < entities.length; i++) {\n const entity = entities[i];\n if (isNil5(entity.srfkey) || isEmpty5(entity.srfkey)) {\n entity.srfkey = createUUID();\n }\n entity.srftempdate = (/* @__PURE__ */ new Date()).getTime();\n const data = clone3(entity);\n map.set(entity.srfkey, data);\n entities[i] = data;\n ibiz.log.warn(\"add\", entity.srfkey, entity);\n }\n return entities;\n } catch (err) {\n ibiz.log.error(err);\n }\n return [];\n }\n /**\n * 批量更新数据\n *\n * @author chitanda\n * @date 2022-03-23 10:03:17\n * @param {IParams} context\n * @param {IDataEntity[]} entities\n * @return {*} {IDataEntity[]}\n */\n updateBatch(context, entities) {\n try {\n isExistSessionId(\"update\", context);\n const map = this.getCacheByTag(context);\n for (let i = 0; i < entities.length; i++) {\n const entity = entities[i];\n isExistSrfKey(\"update\", entity);\n entity.srftempdate = (/* @__PURE__ */ new Date()).getTime();\n const data = map.get(entity.srfkey);\n if (data) {\n data.assign(entity);\n map.set(entity.srfkey, data);\n ibiz.log.warn(\"update\", entity.srfkey, entity);\n entities[i] = clone3(data);\n } else {\n throw new Error(\n \"\\u6570\\u636E[\".concat(entity.srfdename, \"-\").concat(entity.srfmajortext, \"(\").concat(entity.srfkey, \")]\\u4E0D\\u5B58\\u5728\\uFF0C\\u65E0\\u6CD5\\u66F4\\u65B0!\")\n );\n }\n }\n return entities;\n } catch (err) {\n ibiz.log.error(err);\n return null;\n }\n }\n /**\n * 批量删除数据\n *\n * @author chitanda\n * @date 2022-03-23 10:03:40\n * @param {IParams} context 上下文\n * @param {string[]} srfKeys 需要删除的数据主键\n * @return {*} {string[]} 未能删除的数据主键\n */\n deleteBatch(context, srfKeys) {\n try {\n isExistSessionId(\"delete\", context);\n } catch (err) {\n ibiz.log.error(err);\n return srfKeys;\n }\n const map = this.getCacheByTag(context);\n const notRemoveKeys = [];\n for (let i = 0; i < srfKeys.length; i++) {\n const key = srfKeys[i];\n if (!map.has(key)) {\n notRemoveKeys.push(key);\n }\n }\n if (notRemoveKeys.length > 0) {\n throw new Error(\n \"\\u672A\\u627E\\u5230\\u4EE5\\u4E0B\\u6570\\u636E\\u300C\".concat(notRemoveKeys.join(\"\\u3001\"), \"\\u300D\\uFF0C\\u65E0\\u6CD5\\u5220\\u9664!\")\n );\n }\n for (let i = 0; i < srfKeys.length; i++) {\n const key = srfKeys[i];\n map.delete(key);\n ibiz.log.warn(\"delete\", key);\n }\n return [];\n }\n /**\n * 检查数据是否已经存在\n *\n * @author chitanda\n * @date 2022-08-17 23:08:06\n * @param {IParams} context\n * @param {string} srfkey\n * @return {*} {boolean}\n */\n checkData(context, srfkey) {\n const list = this.getList(context);\n const i = list.findIndex((item) => item.srfkey === srfkey);\n return i !== -1;\n }\n /**\n * 根据条件查找数据,未设置条件默认返回全部\n *\n * @author chitanda\n * @date 2022-08-17 23:08:56\n * @param {IParams} context\n * @return {*} {IDataEntity[]}\n */\n getList(context) {\n try {\n isExistSessionId(\"getList\", context);\n const map = this.getCacheByTag(context);\n if (!map) {\n return [];\n }\n const values = map.values();\n return Array.from(values);\n } catch (err) {\n ibiz.log.error(err);\n return [];\n }\n }\n /**\n * 根据条件生成查询\n *\n * @author chitanda\n * @date 2022-08-17 23:08:33\n * @param {IParams} [params={}]\n * @return {*} {<U>(testObj: U) => boolean}\n */\n generatePred(params = {}) {\n const data = {};\n if (params.srfkey) {\n data.srfkey = equals(params.srfkey);\n }\n delete params.srfkey;\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key)) {\n const val = params[key];\n data[key] = equals(val);\n }\n }\n return where(data);\n }\n /**\n * 清除缓存\n *\n * @author chitanda\n * @date 2022-08-17 23:08:54\n * @param {IParams} context\n */\n clear(context) {\n const tag = context.srfsessionid;\n if (this.cacheMap.size > 0) {\n this.cacheMap.delete(tag);\n }\n }\n /**\n * 根据标识获取map组\n *\n * @author chitanda\n * @date 2022-08-17 23:08:47\n * @private\n * @param {IParams} context\n * @return {*} {Map<string, IDataEntity>}\n */\n getCacheByTag(context) {\n const tag = context.srfsessionid;\n if (!this.cacheMap.has(tag)) {\n this.cacheMap.set(tag, /* @__PURE__ */ new Map());\n }\n return this.cacheMap.get(tag);\n }\n};\n\n// src/service/utils/res-path/res-path.ts\nvar reg = /\\$\\{(.*?)\\}/g;\nfunction getMatchResPath(context, entity) {\n const pathItems = entity.requestPaths || [];\n const items = pathItems.map((str) => {\n const match = str.match(reg);\n const keys = (match == null ? void 0 : match.map((item) => item.substring(2, item.length - 1))) || [];\n return {\n path: str,\n keys\n };\n });\n const filterItems = items.filter((item) => {\n const { keys } = item;\n if (keys.length === 0) {\n return true;\n }\n return keys.every((key, index) => {\n if (index === keys.length - 1) {\n return true;\n }\n return context[key] != null;\n });\n }).sort((a, b) => b.keys.length - a.keys.length);\n if (filterItems.length > 0) {\n return filterItems[0];\n }\n return void 0;\n}\nfunction calcResPath(context, entity) {\n const item = getMatchResPath(context, entity);\n if (item) {\n if (item.keys.length > 0) {\n let { path: path2 } = item;\n item.keys.forEach((key, index) => {\n if (index === item.keys.length - 1) {\n path2 = path2.replace(new RegExp(\"/[^/]+/\\\\$\\\\{\".concat(key, \"\\\\}\")), \"\");\n } else {\n path2 = path2.replace(\"${\".concat(key, \"}\"), context[key]);\n }\n });\n return path2;\n }\n return item.path;\n }\n return \"\";\n}\n\n// src/service/utils/search-filter/search-filter.ts\nimport { isEmpty as isEmpty6, isNil as isNil6 } from \"ramda\";\nvar SearchFilter = class {\n /**\n * Creates an instance of SearchFilter.\n *\n * @param {*} context\n * @param {*} [data]\n * @memberof SearchFilter\n */\n constructor(context, data) {\n /**\n * 分页\n *\n * @type {number}\n * @memberof SearchFilter\n */\n this.page = 0;\n /**\n * 分页数据量\n *\n * @type {number}\n * @memberof SearchFilter\n */\n this.size = 1e3;\n /**\n * 数据\n *\n * @author chitanda\n * @date 2022-08-17 22:08:00\n * @type {IData}\n */\n this.data = {};\n /**\n * 排序属性\n *\n * @type {string}\n * @memberof SearchFilter\n */\n this.sortField = \"srfordervalue\";\n /**\n * 排序模式\n *\n * @type {('ASC' | 'DESC')}\n * @memberof SearchFilter\n */\n this.sortMode = \"ASC\";\n this.context = context;\n if (data) {\n if (!isNil6(data.page) && !isEmpty6(data.page)) {\n this.page = data.page;\n }\n if (!isNil6(data.size) && !isEmpty6(data.size)) {\n this.size = data.size;\n }\n if (!isNil6(data.query) && !isEmpty6(data.query)) {\n this.query = data.query;\n }\n if (!isNil6(data.sort) && !isEmpty6(data.sort)) {\n const arr = data.sort.split(\",\");\n if (arr.length >= 1) {\n [this.sortField] = arr;\n }\n if (arr.length >= 2) {\n this.sortMode = arr[1].toUpperCase();\n }\n }\n if (!isNil6(data.srfparentkey) && !isEmpty6(data.srfparentkey)) {\n this.srfparentkey = data.srfparentkey;\n }\n if (!isNil6(data.srfparentdename) && !isEmpty6(data.srfparentdename)) {\n this.srfparentdename = data.srfparentdename;\n }\n this.data = { ...data };\n delete this.data.page;\n delete this.data.size;\n delete this.data.query;\n delete this.data.sort;\n delete this.data.srfparentkey;\n delete this.data.srfparentdename;\n }\n }\n /**\n * 获取条件值\n *\n * @author chitanda\n * @date 2022-08-17 22:08:11\n * @param {string} key\n * @return {*} {unknown}\n */\n getValue(key) {\n if (this.data[key]) {\n return this.data[key];\n }\n return this.context[key];\n }\n};\n\n// src/service/service/code-list/code-list.service.ts\nimport { RuntimeError as RuntimeError13 } from \"@ibiz-template/core\";\nvar CodeListService = class {\n constructor(appModel) {\n this.appModel = appModel;\n /**\n * 所有代码表缓存\n *\n * @author lxm\n * @date 2022-08-25 20:08:16\n */\n this.allCodeLists = /* @__PURE__ */ new Map();\n /**\n * 代码表项数据缓存\n *\n * @author lxm\n * @date 2022-08-25 21:08:12\n * @protected\n * @type {Map<string, CodeListItem[]>}\n */\n this.cache = /* @__PURE__ */ new Map();\n }\n /**\n * 获取静态代码表\n *\n * @author chitanda\n * @date 2022-08-25 15:08:11\n * @param {string} _tag\n * @return {*} {CodeListItem[]}\n */\n getStatic(codeList) {\n const codeName = codeList.codeName;\n if (this.cache.has(codeName)) {\n return this.cache.get(codeName);\n }\n const items = codeList.codeItems;\n let result = [];\n if (items == null ? void 0 : items.length) {\n result = this.formatStaticItems(items, codeList.codeItemValueNumber);\n }\n this.cache.set(codeName, Object.freeze(result));\n return result;\n }\n /**\n * 设置代码表模型\n *\n * @author lxm\n * @date 2023-5-23 19:38:51\n * @protected\n * @param {IAppCodeList} codeList\n * @returns {*}\n */\n setCodeList(codeList) {\n const { id, codeName } = codeList;\n this.allCodeLists.set(id, codeList);\n this.allCodeLists.set(codeName, codeList);\n }\n /**\n * 获取代码表模型\n *\n * @author lxm\n * @date 2023-5-23 19:38:51\n * @protected\n * @param {string} tag\n * @returns {*}\n */\n getCodeList(tag) {\n return this.allCodeLists.get(tag);\n }\n /**\n * 格式化代码表\n *\n * @author lxm\n * @date 2022-08-25 21:08:03\n * @protected\n * @param {ICodeItem[]} codeItems\n * @param {boolean} isValueNumber\n * @returns {*}\n */\n formatStaticItems(codeItems, isValueNumber) {\n return codeItems.map((codeItem) => {\n var _a;\n let text = codeItem.text;\n if (codeItem.textLanguageRes) {\n text = ibiz.i18n.t(codeItem.textLanguageRes.lanResTag, codeItem.text);\n }\n let { tooltip } = codeItem;\n if (codeItem.tooltipLanguageRes) {\n tooltip = ibiz.i18n.t(\n codeItem.tooltipLanguageRes.lanResTag,\n codeItem.tooltip\n );\n }\n const _codeItem = {\n text,\n value: isValueNumber ? Number(codeItem.value) : codeItem.value,\n color: codeItem.color,\n id: codeItem.codeName,\n textCls: codeItem.textCls,\n disableSelect: codeItem.disableSelect,\n tooltip,\n // 代码项数据\n data: codeItem.data ? ScriptFactory.execSingleLine(codeItem.data) : void 0,\n sysImage: codeItem.sysImage\n };\n if ((_a = codeItem.codeItems) == null ? void 0 : _a.length) {\n _codeItem.children = this.formatStaticItems(\n codeItem.codeItems,\n isValueNumber\n );\n }\n return Object.freeze(_codeItem);\n });\n }\n /**\n * 获取动态代码表\n *\n * @author lxm\n * @date 2022-08-25 21:08:06\n * @protected\n * @param {IAppCodeList} codeList\n * @returns {*} {IData[]}\n */\n async getDynamicCodeList(codeList, context = {}, params = {}) {\n let dynamicCache;\n const codeName = codeList.codeName;\n if (this.cache.has(codeName)) {\n dynamicCache = this.cache.get(codeName);\n } else {\n dynamicCache = new DynamicCodeListCache(codeList);\n this.cache.set(codeName, dynamicCache);\n await dynamicCache.init();\n }\n return dynamicCache.get(context, params);\n }\n /**\n * 获取代码表\n *\n * @author chitanda\n * @date 2022-08-25 15:08:45\n * @param {string} tag\n * @param {IParams} [context]\n * @param {IParams} [params]\n * @return {*} {Promise<CodeListItem[]>}\n */\n async get(tag, context, params) {\n const codeList = this.allCodeLists.get(tag);\n if (!codeList) {\n throw new RuntimeError13(\"\\u627E\\u4E0D\\u5230\".concat(tag, \"\\u4EE3\\u7801\\u8868\"));\n }\n if (codeList.codeListType === \"STATIC\") {\n return this.getStatic(codeList);\n }\n if (codeList.codeListType === \"DYNAMIC\") {\n return this.getDynamicCodeList(codeList, context, params);\n }\n return [];\n }\n};\n\n// src/service/service/config/config.service.ts\nvar ConfigService = class {\n /**\n * Creates an instance of ConfigService.\n *\n * @author chitanda\n * @date 2023-09-22 10:09:16\n * @param {string} appId 应用标识\n * @param {string} folder 定义文件夹\n * @param {string} tag 存储标识\n */\n constructor(appId, folder, tag) {\n this.appId = appId;\n this.folder = folder;\n this.tag = tag;\n this.app = ibiz.hub.getApp(appId);\n }\n /**\n * 保存配置\n *\n * @author chitanda\n * @date 2023-09-22 10:09:05\n * @param {IData} data\n * @return {*} {Promise<boolean>}\n */\n async save(data) {\n const res = await this.app.net.put(\n \"/configs/\".concat(this.folder, \"/\").concat(this.tag),\n data\n );\n if (res.ok) {\n return res.data;\n }\n return false;\n }\n /**\n * 加载配置\n *\n * @author chitanda\n * @date 2023-09-22 10:09:10\n * @return {*} {Promise<IData>}\n */\n async load() {\n const res = await this.app.net.get(\"/configs/\".concat(this.folder, \"/\").concat(this.tag));\n if (res.ok) {\n return res.data || {};\n }\n return {};\n }\n};\n\n// src/service/service/counter/counter.service.ts\nimport { RuntimeModelError as RuntimeModelError7 } from \"@ibiz-template/core\";\nvar CounterService = class {\n /**\n * 获取计数器\n *\n * @author chitanda\n * @date 2022-10-26 19:10:18\n * @param {IAppCounter} model\n * @return {*} {Promise<AppCounter>}\n */\n static async getCounter(model, context, params) {\n const id = model.id;\n if (this.counterMap.has(id)) {\n const counter2 = this.counterMap.get(id);\n if (counter2.isDestroyed === false) {\n return counter2;\n }\n this.counterMap.delete(id);\n }\n const provider = await getAppCounterProvider(model);\n const counter = provider.createCounter(model);\n await counter.init(context, params);\n this.counterMap.set(id, counter);\n return counter;\n }\n /**\n * 根据计数器引用获取计数器实例\n *\n * @author chitanda\n * @date 2022-10-26 20:10:20\n * @static\n * @param {IAppCounterRef} model\n * @param {IParams} context\n * @param {IParams} params\n * @return {*} {Promise<AppCounter>}\n */\n static async getCounterByRef(model, context, params) {\n const { appCounter } = model;\n if (!appCounter) {\n throw new RuntimeModelError7(model, \"\\u672A\\u914D\\u7F6E\\u5E94\\u7528\\u8BA1\\u6570\\u5668!\");\n }\n return this.getCounter(appCounter, context, params);\n }\n};\n/**\n * 计数器组,应用级计数器缓存,不存在重复\n *\n * @author chitanda\n * @date 2022-10-26 19:10:54\n * @protected\n * @static\n * @type {Map<string, AppCounter>}\n */\nCounterService.counterMap = /* @__PURE__ */ new Map();\n\n// src/service/service/entity/de.service.ts\nimport {\n ModelError as ModelError5,\n RuntimeError as RuntimeError15\n} from \"@ibiz-template/core\";\n\n// src/service/service/work-flow/work-flow.service.ts\nimport { RuntimeError as RuntimeError14 } from \"@ibiz-template/core\";\nvar WorkFlowService = class {\n /**\n * Creates an instance of WorkFlowService.\n * @author lxm\n * @date 2022-09-29 11:09:54\n * @param {IAppDataEntity} model 应用实体\n */\n constructor(model) {\n this.model = model;\n /**\n * 常规基础路径\n *\n * @author lxm\n * @date 2022-09-29 14:09:16\n * @private\n * @type {string}\n */\n this.commonBaseUrl = \"\";\n this.app = ibiz.hub.getApp(model.appId);\n const appContext = ibiz.appData.context;\n this.commonBaseUrl = \"/wfcore/\".concat(appContext.srfsystemid, \"-app-\").concat(this.app.model.codeName.toLowerCase(), \"/\").concat(this.model.name.toLowerCase());\n }\n /**\n * 获取基础路径\n *\n * @author lxm\n * @date 2022-09-29 14:09:40\n * @private\n * @returns {*}\n */\n getBaseUrl() {\n return this.commonBaseUrl;\n }\n /**\n * 获取activeData\n *\n * @private\n * @param {IData} data\n * @param {IParams} context\n * @returns {*}\n * @memberof WorkFlowService\n */\n getActiveData(data, context) {\n if (context.srfprocessinstanceid) {\n data.srfprocessinstanceid = context.srfprocessinstanceid;\n }\n return data;\n }\n /**\n * 获取工作流实例标记\n *\n * @author zk\n * @date 2023-11-06 06:11:07\n * @private\n * @param {IParams} context\n * @return {*} {string}\n * @memberof WorkFlowService\n */\n getWFInstanceTag(context) {\n return context.srfprocessinstanceid || \"alls\";\n }\n /**\n * 根据当前步骤和任务获取工作流步骤数据(如:流程表单等)\n *\n * @author lxm\n * @date 2022-09-29 14:09:45\n * @param {IParams} context\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async getWFStep(context) {\n const { processDefinitionKey, taskDefinitionKey } = context;\n return this.app.net.get(\n \"\".concat(this.getBaseUrl(), \"/process-definitions/\").concat(processDefinitionKey, \"/usertasks/\").concat(taskDefinitionKey)\n );\n }\n /**\n * 根据业务主键和当前步骤获取操作路径\n *\n * @author lxm\n * @date 2022-09-29 14:09:52\n * @param {IParams} context 路径参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async getWFLink(context, data) {\n const deKeyValue = context[this.model.codeName.toLowerCase()];\n const { taskDefinitionKey } = context;\n return this.app.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(deKeyValue, \"/usertasks/\").concat(taskDefinitionKey, \"/ways\"),\n { activedata: this.getActiveData(data, context) }\n );\n }\n /**\n * 根据业务主键获取工作流程进度\n *\n * @author lxm\n * @date 2022-09-29 14:09:45\n * @param {IParams} context\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async getWFHistory(context) {\n const deKeyValue = context[this.model.codeName.toLowerCase()];\n return this.app.net.get(\n \"\".concat(this.getBaseUrl(), \"/\").concat(deKeyValue, \"/process-instances/\").concat(this.getWFInstanceTag(\n context\n ), \"/history\")\n );\n }\n /**\n * 根据业务主键获取工作流流程图片\n *\n * @author lxm\n * @date 2022-10-27 16:10:13\n * @param {IParams} context\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async getWFProcessDiagram(context) {\n const deKeyValue = context[this.model.codeName.toLowerCase()];\n return this.app.net.request(\n \"\".concat(this.getBaseUrl(), \"/\").concat(deKeyValue, \"/process-instances/\").concat(this.getWFInstanceTag(\n context\n ), \"/processdiagram\"),\n {\n method: \"post\",\n data: {},\n responseType: \"blob\"\n }\n );\n }\n /**\n * 获取标准工作流版本信息\n *\n * @author lxm\n * @date 2022-09-29 14:09:45\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async getWFVersion() {\n return this.app.net.get(\"\".concat(this.getBaseUrl(), \"/process-definitions2\"));\n }\n /**\n * 启动工作流\n *\n * @author lxm\n * @date 2022-09-30 17:09:51\n * @param {IParams} context 路径参数\n * @param {IParams} params 请求参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async wfStart(context, params, data) {\n return this.app.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(context[this.model.codeName.toLowerCase()], \"/process-instances\"),\n {\n ...params,\n activedata: this.getActiveData(data, context)\n }\n );\n }\n /**\n * 提交工作流\n *\n * @author lxm\n * @date 2022-09-30 17:09:51\n * @param {IParams} context 路径参数\n * @param {IParams} params 请求参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async wfSubmit(context, params, data) {\n return this.app.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(context[this.model.codeName.toLowerCase()], \"/tasks/\").concat(params.taskId),\n {\n ...params,\n activedata: this.getActiveData(data, context)\n }\n );\n }\n /**\n * 工作流撤销\n *\n * @author lxm\n * @date 2022-09-30 17:09:51\n * @param {IParams} context 路径参数\n * @param {IParams} params 请求参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async wfWithdraw(context, params, data) {\n return this.app.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(context[this.model.codeName.toLowerCase()], \"/tasks/\").concat(params.taskId, \"/withdraw\"),\n {\n ...params,\n activedata: this.getActiveData(data, context)\n }\n );\n }\n /**\n * 转办\n *\n * @author lxm\n * @date 2022-09-30 17:09:51\n * @param {IParams} context 路径参数\n * @param {IParams} params 请求参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async wfReassign(context, params, data) {\n return ibiz.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(context[this.model.codeName.toLowerCase()], \"/tasks/\").concat(params.taskId, \"/transfer\"),\n {\n ...params,\n activedata: this.getActiveData(data, context)\n }\n );\n }\n /**\n * 前加签\n *\n * @author lxm\n * @date 2022-09-30 17:09:51\n * @param {IParams} context 路径参数\n * @param {IParams} params 请求参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async wfAddStepBefore(context, params, data) {\n return ibiz.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(context[this.model.codeName.toLowerCase()], \"/tasks/\").concat(params.taskId, \"/beforesign\"),\n {\n ...params,\n activedata: this.getActiveData(data, context)\n }\n );\n }\n /**\n * 后加签\n *\n * @author lxm\n * @date 2022-09-30 17:09:51\n * @param {IParams} context 路径参数\n * @param {IParams} params 请求参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async wfAddStepAfter(context, params, data) {\n return ibiz.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(context[this.model.codeName.toLowerCase()], \"/tasks/\").concat(params.taskId, \"/aftersign\"),\n {\n ...params,\n activedata: this.getActiveData(data, context)\n }\n );\n }\n /**\n * 回退\n *\n * @author lxm\n * @date 2022-09-30 17:09:51\n * @param {IParams} context 路径参数\n * @param {IParams} params 请求参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async wfSendBack(context, params, data) {\n return ibiz.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(context[this.model.codeName.toLowerCase()], \"/tasks/\").concat(params.taskId, \"/sendback\"),\n {\n ...params,\n activedata: this.getActiveData(data, context)\n }\n );\n }\n /**\n * 抄送\n *\n * @author lxm\n * @date 2022-09-30 17:09:51\n * @param {IParams} context 路径参数\n * @param {IParams} params 请求参数\n * @param {IData} data 数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async wfSendCopy(context, params, data) {\n return ibiz.net.post(\n \"\".concat(this.getBaseUrl(), \"/\").concat(context[this.model.codeName.toLowerCase()], \"/tasks/\").concat(params.taskId, \"/sendcopy\"),\n {\n ...params,\n activedata: this.getActiveData(data, context)\n }\n );\n }\n /**\n * 调用工作流接口\n *\n * @author lxm\n * @date 2022-09-30 17:09:38\n * @param {string} methodName 接口名称\n * @param {IParams} context 路径参数\n * @param {IParams} [params={}] 查询参数\n * @param {IData} [data={}] 主数据数据\n * @returns {*} {Promise<IHttpResponse<IData>>}\n */\n async exec(methodName, context, params = {}, data = {}) {\n switch (methodName) {\n case \"wfstart\":\n return this.wfStart(context, params, data);\n case \"wfsubmit\":\n return this.wfSubmit(context, params, data);\n case \"reassign\":\n return this.wfReassign(context, params, data);\n case \"addstepbefore\":\n return this.wfAddStepBefore(context, params, data);\n case \"addstepafter\":\n return this.wfAddStepAfter(context, params, data);\n case \"sendback\":\n return this.wfSendBack(context, params, data);\n case \"sendcopy\":\n return this.wfSendCopy(context, params, data);\n default: {\n throw new RuntimeError14(\"\\u300C\".concat(methodName, \"\\u300D\\u672A\\u5B9E\\u73B0\"));\n }\n }\n }\n};\n\n// src/service/service/file/file.service.ts\nvar FileService = class {\n /**\n * Creates an instance of FileService.\n * @author lxm\n * @date 2022-11-25 13:11:49\n * @param {IAppDataEntity} model 应用实体\n */\n constructor(model) {\n this.model = model;\n }\n /**\n * 后台导出数据,返回文件流\n *\n * @author lxm\n * @date 2022-11-25 14:11:53\n * @param {IDEDataExport} dataExport 导出模型\n * @param {string} fetchAction 查询方法\n * @param {IParams} context 上下文\n * @param {IParams} params 请求参数\n * @returns {*} {Promise<IHttpResponse<Blob>>}\n */\n exportData(dataExport, fetchAction, context, params) {\n const resPath = calcResPath(context, this.model);\n const exportUrl = \"\".concat(resPath, \"/\").concat(this.model.codeName2.toLowerCase(), \"/exportdata/\").concat(fetchAction.toLowerCase(), \"/?srfexporttag=\").concat(dataExport.codeName);\n return ibiz.net.request(exportUrl, {\n method: \"post\",\n data: params,\n responseType: \"blob\"\n });\n }\n};\n\n// src/service/service/entity/de.service.ts\nvar DEService = class {\n /**\n * Creates an instance of EntityService.\n *\n * @author chitanda\n * @date 2022-08-24 18:08:44\n * @param {IAppDataEntity} model 应用实体模型\n */\n constructor(model) {\n this.model = model;\n /**\n * 请求方法实例\n *\n * @author chitanda\n * @date 2022-10-10 12:10:13\n * @protected\n * @type {Map<string, Method>}\n */\n this.methodMap = /* @__PURE__ */ new Map();\n /**\n * 数据缓存\n *\n * @author chitanda\n * @date 2022-08-18 19:08:40\n * @type {DECache}\n */\n this.local = new DECache();\n this.configCache = new ConfigService(\n model.appId,\n \"PSAppDataEntity\",\n model.codeName\n );\n this.wf = new WorkFlowService(model);\n this.file = new FileService(model);\n }\n /**\n * 获取实体服务方法实例\n *\n * @author chitanda\n * @date 2023-10-12 17:10:10\n * @protected\n * @param {string} id\n * @param {boolean} [acMode=false]\n * @return {*} {Method}\n */\n async getMethod(id, acMode = false) {\n const cacheId = acMode ? \"ac-\".concat(id) : id;\n if (this.methodMap.has(cacheId)) {\n return this.methodMap.get(cacheId);\n }\n const model = findModelChild(this.model.appDEMethods, id);\n const provider = await getDEMethodProvider(model);\n if (!provider) {\n throw new ModelError5(model, \"\\u672A\\u652F\\u6301\\u7684\\u670D\\u52A1\\u65B9\\u6CD5\\u7C7B\\u578B: \".concat(model.methodType));\n }\n const method = provider.create(this.model, model, { acMode });\n this.methodMap.set(cacheId, method);\n return method;\n }\n /**\n * 执行服务方法\n *\n * @author chitanda\n * @date 2022-09-13 19:09:55\n * @param {string} id 执行服务方法标识\n * @param {IParams} context\n * @param {IData} [params={}] 请求参数\n * @param {IParams} [params2={}] 查询参数\n * @return {*} {Promise<IHttpResponse>}\n */\n async exec(id, context, params, params2) {\n const method = await this.getMethod(id);\n if (method) {\n return method.exec(context, params, params2);\n }\n throw new RuntimeError15(\"\".concat(this.model.codeName, \"\\u672A\\u652F\\u6301\\u300C\").concat(id, \"\\u300D\\u65B9\\u6CD5\"));\n }\n getDraft(context, params, params2) {\n return this.exec(\"GetDraft\", context, params, params2);\n }\n create(context, params, params2) {\n return this.exec(\"Create\", context, params, params2);\n }\n get(context, params, params2) {\n return this.exec(\"Get\", context, params, params2);\n }\n update(context, params, params2) {\n return this.exec(\"Update\", context, params, params2);\n }\n remove(context, params, params2) {\n return this.exec(\"Remove\", context, params, params2);\n }\n fetchDefault(context, params, params2) {\n return this.exec(\"FetchDefault\", context, params, params2);\n }\n /**\n * 执行服务方法 ac 模式\n *\n * @author chitanda\n * @date 2022-09-13 19:09:55\n * @param {string} id 执行服务方法标识\n * @param {IParams} context\n * @param {IData} [params={}] 请求参数\n * @param {IParams} [params2={}] 查询参数\n * @return {*} {Promise<IHttpResponse>}\n */\n async execAc(id, context, params, params2 = {}) {\n const method = await this.getMethod(id, true);\n if (method) {\n return method.exec(context, params, params2);\n }\n throw new RuntimeError15(\"\".concat(this.model.codeName, \"\\u672A\\u652F\\u6301\\u300C\").concat(id, \"\\u300D\\u65B9\\u6CD5\"));\n }\n /**\n * 实体级别 AI 聊天会话\n *\n * @author chitanda\n * @date 2023-10-16 16:10:16\n * @param {(data: IPortalAsyncAction) => void} onmessage\n * @param {IParams} context\n * @param {IParams} [params={}]\n * @param {IData} [data={}]\n * @return {*} {Promise<void>}\n */\n aiChatSse(onmessage, context, params = {}, data = {}) {\n const app = ibiz.hub.getApp(this.model.appId);\n const path2 = this.calcSsePath(context);\n return new Promise((resolve, reject) => {\n app.net.sse(\n \"/\".concat(path2),\n { srfactag: \"AIChat\", ...params },\n {\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(data),\n onmessage: (e) => {\n if (e.data) {\n const json = JSON.parse(e.data);\n onmessage(json);\n }\n },\n onclose: () => {\n resolve();\n },\n onerror: (e) => {\n reject(e);\n }\n }\n );\n });\n }\n /**\n * 获取 AI 聊天会话历史记录\n *\n * @author chitanda\n * @date 2023-10-26 14:10:58\n * @param {IParams} context\n * @param {IParams} [params={}]\n * @param {IData} [data={}]\n * @return {*} {Promise<IHttpResponse>}\n */\n aiChatHistory(context, params = {}, data = {}) {\n const app = ibiz.hub.getApp(this.model.appId);\n const path2 = this.calcSsePath(context, true);\n return app.net.post(path2, data, { srfactag: \"AIChat\", ...params });\n }\n /**\n * 计算 AI 请求路径\n *\n * @author chitanda\n * @date 2023-10-26 14:10:25\n * @protected\n * @param {IParams} context\n * @param {boolean} [isHistories=false]\n * @return {*} {string}\n */\n calcSsePath(context, isHistories = false) {\n const srfkey = context[this.model.codeName.toLowerCase()];\n const curPath = \"/\".concat(this.model.codeName2.toLowerCase(), \"/ssechatcompletion\").concat(isHistories ? \"/histories\" : \"\").concat(srfkey ? \"/\".concat(srfkey) : \"\");\n const resPath = calcResPath(context, this.model);\n return resPath + curPath;\n }\n};\n\n// src/service/service/control/control.service.ts\nimport { clone as clone5 } from \"@ibiz-template/core\";\n\n// src/service/vo/control.vo.ts\nimport { createUUID as createUUID2 } from \"qx-util\";\nimport { clone as clone4, isNil as isNil7 } from \"ramda\";\n\n// src/service/constant/srfuf.ts\nvar Srfuf = /* @__PURE__ */ ((Srfuf2) => {\n Srfuf2[Srfuf2[\"CREATE\"] = 0] = \"CREATE\";\n Srfuf2[Srfuf2[\"UPDATE\"] = 1] = \"UPDATE\";\n return Srfuf2;\n})(Srfuf || {});\n\n// src/service/vo/control.vo.ts\nvar BuildInKeys = [\n \"srfkey\",\n \"srfmajortext\",\n \"srfmajorfield\",\n \"srfkeyfield\",\n \"tempsrfkey\",\n \"srfuf\",\n \"srfdeid\",\n \"srfdecodename\"\n];\nvar ControlVO = class _ControlVO {\n /**\n * Creates an instance of ControlVO.\n * @author lxm\n * @date 2022-09-05 15:09:10\n * @param {IData} origin 后台原始数据\n * @param {Map<string, string>} dataUIMap 转换映射map,key为转换后的属性,value为映射字段描述信息\n */\n constructor($origin = {}, $dataUIMap = /* @__PURE__ */ new Map()) {\n Object.defineProperty(this, \"$origin\", {\n enumerable: false,\n configurable: true,\n value: $origin || {}\n });\n Object.defineProperty(this, \"$dataUIMap\", {\n enumerable: false,\n configurable: true,\n value: $dataUIMap || /* @__PURE__ */ new Map()\n });\n Object.defineProperty(this, \"srfactionparam\", {\n get() {\n return this.$origin.srfactionparam;\n },\n set(val) {\n this.$origin.srfactionparam = val;\n },\n enumerable: true,\n configurable: true\n });\n [\"srfkey\", \"srfmajortext\"].forEach((key) => {\n if (Object.prototype.hasOwnProperty.call(this.$origin, key)) {\n Object.defineProperty(this, key, {\n get() {\n return this.$origin[key];\n },\n set(val) {\n this.$origin[key] = val;\n },\n enumerable: false,\n configurable: true\n });\n } else if (this.$dataUIMap.has(key)) {\n const { dataKey } = this.$dataUIMap.get(key);\n Object.defineProperty(this, key, {\n get() {\n return this.$origin[dataKey];\n },\n set(val) {\n this.$origin[dataKey] = val;\n },\n enumerable: false,\n configurable: true\n });\n } else {\n Object.defineProperty(this, key, {\n enumerable: false,\n configurable: true,\n writable: true,\n value: null\n });\n }\n });\n if (Object.prototype.hasOwnProperty.call(this.$origin, \"tempsrfkey\")) {\n Object.defineProperty(this, \"tempsrfkey\", {\n get() {\n return this.$origin.tempsrfkey;\n },\n set(val) {\n this.$origin.tempsrfkey = val;\n },\n enumerable: false,\n configurable: true\n });\n } else {\n Object.defineProperty(this, \"tempsrfkey\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: isNil7(this.srfkey) ? createUUID2() : this.srfkey\n });\n }\n Object.defineProperty(this, \"srfuf\", {\n get() {\n if (Object.prototype.hasOwnProperty.call(this.$origin, \"srfuf\")) {\n return this.$origin.srfuf;\n }\n return this.srfkey === this.tempsrfkey ? 1 /* UPDATE */ : 0 /* CREATE */;\n },\n enumerable: false,\n configurable: true\n });\n [\"srfdeid\", \"srfdecodename\", \"srfkeyfield\", \"srfmajorfield\"].forEach(\n (key) => {\n Object.defineProperty(this, key, {\n get() {\n return this.$origin[key];\n },\n enumerable: false,\n configurable: true\n });\n }\n );\n this.$dataUIMap.forEach((mapField, key) => {\n const value = mapField.dataKey;\n this.linkProperty(key, value, mapField);\n });\n Object.keys($origin).forEach((value) => {\n if (!Object.prototype.hasOwnProperty.call(this, value)) {\n this.linkProperty(value, value);\n }\n });\n }\n /**\n * 关联实体属性\n *\n * @author lxm\n * @date 2022-10-18 15:10:48\n * @private\n * @param {string} uiKey 界面字段\n * @param {string} dataKey 数据字段\n * @param {boolean} [isOriginField=true] 是否是后台存储字段,是的话存取都在$origin里\n * @param {boolean} [forceNumber=false] 是否强制转换成数值,是的话set的时候转成数值\n * @returns {*}\n */\n linkProperty(uiKey, dataKey, mapField) {\n const isOriginField = mapField ? mapField.isOriginField : true;\n if (BuildInKeys.includes(uiKey)) {\n return;\n }\n if (isOriginField || Object.prototype.hasOwnProperty.call(this.$origin, uiKey)) {\n Object.defineProperty(this, uiKey, {\n enumerable: true,\n configurable: true,\n get() {\n return this.$origin[dataKey];\n },\n set(val) {\n this.$origin[dataKey] = val;\n }\n });\n } else {\n Object.defineProperty(this, uiKey, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: null\n });\n }\n }\n /**\n * 获取原始数据\n *\n * @author lxm\n * @date 2022-09-05 15:09:52\n * @returns {*}\n */\n getOrigin() {\n return this.$origin;\n }\n /**\n * 设置原始数据\n *\n * @author lxm\n * @date 2022-10-17 20:10:39\n * @param {IData} data\n */\n setOrigin(data) {\n this.$origin = data instanceof _ControlVO ? data.getOrigin() : data;\n }\n /**\n * 克隆新的vo数据\n *\n * @author lxm\n * @date 2023-08-16 11:08:29\n * @return {*} {ControlVO}\n */\n clone() {\n const cloneOrigin = clone4(this.$origin);\n const newVal = new _ControlVO(cloneOrigin, this.$dataUIMap);\n Object.keys(this).forEach((key) => {\n newVal[key] = this[key];\n });\n return newVal;\n }\n};\n\n// src/service/service/control/control.service.ts\nvar ControlService = class {\n /**\n * Creates an instance of ControlService.\n * @author lxm\n * @date 2022-08-29 18:08:08\n * @param {T} model\n */\n constructor(model) {\n /**\n * UI数据和实体数据的属性名映射\n * key:UI数据属性名\n * value: 映射属性描述信息\n *\n * @author lxm\n * @date 2022-08-31 17:08:35\n */\n this.dataUIMap = /* @__PURE__ */ new Map();\n this.model = model;\n }\n /**\n * 子类不可覆盖或重写此方法,在 init 时需要重写的使用 onInit 方法。\n *\n * @author lxm\n * @date 2022-08-18 22:08:30\n * @returns {*} {Promise<void>}\n */\n async init(context) {\n this.app = ibiz.hub.getApp(context == null ? void 0 : context.srfappid);\n this.initUIDataMap();\n }\n /**\n * 初始化属性映射\n *\n * @author lxm\n * @date 2022-08-31 18:08:37\n */\n initUIDataMap() {\n }\n /**\n * 执行服务方法\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {string} methodName 方法名\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数或数据\n * @returns {*} {Promise<IHttpResponse>}\n */\n async exec(methodName, context, data, params) {\n const res = await this.app.deService.exec(\n this.model.appDataEntityId,\n methodName,\n context,\n data,\n params\n );\n return res;\n }\n /**\n * 处理响应\n *\n * @author lxm\n * @date 2022-08-31 17:08:13\n * @param {IHttpResponse} res\n * @returns {*} {IHttpResponse}\n */\n handleResponse(res) {\n return clone5(res);\n }\n /**\n * 实体数据转ui数据\n *\n * @author lxm\n * @date 2022-08-31 17:08:15\n * @param {IData} entityData 实体数据\n * @returns {*} {IData}\n */\n toUIData(entityData) {\n return new ControlVO(entityData, this.dataUIMap);\n }\n};\n\n// src/service/service/control/md-control.service.ts\nimport { RuntimeError as RuntimeError16 } from \"@ibiz-template/core\";\nimport { isArray as isArray3 } from \"qx-util\";\nvar MDControlService = class extends ControlService {\n /**\n * 执行查询多条数据的方法\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async fetch(context, params = {}) {\n var _a;\n const fetchAction = ((_a = this.model.fetchControlAction) == null ? void 0 : _a.appDEMethodId) || \"fetchdefault\";\n let res = await this.exec(fetchAction, context, params);\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 执行获取单条数据方法\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async get(context, params = {}) {\n var _a;\n const getAction = ((_a = this.model.getControlAction) == null ? void 0 : _a.appDEMethodId) || \"get\";\n let res = await this.exec(getAction, context, void 0, params);\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 执行获取草稿方法\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async getDraft(context, params = {}) {\n var _a;\n const getDraftAction = ((_a = this.model.getDraftControlAction) == null ? void 0 : _a.appDEMethodId) || \"getdraft\";\n let res = await this.exec(getDraftAction, context, void 0, params);\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 删除单条数据\n *\n * @author lxm\n * @date 2022-09-07 19:09:48\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*}\n */\n async remove(context, params = {}) {\n var _a;\n const removeAction = ((_a = this.model.removeControlAction) == null ? void 0 : _a.appDEMethodId) || \"remove\";\n const res = await this.exec(removeAction, context, void 0, params);\n return res;\n }\n /**\n * 新建数据\n *\n * @author lxm\n * @date 2022-09-07 19:09:11\n * @param {IParams} context 上下文\n * @param {ControlVO} data 数据\n * @returns {*}\n */\n async create(context, data) {\n var _a;\n const createAction = ((_a = this.model.createControlAction) == null ? void 0 : _a.appDEMethodId) || \"create\";\n let res = await this.exec(createAction, context, data.getOrigin());\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 更新数据\n *\n * @author lxm\n * @date 2022-09-07 19:09:11\n * @param {IParams} context 上下文\n * @param {ControlVO} data 数据\n * @returns {*}\n */\n async update(context, data) {\n var _a;\n const updateAction = ((_a = this.model.updateControlAction) == null ? void 0 : _a.appDEMethodId) || \"update\";\n let res = await this.exec(updateAction, context, data.getOrigin());\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 导出数据\n *\n * @author lxm\n * @date 2022-11-25 14:11:09\n * @param {IPSDEDataExport} dataExport 导出模型\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 请求参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async exportData(_dataExport, _context, _params = {}) {\n throw new RuntimeError16(\"\\u672A\\u5B9E\\u73B0\");\n }\n /**\n * 处理响应\n *\n * @author lxm\n * @date 2022-08-31 17:08:13\n * @param {IHttpResponse} res\n * @returns {*} {IHttpResponse}\n */\n handleResponse(response) {\n const res = super.handleResponse(response);\n if (res.headers) {\n if (res.headers[\"x-page\"]) {\n res.page = Number(res.headers[\"x-page\"]);\n }\n if (res.headers[\"x-per-page\"]) {\n res.size = Number(res.headers[\"x-per-page\"]);\n }\n if (res.headers[\"x-total\"]) {\n res.total = Number(res.headers[\"x-total\"]);\n }\n }\n if (res.ok) {\n if (isArray3(res.data)) {\n res.data = res.data.map((item) => this.toUIData(item));\n } else {\n res.data = this.toUIData(res.data);\n }\n }\n return res;\n }\n};\n\n// src/service/service/authority/authority.service.ts\nimport { RuntimeError as RuntimeError17 } from \"@ibiz-template/core\";\n\n// src/service/service/authority/de-authority.service.ts\nvar DeAuthorityService = class {\n constructor(entityModel) {\n this.entityModel = entityModel;\n }\n /**\n * 通过操作标识计算权限\n * @author lxm\n * @date 2023-05-10 12:33:10\n * @param {string} dataAccessAction 操作标识\n * @param {IData} [data] 实体数据\n * @param {string} [appDeId] 应用实体id\n * @return {*} {Promise<boolean>}\n */\n async calcByDataAccessAction(dataAccessAction, data) {\n if (data.srfopprivs && !data.srfopprivs.includes(dataAccessAction)) {\n return false;\n }\n const mainStateResult = await this.calcByDeMainState(\n dataAccessAction,\n data\n );\n if (!mainStateResult) {\n return false;\n }\n return true;\n }\n /**\n * 通过实体主状态计算权限\n * @author lxm\n * @date 2023-05-10 01:15:43\n * @param {string} dataAccessAction 权限操作标识\n * @param {IData} data 当前数据\n * @param {string} appDeId 应用实体id\n * @return {*} {Promise<boolean>}\n */\n async calcByDeMainState(dataAccessAction, data) {\n let result = true;\n const appDataEntity = this.entityModel;\n if (!appDataEntity.enableDEMainState) {\n ibiz.log.debug(\n \"\".concat(appDataEntity.codeName, \"\\u5B9E\\u4F53\\u4E0D\\u5B58\\u5728\\u6216\\u8005\\u4E3A\\u542F\\u7528\\u4E3B\\u72B6\\u6001\\uFF0C\\u8FD4\\u56DEtrue\")\n );\n return result;\n }\n ibiz.log.debug(\n \"\\u64CD\\u4F5C\\u6807\\u8BC6\".concat(dataAccessAction, \"\\u4E3B\\u72B6\\u6001\\u8BA1\\u7B97\\u5F00\\u59CB\"),\n data,\n appDataEntity\n );\n const match = matchMainState(appDataEntity, data);\n if (match) {\n ibiz.log.debug(\"\\u5339\\u914D\\u4E3B\\u72B6\\u6001\", match);\n const opprivs = calcMainStateOPPrivsStrs(match, appDataEntity);\n ibiz.log.debug(\"\\u5141\\u8BB8\\u7684\\u4E3B\\u72B6\\u6001\\u6743\\u9650\\u96C6\\u5408\", opprivs);\n result = opprivs.includes(dataAccessAction);\n } else {\n ibiz.log.debug(\"\\u6CA1\\u5339\\u914D\\u4E3B\\u72B6\\u6001\\uFF0C\\u8FD4\\u56DEfalse\");\n result = false;\n }\n ibiz.log.debug(\"\\u64CD\\u4F5C\\u6807\\u8BC6\".concat(dataAccessAction, \"\\u6743\\u9650\\u8BA1\\u7B97\\u7ED3\\u675F\\uFF1A\").concat(result));\n return result;\n }\n};\n\n// src/service/service/authority/authority.service.ts\nvar AuthorityService = class {\n constructor(appModel) {\n this.appModel = appModel;\n /**\n * 实体服务缓存\n *\n * @author chitanda\n * @date 2022-08-17 23:08:36\n * @protected\n * @type {Map<string, IAppDEService>}\n */\n this.cache = /* @__PURE__ */ new Map();\n /**\n * 实体服务构造方法缓存\n *\n * @author chitanda\n * @date 2022-08-17 23:08:36\n * @protected\n * @type {Map<string, IAppDEService>}\n */\n this.constructorCache = /* @__PURE__ */ new Map();\n /**\n * 统一资源集合\n *\n * @author lxm\n * @date 2022-10-12 17:10:46\n * @private\n * @type {string[]}\n */\n this.resCodes = [];\n /**\n * 是否启用权限校验\n * @author lxm\n * @date 2022-10-14 19:10:50\n * @private\n * @type {boolean}\n */\n this.enablePermission = false;\n }\n /**\n * 注册服务工厂方法\n *\n * @author chitanda\n * @date 2023-06-14 10:06:21\n * @param {string} id\n * @param {(\n * entityModel: IAppDataEntity,\n * ) => Promise<IAppDeAuthorityService>} constructor\n */\n register(id, constructor) {\n this.constructorCache.set(id, constructor);\n }\n /**\n * 根据实体标识获取实体服务\n *\n * @author chitanda\n * @date 2022-12-23 10:12:24\n * @param {string} id 实体标识\n * @param {IParams} [context] 上下文,用于计算模型所属沙箱环境\n * @return {*} {Promise<IAppDEService>}\n */\n async getService(id) {\n if (!this.cache.has(id)) {\n const entityModel = await ibiz.hub.getAppDataEntity(\n id,\n this.appModel.appId\n );\n if (!entityModel) {\n throw new RuntimeError17(\"\\u672A\\u627E\\u5230\\u5E94\\u7528\\u5B9E\\u4F53[\".concat(id, \"]\"));\n }\n const constructor = this.constructorCache.get(id);\n let service;\n if (constructor) {\n service = await constructor(entityModel);\n } else {\n service = new DeAuthorityService(entityModel);\n }\n this.cache.set(id, service);\n }\n return this.cache.get(id);\n }\n /**\n * 权限服务初始化\n *\n * @author lxm\n * @date 2022-10-13 15:10:44\n * @param {*} [appData=ibiz.appData]\n * @returns {*} {Promise<void>}\n */\n async init(appData = ibiz.appData) {\n if (!appData) {\n return;\n }\n if (appData.unires) {\n this.resCodes = appData.unires;\n }\n if (appData.enablepermissionvalid === true && ibiz.env.enablePermission) {\n this.enablePermission = true;\n }\n }\n /**\n * 通过统一资源标识计算权限\n * @author lxm\n * @date 2023-05-10 12:29:53\n * @param {string} resCode\n */\n calcByResCode(resCode) {\n return !this.enablePermission || this.resCodes.includes(resCode);\n }\n /**\n * 通过操作标识计算权限\n * @author lxm\n * @date 2023-05-10 12:33:10\n * @param {string} dataAccessAction 操作标识\n * @param {IData} [data] 实体数据\n * @param {string} [appDeId] 应用实体id\n * @return {*} {Promise<boolean>}\n */\n async calcByDataAccessAction(dataAccessAction, data, appDeId) {\n const result = true;\n if (this.enablePermission) {\n const app = await ibiz.hub.getApp(this.appModel.appId);\n const opPriv = await app.getOPPriv(dataAccessAction, appDeId);\n if (this.enablePermission && (opPriv == null ? void 0 : opPriv.mapSysUniResCode) && !this.calcByResCode(opPriv.mapSysUniResCode)) {\n return false;\n }\n }\n if (data && appDeId) {\n const service = await this.getService(appDeId);\n return service.calcByDataAccessAction(dataAccessAction, data);\n }\n return result;\n }\n};\n\n// src/service/service/auth/v7-auth.service.ts\nimport { CoreConst } from \"@ibiz-template/core\";\nimport { clearCookie, setCookie } from \"qx-util\";\nvar V7AuthService = class {\n async login(loginname, password, rememberme) {\n try {\n const res = await ibiz.net.post(\"/v7/login\", {\n loginname,\n password,\n rememberme\n });\n const { data } = res;\n if (data && data.token) {\n setCookie(CoreConst.TOKEN, data.token, 0, true);\n const expiredDate = (/* @__PURE__ */ new Date()).getTime() + (data.expirein || 7199) * 1e3;\n setCookie(CoreConst.TOKEN_EXPIRES, \"\".concat(expiredDate), 0, true);\n }\n return true;\n } catch (err) {\n ibiz.notification.error({\n title: \"\\u767B\\u5F55\\u5931\\u8D25\",\n desc: err.message || \"\"\n });\n }\n return false;\n }\n async logout() {\n try {\n await ibiz.net.get(\"/v7/logout\");\n clearCookie(CoreConst.TOKEN);\n clearCookie(CoreConst.TOKEN_EXPIRES);\n return true;\n } catch (err) {\n ibiz.notification.error({\n title: \"\\u767B\\u51FA\\u5931\\u8D25\",\n desc: err.message || \"\"\n });\n }\n return false;\n }\n};\n\n// src/service/service/async-action/async-action.service.ts\nimport { isNil as isNil8 } from \"ramda\";\nvar AsyncActionService = class {\n /**\n * 获取异步操作的集合\n * @author lxm\n * @date 2023-11-15 10:55:25\n * @param {IParams} [params={}]\n * @return {*} {Promise<IHttpResponse<IPortalAsyncAction[]>>}\n */\n async fetch(params = {}) {\n const res = await ibiz.net.post(\"/portal/asyncaction/all\", params);\n if (isNil8(res.data)) {\n res.data = [];\n }\n return res;\n }\n /**\n * 获取单条异步操作\n * @author lxm\n * @date 2023-11-15 10:57:08\n * @param {string} actionID\n * @return {*} {Promise<IHttpResponse<IPortalAsyncAction[]>>}\n */\n async get(actionID) {\n const res = await ibiz.net.get(\"/portal/asyncaction/\".concat(actionID));\n return res;\n }\n};\n\n// src/service/service/entity/method/de-action.ts\nimport {\n HttpResponse as HttpResponse3,\n RuntimeError as RuntimeError19,\n RuntimeModelError as RuntimeModelError19\n} from \"@ibiz-template/core\";\nimport { isArray as isArray7, isNil as isNil10 } from \"lodash-es\";\n\n// src/service/service/entity/method/method.ts\nimport { RuntimeModelError as RuntimeModelError8 } from \"@ibiz-template/core\";\nimport { isArray as isArray4 } from \"lodash-es\";\n\n// src/service/app-data-entity/app-data-entity.ts\nimport { clone as clone6, isNil as isNil9 } from \"ramda\";\nimport { DataTypes } from \"@ibiz-template/core\";\nimport { createUUID as createUUID3 } from \"qx-util\";\nvar AppDataEntity = class _AppDataEntity {\n get srfuf() {\n return this.srfkey === this.tempsrfkey ? 1 /* UPDATE */ : 0 /* CREATE */;\n }\n /**\n * Creates an instance of AppDataEntity.\n *\n * @author chitanda\n * @date 2023-11-16 15:11:08\n * @param {IAppDataEntity} entity\n * @param {(IData | AppDataEntity)} [data={}]\n */\n constructor(entity, data = {}) {\n Object.defineProperty(this, \"_entity\", {\n enumerable: false,\n configurable: true,\n value: entity\n });\n Object.defineProperty(this, \"_data\", {\n enumerable: false,\n configurable: true,\n value: data instanceof _AppDataEntity ? clone6(data._data) : clone6(data)\n });\n Object.defineProperty(this, \"srfdeid\", {\n get() {\n return entity.id;\n }\n });\n Object.defineProperty(this, \"srfdecodename\", {\n get() {\n return entity.codeName;\n }\n });\n const keyAppField = findModelChild(\n entity.appDEFields || [],\n entity.keyAppDEFieldId\n );\n if (keyAppField) {\n const key = keyAppField.codeName.toLowerCase();\n Object.defineProperty(this, \"srfkeyfield\", {\n get() {\n return key;\n }\n });\n Object.defineProperty(this, \"srfkey\", {\n set(val) {\n this._data[key] = val;\n },\n get() {\n return this._data[key];\n }\n });\n } else {\n ibiz.log.warn(\"\\u5B9E\\u4F53[\".concat(entity.codeName, \"]\\u672A\\u914D\\u7F6E\\u4E3B\\u952E\\u5B57\\u6BB5\"));\n }\n const majorAppField = findModelChild(\n entity.appDEFields || [],\n entity.majorAppDEFieldId\n );\n if (majorAppField) {\n const major = majorAppField.codeName.toLowerCase();\n Object.defineProperty(this, \"srfmajorfield\", {\n get() {\n return major;\n }\n });\n Object.defineProperty(this, \"srfmajortext\", {\n set(val) {\n this._data[major] = val;\n },\n get() {\n return this._data[major];\n }\n });\n } else {\n ibiz.log.warn(\"\\u5B9E\\u4F53[\".concat(entity.codeName, \"]\\u672A\\u914D\\u7F6E\\u4E3B\\u6587\\u672C\\u5B57\\u6BB5\"));\n }\n Object.defineProperty(this, \"tempsrfkey\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: isNil9(this.srfkey) ? createUUID3() : this.srfkey\n });\n this.defineProperties();\n }\n /**\n * 代理实际数据\n *\n * @author chitanda\n * @date 2022-10-11 22:10:55\n * @protected\n */\n defineProperties() {\n var _a;\n const { _data, convertVal } = this;\n const properties = {};\n const keys = Object.keys(_data);\n keys.forEach((key) => {\n properties[key] = {\n enumerable: true,\n set(val) {\n _data[key] = val;\n },\n get() {\n return _data[key];\n }\n };\n });\n (_a = this._entity.appDEFields) == null ? void 0 : _a.forEach((field) => {\n const key = field.codeName.toLowerCase();\n properties[key] = {\n enumerable: true,\n set(val) {\n _data[key] = convertVal(val, field.stdDataType);\n },\n get() {\n return _data[key];\n }\n };\n _data[key] = convertVal(_data[key], field.stdDataType);\n });\n Object.defineProperties(this, properties);\n }\n /**\n * 克隆数据\n *\n * @author chitanda\n * @date 2022-10-11 00:10:15\n * @return {*} {AppDataEntity}\n */\n clone() {\n const entity = new _AppDataEntity(this._entity, this._data);\n entity.srfkey = this.srfkey;\n return entity;\n }\n /**\n * 合并参数\n *\n * @author chitanda\n * @date 2022-10-19 11:10:25\n * @param {(IData | AppDataEntity)} data\n * @return {*} {AppDataEntity}\n */\n assign(data) {\n let _data = {};\n if (data instanceof _AppDataEntity) {\n _data = data._data;\n } else {\n _data = data;\n }\n Object.keys(_data).forEach((key) => {\n if (_data[key] === void 0) {\n delete _data[key];\n }\n });\n Object.assign(this._data, _data);\n return this;\n }\n /**\n * 根据属性的数据类型转换值\n * @author lxm\n * @date 2023-09-25 03:37:28\n * @protected\n * @param {unknown} value\n * @param {(number | undefined)} dataType\n * @return {*} {unknown}\n */\n convertVal(value, dataType) {\n if (value == null) {\n return value;\n }\n if (isNil9(dataType)) {\n return value;\n }\n if (DataTypes.isNumber(dataType)) {\n const numVal = !isNil9(value) && value !== \"\" ? Number(value) : value;\n if (Number.isNaN(numVal)) {\n ibiz.log.debug(\"\".concat(value, \"\\u4E0D\\u80FD\\u8F6C\\u6362\\u6210\\u6570\\u5B57\"));\n return value;\n }\n return numVal;\n }\n return value;\n }\n};\n\n// src/service/dto/method.dto.ts\nimport { ModelError as ModelError6 } from \"@ibiz-template/core\";\nvar MethodDto = class _MethodDto {\n constructor(entity, isLocalMode2, dto) {\n this.entity = entity;\n this.isLocalMode = isLocalMode2;\n this.dto = dto;\n this.dtoMap = /* @__PURE__ */ new Map();\n if (dto) {\n this.app = ibiz.hub.getApp(entity.appId);\n this.fields = dto.appDEMethodDTOFields || [];\n } else {\n this.fields = [];\n }\n }\n /**\n * 转换数组成ListMap\n *\n * @param {IData[]} arr\n * @return {*} listMap\n */\n convertArrayToListMap(arr) {\n const result = {};\n arr.forEach((obj, index) => {\n result[index + 1] = obj;\n });\n return result;\n }\n /**\n * 转换ListMap成数组\n *\n * @param {listMap} obj\n * @return {*} IData[]\n */\n convertListMapToArray(obj) {\n const result = [];\n Object.keys(obj).forEach((key) => {\n const index = parseInt(key, 10);\n result[index - 1] = obj[index];\n });\n return result;\n }\n /**\n * 请求参数组合 DTO\n *\n * @author chitanda\n * @date 2022-10-10 23:10:33\n * @param {IParams} context\n * @param {IData} data\n * @return {*} {Promise<IData>}\n */\n async get(context, data) {\n const params = {};\n for (let i = 0; i < this.fields.length; i++) {\n const field = this.fields[i];\n const key = field.codeName.toLowerCase();\n switch (field.type) {\n case \"SIMPLE\":\n case \"SIMPLES\":\n case \"DTO\": {\n break;\n }\n case \"DTOS\": {\n if (field.listMap) {\n if (data[key]) {\n params[key] = data[key].length === 0 ? null : this.convertArrayToListMap(data[key]);\n }\n } else {\n if (data[key] !== void 0) {\n break;\n }\n if (!field.refAppDataEntityId) {\n break;\n }\n const dto = await this.getFieldDto(field);\n const service = await this.app.deService.getService(\n field.refAppDataEntityId\n );\n const items = service.local.getList(context);\n if (items) {\n const arr = [];\n for (let j = 0; j < items.length; j++) {\n arr.push(await dto.get(context, items[j]));\n }\n params[key] = arr;\n }\n }\n break;\n }\n default:\n throw new ModelError6(\n field,\n \"\\u672A\\u652F\\u6301\\u7684\\u5E94\\u7528\\u5B9E\\u4F53\\u65B9\\u6CD5\\u8F93\\u5165\\u5C5E\\u6027\\u7C7B\\u578B: \".concat(field.type)\n );\n }\n }\n return { ...data, ...params };\n }\n /**\n * 设置本地 DTO 存储\n *\n * @author chitanda\n * @date 2022-10-10 23:10:50\n * @param {IParams} context\n * @param {IData[]} data\n * @return {*} {Promise<AppDataEntity[]>}\n */\n async sets(context, data) {\n const service = await this.app.deService.getService(this.entity.id);\n if (this.isLocalMode) {\n service.local.clear(context);\n }\n return Promise.all(\n data.map(async (datum) => {\n const all = this.fields.filter((field) => field.type === \"DTOS\").map(async (field) => {\n const key = field.codeName.toLowerCase();\n if (field.listMap && typeof datum[key] === \"object\") {\n datum[key] = this.convertListMapToArray(datum[key]);\n } else {\n if (!field.refAppDataEntityId) {\n return;\n }\n const dto = await this.getFieldDto(field);\n const items = datum[key];\n if (items) {\n await dto.sets(context, items);\n } else {\n await dto.sets(context, []);\n }\n }\n });\n for (let i = 0; i < all.length; i++) {\n await all[i];\n }\n const entityData = new AppDataEntity(this.entity, datum);\n if (this.isLocalMode) {\n await service.local.add(context, entityData);\n }\n return entityData;\n })\n );\n }\n /**\n * 获取子属性 DTO\n *\n * @author chitanda\n * @date 2022-10-17 16:10:47\n * @protected\n * @param {IAppDEMethodDTOField} field\n * @return {*} {Promise<MethodDto>}\n */\n async getFieldDto(field) {\n if (this.dtoMap.has(field.codeName)) {\n return this.dtoMap.get(field.codeName);\n }\n const entity = await ibiz.hub.getAppDataEntity(\n field.refAppDataEntityId,\n this.entity.appId\n );\n const methodDto = findModelChild(\n entity.appDEMethodDTOs || [],\n field.refAppDEMethodDTOId\n );\n const dto = new _MethodDto(entity, true, methodDto);\n this.dtoMap.set(field.codeName, dto);\n return dto;\n }\n};\n\n// src/service/service/entity/util/util.ts\nfunction isLocalMode(method) {\n return method.actionType === \"BUILTIN\" || method.dataSetType === \"DATAQUERY\";\n}\n\n// src/service/service/entity/method/method-input.ts\nvar MethodInput = class {\n /**\n * Creates an instance of MethodInput.\n * @author chitanda\n * @date 2023-09-06 16:09:26\n * @param {IAppDataEntity} entity\n * @param {IAppDEMethod} method\n */\n constructor(entity, method) {\n this.entity = entity;\n this.method = method;\n const input = method.appDEMethodInput;\n if (input) {\n const methodDto = findModelChild(\n entity.appDEMethodDTOs || [],\n input.appDEMethodDTOId\n );\n if (methodDto) {\n this.dto = new MethodDto(entity, this.isLocalMode, methodDto);\n }\n }\n }\n get isLocalMode() {\n return isLocalMode(this.method);\n }\n /**\n * 处理请求发送参数\n *\n * @author chitanda\n * @date 2022-10-11 14:10:22\n * @param {IParams} context\n * @param {IData} data\n * @return {*} {Promise<IData>}\n */\n async handle(context, data) {\n if (this.dto) {\n return this.dto.get(context, data);\n }\n return data;\n }\n};\n\n// src/service/service/entity/method/method-renturn.ts\nimport { isNilOrEmpty as isNilOrEmpty5 } from \"qx-util\";\nvar MethodReturn = class {\n /**\n * Creates an instance of MethodReturn.\n * @author chitanda\n * @date 2023-09-06 16:09:45\n * @param {IAppDataEntity} entity\n * @param {IAppDEMethod} method\n * @param {IAppDEMethodReturn} [output]\n */\n constructor(entity, method) {\n this.entity = entity;\n this.method = method;\n const output = method.appDEMethodReturn;\n if (output) {\n const methodDto = findModelChild(\n entity.appDEMethodDTOs || [],\n output.appDEMethodDTOId\n );\n if (methodDto) {\n this.dto = new MethodDto(entity, this.isLocalMode, methodDto);\n }\n }\n }\n get isLocalMode() {\n return isLocalMode(this.method);\n }\n /**\n * 处理请求返回参数\n *\n * @author chitanda\n * @date 2022-10-19 21:10:06\n * @param {IParams} context\n * @param {IData} data\n * @return {*} {Promise<IDataEntity>}\n */\n async handle(context, data) {\n if (this.dto) {\n const items = await this.dto.sets(context, [data]);\n return items[0];\n }\n if (isNilOrEmpty5(data)) {\n data = {};\n }\n return new AppDataEntity(this.entity, data);\n }\n};\n\n// src/service/service/entity/method/method.ts\nvar Method = class {\n /**\n * Creates an instance of Method.\n *\n * @author chitanda\n * @date 2022-10-10 14:10:19\n * @param {IAppDataEntity} entity\n * @param {IAppDEMethod} method\n * @param {ServicePathItem[][]} paths\n */\n constructor(entity, method) {\n this.entity = entity;\n this.method = method;\n this.app = ibiz.hub.getApp(entity.appId);\n this.input = new MethodInput(entity, method);\n this.result = new MethodReturn(entity, method);\n }\n /**\n * 发送请求\n *\n * @author chitanda\n * @date 2022-10-10 17:10:44\n * @protected\n * @param {string} path\n * @param {IParams} context\n * @param {IData} data\n * @param {IParams} params\n * @return {*} {Promise<HttpResponse<any>>}\n */\n async request(path2, context, data, params) {\n const { actionType, requestMethod } = this.method;\n if (actionType === \"REMOTE\") {\n const methodName = this.method.codeName.toLowerCase();\n let res = null;\n switch (requestMethod) {\n case \"POST\":\n res = await this.app.net.post(\n this.mergeRequestPath(path2, methodName),\n data || params || {}\n );\n break;\n case \"GET\":\n res = await this.app.net.get(\n this.mergeRequestPath(path2, methodName),\n data || params\n );\n break;\n case \"PUT\": {\n res = await this.app.net.put(\n this.mergeRequestPath(path2, methodName),\n data || params || {}\n );\n break;\n }\n case \"DELETE\":\n res = await this.app.net.delete(\n this.mergeRequestPath(path2, methodName),\n data || params\n );\n break;\n default:\n if (requestMethod) {\n throw new RuntimeModelError8(\n this.method,\n \"\\u672A\\u652F\\u6301\\u7684\\u8BF7\\u6C42\\u65B9\\u5F0F: \".concat(requestMethod)\n );\n } else {\n throw new RuntimeModelError8(this.method, \"\\u672A\\u914D\\u7F6E\\u8BF7\\u6C42\\u65B9\\u5F0F\");\n }\n }\n return res;\n }\n throw new RuntimeModelError8(this.method, \"\\u672A\\u652F\\u6301\\u7684\\u884C\\u4E3A\\u7C7B\\u578B[\".concat(actionType, \"]\"));\n }\n mergeRequestPath(path2, methodName) {\n return \"\".concat(path2, \"/\").concat(methodName);\n }\n /**\n * 根据上下文计算当前请求路径\n *\n * @author chitanda\n * @date 2022-08-24 18:08:46\n * @protected\n * @param {IParams} context\n * @return {*} {string} 拼接结果说明: /祖父实体/祖父实体主键/爷爷实体/爷爷实体主键/父实体/父实体主键/当前实体\n */\n calcPath(context) {\n const curPath = \"/\".concat(this.entity.codeName2.toLowerCase());\n const resPath = calcResPath(context, this.entity);\n return resPath + curPath;\n }\n /**\n * 获取当前实体服务\n *\n * @author chitanda\n * @date 2022-10-11 21:10:12\n * @protected\n * @return {*} {Promise<IAppDEService>}\n */\n async getService() {\n if (!this.service) {\n this.service = await this.app.deService.getService(this.entity.id);\n }\n return this.service;\n }\n /**\n * 创建实体\n * @author lxm\n * @date 2023-10-19 03:22:00\n * @protected\n * @param {(IData[] | IDataEntity[] | IData | IDataEntity)} data\n * @return {*} {(IDataEntity | IDataEntity[])}\n */\n createEntity(data) {\n const toEntity = (single) => {\n if (single instanceof AppDataEntity) {\n return single.clone();\n }\n return new AppDataEntity(this.entity, single);\n };\n if (isArray4(data)) {\n return data.map((item) => toEntity(item));\n }\n return toEntity(data);\n }\n};\n\n// src/de-logic/index.ts\nimport { HttpError as HttpError3, HttpResponse as HttpResponse2, RuntimeError as RuntimeError18 } from \"@ibiz-template/core\";\nimport { isArray as isArray6 } from \"lodash-es\";\nimport { clone as clone11 } from \"ramda\";\n\n// src/de-logic/de-logic.ts\nimport { ModelError as ModelError12, RuntimeModelError as RuntimeModelError18 } from \"@ibiz-template/core\";\n\n// src/de-logic/de-logic-context.ts\nimport { isArray as isArray5 } from \"lodash-es\";\nvar DELogicContext = class {\n /**\n * Creates an instance of DELogicContext.\n * @author lxm\n * @date 2023-03-24 09:15:14\n * @param {Map<string, DELogicParam>} deLogicParams 实体逻辑参数集合\n * @param {IParams} context 上下文\n * @param {IData} data 数据对象\n * @param {IParams} params 视图参数\n */\n constructor(deLogicParams, context, data, params) {\n this.deLogicParams = deLogicParams;\n /**\n * 实体逻辑参数\n *\n * @description 实体逻辑参数初始化时设置\n * @author lxm\n * @date 2023-02-08 17:02:38\n * @type {Record<string, any>}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.params = {};\n /**\n * UI逻辑执行返回值\n *\n * @author lxm\n * @date 2023-02-09 21:02:40\n * @type {unknown}\n */\n this.result = null;\n /**\n * 是否存在结束节点\n *\n * @author lxm\n * @date 2023-03-16 12:08:58\n * @type {boolean}\n */\n this.isEndNode = false;\n /**\n * 默认参数节点\n *\n * @author lxm\n * @date 2023-03-16 12:11:14\n * @type {string}\n */\n this.defaultParamName = \"Default\";\n this.parameters = { context, data: isArray5(data) ? data : [data], params };\n }\n /**\n * 上下文\n */\n get context() {\n if (Object.prototype.hasOwnProperty.call(this.params, \"context\")) {\n return this.params.context;\n }\n return this.parameters.context;\n }\n /**\n * 数据\n */\n get data() {\n return this.parameters.data;\n }\n /**\n * 视图参数\n */\n get viewParam() {\n if (Object.prototype.hasOwnProperty.call(this.params, \"viewParam\")) {\n return this.params.viewParam;\n }\n return this.parameters.params;\n }\n /**\n * 重置实体逻辑参数\n * @author lxm\n * @date 2023-03-24 09:18:02\n * @param {string} name\n */\n resetParam(name) {\n var _a;\n (_a = this.deLogicParams.get(name)) == null ? void 0 : _a.calc(this);\n }\n /**\n * 重新建立变量\n * @author lxm\n * @date 2023-03-24 09:20:24\n * @param {string} name\n */\n renewParam(name) {\n var _a;\n (_a = this.deLogicParams.get(name)) == null ? void 0 : _a.renew(this);\n }\n /**\n * 设置上一次返回值\n * @author lxm\n * @date 2023-09-04 09:23:52\n * @param {unknown} value\n */\n setLastReturn(value) {\n this.lastReturn = value;\n }\n /**\n * 初始化上一次返回参数类型的逻辑参数\n * @author lxm\n * @date 2023-09-04 09:52:00\n * @param {string} tag\n */\n initLastReturnParam(tag) {\n Object.defineProperty(this.params, tag, {\n enumerable: true,\n configurable: true,\n get: () => this.lastReturn\n });\n }\n /**\n * 是否是实体参数变量(即后台数据对象)\n * @author lxm\n * @date 2023-09-22 03:40:30\n * @param {string} paramId\n * @return {*} {boolean}\n */\n isEntityParam(paramId) {\n const deLogicParams = this.deLogicParams.get(paramId);\n return !!(deLogicParams && deLogicParams.model.entityParam);\n }\n};\n\n// src/de-logic/de-logic-node/de-action-node/de-action-node.ts\nimport { RuntimeModelError as RuntimeModelError11 } from \"@ibiz-template/core\";\n\n// src/de-logic/de-logic-link/de-logic-link-group-cond/de-logic-link-group-cond.ts\nimport { RuntimeModelError as RuntimeModelError10 } from \"@ibiz-template/core\";\n\n// src/de-logic/de-logic-link/de-logic-link-cond/de-logic-link-cond.ts\nvar DELogicLinkCond = class {\n};\n\n// src/de-logic/de-logic-link/de-logic-link-single-cond/de-logic-link-single-cond.ts\nimport { ModelError as ModelError7, RuntimeModelError as RuntimeModelError9 } from \"@ibiz-template/core\";\nvar DELogicLinkSingleCond = class extends DELogicLinkCond {\n constructor(model) {\n super();\n this.model = model;\n this.srcParam = model.srcLogicParamId;\n this.dstParam = model.dstLogicParamId;\n }\n get dstField() {\n return this.model.dstFieldName.toLowerCase();\n }\n get op() {\n return this.model.condOP;\n }\n /**\n * 条件值类型\n * @author lxm\n * @date 2023-06-14 03:35:39\n * @readonly\n */\n get type() {\n return this.model.paramType;\n }\n /**\n * 条件值\n * @author lxm\n * @date 2023-06-14 03:36:45\n * @readonly\n */\n get value() {\n return this.model.paramValue;\n }\n /**\n * 执行逻辑检测\n *\n * @author lxm\n * @date 2023-02-15 18:02:05\n * @param {DELogicContext} ctx\n * @param {IParams} context\n * @param {IData} data\n * @return {*} {boolean}\n */\n test(ctx, context, data) {\n const dst = ctx.params[this.dstParam];\n switch (this.type) {\n case \"ENTITYFIELD\": {\n if (!this.value) {\n throw new RuntimeModelError9(\n this.model,\n \"\\u5F53\\u524D\\u6761\\u4EF6\\u503C\\u7C7B\\u578B\\u4E3A[\\u6570\\u636E\\u5BF9\\u8C61\\u5C5E\\u6027],\\u7F3A\\u5C11\\u914D\\u7F6E\\u6761\\u4EF6\\u503C\"\n );\n }\n const value = data[this.value] != null ? data[this.value] : context[this.value];\n return testCond(dst[this.dstField], this.op, value);\n }\n case \"SRCENTITYFIELD\": {\n if (!this.value) {\n throw new RuntimeModelError9(\n this.model,\n \"\\u5F53\\u524D\\u6761\\u4EF6\\u503C\\u7C7B\\u578B\\u4E3A[\\u6E90\\u6570\\u636E\\u5BF9\\u8C61\\u5C5E\\u6027],\\u7F3A\\u5C11\\u914D\\u7F6E\\u6761\\u4EF6\\u503C\"\n );\n }\n const src = ctx.params[this.srcParam];\n return testCond(dst[this.dstField], this.op, src[this.value]);\n }\n case \"CURTIME\":\n throw new ModelError7(this.model, \"\\u6682\\u672A\\u652F\\u6301\\u6761\\u4EF6\\u503C\\u7C7B\\u578B\\u4E3A[\\u5F53\\u524D\\u65F6\\u95F4]\");\n default:\n return testCond(dst[this.dstField], this.op, this.value);\n }\n }\n};\n\n// src/de-logic/de-logic-link/de-logic-link-group-cond/de-logic-link-group-cond.ts\nvar DELogicLinkGroupCond = class _DELogicLinkGroupCond extends DELogicLinkCond {\n constructor(model) {\n super();\n this.model = model;\n const conds = model.conds || [];\n this.conds = conds.map((cond) => {\n return cond.logicType === \"SINGLE\" ? new DELogicLinkSingleCond(cond) : new _DELogicLinkGroupCond(cond);\n });\n }\n /**\n * 操作标识\n *\n * @author lxm\n * @date 2023-02-15 17:02:04\n * @readonly\n * @protected\n * @type {('AND' | 'OR')}\n */\n get op() {\n return this.model.groupOP;\n }\n /**\n * 结果是否取反值\n *\n * @author lxm\n * @date 2023-02-15 17:02:10\n * @readonly\n * @protected\n * @type {boolean}\n */\n get notMode() {\n return this.model.notMode === true;\n }\n /**\n * 条件判断\n *\n * @author lxm\n * @date 2023-02-15 17:02:19\n * @param {DELogicContext} ctx\n * @param {IParams} context\n * @param {IData} data\n * @return {*} {boolean}\n */\n test(ctx, context, data) {\n let bol = true;\n if (this.conds.length === 0) {\n throw new RuntimeModelError10(this.model, \"\\u754C\\u9762\\u8FDE\\u63A5\\u6761\\u4EF6\\u903B\\u8F91\\u7EC4\\u672A\\u914D\\u7F6E\\u903B\\u8F91\\u9879\");\n }\n for (let i = 0; i < this.conds.length; i++) {\n const cond = this.conds[i];\n const judge = cond.test(ctx, context, data);\n if (this.op === \"AND\" && judge === false) {\n bol = false;\n break;\n }\n if (this.op === \"OR\" && judge === true) {\n bol = true;\n break;\n }\n }\n return this.notMode ? !bol : bol;\n }\n};\n\n// src/de-logic/de-logic-link/de-logic-link.ts\nvar DELogicLink = class {\n /**\n * Creates an instance of DELogicLink.\n *\n * @author lxm\n * @date 2023-02-08 16:02:19\n * @param {DELogicLinkModel} model\n */\n constructor(model) {\n this.model = model;\n /**\n * 源节点\n *\n * @author lxm\n * @date 2023-02-08 21:02:53\n * @type {DELogicNode}\n */\n this.srcNode = null;\n /**\n * 目标节点\n *\n * @author lxm\n * @date 2023-02-08 21:02:59\n * @type {DELogicNode}\n */\n this.dstNode = null;\n /**\n * 连接条件组\n *\n * @author lxm\n * @date 2023-02-15 17:02:49\n * @type {(DELogicLinkGroupCond | null)}\n */\n this.groupCond = null;\n const cond = this.model.delogicLinkGroupCond;\n if (cond) {\n this.groupCond = new DELogicLinkGroupCond(cond);\n }\n }\n /**\n * 执行连接\n *\n * @author lxm\n * @date 2023-02-08 22:02:18\n * @param {DELogicContext} ctx\n * @param {IParams} context\n * @param {IData} data\n * @return {*} {Promise<boolean>} 是否连接成功\n */\n async exec(ctx) {\n const { defaultLink } = this.model;\n if (defaultLink || !this.groupCond) {\n return true;\n }\n return this.groupCond.test(ctx, ctx.context, ctx.data[0] || {});\n }\n};\n\n// src/de-logic/de-logic-node/de-logic-node.ts\nvar DELogicNode = class {\n /**\n * Creates an instance of DELogicNode.\n *\n * @author lxm\n * @date 2023-02-08 16:02:19\n * @param {DELogicNodeModel} model\n */\n constructor(model) {\n this.model = model;\n var _a;\n this.links = (_a = model.links || []) == null ? void 0 : _a.map((link) => new DELogicLink(link));\n }\n};\n\n// src/de-logic/de-logic-node/de-action-node/de-action-node.ts\nvar DEActionNode = class extends DELogicNode {\n async exec(ctx) {\n const {\n dstAppDataEntityId,\n dstAppDEActionId,\n dstDELogicParamId,\n retDELogicParamId\n } = this.model;\n if (!dstAppDataEntityId) {\n throw new RuntimeModelError11(this.model, \"\\u672A\\u6307\\u5B9A\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!dstAppDEActionId) {\n throw new RuntimeModelError11(this.model, \"\\u672A\\u6307\\u5B9A\\u5B9E\\u4F53\\u884C\\u4E3A\");\n }\n const requestData = ctx.params[dstDELogicParamId];\n const app = ibiz.hub.getApp(ctx.context.srfappid);\n const res = await app.deService.exec(\n dstAppDataEntityId,\n dstAppDEActionId,\n ctx.context,\n requestData,\n ctx.viewParam\n );\n if (res.ok) {\n ctx.params[retDELogicParamId] = res.data;\n }\n }\n};\n\n// src/de-logic/de-logic-node/start-node/start-node.ts\nvar StartNode = class extends DELogicNode {\n async exec(_ctx) {\n }\n};\n\n// src/de-logic/de-logic-node/end-node/end-node.ts\nimport { ModelError as ModelError8 } from \"@ibiz-template/core\";\nvar EndNode = class extends DELogicNode {\n async exec(ctx) {\n ctx.isEndNode = true;\n const { returnParamId, returnType, rawValue } = this.model;\n if (!returnType) {\n return;\n }\n switch (returnType) {\n case \"NONEVALUE\":\n ctx.result = void 0;\n break;\n case \"NULLVALUE\":\n ctx.result = null;\n break;\n case \"SRCVALUE\":\n ctx.result = ibiz.util.rawValue.format(rawValue);\n break;\n case \"LOGICPARAM\":\n ctx.result = ctx.params[returnParamId];\n break;\n case \"LOGICPARAMFIELD\":\n case \"BREAK\":\n default:\n throw new ModelError8(\n this.model,\n \"\\u6682\\u672A\\u652F\\u6301\\u7684\\u7ED3\\u675F\\u8282\\u70B9\\u8FD4\\u56DE\\u503C\\u7C7B\\u578B: \".concat(returnType)\n );\n }\n }\n};\n\n// src/de-logic/de-logic-node/prepare-param-node/prepare-param-node.ts\nimport { ModelError as ModelError10 } from \"@ibiz-template/core\";\nimport { clone as clone8 } from \"ramda\";\n\n// src/de-logic/utils/handle-src-val.ts\nimport { ModelError as ModelError9 } from \"@ibiz-template/core\";\nimport { clone as clone7 } from \"ramda\";\nfunction handleSrcVal(ctx, srcValParams) {\n const { srcDELogicParamId, srcFieldName, srcValue } = srcValParams;\n const srcValueType = srcValParams.srcValueType || \"SRCDLPARAM\";\n let srcField = srcFieldName;\n let value;\n switch (srcValueType) {\n case \"SRCDLPARAM\":\n value = ctx.params[srcDELogicParamId];\n if (ctx.isEntityParam(srcDELogicParamId)) {\n srcField = srcField == null ? void 0 : srcField.toLowerCase();\n }\n break;\n case \"NULLVALUE\":\n return null;\n case \"NONEVALUE\":\n return void 0;\n case \"SRCVALUE\":\n return ibiz.util.rawValue.format(srcValue);\n case \"WEBCONTEXT\":\n case \"VIEWPARAM\":\n value = ctx.parameters.params;\n break;\n case \"APPLICATION\":\n case \"SESSION\":\n case \"APPDATA\":\n case \"DATACONTEXT\":\n value = ctx.parameters.context;\n break;\n case \"ENVPARAM\":\n value = clone7(ibiz.env);\n break;\n default:\n throw new ModelError9(srcValParams, \"\\u6682\\u672A\\u652F\\u6301\\u6E90\\u503C\\u7C7B\\u578B\".concat(srcValueType));\n }\n if (value && srcField) {\n try {\n if (Array.isArray(value)) {\n value = value[Number(srcField)];\n } else {\n value = ScriptFactory.execScriptFn(\n { srcValue: value },\n \"srcValue.\".concat(srcField),\n {\n singleRowReturn: true,\n isAsync: false\n }\n );\n }\n } catch (error) {\n ibiz.log.error(\"\\u4ECE\\u6E90\\u53C2\\u6570\\u53D6\\u5C5E\\u6027\".concat(srcField, \"\\u62A5\\u9519\\uFF0C\\u6E90\\u53C2\\u6570\\uFF1A\"), value);\n throw error;\n }\n }\n return value;\n}\n\n// src/de-logic/de-logic-node/prepare-param-node/prepare-param-node.ts\nvar PrepareParamNode = class extends DELogicNode {\n async exec(ctx) {\n const nodeParams = this.model.delogicNodeParams;\n if (nodeParams == null ? void 0 : nodeParams.length) {\n await Promise.all(\n nodeParams.map((nodeParam) => {\n switch (nodeParam.paramAction) {\n case \"SETPARAMVALUE\":\n return this.setParamValue(nodeParam, ctx);\n case \"RESETPARAM\":\n return this.resetParam(nodeParam, ctx);\n case \"COPYPARAM\":\n return this.copyParam(nodeParam, ctx);\n case \"BINDPARAM\":\n return this.bindParam(nodeParam, ctx);\n case \"RENEWPARAM\":\n return this.renewParam(nodeParam, ctx);\n case \"APPENDPARAM\":\n return this.appendParam(nodeParam, ctx);\n case \"SORTPARAM\":\n return this.sortParam(nodeParam, ctx);\n default:\n throw new ModelError10(\n nodeParam,\n \"\\u6682\\u672A\\u652F\\u6301\\u903B\\u8F91\\u5904\\u7406\\u53C2\\u6570\\u64CD\\u4F5C\".concat(nodeParam.paramAction)\n );\n }\n })\n );\n }\n }\n /**\n * 拷贝变量\n * @author lxm\n * @date 2023-03-24 09:50:02\n * @protected\n * @param {IDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n * @return {*} {*}\n */\n copyParam(nodeParam, ctx) {\n const { dstDELogicParamId } = nodeParam;\n const srcVal = handleSrcVal(ctx, nodeParam);\n ctx.params[dstDELogicParamId] = clone8(srcVal);\n }\n /**\n * 绑定参数\n * @author lxm\n * @date 2023-06-13 05:43:43\n * @protected\n * @param {IDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n */\n bindParam(nodeParam, ctx) {\n const srcVal = handleSrcVal(ctx, nodeParam);\n ctx.params[nodeParam.dstDELogicParamId] = srcVal;\n }\n /**\n * 设置变量\n * @author lxm\n * @date 2023-03-17 03:34:02\n * @protected\n * @param {IDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n */\n setParamValue(nodeParam, ctx) {\n const { dstFieldName, dstDELogicParamId } = nodeParam;\n let dstField = dstFieldName;\n if (ctx.isEntityParam(dstDELogicParamId)) {\n dstField = dstField == null ? void 0 : dstField.toLowerCase();\n }\n const srcVal = handleSrcVal(ctx, nodeParam);\n if (dstField) {\n ctx.params[dstDELogicParamId][dstField] = srcVal;\n } else {\n ctx.params[dstDELogicParamId] = srcVal;\n }\n }\n /**\n * 重置变量\n * @author lxm\n * @date 2023-03-24 09:46:57\n * @protected\n * @param {IDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n */\n resetParam(nodeParam, ctx) {\n const { dstDELogicParamId } = nodeParam;\n ctx.resetParam(dstDELogicParamId);\n }\n /**\n * 重新建立变量\n * @author lxm\n * @date 2023-03-24 09:46:47\n * @protected\n * @param {IDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n */\n renewParam(nodeParam, ctx) {\n const { dstDELogicParamId } = nodeParam;\n ctx.renewParam(dstDELogicParamId);\n }\n /**\n * 附加到数组变量\n * @author lxm\n * @date 2023-03-24 09:46:47\n * @protected\n * @param {IDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n */\n appendParam(nodeParam, ctx) {\n const { dstDELogicParamId, dstIndex, srcIndex, srcSize } = nodeParam;\n const srcVal = handleSrcVal(ctx, nodeParam);\n const insertIndex = dstIndex || 0;\n const _srcIndex = srcIndex || 0;\n const _srcSize = srcSize || srcVal.length;\n ctx.params[dstDELogicParamId].splice(\n insertIndex,\n 0,\n ...srcVal.slice(_srcIndex, _srcSize)\n );\n }\n /**\n * 排序数组变量\n * @author lxm\n * @date 2023-03-24 10:23:01\n * @protected\n * @param {IDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n */\n sortParam(nodeParam, ctx) {\n const { dstDELogicParamId, dstFieldName, dstSortDir } = nodeParam;\n const key = dstFieldName.toLowerCase();\n const arr = ctx.params[dstDELogicParamId];\n arr.sort((a, b) => {\n return dstSortDir === \"ASC\" ? a[key] - b[key] : b[key] - a[key];\n });\n }\n};\n\n// src/de-logic/de-logic-node/data-set-node/data-set-node.ts\nvar DataSetNode = class extends DELogicNode {\n async exec(ctx) {\n const {\n dstAppDEDataSetId,\n dstAppDataEntityId,\n dstDELogicParamId,\n retDELogicParamId\n } = this.model;\n const queryParams = ctx.params[dstDELogicParamId];\n const app = ibiz.hub.getApp(ctx.context.srfappid);\n const res = await app.deService.exec(\n dstAppDataEntityId,\n dstAppDEDataSetId,\n ctx.context,\n queryParams\n );\n if (res.ok) {\n ctx.params[retDELogicParamId] = res.data;\n }\n }\n};\n\n// src/de-logic/de-logic-node/bind-param-node/bind-param-node.ts\nimport { RuntimeModelError as RuntimeModelError12 } from \"@ibiz-template/core\";\nvar BindParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId, srcDELogicParamId } = this.model;\n if (!dstDELogicParamId || !srcDELogicParamId) {\n throw new RuntimeModelError12(\n this.model,\n \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u6216\\u8005\\u6E90\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\"\n );\n }\n const srcVal = handleSrcVal(ctx, this.model);\n ctx.params[dstDELogicParamId] = srcVal;\n }\n};\n\n// src/de-logic/de-logic-node/reset-param-node/reset-param-node.ts\nimport { RuntimeModelError as RuntimeModelError13 } from \"@ibiz-template/core\";\nvar ResetParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId } = this.model;\n if (!dstDELogicParamId) {\n throw new RuntimeModelError13(this.model, \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\");\n }\n ctx.resetParam(dstDELogicParamId);\n }\n};\n\n// src/de-logic/de-logic-node/renew-param-node/renew-param-node.ts\nimport { RuntimeModelError as RuntimeModelError14 } from \"@ibiz-template/core\";\nvar RenewParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId } = this.model;\n if (!dstDELogicParamId) {\n throw new RuntimeModelError14(this.model, \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\");\n }\n ctx.renewParam(dstDELogicParamId);\n }\n};\n\n// src/de-logic/de-logic-node/copy-param-node/copy-param-node.ts\nimport { RuntimeModelError as RuntimeModelError15 } from \"@ibiz-template/core\";\nimport { clone as clone9 } from \"ramda\";\nvar CopyParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId, srcDELogicParamId } = this.model;\n if (!dstDELogicParamId || !srcDELogicParamId) {\n throw new RuntimeModelError15(\n this.model,\n \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u6216\\u8005\\u6E90\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\"\n );\n }\n const srcVal = handleSrcVal(ctx, this.model);\n ctx.params[dstDELogicParamId] = clone9(srcVal);\n }\n};\n\n// src/de-logic/de-logic-node/sort-param-node/sort-param-node.ts\nimport { RuntimeModelError as RuntimeModelError16 } from \"@ibiz-template/core\";\nvar SortParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId, dstSortDir, dstFieldName } = this.model;\n if (!dstDELogicParamId || !dstFieldName) {\n throw new RuntimeModelError16(this.model, \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u6216\\u76EE\\u6807\\u5C5E\\u6027\\u914D\\u7F6E\");\n }\n const key = dstFieldName.toLowerCase();\n const arr = ctx.params[dstDELogicParamId];\n arr.sort((a, b) => {\n return dstSortDir === \"ASC\" ? a[key] - b[key] : b[key] - a[key];\n });\n }\n};\n\n// src/de-logic/de-logic-node/append-param-node/append-param-node.ts\nimport { RuntimeModelError as RuntimeModelError17 } from \"@ibiz-template/core\";\nvar AppendParamNode = class extends DELogicNode {\n async exec(ctx) {\n const {\n dstDELogicParamId,\n srcDELogicParamId,\n dstIndex,\n srcIndex,\n srcSize\n } = this.model;\n if (!dstDELogicParamId || !srcDELogicParamId) {\n throw new RuntimeModelError17(\n this.model,\n \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u6216\\u8005\\u6E90\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\"\n );\n }\n const srcVal = handleSrcVal(ctx, this.model);\n const insertIndex = dstIndex || 0;\n const _srcIndex = srcIndex || 0;\n const _srcSize = srcSize || srcVal.length;\n ctx.params[dstDELogicParamId].splice(\n insertIndex,\n 0,\n ...srcVal.slice(_srcIndex, _srcSize)\n );\n }\n};\n\n// src/de-logic/de-logic-node/throw-exception-node/throw-exception-node.ts\nimport { HttpError as HttpError2 } from \"@ibiz-template/core\";\nvar ThrowExceptionNode = class extends DELogicNode {\n async exec(_ctx) {\n const { errorCode, errorInfo } = this.model;\n throw new HttpError2({\n response: {\n status: errorCode,\n statusText: errorInfo\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n};\n\n// src/de-logic/de-logic-param/de-logic-param.ts\nimport { ModelError as ModelError11 } from \"@ibiz-template/core\";\nimport { clone as clone10 } from \"ramda\";\nvar DELogicParam = class {\n /**\n * Creates an instance of DELogicParam.\n *\n * @author lxm\n * @date 2023-02-08 16:02:22\n * @param {DELogicParamModel} model\n */\n constructor(model) {\n this.model = model;\n }\n /**\n * 向界面逻辑中计算基础参数\n *\n * @author lxm\n * @date 2023-02-08 20:02:33\n * @param {DELogicContext} ctx\n * @param {IParams} context\n * @param {IData} data\n * @param {IParams} [opt]\n */\n calc(ctx) {\n const tag = this.model.id;\n const m = this.model;\n if (m.default) {\n if (m.entityListParam) {\n ctx.params[tag] = ctx.data || [];\n } else {\n ctx.params[tag] = ctx.data[0] || {};\n }\n } else if (m.appGlobalParam) {\n ctx.params[tag] = clone10(ibiz.env);\n } else if (m.entityListParam) {\n ctx.params[tag] = [];\n } else if (m.entityPageParam) {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u5206\\u9875\\u67E5\\u8BE2\\u7ED3\\u679C\");\n } else if (m.entityParam) {\n ctx.params[tag] = {};\n } else if (m.lastReturnParam) {\n ctx.initLastReturnParam(tag);\n } else if (m.appContextParam) {\n ctx.params[tag] = ctx.parameters.context;\n } else if (m.simpleListParam) {\n ctx.params[tag] = [];\n } else if (m.simpleParam) {\n ctx.params[tag] = {};\n } else if (m.cloneParam) {\n ctx.params[tag] = clone10(ctx.data || {});\n } else if (m.envParam) {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u7CFB\\u7EDF\\u73AF\\u5883\\u53D8\\u91CF\");\n } else if (m.fileListParam) {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u6587\\u4EF6\\u5BF9\\u8C61\\u5217\\u8868\\u53D8\\u91CF\");\n } else if (m.fileParam) {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u6587\\u4EF6\\u5BF9\\u8C61\\u53D8\\u91CF\");\n } else if (m.filterParam) {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u8FC7\\u6EE4\\u5668\\u5BF9\\u8C61\\u53D8\\u91CF\");\n } else if (m.lastParam) {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u6700\\u540E\\u6570\\u636E\\u53D8\\u91CF\");\n } else if (m.originEntity) {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u539F\\u59CB\\u6570\\u636E\\u5BF9\\u8C61\");\n } else if (m.sessionParam) {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u64CD\\u4F5C\\u4F1A\\u8BDD\\u53D8\\u91CF\");\n }\n }\n /**\n * 重新建立变量\n * @author lxm\n * @date 2023-03-24 09:20:42\n * @param {DELogicContext} ctx\n */\n renew(ctx) {\n const tag = this.model.id;\n const m = this.model;\n if (m.entityListParam || m.simpleListParam || m.entityPageParam) {\n ctx.params[tag] = [];\n } else if (m.simpleParam || m.entityParam) {\n ctx.params[tag] = {};\n } else {\n throw new ModelError11(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B\\u91CD\\u65B0\\u5EFA\\u7ACB\\u53D8\\u91CF\");\n }\n }\n};\n\n// src/de-logic/de-logic.ts\nvar DELogic = class {\n /**\n * Creates an instance of DELogic.\n * @author lxm\n * @date 2023-02-08 17:02:26\n * @param {IAppDELogic} model\n */\n constructor(model) {\n this.model = model;\n /**\n * 所有节点实例\n *\n * @author lxm\n * @date 2023-02-08 21:02:38\n * @protected\n * @type {Map<string, DELogicNode>}\n */\n this.nodes = /* @__PURE__ */ new Map();\n /**\n * 所有参数实例\n *\n * @author lxm\n * @date 2023-02-08 21:02:25\n * @protected\n * @type {Map<string, DELogicParam>}\n */\n this.params = /* @__PURE__ */ new Map();\n var _a, _b;\n if (model.customCode) {\n if (!model.scriptCode) {\n throw new RuntimeModelError18(model, \"\\u811A\\u672C\\u4EE3\\u7801\\u6A21\\u5F0F\\u6CA1\\u6709\\u914D\\u7F6E\\u811A\\u672C\\u4EE3\\u7801\");\n }\n this.scriptFn = ScriptFactory.createScriptFn([], model.scriptCode, {\n isAsync: true\n });\n return;\n }\n if (!((_a = model.delogicNodes) == null ? void 0 : _a.length)) {\n throw new RuntimeModelError18(model, \"\\u5B9E\\u4F53\\u903B\\u8F91\\u6CA1\\u6709\\u914D\\u7F6E\\u903B\\u8F91\\u8282\\u70B9\");\n }\n model.delogicNodes.forEach((node) => {\n const { logicNodeType } = node;\n let logicNode;\n switch (logicNodeType) {\n case \"BEGIN\":\n logicNode = new StartNode(node);\n break;\n case \"END\":\n logicNode = new EndNode(node);\n break;\n case \"DEACTION\":\n logicNode = new DEActionNode(node);\n break;\n case \"PREPAREPARAM\":\n logicNode = new PrepareParamNode(node);\n break;\n case \"DEDATASET\":\n logicNode = new DataSetNode(node);\n break;\n case \"THROWEXCEPTION\":\n logicNode = new ThrowExceptionNode(node);\n break;\n case \"BINDPARAM\":\n logicNode = new BindParamNode(node);\n break;\n case \"RESETPARAM\":\n logicNode = new ResetParamNode(node);\n break;\n case \"COPYPARAM\":\n logicNode = new CopyParamNode(node);\n break;\n case \"RENEWPARAM\":\n logicNode = new RenewParamNode(node);\n break;\n case \"APPENDPARAM\":\n logicNode = new AppendParamNode(node);\n break;\n case \"SORTPARAM\":\n logicNode = new SortParamNode(node);\n break;\n default:\n throw new ModelError12(node, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8282\\u70B9\\u7C7B\\u578B: \".concat(logicNodeType));\n }\n this.nodes.set(node.id, logicNode);\n });\n (_b = model.delogicParams) == null ? void 0 : _b.forEach((param) => {\n this.params.set(param.id, new DELogicParam(param));\n });\n this.nodes.forEach((node) => {\n node.links.forEach((link) => {\n link.srcNode = node;\n if (this.nodes.has(link.model.thenId)) {\n link.dstNode = this.nodes.get(link.model.thenId);\n }\n });\n });\n }\n /**\n * 初始化当前环境的逻辑参数的实例\n *\n * @author lxm\n * @date 2023-02-08 21:02:58\n * @protected\n * @param {DELogicContext} ctx\n * @param {IParams} context\n * @param {IData} data\n * @param {IParams} [opt]\n */\n initLogicParams(ctx) {\n this.params.forEach((param) => {\n if (param.model.default) {\n ctx.defaultParamName = param.model.id;\n }\n param.calc(ctx);\n });\n }\n /**\n * 执行逻辑\n *\n * @author lxm\n * @date 2023-02-08 21:02:09\n * @param {IParams} context\n * @param {IData} data\n * @param {IParams} [opt]\n * @return {*} {Promise<IData>}\n */\n async exec(context, data, params) {\n if (this.scriptFn) {\n return this.scriptFn.exec({ context, data, params });\n }\n const ctx = new DELogicContext(this.params, context, data, params);\n this.initLogicParams(ctx);\n const { startDELogicNodeId } = this.model;\n if (startDELogicNodeId && this.nodes.has(startDELogicNodeId)) {\n const start = this.nodes.get(startDELogicNodeId);\n await this.deepExec(start, ctx);\n } else {\n throw new RuntimeModelError18(this.model, \"\\u672A\\u8BBE\\u7F6E\\u8D77\\u59CB\\u8282\\u70B9\");\n }\n if (ctx.isEndNode) {\n return ctx.result;\n }\n if (ctx.params[ctx.defaultParamName]) {\n return ctx.params[ctx.defaultParamName];\n }\n return null;\n }\n /**\n * 开始根据连线递归执行逻辑\n *\n * @author lxm\n * @date 2023-06-13 08:29:36\n * @protected\n * @param {DELogicNode} node 逻辑节点\n * @param {DELogicContext} ctx 逻辑上下文\n * @return {*} {Promise<void>}\n */\n async deepExec(node, ctx) {\n await node.exec(ctx);\n const { links } = node;\n for (let index = 0; index < links.length; index++) {\n const link = links[index];\n const bol = await link.exec(ctx);\n if (bol && link.dstNode) {\n await this.deepExec(link.dstNode, ctx);\n if (node.model.parallelOutput === false) {\n break;\n }\n }\n }\n }\n};\n\n// src/de-logic/index.ts\nvar deLogicMap = /* @__PURE__ */ new Map();\nasync function findDeLogic(deDELogicId, dataEntityId, appId) {\n const appDataEntity = await ibiz.hub.getAppDataEntity(dataEntityId, appId);\n return findDELogic(deDELogicId, appDataEntity);\n}\nasync function execDELogic(deDELogic, context, data = {}, params = {}) {\n if (!deLogicMap.has(deDELogic)) {\n deLogicMap.set(deDELogic, new DELogic(deDELogic));\n }\n const deLogic = deLogicMap.get(deDELogic);\n return deLogic.exec(context, data, params);\n}\nasync function execDELogicById(deDELogicId, dataEntityId, context, data, params) {\n const deLogic = await findDeLogic(\n deDELogicId,\n dataEntityId,\n context.srfappid\n );\n if (!deLogic) {\n throw new RuntimeError18(\"\".concat(dataEntityId, \"\\u627E\\u4E0D\\u5230\\u5B9E\\u4F53\\u903B\\u8F91\").concat(deDELogicId));\n }\n return execDELogic(deLogic, context, data, params);\n}\nasync function execDELogicAction(deDELogic, context, data, params) {\n const _context = clone11(context);\n const _data = data ? clone11(data) : data;\n const _params = params ? clone11(params) : params;\n try {\n const result = await execDELogic(deDELogic, _context, _data, _params);\n return new HttpResponse2(result);\n } catch (err) {\n if (err instanceof HttpError3) {\n return new HttpResponse2(err, 500);\n }\n throw err;\n }\n}\nasync function execSingleFieldLogics(entity, type, context, data, params) {\n const fieldLogics = filterFieldLogics(entity, type);\n if (fieldLogics.length) {\n const promiseResult = await Promise.all(\n fieldLogics.map((logic) => {\n return execDELogic(logic, context, data, params);\n })\n );\n promiseResult.forEach((value) => {\n Object.assign(data, value);\n });\n }\n}\nasync function execFieldLogics(entity, type, context, data, params = {}) {\n if (!data) {\n return;\n }\n if (isArray6(data)) {\n await Promise.all(\n data.map(\n (item) => execSingleFieldLogics(entity, type, context, item, params)\n )\n );\n return;\n }\n return execSingleFieldLogics(entity, type, context, data, params);\n}\n\n// src/service/service/entity/method/de-action.ts\nvar DEActionMethod = class extends Method {\n /**\n * 是否为本地模式\n *\n * @author chitanda\n * @date 2023-04-19 16:04:46\n * @readonly\n * @protected\n * @type {boolean}\n */\n get isLocalMode() {\n return isLocalMode(this.method);\n }\n /**\n * 处理请求发送参数\n * @author lxm\n * @date 2023-10-19 02:50:36\n * @param {IParams} context 上下文\n * @param {(IData | IData[])} data 数据对象\n * @return {*} {(Promise<IData | IData[]>)}\n */\n async inputHandle(context, data) {\n if (isArray7(data)) {\n return data;\n }\n return this.input.handle(context, data);\n }\n async exec(context, data, params) {\n if (data) {\n await execFieldLogics(this.entity, \"change\", context, data, params);\n }\n if (this.method.actionType === \"DELOGIC\") {\n const deLogic = findDELogic(this.method.appDELogicId, this.entity);\n if (!deLogic) {\n throw new RuntimeModelError19(this.method, \"\\u7F3A\\u5C11\\u5B9E\\u4F53\\u5904\\u7406\\u903B\\u8F91\");\n }\n return execDELogicAction(deLogic, context, data, params);\n }\n if (data && !this.isLocalMode) {\n data = await this.inputHandle(context, data);\n }\n if (data && ![\"READ\", \"GETDRAFT\"].includes(this.method.actionMode)) {\n await execFieldLogics(this.entity, \"change\", context, data, params);\n }\n let result;\n switch (this.method.codeName) {\n case \"Create\":\n result = await this.create(context, data, params || {});\n break;\n case \"Get\":\n result = await this.get(context, params);\n break;\n case \"GetDraft\":\n result = await this.getDraft(context, params);\n break;\n case \"Remove\":\n result = await this.remove(context, params);\n break;\n case \"Update\":\n result = await this.update(context, data, params);\n break;\n case \"CreateTemp\":\n result = await this.createTemp(context, data);\n break;\n case \"GetTemp\":\n result = await this.getTemp(context, data);\n break;\n case \"GetDraftTemp\":\n result = await this.getDraftTemp(context, params);\n break;\n case \"RemoveTemp\":\n result = await this.removeTemp(context, data);\n break;\n case \"UpdateTemp\":\n result = await this.updateTemp(context, data);\n break;\n default: {\n let path2 = this.calcPath(context);\n if (this.method.needResourceKey) {\n let srfkey = context[this.entity.codeName.toLowerCase()];\n if (isNil10(srfkey)) {\n srfkey = isArray7(data) ? null : data == null ? void 0 : data[this.entity.keyAppDEFieldId];\n }\n path2 = \"\".concat(path2, \"/\").concat(srfkey);\n }\n const res = await this.request(path2, context, data, params);\n res.data = await this.result.handle(context, res.data);\n result = res;\n }\n }\n if (result.data) {\n await execFieldLogics(\n this.entity,\n \"compute\",\n context,\n result.data,\n params\n );\n }\n return result;\n }\n /**\n * 创建数据\n *\n * @author chitanda\n * @date 2022-08-24 20:08:01\n * @param {IParams} context\n * @param {IData} data\n * @return {*} {Promise<IHttpResponse<IData>>}\n */\n async create(context, data, params) {\n if (!data) {\n throw new RuntimeError19(\"create\\u884C\\u4E3A\\u6CA1\\u6709\\u4F20data\");\n }\n if (this.isLocalMode) {\n return this.createTemp(context, this.createEntity(data));\n }\n const path2 = this.calcPath(context);\n const res = await this.app.net.post(path2, data, params);\n res.data = await this.result.handle(context, res.data);\n return res;\n }\n /**\n * 删除数据\n *\n * @author chitanda\n * @date 2022-08-24 20:08:56\n * @param {IParams} context\n * @param {IParams} [params]\n * @return {*} {Promise<IHttpResponse<IDataEntity>>}\n */\n async remove(context, params) {\n if (this.isLocalMode) {\n return this.removeTemp(context, params);\n }\n const path2 = this.calcPath(context);\n const res = await this.app.net.delete(\n \"\".concat(path2, \"/\").concat(context[this.entity.codeName.toLowerCase()]),\n params\n );\n return res;\n }\n /**\n * 更新数据\n *\n * @author chitanda\n * @date 2022-09-13 19:09:39\n * @param {IParams} context\n * @param {(IData | IDataEntity)} data\n * @param {IParams} [params={}]\n * @return {*} {Promise<IHttpResponse<IDataEntity>>}\n */\n async update(context, data, params) {\n if (!data) {\n throw new RuntimeError19(\"update\\u884C\\u4E3A\\u6CA1\\u6709\\u4F20data\");\n }\n if (this.isLocalMode) {\n return this.updateTemp(context, this.createEntity(data));\n }\n const path2 = this.calcPath(context);\n const res = await this.app.net.put(\n \"\".concat(path2, \"/\").concat(context[this.entity.codeName.toLowerCase()]),\n data,\n params\n );\n res.data = await this.result.handle(context, res.data);\n return res;\n }\n /**\n * 获取数据\n *\n * @author chitanda\n * @date 2022-08-24 20:08:07\n * @param {IParams} context\n * @param {IParams} [params]\n * @return {*} {Promise<IHttpResponse<IDataEntity>>}\n */\n async get(context, params = {}) {\n if (this.isLocalMode) {\n return this.getTemp(context, params);\n }\n const path2 = this.calcPath(context);\n const res = await this.app.net.get(\n \"\".concat(path2, \"/\").concat(context[this.entity.codeName.toLowerCase()]),\n params\n );\n res.data = await this.result.handle(context, res.data);\n return res;\n }\n /**\n * 获取默认数据\n *\n * @author chitanda\n * @date 2022-08-24 20:08:26\n * @param {IParams} context\n * @param {IParams} [params]\n * @return {*} {Promise<IHttpResponse<IData>>}\n */\n async getDraft(context, params) {\n if (this.isLocalMode) {\n return this.getDraftTemp(context, params);\n }\n const path2 = this.calcPath(context);\n const res = await this.app.net.get(\"\".concat(path2, \"/getdraft\"), params);\n res.data = await this.result.handle(context, res.data);\n return res;\n }\n /**\n * 新建临时数据\n *\n * @author chitanda\n * @date 2022-08-21 17:08:45\n * @param {IParams} context\n * @param {IData} entity\n * @return {*} {Promise<IHttpResponse<IDataEntity>>}\n */\n async createTemp(context, entity) {\n try {\n const s = await this.getService();\n const addData = this.createEntity(entity);\n let resultData;\n if (isArray7(addData)) {\n resultData = await Promise.all(\n addData.map((item) => s.local.add(context, item))\n );\n } else {\n resultData = await s.local.add(context, addData);\n }\n return new HttpResponse3(resultData);\n } catch (err) {\n return new HttpResponse3(err, 500);\n }\n }\n /**\n * 获取临时数据默认值\n *\n * @author chitanda\n * @date 2022-08-21 17:08:56\n * @param {IParams} context\n * @param {IParams} [params]\n * @return {*} {Promise<IHttpResponse<IDataEntity>>}\n */\n async getDraftTemp(_context, _params) {\n try {\n const data = this.createEntity({});\n if (data) {\n return new HttpResponse3(data);\n }\n return new HttpResponse3(data, 500);\n } catch (err) {\n return new HttpResponse3(err, 500);\n }\n }\n /**\n * 删除临时数据\n *\n * @author chitanda\n * @date 2022-08-21 17:08:11\n * @param {IParams} context\n * @param {IParams} [params]\n * @return {*} {Promise<IHttpResponse<IDataEntity>>}\n */\n async removeTemp(context, params) {\n try {\n let key = null;\n if (params) {\n }\n if (!key && context) {\n key = context[this.entity.codeName.toLowerCase()];\n }\n const s = await this.getService();\n const data = s.local.delete(context, key);\n if (data) {\n return new HttpResponse3(data);\n }\n return new HttpResponse3(data, 500);\n } catch (err) {\n return new HttpResponse3(err, 500);\n }\n }\n /**\n * 更新临时数据\n *\n * @author chitanda\n * @date 2022-08-21 17:08:17\n * @param {IParams} context\n * @param {IData} entity\n * @return {*} {Promise<IHttpResponse<IDataEntity>>}\n */\n async updateTemp(context, entity) {\n try {\n const s = await this.getService();\n const updateData = this.createEntity(entity);\n let resultData;\n if (isArray7(updateData)) {\n resultData = await Promise.all(\n updateData.map((item) => s.local.update(context, item))\n );\n } else {\n resultData = await s.local.update(context, updateData);\n }\n if (resultData) {\n return new HttpResponse3(resultData);\n }\n return new HttpResponse3(resultData, 500);\n } catch (err) {\n return new HttpResponse3(err, 500);\n }\n }\n /**\n * 获取临时数据\n *\n * @author chitanda\n * @date 2022-08-21 17:08:23\n * @param {IParams} context\n * @param {IParams} [params]\n * @return {*} {Promise<IHttpResponse<IDataEntity>>}\n */\n async getTemp(context, params) {\n try {\n let key = null;\n if (params) {\n }\n if (!key && context) {\n key = context[this.entity.codeName.toLowerCase()];\n }\n const s = await this.getService();\n const data = s.local.get(context, key);\n if (data) {\n return new HttpResponse3(data);\n }\n return new HttpResponse3(data, 500);\n } catch (err) {\n return new HttpResponse3(err, 500);\n }\n }\n /**\n * 批量删除本地数据\n *\n * @param {IParams} context\n * @param {IParams} [params]\n * @return {*} {Promise<IHttpResponse>}\n */\n async removeBatchTemp(_context, _params) {\n return new HttpResponse3(true);\n }\n};\n\n// src/service/service/entity/method/provider/de-action-de-method.provider.ts\nvar DeActionDeMethodProvider = class {\n create(entity, method, _opts) {\n return new DEActionMethod(entity, method);\n }\n};\n\n// src/service/service/entity/method/fetch.ts\nimport {\n HttpResponse as HttpResponse4,\n ModelError as ModelError13,\n RuntimeModelError as RuntimeModelError20\n} from \"@ibiz-template/core\";\nimport { ascSort, descSort } from \"qx-util\";\nimport { clone as clone12, equals as equals2, isEmpty as isEmpty7, isNil as isNil11, where as where2 } from \"ramda\";\nimport { isArray as isArray8 } from \"lodash-es\";\nvar FetchMethod = class extends Method {\n get isLocalMode() {\n return isLocalMode(this.method);\n }\n async exec(context, params, params2) {\n const searchParams = params && isArray8(params) ? params : params2 || {};\n if (this.isLocalMode) {\n const items2 = await this.searchLocal(\n null,\n new SearchFilter(context, searchParams)\n );\n return new HttpResponse4(items2, 200);\n }\n let res;\n switch (this.method.dataSetType) {\n case \"INDEXDE\":\n case \"CODELIST\":\n case \"MULTIFORM\":\n res = await this.fetchCodeListSet(context, searchParams);\n break;\n case \"REMOTE\":\n {\n const path2 = this.calcPath(context);\n res = await this.request(path2, context, params, params2);\n }\n break;\n default:\n throw new ModelError13(\n this.method,\n \"\\u6570\\u636E\\u6765\\u6E90\\u7C7B\\u578B\".concat(this.method.dataSetType, \"\\u6682\\u672A\\u652F\\u6301\")\n );\n }\n const items = res.data || [];\n res.data = items.map((item) => this.createEntity(item));\n if (res.data) {\n await execFieldLogics(\n this.entity,\n \"compute\",\n context,\n res.data,\n searchParams\n );\n }\n return res;\n }\n /**\n * 查询本地数据,根据属性\n *\n * @param {IParams} context\n * @param {IParams} params 根据多实体属性查找,例:{ name: '张三', age: 18, parent: null }\n * @return {*} {Promise<IDataEntity[]>}\n */\n async selectLocal(context, params = {}) {\n const service = await this.getService();\n let items = service.local.getList(context);\n items = ascSort(items, \"srfordervalue\");\n const data = {};\n const nullData = {};\n const undefinedData = {};\n const emptyData = {};\n if (params.srfkey) {\n data.srfkey = equals2(params.srfkey);\n delete params.srfkey;\n }\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key)) {\n const val = params[key];\n if (val == null) {\n nullData[key] = equals2(null);\n undefinedData[key] = equals2(void 0);\n emptyData[key] = equals2(\"\");\n } else {\n data[key] = equals2(val);\n }\n }\n }\n if (!isEmpty7(data)) {\n const pred = where2(data);\n const nullPred = where2(nullData);\n const undefinedPred = where2(undefinedData);\n const emptyPred = where2(emptyData);\n items = items.filter((obj) => {\n if (isEmpty7(nullData)) {\n if (pred(obj)) {\n return true;\n }\n } else if (pred(obj) && (nullPred(obj) || undefinedPred(obj) || emptyPred(obj))) {\n return true;\n }\n return false;\n });\n }\n const list = items.map((obj) => obj.clone());\n return list;\n }\n /**\n * 搜索本地数据\n *\n * @protected\n * @param {PSDEDQCondEngine | null} cond 查询实例\n * @param {SearchFilter} filter 过滤对象\n * @param {string[]} [queryParamKeys=this.entity.quickSearchKeys] 当前实体支持快速搜索的属性\n * @return {*} {Promise<IDataEntity[]>}\n */\n async searchLocal(cond, filter, queryParamKeys = this.entity.quickSearchAppDEFieldIds) {\n const service = await this.getService();\n let list = [];\n if (cond) {\n list = service.local.getList(filter.context);\n if (list.length > 0) {\n list = list.filter((obj) => cond.test(obj, filter));\n }\n } else {\n list = await this.selectLocal(filter.context);\n if (list.length > 0) {\n if (filter.query && filter.query !== \"\") {\n if (queryParamKeys) {\n list = list.filter((obj) => {\n const reg2 = new RegExp(filter.query);\n for (let i = 0; i < queryParamKeys.length; i += 1) {\n const key = queryParamKeys[i];\n const val = obj[key];\n if (reg2.test(val)) {\n return true;\n }\n }\n return false;\n });\n }\n }\n }\n }\n if (!isNil11(filter.sortField) && !isEmpty7(filter.sortField)) {\n if (filter.sortMode === \"DESC\") {\n list = descSort(list, filter.sortField);\n } else {\n list = ascSort(list, filter.sortField);\n }\n }\n const { page, size } = filter;\n const start = page * size;\n const end = (page + 1) * size - 1;\n const items = list.slice(start, end).map((item) => clone12(item));\n return items;\n }\n /**\n * 获取代码表数据来源的集合\n * @author lxm\n * @date 2023-08-03 02:55:00\n * @param {IParams} context\n * @param {IParams} params\n * @return {*} {Promise<HttpResponse<IData[]>>}\n */\n async fetchCodeListSet(context, params) {\n const { appCodeListId } = this.method;\n if (!appCodeListId) {\n throw new RuntimeModelError20(this.method, \"\\u6CA1\\u6709\\u6307\\u5B9A\\u6570\\u636E\\u6765\\u6E90\\u4EE3\\u7801\\u8868\");\n }\n const codeItems = await this.app.codeList.get(\n appCodeListId,\n context,\n params\n );\n const { keyAppDEFieldId, majorAppDEFieldId } = this.entity;\n const dataSet = codeItems.map((item) => ({\n [keyAppDEFieldId]: item.value,\n [majorAppDEFieldId]: item.text\n }));\n return new HttpResponse4(dataSet, 200);\n }\n};\n\n// src/service/service/entity/method/ac-fetch.ts\nvar AcFetchMethod = class extends FetchMethod {\n mergeRequestPath(path2, methodName) {\n return \"\".concat(path2, \"/ac/\").concat(methodName, \"?srfac=ac\");\n }\n};\n\n// src/service/service/entity/method/provider/fetch-de-method.provider.ts\nvar FetchDeMethodProvider = class {\n create(entity, method, opts) {\n if (opts.acMode) {\n return new AcFetchMethod(entity, method);\n }\n return new FetchMethod(entity, method);\n }\n};\n\n// src/service/service/entity/method/provider/index.ts\nfunction presetDEMethodProvider() {\n const deActionDeMethodProvider = new DeActionDeMethodProvider();\n registerDEMethodProvider(\"DEACTION\", () => deActionDeMethodProvider);\n const fetchDeMethodProvider = new FetchDeMethodProvider();\n registerDEMethodProvider(\"FETCH\", () => fetchDeMethodProvider);\n registerDEMethodProvider(\"FETCHTEMP\", () => fetchDeMethodProvider);\n}\n\n// src/service/vo/tree-node-data/tree-node-data.ts\nvar TreeNodeData = class {\n constructor(model, parentNodeData, opts) {\n this.leaf = false;\n this.leaf = opts.leaf === true;\n this.parent = parentNodeData;\n if (this.parent) {\n this.context = { ...this.parent.context };\n }\n if (opts.navContext) {\n this.context = Object.assign(this.context || {}, opts.navContext);\n }\n if (opts.navParams) {\n this.params = { ...opts.navParams };\n }\n this.nodeId = model.id;\n }\n /**\n * 计算节点图标\n * @author lxm\n * @date 2023-08-15 02:24:55\n * @protected\n * @param {IDETreeNode} model\n * @return {*} {(IIcon | undefined)}\n */\n calcIcon(model) {\n const { sysImage } = model;\n const icon = {};\n if (sysImage) {\n if (sysImage.cssClass) {\n icon.cssClass = sysImage.cssClass;\n }\n if (sysImage.imagePath) {\n icon.imagePath = sysImage.imagePath;\n }\n }\n return Object.values(icon).length > 0 ? icon : void 0;\n }\n};\n\n// src/service/vo/tree-node-data/tree-code-list-node-data.ts\nvar TreeCodeListNodeData = class extends TreeNodeData {\n constructor(model, parentNodeData, opts) {\n super(model, parentNodeData, opts);\n const { data } = opts;\n this.text = data.text;\n this.value = data.value;\n this.id = parentNodeData ? \"\".concat(parentNodeData.id, \":\").concat(model.id, \"@\").concat(this.value) : model.id + this.value;\n this.id = this.id.toLowerCase();\n if (model.appDataEntityId) {\n const deName = calcDeCodeNameById(model.appDataEntityId);\n this.context = Object.assign(this.context || {}, {\n [deName]: this.value\n });\n }\n this.srfkey = this.value;\n this.srfmajortext = this.text;\n this.icon = this.calcIcon(model);\n }\n};\n\n// src/service/vo/tree-node-data/tree-data-set-node-data.ts\nvar TreeDataSetNodeData = class extends TreeNodeData {\n constructor(model, parentNodeData, opts) {\n super(model, parentNodeData, opts);\n const { data } = opts;\n this.deData = data;\n this.text = model.textAppDEFieldId ? data[model.textAppDEFieldId] : data.srfmajortext;\n this.value = model.idAppDEFieldId ? data[model.idAppDEFieldId] : data.srfkey;\n this.id = parentNodeData ? \"\".concat(parentNodeData.id, \":\").concat(model.id, \"@\").concat(data.srfkey) : model.id + data.srfkey;\n this.id = this.id.toLowerCase();\n if (model.appDataEntityId) {\n const deName = calcDeCodeNameById(model.appDataEntityId);\n this.context = Object.assign(this.context || {}, {\n [deName]: data.srfkey\n });\n }\n this.srfkey = this.deData.srfkey;\n this.srfmajortext = this.deData.srfmajortext;\n this.icon = this.calcIcon(model);\n this.textHtml = this.calcTextHtml(model);\n if (model.leafFlagAppDEFieldId) {\n const value = data[model.leafFlagAppDEFieldId];\n this.leaf = [1, \"1\", true, \"true\"].includes(value);\n }\n }\n calcIcon(model) {\n const icon = super.calcIcon(model) || {};\n const { iconAppDEFieldId, detreeNodeDataItems } = model;\n if (iconAppDEFieldId && this.deData[iconAppDEFieldId]) {\n icon.imagePath = this.deData[iconAppDEFieldId];\n }\n if (icon) {\n this.icon = icon;\n }\n const iconDataItem = detreeNodeDataItems == null ? void 0 : detreeNodeDataItems.find((item) => item.id === \"icon\");\n if (iconDataItem) {\n icon.htmlStr = this.calcDataItemScript(iconDataItem);\n }\n return Object.values(icon).length > 0 ? icon : void 0;\n }\n /**\n * 计算节点数据项的自定义脚本内容\n * @author lxm\n * @date 2023-08-15 02:37:29\n * @protected\n * @param {IDETreeNodeDataItem} dataItem\n * @return {*} {(string | undefined)}\n */\n calcDataItemScript(dataItem) {\n if (dataItem.customCode && dataItem.scriptCode) {\n return ScriptFactory.execScriptFn(\n { data: this.deData },\n dataItem.scriptCode,\n {\n isAsync: false\n }\n );\n }\n }\n /**\n * 计算节点文本html内容\n * @author lxm\n * @date 2023-08-15 02:41:31\n * @protected\n * @param {IDETreeDataSetNode} model\n * @return {*} {(string | undefined)}\n */\n calcTextHtml(model) {\n let html;\n const { detreeNodeDataItems } = model;\n const textDataItem = detreeNodeDataItems == null ? void 0 : detreeNodeDataItems.find((item) => item.id === \"text\");\n if (textDataItem) {\n html = this.calcDataItemScript(textDataItem);\n }\n return html;\n }\n};\n\n// src/service/vo/tree-node-data/tree-static-node-data.ts\nvar TreeStaticNodeData = class extends TreeNodeData {\n constructor(model, parentNodeData, opts) {\n var _a, _b;\n super(model, parentNodeData, opts);\n const nodeValue = model.nodeValue === \"root\" ? void 0 : model.nodeValue;\n this.id = parentNodeData ? \"\".concat(parentNodeData.id, \":\").concat(model.id) : model.id;\n this.id = this.id.toLowerCase();\n this.text = model.text;\n this.value = nodeValue;\n if (parentNodeData && opts.parentValueLevel) {\n let parent = parentNodeData;\n for (let index = 1; index < opts.parentValueLevel; index++) {\n parent = parent == null ? void 0 : parent.parent;\n }\n if (parent == null ? void 0 : parent.deData) {\n this.deData = parent.deData;\n }\n this.value = nodeValue || (parent == null ? void 0 : parent.value);\n }\n this.srfkey = ((_a = this.deData) == null ? void 0 : _a.srfkey) || this.value;\n this.srfmajortext = ((_b = this.deData) == null ? void 0 : _b.srfmajortext) || this.text;\n this.icon = this.calcIcon(model);\n }\n};\n\n// src/service/vo/ui-map-field.ts\nimport { DataTypes as DataTypes2 } from \"@ibiz-template/core\";\nimport { isNil as isNil12 } from \"ramda\";\nvar UIMapField = class {\n constructor(uiKey, dataKey, opts = {}) {\n /**\n * 是否存储到origin里面(默认false)\n *\n * @author lxm\n * @date 2022-10-18 14:10:24\n * @type {boolean}\n */\n this.isOriginField = false;\n /**\n * 是否是请求需要的字段(默认true)\n *\n * @author lxm\n * @date 2022-10-18 14:10:44\n * @type {boolean}\n */\n this.isRequestNeed = true;\n this.uiKey = uiKey;\n this.dataKey = dataKey;\n if (!isNil12(opts.isOriginField)) {\n this.isOriginField = opts.isOriginField;\n }\n if (!isNil12(opts.dataType)) {\n this.dataType = opts.dataType;\n }\n }\n /**\n * 值转换\n * @author lxm\n * @date 2023-09-14 06:45:44\n * @param {unknown} value 原值\n */\n convertVal(value) {\n if (!this.dataType) {\n return value;\n }\n if (DataTypes2.isNumber(this.dataType)) {\n const numVal = !isNil12(value) && value !== \"\" ? Number(value) : value;\n if (Number.isNaN(numVal)) {\n ibiz.log.debug(\"\".concat(value, \"\\u4E0D\\u80FD\\u8F6C\\u6362\\u6210\\u6570\\u5B57\"));\n return value;\n }\n return numVal;\n }\n return value;\n }\n};\n\n// src/service/vo/calendar-item-data/calendar-item-data.ts\nvar CalendarItemData = class {\n constructor(model, data) {\n this.model = model;\n this.data = data;\n }\n get deData() {\n return this.data;\n }\n get navId() {\n return \"\".concat(this.itemType, \"@\").concat(this.id);\n }\n get itemType() {\n return this.model.itemType;\n }\n get bkColor() {\n const fieldName = this.model.bkcolorAppDEFieldId;\n return fieldName && this.data[fieldName] ? this.data[fieldName] : this.model.bkcolor;\n }\n get beginTime() {\n const fieldName = this.model.beginTimeAppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n get color() {\n const fieldName = this.model.colorAppDEFieldId;\n return fieldName && this.data[fieldName] ? this.data[fieldName] : this.model.color;\n }\n get content() {\n const fieldName = this.model.contentAppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n get endTime() {\n const fieldName = this.model.endTimeAppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n get icon() {\n const fieldName = this.model.iconAppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n get id() {\n const fieldName = this.model.idAppDEFieldId;\n return fieldName && this.data[fieldName] ? this.data[fieldName] : this.data.srfkey;\n }\n get level() {\n const fieldName = this.model.levelAppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n get tag2() {\n const fieldName = this.model.tag2AppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n get tag() {\n const fieldName = this.model.tagAppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n get text() {\n const fieldName = this.model.textAppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n get tips() {\n const fieldName = this.model.tipsAppDEFieldId;\n return fieldName ? this.data[fieldName] : void 0;\n }\n};\n\n// src/service/vo/map-data/map-data.ts\nfunction updateKeyDefine(target, keys) {\n keys.forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(target, key)) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n });\n}\nvar AreaItemStyles = [\"REGION\", \"REGION2\", \"REGION3\", \"REGION4\"];\nvar MapData = class {\n constructor(deData, mapItem) {\n this._longitude = void 0;\n this._latitude = void 0;\n this._areaCode = void 0;\n this._tooltip = void 0;\n this._value = void 0;\n this._text = void 0;\n this._symbol = void 0;\n const {\n id,\n itemStyle,\n longitudeAppDEFieldId,\n latitudeAppDEFieldId,\n textAppDEFieldId,\n dataAppDEFieldId,\n tipsAppDEFieldId,\n sysImage\n } = mapItem;\n const keyMap = /* @__PURE__ */ new Map();\n this._id = id + deData.srfkey;\n this._itemStyle = itemStyle;\n this._mapItemId = id;\n if (AreaItemStyles.includes(this._itemStyle)) {\n if (longitudeAppDEFieldId) {\n keyMap.set(\"_areaCode\", longitudeAppDEFieldId);\n }\n } else {\n if (longitudeAppDEFieldId) {\n keyMap.set(\"_longitude\", longitudeAppDEFieldId);\n }\n if (latitudeAppDEFieldId) {\n keyMap.set(\"_latitude\", latitudeAppDEFieldId);\n }\n }\n if (tipsAppDEFieldId) {\n keyMap.set(\"_tooltip\", tipsAppDEFieldId);\n }\n if (textAppDEFieldId) {\n keyMap.set(\"_text\", textAppDEFieldId);\n }\n if (dataAppDEFieldId) {\n keyMap.set(\"_value\", dataAppDEFieldId);\n }\n if (sysImage) {\n this._symbol = sysImage.rawContent || sysImage.imagePath;\n }\n return new Proxy(this, {\n set(target, p, value) {\n if (Object.prototype.hasOwnProperty.call(deData, p)) {\n deData[p] = value;\n } else if (keyMap.has(p)) {\n deData[keyMap.get(p)] = value;\n } else {\n target[p] = value;\n }\n return true;\n },\n get(target, p, _receiver) {\n if (target[p] !== void 0) {\n return target[p];\n }\n if (keyMap.has(p)) {\n return deData[keyMap.get(p)];\n }\n if (deData[p] !== void 0) {\n return deData[p];\n }\n },\n ownKeys(target) {\n const allKeys = [\n .../* @__PURE__ */ new Set([...Object.keys(target), ...Object.keys(deData)])\n ];\n updateKeyDefine(target, allKeys);\n return allKeys;\n }\n });\n }\n};\n\n// src/service/vo/panel-data/panel-data.ts\nimport { QXEvent as QXEvent2 } from \"qx-util\";\nfunction updateKeyDefine2(target, keys) {\n keys.forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(target, key)) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n });\n}\nvar PanelData = class {\n constructor(fields, origin) {\n const _evt = new QXEvent2();\n const keyMap = {};\n const reverseKeyMap = {};\n fields.forEach((field) => {\n var _a;\n keyMap[field.id] = (_a = field.viewFieldName) == null ? void 0 : _a.toLowerCase();\n if (field.viewFieldName) {\n reverseKeyMap[field.viewFieldName.toLowerCase()] = field.id;\n }\n });\n return new Proxy(this, {\n set(target, p, value) {\n if (Object.prototype.hasOwnProperty.call(keyMap, p)) {\n if (keyMap[p]) {\n origin[keyMap[p]] = value;\n } else {\n target[p] = value;\n }\n } else {\n origin[p] = value;\n }\n _evt.emit(\"change\", p);\n if (keyMap[p] && keyMap[p] !== p) {\n _evt.emit(\"change\", keyMap[p]);\n }\n if (reverseKeyMap[p] && reverseKeyMap[p] !== p) {\n _evt.emit(\"change\", reverseKeyMap[p]);\n }\n return true;\n },\n get(target, p, _receiver) {\n if (p === \"_evt\") {\n return _evt;\n }\n if (keyMap[p]) {\n return origin[keyMap[p]];\n }\n if (Object.prototype.hasOwnProperty.call(origin, p)) {\n return origin[p];\n }\n return target[p];\n },\n ownKeys(target) {\n const allKeys = Object.keys(origin);\n updateKeyDefine2(target, allKeys);\n return allKeys;\n }\n });\n }\n destroy() {\n this._evt.reset();\n }\n};\n\n// src/service/vo/chart-data/chart-data.ts\nimport { createUUID as createUUID4 } from \"qx-util\";\nfunction updateKeyDefine3(target, keys) {\n keys.forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(target, key)) {\n Object.defineProperty(target, key, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n });\n}\nvar ChartData = class {\n constructor(deData, seriesModel, catalog, groupName) {\n this._seriesModelId = seriesModel == null ? void 0 : seriesModel.id;\n this._catalog = catalog;\n this._groupName = groupName;\n this._uuid = createUUID4();\n return new Proxy(this, {\n set(target, p, value) {\n if (Object.prototype.hasOwnProperty.call(deData, p)) {\n deData[p] = value;\n } else {\n target[p] = value;\n }\n return true;\n },\n get(target, p, _receiver) {\n if (target[p] !== void 0) {\n return target[p];\n }\n if (deData[p] !== void 0) {\n return deData[p];\n }\n },\n ownKeys(target) {\n const allKeys = [\n .../* @__PURE__ */ new Set([...Object.keys(target), ...Object.keys(deData)])\n ];\n updateKeyDefine3(target, allKeys);\n return allKeys;\n }\n });\n }\n};\n\n// src/service/mqtt/mqtt.service.ts\nimport { QXEvent as QXEvent3, createUUID as createUUID5, isNilOrEmpty as isNilOrEmpty6 } from \"qx-util\";\nvar MqttService = class {\n /**\n * Creates an instance of MqttService.\n *\n * @author chitanda\n * @date 2023-10-23 15:10:06\n * @param {string} mqttTopic\n * @param {string} token\n * @param {string} appId\n */\n constructor(mqttTopic, token, appId) {\n this.mqttTopic = mqttTopic;\n this.token = token;\n this.appId = appId;\n /**\n * 接受消息通知\n *\n * @author chitanda\n * @date 2023-10-23 15:10:06\n */\n this.evt = new QXEvent3();\n /**\n * 连接选项\n *\n * @author chitanda\n * @date 2023-10-20 14:10:25\n * @protected\n * @type {IClientOptions}\n */\n this.options = {\n // 超时时间\n connectTimeout: 6e3,\n // 认证信息\n clientId: createUUID5(),\n username: \"\",\n password: \"\",\n // 心跳时间\n keepalive: 60,\n clean: true\n };\n if (isNilOrEmpty6(mqttTopic) || isNilOrEmpty6(token)) {\n throw new Error(\"mqttTopic or token is empty\");\n }\n this.options.username = mqttTopic;\n this.options.password = token;\n }\n /**\n * mqtt 连接\n *\n * @author chitanda\n * @date 2023-10-23 15:10:58\n * @return {*} {Promise<void>}\n */\n async connect() {\n const module = await import(\"mqtt/dist/mqtt.min\");\n const mqtt = module.default ? module.default : module;\n const { location } = window;\n this.client = mqtt.connect(\n \"ws://\".concat(location.host).concat(ibiz.env.baseUrl, \"/\").concat(this.appId).concat(ibiz.env.mqttUrl),\n this.options\n );\n this.client.on(\"connect\", () => {\n this.client.subscribe(this.mqttTopic);\n ibiz.log.debug(\"mqtt connect\");\n });\n this.client.on(\"error\", (error) => {\n ibiz.log.error(\"mqtt error\", error);\n });\n this.client.on(\"message\", (topic, payload) => {\n this.evt.emit(\"message\", JSON.parse(payload.toString()));\n ibiz.log.debug(\"mqtt message\", topic, payload.toString());\n });\n this.client.on(\"reconnect\", () => {\n ibiz.log.debug(\"mqtt reconnect\");\n });\n this.client.on(\"close\", () => {\n console.debug(\"mqtt close\");\n });\n }\n /**\n * 结束 mqtt 连接\n *\n * @author chitanda\n * @date 2023-10-23 15:10:37\n */\n close() {\n var _a;\n (_a = this.client) == null ? void 0 : _a.end();\n }\n};\n\n// src/service/de-service-util.ts\nimport { RuntimeError as RuntimeError20 } from \"@ibiz-template/core\";\nvar DEServiceUtil = class {\n /**\n * Creates an instance of DEServiceUtil.\n *\n * @author chitanda\n * @date 2023-04-18 14:04:01\n * @param {IApplication} appModel\n */\n constructor(appModel) {\n this.appModel = appModel;\n /**\n * 实体服务缓存\n *\n * @author chitanda\n * @date 2022-08-17 23:08:36\n * @protected\n * @type {Map<string, IAppDEService>}\n */\n this.cache = /* @__PURE__ */ new Map();\n /**\n * 实体服务构造方法缓存\n * @author lxm\n * @date 2023-05-15 08:37:13\n * @protected\n */\n this.constructorCache = /* @__PURE__ */ new Map();\n }\n /**\n * 注册服务工厂方法\n *\n * @author chitanda\n * @date 2023-06-14 10:06:31\n * @param {string} id\n * @param {(entityModel: IAppDataEntity) => Promise<IAppDEService>} constructor\n */\n register(id, constructor) {\n this.constructorCache.set(id, constructor);\n }\n /**\n * 根据实体标识获取实体服务\n *\n * @author chitanda\n * @date 2022-12-23 10:12:24\n * @param {string} id 实体标识\n * @param {IParams} [context] 上下文,用于计算模型所属沙箱环境\n * @return {*} {Promise<IAppDEService>}\n */\n async getService(id) {\n if (!this.cache.has(id)) {\n const entityModel = await ibiz.hub.getAppDataEntity(\n id,\n this.appModel.appId\n );\n if (!entityModel) {\n throw new RuntimeError20(\"\\u672A\\u627E\\u5230\\u5E94\\u7528\\u5B9E\\u4F53[\".concat(id, \"]\"));\n }\n const constructor = this.constructorCache.get(id);\n let service;\n if (constructor) {\n service = await constructor(entityModel);\n } else {\n service = new DEService(entityModel);\n }\n this.cache.set(id, service);\n }\n return this.cache.get(id);\n }\n /**\n * 清理所有服务, 当前临时域下的所有临时数据缓存\n *\n * @description 根据 srfsessionid 作为临时数据域\n * @author chitanda\n * @date 2022-08-18 14:08:48\n * @param {IParams} context\n */\n clearTempCache(context) {\n this.cache.forEach((service) => {\n service.local.clear(context);\n });\n }\n /**\n * 执行服务方法\n * @author lxm\n * @date 2023-04-26 02:02:43\n * @param {string} appDataEntityId 实体名称\n * @param {string} methodName 方法名\n * @param {IParams} context 上下文\n * @param {(IData | undefined)} [params] 数据\n * @param {(IParams | undefined)} [params2] 视图参数\n * @return {*} {Promise<IHttpResponse<IData>>}\n */\n async exec(appDataEntityId, methodName, context, params, params2) {\n const service = await this.getService(appDataEntityId);\n return service.exec(methodName, context, params, params2);\n }\n};\n\n// src/command/app/open-app-view/open-app-view.ts\nvar _OpenAppViewCommand = class _OpenAppViewCommand {\n constructor() {\n ibiz.commands.register(_OpenAppViewCommand.TAG, this.exec.bind(this));\n }\n /**\n * xhr模式打开\n *\n * @author chitanda\n * @date 2022-08-25 23:08:08\n * @param {string} appViewId\n * @param {IContext} [context]\n * @param {IParams} [params={}]\n * @param {IData} [_opts={}]\n * @return {*} {(Promise<IModalData | void>)}\n */\n async exec(appViewId, _context, params = {}, opts = {}) {\n const context = clone13(_context);\n const appView = await ibiz.hub.config.view.get(appViewId);\n if (!appView) {\n throw new RuntimeError21(\"\\u5E94\\u7528\\u89C6\\u56FE[\".concat(appViewId, \"]\\u4E0D\\u5B58\\u5728\"));\n }\n if ((context.srfkey || params.srfuf === 0 /* CREATE */) && appView.appDataEntityId) {\n const deName = calcDeCodeNameById(appView.appDataEntityId);\n if (context.srfkey) {\n context[deName] = context.srfkey;\n context.srfkey = void 0;\n }\n if (params.srfuf === 0 /* CREATE */) {\n context[deName] = void 0;\n delete params.srfuf;\n }\n }\n if (appView.redirectView) {\n const fullViewModel = await ibiz.hub.getAppView(appViewId);\n return openRedirectView(\n fullViewModel,\n context,\n params,\n opts\n );\n }\n const { openMode = \"INDEXVIEWTAB\" } = appView;\n switch (opts.openMode || openMode) {\n case \"INDEXVIEWTAB\":\n if (opts.noWaitRoute) {\n this.openIndexViewTab(appView, context, params);\n return { ok: true };\n }\n return this.openIndexViewTab(appView, context, params);\n case \"POPUP\":\n throw new ModelError14(appView, \"\\u672A\\u652F\\u6301\\u7684\\u89C6\\u56FE\\u6253\\u5F00\\u6A21\\u5F0F: POPUP\");\n case \"POPUPMODAL\":\n return this.openModal(appView, context, params);\n case \"POPUPAPP\":\n throw new ModelError14(appView, \"\\u672A\\u652F\\u6301\\u7684\\u89C6\\u56FE\\u6253\\u5F00\\u6A21\\u5F0F: POPUPAPP\");\n case \"POPOVER\":\n return this.openPopover(appView, opts.event, context, params);\n case \"DRAWER_LEFT\":\n case \"DRAWER_RIGHT\":\n case \"DRAWER_TOP\":\n case \"DRAWER_BOTTOM\":\n return this.openDrawer(appView, context, params);\n case \"USER\":\n return this.openUserCustom(appView, context, params);\n default:\n return this.openIndexViewTab(appView, context, params);\n }\n }\n /**\n * 首页导航模式打开\n *\n * @author chitanda\n * @date 2022-07-25 20:07:43\n * @protected\n * @param {IViewConfig} appView\n * @param {IContext} [context]\n * @param {IParams} [params={}]\n */\n openIndexViewTab(appView, context, params = {}) {\n return ibiz.openView.root(appView.id, context, params);\n }\n /**\n * 模态窗口打开\n *\n * @author chitanda\n * @date 2022-07-25 20:07:55\n * @protected\n * @param {IViewConfig} appView\n * @param {IContext} [context]\n * @param {IParams} [params={}]\n * @return {*} {Promise<IModalData>}\n */\n async openModal(appView, context, params = {}) {\n return ibiz.openView.modal(appView.id, context, params);\n }\n /**\n * 气泡模式打开\n *\n * @author chitanda\n * @date 2022-07-25 20:07:17\n * @protected\n * @param {IViewConfig} appView\n * @param {IContext} [context]\n * @param {IParams} [params={}]\n * @return {*} {Promise<IModalData>}\n */\n async openPopover(appView, event, context, params = {}) {\n if (!event) {\n throw new RuntimeError21(\"\\u6C14\\u6CE1\\u6253\\u5F00\\u7F3A\\u5C11event\");\n }\n return ibiz.openView.popover(appView.id, event, context, params);\n }\n /**\n * 抽屉模式打开\n *\n * @author chitanda\n * @date 2022-07-25 20:07:08\n * @protected\n * @param {IViewConfig} appView\n * @param {IContext} [context]\n * @param {IParams} [params={}]\n * @return {*} {Promise<void>}\n */\n async openDrawer(appView, context, params = {}) {\n return ibiz.openView.drawer(appView.id, context, params);\n }\n /**\n * 用户自定义\n *\n * @author chitanda\n * @date 2022-07-25 20:07:41\n * @protected\n * @param {IViewConfig} appView\n * @param {IContext} [context]\n * @param {IParams} [params={}]\n * @return {*} {Promise<void>}\n */\n async openUserCustom(appView, context, params = {}) {\n return ibiz.openView.custom(appView.id, context, params);\n }\n};\n_OpenAppViewCommand.TAG = \"ibiz.app-view.open\";\nvar OpenAppViewCommand = _OpenAppViewCommand;\n\n// src/command/app/app-func/app-func.ts\nvar _AppFuncCommand = class _AppFuncCommand {\n constructor() {\n ibiz.commands.register(_AppFuncCommand.TAG, this.exec.bind(this));\n }\n /**\n * 执行应用功能\n *\n * @author chitanda\n * @date 2022-07-25 17:07:35\n * @param {IAppFunc} appFunc 应用功能模型\n * @param {IContext} [context] 执行上下文\n * @param {IParams} [params={}] 参数\n * @param {IData} [opts={}] 额外参数,与具体执行对象规划好的额外参数。如需要给飘窗使用的 event 事件对象.\n * @return {*} {Promise<void>}\n */\n async exec(appFuncId, context, params = {}, opts = {}) {\n const appFunc = ibiz.hub.getApp(context.srfappid).getAppFunc(appFuncId);\n if (!appFunc) {\n throw new RuntimeError22(\"\\u627E\\u4E0D\\u5230\\u53EB\".concat(appFuncId, \"\\u7684\\u5E94\\u7528\\u529F\\u80FD\"));\n }\n const { navigateContexts, navigateParams, appFuncType } = appFunc;\n const _context = context.clone();\n Object.assign(_context, convertNavData(navigateContexts, params, context));\n const _params = convertNavData(navigateParams, params, context);\n switch (appFuncType) {\n case \"APPVIEW\":\n return this.openAppView(appFunc, _context, _params, opts);\n case \"OPENHTMLPAGE\":\n return this.openHtmlPage(appFunc);\n case \"PDTAPPFUNC\":\n return this.openPdAppFunc(appFunc, _context, _params);\n case \"JAVASCRIPT\":\n return this.executeJavaScript(appFunc, _context, _params);\n case \"CUSTOM\":\n return this.custom(appFunc, _context, _params);\n default:\n throw new ModelError15(appFunc, \"\\u672A\\u652F\\u6301\\u7684\\u5E94\\u7528\\u529F\\u80FD\\u7C7B\\u578B: \".concat(appFuncType));\n }\n }\n /**\n * 打开应用视图\n *\n * @author chitanda\n * @date 2022-07-25 18:07:49\n * @protected\n * @param {IAppFunc} appFunc\n * @param {IContext} [context]\n * @param {IParams} [params]\n * @return {*} {Promise<void>}\n */\n async openAppView(appFunc, context, params, opts) {\n if (!appFunc.appViewId) {\n throw new RuntimeError22(\"\\u5E94\\u7528\\u89C6\\u56FE[\".concat(appFunc.appViewId, \"]\\u4E0D\\u5B58\\u5728\"));\n }\n return ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n appFunc.appViewId,\n context,\n params,\n opts\n );\n }\n /**\n * 打开HTML页面\n *\n * @author chitanda\n * @date 2022-07-25 18:07:56\n * @protected\n * @param {IAppFunc} appFunc\n */\n openHtmlPage(appFunc) {\n const url = appFunc.htmlPageUrl;\n window.open(url, \"_blank\");\n }\n /**\n * 应用预置功能\n *\n * @author chitanda\n * @date 2022-07-25 18:07:22\n * @protected\n * @param {IAppFunc} appFunc\n * @param {IContext} [context]\n * @param {IParams} [params]\n */\n openPdAppFunc(appFunc, context, params) {\n ibiz.log.warn(\"openPdAppFunc\", appFunc, context, params);\n throw new RuntimeError22(\"\\u672A\\u5B9E\\u73B0\");\n }\n /**\n * 执行 JavaScript 脚本\n *\n * @author chitanda\n * @date 2022-07-25 18:07:09\n * @protected\n * @param {IAppFunc} appFunc\n * @param {IContext} [context]\n * @param {IParams} [params]\n */\n executeJavaScript(appFunc, context, params) {\n ibiz.log.warn(\"executeJavaScript\", appFunc, context, params);\n throw new RuntimeError22(\"\\u672A\\u5B9E\\u73B0\");\n }\n /**\n * 自定义应用功能\n *\n * @author chitanda\n * @date 2022-07-25 18:07:51\n * @protected\n * @param {IAppFunc} appFunc\n * @param {IContext} [context]\n * @param {IParams} [params]\n */\n custom(appFunc, context, params) {\n ibiz.log.warn(\"custom\", appFunc, context, params);\n throw new RuntimeError22(\"\\u672A\\u5B9E\\u73B0\");\n }\n};\n/**\n * 指令标识\n *\n * @author chitanda\n * @date 2022-07-25 17:07:20\n * @see 具体实现 {@link AppFuncCommand.exec}\n * @static\n */\n_AppFuncCommand.TAG = \"ibiz.app-func.exec\";\nvar AppFuncCommand = _AppFuncCommand;\n\n// src/command/index.ts\nfunction installCommand() {\n new AppFuncCommand();\n new OpenAppViewCommand();\n}\n\n// src/app-hub.ts\nimport { RuntimeError as RuntimeError57 } from \"@ibiz-template/core\";\n\n// src/application.ts\nimport { Net, getToken } from \"@ibiz-template/core\";\nvar Application = class {\n /**\n * Creates an instance of Application.\n *\n * @author chitanda\n * @date 2022-12-22 15:12:26\n * @param {IApplication} model\n */\n constructor(model) {\n this.model = model;\n /**\n * 应用实体名称到应用实体代码名称的映射\n *\n * @author chitanda\n * @date 2023-06-14 17:06:02\n * @type {Map<string, string>}\n */\n this.deName2DeCodeName = /* @__PURE__ */ new Map();\n this.net = new Net({\n baseURL: \"\".concat(ibiz.env.baseUrl, \"/\").concat(model.appId)\n });\n this.configCache = new ConfigService(\n model.appId,\n \"PSSysApp\",\n model.codeName\n );\n this.deService = new DEServiceUtil(model);\n this.codeList = new CodeListService(model);\n this.authority = new AuthorityService(model);\n }\n /**\n * 当前应用标识\n *\n * @author chitanda\n * @date 2023-04-19 22:04:55\n * @readonly\n * @type {string}\n */\n get appId() {\n return this.model.appId;\n }\n /**\n * 初始化应用\n *\n * @author chitanda\n * @date 2023-04-19 11:04:02\n * @return {*} {Promise<void>}\n */\n async init() {\n await this.authority.init();\n await this.loadAppModelStyle();\n if (ibiz.env.enableMqtt && ibiz.appData) {\n this.mqtt = new MqttService(\n ibiz.appData.mqtttopic,\n getToken(),\n this.model.appId\n );\n this.mqtt.evt.on(\"message\", (message) => {\n ibiz.mc.command.asyncAction.next(message);\n });\n await this.mqtt.connect();\n }\n }\n /**\n * 加载应用模型全局样式\n *\n * @author chitanda\n * @date 2023-07-24 20:07:41\n * @protected\n * @return {*} {Promise<void>}\n */\n async loadAppModelStyle() {\n const style = await ibiz.hub.getAppStyle(this.appId);\n if (style) {\n const dom = document.createElement(\"style\");\n dom.setAttribute(\"type\", \"text/css\");\n dom.id = this.appId;\n dom.innerHTML = style;\n document.head.appendChild(dom);\n }\n }\n /**\n * 根据 id 查找应用功能\n *\n * @author chitanda\n * @date 2023-04-20 17:04:24\n * @param {string} id\n * @return {*} {(IAppFunc | null)}\n */\n getAppFunc(id) {\n const items = this.model.appFuncs || [];\n const item = items.find((func) => func.id === id);\n return item || null;\n }\n /**\n * 获取界面行为模型\n * @author lxm\n * @date 2023-04-28 05:44:14\n * @param {string} actionId\n * @param {string} [_appDataEntityId]\n * @return {*}\n */\n async getUIAction(actionId) {\n const [, appDeId] = actionId.split(\"@\");\n if (appDeId) {\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n appDeId,\n this.model.appId\n );\n const find = appDataEntity.appDEUIActions.find((action) => {\n return action.id === actionId;\n });\n if (find) {\n return find;\n }\n }\n return this.model.appDEUIActions.find((action) => {\n return action.id === actionId;\n });\n }\n /**\n * 获取操作标识模型\n * @author lxm\n * @date 2023-05-10 11:24:17\n * @param {string} id\n * @param {string} [appDataEntityId]\n * @return {*} {(Promise<IDEOPPriv | undefined>)}\n */\n async getOPPriv(id, appDataEntityId) {\n var _a, _b;\n let result = (_a = this.model.deopprivs) == null ? void 0 : _a.find((item) => item.name === id);\n if (!result && appDataEntityId) {\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n appDataEntityId,\n this.model.appId\n );\n result = (_b = appDataEntity.deopprivs) == null ? void 0 : _b.find((item) => item.name === id);\n }\n return result;\n }\n /**\n * 查找实体的界面逻辑模型\n * @author lxm\n * @date 2023-06-14 07:20:30\n * @param {string} deUILogicId\n * @param {string} appDataEntityId\n * @return {*} {(Promise<IDEUILogic | undefined>)}\n */\n async getDEUILogic(deUILogicId, appDataEntityId) {\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n appDataEntityId,\n this.model.appId\n );\n return appDataEntity.appDEUILogics.find((logic) => {\n return logic.id === deUILogicId;\n });\n }\n};\n\n// src/hub/convert/app-menu-convert/app-menu-convert.ts\nvar AppMenuConvert = class {\n /**\n * 转化\n *\n * @author chitanda\n * @date 2023-04-19 14:04:46\n * @param {IAppMenu} appMenu\n * @return {*} {IAppMenu}\n */\n parse(appMenu) {\n return appMenu;\n }\n};\n\n// src/hub/convert/convert.ts\nvar Convert = class {\n constructor() {\n /**\n * 应用菜单转换器\n *\n * @author chitanda\n * @date 2023-04-19 14:04:54\n */\n this.appMenu = new AppMenuConvert();\n }\n};\n\n// src/hub/config/app-view-config-service.ts\nimport { RuntimeError as RuntimeError23 } from \"@ibiz-template/core\";\nvar AppViewConfigService = class {\n constructor() {\n /**\n * 视图配置信息集合\n * @author lxm\n * @date 2023-07-03 07:08:33\n */\n this.viewConfigs = /* @__PURE__ */ new Map();\n }\n has(key) {\n return this.viewConfigs.has(key);\n }\n set(id, viewConfig) {\n this.viewConfigs.set(id, viewConfig);\n }\n async get(key) {\n if (!this.viewConfigs.has(key)) {\n const model = await ibiz.hub.getAppView(key);\n if (!model) {\n throw new RuntimeError23(\"\\u89C6\\u56FE[\".concat(key, \"]\\u4E0D\\u5B58\\u5728\"));\n }\n this.set(model.id, {\n id: model.id,\n codeName: model.codeName,\n openMode: model.openMode,\n viewType: model.viewType,\n width: model.width,\n height: model.height,\n appDataEntityId: model.appDataEntityId,\n redirectView: model.redirectView\n });\n }\n return this.viewConfigs.get(key);\n }\n getSync(key) {\n if (this.viewConfigs.has(key)) {\n return this.viewConfigs.get(key);\n }\n return null;\n }\n};\n\n// src/hub/config/app-config-service.ts\nvar AppConfigService = class {\n constructor() {\n this.view = new AppViewConfigService();\n }\n};\n\n// src/controller/constant/control/form/form-notify.state.ts\nvar FormNotifyState = /* @__PURE__ */ ((FormNotifyState2) => {\n FormNotifyState2[\"LOAD\"] = \"LOAD\";\n FormNotifyState2[\"DRAFT\"] = \"DRAFT\";\n FormNotifyState2[\"SAVE\"] = \"SAVE\";\n return FormNotifyState2;\n})(FormNotifyState || {});\n\n// src/controller/constant/control/grid/grid-notify.state.ts\nvar GridNotifyState = /* @__PURE__ */ ((GridNotifyState2) => {\n GridNotifyState2[\"LOAD\"] = \"LOAD\";\n GridNotifyState2[\"DRAFT\"] = \"DRAFT\";\n GridNotifyState2[\"SAVE\"] = \"SAVE\";\n return GridNotifyState2;\n})(GridNotifyState || {});\n\n// src/controller/constant/control/panel/panel-notify.state.ts\nvar PanelNotifyState = /* @__PURE__ */ ((PanelNotifyState2) => {\n PanelNotifyState2[\"LOAD\"] = \"LOAD\";\n PanelNotifyState2[\"DRAFT\"] = \"DRAFT\";\n PanelNotifyState2[\"SAVE\"] = \"SAVE\";\n return PanelNotifyState2;\n})(PanelNotifyState || {});\n\n// src/controller/common/view/view.controller.ts\nimport { createUUID as createUUID7, notNilEmpty as notNilEmpty6 } from \"qx-util\";\nimport { IBizContext as IBizContext2, RuntimeError as RuntimeError30 } from \"@ibiz-template/core\";\nimport { isEmpty as isEmpty8, isNil as isNil18, isNotNil as isNotNil2 } from \"ramda\";\n\n// src/controller/utils/loading/loading.state.ts\nimport { NOOP } from \"@ibiz-template/core\";\n\n// src/controller/utils/counter/counter.ts\nimport { RuntimeError as RuntimeError24 } from \"@ibiz-template/core\";\nvar Counter = class {\n /**\n * Creates an instance of Counter.\n * @author lxm\n * @date 2022-09-19 11:09:57\n * @param {() => void} callback 回调函数,在计数归零的时候被调用\n */\n constructor(callback) {\n this.callback = callback;\n /**\n * 计数\n *\n * @author lxm\n * @date 2022-09-19 11:09:30\n * @type {number}\n */\n this.count = 0;\n /**\n * 计数器状态\n * 调用过一次回调后就会变为使用过的状态,任何操作都不会执行\n *\n * @author lxm\n * @date 2022-09-21 19:09:21\n * @private\n * @type {('Unused' | 'Used')}\n */\n this.state = \"Unused\";\n /**\n * 是否可以重复使用\n *\n * @author lxm\n * @date 2022-09-21 19:09:22\n * @protected\n * @type {boolean}\n */\n this.reusable = true;\n }\n /**\n * 增加计数,返回增加后的计数\n *\n * @author lxm\n * @date 2022-08-18 21:08:22\n */\n increment() {\n if (this.state === \"Used\") {\n return this.count;\n }\n this.count += 1;\n return this.count;\n }\n /**\n * 减少计数,当计数为0时触发回调\n *\n * @author lxm\n * @date 2022-08-18 21:08:22\n */\n decrement(callback2) {\n if (this.state === \"Used\") {\n return;\n }\n if (this.count === 0) {\n throw new RuntimeError24(\"\\u9519\\u8BEF\\u7684\\u8C03\\u7528\\uFF01decrement\\u4E0D\\u80FD\\u5BF9count\\u4E3A0\\u8C03\\u7528\");\n }\n this.count -= 1;\n if (this.count === 0) {\n if (callback2) {\n callback2();\n } else if (this.callback) {\n this.callback();\n }\n if (!this.reusable) {\n this.state = \"Used\";\n }\n }\n }\n /**\n * 销毁方法,解除关联\n *\n * @author lxm\n * @date 2022-09-19 11:09:27\n */\n destroy() {\n this.callback = void 0;\n }\n};\n\n// src/controller/utils/loading/loading.state.ts\nvar LoadingState = class {\n constructor() {\n /**\n * 当前的loading状态,多次loading叠加时,只有所有loading都结束才会变回false。\n *\n * @author lxm\n * @date 2022-09-19 11:09:43\n * @readonly\n * @type {boolean}\n */\n this.isLoading = false;\n /**\n * loading计数器\n *\n * @author lxm\n * @date 2022-09-19 11:09:08\n * @private\n */\n this.counter = new Counter(NOOP);\n }\n /**\n * 开始loading\n *\n * @author lxm\n * @date 2022-09-19 11:09:55\n */\n begin() {\n this.isLoading = true;\n this.counter.increment();\n }\n /**\n * 结束loading\n *\n * @author lxm\n * @date 2022-09-19 11:09:34\n */\n end() {\n this.counter.decrement(() => {\n this.isLoading = false;\n });\n }\n};\n\n// src/controller/ctx/ctx.ts\nimport { QXEvent as QXEvent4 } from \"qx-util\";\n\n// src/controller/ctx/ctx.state.ts\nvar CTXState = class {\n};\n\n// src/controller/ctx/ctx.ts\nvar CTX = class {\n /**\n * Creates an instance of CTX.\n * @author lxm\n * @date 2023-07-06 09:43:47\n * @param {CTX} [parent] 父级上下文环境对象\n */\n constructor(parent) {\n this.parent = parent;\n /**\n * 是否已经销毁\n *\n * @author chitanda\n * @date 2023-09-11 11:09:57\n * @protected\n */\n this.isDestroyed = false;\n /**\n * CTX事件\n * @author lxm\n * @date 2023-04-26 07:54:46\n * @protected\n */\n this.evt = new QXEvent4(3e3);\n /**\n * 当前视图控制器集合(包含自身视图控制器,部件控制器,和下一层级的视图的控制器)\n * @author lxm\n * @date 2023-03-28 02:25:59\n * @protected\n */\n this.controllersMap = /* @__PURE__ */ new Map();\n this.state = new CTXState();\n }\n /**\n * 初始化上下文环境对象\n * @author lxm\n * @date 2023-03-27 01:54:18\n * @param {V} controller 当前视图的控制器\n * @return {*} {Promise<void>}\n */\n async init(controller) {\n this.view = controller;\n this.registerController(controller.model.name, controller);\n }\n /**\n * 销毁ctx\n * @author lxm\n * @date 2023-03-28 02:29:45\n */\n destroy() {\n this.controllersMap.clear();\n this.view = null;\n this.state = null;\n this.isDestroyed = true;\n }\n /**\n * 修改上下文环境状态\n * @author lxm\n * @date 2023-03-27 01:50:38\n * @param {Required<CTXState>} nextState\n * @return {*} {Promise<void>}\n */\n async setState(nextState) {\n Object.assign(this.state, nextState);\n }\n /**\n * 开启视图加载\n * @author lxm\n * @date 2023-03-27 01:59:22\n */\n startLoading() {\n this.view.startLoading();\n }\n /**\n * 关闭视图加载\n * @author lxm\n * @date 2023-03-27 01:59:35\n */\n endLoading() {\n if (this.isDestroyed) {\n return;\n }\n this.view.endLoading();\n }\n /**\n * 注册控制器到上下文里\n * @author lxm\n * @date 2023-03-28 02:26:46\n * @param {string} name\n * @param {IController} c\n */\n registerController(name, c) {\n this.controllersMap.set(name, c);\n this.evt.emit(\"onRegister\", name, c);\n }\n /**\n * 获取指定名称的控制器\n * @author lxm\n * @date 2023-04-25 10:14:42\n * @param {string} name\n * @param {boolean} [traceRoot=false] 是否跨越视图作用域,一路向根上找。\n * @return {*} {(IController | undefined)}\n */\n getController(name, traceRoot = false) {\n if (this.controllersMap.has(name)) {\n return this.controllersMap.get(name);\n }\n if (this.parent && traceRoot) {\n return this.parent.getController(name);\n }\n }\n /**\n * 获取顶级视图,\n * - 模态等打开方式是根ctx的视图\n * - 路由模式是首页下一级的视图,即第二级路由的视图\n * @author lxm\n * @date 2023-07-14 11:59:30\n * @return {*} {IViewController}\n */\n getTopView() {\n if (!this.parent) {\n return this.view;\n }\n if (this.view.modal.routeDepth === 2) {\n return this.view;\n }\n return this.parent.getTopView();\n }\n};\n\n// src/controller/utils/counter/mounted-counter.ts\nvar ActivityCounter = class extends Counter {\n constructor() {\n super(...arguments);\n this.reusable = false;\n /**\n * 登记情况,记录了登记的名称和是否已经出席\n *\n * @author lxm\n * @date 2022-09-21 18:09:27\n * @type {string[]}\n */\n this.registration = /* @__PURE__ */ new Map();\n }\n /**\n * 登记要等待的名称\n *\n * @author lxm\n * @date 2022-09-21 18:09:01\n * @param {string} name\n */\n enroll(name) {\n if (this.state === \"Unused\" && !this.registration.has(name)) {\n this.registration.set(name, false);\n this.increment();\n }\n }\n /**\n * 出席,只有登记了的名称才能出席,当所有登记的名称出席后计数器结束,触发回调\n *\n * @author lxm\n * @date 2022-09-21 18:09:09\n * @param {string} name\n */\n attend(name) {\n if (this.registration.has(name) && this.registration.get(name) === false) {\n this.registration.set(name, true);\n this.decrement();\n }\n }\n};\n\n// src/controller/utils/button-state/ui-action-button.state.ts\nvar UIActionButtonState = class {\n constructor(name, appId, uiActionId) {\n this.disabled = false;\n this.visible = true;\n this.loading = false;\n /**\n * 是否有权限\n */\n this.permitted = true;\n /**\n * 没权限时是否隐藏\n */\n this.noPermissionHidden = true;\n /**\n * 有权限时且没数据时,是否禁用\n *\n * @author chitanda\n * @date 2023-11-30 11:11:14\n * @protected\n * @type {boolean}\n */\n this.noDataDisabled = false;\n /**\n * 有权限时且没主键时,是否禁用\n *\n * @author chitanda\n * @date 2023-11-30 11:11:03\n * @protected\n * @type {boolean}\n */\n this.noKeyDisabled = false;\n /**\n * 是否初始化\n */\n this.isInit = false;\n this.name = name;\n this.uiActionId = uiActionId;\n this.appId = appId;\n }\n /**\n * 初始化,没有界面行为id就是普通的buttonState\n * @author lxm\n * @date 2023-05-10 02:16:22\n * @protected\n * @return {*}\n */\n async init() {\n if (!this.uiActionId) {\n this.isInit = true;\n return;\n }\n const uiAction = await getUIActionById(this.uiActionId);\n [, this.appDeName] = this.uiActionId.split(\"@\");\n if (!uiAction) {\n return;\n }\n const {\n dataAccessAction,\n noPrivDisplayMode,\n actionTarget,\n uiactionMode,\n uiactionTag\n } = uiAction;\n this.dataAccessAction = dataAccessAction;\n if (noPrivDisplayMode === 1) {\n this.noPermissionHidden = false;\n } else if (noPrivDisplayMode === 6) {\n this.visible = false;\n }\n if (actionTarget && actionTarget !== \"NONE\" || uiactionMode === \"SYS\" && [\n \"Save\",\n \"SaveAndExit\",\n \"SaveAndNew\",\n \"Edit\",\n \"Remove\",\n \"RemoveAndExit\"\n ].includes(uiactionTag)) {\n this.noDataDisabled = true;\n if (actionTarget === \"SINGLEKEY\" || actionTarget === \"MULTIKEY\") {\n this.noKeyDisabled = true;\n }\n }\n this.isInit = true;\n }\n /**\n * 计算按钮权限\n * @author lxm\n * @date 2023-05-11 07:46:09\n * @protected\n * @param {IData} [data] 数据\n * @param {string} [appDeId] 数据对应的实体id\n * @return {*}\n */\n async calcPermission(data, appDeId) {\n if (!this.dataAccessAction) {\n return;\n }\n const app = await ibiz.hub.getApp(this.appId);\n if (this.appDeName && appDeId && !appDeId.includes(this.appDeName)) {\n ibiz.log.warn(\n \"\".concat(this.uiActionId, \"\\u754C\\u9762\\u884C\\u4E3A\\u7684\\u5B9E\\u4F53\").concat(this.appDeName, \"\\u548C\\u6570\\u636E\\u7684\\u5B9E\\u4F53\").concat(appDeId, \"\\u4E0D\\u4E00\\u81F4\")\n );\n }\n this.permitted = await app.authority.calcByDataAccessAction(\n this.dataAccessAction,\n data,\n appDeId\n );\n }\n async update(data, appDeId) {\n if (!this.isInit) {\n await this.init();\n }\n await this.calcPermission(data, appDeId);\n if (!this.permitted) {\n this.disabled = true;\n this.visible = !this.noPermissionHidden;\n } else {\n this.visible = true;\n this.disabled = this.noDataDisabled && (!data || this.noKeyDisabled && !data.srfkey);\n }\n }\n};\n\n// src/controller/utils/button-state/button-container.state.ts\nvar ButtonContainerState = class {\n constructor() {\n Object.defineProperty(this, \"children\", {\n enumerable: false,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"visible\", {\n enumerable: true,\n configurable: true,\n get: () => {\n if (this.children.length === 0) {\n return false;\n }\n return !!this.children.find((child) => child.visible);\n }\n });\n }\n addState(name, state) {\n Object.defineProperty(this, name, {\n enumerable: true,\n configurable: true,\n writable: true,\n value: state\n });\n this.children.push(state);\n }\n setLoading(name) {\n this.children.forEach((child) => {\n if (child.setLoading) {\n child.setLoading(name);\n } else {\n child.loading = !name ? false : child.name === name;\n }\n });\n }\n async update(data, appDeId) {\n await Promise.all(\n this.children.map((child) => {\n return child.update(data, appDeId);\n })\n );\n }\n};\n\n// src/controller/utils/event/qx-event-ex.ts\nimport { clearAll, QXEvent as QXEvent5 } from \"qx-util\";\nvar QXEventEx = class extends QXEvent5 {\n constructor() {\n super(...arguments);\n this.anyEventFns = [];\n }\n /**\n * 监听任意事件,返回值必须是数组,用来返回单次或多次的正常回调的结果。\n * 该返回值数组会在正常事件触发的时候展开合并入正常事件的结果里,模拟多次监听的常规返回。\n * @author lxm\n * @date 2023-03-23 09:50:33\n * @param {(...args: any[]) => Promise<any[]>} fn\n */\n onAll(fn) {\n if (!this.anyEventFns.includes(fn)) {\n this.anyEventFns.push(fn);\n }\n }\n emit(name, ...args) {\n super.emit(name, ...args);\n this.anyEventFns.forEach((fn) => {\n fn(name, ...args);\n });\n }\n async asyncEmit(name, ...args) {\n const resultPromise1 = super.asyncEmit(name, ...args);\n const all = this.anyEventFns.map((fn) => fn(name, ...args));\n const resultPromise2 = Promise.all(all);\n const resultArr1 = await resultPromise1;\n const resultArr2 = await resultPromise2;\n return resultArr1.concat(...resultArr2);\n }\n reset() {\n super.reset();\n clearAll(this.anyEventFns);\n }\n};\n\n// src/controller/utils/event/controller-event.ts\nvar ControllerEvent = class {\n /**\n * Creates an instance of ControllerEvent.\n * @author lxm\n * @date 2023-04-25 09:30:28\n * @param {() => Omit<EventBase, 'eventName'>} getBaseArgs 提供当前控制器环境内的通用的事件参数\n */\n constructor(getBaseArgs) {\n this.getBaseArgs = getBaseArgs;\n /**\n * 是否已经销毁\n * @author lxm\n * @date 2023-08-30 02:54:14\n * @type {boolean}\n */\n this.isDestroyed = false;\n /**\n * 事件对象\n *\n * @author lxm\n * @date 2022-08-30 14:08:40\n */\n this.evt = new QXEventEx();\n }\n /**\n * 发送事件,并等待所有监听器执行完毕\n * @author lxm\n * @date 2023-03-30 06:49:12\n * @template K\n * @param name 事件名称\n * @param args 事件参数\n * @return {*} {Promise<void>}\n */\n async emit(name, args) {\n if (this.isDestroyed) {\n return;\n }\n await this.evt.asyncEmit(name, {\n ...this.getBaseArgs(),\n eventName: name,\n // 合并抛出事件时候的输入的参数\n ...args || {}\n });\n }\n /**\n * 订阅指定事件\n * @author lxm\n * @date 2023-03-30 06:46:59\n * @param name 事件名\n * @param fn 事件回调\n */\n on(name, fn) {\n if (this.isDestroyed) {\n return;\n }\n this.evt.on(name, fn);\n }\n /**\n * 取消订阅指定事件\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-09-22 17:45:07\n */\n off(name, fn) {\n if (this.isDestroyed) {\n return;\n }\n this.evt.off(name, fn);\n }\n /**\n * 订阅任意事件\n * @author lxm\n * @date 2023-03-30 06:48:28\n * @param fn 事件回调\n */\n onAll(fn) {\n if (this.isDestroyed) {\n return;\n }\n this.evt.onAll(fn);\n }\n /**\n * 销毁方法,清空\n *\n * @author lxm\n * @date 2022-08-30 17:08:41\n */\n destroy() {\n this.getBaseArgs = void 0;\n this.evt.reset();\n this.isDestroyed = true;\n }\n};\n\n// src/controller/utils/route/route.ts\nfunction hasSubRoute(routeDepth) {\n return window.location.hash.split(\"/\").length > routeDepth * 2 + 2;\n}\n\n// src/controller/utils/util/util.ts\nimport { isNil as isNil13 } from \"ramda\";\nfunction isValueChange(value, value2) {\n if ((isNil13(value) || value === \"\") && (isNil13(value2) || value2 === \"\")) {\n return false;\n }\n return value !== value2;\n}\nfunction getOriginData(data) {\n let singleData = Array.isArray(data) ? data[0] : data;\n if (singleData && singleData instanceof ControlVO) {\n singleData = singleData.getOrigin();\n }\n return singleData;\n}\n\n// src/controller/utils/value-rule/value-rule.ts\nimport { RuntimeError as RuntimeError25 } from \"@ibiz-template/core\";\nimport { isNilOrEmpty as isNilOrEmpty7, isNumber } from \"qx-util\";\nimport { isNil as isNil14 } from \"ramda\";\nfunction generateRules(itemVRs, name, valueItemName) {\n const rules = [];\n itemVRs.forEach((item) => {\n const { valueRuleType } = item;\n const sysRule = item.sysValueRule;\n const deRule = item.defvalueRule;\n if (valueRuleType === \"SYSVALUERULE\" && sysRule) {\n if (sysRule.ruleType === \"REG\") {\n rules.push({\n pattern: new RegExp(sysRule.regExCode),\n message: sysRule.ruleInfo,\n trigger: \"change blur\"\n });\n } else if (sysRule.ruleType === \"SCRIPT\") {\n rules.push({\n validator: (rule, value, callback, source) => {\n if (!value) {\n return true;\n }\n try {\n ScriptFactory.execScriptFn(\n { rule, value, callback, source },\n sysRule.scriptCode,\n { isAsync: false }\n );\n } catch (error) {\n console.error(error);\n return false;\n }\n return true;\n },\n trigger: \"change blur\"\n });\n }\n } else if (valueRuleType === \"DEFVALUERULE\" && deRule) {\n const valueName = valueItemName || name;\n rules.push({\n validator: (rule, value, callback, source) => {\n if (isNilOrEmpty7(source[valueName])) {\n return true;\n }\n const { isPast, infoMessage } = verifyDeRules(\n valueName,\n source,\n deRule.groupCond\n );\n if (!isPast) {\n callback(new RuntimeError25(infoMessage || deRule.ruleInfo));\n }\n return true;\n },\n trigger: \"change blur\"\n });\n }\n });\n return rules;\n}\nfunction generateEditorRules(editor) {\n const rules = [];\n const { maxLength, minLength } = editor;\n const { maxValue, minValue } = editor;\n if (maxLength) {\n rules.push({\n validator: (rule, value, callback) => {\n if (!isNil14(value) && value.length > maxLength) {\n callback(\n new Error(\n \"\\u5185\\u5BB9\\u957F\\u5EA6\\u5FC5\\u987B\\u5C0F\\u4E8E\\u7B49\\u4E8E\".concat(maxLength, \",\\u5F53\\u524D\\u957F\\u5EA6\\u4E3A\").concat(value.length)\n )\n );\n } else {\n return true;\n }\n }\n });\n }\n if (minLength) {\n rules.push({\n validator: (rule, value, callback) => {\n if (!isNil14(value) && value.length < minLength) {\n callback(\n new Error(\n \"\\u5185\\u5BB9\\u957F\\u5EA6\\u5FC5\\u987B\\u5927\\u4E8E\\u7B49\\u4E8E\".concat(minLength, \",\\u5F53\\u524D\\u957F\\u5EA6\\u4E3A\").concat(value.length)\n )\n );\n } else {\n return true;\n }\n }\n });\n }\n if (!isNil14(maxValue)) {\n rules.push({\n validator: (rule, value, callback) => {\n if (!isNil14(value) && isNumber(value) && value > maxValue) {\n callback(new Error(\"\\u503C\\u5FC5\\u987B\\u5C0F\\u4E8E\\u7B49\\u4E8E\".concat(maxValue)));\n } else {\n return true;\n }\n }\n });\n }\n if (!isNil14(minValue)) {\n rules.push({\n validator: (rule, value, callback) => {\n if (!isNil14(value) && isNumber(value) && value < minValue) {\n callback(new Error(\"\\u503C\\u5FC5\\u987B\\u5927\\u4E8E\\u7B49\\u4E8E\".concat(minValue)));\n } else {\n return true;\n }\n }\n });\n }\n return rules;\n}\n\n// src/controller/utils/value-ex/value-ex.ts\nimport { RuntimeError as RuntimeError26 } from \"@ibiz-template/core\";\nimport { isNil as isNil15, mergeLeft } from \"ramda\";\nvar ValueExUtil = class {\n /**\n * 合并默认值\n * @author lxm\n * @date 2023-08-30 02:06:58\n * @static\n * @param {ValueExOptions} options\n * @return {*} {ValueExOptions}\n */\n static mergeDefault(options) {\n return mergeLeft(options, {\n textSeparator: \",\",\n valueSeparator: \",\"\n });\n }\n /**\n * 转成显示用的文本\n * @author lxm\n * @date 2023-08-30 01:55:38\n * @param {ValueExOptions} options\n * @param {unknown} value\n * @return {*} {string}\n */\n static toText(options, value) {\n if (isNil15(value) || value === \"\") {\n return \"\";\n }\n const { valueType, objectNameField, textSeparator } = this.mergeDefault(options);\n if ([\"OBJECTS\", \"OBJECT\"].includes(valueType)) {\n if (!objectNameField) {\n throw new RuntimeError26(\"\\u7F3A\\u5C11objectNameField\");\n }\n const textKey = objectNameField.toLowerCase();\n if (valueType === \"OBJECTS\") {\n return value.map((item) => item[textKey] || \"---\").join(textSeparator);\n }\n return value[textKey];\n }\n if (valueType === \"SIMPLES\") {\n return value.join(textSeparator);\n }\n return \"\".concat(value);\n }\n};\n\n// src/controller/utils/value-default/value-default.ts\nimport { RuntimeError as RuntimeError27, ModelError as ModelError16 } from \"@ibiz-template/core\";\nimport dayjs from \"dayjs\";\nimport { createUUID as createUUID6 } from \"qx-util\";\nimport { isNil as isNil16, isNotNil } from \"ramda\";\nfunction getDefaultValue(opts, origins) {\n var _a;\n const { name, valueType, defaultValue, valueFormat } = opts;\n const { data, context, params } = origins;\n if (isNil16(valueType) && isNil16(defaultValue)) {\n return;\n }\n if (valueType === \"RESET\") {\n return null;\n }\n const value = data[name];\n if (isNotNil(value)) {\n return;\n }\n if (!valueType && defaultValue) {\n return defaultValue;\n }\n switch (valueType) {\n case \"APPDATA\":\n if (Object.prototype.hasOwnProperty.call(params, defaultValue)) {\n return params[defaultValue];\n }\n if (Object.prototype.hasOwnProperty.call(context, defaultValue)) {\n return context[defaultValue];\n }\n break;\n case \"OPERATORNAME\":\n return context.srfusername;\n case \"OPERATOR\":\n return context.srfuserid;\n case \"CURTIME\":\n return dayjs().format(valueFormat);\n case \"PARAM\":\n return data[defaultValue];\n case \"SESSION\":\n case \"APPLICATION\":\n if (!((_a = ibiz.appData) == null ? void 0 : _a.context)) {\n throw new RuntimeError27(\"appdata.context\\u4E0D\\u5B58\\u5728\");\n }\n return ibiz.appData.context[defaultValue];\n case \"CONTEXT\":\n return params[defaultValue];\n case \"UNIQUEID\":\n return createUUID6();\n default:\n throw new ModelError16({}, \"\\u9ED8\\u8BA4\\u503C\\u7C7B\\u578B[\".concat(valueType, \"]\\u672A\\u652F\\u6301\"));\n }\n}\n\n// src/controller/utils/data-file-util/data-file-util.ts\nimport {\n RuntimeError as RuntimeError28\n} from \"@ibiz-template/core\";\nvar asyncImportUrl = \"asyncimportdata2\";\nvar importUrl = \"importdata2\";\nfunction listenAsyncAction(id) {\n return new Promise((resolve) => {\n const callBack = (msg) => {\n const messageid = msg.messageid || msg.data.asyncacitonid;\n if (id !== messageid) {\n return;\n }\n const state = msg.data.actionstate;\n if (state === 30 || state === 40) {\n resolve();\n ibiz.mc.command.asyncAction.off(callBack);\n }\n };\n ibiz.mc.command.asyncAction.on(callBack);\n });\n}\nasync function asyncImportData(file, appDataEntity, dataImport) {\n const data = new FormData();\n data.append(\"file\", file);\n let url = \"\".concat(appDataEntity.codeName2.toLowerCase(), \"/\").concat(asyncImportUrl);\n if (dataImport == null ? void 0 : dataImport.codeName) {\n url += \"?srfimporttag=\".concat(dataImport.codeName);\n }\n const res = await ibiz.net.request(url, {\n method: \"post\",\n data,\n headers: { \"Content-Type\": \"multipart/form-data\" }\n });\n await listenAsyncAction(res.data.asyncacitonid);\n ibiz.mc.command.send(\n { srfdecodename: appDataEntity.codeName },\n \"OBJECTCREATED\"\n );\n}\nasync function importData(file, appDataEntity, dataImport) {\n const data = new FormData();\n data.append(\"file\", file);\n let url = \"\".concat(appDataEntity.codeName2.toLowerCase(), \"/\").concat(importUrl);\n if (dataImport == null ? void 0 : dataImport.codeName) {\n url += \"?srfimporttag=\".concat(dataImport.codeName);\n }\n const res = await ibiz.net.request(url, {\n method: \"post\",\n data,\n headers: { \"Content-Type\": \"multipart/form-data\" }\n });\n return res.data;\n}\nasync function exportData(header, data, fileName) {\n if (!ibiz.util.getExcelUtil) {\n throw new RuntimeError28(\"ibiz.util.getExportExcel\\u4E0D\\u5B58\\u5728\");\n }\n const exportExcel = await ibiz.util.getExcelUtil();\n if (!exportExcel) {\n throw new RuntimeError28(\"\\u5BFC\\u51FA\\u6A21\\u5757\\u52A0\\u8F7D\\u9519\\u8BEF\");\n }\n try {\n exportExcel.exportJsonToExcel({\n header,\n // 表头内容 数组格式\n data,\n // 具体数据 这是个二维数组\n filename: fileName,\n // 文件名称\n autoWidth: true\n // 单元格是否自适应\n });\n return { ok: true };\n } catch (error) {\n return { ok: false };\n }\n}\n\n// src/controller/common/base.controller.ts\nvar SELF_KEY = \"__self\";\nvar BaseController = class {\n /**\n * Creates an instance of BaseController.\n * @author lxm\n * @date 2023-04-26 06:46:21\n * @param {CTX} ctx 跨组件上下文环境,内部机制不暴露\n */\n constructor(model, context, params, ctx) {\n this.model = model;\n this.context = context;\n this.params = params;\n this.ctx = ctx;\n this.state = {};\n /**\n * 控制器名称,作为检索控制器的唯一标识\n * @author lxm\n * @date 2023-04-26 08:22:30\n * @type {string}\n */\n this.name = \"\";\n /**\n * 事件触发器\n * @author lxm\n * @date 2023-04-25 09:36:31\n * @type {ControllerEvent}\n */\n this.evt = new ControllerEvent(\n this.getEventArgs.bind(this)\n );\n /**\n * 计算父子加载顺序的计数器\n * @author lxm\n * @date 2023-04-26 06:14:22\n * @type {ActivityCounter}\n */\n this.mountCounter = new ActivityCounter(this.mounted.bind(this));\n /**\n * 子组件的名称,会监听指定子组件的生命周期,影响自身的声明周期。\n * @author lxm\n * @date 2023-04-26 08:10:57\n * @type {string[]}\n */\n this.childNames = [];\n this.name = model.name || model.id;\n this.initState();\n }\n /**\n * 中间层的基类才会使用,用于在内部使用自身的事件,事件类型不是泛型用evt就能正确推导出来。\n * @author lxm\n * @date 2023-05-18 02:48:57\n * @readonly\n * @protected\n */\n get _evt() {\n return this.evt;\n }\n /**\n * 初始化state的属性放,一般情况下只需要把对应的默认值直接赋值给state\n * 如果需要构造特殊class类型的state,可以重写该方法时,\n * 一开就new一个state替换当前的state,然后调用super初始化默认值\n * @author lxm\n * @date 2023-05-18 02:57:00\n * @protected\n */\n initState() {\n this.state.isCreated = false;\n this.state.isMounted = false;\n this.state.isDestroyed = false;\n }\n /**\n * 获取事件的基础参数\n * @author lxm\n * @date 2023-04-25 11:03:44\n * @return {*} {Omit<EventBase, 'eventName'>}\n */\n getEventArgs() {\n return {\n context: this.context,\n params: this.params,\n data: [],\n targetName: this.model.name,\n view: this.ctx.view\n };\n }\n /**\n * 生命周期-创建完成,不推荐子类实现\n * @author lxm\n * @date 2023-04-25 11:08:54\n */\n async created() {\n this.mountCounter.enroll(SELF_KEY);\n await this.onCreated();\n this.state.isCreated = true;\n this.force(() => {\n this.mountSelf();\n });\n ibiz.log.debug(\"\".concat(this.constructor.name, \":\").concat(this.name, \" onCreated\"));\n this._evt.emit(\"onCreated\", void 0);\n }\n /**\n * 生命周期-创建完成,实际执行逻辑,子类重写用这个\n * @author lxm\n * @date 2023-04-25 11:12:02\n */\n async onCreated() {\n this.ctx.evt.on(\"onForecast\", (name) => {\n if (this.childNames.includes(name)) {\n this.mountCounter.enroll(name);\n }\n });\n this.ctx.evt.on(\"onRegister\", (name, c) => {\n if (this.childNames.includes(name)) {\n c.evt.on(\"onMounted\", () => {\n this.mountCounter.attend(name);\n });\n }\n });\n }\n /**\n * 自身挂载方法,默认是设置自身已经挂载的状态,用于计数器计算。\n * 异步方法,可以把异步初始化放这里,执行完后调基类的mountSelf,mounted声明周期就可以在异步之后触发\n * @author lxm\n * @date 2023-04-27 03:34:35\n */\n async mountSelf() {\n const isSelfMounted = this.mountCounter.registration.get(SELF_KEY);\n if (!isSelfMounted) {\n this.mountCounter.attend(SELF_KEY);\n }\n }\n /**\n * 生命周期-加载完成,不推荐子类实现\n * 外部不允许调用,只能被mountCounter触发,保证mounted时机正确,外部调用mountSelf\n *\n * @author lxm\n * @date 2023-04-25 11:08:54\n */\n async mounted() {\n await this.onMounted();\n this.state.isMounted = true;\n ibiz.log.debug(\"\".concat(this.constructor.name, \":\").concat(this.name, \" onMounted\"));\n this._evt.emit(\"onMounted\", void 0);\n }\n /**\n * 生命周期-加载完成,实际执行逻辑,子类重写用这个\n * 放置等自身后需要等待的子组件都加载完成后才会执行的逻辑。\n * @author lxm\n * @date 2023-04-25 11:12:02\n */\n async onMounted() {\n }\n /**\n * 生命周期-销毁完成,不推荐子类实现\n * @author lxm\n * @date 2023-04-25 11:08:54\n */\n async destroyed() {\n await this.onDestroyed();\n this.state.isDestroyed = true;\n ibiz.log.debug(\"\".concat(this.constructor.name, \":\").concat(this.name, \" onDestroyed\"));\n await this._evt.emit(\"onDestroyed\", void 0);\n this.evt.destroy();\n }\n /**\n * 生命周期-销毁完成,实际执行逻辑,子类重写用这个\n * @author lxm\n * @date 2023-04-25 11:12:02\n */\n async onDestroyed() {\n }\n /**\n * 强制更新视图(框架级)\n *\n * @author chitanda\n * @param {() => void} [callback] 更新之后,组件渲染完成后的回调\n * @date 2022-07-24 14:07:38\n */\n force(_callback) {\n }\n /**\n * 获取指定名称的控制器\n * @author lxm\n * @date 2023-04-25 10:14:42\n * @param {string} name\n * @param {boolean} [traceRoot=false] 是否跨越视图作用域,一路向根上找。\n * @return {*} {(BaseController | undefined)}\n */\n getController(name, traceRoot = false) {\n return this.ctx.getController(name, traceRoot);\n }\n getTopView() {\n return this.ctx.getTopView();\n }\n /**\n * 当前视图上下文内有新的控制产生时触发回调。\n * @author lxm\n * @date 2023-04-26 07:59:41\n * @param {(name: string, c: IController) => void} cb\n */\n listenNewController(cb) {\n this.ctx.evt.on(\"onRegister\", cb);\n }\n};\n\n// src/controller/utils/view-msg/view-msg-controller.ts\nimport { RuntimeError as RuntimeError29, RuntimeModelError as RuntimeModelError21 } from \"@ibiz-template/core\";\nimport { isNil as isNil17, mergeRight as mergeRight2 } from \"ramda\";\nvar ViewMsgController = class _ViewMsgController {\n constructor(msgGroupId) {\n this.msgGroupId = msgGroupId;\n /**\n * 视图消息map\n * @author lxm\n * @date 2023-09-22 05:38:03\n */\n this.viewMsgMap = /* @__PURE__ */ new Map();\n }\n /**\n * 初始化方法,从全局获取视图消息组和视图消息的模型\n * @author lxm\n * @date 2023-09-22 05:41:08\n * @param {IContext} context\n * @return {*} {Promise<void>}\n */\n async init(context) {\n var _a, _b;\n const appModel = ibiz.hub.getApp(context.srfappid).model;\n const msgGroup = (_a = appModel.appViewMsgGroups) == null ? void 0 : _a.find(\n (item) => item.id === this.msgGroupId\n );\n if (!msgGroup) {\n throw new RuntimeError29(\"\\u627E\\u4E0D\\u5230\\u89C6\\u56FE\\u6D88\\u606F\\u7EC4\".concat(this.msgGroupId, \"\\u7684\\u6A21\\u578B\"));\n }\n this.msgGroup = msgGroup;\n const msgDetailsViewMsgIds = msgGroup.appViewMsgGroupDetails.map(\n (item) => item.appViewMsgId\n );\n (_b = appModel.appViewMsgs) == null ? void 0 : _b.forEach((item) => {\n const index = msgDetailsViewMsgIds.indexOf(item.id);\n if (index !== -1) {\n this.viewMsgMap.set(item.id, item);\n msgDetailsViewMsgIds.splice(index, 1);\n }\n });\n if (msgDetailsViewMsgIds.length) {\n throw new RuntimeError29(\n \"\\u6CA1\\u6709\\u627E\\u5230\".concat(msgDetailsViewMsgIds.join(\",\"), \"\\u89C6\\u56FE\\u6D88\\u606F\\u6A21\\u578B\")\n );\n }\n }\n getDeFieldName(appDataEntity, fieldId) {\n var _a, _b;\n if (!fieldId) {\n return;\n }\n return (_b = (_a = findFieldById(appDataEntity, fieldId)) == null ? void 0 : _a.name) == null ? void 0 : _b.toLowerCase();\n }\n /**\n * 查询并获取指定实体的数据集数据\n * @author lxm\n * @date 2023-09-20 08:10:57\n * @static\n * @param {IPSAppDEDataSetViewMsg} msgModel\n * @param {IParams} [context={}]\n * @param {IParams} [params={}]\n * @return {*} {Promise<IData[]>}\n */\n static async fetchDataSet(msgModel, context, params) {\n const { appDataEntityId, appDEDataSetId } = msgModel;\n if (!appDEDataSetId) {\n throw new RuntimeModelError21(msgModel, \"\\u672A\\u914D\\u7F6E\\u5B9E\\u4F53\\u6570\\u636E\\u96C6\");\n }\n const res = await ibiz.hub.getApp(context.srfappid).deService.exec(appDataEntityId, appDEDataSetId, context, params);\n if (res.data.length) {\n return res.data;\n }\n return [];\n }\n /**\n * 计算视图信息呈现数据\n * @author lxm\n * @date 2023-09-20 09:16:59\n * @param {IContext} context\n * @param {IParams} params\n * @return {*} {IViewMessage[]}\n */\n async calcViewMessages(context, params) {\n const details = this.msgGroup.appViewMsgGroupDetails;\n const result = [];\n if (details == null ? void 0 : details.length) {\n await Promise.all(\n details.map(async (detail) => {\n const msgModel = this.viewMsgMap.get(detail.appViewMsgId);\n if (msgModel.dynamicMode === 1) {\n const msgs = await this.calcDynaMsgs(detail, context, params);\n result.push(...msgs);\n } else {\n const msgData = this.calcStaticMsg(detail);\n result.push(msgData);\n }\n })\n );\n }\n return result;\n }\n /**\n * 计算静态消息数据(或者动态的里面静态的配置)\n * @author lxm\n * @date 2023-09-20 09:46:45\n * @protected\n * @param {IPSAppViewMsgGroupDetail} detail\n * @return {*} {IViewMessage}\n */\n calcStaticMsg(detail) {\n const { position: position1 } = detail;\n const viewMsg = this.viewMsgMap.get(detail.appViewMsgId);\n const {\n title,\n message,\n removeMode,\n position: position2,\n messageType\n } = viewMsg;\n const { userTag, userTag2, userTag3, userTag4 } = viewMsg;\n const position = position1 || position2;\n return {\n title,\n message,\n position,\n messageType,\n removeMode,\n // 额外参数\n extraParams: {\n userTag,\n userTag2,\n userTag3,\n userTag4\n }\n };\n }\n /**\n * 计算动态视图消息数据\n * @author lxm\n * @date 2023-09-20 09:46:26\n * @protected\n * @param {IPSAppViewMsgGroupDetail} detail\n * @param {IContext} context\n * @param {IParams} params\n * @return {*} {Promise<IViewMessage[]>}\n */\n async calcDynaMsgs(detail, context, params) {\n const msgModel = this.viewMsgMap.get(\n detail.appViewMsgId\n );\n const {\n appDataEntityId,\n orderValueAppDEFieldId,\n titleAppDEFieldId,\n removeFlagAppDEFieldId,\n msgTypeAppDEFieldId,\n contentAppDEFieldId,\n msgPosAppDEFieldId\n } = msgModel;\n if (!appDataEntityId) {\n throw new RuntimeModelError21(msgModel, \"\\u672A\\u914D\\u7F6E\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n const entity = await ibiz.hub.getAppDataEntity(\n appDataEntityId,\n context.srfappid\n );\n const fetchParams = { ...params };\n const sortField = this.getDeFieldName(entity, orderValueAppDEFieldId);\n if (sortField) {\n fetchParams.sort = \"\".concat(sortField, \",asc\");\n }\n const dataSet = await _ViewMsgController.fetchDataSet(\n msgModel,\n context,\n fetchParams\n );\n if (!dataSet.length) {\n return [];\n }\n const basicMsg = this.calcStaticMsg(detail);\n const titleField = this.getDeFieldName(entity, titleAppDEFieldId);\n const positionField = this.getDeFieldName(entity, msgPosAppDEFieldId);\n const messageField = this.getDeFieldName(entity, contentAppDEFieldId);\n const typeField = this.getDeFieldName(entity, msgTypeAppDEFieldId);\n const removeModeField = this.getDeFieldName(entity, removeFlagAppDEFieldId);\n const deViewMessages = dataSet.map((item) => {\n const message = {};\n if (positionField && !isNil17(item[positionField])) {\n message.position = item[positionField];\n }\n if (titleField && !isNil17(item[titleField])) {\n message.title = item[titleField];\n }\n if (messageField && !isNil17(item[messageField])) {\n message.message = item[messageField];\n }\n if (typeField && !isNil17(item[typeField])) {\n message.messageType = item[typeField];\n }\n if (removeModeField && !isNil17(item[removeModeField])) {\n message.removeMode = item[removeModeField];\n }\n return mergeRight2(basicMsg, message);\n });\n return deViewMessages;\n }\n};\n\n// src/controller/common/view/view.controller.ts\nvar ViewController = class extends BaseController {\n /**\n * Creates an instance of ViewController.\n * @author lxm\n * @date 2023-04-20 02:05:33\n * @param {T} model 视图模型\n * @param {IContext} context 上下文\n * @param {IParams} [params] 视图参数\n * @param {CTX} [ctx]\n */\n constructor(model, context, params, ctx) {\n const _model = ibiz.util.layoutPanel.fill(model);\n super(_model, IBizContext2.create({}, context), params || {}, new CTX(ctx));\n this.session = {};\n this.modal = new Modal({});\n this.providers = {};\n this.engines = [];\n this.slotProps = {};\n this.counters = {};\n /**\n * 视图loading状态控制器\n *\n * @author lxm\n * @date 2022-09-19 14:09:12\n */\n this.viewLoading = new LoadingState();\n /**\n * 视图是否已经关闭\n *\n * @author chitanda\n * @date 2023-07-12 22:07:52\n * @protected\n * @type {boolean}\n */\n this.isCloseView = false;\n this._isActive = true;\n if (ctx) {\n ctx.registerController(this.model.name, this);\n }\n this.ctx.init(this);\n this.initEngines();\n }\n get _evt() {\n return this.evt;\n }\n /**\n * 上层视图控制器\n * @author lxm\n * @date 2023-07-06 09:48:16\n * @readonly\n * @type {(IViewController | undefined)}\n */\n get parentView() {\n var _a;\n return (_a = this.ctx.parent) == null ? void 0 : _a.view;\n }\n get isActive() {\n return this._isActive;\n }\n /**\n * 视图重新激活\n *\n * @author chitanda\n * @date 2023-07-12 17:07:55\n */\n onActivated() {\n this._isActive = true;\n ibiz.log.debug(\"\\u89C6\\u56FE[\".concat(this.model.name, \"](\").concat(this.model.id, \")\\u6FC0\\u6D3B\"));\n }\n /**\n * 视图暂时停用\n *\n * @author chitanda\n * @date 2023-07-12 17:07:06\n */\n onDeactivated() {\n this._isActive = false;\n ibiz.log.debug(\"\\u89C6\\u56FE[\".concat(this.model.name, \"](\").concat(this.model.id, \")\\u6682\\u505C\"));\n }\n /**\n * 初始化引擎\n * @author lxm\n * @date 2023-05-23 06:43:53\n * @protected\n */\n initEngines() {\n const engineModels = getViewEngines(this.model);\n if (engineModels.length) {\n engineModels.forEach((engine) => {\n const ins = ibiz.engine.getEngine(engine, this);\n if (ins) {\n this.engines.push(ins);\n } else {\n ibiz.log.warn(\"\\u672A\\u627E\\u5230\\u89C6\\u56FE\\u5F15\\u64CE\\u5B9E\\u73B0\\uFF1A\", engine);\n }\n });\n } else {\n const ins = ibiz.engine.getEngine(\n { engineCat: \"VIEW\", engineType: this.model.viewType },\n this\n );\n if (ins) {\n this.engines.push(ins);\n }\n }\n }\n /**\n * 初始化计数器\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-07-10 14:53:53\n */\n async initCounters() {\n const viewLayoutPanel = this.model.viewLayoutPanel;\n const { appCounterRefs } = viewLayoutPanel;\n if (appCounterRefs && appCounterRefs.length > 0) {\n try {\n await Promise.all(\n appCounterRefs.map(async (counterRef) => {\n const counter = await CounterService.getCounterByRef(\n counterRef,\n this.context\n );\n this.counters[counterRef.id] = counter;\n })\n );\n } catch (error) {\n console.error(error);\n }\n }\n }\n initState() {\n super.initState();\n this.state.isLoading = false;\n this.state.caption = this.model.caption;\n this.state.srfactiveviewdata = null;\n this.state.viewMessages = {};\n }\n async onCreated() {\n await super.onCreated();\n this.modal.hooks.beforeDismiss.tapPromise(async (modalData) => {\n if (isNotNil2(this.state.closeOK)) {\n modalData.ok = this.state.closeOK;\n }\n await this._evt.emit(\"onCloseView\", { ...modalData });\n });\n this._evt.emit(\"onViewInfoChange\", {\n caption: this.model.caption,\n title: this.model.title\n });\n this.handleContextParams();\n const viewLayoutPanel = this.model.viewLayoutPanel;\n this.childNames.push(viewLayoutPanel.name);\n const provider = await getControlProvider(viewLayoutPanel);\n this.providers[viewLayoutPanel.name] = provider;\n const controls = getControlsByView(this.model);\n if (controls) {\n await Promise.all(\n controls.map(async (ctrl) => {\n const ctrlProvider = await getControlProvider(ctrl);\n this.providers[ctrl.name || ctrl.id] = ctrlProvider;\n })\n );\n }\n await this.initCounters();\n const appViewLogics = getViewLogics(this.model);\n if (appViewLogics.length) {\n this.scheduler = ibiz.scheduler.createViewScheduler(appViewLogics);\n this.scheduler.defaultParamsCb = () => {\n return this.getEventArgs();\n };\n if (this.scheduler.hasViewEventTrigger) {\n this.evt.onAll((_eventName, event) => {\n this.scheduler.triggerViewEvent(event);\n });\n }\n }\n this.initViewMsg();\n if (this.engines.length) {\n await Promise.all(this.engines.map((engine) => engine.onCreated()));\n }\n }\n async onMounted() {\n var _a;\n await super.onMounted();\n if (this.engines.length) {\n await Promise.all(this.engines.map((engine) => engine.onMounted()));\n }\n (_a = this.scheduler) == null ? void 0 : _a.startTimerTrigger();\n }\n async onDestroyed() {\n await super.onDestroyed();\n if (this.engines.length) {\n await Promise.all(this.engines.map((engine) => engine.onDestroyed()));\n }\n this.ctx.destroy();\n this.context.destroy();\n this.engines = [];\n if (this.scheduler) {\n this.scheduler.destroy();\n }\n ibiz.log.debug(\"\\u89C6\\u56FE[\".concat(this.model.name, \"](\").concat(this.model.id, \")\\u9500\\u6BC1\"));\n }\n /**\n * 处理上下文和导航参数相关的,如自定义导航参数的处理\n *\n * @author lxm\n * @date 2022-09-08 15:09:47\n * @protected\n */\n handleContextParams() {\n this.context.srfappid = this.model.appId;\n if (isNil18(this.context.srfsessionid) || isEmpty8(this.context.srfsessionid)) {\n this.context.srfsessionid = createUUID7();\n }\n const navContexts = this.model.appViewNavContexts;\n let context = {};\n if (notNilEmpty6(navContexts)) {\n context = convertNavData(navContexts, this.params, this.context);\n }\n Object.assign(this.context, context);\n const navParams = this.model.appViewNavParams;\n let params = {};\n if (notNilEmpty6(navParams)) {\n params = convertNavData(navParams, this.params, this.context);\n }\n Object.assign(this.params, params);\n if (this.state.isMounted) {\n this.callUIAction(\"Refresh\" /* REFRESH */);\n }\n }\n async call(key, args) {\n let result;\n for (const engine of this.engines) {\n result = await engine.call(key, args);\n if (result !== void 0) {\n break;\n }\n }\n return result;\n }\n async callUIAction(key, args) {\n const result = this.call(key, args);\n if (result === void 0) {\n throw new RuntimeError30(\"\\u6CA1\\u6709\\u5F15\\u64CE\\u652F\\u6301\\u9884\\u7F6E\\u754C\\u9762\\u884C\\u4E3A\".concat(key));\n }\n return result;\n }\n async closeView(modalData = { ok: false, data: [] }) {\n await this.modal.dismiss(modalData);\n }\n startLoading() {\n this.viewLoading.begin();\n this.state.isLoading = this.viewLoading.isLoading;\n }\n endLoading() {\n this.viewLoading.end();\n this.state.isLoading = this.viewLoading.isLoading;\n }\n /**\n * 设置布局面板控制器\n * @author lxm\n * @date 2023-08-01 03:28:04\n * @param {IViewLayoutPanelController} panel\n */\n setLayoutPanel(panel) {\n var _a;\n this.layoutPanel = panel;\n if (this.layoutPanel.state.isMounted) {\n this.mountCounter.attend(this.layoutPanel.model.name);\n } else {\n this.layoutPanel.evt.on(\"onMounted\", () => {\n this.mountCounter.attend(this.layoutPanel.model.name);\n });\n }\n if ((_a = this.scheduler) == null ? void 0 : _a.hasControlEventTrigger) {\n panel.evt.on(\"onControlEvent\", (event) => {\n this.scheduler.triggerControlEvent(\n event.triggerControlName,\n event.triggerEventName,\n event.triggerEvent\n );\n });\n }\n }\n /**\n * 初始化视图消息\n * @author lxm\n * @date 2023-09-20 09:19:20\n */\n async initViewMsg() {\n const { appViewMsgGroupId } = this.model;\n if (appViewMsgGroupId) {\n this.state.viewMessages = { TOP: [], BOTTOM: [], BODY: [], POPUP: [] };\n this.viewMsgController = new ViewMsgController(appViewMsgGroupId);\n await this.viewMsgController.init(this.context);\n const messages = await this.viewMsgController.calcViewMessages(\n this.context,\n this.params\n );\n messages.forEach((message) => {\n if ([\"TOP\", \"BOTTOM\", \"BODY\", \"POPUP\"].includes(message.position)) {\n this.state.viewMessages[message.position].push(message);\n }\n });\n if (this.state.viewMessages.POPUP.length) {\n this.alertViewMessage(this.state.viewMessages.POPUP);\n }\n }\n }\n /**\n * 弹出视图消息,一个接一个弹\n * @author lxm\n * @date 2023-09-20 10:17:42\n * @param {ViewMessage[]} messages\n * @return {*} {Promise<void>}\n */\n async alertViewMessage(messages) {\n const [message, ...rest] = messages;\n const modalParams = {\n title: message.title,\n desc: message.message\n };\n if (message.extraParams.userTag) {\n Object.assign(modalParams, {\n confirmButtonText: message.extraParams.userTag\n });\n }\n if (message.messageType === \"WARN\") {\n await ibiz.modal.warning(modalParams);\n } else if (message.messageType === \"ERROR\") {\n await ibiz.modal.error(modalParams);\n } else {\n await ibiz.modal.info(modalParams);\n }\n if (rest.length) {\n this.alertViewMessage(rest);\n }\n }\n};\n\n// src/controller/common/view/mob-view.controller.ts\nvar MobViewController = class extends ViewController {\n};\n\n// src/controller/common/view/wf-step-trace-view.controller.ts\nvar WFStepTraceViewController = class extends ViewController {\n initState() {\n super.initState();\n this.state.historyData = null;\n }\n async onCreated() {\n var _a;\n await super.onCreated();\n const app = ibiz.hub.getApp(this.context.srfappid);\n if ((_a = this.ctx.parent) == null ? void 0 : _a.view.model.appDataEntityId) {\n const entityService = await app.deService.getService(\n this.ctx.parent.view.model.appDataEntityId\n );\n const params = Object.assign(this.context.clone(), this.params);\n const res = await entityService.wf.getWFHistory(params);\n if (res.data) {\n this.state.historyData = res.data;\n }\n }\n }\n};\n\n// src/controller/common/editor/editor.controller.ts\nvar EditorController = class {\n /**\n * Creates an instance of EditorController.\n * @author lxm\n * @date 2022-08-24 20:08:19\n * @param {T} model\n */\n constructor(model, parent) {\n /**\n * 编辑器样式\n *\n * @author chitanda\n * @date 2023-09-12 16:09:40\n * @type {IData}\n */\n this.style = {};\n /**\n * 占位\n * @return {*}\n * @author: zhujiamin\n * @Date: 2022-08-25 14:33:14\n */\n this.placeHolder = \"\";\n /**\n * 占位\n * @return {*}\n * @author: zhujiamin\n * @Date: 2022-08-25 14:33:14\n */\n this.editorParams = {};\n this.model = model;\n this.parent = parent;\n this.context = parent.context;\n this.params = parent.params;\n }\n /**\n * 是否只读\n *\n * @author lxm\n * @date 2022-12-12 21:12:51\n * @readonly\n */\n get readonly() {\n return !!this.model.readOnly;\n }\n /**\n * 子类不可覆盖或重写此方法,在 init 时需要重写的使用 onInit 方法。\n *\n * @author lxm\n * @date 2022-08-18 22:08:30\n * @returns {*} {Promise<void>}\n */\n async init() {\n await this.onInit();\n }\n async onInit() {\n if (this.model.placeHolder) {\n this.placeHolder = this.model.placeHolder;\n }\n if (this.model.editorParams) {\n Object.keys(this.model.editorParams).forEach((key) => {\n this.editorParams[key] = this.model.editorParams[key];\n });\n }\n if (this.model.editorWidth) {\n const width = this.model.editorWidth;\n if (width > 0 && width <= 1) {\n this.style.width = \"\".concat(width * 100, \"%\");\n } else {\n this.style.width = \"\".concat(width, \"px\");\n }\n }\n if (this.model.editorHeight) {\n const height = this.model.editorHeight;\n if (height > 0 && height <= 1) {\n this.style.height = \"\".concat(height * 100, \"%\");\n } else {\n this.style.height = \"\".concat(height, \"px\");\n }\n }\n }\n /**\n * 公共参数处理,计算上下文和视图参数\n *\n * @return {*}\n * @author: zhujiamin\n * @Date: 2022-08-25 15:44:14\n */\n handlePublicParams(data, context, params) {\n const { navigateContexts, navigateParams } = this.model;\n let selfContext = {};\n if (navigateContexts && data) {\n selfContext = convertNavData(navigateContexts, data, params, context);\n }\n const _context = Object.assign(context.clone(), selfContext);\n let selfParams = {};\n if (navigateParams && data) {\n selfParams = convertNavData(navigateParams, data, params, context);\n }\n return { context: _context, params: selfParams };\n }\n /**\n * 字符串转对象、数组对象\n *\n * @author chitanda\n * @date 2023-08-02 17:08:03\n * @param {string} value\n * @return {*} {(IData | IData[] | undefined)}\n */\n toObj(value) {\n if (!value) {\n return void 0;\n }\n const func = new Function(\"return (\".concat(value, \");\"));\n return func();\n }\n /**\n * 字符串布尔转布尔类型\n *\n * @author chitanda\n * @date 2023-08-02 17:08:34\n * @param {string} value\n * @return {*} {boolean}\n */\n toBoolean(value) {\n return Object.is(\"true\", value);\n }\n};\n\n// src/controller/common/editor/code-list-editor.controller.ts\nimport { RuntimeModelError as RuntimeModelError22 } from \"@ibiz-template/core\";\nvar CodeListEditorController = class extends EditorController {\n /**\n * 加载代码表数据\n * @return {*}\n * @author: zhujiamin\n * @Date: 2022-08-25 15:46:27\n */\n async loadCodeList(data) {\n const { context, params } = this.handlePublicParams(\n data,\n this.context,\n this.params\n );\n if (this.model.appCodeListId) {\n const app = await ibiz.hub.getApp(this.context.srfappid);\n let dataItems = [];\n dataItems = await app.codeList.get(\n this.model.appCodeListId,\n context,\n params\n );\n return dataItems;\n }\n throw new RuntimeModelError22(\n this.model,\n \"\\u7F16\\u8F91\\u5668\\u7C7B\\u578B[\".concat(this.model.editorType, \"]\\uFF0C\\u672A\\u914D\\u7F6E\\u4EE3\\u7801\\u8868\")\n );\n }\n};\n\n// src/controller/common/control/control.controller.ts\nimport { IBizContext as IBizContext3, IBizParams, NoticeError } from \"@ibiz-template/core\";\nimport { clone as clone14, isNil as isNil19 } from \"ramda\";\nimport { notNilEmpty as notNilEmpty7 } from \"qx-util\";\nvar ControlController = class extends BaseController {\n /**\n * Creates an instance of ControlController.\n *\n * @author chitanda\n * @date 2022-07-24 17:07:58\n * @param {T} model\n * @param {IContext} context\n * @param {IParams} [params={}]\n */\n constructor(model, context, params, ctx) {\n super(\n model,\n IBizContext3.create({}, context),\n new IBizParams({}, params),\n ctx\n );\n /**\n * 部件参数\n *\n * @author zk\n * @date 2023-09-26 03:09:21\n * @type {IData}\n * @memberof ControlController\n */\n this.controlParams = {};\n /**\n * 子适配器\n * @author lxm\n * @date 2023-07-19 04:14:50\n * @type {{ [key: string]: IProvider }}\n */\n this.providers = {};\n this.registerToCtx();\n this.controlPanel = getControlPanel(model);\n if (!this.controlPanel) {\n const panelModel = ibiz.util.layoutPanel.get(\n \"\".concat(model.controlType, \"_DEFAULT\")\n );\n if (panelModel) {\n this.controlPanel = clone14(panelModel);\n }\n }\n this.updateContextParams({});\n }\n get _evt() {\n return this.evt;\n }\n get view() {\n return this.ctx.view;\n }\n /**\n * 往ctx里注册控制器\n * @author lxm\n * @date 2023-07-31 08:37:17\n * @protected\n */\n registerToCtx() {\n this.ctx.registerController(this.model.name || this.model.id, this);\n }\n /**\n * 获取部件通用的事件参数\n * @author lxm\n * @date 2023-03-26 11:42:21\n * @readonly\n */\n getEventArgs() {\n const result = super.getEventArgs();\n return {\n ...result,\n data: this.getData() || [],\n ctrl: this\n };\n }\n initState() {\n super.initState();\n this.state.isLoading = false;\n }\n async onCreated() {\n var _a;\n await super.onCreated();\n if (this.controlPanel) {\n this.childNames.push(this.controlPanel.name);\n const provider = await getControlProvider(this.controlPanel);\n this.providers[this.controlPanel.name] = provider;\n }\n this.handleControlParams();\n this.initControlScheduler(this.model.controlLogics);\n if ((_a = this.scheduler) == null ? void 0 : _a.hasControlEventTrigger) {\n this._evt.onAll((eventName, event) => {\n this.scheduler.triggerControlEvent(\n event.targetName,\n event.eventName,\n event\n );\n });\n }\n }\n async onMounted() {\n var _a;\n await super.onMounted();\n (_a = this.scheduler) == null ? void 0 : _a.startTimerTrigger();\n }\n async onDestroyed() {\n await super.onDestroyed();\n if (this.scheduler) {\n this.scheduler.destroy();\n }\n this.params.destroy();\n }\n /**\n * 处理上下文和导航参数相关的,如自定义导航参数的处理\n *\n * @author lxm\n * @date 2022-09-08 15:09:47\n * @protected\n */\n updateContextParams(opts) {\n if (opts.context) {\n this.context.reset({}, opts.context);\n }\n if (opts.params) {\n this.params.reset({}, opts.params);\n }\n const { controlNavContexts, controlNavParams } = this.model;\n let context = {};\n if (notNilEmpty7(controlNavContexts)) {\n context = convertNavData(controlNavContexts, this.params, this.context);\n }\n Object.assign(this.context, context);\n let params = {};\n if (notNilEmpty7(controlNavParams)) {\n params = convertNavData(controlNavParams, this.params, this.context);\n }\n Object.assign(this.params, params);\n }\n /**\n * 获取部件类型\n * @author lxm\n * @date 2023-03-28 02:23:37\n * @return {*} {string}\n */\n getControlType() {\n return this.model.controlType;\n }\n /**\n * 获取部件数据,非数据部件没有数据\n * @author lxm\n * @date 2023-03-26 11:41:51\n * @return {*} {(IData[] | null)}\n */\n getData() {\n return null;\n }\n /**\n * 开始加载\n *\n * @author chitanda\n * @date 2022-09-21 15:09:18\n * @return {*} {Promise<void>}\n */\n async startLoading() {\n this.state.isLoading = true;\n this.ctx.startLoading();\n }\n /**\n * 加载完毕\n *\n * @author chitanda\n * @date 2022-09-21 15:09:31\n * @return {*} {Promise<void>}\n */\n async endLoading() {\n this.state.isLoading = false;\n this.ctx.endLoading();\n }\n /**\n * 处理数据能力方法通用参数,返回能力执行最终使用的参数\n * @author lxm\n * @date 2023-05-23 03:12:47\n * @protected\n * @param {IDataAbilityParams} [args]\n * @return {*}\n */\n handlerAbilityParams(args) {\n const context = this.context.clone();\n const params = { ...this.params };\n let data = this.getData() || [];\n if (args == null ? void 0 : args.data) {\n data = Array.isArray(args.data) ? args.data : [args.data];\n }\n if (args == null ? void 0 : args.context) {\n Object.assign(context, args.context);\n }\n if (args == null ? void 0 : args.viewParam) {\n Object.assign(params, args.viewParam);\n }\n return { context, params, data };\n }\n /**\n * 设置布局面板控制器\n * @author lxm\n * @date 2023-08-01 03:28:17\n * @param {IViewLayoutPanelController} panel\n */\n setLayoutPanel(panel) {\n this.layoutPanel = panel;\n if (this.layoutPanel.state.isMounted) {\n this.mountCounter.attend(this.layoutPanel.model.name);\n } else {\n this.layoutPanel.evt.on(\"onMounted\", () => {\n this.mountCounter.attend(this.layoutPanel.model.name);\n });\n }\n }\n /**\n * 部件参数解析\n *\n * @author zk\n * @date 2023-09-27 07:09:08\n * @protected\n * @memberof ControlController\n */\n handleControlParams() {\n if (!this.model.controlParam) {\n return;\n }\n const { ctrlParams } = this.model.controlParam;\n let params = {};\n if (notNilEmpty7(ctrlParams)) {\n params = convertNavData(ctrlParams, this.params, this.context);\n }\n Object.assign(this.controlParams, params);\n }\n /**\n * 初始化部件逻辑调度器\n * @author lxm\n * @date 2023-08-21 11:53:37\n * @param {IControlLogic[]} logics\n * @return {*} {void}\n */\n initControlScheduler(logics = []) {\n if (logics.length === 0) {\n return;\n }\n this.scheduler = ibiz.scheduler.createControlScheduler(logics);\n this.scheduler.defaultParamsCb = () => {\n return this.getEventArgs();\n };\n }\n /**\n * 执行对应部件行为消息提示\n * @author lxm\n * @date 2023-09-07 04:51:21\n * @param {string} tag\n * @param {({ default?: string; data?: IData | IData[]; error?: Error })} [opts]\n * @return {*} {void}\n */\n actionNotification(tag, opts) {\n var _a;\n const { ctrlMsg } = this.model;\n const msgItem = (_a = ctrlMsg == null ? void 0 : ctrlMsg.ctrlMsgItems) == null ? void 0 : _a.find((item) => item.name === tag);\n let message;\n let duration;\n if (msgItem && msgItem.content) {\n duration = isNil19(msgItem.timeout) ? void 0 : msgItem.timeout / 1e3;\n const scriptParams = { ...this.getEventArgs() };\n if (opts == null ? void 0 : opts.data) {\n scriptParams.data = opts.data;\n }\n message = ScriptFactory.execScriptFn(\n scriptParams,\n \"`\".concat(msgItem.content, \"`\"),\n {\n isAsync: false,\n singleRowReturn: true\n }\n );\n } else {\n const resTag = \"CONTROL.\".concat(this.model.controlType, \".\").concat(tag).toUpperCase();\n message = ibiz.i18n.t(resTag, \"\");\n if (message === resTag) {\n message = \"\";\n }\n }\n if (!message && (opts == null ? void 0 : opts.default)) {\n message = opts.default;\n }\n if (!message && (opts == null ? void 0 : opts.error)) {\n message = message || opts.error.message;\n }\n if (!message) {\n return;\n }\n if (opts == null ? void 0 : opts.error) {\n ibiz.log.error(opts.error);\n throw new NoticeError(message, duration);\n } else {\n ibiz.message.success(message, duration, duration === 0);\n }\n }\n};\n\n// src/controller/common/control/md-control.controller.ts\nimport { isElementSame, RuntimeError as RuntimeError31 } from \"@ibiz-template/core\";\nimport { debounce } from \"lodash-es\";\nvar MDControlController = class extends ControlController {\n constructor() {\n super(...arguments);\n /**\n * 实体属性映射,key是id,value是name\n * @author lxm\n * @date 2023-09-07 03:16:56\n * @protected\n */\n this.fieldIdNameMap = /* @__PURE__ */ new Map();\n }\n get _evt() {\n return this.evt;\n }\n initState() {\n super.initState();\n this.state.items = [];\n this.state.selectedData = [];\n this.state.searchParams = {};\n this.state.noSort = false;\n this.state.sortQuery = \"\";\n this.state.curPage = 1;\n this.state.size = 20;\n this.state.total = 0;\n this.state.isLoaded = false;\n this.state.singleSelect = true;\n this.state.mdctrlActiveMode = 0;\n this.state.groups = [];\n }\n async onCreated() {\n var _a;\n await super.onCreated();\n this.dataEntity = await ibiz.hub.getAppDataEntity(\n this.model.appDataEntityId\n );\n (_a = this.dataEntity.appDEFields) == null ? void 0 : _a.forEach((field) => {\n this.fieldIdNameMap.set(field.id, field.name);\n });\n const fn = this.onDataChange.bind(this);\n this.onDataChange = debounce((msg) => {\n fn(msg);\n }, 300);\n ibiz.mc.command.change.on(this.onDataChange);\n this.setSort();\n }\n async onMounted() {\n await super.onMounted();\n if (this.state.loadDefault) {\n this.load({ isInitialLoad: true });\n }\n }\n onDestroyed() {\n ibiz.mc.command.change.off(this.onDataChange);\n return super.onDestroyed();\n }\n /**\n * 当数据放生变更时,若为当前应用实体数据。则多数据部件进行刷新\n *\n * @author chitanda\n * @date 2023-09-13 17:09:04\n * @protected\n * @param {IData} msg\n */\n onDataChange(msg) {\n if (msg.data && msg.data.srfdecodename === this.dataEntity.codeName) {\n this.refresh();\n }\n }\n /**\n * 设置排序\n * 无参数时设置的是默认排序。\n *\n * @author lxm\n * @date 2022-09-28 13:09:44\n * @param {string} key 排序字段\n * @param {string} order 排序顺序\n */\n setSort(key, order) {\n if (key && order) {\n this.state.sortQuery = \"\".concat(key, \",\").concat(order);\n }\n }\n /**\n * 获取请求过滤参数(整合了视图参数,各种过滤条件,排序,分页)\n * @author lxm\n * @date 2023-05-23 03:20:40\n * @param {IParams} [extraParams] 额外视图参数,附加在最后\n * @return {*} {Promise<IParams>}\n */\n async getFetchParams(extraParams) {\n const { curPage, size, sortQuery, noSort } = this.state;\n const resultParams = {\n ...this.params\n };\n if (size) {\n resultParams.page = curPage - 1;\n resultParams.size = size;\n }\n if (!noSort && sortQuery) {\n resultParams.sort = sortQuery;\n }\n await this._evt.emit(\"onBeforeLoad\", void 0);\n Object.assign(resultParams, {\n ...this.state.searchParams\n });\n if (extraParams) {\n Object.assign(resultParams, extraParams);\n }\n return resultParams;\n }\n /**\n * 部件加载数据行为\n *\n * @author lxm\n * @date 2022-08-19 14:08:50\n */\n async load(args = {}) {\n if (this.state.isSimple) {\n return [];\n }\n await this.startLoading();\n try {\n const isInitialLoad = args.isInitialLoad === true;\n const isLoadMore = args.isLoadMore === true;\n if (isInitialLoad) {\n this.state.curPage = 1;\n } else if (isLoadMore) {\n this.state.curPage += 1;\n }\n const { context } = this.handlerAbilityParams(args);\n const params = await this.getFetchParams(args == null ? void 0 : args.viewParam);\n const res = await this.service.fetch(context, params);\n if (typeof res.total === \"number\") {\n this.state.total = res.total;\n }\n if (isLoadMore) {\n this.state.items.push(...res.data);\n } else {\n this.state.items = res.data;\n }\n await this.afterLoad(args, res.data);\n this.state.isLoaded = true;\n await this._evt.emit(\"onLoadSuccess\", {\n isInitialLoad\n });\n } catch (error) {\n await this._evt.emit(\"onLoadError\", void 0);\n this.actionNotification(\"FETCHERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n this.state.items.forEach((item, index) => {\n item.srfserialnum = index + 1;\n });\n this.actionNotification(\"FETCHSUCCESS\");\n return this.state.items;\n }\n /**\n * 部件加载后处理\n *\n * @author chitanda\n * @date 2023-06-21 15:06:44\n * @param {MDCtrlLoadParams} args 本次请求参数\n * @param {IData[]} items 上游处理的数据(默认是后台数据)\n * @return {*} {Promise<IData[]>} 返回给后续处理的数据\n */\n async afterLoad(args, items) {\n return items;\n }\n /**\n * 部件刷新,走初始加载\n * @author lxm\n * @date 2023-05-23 03:42:41\n */\n async refresh() {\n await this.load({ isInitialLoad: false });\n }\n /**\n * 删除选中的数据\n *\n * @author lxm\n * @date 2022-09-06 19:09:48\n * @returns {*} {Promise<void>}\n */\n async remove(args) {\n const { context, params, data } = this.handlerAbilityParams(args);\n if (!(data == null ? void 0 : data.length)) {\n throw new RuntimeError31(\"\\u672A\\u9009\\u4E2D\\u6570\\u636E\");\n }\n if ((args == null ? void 0 : args.silent) !== true) {\n const del = await ibiz.confirm.error({\n title: \"\\u6570\\u636E\\u5220\\u9664\",\n desc: \"\\u786E\\u8BA4\\u5220\\u9664\\u6570\\u636E\\uFF1F\"\n });\n if (!del) {\n return;\n }\n }\n await this._evt.emit(\"onBeforeRemove\", void 0);\n await this.startLoading();\n let needRefresh = false;\n try {\n const deName = calcDeCodeNameById(this.model.appDataEntityId);\n await handleAllSettled(\n data.map(async (item) => {\n if (item.srfuf !== 0 /* CREATE */) {\n const tempContext = context.clone();\n tempContext[deName] = item.srfkey;\n await this.service.remove(tempContext, params);\n needRefresh = true;\n }\n this.afterRemove(item);\n })\n );\n if ((args == null ? void 0 : args.silent) !== true) {\n this.actionNotification(\"REMOVESUCCESS\", {\n data,\n default: \"\\u6570\\u636E[\".concat(data.map((item) => item.srfmajortext).join(\"\\u3001\"), \"]\\u5220\\u9664\\u6210\\u529F!\")\n });\n }\n if (needRefresh && !(args == null ? void 0 : args.notRefresh)) {\n await this.refresh();\n }\n } catch (error) {\n await this._evt.emit(\"onRemoveError\", void 0);\n this.actionNotification(\"REMOVEERROR\", {\n error,\n data\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n this.state.selectedData = [];\n await this._evt.emit(\"onRemoveSuccess\", void 0);\n }\n /**\n * 后台删除结束后界面删除逻辑\n *\n * @author lxm\n * @date 2022-09-06 19:09:10\n * @param {IData} data\n */\n afterRemove(data) {\n const index = this.state.items.findIndex(\n (item) => item.srfkey === data.srfkey\n );\n if (index !== -1) {\n this.state.items.splice(index, 1);\n }\n }\n /**\n * 获取多数据部件的选中数据集合\n *\n * @author lxm\n * @date 2022-08-30 18:08:00\n * @returns {*} {IData[]}\n */\n getData() {\n return this.state.selectedData || [];\n }\n setActive(item) {\n return this._evt.emit(\"onActive\", {\n data: [item]\n });\n }\n setSelection(selection) {\n const { selectedData } = this.state;\n if (!isElementSame(selectedData, selection)) {\n this.state.selectedData = selection;\n this._evt.emit(\"onSelectionChange\", {\n data: selection\n });\n }\n }\n /**\n * 行单击事件\n *\n * @author lxm\n * @date 2022-08-18 22:08:16\n * @param {IData} data 选中的单条数据\n */\n async onRowClick(data) {\n const { selectedData } = this.state;\n const filterArr = selectedData.filter((item) => item.srfkey !== data.srfkey);\n if (filterArr.length === selectedData.length) {\n this.setSelection(\n this.state.singleSelect ? [data] : selectedData.concat([data])\n );\n } else {\n this.setSelection(filterArr);\n }\n if (this.state.mdctrlActiveMode === 1) {\n await this.setActive(data);\n }\n }\n /**\n * 行双击事件\n *\n * @author lxm\n * @date 2022-08-18 22:08:16\n * @param {IData} data 选中的单条数据\n */\n async onDbRowClick(data) {\n if (this.state.mdctrlActiveMode === 2) {\n await this.setActive(data);\n }\n }\n /**\n * 数据导入\n *\n * @author lxm\n * @date 2022-11-08 15:11:54\n * @returns {*} {Promise<void>}\n */\n async importData() {\n var _a;\n const { appDataEntityId, dedataImportId } = this.model;\n const appDataEntity = await ibiz.hub.getAppDataEntity(appDataEntityId);\n const dataImport = (_a = appDataEntity.appDEDataImports) == null ? void 0 : _a.find(\n (importItem) => importItem.id === dedataImportId\n );\n if (!dataImport) {\n throw new RuntimeError31(\"\\u65E0\\u5BFC\\u5165\\u6A21\\u578B\\uFF01\");\n }\n let importName = \"DataImport\";\n if (dataImport.enableCustomized) {\n importName = \"DataImport2\";\n }\n const modal = ibiz.overlay.createModal(\n importName,\n {\n dismiss: () => modal.dismiss(),\n appDataEntity\n },\n {\n width: \"auto\",\n placement: \"center\"\n }\n );\n modal.present();\n await modal.onWillDismiss();\n }\n /**\n * 数据导出\n *\n * @param {MouseEvent} event 原生js点击事件\n * @returns {*} {Promise<void>}\n * @memberof MDControlController\n */\n async exportData(_args) {\n }\n};\n\n// src/controller/control/app-menu/app-menu.controller.ts\nimport {\n findRecursiveChild,\n RuntimeError as RuntimeError32,\n RuntimeModelError as RuntimeModelError23\n} from \"@ibiz-template/core\";\nvar AppMenuController = class extends ControlController {\n initState() {\n super.initState();\n this.state.menuItemsState = {};\n }\n /**\n * 视图层级\n *\n * @readonly\n * @type {(number | undefined)}\n * @memberof AppMenuController\n */\n get routeDepth() {\n return this.view.modal.routeDepth;\n }\n async onCreated() {\n var _a;\n await super.onCreated();\n this.app = await ibiz.hub.getApp(this.context.srfappid);\n (_a = this.model.appMenuItems) == null ? void 0 : _a.forEach((item) => {\n this.initMenuItemState(item);\n });\n }\n /**\n * 菜单项点击回调,触发对应的应用功能\n *\n * @author chitanda\n * @date 2022-12-22 14:12:53\n * @param {string} id\n * @return {*} {Promise<void>}\n */\n async onClickMenuItem(id, event, useDepth = true) {\n const menuItem = findRecursiveChild(this.model, id, {\n compareField: \"id\",\n childrenFields: [\"appMenuItems\"]\n });\n if (!menuItem) {\n throw new RuntimeError32(\"\\u627E\\u4E0D\\u5230\\u540D\\u4E3A\".concat(id, \"\\u7684\\u83DC\\u5355\\u9879\"));\n }\n this.evt.emit(\"onClick\", {\n eventArg: id,\n event\n });\n if (!menuItem.appFuncId) {\n throw new RuntimeModelError23(menuItem, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5E94\\u7528\\u529F\\u80FD\");\n }\n const tempContext = this.context.clone();\n if (this.routeDepth && useDepth) {\n Object.assign(tempContext, {\n toRouteDepth: this.routeDepth + 1\n });\n }\n await ibiz.commands.execute(\n AppFuncCommand.TAG,\n menuItem.appFuncId,\n tempContext,\n this.params\n );\n }\n /**\n * 初始化菜单项状态\n *\n * @author lxm\n * @date 2022-10-12 20:10:37\n * @param {AppMenuItemModel} menu\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n initMenuItemState(menu) {\n var _a;\n const result = { permitted: true, visible: true };\n if (menu.hidden) {\n result.visible = false;\n } else {\n let permitted = true;\n if (menu.accessKey) {\n permitted = this.app.authority.calcByResCode(menu.accessKey);\n }\n let visible = permitted;\n if ((_a = menu.appMenuItems) == null ? void 0 : _a.length) {\n const childrenState = menu.appMenuItems.map((child) => {\n return this.initMenuItemState(child).visible;\n });\n visible = visible && childrenState.includes(true);\n }\n result.permitted = permitted;\n result.visible = visible;\n }\n this.state.menuItemsState[menu.id] = result;\n return result;\n }\n /**\n * 所有项平铺\n * @return {*}\n * @author: zhujiamin\n * @Date: 2022-09-09 16:48:21\n */\n getAllItems() {\n const result = [];\n const flattenMenus = (menuItems) => {\n menuItems.forEach((item) => {\n result.push(item);\n if (item.appMenuItems && item.appMenuItems.length > 0) {\n flattenMenus(item.appMenuItems);\n }\n });\n };\n flattenMenus(this.model.appMenuItems);\n return result;\n }\n /**\n * 根据id去视图控制器里取得计数器对象\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-07-10 15:14:21\n */\n getCounter(id) {\n const { counters } = this.ctx.view;\n if (counters[id]) {\n return counters[id];\n }\n return null;\n }\n};\n\n// src/controller/control/app-menu-icon-view/app-menu-icon-view.controller.ts\nimport {\n findRecursiveChild as findRecursiveChild2,\n RuntimeError as RuntimeError33,\n RuntimeModelError as RuntimeModelError24\n} from \"@ibiz-template/core\";\nvar AppMenuIconViewController = class extends AppMenuController {\n async onClickMenuItem(id, event) {\n const menuItem = findRecursiveChild2(this.model, id, {\n compareField: \"id\",\n childrenFields: [\"appMenuItems\"]\n });\n if (!menuItem) {\n throw new RuntimeError33(\"\\u627E\\u4E0D\\u5230\\u540D\\u4E3A\".concat(id, \"\\u7684\\u83DC\\u5355\\u9879\"));\n }\n this.evt.emit(\"onClick\", {\n eventArg: id,\n event\n });\n if (!menuItem.appFuncId) {\n throw new RuntimeModelError24(menuItem, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5E94\\u7528\\u529F\\u80FD\");\n }\n const tempContext = this.context.clone();\n if (this.routeDepth === 1) {\n Object.assign(tempContext, {\n toRouteDepth: 1\n });\n }\n await ibiz.commands.execute(\n AppFuncCommand.TAG,\n menuItem.appFuncId,\n tempContext,\n this.params\n );\n }\n};\n\n// src/controller/control/calendar/calendar.controller.ts\nimport dayjs2 from \"dayjs\";\n\n// src/controller/control/calendar/calendar.service.ts\nimport { RuntimeError as RuntimeError34 } from \"@ibiz-template/core\";\nvar CalendarService = class extends MDControlService {\n /**\n * 执行查询多条数据的方法\n *\n * @author zk\n * @date 2023-08-08 10:08:47\n * @param {IParams} context\n * @param {IParams} [params={}]\n * @return {*} Promise<ICalendarItemData[]>\n * @memberof CalendarService\n */\n async search(context, params = {}) {\n const { sysCalendarItems } = this.model;\n if (!sysCalendarItems) {\n return [];\n }\n const promises = sysCalendarItems.map(\n async (item) => {\n const fetchAction = item.appDEDataSetId || \"fetchdefault\";\n return this.exec2(\n fetchAction,\n context,\n params,\n void 0,\n item.appDataEntityId\n );\n }\n );\n const resArray = await Promise.all(promises);\n const twoDimensionalArray = resArray.map(\n (res, index) => {\n return this.setCalendarConfigData(res.data, index);\n }\n );\n return twoDimensionalArray.flat();\n }\n /**\n * 设置日历项配置\n *\n * @author zk\n * @date 2023-08-08 06:08:14\n * @param {IData[]} items\n * @param {number} index\n * @return {*} {ICalendarItemData[]}\n * @memberof CalendarService\n */\n setCalendarConfigData(items, index) {\n const { sysCalendarItems } = this.model;\n if (!sysCalendarItems) {\n throw new RuntimeError34(\"\\u672A\\u627E\\u5230\\u65E5\\u5386\\u9879\\u6A21\\u578B\");\n }\n const calendarItem = sysCalendarItems[index];\n if (!calendarItem) {\n throw new RuntimeError34(\"\\u672A\\u627E\\u5230\\u65E5\\u5386\\u9879\\u6A21\\u578B\");\n }\n return items.map((item) => {\n return new CalendarItemData(calendarItem, item);\n });\n }\n /**\n * 执行方法实体方法(通过实体id和方法名)\n *\n * @author zk\n * @date 2023-08-08 06:08:49\n * @param {string} methodName\n * @param {IParams} context\n * @param {IData} [data={}]\n * @param {IParams} [params={}]\n * @param {string} [appDataEntityId=this.model.appDataEntityId!]\n * @return {*} {Promise<IHttpResponse>}\n * @memberof CalendarService\n */\n async exec2(methodName, context, data = {}, params = {}, appDataEntityId = this.model.appDataEntityId) {\n const res = await this.app.deService.exec(\n appDataEntityId,\n methodName,\n context,\n data,\n params\n );\n return res;\n }\n};\n\n// src/controller/control/calendar/calendar.controller.ts\nvar CalendarController = class extends MDControlController {\n /**\n * 初始化状态\n *\n * @author zk\n * @date 2023-08-09 11:08:05\n * @protected\n * @memberof CalendarController\n */\n initState() {\n super.initState();\n this.state.selectedDate = /* @__PURE__ */ new Date();\n this.state.size = 1e3;\n }\n /**\n * 生命周期-创建完成\n *\n * @author zk\n * @date 2023-08-09 11:08:13\n * @protected\n * @return {*} {Promise<void>}\n * @memberof CalendarController\n */\n async onCreated() {\n await super.onCreated();\n this.service = new CalendarService(this.model);\n await this.service.init(this.context);\n }\n /**\n * 日历加载\n *\n * @author zk\n * @date 2023-08-08 01:08:24\n * @param {MDCtrlLoadParams} [args={}]\n * @return {*} {Promise<IData[][]>}\n * @memberof CalendarController\n */\n async load(args = {}) {\n const isInitialLoad = args.isInitialLoad === true;\n const { context } = this.handlerAbilityParams(args);\n const params = await this.getFetchParams(args == null ? void 0 : args.viewParam);\n await this.startLoading();\n let items;\n try {\n items = await this.service.search(context, params);\n } finally {\n await this.endLoading();\n }\n await this.afterLoad(args, items);\n this.state.isLoaded = true;\n this.state.items = items;\n this.sortItems();\n await this.evt.emit(\"onLoadSuccess\", {\n isInitialLoad\n });\n return items;\n }\n /**\n * 前台排序(时间轴类型)\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-11-22 15:16:43\n */\n sortItems() {\n if (this.model.calendarStyle === \"TIMELINE\") {\n this.state.items.sort((a, b) => {\n const x = a.beginTime;\n const y = b.beginTime;\n let result = 0;\n if (dayjs2(x).isAfter(y)) {\n result = -1;\n } else if (dayjs2(x).isBefore(y)) {\n result = 1;\n }\n return result;\n });\n }\n }\n /**\n * 获取当前选中的日期\n *\n * @author zk\n * @date 2023-08-08 11:08:44\n * @protected\n * @param {IParams} param\n * @return {*} {IData}\n * @memberof CalendarController\n */\n getCurSelectDate(param) {\n const { selectedDate } = this.state;\n const { srfstartdate, srfenddate } = param;\n if (!srfstartdate || !srfenddate) {\n const firstDayOfMonth = new Date(\n selectedDate.getFullYear(),\n selectedDate.getMonth(),\n 1\n );\n const lastDayOfMonth = new Date(\n selectedDate.getFullYear(),\n selectedDate.getMonth() + 1,\n 1\n );\n return {\n srfstartdate: dayjs2(firstDayOfMonth).format(\"YYYY-MM-DD HH:mm:ss\"),\n srfenddate: dayjs2(lastDayOfMonth).format(\"YYYY-MM-DD HH:mm:ss\")\n };\n }\n return { srfstartdate, srfenddate };\n }\n /**\n * 获取请求参数\n *\n * @author zk\n * @date 2023-08-09 11:08:35\n * @param {IParams} [extraParams={}]\n * @return {*} {Promise<IParams>}\n * @memberof CalendarController\n */\n async getFetchParams(extraParams = {}) {\n const { curPage, size, sortQuery, noSort } = this.state;\n const resultParams = {\n ...this.params\n };\n if (!noSort && sortQuery) {\n resultParams.sort = sortQuery;\n }\n await this._evt.emit(\"onBeforeLoad\", void 0);\n Object.assign(resultParams, {\n ...this.state.searchParams\n });\n if (size) {\n resultParams.page = curPage - 1;\n resultParams.size = size;\n }\n if (extraParams) {\n Object.assign(resultParams, extraParams);\n }\n if (this.model.calendarStyle !== \"TIMELINE\") {\n const timeParam = this.getCurSelectDate(resultParams);\n Object.assign(resultParams, timeParam);\n }\n return resultParams;\n }\n /**\n * 行单击事件\n *\n * @author zk\n * @date 2023-08-08 05:08:15\n * @param {ICalendarItemData} data\n * @return {*} {Promise<void>}\n * @memberof CalendarController\n */\n async onRowClick(data) {\n const { selectedData } = this.state;\n const filterArr = selectedData.filter(\n (item) => item.deData.srfkey !== data.deData.srfkey\n );\n if (filterArr.length === selectedData.length) {\n this.setSelection(\n this.state.singleSelect ? [data] : selectedData.concat([data])\n );\n } else {\n this.setSelection(filterArr);\n }\n if (this.state.mdctrlActiveMode === 1) {\n await this.setActive(data);\n }\n }\n /**\n * 设置选中日期\n *\n * @author zk\n * @date 2023-08-08 11:08:08\n * @param {Date} date\n * @memberof CalendarController\n */\n setSelectDate(date) {\n this.state.selectedDate = date;\n }\n};\n\n// src/controller/control/chart/chart.controller.ts\nimport { RuntimeError as RuntimeError36 } from \"@ibiz-template/core\";\n\n// src/controller/control/chart/generator/chart-options-generator.ts\nimport { mergeDeepRight as mergeDeepRight3 } from \"ramda\";\nimport { RuntimeError as RuntimeError35 } from \"@ibiz-template/core\";\n\n// src/controller/control/chart/generator/line-series-generator.ts\nimport { RuntimeModelError as RuntimeModelError26 } from \"@ibiz-template/core\";\n\n// src/controller/control/chart/generator/base-series-generator.ts\nimport { plus, RuntimeModelError as RuntimeModelError25, toNumberOrNil } from \"@ibiz-template/core\";\nimport dayjs3 from \"dayjs\";\nimport minMax from \"dayjs/plugin/minMax\";\nimport isSameOrBefore from \"dayjs/plugin/isSameOrBefore\";\nimport quarterOfYear from \"dayjs/plugin/quarterOfYear\";\nimport weekOfYear from \"dayjs/plugin/weekOfYear\";\nimport isoWeek from \"dayjs/plugin/isoWeek\";\nimport { clone as clone15, isNil as isNil20, mergeDeepRight } from \"ramda\";\ndayjs3.extend(minMax);\ndayjs3.extend(isSameOrBefore);\ndayjs3.extend(quarterOfYear);\ndayjs3.extend(weekOfYear);\ndayjs3.extend(isoWeek);\nvar DEFAULT_GROUP = \"$default_group\";\nvar BaseSeriesGenerator = class {\n /**\n * Creates an instance of BaseSeriesGenerator.\n * @author lxm\n * @date 2023-06-09 02:46:54\n * @param {T} model 序列模型\n * @param {ChartOptionsGenerator} chartGenerator 图表生成器\n */\n constructor(model, chartGenerator) {\n this.model = model;\n this.chartGenerator = chartGenerator;\n /**\n * 根据分组处理出来的图表数据数组\n * @author lxm\n * @date 2023-06-09 02:58:28\n * @type {GroupData}\n */\n this.chartDataArr = [];\n /**\n * 静态的序列options\n * @author lxm\n * @date 2023-06-09 03:08:47\n * @type {SeriesOption}\n */\n this.staticOptions = {};\n /**\n * 是否根据代码表自动补全分类\n * @author lxm\n * @date 2023-06-09 09:28:04\n * @type {boolean}\n */\n this.autoCompleteCategory = true;\n this.model = model;\n this.chartGenerator = chartGenerator;\n const { chartSeriesEncode, caption, id, userParam } = model;\n if (!model.catalogField) {\n throw new RuntimeModelError25(model, \"\\u7F3A\\u5C11\\u5206\\u7C7B\\u5C5E\\u6027\\u914D\\u7F6E\");\n }\n if (!model.valueField) {\n throw new RuntimeModelError25(model, \"\\u7F3A\\u5C11\\u503C\\u5C5E\\u6027\\u914D\\u7F6E\");\n }\n this.catalogField = chartGenerator.getFieldKey(model.catalogField);\n this.valueField = chartGenerator.getFieldKey(model.valueField);\n this.groupField = model.seriesField ? chartGenerator.getFieldKey(model.seriesField) : void 0;\n const { chartXAxisId, chartYAxisId } = chartSeriesEncode || {};\n this.xAxisIndex = toNumberOrNil(chartXAxisId);\n this.yAxisIndex = toNumberOrNil(chartYAxisId);\n this.seriesName = caption || id;\n this.staticOptions = this.calcStaticOptions();\n if (userParam) {\n this.seriesUserParam = parseUserParams2(userParam);\n }\n }\n /**\n * 计算静态序列的options\n * @author lxm\n * @date 2023-06-09 03:09:34\n */\n calcStaticOptions() {\n const options = {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: this.model.seriesType,\n name: this.seriesName,\n emphasis: {\n label: {\n fontSize: 20,\n show: true\n }\n },\n label: {\n position: \"top\",\n show: true\n }\n };\n return options;\n }\n /**\n * 有代码就转换,值为空直接返回空\n *\n * @author lxm\n * @date 2023-06-09 08:42:50\n * @author lxm\n * @date 2023-06-09 08:46:00\n * @param {(string | undefined)} codeListKey 代码表值\n * @param {(string | undefined)} val 数据值\n * @param {boolean} isExclude 是否排除非代码表的值,true时,匹配不到代码表返回undefined,反之返回原值\n * @return {*} {(string | undefined)}\n */\n translateVal(codeListKey, val, isExclude = false) {\n if (isNil20(val)) {\n return void 0;\n }\n if (isNil20(codeListKey)) {\n return val;\n }\n const codeListItems = this.chartGenerator.codeListMap.get(codeListKey);\n if (codeListItems == null ? void 0 : codeListItems.length) {\n const find = codeListItems.find((x) => x.value === val);\n if (find) {\n return find.text;\n }\n }\n return isExclude ? void 0 : val;\n }\n /**\n * 准备图表数据\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-11-23 15:24:12\n */\n prepareChartData(groupData, deData, catalog, group) {\n var _a;\n if (this.groupField) {\n Object.assign(deData, { [this.groupField]: group });\n }\n if (this.catalogField) {\n Object.assign(deData, { [this.catalogField]: catalog });\n }\n const tempChartData = new ChartData(deData, this.model, catalog, group);\n groupData[group].get(catalog).chartData = tempChartData;\n (_a = this.chartDataArr) == null ? void 0 : _a.push(tempChartData);\n }\n /**\n * 计算分组数据\n * @author lxm\n * @date 2023-06-09 03:42:53\n * @param {IData[]} data\n * @return {*} {GroupData}\n */\n calcGroupData(data) {\n this.groupData = {};\n this.chartDataArr = [];\n const groupData = this.groupData;\n const { seriesCodeListId, catalogCodeListId } = this.model;\n data.forEach((item) => {\n let group = DEFAULT_GROUP;\n if (this.groupField) {\n const groupVal = this.translateVal(\n seriesCodeListId,\n item[this.groupField]\n );\n if (isNil20(groupVal)) {\n return;\n }\n group = groupVal;\n }\n if (!groupData[group]) {\n groupData[group] = /* @__PURE__ */ new Map();\n if (catalogCodeListId && this.autoCompleteCategory) {\n const codeListItems = this.chartGenerator.codeListMap.get(catalogCodeListId);\n codeListItems.forEach((x) => {\n groupData[group].set(x.text, { value: 0 });\n });\n }\n }\n const catalog = this.translateVal(\n catalogCodeListId,\n item[this.catalogField],\n true\n );\n if (!catalog) {\n if (catalogCodeListId && this.autoCompleteCategory) {\n const codeListItems = this.chartGenerator.codeListMap.get(catalogCodeListId);\n codeListItems.forEach((x) => {\n this.prepareChartData(\n groupData,\n { [this.valueField]: 0 },\n x.text,\n group\n );\n });\n }\n return;\n }\n if (!groupData[group].get(catalog)) {\n groupData[group].set(catalog, { value: 0 });\n }\n groupData[group].get(catalog).value = plus(\n groupData[group].get(catalog).value,\n item[this.valueField]\n );\n if (!groupData[group].get(catalog).chartData) {\n this.prepareChartData(groupData, item, catalog, group);\n } else {\n this.prepareChartData(\n groupData,\n { [this.valueField]: groupData[group].get(catalog).value },\n catalog,\n group\n );\n }\n });\n return groupData;\n }\n /**\n * 根据分组数据算出多个序列的options\n * 大多数图表分组都是一个分组数据生成一条series\n * @author lxm\n * @date 2023-06-09 03:34:24\n * @param {GroupData} groupData\n * @return {*} {SeriesOption[]}\n */\n calcGroupSeries(groupData) {\n return Object.keys(groupData).map((group) => {\n const catalogData = groupData[group];\n const data = this.calcSeriesData(catalogData);\n let options = { ...this.staticOptions, data };\n if (group !== DEFAULT_GROUP) {\n options.name = group;\n }\n if (this.seriesUserParam) {\n options = mergeDeepRight(options, this.seriesUserParam);\n }\n return options;\n });\n }\n /**\n * 生成每条序列的data,由于不同图表类型格式不同所以为any\n * 默认提供的是二维数组,按[x轴, y轴, 图表数据]格式\n * @author lxm\n * @date 2023-06-09 03:38:07\n * @param {CatalogData} catalogData\n * @return {*} {*}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n calcSeriesData(catalogData) {\n const temData = [];\n catalogData.forEach((catalog, key) => {\n temData.push([key, catalog.value, catalog.chartData]);\n });\n return temData;\n }\n /**\n * 根据数据计算出序列的options\n * @author lxm\n * @date 2023-06-09 03:44:31\n * @param {IData[]} data\n * @return {*} {(SeriesOption[] | SeriesOption)}\n */\n calcByData(data) {\n const tempData = this.dataPreprocess(data);\n const groupData = this.calcGroupData(tempData);\n this.addTimeData(groupData);\n return this.calcGroupSeries(groupData);\n }\n /**\n * 通过echarts事件的params获取封装好的图表数据\n * @author lxm\n * @date 2023-06-09 10:56:25\n * @param {ECElementEvent} params\n * @return {*} {string}\n */\n getChartDataByParams(params) {\n var _a, _b, _c;\n if (this.groupData && Object.keys(this.groupData).length === 1) {\n return (_a = this.groupData[DEFAULT_GROUP].get(params.name)) == null ? void 0 : _a.chartData;\n }\n return (_c = (_b = this.groupData) == null ? void 0 : _b[params.seriesName].get(params.name)) == null ? void 0 : _c.chartData;\n }\n /**\n * 数据预处理\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-08-16 09:58:39\n */\n dataPreprocess(data) {\n const tempData = [];\n data.forEach((singleData) => {\n tempData.push(clone15(singleData));\n });\n const { groupMode } = this.model;\n if (groupMode) {\n tempData.forEach((singleData) => {\n let format = \"\";\n if (groupMode === \"DAY\" || groupMode === \"YEAR\" || groupMode === \"MONTH\") {\n if (groupMode === \"DAY\") {\n format = \"YYYY-MM-DD\";\n } else if (groupMode === \"YEAR\") {\n format = \"YYYY\";\n } else if (groupMode === \"MONTH\") {\n format = \"YYYY-MM\";\n }\n if (singleData[this.catalogField]) {\n const formattedDate = dayjs3(singleData[this.catalogField]).format(\n format\n );\n singleData[this.catalogField] = formattedDate;\n }\n } else if (groupMode === \"QUARTER\") {\n if (singleData[this.catalogField]) {\n const formattedDate = \"\".concat(dayjs3(\n singleData[this.catalogField]\n ).format(\"YYYY\"), \"-\").concat(dayjs3(\n singleData[this.catalogField]\n ).quarter());\n singleData[this.catalogField] = formattedDate;\n }\n } else if (groupMode === \"YEARWEEK\") {\n if (singleData[this.catalogField]) {\n const formattedDate = \"\".concat(dayjs3(\n singleData[this.catalogField]\n ).format(\"YYYY\"), \"-\").concat(dayjs3(singleData[this.catalogField]).week());\n singleData[this.catalogField] = formattedDate;\n }\n }\n });\n }\n return tempData;\n }\n /**\n * 补全分组数据后排序\n * @param {GroupData} data\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-08-17 16:25:44\n */\n sortTimeData(data) {\n const { groupMode } = this.model;\n Object.keys(data).forEach((key) => {\n const dateMap = data[key];\n let sortedKeys = [];\n if (groupMode === \"DAY\" || groupMode === \"YEAR\" || groupMode === \"MONTH\") {\n sortedKeys = Array.from(dateMap.keys()).sort(\n (a, b) => dayjs3(a).diff(dayjs3(b))\n );\n } else if (groupMode === \"QUARTER\" || groupMode === \"YEARWEEK\") {\n sortedKeys = Array.from(dateMap.keys()).sort((a, b) => {\n const [yearA, quarterA] = a.split(\"-\");\n const [yearB, quarterB] = b.split(\"-\");\n if (yearA !== yearB) {\n return parseInt(yearA, 10) - parseInt(yearB, 10);\n }\n return parseInt(quarterA, 10) - parseInt(quarterB, 10);\n });\n }\n const sortedMap = /* @__PURE__ */ new Map();\n sortedKeys.forEach((sortKey) => {\n sortedMap.set(sortKey, dateMap.get(sortKey));\n });\n data[key] = sortedMap;\n });\n }\n /**\n * 根据分组模式补全分组数据并排序\n * @param {IData} data\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-08-16 13:57:53\n */\n addTimeData(data) {\n const { groupMode } = this.model;\n if (!groupMode || groupMode === \"CODELIST\") {\n return;\n }\n const dates = [];\n Object.keys(data).forEach((key) => {\n data[key].forEach((_val, date) => {\n dates.push(dayjs3(date));\n });\n });\n const maxDate = dayjs3.max(dates);\n const minDate = dayjs3.min(dates);\n if (groupMode === \"DAY\") {\n let currentDate = minDate;\n const endDate = maxDate;\n while (currentDate == null ? void 0 : currentDate.isSameOrBefore(endDate, \"day\")) {\n const formattedDate = currentDate.format(\"YYYY-MM-DD\");\n Object.keys(data).forEach((key) => {\n if (!data[key].get(formattedDate)) {\n data[key].set(formattedDate, { value: 0 });\n }\n });\n currentDate = currentDate.add(1, \"day\");\n }\n } else if (groupMode === \"YEAR\") {\n let currentYear = minDate.year();\n const endYear = maxDate.year();\n while (currentYear <= endYear) {\n const yearString = currentYear.toString();\n Object.keys(data).forEach((key) => {\n if (!data[key].get(yearString)) {\n data[key].set(yearString, { value: 0 });\n }\n });\n currentYear += 1;\n }\n } else if (groupMode === \"MONTH\") {\n let currentYearMonth = minDate.clone().startOf(\"month\");\n const endYearMonth = maxDate.clone().startOf(\"month\");\n while (currentYearMonth.isSameOrBefore(endYearMonth)) {\n const yearMonthString = currentYearMonth.format(\"YYYY-MM\");\n Object.keys(data).forEach((key) => {\n if (!data[key].get(yearMonthString)) {\n data[key].set(yearMonthString, { value: 0 });\n }\n });\n currentYearMonth = currentYearMonth.add(1, \"month\");\n }\n } else if (groupMode === \"QUARTER\") {\n const yearQuarters = [];\n Object.keys(data).forEach((key) => {\n data[key].forEach((_val, yearQuarter) => {\n yearQuarters.push(yearQuarter);\n });\n });\n const minYearQuarter = yearQuarters.reduce(\n (min, current) => current < min ? current : min,\n yearQuarters[0]\n );\n const maxYearQuarter = yearQuarters.reduce(\n (max, current) => current > max ? current : max,\n yearQuarters[0]\n );\n const [minYear] = minYearQuarter.split(\"-\");\n const [maxYear] = maxYearQuarter.split(\"-\");\n for (let year = parseInt(minYear, 10); year <= parseInt(maxYear, 10); year++) {\n for (let quarter = 1; quarter <= 4; quarter++) {\n const yearQuarter = \"\".concat(year, \"-\").concat(quarter);\n Object.keys(data).forEach((key) => {\n if (!data[key].get(yearQuarter)) {\n data[key].set(yearQuarter, { value: 0 });\n }\n });\n }\n }\n } else if (groupMode === \"YEARWEEK\") {\n const yearWeeks = [];\n Object.keys(data).forEach((key) => {\n data[key].forEach((_val, yearWeek) => {\n yearWeeks.push(yearWeek);\n });\n });\n const minYearWeek = yearWeeks.reduce(\n (min, current) => current < min ? current : min,\n yearWeeks[0]\n );\n const maxYearWeek = yearWeeks.reduce(\n (max, current) => current > max ? current : max,\n yearWeeks[0]\n );\n const [minYear] = minYearWeek.split(\"-\");\n const [maxYear] = maxYearWeek.split(\"-\");\n for (let year = parseInt(minYear, 10); year <= parseInt(maxYear, 10); year++) {\n const numWeeks = dayjs3(\"\".concat(year, \"-12-31\")).isoWeek();\n for (let week = 1; week <= numWeeks; week++) {\n const yearWeek = \"\".concat(year, \"-\").concat(week);\n Object.keys(data).forEach((key) => {\n if (!data[key].get(yearWeek)) {\n data[key].set(yearWeek, { value: 0 });\n }\n });\n }\n }\n }\n this.sortTimeData(data);\n }\n};\n\n// src/controller/control/chart/generator/line-series-generator.ts\nvar LineSeriesGenerator = class extends BaseSeriesGenerator {\n calcStaticOptions() {\n if (this.xAxisIndex === void 0) {\n throw new RuntimeModelError26(this.model, \"\\u5E8F\\u5217\\u6CA1\\u6709\\u914D\\u7F6EX\\u5750\\u6807\\u8F74\");\n }\n if (this.yAxisIndex === void 0) {\n throw new RuntimeModelError26(this.model, \"\\u5E8F\\u5217\\u6CA1\\u6709\\u914D\\u7F6EY\\u5750\\u6807\\u8F74\");\n }\n const options = super.calcStaticOptions();\n options.xAxisIndex = this.xAxisIndex;\n options.yAxisIndex = this.yAxisIndex;\n const { stack, step } = this.model;\n if (stack) {\n }\n if (step) {\n options.step = \"middle\";\n }\n return options;\n }\n};\n\n// src/controller/control/chart/generator/bar-series-generator.ts\nimport { RuntimeModelError as RuntimeModelError27 } from \"@ibiz-template/core\";\nvar BarSeriesGenerator = class extends BaseSeriesGenerator {\n calcStaticOptions() {\n if (this.xAxisIndex === void 0) {\n throw new RuntimeModelError27(this.model, \"\\u5E8F\\u5217\\u6CA1\\u6709\\u914D\\u7F6EX\\u5750\\u6807\\u8F74\");\n }\n if (this.yAxisIndex === void 0) {\n throw new RuntimeModelError27(this.model, \"\\u5E8F\\u5217\\u6CA1\\u6709\\u914D\\u7F6EY\\u5750\\u6807\\u8F74\");\n }\n const options = super.calcStaticOptions();\n options.xAxisIndex = this.xAxisIndex;\n options.yAxisIndex = this.yAxisIndex;\n const { stack } = this.model;\n if (stack) {\n }\n return options;\n }\n};\n\n// src/controller/control/chart/generator/funnel-series-generator.ts\nvar FunnelSeriesGenerator = class extends BaseSeriesGenerator {\n calcStaticOptions() {\n const options = super.calcStaticOptions();\n options.label.formatter = \"{b}: {d}%\";\n options.label.position = \"outer\";\n return options;\n }\n calcSeriesData(catalogData) {\n const temData = [];\n catalogData.forEach((catalog, key) => {\n temData.push({\n name: key,\n value: [catalog.value, catalog.chartData]\n });\n });\n return temData;\n }\n};\n\n// src/controller/control/chart/generator/pie-series-generator.ts\nvar PieSeriesGenerator = class extends BaseSeriesGenerator {\n calcStaticOptions() {\n const options = super.calcStaticOptions();\n options.label.formatter = \"{b}: {d}%\";\n options.label.position = \"outside\";\n return options;\n }\n calcSeriesData(catalogData) {\n const temData = [];\n catalogData.forEach((catalog, key) => {\n temData.push({\n name: key,\n value: [catalog.value, catalog.chartData]\n });\n });\n return temData;\n }\n};\n\n// src/controller/control/chart/generator/scatter-series-generator.ts\nimport { RuntimeModelError as RuntimeModelError28 } from \"@ibiz-template/core\";\nvar ScatterSeriesGenerator = class extends BaseSeriesGenerator {\n calcStaticOptions() {\n if (this.xAxisIndex === void 0) {\n throw new RuntimeModelError28(this.model, \"\\u5E8F\\u5217\\u6CA1\\u6709\\u914D\\u7F6EX\\u5750\\u6807\\u8F74\");\n }\n if (this.yAxisIndex === void 0) {\n throw new RuntimeModelError28(this.model, \"\\u5E8F\\u5217\\u6CA1\\u6709\\u914D\\u7F6EY\\u5750\\u6807\\u8F74\");\n }\n const options = super.calcStaticOptions();\n options.xAxisIndex = this.xAxisIndex;\n options.yAxisIndex = this.yAxisIndex;\n return options;\n }\n};\n\n// src/controller/control/chart/generator/radar-series-generator.ts\nimport { mergeDeepRight as mergeDeepRight2 } from \"ramda\";\n\n// src/controller/control/chart/generator/radar-coord-system.ts\nvar RadarCoordSystem = class {\n constructor(index) {\n /**\n * 指示器映射\n * @author lxm\n * @date 2023-06-11 06:34:26\n * @type {{ [p: string]: { max: number } }}\n */\n this.indicator = {};\n this.index = index;\n }\n /**\n * 获取指示器的字段集合\n * @author lxm\n * @date 2023-06-11 06:41:13\n * @readonly\n */\n get indicatorKeys() {\n if (!this._indicatorKeys || this._indicatorKeys.length !== Object.keys(this.indicator).length) {\n this._indicatorKeys = Object.keys(this.indicator).sort();\n }\n return this._indicatorKeys;\n }\n /**\n * 更新或创建指示器\n * @author lxm\n * @date 2023-06-11 06:46:02\n * @param {string} name\n * @param {number} max\n */\n updateIndicator(name, max) {\n const indicator = this.indicator[name];\n if (!indicator || indicator.max < max) {\n this.indicator[name] = {\n max\n };\n }\n }\n /**\n * 转换成雷达坐标系的options\n * @author lxm\n * @date 2023-06-11 06:42:04\n * @return {*} {RadarComponentOption}\n */\n toOptions() {\n const maxValue = Math.max(\n ...Object.values(this.indicator).map((item) => item.max)\n );\n return {\n indicator: this.indicatorKeys.map((key) => {\n return {\n name: key,\n max: maxValue\n };\n })\n };\n }\n};\n\n// src/controller/control/chart/generator/radar-series-generator.ts\nvar RadarSeriesGenerator = class extends BaseSeriesGenerator {\n calcStaticOptions() {\n const options = super.calcStaticOptions();\n return options;\n }\n /**\n * 计算雷达坐标系\n * @author lxm\n * @date 2023-06-11 07:08:30\n * @param {IData[]} data\n */\n calcRadarCoordSystem(data) {\n const groupData = this.calcGroupData(data);\n if (!this.chartGenerator.radarMap.has(this.catalogField)) {\n this.chartGenerator.radarMap.set(\n this.catalogField,\n new RadarCoordSystem(this.chartGenerator.radarMap.size)\n );\n }\n const radar = this.chartGenerator.radarMap.get(this.catalogField);\n Object.values(groupData).forEach((catalogData) => {\n catalogData.forEach((catalog, key) => {\n radar.updateIndicator(key, catalog.value);\n });\n });\n }\n calcByData(_data) {\n const groupData = this.groupData;\n const radar = this.chartGenerator.radarMap.get(this.catalogField);\n const radarData = Object.keys(groupData).map((group) => {\n const catalogData = groupData[group];\n const value = radar.indicatorKeys.map((key) => {\n if (catalogData.has(key)) {\n return catalogData.get(key).value;\n }\n return 0;\n });\n return {\n name: group === DEFAULT_GROUP ? this.seriesName : group,\n value\n };\n });\n let options = { ...this.staticOptions, data: radarData };\n if (this.seriesUserParam) {\n options = mergeDeepRight2(options, this.seriesUserParam);\n }\n return options;\n }\n};\n\n// src/controller/control/chart/generator/chart-options-generator.ts\nfunction parseUserParams2(userParams) {\n const option = {};\n if (userParams) {\n Object.keys(userParams).forEach((key) => {\n const index = key.indexOf(\".\");\n if (index === -1) {\n return;\n }\n const customKey = key.slice(index + 1);\n if (customKey) {\n try {\n option[customKey] = JSON.parse(userParams[key]);\n } catch (error) {\n option[customKey] = userParams[key];\n }\n }\n });\n }\n return option;\n}\nvar ChartOptionsGenerator2 = class {\n constructor(model) {\n this.model = model;\n /**\n * 根据模型配置算出来的静态echarts配置\n * @author lxm\n * @date 2023-06-07 09:50:44\n * @type {EChartsOption}\n */\n this.staticOptions = {\n tooltip: {\n show: true\n }\n };\n /**\n * 最终计算产物\n * @author lxm\n * @date 2023-06-08 09:23:40\n * @type {EChartsOption}\n */\n this.options = {};\n /**\n * 序列生成器集合\n * @author lxm\n * @date 2023-06-09 05:47:41\n * @type {BaseSeriesGenerator[]}\n */\n this.seriesGenerators = [];\n /**\n * 雷达坐标系映射\n * key是分类属性,值是雷达坐标的序号\n * @author lxm\n * @date 2023-06-08 03:51:03\n */\n this.radarMap = /* @__PURE__ */ new Map();\n /**\n * 缓存已经加载的代码表数据\n * @author lxm\n * @date 2023-06-09 07:47:35\n */\n this.codeListMap = /* @__PURE__ */ new Map();\n /**\n * 维护图表序列index对应序列生成器Map\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-11-22 17:27:15\n */\n this.seriesGeneratorIndexMap = /* @__PURE__ */ new Map();\n const {\n dechartTitle,\n dechartLegend,\n chartXAxises,\n chartYAxises,\n userParam\n } = model;\n if (dechartTitle) {\n this.staticOptions.title = this.calcTitleOption(dechartTitle);\n }\n if (dechartLegend) {\n this.staticOptions.legend = this.calcLegendOption(dechartLegend);\n }\n if (chartXAxises == null ? void 0 : chartXAxises.length) {\n this.staticOptions.xAxis = this.calcXYAxisOption(\n chartXAxises\n );\n }\n if (chartYAxises == null ? void 0 : chartYAxises.length) {\n this.staticOptions.yAxis = this.calcXYAxisOption(\n chartYAxises\n );\n }\n if (userParam) {\n this.chartUserParam = parseUserParams2(userParam);\n }\n }\n initSeriesGenerators() {\n var _a;\n (_a = this.model.dechartSerieses) == null ? void 0 : _a.forEach((series) => {\n let seriesGenerator;\n switch (series.seriesType) {\n case \"line\":\n seriesGenerator = new LineSeriesGenerator(series, this);\n break;\n case \"bar\":\n seriesGenerator = new BarSeriesGenerator(series, this);\n break;\n case \"scatter\":\n seriesGenerator = new ScatterSeriesGenerator(series, this);\n break;\n case \"pie\":\n seriesGenerator = new PieSeriesGenerator(series, this);\n break;\n case \"funnel\":\n seriesGenerator = new FunnelSeriesGenerator(series, this);\n break;\n case \"radar\":\n seriesGenerator = new RadarSeriesGenerator(series, this);\n break;\n default:\n ibiz.log.error(\"\\u56FE\\u8868\\u6682\\u672A\\u652F\\u6301\\u5E8F\\u5217\\u7C7B\\u578B\".concat(series.seriesType));\n break;\n }\n if (seriesGenerator) {\n this.seriesGenerators.push(seriesGenerator);\n }\n });\n }\n calcTitleOption(chartTitle) {\n const { showTitle, title, subTitle, titlePos } = chartTitle;\n const titleOption = {\n show: showTitle,\n text: title,\n subtext: subTitle\n };\n titleOption.left = \"center\";\n const position = titlePos == null ? void 0 : titlePos.toLowerCase();\n if (position === \"left\" || position === \"right\") {\n titleOption.left = position;\n } else if (position === \"bottom\" || position === \"top\") {\n titleOption.top = position;\n }\n return titleOption;\n }\n calcLegendOption(chartLegend) {\n const { showLegend, legendPos } = chartLegend;\n const legendOption = {};\n legendOption.show = showLegend;\n const position = legendPos == null ? void 0 : legendPos.toLowerCase();\n if (position === \"left\" || position === \"right\") {\n legendOption.left = position;\n legendOption.top = \"middle\";\n legendOption.orient = \"vertical\";\n } else if (position === \"bottom\") {\n legendOption.top = position;\n }\n return legendOption;\n }\n calcXYAxisOption(chartAxises) {\n const AxisOption = [];\n chartAxises.forEach((chartAxis) => {\n const { position, dataShowMode, userParam } = chartAxis;\n let option = {\n type: chartAxis.echartsType,\n name: chartAxis.caption,\n max: chartAxis.maxValue,\n min: chartAxis.minValue,\n position,\n axisLabel: {\n formatter: (value) => {\n if (typeof value === \"number\") {\n value = value.toString();\n }\n if (dataShowMode === 1) {\n if (value.length > 4) {\n return \"\".concat(value.slice(0, 4).split(\"\").join(\"\\n\"), \"\\n...\");\n }\n return value.split(\"\").join(\"\\n\");\n }\n if (dataShowMode === 2) {\n if (value.length > 4) {\n return \"\".concat(value.slice(0, 4), \"...\");\n }\n }\n return value;\n },\n rotate: dataShowMode === 3 ? 45 : 0\n }\n };\n if (userParam) {\n option = mergeDeepRight3(option, parseUserParams2(userParam));\n }\n AxisOption.push(option);\n });\n return AxisOption;\n }\n /**\n * 初始化\n * @author lxm\n * @date 2023-08-29 06:34:04\n * @param {IContext} context\n * @param {IParams} params\n * @return {*} {Promise<void>}\n */\n async init(context, params) {\n await this.loadCodeList(context, params);\n this.entity = await ibiz.hub.getAppDataEntity(this.model.appDataEntityId);\n this.initSeriesGenerators();\n }\n /**\n * 找到实体属性的codeName小写\n * @author lxm\n * @date 2023-08-29 06:42:06\n * @param {string} fieldName 属性的name\n * @return {*} {string}\n */\n getFieldKey(fieldName) {\n const find = this.entity.appDEFields.find((item) => item.name === fieldName);\n return find ? find.codeName.toLowerCase() : fieldName.toLowerCase();\n }\n /**\n * 加载代码表,\n * - 如果已经加载过会清空缓存重新加载\n * - 相同的代码表之后加载一次\n * @author lxm\n * @date 2023-06-09 08:05:28\n * @param {IContext} context\n * @param {IParams} params\n * @return {*} {Promise<void>}\n */\n async loadCodeList(context, params) {\n var _a;\n this.codeListMap.clear();\n if (!((_a = this.model.dechartSerieses) == null ? void 0 : _a.length)) {\n return;\n }\n const app = ibiz.hub.getApp(context.srfappid);\n const loadCodeList = async (key) => {\n if (!key || this.codeListMap.has(key)) {\n return;\n }\n const codeListItems = await app.codeList.get(key, context, params);\n this.codeListMap.set(key, codeListItems);\n };\n await Promise.all(\n this.model.dechartSerieses.map(async (series) => {\n const { seriesCodeListId, catalogCodeListId } = series;\n await loadCodeList(seriesCodeListId);\n await loadCodeList(catalogCodeListId);\n })\n );\n }\n /**\n * 根据数据计算出最终的options\n * @author lxm\n * @date 2023-06-09 08:10:52\n * @param {IData[]} data\n * @return {*} {EChartsOption}\n */\n calcOptionsByData(data) {\n this.radarMap.clear();\n this.options = {\n series: [],\n radar: []\n };\n this.seriesGenerators.forEach((generator) => {\n if (generator.model.seriesType === \"radar\") {\n generator.calcRadarCoordSystem(data);\n }\n });\n if (this.radarMap.size) {\n this.options.radar = [...this.radarMap.values()].map(\n (radar) => radar.toOptions()\n );\n }\n const seriesOption = [];\n this.seriesGenerators.forEach((generator) => {\n const startIndex = seriesOption.length;\n const series = generator.calcByData(data);\n if (series instanceof Array) {\n seriesOption.push(...series);\n } else {\n seriesOption.push(series);\n }\n const endIndex = seriesOption.length - 1;\n for (let i = startIndex; i <= endIndex; i++) {\n this.seriesGeneratorIndexMap.set(i, generator);\n }\n });\n this.options.series = seriesOption;\n if (this.seriesGenerators.length === 1 && this.seriesGenerators[0].groupData && Object.keys(this.seriesGenerators[0].groupData).length === 1 && seriesOption[0].type && [\"bar\", \"line\", \"scatter\"].includes(seriesOption[0].type) && this.staticOptions.legend) {\n this.staticOptions.legend.show = false;\n }\n this.options = mergeDeepRight3(\n this.staticOptions,\n this.options\n );\n if (this.chartUserParam) {\n this.options = mergeDeepRight3(\n this.options,\n this.chartUserParam\n );\n }\n return this.options;\n }\n /**\n * 根据echarts给的params得到图表数据\n * @param {ECElementEvent} params\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-11-22 16:11:50\n */\n getChartDataByParams(params) {\n const generator = this.seriesGeneratorIndexMap.get(params.seriesIndex);\n if (!generator) {\n throw new RuntimeError35(\"\\u627E\\u4E0D\\u5230\".concat(params.seriesIndex, \"\\u5E8F\\u5217\\u7684generator\\uFF01\"));\n }\n return generator.getChartDataByParams(params);\n }\n // protected calcRadarSeries(data: IData[], series: IChartSeriesFunnel) {\n // // 初始化radarMap\n // let radarIndex = this.radarMap.size; // 默认新坐标系的索引\n // let radarMapObj: Record<string, number>;\n // if (this.radarMap.has(catalogField)) {\n // radarMapObj = this.radarMap.get(catalogField)!;\n // radarIndex = radarMapObj.radarIndex;\n // } else {\n // radarMapObj = {\n // radarIndex,\n // };\n // this.radarMap.set(catalogField, radarMapObj);\n // }\n // // 雷达坐标系维度顺序\n // let indicatorKeys: string[] = [];\n // if (Object.values(radarMapObj).length > 1) {\n // indicatorKeys = Object.keys(radarMapObj).slice(1);\n // }\n // // 生成雷达数据,多个分组在一起\n // const radarData = Object.keys(groupChartData).map(group => {\n // // 处理每个序列的数据\n // const catalogData = groupChartData[group];\n // if (indicatorKeys.length === 0) {\n // indicatorKeys = Object.keys(catalogData);\n // }\n // const value = indicatorKeys.map(key => {\n // // 更新radar坐标系的最大值\n // if (\n // radarMapObj[key] === undefined ||\n // radarMapObj[key] < catalogData[key]\n // ) {\n // radarMapObj[key] = catalogData[key];\n // }\n // return catalogData[key];\n // });\n // return {\n // value,\n // name: group !== 'default' ? group : seriesName,\n // };\n // });\n // const seriesOption: SeriesOption = {\n // type: 'radar',\n // ...this.seriesDefaultOptions,\n // radarIndex,\n // data: radarData,\n // };\n // return seriesOption;\n // }\n};\n\n// src/controller/control/chart/chart.service.ts\nvar ChartService = class extends MDControlService {\n};\n\n// src/controller/control/chart/chart.controller.ts\nvar ChartController = class extends MDControlController {\n initState() {\n super.initState();\n this.state.size = 1e3;\n }\n async onCreated() {\n await super.onCreated();\n this.service = new ChartService(this.model);\n await this.service.init(this.context);\n this.generator = new ChartOptionsGenerator2(this.model);\n await this.generator.init(this.context, this.params);\n window.addEventListener(\"resize\", this.resizeChart);\n }\n async afterLoad(args, items) {\n const result = await super.afterLoad(args, items);\n items.forEach((item) => {\n Object.assign(item, { srfcount: 1 });\n });\n this.calcOptions();\n return result;\n }\n /**\n * 初始化echarts对象\n * @author lxm\n * @date 2023-06-07 09:37:05\n * @param {HTMLElement} dom\n */\n initChart(chart) {\n this.chart = chart;\n this.chart.on(\"click\", (params) => {\n const activeData = this.generator.getChartDataByParams(params);\n if (activeData) {\n this.setActive(activeData);\n }\n });\n }\n /**\n * 根据数据计算最终的options\n * 并刷新echarts\n * @author lxm\n * @date 2023-06-07 09:58:00\n * @param {IData[]} [data=this.state.items]\n */\n calcOptions(data = this.state.items) {\n this.options = this.generator.calcOptionsByData(data);\n this.updateChart();\n }\n /**\n * 更新echart图表\n * @author lxm\n * @date 2023-06-07 10:03:48\n */\n updateChart() {\n if (!this.chart) {\n throw new RuntimeError36(\"chart\\u5BF9\\u8C61\\u6CA1\\u6709\\u6B63\\u786E\\u521D\\u59CB\\u5316\");\n }\n if (!this.options) {\n throw new RuntimeError36(\"options\\u8FD8\\u6CA1\\u8BA1\\u7B97\");\n }\n this.chart.setOption(this.options);\n this.resizeChart();\n }\n /**\n * 刷新图表的大小\n * @author lxm\n * @date 2023-06-09 09:37:25\n */\n resizeChart() {\n if (this.chart) {\n this.chart.resize();\n }\n }\n async onDestroyed() {\n var _a;\n window.removeEventListener(\"resize\", this.resizeChart);\n await super.onDestroyed();\n (_a = this.chart) == null ? void 0 : _a.dispose();\n }\n};\n\n// src/controller/control/caption-bar/caption-bar.controller.ts\nvar CaptionBarController = class extends ControlController {\n initState() {\n super.initState();\n if (this.view.model.capLanguageRes) {\n this.state.caption = ibiz.i18n.t(\n this.view.model.capLanguageRes.lanResTag,\n this.view.model.caption\n );\n } else {\n this.state.caption = this.view.model.caption;\n }\n }\n async onCreated() {\n await super.onCreated();\n this.view.evt.on(\"onViewInfoChange\", ({ caption: _caption, dataInfo }) => {\n this.state.caption = \"\".concat(this.view.model.caption).concat(dataInfo ? \"-\".concat(dataInfo) : \"\");\n });\n }\n};\n\n// src/controller/control/toolbar/toolbar.controllerr.ts\nimport { recursiveIterate, RuntimeError as RuntimeError45 } from \"@ibiz-template/core\";\n\n// src/ui-action/provider/backend-ui-action-provider.ts\nimport { RuntimeModelError as RuntimeModelError47 } from \"@ibiz-template/core\";\nimport { isArray as isArray9 } from \"qx-util\";\n\n// src/ui-action/provider/ui-action-provider-base.ts\nimport { RuntimeModelError as RuntimeModelError46 } from \"@ibiz-template/core\";\n\n// src/ui-logic/index.ts\nimport { RuntimeError as RuntimeError42 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic.ts\nimport { ModelError as ModelError24, RuntimeModelError as RuntimeModelError45 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic-context.ts\nvar UILogicContext = class {\n /**\n * Creates an instance of UILogicContext.\n * @author lxm\n * @date 2023-06-14 07:36:42\n * @param {Map<string, UILogicParam>} deLogicParams 实体逻辑参数集合\n * @param {IUILogicParams} parameters 界面逻辑执行参数\n */\n constructor(deLogicParams, parameters) {\n this.deLogicParams = deLogicParams;\n this.parameters = parameters;\n /**\n * 界面逻辑参数\n *\n * @description 界面逻辑参数初始化时设置\n * @author chitanda\n * @date 2023-02-08 17:02:38\n * @type {Record<string, any>}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.params = {};\n /**\n * UI逻辑执行返回值\n *\n * @author chitanda\n * @date 2023-02-09 21:02:40\n * @type {unknown}\n */\n this.result = null;\n /**\n * 是否存在结束节点\n *\n * @author chitanda\n * @date 2023-03-16 18:03:09\n * @type {boolean}\n */\n this.isEndNode = false;\n /**\n * 默认参数节点\n *\n * @default 'Default'\n * @author chitanda\n * @date 2023-03-16 18:03:39\n * @type {string}\n */\n this.defaultParamName = \"Default\";\n }\n /**\n * 视图控制器\n *\n * @author chitanda\n * @date 2023-12-01 11:12:48\n * @readonly\n * @type {IViewController}\n */\n get view() {\n return this.parameters.view;\n }\n /**\n * 上下文\n */\n get context() {\n if (Object.prototype.hasOwnProperty.call(this.params, \"context\")) {\n return this.params.context;\n }\n return this.parameters.context;\n }\n /**\n * 数据\n */\n get data() {\n return this.parameters.data;\n }\n /**\n * 视图参数\n */\n get viewParam() {\n if (Object.prototype.hasOwnProperty.call(this.params, \"viewParam\")) {\n return this.params.viewParam;\n }\n return this.parameters.params;\n }\n /**\n * 重置实体逻辑参数\n *\n * @author lxm\n * @date 2023-03-24 09:18:02\n * @param {string} name\n */\n resetParam(name) {\n var _a;\n (_a = this.deLogicParams.get(name)) == null ? void 0 : _a.calc(this);\n }\n /**\n * 重新建立变量\n *\n * @author lxm\n * @date 2023-03-24 09:20:24\n * @param {string} name\n */\n renewParam(name) {\n var _a;\n (_a = this.deLogicParams.get(name)) == null ? void 0 : _a.renew(this);\n }\n /**\n * 设置上一次返回值\n *\n * @author lxm\n * @date 2023-09-04 09:23:52\n * @param {unknown} value\n */\n setLastReturn(value) {\n this.lastReturn = value;\n }\n /**\n * 初始化上一次返回参数类型的逻辑参数\n *\n * @author lxm\n * @date 2023-09-04 09:52:00\n * @param {string} tag\n */\n initLastReturnParam(tag) {\n Object.defineProperty(this.params, tag, {\n enumerable: true,\n configurable: true,\n get: () => this.lastReturn\n });\n }\n /**\n * 是否是实体参数变量(即后台数据对象)\n *\n * @author lxm\n * @date 2023-09-22 03:40:30\n * @param {string} paramId\n * @return {*} {boolean}\n */\n isEntityParam(paramId) {\n const deLogicParams = this.deLogicParams.get(paramId);\n return !!(deLogicParams && deLogicParams.model.entityParam);\n }\n};\n\n// src/ui-logic/ui-logic-node/de-action-node/de-action-node.ts\nimport { RuntimeModelError as RuntimeModelError31 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic-link/ui-logic-link.ts\nimport { ModelError as ModelError19 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic-link/ui-logic-link-group-cond/ui-logic-link-group-cond.ts\nimport { RuntimeModelError as RuntimeModelError30 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic-link/ui-logic-link-cond/ui-logic-link-cond.ts\nvar UILogicLinkCond = class {\n};\n\n// src/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.ts\nimport { ModelError as ModelError18, RuntimeModelError as RuntimeModelError29 } from \"@ibiz-template/core\";\n\n// src/ui-logic/utils/handle-src-val.ts\nimport { ModelError as ModelError17 } from \"@ibiz-template/core\";\nimport { clone as clone16 } from \"ramda\";\nfunction handleSrcVal2(ctx, srcValParams) {\n const { srcDEUILogicParamId, srcFieldName, srcValue } = srcValParams;\n const srcValueType = srcValParams.srcValueType || \"SRCDLPARAM\";\n const srcField = srcFieldName;\n let value;\n switch (srcValueType) {\n case \"SRCDLPARAM\":\n value = ctx.params[srcDEUILogicParamId];\n break;\n case \"NULLVALUE\":\n return null;\n case \"NONEVALUE\":\n return void 0;\n case \"SRCVALUE\":\n return ibiz.util.rawValue.format(srcValue);\n case \"WEBCONTEXT\":\n case \"VIEWPARAM\":\n value = ctx.parameters.params;\n break;\n case \"APPLICATION\":\n case \"SESSION\":\n case \"APPDATA\":\n case \"DATACONTEXT\":\n value = ctx.parameters.context;\n break;\n case \"ENVPARAM\":\n value = clone16(ibiz.env);\n break;\n default:\n throw new ModelError17(srcValParams, \"\\u6682\\u672A\\u652F\\u6301\\u6E90\\u503C\\u7C7B\\u578B\".concat(srcValueType));\n }\n if (value && srcField) {\n try {\n if (Array.isArray(value)) {\n value = value[Number(srcField)];\n } else {\n value = ScriptFactory.execScriptFn(\n { srcValue: value },\n \"srcValue.\".concat(srcField),\n {\n singleRowReturn: true,\n isAsync: false\n }\n );\n }\n } catch (error) {\n ibiz.log.error(\"\\u4ECE\\u6E90\\u53C2\\u6570\\u53D6\\u5C5E\\u6027\".concat(srcField, \"\\u62A5\\u9519\\uFF0C\\u6E90\\u53C2\\u6570\\uFF1A\"), value);\n throw error;\n }\n }\n return value;\n}\n\n// src/ui-logic/ui-logic-link/ui-logic-link-single-cond/ui-logic-link-single-cond.ts\nvar UILogicLinkSingleCond = class extends UILogicLinkCond {\n constructor(model) {\n super();\n this.model = model;\n this.srcParam = model.srcLogicParamId;\n this.dstParam = model.dstLogicParamId;\n }\n get dstField() {\n return this.model.dstFieldName;\n }\n get op() {\n return this.model.condOP;\n }\n get type() {\n return this.model.paramType;\n }\n get value() {\n return this.model.paramValue;\n }\n /**\n * 执行逻辑检测\n *\n * @author chitanda\n * @date 2023-02-15 18:02:05\n * @param {UILogicContext} ctx\n * @param {IContext} context\n * @param {IData} data\n * @return {*} {boolean}\n */\n test(ctx, context, data) {\n const dstVal = handleSrcVal2(ctx, {\n srcDEUILogicParamId: this.dstParam,\n srcFieldName: this.dstField\n });\n switch (this.type) {\n case \"ENTITYFIELD\": {\n if (!this.value) {\n throw new RuntimeModelError29(\n this.model,\n \"\\u5F53\\u524D\\u6761\\u4EF6\\u503C\\u7C7B\\u578B\\u4E3A[\\u6570\\u636E\\u5BF9\\u8C61\\u5C5E\\u6027],\\u7F3A\\u5C11\\u914D\\u7F6E\\u6761\\u4EF6\\u503C\"\n );\n }\n const value = data[this.value] != null ? data[this.value] : context[this.value];\n return testCond(dstVal, this.op, value);\n }\n case \"SRCENTITYFIELD\": {\n if (!this.value) {\n throw new RuntimeModelError29(\n this.model,\n \"\\u5F53\\u524D\\u6761\\u4EF6\\u503C\\u7C7B\\u578B\\u4E3A[\\u6E90\\u6570\\u636E\\u5BF9\\u8C61\\u5C5E\\u6027],\\u7F3A\\u5C11\\u914D\\u7F6E\\u6761\\u4EF6\\u503C\"\n );\n }\n const srcVal = handleSrcVal2(ctx, {\n srcDEUILogicParamId: this.srcParam,\n srcFieldName: this.value\n });\n return testCond(dstVal, this.op, srcVal);\n }\n case \"CURTIME\":\n throw new ModelError18(this.model, \"\\u6682\\u672A\\u652F\\u6301\\u6761\\u4EF6\\u503C\\u7C7B\\u578B\\u4E3A[\\u5F53\\u524D\\u65F6\\u95F4]\");\n default:\n return testCond(dstVal, this.op, this.value);\n }\n }\n};\n\n// src/ui-logic/ui-logic-link/ui-logic-link-group-cond/ui-logic-link-group-cond.ts\nvar UILogicLinkGroupCond = class _UILogicLinkGroupCond extends UILogicLinkCond {\n constructor(model) {\n super();\n this.model = model;\n const conds = model.deuilogicLinkConds || [];\n this.conds = conds.map((cond) => {\n return cond.logicType === \"SINGLE\" ? new UILogicLinkSingleCond(cond) : new _UILogicLinkGroupCond(cond);\n });\n }\n /**\n * 操作标识\n *\n * @author chitanda\n * @date 2023-02-15 17:02:04\n * @readonly\n * @protected\n * @type {('AND' | 'OR')}\n */\n get op() {\n return this.model.groupOP;\n }\n /**\n * 结果是否取反值\n *\n * @author chitanda\n * @date 2023-02-15 17:02:10\n * @readonly\n * @protected\n * @type {boolean}\n */\n get notMode() {\n return this.model.notMode === true;\n }\n /**\n * 条件判断\n *\n * @author chitanda\n * @date 2023-02-15 17:02:19\n * @param {UILogicContext} ctx\n * @param {IContext} context\n * @param {IData} data\n * @return {*} {boolean}\n */\n test(ctx, context, data) {\n let bol = true;\n if (this.conds.length === 0) {\n throw new RuntimeModelError30(this.model, \"\\u754C\\u9762\\u8FDE\\u63A5\\u6761\\u4EF6\\u903B\\u8F91\\u7EC4\\u672A\\u914D\\u7F6E\\u903B\\u8F91\\u9879\");\n }\n for (let i = 0; i < this.conds.length; i++) {\n const cond = this.conds[i];\n const judge = cond.test(ctx, context, data);\n if (this.op === \"AND\" && judge === false) {\n bol = false;\n break;\n }\n if (this.op === \"OR\" && judge === true) {\n bol = true;\n break;\n }\n }\n return this.notMode ? !bol : bol;\n }\n};\n\n// src/ui-logic/ui-logic-link/ui-logic-link.ts\nvar UILogicLink = class {\n /**\n * Creates an instance of UILogicLink.\n *\n * @author chitanda\n * @date 2023-02-08 16:02:19\n * @param {UILogicLinkModel} model\n */\n constructor(model) {\n this.model = model;\n /**\n * 源节点\n *\n * @author chitanda\n * @date 2023-02-08 21:02:53\n * @type {UILogicNode}\n */\n this.srcNode = null;\n /**\n * 目标节点\n *\n * @author chitanda\n * @date 2023-02-08 21:02:59\n * @type {UILogicNode}\n */\n this.dstNode = null;\n /**\n * 连接条件组\n *\n * @author chitanda\n * @date 2023-02-15 17:02:49\n * @type {(UILogicLinkGroupCond | null)}\n */\n this.groupCond = null;\n const { linkMode, deuilogicLinkGroupCond } = this.model;\n if ((linkMode || 0) === 0) {\n if (deuilogicLinkGroupCond) {\n this.groupCond = new UILogicLinkGroupCond(deuilogicLinkGroupCond);\n }\n }\n }\n /**\n * 执行连接\n *\n * @author chitanda\n * @date 2023-02-08 22:02:18\n * @param {UILogicContext} ctx\n * @param {IContext} context\n * @param {IData} data\n * @param {IParams} [opt]\n * @return {*} {Promise<boolean>} 是否连接成功\n */\n async exec(ctx) {\n const { linkMode } = this.model;\n const { context, data } = ctx;\n switch (linkMode || 0) {\n case 0: {\n if (this.groupCond) {\n return this.groupCond.test(\n ctx,\n context,\n data && data.length > 0 ? data[0] : {}\n );\n }\n return true;\n }\n case 1:\n return true;\n case 2:\n throw new ModelError19(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u6B65\\u7ED3\\u675F\");\n case 3:\n throw new ModelError19(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u6B65\\u62D2\\u7EDD\");\n case 9:\n throw new ModelError19(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u5E38\\u5904\\u7406\");\n default:\n throw new ModelError19(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B:\".concat(linkMode));\n }\n }\n};\n\n// src/ui-logic/ui-logic-node/ui-logic-node.ts\nvar UILogicNode = class {\n /**\n * Creates an instance of UILogicNode.\n *\n * @author chitanda\n * @date 2023-02-08 16:02:19\n * @param {UILogicNodeModel} model\n */\n constructor(model) {\n this.model = model;\n this.links = (model.deuilogicLinks || []).map(\n (link) => new UILogicLink(link)\n );\n }\n};\n\n// src/ui-logic/ui-logic-node/de-action-node/de-action-node.ts\nvar DEActionNode2 = class extends UILogicNode {\n async exec(ctx) {\n const {\n dstAppDataEntityId,\n dstAppDEActionId,\n dstDEUILogicParamId,\n retDEUILogicParamId\n } = this.model;\n if (!dstAppDataEntityId) {\n throw new RuntimeModelError31(this.model, \"\\u672A\\u6307\\u5B9A\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!dstAppDEActionId) {\n throw new RuntimeModelError31(this.model, \"\\u672A\\u6307\\u5B9A\\u5B9E\\u4F53\\u884C\\u4E3A\");\n }\n const requestData = ctx.params[dstDEUILogicParamId];\n const app = ibiz.hub.getApp(ctx.context.srfappid);\n const res = await app.deService.exec(\n dstAppDataEntityId,\n dstAppDEActionId,\n ctx.context,\n requestData,\n ctx.viewParam\n );\n if (res.ok) {\n ctx.params[retDEUILogicParamId] = res.data;\n }\n }\n};\n\n// src/ui-logic/ui-logic-node/de-ui-action-node/de-ui-action-node.ts\nimport { RuntimeModelError as RuntimeModelError32 } from \"@ibiz-template/core\";\nvar DEUIActionNode = class extends UILogicNode {\n async exec(ctx) {\n const { dstAppDEUIActionId, dstDEUILogicParamId } = this.model;\n const { data, parameters } = ctx;\n if (!dstAppDEUIActionId) {\n throw new RuntimeModelError32(this.model, \"\\u672A\\u914D\\u7F6E\\u754C\\u9762\\u884C\\u4E3A\");\n }\n let actionData = [data];\n if (dstDEUILogicParamId) {\n const param = ctx.params[dstDEUILogicParamId];\n if (param instanceof Array) {\n actionData = param;\n } else {\n actionData = [param];\n }\n }\n await UIActionUtil.execAndResolved(dstAppDEUIActionId, {\n ...parameters,\n context: ctx.context,\n params: ctx.viewParam,\n data: actionData\n });\n }\n};\n\n// src/ui-logic/ui-logic-node/start-node/start-node.ts\nvar StartNode2 = class extends UILogicNode {\n async exec(_ctx) {\n }\n};\n\n// src/ui-logic/ui-logic-node/end-node/end-node.ts\nimport { ModelError as ModelError20 } from \"@ibiz-template/core\";\nvar EndNode2 = class extends UILogicNode {\n async exec(ctx) {\n ctx.isEndNode = true;\n const { returnType, rawValue, returnParamId } = this.model;\n if (!returnType) {\n return;\n }\n switch (returnType) {\n case \"NONEVALUE\":\n ctx.result = void 0;\n break;\n case \"NULLVALUE\":\n ctx.result = null;\n break;\n case \"SRCVALUE\":\n ctx.result = ibiz.util.rawValue.format(rawValue);\n break;\n case \"LOGICPARAM\":\n ctx.result = ctx.params[returnParamId];\n break;\n case \"LOGICPARAMFIELD\":\n case \"BREAK\":\n default:\n throw new ModelError20(\n this.model,\n \"\\u6682\\u672A\\u652F\\u6301\\u7684\\u7ED3\\u675F\\u8282\\u70B9\\u8FD4\\u56DE\\u503C\\u7C7B\\u578B: \".concat(returnType)\n );\n }\n }\n};\n\n// src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts\nimport { ModelError as ModelError21, RuntimeError as RuntimeError37 } from \"@ibiz-template/core\";\nimport { clone as clone17 } from \"ramda\";\nvar PrepareJSParamNode = class extends UILogicNode {\n async exec(ctx) {\n const nodeParams = this.model.deuilogicNodeParams;\n if (!(nodeParams == null ? void 0 : nodeParams.length)) {\n return;\n }\n for (const nodeParam of nodeParams) {\n switch (nodeParam.paramAction) {\n case \"SETPARAMVALUE\":\n await this.setParamValue(nodeParam, ctx);\n break;\n case \"RESETPARAM\":\n await this.resetParam(nodeParam, ctx);\n break;\n case \"COPYPARAM\":\n await this.copyParam(nodeParam, ctx);\n break;\n case \"BINDPARAM\":\n await this.bindParam(nodeParam, ctx);\n break;\n case \"RENEWPARAM\":\n await this.renewParam(nodeParam, ctx);\n break;\n case \"APPENDPARAM\":\n await this.appendParam(nodeParam, ctx);\n break;\n case \"SORTPARAM\":\n await this.sortParam(nodeParam, ctx);\n break;\n default:\n throw new ModelError21(\n nodeParam,\n \"\\u6682\\u672A\\u652F\\u6301\\u903B\\u8F91\\u5904\\u7406\\u53C2\\u6570\\u64CD\\u4F5C\".concat(nodeParam.paramAction)\n );\n }\n }\n }\n /**\n * 设置变量\n * @author lxm\n * @date 2023-03-17 03:34:02\n * @protected\n * @param {IPSDELogicNodeParam} nodeParam\n * @param {UILogicContext} ctx\n */\n setParamValue(nodeParam, ctx) {\n const { dstFieldName, dstDEUILogicParamId } = nodeParam;\n if (!dstDEUILogicParamId) {\n throw new RuntimeError37(\"\\u6CA1\\u6709\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61id\");\n }\n let dstField = dstFieldName;\n if (ctx.isEntityParam(dstDEUILogicParamId)) {\n dstField = dstField == null ? void 0 : dstField.toLowerCase();\n }\n const srcVal = handleSrcVal2(ctx, nodeParam);\n if (dstField) {\n try {\n ScriptFactory.execScriptFn(\n { srcVal, dstParam: ctx.params[dstDEUILogicParamId] },\n \"dstParam.\".concat(dstFieldName, \" = srcVal\"),\n {\n singleRowReturn: false,\n isAsync: false\n }\n );\n } catch (error) {\n ibiz.log.error(\n \"\\u7ED9\\u76EE\\u6807\\u53C2\\u6570\\u5C5E\\u6027\".concat(dstFieldName, \"\\u8D4B\\u503C\\u62A5\\u9519\\uFF0C\\u76EE\\u6807\\u53C2\\u6570\\uFF1A\"),\n ctx.params[dstDEUILogicParamId]\n );\n throw error;\n }\n } else {\n ctx.params[dstDEUILogicParamId] = srcVal;\n }\n }\n /**\n * 拷贝变量\n * @author lxm\n * @date 2023-03-24 09:50:02\n * @protected\n * @param {IDEUILogicNodeParam} nodeParam\n * @param {UILogicContext} ctx\n * @return {*} {*}\n */\n copyParam(nodeParam, ctx) {\n const { dstDEUILogicParamId } = nodeParam;\n const srcVal = handleSrcVal2(ctx, nodeParam);\n ctx.params[dstDEUILogicParamId] = clone17(srcVal);\n }\n /**\n * 绑定参数\n * @author lxm\n * @date 2023-06-13 05:43:43\n * @protected\n * @param {IDEUILogicNodeParam} nodeParam\n * @param {UILogicContext} ctx\n */\n bindParam(nodeParam, ctx) {\n const srcVal = handleSrcVal2(ctx, nodeParam);\n ctx.params[nodeParam.dstDEUILogicParamId] = srcVal;\n }\n /**\n * 重置变量\n * @author lxm\n * @date 2023-03-24 09:46:57\n * @protected\n * @param {IDEUILogicNodeParam} nodeParam\n * @param {UILogicContext} ctx\n */\n resetParam(nodeParam, ctx) {\n const { dstDEUILogicParamId } = nodeParam;\n ctx.resetParam(dstDEUILogicParamId);\n }\n /**\n * 重新建立变量\n * @author lxm\n * @date 2023-03-24 09:46:47\n * @protected\n * @param {IDEUILogicNodeParam} nodeParam\n * @param {UILogicContext} ctx\n */\n renewParam(nodeParam, ctx) {\n const { dstDEUILogicParamId } = nodeParam;\n ctx.renewParam(dstDEUILogicParamId);\n }\n /**\n * 附加到数组变量\n * @author lxm\n * @date 2023-03-24 09:46:47\n * @protected\n * @param {IDEUILogicNodeParam} nodeParam\n * @param {UILogicContext} ctx\n */\n appendParam(nodeParam, ctx) {\n const { dstDEUILogicParamId, dstIndex, srcIndex, srcSize } = nodeParam;\n const srcVal = handleSrcVal2(ctx, nodeParam);\n const insertIndex = dstIndex || 0;\n const _srcIndex = srcIndex || 0;\n const _srcSize = srcSize || srcVal.length;\n ctx.params[dstDEUILogicParamId].splice(\n insertIndex,\n 0,\n ...srcVal.slice(_srcIndex, _srcSize)\n );\n }\n /**\n * 排序数组变量\n * @author lxm\n * @date 2023-03-24 10:23:01\n * @protected\n * @param {IDEUILogicNodeParam} nodeParam\n * @param {UILogicContext} ctx\n */\n sortParam(nodeParam, ctx) {\n const { dstDEUILogicParamId, dstFieldName, dstSortDir } = nodeParam;\n const key = dstFieldName;\n const arr = ctx.params[dstDEUILogicParamId];\n arr.sort((a, b) => {\n return dstSortDir === \"ASC\" ? a[key] - b[key] : b[key] - a[key];\n });\n }\n};\n\n// src/ui-logic/ui-logic-node/view-ctrl-invoke-node/view-ctrl-invoke-node.ts\nimport { RuntimeError as RuntimeError38, RuntimeModelError as RuntimeModelError33 } from \"@ibiz-template/core\";\nimport { isFunction } from \"lodash-es\";\nvar ViewCtrlInvokeNode = class extends UILogicNode {\n async exec(ctx) {\n ctx.isEndNode = true;\n const { invokeMethod, invokeCtrlId, invokeParamId } = this.model;\n if (!invokeCtrlId) {\n throw new RuntimeModelError33(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u754C\\u9762\\u5BF9\\u8C61\");\n }\n if (!invokeParamId) {\n throw new RuntimeModelError33(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u64CD\\u4F5C\\u53C2\\u6570\");\n }\n if (!invokeMethod) {\n throw new RuntimeModelError33(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u8C03\\u7528\\u65B9\\u6CD5\");\n }\n const invokeParam = ctx.params[invokeParamId];\n if (!invokeParam) {\n throw new RuntimeError38(\"\\u6CA1\\u6709\\u627E\\u5230\\u64CD\\u4F5C\\u53C2\\u6570\".concat(invokeParamId));\n }\n const invokeCtrl = ctx.params[invokeCtrlId];\n if (!invokeCtrl) {\n throw new RuntimeError38(\"\\u6CA1\\u6709\\u627E\\u5230\\u754C\\u9762\\u5BF9\\u8C61\".concat(invokeCtrlId));\n }\n if (!invokeCtrl[invokeMethod] || !isFunction(invokeCtrl[invokeMethod])) {\n throw new RuntimeError38(\"\\u6CA1\\u6709\\u627E\\u5230\\u8C03\\u7528\\u65B9\\u6CD5\".concat(invokeMethod));\n }\n await invokeCtrl[invokeMethod](invokeParam);\n }\n};\n\n// src/ui-logic/ui-logic-node/bind-param-node/bind-param-node.ts\nimport { RuntimeModelError as RuntimeModelError34 } from \"@ibiz-template/core\";\nvar BindParamNode2 = class extends UILogicNode {\n async exec(ctx) {\n const { dstDEUILogicParamId, srcDEUILogicParamId } = this.model;\n if (!dstDEUILogicParamId || !srcDEUILogicParamId) {\n throw new RuntimeModelError34(\n this.model,\n \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u6216\\u8005\\u6E90\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\"\n );\n }\n const srcVal = handleSrcVal2(ctx, this.model);\n ctx.params[dstDEUILogicParamId] = srcVal;\n }\n};\n\n// src/ui-logic/ui-logic-node/msg-box-node/msg-box-node.ts\nimport { ModelError as ModelError22, RuntimeModelError as RuntimeModelError35 } from \"@ibiz-template/core\";\nvar MsgBoxNode = class extends UILogicNode {\n constructor() {\n super(...arguments);\n this.typeMap = {\n INFO: \"info\",\n QUESTION: \"success\",\n WARNING: \"warning\",\n ERROR: \"error\"\n };\n }\n async exec(ctx) {\n const { msgBoxType, buttonsType, msgBoxParamId } = this.model;\n if (!msgBoxType) {\n throw new RuntimeModelError35(this.model, \"\\u7F3A\\u5C11\\u6D88\\u606F\\u7C7B\\u578B\\u7684\\u914D\\u7F6E\");\n }\n if (!buttonsType) {\n throw new RuntimeModelError35(this.model, \"\\u7F3A\\u5C11\\u6309\\u94AE\\u7C7B\\u578B\\u7684\\u914D\\u7F6E\");\n }\n let { title } = this.model;\n let { message } = this.model;\n if (msgBoxParamId) {\n const param = ctx.params[msgBoxParamId];\n if (param.title) {\n title = param.title;\n }\n if (param.message) {\n message = param.message;\n }\n }\n const type = this.typeMap[msgBoxType];\n const modalParams = {\n type,\n title: title || \"\\u6D88\\u606F\",\n desc: message\n };\n let resultTags = [];\n switch (buttonsType) {\n case \"YESNO\":\n modalParams.confirmButtonText = \"\\u662F\";\n modalParams.cancelButtonText = \"\\u5426\";\n modalParams.showConfirmButton = true;\n modalParams.showCancelButton = true;\n resultTags = [\"yes\", \"no\"];\n break;\n case \"OK\":\n modalParams.confirmButtonText = \"\\u786E\\u5B9A\";\n modalParams.showConfirmButton = true;\n modalParams.showCancelButton = false;\n resultTags = [\"ok\"];\n break;\n case \"OKCANCEL\":\n modalParams.confirmButtonText = \"\\u786E\\u5B9A\";\n modalParams.cancelButtonText = \"\\u53D6\\u6D88\";\n modalParams.showConfirmButton = true;\n modalParams.showCancelButton = true;\n resultTags = [\"ok\", \"cancel\"];\n break;\n default:\n throw new ModelError22(this.model, \"\".concat(buttonsType, \"\\u6682\\u672A\\u652F\\u6301\"));\n }\n const result = await ibiz.modal.confirm(modalParams);\n ctx.setLastReturn(resultTags[result ? 0 : 1]);\n }\n};\n\n// src/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.ts\nvar PFPluginNode = class extends UILogicNode {\n async exec(ctx) {\n const provider = await getUILogicNodeProvider(this.model);\n if (provider) {\n await provider.exec(this.model, ctx);\n }\n }\n};\n\n// src/ui-logic/ui-logic-node/debug-param-node/debug-param-node.ts\nimport { RuntimeModelError as RuntimeModelError36 } from \"@ibiz-template/core\";\nvar DebugParamNode = class extends UILogicNode {\n async exec(ctx) {\n const { dstDEUILogicParamId, name } = this.model;\n if (!dstDEUILogicParamId) {\n throw new RuntimeModelError36(this.model, \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\");\n }\n const param = ctx.params[dstDEUILogicParamId];\n console.log(\"\\u903B\\u8F91\\u8282\\u70B9\".concat(name, \"\\u64CD\\u4F5C\\u53C2\\u6570\\u503C:\"), param);\n }\n};\n\n// src/ui-logic/ui-logic-node/reset-param-node/reset-param-node.ts\nimport { RuntimeModelError as RuntimeModelError37 } from \"@ibiz-template/core\";\nvar ResetParamNode2 = class extends UILogicNode {\n async exec(ctx) {\n const { dstDEUILogicParamId } = this.model;\n if (!dstDEUILogicParamId) {\n throw new RuntimeModelError37(this.model, \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\");\n }\n ctx.resetParam(dstDEUILogicParamId);\n }\n};\n\n// src/ui-logic/ui-logic-node/copy-param-node/copy-param-node.ts\nimport { RuntimeModelError as RuntimeModelError38 } from \"@ibiz-template/core\";\nimport { clone as clone18 } from \"ramda\";\nvar CopyParamNode2 = class extends UILogicNode {\n async exec(ctx) {\n const { dstDEUILogicParamId, srcDEUILogicParamId } = this.model;\n if (!dstDEUILogicParamId || !srcDEUILogicParamId) {\n throw new RuntimeModelError38(\n this.model,\n \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u6216\\u8005\\u6E90\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\"\n );\n }\n const srcVal = handleSrcVal2(ctx, this.model);\n ctx.params[dstDEUILogicParamId] = clone18(srcVal);\n }\n};\n\n// src/ui-logic/ui-logic-node/append-param-node/append-param-node.ts\nimport { RuntimeModelError as RuntimeModelError39 } from \"@ibiz-template/core\";\nvar AppendParamNode2 = class extends UILogicNode {\n async exec(ctx) {\n const {\n dstDEUILogicParamId,\n srcDEUILogicParamId,\n dstIndex,\n srcIndex,\n srcSize\n } = this.model;\n if (!dstDEUILogicParamId || !srcDEUILogicParamId) {\n throw new RuntimeModelError39(\n this.model,\n \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u6216\\u8005\\u6E90\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\"\n );\n }\n const srcVal = handleSrcVal2(ctx, this.model);\n const insertIndex = dstIndex || 0;\n const _srcIndex = srcIndex || 0;\n const _srcSize = srcSize || srcVal.length;\n ctx.params[dstDEUILogicParamId].splice(\n insertIndex,\n 0,\n ...srcVal.slice(_srcIndex, _srcSize)\n );\n }\n};\n\n// src/ui-logic/ui-logic-node/sort-param-node/sort-param-node.ts\nimport { RuntimeModelError as RuntimeModelError40 } from \"@ibiz-template/core\";\nvar SortParamNode2 = class extends UILogicNode {\n async exec(ctx) {\n const { dstDEUILogicParamId, dstSortDir, dstFieldName } = this.model;\n if (!dstDEUILogicParamId || !dstFieldName) {\n throw new RuntimeModelError40(this.model, \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u6216\\u76EE\\u6807\\u5C5E\\u6027\\u914D\\u7F6E\");\n }\n const key = dstFieldName;\n const arr = ctx.params[dstDEUILogicParamId];\n arr.sort((a, b) => {\n return dstSortDir === \"ASC\" ? a[key] - b[key] : b[key] - a[key];\n });\n }\n};\n\n// src/ui-logic/ui-logic-node/renew-param-node/renew-param-node.ts\nimport { RuntimeModelError as RuntimeModelError41 } from \"@ibiz-template/core\";\nvar RenewParamNode2 = class extends UILogicNode {\n async exec(ctx) {\n const { dstDEUILogicParamId } = this.model;\n if (!dstDEUILogicParamId) {\n throw new RuntimeModelError41(this.model, \"\\u7F3A\\u5C11\\u76EE\\u6807\\u53C2\\u6570\\u5BF9\\u8C61\\u914D\\u7F6E\");\n }\n ctx.renewParam(dstDEUILogicParamId);\n }\n};\n\n// src/ui-logic/ui-logic-node/data-set-node/data-set-node.ts\nimport { RuntimeModelError as RuntimeModelError42 } from \"@ibiz-template/core\";\nvar DataSetNode2 = class extends UILogicNode {\n async exec(ctx) {\n const {\n dstAppDEDataSetId,\n dstAppDataEntityId,\n dstDEUILogicParamId,\n retDEUILogicParamId\n } = this.model;\n if (!dstDEUILogicParamId) {\n throw new RuntimeModelError42(this.model, \"\\u7F3A\\u5C11\\u914D\\u7F6E\\u8FC7\\u6EE4\\u53C2\\u6570\");\n }\n const queryParams = ctx.params[dstDEUILogicParamId];\n const app = ibiz.hub.getApp(ctx.context.srfappid);\n const res = await app.deService.exec(\n dstAppDataEntityId,\n dstAppDEDataSetId,\n ctx.context,\n queryParams\n );\n if (res.ok) {\n ctx.params[retDEUILogicParamId] = res.data;\n }\n }\n};\n\n// src/ui-logic/ui-logic-node/throw-exception-node/throw-exception-node.ts\nimport { RuntimeError as RuntimeError39 } from \"@ibiz-template/core\";\nvar ThrowExceptionNode2 = class extends UILogicNode {\n async exec(_ctx) {\n const { errorInfo } = this.model;\n throw new RuntimeError39(errorInfo);\n }\n};\n\n// src/ui-logic/ui-logic-node/view-ctrl-fire-event-node/view-ctrl-fire-event-node.ts\nimport { RuntimeError as RuntimeError40, RuntimeModelError as RuntimeModelError43 } from \"@ibiz-template/core\";\nvar ViewCtrlFireEventNode = class extends UILogicNode {\n async exec(ctx) {\n ctx.isEndNode = true;\n const { eventName, eventParamId, fireCtrlId } = this.model;\n if (!fireCtrlId) {\n throw new RuntimeModelError43(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u89E6\\u53D1\\u5BF9\\u8C61\");\n }\n if (!eventName) {\n throw new RuntimeModelError43(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u4E8B\\u4EF6\\u540D\\u79F0\\u53C2\\u6570\");\n }\n if (!eventParamId) {\n throw new RuntimeModelError43(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u4E8B\\u4EF6\\u53C2\\u6570\");\n }\n const invokeCtrl = ctx.params[fireCtrlId];\n if (!invokeCtrl) {\n throw new RuntimeError40(\"\\u6CA1\\u6709\\u627E\\u5230\\u89E6\\u53D1\\u5BF9\\u8C61\".concat(fireCtrlId));\n }\n const eventParam = ctx.params[eventParamId];\n if (!eventParam) {\n throw new RuntimeError40(\"\\u6CA1\\u6709\\u627E\\u5230\\u4E8B\\u4EF6\\u53C2\\u6570\\u5BF9\\u8C61\".concat(eventParamId));\n }\n await invokeCtrl.evt.emit(eventName, eventParam);\n }\n};\n\n// src/ui-logic/ui-logic-node/execute-de-logic-node/execute-de-logic-node.ts\nimport { RuntimeError as RuntimeError41, RuntimeModelError as RuntimeModelError44 } from \"@ibiz-template/core\";\nvar ExecuteDELogicNode = class extends UILogicNode {\n async exec(ctx) {\n const {\n dstAppDELogicId,\n dstAppDataEntityId,\n dstDEUILogicParamId,\n retDEUILogicParamId\n } = this.model;\n if (!dstAppDataEntityId) {\n throw new RuntimeModelError44(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5B9E\\u4F53\");\n }\n if (!dstAppDELogicId) {\n throw new RuntimeModelError44(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5B9E\\u4F53\\u903B\\u8F91\");\n }\n if (!dstDEUILogicParamId) {\n throw new RuntimeModelError44(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u4F20\\u5165\\u903B\\u8F91\\u53C2\\u6570\");\n }\n const dstParam = ctx.params[dstDEUILogicParamId];\n if (!dstParam) {\n throw new RuntimeError41(\"\\u6CA1\\u6709\\u627E\\u5230\\u4F20\\u5165\\u53C2\\u6570\".concat(dstDEUILogicParamId));\n }\n const result = await execDELogicById(\n dstAppDELogicId,\n dstAppDataEntityId,\n ctx.context,\n dstParam,\n ctx.params\n );\n if (retDEUILogicParamId) {\n ctx.params[retDEUILogicParamId] = result;\n }\n }\n};\n\n// src/ui-logic/ui-logic-node/raw-js-code-node/raw-js-code-node.ts\nvar RawJSCodeNode = class extends UILogicNode {\n async exec(ctx) {\n console.log(ctx);\n ScriptFactory.execScriptFn(\n {\n view: ctx.view,\n context: ctx.context,\n params: ctx.viewParam,\n uiLogic: ctx.params\n },\n this.model.code || \"\",\n { isAsync: false }\n );\n }\n};\n\n// src/ui-logic/ui-logic-param/ui-logic-param.ts\nimport { ModelError as ModelError23 } from \"@ibiz-template/core\";\nvar UILogicParam = class {\n /**\n * Creates an instance of UILogicParam.\n *\n * @author chitanda\n * @date 2023-02-08 16:02:22\n * @param {UILogicParamModel} model\n */\n constructor(model) {\n this.model = model;\n }\n /**\n * 向界面逻辑中计算基础参数\n *\n * @author chitanda\n * @date 2023-02-08 20:02:33\n * @param {UILogicContext} ctx\n */\n calc(ctx) {\n const tag = this.model.id;\n const m = this.model;\n const { parameters } = ctx;\n const { context, params, data } = parameters;\n const app = ibiz.hub.getApp(context.srfappid);\n if (m.codeName === \"layoutPanel\") {\n ctx.params[tag] = parameters.view.layoutPanel.panelItems;\n return;\n }\n if (m.default) {\n if (m.entityListParam) {\n ctx.params[tag] = data || [];\n } else {\n ctx.params[tag] = data && data.length > 0 ? data[0] : {};\n }\n } else if (m.activeContainerParam) {\n ctx.params[tag] = parameters.ctrl || parameters.view;\n } else if (m.activeCtrlParam) {\n ctx.params[tag] = parameters.ctrl;\n } else if (m.ctrlParam) {\n const control = parameters.view.getController(m.codeName.toLowerCase());\n if (control) {\n ctx.params[tag] = control;\n } else {\n ibiz.log.error(\"\\u89C6\\u56FE\\u903B\\u8F91\\u521D\\u59CB\\u5316\\u53C2\\u6570\\uFF0C\\u672A\\u627E\\u5230\".concat(m.codeName, \"\\u6307\\u5B9A\\u90E8\\u4EF6\\u5BF9\\u8C61\"));\n }\n } else if (m.activeViewParam) {\n ctx.params[tag] = parameters.view;\n } else if (m.appGlobalParam) {\n ctx.params[tag] = ibiz.env;\n } else if (m.applicationParam) {\n ctx.params[tag] = app;\n } else if (m.entityListParam) {\n ctx.params[tag] = [];\n } else if (m.entityPageParam) {\n throw new ModelError23(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u5206\\u9875\\u67E5\\u8BE2\\u7ED3\\u679C\");\n } else if (m.entityParam) {\n ctx.params[tag] = {};\n } else if (m.lastReturnParam) {\n ctx.initLastReturnParam(tag);\n } else if (m.navContextParam) {\n ctx.params[tag] = context;\n } else if (m.navViewParamParam) {\n throw new ModelError23(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u89C6\\u56FE\\u8DEF\\u7531\\u53C2\\u6570\");\n } else if (m.routeViewSessionParam) {\n throw new ModelError23(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u8DEF\\u7531\\u89C6\\u56FE\\u4F1A\\u8BDD\");\n } else if (m.simpleListParam) {\n ctx.params[tag] = [];\n } else if (m.simpleParam) {\n ctx.params[tag] = {};\n } else if (m.viewNavDataParam) {\n ctx.params[tag] = params;\n } else if (m.viewSessionParam) {\n throw new ModelError23(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u5F53\\u524D\\u89C6\\u56FE\\u4F1A\\u8BDD\");\n }\n }\n /**\n * 重新建立变量\n * @author lxm\n * @date 2023-03-24 09:20:42\n * @param {DELogicContext} ctx\n */\n renew(ctx) {\n const tag = this.model.id;\n const m = this.model;\n if (m.entityListParam || m.simpleListParam || m.entityPageParam) {\n ctx.params[tag] = [];\n } else if (m.simpleParam || m.entityParam) {\n ctx.params[tag] = {};\n } else {\n throw new ModelError23(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B\\u91CD\\u65B0\\u5EFA\\u7ACB\\u53D8\\u91CF\");\n }\n }\n};\n\n// src/ui-logic/ui-logic.ts\nvar UILogic = class {\n /**\n * Creates an instance of UILogic.\n * @author chitanda\n * @date 2023-02-08 17:02:26\n * @param {IDEUILogic} model\n */\n constructor(model) {\n this.model = model;\n /**\n * 所有节点实例\n *\n * @author chitanda\n * @date 2023-02-08 21:02:38\n * @protected\n * @type {Map<string, UILogicNode>}\n */\n this.nodes = /* @__PURE__ */ new Map();\n /**\n * 所有参数实例\n *\n * @author chitanda\n * @date 2023-02-08 21:02:25\n * @protected\n * @type {Map<string, UILogicParam>}\n */\n this.params = /* @__PURE__ */ new Map();\n var _a;\n if (!((_a = model.deuilogicNodes) == null ? void 0 : _a.length)) {\n throw new RuntimeModelError45(model, \"\\u754C\\u9762\\u903B\\u8F91\\u6CA1\\u6709\\u914D\\u7F6E\\u903B\\u8F91\\u8282\\u70B9\");\n }\n model.deuilogicNodes.forEach((node) => {\n const { logicNodeType } = node;\n let logicNode;\n switch (logicNodeType) {\n case \"BEGIN\":\n logicNode = new StartNode2(node);\n break;\n case \"END\":\n logicNode = new EndNode2(node);\n break;\n case \"DEACTION\":\n logicNode = new DEActionNode2(node);\n break;\n case \"DEUIACTION\":\n logicNode = new DEUIActionNode(node);\n break;\n case \"PREPAREJSPARAM\":\n logicNode = new PrepareJSParamNode(node);\n break;\n case \"RESETPARAM\":\n logicNode = new ResetParamNode2(node);\n break;\n case \"COPYPARAM\":\n logicNode = new CopyParamNode2(node);\n break;\n case \"BINDPARAM\":\n logicNode = new BindParamNode2(node);\n break;\n case \"VIEWCTRLINVOKE\":\n logicNode = new ViewCtrlInvokeNode(node);\n break;\n case \"MSGBOX\":\n logicNode = new MsgBoxNode(node);\n break;\n case \"DEBUGPARAM\":\n logicNode = new DebugParamNode(node);\n break;\n case \"APPENDPARAM\":\n logicNode = new AppendParamNode2(node);\n break;\n case \"SORTPARAM\":\n logicNode = new SortParamNode2(node);\n break;\n case \"RENEWPARAM\":\n logicNode = new RenewParamNode2(node);\n break;\n case \"DEDATASET\":\n logicNode = new DataSetNode2(node);\n break;\n case \"THROWEXCEPTION\":\n logicNode = new ThrowExceptionNode2(node);\n break;\n case \"VIEWCTRLFIREEVENT\":\n logicNode = new ViewCtrlFireEventNode(node);\n break;\n case \"DELOGIC\":\n logicNode = new ExecuteDELogicNode(node);\n break;\n case \"PFPLUGIN\":\n logicNode = new PFPluginNode(node);\n break;\n case \"RAWJSCODE\":\n logicNode = new RawJSCodeNode(node);\n break;\n default:\n throw new ModelError24(node, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8282\\u70B9\\u7C7B\\u578B: \".concat(logicNodeType));\n }\n this.nodes.set(node.id, logicNode);\n });\n model.deuilogicParams.forEach((param) => {\n this.params.set(param.id, new UILogicParam(param));\n });\n this.nodes.forEach((node) => {\n node.links.forEach((link) => {\n link.srcNode = node;\n if (this.nodes.has(link.model.dstDEUILogicNodeId)) {\n link.dstNode = this.nodes.get(link.model.dstDEUILogicNodeId);\n }\n });\n });\n }\n /**\n * 初始化逻辑参数\n *\n * @author chitanda\n * @date 2023-02-08 21:02:58\n * @protected\n * @param {UILogicContext} ctx\n * @param {IContext} context\n * @param {IData} data\n * @param {IParams} [opt]\n */\n initLogicParams(ctx) {\n this.params.forEach((param) => {\n if (param.model.default) {\n ctx.defaultParamName = param.model.id;\n }\n param.calc(ctx);\n });\n }\n /**\n * 执行视图逻辑\n *\n * @author chitanda\n * @date 2023-02-08 21:02:09\n * @param {IContext} context\n * @param {IData} data\n * @param {IParams} [opt]\n * @return {*} {Promise<IData>}\n */\n async exec(parameters) {\n const ctx = new UILogicContext(this.params, parameters);\n this.initLogicParams(ctx);\n const { startDEUILogicNodeId } = this.model;\n if (startDEUILogicNodeId && this.nodes.has(startDEUILogicNodeId)) {\n const start = this.nodes.get(startDEUILogicNodeId);\n await this.deepExec(start, ctx);\n } else {\n throw new RuntimeModelError45(this.model, \"\\u672A\\u8BBE\\u7F6E\\u8D77\\u59CB\\u8282\\u70B9\");\n }\n if (ctx.isEndNode) {\n return ctx.result;\n }\n if (ctx.params[ctx.defaultParamName]) {\n return ctx.params[ctx.defaultParamName];\n }\n return null;\n }\n /**\n * 开始根据连线递归执行逻辑\n *\n * @author chitanda\n * @date 2023-02-09 15:02:32\n * @protected\n * @param {UILogicNode} node\n * @param {UILogicContext} ctx\n * @param {IContext} context\n * @param {(IData[] | null)} data\n * @param {IParams} params\n * @param {IParams} [opt]\n * @return {*} {(Promise<IData | null>)}\n */\n async deepExec(node, ctx) {\n await node.exec(ctx);\n const { links } = node;\n for (let index = 0; index < links.length; index++) {\n const link = links[index];\n const bol = await link.exec(ctx);\n if (bol && link.dstNode) {\n await this.deepExec(link.dstNode, ctx);\n if (node.model.parallelOutput === false) {\n break;\n }\n }\n }\n }\n};\n\n// src/ui-logic/index.ts\nvar uiLogicMap = /* @__PURE__ */ new Map();\nasync function execUILogic(deUILogicId, appDataEntityId, parameters) {\n const app = ibiz.hub.getApp(parameters.context.srfappid);\n const deUILogic = await app.getDEUILogic(deUILogicId, appDataEntityId);\n if (!deUILogic) {\n throw new RuntimeError42(\n \"\\u627E\\u4E0D\\u5230\\u5B9E\\u4F53\".concat(appDataEntityId, \"\\u7684\\u754C\\u9762\\u903B\\u8F91\").concat(deUILogicId)\n );\n }\n if (!uiLogicMap.has(deUILogic)) {\n uiLogicMap.set(deUILogic, new UILogic(deUILogic));\n }\n const uiLogic = uiLogicMap.get(deUILogic);\n await uiLogic.exec(parameters);\n return null;\n}\n\n// src/ui-action/uiaction-util.ts\nimport { RuntimeError as RuntimeError43 } from \"@ibiz-template/core\";\nvar UIActionUtil = class {\n /**\n * 执行界面行为\n *\n * @author lxm\n * @date 2023-05-15 07:54:53\n * @static\n * @param {string} actionId 界面行为id\n * @param {IUILogicParams} params 界面行为参数\n * @return {*} {Promise<IUIActionResult>}\n */\n static async exec(actionId, params) {\n const action = await getUIActionById(actionId);\n if (!action) {\n throw new RuntimeError43(\"\\u6CA1\\u627E\\u5230\".concat(actionId, \"\\u7684\\u754C\\u9762\\u884C\\u4E3A\\u6A21\\u578B\"));\n }\n if (action.actionTarget === \"SINGLEDATA\") {\n const validateResult = await params.view.call(\"Validate\" /* VALIDATE */);\n if (validateResult === false) {\n return { cancel: true };\n }\n }\n const provider = await getUIActionProvider(action);\n return provider.exec(action, params);\n }\n /**\n * 执行界面行为并处理返回值\n * @author lxm\n * @date 2023-05-15 07:54:36\n * @static\n * @param {string} actionId 界面行为id\n * @param {IUILogicParams} params 界面行为参数\n */\n static async execAndResolved(actionId, params) {\n var _a, _b;\n const result = await this.exec(actionId, params);\n if (result.closeView) {\n params.view.modal.ignoreDismissCheck = true;\n params.view.closeView({ ok: true });\n } else if (result.refresh) {\n switch (result.refreshMode) {\n case 1:\n params.view.callUIAction(\"Refresh\" /* REFRESH */);\n break;\n case 2:\n (_a = params.view.parentView) == null ? void 0 : _a.callUIAction(\"Refresh\" /* REFRESH */);\n break;\n case 3:\n (_b = params.view.getTopView()) == null ? void 0 : _b.callUIAction(\"Refresh\" /* REFRESH */);\n break;\n default:\n }\n }\n }\n};\n\n// src/ui-action/provider/ui-action-provider-base.ts\nvar UIActionProviderBase = class {\n /**\n * 界面行为执行入口,处理公共逻辑,子类一般不要重写\n * @author lxm\n * @date 2023-05-08 10:02:10\n * @param {IAppDEUIAction} action\n * @param {IUILogicParams} params\n * @return {*} {Promise<IUIActionResult>}\n */\n async exec(action, args) {\n const { context, params, data } = args;\n const result = {\n refresh: action.reloadData,\n refreshMode: action.refreshMode,\n closeView: action.closeEditView\n };\n const { appDEUILogicId, appDataEntityId, uilogicAttachMode } = action;\n if (uilogicAttachMode === \"REPLACE\") {\n if (!appDEUILogicId) {\n throw new RuntimeModelError46(action, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5B9E\\u4F53\\u754C\\u9762\\u903B\\u8F91\");\n }\n await execUILogic(appDEUILogicId, appDataEntityId, args);\n return result;\n }\n if (!await this.isConfirm(action, args)) {\n return this.returnError(result);\n }\n const _result = await this.execAction(action, args);\n Object.assign(result, _result);\n if (result.cancel === true) {\n return this.returnError(result);\n }\n const nextActionParams = {\n ...args,\n context: result.nextContext || context,\n data: result.data || data,\n params: result.nextParams || params\n };\n if (action.closeEditView) {\n this.doNextAction(action, nextActionParams);\n } else {\n const nextResult = await this.doNextAction(action, nextActionParams);\n if (nextResult) {\n Object.assign(result, nextResult);\n if (nextResult.cancel === true) {\n return this.returnError(result);\n }\n }\n }\n if (action.uilogicAttachMode === \"AFTER\") {\n if (!appDEUILogicId) {\n throw new RuntimeModelError46(action, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5B9E\\u4F53\\u754C\\u9762\\u903B\\u8F91\");\n }\n await execUILogic(appDEUILogicId, appDataEntityId, args);\n }\n return result;\n }\n /**\n * 有错误和取消时对result做的处理\n * @author lxm\n * @date 2023-03-15 07:43:21\n * @protected\n * @param {IUIActionResult} result\n * @returns {*} {IUIActionResult}\n * @memberof UIActionHandler\n */\n returnError(result) {\n return Object.assign(result, {\n refresh: false,\n closeView: false\n });\n }\n /**\n * 用户操作确认\n *\n * @author lxm\n * @date 2022-10-25 14:10:55\n * @param {IAppDEUIAction} action 界面行为模型\n * @returns {*} {Promise<boolean>}\n */\n async isConfirm(action, args) {\n const confirmMsg = this.calcMessage(\"confirm\", action, args);\n if (action.enableConfirm && confirmMsg) {\n return ibiz.confirm.warning({ title: \"\\u64CD\\u4F5C\\u786E\\u8BA4\", desc: confirmMsg });\n }\n return true;\n }\n /**\n * 执行后续界面行为\n *\n * @author lxm\n * @date 2022-10-25 15:10:54\n * @param {IAppDEUIAction} action\n * @param {IContext} context\n * @param {(IData[])} data\n * @param {IParams} params\n * @param {(IData | undefined)} [opts]\n * @returns {*} {Promise<void>}\n */\n async doNextAction(action, params) {\n const nextActionId = action.nextId;\n if (nextActionId) {\n return UIActionUtil.exec(nextActionId, params);\n }\n }\n /**\n * 参数处理(根据数据目标和数据参数,导航参数)\n *\n * @author lxm\n * @date 2022-08-29 17:08:00\n * @protected\n * @static\n * @param {IAppDEUIAction} action 界面行为\n * @param {IContext} context 上下文\n * @param {(IData[])} data 数据集合\n * @param {IParams} params 视图参数\n * @returns {*} {Promise<{\n * resultContext: IContext; 处理后的上下文\n * resultData: IData[]; 处理后的数据集合\n * resultParams: IParams; 处理后的视图参数\n * }>}\n */\n async handleParams(action, context, data, params) {\n let resultData = [];\n const deName = calcDeCodeNameById(action.appDataEntityId);\n const entity = await ibiz.hub.getAppDataEntity(\n action.appDataEntityId,\n context.srfappid\n );\n const keyField = entity.keyAppDEFieldId;\n switch (action.actionTarget) {\n case \"NONE\":\n resultData = [];\n break;\n case \"SINGLEDATA\":\n resultData = [data[0]];\n break;\n case \"MULTIDATA\":\n resultData = data;\n break;\n case \"MULTIKEY\":\n resultData = deName && data.length > 0 ? data.map((item) => ({ [keyField]: item.srfkey || item[keyField] })) : [{}];\n break;\n case \"SINGLEKEY\":\n {\n const originData = data[0] || {};\n resultData = deName ? [{ [keyField]: originData.srfkey || originData[keyField] }] : [{}];\n }\n break;\n default:\n break;\n }\n const resultContext = context.clone();\n const navContexts = [...action.navigateContexts || []];\n if (deName && action.actionTarget !== \"NONE\") {\n const { valueItem, paramItem } = action;\n const key = paramItem || deName;\n const valueKey = valueItem || \"srfkey\";\n navContexts.unshift({\n key,\n value: valueKey,\n rawValue: false\n });\n }\n const isMultiData = [\"MULTIKEY\", \"MULTIDATA\"].includes(action.actionTarget) && data.length > 0;\n const tempContext = convertNavData(\n navContexts,\n isMultiData ? formatMultiData(navContexts, data) : data[0] || {},\n params,\n context\n );\n Object.assign(resultContext, tempContext);\n const navParams = action.navigateParams;\n const resultParams = convertNavData(\n navParams,\n isMultiData ? formatMultiData(navParams, data) : data[0] || {},\n params,\n resultContext\n );\n return { resultContext, resultData, resultParams };\n }\n /**\n * 计算消息信息(动态,多语言资源)\n * @author lxm\n * @date 2023-09-25 03:03:01\n * @protected\n * @param {('confirm' | 'success')} type\n * @param {IAppDEUIAction} action\n * @param {IUILogicParams} args\n * @return {*}\n */\n calcMessage(type, action, args) {\n let msg;\n let msgRes;\n const { confirmMsg, cmlanguageRes, successMsg, smlanguageRes } = action;\n switch (type) {\n case \"confirm\":\n msg = confirmMsg;\n msgRes = cmlanguageRes;\n break;\n case \"success\":\n msg = successMsg;\n msgRes = smlanguageRes;\n break;\n default:\n }\n if (msgRes) {\n const msgResContent = ibiz.i18n.t(\n msgRes.lanResTag,\n msgRes.defaultContent || msg\n );\n if (msgResContent !== msgRes.lanResTag) {\n msg = msgResContent;\n }\n }\n if (msg) {\n const { data } = args;\n const scriptParams = { ...args };\n if (data.length === 1) {\n [scriptParams.data] = data;\n } else if (data.length === 0) {\n delete scriptParams.data;\n }\n return ScriptFactory.execScriptFn(scriptParams, \"`\".concat(msg, \"`\"), {\n isAsync: false,\n singleRowReturn: true\n });\n }\n }\n};\n\n// src/ui-action/provider/backend-ui-action-provider.ts\nvar BackendUIActionProvider = class extends UIActionProviderBase {\n async execAction(action, args) {\n const { context, params, data, event } = args;\n const actionResult = {};\n const entityName = action.appDataEntityId;\n const methodName = action.appDEMethodId;\n if (!entityName || !methodName) {\n throw new RuntimeModelError47(action, \"\\u672A\\u914D\\u7F6E\\u5B9E\\u4F53\\u6216\\u5B9E\\u4F53\\u884C\\u4E3A\");\n }\n const { resultContext, resultParams, resultData } = await this.handleParams(\n action,\n context,\n data,\n params\n );\n const tempParams = { ...resultParams };\n const frontPSAppView = action.frontAppViewId;\n if (frontPSAppView) {\n const res2 = await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n frontPSAppView,\n resultContext,\n resultParams,\n { event }\n );\n if (!(res2 == null ? void 0 : res2.ok)) {\n actionResult.cancel = true;\n return actionResult;\n }\n if ((res2 == null ? void 0 : res2.ok) && res2.data) {\n if (resultData.length === 0) {\n resultData.push({});\n }\n const actionData = res2.data.map(\n (item) => {\n var _a;\n return ((_a = item.getOrigin) == null ? void 0 : _a.call(item)) || item || {};\n }\n );\n resultData.forEach((item) => {\n item.srfactionparam = actionData;\n });\n }\n }\n const app = ibiz.hub.getApp(context == null ? void 0 : context.srfappid);\n const _data = resultData.map((item) => {\n var _a;\n return ((_a = item.getOrigin) == null ? void 0 : _a.call(item)) || item || {};\n }).map((item) => Object.assign(item, tempParams));\n const isMultiData = [\"MULTIKEY\", \"MULTIDATA\"].includes(\n action.actionTarget\n );\n const res = await app.deService.exec(\n entityName,\n methodName,\n resultContext,\n isMultiData ? _data : _data[0],\n tempParams\n );\n if (res.ok) {\n const successMsg = this.calcMessage(\"success\", action, args);\n if (successMsg) {\n ibiz.message.success(successMsg);\n }\n }\n Object.assign(actionResult, {\n data: isArray9(res.data) ? res.data : [res.data],\n nextContext: resultContext,\n nextParams: tempParams\n });\n return actionResult;\n }\n};\n\n// src/ui-action/provider/sys-ui-action-provider.ts\nvar SysUIActionProvider = class extends UIActionProviderBase {\n constructor() {\n super(...arguments);\n this.predefinedActionMap = /* @__PURE__ */ new Map([\n [\"EDITVIEW_EXITACTION\", \"Exit\"],\n [\"EDITVIEW_SAVEANDEXITACTION\", \"SaveAndExit\"],\n [\"TREEVIEW_REFRESHPARENTACTION\", \"RefreshParent\"],\n [\"GRIDVIEW_EXPORTXMLACTION\", \"ExportModel\"],\n [\"GRIDVIEW_EXPORTACTION\", \"ExportExcel\"],\n [\"EDITVIEW_REMOVEANDEXITACTION\", \"RemoveAndExit\"],\n [\"GRIDVIEW_PRINTACTION\", \"Print\"],\n [\"EDITVIEW_NEXTRECORDACTION\", \"NextRecord\"],\n [\"GRIDVIEW_NEWROWACTION\", \"NewRow\"],\n [\"EDITVIEW_LASTRECORDACTION\", \"LastRecord\"],\n [\"EDITVIEW_PREVRECORDACTION\", \"PrevRecord\"],\n [\"GRIDVIEW_SEARCHBAR\", \"ToggleFilter\"],\n [\"EDITVIEW_SAVEANDSTARTWFACTION\", \"SaveAndStart\"],\n [\"EDITVIEW_NEWACTION\", \"New\"],\n [\"EDITVIEW_PRINTACTION\", \"Print\"],\n [\"EDITVIEW_COPYACTION\", \"Copy\"],\n [\"EDITVIEW_HELPACTION\", \"Help\"],\n [\"EDITVIEW_FIRSTRECORDACTION\", \"FirstRecord\"],\n [\"GRIDVIEW_REFRESHACTION\", \"Refresh\"],\n [\"EDITVIEW_SAVEANDNEWACTION\", \"SaveAndNew\"],\n [\"EDITVIEW_VIEWWFSTEPACTORACTION\", \"ViewWFStep\"],\n [\"EDITVIEW_SAVEACTION\", \"Save\"],\n [\"TREEVIEW_REFRESHALLACTION\", \"RefreshAll\"],\n [\"GRIDVIEW_IMPORTBAR\", \"Import\"],\n [\"GRIDVIEW_ROWEDITACTION\", \"ToggleRowEdit\"],\n [\"GRIDVIEW_NEWACTION\", \"New\"],\n [\"GRIDVIEW_EDITACTION\", \"Edit\"],\n [\"GRIDVIEW_HELPACTION\", \"Help\"],\n [\"EDITVIEW_REFRESHACTION\", \"Refresh\"],\n [\"GRIDVIEW_REMOVEACTION\", \"Remove\"],\n [\"GRIDVIEW_COPYACTION\", \"Copy\"],\n [\"GRIDVIEW_VIEWACTION\", \"View\"],\n [\"GRIDVIEW_SAVEROWACTION\", \"SaveRow\"],\n [\"APP_LOGIN\", \"Login\"],\n [\"APP_LOGOUT\", \"logout\"],\n [\"UTIL_RESET\", \"Reset\"],\n [\"UTIL_SEARCH\", \"Search\"]\n ]);\n }\n async execAction(action, args) {\n const { view } = args;\n const uIActionTag = this.predefinedActionMap.get(action.predefinedType) || action.uiactionTag;\n if (uIActionTag === \"Exit\" /* EXIT */) {\n return { closeView: true };\n }\n const result = await view.callUIAction(uIActionTag, args);\n return result || {};\n }\n};\n\n// src/ui-action/provider/front-ui-action-provider.ts\nimport {\n StringUtil,\n RuntimeModelError as RuntimeModelError48,\n ModelError as ModelError25,\n RuntimeError as RuntimeError44\n} from \"@ibiz-template/core\";\nvar FrontUIActionProvider = class extends UIActionProviderBase {\n async execAction(action, args) {\n const { context, params, data, event, noWaitRoute } = args;\n let actionResult = {};\n switch (action.frontProcessType) {\n case \"OPENHTMLPAGE\": {\n const url = StringUtil.fill(action.htmlPageUrl, context, data == null ? void 0 : data[0]);\n window.open(url, \"_blank\");\n break;\n }\n case \"TOP\":\n case \"WIZARD\": {\n const frontPSAppView = action.frontAppViewId;\n if (!frontPSAppView) {\n throw new RuntimeModelError48(action, \"\\u672A\\u914D\\u7F6E\\u6253\\u5F00\\u89C6\\u56FE\");\n }\n const { resultContext, resultParams } = await this.handleParams(\n action,\n context,\n data,\n params\n );\n const res = await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n frontPSAppView,\n resultContext,\n resultParams,\n { event, noWaitRoute }\n );\n if (!(res == null ? void 0 : res.ok)) {\n actionResult.cancel = true;\n }\n if ((res == null ? void 0 : res.ok) && res.data) {\n actionResult.data = res.data;\n actionResult.nextContext = resultContext;\n actionResult.nextParams = { ...params, ...resultParams };\n }\n break;\n }\n case \"PRINT\":\n await this.executePrint(action, args);\n break;\n case \"DATAIMP\":\n actionResult = await this.executeDataImport(action, args);\n break;\n case \"DATAEXP\":\n await this.executeDataExport(action, args);\n break;\n case \"OTHER\":\n actionResult = this.doOther(action, args);\n break;\n default:\n throw new ModelError25(\n action,\n \"\\u672A\\u652F\\u6301\\u7684\\u524D\\u53F0\\u5904\\u7406\\u6A21\\u5F0F[\".concat(action.frontProcessType, \"]\")\n );\n }\n return actionResult;\n }\n /**\n * 处理模式:用户自定义\n * @author lxm\n * @date 2023-07-25 02:39:48\n * @protected\n * @param {IAppDEUIAction} action\n * @param {IUILogicParams} args\n * @return {*}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n doOther(action, args) {\n const { scriptCode } = action;\n const { context, params, data, event } = args;\n if (scriptCode) {\n const result = ScriptFactory.execScriptFn(\n { context, params, data, el: event == null ? void 0 : event.target },\n scriptCode\n );\n return result || {};\n }\n throw new RuntimeModelError48(action, \"\\u81EA\\u5B9A\\u4E49\\u7C7B\\u578B\\u7F3A\\u5C11\\u914D\\u7F6E\\u811A\\u672C\\u4EE3\\u7801\");\n }\n /**\n * 执行打印行为\n * @protected\n * @param {IAppDEUIAction} action\n * @param {IUILogicParams} args\n * @return {*}\n */\n async executePrint(action, args) {\n var _a, _b, _c;\n const { resultContext, resultParams } = await this.handleParams(\n action,\n args.context,\n args.data,\n args.params\n );\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n action.appDataEntityId\n );\n const appDEPrint = (_a = appDataEntity.appDEPrints) == null ? void 0 : _a.find((print) => {\n return print.id === action.appDEPrintId;\n });\n if (appDEPrint) {\n let requestUrl = \"\";\n if (resultContext && resultContext[appDataEntity.codeName.toLowerCase()]) {\n requestUrl += \"/\".concat((_b = appDataEntity.codeName2) == null ? void 0 : _b.toLowerCase(), \"/printdata/\").concat(resultContext[appDataEntity.codeName.toLowerCase()]);\n } else {\n throw new RuntimeError44(\"\\u6CA1\\u6709\\u627E\\u5230\\u6570\\u636E\\u4E3B\\u952E\");\n }\n const res = await ibiz.net.request(requestUrl, {\n method: \"get\",\n responseType: \"blob\",\n params: {\n srfprinttag: appDEPrint.codeName,\n ...resultParams\n }\n });\n if (res.ok) {\n if (resultParams && resultParams.srfcontenttype) {\n const disposition = res.headers[\"content-disposition\"];\n const filename = (_c = disposition.split(\";\").find((str) => str.indexOf(\"filename=\") !== -1)) == null ? void 0 : _c.slice(9);\n const href = URL.createObjectURL(res.data);\n const a = document.createElement(\"a\");\n a.href = href;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n URL.revokeObjectURL(href);\n } else {\n const link = window.URL.createObjectURL(res.data);\n window.open(link, \"_blank\");\n }\n } else {\n throw new RuntimeError44(\"\\u6253\\u5370\\u5931\\u8D25\");\n }\n } else {\n throw new RuntimeError44(\"\\u6CA1\\u6709\\u627E\\u5230\\u5B9E\\u4F53\\u6253\\u5370\\u9879\");\n }\n }\n /**\n * 执行导入行为\n * @protected\n * @param {IAppDEUIAction} action\n * @param {IUILogicParams} args\n * @return {*}\n */\n async executeDataImport(action, _args) {\n var _a;\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n action.appDataEntityId\n );\n const appDEDataImport = (_a = appDataEntity.appDEDataImports) == null ? void 0 : _a.find(\n (dataImport) => dataImport.id === action.appDEDataImportId\n );\n let importName = \"DataImport\";\n if (appDEDataImport && appDEDataImport.enableCustomized) {\n importName = \"DataImport2\";\n }\n if (appDEDataImport) {\n const modal = ibiz.overlay.createModal(\n importName,\n {\n dismiss: () => modal.dismiss(),\n appDataEntity,\n dataImport: appDEDataImport\n },\n {\n width: \"auto\",\n placement: \"center\"\n }\n );\n modal.present();\n await modal.onWillDismiss();\n return {\n refresh: true,\n refreshMode: 1\n };\n }\n throw new RuntimeError44(\"\\u6CA1\\u6709\\u627E\\u5230\\u5B9E\\u4F53\\u5BFC\\u5165\\u9879\");\n }\n /**\n * 执行导出行为\n * @protected\n * @param {IAppDEUIAction} action\n * @param {IUILogicParams} args\n * @return {*}\n */\n async executeDataExport(action, args) {\n var _a, _b;\n const { resultParams } = await this.handleParams(\n action,\n args.context,\n args.data,\n args.params\n );\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n action.appDataEntityId\n );\n const appDEDataExport = (_a = appDataEntity.appDEDataExports) == null ? void 0 : _a.find((dataExport) => {\n return dataExport.id === action.appDEDataExportId;\n });\n if (appDEDataExport) {\n const url = \"/\".concat((_b = appDataEntity.codeName2) == null ? void 0 : _b.toLowerCase(), \"/exportdata/fetchdefault?srfexporttag=\").concat(appDEDataExport.codeName);\n const params = {\n page: 0,\n size: appDEDataExport.maxRowCount ? appDEDataExport.maxRowCount : 1e3,\n ...args.params,\n ...resultParams\n };\n const res = await ibiz.net.request(url, {\n method: \"post\",\n data: params\n });\n if (res.status === 200) {\n let fileName = \"\".concat(appDataEntity.logicName, \"\\u8868.xlsx\");\n fileName = decodeURIComponent(fileName);\n const blob = new Blob([res.data], {\n type: \"application/vnd.ms-excel\"\n });\n const elink = document.createElement(\"a\");\n elink.download = fileName;\n elink.style.display = \"none\";\n elink.href = URL.createObjectURL(blob);\n document.body.appendChild(elink);\n elink.click();\n URL.revokeObjectURL(elink.href);\n document.body.removeChild(elink);\n } else {\n throw new RuntimeError44(\"\\u5BFC\\u51FA\\u8BF7\\u6C42\\u5931\\u8D25\");\n }\n } else {\n throw new RuntimeError44(\"\\u6CA1\\u6709\\u627E\\u5230\\u5B9E\\u4F53\\u5BFC\\u51FA\\u9879\");\n }\n }\n};\n\n// src/ui-action/provider/wf-withdraw-ui-action-provider.ts\nvar WFWithdrawUIActionProvider = class extends UIActionProviderBase {\n async execAction(_action, args) {\n const { view } = args;\n const isWithdraw = await ibiz.modal.confirm({\n title: \"\\u63D0\\u793A\",\n desc: \"\\u662F\\u5426\\u786E\\u8BA4\\u6267\\u884C\\u64A4\\u56DE\\u64CD\\u4F5C\\uFF1F\"\n });\n let isCloseView = false;\n if (isWithdraw && view) {\n await view.call(\"WFWithdraw\", args);\n isCloseView = true;\n }\n return {\n refresh: false,\n closeView: isCloseView\n };\n }\n};\n\n// src/ui-action/provider/index.ts\nfunction presetUIActionProvider() {\n const frontUIActionProvider = new FrontUIActionProvider();\n registerUIActionProvider(\"FRONT\", () => frontUIActionProvider);\n const backendUIActionProvider = new BackendUIActionProvider();\n registerUIActionProvider(\"BACKEND\", () => backendUIActionProvider);\n const sysUIActionProvider = new SysUIActionProvider();\n registerUIActionProvider(\"SYS\", () => sysUIActionProvider);\n const wfWithdrawUIActionProvider = new WFWithdrawUIActionProvider();\n registerUIActionProvider(\n \"DEUIACTION_WFWithdraw\",\n () => wfWithdrawUIActionProvider\n );\n}\n\n// src/controller/control/toolbar/toolbar.controllerr.ts\nvar ToolbarController = class extends ControlController {\n get _evt() {\n return this.evt;\n }\n initState() {\n super.initState();\n this.state.buttonsState = new ButtonContainerState();\n this.state.viewMode = \"EMBED\" /* EMBED */;\n this.state.extraButtons = {};\n }\n /**\n * 执行按钮的界面行为(如果按钮存在界面行为的话)\n *\n * @author zk\n * @date 2023-07-20 10:07:22\n * @protected\n * @param {IDEToolbarItem} item 工具栏项\n * @param {MouseEvent} event 鼠标事件\n * @param {IData} [param] 界面行为参数(界面行为点击自定义按钮可能需要传参数到行为去,标准行为忽略此参数)\n * @return {*} {Promise<void>}\n * @memberof ToolbarController\n */\n async doUIAction(item, event, param = {}) {\n if (item.itemType === \"DEUIACTION\") {\n const actionId = item.uiactionId;\n const uiAction = await getUIActionById(actionId);\n if (!uiAction) {\n throw new RuntimeError45(\"\\u6CA1\\u6709\\u627E\\u5230\\u754C\\u9762\\u884C\\u4E3A\\u6A21\\u578B\".concat(actionId));\n }\n const enableLoading = [\"SYS\", \"BACKEND\", \"WFBACKEND\"].includes(uiAction.uiactionMode) && uiAction.showBusyIndicator !== false;\n if (enableLoading) {\n this.state.buttonsState.setLoading(item.id);\n }\n try {\n const res = await this.ctx.view.call(\"GetData\" /* GET_DATA */);\n const data = res || [];\n const args = this.getEventArgs();\n args.params = Object.assign(param, args.params);\n await UIActionUtil.execAndResolved(actionId, {\n ...args,\n data,\n event\n });\n } finally {\n if (enableLoading) {\n this.state.buttonsState.setLoading(\"\");\n }\n }\n }\n }\n async onCreated() {\n await super.onCreated();\n this.state.viewMode = this.ctx.view.modal.mode;\n recursiveIterate(\n this.model,\n (item) => {\n if (item.itemType === \"DEUIACTION\") {\n const uiItem = item;\n const buttonState = new UIActionButtonState(\n uiItem.id,\n this.context.srfappid,\n uiItem.uiactionId\n );\n this.state.buttonsState.addState(uiItem.id, buttonState);\n }\n },\n { childrenFields: [\"detoolbarItems\"] }\n );\n await this.calcButtonState();\n }\n /**\n * 工具栏按钮点击事件\n *\n * @author zk\n * @date 2023-07-20 03:07:29\n * @param {(IDEToolbarItem | IExtraButton)} item\n * @param {MouseEvent} event\n * @param {IData} [params] 界面行为参数(界面行为点击自定义按钮可能需要传参数到行为去,标准行为忽略此参数)\n * @return {*} {Promise<void>}\n * @memberof ToolbarController\n */\n async onItemClick(item, event, params) {\n const isExtra = item.buttonType === \"extra\";\n await this._evt.emit(\"onClick\", {\n event,\n eventArg: item.id,\n buttonType: isExtra ? \"extra\" : \"deuiaction\"\n });\n if (!isExtra) {\n await this.doUIAction(item, event, params);\n }\n }\n async calcButtonState(data, appDeId) {\n let _data = data;\n if (data && data instanceof ControlVO) {\n _data = data.getOrigin();\n }\n await this.state.buttonsState.update(_data, appDeId);\n if (this.scheduler) {\n const logicParams = {};\n if (_data) {\n logicParams.data = [_data];\n }\n recursiveIterate(\n this.model,\n (item) => {\n const itemState = this.state.buttonsState[item.id];\n if (itemState.visible) {\n const dynaVisible = this.scheduler.triggerItemVisible(\n item.id,\n logicParams\n );\n if (dynaVisible !== void 0) {\n itemState.visible = dynaVisible;\n }\n }\n if (!itemState.disabled) {\n const dynaEnable = this.scheduler.triggerItemEnable(\n item.id,\n logicParams\n );\n if (dynaEnable !== void 0) {\n itemState.disabled = !dynaEnable;\n }\n }\n },\n { childrenFields: [\"detoolbarItems\"] }\n );\n }\n }\n setExtraButtons(position, buttons) {\n if (!this.state.extraButtons[position]) {\n this.state.extraButtons[position] = [];\n }\n this.state.extraButtons[position].push(...buttons);\n }\n clearExtraButtons(position) {\n if (position === void 0) {\n this.state.extraButtons = {};\n } else {\n this.state.extraButtons[position] = [];\n }\n }\n initControlScheduler(logics = []) {\n const actualLogics = [...logics];\n recursiveIterate(\n this.model,\n (item) => {\n if (item.controlLogics) {\n actualLogics.push(...item.controlLogics);\n }\n },\n { childrenFields: [\"detoolbarItems\"] }\n );\n super.initControlScheduler(actualLogics);\n }\n};\n\n// src/controller/control/context-menu/context-menu.controllerr.ts\nvar ContextMenuController = class extends ToolbarController {\n};\n\n// src/controller/control/dashboard/dashboard.controller.ts\nvar DashboardController = class extends ControlController {\n constructor() {\n super(...arguments);\n /**\n * 所有数据看板成员的适配器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: IPortletProvider }}\n */\n this.providers = {};\n /**\n * 门户部件控制器\n *\n * @author lxm\n * @date 2022-10-20 22:10:26\n * @type {{ [key: string]: IPortletController }}\n */\n this.portlets = {};\n }\n initState() {\n super.initState();\n }\n async onCreated() {\n await super.onCreated();\n await this.initPortlets(this.model.controls);\n const { appDataEntityId } = this.view.model;\n if (appDataEntityId) {\n this.view.evt.on(\"onDataChange\", (event) => {\n const data = getOriginData(event.data);\n if (data) {\n this.dataChangeNotify(data);\n }\n });\n }\n }\n /**\n * 初始化子门户部件\n *\n * @author lxm\n * @date 2022-10-21 03:10:49\n * @param {PortletPartModel[]} portletModels\n * @param {ContainerPortletController} [parent]\n * @returns {*} {Promise<void>}\n */\n async initPortlets(portletModels, parent) {\n if (!(portletModels == null ? void 0 : portletModels.length)) {\n return;\n }\n const ignorePortletTypes = [\n \"CHART\" /* CHART */,\n \"APPMENU\" /* APP_MENU */,\n \"TOOLBAR\" /* TOOLBAR */,\n \"LIST\" /* LIST */\n ];\n await Promise.all(\n portletModels.map(async (portlet) => {\n var _a;\n if (portlet.controlType && ignorePortletTypes.includes(portlet.controlType)) {\n return;\n }\n const provider = await getPortletProvider(portlet);\n if (provider) {\n this.providers[portlet.id] = provider;\n const controller = await provider.createController(\n portlet,\n this,\n parent\n );\n this.portlets[portlet.id] = controller;\n if ((_a = portlet.controls) == null ? void 0 : _a.length) {\n await this.initPortlets(\n portlet.controls,\n controller\n );\n }\n }\n })\n );\n }\n /**\n * 通知所有表单成员表单操作过程中的数据变更\n *\n * @author lxm\n * @date 2022-09-20 18:09:40\n * @param {string[]} names\n */\n async dataChangeNotify(data) {\n await handleAllSettled(\n Object.values(this.portlets).map(async (portlet) => {\n return portlet.dataChangeNotify(data);\n })\n );\n }\n};\n\n// src/controller/control/dashboard/custom-dashboard.controller.ts\nvar CustomDashboardController = class {\n /**\n * Creates an instance of BaseController.\n * @author lxm\n * @date 2023-04-26 06:46:21\n * @param {CTX} ctx 跨组件上下文环境,内部机制不暴露\n */\n constructor(model) {\n /**\n * 自定义布局模型数据\n *\n * @author: zhujiamin\n * @Date: 2023-09-20 16:42:36\n */\n this.customModelData = [];\n /**\n * 动态设计水平列数\n *\n * @author: zhujiamin\n * @Date: 2023-09-20 16:43:39\n */\n this.layoutColNum = 12;\n /**\n * 动态设计单元格高度,80px\n *\n * @author: zhujiamin\n * @Date: 2023-09-20 16:43:39\n */\n this.layoutRowH = 80;\n /**\n * 看板模型\n *\n * @author: zhujiamin\n * @Date: 2023-09-20 16:43:39\n */\n this.model = null;\n var _a, _b;\n this.model = model;\n this.config = new ConfigService(\n model.appId,\n \"dynadashboard\",\n \"dashboard_\".concat(((_a = this.model.appDataEntityId) == null ? void 0 : _a.toLowerCase()) || \"app\", \"_\").concat((_b = this.model.codeName) == null ? void 0 : _b.toLowerCase())\n );\n }\n /**\n * 加载自定义布局模型数据\n *\n * @author: zhujiamin\n * @Date: 2023-09-20 16:22:49\n */\n async loadCustomModelData() {\n const res = await this.config.load();\n if (res.model) {\n this.customModelData = res.model;\n }\n if (res.colNum) {\n this.layoutColNum = res.colNum;\n }\n if (res.rowH) {\n this.layoutRowH = res.rowH;\n }\n return this.customModelData;\n }\n /**\n * 保存自定义布局模型数据\n *\n * @author: zhujiamin\n * @Date: 2023-09-20 16:22:49\n */\n async saveCustomModelData(model) {\n const res = await this.config.save({\n model,\n colNum: this.layoutColNum,\n rowH: this.layoutRowH\n });\n if (res) {\n this.customModelData = model;\n }\n return model;\n }\n};\n\n// src/controller/control/dashboard/portlet/portlet-part/portlet-part.state.ts\nvar PortletPartState = class {\n constructor() {\n this.visible = true;\n this.keepAlive = false;\n this.layout = {\n width: \"\",\n height: \"\",\n extraStyle: {},\n extraClass: [],\n contentStyle: {}\n };\n this.class = {\n container: [],\n containerDyna: []\n };\n /**\n * 界面行为组状态\n *\n * @type {(IButtonContainerState | null)}\n * @memberof PortletPartState\n */\n this.actionGroupState = null;\n }\n};\n\n// src/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.ts\nvar PortletPartController = class {\n /**\n * 门户部件的上下文参数\n *\n * @author lxm\n * @date 2022-10-23 16:10:50\n * @readonly\n * @type {IContext}\n */\n get context() {\n return this.dashboard.context;\n }\n /**\n * 门户部件的视图参数\n *\n * @author lxm\n * @date 2022-10-23 16:10:21\n * @readonly\n * @type {IParams}\n */\n get params() {\n return this.dashboard.params;\n }\n /**\n * 获取容器类名集合\n * @author lxm\n * @date 2023-08-02 06:06:12\n * @readonly\n * @type {string[]}\n */\n get containerClass() {\n return [...this.state.class.container, ...this.state.class.containerDyna];\n }\n /**\n * Creates an instance of PortletPartController.\n * @author lxm\n * @date 2022-10-21 10:10:44\n * @param {T} model\n * @param {DashboardController} dashboard 数据看板控制器\n * @param {IPortletContainerController} [parent] 父容器控制器,最上级不存在\n */\n constructor(model, dashboard, parent) {\n this.model = model;\n this.dashboard = dashboard;\n this.parent = parent;\n this.state = this.createState();\n }\n /**\n * 子类不可覆盖或重写此方法,在 init 时需要重写的使用 onInit 方法。\n *\n * @author lxm\n * @date 2022-08-18 22:08:30\n * @returns {*} {Promise<void>}\n */\n async init() {\n await this.onInit();\n }\n async onInit() {\n this.onDataChange = this.onDataChange.bind(this);\n const { layoutPos, sysCss } = this.model;\n if (layoutPos) {\n const { width, height } = calcLayoutHeightWidth(this.model);\n this.state.layout.width = \"\".concat(width);\n this.state.layout.height = \"\".concat(height);\n }\n if (sysCss == null ? void 0 : sysCss.cssName) {\n this.state.class.container.push(sysCss.cssName);\n }\n await this.initActionStates();\n }\n /**\n * 创建门户控件的状态对象\n *\n * @protected\n * @returns {*} {PortletPartState}\n * @memberof PortletPartController\n */\n createState() {\n return new PortletPartState();\n }\n /**\n * 数据改变方法\n * @param {DataChangeEvent} event\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-09-22 17:39:44\n */\n onDataChange(event) {\n let data = event.data[0];\n if (data && data instanceof ControlVO) {\n data = data.getOrigin();\n }\n if (data) {\n this.state.actionGroupState.update(\n data,\n this.dashboard.view.model.appDataEntityId\n );\n }\n }\n /**\n * 初始化标题右侧界面行为按钮的状态\n *\n * @author chitanda\n * @date 2023-08-02 17:08:04\n * @return {*} {Promise<void>}\n */\n async initActionStates() {\n var _a;\n const { uiactionGroup } = this.model;\n if (!((_a = uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {\n return;\n }\n const containerState = new ButtonContainerState();\n uiactionGroup.uiactionGroupDetails.forEach((detail) => {\n const actionid = detail.uiactionId;\n if (actionid) {\n const buttonState = new UIActionButtonState(\n detail.id,\n this.dashboard.context.srfappid,\n actionid\n );\n containerState.addState(detail.id, buttonState);\n }\n });\n await containerState.update();\n this.state.actionGroupState = containerState;\n const { appDataEntityId } = this.dashboard.view.model;\n if (appDataEntityId) {\n this.dashboard.view.evt.on(\"onDataChange\", this.onDataChange);\n }\n }\n /**\n * 触发操作列点击事件\n *\n * @author lxm\n * @date 2022-09-07 22:09:46\n * @param {IPSUIActionGroupDetail} detail\n * @param {MouseEvent} event\n */\n async onActionClick(detail, event, data = []) {\n const actionId = detail.uiactionId;\n await UIActionUtil.execAndResolved(actionId, {\n context: this.dashboard.context,\n params: this.dashboard.params,\n data,\n view: this.dashboard.view,\n event\n });\n }\n /**\n * 表单数据变更通知(由表单控制器调用)\n *\n * @author lxm\n * @date 2022-09-20 18:09:56\n * @param {string[]} names\n */\n async dataChangeNotify(data) {\n if (this.state.actionGroupState) {\n const { appDataEntityId } = this.dashboard.view.model;\n this.state.actionGroupState.update(data, appDataEntityId);\n }\n this.calcDynaClass(data);\n }\n /**\n * 计算动态样式表\n * @author lxm\n * @date 2023-08-02 06:15:08\n * @param {IData} data\n */\n calcDynaClass(data) {\n if (this.model.dynaClass) {\n const dynaClass = calcDynaClass(this.model.dynaClass, data);\n if (dynaClass.length) {\n this.state.class.containerDyna = dynaClass;\n }\n }\n }\n /**\n * 销毁\n * @author lxm\n * @date 2023-04-25 11:08:54\n */\n async destroyed() {\n ibiz.log.debug(\"\".concat(this.model.codeName, \" onDestroyed\"));\n this.dashboard.view.evt.off(\"onDataChange\", this.onDataChange);\n }\n};\n\n// src/controller/control/dashboard/portlet/container-portlet/container-portlet.controller.ts\nvar ContainerPortletController = class extends PortletPartController {\n};\n\n// src/controller/control/dashboard/portlet/view-portlet/view-portlet.controller.ts\nvar ViewPortletController = class extends PortletPartController {\n};\n\n// src/controller/control/dashboard/portlet/menu-portlet/menu-portlet.controller.ts\nvar MenuPortletController = class extends PortletPartController {\n};\n\n// src/controller/control/dashboard/portlet/chart-portlet/chart-portlet.controller.ts\nvar ChartPortletController = class extends PortletPartController {\n};\n\n// src/controller/control/dashboard/portlet/actionbar-portlet/actionbar-portlet.controller.ts\nvar ActionBarPortletController = class extends PortletPartController {\n};\n\n// src/controller/control/dashboard/portlet/html-portlet/html-portlet.controller.ts\nvar HtmlPortletController = class extends PortletPartController {\n};\n\n// src/controller/control/dashboard/portlet/list-portlet/list-portlet.controller.ts\nvar ListPortletController = class extends PortletPartController {\n};\n\n// src/controller/control/dashboard/portlet/rawitem-portlet/rawitem-portlet.controller.ts\nvar RawItemPortletController = class extends PortletPartController {\n};\n\n// src/controller/control/data-view/data-view.controller.ts\nimport { RuntimeModelError as RuntimeModelError49 } from \"@ibiz-template/core\";\nimport { isNil as isNil21 } from \"ramda\";\n\n// src/controller/control/data-view/data-view.service.ts\nvar DataViewControlService = class extends MDControlService {\n /**\n * 初始化属性映射\n *\n * @memberof DataViewControlService\n */\n initUIDataMap() {\n var _a;\n super.initUIDataMap();\n (_a = this.model.dedataViewDataItems) == null ? void 0 : _a.forEach((item) => {\n const uiKey = item.id.toLowerCase();\n const deField = item.appDEFieldId;\n let mapField;\n if (deField) {\n const deFieldKey = deField.toLowerCase();\n mapField = new UIMapField(uiKey, deFieldKey, {\n isOriginField: true,\n dataType: item.dataType\n });\n } else {\n mapField = new UIMapField(uiKey, uiKey);\n }\n this.dataUIMap.set(uiKey, mapField);\n });\n }\n};\n\n// src/controller/control/data-view/data-view.controller.ts\nvar DataViewControlController = class extends MDControlController {\n /**\n * 是否允许新建\n * @author lxm\n * @date 2023-09-11 04:05:25\n * @readonly\n * @type {boolean}\n */\n get enableNew() {\n return this.model.enableCardNew === true;\n }\n /**\n * 初始化State\n *\n * @protected\n * @memberof DataViewControlController\n */\n initState() {\n super.initState();\n this.state.noSort = this.model.noSort === true;\n this.state.size = this.model.pagingSize || 20;\n this.state.singleSelect = this.model.singleSelect === true;\n this.state.sortItems = [];\n }\n /**\n * 初始化\n *\n * @protected\n * @return {*} {Promise<void>}\n * @memberof DataViewControlController\n */\n async onCreated() {\n await super.onCreated();\n await this.initControlService();\n this.initSortItems();\n }\n /**\n * 初始化部件服务\n * @author lxm\n * @date 2023-08-29 04:13:05\n * @protected\n * @return {*} {Promise<void>}\n */\n async initControlService() {\n this.service = new DataViewControlService(this.model);\n await this.service.init(this.context);\n }\n /**\n * 初始化分组右侧界面行为按钮的状态\n *\n * @author chitanda\n * @date 2023-08-02 17:08:04\n * @return {*} {Promise<void>}\n */\n async initGroupActionStates() {\n var _a;\n const { groupUIActionGroup } = this.model;\n if (!((_a = groupUIActionGroup == null ? void 0 : groupUIActionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {\n return;\n }\n this.state.groups.forEach(async (group) => {\n const containerState = new ButtonContainerState();\n groupUIActionGroup.uiactionGroupDetails.forEach((detail) => {\n const actionid = detail.uiactionId;\n if (actionid) {\n const buttonState = new UIActionButtonState(\n detail.id,\n this.context.srfappid,\n actionid\n );\n containerState.addState(detail.id, buttonState);\n }\n });\n await containerState.update();\n group.groupActionGroupState = containerState;\n });\n }\n /**\n * 行单击事件\n *\n * @author lxm\n * @date 2022-08-18 22:08:16\n * @param {IData} data 选中的单条数据\n */\n async onRowClick(data) {\n var _a;\n super.onRowClick(data);\n const { groupAppDEFieldId } = this.model;\n if (groupAppDEFieldId) {\n this.state.groups.forEach((group) => {\n group.selectedData = [];\n });\n this.state.selectedData.forEach((select) => {\n const groupVal = select[groupAppDEFieldId];\n const selectGroup = this.state.groups.find(\n (group) => group.key === groupVal\n );\n if (selectGroup) {\n selectGroup.selectedData.push(select);\n }\n });\n if (this.state.singleSelect) {\n this.state.groups.forEach((group) => {\n var _a2, _b;\n let tempData = data;\n if (group.selectedData.indexOf(tempData) !== -1) {\n if (tempData && tempData instanceof ControlVO) {\n tempData = tempData.getOrigin();\n }\n if (tempData) {\n (_a2 = group.groupActionGroupState) == null ? void 0 : _a2.update(\n tempData,\n this.model.appDataEntityId\n );\n }\n } else {\n (_b = group.groupActionGroupState) == null ? void 0 : _b.update(\n void 0,\n this.model.appDataEntityId\n );\n }\n });\n } else {\n const actionGroup = this.state.groups.find((group) => {\n return group.children.indexOf(data) !== -1;\n });\n if (actionGroup) {\n (_a = actionGroup.groupActionGroupState) == null ? void 0 : _a.update(\n actionGroup.selectedData[0],\n this.model.appDataEntityId\n );\n }\n }\n }\n }\n /**\n * 加载更多\n *\n * @return {*} {Promise<void>}\n * @memberof DataViewControlController\n */\n async loadMore() {\n if (this.state.total > this.state.items.length) {\n await this.load({ isLoadMore: true });\n }\n }\n async afterLoad(args, items) {\n await this.initGroupCodeListItems();\n await this.handleDataGroup();\n await this.initGroupActionStates();\n return items;\n }\n /**\n * 获取操作项模型\n *\n * @return {*} {(IDEDataViewItem | null)}\n * @memberof DataViewControlController\n */\n getOptItemModel() {\n let optItemModel = null;\n const { dedataViewItems } = this.model;\n if (dedataViewItems) {\n for (let index = 0; index < dedataViewItems.length; index++) {\n if (dedataViewItems[index].itemType === \"ACTIONITEM\") {\n optItemModel = dedataViewItems[index];\n }\n }\n }\n return optItemModel;\n }\n /**\n * 获取操作项行为\n *\n * @param {IData} item\n * @return {*}\n * @memberof DataViewControlController\n */\n getOptItemAction(item) {\n var _a;\n const containerState = new ButtonContainerState();\n const optItemModel = this.getOptItemModel();\n if (optItemModel) {\n if (!optItemModel.deuiactionGroup) {\n throw new RuntimeModelError49(this.model, \"\\u64CD\\u4F5C\\u9879\\u6CA1\\u6709\\u914D\\u7F6E\\u754C\\u9762\\u884C\\u4E3A\\u7EC4\");\n }\n if (!((_a = optItemModel.deuiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {\n ibiz.log.debug(\"\\u64CD\\u4F5C\\u9879\\u754C\\u9762\\u884C\\u4E3A\\u7EC4\\u6CA1\\u6709\\u914D\\u7F6E\\u754C\\u9762\\u884C\\u4E3A\");\n return containerState;\n }\n optItemModel.deuiactionGroup.uiactionGroupDetails.forEach((detail) => {\n const actionid = detail.uiactionId;\n if (actionid) {\n const buttonState = new UIActionButtonState(\n detail.id,\n this.context.srfappid,\n actionid\n );\n containerState.addState(detail.id, buttonState);\n }\n });\n containerState.update(item.getOrigin());\n }\n return containerState;\n }\n /**\n * 行为点击\n *\n * @param {IUIActionGroupDetail} detail\n * @param {IData} item\n * @param {MouseEvent} event\n * @return {*} {Promise<void>}\n * @memberof DataViewControlController\n */\n async onActionClick(detail, item, event) {\n const actionId = detail.uiactionId;\n await UIActionUtil.execAndResolved(actionId, {\n context: this.context,\n params: this.params,\n data: [item],\n view: this.view,\n event\n });\n }\n /**\n * 处理数据分组\n *\n * @memberof DataViewControlController\n */\n async handleDataGroup() {\n const { enableGroup, groupMode, groupAppDEFieldId } = this.model;\n if (enableGroup && groupMode) {\n if (!groupAppDEFieldId) {\n throw new RuntimeModelError49(this.model, \"\\u5206\\u7EC4\\u5C5E\\u6027\\u6CA1\\u6709\\u914D\\u7F6E\");\n }\n if (groupMode === \"AUTO\") {\n this.handleAutoGroup();\n } else if (groupMode === \"CODELIST\") {\n await this.handleCodeListGroup();\n }\n }\n }\n /**\n * 处理自动分组\n *\n * @memberof DataViewControlController\n */\n handleAutoGroup() {\n const { groupAppDEFieldId } = this.model;\n if (groupAppDEFieldId) {\n const { items } = this.state;\n const groupMap = /* @__PURE__ */ new Map();\n items.forEach((item) => {\n const groupVal = item[groupAppDEFieldId];\n if (isNil21(groupVal)) {\n return;\n }\n if (!groupMap.has(groupVal)) {\n groupMap.set(groupVal, []);\n }\n groupMap.get(groupVal).push(item);\n });\n const groups = [];\n groupMap.forEach((value, key) => {\n groups.push({\n caption: key,\n key,\n children: [...value]\n });\n });\n this.state.groups = groups;\n }\n }\n /**\n * 加载并初始化分组代码表项集合\n * @author lxm\n * @date 2023-08-29 05:11:39\n * @protected\n * @return {*} {Promise<void>}\n */\n async initGroupCodeListItems() {\n const { groupCodeListId } = this.model;\n if (!groupCodeListId) {\n return;\n }\n const app = ibiz.hub.getApp(this.context.srfappid);\n this.groupCodeListItems = await app.codeList.get(\n groupCodeListId,\n this.context,\n this.params\n );\n }\n /**\n * 处理代码表分组\n *\n * @memberof DataViewControlController\n */\n async handleCodeListGroup() {\n const { groupAppDEFieldId, groupCodeListId } = this.model;\n if (!groupCodeListId) {\n throw new RuntimeModelError49(this.model, \"\\u5206\\u7EC4\\u4EE3\\u7801\\u8868\\u6CA1\\u6709\\u914D\\u7F6E\");\n }\n const { items } = this.state;\n const groupMap = /* @__PURE__ */ new Map();\n this.groupCodeListItems.forEach((item) => {\n groupMap.set(item.value, []);\n });\n items.forEach((item) => {\n const groupVal = item[groupAppDEFieldId];\n const groupArr = groupMap.get(groupVal);\n if (groupArr) {\n groupArr.push(item);\n }\n });\n const groups = [];\n groupMap.forEach((arr, key) => {\n const codeListItem = this.groupCodeListItems.find(\n (item) => item.value === key\n );\n groups.push({\n caption: codeListItem.text,\n key: codeListItem.value,\n children: arr\n });\n });\n this.state.groups = groups;\n }\n /**\n * 设置排序\n *\n * @author lxm\n * @date 2022-09-28 13:09:44\n * @param {string} key 排序字段\n * @param {string} order 排序顺序\n */\n setSort(key, order) {\n if (key && order) {\n super.setSort(key, order);\n } else {\n const { minorSortAppDEFieldId, minorSortDir } = this.model;\n if (minorSortAppDEFieldId && minorSortDir) {\n const fieldName = this.fieldIdNameMap.get(minorSortAppDEFieldId);\n this.state.sortQuery = \"\".concat(fieldName.toLowerCase(), \",\").concat(minorSortDir.toLowerCase());\n } else {\n this.state.sortQuery = \"\";\n }\n }\n }\n /**\n * 点击新建\n * @author lxm\n * @date 2023-09-11 07:22:33\n * @param {MouseEvent} event\n * @param {(string | number)} group 分组标识\n */\n onClickNew(event, group) {\n const params = { ...this.params, srfgroup: group };\n UIActionUtil.execAndResolved(\"new\", {\n context: this.context,\n params,\n data: [],\n view: this.view,\n event\n });\n }\n /**\n * 分组工具栏点击处理回调\n * @author lxm\n * @date 2023-09-11 04:48:06\n * @param {IUIActionGroupDetail} detail\n * @param {MouseEvent} event\n * @return {*} {Promise<void>}\n */\n async onGroupToolbarClick(detail, event, group) {\n const actionId = detail.uiactionId;\n const params = { ...this.params, srfgroup: group.key };\n await UIActionUtil.execAndResolved(actionId, {\n context: this.context,\n params,\n data: group.selectedData || [],\n view: this.view,\n event\n });\n }\n /**\n * 初始化排序项集合\n * @author lxm\n * @date 2023-10-24 06:11:02\n * @return {*} {void}\n */\n initSortItems() {\n var _a;\n if (!((_a = this.model.dedataViewItems) == null ? void 0 : _a.length)) {\n return;\n }\n const sortItems = [];\n const { minorSortAppDEFieldId, minorSortDir } = this.model;\n const hasDefaultSort = minorSortAppDEFieldId && minorSortDir;\n this.model.dedataViewItems.forEach((item) => {\n if (!item.enableSort) {\n return;\n }\n let { caption } = item;\n if (item.capLanguageRes) {\n caption = ibiz.i18n.t(item.capLanguageRes.lanResTag, item.caption);\n }\n if (!item.appDEFieldId) {\n throw new RuntimeModelError49(item, \"\\u542F\\u7528\\u6392\\u5E8F\\u7684\\u9879\\u5FC5\\u987B\\u5173\\u8054\\u5B9E\\u4F53\\u5C5E\\u6027\");\n }\n const tempItem = {\n caption,\n key: item.appDEFieldId\n };\n if (hasDefaultSort && minorSortAppDEFieldId === item.appDEFieldId) {\n tempItem.order = minorSortDir.toLowerCase();\n }\n sortItems.push(tempItem);\n });\n if (sortItems.length > 0) {\n this.state.sortItems = sortItems;\n }\n }\n};\n\n// src/controller/control/exp-bar/calendar-exp-bar.controller.ts\nimport { RuntimeModelError as RuntimeModelError51 } from \"@ibiz-template/core\";\n\n// src/controller/control/exp-bar/exp-bar.controller.ts\nimport { RuntimeError as RuntimeError46, RuntimeModelError as RuntimeModelError50 } from \"@ibiz-template/core\";\nvar ExpBarControlController = class extends ControlController {\n constructor() {\n super(...arguments);\n /**\n * 导航栏key名称 默认srfkey 多导航视图类 由子类重写\n *\n * @author zk\n * @date 2023-07-10 03:07:53\n * @memberof ExpBarControlController\n */\n this.navKeyName = \"srfkey\";\n }\n get _evt() {\n return this.evt;\n }\n /**\n * 当前路由视图的层级\n *\n * @author zk\n * @date 2023-07-11 10:07:20\n * @readonly\n * @type {(number | undefined)}\n * @memberof ExpBarControlController\n */\n get routeDepth() {\n return this.view.modal.routeDepth;\n }\n initState() {\n super.initState();\n this.state.query = \"\";\n }\n /**\n * 加载\n *\n * @author zk\n * @date 2023-05-29 05:05:17\n * @return {*} {Promise<IData[]>}\n * @memberof ExpBarControlController\n */\n load() {\n return this.xDataController.load({ isInitialLoad: true });\n }\n /**\n * 多数据部件控制器\n *\n * @author zk\n * @date 2023-05-29 03:05:07\n * @readonly\n * @type {IGridController}\n * @memberof ExpBarControlController\n */\n get xDataController() {\n const controller = this.view.getController(this.model.xdataControlName);\n if (!controller) {\n throw new RuntimeModelError50(\n this.model,\n \"\\u65E0\\u6CD5\\u83B7\\u53D6\\u591A\\u6570\\u636E\\u90E8\\u4EF6[\".concat(this.model.xdataControlName, \"]\\u63A7\\u5236\\u5668\")\n );\n }\n return controller;\n }\n /**\n * 工具栏\n * @author lxm\n * @date 2023-07-31 07:01:25\n * @readonly\n * @type {(IToolbarController | undefined)}\n */\n get toolbarController() {\n const controller = this.view.getController(\n \"\".concat(this.model.xdataControlName.split(\"_\")[0], \"_toolbar\")\n );\n return controller;\n }\n /**\n * 多数据部件模型\n *\n * @author zk\n * @date 2023-05-29 03:05:15\n * @readonly\n * @type {(IDEGrid | null)}\n * @memberof ExpBarControlController\n */\n get XDataModel() {\n var _a;\n const control = (_a = this.model.controls) == null ? void 0 : _a.find(\n (item) => {\n return item.name === this.model.xdataControlName;\n }\n );\n return control;\n }\n /**\n * 是否缓存\n *\n * @author zk\n * @date 2023-09-27 09:09:59\n * @readonly\n * @type {boolean}\n * @memberof ExpBarControlController\n */\n get isCache() {\n if (this.controlParams.expcache === \"CACHE\") {\n return true;\n }\n if (this.controlParams.expcache === \"NO_CACHE\") {\n return false;\n }\n return ibiz.config.view.expCacheMode.includes(this.model.controlType);\n }\n /**\n * 创建完成\n *\n * @author zk\n * @date 2023-05-29 10:05:22\n * @protected\n * @return {*} {Promise<void>}\n * @memberof ExpBarControlController\n */\n async onCreated() {\n var _a;\n await super.onCreated();\n this.childNames.push(this.model.xdataControlName);\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n this.model.appDataEntityId,\n this.context.srfappid\n );\n if (appDataEntity) {\n const searchFields = (_a = appDataEntity.appDEFields) == null ? void 0 : _a.filter((field) => {\n return field.enableQuickSearch;\n });\n const placeHolders = [];\n searchFields == null ? void 0 : searchFields.forEach((searchField) => {\n if ((searchField == null ? void 0 : searchField.lnlanguageRes) && searchField.lnlanguageRes.lanResTag) {\n placeHolders.push(\n ibiz.i18n.t(\n searchField.lnlanguageRes.lanResTag,\n searchField.logicName\n )\n );\n } else if (searchField == null ? void 0 : searchField.logicName) {\n placeHolders.push(searchField.logicName);\n }\n });\n if (placeHolders.length > 0) {\n this.state.placeHolder = placeHolders.join(\"\\u3001\");\n }\n }\n }\n /**\n * 组件挂载\n *\n * @author zk\n * @date 2023-05-29 09:05:55\n * @protected\n * @return {*} {Promise<void>}\n * @memberof ExpBarControlController\n */\n async onMounted() {\n super.onMounted();\n if (this.xDataController) {\n this.xDataController.evt.on(\"onActive\", (event) => {\n this.xDataActive(event);\n });\n this.xDataController.evt.on(\"onLoadSuccess\", (event) => {\n this.xDataLoadSuccess(event);\n });\n this.xDataController.evt.on(\"onRemoveSuccess\", () => {\n this.navByFirstItem();\n });\n }\n if (this.toolbarController) {\n this.xDataController.evt.on(\"onSelectionChange\", async (event) => {\n this.toolbarController.calcButtonState(\n event.data[0],\n this.model.appDataEntityId\n );\n });\n }\n if (this.state.loadDefault) {\n this.load();\n }\n }\n /**\n * 多数据部件加载成功 设置默认选中\n *\n * @author zk\n * @date 2023-05-30 04:05:40\n * @memberof ExpBarControlController\n */\n xDataLoadSuccess(event) {\n if (event.isInitialLoad) {\n if (this.state.srfnav && this.routeDepth) {\n this.navBySrfnav();\n } else {\n this.navByFirstItem();\n }\n }\n }\n /**\n * 默认通过路由上的srfnav导航\n * @author lxm\n * @date 2023-08-10 04:04:08\n * @protected\n */\n navBySrfnav() {\n var _a;\n const selectItem = (_a = this.xDataController) == null ? void 0 : _a.state.items.find(\n (item) => item[this.navKeyName] === this.state.srfnav\n );\n const routeAndHasSub = this.routeDepth && hasSubRoute(this.routeDepth);\n if (routeAndHasSub) {\n if (selectItem) {\n this.xDataController.setSelection([selectItem]);\n }\n this._evt.emit(\"onNavViewChange\", {\n navViewMsg: {\n key: this.state.srfnav,\n isRoutePushed: true,\n isCache: this.isCache\n },\n context: this.context\n });\n return;\n }\n if (selectItem) {\n this.xDataController.setActive(selectItem);\n this.xDataController.setSelection([selectItem]);\n } else {\n this._evt.emit(\"onNavViewChange\", {\n navViewMsg: {\n key: this.state.srfnav,\n is404: true,\n isCache: this.isCache\n },\n context: this.context\n });\n }\n }\n /**\n * 导航页面首次打开且没有回显时,\n * 默认取第一条数据进行导航\n * 对于不同的导航,第一条可导航的数据可能定义不同,可以重写改方法。\n * @author lxm\n * @date 2023-08-10 03:58:15\n * @protected\n */\n navByFirstItem() {\n const data = this.xDataController.state.items[0];\n if (!data) {\n this.state.srfnav = \"\";\n this._evt.emit(\"onNavViewChange\", {\n navViewMsg: {\n key: \"\",\n isCache: this.isCache\n }\n });\n return;\n }\n this.xDataController.setActive(data);\n this.xDataController.setSelection([data]);\n }\n /**\n * 多数据激活\n *\n * @author zk\n * @date 2023-05-29 03:05:36\n * @param {IData} data\n * @memberof ExpBarControlController\n */\n xDataActive(event) {\n const { data, context, params } = event;\n const navViewMsg = this.getNavViewMsg(data[0], context, params);\n this._evt.emit(\"onNavViewChange\", { navViewMsg });\n }\n /**\n * 解析参数\n *\n * @author zk\n * @date 2023-05-29 04:05:52\n * @param {IDETabViewPanel} tabViewPanel\n * @return {*}\n * @memberof ExpBarControlController\n */\n prepareParams(XDataModel, data, context, params) {\n const {\n navDER,\n navFilter,\n navigateContexts,\n navigateParams,\n appDataEntityId\n } = XDataModel;\n const model = {\n deName: appDataEntityId ? calcDeCodeNameById(appDataEntityId) : void 0,\n navFilter,\n pickupDEFName: navDER == null ? void 0 : navDER.pickupDEFName,\n navContexts: navigateContexts,\n navParams: navigateParams\n };\n const originParams = {\n context,\n params,\n data\n };\n const { resultContext, resultParams } = calcNavParams(model, originParams);\n const tempContext = Object.assign(context.clone(), resultContext, {\n currentSrfNav: data[this.navKeyName]\n });\n this.state.srfnav = data[this.navKeyName];\n const tempParams = { ...resultParams };\n return { context: tempContext, params: tempParams };\n }\n /**\n * 计算导航视图\n *\n * @author zk\n * @date 2023-05-30 03:05:19\n * @return {*} {Promise<IAppView>}\n * @memberof ExpBarControlController\n */\n calcViewModelId() {\n var _a;\n if ([\"GRID\", \"DATAVIEW\", \"LIST\"].includes(((_a = this.XDataModel) == null ? void 0 : _a.controlType) || \"\")) {\n return this.XDataModel.navAppViewId;\n }\n throw new RuntimeError46(\"\\u591A\\u8282\\u70B9\\u89C6\\u56FE\\u7531\\u5B50\\u7C7B\\u5B9E\\u73B0\");\n }\n /**\n * 获取导航视图\n *\n * @author zk\n * @date 2023-06-29 03:06:41\n * @param {IDETabViewPanel} tabViewPanel\n * @return {*} {Promise<INavViewMsg>}\n * @memberof TabExpPanelController\n */\n getNavViewMsg(data, context, params) {\n const viewModelId = this.calcViewModelId();\n const result = this.prepareParams(this.XDataModel, data, context, params);\n return {\n key: data[this.navKeyName],\n context: result.context,\n params: result.params,\n viewId: viewModelId,\n isCache: this.isCache\n };\n }\n /**\n * 是否显示部件头部\n * @author lxm\n * @date 2023-08-02 07:54:18\n * @protected\n * @return {*} {boolean}\n */\n calcControlHeaderVisible() {\n const hasToolbar = !!this.toolbarController;\n if (!hasToolbar && this.layoutPanel) {\n const controller = this.layoutPanel.panelItems.control_toolbar;\n if (controller) {\n controller.state.visible = false;\n }\n }\n return hasToolbar || !!(this.model.showTitleBar && this.model.title) || !!this.model.enableSearch;\n }\n setLayoutPanel(panel) {\n super.setLayoutPanel(panel);\n panel.evt.on(\"onMounted\", () => {\n const showHeader = this.calcControlHeaderVisible();\n if (!showHeader) {\n const controller = this.layoutPanel.panelItems.control_header;\n if (controller) {\n controller.state.visible = false;\n }\n }\n });\n }\n /**\n * 路由变更处理回调\n * @author lxm\n * @date 2023-09-14 07:03:39\n * @param {{ srfnav?: string; path: string }} info 当前系统的路由的从一级到最后一级的所有路径。\n */\n async onRouterChange(info) {\n if (this.state.srfnav !== info.srfnav) {\n this.state.srfnav = info.srfnav;\n this.navBySrfnav();\n }\n }\n};\n\n// src/controller/control/exp-bar/calendar-exp-bar.controller.ts\nvar CalendarExpBarController = class extends ExpBarControlController {\n constructor() {\n super(...arguments);\n /**\n * 导航栏key名称 默认srfkey 多导航视图类 由子类重写\n *\n * @author zk\n * @date 2023-07-10 03:07:53\n * @memberof ExpBarControlController\n */\n this.navKeyName = \"navId\";\n }\n getCalendarItemModel(itemTypeName) {\n const { sysCalendarItems } = this.XDataModel;\n if (!sysCalendarItems) {\n return void 0;\n }\n return sysCalendarItems.find((item) => item.itemType === itemTypeName);\n }\n get xDataController() {\n const controller = this.view.getController(this.model.xdataControlName);\n if (!controller) {\n throw new RuntimeModelError51(\n this.model,\n \"\\u65E0\\u6CD5\\u83B7\\u53D6\\u591A\\u6570\\u636E\\u90E8\\u4EF6[\".concat(this.model.xdataControlName, \"]\\u63A7\\u5236\\u5668\")\n );\n }\n return controller;\n }\n navBySrfnav() {\n var _a;\n const selectItem = (_a = this.xDataController) == null ? void 0 : _a.state.items.find(\n (item) => item.navId === this.state.srfnav\n );\n super.navBySrfnav();\n if (!selectItem) {\n return;\n }\n const date = new Date(selectItem.beginTime);\n this.xDataController.setSelectDate(date);\n }\n /**\n * 获取导航视图\n *\n * @author zk\n * @date 2023-06-29 03:06:41\n * @param {IDETabViewPanel} tabViewPanel\n * @return {*} {Promise<INavViewMsg>}\n * @memberof TabExpPanelController\n */\n getNavViewMsg(item) {\n const itemModel = this.getCalendarItemModel(item.itemType);\n if (itemModel) {\n const { context, params } = this.prepareParams(\n itemModel,\n item.deData ? item.deData : item,\n this.context,\n this.params\n );\n context.currentSrfNav = item.navId;\n this.state.srfnav = item.navId;\n return {\n key: item.navId,\n context,\n params,\n viewId: itemModel.navAppViewId\n };\n }\n return {\n key: item.navId,\n context: this.context,\n params: this.params\n };\n }\n};\n\n// src/controller/control/exp-bar/tree-exp-bar.controller.ts\nimport { RuntimeError as RuntimeError47, RuntimeModelError as RuntimeModelError52 } from \"@ibiz-template/core\";\nvar TreeExpBarController = class extends ExpBarControlController {\n constructor() {\n super(...arguments);\n /**\n * 导航栏key\n *\n * @author zk\n * @date 2023-07-10 03:07:11\n * @memberof TreeExpBarController\n */\n this.navKeyName = \"id\";\n /**\n * 有导航视图的节点模型标识集合\n * @author lxm\n * @date 2023-08-10 06:33:14\n * @type {string[]}\n */\n this.navNodeModelIds = [];\n }\n get xDataController() {\n const controller = this.view.getController(this.model.xdataControlName);\n if (!controller) {\n throw new RuntimeModelError52(\n this.model,\n \"\\u65E0\\u6CD5\\u83B7\\u53D6\\u591A\\u6570\\u636E\\u90E8\\u4EF6[\".concat(this.model.xdataControlName, \"]\\u63A7\\u5236\\u5668\")\n );\n }\n return controller;\n }\n /**\n * 获取指定节点模型\n *\n * @param {string} nodeId\n * @return {*} {(IDETreeNode | undefined)}\n * @memberof TreeExpBarController\n */\n getNodeModel(nodeId) {\n const { detreeNodes } = this.XDataModel;\n let nodeModel;\n if (detreeNodes) {\n detreeNodes.forEach((node) => {\n if (node.id === nodeId) {\n nodeModel = node;\n }\n });\n }\n return nodeModel;\n }\n /**\n * 多数据激活\n *\n * @author zk\n * @date 2023-05-29 03:05:36\n * @param {IData} data\n * @memberof ExpBarControlController\n */\n xDataActive(event) {\n const { nodeData } = event;\n super.xDataActive({ ...event, data: [nodeData] });\n }\n /**\n * 获取导航视图\n *\n * @author zk\n * @date 2023-06-29 03:06:41\n * @param {IDETabViewPanel} tabViewPanel\n * @return {*} {Promise<INavViewMsg>}\n * @memberof TabExpPanelController\n */\n getNavViewMsg(node, context, params) {\n const nodeId = node.id;\n const deData = node.deData || node;\n const nodeModel = this.getNodeModel(node.nodeId);\n if (!nodeModel) {\n throw new RuntimeError47(\"\\u627E\\u4E0D\\u5230\".concat(node.nodeId, \"\\u7684\\u8282\\u70B9\\u6A21\\u578B\"));\n }\n const result = this.prepareParams(nodeModel, deData, context, params);\n result.context.currentSrfNav = nodeId;\n this.state.srfnav = nodeId;\n return {\n key: nodeId,\n viewId: nodeModel.navAppViewId,\n isCache: this.isCache,\n ...result\n };\n }\n navByFirstItem() {\n const data = this.xDataController.state.items.find((node) => {\n if (!this.xDataController.model.rootVisible && this.xDataController.state.rootNodes.includes(node)) {\n return false;\n }\n if (this.state.noNeedNavView) {\n return true;\n }\n return this.navNodeModelIds.includes(node.nodeId);\n });\n if (!data) {\n return;\n }\n this.xDataController.setActive(data);\n this.xDataController.setSelection([data]);\n }\n async onCreated() {\n await super.onCreated();\n const { detreeNodes } = this.XDataModel;\n detreeNodes == null ? void 0 : detreeNodes.forEach((node) => {\n if (node.navAppViewId) {\n this.navNodeModelIds.push(node.id);\n }\n });\n if (this.state.srfnav) {\n this.defaultExpandedKeys = this.calcExpandKeys(this.state.srfnav);\n }\n }\n /**\n * 根据srfnav计算需要展开的节点标识\n * @author lxm\n * @date 2023-11-07 02:42:45\n * @param {string} srfnav\n * @return {*} {string[]}\n */\n calcExpandKeys(srfnav) {\n const expandedKeys = [];\n srfnav.split(\":\").forEach((item, index) => {\n if (index === 0) {\n expandedKeys.push(item);\n } else {\n expandedKeys.push(\"\".concat(expandedKeys[index - 1], \":\").concat(item));\n }\n });\n expandedKeys.pop();\n return expandedKeys;\n }\n async onRouterChange(info) {\n if (this.state.srfnav !== info.srfnav) {\n const expandKeys = this.calcExpandKeys(info.srfnav);\n await this.xDataController.expandNodeByKey(expandKeys);\n }\n await super.onRouterChange(info);\n }\n};\n\n// src/controller/control/exp-bar/chart-exp-bar.controller.ts\nvar ChartExpBarController = class extends ExpBarControlController {\n /**\n * 导航页面首次打开且没有回显时,\n * 默认取第一条数据进行导航\n * 对于不同的导航,第一条可导航的数据可能定义不同,可以重写改方法。\n * @author lxm\n * @date 2023-08-10 03:58:15\n * @protected\n */\n navByFirstItem() {\n const data = this.xDataController.state.items[0];\n if (!data) {\n this.state.srfnav = \"\";\n this._evt.emit(\"onNavViewChange\", {\n navViewMsg: {\n key: \"\",\n isCache: this.isCache\n }\n });\n return;\n }\n const activeSeriesGenerator = this.xDataController.generator.seriesGenerators.find((generator) => {\n return generator.chartDataArr.length > 0 && generator.model.navAppViewId;\n });\n if (activeSeriesGenerator) {\n this.xDataController.setActive(activeSeriesGenerator.chartDataArr[0]);\n }\n }\n /**\n * 解析参数\n *\n * @author zk\n * @date 2023-05-29 04:05:52\n * @param {IDETabViewPanel} tabViewPanel\n * @return {*}\n * @memberof ExpBarControlController\n */\n prepareParams(XDataModel, data, context, params) {\n var _a;\n const { context: tempContext, params: tempParams } = super.prepareParams(\n XDataModel,\n data,\n context,\n params\n );\n if (data._seriesModelId) {\n const seriesModel = (_a = XDataModel.dechartSerieses) == null ? void 0 : _a.find(\n (series) => {\n return series.id === data._seriesModelId;\n }\n );\n if (seriesModel) {\n const { navigateContexts, navigateParams } = seriesModel;\n const tempContext2 = convertNavData(\n navigateContexts,\n data,\n params,\n tempContext\n );\n const tempParams2 = convertNavData(\n navigateParams,\n data,\n params,\n tempParams\n );\n return {\n context: Object.assign(tempContext.clone(), tempContext2),\n params: tempParams2\n };\n }\n }\n return { context: tempContext, params: tempParams };\n }\n /**\n * 获取导航视图\n *\n * @author zk\n * @date 2023-06-29 03:06:41\n * @param {IDETabViewPanel} tabViewPanel\n * @return {*} {Promise<INavViewMsg>}\n * @memberof TabExpPanelController\n */\n getNavViewMsg(data, context, params) {\n var _a;\n let viewModelId;\n if (data._seriesModelId) {\n const seriesModel = (_a = this.XDataModel.dechartSerieses) == null ? void 0 : _a.find(\n (series) => {\n return series.id === data._seriesModelId;\n }\n );\n viewModelId = seriesModel == null ? void 0 : seriesModel.navAppViewId;\n }\n const result = this.prepareParams(this.XDataModel, data, context, params);\n return {\n key: data._uuid,\n context: result.context,\n params: result.params,\n viewId: viewModelId,\n isCache: this.isCache\n };\n }\n};\n\n// src/controller/control/form/search-form/search-form.controller.ts\nimport { RuntimeError as RuntimeError48, mergeDefaultInLeft } from \"@ibiz-template/core\";\n\n// src/controller/control/form/form/form.controller.ts\nimport { debounceAndAsyncMerge, recursiveIterate as recursiveIterate2 } from \"@ibiz-template/core\";\nvar FormController = class extends ControlController {\n constructor() {\n super(...arguments);\n /**\n * 所有表单项成员的控制器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: IFormDetailController }}\n */\n this.details = {};\n /**\n * 所有表单项成员的适配器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: IFormDetailProvider }}\n */\n this.providers = {};\n /**\n * 表单项控制器的集合\n *\n * @author lxm\n * @date 2022-09-05 00:09:52\n * @type {FormItemController[]}\n */\n this.formItems = [];\n /**\n * 表单多数据部件控制器的集合\n *\n * @author lxm\n * @date 2022-09-05 00:09:52\n * @type {FormMDCtrlController[]}\n */\n this.formMDCtrls = [];\n }\n get _evt() {\n return this.evt;\n }\n /**\n * 表单数据\n *\n * @author chitanda\n * @date 2023-01-04 10:01:46\n * @readonly\n * @type {IData}\n */\n get data() {\n return this.state.data;\n }\n initState() {\n super.initState();\n this.state.data = new ControlVO();\n this.state.isLoaded = false;\n this.state.processing = false;\n this.state.modified = false;\n }\n /**\n * 通知所有表单成员表单操作过程中的数据变更\n *\n * @author lxm\n * @date 2022-09-20 18:09:40\n * @param {string[]} names\n */\n async dataChangeNotify(names) {\n await handleAllSettled(\n Object.values(this.details).map(async (detail) => {\n return detail.dataChangeNotify(names);\n })\n );\n }\n /**\n * 表单状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n formStateNotify(state) {\n Object.values(this.details).forEach((detail) => {\n detail.formStateNotify(state);\n });\n }\n /**\n * 初始化\n *\n * @author lxm\n * @date 2022-08-24 20:08:59\n * @protected\n * @returns {*} {Promise<void>}\n */\n async onCreated() {\n await super.onCreated();\n await this.initDetailControllers();\n this.dataChangeNotify = debounceAndAsyncMerge(\n this.dataChangeNotify.bind(this),\n (arr1, arr2) => {\n return [Array.from(/* @__PURE__ */ new Set([...arr1[0], ...arr2[0]]))];\n },\n 200\n );\n this._evt.on(\"onFormDetailEvent\", (event) => {\n var _a;\n (_a = this.scheduler) == null ? void 0 : _a.triggerControlEvent(\n event.formDetailName,\n event.formDetailEventName,\n event\n );\n });\n }\n /**\n * 获取加载草稿额外参数,新建默认值\n * @author lxm\n * @date 2023-04-27 10:32:06\n * @return {*}\n */\n async getDraftParams() {\n const result = {};\n await Promise.all(\n this.formItems.map((item) => item.setDefaultValue(true, result))\n );\n return result;\n }\n /**\n * 初始化表单成员控制器\n *\n * @author lxm\n * @date 2022-08-24 21:08:48\n * @protected\n */\n async initDetailControllers(details = this.model.deformPages, form = this, parent = void 0) {\n await Promise.all(\n details.map(async (detail) => {\n const detailProvider = await getFormDetailProvider(detail);\n if (!detailProvider) {\n return;\n }\n form.providers[detail.id] = detailProvider;\n const detailController = await detailProvider.createController(\n detail,\n form,\n parent\n );\n form.details[detail.id] = detailController;\n if (detail.detailType === \"FORMITEM\") {\n form.formItems.push(detailController);\n }\n if (detail.detailType === \"MDCTRL\") {\n form.formMDCtrls.push(detailController);\n }\n if (isFormDataContainer(detail)) {\n return;\n }\n const childDetails = findChildFormDetails(detail);\n if (childDetails.length) {\n await this.initDetailControllers(\n childDetails,\n form,\n detailController\n );\n }\n })\n );\n }\n /**\n * 获取表单数据\n *\n * @author lxm\n * @date 2022-08-30 19:08:11\n * @returns {*}\n */\n getData() {\n return [this.state.data];\n }\n /**\n * 设置表单数据的值\n *\n * @author lxm\n * @date 2022-08-24 10:08:40\n * @param {string} name 要设置的表单数据的属性名称\n * @param {unknown} value 要设置的值\n */\n async setDataValue(name, value) {\n if (Object.prototype.hasOwnProperty.call(this.state.data, name) && !isValueChange(this.state.data[name], value)) {\n return;\n }\n this.state.data[name] = value;\n this.state.processing = true;\n this.state.modified = true;\n await this._evt.emit(\"onFormDataChange\", void 0);\n try {\n await this.dataChangeNotify([name]);\n } finally {\n this.state.processing = false;\n }\n }\n async updateFormItem(_formItemUpdateId) {\n }\n /**\n * 校验表单的全部表单项\n *\n * @author lxm\n * @date 2022-09-05 00:09:53\n * @returns {*} {Promise<boolean>}\n */\n async validate() {\n const values = await Promise.all(\n [...this.formItems, ...this.formMDCtrls].map(\n (formItem) => formItem.validate()\n )\n );\n return values.findIndex((value) => !value) === -1;\n }\n actionNotification(tag, opts) {\n super.actionNotification(tag, { data: this.data, ...opts || {} });\n }\n /**\n * 初始化部件逻辑调度器\n * @author lxm\n * @date 2023-08-21 11:53:37\n * @param {IControlLogic[]} logics\n * @return {*} {void}\n */\n initControlScheduler(logics = []) {\n const actualLogics = [...logics];\n recursiveIterate2(\n this.model,\n (item) => {\n if (item.controlLogics) {\n actualLogics.push(...item.controlLogics);\n }\n },\n {\n childrenFields: [\"deformPages\", \"deformTabPages\", \"deformDetails\"]\n }\n );\n super.initControlScheduler(actualLogics);\n }\n};\n\n// src/controller/control/form/search-form/search-form.service.ts\nimport { recursiveIterate as recursiveIterate3 } from \"@ibiz-template/core\";\nvar SearchFormService = class extends ControlService {\n /**\n * 执行获取草稿方法\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async getDraft(_context, params = {}) {\n const tempData = this.getFilteredData({ ...params });\n let res = { ok: true, status: 200, data: tempData };\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 初始化属性映射\n *\n * @author lxm\n * @date 2022-08-31 18:08:37\n */\n initUIDataMap() {\n recursiveIterate3(\n this.model,\n (item) => {\n if (item.detailType === \"FORMITEM\") {\n const uiKey = item.id.toLowerCase();\n this.dataUIMap.set(uiKey, new UIMapField(uiKey, uiKey));\n }\n },\n {\n childrenFields: [\"deformPages\", \"deformTabPages\", \"deformDetails\"]\n }\n );\n }\n /**\n * 处理响应\n *\n * @author lxm\n * @date 2022-08-31 17:08:13\n * @param {IHttpResponse} res\n * @returns {*} {IHttpResponse}\n */\n handleResponse(response) {\n const res = super.handleResponse(response);\n if (res.ok && res.data) {\n res.data = this.toUIData(res.data);\n }\n return res;\n }\n /**\n * 根据表单项过滤出数据\n *\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-09-01 10:04:25\n */\n getFilteredData(data) {\n const tempData = {};\n this.dataUIMap.forEach((dataUI) => {\n if (data[dataUI.dataKey] !== void 0) {\n tempData[dataUI.dataKey] = data[dataUI.dataKey];\n }\n });\n return tempData;\n }\n};\n\n// src/controller/control/form/search-form/search-form.controller.ts\nvar SearchFormController = class extends FormController {\n initState() {\n super.initState();\n this.state.storedFilters = [];\n }\n async onCreated() {\n var _a, _b;\n await super.onCreated();\n this.config = new ConfigService(\n this.model.appId,\n \"dynafilter\",\n \"searchform_\".concat(((_a = this.model.appDataEntityId) == null ? void 0 : _a.toLowerCase()) || \"app\", \"_\").concat((_b = this.model.codeName) == null ? void 0 : _b.toLowerCase())\n );\n this.preprocessLayoutPanel();\n this.service = new SearchFormService(this.model);\n await this.service.init(this.context);\n await this.load();\n await this.loadConfig();\n }\n /**\n * 加载草稿\n *\n * @author lxm\n * @date 2022-09-22 17:09:04\n * @returns {*} {Promise<IData>}\n */\n async load() {\n const queryParams = { ...this.params };\n const params = await this.getDraftParams();\n Object.assign(queryParams, params);\n await this.evt.emit(\"onBeforeLoadDraft\", { params: queryParams });\n let res;\n try {\n res = await this.service.getDraft(this.context, queryParams);\n } catch (error) {\n this.actionNotification(\"GETDRAFTERROR\", {\n error\n });\n throw error;\n }\n this.state.data = res.data;\n mergeDefaultInLeft(this.data, params);\n this.state.isLoaded = true;\n this.formStateNotify(\"DRAFT\" /* DRAFT */);\n this.actionNotification(\"GETDRAFTSUCCESS\");\n return this.data;\n }\n /**\n * 获取搜索表单的过滤参数\n *\n * @author lxm\n * @date 2022-09-22 17:09:21\n * @returns {*} {IParams}\n */\n getFilterParams() {\n const filterParams = {};\n Object.keys(this.state.data).forEach((key) => {\n const value = this.state.data[key];\n if (value !== null && value !== void 0 && value !== \"\") {\n filterParams[key] = value;\n }\n });\n return filterParams;\n }\n /**\n * 执行搜索行为\n * @author lxm\n * @date 2023-03-26 02:27:23\n * @return {*} {Promise<void>}\n */\n async search() {\n await this.evt.emit(\"onSearch\", void 0);\n }\n /**\n * 搜索表单按钮回调\n *\n * @author lxm\n * @date 2022-09-22 19:09:07\n */\n async onSearchButtonClick() {\n await this.search();\n }\n /**\n * 重置搜索表单\n *\n * @author lxm\n * @date 2022-09-22 19:09:07\n */\n async reset() {\n await this.load();\n await this.search();\n }\n /**\n * 通知所有表单成员表单操作过程中的数据变更\n *\n * @author lxm\n * @date 2022-09-20 18:09:40\n * @param {string[]} names\n */\n async dataChangeNotify(names) {\n await super.dataChangeNotify(names);\n if (this.model.enableAutoSearch) {\n this.search();\n }\n }\n /**\n * 监听回车事件\n * @param {IData} event\n * @return {*}\n * @author: zhujiamin\n * @date 2022-09-27 16:48:47\n */\n async onKeyUp(event) {\n const e = event || window.event;\n if (e && e.code === \"Enter\") {\n await this.onSearchButtonClick();\n }\n }\n /**\n * 根据搜索表单的按钮位置和按钮样式\n * 预处理部件布局面板模型\n * @author lxm\n * @date 2023-11-21 04:17:43\n * @protected\n * @return {*}\n */\n preprocessLayoutPanel() {\n if (!this.controlPanel) {\n return;\n }\n const { searchButtonStyle } = this.model;\n let deleteRight = false;\n let deleteBottom = false;\n const searchButtonPos = this.model.searchButtonPos || \"RIGHT\";\n deleteRight = searchButtonPos === \"BOTTOM\";\n deleteBottom = searchButtonPos !== \"BOTTOM\";\n if (searchButtonStyle === \"NONE\") {\n deleteRight = true;\n deleteBottom = true;\n }\n const recursivePanelItems = (parent) => {\n let children;\n let childrenKey = \"\";\n [\"rootPanelItems\", \"panelItems\"].find((key) => {\n if (parent[key]) {\n children = parent[key];\n childrenKey = key;\n return true;\n }\n return false;\n });\n if (children && children.length > 0) {\n const newArr = [];\n children.forEach((item) => {\n const isDelete = deleteRight && item.id === \"control_buttons_right\" || deleteBottom && item.id === \"control_buttons_bottom\";\n if (!isDelete) {\n newArr.push(item);\n recursivePanelItems(item);\n }\n });\n if (newArr.length < children.length) {\n parent[childrenKey] = newArr;\n }\n }\n };\n if (deleteBottom || deleteRight) {\n recursivePanelItems(this.controlPanel);\n }\n }\n /**\n * 加载存储的过滤条件\n * @author lxm\n * @date 2023-11-27 04:02:49\n * @return {*} {Promise<void>}\n */\n async loadConfig() {\n const res = await this.config.load();\n if (res.model) {\n this.state.storedFilters = res.model;\n }\n }\n /**\n * 保存存储的过滤条件\n * @author lxm\n * @date 2023-11-27 04:03:07\n * @return {*} {Promise<void>}\n */\n async saveConfig() {\n await this.config.save({\n model: this.state.storedFilters\n });\n }\n /**\n * 存储搜索条件\n * @author lxm\n * @date 2023-11-27 04:08:02\n * @param {string} name 存储的名称\n * @return {*} {Promise<void>}\n */\n async storeFilter(name) {\n this.state.storedFilters.push({\n name,\n data: { ...this.data }\n });\n await this.saveConfig();\n }\n /**\n * 应用保存的过滤条件\n * @author lxm\n * @date 2023-11-27 04:11:53\n * @param {number} index\n */\n applyStoredFilter(index) {\n const filter = this.state.storedFilters[index];\n if (!filter) {\n throw new RuntimeError48(\"\\u6CA1\\u6709\\u627E\\u5230\\u53EF\\u4EE5\\u5E94\\u7528\\u7684\\u641C\\u7D22\\u6761\\u4EF6\");\n }\n if (filter.data) {\n Object.assign(this.data, filter.data);\n }\n this.search();\n }\n /**\n * 删除保存的过滤条件\n * @author lxm\n * @date 2023-11-27 04:15:22\n * @param {number} index\n */\n async removeStoredFilter(index) {\n const filter = this.state.storedFilters[index];\n if (!filter) {\n throw new RuntimeError48(\"\\u6CA1\\u6709\\u627E\\u5230\\u4FDD\\u5B58\\u7684\\u641C\\u7D22\\u6761\\u4EF6\");\n }\n this.state.storedFilters.splice(index, 1);\n await this.saveConfig();\n }\n};\n\n// src/controller/control/form/form-detail/form-detail/form-detail.state.ts\nvar FormDetailState = class {\n constructor(parent) {\n this.parent = parent;\n this.disabled = false;\n this.layout = {\n width: \"\",\n height: \"\",\n extraStyle: {},\n extraClass: [],\n contentStyle: {}\n };\n this.class = {\n container: [],\n containerDyna: [],\n label: [],\n labelDyna: []\n };\n /**\n * 是否必填\n *\n * @author chitanda\n * @date 2023-01-04 10:01:27\n * @type {boolean}\n */\n this.required = false;\n /**\n * 显示更多模式 {0:无、 1:受控内容、 2:管理容器}\n * @author lxm\n * @date 2023-03-17 02:16:43\n * @type {(0 | 1 | 2)}\n */\n this.showMoreMode = 0;\n let $visible = true;\n Object.defineProperty(this, \"visible\", {\n enumerable: true,\n configurable: true,\n get() {\n if (this.parent) {\n if (this.parent.visible === false) {\n return false;\n }\n if (this.showMoreMode === 1 && this.parent.isShowMore === false) {\n return false;\n }\n }\n return $visible;\n },\n set(val) {\n $visible = val;\n return true;\n }\n });\n let $keepAlive;\n Object.defineProperty(this, \"keepAlive\", {\n enumerable: true,\n configurable: true,\n get() {\n if ($keepAlive !== void 0) {\n return $keepAlive;\n }\n if (this.parent) {\n return this.parent.keepAlive;\n }\n return false;\n },\n set(val) {\n $keepAlive = val;\n return true;\n }\n });\n }\n};\n\n// src/controller/control/form/form-detail/form-detail/form-detail.controller.ts\nimport { isOverlap } from \"@ibiz-template/core\";\n\n// src/interface/controller/event/argument/form-detail.event.ts\nvar FormDetailEventName = /* @__PURE__ */ ((FormDetailEventName2) => {\n FormDetailEventName2[\"CLICK\"] = \"onClick\";\n FormDetailEventName2[\"FOCUS\"] = \"onFocus\";\n FormDetailEventName2[\"BLUR\"] = \"onBlur\";\n FormDetailEventName2[\"CHANGE\"] = \"onChange\";\n FormDetailEventName2[\"ENTER\"] = \"onEnter\";\n return FormDetailEventName2;\n})(FormDetailEventName || {});\n\n// src/interface/controller/event/argument/panel-item.event.ts\nvar PanelItemEventName = /* @__PURE__ */ ((PanelItemEventName2) => {\n PanelItemEventName2[\"CLICK\"] = \"onClick\";\n PanelItemEventName2[\"FOCUS\"] = \"onFocus\";\n PanelItemEventName2[\"BLUR\"] = \"onBlur\";\n PanelItemEventName2[\"CHANGE\"] = \"onChange\";\n PanelItemEventName2[\"ENTER\"] = \"onEnter\";\n return PanelItemEventName2;\n})(PanelItemEventName || {});\n\n// src/controller/control/form/form-detail/form-detail/form-detail.controller.ts\nvar FormDetailController = class {\n /**\n * Creates an instance of FormDetailController.\n * @author lxm\n * @date 2022-08-24 20:08:22\n * @param {T} model\n */\n constructor(model, form, parent) {\n /**\n * 动态逻辑结果\n * @author lxm\n * @date 2023-09-21 03:36:37\n * @protected\n */\n this.dynaLogicResult = {\n visible: void 0,\n disabled: void 0,\n required: void 0\n };\n this.model = model;\n this.form = form;\n this.parent = parent;\n this.state = this.createState();\n }\n /**\n * 表单数据\n *\n * @author lxm\n * @date 2022-09-01 22:09:48\n * @readonly\n */\n get data() {\n return this.form.data;\n }\n /**\n * 上下文\n *\n * @author lxm\n * @date 2023-11-22 11:43:47\n * @readonly\n * @type {IContext}\n */\n get context() {\n return this.form.context;\n }\n /**\n * 视图参数\n * @author lxm\n * @date 2023-11-22 11:43:41\n * @readonly\n * @type {IParams}\n */\n get params() {\n return this.form.params;\n }\n /**\n * 获取容器类名集合\n * @author lxm\n * @date 2023-08-02 06:06:12\n * @readonly\n * @type {string[]}\n */\n get containerClass() {\n return [...this.state.class.container, ...this.state.class.containerDyna];\n }\n /**\n * 获取标题类名集合\n * @author lxm\n * @date 2023-08-02 06:16:48\n * @readonly\n * @type {string[]}\n */\n get labelClass() {\n return [...this.state.class.label, ...this.state.class.labelDyna];\n }\n /**\n * 子类不可覆盖或重写此方法,在 init 时需要重写的使用 onInit 方法。\n *\n * @author lxm\n * @date 2022-08-18 22:08:30\n * @returns {*} {Promise<void>}\n */\n async init() {\n await this.onInit();\n }\n async onInit() {\n this.state.showMoreMode = this.model.showMoreMode;\n const { layoutPos, sysCss, labelSysCss } = this.model;\n if (layoutPos) {\n const { width, height } = calcLayoutHeightWidth(layoutPos);\n this.state.layout.width = \"\".concat(width);\n this.state.layout.height = \"\".concat(height);\n }\n if (sysCss == null ? void 0 : sysCss.cssName) {\n this.state.class.container.push(sysCss.cssName);\n }\n if (labelSysCss == null ? void 0 : labelSysCss.cssName) {\n this.state.class.label.push(labelSysCss.cssName);\n }\n }\n /**\n * 创建表单状态对象\n *\n * @author chitanda\n * @date 2023-01-04 10:01:00\n * @protected\n * @return {*} {FormDetailState}\n */\n createState() {\n var _a;\n return new FormDetailState((_a = this.parent) == null ? void 0 : _a.state);\n }\n /**\n * 表单数据变更通知(由表单控制器调用)\n *\n * @author lxm\n * @date 2022-09-20 18:09:56\n * @param {string[]} names\n */\n async dataChangeNotify(names) {\n this.calcDynamicLogic(names);\n this.calcDetailDisabled(this.data);\n this.calcDetailVisible(this.data);\n this.calcDetailRequired(this.data);\n this.calcDynaClass(this.data);\n }\n /**\n * 表单状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n async formStateNotify(_state) {\n this.calcDynamicLogic([], true);\n this.calcDetailDisabled(this.data);\n this.calcDetailVisible(this.data);\n this.calcDetailRequired(this.data);\n this.calcDynaClass(this.data);\n }\n /**\n * 计算动态逻辑\n *\n * @author lxm\n * @date 2022-09-20 19:09:20\n * @protected\n * @param {string[]} names 变更的属性集合\n * @param {boolean} [mustCalc=false] 是否强制计算一遍动态逻辑\n * @returns {*} {void}\n */\n calcDynamicLogic(names, mustCalc = false) {\n var _a;\n if (this.parent && !this.parent.state.visible) {\n return;\n }\n (_a = this.model.defdgroupLogics) == null ? void 0 : _a.forEach((logic) => {\n const relatedNames = logic.relatedDetailNames || [];\n if (mustCalc || isOverlap(relatedNames, names)) {\n try {\n const ok = verifyFormGroupLogic(this.data, logic);\n switch (logic.logicCat) {\n case \"ITEMBLANK\":\n this.dynaLogicResult.required = !ok;\n break;\n case \"ITEMENABLE\":\n this.dynaLogicResult.disabled = !ok;\n break;\n case \"PANELVISIBLE\":\n this.dynaLogicResult.visible = ok;\n break;\n default:\n }\n } catch (error) {\n ibiz.log.error(error);\n }\n }\n });\n }\n /**\n * 强制更新视图\n *\n * @author lxm\n * @date 2022-09-15 09:09:05\n * @param {() => void} [_callback] 更新之后,组件渲染完成后的回调\n */\n force(_callback) {\n }\n /**\n * 计算动态样式表\n * @author lxm\n * @date 2023-08-02 06:15:08\n * @param {IData} data\n */\n calcDynaClass(data) {\n if (this.model.dynaClass) {\n const dynaClass = calcDynaClass(this.model.dynaClass, data);\n if (dynaClass.length) {\n this.state.class.containerDyna = dynaClass;\n }\n }\n if (this.model.labelDynaClass) {\n const dynaClass = calcDynaClass(this.model.labelDynaClass, data);\n if (dynaClass.length) {\n this.state.class.labelDyna = dynaClass;\n }\n }\n }\n /**\n * 计算项的禁用状态\n *\n * @param {IData} data\n */\n calcDetailDisabled(data) {\n let { disabled } = this.dynaLogicResult;\n if (disabled !== true && this.form.scheduler) {\n const itemEnable = this.form.scheduler.triggerItemEnable(this.model.id, {\n data: [data]\n });\n if (itemEnable !== void 0) {\n disabled = !itemEnable;\n }\n }\n if (disabled !== void 0) {\n this.state.disabled = disabled;\n }\n }\n /**\n * 计算项的显示状态\n *\n * @param {IData} data\n */\n calcDetailVisible(data) {\n let { visible } = this.dynaLogicResult;\n if (visible !== false && this.form.scheduler) {\n const itemVIsible = this.form.scheduler.triggerItemVisible(\n this.model.id,\n {\n data: [data]\n }\n );\n if (itemVIsible !== void 0) {\n visible = itemVIsible;\n }\n }\n if (visible !== void 0) {\n this.state.visible = visible;\n }\n }\n /**\n * 计算项的必填状态\n *\n * @param {IData} data\n */\n calcDetailRequired(data) {\n let { required } = this.dynaLogicResult;\n if (required !== true && this.form.scheduler) {\n const itemAllowEmpty = this.form.scheduler.triggerItemBlank(\n this.model.id,\n {\n data: [data]\n }\n );\n if (itemAllowEmpty !== void 0) {\n required = !itemAllowEmpty;\n }\n }\n if (required !== void 0) {\n this.state.required = required;\n }\n }\n /**\n * 点击事件\n * @author lxm\n * @date 2023-10-11 05:03:26\n */\n async onClick(event) {\n this.form.evt.emit(\"onFormDetailEvent\", {\n formDetailName: this.model.id,\n formDetailEventName: \"onClick\" /* CLICK */,\n event\n });\n }\n};\n\n// src/controller/control/form/form-detail/form-button/form-button.state.ts\nvar FormButtonState = class extends FormDetailState {\n constructor() {\n super(...arguments);\n /**\n * 加载中\n * @author lxm\n * @date 2023-07-21 10:11:21\n * @type {boolean}\n */\n this.loading = false;\n }\n};\n\n// src/controller/control/form/form-detail/form-button/form-button.controller.ts\nvar FormButtonController = class extends FormDetailController {\n createState() {\n var _a;\n return new FormButtonState((_a = this.parent) == null ? void 0 : _a.state);\n }\n /**\n * 按钮点击处理回调\n *\n * @author lxm\n * @date 2022-09-28 21:09:33\n * @param {MouseEvent} event\n */\n async onClick(event) {\n this.state.loading = true;\n try {\n if (this.model.actionType === \"UIACTION\") {\n await this.doUIAction(event);\n }\n await this.doFormItemUpdate();\n } finally {\n this.state.loading = false;\n }\n super.onClick(event);\n }\n /**\n * 执行界面行为\n *\n * @author lxm\n * @date 2022-10-19 22:10:20\n * @param {MouseEvent} event\n * @returns {*} {Promise<void>}\n */\n async doUIAction(event) {\n const actionId = this.model.uiactionId;\n await UIActionUtil.execAndResolved(actionId, {\n context: this.form.context,\n params: this.form.params,\n data: [this.data],\n view: this.form.view,\n event,\n noWaitRoute: true\n });\n }\n /**\n * 执行表单项更新\n *\n * @author lxm\n * @date 2022-10-19 22:10:22\n * @returns {*} {Promise<void>}\n */\n async doFormItemUpdate() {\n if (!this.model.deformItemUpdateId) {\n return;\n }\n await this.form.updateFormItem(\n this.model.deformItemUpdateId\n );\n }\n};\n\n// src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts\nimport { isOverlap as isOverlap2 } from \"@ibiz-template/core\";\nimport { createUUID as createUUID8, notNilEmpty as notNilEmpty8 } from \"qx-util\";\n\n// src/controller/control/form/form-detail/form-druipart/form-druipart.state.ts\nvar FormDruipartState = class extends FormDetailState {\n constructor() {\n super(...arguments);\n /**\n * 是否显示遮罩\n * @author lxm\n * @date 2023-07-28 04:11:57\n * @type {boolean}\n */\n this.showMask = false;\n }\n};\n\n// src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts\nvar FormDRUIPartController = class extends FormDetailController {\n constructor() {\n super(...arguments);\n /**\n * 关联刷新项\n *\n * @author lxm\n * @date 2022-09-15 10:09:41\n * @type {string[]}\n */\n this.refreshItems = [\"srfkey\"];\n /**\n * 参数项名称\n *\n * @author lxm\n * @date 2022-09-15 19:09:36\n * @type {string}\n */\n this.paramItem = \"srfkey\";\n /**\n * 是否是新建数据(即无主键)\n * @author lxm\n * @date 2023-07-28 04:09:21\n * @type {boolean}\n */\n this.isNewData = false;\n }\n createState() {\n var _a;\n return new FormDruipartState((_a = this.parent) == null ? void 0 : _a.state);\n }\n async onInit() {\n await super.onInit();\n Object.assign(this.state.layout.extraStyle, {\n overflow: \"auto\"\n });\n if (this.model.refreshItems) {\n let strArr = this.model.refreshItems.split(\";\");\n strArr = strArr.filter((item) => !!item);\n this.refreshItems.push(...strArr);\n }\n if (this.model.paramItem) {\n this.paramItem = this.model.paramItem;\n }\n }\n /**\n * 表单数据变更通知(由表单控制器调用)\n *\n * @author lxm\n * @date 2022-09-01 20:09:54\n * @param {String[]} names\n */\n async dataChangeNotify(names) {\n await super.dataChangeNotify(names);\n if (isOverlap2(this.refreshItems, names)) {\n this.calcViewParams();\n }\n }\n async formStateNotify(state) {\n await super.formStateNotify(state);\n this.isNewData = state === \"DRAFT\" /* DRAFT */;\n if (this.model.maskMode !== 0) {\n this.state.showMask = this.isNewData;\n }\n if (state === \"LOAD\" /* LOAD */ || state === \"DRAFT\" /* DRAFT */ || state === \"SAVE\" /* SAVE */) {\n this.calcViewParams();\n }\n }\n /**\n * 计算视图上下文和视图参数,\n * *调用该方法一定会刷新视图。\n *\n * @author lxm\n * @date 2022-09-14 18:09:35\n */\n calcViewParams() {\n let newContext = this.form.context.clone();\n const navContexts = this.model.navigateContexts;\n if (notNilEmpty8(navContexts)) {\n newContext = Object.assign(\n newContext,\n convertNavData(\n navContexts,\n this.data,\n this.form.params,\n this.form.context\n )\n );\n }\n const newParams = convertNavData(\n this.model.navigateParams,\n this.data,\n this.form.params,\n this.form.context\n );\n if (!this.state.viewComponentKey) {\n this.state.viewComponentKey = createUUID8();\n this.navContext = newContext;\n this.navParams = newParams;\n } else if (JSON.stringify(this.navContext) !== JSON.stringify(newContext) || JSON.stringify(this.navParams) !== JSON.stringify(newParams)) {\n this.navContext = newContext;\n this.navParams = newParams;\n this.force();\n } else if (this.embedView) {\n if (this.isNewData) {\n return;\n }\n this.embedView.callUIAction(\"Refresh\" /* REFRESH */);\n }\n }\n /**\n * 设置嵌入视图的神经元\n *\n * @author lxm\n * @date 2022-09-15 10:09:22\n * @param {ViewNeuron} neuron\n */\n setEmbedView(view) {\n this.embedView = view;\n this.embedView.evt.on(\"onMounted\", () => {\n if (!this.isNewData) {\n this.embedView.call(\"Load\" /* LOAD */);\n }\n });\n this.embedView.evt.on(\"onDataChange\", (event) => {\n if ([\"LOAD\", \"LOADDRAFT\"].includes(event.actionType)) {\n return;\n }\n ibiz.log.debug(\"\\u63A5\\u6536\\u5230\\u5173\\u7CFB\\u754C\\u9762\\u7684\\u6570\\u636E\\u53D8\\u66F4\\u4E8B\\u4EF6\", event);\n if (this.model.deformItemUpdateId) {\n this.form.updateFormItem(\n this.model.deformItemUpdateId\n );\n }\n });\n }\n};\n\n// src/controller/control/form/form-detail/form-group-panel/form-group-panel.state.ts\nvar FormGroupPanelState = class extends FormDetailState {\n constructor() {\n super(...arguments);\n /**\n * 是否显示更多内容\n * @author lxm\n * @date 2023-03-17 02:14:30\n * @type {boolean}\n */\n this.isShowMore = false;\n /**\n * 界面行为组状态\n *\n * @type {(IButtonContainerState | null)}\n * @memberof PortletPartState\n */\n this.actionGroupState = null;\n }\n};\n\n// src/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.ts\nvar FormGroupPanelController = class extends FormDetailController {\n /**\n * 禁用关闭\n *\n * @author chitanda\n * @date 2022-09-14 14:09:51\n * @readonly\n * @type {boolean}\n */\n get disableClose() {\n const { titleBarCloseMode: mode } = this.model;\n return mode === 0 || mode === void 0;\n }\n /**\n * 是否默认展开分组\n *\n * @author chitanda\n * @date 2022-09-14 14:09:09\n * @readonly\n */\n get defaultExpansion() {\n const { titleBarCloseMode: mode } = this.model;\n return this.disableClose || mode === 1;\n }\n createState() {\n var _a;\n return new FormGroupPanelState((_a = this.parent) == null ? void 0 : _a.state);\n }\n async onInit() {\n super.onInit();\n await this.initActionStates();\n }\n async formStateNotify(state) {\n super.formStateNotify(state);\n if (this.state.actionGroupState) {\n const deData = this.data.getOrigin ? this.data.getOrigin() : this.data;\n this.state.actionGroupState.update(deData);\n }\n }\n /**\n * 初始化标题右侧界面行为按钮的状态\n *\n * @author lxm\n * @date 2022-09-07 21:09:43\n */\n async initActionStates() {\n var _a;\n const { uiactionGroup } = this.model;\n if (!((_a = uiactionGroup == null ? void 0 : uiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {\n return;\n }\n const containerState = new ButtonContainerState();\n uiactionGroup.uiactionGroupDetails.forEach((detail) => {\n const actionid = detail.uiactionId;\n if (actionid) {\n const buttonState = new UIActionButtonState(\n detail.id,\n this.form.context.srfappid,\n actionid\n );\n containerState.addState(detail.id, buttonState);\n }\n });\n await containerState.update();\n this.state.actionGroupState = containerState;\n }\n /**\n * 触发操作列点击事件\n *\n * @author lxm\n * @date 2022-09-07 22:09:46\n * @param {IPSUIActionGroupDetail} detail\n * @param {MouseEvent} event\n */\n async onActionClick(detail, event) {\n const actionId = detail.uiactionId;\n await UIActionUtil.execAndResolved(actionId, {\n context: this.form.context,\n params: this.form.params,\n data: [this.data],\n view: this.form.view,\n event\n });\n }\n};\n\n// src/controller/control/form/form-detail/form-item/form-item.controller.ts\nimport Schema from \"async-validator\";\nimport { isNilOrEmpty as isNilOrEmpty8 } from \"qx-util\";\n\n// src/controller/control/form/form-detail/form-item/form-item.state.ts\nvar FormItemState = class extends FormDetailState {\n constructor(parent) {\n super(parent);\n this.parent = parent;\n /**\n * 值规则校验错误信息\n *\n * @author lxm\n * @date 2022-09-01 22:09:02\n * @type {string}\n */\n this.error = null;\n /**\n * 启用条件的禁用状态\n *\n * @author lxm\n * @date 2022-09-19 16:09:18\n */\n this.enableCondDisabled = false;\n let $disabled = false;\n Object.defineProperty(this, \"disabled\", {\n enumerable: true,\n configurable: true,\n get() {\n if (this.enableCondDisabled) {\n return true;\n }\n return $disabled;\n },\n set(val) {\n $disabled = val;\n return true;\n }\n });\n }\n};\n\n// src/controller/control/form/form-detail/form-item/form-item.controller.ts\nvar FormItemController = class extends FormDetailController {\n /**\n * Creates an instance of FormItemController.\n *\n * @author chitanda\n * @date 2023-06-14 10:06:23\n * @param {IDEFormItem} model 表单模型\n * @param {FormController} form 表单控制器\n * @param {IFormDetailContainerController} [parent] 父容器控制器\n */\n constructor(model, form, parent) {\n super(model, form, parent);\n /**\n * 值规则\n *\n * @author lxm\n * @date 2023-10-18 03:39:23\n * @type {IData[]}\n */\n this.rules = [];\n }\n createState() {\n var _a;\n return new FormItemState((_a = this.parent) == null ? void 0 : _a.state);\n }\n /**\n * 表单项名称\n *\n * @author lxm\n * @date 2022-09-04 18:09:32\n * @readonly\n */\n get name() {\n return this.model.id;\n }\n /**\n * 表单项对应属性的值\n *\n * @author lxm\n * @date 2022-08-24 22:08:25\n * @readonly\n * @type {unknown}\n */\n get value() {\n return this.data[this.name];\n }\n /**\n * 值项\n * @author lxm\n * @date 2023-05-31 02:31:27\n * @readonly\n * @type {(string | undefined)}\n */\n get valueItemName() {\n if (this.model.editor) {\n return this.model.editor.valueItemName;\n }\n return void 0;\n }\n /**\n * 单位\n * @author lxm\n * @date 2023-05-24 05:46:52\n * @readonly\n * @type {(string | undefined)}\n */\n get unitName() {\n return this.model.unitName;\n }\n /**\n * 值格式化\n * @author lxm\n * @date 2023-05-24 05:46:56\n * @readonly\n * @type {(string | undefined)}\n */\n get valueFormat() {\n return this.model.valueFormat;\n }\n /**\n * 数据类型\n *\n * @author zhanghengfeng\n * @date 2023-09-01 11:09:00\n * @readonly\n * @type {(number | undefined)}\n */\n get dataType() {\n return this.model.dataType;\n }\n /**\n * 初始化\n *\n * @author lxm\n * @date 2022-08-24 20:08:42\n * @protected\n * @returns {*} {Promise<void>}\n */\n async onInit() {\n await super.onInit();\n this.state.required = !this.model.allowEmpty;\n const { enableCond } = this.model;\n if (!enableCond) {\n this.state.enableCondDisabled = true;\n }\n if (this.model.editor && this.model.editor.editorType !== \"HIDDEN\") {\n this.editorProvider = await getEditorProvider(this.model.editor);\n if (this.editorProvider) {\n this.editor = await this.editorProvider.createController(\n this.model.editor,\n this\n );\n await this.initRules();\n }\n }\n }\n /**\n * 初始化值规则\n *\n * @author lxm\n * @date 2022-09-02 09:09:27\n * @protected\n * @returns {*}\n */\n async initRules() {\n this.rules = [];\n const formItemsVRs = filterValueRules(\n this.form.model.deformItemVRs || [],\n this.name\n );\n if (formItemsVRs) {\n this.rules.push(\n ...generateRules(formItemsVRs, this.name, this.valueItemName)\n );\n }\n if (this.model.editor) {\n this.rules.push(...generateEditorRules(this.model.editor));\n }\n if (this.rules.length > 0) {\n this.validator = new Schema({ [this.name]: this.rules });\n }\n }\n /**\n * 计算启用条件的禁用\n *\n * @author lxm\n * @date 2022-09-20 00:09:57\n * @param {(string | FormNotifyState)} name\n * @returns {*}\n */\n calcEnableCond() {\n const { enableCond } = this.model;\n const isNew = this.data.srfuf === 0 /* CREATE */;\n if (isNew && enableCond === 2 || !isNew && enableCond === 1) {\n this.state.enableCondDisabled = true;\n }\n }\n async dataChangeNotify(name) {\n await super.dataChangeNotify(name);\n const { resetItemNames } = this.model;\n let isReset = false;\n if (resetItemNames && resetItemNames.length > 0) {\n resetItemNames.forEach((resetItemName) => {\n if (name.includes(resetItemName)) {\n isReset = true;\n }\n });\n }\n if (isReset) {\n this.setDataValue(null, this.name);\n }\n if (name.includes(this.name) || name.includes(this.valueItemName)) {\n this.validate();\n }\n if (name.includes(this.name) && this.model.deformItemUpdateId) {\n await this.form.updateFormItem(\n this.model.deformItemUpdateId\n );\n }\n }\n async formStateNotify(state) {\n super.formStateNotify(state);\n this.calcEnableCond();\n if (state === \"LOAD\" /* LOAD */) {\n this.setDefaultValue(false);\n }\n }\n calcDynamicLogic(names, mustCalc = false) {\n if (!this.model.hidden) {\n super.calcDynamicLogic(names, mustCalc);\n }\n }\n /**\n * 表单项值规则校验\n * 如果表单项不显示则不校验直接返回true\n *\n * @author lxm\n * @date 2022-09-01 22:09:29\n */\n async validate() {\n if (!this.state.visible) {\n this.state.error = null;\n return true;\n }\n if (this.state.required && isNilOrEmpty8(this.data[this.name])) {\n this.state.error = \"\\u8BF7\\u586B\\u5199\".concat(this.model.caption || \"\");\n return false;\n }\n if (this.validator) {\n try {\n await this.validator.validate(this.data);\n } catch ({ errors, _fields }) {\n this.state.error = errors[0].message;\n return false;\n }\n }\n this.state.error = null;\n return true;\n }\n /**\n * 设置表单数据的值\n *\n * @author lxm\n * @date 2022-08-24 10:08:40\n * @param {unknown} value 要设置的值\n * @param {string} name 要设置的表单数据的属性名称\n */\n async setDataValue(value, name) {\n name = name || this.name;\n await this.form.setDataValue(name, value);\n this.form.evt.emit(\"onFormDetailEvent\", {\n formDetailName: this.model.id,\n formDetailEventName: \"onChange\" /* CHANGE */\n });\n }\n /**\n * 设置默认值\n *\n * @author lxm\n * @date 2022-09-15 22:09:52\n * @param {boolean} isCreate 新建默认值还是更新默认值\n */\n setDefaultValue(isCreate, data = this.data) {\n const { createDVT, createDV, updateDVT, updateDV } = this.model;\n const valueType = isCreate ? createDVT : updateDVT;\n const defaultValue = isCreate ? createDV : updateDV;\n const defaultVal = getDefaultValue(\n {\n name: this.name,\n valueType,\n defaultValue,\n valueFormat: this.model.valueFormat\n },\n { data, context: this.context, params: this.params }\n );\n if (defaultVal !== void 0) {\n data[this.name] = defaultVal;\n }\n }\n /**\n * 聚焦事件\n * @author lxm\n * @date 2023-10-11 05:03:26\n */\n onFocus(event) {\n this.form.evt.emit(\"onFormDetailEvent\", {\n formDetailName: this.model.id,\n formDetailEventName: \"onFocus\" /* FOCUS */,\n event\n });\n }\n /**\n * 失焦事件\n * @author lxm\n * @date 2023-10-11 05:03:26\n */\n onBlur(event) {\n this.form.evt.emit(\"onFormDetailEvent\", {\n formDetailName: this.model.id,\n formDetailEventName: \"onBlur\" /* BLUR */,\n event\n });\n }\n /**\n * 回车事件\n * @author lxm\n * @date 2023-10-11 05:03:26\n */\n onEnter(event) {\n this.form.evt.emit(\"onFormDetailEvent\", {\n formDetailName: this.model.id,\n formDetailEventName: \"onEnter\" /* ENTER */,\n event\n });\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts\nimport { BitMask } from \"@ibiz-template/core\";\nvar FormMDCtrlController = class extends FormDetailController {\n /**\n * 上下文\n *\n * @author lxm\n * @date 2022-08-24 20:08:55\n * @type {IContext}\n */\n get context() {\n return this.form.context;\n }\n /**\n * 视图参数\n *\n * @author lxm\n * @date 2022-08-24 20:08:52\n * @type {IParams}\n */\n get params() {\n return this.form.params;\n }\n /**\n * 是否允许新建\n *\n * @author lxm\n * @date 2023-11-09 06:14:13\n * @readonly\n * @type {boolean}\n */\n get enableCreate() {\n return BitMask.checkPermission(this.model.buildInActions, 1);\n }\n /**\n * 是否允许更新\n *\n * @author lxm\n * @date 2023-11-09 06:14:13\n * @readonly\n * @type {boolean}\n */\n get enableUpdate() {\n return BitMask.checkPermission(this.model.buildInActions, 2);\n }\n /**\n * 是否允许删除\n * @author lxm\n * @date 2023-11-09 06:14:17\n * @readonly\n * @type {boolean}\n */\n get enableDelete() {\n return BitMask.checkPermission(this.model.buildInActions, 4);\n }\n /**\n * 如果配置了表单项更新,则执行表单项更新\n * @author lxm\n * @date 2023-11-10 04:55:40\n * @return {*} {Promise<void>}\n */\n async updateFormItem() {\n if (this.model.deformItemUpdateId) {\n await this.form.updateFormItem(this.model.deformItemUpdateId);\n }\n }\n /**\n * 刷新\n * @author lxm\n * @date 2023-11-13 11:21:06\n */\n refresh() {\n }\n /**\n * 校验内部数据\n * @author lxm\n * @date 2023-11-13 05:55:20\n * @return {*} {Promise<boolean>}\n */\n async validate() {\n return true;\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-md.controller.ts\nimport {\n mergeInLeft,\n ModelError as ModelError26,\n RuntimeModelError as RuntimeModelError53\n} from \"@ibiz-template/core\";\nvar FormMDCtrlMDController = class extends FormMDCtrlController {\n /**\n * 表单项名称\n *\n * @author lxm\n * @date 2022-09-04 18:09:32\n * @readonly\n */\n get name() {\n return this.model.id;\n }\n async onInit() {\n await super.onInit();\n const { contentControl } = this.model;\n if (!contentControl) {\n throw new RuntimeModelError53(this.model, \"\\u591A\\u6570\\u636E\\u90E8\\u4EF6\\u672A\\u914D\\u7F6E\\u5185\\u5BB9\\u90E8\\u4EF6\");\n }\n if (contentControl.controlType === \"GRID\") {\n mergeInLeft(contentControl, {\n enableRowEdit: this.enableCreate || this.enableUpdate,\n enableRowNew: this.enableCreate\n });\n }\n const controlProvider = await getControlProvider(contentControl);\n if (controlProvider) {\n this.mdProvider = controlProvider;\n }\n }\n /**\n * 设置多数据部件控制器\n * @author lxm\n * @date 2023-11-10 03:31:16\n * @param {IMDControlController} controller\n */\n setMDControl(controller) {\n this.mdController = controller;\n controller.evt.on(\"onSaveSuccess\", () => {\n this.updateFormItem();\n });\n controller.evt.on(\"onRemoveSuccess\", () => {\n this.updateFormItem();\n });\n }\n updateFormItem() {\n const items = this.mdController.state.items || [];\n this.data[this.name] = items;\n return super.updateFormItem();\n }\n /**\n * 删除多数据选中的数据\n * @author lxm\n * @date 2023-11-10 03:32:30\n */\n remove() {\n this.mdController.remove();\n }\n /**\n * 多数据新建一条数据\n * @author lxm\n * @date 2023-11-10 03:32:30\n */\n create() {\n if (this.model.contentType === \"GRID\") {\n this.mdController.newRow();\n } else {\n throw new ModelError26(\n this.model,\n \"\\u591A\\u6570\\u636E\\u90E8\\u4EF6\\u7C7B\\u578B\".concat(this.model.contentType, \"\\u6682\\u4E0D\\u652F\\u6301\\u6DFB\\u52A0\\u6570\\u636E\")\n );\n }\n }\n refresh() {\n if (this.mdController) {\n this.mdController.refresh();\n } else {\n ibiz.log.debug(\"mdController\\u4E0D\\u5B58\\u5728\");\n }\n }\n /**\n * 表单状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n async formStateNotify(state) {\n await super.formStateNotify(state);\n this.refresh();\n }\n async dataChangeNotify(names) {\n await super.dataChangeNotify(names);\n if (names.includes(this.model.id)) {\n this.refresh();\n }\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts\nimport { RuntimeError as RuntimeError49, RuntimeModelError as RuntimeModelError54 } from \"@ibiz-template/core\";\nimport { createUUID as createUUID9 } from \"qx-util\";\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.state.ts\nvar FormMDCtrlFormState = class extends FormDetailState {\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form.controller.ts\nvar FormMDCtrlFormController = class extends FormMDCtrlController {\n constructor() {\n super(...arguments);\n /**\n * 表单控制器Map\n * @author lxm\n * @date 2023-11-11 08:03:56\n */\n this.formMap = /* @__PURE__ */ new Map();\n }\n createState() {\n var _a;\n return new FormMDCtrlFormState((_a = this.parent) == null ? void 0 : _a.state);\n }\n /**\n * 初始化\n *\n * @author zk\n * @date 2023-07-25 10:07:11\n * @protected\n * @return {*} {Promise<void>}\n * @memberof FormMDCtrlController\n */\n async onInit() {\n super.onInit();\n const { contentControl } = this.model;\n if (!contentControl) {\n throw new RuntimeModelError54(this.model, \"\\u591A\\u6570\\u636E\\u90E8\\u4EF6\\u672A\\u914D\\u7F6E\\u5185\\u5BB9\\u90E8\\u4EF6\");\n }\n contentControl.enableAutoSave = this.enableCreate || this.enableUpdate;\n const controlProvider = await getControlProvider(contentControl);\n if (controlProvider) {\n this.formProvider = controlProvider;\n }\n const { appDataEntityId } = this.model.contentControl;\n this.deName = calcDeCodeNameById(appDataEntityId);\n }\n /**\n * 加载实体的数据\n * @author lxm\n * @date 2023-11-10 05:02:40\n * @return {*} {Promise<void>}\n */\n async fetchData() {\n const { appDataEntityId } = this.model.contentControl;\n const fetchAction = \"fetchdefault\";\n const res = await ibiz.hub.getApp().deService.exec(appDataEntityId, fetchAction, this.context, this.params);\n if (res.ok) {\n this.state.items = res.data.map((item) => {\n const context = this.context.clone();\n context[this.deName] = item.srfkey;\n const params = { ...this.params };\n return {\n id: item.srfkey,\n context,\n params\n };\n });\n }\n }\n /**\n * 表单状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n async formStateNotify(state) {\n await super.formStateNotify(state);\n await this.fetchData();\n }\n /**\n * 设置表单控制器\n * @author lxm\n * @date 2023-11-11 08:03:06\n * @param {string} id\n * @param {IEditFormController} controller\n */\n setFormController(id, controller) {\n this.formMap.set(id, controller);\n controller.evt.on(\"onSaveSuccess\", (event) => {\n const formData = event.data[0];\n const item = this.state.items.find((x) => x.id === id);\n if (item) {\n if (item.context[this.deName] !== formData.srfkey) {\n item.context[this.deName] = formData.srfkey;\n }\n }\n this.updateFormItem();\n });\n controller.evt.on(\"onRemoveSuccess\", () => {\n this.updateFormItem();\n });\n }\n /**\n * 删除数据\n * @author lxm\n * @date 2023-11-11 08:06:12\n * @param {string} id\n * @return {*} {Promise<void>}\n */\n async remove(id) {\n const controller = this.formMap.get(id);\n if (!controller) {\n throw new RuntimeError49(\"\\u6CA1\\u6709\\u627E\\u5230\\u5BF9\\u5E94\".concat(id, \"\\u7684\\u8868\\u5355\\u63A7\\u5236\\u5668\"));\n }\n await controller.remove();\n const index = this.state.items.findIndex((item) => item.id === id);\n if (index !== -1) {\n this.state.items.splice(index, 1);\n }\n }\n /**\n * 新建一条数据\n * @author lxm\n * @date 2023-11-11 08:01:49\n */\n create() {\n const context = this.context.clone();\n const params = { ...this.params };\n if (!this.state.items) {\n this.state.items = [];\n }\n this.state.items.push({\n id: createUUID9(),\n context,\n params\n });\n }\n refresh() {\n this.fetchData();\n }\n async dataChangeNotify(names) {\n await super.dataChangeNotify(names);\n if (names.includes(this.model.id)) {\n this.refresh();\n }\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater.controller.ts\nimport { ModelError as ModelError27 } from \"@ibiz-template/core\";\nimport { clone as clone19 } from \"ramda\";\nvar FormMDCtrlRepeaterController = class extends FormMDCtrlController {\n constructor() {\n super(...arguments);\n /**\n * 重复器样式\n * @author lxm\n * @date 2023-11-09 05:03:20\n * @type {('Grid' | 'MultiForm' | 'SingleForm')}\n */\n this.repeaterStyle = \"MultiForm\";\n /**\n * 重复器的值是否是单项数据类型,true为数组格式,反之为对象格式\n * @author lxm\n * @date 2023-11-09 05:09:19\n * @type {boolean}\n */\n this.isSingleData = false;\n }\n /**\n * 名称\n * @author lxm\n * @date 2023-11-22 03:31:02\n * @readonly\n * @type {string}\n */\n get name() {\n return this.model.id;\n }\n /**\n * 多数据重复器对应的表单里的值\n *\n * @author lxm\n * @date 2022-08-24 22:08:25\n * @readonly\n * @type {unknown}\n */\n get value() {\n return this.data[this.model.id];\n }\n async onInit() {\n await super.onInit();\n switch (this.model.detailStyle) {\n case \"DEFAULT\":\n this.repeaterStyle = \"MultiForm\";\n this.isSingleData = false;\n break;\n case \"STYLE2\":\n this.repeaterStyle = \"Grid\";\n this.isSingleData = false;\n break;\n case \"STYLE3\":\n this.repeaterStyle = \"SingleForm\";\n this.isSingleData = true;\n break;\n default:\n throw new ModelError27(\n this.model,\n \"\\u6682\\u4E0D\\u652F\\u6301\\u91CD\\u590D\\u5668\\u6837\\u5F0F\".concat(this.model.detailStyle)\n );\n }\n this.prepareRepeatedForm();\n }\n /**\n * 准备重复器表单模型\n * @author lxm\n * @date 2023-11-22 02:56:00\n */\n prepareRepeatedForm() {\n const id = \"\".concat(this.model.id, \"repeatedform\");\n const tempForm = {\n id,\n codeName: id,\n name: id,\n deformPages: [\n {\n id: \"formpage1\",\n deformDetails: this.model.deformDetails,\n detailType: \"FORMPAGE\",\n detailStyle: \"DEFAULT\",\n layout: this.model.layout\n }\n ]\n };\n const copyFields = [\n \"appId\",\n \"controlType\",\n \"deformItemVRs\"\n ];\n copyFields.forEach((key) => {\n tempForm[key] = this.form.model[key];\n });\n this.repeatedForm = clone19(tempForm);\n }\n /**\n * 设置重复器数据(修改主表单里重复器对应属性)\n * @author lxm\n * @date 2023-11-22 06:07:04\n * @param {(IData[] | IData | null)} value\n */\n setValue(value) {\n this.form.setDataValue(this.name, value);\n }\n /**\n * 添加或创建一条数据\n * @author lxm\n * @date 2023-11-22 04:50:19\n */\n create() {\n if (this.isSingleData) {\n this.setValue({});\n } else {\n let tempValue = this.value;\n tempValue = tempValue ? [...tempValue] : [];\n tempValue.push({});\n this.setValue(tempValue);\n }\n }\n /**\n * 删除数据\n * @author lxm\n * @date 2023-11-22 08:53:42\n * @param {number} index\n */\n remove(index) {\n if (this.isSingleData) {\n this.setValue(null);\n return;\n }\n const newArr = this.value.filter((_, i) => {\n return index !== i;\n });\n this.setValue(newArr);\n }\n /**\n * 表单数据变更通知\n *\n * @author lxm\n * @date 2023-11-24 04:37:03\n * @param {string[]} names\n * @return {*} {Promise<void>}\n */\n async dataChangeNotify(names) {\n await super.dataChangeNotify(names);\n const { resetItemNames } = this.model;\n let isReset = false;\n if (resetItemNames && resetItemNames.length > 0) {\n resetItemNames.forEach((resetItemName) => {\n if (names.includes(resetItemName)) {\n isReset = true;\n }\n });\n }\n if (isReset) {\n this.setValue(null);\n }\n if (names.includes(this.name)) {\n await this.updateFormItem();\n }\n }\n};\n\n// src/controller/control/form/form-detail/form-page/form-page.state.ts\nvar FormPageState = class extends FormGroupPanelState {\n};\n\n// src/controller/control/form/form-detail/form-page/form-page.controller.ts\nvar FormPageController = class extends FormGroupPanelController {\n createState() {\n var _a;\n return new FormPageState((_a = this.parent) == null ? void 0 : _a.state);\n }\n};\n\n// src/controller/control/form/form-detail/form-rawitem/form-rawitem.state.ts\nvar FormRawItemState = class extends FormDetailState {\n};\n\n// src/controller/control/form/form-detail/form-rawitem/form-rawitem.controller.ts\nvar FormRawItemController = class extends FormDetailController {\n createState() {\n var _a;\n return new FormRawItemState((_a = this.parent) == null ? void 0 : _a.state);\n }\n};\n\n// src/controller/control/form/form-detail/form-tab-page/form-tab-page.state.ts\nvar FormTabPageState = class extends FormDetailState {\n};\n\n// src/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.ts\nvar FormTabPageController = class extends FormDetailController {\n createState() {\n var _a;\n return new FormTabPageState((_a = this.parent) == null ? void 0 : _a.state);\n }\n};\n\n// src/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.ts\nvar FormTabPanelState = class extends FormDetailState {\n};\n\n// src/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.ts\nvar FormTabPanelController = class extends FormDetailController {\n createState() {\n var _a;\n return new FormTabPanelState((_a = this.parent) == null ? void 0 : _a.state);\n }\n};\n\n// src/controller/control/form/edit-form/edit-form.controller.ts\nimport {\n awaitTimeout,\n mergeInLeft as mergeInLeft2,\n RuntimeError as RuntimeError50,\n mergeDefaultInLeft as mergeDefaultInLeft2\n} from \"@ibiz-template/core\";\nimport { debounce as debounce2 } from \"lodash-es\";\nimport { createUUID as createUUID10 } from \"qx-util\";\nimport { clone as clone20 } from \"ramda\";\n\n// src/controller/control/form/edit-form/edit-form.service.ts\nimport {\n recursiveIterate as recursiveIterate4,\n RuntimeModelError as RuntimeModelError55\n} from \"@ibiz-template/core\";\nvar EditFormService = class extends ControlService {\n /**\n * 执行获取单条数据方法\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async get(context, params = {}) {\n var _a;\n let res = await this.exec(\n ((_a = this.model.getControlAction) == null ? void 0 : _a.appDEMethodId) || \"get\",\n context,\n void 0,\n params\n );\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 执行获取草稿方法\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async getDraft(context, params = {}) {\n var _a;\n let res = await this.exec(\n ((_a = this.model.getDraftControlAction) == null ? void 0 : _a.appDEMethodId) || \"getdraft\",\n context,\n void 0,\n params\n );\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 删除单条数据\n *\n * @author lxm\n * @date 2022-09-07 19:09:48\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*}\n */\n async remove(context, params = {}) {\n var _a;\n const res = await this.exec(\n ((_a = this.model.removeControlAction) == null ? void 0 : _a.appDEMethodId) || \"remove\",\n context,\n void 0,\n params\n );\n return res;\n }\n /**\n * 新建数据\n *\n * @author lxm\n * @date 2022-09-07 19:09:11\n * @param {IParams} context 上下文\n * @param {IData} data 数据\n * @returns {*}\n */\n async create(context, data) {\n var _a;\n const _data = data instanceof ControlVO ? data.getOrigin() : data;\n const tempData = this.getFilteredData(_data);\n let res = await this.exec(\n ((_a = this.model.createControlAction) == null ? void 0 : _a.appDEMethodId) || \"create\",\n context,\n tempData\n );\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 更新数据\n *\n * @author lxm\n * @date 2022-09-07 19:09:11\n * @param {IParams} context 上下文\n * @param {IData} data 数据\n * @returns {*}\n */\n async update(context, data) {\n var _a;\n const _data = data instanceof ControlVO ? data.getOrigin() : data;\n const tempData = this.getFilteredData(_data);\n let res = await this.exec(\n ((_a = this.model.updateControlAction) == null ? void 0 : _a.appDEMethodId) || \"update\",\n context,\n tempData\n );\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 返回操作\n *\n * @author lxm\n * @date 2022-09-07 19:09:11\n * @param {IParams} context 上下文\n * @param {IData} data 数据\n * @returns {*}\n */\n async goBack(context, data) {\n var _a;\n const wizardForm = this.model;\n const methodName = (_a = wizardForm.goBackControlAction) == null ? void 0 : _a.appDEMethodId;\n if (!methodName) {\n throw new RuntimeModelError55(this.model, \"\\u7F3A\\u5C11\\u8FD4\\u56DE\\u64CD\\u4F5C\\u5B9E\\u4F53\\u884C\\u4E3A\");\n }\n let res = await this.exec(\n methodName,\n context,\n data instanceof ControlVO ? data.getOrigin() : data\n );\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 表单项更新\n *\n * @author lxm\n * @date 2022-09-15 21:09:34\n * @param {string} methodName\n * @param {IParams} context\n * @param {IParams} [params={}]\n * @returns {*} {Promise<IHttpResponse<ControlVO>>}\n */\n async updateFormItem(methodName, context, params = {}) {\n let res = await this.exec(methodName, context, params);\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 工作流启动\n *\n * @author lxm\n * @date 2022-09-07 19:09:11\n * @param {IParams} context 上下文\n * @param {IData} data 数据\n * @param {IParams} [params={}] 视图参数\n * @returns {*}\n */\n async wfStart(context, params, data) {\n var _a;\n const wfForm = this.model;\n const methodName = ((_a = wfForm.wfstartControlAction) == null ? void 0 : _a.appDEMethodId) || \"wfstart\";\n const entityService = await this.app.deService.getService(\n this.model.appDataEntityId\n );\n return entityService.wf.exec(\n methodName,\n context,\n params,\n data instanceof ControlVO ? data.getOrigin() : data\n );\n }\n /**\n * 工作流提交\n *\n * @author lxm\n * @date 2022-09-07 19:09:11\n * @param {IParams} context 上下文\n * @param {IData} data 数据\n * @param {IParams} [params={}] 视图参数\n * @returns {*}\n */\n async wfSubmit(context, params, data) {\n var _a;\n const wfForm = this.model;\n let methodName = \"\";\n if (params.type) {\n methodName = params.type;\n } else {\n methodName = ((_a = wfForm.wfsubmitControlAction) == null ? void 0 : _a.appDEMethodId) || \"wfsubmit\";\n }\n const entityService = await this.app.deService.getService(\n this.model.appDataEntityId\n );\n return entityService.wf.exec(\n methodName,\n context,\n params,\n data instanceof ControlVO ? data.getOrigin() : data\n );\n }\n /**\n * 初始化属性映射\n *\n * @author lxm\n * @date 2022-08-31 18:08:37\n */\n initUIDataMap() {\n super.initUIDataMap();\n const presetFields = [\n // 工作流预置\n \"srfwfmemo\",\n \"srfwftransferor\",\n // 逻辑预置操作数据\n \"srfactionparam\",\n // 前端新增修改标识,新增为\"0\",修改为\"1\"或未设值\n \"srffrontuf\",\n // 向导预置\n \"srfnextform\"\n ];\n recursiveIterate4(\n this.model,\n (item) => {\n if (item.detailType === \"FORMITEM\" || item.detailType === \"MDCTRL\") {\n const formItem = item;\n const uiKey = formItem.id.toLowerCase();\n const deField = formItem.fieldName || item.appDEFieldId;\n let mapField;\n if (deField) {\n mapField = new UIMapField(uiKey, deField, {\n isOriginField: true,\n dataType: formItem.dataType\n });\n } else {\n mapField = new UIMapField(uiKey, uiKey, {\n isOriginField: presetFields.includes(uiKey)\n // 工作流相关需要存到origin上\n });\n }\n this.dataUIMap.set(uiKey, mapField);\n }\n },\n {\n childrenFields: [\"deformPages\", \"deformTabPages\", \"deformDetails\"]\n }\n );\n }\n /**\n * 处理响应\n *\n * @author lxm\n * @date 2022-08-31 17:08:13\n * @param {IHttpResponse} res\n * @returns {*} {IHttpResponse}\n */\n handleResponse(response) {\n const res = super.handleResponse(response);\n if (res.ok && res.data) {\n res.data = this.toUIData(res.data);\n }\n return res;\n }\n /**\n * 保存时根据表单项过滤出传给后台的数据\n *\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-09-01 10:04:25\n */\n getFilteredData(data) {\n const tempData = {};\n this.dataUIMap.forEach((dataUI) => {\n if (data[dataUI.dataKey] !== void 0) {\n tempData[dataUI.dataKey] = data[dataUI.dataKey];\n }\n });\n return tempData;\n }\n};\n\n// src/controller/control/form/edit-form/edit-form.controller.ts\nvar EditFormController = class extends FormController {\n get view() {\n return this.ctx.view;\n }\n /**\n * 初始化方法\n *\n * @author lxm\n * @date 2022-08-22 22:08:16\n * @protected\n * @returns {*} {Promise<void>}\n */\n async onCreated() {\n await super.onCreated();\n this.service = new EditFormService(this.model);\n await this.service.init(this.context);\n this.autoSave = debounce2(this.autoSave.bind(this), 500, {\n trailing: true\n });\n }\n async onMounted() {\n await super.onMounted();\n if (!this.state.isSimple && this.state.loadDefault) {\n this.load();\n }\n }\n /**\n * 加载草稿行为\n * @author lxm\n * @date 2023-08-25 02:45:11\n * @return {*} {Promise<IData>}\n */\n async loadDraft(args) {\n const { context, params: queryParams } = this.handlerAbilityParams(args);\n const params = await this.getDraftParams();\n Object.assign(queryParams, params);\n let res;\n try {\n await this.startLoading();\n await this.evt.emit(\"onBeforeLoadDraft\", { params: queryParams });\n res = await this.service.getDraft(context, queryParams);\n } catch (error) {\n await this.evt.emit(\"onLoadDraftError\", void 0);\n this.actionNotification(\"GETDRAFTERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n this.state.data = res.data;\n mergeDefaultInLeft2(this.data, params);\n this.formStateNotify(\"DRAFT\" /* DRAFT */);\n await this.evt.emit(\"onLoadDraftSuccess\", void 0);\n this.actionNotification(\"GETDRAFTSUCCESS\");\n this.state.isLoaded = true;\n return this.data;\n }\n /**\n * 拷贝模式加载数据\n *\n * @author chitanda\n * @date 2023-09-26 19:09:21\n * @return {*} {Promise<IData>}\n */\n async copy() {\n const context = clone20(this.context);\n const queryParams = clone20(this.params);\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n this.model.appDataEntityId\n );\n const key = appDataEntity.keyAppDEFieldId;\n if (key && this.params[key]) {\n const deCodeName = calcDeCodeNameById(this.model.appDataEntityId);\n context[deCodeName] = this.params[key];\n delete queryParams[key];\n delete this.params[key];\n delete queryParams.srfcopymode;\n delete this.params.srfcopymode;\n }\n let res;\n try {\n await this.startLoading();\n await this.evt.emit(\"onBeforeLoad\", void 0);\n res = await this.service.get(context, queryParams);\n } catch (error) {\n await this.evt.emit(\"onLoadError\", void 0);\n this.actionNotification(\"GETERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n res.data.srfkey = void 0;\n res.data.tempsrfkey = createUUID10();\n this.state.modified = false;\n this.state.data = res.data;\n this.formStateNotify(\"LOAD\" /* LOAD */);\n await this.evt.emit(\"onLoadSuccess\", void 0);\n this.actionNotification(\"GETSUCCESS\");\n this.state.isLoaded = true;\n return this.data;\n }\n /**\n * 部件加载数据行为\n *\n * @author lxm\n * @date 2022-08-19 14:08:50\n */\n async load(args) {\n const copyMode = this.params.srfcopymode;\n if (copyMode) {\n return this.copy();\n }\n const isLoadDraft = !hasDeCodeName(\n this.context,\n this.model.appDataEntityId\n );\n if (isLoadDraft) {\n return this.loadDraft();\n }\n const { context, params } = this.handlerAbilityParams(args);\n const queryParams = clone20(params);\n let res;\n try {\n await this.startLoading();\n await this.evt.emit(\"onBeforeLoad\", void 0);\n res = await this.service.get(context, queryParams);\n } catch (error) {\n await this.evt.emit(\"onLoadError\", void 0);\n this.actionNotification(\"GETERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n this.state.modified = false;\n this.state.data = res.data;\n this.formStateNotify(\"LOAD\" /* LOAD */);\n await this.evt.emit(\"onLoadSuccess\", void 0);\n this.actionNotification(\"GETSUCCESS\");\n this.state.isLoaded = true;\n return this.data;\n }\n /**\n * 保存表单数据\n *\n * @author lxm\n * @date 2022-08-31 22:08:40\n */\n async save(args) {\n const silent = (args == null ? void 0 : args.silent) === true;\n if (this.state.processing) {\n const data2 = await awaitTimeout(500, this.save.bind(this), [args]);\n return data2;\n }\n const isValid = await this.validate();\n if (!isValid) {\n throw new RuntimeError50(\"\\u8BF7\\u68C0\\u67E5\\u8868\\u5355\\u586B\\u5199\\uFF01\");\n }\n if (!silent) {\n await this.startLoading();\n }\n await this.evt.emit(\"onBeforeSave\", void 0);\n const { context, data } = this.handlerAbilityParams(args);\n const saveData = data[0];\n const isCreate = saveData.srfuf === 0 /* CREATE */;\n let res;\n try {\n res = isCreate ? await this.service.create(context, saveData) : await this.service.update(context, saveData);\n } catch (error) {\n await this.evt.emit(\"onSaveError\", void 0);\n this.actionNotification(\"\".concat(isCreate ? \"CREATE\" : \"UPDATE\", \"ERROR\"), {\n error\n });\n throw error;\n } finally {\n if (!silent) {\n await this.endLoading();\n }\n }\n const noFillBack = (args == null ? void 0 : args.noFillBack) === true;\n if (res.data) {\n if (noFillBack) {\n this.data.updatedate = res.data.updatedate;\n this.data.srfkey = res.data.srfkey;\n } else {\n mergeInLeft2(this.data, res.data);\n }\n this.data.tempsrfkey = this.data.srfkey;\n }\n this.state.modified = false;\n await this.evt.emit(\"onSaveSuccess\", void 0);\n this.formStateNotify(\"SAVE\" /* SAVE */);\n if (!silent) {\n this.actionNotification(\"\".concat(isCreate ? \"CREATE\" : \"UPDATE\", \"SUCCESS\"), {\n default: \"\".concat(this.data.srfmajortext || \"\", \"\\u4FDD\\u5B58\\u6210\\u529F\")\n });\n }\n if (this.view.modal.mode === \"ROUTE\") {\n ibiz.mc.command.send(\n this.data.$origin,\n isCreate ? \"OBJECTCREATED\" : \"OBJECTUPDATED\"\n );\n }\n return this.data;\n }\n /**\n * 删除表单数据\n *\n * @author lxm\n * @date 2022-09-01 09:09:36\n * @returns {*}\n */\n async remove(args) {\n const { context, params } = this.handlerAbilityParams(args);\n let res;\n let ok = false;\n await this.evt.emit(\"onBeforeRemove\", void 0);\n if (this.data.srfuf === 1 /* UPDATE */) {\n ok = await ibiz.modal.confirm({\n title: \"\\u63D0\\u793A\",\n desc: \"\\u786E\\u8BA4\\u5220\\u9664\\u5417\\uFF1F\"\n });\n if (!ok) {\n return false;\n }\n await this.startLoading();\n try {\n res = await this.service.remove(context, params);\n } catch (error) {\n await this.evt.emit(\"onRemoveError\", void 0);\n this.actionNotification(\"REMOVEERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n ok = res.ok;\n }\n this.state.data = new ControlVO();\n this.state.modified = false;\n await this.evt.emit(\"onRemoveSuccess\", void 0);\n this.actionNotification(\"REMOVESUCCESS\");\n if (this.view.modal.mode === \"ROUTE\") {\n ibiz.mc.command.send(this.data.$origin, \"OBJECTREMOVED\");\n }\n return ok;\n }\n /**\n * 执行返回行为\n *\n * @author lxm\n * @date 2022-09-01 09:09:36\n * @returns {*}\n */\n async goBack() {\n await this.startLoading();\n let res;\n try {\n res = await this.service.goBack(this.context, this.data);\n } finally {\n await this.endLoading();\n }\n if (res.data) {\n mergeInLeft2(this.data, res.data);\n }\n return this.data;\n }\n /**\n * 表单项更新\n *\n * @author lxm\n * @date 2022-09-15 21:09:13\n * @param {string} methodName 更新实体方法\n * @param {string[]} updateItems 更新项名称集合\n */\n async updateFormItem(formItemUpdateId) {\n var _a;\n const formItemUpdate = (_a = this.model.deformItemUpdates) == null ? void 0 : _a.find(\n (item) => item.id === formItemUpdateId\n );\n if (!formItemUpdate) {\n throw new RuntimeError50(\"\\u6CA1\\u627E\\u5230\".concat(formItemUpdateId, \"\\u8868\\u5355\\u9879\\u66F4\\u65B0\"));\n }\n const { appDEMethodId, defiupdateDetails, customCode, scriptCode } = formItemUpdate;\n const updateItems = defiupdateDetails == null ? void 0 : defiupdateDetails.map((item) => item.id);\n let updateData;\n if (customCode && scriptCode) {\n updateData = ScriptFactory.execScriptFn(\n {\n ...this.getEventArgs(),\n data: this.data\n },\n scriptCode,\n {\n isAsync: false\n }\n );\n } else {\n const params = { ...this.params, ...this.data.getOrigin() };\n const res = await this.service.updateFormItem(\n appDEMethodId,\n this.context,\n params\n );\n updateData = res.data;\n }\n if (updateData && (updateItems == null ? void 0 : updateItems.length)) {\n await Promise.all(\n updateItems.map(\n (itemName) => this.setDataValue(itemName, updateData[itemName])\n )\n );\n }\n }\n /**\n * 工作流启动(调用前先确保调用保存)\n *\n * @author lxm\n * @date 2022-10-08 18:10:41\n * @param {IParams} [extraParams={}] 不走工作流启动视图时使用\n * @returns {*} {Promise<void>}\n */\n async wfStart(args) {\n const isValid = await this.validate();\n if (!isValid) {\n throw new RuntimeError50(\"\\u8BF7\\u68C0\\u67E5\\u8868\\u5355\\u586B\\u5199\\uFF01\");\n }\n await this.startLoading();\n const { context, params } = this.handlerAbilityParams(args);\n try {\n await this.service.wfStart(context, params, this.data);\n if (this.view.modal.mode === \"ROUTE\") {\n ibiz.mc.command.send(this.data.$origin, \"OBJECTUPDATED\");\n ibiz.mc.command.send({ srfdecodename: \"SysTodo\" }, \"OBJECTUPDATED\");\n }\n } catch (error) {\n this.actionNotification(\"WFSTARTERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n this.actionNotification(\"WFSTARTSUCCESS\", { default: \"\\u6D41\\u7A0B\\u542F\\u52A8\\u6210\\u529F\" });\n }\n /**\n * 工作流提交(调用前先确保调用保存)\n *\n * @author lxm\n * @date 2022-10-08 18:10:56\n * @param {IParams} [extraParams={}] 不走工作流操作视图时使用\n * @returns {*} {Promise<void>}\n */\n async wfSubmit(args) {\n const isValid = await this.validate();\n if (!isValid) {\n throw new RuntimeError50(\"\\u8BF7\\u68C0\\u67E5\\u8868\\u5355\\u586B\\u5199\\uFF01\");\n }\n await this.startLoading();\n const { context, params } = this.handlerAbilityParams(args);\n try {\n await this.service.wfSubmit(context, params, this.data);\n if (this.view.modal.mode === \"ROUTE\") {\n ibiz.mc.command.send(this.data.$origin, \"OBJECTUPDATED\");\n ibiz.mc.command.send({ srfdecodename: \"SysTodo\" }, \"OBJECTUPDATED\");\n }\n } catch (error) {\n this.actionNotification(\"WFSUBMITERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n this.actionNotification(\"WFSUBMITSUCCESS\", { default: \"\\u6D41\\u7A0B\\u63D0\\u4EA4\\u6210\\u529F\" });\n }\n async dataChangeNotify(names) {\n await super.dataChangeNotify(names);\n this.autoSave();\n }\n /**\n * 自动保存\n * @author lxm\n * @date 2023-08-23 05:44:48\n * @return {*} {Promise<void>}\n */\n async autoSave() {\n if (this.model.enableAutoSave) {\n try {\n await this.save({ silent: true, noFillBack: true });\n } catch (error) {\n ibiz.log.error(error);\n }\n }\n }\n /**\n * 设置simple模式的数据\n * @author lxm\n * @date 2023-11-22 07:11:21\n * @param {IData} data\n */\n setSimpleData(data) {\n const cloneData = { ...data };\n this.formItems.forEach((item) => {\n if (!Object.prototype.hasOwnProperty.call(cloneData, item.name)) {\n cloneData[item.name] = null;\n }\n });\n this.state.modified = false;\n this.state.data = cloneData;\n if (!this.state.isLoaded) {\n this.formStateNotify(\"LOAD\" /* LOAD */);\n this.state.isLoaded = true;\n } else {\n this.dataChangeNotify(Object.keys(this.state.data));\n }\n }\n};\n\n// src/controller/control/grid/grid/grid-column.controller.ts\nvar GridColumnController = class {\n /**\n * Creates an instance of GridFieldColumnController.\n * @author lxm\n * @date 2022-08-24 20:08:22\n * @param {T} model\n */\n constructor(model, grid) {\n /**\n * 是否是自适应列\n * @author lxm\n * @date 2023-07-07 11:20:16\n * @type {boolean}\n */\n this.isAdaptiveColumn = false;\n /**\n * 是否是脚本代码\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-08-15 10:51:25\n */\n this.isCustomCode = false;\n var _a;\n this.model = model;\n this.grid = grid;\n this.isAdaptiveColumn = model.widthUnit === \"STAR\";\n if (this.isAdaptiveColumn) {\n this.grid.hasAdaptiveColumn = true;\n }\n if ((_a = this.deGridDataItem) == null ? void 0 : _a.customCode) {\n this.isCustomCode = true;\n }\n }\n /**\n * 上下文\n *\n * @author lxm\n * @date 2022-09-05 19:09:24\n * @readonly\n * @type {IContext}\n */\n get context() {\n return this.grid.context;\n }\n /**\n * 视图参数\n *\n * @author lxm\n * @date 2022-09-05 19:09:00\n * @readonly\n * @type {IParams}\n */\n get params() {\n return this.grid.params;\n }\n /**\n * 该列是否启用行编辑\n *\n * @author lxm\n * @date 2022-09-06 11:09:58\n * @readonly\n */\n get enableRowEdit() {\n return !!(this.grid.model.enableRowEdit && this.model.enableRowEdit);\n }\n /**\n * 该列对应数据项\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-08-15 10:48:22\n */\n get deGridDataItem() {\n var _a;\n return (_a = this.grid.model.degridDataItems) == null ? void 0 : _a.find((item) => {\n return item.id === this.model.id;\n });\n }\n /**\n * 值格式化\n * @author lxm\n * @date 2023-08-25 05:03:07\n * @readonly\n * @type {(string | undefined)}\n */\n get valueFormat() {\n var _a;\n return (_a = this.deGridDataItem) == null ? void 0 : _a.format;\n }\n /**\n * 数据类型(数值)\n * @author lxm\n * @date 2023-08-25 05:03:07\n * @readonly\n * @type {(string | undefined)}\n */\n get dataType() {\n var _a;\n return (_a = this.deGridDataItem) == null ? void 0 : _a.dataType;\n }\n /**\n * 子类不可覆盖或重写此方法,在 init 时需要重写的使用 onInit 方法。\n *\n * @author lxm\n * @date 2022-08-18 22:08:30\n * @returns {*} {Promise<void>}\n */\n async init() {\n await this.onInit();\n }\n /**\n * 初始化方法\n *\n * @author lxm\n * @date 2022-09-28 15:09:15\n * @protected\n * @returns {*} {Promise<void>}\n */\n async onInit() {\n }\n /**\n * 解析获取脚本代码html\n * @param {GridRowState} row\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-08-15 11:29:58\n */\n getCustomHtml(row) {\n var _a;\n if ((_a = this.deGridDataItem) == null ? void 0 : _a.scriptCode) {\n return ScriptFactory.execScriptFn(\n { data: row.data },\n this.deGridDataItem.scriptCode,\n { singleRowReturn: true, isAsync: false }\n );\n }\n }\n};\n\n// src/controller/control/grid/grid/grid-row.state.ts\nvar GridRowState = class {\n constructor(data, grid) {\n /**\n * 错误信息集合,p是对应属性名称\n *\n * @author lxm\n * @date 2022-09-06 15:09:54\n * @type {({ [p: string]: string | null })}\n */\n this.errors = {};\n /**\n * 操作列状态(p是操作列的标识)\n *\n * @author lxm\n * @date 2022-09-07 22:09:38\n * @type {({ [p: string]: IButtonContainerState })}\n */\n this.uaColStates = {};\n /**\n * 编辑列的状态\n *\n * @author lxm\n * @date 2022-09-20 15:09:58\n * @type {({ [p: string]: { disabled: boolean } })}\n */\n this.editColStates = {};\n /**\n * 是否显示行编辑\n *\n * @author lxm\n * @date 2022-09-05 22:09:23\n * @type {boolean}\n */\n this.showRowEdit = false;\n /**\n * 是否被修改过\n *\n * @author lxm\n * @date 2022-11-02 22:11:33\n * @type {boolean}\n */\n this.modified = false;\n /**\n * 是否正在处理中(动态控制,值规则,表单项更新等逻辑中)\n * @author lxm\n * @date 2023-03-06 08:00:22\n * @type {boolean}\n * @memberof GridRowState\n */\n this.processing = false;\n this.data = data;\n Object.keys(this.data).forEach((key) => {\n if (this.errors[key] === void 0) {\n this.errors[key] = null;\n }\n });\n Object.values(grid.uaColumns).forEach((column) => {\n column.initActionStates(this);\n });\n Object.values(grid.editColumns).forEach((editColumn) => {\n this.editColStates[editColumn.fieldName] = {\n disabled: false,\n readonly: false,\n editable: ibiz.config.grid.editShowMode === \"all\",\n required: false\n };\n });\n }\n};\n\n// src/controller/control/grid/grid/grid.controller.ts\nimport {\n awaitTimeout as awaitTimeout2,\n debounceAndAsyncMerge as debounceAndAsyncMerge2,\n mergeDefaultInLeft as mergeDefaultInLeft3,\n recursiveIterate as recursiveIterate5,\n RuntimeError as RuntimeError51,\n RuntimeModelError as RuntimeModelError56\n} from \"@ibiz-template/core\";\nimport { clone as clone21 } from \"ramda\";\n\n// src/controller/control/grid/grid/grid.service.ts\nvar GridService = class extends MDControlService {\n /**\n * 初始化属性映射\n *\n * @author lxm\n * @date 2022-08-31 18:08:37\n */\n initUIDataMap() {\n var _a;\n super.initUIDataMap();\n (_a = this.model.degridDataItems) == null ? void 0 : _a.forEach((column) => {\n const uiKey = column.id.toLowerCase();\n const deField = column.appDEFieldId;\n let mapField;\n if (deField) {\n const deFieldKey = deField.toLowerCase();\n mapField = new UIMapField(uiKey, deFieldKey, {\n isOriginField: true,\n dataType: column.dataType\n });\n } else {\n mapField = new UIMapField(uiKey, uiKey);\n }\n this.dataUIMap.set(uiKey, mapField);\n });\n }\n /**\n * 编辑列更新\n *\n * @author lxm\n * @date 2022-09-15 21:09:34\n * @param {string} methodName\n * @param {IParams} context\n * @param {IParams} [params={}]\n * @returns {*} {Promise<IHttpResponse<ControlVO>>}\n */\n async updateGridEditItem(methodName, context, params = {}) {\n const entityService = await this.app.deService.getService(\n this.model.appDataEntityId\n );\n let res = await entityService.exec(methodName, context, params);\n res = this.handleResponse(res);\n return res;\n }\n};\n\n// src/controller/control/grid/grid/grid.controller.ts\nvar GridController = class extends MDControlController {\n constructor() {\n super(...arguments);\n /**\n * 是否有配置宽度自适应列\n *\n * @type {boolean}\n * @memberof GridController\n */\n this.hasAdaptiveColumn = false;\n /**\n * 是否有多级表头\n * @author lxm\n * @date 2023-08-07 02:26:16\n * @type {boolean}\n */\n this.isMultistageHeader = false;\n /**\n * 所有表格列控制器集合\n *\n * @author lxm\n * @date 2022-11-14 15:11:14\n * @type {{ [key: string]: GridColumnController }}\n */\n this.columns = {};\n /**\n * 所有表格属性列的控制器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: GridFieldColumnController }}\n */\n this.fieldColumns = {};\n /**\n * 所有表格操作列的控制器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: GridUAColumnController }}\n */\n this.uaColumns = {};\n /**\n * 所有表格编辑列的控制器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: GridFieldEditColumnController }}\n */\n this.editColumns = {};\n /**\n * 表格列的适配器\n *\n * @author lxm\n * @date 2022-11-14 14:11:39\n * @type {{ [key: string]: IGridColumnProvider }}\n */\n this.providers = {};\n /**\n * 聚合行标题\n * @author lxm\n * @date 2023-08-07 04:11:00\n * @type {string}\n */\n this.aggTitle = \"\\u5408\\u8BA1\";\n }\n /**\n * 分组代码表项集合\n * @author lxm\n * @date 2023-08-07 09:09:42\n * @type {readonly}\n */\n get groupCodeListItems() {\n var _a;\n return (_a = this.groupFieldColumn) == null ? void 0 : _a.codeListItems;\n }\n /**\n * 是否启用表格聚合\n * @author lxm\n * @date 2023-08-07 04:10:55\n * @readonly\n * @type {boolean}\n */\n get enableAgg() {\n return this.model.aggMode !== \"NONE\";\n }\n /**\n * 允许使用行编辑\n * @author lxm\n * @date 2023-08-17 02:52:07\n * @readonly\n * @type {boolean}\n */\n get allowRowEdit() {\n return !!this.model.enableRowEdit && this.state.rowEditOpen;\n }\n /**\n * 单元格超出呈现模式\n * @author lxm\n * @date 2023-11-17 01:56:26\n * @readonly\n * @type {('wrap' | 'ellipsis')}\n */\n get overflowMode() {\n return ibiz.config.grid.overflowMode;\n }\n initState() {\n super.initState();\n this.state.rows = [];\n this.state.noSort = this.model.noSort === true;\n this.state.size = this.model.pagingSize || 20;\n this.state.singleSelect = this.model.singleSelect === true;\n this.state.columnStates = [];\n this.state.aggResult = {};\n this.state.rowEditOpen = false;\n }\n /**\n * 初始化方法\n *\n * @author lxm\n * @date 2022-08-18 22:08:17\n * @protected\n * @returns {*} {Promise<void>}\n */\n async onCreated() {\n await super.onCreated();\n this.service = new GridService(this.model);\n await this.service.init(this.context);\n this.initColumnStates();\n await this.initGridColumns();\n this.dataChangeNotify = debounceAndAsyncMerge2(\n this.dataChangeNotify.bind(this),\n (arr1, arr2) => {\n return [arr1[0], Array.from(/* @__PURE__ */ new Set([...arr1[1], ...arr2[1]]))];\n },\n 200\n );\n await this.initGroup();\n }\n /**\n * 初始化表格分组\n * @author lxm\n * @date 2023-08-07 09:10:17\n * @protected\n * @return {*} {Promise<void>}\n */\n async initGroup() {\n if (!this.model.enableGroup) {\n return;\n }\n const { groupAppDEFieldId, groupCodeListId, groupMode } = this.model;\n this.groupFieldColumn = Object.values(this.fieldColumns).find(\n (item) => item.model.appDEFieldId === groupAppDEFieldId\n );\n if (!this.groupFieldColumn) {\n throw new RuntimeModelError56(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5206\\u7EC4\\u5C5E\\u6027\\u7684\\u5C5E\\u6027\\u5217\");\n }\n const groupFieldName = this.groupFieldColumn.model.id;\n if (!this.groupFieldColumn.model.appCodeListId) {\n throw new RuntimeModelError56(\n this.groupFieldColumn.model,\n \"\\u5206\\u7EC4\\u5C5E\\u6027\\u7684\\u5C5E\\u6027\\u5217\".concat(groupFieldName, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u4EE3\\u7801\\u8868\")\n );\n }\n const index = this.state.columnStates.findIndex(\n (item) => item.key === this.groupFieldColumn.model.codeName\n );\n if (index !== -1 && index !== 0) {\n if (this.isMultistageHeader) {\n throw new RuntimeModelError56(\n this.model,\n \"\\u8BF7\\u5C06\\u5206\\u7EC4\\u5C5E\\u6027\\u5217\".concat(groupFieldName, \"\\u914D\\u7F6E\\u4E3A\\u7B2C\\u4E00\\u5217\")\n );\n }\n const removeEls = this.state.columnStates.splice(index, 1);\n this.state.columnStates.unshift(...removeEls);\n }\n if (groupMode === \"CODELIST\") {\n if (!groupCodeListId) {\n throw new RuntimeModelError56(this.model, \"\\u4EE3\\u7801\\u8868\\u5206\\u7EC4\\u6A21\\u5F0F\\u9700\\u8981\\u914D\\u7F6E\\u4EE3\\u7801\\u8868\");\n }\n if (this.groupFieldColumn.model.appCodeListId !== groupCodeListId) {\n throw new RuntimeModelError56(\n this.model,\n \"\\u5206\\u7EC4\\u4EE3\\u7801\\u8868\\u4E0E\\u5C5E\\u6027\\u5217\".concat(groupFieldName, \"\\u7684\\u4EE3\\u7801\\u8868\\u4E0D\\u4E00\\u81F4\")\n );\n }\n }\n }\n async afterLoad(args, items) {\n await super.afterLoad(args, items);\n await handleAllSettled(\n Object.values(this.fieldColumns).map(async (fieldColumn) => {\n await fieldColumn.loadCodeList();\n }),\n false\n );\n this.state.rows = items.map((item) => {\n const row = new GridRowState(item, this);\n this.gridStateNotify(row, \"LOAD\" /* LOAD */);\n return row;\n });\n this.state.rows.forEach((row) => {\n Object.values(row.uaColStates).forEach((uaState) => {\n uaState.update(row.data.getOrigin(), this.model.appDataEntityId);\n });\n });\n this.calcGroupData(items);\n this.calcAggResult(items);\n return items;\n }\n /**\n * 计算分组数据\n * @author lxm\n * @date 2023-08-07 02:16:39\n * @protected\n * @param {IData[]} items\n */\n calcGroupData(items) {\n const { enableGroup, groupMode } = this.model;\n if (enableGroup) {\n const groupMap = /* @__PURE__ */ new Map();\n const codeListGroup = groupMode === \"CODELIST\";\n const groupFiledName = this.groupFieldColumn.model.id;\n if (codeListGroup) {\n this.groupCodeListItems.forEach((item) => {\n groupMap.set(item.value, []);\n });\n }\n items.forEach((item) => {\n const groupFieldValue = item[groupFiledName];\n if (!codeListGroup && !groupMap.has(groupFieldValue)) {\n groupMap.set(groupFieldValue, []);\n }\n if (groupMap.has(groupFieldValue)) {\n groupMap.get(groupFieldValue).push(item);\n }\n });\n this.state.groups = [];\n groupMap.forEach((value, key) => {\n const codeListItem = this.groupCodeListItems.find(\n (item) => item.value === key\n );\n this.state.groups.push({\n caption: (codeListItem == null ? void 0 : codeListItem.text) || \"\".concat(key),\n key,\n children: value\n });\n });\n }\n }\n /**\n * 加载远程聚合数据\n * @author lxm\n * @date 2023-08-07 05:35:36\n * @protected\n * @return {*} {Promise<void>}\n */\n async loadRemoteAgg() {\n const { aggMode, aggAppDataEntityId, aggAppDEDataSetId } = this.model;\n if (aggMode !== \"ALL\") {\n return;\n }\n if (!aggAppDEDataSetId || !aggAppDataEntityId) {\n throw new RuntimeModelError56(this.model, \"\\u7F3A\\u5C11\\u914D\\u7F6E\\u805A\\u5408\\u5B9E\\u4F53\\u6216\\u805A\\u5408\\u6570\\u636E\\u96C6\");\n }\n const params = await this.getFetchParams();\n const app = ibiz.hub.getApp(this.context.srfappid);\n const res = await app.deService.exec(\n aggAppDataEntityId,\n aggAppDEDataSetId,\n this.context,\n void 0,\n params\n );\n if (res.data.length) {\n [this.state.remoteAggResult] = res.data;\n }\n }\n /**\n * 计算当前页的聚合数据\n * @author lxm\n * @date 2023-08-07 04:22:09\n * @protected\n * @param {IData[]} items\n */\n calcAggResult(items) {\n Object.values(this.fieldColumns).forEach((column) => {\n const result = column.calcFieldAgg(items);\n if (result) {\n this.state.aggResult[column.model.id] = result;\n }\n });\n }\n /**\n * 后台删除结束后界面删除逻辑\n *\n * @author lxm\n * @date 2022-09-06 19:09:10\n * @param {IData} data\n */\n afterRemove(data) {\n super.afterRemove(data);\n const index = this.findRowStateIndex(data);\n this.state.rows.splice(index, 1);\n this.state.groups.forEach((item) => {\n if (item.children.length) {\n const findIndex2 = item.children.findIndex(\n (item2) => item2.srfkey === data.srfkey\n );\n if (findIndex2 !== -1) {\n item.children.splice(findIndex2, 1);\n }\n }\n });\n }\n /**\n * 新建行\n *\n * @author lxm\n * @date 2022-09-06 21:09:05\n */\n async newRow() {\n const { enableRowEdit, enableRowNew } = this.model;\n const { editShowMode } = ibiz.config.grid;\n if (!enableRowEdit || !enableRowNew || ![\"row\", \"all\"].includes(editShowMode)) {\n ibiz.log.error(\"\\u4E0D\\u652F\\u6301\\u65B0\\u5EFA\\u884C\");\n return;\n }\n if (editShowMode === \"row\") {\n const editingRow = this.state.rows.find((item) => item.showRowEdit);\n if (editingRow) {\n throw new RuntimeError51(\"\\u8BF7\\u5148\\u5B8C\\u6210\\u5F53\\u524D\\u884C\\u7F16\\u8F91\\u4E2D\\u7684\\u884C\\u7684\\u64CD\\u4F5C\");\n }\n }\n const queryParams = { ...this.params };\n const defaultData = this.calcDefaultValue({}, true);\n Object.assign(queryParams, defaultData);\n let res;\n try {\n res = await this.service.getDraft(this.context, queryParams);\n } catch (error) {\n this.actionNotification(\"GETDRAFTERROR\", {\n error\n });\n throw error;\n }\n const draftData = res.data;\n mergeDefaultInLeft3(draftData, defaultData);\n this.state.items.unshift(draftData);\n const newRow = new GridRowState(draftData, this);\n this.state.rows.unshift(newRow);\n this.gridStateNotify(newRow, \"DRAFT\" /* DRAFT */);\n if (editShowMode === \"row\") {\n this.switchRowEdit(this.state.rows[0], true);\n }\n this.actionNotification(\"GETDRAFTSUCCESS\", { data: draftData });\n }\n /**\n * 保存\n *\n * @author lxm\n * @date 2022-09-06 19:09:21\n * @param {ControlVO} data\n * @returns {*} {Promise<void>}\n */\n async save(data) {\n if (this.state.isSimple) {\n return;\n }\n const isCreate = data.srfuf === 0 /* CREATE */;\n const rowState = this.findRowState(data);\n if (!rowState) {\n throw new RuntimeError51(\"\\u884C\\u6570\\u636E\\u4E0D\\u5B58\\u5728\");\n }\n if (!rowState.modified) {\n ibiz.log.debug(\"\\u503C\\u6CA1\\u6709\\u53D1\\u751F\\u6539\\u53D8\");\n return;\n }\n if (rowState.processing) {\n await awaitTimeout2(500, this.save.bind(this), [data]);\n return;\n }\n const isValid = await this.validate(rowState);\n if (!isValid) {\n throw new RuntimeError51(\"\\u884C\\u6570\\u636E\\u6821\\u9A8C\\u4E0D\\u901A\\u8FC7\\uFF0C\\u4FDD\\u5B58\\u53D6\\u6D88\");\n }\n let res;\n const deName = calcDeCodeNameById(this.model.appDataEntityId);\n const tempContext = this.context.clone();\n tempContext[deName] = data.srfkey;\n try {\n res = isCreate ? await this.service.create(tempContext, data) : await this.service.update(tempContext, data);\n } catch (error) {\n await this.evt.emit(\"onSaveError\", void 0);\n this.actionNotification(\"\".concat(isCreate ? \"CREATE\" : \"UPDATE\", \"ERROR\"), {\n error,\n data: rowState.data\n });\n throw error;\n }\n const index = this.findRowStateIndex(data);\n this.state.items.splice(index, 1, res.data);\n rowState.data = res.data;\n rowState.modified = false;\n this.gridStateNotify(rowState, \"SAVE\" /* SAVE */);\n await this.evt.emit(\"onSaveSuccess\", void 0);\n }\n async saveAll() {\n const needSaveData = this.state.rows.filter((row) => row.modified).map((row) => row.data);\n if (!needSaveData.length) {\n return;\n }\n await handleAllSettled(\n needSaveData.map((data) => {\n return this.save(data);\n })\n );\n }\n /**\n * 初始化表格属性列,操作列,编辑项控制器\n *\n * @author lxm\n * @date 2022-08-24 21:08:48\n * @protected\n */\n async initColumnsController(column) {\n var _a;\n const provider = await getGridColumnProvider(column);\n if (!provider) {\n return;\n }\n this.providers[column.codeName] = provider;\n const controller = await provider.createController(column, this);\n this.columns[column.codeName] = controller;\n if (column.columnType === \"DEFGRIDCOLUMN\" || column.columnType === \"DEFTREEGRIDCOLUMN\") {\n this.fieldColumns[column.codeName] = controller;\n if (column.enableRowEdit) {\n this.editColumns[column.codeName] = controller;\n }\n } else if (column.columnType === \"UAGRIDCOLUMN\") {\n this.uaColumns[column.codeName] = controller;\n } else if (column.columnType === \"GROUPGRIDCOLUMN\") {\n this.isMultistageHeader = true;\n await Promise.all(\n ((_a = column.degridColumns) == null ? void 0 : _a.map(async (childColumn) => {\n await this.initColumnsController(childColumn);\n })) || []\n );\n }\n }\n /**\n * 初始化表格列状态\n * @author lxm\n * @date 2023-08-28 02:53:12\n * @protected\n * @return {*} {Promise<void>}\n */\n initColumnStates() {\n recursiveIterate5(\n this.model,\n (column) => {\n if (column.columnType !== \"GROUPGRIDCOLUMN\") {\n this.state.columnStates.push({\n key: column.codeName,\n caption: column.caption,\n hidden: !!column.hideDefault,\n uaColumn: column.columnType === \"UAGRIDCOLUMN\"\n });\n }\n },\n { childrenFields: [\"degridColumns\"] }\n );\n this.calcColumnFixed();\n }\n /**\n * 计算列的固定状态\n * @author lxm\n * @date 2023-08-31 05:12:27\n * @protected\n */\n calcColumnFixed() {\n const showColumns = this.state.columnStates.filter(\n (column) => !column.hidden\n );\n const allNum = showColumns.length;\n const { frozenFirstColumn, frozenLastColumn } = this.model;\n showColumns.forEach((column, index) => {\n if (column.uaColumn) {\n column.fixed = index + 1 <= Math.floor(allNum / 2) ? \"left\" : \"right\";\n } else if (frozenFirstColumn && index < frozenFirstColumn) {\n column.fixed = \"left\";\n } else if (frozenLastColumn && index >= allNum - frozenLastColumn) {\n column.fixed = \"right\";\n }\n });\n }\n /**\n * 初始化表格属性列,操作列,编辑项控制器\n *\n * @author lxm\n * @date 2022-08-24 21:08:48\n * @protected\n */\n async initGridColumns() {\n if (this.model.degridColumns) {\n await Promise.all(\n this.model.degridColumns.map(\n async (column) => this.initColumnsController(column)\n )\n );\n }\n }\n /**\n * 设置行属性的值\n *\n * @author lxm\n * @date 2022-08-24 10:08:40\n * @param {GridRowState} row 行状态控制器\n * @param {unknown} value 要设置的值\n * @param {string} name 要设置的表单数据的属性名称\n */\n async setRowValue(row, name, value) {\n if (Object.prototype.hasOwnProperty.call(row.data, name) && !isValueChange(row.data[name], value)) {\n return;\n }\n row.data[name] = value;\n row.modified = true;\n row.processing = true;\n try {\n await this.dataChangeNotify(row, [name]);\n await this.evt.emit(\"onGridDataChange\", {\n data: this.state.rows.map((_row) => {\n return _row.data;\n })\n });\n } finally {\n row.processing = false;\n }\n }\n /**\n * 通知所有表格编辑项成员表格编辑项数据变更\n *\n * @author lxm\n * @date 2022-09-20 22:09:49\n * @param {GridRowState} row 行数据\n * @param {string[]} names 更新的属性\n */\n async dataChangeNotify(row, names) {\n await handleAllSettled(\n Object.values(this.editColumns).map(async (column) => {\n return column.dataChangeNotify(row, names);\n })\n );\n }\n /**\n * 表格状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n gridStateNotify(row, state) {\n Object.values(this.editColumns).forEach((column) => {\n column.gridStateNotify(row, state);\n });\n }\n /**\n * 校验一行数据的所有编辑项\n *\n * @author lxm\n * @date 2022-09-06 21:09:05\n * @param {GridRowState} row 要校验的行数据控制器\n * @returns {*}\n */\n async validate(row) {\n const values = await Promise.all(\n Object.values(this.editColumns).map((column) => column.validate(row))\n );\n return values.findIndex((value) => !value) === -1;\n }\n async toggleRowEdit() {\n if (!this.model.enableRowNew) {\n throw new RuntimeError51(\"\\u5F53\\u524D\\u8868\\u683C\\u4E0D\\u652F\\u6301\\u884C\\u7F16\\u8F91\\uFF0C\\u65E0\\u6CD5\\u5207\\u6362\\u5F00\\u542F\\u884C\\u7F16\\u8F91\");\n }\n this.state.rowEditOpen = !this.state.rowEditOpen;\n }\n /**\n * 切换单行的编辑状态\n * @author lxm\n * @date 2023-08-08 06:45:54\n * @param {GridRowState} row\n * @param {boolean} [editable]\n */\n async switchRowEdit(row, editable, isSave = true) {\n if (!this.allowRowEdit) {\n return;\n }\n const toState = editable === void 0 ? !row.showRowEdit : editable;\n if (row.showRowEdit === toState) {\n return;\n }\n if (toState === false) {\n if (isSave) {\n await this.save(row.data);\n } else if (row.data.srfuf === 0 /* CREATE */) {\n row.showRowEdit = false;\n this.evt.emit(\"onRowEditChange\", { row });\n return this.remove({ data: [row.data], silent: true });\n } else if (row.cacheData) {\n row.data = row.cacheData;\n delete row.cacheData;\n }\n } else {\n const editingRow = this.state.rows.find((item) => item.showRowEdit);\n if (editingRow) {\n throw new RuntimeError51(\"\\u540C\\u65F6\\u53EA\\u80FD\\u6709\\u4E00\\u884C\\u5F00\\u542F\\u884C\\u7F16\\u8F91\");\n }\n if (row.data.srfuf === 1 /* UPDATE */) {\n row.cacheData = clone21(row.data);\n const defaultVal = this.calcDefaultValue(row.data, false);\n Object.assign(row.data, defaultVal);\n }\n }\n row.showRowEdit = toState;\n Object.values(this.editColumns).forEach((column) => {\n row.editColStates[column.fieldName].editable = toState;\n });\n this.evt.emit(\"onRowEditChange\", { row });\n }\n /**\n * 设置排序\n *\n * @author lxm\n * @date 2022-09-28 13:09:44\n * @param {string} key 排序字段\n * @param {string} order 排序顺序\n */\n setSort(fieldId, order) {\n if (fieldId && order) {\n const fieldName = this.fieldIdNameMap.get(fieldId).toLowerCase();\n super.setSort(fieldName, order);\n } else {\n const { minorSortAppDEFieldId, minorSortDir } = this.model;\n if (minorSortAppDEFieldId && minorSortDir) {\n const fieldName = this.fieldIdNameMap.get(minorSortAppDEFieldId);\n this.state.sortQuery = \"\".concat(fieldName.toLowerCase(), \",\").concat(minorSortDir.toLowerCase());\n } else {\n this.state.sortQuery = \"\";\n }\n }\n }\n /**\n * 表格编辑项更新\n *\n * @author lxm\n * @date 2022-09-15 21:09:13\n * @param {string} methodName 更新实体方法\n * @param {string[]} updateItems 更新项名称集合\n */\n async updateGridEditItem(row, updateId) {\n var _a;\n const findUpdate = (_a = this.model.degridEditItemUpdates) == null ? void 0 : _a.find(\n (item) => item.id === updateId\n );\n if (!findUpdate) {\n throw new RuntimeError51(\"\\u6CA1\\u627E\\u5230\".concat(updateId, \"\\u7F16\\u8F91\\u5217\\u66F4\\u65B0\"));\n }\n const { appDEMethodId, degeiupdateDetails, customCode, scriptCode } = findUpdate;\n const updateItems = degeiupdateDetails.map((item) => item.id);\n let updateData;\n if (customCode && scriptCode) {\n updateData = ScriptFactory.execScriptFn(\n {\n ...this.getEventArgs(),\n data: row.data\n },\n scriptCode,\n {\n isAsync: false\n }\n );\n } else {\n const params = { ...this.params, ...row.data.getOrigin() };\n const res = await this.service.updateGridEditItem(\n appDEMethodId,\n this.context,\n params\n );\n updateData = res.data;\n }\n if (updateData && (updateItems == null ? void 0 : updateItems.length)) {\n await Promise.all(\n updateItems.map((itemName) => {\n return this.setRowValue(row, itemName, updateData[itemName]);\n })\n );\n }\n }\n /**\n * 加载数据(只加载数据 不做其他操作)\n *\n * @author zk\n * @date 2023-07-20 04:07:49\n * @param {MDCtrlLoadParams} args\n * @return {*}\n * @memberof GridController\n */\n async loadData(args) {\n const { context } = this.handlerAbilityParams(args);\n const params = await this.getFetchParams(args == null ? void 0 : args.viewParam);\n let res;\n await this.startLoading();\n try {\n res = await this.service.fetch(context, params);\n } finally {\n await this.endLoading();\n }\n return res.data;\n }\n /**\n * 初始化数据导出列\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-11-21 18:54:16\n */\n async findAllExportColumns(dataExport) {\n var _a;\n const app = ibiz.hub.getApp(this.context.srfappid);\n const exportColumnsPromises = (_a = dataExport.dedataExportItems) == null ? void 0 : _a.map(async (item) => {\n const tempExportColumn = { ...item };\n if (item.codeListId) {\n tempExportColumn.codeList = app.codeList.getCodeList(item.codeListId);\n tempExportColumn.codeListItems = await app.codeList.get(\n item.codeListId\n );\n }\n return tempExportColumn;\n });\n if (exportColumnsPromises) {\n return Promise.all(exportColumnsPromises);\n }\n return void 0;\n }\n /**\n * 数据导出\n *\n * @param {MouseEvent} event 原生js点击事件\n * @returns {*} {Promise<void>}\n * @memberof MDControlController\n */\n async exportData(_args) {\n var _a;\n if (this.model.dedataExportId && !this.dataExport) {\n this.dataExport = (_a = this.dataEntity.appDEDataExports) == null ? void 0 : _a.find((dataExport) => {\n return dataExport.id === this.model.dedataExportId;\n });\n if (this.dataExport) {\n this.allExportColumns = await this.findAllExportColumns(\n this.dataExport\n );\n }\n }\n const formatExcelData = (data2) => {\n var _a2;\n const codeListMap = /* @__PURE__ */ new Map();\n if (this.allExportColumns && this.allExportColumns.length > 0) {\n (_a2 = this.allExportColumns) == null ? void 0 : _a2.forEach((exportColumn) => {\n if (exportColumn.codeListItems) {\n codeListMap.set(\n exportColumn.appDEFieldId,\n exportColumn.codeListItems\n );\n }\n });\n } else {\n Object.keys(this.fieldColumns).forEach((key) => {\n if (this.fieldColumns[key].codeList) {\n codeListMap.set(key, this.fieldColumns[key].codeListItems);\n }\n });\n }\n const cloneData = clone21(\n data2.map((item) => {\n return item.getOrigin();\n })\n );\n cloneData.forEach((item) => {\n const fields = Object.keys(item);\n fields.forEach((key) => {\n var _a3;\n if (codeListMap.get(key)) {\n item[key] = ((_a3 = codeListMap.get(key).find((_item) => {\n return _item.value === item[key];\n })) == null ? void 0 : _a3.text) || item[key];\n }\n });\n });\n return cloneData;\n };\n const getExportData = async () => {\n var _a2;\n const type = (_a2 = _args.params) == null ? void 0 : _a2.type;\n let data2 = [];\n if (type === \"activatedPage\") {\n data2 = this.state.rows.map((row) => row.data);\n }\n if (type === \"maxRowCount\" || type === \"customPage\") {\n const { size } = this.state;\n const { startPage, endPage } = _args.params;\n const params = type === \"customPage\" ? {\n page: 0,\n offset: (startPage - 1) * size,\n size: (endPage - startPage + 1) * size\n } : { size: 1e3, page: 0 };\n data2 = await this.loadData({ viewParam: params });\n }\n if (type === \"selectedRows\") {\n data2 = this.getData();\n }\n if (data2.length === 0) {\n throw new RuntimeError51(\"\\u65E0\\u5BFC\\u51FA\\u6570\\u636E\");\n }\n return formatExcelData(data2);\n };\n const formatArrayData = (filterVal2, tableData) => {\n return tableData.map((v) => {\n return filterVal2.map((j) => {\n return v[j];\n });\n });\n };\n let filterVal = [];\n let header = [];\n if (this.allExportColumns && this.allExportColumns.length > 0) {\n filterVal = this.allExportColumns.map(\n (column) => column.appDEFieldId\n );\n header = this.allExportColumns.map(\n (column) => column.caption\n );\n } else {\n filterVal = Object.keys(this.fieldColumns).map(\n (key) => this.fieldColumns[key].model.id\n );\n header = Object.keys(this.fieldColumns).map(\n (key) => this.fieldColumns[key].model.caption\n );\n }\n const data = formatArrayData(filterVal, await getExportData());\n await exportData(header, data, this.model.logicName);\n }\n /**\n * 计算默认值并返回一个对象,对象里的属性就是要填充的默认值\n * 没有的属性就是不需要填充默认值的属性\n * @author lxm\n * @date 2023-09-18 04:01:06\n * @param {IData} data\n * @param {boolean} isCreate\n * @return {*} {IData}\n */\n calcDefaultValue(data, isCreate) {\n const result = {};\n Object.values(this.editColumns).forEach((c) => {\n const { createDV, createDVT, updateDV, updateDVT } = c.editItem;\n const valueType = isCreate ? createDVT : updateDVT;\n const defaultValue = isCreate ? createDV : updateDV;\n const defaultVal = getDefaultValue(\n {\n name: c.fieldName,\n valueType,\n defaultValue,\n valueFormat: c.valueFormat\n },\n { data, context: this.context, params: this.params }\n );\n if (defaultVal !== void 0) {\n result[c.fieldName] = defaultVal;\n }\n });\n return result;\n }\n /**\n * 查找rowState\n * @author lxm\n * @date 2023-10-27 07:27:48\n * @param {IData} data\n * @return {*} {(IGridRowState)}\n */\n findRowStateIndex(data) {\n const isCreate = data.srfuf === 0 /* CREATE */;\n const compareKey = isCreate ? \"tempsrfkey\" : \"srfkey\";\n return this.state.rows.findIndex(\n (item) => item.data[compareKey] === data[compareKey]\n );\n }\n /**\n * 查找rowState\n * @author lxm\n * @date 2023-10-27 07:27:48\n * @param {IData} data\n * @return {*} {(IGridRowState | undefined)}\n */\n findRowState(data) {\n const index = this.findRowStateIndex(data);\n return index !== -1 ? this.state.rows[index] : void 0;\n }\n};\n\n// src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts\nimport { DataTypes as DataTypes3, ModelError as ModelError28, plus as plus2 } from \"@ibiz-template/core\";\nimport dayjs4 from \"dayjs\";\nimport { debounce as debounce3 } from \"lodash-es\";\nimport { clone as clone22, isNil as isNil22 } from \"ramda\";\nvar GridFieldColumnController = class extends GridColumnController {\n constructor() {\n super(...arguments);\n /**\n * 代码表模型\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-05-24 10:55:50\n */\n this.codeList = void 0;\n }\n /**\n * 是否是链接列\n *\n * @author lxm\n * @date 2022-09-28 17:09:15\n * @returns {*}\n */\n get isLinkColumn() {\n return !!this.model.enableLinkView && !!this.model.linkAppViewId;\n }\n /**\n * 是否有触发界面行为\n *\n * @author lxm\n * @date 2022-12-08 14:12:37\n * @readonly\n * @type {boolean}\n */\n get hasAction() {\n return !!this.model.deuiactionId;\n }\n async onInit() {\n await super.onInit();\n this.loadCodeList = debounce3(this.loadCodeList, 300, {\n leading: true,\n trailing: false\n });\n this.loadCodeList();\n }\n /**\n * 行是否可点击(影响列的界面样式)\n *\n * @author lxm\n * @date 2022-12-08 15:12:58\n * @readonly\n */\n clickable(row) {\n const value = row.data[this.model.codeName];\n return (this.isLinkColumn || this.hasAction) && value;\n }\n /**\n * 公共参数处理,计算上下文和视图参数\n * @return {*}\n * @author: zhujiamin\n * @Date: 2022-08-25 15:44:14\n */\n handlePublicParams(data, context, params) {\n const { userParam } = this.model;\n if (!userParam) {\n return { context, params };\n }\n const { navigateContexts, navigateParams } = parseUserParams(userParam);\n let selfContext = {};\n if (navigateContexts && data) {\n selfContext = convertNavData(navigateContexts, data, params, context);\n }\n const _context = Object.assign(context.clone(), selfContext);\n let selfParams = {};\n if (navigateParams && data) {\n selfParams = convertNavData(navigateParams, data, params, context);\n }\n const _params = { ...params, ...selfParams };\n return { context: _context, params: _params };\n }\n /**\n * 打开链接视图\n *\n * @author lxm\n * @date 2022-09-28 18:09:14\n * @param {GridRowState} row 行数据\n * @param {MouseEvent} event 原生事件\n * @returns {*} {Promise<void>}\n */\n async openLinkView(row, event) {\n const curValue = row.data[this.model.codeName];\n if (!curValue) {\n return;\n }\n const valueItem = this.model.linkValueItem || \"srfkey\";\n const value = row.data[valueItem];\n if (value == null) {\n throw new ModelError28(this.model, \"\\u672A\\u5728\\u884C\\u6570\\u636E\\u4E2D\\u53D6\\u5230 \".concat(valueItem, \" \\u7684\\u503C\"));\n }\n const { linkAppViewId } = this.model;\n if (!linkAppViewId) {\n return;\n }\n const wfContext = getWFContext(row.data);\n const tempContext = Object.assign(this.context.clone(), {\n srfkey: value,\n ...wfContext\n });\n const tempParams = clone22(this.params);\n const { context: newContext, params: newParams } = this.handlePublicParams(\n row.data,\n tempContext,\n tempParams\n );\n const res = await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n linkAppViewId,\n newContext,\n newParams,\n { event }\n );\n if (res == null ? void 0 : res.ok) {\n this.grid.load();\n }\n }\n /**\n * 触发表格列附加界面行为\n *\n * @author lxm\n * @date 2022-12-08 15:12:35\n * @param {GridRowState} row 行数据\n * @param {MouseEvent} event 鼠标事件\n * @returns {*} {Promise<void>}\n */\n async triggerAction(row, event) {\n const actionId = this.model.deuiactionId;\n await UIActionUtil.execAndResolved(actionId, {\n context: this.context,\n params: this.params,\n data: [row.data],\n view: this.grid.view,\n event\n });\n }\n /**\n * 加载代码表数据\n *\n * @author lxm\n * @date 2022-09-28 15:09:38\n * @returns {*}\n */\n async loadCodeList() {\n const appCodeListId = this.model.appCodeListId;\n if (!appCodeListId) {\n return;\n }\n const app = ibiz.hub.getApp(this.context.srfappid);\n if (!this.codeList) {\n this.codeList = app.codeList.getCodeList(appCodeListId);\n }\n const dataItems = await app.codeList.get(\n appCodeListId,\n this.context,\n this.params\n );\n this.codeListItems = dataItems;\n return dataItems;\n }\n /**\n * 计算聚合属性列的值\n * 无配置返回undefined\n * @author lxm\n * @date 2023-08-07 04:50:47\n * @param {IData[]} items\n * @return {*} {(string | undefined)}\n */\n calcFieldAgg(items) {\n const { aggField, aggMode, aggValueFormat, unitName } = this.model;\n if (aggMode === \"NONE\") {\n return;\n }\n const fieldName = aggField || this.model.id;\n items = items.filter((item) => !isNil22(item[fieldName]));\n let aggValue;\n if (this.grid.model.aggMode === \"PAGE\") {\n switch (aggMode) {\n case \"SUM\":\n aggValue = items.map((item) => item[fieldName]).reduce((a, b) => plus2(a, b), 0);\n break;\n case \"AVG\":\n aggValue = items.map((item) => item[fieldName]).reduce((a, b) => plus2(a, b), 0) / items.length;\n break;\n case \"MAX\":\n aggValue = Math.max(...items.map((item) => item[fieldName]));\n break;\n case \"MIN\":\n aggValue = Math.min(...items.map((item) => item[fieldName]));\n break;\n default:\n throw new ModelError28(this.model, \"\\u6682\\u672A\\u652F\\u6301\\u5C5E\\u6027\\u5217\\u805A\\u5408\\u6A21\\u5F0F\".concat(aggMode));\n }\n } else if (this.grid.model.aggMode === \"ALL\") {\n throw new ModelError28(this.model, \"\\u8FDC\\u7A0B\\u805A\\u5408\\u6682\\u672A\\u652F\\u6301\");\n } else {\n throw new ModelError28(\n this.grid.model,\n \"\\u6682\\u672A\\u652F\\u6301\\u805A\\u5408\\u6A21\\u5F0F\".concat(this.grid.model.aggMode)\n );\n }\n let value = \"\".concat(aggValue);\n if (aggValueFormat) {\n try {\n value = ibiz.util.text.format(\"\".concat(aggValue), aggValueFormat);\n } catch (error) {\n ibiz.log.error(\"\".concat(aggValue, \" \\u503C\\u683C\\u5F0F\\u5316\\u9519\\u8BEF\"));\n }\n }\n if (value && unitName) {\n value += unitName;\n }\n return value;\n }\n /**\n * 值格式化\n * @author lxm\n * @date 2023-08-25 05:18:11\n * @param {unknown} value\n * @return {*} {string}\n */\n formatValue(value = \"\") {\n if (this.model.valueType !== \"SIMPLE\") {\n return ValueExUtil.toText(this.model, value);\n }\n const strVal = \"\".concat(value);\n if (!this.valueFormat) {\n return strVal;\n }\n const isDate = DataTypes3.isDate(this.dataType);\n if (isDate) {\n const formatVal = dayjs4(strVal).format(this.valueFormat);\n if (formatVal !== \"Invalid Date\") {\n return formatVal;\n }\n return strVal;\n }\n return ibiz.util.text.format(strVal, this.valueFormat);\n }\n};\n\n// src/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.ts\nimport { RuntimeModelError as RuntimeModelError57 } from \"@ibiz-template/core\";\nvar GridUAColumnController = class extends GridColumnController {\n /**\n * 给rowController初始化操作列的状态\n *\n * @author lxm\n * @date 2022-09-07 21:09:43\n * @param {GridRowState} row\n */\n initActionStates(row) {\n var _a;\n const { deuiactionGroup } = this.model;\n if (!deuiactionGroup) {\n throw new RuntimeModelError57(this.model, \"\\u64CD\\u4F5C\\u5217\\u6CA1\\u6709\\u914D\\u7F6E\\u754C\\u9762\\u884C\\u4E3A\\u7EC4\");\n }\n if (!((_a = deuiactionGroup.uiactionGroupDetails) == null ? void 0 : _a.length)) {\n ibiz.log.debug(\"\\u64CD\\u4F5C\\u5217\\u754C\\u9762\\u884C\\u4E3A\\u7EC4\\u6CA1\\u6709\\u914D\\u7F6E\\u754C\\u9762\\u884C\\u4E3A\");\n return;\n }\n const containerState = new ButtonContainerState();\n deuiactionGroup.uiactionGroupDetails.forEach((detail) => {\n const actionid = detail.uiactionId;\n if (actionid) {\n const buttonState = new UIActionButtonState(\n detail.id,\n this.grid.context.srfappid,\n actionid\n );\n containerState.addState(detail.id, buttonState);\n }\n });\n row.uaColStates[this.model.codeName] = containerState;\n }\n /**\n * 触发操作列点击事件\n *\n * @author lxm\n * @date 2022-09-07 22:09:46\n * @param {IPSUIActionGroupDetail} detail\n * @param {MouseEvent} event\n */\n async onActionClick(detail, row, event) {\n const actionId = detail.uiactionId;\n await UIActionUtil.execAndResolved(actionId, {\n context: this.context,\n params: this.params,\n data: [row.data],\n view: this.grid.view,\n event\n });\n }\n};\n\n// src/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.ts\nimport { RuntimeError as RuntimeError52 } from \"@ibiz-template/core\";\nimport Schema2 from \"async-validator\";\nimport { isNilOrEmpty as isNilOrEmpty9 } from \"qx-util\";\nvar GridFieldEditColumnController = class extends GridFieldColumnController {\n constructor() {\n super(...arguments);\n /**\n * 值规则\n *\n * @author lxm\n * @date 2023-10-18 03:39:40\n * @type {IData[]}\n */\n this.rules = [];\n }\n /**\n * 单位\n * @author lxm\n * @date 2023-05-24 05:46:52\n * @readonly\n * @type {(string | undefined)}\n */\n get unitName() {\n return this.editItem.unitName;\n }\n /**\n * 值格式化\n * @author lxm\n * @date 2023-05-24 05:46:56\n * @readonly\n * @type {(string | undefined)}\n */\n get valueFormat() {\n return this.model.valueFormat;\n }\n /**\n * 值项\n * @author lxm\n * @date 2023-05-31 02:31:27\n * @readonly\n * @type {(string | undefined)}\n */\n get valueItemName() {\n if (this.editItem.editor) {\n return this.editItem.editor.valueItemName;\n }\n return void 0;\n }\n /**\n * 列数据属性字段名称\n * @author lxm\n * @date 2023-06-25 09:26:04\n * @readonly\n */\n get fieldName() {\n return this.model.dataItemName;\n }\n /**\n * 初始化方法,生成表格编辑项控制器\n *\n * @author lxm\n * @date 2022-11-14 13:11:33\n * @protected\n * @returns {*} {Promise<void>}\n */\n async onInit() {\n await super.onInit();\n const editItem = findEditItem(this.grid.model, this.model.codeName);\n if (editItem) {\n this.editItem = editItem;\n if (this.editItem.editor && this.editItem.editor.editorType !== \"HIDDEN\") {\n this.editorProvider = await getEditorProvider(this.editItem.editor);\n if (this.editorProvider) {\n this.editor = await this.editorProvider.createController(\n this.editItem.editor,\n this\n );\n await this.initRules();\n }\n }\n }\n }\n /**\n * 初始化值规则\n *\n * @author lxm\n * @date 2022-09-02 09:09:27\n * @protected\n * @returns {*}\n */\n async initRules() {\n this.rules = [];\n const editItemsVRs = filterValueRules(\n this.grid.model.degridEditItemVRs || [],\n this.fieldName\n );\n if (editItemsVRs) {\n this.rules.push(\n ...generateRules(editItemsVRs, this.fieldName, this.valueItemName)\n );\n }\n if (this.editItem.editor) {\n this.rules.push(...generateEditorRules(this.editItem.editor));\n }\n if (this.rules.length > 0) {\n this.validator = new Schema2({ [this.fieldName]: this.rules });\n }\n }\n /**\n * 设置行属性的值\n *\n * @author lxm\n * @date 2022-08-24 10:08:40\n * @param {GridRowState} row 行状态控制器\n * @param {unknown} value 要设置的值\n * @param {string} name 要设置的表单数据的属性名称\n */\n async setRowValue(row, value, name) {\n name = name || this.fieldName;\n await this.grid.setRowValue(row, name, value);\n }\n /**\n * 通知所有表格编辑项成员表格编辑项数据变更\n *\n * @author lxm\n * @date 2022-09-06 15:09:40\n * @param {GridRowState} row 行数据控制器\n * @param {string[]} names 变更属性名称\n */\n async dataChangeNotify(row, names) {\n this.calcColumnDisabled(row);\n const oldRequired = row.editColStates[this.fieldName].required;\n this.calcColumnRequired(row);\n const requiredChanged = oldRequired !== row.editColStates[this.fieldName].required;\n if (requiredChanged || names.includes(this.fieldName) || names.includes(this.valueItemName)) {\n const result = await this.validate(row);\n if (!result) {\n throw new RuntimeError52(\n \"\".concat(this.editItem.codeName, \"\\u6821\\u9A8C\\u62A5\\u9519,\").concat(row.errors[this.fieldName])\n );\n }\n }\n if (names.includes(this.fieldName) && this.editItem.degridEditItemUpdateId) {\n await this.grid.updateGridEditItem(\n row,\n this.editItem.degridEditItemUpdateId\n );\n }\n }\n /**\n * 表格状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n gridStateNotify(row, _state) {\n this.calcColumnDisabled(row);\n this.calcColumnReadonly(row);\n this.calcColumnRequired(row);\n }\n /**\n * 计算列的禁用状态\n * @author lxm\n * @date 2023-06-26 06:19:00\n * @param {GridRowState} row\n */\n calcColumnDisabled(row) {\n let enable = this.calcEnableCond(row);\n if (enable && this.grid.scheduler) {\n const itemEnable = this.grid.scheduler.triggerItemEnable(this.fieldName, {\n data: [row.data]\n });\n if (itemEnable !== void 0) {\n enable = itemEnable;\n }\n }\n row.editColStates[this.fieldName].disabled = !enable;\n }\n /**\n * 计算列的必填状态\n * @author lxm\n * @date 2023-06-26 06:23:25\n * @param {GridRowState} row\n */\n calcColumnRequired(row) {\n let allowEmpty = this.editItem.allowEmpty !== false;\n if (allowEmpty && this.grid.scheduler) {\n const itemBlank = this.grid.scheduler.triggerItemBlank(this.fieldName, {\n data: [row.data]\n });\n if (itemBlank !== void 0) {\n allowEmpty = itemBlank;\n }\n }\n row.editColStates[this.fieldName].required = !allowEmpty;\n }\n /**\n * 计算列的只读状态\n * @author lxm\n * @date 2023-06-26 06:19:00\n * @param {GridRowState} row\n */\n calcColumnReadonly(row) {\n var _a;\n const isReadOnly = !!((_a = this.editItem.editor) == null ? void 0 : _a.readOnly);\n row.editColStates[this.fieldName].readonly = isReadOnly;\n }\n /**\n * 计算启用项的禁用\n * 启用返回true,不启用返回false\n *\n * @author lxm\n * @date 2022-09-20 00:09:57\n * @returns {*}\n */\n calcEnableCond(row) {\n const { enableCond } = this.editItem;\n const isNew = row.data.srfuf === 0 /* CREATE */;\n switch (enableCond) {\n case 0:\n return false;\n case 1:\n return isNew;\n case 2:\n return !isNew;\n default:\n return true;\n }\n }\n /**\n * 表格编辑项值规则校验\n * 如果表格编辑项不显示则不校验直接返回true\n *\n * @author lxm\n * @date 2022-09-01 22:09:29\n */\n async validate(row) {\n const editName = this.fieldName;\n if (ibiz.config.grid.editShowMode !== \"cell\" && row.editColStates[editName].required && isNilOrEmpty9(row.data[editName])) {\n row.errors[editName] = \"\\u8BF7\\u586B\\u5199\".concat(this.model.caption || \"\");\n return false;\n }\n if (this.rules.length && this.validator) {\n try {\n await this.validator.validate(row.data);\n } catch (error) {\n const { errors } = error;\n row.errors[editName] = errors[0].message;\n return false;\n }\n }\n row.errors[editName] = null;\n return true;\n }\n};\n\n// src/controller/control/grid/grid-column/grid-group-column/grid-group-column.controller.ts\nvar GridGroupColumnController = class extends GridColumnController {\n};\n\n// src/controller/control/list/list.service.ts\nvar ListService = class extends MDControlService {\n /**\n * 初始化属性映射\n *\n * @author lxm\n * @date 2022-08-31 18:08:37\n */\n initUIDataMap() {\n var _a;\n super.initUIDataMap();\n (_a = this.model.delistDataItems) == null ? void 0 : _a.forEach((item) => {\n const uiKey = item.id.toLowerCase();\n const deField = item.appDEFieldId;\n let mapField;\n if (deField) {\n const deFieldKey = deField.toLowerCase();\n mapField = new UIMapField(uiKey, deFieldKey, {\n isOriginField: true,\n dataType: item.dataType\n });\n } else {\n mapField = new UIMapField(uiKey, uiKey);\n }\n this.dataUIMap.set(uiKey, mapField);\n });\n }\n};\n\n// src/controller/control/list/list.controller.ts\nvar ListController = class extends MDControlController {\n initState() {\n super.initState();\n this.state.noSort = this.model.noSort === true;\n }\n async onCreated() {\n await super.onCreated();\n this.state.size = this.model.pagingSize || 20;\n this.service = new ListService(this.model);\n await this.service.init(this.context);\n }\n /**\n * 设置排序\n *\n * @author lxm\n * @date 2022-09-28 13:09:44\n * @param {string} key 排序字段\n * @param {string} order 排序顺序\n */\n setSort(key, order) {\n if (key && order) {\n super.setSort(key, order);\n } else {\n const { minorSortAppDEFieldId, minorSortDir } = this.model;\n if (minorSortAppDEFieldId && minorSortDir) {\n const fieldName = this.fieldIdNameMap.get(minorSortAppDEFieldId);\n this.state.sortQuery = \"\".concat(fieldName.toLowerCase(), \",\").concat(minorSortDir.toLowerCase());\n } else {\n this.state.sortQuery = \"\";\n }\n }\n }\n /**\n * 工具栏\n *\n * @author zk\n * @date 2023-08-02 06:08:34\n * @readonly\n * @type {(IToolbarController | undefined)}\n * @memberof ListController\n */\n get batchToolbarController() {\n const controller = this.view.getController(\n \"\".concat(this.model.name, \"_batchtoolbar\")\n );\n return controller;\n }\n /**\n * 工具栏\n *\n * @author zk\n * @date 2023-08-02 06:08:34\n * @readonly\n * @type {(IToolbarController | undefined)}\n * @memberof ListController\n */\n get quickToolbarController() {\n const controller = this.view.getController(\n \"\".concat(this.model.name, \"_quicktoolbar\")\n );\n return controller;\n }\n /**\n * 根据数据计算工具栏权限和状态\n *\n * @author zk\n * @date 2023-08-02 06:08:11\n * @param {IData[]} selection\n * @memberof ListController\n */\n setSelection(selection) {\n var _a, _b;\n super.setSelection(selection);\n const data = selection == null ? void 0 : selection[0];\n (_a = this.batchToolbarController) == null ? void 0 : _a.calcButtonState(\n data,\n this.model.appDataEntityId\n );\n (_b = this.quickToolbarController) == null ? void 0 : _b.calcButtonState(\n data,\n this.model.appDataEntityId\n );\n }\n /**\n * 加载更多\n * @author lxm\n * @date 2023-05-22 07:33:59\n * @return {*} {Promise<void>}\n */\n async loadMore() {\n if (this.state.total > this.state.items.length) {\n await this.load({ isLoadMore: true });\n }\n }\n async afterLoad(args, items) {\n await this.handleDataGroup();\n return items;\n }\n /**\n * 设置列表数据\n *\n * @author zk\n * @date 2023-05-26 02:05:46\n * @param {IData[]} items\n * @memberof ListController\n */\n setData(items) {\n this.state.items = items;\n }\n /**\n * 获取列表数据\n *\n * @author zk\n * @date 2023-05-26 02:05:35\n * @return {*} {IData[]}\n * @memberof ListController\n */\n getAllData() {\n return this.state.items;\n }\n /**\n * 处理数据分组\n *\n * @memberof DataViewControlController\n */\n async handleDataGroup() {\n const { enableGroup, groupMode } = this.model;\n if (enableGroup && groupMode) {\n if (groupMode === \"AUTO\") {\n this.handleAutoGroup();\n } else if (groupMode === \"CODELIST\") {\n await this.handleCodeListGroup();\n }\n }\n }\n /**\n * 处理自动分组\n *\n * @memberof DataViewControlController\n */\n handleAutoGroup() {\n const { groupAppDEFieldId } = this.model;\n if (groupAppDEFieldId) {\n const { items } = this.state;\n const childrenMap = /* @__PURE__ */ new Map();\n items.forEach((item) => {\n const children = childrenMap.get(item[groupAppDEFieldId]) || [];\n children.push(item);\n childrenMap.set(item[groupAppDEFieldId], children);\n });\n const groups = [];\n childrenMap.forEach((value, key) => {\n groups.push({\n caption: key,\n key,\n children: [...value]\n });\n });\n this.state.groups = groups;\n }\n }\n /**\n * 处理代码表分组\n *\n * @memberof DataViewControlController\n */\n async handleCodeListGroup() {\n const { groupAppDEFieldId, groupCodeListId } = this.model;\n if (groupAppDEFieldId && groupCodeListId) {\n const { items } = this.state;\n const groups = [];\n const app = ibiz.hub.getApp(this.context.srfappid);\n const codeList = await app.codeList.get(\n groupCodeListId,\n this.context,\n this.params\n );\n const keys = [];\n codeList.forEach((codeListItem) => {\n const value = items.filter(\n (item) => item[groupAppDEFieldId] === codeListItem.value\n );\n groups.push({\n caption: codeListItem.text,\n key: codeListItem.value,\n children: [...value]\n });\n keys.push(codeListItem.value);\n });\n const otherGroup = items.filter(\n (item) => keys.indexOf(item[groupAppDEFieldId]) === -1\n );\n if (otherGroup.length > 0) {\n groups.push({\n caption: \"\\u5176\\u4ED6\",\n key: \"\\u5176\\u4ED6\",\n children: [...otherGroup]\n });\n }\n this.state.groups = groups;\n }\n }\n};\n\n// src/controller/control/panel/panel/panel.controller.ts\nimport { recursiveIterate as recursiveIterate6, RuntimeError as RuntimeError53 } from \"@ibiz-template/core\";\nvar PanelController = class extends ControlController {\n constructor(model, context, params, ctx, container) {\n super(model, context, params, ctx);\n /**\n * 所有面板成员的控制器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: IPanelItemController }}\n */\n this.panelItems = {};\n /**\n * 所有面板成员的适配器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: IPanelItemProvider | IControlProvider}}\n */\n this.providers = {};\n this.container = container;\n }\n get _evt() {\n return this.evt;\n }\n /**\n * 面板数据\n *\n * @author lxm\n * @date 2023-02-10 07:21:09\n * @readonly\n * @memberof PanelController\n */\n get data() {\n return this.state.data;\n }\n initState() {\n super.initState();\n this.state.data = {};\n }\n setInputData(data) {\n this.inputData = data;\n }\n getData() {\n return [this.data];\n }\n async onCreated() {\n var _a;\n await super.onCreated();\n await this.initPanelItemControllers();\n if ((_a = this.scheduler) == null ? void 0 : _a.hasControlEventTrigger) {\n this._evt.on(\"onPanelItemEvent\", (event) => {\n this.scheduler.triggerControlEvent(\n event.panelItemName,\n event.panelItemEventName,\n event\n );\n });\n }\n }\n async onMounted() {\n this.load();\n }\n async onDestroyed() {\n var _a, _b;\n await super.onDestroyed();\n (_b = (_a = this.data).destroy) == null ? void 0 : _b.call(_a);\n Object.values(this.panelItems).forEach((item) => {\n item.destroy();\n });\n }\n /**\n * 初始化面板成员控制器\n *\n * @author lxm\n * @date 2022-08-24 21:08:48\n * @protected\n */\n async initPanelItemControllers(panelItems = this.model.rootPanelItems, panel = this, parent = void 0) {\n if (!panelItems) {\n return;\n }\n await Promise.all(\n panelItems.map(async (panelItem) => {\n var _a, _b;\n const panelItemProvider = await getPanelItemProvider(panelItem);\n if (!panelItemProvider) {\n return;\n }\n panel.providers[panelItem.id] = panelItemProvider;\n const panelItemController = await panelItemProvider.createController(\n panelItem,\n panel,\n parent\n );\n panel.panelItems[panelItem.id] = panelItemController;\n if (((_a = panelItem.panelItems) == null ? void 0 : _a.length) && !panelItemController.isDataContainer) {\n await this.initPanelItemControllers(\n panelItem.panelItems,\n panel,\n panelItemController\n );\n }\n if ((_b = panelItem.panelTabPages) == null ? void 0 : _b.length) {\n await this.initPanelItemControllers(\n panelItem.panelTabPages,\n panel,\n panelItemController\n );\n }\n })\n );\n }\n /**\n * 部件加载,获取数据,并执行一系列后续初始化逻辑\n *\n * @author lxm\n * @date 2023-02-10 01:46:24\n * @memberof PanelController\n */\n async load() {\n var _a, _b;\n const data = await this.prepareData();\n if (!data) {\n throw new RuntimeError53(\"\\u672A\\u83B7\\u53D6\\u5230\\u9762\\u677F\\u6570\\u636E\");\n }\n const panelData = this.convertData(data);\n (_b = (_a = this.data).destroy) == null ? void 0 : _b.call(_a);\n this.state.data = panelData;\n this.panelStateNotify(\"LOAD\" /* LOAD */);\n }\n /**\n * 根据获取模式准备原始数据\n *\n * @author lxm\n * @date 2023-02-10 02:04:39\n * @returns {*} {(Promise<IData | undefined>)}\n * @memberof PanelController\n */\n async prepareData() {\n let data;\n switch (this.model.dataMode) {\n case 1:\n if (this.inputData) {\n data = this.inputData;\n }\n break;\n default:\n data = this.inputData || {};\n }\n return data;\n }\n /**\n * 转换原始数据,映射面板属性\n *\n * @author lxm\n * @date 2023-02-10 02:10:41\n * @param {IData} data\n * @returns {*} {IData}\n * @memberof PanelController\n */\n convertData(data) {\n const fields = getAllPanelField(this.model);\n const fieldKeys = fields.map((item) => item.id);\n const panelData = new PanelData(fields, data);\n panelData._evt.on(\"change\", (key) => {\n if (fieldKeys.includes(key)) {\n this.dataChangeNotify([key]);\n }\n });\n return panelData;\n }\n /**\n * 通知所有面板成员面板操作过程中的数据变更\n *\n * @author lxm\n * @date 2022-09-20 18:09:40\n * @param {string[]} names\n */\n dataChangeNotify(names) {\n Object.values(this.panelItems).forEach((panelItem) => {\n panelItem.dataChangeNotify(names);\n });\n }\n /**\n * 面板状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n panelStateNotify(state) {\n Object.values(this.panelItems).forEach((panelItem) => {\n panelItem.panelStateNotify(state);\n });\n }\n /**\n * 设置面板数据的值\n *\n * @param {string} name 要设置的数据的属性名称\n * @param {unknown} value 要设置的值\n */\n async setDataValue(name, value) {\n if (Object.prototype.hasOwnProperty.call(this.state.data, name) && this.state.data[name] === value) {\n return;\n }\n this.state.data[name] = value;\n }\n initControlScheduler(logics = []) {\n const actualLogics = [...logics];\n recursiveIterate6(\n this.model,\n (item) => {\n if (item.controlLogics) {\n actualLogics.push(...item.controlLogics);\n }\n },\n { childrenFields: [\"rootPanelItems\", \"panelItems\", \"panelTabPages\"] }\n );\n super.initControlScheduler(actualLogics);\n }\n};\n\n// src/controller/control/panel/view-layout-panel/view-layout-panel.controller.ts\nvar ViewLayoutPanelController = class extends PanelController {\n async onCreated() {\n var _a;\n this.preprocessModel();\n await super.onCreated();\n if ((_a = this.scheduler) == null ? void 0 : _a.hasControlEventTrigger) {\n this.evt.on(\"onControlEvent\", (event) => {\n this.scheduler.triggerControlEvent(\n event.triggerControlName,\n event.triggerEventName,\n event.triggerEvent\n );\n });\n }\n }\n registerToCtx() {\n }\n /**\n * 预处理面板模型\n * @author lxm\n * @date 2023-06-27 06:57:57\n * @param {IPanelContainer} [container]\n */\n preprocessModel(container) {\n var _a;\n const getNewArr = (items) => {\n const children = [];\n items.forEach((item) => {\n if (item.itemType === \"CONTAINER\" && item.predefinedType === \"PANELPART\") {\n children.push(...item.panelItems || []);\n } else {\n children.push(item);\n }\n });\n children.forEach((item) => {\n if (item.itemType === \"CONTAINER\") {\n this.preprocessModel(item);\n }\n });\n return children;\n };\n if (!container) {\n if ((_a = this.model.rootPanelItems) == null ? void 0 : _a.length) {\n this.model.rootPanelItems = getNewArr(this.model.rootPanelItems || []);\n }\n } else {\n container.panelItems = getNewArr(container.panelItems || []);\n }\n }\n};\n\n// src/controller/control/panel/panel/panel-item.controller.ts\nimport { isOverlap as isOverlap3 } from \"@ibiz-template/core\";\n\n// src/controller/control/panel/panel/panel-item.state.ts\nvar PanelItemState = class {\n constructor(parent) {\n this.parent = parent;\n this.disabled = false;\n this.layout = {\n width: \"\",\n height: \"\",\n extraStyle: {},\n extraClass: [],\n contentStyle: {}\n };\n this.class = {\n container: [],\n containerDyna: [],\n label: [],\n labelDyna: []\n };\n /**\n * 是否必填\n *\n * @author chitanda\n * @date 2023-01-04 10:01:27\n * @type {boolean}\n */\n this.required = false;\n let $visible = true;\n Object.defineProperty(this, \"visible\", {\n enumerable: true,\n configurable: true,\n get() {\n var _a;\n return ((_a = this.parent) == null ? void 0 : _a.visible) !== false && $visible;\n },\n set(val) {\n $visible = val;\n return true;\n }\n });\n let $keepAlive;\n Object.defineProperty(this, \"keepAlive\", {\n enumerable: true,\n configurable: true,\n get() {\n if ($keepAlive !== void 0) {\n return $keepAlive;\n }\n if (this.parent) {\n return this.parent.keepAlive;\n }\n return false;\n },\n set(val) {\n $keepAlive = val;\n return true;\n }\n });\n }\n};\n\n// src/controller/control/panel/panel/panel-item.controller.ts\nvar PanelItemController = class {\n /**\n * Creates an instance of PanelItemController.\n * @author lxm\n * @date 2023-04-27 06:37:12\n * @param {T} model 面板成员模型\n * @param {IPanelController} panel 面板控制器\n * @param {IPanelItemController} [parent] 父容器控制器\n */\n constructor(model, panel, parent) {\n this.model = model;\n this.panel = panel;\n this.parent = parent;\n /**\n * 动态逻辑结果\n * @author lxm\n * @date 2023-09-21 03:36:37\n * @protected\n */\n this.dynaLogicResult = {\n visible: void 0,\n disabled: void 0,\n required: void 0\n };\n this.state = this.createState();\n }\n /**\n * 数据父容器\n * @author lxm\n * @date 2023-07-15 11:35:18\n * @readonly\n * @type {(IPanelController | IPanelDataContainerController)}\n */\n get dataParent() {\n return this.findDataParent(this);\n }\n /**\n * 父容器数据对象数据\n * @author lxm\n * @date 2023-07-15 01:33:58\n * @readonly\n * @type {IData}\n */\n get data() {\n return this.dataParent.data;\n }\n /**\n * 获取容器类名集合\n * @author lxm\n * @date 2023-08-02 06:06:12\n * @readonly\n * @type {string[]}\n */\n get containerClass() {\n return [...this.state.class.container, ...this.state.class.containerDyna];\n }\n /**\n * 获取标题类名集合\n * @author lxm\n * @date 2023-08-02 06:16:48\n * @readonly\n * @type {string[]}\n */\n get labelClass() {\n return [...this.state.class.label, ...this.state.class.labelDyna];\n }\n /**\n * 子类不可覆盖或重写此方法,在 init 时需要重写的使用 onInit 方法。\n *\n * @author lxm\n * @date 2022-08-18 22:08:30\n * @returns {*} {Promise<void>}\n */\n async init() {\n await this.onInit();\n }\n async onInit() {\n const { layoutPos, sysCss, labelSysCss } = this.model;\n if (layoutPos) {\n const { width, height } = calcLayoutHeightWidth(layoutPos);\n this.state.layout.width = \"\".concat(width);\n this.state.layout.height = \"\".concat(height);\n }\n if (sysCss == null ? void 0 : sysCss.cssName) {\n this.state.class.container.push(sysCss.cssName);\n }\n if (labelSysCss == null ? void 0 : labelSysCss.cssName) {\n this.state.class.label.push(labelSysCss.cssName);\n }\n }\n destroy() {\n }\n /**\n * 创建面板状态对象\n *\n * @author chitanda\n * @date 2023-01-04 10:01:00\n * @protected\n * @return {*} {PanelItemState}\n */\n createState() {\n var _a;\n return new PanelItemState((_a = this.parent) == null ? void 0 : _a.state);\n }\n /**\n * 面板数据变更通知(由面板控制器调用)\n *\n * @author lxm\n * @date 2022-09-20 18:09:56\n * @param {string[]} names\n */\n async dataChangeNotify(names) {\n this.calcDynamicLogic(names);\n this.calcItemDisabled(this.data);\n this.calcItemVisible(this.data);\n this.calcItemRequired(this.data);\n this.calcDynaClass(this.data);\n }\n /**\n * 面板状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n async panelStateNotify(_state) {\n this.calcDynamicLogic([], true);\n this.calcItemDisabled(this.data);\n this.calcItemVisible(this.data);\n this.calcItemRequired(this.data);\n this.calcDynaClass(this.data);\n }\n /**\n * 计算项的禁用状态\n * @author lxm\n * @date 2023-06-26 06:19:00\n * @param {IData} data\n */\n calcItemDisabled(data) {\n let { disabled } = this.dynaLogicResult;\n if (disabled !== true && this.panel.scheduler) {\n const itemEnable = this.panel.scheduler.triggerItemEnable(\n this.model.id,\n {\n data: [data]\n }\n );\n if (itemEnable !== void 0) {\n disabled = !itemEnable;\n }\n }\n if (disabled !== void 0) {\n this.state.disabled = disabled;\n }\n }\n /**\n * 计算项的显示状态\n * @author lxm\n * @date 2023-06-26 06:19:00\n * @param {IData} data\n */\n calcItemVisible(data) {\n let { visible } = this.dynaLogicResult;\n if (visible !== false && this.panel.scheduler) {\n const itemVIsible = this.panel.scheduler.triggerItemVisible(\n this.model.id,\n {\n data: [data]\n }\n );\n if (itemVIsible !== void 0) {\n visible = itemVIsible;\n }\n }\n if (visible !== void 0) {\n this.state.visible = visible;\n }\n }\n /**\n * 计算项的必填状态\n * @author lxm\n * @date 2023-06-26 06:19:00\n * @param {IData} data\n */\n calcItemRequired(data) {\n let { required } = this.dynaLogicResult;\n if (required !== true && this.panel.scheduler) {\n const itemAllowEmpty = this.panel.scheduler.triggerItemBlank(\n this.model.id,\n {\n data: [data]\n }\n );\n if (itemAllowEmpty !== void 0) {\n required = !itemAllowEmpty;\n }\n }\n if (required !== void 0) {\n this.state.required = required;\n }\n }\n /**\n * 计算动态逻辑\n *\n * @author lxm\n * @date 2023-02-13 09:42:07\n * @protected\n * @param {string[]} names 变更的属性集合\n * @param {boolean} [mustCalc=false] 是否强制计算一遍动态逻辑\n * @returns {*} {void}\n * @memberof PanelItemController\n */\n calcDynamicLogic(names, mustCalc = false) {\n var _a;\n if (this.parent && !this.parent.state.visible) {\n return;\n }\n (_a = this.model.panelItemGroupLogics) == null ? void 0 : _a.forEach((logic) => {\n const relatedNames = logic.relatedItemNames || [];\n if (mustCalc || isOverlap3(relatedNames, names)) {\n try {\n const ok = verifyPanelGroupLogic(this.data, logic);\n switch (logic.logicCat) {\n case \"ITEMBLANK\":\n this.dynaLogicResult.required = !ok;\n break;\n case \"ITEMENABLE\":\n this.dynaLogicResult.disabled = !ok;\n break;\n case \"PANELVISIBLE\":\n this.dynaLogicResult.visible = ok;\n break;\n default:\n }\n } catch (error) {\n ibiz.log.error(error);\n }\n }\n });\n }\n /**\n * 找到指定成员的数据父容器\n * @author lxm\n * @date 2023-07-15 11:26:49\n * @param {IPanelItemController} panel\n * @return {*} {(IPanelController | IPanelDataContainerController)}\n */\n findDataParent(panel) {\n const { parent } = panel;\n if (!parent) {\n return panel.panel;\n }\n if (parent.isDataContainer) {\n return parent;\n }\n return this.findDataParent(parent);\n }\n /**\n * 计算动态样式表\n * @author lxm\n * @date 2023-08-02 06:15:08\n * @param {IData} data\n */\n calcDynaClass(data) {\n if (this.model.dynaClass) {\n const dynaClass = calcDynaClass(this.model.dynaClass, data);\n if (dynaClass.length) {\n this.state.class.containerDyna = dynaClass;\n }\n }\n if (this.model.labelDynaClass) {\n const dynaClass = calcDynaClass(this.model.labelDynaClass, data);\n if (dynaClass.length) {\n this.state.class.labelDyna = dynaClass;\n }\n }\n }\n /**\n * 点击事件\n * @author lxm\n * @date 2023-10-11 05:03:26\n */\n onClick() {\n this.panel.evt.emit(\"onPanelItemEvent\", {\n panelItemName: this.model.id,\n panelItemEventName: \"onClick\" /* CLICK */\n });\n }\n};\n\n// src/controller/control/pickup-view-panel/pickup-view-panel.controller.ts\nvar PickupViewPanelController = class extends ControlController {\n /**\n * 生命周期-创建完成\n *\n * @protected\n * @return {*} {Promise<void>}\n * @memberof PickupViewPanelController\n */\n async onCreated() {\n await super.onCreated();\n this.mountCounter.enroll(this.model.embeddedAppDEViewId);\n }\n updateContextParams(opts) {\n super.updateContextParams(opts);\n this.initNavParam();\n }\n /**\n * 初始化导航参数\n *\n * @memberof PickupViewPanelController\n */\n initNavParam() {\n const { navigateContexts, navigateParams } = this.model;\n const context = this.context.clone();\n const params = { ...this.params };\n if (navigateContexts) {\n Object.assign(\n context,\n convertNavData(navigateContexts, this.params, this.context)\n );\n }\n if (navigateParams) {\n Object.assign(\n params,\n convertNavData(navigateParams, this.params, this.context)\n );\n }\n this.state.context = context;\n this.state.params = params;\n }\n /**\n * 设置嵌入视图\n *\n * @param {IViewController} view\n * @memberof PickupViewPanelController\n */\n setEmbedView(view) {\n this.embedView = view;\n if (this.embedView.state.isMounted) {\n this.mountCounter.attend(this.model.embeddedAppDEViewId);\n } else {\n this.embedView.evt.on(\"onMounted\", () => {\n this.mountCounter.attend(this.model.embeddedAppDEViewId);\n });\n }\n this.embedView.evt.on(\"onSelectionChange\", (event) => {\n this.evt.emit(\"onSelectionChange\", event);\n });\n this.embedView.evt.on(\"onDataActive\", (event) => {\n this.evt.emit(\"onDataActive\", {\n data: event.data\n });\n });\n }\n /**\n * 获取选中数据\n *\n * @author zk\n * @date 2023-05-26 03:05:53\n * @return {*} {Promise<IData[]>}\n * @memberof PickupViewPanelController\n */\n async getSelectedData() {\n const items = await this.embedView.call(\"GetData\" /* GET_DATA */);\n return items;\n }\n /**\n * 获取全部数据\n *\n * @author zk\n * @date 2023-05-26 03:05:49\n * @return {*} {Promise<IData[]>}\n * @memberof PickupViewPanelController\n */\n async getAllData() {\n const items = await this.embedView.call(\"GetAllData\" /* GET_ALL_DATA */);\n return items;\n }\n};\n\n// src/controller/control/search-bar/search-bar.controller.ts\nimport { recursiveIterate as recursiveIterate7 } from \"@ibiz-template/core\";\nimport { isNil as isNil23 } from \"ramda\";\n\n// src/controller/control/search-bar/search-bar-filter.controller.ts\nimport { RuntimeModelError as RuntimeModelError58 } from \"@ibiz-template/core\";\nvar SearchBarFilterController = class {\n constructor(model, searchBar) {\n this.model = model;\n this.searchBar = searchBar;\n var _a;\n let field;\n if (model.appDEFieldId) {\n field = findFieldById(searchBar.appDataEntity, model.appDEFieldId);\n }\n this.fieldName = field ? field.codeName.toLowerCase() : model.id;\n this.label = model.caption || (field == null ? void 0 : field.logicName) || model.id;\n this.valueOP = (_a = model.defsearchMode) == null ? void 0 : _a.valueOP;\n }\n get context() {\n return this.searchBar.context;\n }\n get params() {\n return this.searchBar.params;\n }\n /**\n * 初始化\n * @author lxm\n * @date 2023-10-12 05:47:19\n * @return {*} {Promise<void>}\n */\n async init() {\n if (!this.model.editor) {\n throw new RuntimeModelError58(this.model, \"\\u7F3A\\u5C11\\u7F16\\u8F91\\u5668\\u6A21\\u578B\");\n }\n this.editorProvider = await getEditorProvider(this.model.editor);\n if (this.editorProvider) {\n this.editor = await this.editorProvider.createController(\n this.model.editor,\n this\n );\n }\n }\n};\n\n// src/controller/control/search-bar/search-bar.controller.ts\nvar SearchBarController = class extends ControlController {\n constructor() {\n super(...arguments);\n /**\n * 快速搜索占位符\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-08-11 14:13:10\n */\n this.placeHolder = \"\";\n /**\n * 过滤项控制器集合\n * @author lxm\n * @date 2023-10-13 03:31:26\n * @type {SearchBarFilterController[]}\n */\n this.filterControllers = [];\n }\n initState() {\n super.initState();\n this.state.query = \"\";\n this.state.selectedGroupItem = null;\n this.state.visible = !!(this.model.enableQuickSearch || this.model.enableGroup || this.model.enableFilter);\n if (this.model.enableFilter) {\n this.resetFilter();\n }\n }\n async onCreated() {\n await super.onCreated();\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n this.model.appDataEntityId,\n this.context.srfappid\n );\n if (appDataEntity) {\n this.appDataEntity = appDataEntity;\n this.calcQuickSearchPlaceholder();\n }\n await this.initSearchBarFilters();\n }\n /**\n * 计算快速搜索的占位\n * @author lxm\n * @date 2023-10-16 03:49:47\n * @protected\n * @return {*} {void}\n */\n calcQuickSearchPlaceholder() {\n if (!this.appDataEntity) {\n return;\n }\n const searchFields = this.appDataEntity.appDEFields.filter((field) => {\n return field.enableQuickSearch;\n });\n if (searchFields.length) {\n const placeHolders = [];\n searchFields.forEach((searchField) => {\n if (searchField.lnlanguageRes && searchField.lnlanguageRes.lanResTag) {\n placeHolders.push(\n ibiz.i18n.t(\n searchField.lnlanguageRes.lanResTag,\n searchField.logicName\n )\n );\n } else if (searchField.logicName) {\n placeHolders.push(searchField.logicName);\n }\n });\n if (placeHolders.length > 0) {\n this.placeHolder = placeHolders.join(\"\\u3001\");\n }\n }\n }\n /**\n * 处理输入\n * @param {string} val\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-06-01 18:08:07\n */\n handleInput(val) {\n this.state.query = val;\n }\n /**\n * 处理搜索\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-06-01 18:08:18\n */\n onSearch() {\n this.evt.emit(\"onSearch\", void 0);\n }\n /**\n * 获取搜索栏的过滤参数(包括快速搜索,快速分组和过滤器的参数)\n * @author lxm\n * @date 2023-10-16 03:54:07\n * @return {*} {IParams}\n */\n getFilterParams() {\n var _a;\n const params = {};\n if (this.state.query) {\n params.query = this.state.query;\n }\n if ((_a = this.state.selectedGroupItem) == null ? void 0 : _a.data) {\n const navParams = ScriptFactory.execSingleLine(\n this.state.selectedGroupItem.data\n );\n const addParams = convertNavData(navParams, this.params, this.context);\n Object.assign(params, addParams);\n }\n const filters = this.calcFilters();\n if (filters) {\n params.filters = filters;\n }\n return params;\n }\n /**\n * 重置过滤器\n * @author lxm\n * @date 2023-10-16 03:52:44\n */\n resetFilter() {\n this.state.filterNodes = [\n {\n leaf: false,\n logicType: \"AND\",\n children: [{ leaf: true, field: null, valueOP: null, value: null }]\n }\n ];\n }\n /**\n * 初始化过滤项控制器\n * @author lxm\n * @date 2023-10-13 03:33:17\n * @protected\n * @return {*} {Promise<void>}\n */\n async initSearchBarFilters() {\n var _a;\n if ((_a = this.model.searchBarFilters) == null ? void 0 : _a.length) {\n this.model.searchBarFilters.forEach((item) => {\n const filterController = new SearchBarFilterController(item, this);\n this.filterControllers.push(filterController);\n });\n await Promise.all(\n this.filterControllers.map((controller) => controller.init())\n );\n }\n }\n /**\n * 计算过滤项参数\n * @author lxm\n * @date 2023-10-13 05:53:35\n * @return {*} {IData}\n */\n calcFilters() {\n if (!this.model.enableFilter) {\n return;\n }\n let hasFilter = false;\n let hasError = false;\n recursiveIterate7(this.state.filterNodes[0], (node) => {\n if (node.leaf) {\n if (node.field && node.valueOP && !isNil23(node.value)) {\n hasFilter = true;\n } else {\n hasError = true;\n }\n }\n });\n if (hasFilter && !hasError) {\n const filter = this.formatFilters(this.state.filterNodes[0]);\n return filter;\n }\n }\n /**\n * 格式化过滤项\n * @author lxm\n * @date 2023-10-16 03:45:41\n * @param {IFilterNode} node\n * @return {*} {IData}\n */\n formatFilters(node) {\n if (!node.leaf) {\n return {\n [\"$\".concat(node.logicType.toLowerCase())]: node.children.map(\n (item) => this.formatFilters(item)\n )\n };\n }\n return {\n [\"\".concat(node.field)]: {\n [\"$\".concat(node.valueOP.toLowerCase())]: node.value\n }\n };\n }\n};\n\n// src/controller/control/tab-exp-panel/tab-exp-panel.controller.ts\nvar TabExpPanelController = class extends ControlController {\n constructor() {\n super(...arguments);\n /**\n * 是否显示文本\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-09-20 10:36:35\n */\n this.isShowCaption = true;\n /**\n * 是否显示图标\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-09-20 10:36:46\n */\n this.isShowIcon = false;\n }\n /**\n * 是否缓存\n *\n * @author zk\n * @date 2023-09-27 09:09:59\n * @readonly\n * @type {boolean}\n * @memberof ExpBarControlController\n */\n get isCache() {\n if (this.controlParams.expcache === \"CACHE\") {\n return true;\n }\n if (this.controlParams.expcache === \"NO_CACHE\") {\n return false;\n }\n return ibiz.config.view.expCacheMode.includes(this.model.controlType);\n }\n /**\n * 当前路由视图的层级\n *\n * @author zk\n * @date 2023-07-11 10:07:20\n * @readonly\n * @type {(number | undefined)}\n * @memberof ExpBarControlController\n */\n get routeDepth() {\n return this.view.modal.routeDepth;\n }\n /**\n * 初始化state的属性\n *\n * @protected\n * @memberof TabExpPanelController\n */\n initState() {\n super.initState();\n this.state.tabPages = [];\n this.state.activeName = \"\";\n }\n /**\n * 创建完成\n *\n * @protected\n * @return {*} {Promise<void>}\n * @memberof TabExpPanelController\n */\n async onCreated() {\n await super.onCreated();\n this.layoutPanel = this.view.layoutPanel;\n this.initTabPages();\n this.initIconCaption();\n }\n /**\n * 初始化分页数据\n *\n * @memberof TabExpPanelController\n */\n initTabPages() {\n const viewPanel = this.model.controls;\n const tabPages = [];\n viewPanel.forEach((panel) => {\n tabPages.push({\n caption: panel.caption,\n tabTag: panel.id,\n class: panel.sysCss ? [panel.sysCss.cssName] : [],\n sysImage: panel.sysImage\n });\n });\n this.state.tabPages = tabPages;\n if (tabPages.length > 0) {\n this.initDefaultPage();\n }\n }\n /**\n * 初始化图标和文本显示\n *\n * @memberof TabExpPanelController\n */\n initIconCaption() {\n if (this.params.showmode) {\n switch (this.params.showmode) {\n case \"ICONANDSHORTWORD\":\n this.isShowIcon = true;\n this.isShowCaption = true;\n break;\n case \"ICON\":\n this.isShowIcon = true;\n this.isShowCaption = false;\n break;\n case \"SHORTWORD\":\n this.isShowIcon = false;\n this.isShowCaption = true;\n break;\n default:\n break;\n }\n }\n }\n /**\n * 初始化默认分页\n *\n * @author zk\n * @date 2023-06-19 09:06:33\n * @memberof TabExpPanelController\n */\n initDefaultPage() {\n if (this.state.defaultTabName) {\n const activeTab = this.state.tabPages.find(\n (item) => item.tabTag === this.state.defaultTabName\n );\n if (activeTab) {\n this.state.activeName = activeTab.tabTag;\n this.changeToTab(\n this.activeTabViewPanelModel,\n // 路由模式下并且有子路由\n this.routeDepth !== void 0 && hasSubRoute(this.routeDepth)\n );\n return;\n }\n }\n this.state.activeName = this.state.tabPages[0].tabTag;\n this.handleTabChange();\n }\n /**\n * 切换分页\n * @author lxm\n * @date 2023-08-10 05:37:26\n * @protected\n * @param {IDETabViewPanel} [tab=this.activeTabViewPanelModel!]\n */\n changeToTab(tab = this.activeTabViewPanelModel, isRoutePushed = false) {\n const navViewMsg = this.getNavViewMsg(tab);\n if (isRoutePushed === true) {\n navViewMsg.isRoutePushed = true;\n }\n this.evt.emit(\"onNavViewChange\", { navViewMsg });\n }\n /**\n * 当前激活tab模型\n *\n * @author zk\n * @date 2023-06-29 03:06:56\n * @readonly\n * @type {IDETabViewPanel}\n * @memberof TabExpPanelController\n */\n get activeTabViewPanelModel() {\n const { activeName } = this.state;\n const viewPanel = this.model.controls.find((tab) => tab.id === activeName);\n return viewPanel;\n }\n /**\n * 处理分页改变\n *\n * @memberof TabExpPanelController\n */\n async handleTabChange() {\n if (this.activeTabViewPanelModel) {\n this.changeToTab();\n }\n }\n /**\n * 准备参数\n *\n * @param {IDETabViewPanel} tabViewPanel\n * @memberof TabExpPanelController\n */\n prepareParams(tabViewPanel) {\n const {\n navDER,\n navFilter,\n navigateContexts,\n navigateParams,\n appDataEntityId\n } = tabViewPanel;\n const model = {\n deName: calcDeCodeNameById(appDataEntityId),\n navFilter,\n pickupDEFName: navDER == null ? void 0 : navDER.pickupDEFName,\n navContexts: navigateContexts,\n navParams: navigateParams\n };\n const originParams = {\n context: this.context,\n params: this.params,\n data: {}\n };\n const { resultContext, resultParams } = calcNavParams(model, originParams);\n const context = Object.assign(this.context.clone(), resultContext, {\n currentSrfNav: this.state.activeName\n });\n const params = { ...this.params, ...resultParams };\n return { context, params };\n }\n /**\n *\n *\n * @author zk\n * @date 2023-06-29 03:06:41\n * @param {IDETabViewPanel} tabViewPanel\n * @return {*} {Promise<INavViewMsg>}\n * @memberof TabExpPanelController\n */\n getNavViewMsg(tabViewPanel) {\n const { context, params } = this.prepareParams(tabViewPanel);\n return {\n key: tabViewPanel.codeName.toLowerCase(),\n context,\n params,\n viewId: tabViewPanel.embeddedAppDEViewId,\n isCache: this.isCache\n };\n }\n};\n\n// src/controller/control/tree/tree.controller.ts\nimport { recursiveIterate as recursiveIterate8 } from \"@ibiz-template/core\";\n\n// src/controller/control/tree/tree.service.ts\nimport { ModelError as ModelError29 } from \"@ibiz-template/core\";\nvar TreeService = class extends MDControlService {\n /**\n * 获取子节点数据\n *\n * @param {ITreeNodeData} [parentNodeData] 父节点数据\n * @param {boolean} [hasQuery=false] 是否搜索\n * @returns {*}\n * @memberof TreeService\n */\n async fetchChildNodes(parentNodeData, opts) {\n const { hasQuery } = opts;\n let childrenNodes = [];\n if (!parentNodeData) {\n const rootNode = getRootNode(this.model);\n childrenNodes = await this.fetchNodeDatasByType(\n rootNode,\n void 0,\n void 0,\n opts\n );\n } else {\n const childNodeRSs = getChildNodeRSs(this.model, {\n parentId: parentNodeData == null ? void 0 : parentNodeData.nodeId,\n hasQuery\n });\n if (childNodeRSs.length === 0) {\n return;\n }\n const results = await handleAllSettled(\n childNodeRSs.map(async (childNodeRS) => {\n const childNode = getTreeNode(\n this.model,\n childNodeRS.childDETreeNodeId\n );\n return this.fetchNodeDatasByType(\n childNode,\n childNodeRS,\n parentNodeData,\n opts\n );\n }),\n false\n );\n results.forEach((result) => {\n childrenNodes.push(...result);\n });\n }\n return childrenNodes;\n }\n /**\n * 通过节点类型加载节点数据\n * @author lxm\n * @date 2023-08-09 03:22:47\n * @protected\n * @param {IDETreeNode} nodeModel 节点模型\n * @param {(IDETreeNodeRS | undefined)} nodeRS 与上层节点的节点关系\n * @param {(ITreeNodeData | undefined)} parentNodeData 上层节点数据\n * @param {TreeFetchOpts} opts 额外参数\n * @return {*} {Promise<ITreeNodeData[]>}\n */\n async fetchNodeDatasByType(nodeModel, nodeRS, parentNodeData, opts) {\n const leaf = getChildNodeRSs(this.model, {\n parentId: nodeModel.id,\n hasQuery: opts.hasQuery\n }).length === 0;\n const tempOpts = { ...opts, leaf };\n let result = [];\n switch (nodeModel.treeNodeType) {\n case \"STATIC\":\n {\n const nodeData = await this.getStaticNodeData(\n nodeModel,\n nodeRS,\n parentNodeData,\n tempOpts\n );\n result = [nodeData];\n }\n break;\n case \"DE\":\n result = await this.getDENodeDatas(\n nodeModel,\n nodeRS,\n parentNodeData,\n tempOpts\n );\n break;\n case \"CODELIST\":\n result = await this.getCodeListNodeDatas(\n nodeModel,\n nodeRS,\n parentNodeData,\n tempOpts\n );\n break;\n default:\n throw new ModelError29(\n nodeModel,\n \"\".concat(nodeModel.treeNodeType, \"\\u8282\\u70B9\\u7C7B\\u578B\\u672A\\u652F\\u6301\")\n );\n }\n const { expandFirstOnly, expanded, rootNode } = nodeModel;\n const isExpandedRoot = rootNode && !this.model.rootVisible;\n if (!leaf) {\n await Promise.all(\n result.map(async (childNode, index) => {\n var _a;\n if (expanded && // 全展开合只展开首节点expanded都为true\n (!expandFirstOnly || expandFirstOnly && index === 0) || ((_a = opts.defaultExpandedKeys) == null ? void 0 : _a.length) && opts.defaultExpandedKeys.includes(childNode.id) || // 外部回显给的默认展开节点集合有的展开\n isExpandedRoot) {\n const subChildrenNodes = await this.fetchChildNodes(\n childNode,\n opts\n );\n childNode.children = subChildrenNodes;\n }\n })\n );\n }\n return result;\n }\n /**\n * 获取静态节点数据\n *\n * @protected\n * @param {TreeStaticNodeModel} nodeModel\n * @param {boolean} [hasQuery=false]\n * @returns {*}\n * @memberof TreeService\n */\n async getStaticNodeData(nodeModel, nodeRS, parentNodeData, opts) {\n const nodeData = new TreeStaticNodeData(\n nodeModel,\n parentNodeData,\n { parentValueLevel: nodeRS == null ? void 0 : nodeRS.parentValueLevel, leaf: !!opts.leaf }\n );\n return nodeData;\n }\n /**\n * 获取节点关系过滤的上下文和视图参数\n *\n * @param {TreeNodeRSModel} nodeRS 节点关系模型\n * @param {(ITreeNodeData | undefined)} parentNodeData 父节点数据\n * @returns {*} {(IParams | undefined)}\n * @memberof TreeService\n */\n getNodeRSFilterParams(nodeRS, parentNodeData, opts) {\n const {\n parentValueLevel,\n navigateContexts: navContexts,\n navigateParams: navParams,\n parentFilter: navFilter,\n parentDER1N\n } = nodeRS;\n const pickupDEFName = parentDER1N == null ? void 0 : parentDER1N.pickupDEFName;\n const params = { ...opts.params };\n const context = {\n ...opts.context,\n ...(parentNodeData == null ? void 0 : parentNodeData.context) || {}\n };\n let data = {};\n let parentData;\n if (parentNodeData) {\n parentData = parentNodeData;\n for (let index = 1; index < parentValueLevel; index++) {\n parentData = parentData == null ? void 0 : parentData.parent;\n }\n }\n let derValue;\n let deName;\n if (parentData) {\n data = parentData.deData || {};\n const parentNodeModel = getTreeNode(this.model, parentData.nodeId);\n if (parentNodeModel.appDataEntityId) {\n deName = calcDeCodeNameById(parentNodeModel.appDataEntityId);\n }\n derValue = parentData.value;\n }\n const { resultContext, resultParams } = calcNavParams(\n {\n deName,\n navFilter: navFilter ? \"n_\".concat(navFilter, \"_eq\") : void 0,\n pickupDEFName,\n navParams,\n navContexts\n },\n { derValue, context, params, data }\n );\n Object.assign(context, resultContext);\n Object.assign(params, resultParams);\n return {\n context,\n params,\n navContext: resultContext,\n navParams: resultParams\n };\n }\n /**\n * 获取实体数据集数据\n *\n * @protected\n * @param {TreeNodeRSModel} nodeRS\n * @param {TreeFetchOpts} opts\n * @returns {*}\n * @memberof TreeService\n */\n async getDENodeDatas(nodeModel, nodeRS, parentNodeData, opts) {\n const { appDEDataSetId, appDataEntityId } = nodeModel;\n const { context, params, navContext, navParams } = nodeRS ? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts) : {\n context: opts.context,\n params: opts.params,\n navContext: {},\n navParams: {}\n };\n params.size = nodeModel.maxSize || 1e3;\n if (nodeModel.sortAppDEFieldId) {\n Object.assign(params, {\n sort: \"\".concat(nodeModel.sortAppDEFieldId.toLowerCase(), \",\").concat(nodeModel.sortDir ? nodeModel.sortDir.toLowerCase() : \"asc\")\n });\n }\n const response = await this.app.deService.exec(\n appDataEntityId,\n appDEDataSetId,\n context,\n params\n );\n if (response.data.length) {\n const nodeDatas = response.data.map((item) => {\n return new TreeDataSetNodeData(nodeModel, parentNodeData, {\n data: item,\n leaf: !!opts.leaf,\n navContext,\n navParams\n });\n });\n return nodeDatas;\n }\n return [];\n }\n /**\n * 获取代码表节点数据\n *\n * @protected\n * @param {TreeCodeListNodeModel} _nodeModel\n * @param {TreeFetchOpts} _opts\n * @memberof TreeService\n */\n async getCodeListNodeDatas(nodeModel, nodeRS, parentNodeData, opts) {\n const { context, params, navContext, navParams } = nodeRS ? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts) : {\n context: opts.context,\n params: opts.params,\n navContext: {},\n navParams: {}\n };\n const items = await this.app.codeList.get(\n nodeModel.codeListId,\n context,\n params\n );\n if (items.length) {\n const nodeDatas = items.map((item) => {\n return new TreeCodeListNodeData(nodeModel, parentNodeData, {\n data: item,\n leaf: !!opts.leaf,\n navContext,\n navParams\n });\n });\n return nodeDatas;\n }\n return [];\n }\n};\n\n// src/controller/control/tree/tree.controller.ts\nvar TreeController = class extends MDControlController {\n constructor() {\n super(...arguments);\n /**\n * 上下文菜单控制器\n * @author lxm\n * @date 2023-08-21 10:56:24\n * @type {{ [p: string]: ContextMenuController }}\n */\n this.contextMenus = {};\n }\n initState() {\n super.initState();\n this.state.defaultExpandedKeys = [];\n this.state.expandedKeys = [];\n this.state.navigational = false;\n this.state.size = 0;\n }\n async onCreated() {\n await super.onCreated();\n this.state.expandedKeys = [...this.state.defaultExpandedKeys];\n this.service = new TreeService(this.model);\n await this.service.init(this.context);\n this.model.detreeNodes.forEach((node) => {\n var _a, _b;\n if ((_b = (_a = node.decontextMenu) == null ? void 0 : _a.detoolbarItems) == null ? void 0 : _b.length) {\n this.contextMenus[node.decontextMenu.id] = new ContextMenuController(\n node.decontextMenu,\n this.context,\n this.params,\n this.ctx\n );\n }\n });\n await Promise.all(\n Object.values(this.contextMenus).map((menu) => menu.created())\n );\n }\n /**\n * 树部件加载,从根节点开始重新加载\n *\n * @author lxm\n * @date 2022-08-19 14:08:50\n */\n async load(args = {}) {\n const isInitialLoad = args.isInitialLoad === true;\n if (isInitialLoad) {\n await this.startLoading();\n }\n let nodes;\n try {\n nodes = await this.loadNodes();\n } finally {\n if (isInitialLoad) {\n await this.endLoading();\n }\n }\n await this.afterLoad(args, nodes);\n this.state.isLoaded = true;\n await this.evt.emit(\"onLoadSuccess\", {\n isInitialLoad\n });\n return nodes;\n }\n /**\n * 加载子节点数据\n *\n * @param {(ITreeNodeData | undefined)} parentNode\n * @returns {*}\n * @memberof TreeController\n */\n async loadNodes(parentNode) {\n const params = await this.getFetchParams();\n const hasQuery = !!params.query;\n this.state.isLoading = true;\n let nodes;\n try {\n nodes = await this.service.fetchChildNodes(parentNode, {\n context: this.context.clone(),\n params,\n hasQuery,\n defaultExpandedKeys: this.state.expandedKeys\n }) || [];\n } finally {\n this.state.isLoading = false;\n }\n if (parentNode) {\n parentNode.children = nodes;\n } else {\n this.state.rootNodes = nodes;\n }\n this.state.items = [];\n recursiveIterate8(\n { children: this.state.rootNodes },\n (node) => {\n this.state.items.push(node);\n }\n );\n this.state.expandedKeys = this.calcExpandedKeys(nodes);\n return nodes;\n }\n /**\n * 树节点点击事件\n *\n * @param {ITreeNodeData} nodeData\n * @returns {*} {Promise<void>}\n * @memberof TreeController\n */\n async onTreeNodeClick(nodeData) {\n if (this.state.navigational) {\n const nodeModel = this.getNodeModel(nodeData.nodeId);\n if (!(nodeModel == null ? void 0 : nodeModel.navAppViewId)) {\n return;\n }\n }\n if (this.state.singleSelect) {\n const { selectedData } = this.state;\n const filterArr = selectedData.filter((item) => item.id !== nodeData.id);\n if (filterArr.length === selectedData.length) {\n this.setSelection(\n this.state.singleSelect ? [nodeData] : selectedData.concat([nodeData])\n );\n } else {\n this.setSelection(filterArr);\n }\n }\n if (this.state.mdctrlActiveMode === 1) {\n await this.setActive(nodeData);\n }\n }\n /**\n * 树节点数据变更事件处理\n * @author lxm\n * @date 2023-09-28 01:48:05\n * @param {ITreeNodeData} nodeData\n * @param {boolean} isExpand true为展开,false为折叠\n */\n onExpandChange(nodeData, isExpand) {\n const hasKey = this.state.expandedKeys.includes(nodeData.id);\n if (isExpand && !hasKey) {\n this.state.expandedKeys.push(nodeData.id);\n } else if (!isExpand && hasKey) {\n const index = this.state.expandedKeys.indexOf(nodeData.id);\n if (index !== -1) {\n this.state.expandedKeys.splice(index, 1);\n }\n }\n }\n /**\n * 树节点双击事件\n * @author lxm\n * @date 2023-05-29 10:01:36\n * @param {ITreeNodeData} nodeData\n * @return {*} {Promise<void>}\n */\n async onDbTreeNodeClick(nodeData) {\n if (this.state.mdctrlActiveMode === 2) {\n await this.setActive(nodeData);\n }\n }\n setActive(item) {\n const nodeParams = this.parseTreeNodeData(item);\n return this.evt.emit(\"onActive\", { ...nodeParams, nodeData: item });\n }\n setSelection(selection) {\n const selectionIds = selection.map((item) => item.id);\n const filterArr = this.state.items.filter(\n (item) => selectionIds.includes(item.id)\n );\n super.setSelection(filterArr);\n }\n /**\n * 获取节点模型\n * @author lxm\n * @date 2023-07-27 10:47:58\n * @param {string} id\n * @return {*} {(IDETreeNode | undefined)}\n */\n getNodeModel(id) {\n var _a;\n return (_a = this.model.detreeNodes) == null ? void 0 : _a.find((item) => item.id === id);\n }\n /**\n * 执行界面行为\n * @author lxm\n * @date 2023-07-27 05:31:36\n * @param {string} uiActionId\n * @param {ITreeNodeData} nodeData\n * @param {MouseEvent} event\n * @return {*} {Promise<void>}\n */\n async doUIAction(uiActionId, nodeData, event) {\n const eventArgs = this.getEventArgs();\n const nodeParams = this.parseTreeNodeData(nodeData);\n const result = await UIActionUtil.exec(uiActionId, {\n ...eventArgs,\n ...nodeParams,\n event\n });\n if (result.closeView) {\n this.view.closeView();\n } else if (result.refresh) {\n switch (result.refreshMode) {\n case 1:\n this.refreshNodeChildren(nodeData);\n break;\n case 2:\n this.refreshNodeChildren(nodeData, true);\n break;\n case 3:\n this.refresh();\n break;\n default:\n }\n }\n }\n /**\n * 解析树节点获取通用数据,和完整的上下文和视图参数。\n * @author lxm\n * @date 2023-08-09 11:45:34\n * @protected\n * @param {ITreeNodeData} nodeData\n */\n parseTreeNodeData(nodeData) {\n return {\n data: [{ ...nodeData, ...nodeData.deData || {} }],\n context: Object.assign(this.context.clone(), nodeData.context || {}),\n params: { ...this.params, ...nodeData.params || {} }\n };\n }\n /**\n * 计算展开节点集合(根据加载的子节点计算所有的展开节点标识集合)\n * @author lxm\n * @date 2023-08-09 05:19:36\n * @param {ITreeNodeData[]} nodes\n * @param {boolean} [isRoot=false]\n * @return {*} {string[]}\n */\n calcExpandedKeys(nodes) {\n let expandedKeys = [...this.state.expandedKeys];\n recursiveIterate8({ children: nodes }, (node) => {\n var _a;\n if ((_a = node.children) == null ? void 0 : _a.length) {\n expandedKeys.push(node.id);\n }\n });\n expandedKeys = Array.from(new Set(expandedKeys));\n return expandedKeys;\n }\n /**\n * 刷新指定树节点的子节点数据\n * @author lxm\n * @date 2023-08-23 08:23:59\n * @param {(ITreeNodeData | IData)} nodeData 指定树节点数据,可以是节点数据,也可以是对应的实体数据\n * @param {boolean} [refreshParent=false] 是否是刷新给定节点数据的父节点的子节点数据\n * @return {*} {Promise<void>}\n */\n async refreshNodeChildren(nodeData, refreshParent = false) {\n const key = nodeData.srfkey ? \"srfkey\" : \"id\";\n const currentNode = this.state.items.find(\n (item) => item[key] === nodeData[key]\n );\n if (!currentNode) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u5BF9\\u5E94\\u7684\\u6811\\u8282\\u70B9\\u6570\\u636E\", nodeData);\n return;\n }\n if (refreshParent) {\n const { parent } = currentNode;\n if (!parent || !this.model.rootVisible && this.state.rootNodes.includes(parent)) {\n this.refresh();\n return;\n }\n }\n const targetNode = refreshParent ? currentNode.parent : currentNode;\n const nodes = await this.loadNodes(targetNode);\n this.evt.emit(\"onAfterRefreshParent\", {\n parentNode: targetNode,\n children: nodes\n });\n }\n async expandNodeByKey(expandKeys) {\n const noExpandKeys = expandKeys.filter(\n (key) => !this.state.expandedKeys.includes(key)\n );\n if (noExpandKeys.length === 0) {\n return;\n }\n const existNodes = this.state.items.filter(\n (item) => noExpandKeys.includes(item.id)\n );\n this.state.expandedKeys.push(...noExpandKeys);\n if (existNodes.length === 0) {\n return;\n }\n await Promise.all(\n existNodes.map((node) => {\n return this.loadNodes(node);\n })\n );\n }\n};\n\n// src/controller/control/wizard-panel/wizard-panel.controller.ts\nimport { RuntimeError as RuntimeError54 } from \"@ibiz-template/core\";\n\n// src/controller/control/wizard-panel/wizard-panel.service.ts\nvar WizardPanelService = class extends ControlService {\n /**\n * 执行向导初始化\n * 服务调用之前确认是否有初始化实体行为\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async initialize(context, data = {}, params = {}) {\n var _a;\n const initAction = (_a = this.model.initControlAction) == null ? void 0 : _a.appDEMethodId;\n let res = await this.exec(initAction, context, data, params);\n res = this.handleResponse(res);\n return res;\n }\n /**\n * 执行向导完成\n *\n * @author lxm\n * @date 2022-08-31 17:08:41\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async finish(context, data = {}, params = {}) {\n var _a;\n const finishAction = (_a = this.model.finishControlAction) == null ? void 0 : _a.appDEMethodId;\n let res = await this.exec(finishAction, context, data, params);\n res = this.handleResponse(res);\n return res;\n }\n};\n\n// src/controller/control/wizard-panel/wizard-panel.controller.ts\nvar WizardPanelController = class extends ControlController {\n constructor() {\n super(...arguments);\n /**\n * 表单标识历史\n *\n * @author lxm\n * @date 2023-02-16 08:41:35\n * @type {string[]}\n * @memberof WizardPanelController\n */\n this.tagHistory = [];\n /**\n * 所有部件的适配器\n *\n * @author lxm\n * @date 2022-08-24 20:08:07\n * @type {{ [key: string]: IControlProvider }}\n */\n this.providers = {};\n /**\n * 首表单模型\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-06-07 15:03:39\n */\n this.firstForm = void 0;\n /**\n * 所有表单控制器Map\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-06-07 15:13:21\n */\n this.formControllers = /* @__PURE__ */ new Map();\n /**\n * 步骤集合\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-06-07 15:13:21\n */\n this.steps = [];\n /**\n * 步骤标识集合\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-06-07 15:13:21\n */\n this.stepTags = {};\n }\n initState() {\n super.initState();\n }\n async onCreated() {\n var _a, _b;\n await super.onCreated();\n this.model.dewizard.dewizardForms.forEach((wizardForm) => {\n var _a2, _b2, _c;\n if (wizardForm.firstForm) {\n this.firstForm = wizardForm;\n }\n const formName = \"\".concat(this.model.name, \"_form_\").concat((_a2 = wizardForm.formTag) == null ? void 0 : _a2.toLowerCase());\n const wizardStep = (_c = (_b2 = this.model.dewizard) == null ? void 0 : _b2.dewizardSteps) == null ? void 0 : _c.find((step) => {\n return step.id === wizardForm.dewizardStepId;\n });\n const stepTag = wizardStep == null ? void 0 : wizardStep.stepTag;\n this.stepTags[formName] = stepTag;\n });\n (_b = (_a = this.model.dewizard) == null ? void 0 : _a.dewizardSteps) == null ? void 0 : _b.forEach((step) => {\n this.steps.push(step.stepTag);\n });\n this.service = new WizardPanelService(this.model);\n await this.service.init(this.context);\n const { deeditForms } = this.model;\n if (deeditForms && deeditForms.length > 0) {\n await Promise.all(\n deeditForms.map(async (editForm) => {\n const { formTag } = editForm.dewizardForm;\n if (formTag) {\n const provider = await getControlProvider(editForm);\n if (provider) {\n this.providers[formTag] = provider;\n }\n }\n })\n );\n }\n }\n /**\n * 当前激活的向导表单\n *\n * @author lxm\n * @date 2023-02-17 10:42:06\n * @readonly\n * @memberof WizardPanelController\n */\n get activeWizardForm() {\n const { activeFormTag } = this.state;\n const form = this.model.dewizard.dewizardForms.find(\n (wizardForm) => {\n return wizardForm.formTag === activeFormTag;\n }\n );\n if (!form) {\n ibiz.log.debug(\"\\u627E\\u4E0D\\u5230\".concat(activeFormTag, \"\\u7684\\u5411\\u5BFC\\u8868\\u5355\"));\n }\n return form;\n }\n /**\n * 当前激活向导表单的控制器\n *\n * @author lxm\n * @date 2023-02-17 03:44:46\n * @readonly\n * @memberof WizardPanelController\n */\n get activeFormController() {\n const { activeFormTag } = this.state;\n const controller = this.formControllers.get(activeFormTag);\n if (!controller) {\n throw new RuntimeError54(\"\\u627E\\u4E0D\\u5230\".concat(activeFormTag, \"\\u7684\\u8868\\u5355\\u63A7\\u5236\\u5668\"));\n }\n return controller;\n }\n /**\n * 表单挂载后把控制器抛出来\n * @param {string} activeFormTag\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-06-07 15:14:05\n */\n onFormMounted(activeFormTag, event) {\n const formController = event.ctrl;\n this.formControllers.set(activeFormTag, formController);\n formController.load();\n }\n /**\n * 表单保存后,如果上下文里没有主键,赋予主键\n * @param {EventBase} event\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-06-08 14:06:25\n */\n onFormSaved(event) {\n const data = event.data[0];\n const deName = calcDeCodeNameById(this.model.appDataEntityId);\n if (!this.context[deName] && data && data.srfkey) {\n this.context[deName] = data.srfkey;\n }\n }\n /**\n * 根据tag获取应该激活的向导表单\n * @param {string} tag\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-11-10 18:35:37\n */\n getWizardFormByTag(tag) {\n var _a;\n if (!((_a = this.model.dewizard) == null ? void 0 : _a.dewizardForms)) {\n throw new RuntimeError54(\"\\u6CA1\\u6709\\u914D\\u7F6E\\u5411\\u5BFC\\u8868\\u5355\\u96C6\\u5408\");\n return;\n }\n const wizardForm = this.model.dewizard.dewizardForms.find(\n (form) => {\n return form.formTag === tag;\n }\n );\n if (!wizardForm) {\n throw new RuntimeError54(\"\\u627E\\u4E0D\\u5230\\u6807\\u8BC6\\u4E3A\".concat(tag, \"\\u7684\\u5411\\u5BFC\\u8868\\u5355\"));\n }\n return wizardForm;\n }\n /**\n * 执行初始化操作,存在初始化实体行为的时候加载数据并把主键放入上下文\n *\n * @author lxm\n * @date 2022-08-19 14:08:50\n */\n async initialize() {\n var _a;\n const initAction = (_a = this.model.initControlAction) == null ? void 0 : _a.appDEMethodId;\n if (initAction) {\n const res = await this.service.initialize(this.context, this.params);\n const deName = calcDeCodeNameById(this.model.appDataEntityId);\n if (res.data && res.data.srfkey) {\n this.context[deName] = res.data.srfkey;\n }\n if (res.data && this.model.stateAppDEFieldId && res.data[this.model.stateAppDEFieldId]) {\n const activeForm = this.getWizardFormByTag(\n res.data[this.model.stateAppDEFieldId]\n );\n if (activeForm) {\n this.state.activeFormTag = activeForm.formTag;\n }\n }\n }\n if (!this.state.activeFormTag && this.firstForm) {\n this.state.activeFormTag = this.firstForm.formTag;\n this.tagHistory.push(this.firstForm.formTag);\n }\n }\n /**\n * 执行完成操作\n *\n * @author lxm\n * @date 2023-02-16 06:20:18\n * @returns {*} {Promise<void>}\n * @memberof WizardPanelController\n */\n async finish() {\n await this.service.finish(this.context, this.params);\n this.evt.emit(\"onFinishSuccess\", void 0);\n }\n /**\n * 处理上一步按钮点击\n *\n * @author lxm\n * @date 2023-02-16 09:10:04\n * @memberof WizardPanelController\n */\n async onPrevClick() {\n const data = await this.activeFormController.goBack();\n let prevTag;\n if (this.model.stateAppDEFieldId && data[this.model.stateAppDEFieldId]) {\n const wizardForm = this.getWizardFormByTag(\n data[this.model.stateAppDEFieldId]\n );\n if (wizardForm) {\n prevTag = data[this.model.stateAppDEFieldId];\n }\n } else {\n this.tagHistory.pop();\n prevTag = this.tagHistory[this.tagHistory.length - 1];\n }\n if (!prevTag) {\n throw new RuntimeError54(\"\\u6CA1\\u6709\\u4E0A\\u4E00\\u4E2A\\u8868\\u5355\");\n }\n this.state.activeFormTag = prevTag;\n }\n /**\n * 处理下一步按钮点击\n *\n * @author lxm\n * @date 2023-02-16 09:10:17\n * @memberof WizardPanelController\n */\n async onNextClick() {\n const data = await this.activeFormController.save();\n let nextTag;\n if (data.srfnextform) {\n const wizardForm = this.getWizardFormByTag(data.srfnextform);\n if (wizardForm) {\n nextTag = data.srfnextform;\n this.tagHistory.push(nextTag);\n }\n } else if (this.model.stateAppDEFieldId && data[this.model.stateAppDEFieldId]) {\n const wizardForm = this.getWizardFormByTag(\n data[this.model.stateAppDEFieldId]\n );\n if (wizardForm) {\n nextTag = data[this.model.stateAppDEFieldId];\n }\n } else {\n const wizardSteps = this.model.dewizard.dewizardSteps;\n const editForms = this.model.dewizard.dewizardForms;\n if (wizardSteps && editForms) {\n const index = wizardSteps.findIndex((_step) => {\n return _step.id === this.activeWizardForm.dewizardStepId;\n });\n const nextWizardStep = wizardSteps[index + 1];\n if (!nextWizardStep) {\n throw new RuntimeError54(\"\\u627E\\u4E0D\\u5230\\u4E0B\\u4E00\\u4E2A\\u5411\\u5BFC\\u6B65\\u9AA4\");\n }\n const nextWizardForm = this.getWizardFormByTag(nextWizardStep.stepTag);\n if (nextWizardForm && nextWizardForm.formTag) {\n nextTag = nextWizardForm.formTag;\n }\n }\n }\n if (!nextTag) {\n throw new RuntimeError54(\"\\u627E\\u4E0D\\u5230\\u4E0B\\u4E00\\u4E2A\\u5411\\u5BFC\\u8868\\u5355\");\n }\n this.state.activeFormTag = nextTag;\n this.tagHistory.push(nextTag);\n }\n /**\n * 处理完成按钮点击\n *\n * @author lxm\n * @date 2023-02-16 09:09:45\n * @memberof WizardPanelController\n */\n async onFinishClick() {\n await this.activeFormController.save();\n await this.finish();\n }\n};\n\n// src/controller/control/md-ctrl/md-ctrl.controller.ts\nimport { RuntimeModelError as RuntimeModelError59 } from \"@ibiz-template/core\";\nimport { isNil as isNil24 } from \"ramda\";\n\n// src/controller/control/md-ctrl/md-ctrl.service.ts\nvar MDCtrlService = class extends MDControlService {\n /**\n * 初始化属性映射\n *\n * @author lxm\n * @date 2022-08-31 18:08:37\n */\n initUIDataMap() {\n var _a;\n super.initUIDataMap();\n (_a = this.model.delistDataItems) == null ? void 0 : _a.forEach((item) => {\n const uiKey = item.id.toLowerCase();\n const deField = item.appDEFieldId;\n let mapField;\n if (deField) {\n const deFieldKey = deField.toLowerCase();\n mapField = new UIMapField(uiKey, deFieldKey, {\n isOriginField: true,\n dataType: item.dataType\n });\n } else {\n mapField = new UIMapField(uiKey, uiKey);\n }\n this.dataUIMap.set(uiKey, mapField);\n });\n }\n};\n\n// src/controller/control/md-ctrl/md-ctrl-row.state.ts\nvar MobMDCtrlRowState = class {\n /**\n * Creates an instance of MDCtrlRowState.\n *\n * @author chitanda\n * @date 2023-06-19 18:06:12\n * @param {ControlVO} data 行数据\n * @param {IMobMDCtrlController} controller 多数据部件控制器\n */\n constructor(data, controller) {\n this.data = data;\n this.controller = controller;\n /**\n * 行为状态\n *\n * @author chitanda\n * @date 2023-06-19 18:06:27\n * @type {{ [p: string]: IButtonContainerState }}\n */\n this.uaColStates = {};\n this.data = data;\n }\n};\n\n// src/controller/control/md-ctrl/md-ctrl.controller.ts\nvar MDCtrlController = class extends MDControlController {\n initState() {\n super.initState();\n this.state.rows = [];\n this.state.noSort = this.model.noSort === true;\n this.state.mdctrlActiveMode = 1;\n }\n async onCreated() {\n await super.onCreated();\n this.service = new MDCtrlService(this.model);\n await this.service.init(this.context);\n this.setSort();\n }\n /**\n * 设置排序\n *\n * @author lxm\n * @date 2022-09-28 13:09:44\n * @param {string} key 排序字段\n * @param {string} order 排序顺序\n */\n setSort(key, order) {\n if (key && order) {\n super.setSort(key, order);\n } else {\n const { minorSortAppDEFieldId, minorSortDir } = this.model;\n if (minorSortAppDEFieldId && minorSortDir) {\n this.state.sortQuery = \"\".concat(minorSortAppDEFieldId.toLowerCase(), \",\").concat(minorSortDir.toLowerCase());\n } else {\n this.state.sortQuery = \"\";\n }\n }\n }\n /**\n * 加载更多\n * @author lxm\n * @date 2023-05-22 07:33:59\n * @return {*} {Promise<void>}\n */\n async loadMore() {\n if (this.state.total > this.state.items.length && !this.state.isLoading) {\n await this.load({ isLoadMore: true });\n }\n }\n /**\n * 列表多数据刷新 需重置分页\n *\n * @author zk\n * @date 2023-08-11 05:08:20\n * @return {*} {Promise<void>}\n * @memberof MDCtrlController\n */\n async refresh() {\n await this.load({ isInitialLoad: true });\n }\n async afterLoad(args, items) {\n if (args.isInitialLoad) {\n this.state.rows = [];\n }\n if (items && items.length > 0) {\n this.state.rows.push(\n ...items.map((item) => {\n const row = new MobMDCtrlRowState(item, this);\n this.initActionStates(row);\n return row;\n })\n );\n }\n await this.initGroupCodeListItems();\n await this.handleDataGroup();\n return super.afterLoad(args, items);\n }\n /**\n * 设置列表数据\n *\n * @author zk\n * @date 2023-05-26 02:05:46\n * @param {IData[]} items\n * @memberof MDCtrlController\n */\n setData(items) {\n const rows = items.map((item) => {\n const row = new MobMDCtrlRowState(item, this);\n return row;\n });\n this.state.rows = rows;\n }\n /**\n * 获取列表数据\n *\n * @author zk\n * @date 2023-05-26 02:05:35\n * @return {*} {IData[]}\n * @memberof MDCtrlController\n */\n getAllData() {\n return this.state.rows.map((row) => row.data);\n }\n /**\n * 界面行为组项点击\n *\n * @author chitanda\n * @date 2023-06-19 18:06:18\n * @param {IUIActionGroupDetail} detail\n * @param {MDCtrlRowState} row\n * @param {MouseEvent} event\n * @return {*} {Promise<void>}\n */\n async onActionClick(detail, row, event) {\n const actionId = detail.uiactionId;\n await UIActionUtil.execAndResolved(actionId, {\n context: this.context,\n params: this.params,\n data: [row.data],\n view: this.view,\n event\n });\n }\n /**\n * 初始化按钮状态\n *\n * @author chitanda\n * @date 2023-06-21 16:06:55\n * @protected\n * @param {MobMDCtrlRowState} row\n */\n initActionStates(row) {\n const { deuiactionGroup, deuiactionGroup2 } = this.model;\n if (deuiactionGroup) {\n this.initUIActionGroup(row, deuiactionGroup);\n }\n if (deuiactionGroup2) {\n this.initUIActionGroup(row, deuiactionGroup2);\n }\n }\n initUIActionGroup(row, group) {\n var _a;\n if (!((_a = group.uiactionGroupDetails) == null ? void 0 : _a.length)) {\n ibiz.log.debug(\"\\u64CD\\u4F5C\\u5217\\u754C\\u9762\\u884C\\u4E3A\\u7EC4\\u6CA1\\u6709\\u914D\\u7F6E\\u754C\\u9762\\u884C\\u4E3A\");\n }\n const containerState = new ButtonContainerState();\n const details = group.uiactionGroupDetails || [];\n details.forEach((detail) => {\n const actionid = detail.uiactionId;\n if (actionid) {\n const buttonState = new UIActionButtonState(\n detail.id,\n this.context.srfappid,\n actionid\n );\n containerState.addState(detail.id, buttonState);\n }\n });\n containerState.update(row.data.getOrigin());\n row.uaColStates[group.id] = containerState;\n }\n /**\n * 处理数据分组\n *\n * @memberof MDCtrlController\n */\n async handleDataGroup() {\n const { enableGroup, groupMode, groupAppDEFieldId } = this.model;\n if (enableGroup && groupMode) {\n if (!groupAppDEFieldId) {\n throw new RuntimeModelError59(this.model, \"\\u5206\\u7EC4\\u5C5E\\u6027\\u6CA1\\u6709\\u914D\\u7F6E\");\n }\n if (groupMode === \"AUTO\") {\n this.handleAutoGroup();\n } else if (groupMode === \"CODELIST\") {\n await this.handleCodeListGroup();\n }\n }\n }\n /**\n * 处理自动分组\n *\n * @memberof MDCtrlController\n */\n handleAutoGroup() {\n const { groupAppDEFieldId } = this.model;\n if (groupAppDEFieldId) {\n const { items } = this.state;\n const groupMap = /* @__PURE__ */ new Map();\n items.forEach((item) => {\n const groupVal = item[groupAppDEFieldId];\n if (isNil24(groupVal)) {\n return;\n }\n if (!groupMap.has(groupVal)) {\n groupMap.set(groupVal, []);\n }\n groupMap.get(groupVal).push(new MobMDCtrlRowState(item, this));\n });\n const groups = [];\n groupMap.forEach((value, key) => {\n groups.push({\n caption: key,\n key,\n children: [...value]\n });\n });\n this.state.groups = groups;\n }\n }\n /**\n * 加载并初始化分组代码表项集合\n * @author lxm\n * @date 2023-08-29 05:11:39\n * @protected\n * @return {*} {Promise<void>}\n */\n async initGroupCodeListItems() {\n const { groupCodeListId } = this.model;\n if (!groupCodeListId) {\n return;\n }\n const app = ibiz.hub.getApp(this.context.srfappid);\n this.groupCodeListItems = await app.codeList.get(\n groupCodeListId,\n this.context,\n this.params\n );\n }\n /**\n * 处理代码表分组\n *\n * @memberof MDCtrlController\n */\n async handleCodeListGroup() {\n const { groupAppDEFieldId, groupCodeListId } = this.model;\n if (!groupCodeListId) {\n throw new RuntimeModelError59(this.model, \"\\u5206\\u7EC4\\u4EE3\\u7801\\u8868\\u6CA1\\u6709\\u914D\\u7F6E\");\n }\n const { items } = this.state;\n const groupMap = /* @__PURE__ */ new Map();\n this.groupCodeListItems.forEach((item) => {\n groupMap.set(item.value, []);\n });\n items.forEach((item) => {\n const groupVal = item[groupAppDEFieldId];\n const groupArr = groupMap.get(groupVal);\n if (groupArr) {\n groupArr.push(new MobMDCtrlRowState(item, this));\n }\n });\n const groups = [];\n groupMap.forEach((arr, key) => {\n const codeListItem = this.groupCodeListItems.find(\n (item) => item.value === key\n );\n groups.push({\n caption: codeListItem.text,\n key: codeListItem.value,\n children: arr\n });\n });\n this.state.groups = groups;\n }\n};\n\n// src/controller/control/kanban/kanban.controller.ts\nimport { RuntimeError as RuntimeError55, RuntimeModelError as RuntimeModelError60 } from \"@ibiz-template/core\";\nimport { isNil as isNil25 } from \"ramda\";\n\n// src/controller/control/kanban/kanban.service.ts\nvar KanbanService = class extends DataViewControlService {\n /**\n * 更新分组数据\n *\n * @author lxm\n * @date 2022-09-07 19:09:11\n * @param {IParams} context 上下文\n * @param {ControlVO} data 数据\n * @returns {*}\n */\n async updateGroup(context, data) {\n var _a;\n const updateAction = ((_a = this.model.updateGroupControlAction) == null ? void 0 : _a.appDEMethodId) || \"update\";\n let res = await this.exec(updateAction, context, data.getOrigin());\n res = this.handleResponse(res);\n return res;\n }\n};\n\n// src/controller/control/kanban/kanban.controller.ts\nvar KanbanController = class extends DataViewControlController {\n /**\n * 允许调整顺序\n * @author lxm\n * @date 2023-09-11 04:02:39\n * @readonly\n * @type {boolean}\n */\n get enableEditOrder() {\n return this.model.enableCardEditOrder === true;\n }\n /**\n * 是否支持调整分组。\n * @author lxm\n * @date 2023-09-11 04:04:00\n * @readonly\n * @type {boolean}\n */\n get enableEditGroup() {\n return this.model.enableCardEditGroup === true;\n }\n async initControlService() {\n this.service = new KanbanService(this.model);\n await this.service.init(this.context);\n }\n initState() {\n super.initState();\n this.state.size = this.model.pagingSize || 1e3;\n this.state.updating = false;\n this.state.draggable = this.enableEditOrder || this.enableEditGroup;\n }\n /**\n * 初始化\n *\n * @protected\n * @return {*} {Promise<void>}\n * @memberof KanbanController\n */\n async onCreated() {\n await super.onCreated();\n }\n /**\n * 本地排序items\n * @author lxm\n * @date 2023-09-04 09:30:55\n * @param {IData[]} items\n */\n sortItems(items) {\n const sortField = this.model.minorSortAppDEFieldId;\n const { minorSortDir } = this.model;\n if (!sortField) {\n throw new RuntimeModelError60(this.model, \"\\u6392\\u5E8F\\u5C5E\\u6027\\u6CA1\\u914D\\u7F6E\");\n }\n if (!minorSortDir) {\n throw new RuntimeModelError60(this.model, \"\\u6392\\u5E8F\\u65B9\\u5411\\u6CA1\\u914D\\u7F6E\");\n }\n const isAsc = minorSortDir === \"ASC\";\n items.forEach((item) => {\n const sortValue = item[sortField];\n if (isNil25(sortValue)) {\n item[sortField] = 0;\n } else {\n const toNum = Number(sortValue);\n if (Number.isNaN(toNum)) {\n throw new RuntimeError55(\n \"\".concat(item.srfmajortext, \"\\u7684\\u6392\\u5E8F\\u5C5E\\u6027\\u65E0\\u6CD5\\u8F6C\\u6362\\u6210\\u6570\\u503C\")\n );\n }\n }\n });\n items.sort(\n (a, b) => isAsc ? a[sortField] - b[sortField] : b[sortField] - a[sortField]\n );\n }\n async afterLoad(args, items) {\n this.sortItems(this.state.items);\n return super.afterLoad(args, items);\n }\n handleDataGroup() {\n if (!this.model.enableGroup || this.model.groupMode === \"NONE\") {\n throw new RuntimeError55(\"\\u770B\\u677F\\u90E8\\u4EF6\\u5FC5\\u987B\\u5F00\\u542F\\u5206\\u7EC4\");\n }\n return super.handleDataGroup();\n }\n /**\n * 拖拽变更事件处理回调\n * @author lxm\n * @date 2023-09-11 04:12:58\n * @param {IDragChangeInfo} info\n * @return {*} {Promise<void>}\n */\n async onDragChange(info) {\n if (!this.enableEditGroup) {\n if (info.from !== info.to) {\n ibiz.message.warning(\"\\u5F53\\u524D\\u770B\\u677F\\u4E0D\\u5141\\u8BB8\\u8C03\\u6574\\u5206\\u7EC4\\uFF01\");\n return;\n }\n }\n const isAsc = this.model.minorSortDir === \"ASC\";\n const { from, to, fromIndex, toIndex } = info;\n const groupField = this.model.groupAppDEFieldId;\n const sortField = this.model.minorSortAppDEFieldId;\n const modifiedItems = [];\n const fromGroup = this.state.groups.find((x) => x.key === from);\n const toGroup = this.state.groups.find((x) => x.key === to);\n if (!this.enableEditOrder) {\n if (info.from === info.to) {\n ibiz.message.warning(\"\\u5F53\\u524D\\u770B\\u677F\\u4E0D\\u5141\\u8BB8\\u8C03\\u6574\\u6B21\\u5E8F\");\n return;\n }\n const draggedItem2 = fromGroup.children[fromIndex];\n draggedItem2[groupField] = info.to;\n return this.updateChangedItems([draggedItem2]);\n }\n const getNextSort = (num) => {\n return num + (100 - num % 100);\n };\n const originArr = [...toGroup.children];\n const changedArr = [...toGroup.children];\n const draggedItem = fromGroup.children[fromIndex];\n if (info.from !== info.to) {\n draggedItem[groupField] = info.to;\n changedArr.splice(toIndex, 0, draggedItem);\n } else {\n changedArr.splice(fromIndex, 1);\n changedArr.splice(toIndex, 0, draggedItem);\n }\n const removeItems = fromGroup.children.splice(fromIndex, 1);\n toGroup.children.splice(toIndex, 0, ...removeItems);\n if (!isAsc) {\n originArr.reverse();\n changedArr.reverse();\n }\n let lastSort;\n let cacheArr = [];\n let cacheLastSort;\n changedArr.forEach((item, index) => {\n if (lastSort === void 0) {\n if (item !== originArr[index]) {\n if (!originArr[index]) {\n lastSort = index === 0 ? 100 : getNextSort(originArr[index - 1][sortField]);\n } else {\n lastSort = originArr[index][sortField] || 100;\n }\n item[sortField] = lastSort;\n modifiedItems.push(item);\n }\n } else {\n if (lastSort >= item[sortField]) {\n if (cacheArr.length > 0) {\n cacheArr.forEach((cache) => {\n cache[sortField] = getNextSort(cacheLastSort);\n modifiedItems.push(cache);\n cacheLastSort = cache[sortField];\n });\n lastSort = cacheLastSort;\n cacheLastSort = 0;\n cacheArr = [];\n }\n item[sortField] = getNextSort(lastSort);\n modifiedItems.push(item);\n } else {\n if (cacheArr.length === 0) {\n cacheLastSort = lastSort;\n }\n cacheArr.push(item);\n }\n lastSort = item[sortField];\n }\n });\n this.updateChangedItems(modifiedItems);\n }\n /**\n * 批量更新修改的项,并更新后台返回的数据,然后重新计算分组和排序\n * @author lxm\n * @date 2023-09-11 04:13:15\n * @param {ControlVO[]} changedItems\n * @return {*} {Promise<void>}\n */\n async updateChangedItems(changedItems) {\n try {\n this.state.updating = true;\n await Promise.all(\n changedItems.map(async (item) => {\n const deName = calcDeCodeNameById(this.model.appDataEntityId);\n const tempContext = this.context.clone();\n tempContext[deName] = item.srfkey;\n const res = await this.service.updateGroup(tempContext, item);\n if (res.data) {\n const index = this.state.items.findIndex(\n (x) => x.srfkey === item.srfkey\n );\n this.state.items.splice(index, 1, res.data);\n }\n })\n );\n } finally {\n this.state.updating = false;\n await this.afterLoad({}, this.state.items);\n }\n }\n};\n\n// src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts\nimport { recursiveIterate as recursiveIterate9 } from \"@ibiz-template/core\";\n\n// src/controller/control/tree-grid-ex/tree-grid-ex.service.ts\nimport { isArray as isArray10 } from \"qx-util\";\nvar TreeGridExService = class extends TreeService {\n constructor() {\n super(...arguments);\n /**\n * 表格列映射关系\n *\n * @author zk\n * @date 2023-09-25 05:09:11\n * @type {Map<string, Map<string, UIMapField>>}\n * @memberof TreeGridService\n */\n this.multipleUiMap = /* @__PURE__ */ new Map();\n }\n /**\n * 初始化节点属性映射\n *\n * @author lxm\n * @date 2022-08-31 18:08:37\n */\n initUIDataMap() {\n var _a;\n super.initUIDataMap();\n (_a = this.model.detreeNodes) == null ? void 0 : _a.forEach((item) => {\n var _a2;\n const dataMap = /* @__PURE__ */ new Map();\n (_a2 = item.detreeNodeDataItems) == null ? void 0 : _a2.forEach((dataItem) => {\n const uiKey = dataItem.id.toLowerCase();\n const deField = dataItem.appDEFieldId;\n const deFieldKey = deField.toLowerCase();\n const mapField = new UIMapField(uiKey, deFieldKey, {\n isOriginField: true,\n dataType: dataItem.dataType\n });\n dataMap.set(uiKey, mapField);\n });\n this.multipleUiMap.set(item.id, dataMap);\n });\n }\n /**\n * 获取实体数据集数据\n *\n * @protected\n * @param {TreeNodeRSModel} nodeRS\n * @param {TreeFetchOpts} opts\n * @returns {*}\n * @memberof TreeService\n */\n async getDENodeDatas(nodeModel, nodeRS, parentNodeData, opts) {\n const { appDEDataSetId, appDataEntityId } = nodeModel;\n const { context, params, navContext, navParams } = nodeRS ? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts) : {\n context: opts.context,\n params: opts.params,\n navContext: {},\n navParams: {}\n };\n params.size = nodeModel.maxSize || 1e3;\n if (nodeModel.sortAppDEFieldId && nodeModel.sortDir) {\n Object.assign(params, {\n sort: \"\".concat(nodeModel.sortAppDEFieldId.toLowerCase(), \",\").concat(nodeModel.sortDir.toLowerCase())\n });\n }\n const response = await this.app.deService.exec(\n appDataEntityId,\n appDEDataSetId,\n context,\n params\n );\n if (response.data.length) {\n const { data } = this.handleResponseForMultiple(response, nodeModel.id);\n const nodeDatas = data.map((item) => {\n return new TreeDataSetNodeData(nodeModel, parentNodeData, {\n data: item,\n leaf: !!opts.leaf,\n navContext,\n navParams\n });\n });\n return nodeDatas;\n }\n return [];\n }\n /**\n * 处理多数据源响应\n *\n * @author zk\n * @date 2023-09-21 04:09:06\n * @param {IHttpResponse} response\n * @param {string} tag 多数据源dataUIMap标识\n * @return {*} {IHttpResponse}\n * @memberof TreeGridService\n */\n handleResponseForMultiple(response, tag) {\n const res = super.handleResponse(response);\n if (res.headers) {\n if (res.headers[\"x-page\"]) {\n res.page = Number(res.headers[\"x-page\"]);\n }\n if (res.headers[\"x-per-page\"]) {\n res.size = Number(res.headers[\"x-per-page\"]);\n }\n if (res.headers[\"x-total\"]) {\n res.total = Number(res.headers[\"x-total\"]);\n }\n }\n if (res.ok) {\n if (isArray10(res.data)) {\n res.data = res.data.map(\n (item) => this.toUIDataForMultiple(item, tag)\n );\n } else {\n res.data = this.toUIDataForMultiple(res.data, tag);\n }\n }\n return res;\n }\n /**\n * 实体数据转ui数据\n *\n * @author zk\n * @date 2023-09-21 06:09:06\n * @param {IData} entityData 实体数据\n * @param {string} tag 多数据源dataUIMap标识\n * @return {*} {ControlVO}\n * @memberof TreeGridService\n */\n toUIDataForMultiple(entityData, tag) {\n const dataUIMap = this.multipleUiMap.get(tag);\n return new ControlVO(entityData, dataUIMap);\n }\n};\n\n// src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts\nvar TreeGridExController = class extends MDControlController {\n constructor() {\n super(...arguments);\n /**\n * 表格列的适配器\n *\n * @author zk\n * @date 2023-09-21 06:09:04\n * @type {{ [key: string]: IGridColumnProvider }}\n * @memberof TreeGridExController\n */\n this.providers = {};\n /**\n * 所有表格列控制器集合\n *\n * @author zk\n * @date 2023-09-21 06:09:10\n * @type {{ [key: string]: GridColumnController }}\n * @memberof TreeGridExController\n */\n this.columns = {};\n /**\n * 所有表格属性列的控制器\n *\n * @author zk\n * @date 2023-09-21 06:09:16\n * @type {{ [key: string]: GridFieldColumnController }}\n * @memberof TreeGridExController\n */\n this.fieldColumns = {};\n /**\n * 所有表格操作列的控制器\n *\n * @author zk\n * @date 2023-09-21 06:09:21\n * @type {{ [key: string]: GridUAColumnController }}\n * @memberof TreeGridExController\n */\n this.uaColumns = {};\n }\n initState() {\n super.initState();\n this.state.size = 0;\n this.state.columnStates = [];\n this.state.defaultExpandedKeys = [];\n }\n async onCreated() {\n await super.onCreated();\n this.service = new TreeGridExService(this.model);\n await this.service.init(this.context);\n this.initColumnStates();\n await this.initGridColumns();\n }\n /**\n * 初始化表格属性列,操作列,编辑项控制器\n *\n * @author zk\n * @date 2023-09-21 06:09:28\n * @protected\n * @return {*} {Promise<void>}\n * @memberof TreeGridExController\n */\n async initGridColumns() {\n if (this.model.detreeColumns) {\n await Promise.all(\n this.model.detreeColumns.map(\n async (column) => this.initColumnsController(column)\n )\n );\n }\n }\n /**\n * 初始化表格属性列,操作列,编辑项控制器\n *\n * @author zk\n * @date 2023-09-21 06:09:37\n * @protected\n * @param {IDETreeColumn} column\n * @return {*} {Promise<void>}\n * @memberof TreeGridExController\n */\n async initColumnsController(column) {\n const provider = await getGridColumnProvider(column);\n if (!provider) {\n return;\n }\n this.providers[column.codeName] = provider;\n const controller = await provider.createController(column, this);\n this.columns[column.codeName] = controller;\n if (column.columnType === \"DEFGRIDCOLUMN\") {\n this.fieldColumns[column.codeName] = controller;\n } else if (column.columnType === \"UAGRIDCOLUMN\") {\n this.uaColumns[column.codeName] = controller;\n }\n }\n /**\n * 初始化表格列状态\n *\n * @author zk\n * @date 2023-09-21 06:09:43\n * @protected\n * @memberof TreeGridExController\n */\n initColumnStates() {\n recursiveIterate9(\n this.model,\n (column) => {\n if (column.columnType !== \"GROUPGRIDCOLUMN\") {\n this.state.columnStates.push({\n key: column.codeName,\n caption: column.caption,\n hidden: !!column.hideDefault,\n uaColumn: column.columnType === \"UAGRIDCOLUMN\"\n });\n }\n },\n { childrenFields: [\"detreeColumns\"] }\n );\n this.calcColumnFixed();\n }\n /**\n * 计算列的固定状态\n *\n * @author zk\n * @date 2023-09-21 06:09:50\n * @protected\n * @memberof TreeGridExController\n */\n calcColumnFixed() {\n const showColumns = this.state.columnStates.filter(\n (column) => !column.hidden\n );\n const allNum = showColumns.length;\n showColumns.forEach((column, index) => {\n if (column.uaColumn) {\n column.fixed = index + 1 <= Math.floor(allNum / 2) ? \"left\" : \"right\";\n } else {\n column.fixed = \"right\";\n }\n });\n }\n /**\n * 树部件加载,从根节点开始重新加载\n *\n * @author zk\n * @date 2023-09-21 06:09:56\n * @param {MDCtrlLoadParams} [args={}]\n * @return {*} {Promise<ITreeNodeData[]>}\n * @memberof TreeGridExController\n */\n async load(args = {}) {\n const isInitialLoad = args.isInitialLoad === true;\n const nodes = await this.loadNodes();\n this.state.expandedKeys = this.calcExpandedKeys(nodes);\n await this.afterLoad(args, nodes);\n this.state.isLoaded = true;\n await this.evt.emit(\"onLoadSuccess\", {\n isInitialLoad\n });\n return nodes;\n }\n /**\n * 加载子节点数据\n *\n * @author zk\n * @date 2023-09-21 06:09:02\n * @param {ITreeNodeData} [parentNode]\n * @return {*} {Promise<ITreeNodeData[]>}\n * @memberof TreeGridExController\n */\n async loadNodes(parentNode) {\n const params = await this.getFetchParams();\n const hasQuery = !!params.query;\n const defaultExpandedKeys = !parentNode ? this.state.defaultExpandedKeys : void 0;\n await this.startLoading();\n let nodes;\n try {\n nodes = await this.service.fetchChildNodes(parentNode, {\n context: this.context.clone(),\n params,\n hasQuery,\n defaultExpandedKeys\n }) || [];\n } finally {\n await this.endLoading();\n }\n if (parentNode) {\n parentNode.children = nodes;\n } else {\n this.state.rootNodes = nodes;\n }\n this.state.items = [];\n recursiveIterate9(\n { children: this.state.rootNodes },\n (node) => {\n this.state.items.push(node);\n }\n );\n return nodes;\n }\n /**\n * 计算展开节点集合\n *\n * @author zk\n * @date 2023-09-21 06:09:07\n * @param {ITreeNodeData[]} nodes\n * @return {*} {string[]}\n * @memberof TreeGridExController\n */\n calcExpandedKeys(nodes) {\n let expandedKeys = [];\n recursiveIterate9({ children: nodes }, (node) => {\n var _a;\n if ((_a = node.children) == null ? void 0 : _a.length) {\n expandedKeys.push(node.id);\n }\n });\n if (this.state.defaultExpandedKeys.length) {\n expandedKeys.push(...this.state.defaultExpandedKeys);\n expandedKeys = Array.from(new Set(expandedKeys));\n }\n return expandedKeys;\n }\n};\n\n// src/controller/control/tree-grid/tree-grid.controller.ts\nvar TreeGridController = class extends GridController {\n};\n\n// src/controller/control/tree-grid/tree-grid.service.ts\nvar TreeGridService = class extends GridService {\n};\n\n// src/controller/control/medit-view-panel/medit-view-panel.controller.ts\nimport { RuntimeError as RuntimeError56 } from \"@ibiz-template/core\";\nimport { createUUID as createUUID11 } from \"qx-util\";\n\n// src/controller/control/medit-view-panel/medit-view-panel.service.ts\nvar MEditViewPanelService = class extends MDControlService {\n};\n\n// src/controller/control/medit-view-panel/medit-view-panel.controller.ts\nvar MEditViewPanelController = class extends MDControlController {\n constructor() {\n super(...arguments);\n /**\n * 当前应用视图参数对象\n *\n */\n this.parameters = [];\n }\n async onCreated() {\n await super.onCreated();\n this.service = new MEditViewPanelService(this.model);\n await this.service.init(this.context);\n await this.initParameters();\n }\n initState() {\n super.initState();\n this.state.panelUiItems = [];\n this.state.activeTab = \"\";\n this.state.size = 1e3;\n this.state.isNeedScroll = false;\n }\n /**\n * 初始化嵌入应用视图及实体参数对象\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-10-16 13:56:56\n */\n async initParameters() {\n var _a, _b;\n if (this.model.embeddedAppViewId) {\n const embedView = await ibiz.hub.getAppView(this.model.embeddedAppViewId);\n if (embedView.appDataEntityId) {\n const embedViewEntity = await ibiz.hub.getAppDataEntity(\n embedView.appDataEntityId\n );\n if (embedView && embedViewEntity) {\n this.parameters = [\n {\n parameterName: (_a = embedViewEntity.keyAppDEFieldId) == null ? void 0 : _a.toLowerCase(),\n pathName: (_b = embedViewEntity.codeName) == null ? void 0 : _b.toLowerCase()\n }\n ];\n } else {\n this.parameters = [];\n }\n }\n }\n }\n /**\n * 部件加载后处理\n *\n * @author chitanda\n * @date 2023-06-21 15:06:44\n * @param {MDCtrlLoadParams} args 本次请求参数\n * @param {IData[]} items 上游处理的数据(默认是后台数据)\n * @return {*} {Promise<IData[]>} 返回给后续处理的数据\n */\n async afterLoad(args, items) {\n await super.afterLoad(args, items);\n const tempPanelUiItems = this.state.panelUiItems.filter((UiItem) => {\n return UiItem.id.startsWith(\"mockId:\");\n });\n this.state.panelUiItems = [];\n this.doItems(items, tempPanelUiItems);\n if (this.model.panelStyle === \"TAB_TOP\" && this.state.panelUiItems.length > 0 && tempPanelUiItems.length === 0) {\n this.state.activeTab = this.state.panelUiItems[0].id;\n }\n return items;\n }\n /**\n * 处理UI所需数据\n * @param {ControlVO} arg\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-10-16 17:55:31\n */\n handlePanelItemParams(arg) {\n const [{ parameterName }] = this.parameters;\n const id = arg[parameterName] ? arg[parameterName] : \"mockId:\".concat(createUUID11());\n const item = {\n id,\n context: this.context.clone(),\n params: {},\n data: arg,\n srfmajortext: \"\"\n };\n this.parameters.forEach((parameter) => {\n const { parameterName: parameterName2, pathName } = parameter;\n if (arg[parameterName2] && !Object.is(arg[parameterName2], \"\")) {\n Object.assign(item.context, {\n [pathName]: arg[parameterName2]\n });\n }\n if (arg.srfmajortext && !Object.is(arg.srfmajortext, \"\")) {\n Object.assign(item, { srfmajortext: arg.srfmajortext });\n } else if (arg.srfuf === 0) {\n Object.assign(item, { srfmajortext: \"\\u8349\\u7A3F--\\u65B0\\u5EFA\" });\n }\n });\n return item;\n }\n /**\n * 处理数据\n * @param {ControlVO} datas\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-10-16 15:00:02\n */\n doItems(datas, tempPanelUiItems) {\n datas.forEach((arg) => {\n const item = this.handlePanelItemParams(arg);\n this.state.panelUiItems.push(item);\n });\n if (tempPanelUiItems) {\n this.state.panelUiItems.push(...tempPanelUiItems);\n }\n }\n /**\n * 处理添加\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-10-16 15:18:01\n */\n async handleAdd() {\n this.state.isNeedScroll = true;\n this.doItems([{ srfuf: 0 }]);\n if (this.model.panelStyle === \"TAB_TOP\") {\n this.state.activeTab = this.state.panelUiItems[this.state.panelUiItems.length - 1].id;\n }\n }\n /**\n * 处理删除\n * @param {IPanelUiItem} item\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-10-16 15:23:59\n */\n async handleDelete(item) {\n this.state.isNeedScroll = false;\n if (item.data.srfuf === 0) {\n const index = this.state.panelUiItems.findIndex((value) => {\n return value === item;\n });\n this.state.panelUiItems.splice(index, 1);\n } else {\n await this.remove({ data: [item.data], notRefresh: true });\n }\n }\n /**\n * 处理tab删除\n * @param {IPanelUiItem} item\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-10-17 14:21:57\n */\n async handleTabDelete(item, index) {\n let isBackToEnd = false;\n if (item.id === this.state.activeTab && index === this.state.panelUiItems.length - 1) {\n if (index > 0) {\n isBackToEnd = true;\n }\n }\n await this.handleDelete(item);\n if (isBackToEnd) {\n this.state.activeTab = this.state.panelUiItems[this.state.panelUiItems.length - 1].id;\n }\n }\n /**\n * 后台删除结束后界面删除逻辑\n *\n * @author lxm\n * @date 2022-09-06 19:09:10\n * @param {IData} data\n */\n afterRemove(data) {\n super.afterRemove(data);\n const index = this.state.panelUiItems.findIndex(\n (item) => item.data.srfkey === data.srfkey\n );\n if (index !== -1) {\n this.state.panelUiItems.splice(index, 1);\n }\n }\n /**\n * 视图数据变化\n * @param {DataChangeEvent} args\n * @return {*}\n * @author: zhujiamin\n * @Date: 2023-10-16 17:20:45\n */\n onViewDataChange(args, id) {\n if (args.eventName === \"onSaveSuccess\") {\n this.handleDataChange(args.data[0], id);\n }\n }\n /**\n * 处理数据变化\n *\n * @param {ControlVO} data\n * @returns {*} {Promise<void>}\n */\n async handleDataChange(data, id) {\n const panelUiItemIndex = this.state.panelUiItems.findIndex(\n (item) => item.id === id\n );\n if (panelUiItemIndex < 0) {\n throw new RuntimeError56(\"\\u7F16\\u8F91\\u89C6\\u56FE\\u9762\\u677F\\u90E8\\u4EF6UI\\u6570\\u636E\\u4E0D\\u5B58\\u5728\");\n }\n const tempUiItem = this.state.panelUiItems[panelUiItemIndex];\n if (tempUiItem.id.startsWith(\"mockId:\")) {\n this.state.panelUiItems[panelUiItemIndex] = this.handlePanelItemParams(data);\n } else {\n tempUiItem.srfmajortext = data.srfmajortext;\n }\n if (this.model.panelStyle === \"TAB_TOP\") {\n this.state.activeTab = this.state.panelUiItems[panelUiItemIndex].id;\n }\n }\n};\n\n// src/controller/control/map/map.service.ts\nimport { HttpResponse as HttpResponse6 } from \"@ibiz-template/core\";\nvar MapService = class extends MDControlService {\n async init(context) {\n await super.init(context);\n }\n /**\n * 加载所有地图项的数据\n * @author lxm\n * @date 2023-10-30 06:27:32\n * @param {IParams} context\n * @param {IParams} [params={}]\n * @return {*} {Promise<IHttpResponse<IMapData[]>>}\n */\n async fetchAll(context, params = {}) {\n var _a;\n const allData = [];\n if ((_a = this.model.sysMapItems) == null ? void 0 : _a.length) {\n const app = ibiz.hub.getApp(context.srfappid);\n await Promise.all(\n this.model.sysMapItems.map(async (mapItem) => {\n const { appDataEntityId, appDEDataSetId, customCond } = mapItem;\n const _context = context.clone();\n const _params = { ...params };\n if (customCond) {\n const customParams = ScriptFactory.execSingleLine(\n customCond\n );\n if (customParams) {\n const { navigateContexts, navigateParams } = parseUserParams(customParams);\n if (navigateContexts) {\n Object.assign(\n _context,\n convertNavData(navigateContexts, params, context)\n );\n }\n if (navigateParams) {\n Object.assign(\n _params,\n convertNavData(navigateContexts, params, context)\n );\n }\n }\n }\n const res = await app.deService.exec(\n appDataEntityId,\n appDEDataSetId,\n _context,\n _params\n );\n if (res.data) {\n allData.push(...res.data.map((item) => new MapData(item, mapItem)));\n }\n })\n );\n }\n return new HttpResponse6(allData, 200);\n }\n};\n\n// src/controller/control/map/map.controller.ts\nvar MapController = class extends MDControlController {\n initState() {\n super.initState();\n this.state.size = 1e3;\n this.state.pointData = [];\n this.state.areaData = [];\n this.calcDefaultOptions();\n }\n async onCreated() {\n await super.onCreated();\n this.service = new MapService(this.model);\n await this.service.init(this.context);\n }\n /**\n * 部件加载数据行为\n *\n * @author lxm\n * @date 2022-08-19 14:08:50\n */\n async load(args = {}) {\n if (this.state.isSimple) {\n return [];\n }\n await this.startLoading();\n try {\n const isInitialLoad = args.isInitialLoad === true;\n const { context } = this.handlerAbilityParams(args);\n const params = await this.getFetchParams(args == null ? void 0 : args.viewParam);\n context.srfareacode = this.state.areaCode;\n const res = await this.service.fetchAll(context, params);\n this.state.items = res.data;\n await this.afterLoad(args, res.data);\n this.state.isLoaded = true;\n await this._evt.emit(\"onLoadSuccess\", {\n isInitialLoad\n });\n } catch (error) {\n await this._evt.emit(\"onLoadError\", void 0);\n this.actionNotification(\"FETCHERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n this.actionNotification(\"FETCHSUCCESS\");\n return this.state.items;\n }\n async afterLoad(args, items) {\n const result = await super.afterLoad(args, items);\n const tempareaData = [];\n const temppointData = [];\n result.forEach((item) => {\n if (item._itemStyle === \"REGION\") {\n tempareaData.push(item);\n } else if (item._itemStyle === \"POINT\") {\n temppointData.push(item);\n }\n });\n this.state.pointData = temppointData;\n this.state.areaData = tempareaData;\n return result;\n }\n /**\n * 计算默认选项\n * @author lxm\n * @date 2023-11-01 03:23:33\n */\n calcDefaultOptions() {\n var _a;\n this.state.strAreaCode = false;\n this.state.defaultAreaCode = 1e5;\n if ((_a = this.model.controlParam) == null ? void 0 : _a.ctrlParams) {\n const { ctrlParams } = this.model.controlParam;\n Object.keys(ctrlParams).forEach((key) => {\n const value = ctrlParams[key];\n switch (key.toLowerCase()) {\n case \"defaultareacode\":\n this.state.defaultAreaCode = value;\n break;\n case \"strareacode\":\n this.state.strAreaCode = value === \"true\";\n break;\n case \"jsonbaseurl\":\n this.state.jsonBaseUrl = value;\n break;\n default:\n break;\n }\n });\n }\n this.state.defaultAreaCode = this.state.strAreaCode ? \"\".concat(this.state.defaultAreaCode) : Number(this.state.defaultAreaCode);\n this.state.areaCode = this.state.defaultAreaCode;\n }\n /**\n * 地图变更事件处理\n * @author lxm\n * @date 2023-10-31 05:28:36\n * @param {(string | number)} areaCode\n */\n onMapChange(areaCode) {\n this.state.areaCode = areaCode;\n this.load({});\n this.evt.emit(\"onMapChange\", { areaCode });\n }\n /**\n * 地图区域点击事件处理\n * @author lxm\n * @date 2023-10-31 05:30:54\n * @param {IMapData} mapData\n */\n onAreaClick(mapData) {\n this.evt.emit(\"onAreaClick\", { data: [mapData] });\n }\n /**\n * 地图散点点击事件处理\n * @author lxm\n * @date 2023-10-31 05:30:58\n * @param {IMapData} mapData\n */\n onPointClick(mapData) {\n this.evt.emit(\"onPointClick\", { data: [mapData] });\n }\n};\n\n// src/controller/control/report-panel/report-panel.service.ts\nvar ReportPanelService = class extends ControlService {\n /**\n * 执行查询报表数据的方法\n *\n * @param {IParams} context 上下文\n * @param {IParams} [params={}] 视图参数\n * @returns {*} {Promise<IHttpResponse>}\n */\n async fetch(context, params = {}) {\n var _a;\n this.dataEntity = await ibiz.hub.getAppDataEntity(\n this.model.appDataEntityId\n );\n const url = \"\".concat((_a = this.dataEntity.codeName2) == null ? void 0 : _a.toLowerCase(), \"/report?srfreporttag=\").concat(this.model.codeName);\n let res = await ibiz.net.request(url, {\n method: \"post\",\n data: params\n });\n res = this.handleResponse(res);\n return res;\n }\n};\n\n// src/controller/control/report-panel/generator/base-generator.ts\nvar ReportPanelBaseGenerator = class {\n /**\n * Creates an instance of ReportPanelBaseGenerator.\n * @param {IDEReportPanel} model\n * @memberof ReportPanelBaseGenerator\n */\n constructor(model) {\n /**\n * 配置\n *\n * @type {IData}\n * @memberof ReportPanelBaseGenerator\n */\n this.config = {};\n this.model = model;\n this.setConfig();\n }\n /**\n * 设置配置\n *\n * @protected\n * @memberof ReportPanelBaseGenerator\n */\n setConfig() {\n }\n /**\n * 初始化\n *\n * @param {IData} args\n * @memberof ReportPanelBaseGenerator\n */\n init(args) {\n this.protoRef = args;\n }\n /**\n * 加载\n *\n * @param {IData} data\n * @return {*} {Promise<IData>}\n * @memberof ReportPanelBaseGenerator\n */\n load(data) {\n return Promise.resolve(data);\n }\n};\n\n// src/controller/control/report-panel/generator/user-generator.ts\nvar UserReportPanelGenerator = class extends ReportPanelBaseGenerator {\n /**\n * 设置配置,临时使用,后续需更新 todo\n *\n * @protected\n * @memberof UserReportPanelGenerator\n */\n setConfig() {\n this.config = {\n CONFIG: {\n fitView: true,\n minZoom: 2e-3,\n layout: {\n type: \"force\",\n preventOverlap: true,\n linkDistance: 200,\n nodeSize: 80,\n nodeSpacing: 30\n }\n },\n NODELEGENDCONFIG: {\n valueField: \"source_lables||target_lables\",\n selected: \"{{return Object.is(data.source_lables, 'NEO4J_ZT') || Object.is(data.target_lables, 'NEO4J_ZT')}}\",\n codeListTag: \"web.nodetype\"\n },\n EDGELEGENDCONFIG: {\n valueField: \"relationship_type\",\n codeListTag: \"web.relationshiptype\"\n },\n PLUGINCONFIG: {\n gridConfig: {},\n miniMapConfig: {}\n },\n HOOKS: {\n nodeDataHook: \"{{ data.forEach(node => { const type = node.data.source_lables || node.data.target_lables; Object.assign(node, { label: node.data.name, size: 66, style: { fill: node.color },donutAttrs: { prop1: 10000, prop2: 10 },donutColorMap: { prop1: node.color, prop2: node.color },icon: {show: true,img: type === 'NEO4J_ZT' ? './assets/images/user-avatar.png' : './assets/images/phone.png',width: 40,height: 40}})})}}\",\n edgeDataHook: \"{{ data.forEach(edge => {Object.assign(edge, { label: edge.name })}) }}\"\n }\n };\n }\n /**\n * 加载\n *\n * @param {IData} data\n * @return {*} {Promise<IData>}\n * @memberof UserReportPanelGenerator\n */\n load(data) {\n if (this.protoRef) {\n this.protoRef.setData(data);\n }\n return Promise.resolve(data);\n }\n};\n\n// src/controller/control/report-panel/generator/user2-generator.ts\nvar User2ReportPanelGenerator = class extends ReportPanelBaseGenerator {\n};\n\n// src/controller/control/report-panel/generator/generator-factory.ts\nvar ReportPanelGeneratorFactory = class {\n /**\n * 获取报表面板生成器实例\n *\n * @static\n * @param {IDEReportPanel} model\n * @return {*} {ReportPanelBaseGenerator}\n * @memberof ReportPanelGeneratorFactory\n */\n static getInstance(model) {\n if (!model || !model.appDEReport || !model.appDEReport.reportType) {\n throw new Error(\"\\u62A5\\u8868\\u9762\\u677F\\u751F\\u6210\\u5668\\u5DE5\\u5382\\u53C2\\u6570\\u9519\\u8BEF\\uFF0C\\u62A5\\u8868\\u9762\\u677F\\u672A\\u6307\\u5B9A\\u62A5\\u8868\\u7C7B\\u578B\");\n }\n switch (model.appDEReport.reportType) {\n case \"USER\":\n return new UserReportPanelGenerator(model);\n case \"USER2\":\n return new User2ReportPanelGenerator(model);\n default:\n throw new Error(\n \"\\u6307\\u5B9A\\u62A5\\u8868\".concat(model.appDEReport.reportType, \"\\u7C7B\\u578B\\u62A5\\u8868\\u9762\\u677F\\u751F\\u6210\\u5668\\u6682\\u672A\\u5B9E\\u73B0\")\n );\n }\n }\n};\n\n// src/controller/control/report-panel/report-panel.controller.ts\nvar ReportPanelController = class extends ControlController {\n /**\n * 事件对象\n *\n * @readonly\n * @protected\n * @type {ControllerEvent<IReportPanelEvent>}\n * @memberof ReportPanelController\n */\n get _evt() {\n return this.evt;\n }\n /**\n * 初始化状态\n *\n * @protected\n * @memberof ReportPanelController\n */\n initState() {\n super.initState();\n this.state.data = {};\n this.state.searchParams = {};\n this.state.reportType = this.model.appDEReport && this.model.appDEReport.reportType || \"\";\n }\n /**\n * 初始化方法\n *\n * @protected\n * @returns {*} {Promise<void>}\n */\n async onCreated() {\n await super.onCreated();\n this.generator = ReportPanelGeneratorFactory.getInstance(this.model);\n this.dataEntity = await ibiz.hub.getAppDataEntity(\n this.model.appDataEntityId\n );\n this.service = new ReportPanelService(this.model);\n await this.service.init(this.context);\n }\n /**\n * 挂载\n *\n * @protected\n * @return {*} {Promise<void>}\n * @memberof ReportPanelController\n */\n async onMounted() {\n await super.onMounted();\n if (this.state.loadDefault) {\n this.load({ isInitialLoad: true });\n }\n }\n /**\n * 销毁\n *\n * @protected\n * @return {*} {Promise<void>}\n * @memberof ReportPanelController\n */\n onDestroyed() {\n return super.onDestroyed();\n }\n /**\n * 加载数据\n *\n * @public\n * @param {(MDCtrlLoadParams)} [args]\n * @return {*} {Promise<IData>}\n * @memberof ReportPanelController\n */\n async load(args = {}) {\n await this.startLoading();\n try {\n const { context } = this.handlerAbilityParams(args);\n const params = await this.getFetchParams(args == null ? void 0 : args.viewParam);\n const res = await this.service.fetch(context, params);\n this.state.data = res.data;\n await this.afterLoad(args, res.data);\n this.state.isLoaded = true;\n await this._evt.emit(\"onLoadSuccess\", void 0);\n } catch (error) {\n await this._evt.emit(\"onLoadError\", void 0);\n this.actionNotification(\"FETCHERROR\", {\n error\n });\n throw error;\n } finally {\n await this.endLoading();\n }\n this.actionNotification(\"FETCHSUCCESS\");\n return this.state.data;\n }\n /**\n * 部件加载后处理\n *\n * @author chitanda\n * @date 2023-06-21 15:06:44\n * @param {MDCtrlLoadParams} args 本次请求参数\n * @param {IData[]} items 上游处理的数据(默认是后台数据)\n * @return {*} {Promise<IData[]>} 返回给后续处理的数据\n */\n async afterLoad(args, data) {\n return data;\n }\n /**\n * 获取请求过滤参数(整合了视图参数,各种过滤条件,排序,分页)\n * @param {IParams} [extraParams] 额外视图参数,附加在最后\n * @return {*} {Promise<IParams>}\n */\n async getFetchParams(extraParams) {\n const resultParams = {\n ...this.params\n };\n await this._evt.emit(\"onBeforeLoad\", void 0);\n Object.assign(resultParams, {\n ...this.state.searchParams\n });\n if (extraParams) {\n Object.assign(resultParams, extraParams);\n }\n return resultParams;\n }\n /**\n * 报表数据\n *\n * @return {*} {IData[]}\n * @memberof ReportPanelController\n */\n getData() {\n return [this.state.data];\n }\n /**\n * 部件刷新,走初始加载\n * @date 2023-05-23 03:42:41\n */\n async refresh() {\n await this.load({ isInitialLoad: false });\n }\n};\n\n// src/controller/hub.controller.ts\nvar HubController = class {\n constructor() {\n this.session = {};\n }\n login(loginName, password) {\n return ibiz.auth.login(loginName, password);\n }\n logout() {\n return ibiz.auth.logout();\n }\n};\n\n// src/app-hub.ts\nvar AppHub = class {\n constructor() {\n /**\n * 多应用模式下,应用模型转换器\n *\n * @author chitanda\n * @date 2023-04-23 15:04:06\n * @type {Convert}\n */\n this.convert = new Convert();\n /**\n * 全局控制器,放置全局性的功能性方法\n *\n * @author chitanda\n * @date 2023-08-21 15:08:48\n */\n this.controller = new HubController();\n /**\n * 应用总集\n *\n * @author chitanda\n * @date 2022-12-21 14:12:45\n * @protected\n * @type {Map<string, Application>}\n */\n this.appMap = /* @__PURE__ */ new Map();\n /**\n * 实例化的应用模型\n *\n * @author chitanda\n * @date 2023-04-17 23:04:45\n * @protected\n * @type {Map<string, IApplication>}\n */\n this.apps = /* @__PURE__ */ new Map();\n /**\n * 当前基座下所有的应用视图\n *\n * @author chitanda\n * @date 2023-04-17 11:04:20\n * @protected\n * @type {Map<string, string>} Map<视图 id, 视图所属应用>\n */\n this.view2appMap = /* @__PURE__ */ new Map();\n /**\n * 实例化的应用视图模型\n *\n * @author chitanda\n * @date 2023-04-17 23:04:00\n * @protected\n * @type {Map<string, IAppView>}\n */\n this.views = /* @__PURE__ */ new Map();\n /**\n * 应用实体实例模型\n *\n * @author chitanda\n * @date 2023-04-17 23:04:32\n * @protected\n * @type {Map<string, Map<string, IAppDataEntity>>}\n */\n this.dataEntities = /* @__PURE__ */ new Map();\n /**\n * hub配置信息服务\n * @author lxm\n * @date 2023-07-03 07:12:05\n */\n this.config = new AppConfigService();\n /**\n * 默认首页视图名称\n *\n * @author chitanda\n * @date 2023-04-19 20:04:22\n * @type {string}\n */\n this.defaultAppIndexViewName = \"Index\";\n }\n /**\n * 计算应用视图 标识\n *\n * @author chitanda\n * @date 2023-04-20 18:04:48\n * @protected\n * @param {string} tag\n * @return {*} {string}\n */\n calcAppViewId(tag) {\n let id = \"\";\n if (tag.indexOf(\".\") !== -1) {\n const ids = tag.split(\".\");\n id = ids[ids.length - 1];\n } else {\n id = tag.toLowerCase();\n }\n return id;\n }\n /**\n * 注册模型加载适配器\n *\n * @author chitanda\n * @date 2023-04-17 23:04:14\n * @param {ModelLoaderProvider} provider\n */\n registerModelLoaderProvider(provider) {\n this.modelLoaderProvider = provider;\n }\n /**\n * 注册应用实例模型\n *\n * @author chitanda\n * @date 2023-04-17 23:04:29\n * @param {IApplication} model\n */\n registerApp(model) {\n this.apps.set(model.codeName, model);\n }\n /**\n * 注册应用视图实例模型\n *\n * @author chitanda\n * @date 2023-04-17 23:04:42\n * @param {IAppView} model\n */\n registerAppView(model) {\n this.views.set(model.codeName, model);\n }\n /**\n * 注册应用实体\n *\n * @author chitanda\n * @date 2023-04-17 23:04:24\n * @param {IAppDataEntity} model\n * @param {string} [appId=ibiz.env.appId]\n */\n registerAppDataEntity(model, appId = ibiz.env.appId) {\n if (!this.dataEntities.has(appId)) {\n this.dataEntities.set(appId, /* @__PURE__ */ new Map());\n }\n const map = this.dataEntities.get(appId);\n map.set(model.id, model);\n }\n /**\n * 设置应用视图所属应用\n *\n * @author chitanda\n * @date 2023-04-17 23:04:37\n * @param {string} tag 视图 codeName 或者视图 id\n * @param {string} [appId=ibiz.env.appId]\n */\n setAppView(tag, appId = ibiz.env.appId) {\n const id = this.calcAppViewId(tag);\n this.view2appMap.set(id, appId);\n }\n /**\n * 判断应用视图是否存在\n *\n * @author chitanda\n * @date 2023-04-20 18:04:00\n * @param {string} tag 视图 codeName 或者视图 id\n * @return {*} {boolean}\n */\n hasAppView(tag) {\n const id = this.calcAppViewId(tag);\n return this.view2appMap.has(id);\n }\n /**\n * 获取应用样式\n *\n * @author chitanda\n * @date 2023-09-06 10:09:22\n * @param {string} appId\n * @return {*} {(Promise<string | null>)}\n */\n async getAppStyle(appId) {\n if (this.modelLoaderProvider) {\n return this.modelLoaderProvider.getAppStyle(appId);\n }\n return null;\n }\n /**\n * 根据视图代码名称查找视图\n *\n * @author chitanda\n * @date 2023-04-17 21:04:14\n * @param {string} tag 视图 codeName 或者视图 id\n * @return {*} {Promise<IAppView>}\n */\n async getAppView(tag) {\n const id = this.calcAppViewId(tag);\n const appId = this.view2appMap.get(id) || ibiz.env.appId;\n if (!this.appMap.has(appId)) {\n await this.createApp(appId);\n }\n if (this.views.has(id)) {\n return this.views.get(id);\n }\n if (this.modelLoaderProvider) {\n const appView = await this.modelLoaderProvider.getAppView(appId, id);\n this.registerAppView(appView);\n return appView;\n }\n throw new RuntimeError57(\"\\u89C6\\u56FE[\".concat(id, \"]\\u4E0D\\u5B58\\u5728\"));\n }\n /**\n * 根据应用实体代码名称查找应用视图\n *\n * @author chitanda\n * @date 2023-04-17 23:04:08\n * @param {string} name\n * @param {string} [appId=ibiz.env.appId]\n * @return {*} {Promise<IAppDataEntity>}\n */\n async getAppDataEntity(id, appId = ibiz.env.appId) {\n if (this.dataEntities.has(appId)) {\n const map = this.dataEntities.get(appId);\n if (map.has(id)) {\n return map.get(id);\n }\n }\n if (this.modelLoaderProvider) {\n let entity;\n if (id.indexOf(\".\") !== -1) {\n entity = await this.modelLoaderProvider.getAppDataEntity(appId, id);\n } else {\n entity = await this.modelLoaderProvider.getAppDataEntityByCodeName(\n appId,\n id\n );\n }\n this.registerAppDataEntity(entity, appId);\n return entity;\n }\n throw new RuntimeError57(\"\\u672A\\u627E\\u5230\\u5E94\\u7528\\u5B9E\\u4F53[\".concat(id, \"]\"));\n }\n /**\n * 新建 hub 应用\n *\n * @author chitanda\n * @date 2023-04-17 21:04:11\n * @param {string} id\n * @return {*} {Promise<Application>}\n */\n async createApp(id) {\n if (this.appMap.has(id)) {\n return this.appMap.get(id);\n }\n let appModel;\n if (this.apps.has(id)) {\n appModel = this.apps.get(id);\n } else if (this.modelLoaderProvider) {\n appModel = await this.modelLoaderProvider.getApp(id);\n this.registerApp(appModel);\n } else {\n throw new RuntimeError57(\"\\u672A\\u627E\\u5230\\u5E94\\u7528[\".concat(id, \"]\\u6A21\\u578B\"));\n }\n const app = new Application(appModel);\n this.appMap.set(id, app);\n await app.init();\n if (!this.configCache) {\n this.configCache = new ConfigService(\n ibiz.env.appId,\n \"PSSysHub\",\n \"Global\"\n );\n }\n return app;\n }\n /**\n * 异步获取应用对象,用于不确定应用是否已经加载的情况\n *\n * @author chitanda\n * @date 2023-04-17 21:04:41\n * @param {string} [key=ibiz.env.appId]\n * @return {*} {Promise<IAppService>}\n */\n async getAppAsync(key = ibiz.env.appId) {\n return this.createApp(key);\n }\n /**\n * 根据应用 id 或应用模型获取应用实例\n *\n * @author chitanda\n * @date 2023-04-17 22:04:42\n * @param {(string | IApplication)} [app]\n * @return {*} {IAppService}\n */\n getApp(app) {\n let key = null;\n if (app) {\n if (app instanceof Object) {\n key = app.id;\n } else {\n key = app;\n }\n } else {\n key = ibiz.env.appId;\n }\n return this.appMap.get(key);\n }\n};\n\n// src/engine/engine-factory.ts\nvar EngineFactory = class {\n constructor() {\n /**\n * 视图引擎classMap\n * @author lxm\n * @date 2023-04-25 07:28:36\n * @protected\n */\n this.viewEngines = /* @__PURE__ */ new Map();\n }\n /**\n * 注册视图引擎\n * @author lxm\n * @date 2023-04-25 07:40:23\n * @param {string} key\n * @param {IViewEngine} engine\n */\n register(key, engine) {\n this.viewEngines.set(key, engine);\n }\n /**\n * 注销视图引擎\n * @author lxm\n * @date 2023-04-25 07:40:32\n * @param {string} key\n */\n unRegister(key) {\n this.viewEngines.delete(key);\n }\n /**\n * 获取视图引擎\n * @author lxm\n * @date 2023-05-04 02:26:34\n * @param {IAppView} model\n * @param {IViewController} viewController 视图控制器\n * @return {*} {(ViewEngine | undefined)}\n */\n getEngine(model, ...args) {\n const { engineType, engineCat } = model;\n const key = \"\".concat(engineCat, \"_\").concat(engineType);\n const func = this.viewEngines.get(key);\n if (func) {\n return func(...args);\n }\n ibiz.log.error(\"\\u6CA1\\u6709\".concat(key, \"\\u5BF9\\u5E94\\u7684\\u5F15\\u64CE\"), model);\n }\n};\n\n// src/engine/view-base.engine.ts\nimport { RuntimeError as RuntimeError58 } from \"@ibiz-template/core\";\nvar ViewEngineBase = class {\n /**\n * 构造函数在视图控制器的构造函数逻辑内部执行\n * @author lxm\n * @date 2023-05-06 08:18:28\n * @param {IViewController} view 视图控制器\n */\n constructor(view) {\n this.view = view;\n this.initViewState();\n }\n /**\n * 获取工具栏控制器\n * @author lxm\n * @date 2023-05-22 03:47:43\n * @readonly\n * @protected\n * @type {(IToolbarController | undefined)}\n */\n get toolbar() {\n return this.view.getController(\"toolbar\");\n }\n /**\n * 左工具栏\n * @author lxm\n * @date 2023-06-20 02:36:45\n * @readonly\n * @protected\n * @type {(IToolbarController | undefined)}\n */\n get leftToolbar() {\n return this.view.getController(\"lefttoolbar\");\n }\n /**\n * 右工具栏\n * @author lxm\n * @date 2023-06-20 02:36:45\n * @readonly\n * @protected\n * @type {(IToolbarController | undefined)}\n */\n get rightToolbar() {\n return this.view.getController(\"righttoolbar\");\n }\n /**\n * 右工具栏\n * @author lxm\n * @date 2023-06-20 02:36:45\n * @readonly\n * @protected\n * @type {(IToolbarController | undefined)}\n */\n get footerToolbar() {\n return this.view.getController(\"footertoolbar\");\n }\n /**\n * 获取视图布局面板控制器\n * @author lxm\n * @date 2023-05-22 03:47:43\n * @readonly\n * @protected\n * @type {(IToolbarController | undefined)}\n */\n get viewLayoutPanel() {\n return this.view.layoutPanel;\n }\n async onCreated() {\n const { childNames } = this.view;\n childNames.push(\"captionbar\", \"toolbar\");\n }\n async onMounted() {\n var _a, _b;\n const { model, childNames } = this.view;\n ibiz.log.debug(\"\".concat(model.id, \"\\u7684\\u5B50\\u7EC4\\u4EF6\\uFF1A\").concat(childNames.join(\";\"), \"\\u90FD\\u5DF2mounted\"));\n const showHeader = this.calcViewHeaderVisible();\n if (!showHeader) {\n const controller = (_a = this.viewLayoutPanel) == null ? void 0 : _a.panelItems.view_header;\n if (controller) {\n controller.state.visible = false;\n }\n }\n if (ibiz.env.isMob) {\n const showFooter = this.calcViewFooterVisible();\n if (!showFooter) {\n const controller = (_b = this.viewLayoutPanel) == null ? void 0 : _b.panelItems.view_footer;\n if (controller) {\n controller.state.visible = false;\n }\n }\n }\n }\n async onDestroyed() {\n }\n async call(key, _args) {\n if (key === \"GetData\" /* GET_DATA */) {\n return this.getData();\n }\n return void 0;\n }\n /**\n * 初始化视图state\n * @author lxm\n * @date 2023-05-15 06:42:25\n * @protected\n */\n initViewState() {\n }\n /**\n * 获取视图数据部件的数据\n * @author lxm\n * @date 2023-05-08 12:46:19\n * @return {*} {IData[]}\n */\n getData() {\n return [];\n }\n /**\n * 计算视图头部元素的显示与否\n * 所有部件容器名称均为:view_部件名称\n *\n * @author lxm\n * @date 2023-06-06 07:16:26\n * @protected\n */\n calcViewHeaderVisible() {\n var _a, _b, _c, _d;\n let showHeader = false;\n const { model } = this.view;\n if (model.showCaptionBar === false) {\n const controller = (_a = this.viewLayoutPanel) == null ? void 0 : _a.panelItems.view_captionbar;\n if (controller) {\n controller.state.visible = false;\n }\n } else {\n showHeader = true;\n }\n if (ibiz.env.isMob) {\n if (!this.leftToolbar) {\n const controller = (_b = this.viewLayoutPanel) == null ? void 0 : _b.panelItems.lefttoolbar;\n if (controller) {\n controller.state.visible = false;\n }\n } else {\n showHeader = true;\n }\n if (!this.rightToolbar) {\n const controller = (_c = this.viewLayoutPanel) == null ? void 0 : _c.panelItems.righttoolbar;\n if (controller) {\n controller.state.visible = false;\n }\n } else {\n showHeader = true;\n }\n } else if (!this.toolbar) {\n const controller = (_d = this.viewLayoutPanel) == null ? void 0 : _d.panelItems.view_toolbar;\n if (controller) {\n controller.state.visible = false;\n }\n } else {\n showHeader = true;\n }\n return showHeader;\n }\n /**\n * 计算底部的显示与否\n * @author lxm\n * @date 2023-06-20 02:45:17\n * @protected\n * @return {*} {boolean}\n */\n calcViewFooterVisible() {\n let showFooter = false;\n if (this.footerToolbar) {\n showFooter = true;\n }\n return showFooter;\n }\n /**\n * 加载实体数据\n * @author lxm\n * @date 2023-07-13 09:59:08\n * @return {*} {Promise<void>}\n */\n async loadEntityData() {\n const { appDataEntityId } = this.view.model;\n const { evt, context, params } = this.view;\n if (!appDataEntityId) {\n throw new RuntimeError58(\"\\u8BE5\\u89C6\\u56FE\\u6CA1\\u6709\\u5B9E\\u4F53\\uFF0C\\u65E0\\u6CD5\\u52A0\\u8F7D\\u5B9E\\u4F53\\u6570\\u636E\");\n }\n const app = ibiz.hub.getApp(context.srfappid);\n const res = await app.deService.exec(\n appDataEntityId,\n \"get\",\n context,\n params\n );\n const { data } = res;\n if (data) {\n this.view.state.srfactiveviewdata = data;\n evt.emit(\"onDataChange\", { actionType: \"LOAD\", data: [data] });\n if (data.srfkey) {\n evt.emit(\"onViewInfoChange\", { dataInfo: data.srfmajortext || \"\" });\n }\n }\n }\n};\n\n// src/engine/md-view.engine.ts\nimport { RuntimeModelError as RuntimeModelError61 } from \"@ibiz-template/core\";\nimport { clone as clone23 } from \"ramda\";\nvar MDViewEngine = class extends ViewEngineBase {\n /**\n * 多数据部件名称\n * @author lxm\n * @date 2023-06-07 09:17:19\n * @readonly\n * @type {string}\n */\n get xdataControlName() {\n return this.view.model.xdataControlName;\n }\n /**\n * 搜索表单控制器\n * @author lxm\n * @date 2023-05-22 01:56:25\n * @readonly\n */\n get searchForm() {\n return this.view.getController(\"searchform\");\n }\n /**\n * 搜索栏控制器\n * @author lxm\n * @date 2023-05-22 01:56:25\n * @readonly\n */\n get searchBar() {\n return this.view.getController(\"searchbar\");\n }\n /**\n * 数据部件控制器(多数据)\n * @author lxm\n * @date 2023-05-22 01:56:35\n * @readonly\n * @type {IMDControlController}\n */\n get xdataControl() {\n return this.view.getController(\n this.xdataControlName\n );\n }\n async onCreated() {\n await super.onCreated();\n const { childNames } = this.view;\n childNames.push(this.xdataControlName, \"searchform\", \"searchbar\");\n if (this.xdataControlName) {\n if (!this.view.slotProps[this.xdataControlName]) {\n this.view.slotProps[this.xdataControlName] = {};\n }\n this.view.slotProps[this.xdataControlName].loadDefault = false;\n }\n }\n async onMounted() {\n await super.onMounted();\n const { model } = this.view;\n this.xdataControl.evt.on(\"onActive\", this.onXDataActive.bind(this));\n this.xdataControl.evt.on(\"onSelectionChange\", async (event) => {\n var _a;\n (_a = this.toolbar) == null ? void 0 : _a.calcButtonState(\n event.data[0],\n this.xdataControl.model.appDataEntityId\n );\n });\n this.xdataControl.evt.on(\"onBeforeLoad\", () => {\n this.xdataControl.state.searchParams = this.getSearchParams();\n });\n this.xdataControl.evt.on(\"onLoadSuccess\", (event) => {\n this.view.evt.emit(\"onDataChange\", { ...event, actionType: \"LOAD\" });\n });\n this.xdataControl.evt.on(\"onRemoveSuccess\", (event) => {\n this.view.evt.emit(\"onDataChange\", { ...event, actionType: \"REMOVE\" });\n });\n this.xdataControl.evt.on(\"onSaveSuccess\", (event) => {\n this.view.evt.emit(\"onDataChange\", { ...event, actionType: \"SAVE\" });\n });\n const controller = this.viewLayoutPanel.panelItems.view_searchform;\n if (controller) {\n const formExists = !!this.searchForm;\n controller.state.keepAlive = formExists;\n controller.state.visible = formExists && !!model.expandSearchForm;\n }\n if (this.searchForm) {\n this.searchForm.evt.on(\"onSearch\", () => {\n this.reLoad();\n });\n }\n if (this.searchBar) {\n this.searchBar.evt.on(\"onSearch\", () => {\n this.reLoad();\n });\n }\n if (!this.view.state.noLoadDefault && model.loadDefault) {\n this.load();\n }\n }\n /**\n * 多数据部件激活事件处理\n * @author lxm\n * @date 2023-08-31 02:53:37\n * @protected\n * @param {EventBase} event\n * @return {*} {Promise<void>}\n */\n async onXDataActive(event) {\n const res = await this.openData(event);\n if (!res.cancel) {\n this.refresh();\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n async call(key, args) {\n if (key === \"ToggleFilter\" /* TOGGLE_FILTER */) {\n this.toggleFilter();\n return null;\n }\n if (key === \"Edit\" /* EDIT */ || key === \"View\" /* VIEW */) {\n return this.openData(args);\n }\n if (key === \"New\" /* NEW */) {\n return this.newData(args);\n }\n if (key === \"Remove\" /* REMOVE */) {\n await this.remove(args);\n return null;\n }\n if (key === \"Import\" /* IMPORT */) {\n await this.importData();\n return null;\n }\n if (key === \"Refresh\" /* REFRESH */) {\n await this.refresh();\n return null;\n }\n if (key === \"ExportExcel\" /* EXPORT_EXCEL */) {\n await this.exportData(args);\n return null;\n }\n if (key === \"Search\" /* SEARCH */) {\n await this.searchForm.search();\n return null;\n }\n if (key === \"Reset\" /* RESET */) {\n await this.searchForm.reset();\n return null;\n }\n if (key === \"Copy\" /* COPY */) {\n this.copy(args);\n return null;\n }\n if (key === \"Load\" /* LOAD */) {\n this.load(args);\n return null;\n }\n return super.call(key, args);\n }\n getData() {\n return this.xdataControl.getData();\n }\n /**\n * 打开编辑数据视图\n *\n * @author lxm\n * @date 2022-09-01 18:09:19\n * @param {IData} data\n * @param {MouseEvent} [event]\n * @returns {*}\n */\n async openData(args) {\n var _a, _b;\n const { data, event } = args;\n const context = (args.context || this.view.context).clone();\n const params = args.params || this.view.params;\n const deName = ((_a = data[0].srfdecodename) == null ? void 0 : _a.toLowerCase()) || calcDeCodeNameById(this.xdataControl.model.appDataEntityId);\n context[deName.toLowerCase()] = data[0].srfkey;\n const result = await ((_b = this.view.scheduler) == null ? void 0 : _b.triggerCustom(\"opendata\", {\n context,\n params,\n data,\n event,\n view: this.view\n }));\n if (result === -1) {\n throw new RuntimeModelError61(this.view.model, \"\\u7F3A\\u5C11newdata\\u7684\\u89C6\\u56FE\\u903B\\u8F91\");\n } else {\n return {\n cancel: !result.ok\n };\n }\n }\n /**\n * 打开编辑数据视图\n *\n * @author lxm\n * @date 2022-09-01 18:09:19\n * @param {IData} data\n * @param {MouseEvent} [event]\n * @returns {*}\n */\n async newData(args) {\n var _a, _b, _c;\n const { data, event, copyMode } = args;\n const openAppViewLogic = (_b = (_a = this.view.model.viewLayoutPanel) == null ? void 0 : _a.appViewLogics) == null ? void 0 : _b.find(\n (item) => item.id === \"newdata\"\n );\n if (!openAppViewLogic) {\n throw new RuntimeModelError61(this.view.model, \"\\u7F3A\\u5C11newdata\\u7684\\u89C6\\u56FE\\u903B\\u8F91\");\n }\n const params = clone23(this.view.params);\n if (copyMode) {\n params.srfcopymode = copyMode;\n }\n const result = await ((_c = this.view.scheduler) == null ? void 0 : _c.triggerCustom(\"newdata\", {\n context: this.view.context,\n params,\n data,\n event,\n view: this.view\n }));\n if (result === -1) {\n throw new RuntimeModelError61(this.view.model, \"\\u7F3A\\u5C11newdata\\u7684\\u89C6\\u56FE\\u903B\\u8F91\");\n } else {\n return {\n cancel: !result.ok\n };\n }\n }\n /**\n * 视图删除\n *\n * @author lxm\n * @date 2022-08-30 19:08:59\n * @returns {*} {Promise<void>}\n */\n async remove(args) {\n await this.xdataControl.remove(args);\n }\n /**\n * 视图加载\n * @author lxm\n * @date 2023-05-22 03:17:33\n * @return {*} {Promise<void>}\n */\n async load(args = {}) {\n await this.xdataControl.load({ isInitialLoad: true, ...args });\n }\n /**\n * 视图刷新\n * @author lxm\n * @date 2023-05-22 03:17:33\n * @return {*} {Promise<void>}\n */\n async refresh() {\n await this.xdataControl.refresh();\n }\n /**\n * 视图重新加载\n * @author lxm\n * @date 2023-05-22 03:17:33\n * @return {*} {Promise<void>}\n */\n async reLoad() {\n await this.xdataControl.load({ isInitialLoad: true });\n }\n /**\n * 获取搜索相关的查询参数\n * @author lxm\n * @date 2023-05-22 03:26:04\n * @return {*} {IParams}\n */\n getSearchParams() {\n const params = {};\n if (this.searchForm) {\n Object.assign(params, this.searchForm.getFilterParams());\n }\n if (this.searchBar) {\n Object.assign(params, this.searchBar.getFilterParams());\n }\n return params;\n }\n /**\n * 导入数据\n * @author lxm\n * @date 2023-05-22 03:28:26\n * @return {*} {Promise<void>}\n */\n async importData() {\n await this.xdataControl.importData();\n }\n /**\n * 导出数据\n * @author lxm\n * @date 2023-05-22 03:29:06\n * @param {{ event: MouseEvent }} args\n * @return {*} {Promise<void>}\n */\n async exportData(args) {\n await this.xdataControl.exportData(args);\n }\n /**\n * 复制数据\n *\n * @author zk\n * @date 2023-06-01 12:06:58\n * @memberof MDViewEngine\n */\n async copy(args) {\n this.newData(Object.assign(args, { copyMode: true }));\n }\n calcViewHeaderVisible() {\n let showHeader = super.calcViewHeaderVisible();\n if (!this.searchBar || !this.searchBar.state.visible) {\n const controller = this.viewLayoutPanel.panelItems.view_searchbar;\n if (controller) {\n controller.state.visible = false;\n }\n } else {\n showHeader = true;\n }\n return showHeader;\n }\n /**\n * 切换搜索表单的显示与否\n * @author lxm\n * @date 2023-06-06 09:20:35\n * @protected\n */\n toggleFilter() {\n if (this.searchForm) {\n const searchformContainer = this.viewLayoutPanel.panelItems.view_searchform;\n if (searchformContainer) {\n searchformContainer.state.visible = !searchformContainer.state.visible;\n }\n }\n }\n};\n\n// src/utils/error-handler/default-error-handler.ts\nimport {\n RuntimeModelError as RuntimeModelError62,\n ModelError as ModelError30,\n HttpError as HttpError4,\n NoticeError as NoticeError2,\n RuntimeError as RuntimeError59\n} from \"@ibiz-template/core\";\nvar DefaultErrorHandler = class {\n handle(error) {\n if (error instanceof RuntimeModelError62 || error instanceof ModelError30) {\n ibiz.message.error(error.message, 10, true);\n } else if (error instanceof HttpError4) {\n if (error.status === 401) {\n ibiz.message.error(\"\\u6CA1\\u6709\\u6CE8\\u518C\\u65E0\\u6743\\u9650\\u9519\\u8BEF\\u5904\\u7406\\u5668\");\n } else {\n ibiz.notification.error({\n title: \"\",\n desc: error.message,\n duration: 10\n });\n }\n } else if (error instanceof NoticeError2) {\n ibiz.message.error(error.message, error.duration, error.duration === 0);\n } else if (error instanceof RuntimeError59) {\n ibiz.message.error(error.message, 10, true);\n }\n ibiz.log.error(error);\n return true;\n }\n};\n\n// src/utils/error-handler/error-handler-center.ts\nvar ErrorHandlerCenter = class {\n constructor() {\n /**\n * 处理器集合\n * @author lxm\n * @date 2023-09-26 04:56:29\n * @type {IErrorHandler[]}\n */\n this.handlers = [];\n }\n /**\n * 注册处理器(后注册的优先级更高)\n * @author lxm\n * @date 2023-09-26 04:59:06\n * @param {IErrorHandler} handler\n */\n register(handler) {\n this.handlers.unshift(handler);\n }\n /**\n * 处理单个报错\n * @author lxm\n * @date 2023-09-26 05:18:18\n * @protected\n * @param {unknown} error\n */\n handleSingle(error) {\n const find = this.handlers.find((item) => {\n return !!item.handle(error);\n });\n if (!find) {\n ibiz.log.error(\"\\u6CA1\\u6709\\u627E\\u5230\\u80FD\\u5904\\u7406\\u8BE5\\u9519\\u8BEF\\u7684\\u5904\\u7406\\u5668\", error);\n }\n }\n /**\n * 按顺序检测处理器,最先满足条件的处理该异常\n * @author lxm\n * @date 2023-09-26 05:01:08\n * @param {unknown} error\n */\n handle(error) {\n if (error instanceof Array) {\n error.forEach((item) => {\n this.handleSingle(item);\n });\n } else {\n this.handleSingle(error);\n }\n }\n};\n\n// src/global/global-util/global-util.ts\nvar GlobalUtil = class {\n constructor() {\n /**\n * 布局面板\n *\n * @author chitanda\n * @date 2023-04-27 21:04:46\n */\n this.layoutPanel = new LayoutPanelUtil();\n /**\n * 文本工具\n *\n * @author zhanghengfeng\n * @date 2023-08-24 11:08:28\n */\n this.text = new TextUtil();\n /**\n * handlebars 工具\n *\n * @author chitanda\n * @date 2023-08-28 23:08:59\n */\n this.hbs = new HandlebarsUtil();\n /**\n * 直接值工具\n *\n * @author zhujiamin\n * @date 2023-08-24 11:08:28\n */\n this.rawValue = new RawValueUtil();\n /**\n * 执行界面行为\n *\n * @author chitanda\n * @date 2023-11-28 19:11:26\n */\n this.action = UIActionUtil;\n /**\n * 错误处理中心\n * @author lxm\n * @date 2023-09-26 05:04:26\n */\n this.error = new ErrorHandlerCenter();\n this.error.register(new DefaultErrorHandler());\n }\n /**\n * 显示应用级别的加载提示\n *\n * @author chitanda\n * @date 2023-09-08 10:09:43\n */\n showAppLoading() {\n const el = document.getElementById(\"app-loading-x\");\n if (el) {\n el.style.display = \"none\";\n }\n }\n /**\n * 隐藏应用级别的加载提示\n *\n * @author chitanda\n * @date 2023-09-08 10:09:15\n */\n hiddenAppLoading() {\n setTimeout(() => {\n const el = document.getElementById(\"app-loading-x\");\n if (el) {\n el.style.display = \"none\";\n }\n }, 300);\n }\n};\n\n// src/logic-scheduler/executor/logic-executor.ts\nimport { RuntimeError as RuntimeError60 } from \"@ibiz-template/core\";\nvar LogicExecutor = class {\n /**\n * @author lxm\n * @date 2023-06-25 07:32:57\n * @param {ISchedulerLogic} logic 逻辑\n */\n constructor(logic, scheduler) {\n this.logic = logic;\n this.scheduler = scheduler;\n this.type = logic.logicType;\n }\n /**\n * 执行逻辑\n * @author lxm\n * @date 2023-06-26 02:55:40\n * @param {IUILogicParams} _executeParams 执行参数\n * @return {*} {*}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n execute(_executeParams) {\n throw new RuntimeError60(\"Method not implemented.\");\n }\n /**\n * 销毁方法\n * @author lxm\n * @date 2023-07-17 11:48:54\n */\n destroy() {\n }\n};\n\n// src/logic-scheduler/executor/logic-executor-factory.ts\nimport { ModelError as ModelError31 } from \"@ibiz-template/core\";\nvar LogicExecutorFactory = class {\n constructor() {\n /**\n * 构造回调方法集合\n * @author lxm\n * @date 2023-06-25 06:53:31\n */\n this.constructorMap = /* @__PURE__ */ new Map();\n }\n /**\n * 注册\n * @author lxm\n * @date 2023-06-25 06:54:17\n * @param {string} key 注册标识\n * @param {(logic: ISchedulerLogic, scheduler: LogicScheduler) => LogicExecutor} callback\n */\n register(key, callback) {\n this.constructorMap.set(key, callback);\n }\n /**\n * 创建执行器实例\n * @author lxm\n * @date 2023-06-25 06:59:51\n * @param {ISchedulerLogic} logic\n * @return {*}\n */\n createExecutor(logic, scheduler) {\n const constructor = this.constructorMap.get(logic.logicType);\n if (!constructor) {\n throw new ModelError31(logic, \"\\u903B\\u8F91\\u7C7B\\u578B \".concat(logic.logicType, \" \\u6682\\u672A\\u652F\\u6301\\uFF01\"));\n }\n return constructor(logic, scheduler);\n }\n};\n\n// src/logic-scheduler/executor/script-executor.ts\nvar ScriptExecutor = class extends LogicExecutor {\n constructor() {\n super(...arguments);\n /**\n * 初始化完成\n * @author lxm\n * @date 2023-08-21 04:27:38\n * @type {boolean}\n */\n this.initialized = false;\n }\n /**\n * 执行参数转换成脚本执行作用域参数\n * @author lxm\n * @date 2023-06-26 03:29:24\n * @param {IUILogicParams} _executeParams\n * @return {*} {IData[]}\n */\n convertScriptArgs(executeParams) {\n return executeParams;\n }\n /**\n * 初始化脚本执行器\n * @author lxm\n * @date 2023-06-26 03:27:50\n * @param {string[]} paramKeys 脚本作用域参数键值和顺序\n * @param {(executeParams: IUILogicParams) => IData[]} convertFun 脚本参数转换方法\n */\n init(paramKeys, convertFun, options) {\n this.convertScriptArgs = convertFun;\n const code = this.logic.scriptCode;\n this.scriptFn = ScriptFactory.createScriptFn(paramKeys, code, options);\n this.initialized = true;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n execute(executeParams) {\n const scriptArgs = this.convertScriptArgs(executeParams);\n return this.scriptFn.exec(scriptArgs);\n }\n};\n\n// src/logic-scheduler/executor/app-de-ui-logic-executor.ts\nimport { RuntimeModelError as RuntimeModelError63 } from \"@ibiz-template/core\";\nvar AppDEUILogicExecutor = class extends LogicExecutor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n execute(executeParams) {\n const { appDEUILogicId, appDataEntityId } = this.logic;\n if (!appDEUILogicId) {\n throw new RuntimeModelError63(this.logic, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5B9E\\u4F53\\u754C\\u9762\\u903B\\u8F91\");\n }\n execUILogic(appDEUILogicId, appDataEntityId, executeParams);\n }\n};\n\n// src/logic-scheduler/scheduler/logic-scheduler.ts\nimport { mergeLeft as mergeLeft2 } from \"ramda\";\nvar LogicScheduler = class {\n constructor(logics) {\n this.triggers = /* @__PURE__ */ new Map();\n this.executors = /* @__PURE__ */ new Map();\n /**\n * 是否有视图事件触发类型逻辑\n * @author lxm\n * @date 2023-08-14 02:19:51\n * @type {boolean}\n */\n this.hasViewEventTrigger = false;\n /**\n * 是否有部件事件触发类型逻辑\n * @author lxm\n * @date 2023-08-14 02:19:51\n * @type {boolean}\n */\n this.hasControlEventTrigger = false;\n this.logics = logics;\n logics.forEach((logic) => {\n try {\n const executor = this.createExecutor(logic);\n this.executors.set(logic.id, executor);\n const trigger = this.createTrigger(logic);\n this.triggers.set(logic.id, trigger);\n trigger.bindExecutor(executor);\n } catch (error) {\n ibiz.log.error(error.message);\n }\n });\n }\n /**\n * 销毁方法\n * @author lxm\n * @date 2023-07-17 11:47:51\n */\n destroy() {\n this.triggers.forEach((trigger) => trigger.destroy());\n this.executors.forEach((executor) => executor.destroy());\n }\n /**\n * 获取执行参数,把默认参数和调用参数合并\n * @author lxm\n * @date 2023-06-25 08:28:34\n * @param {IData} args\n * @return {*}\n */\n getExecuteParams(executeParams) {\n let defaultParams = {};\n if (this.defaultParamsCb) {\n defaultParams = this.defaultParamsCb();\n }\n return mergeLeft2(executeParams, defaultParams);\n }\n /**\n * 创建触发器实例\n * @author lxm\n * @date 2023-06-26 02:33:35\n * @protected\n * @param {ISchedulerLogic} logic\n * @return {*} {LogicTrigger}\n */\n createTrigger(logic) {\n switch (logic.triggerType) {\n case \"VIEWEVENT\":\n this.hasViewEventTrigger = true;\n break;\n case \"CTRLEVENT\":\n this.hasControlEventTrigger = true;\n break;\n default:\n }\n return ibiz.scheduler.triggerFactory.createTrigger(logic, this);\n }\n /**\n * 创建执行器实例\n * @author lxm\n * @date 2023-06-26 02:33:52\n * @protected\n * @param {ISchedulerLogic} logic\n * @return {*} {LogicExecutor}\n */\n createExecutor(logic) {\n return ibiz.scheduler.executorFactory.createExecutor(logic, this);\n }\n /**\n * 获取匹配的触发器。\n * @author lxm\n * @date 2023-06-26 02:32:24\n * @param {ITriggerMatchParams} matchParams\n * @return {*} {LogicTrigger[]}\n */\n getMatchTriggers(matchParams) {\n const triggers = [];\n this.triggers.forEach((trigger) => {\n if (trigger.match(matchParams)) {\n triggers.push(trigger);\n }\n });\n return triggers;\n }\n /**\n * 找到匹配的触发器并执行对应的执行器,并返回结果。\n * 返回undefined表示没有匹配的触发器。\n * @author lxm\n * @date 2023-06-26 02:30:24\n * @param {ITriggerMatchParams} matchParams 匹配参数\n * @param {Partial<IUILogicParams>} [executeParams={}] 执行参数\n * @return {*} {(any[] | undefined)}\n */\n triggerAndExecute(matchParams, executeParams = {}) {\n const triggers = this.getMatchTriggers(matchParams);\n if (triggers.length > 0) {\n const params = this.getExecuteParams(executeParams);\n const result = triggers.map((trigger) => {\n return trigger.execute(params);\n });\n return result;\n }\n }\n /**\n * 预定义项的动态逻辑\n * @author lxm\n * @date 2023-06-26 02:29:08\n * @protected\n * @param {string} itemName 子项名称\n * @param {('ITEMVISIBLE' | 'ITEMENABLE' | 'ITEMBLANK')} triggerType 预定义逻辑类型\n * @param {Partial<IUILogicParams>} executeParams 执行参数\n * @return {*} {(boolean | undefined)}\n */\n triggerItemDynaLogic(itemName, triggerType, executeParams) {\n const matchParams = { itemName, triggerType };\n const result = this.triggerAndExecute(matchParams, executeParams);\n if (result == null ? void 0 : result.length) {\n return result.pop();\n }\n }\n /**\n * 预定义项显示逻辑\n * @author lxm\n * @date 2023-06-26 02:26:36\n * @param {string} itemName 子项名称\n * @param {Partial<IUILogicParams>} executeParams 执行参数\n * @return {*} {(boolean | undefined)}\n */\n triggerItemVisible(itemName, executeParams) {\n return this.triggerItemDynaLogic(itemName, \"ITEMVISIBLE\", executeParams);\n }\n /**\n * 预定义项启用逻辑\n * @author lxm\n * @date 2023-06-26 02:26:35\n * @param {string} itemName 子项名称\n * @param {Partial<IUILogicParams>} executeParams 执行参数\n * @return {*} {(boolean | undefined)}\n */\n triggerItemEnable(itemName, executeParams) {\n return this.triggerItemDynaLogic(itemName, \"ITEMENABLE\", executeParams);\n }\n /**\n * 预定义项空输入逻辑\n * @author lxm\n * @date 2023-06-26 02:26:33\n * @param {string} itemName 子项名称\n * @param {Partial<IUILogicParams>} executeParams 执行参数\n * @return {*} {(boolean | undefined)}\n */\n triggerItemBlank(itemName, executeParams) {\n return this.triggerItemDynaLogic(itemName, \"ITEMBLANK\", executeParams);\n }\n /**\n * 定时器触发开始启用并计时\n * @author lxm\n * @date 2023-07-17 01:49:14\n */\n startTimerTrigger() {\n const triggers = this.getMatchTriggers({ triggerType: \"TIMER\" });\n triggers.forEach((trigger) => trigger.start());\n }\n /**\n * 执行自定义触发逻辑类型的视图逻辑\n * @author lxm\n * @date 2023-07-17 07:44:12\n * @param {string} id\n * @param {Partial<IUILogicParams>} executeParams\n * @return {*}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n triggerCustom(id, executeParams) {\n const trigger = this.triggers.get(id);\n if (!trigger) {\n return -1;\n }\n const params = this.getExecuteParams(executeParams);\n return trigger.execute(params);\n }\n /**\n * 触发部件事件\n * @author lxm\n * @date 2023-06-26 02:26:33\n * @param {string} itemName 子项名称\n * @param {Partial<IUILogicParams>} executeParams 执行参数\n * @return {*} {(boolean | undefined)}\n */\n triggerControlEvent(ctrlName, eventName, executeParams) {\n const matchParams = {\n ctrlName,\n eventName,\n triggerType: \"CTRLEVENT\"\n };\n this.triggerAndExecute(matchParams, executeParams);\n }\n};\n\n// src/logic-scheduler/scheduler/control-logic-scheduler.ts\nvar ControlLogicScheduler = class extends LogicScheduler {\n constructor(logics) {\n const filterLogics = logics.filter(\n (item) => item.triggerType !== \"APPVIEWENGINE\"\n );\n filterLogics.forEach((logic) => {\n if (logic.triggerType === \"CTRLEVENT\") {\n logic.ctrlName = logic.itemName || logic.logicTag;\n }\n });\n super(filterLogics);\n }\n};\n\n// src/logic-scheduler/scheduler/view-logic-scheduler.ts\nvar ViewLogicScheduler = class extends LogicScheduler {\n constructor(logics) {\n logics.forEach((logic) => {\n logic.triggerType = logic.logicTrigger;\n });\n super(logics);\n }\n /**\n * 触发视图事件\n * @author lxm\n * @date 2023-06-26 02:26:33\n * @param {string} itemName 子项名称\n * @param {Partial<IUILogicParams>} executeParams 执行参数\n * @return {*} {(boolean | undefined)}\n */\n triggerViewEvent(event) {\n const matchParams = {\n eventName: event.eventName,\n triggerType: \"VIEWEVENT\"\n };\n this.triggerAndExecute(matchParams, event);\n }\n};\n\n// src/logic-scheduler/trigger/logic-trigger-factory.ts\nimport { ModelError as ModelError32 } from \"@ibiz-template/core\";\nvar LogicTriggerFactory = class {\n constructor() {\n /**\n * 构造回调方法集合\n * @author lxm\n * @date 2023-06-25 06:53:31\n */\n this.constructorMap = /* @__PURE__ */ new Map();\n }\n /**\n * 注册\n * @author lxm\n * @date 2023-06-25 06:54:17\n * @param {string} key 注册标识\n * @param {(logic: ISchedulerLogic, scheduler: LogicScheduler) => LogicTrigger} callback\n */\n register(key, callback) {\n this.constructorMap.set(key, callback);\n }\n /**\n * 创建触发器实例\n * @author lxm\n * @date 2023-06-25 06:56:32\n * @param {ISchedulerLogic} logic\n * @return {*}\n */\n createTrigger(logic, scheduler) {\n const constructor = this.constructorMap.get(logic.triggerType);\n if (!constructor) {\n throw new ModelError32(logic, \"\\u89E6\\u53D1\\u5668\\u7C7B\\u578B \".concat(logic.triggerType, \" \\u6682\\u672A\\u652F\\u6301\\uFF01\"));\n }\n return constructor(logic, scheduler);\n }\n};\n\n// src/logic-scheduler/logic-scheduler-center.ts\nvar LogicSchedulerCenter = class {\n constructor() {\n /**\n * 执行器工厂\n * @author lxm\n * @date 2023-06-25 06:41:42\n * @type {LogicExecutorFactory}\n */\n this.executorFactory = new LogicExecutorFactory();\n /**\n * 触发器工厂\n * @author lxm\n * @date 2023-06-25 06:44:12\n * @type {LogicTriggerFactory}\n */\n this.triggerFactory = new LogicTriggerFactory();\n }\n /**\n * 创建视图逻辑调度器实例\n * @author lxm\n * @date 2023-06-25 03:41:43\n * @param {IAppDEViewLogic} logics\n * @return {*} {ViewLogicScheduler}\n */\n createViewScheduler(logics) {\n return new ViewLogicScheduler(logics);\n }\n /**\n * 创建部件逻辑调度器实例\n * @author lxm\n * @date 2023-06-25 03:48:30\n * @param {IControlLogic} logics\n * @return {*} {ControlLogicScheduler}\n */\n createControlScheduler(logics) {\n return new ControlLogicScheduler(logics);\n }\n};\n\n// src/logic-scheduler/trigger/logic-trigger.ts\nimport { RuntimeError as RuntimeError61 } from \"@ibiz-template/core\";\nvar LogicTrigger = class {\n /**\n * @author lxm\n * @date 2023-06-25 07:32:57\n * @param {ISchedulerLogic} logic 逻辑\n */\n constructor(logic, scheduler) {\n this.logic = logic;\n this.scheduler = scheduler;\n this.type = logic.triggerType;\n }\n /**\n * 绑定执行器\n * @author lxm\n * @date 2023-06-25 07:25:13\n * @param {LogicExecutor} executor\n */\n bindExecutor(executor) {\n this.executor = executor;\n if (this.executor.type === \"SCRIPT\") {\n this.bindScriptExecutor(executor);\n }\n }\n /**\n * 绑定脚本执行器\n * @author lxm\n * @date 2023-08-21 04:33:35\n * @param {ScriptExecutor} executor\n */\n bindScriptExecutor(executor) {\n if (!executor.initialized) {\n executor.init([], (executeParams) => executeParams, {\n isAsync: true,\n singleRowReturn: false\n });\n }\n }\n /**\n * 匹配触发器,返回true表示该触发器满足触发条件。\n * @author lxm\n * @date 2023-06-25 07:49:00\n * @param {IData} _args\n * @return {*} {boolean}\n */\n match(matchParams) {\n return matchParams.triggerType === this.type;\n }\n /**\n * 执行对应的执行器\n * @author lxm\n * @date 2023-06-26 01:45:42\n * @param {Partial<IUILogicParams>} executeParams\n * @return {*}\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n execute(executeParams) {\n if (this.executor) {\n return this.executor.execute(executeParams);\n }\n throw new RuntimeError61(\"\".concat(this.logic.id, \"\\u6CA1\\u6709\\u7ED1\\u5B9Aexecutor\"));\n }\n /**\n * 销毁方法\n * @author lxm\n * @date 2023-07-17 11:48:54\n */\n destroy() {\n this.executor = void 0;\n }\n};\n\n// src/logic-scheduler/trigger/custom-trigger.ts\nvar CustomTrigger = class extends LogicTrigger {\n};\n\n// src/logic-scheduler/trigger/item-dyna-logic-trigger.ts\nimport { RuntimeError as RuntimeError62 } from \"@ibiz-template/core\";\nvar ItemDynaLogicTrigger = class extends LogicTrigger {\n bindExecutor(executor) {\n super.bindExecutor(executor);\n if (this.executor.type !== \"SCRIPT\") {\n throw new RuntimeError62(\n \"\\u9884\\u5B9A\\u4E49\\u903B\\u8F91\\u7C7B\\u578B\".concat(this.type, \"\\u7684\\u89E6\\u53D1\\u5668\\u7C7B\\u578B\\u53EA\\u80FD\\u662F\\u811A\\u672C\")\n );\n }\n }\n bindScriptExecutor(executor) {\n executor.init(\n [\"context\", \"viewparams\", \"data\", \"env\"],\n (executeParams) => {\n const { context, params, data } = executeParams;\n return {\n context,\n params,\n data: (data == null ? void 0 : data[0]) || {},\n env: ibiz.env\n };\n },\n {\n singleRowReturn: true,\n isAsync: false\n }\n );\n }\n match(matchParams) {\n var _a, _b;\n const superResult = super.match(matchParams);\n return superResult && // 忽略大小写匹配\n ((_a = matchParams.itemName) == null ? void 0 : _a.toLowerCase()) === ((_b = this.logic.itemName) == null ? void 0 : _b.toLowerCase());\n }\n execute(executeParams) {\n const result = this.executor.execute(executeParams);\n return !!result;\n }\n};\n\n// src/logic-scheduler/trigger/timer-trigger.ts\nimport { RuntimeError as RuntimeError63, RuntimeModelError as RuntimeModelError64 } from \"@ibiz-template/core\";\nvar TimerTrigger = class extends LogicTrigger {\n constructor() {\n super(...arguments);\n this.timer = null;\n }\n start() {\n if (!this.logic.timer) {\n throw new RuntimeModelError64(this.logic, \"\\u5B9A\\u65F6\\u5668\\u7F3A\\u5C11\\u5B9A\\u65F6\\u95F4\\u9694\");\n }\n this.timer = setInterval(() => {\n if (!this.scheduler.defaultParamsCb) {\n throw new RuntimeError63(\"\\u5B9A\\u65F6\\u5668\\u7F3A\\u5C11\\u9ED8\\u8BA4\\u53C2\\u6570\\u56DE\\u8C03\");\n }\n const params = this.scheduler.defaultParamsCb();\n this.executor.execute(params);\n }, this.logic.timer);\n }\n destroy() {\n super.destroy();\n if (this.timer) {\n clearInterval(this.timer);\n }\n }\n};\n\n// src/logic-scheduler/executor/app-ui-logic-executor.ts\nimport {\n ModelError as ModelError33,\n RuntimeError as RuntimeError64,\n RuntimeModelError as RuntimeModelError65\n} from \"@ibiz-template/core\";\nimport { notNilEmpty as notNilEmpty9 } from \"qx-util\";\nvar AppUILogicExecutor = class extends LogicExecutor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n execute(executeParams) {\n if (this.logic.id === \"opendata\" && this.logic.builtinAppUILogic) {\n return this.executeOpenDataAppUILogic(\n this.logic.builtinAppUILogic,\n executeParams\n );\n }\n if (this.logic.id === \"newdata\" && this.logic.builtinAppUILogic) {\n return this.executeNewDataAppUILogic(\n this.logic.builtinAppUILogic,\n executeParams\n );\n }\n }\n /**\n * 执行应用预置界面逻辑 opendata\n *\n * @author chitanda\n * @date 2023-11-02 11:11:36\n * @param {IAppUIOpenDataLogic} appUILogic 应用预置界面逻辑 opendata 模型对象\n * @param {IUILogicParams} parameters\n * @return {*} {Promise<IModalData>}\n */\n async executeOpenDataAppUILogic(appUILogic, parameters) {\n const { context, params, ...rest } = parameters;\n const { data } = parameters;\n if (!(data == null ? void 0 : data[0])) {\n throw new RuntimeError64(\"opendata\\u6CA1\\u6709\\u53EF\\u64CD\\u4F5C\\u6570\\u636E\\uFF01\");\n }\n const openViewRefs = appUILogic.openDataAppViews;\n let openViewRef;\n if (openViewRefs) {\n openViewRef = await this.calcOpenViewRef(appUILogic, parameters);\n } else {\n openViewRef = appUILogic.openDataAppView;\n if (!openViewRef) {\n throw new RuntimeModelError65(\n appUILogic,\n \"opendata\\u89C6\\u56FE\\u903B\\u8F91\\u6CA1\\u6709\\u914D\\u7F6E\\u9ED8\\u8BA4\\u6253\\u5F00\\u89C6\\u56FE\"\n );\n }\n }\n const openView = openViewRef.refAppViewId;\n if (!openView) {\n throw new RuntimeModelError65(\n appUILogic,\n \"opendata\\u89C6\\u56FE\\u903B\\u8F91\\u7684\\u9ED8\\u8BA4\\u6253\\u5F00\\u89C6\\u56FE\\u6CA1\\u6709\\u5B9E\\u9645\\u5F15\\u7528\\u89C6\\u56FE\"\n );\n }\n const navContexts = openViewRef.navigateContexts || [];\n const tempContext = Object.assign(\n context,\n convertNavData(navContexts, data[0], params, context)\n );\n let tempParams = {};\n const navParams = openViewRef.navigateParams;\n if (notNilEmpty9(navParams)) {\n tempParams = convertNavData(navParams, data[0], params, context);\n }\n return ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n openView,\n tempContext,\n tempParams,\n rest\n );\n }\n async calcOpenViewRef(appUILogic, parameters) {\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n parameters.view.model.appDataEntityId\n );\n const typeFileName = appDataEntity.formTypeAppDEFieldId || appDataEntity.dataTypeAppDEFieldId;\n if (!typeFileName) {\n throw new RuntimeModelError65(\n appUILogic,\n \"\".concat(appDataEntity.codeName, \"[\\u591A\\u8868\\u5355\\u5B9E\\u4F53] or [\\u7D22\\u5F15\\u5B9E\\u4F53]\\u7F3A\\u5C11\\u7C7B\\u578B\\u5C5E\\u6027\\u914D\\u7F6E\")\n );\n }\n const { data } = parameters;\n const formTypeValue = data[0][typeFileName];\n if (!formTypeValue) {\n throw new RuntimeModelError65(appUILogic, \"\\u6570\\u636E\\u6E90\\u65E0\\u8868\\u5355\\u7C7B\\u578B\\u5E94\\u7528\\u5B9E\\u4F53\\u5C5E\\u6027\\u503C\");\n }\n const openViewRefs = appUILogic.openDataAppViews;\n const findView = openViewRefs == null ? void 0 : openViewRefs.find((item) => item.refMode === formTypeValue);\n if (!findView) {\n throw new RuntimeError64(\n \"\\u6CA1\\u6709\\u627E\\u5230\\u4E0E\\u8868\\u5355\\u7C7B\\u578B\".concat(formTypeValue, \"\\u76F8\\u5173\\u7684\\u5B9E\\u4F53\\u7684\\u7F16\\u8F91\\u89C6\\u56FE\")\n );\n }\n return findView;\n }\n /**\n * 执行应用预置界面逻辑newdata\n *\n * @author lxm\n * @date 2022-08-22 14:08:03\n * @export\n * @param {IPSAppUINewDataLogic} appUILogic 应用预置界面逻辑newdata模型对象\n * @param {IContext} context 上下文参数\n * @param {(IData | null)} data 数据集合\n * @param {IParams} params 视图参数\n * @param {IData} [opts] 额外参数,event是js原生事件\n */\n async executeNewDataAppUILogic(appUILogic, parameters) {\n const { context, params, ...rest } = parameters;\n const { data, view } = parameters;\n const { enableWizardAdd, enableBatchAdd, batchAddOnly, newDataAppView } = appUILogic;\n let newViewRef;\n if (enableWizardAdd) {\n newViewRef = await this.getWizardNewViewRef(appUILogic, parameters);\n if (!newViewRef) {\n return { ok: false };\n }\n } else if (enableBatchAdd) {\n const parentDeName = calcDeCodeNameById(\n view.parentView.model.appDataEntityId\n );\n const batchViews = appUILogic.batchAddAppViews;\n newViewRef = batchViews == null ? void 0 : batchViews.find((viewRef) => {\n return viewRef.refMode.toLowerCase() !== parentDeName;\n });\n if (!newViewRef) {\n throw new RuntimeModelError65(\n appUILogic,\n \"\\u6CA1\\u6709\\u627E\\u5230\\u6279\\u6DFB\\u52A0\\u9700\\u8981\\u6253\\u5F00\\u7684\\u9009\\u62E9\\u89C6\\u56FE\"\n );\n }\n } else if (batchAddOnly) {\n throw new ModelError33(appUILogic, \"batchAddOnly\\u6682\\u672A\\u652F\\u6301\");\n } else {\n newViewRef = newDataAppView;\n if (!newViewRef || !newViewRef.refAppViewId) {\n throw new RuntimeModelError65(\n appUILogic,\n \"newdata\\u89C6\\u56FE\\u903B\\u8F91\\u6CA1\\u6709\\u914D\\u7F6E\\u9ED8\\u8BA4\\u65B0\\u5EFA\\u6570\\u636E\\u89C6\\u56FE\"\n );\n }\n }\n let tempContext = {};\n let tempParams = {};\n const _data = (data == null ? void 0 : data[0]) || {};\n const navContexts = newViewRef.navigateContexts;\n if (notNilEmpty9(navContexts)) {\n tempContext = convertNavData(navContexts, _data, params, context);\n }\n tempContext = Object.assign(context, tempContext);\n const navParams = newViewRef.navigateParams;\n if (notNilEmpty9(navParams)) {\n tempParams = convertNavData(navParams, _data, params, context);\n }\n if (params.srfcopymode) {\n const entity = await ibiz.hub.getAppDataEntity(\n view.model.appDataEntityId\n );\n const key = entity.keyAppDEFieldId;\n if (key && _data) {\n tempParams[key] = _data.srfkey;\n tempParams.srfcopymode = true;\n }\n }\n tempParams.srfuf = 0 /* CREATE */;\n const result = await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n newViewRef.refAppViewId,\n tempContext,\n tempParams,\n rest\n );\n if (enableBatchAdd && result.data) {\n await this.doBatchAdd(appUILogic, result.data, context, newViewRef);\n }\n return result;\n }\n /**\n * 获取向导新建视图引用\n * 返回undefined为取消操作\n * 找不到会报错\n * @author lxm\n * @date 2023-08-03 06:37:22\n * @protected\n * @param {IAppUINewDataLogic} appUILogic\n * @param {IUILogicParams} parameters\n * @return {*} {(Promise<IAppUILogicRefViewBase | undefined>)}\n */\n async getWizardNewViewRef(appUILogic, parameters) {\n var _a;\n const { wizardAppView, newDataAppViews } = appUILogic;\n const { context, params, ...rest } = parameters;\n if (!wizardAppView || !wizardAppView.refAppViewId) {\n throw new RuntimeModelError65(appUILogic, \"\\u7F3A\\u5C11\\u9ED8\\u8BA4\\u7D22\\u5F15\\u5B9E\\u4F53\\u9009\\u62E9\\u89C6\\u56FE\");\n }\n const result = await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n wizardAppView.refAppViewId,\n context,\n params,\n { ...rest, openMode: \"POPUPMODAL\" }\n );\n if (!result.ok) {\n return;\n }\n const selectData = (_a = result.data) == null ? void 0 : _a[0];\n if (!selectData) {\n throw new RuntimeError64(\"\\u8BF7\\u9009\\u4E2D\\u4E00\\u6761\\u6570\\u636E\");\n }\n const indexType = selectData.srfkey;\n const findView = newDataAppViews == null ? void 0 : newDataAppViews.find((item) => item.refMode === indexType);\n if (!findView) {\n throw new RuntimeError64(\n \"\\u6CA1\\u6709\\u627E\\u5230\\u4E0E\\u7D22\\u5F15\\u7C7B\\u578B\".concat(indexType, \"\\u76F8\\u5173\\u7684\\u5B9E\\u4F53\\u7684\\u7F16\\u8F91\\u89C6\\u56FE\")\n );\n }\n return findView;\n }\n /**\n * 拿选中的数据做批添加新建\n * @author lxm\n * @date 2023-09-15 05:20:02\n * @protected\n * @param {IAppUIOpenDataLogic} appUILogic\n * @param {IData[]} selections\n * @param {IContext} context\n * @param {IAppUILogicRefViewBase} newViewRef\n * @return {*} {Promise<void>}\n */\n async doBatchAdd(appUILogic, selections, context, newViewRef) {\n var _a;\n if (selections == null ? void 0 : selections.length) {\n const selfDe = await ibiz.hub.getAppDataEntity(\n appUILogic.appDataEntityId,\n context.srfappid\n );\n const minorDERs = selfDe.minorAppDERSs;\n const pickParentDeName = newViewRef.refMode.toLowerCase();\n if (!minorDERs) {\n throw new RuntimeModelError65(selfDe, \"\\u5B9E\\u4F53\\u6CA1\\u6709\\u4ECE\\u5173\\u7CFB\\u96C6\\u5408\\uFF01\");\n }\n let pickParentFieldName;\n minorDERs == null ? void 0 : minorDERs.forEach((item) => {\n const majorDeName = calcDeCodeNameById(item.majorAppDataEntityId);\n if (pickParentDeName === majorDeName) {\n pickParentFieldName = item.parentAppDEFieldId;\n }\n });\n const openViewKeyParam = (_a = newViewRef.navigateParams) == null ? void 0 : _a.find((navParam) => {\n return navParam.key === \"keymapping\";\n });\n let addData = [];\n if (openViewKeyParam) {\n const keyValuePairs = openViewKeyParam.value.split(\";\");\n const keyMapping = {};\n for (const pair of keyValuePairs) {\n const [sourceKey, targetKey] = pair.split(\":\");\n if (sourceKey && targetKey) {\n keyMapping[sourceKey] = targetKey;\n }\n }\n addData = selections.map((item) => {\n const tempData = {\n [pickParentFieldName]: item.srfkey\n };\n for (const key in keyMapping) {\n if (Object.prototype.hasOwnProperty.call(keyMapping, key)) {\n const targetKey = keyMapping[key];\n if (Object.prototype.hasOwnProperty.call(item, key)) {\n tempData[targetKey] = item[key];\n }\n }\n }\n return tempData;\n });\n } else {\n addData = selections.map((item) => ({\n [pickParentFieldName]: item.srfkey\n }));\n }\n const service = ibiz.hub.getApp(context.srfappid).deService;\n await service.exec(selfDe.id, \"Create\", context, addData);\n }\n }\n};\n\n// src/logic-scheduler/trigger/view-event-trigger.ts\nvar ViewEventTrigger = class extends LogicTrigger {\n constructor(logic, scheduler) {\n super(logic, scheduler);\n this.logic = logic;\n this.scheduler = scheduler;\n /**\n * 监听事件名称集合\n * @author lxm\n * @date 2023-07-26 05:48:30\n * @protected\n * @type {string[]}\n */\n this.listenEventNames = [];\n const names = logic.eventNames.split(\";\");\n this.listenEventNames = names.map(\n (name) => StudioViewEvents[name] || name\n );\n }\n match(matchParams) {\n const superResult = super.match(matchParams);\n return superResult && this.listenEventNames.includes(matchParams.eventName);\n }\n};\n\n// src/logic-scheduler/trigger/control-event-trigger.ts\nvar ControlEventTrigger = class extends LogicTrigger {\n constructor(logic, scheduler) {\n super(logic, scheduler);\n this.logic = logic;\n this.scheduler = scheduler;\n /**\n * 监听事件名称集合\n * @author lxm\n * @date 2023-07-26 05:48:30\n * @protected\n * @type {string[]}\n */\n this.listenEventNames = [];\n const names = logic.eventNames.split(\";\");\n this.listenEventNames = names.map(\n (name) => StudioControlEvents[name] || name\n );\n }\n match(matchParams) {\n const superResult = super.match(matchParams);\n return superResult && // 忽略大小写匹配\n matchParams.ctrlName.toLowerCase() === this.logic.ctrlName.toLowerCase() && this.listenEventNames.includes(matchParams.eventName);\n }\n};\n\n// src/logic-scheduler/executor/app-ui-action-executor.ts\nimport { RuntimeModelError as RuntimeModelError66 } from \"@ibiz-template/core\";\nvar AppDEUIActionExecutor = class extends LogicExecutor {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n execute(executeParams) {\n if (!this.logic.appDEUIActionId) {\n throw new RuntimeModelError66(\n this.logic,\n \"\\u903B\\u8F91\\u4E2D\\u7F3A\\u5C11\\u89E6\\u53D1\\u5E94\\u7528\\u5B9E\\u4F53\\u754C\\u9762\\u884C\\u4E3Aid\"\n );\n }\n UIActionUtil.execAndResolved(this.logic.appDEUIActionId, executeParams);\n }\n};\n\n// src/logic-scheduler/index.ts\nfunction installLogicSchedule() {\n ibiz.scheduler = new LogicSchedulerCenter();\n ibiz.scheduler.triggerFactory.register(\n \"ITEMVISIBLE\",\n (logic, scheduler) => new ItemDynaLogicTrigger(logic, scheduler)\n );\n ibiz.scheduler.triggerFactory.register(\n \"ITEMENABLE\",\n (logic, scheduler) => new ItemDynaLogicTrigger(logic, scheduler)\n );\n ibiz.scheduler.triggerFactory.register(\n \"ITEMBLANK\",\n (logic, scheduler) => new ItemDynaLogicTrigger(logic, scheduler)\n );\n ibiz.scheduler.triggerFactory.register(\n \"TIMER\",\n (logic, scheduler) => new TimerTrigger(logic, scheduler)\n );\n ibiz.scheduler.triggerFactory.register(\n \"CUSTOM\",\n (logic, scheduler) => new CustomTrigger(logic, scheduler)\n );\n ibiz.scheduler.triggerFactory.register(\n \"VIEWEVENT\",\n (logic, scheduler) => new ViewEventTrigger(logic, scheduler)\n );\n ibiz.scheduler.triggerFactory.register(\n \"CTRLEVENT\",\n (logic, scheduler) => new ControlEventTrigger(logic, scheduler)\n );\n ibiz.scheduler.executorFactory.register(\n \"SCRIPT\",\n (logic, scheduler) => new ScriptExecutor(logic, scheduler)\n );\n ibiz.scheduler.executorFactory.register(\n \"APPDEUILOGIC\",\n (logic, scheduler) => new AppDEUILogicExecutor(logic, scheduler)\n );\n ibiz.scheduler.executorFactory.register(\n \"DEUILOGIC\",\n (logic, scheduler) => new AppDEUILogicExecutor(logic, scheduler)\n );\n ibiz.scheduler.executorFactory.register(\n \"APPUILOGIC\",\n (logic, scheduler) => new AppUILogicExecutor(logic, scheduler)\n );\n ibiz.scheduler.executorFactory.register(\n \"APPDEUIACTION\",\n (logic, scheduler) => new AppDEUIActionExecutor(logic, scheduler)\n );\n}\n\n// src/install.ts\nfunction install2() {\n const { ibiz: ibiz2 } = window;\n ibiz2.util = new GlobalUtil();\n ibiz2.hub = new AppHub();\n ibiz2.register = new RegisterCenter();\n ibiz2.config = new GlobalConfig();\n ibiz2.auth = new V7AuthService();\n ibiz2.asyncAction = new AsyncActionService();\n ibiz2.engine = new EngineFactory();\n installCommand();\n presetUIActionProvider();\n presetDEMethodProvider();\n presetAppCounterProvider();\n installLogicSchedule();\n install();\n ibiz2.platform = getPlatformProvider();\n}\n\n// src/plugin/plugin-static-resource/plugin-static-resource.ts\nimport path from \"path-browserify\";\nvar PluginStaticResource = class {\n /**\n * 插件静态资源工具类.\n *\n * @author chitanda\n * @date 2022-11-03 10:11:41\n * @param {string} mateUrl import.mate.url\n */\n constructor(mateUrl) {\n /**\n * 已经输出过路径的 style 标签\n *\n * @author chitanda\n * @date 2023-03-23 10:03:38\n * @protected\n * @type {Map<string, null>}\n */\n this.styleElementMap = /* @__PURE__ */ new Map();\n this.url = new URL(mateUrl);\n const dir = path.dirname(this.url.pathname);\n this.baseDir = dir;\n }\n /**\n * 合并输出静态资源目录\n *\n * @author chitanda\n * @date 2022-11-03 10:11:39\n * @param {string} pathStr\n * @return {*} {string}\n */\n dir(pathStr) {\n return path.resolve(this.baseDir, pathStr);\n }\n /**\n * 加载样式静态资源\n *\n * @author chitanda\n * @date 2023-03-23 10:03:49\n * @param {string[]} urls\n * @return {*} {Promise<void>}\n */\n async loadStyle(urls) {\n const all = urls.map((styleUrl) => {\n const url = this.dir(styleUrl);\n if (this.styleElementMap.has(url)) {\n return false;\n }\n this.styleElementMap.set(url, null);\n return new Promise((resolve, reject) => {\n const linkDom = document.createElement(\"link\");\n linkDom.setAttribute(\"type\", \"text/css\");\n linkDom.setAttribute(\"rel\", \"stylesheet\");\n linkDom.setAttribute(\"href\", url);\n linkDom.onload = resolve;\n linkDom.onerror = reject;\n document.head.appendChild(linkDom);\n });\n });\n try {\n await Promise.all(all);\n } catch (error) {\n ibiz.log.error(error);\n }\n }\n};\n\n// src/plugin/remote-plugin-item/remote-plugin-item.ts\nvar RemotePluginItem = class {\n /**\n * Creates an instance of RemotePluginItem.\n *\n * @author chitanda\n * @date 2023-02-02 15:02:13\n * @param {string} tag 插件标识名称\n * @param {string} repo 插件路径\n * @param {RemotePluginConfig} config\n */\n constructor(tag, repo, config) {\n this.tag = tag;\n this.repo = repo;\n this.config = config;\n }\n};\nexport {\n APP_COUNTER_PROVIDER_PREFIX,\n ASYNC_ACTION_PROVIDER_PREFIX,\n AcFetchMethod,\n ActionBarPortletController,\n ActivityCounter,\n AppCounter,\n AppDECounter,\n AppDECounterProvider,\n AppDataEntity,\n AppFuncCommand,\n AppMenuController,\n AppMenuIconViewController,\n Application,\n AsyncActionService,\n AuthorityService,\n BackendUIActionProvider,\n BaseController,\n BrowserPlatformProvider,\n ButtonContainerState,\n CONTROL_PROVIDER_PREFIX,\n CTX,\n CTXState,\n CalendarController,\n CalendarExpBarController,\n CalendarItemData,\n CalendarService,\n CaptionBarController,\n ChartController,\n ChartData,\n ChartExpBarController,\n ChartPortletController,\n ChartService,\n CodeListEditorController,\n CodeListService,\n ConfigService,\n ContainerPortletController,\n ContextMenuController,\n ControlController,\n ControlService,\n ControlType,\n ControlVO,\n ControllerEvent,\n Counter,\n CounterService,\n CustomDashboardController,\n DEActionMethod,\n DECache,\n DEDQCondUtil,\n DEMETHOD_PROVIDER_PREFIX,\n DEService,\n DEServiceUtil,\n DashboardController,\n DataViewControlController,\n DataViewControlService,\n DeAuthorityService,\n DynamicCodeListCache,\n EDITOR_PROVIDER_PREFIX,\n EditFormController,\n EditFormService,\n EditorController,\n EngineFactory,\n ExpBarControlController,\n FORMDETAIL_PROVIDER_PREFIX,\n FetchMethod,\n FormButtonController,\n FormButtonState,\n FormController,\n FormDRUIPartController,\n FormDetailController,\n FormDetailEventName,\n FormDetailState,\n FormDruipartState,\n FormGroupPanelController,\n FormGroupPanelState,\n FormItemController,\n FormItemState,\n FormMDCtrlController,\n FormMDCtrlFormController,\n FormMDCtrlMDController,\n FormMDCtrlRepeaterController,\n FormNotifyState,\n FormPageController,\n FormPageState,\n FormRawItemController,\n FormRawItemState,\n FormTabPageController,\n FormTabPageState,\n FormTabPanelController,\n FormTabPanelState,\n FrontUIActionProvider,\n GRIDCOLUMN_PROVIDER_PREFIX,\n GridColumnController,\n GridController,\n GridFieldColumnController,\n GridFieldEditColumnController,\n GridGroupColumnController,\n GridNotifyState,\n GridRowState,\n GridService,\n GridUAColumnController,\n HandlebarsUtil,\n HtmlPortletController,\n HubController,\n KanbanController,\n KanbanService,\n LayoutPanelUtil,\n ListController,\n ListPortletController,\n ListService,\n LoadingState,\n MDControlController,\n MDControlService,\n MDCtrlController,\n MDCtrlService,\n MDViewEngine,\n MEditViewPanelController,\n MEditViewPanelService,\n MapController,\n MapData,\n MapService,\n MenuPortletController,\n Method,\n MethodDto,\n MethodInput,\n MethodReturn,\n MobMDCtrlRowState,\n MobViewController,\n Modal,\n MqttService,\n OpenAppViewCommand,\n PANELITEM_PROVIDER_PREFIX,\n PLATFORM_PROVIDER_PREFIX,\n PORTLET_PROVIDER_PREFIX,\n PSDEDQCondEngine,\n PanelController,\n PanelData,\n PanelItemController,\n PanelItemEventName,\n PanelItemState,\n PanelNotifyState,\n PickupViewPanelController,\n PlatformProviderBase,\n PlatformType,\n PluginStaticResource,\n PortletPartController,\n PortletPartState,\n QXEventEx,\n RawItemPortletController,\n RawValueUtil,\n RegisterCenter,\n RemotePluginItem,\n ReportPanelController,\n ReportPanelService,\n ScriptFactory,\n ScriptFunction,\n SearchBarController,\n SearchFilter,\n SearchFormController,\n SearchFormService,\n Srfuf,\n StudioControlEvents,\n StudioPanelEvents,\n StudioViewEvents,\n SysUIActionProvider,\n SysUIActionTag,\n TabExpPanelController,\n TextUtil,\n ToolbarController,\n TreeCodeListNodeData,\n TreeController,\n TreeDataSetNodeData,\n TreeExpBarController,\n TreeGridController,\n TreeGridExController,\n TreeGridExService,\n TreeGridService,\n TreeNodeData,\n TreeService,\n TreeStaticNodeData,\n UIACTION_PROVIDER_PREFIX,\n UIActionButtonState,\n UIActionUtil,\n UILOGINNODE_PROVIDER_PREFIX,\n UIMapField,\n V7AuthService,\n VIEW_PROVIDER_PREFIX,\n ValueExUtil,\n ValueOP,\n ViewCallTag,\n ViewController,\n ViewEngineBase,\n ViewLayoutPanelController,\n ViewMode,\n ViewPortletController,\n ViewType,\n WFStepTraceViewController,\n WFWithdrawUIActionProvider,\n WizardPanelController,\n WizardPanelService,\n WorkFlowService,\n asyncImportData,\n calcContentAlignStyle,\n calcDeCodeNameById,\n calcDynaClass,\n calcGridLayoutPos,\n calcLayoutHeightWidth,\n calcMainStateOPPrivsStrs,\n calcNavParams,\n calcResPath,\n compare,\n compareNumber,\n contains,\n convertNavData,\n convertNavDataByArray,\n convertObjectToNavParams,\n execDELogic,\n execDELogicAction,\n execDELogicById,\n execFieldLogics,\n execUILogic,\n exportData,\n filterFieldLogics,\n filterValueRules,\n findChildFormDetails,\n findDELogic,\n findEditItem,\n findFieldById,\n findModelChild,\n formatMultiData,\n generateEditorRules,\n generateRules,\n getAllPanelField,\n getAppCounterProvider,\n getAppViewRef,\n getAsyncActionProvider,\n getChildNodeRSs,\n getControl,\n getControlPanel,\n getControlProvider,\n getControlsByView,\n getDEMethodProvider,\n getDeACMode,\n getDefaultValue,\n getEditorProvider,\n getFormDetailProvider,\n getGridColumnProvider,\n getMatchResPath,\n getOriginData,\n getPFPlugin,\n getPanelItemProvider,\n getPlatformProvider,\n getPlatformType,\n getPortletProvider,\n getRootNode,\n getTreeNode,\n getUIActionById,\n getUIActionProvider,\n getUILogicNodeProvider,\n getViewEngines,\n getViewLogics,\n getViewProvider,\n getWFContext,\n getWFSubmitViewId,\n handleAllSettled,\n hasDeCodeName,\n hasSubRoute,\n importData,\n install2 as install,\n installCommand,\n isDataContainer,\n isFormDataContainer,\n isValueChange,\n matchMainState,\n openRedirectView,\n parseUserParams,\n presetAppCounterProvider,\n presetDEMethodProvider,\n presetUIActionProvider,\n registerAppCounterProvider,\n registerAsyncActionProvider,\n registerControlProvider,\n registerDEMethodProvider,\n registerEditorProvider,\n registerFormDetailProvider,\n registerGridColumnProvider,\n registerPanelItemProvider,\n registerPlatformProvider,\n registerPortletProvider,\n registerUIActionProvider,\n registerUILogicNodeProvider,\n registerViewProvider,\n strContain,\n testCond,\n toLocalOpenWFRedirectView,\n verifyDeRules,\n verifyFormGroupLogic,\n verifyPanelGroupLogic\n};\n"],"names":["e","n","module","this","t","i","r","s","o","f","a","d","u","GlobalConfig","RegisterCenter","key","newProvider","args","func","HelperUtil","name","context","bol","options","HelperBase","Handlebars2","tag","HelperAnd","hbs","item","HelperCamelCase","param","camelCase","HelperConcat","HelperEq","param2","eq","HelperGt","gt","HelperGte","gte","HelperEqPropertyValue","obj","val","isArray","eq2","findIndex","HelperJsonParse","HelperJsonStringify","space","HelperLowerCase","HelperLt","lt","HelperLte","lte","HelperNeq","eq3","HelperNot","HelperOr","_a","itemArg","data","HelperPascalCase","upperFirst","HelperSnakeCase","snakeCase","HelperSpinalCase","kebabCase","HelperUpperCase","installHelpers","hsb","HandlebarsUtil","template","convertObjectToNavParams","navParams","result","reg2","rawValue","value","notNilEmpty","convertNavData","origins","isEmpty","navParamsArr","convertNavDataByArray","getVal","findOrigin","isNilOrEmpty","naviDatas","regex","naviData","matchArr","valueStr","find","formatMultiData","dataArr","naviArr","data1","naviParam","calcNavParams","model","originParams","deName","navFilter","pickupDEFName","navContexts","params","derValue","resultContext","resultParams","deSrfkey","tempContext","tempParams","findModelChild","models","id","getControl","view","_b","controls","getAppViewRef","appViewRefs","parseUserParams","userParams","navigateContexts","navigateParams","other","splitArr","getPFPlugin","appId","app","RuntimeModelError","plugin","getControlPanel","control","layoutPanel","panelRender","calcLayoutHeightWidth","layoutPos","width","height","widthMode","heightMode","calcContentAlignStyle","valignSelf","halignSelf","calcGridLayoutPos","layout","colXS","colXSOffset","colSM","colSMOffset","colMD","colMDOffset","colLG","colLGOffset","calcActualValues","span","offset","calcDynaClass","expression","classArr","ScriptFactory","isString","isArray2","isObject","matchMainState","appDataEntity","mainStateAppDEFieldIds","demainStates","values","field","stateValue","state2Value","state3Value","stateValues","calcMainStateOPPrivsStrs","mainState","demainStateOPPrivs","opprivAllowMode","mainStateOPPrivIds","opprivs","calcDeCodeNameById","hasDeCodeName","entityId","codeName","notNilEmpty2","getDeACMode","appDEACModeId","srfappid","mode","findDELogic","appDELogicId","entity","filterFieldLogics","type","resultIds","findFieldById","fieldId","getUIActionById","getRootNode","tree","node","getTreeNode","isNodeRsShow","searchMode","hasQuery","getChildNodeRSs","parentId","nodeRs","findEditItem","grid","findChildFormDetails","parent","childDetails","isFormDataContainer","detail","getControlsByView","viewLayoutPanel","getViewLogics","viewLogics","getViewEngines","appViewEngines","engine","isDataContainer","panelItem","ChildKeys","_getAllPanelField","childItems","fields","getAllPanelField","openRedirectView","appView","opts","openDERedirectView","toLocalOpenWFRedirectView","linkUrl","queryStr","qs","RuntimeError","deCodeName","deRdViewCodeName","deRdView","wfTag","wf","wfVersion","OpenAppViewCommand","navContext","navContextData","navParamsData","curData","actionId","service","res","resolve","newWindow","rdTag","calcDERdTag","rdTagItems","wfRdTag","deRdTag","allRefViews","refView","matchKey","viewId","RuntimeModelError2","refAppViewId","realTitle","rdView","typeFieldId","notNilEmpty3","defView","srfWf","typeValue","isNilOrEmpty2","testCond","op","value2","contains","compare","isNilOrEmpty3","notNilEmpty4","isNil","strContain","RuntimeError2","number1","number2","compareNumber","date1","date2","val2","index","DefaultOptions","ScriptFunction","argKeys","scriptCode","code","fn","error","keys","presetArgsKeys","presetParams","_params","mergeRight","className","scriptArgs","isGroupCondition","condition","isSimpleCondition","isValueRange2Condition","isRegExCondition","isStringLengthCondition","isSysValueRuleCondition","verifyDeRules","flag","childRules","logicForEach","isPast","infoMessage","checkFieldSimpleRule","checkFieldValueRangeRule","checkFieldRegExRule","checkFieldStringLengthRule","ruleType","regExCode","ruleInfo","checkFieldScriptRule","array","callback","operateTag","isReverse","len","temp","errorInfo","paramType","form","primaryModel","isNil2","isEmpty2","RuntimeError3","viewValue","minLength","indexOfMin","maxLength","indexOfMax","isNilOrEmpty4","viewValueLength","strReg","minNumber","maxNumber","source","selfError","resultBoolean","isGroupLogic","logic","isSingleLogic","verifyFormGroupLogic","children","RuntimeModelError3","childLogic","ModelError","isGroupLogic2","isSingleLogic2","verifyPanelGroupLogic","RuntimeModelError4","ModelError2","LayoutPanelUtil","viewModel","clone","viewType","viewStyle","blankMode","mainMenuAlign","exTag","getWFContext","getWFSubmitViewId","link","sequenceflowview","sequenceflowmobview","submitViewRef","viewRef","ControlType","exports","ControlType2","ViewType","ViewType2","ViewMode","ViewMode2","SysUIActionTag","SysUIActionTag2","ViewCallTag","ViewCallTag2","ValueOP","ValueOP2","PlatformType","PlatformType2","StudioViewEvents","StudioPanelEvents","StudioControlEvents","Modal","AsyncSeriesHook","dismiss","filterValueRules","vrs","vr","checkMode","belongName","TextUtil","_code","RawValueUtil","str","tempVal","handleAllSettled","isThrow","allResults","successResult","errorResult","PSModelCondEngineBase","psModelGroupCondBase","strCondOp","objValue","objCondValue","nRet","err","PSModelCondBase","PSModelSingleCondBase","arr","nCount","bOpStart","bParamStart","bValueStart","strText","strValueType","strValue","strParamType","strParam","PSModelGroupCondBase","_PSModelGroupCondBase","bNotStart","bCondStart","list","child","RuntimeError4","bNotMode","PSDEDQGroupCond","PSDEDQSingleCond","_PSDEDQCondEngine","filter","cond","isEmpty3","bAnd","bRet","childCond","valType","PSDEDQCondEngine","getPluginRegisterKey","pluginId","APP_COUNTER_PROVIDER_PREFIX","registerAppCounterProvider","getProvider","getAppCounterProvider","provider","counterType","sysPFPluginId","pluginKey","RuntimeError5","CONTROL_PROVIDER_PREFIX","registerControlProvider","getProvider2","getControlProvider","controlType","controlStyle","EDITOR_PROVIDER_PREFIX","registerEditorProvider","getProvider3","getEditorProvider","editorType","editorStyle","predefinedType","FORMDETAIL_PROVIDER_PREFIX","registerFormDetailProvider","getProvider4","getFormDetailProvider","detailType","GRIDCOLUMN_PROVIDER_PREFIX","registerGridColumnProvider","getProvider5","getGridColumnProvider","columnType","enableRowEdit","PANELITEM_PROVIDER_PREFIX","registerPanelItemProvider","getProvider6","getPanelItemProvider","itemType","editor","PORTLET_PROVIDER_PREFIX","registerPortletProvider","getProvider7","getPortletProvider","portletType","UIACTION_PROVIDER_PREFIX","registerUIActionProvider","getProvider8","getUIActionProvider","uiactionMode","RuntimeError6","UILOGINNODE_PROVIDER_PREFIX","registerUILogicNodeProvider","getUILogicNodeProvider","RuntimeError7","VIEW_PROVIDER_PREFIX","registerViewProvider","getProvider9","getViewProvider","ASYNC_ACTION_PROVIDER_PREFIX","registerAsyncActionProvider","getProvider10","getAsyncActionProvider","actiontype","RuntimeError8","PlatformProviderBase","loginName","passWord","_verificationCode","url","response","RuntimeError9","fileName","downloadFileFromBlob","BrowserPlatformProvider","install","browserPlatformProvider","registerPlatformProvider","ua","isAndroid","isIos","isWeChat","isDingDing","isWxMp","getPlatformType","PLATFORM_PROVIDER_PREFIX","getProvider11","getPlatformProvider","platformType","DEMETHOD_PROVIDER_PREFIX","registerDEMethodProvider","getProvider12","getDEMethodProvider","methodType","RuntimeError10","AppCounter","IBizContext","QXEvent","clone2","RuntimeError11","immediate","notNilEmpty5","AppDECounter","action","RuntimeModelError5","AppDECounterProvider","presetAppCounterProvider","DEDQCondUtil","dataSet","groups","items","condArr","ModelError3","DynamicCodeListCache","codeList","ModelError4","valueAppDEFieldId","textAppDEFieldId","iconClsAppDEFieldId","iconClsXAppDEFieldId","iconPathAppDEFieldId","iconPathXAppDEFieldId","disableAppDEFieldId","dataAppDEFieldId","appDataEntityId","appDEDataSetId","minorSortAppDEFieldId","minorSortDir","pvalueAppDEFieldId","customCond","addParams","res2","RuntimeModelError6","resultItems","tempItems","pValue","filteredData","tempCodeListItem","cacheData2","promise","cacheTimeout","waitTime","isNil3","cacheData","isExistSrfKey","funcName","srfkey","isNil4","isEmpty4","RuntimeError12","isExistSessionId","srfsessionid","DECache","clone3","srfKey","isNil5","isEmpty5","createUUID","map","entities","srfKeys","notRemoveKeys","equals","where","reg","getMatchResPath","filterItems","match","b","calcResPath","path2","SearchFilter","isNil6","isEmpty6","CodeListService","appModel","codeItems","isValueNumber","codeItem","text","tooltip","_codeItem","dynamicCache","RuntimeError13","ConfigService","folder","CounterService","counter2","counter","appCounter","RuntimeModelError7","WorkFlowService","appContext","processDefinitionKey","taskDefinitionKey","deKeyValue","methodName","RuntimeError14","FileService","dataExport","fetchAction","resPath","exportUrl","DEService","acMode","cacheId","ModelError5","method","params2","RuntimeError15","onmessage","reject","json","isHistories","curPath","Srfuf","Srfuf2","BuildInKeys","ControlVO","_ControlVO","$origin","$dataUIMap","dataKey","isNil7","createUUID2","mapField","uiKey","isOriginField","cloneOrigin","clone4","newVal","ControlService","clone5","entityData","MDControlService","getAction","getDraftAction","removeAction","createAction","updateAction","_dataExport","_context","RuntimeError16","isArray3","DeAuthorityService","entityModel","dataAccessAction","AuthorityService","constructor","RuntimeError17","appData","resCode","appDeId","opPriv","V7AuthService","loginname","password","rememberme","setCookie","CoreConst","expiredDate","clearCookie","AsyncActionService","isNil8","actionID","AppDataEntity","_AppDataEntity","clone6","keyAppField","majorAppField","major","isNil9","createUUID3","_data","convertVal","properties","dataType","DataTypes","numVal","MethodDto","_MethodDto","isLocalMode2","dto","j","ModelError6","datum","all","methodDto","isLocalMode","MethodInput","input","MethodReturn","output","isNilOrEmpty5","Method","actionType","requestMethod","RuntimeModelError8","toEntity","single","isArray4","DELogicContext","deLogicParams","isArray5","paramId","DELogicLinkCond","DELogicLinkSingleCond","ctx","dst","RuntimeModelError9","src","ModelError7","DELogicLinkGroupCond","_DELogicLinkGroupCond","conds","RuntimeModelError10","judge","DELogicLink","defaultLink","DELogicNode","DEActionNode","dstAppDataEntityId","dstAppDEActionId","dstDELogicParamId","retDELogicParamId","RuntimeModelError11","requestData","StartNode","_ctx","EndNode","returnParamId","returnType","ModelError8","handleSrcVal","srcValParams","srcDELogicParamId","srcFieldName","srcValue","srcValueType","srcField","clone7","ModelError9","PrepareParamNode","nodeParams","nodeParam","ModelError10","srcVal","clone8","dstFieldName","dstField","dstIndex","srcIndex","srcSize","insertIndex","_srcIndex","_srcSize","dstSortDir","DataSetNode","dstAppDEDataSetId","queryParams","BindParamNode","RuntimeModelError12","ResetParamNode","RuntimeModelError13","RenewParamNode","RuntimeModelError14","CopyParamNode","RuntimeModelError15","clone9","SortParamNode","RuntimeModelError16","AppendParamNode","RuntimeModelError17","ThrowExceptionNode","errorCode","HttpError2","DELogicParam","m","clone10","ModelError11","DELogic","RuntimeModelError18","logicNodeType","logicNode","ModelError12","startDELogicNodeId","start","links","deLogicMap","findDeLogic","deDELogicId","dataEntityId","execDELogic","deDELogic","execDELogicById","deLogic","RuntimeError18","execDELogicAction","clone11","HttpResponse2","HttpError3","execSingleFieldLogics","fieldLogics","execFieldLogics","isArray6","DEActionMethod","isArray7","RuntimeModelError19","isNil10","RuntimeError19","addData","resultData","HttpResponse3","updateData","DeActionDeMethodProvider","_opts","FetchMethod","searchParams","isArray8","items2","HttpResponse4","ModelError13","ascSort","nullData","undefinedData","emptyData","equals2","isEmpty7","pred","where2","nullPred","undefinedPred","emptyPred","queryParamKeys","isNil11","descSort","page","size","end","clone12","appCodeListId","RuntimeModelError20","keyAppDEFieldId","majorAppDEFieldId","AcFetchMethod","FetchDeMethodProvider","presetDEMethodProvider","deActionDeMethodProvider","fetchDeMethodProvider","TreeNodeData","parentNodeData","sysImage","icon","TreeCodeListNodeData","TreeDataSetNodeData","iconAppDEFieldId","detreeNodeDataItems","iconDataItem","dataItem","html","textDataItem","TreeStaticNodeData","nodeValue","UIMapField","isNil12","DataTypes2","CalendarItemData","fieldName","updateKeyDefine","target","AreaItemStyles","MapData","deData","mapItem","itemStyle","longitudeAppDEFieldId","latitudeAppDEFieldId","tipsAppDEFieldId","keyMap","_receiver","allKeys","updateKeyDefine2","PanelData","origin","_evt","QXEvent2","reverseKeyMap","p","updateKeyDefine3","ChartData","seriesModel","catalog","groupName","createUUID4","MqttService","mqttTopic","token","QXEvent3","createUUID5","isNilOrEmpty6","mqtt","location","topic","payload","DEServiceUtil","RuntimeError20","_OpenAppViewCommand","appViewId","clone13","RuntimeError21","fullViewModel","openMode","ModelError14","event","_AppFuncCommand","appFuncId","appFunc","RuntimeError22","appFuncType","ModelError15","AppFuncCommand","installCommand","Application","Net","getToken","message","style","dom","deUILogicId","AppMenuConvert","appMenu","Convert","AppViewConfigService","viewConfig","RuntimeError23","AppConfigService","FormNotifyState","FormNotifyState2","GridNotifyState","GridNotifyState2","PanelNotifyState","PanelNotifyState2","Counter","callback2","RuntimeError24","LoadingState","NOOP","CTXState","CTX","QXEvent4","controller","nextState","c","traceRoot","ActivityCounter","UIActionButtonState","uiActionId","uiAction","noPrivDisplayMode","actionTarget","uiactionTag","ButtonContainerState","state","QXEventEx","QXEvent5","resultPromise1","resultPromise2","resultArr1","resultArr2","clearAll","ControllerEvent","getBaseArgs","hasSubRoute","routeDepth","isValueChange","isNil13","getOriginData","singleData","generateRules","itemVRs","valueItemName","rules","valueRuleType","sysRule","deRule","rule","valueName","isNilOrEmpty7","RuntimeError25","generateEditorRules","maxValue","minValue","isNil14","isNumber","ValueExUtil","mergeLeft","isNil15","valueType","objectNameField","textSeparator","RuntimeError26","textKey","getDefaultValue","defaultValue","valueFormat","isNil16","isNotNil","dayjs","RuntimeError27","createUUID6","ModelError16","asyncImportUrl","importUrl","listenAsyncAction","callBack","msg","messageid","asyncImportData","file","dataImport","importData","exportData","header","RuntimeError28","exportExcel","SELF_KEY","BaseController","_callback","cb","ViewMsgController","_ViewMsgController","msgGroupId","msgGroup","RuntimeError29","msgDetailsViewMsgIds","msgModel","RuntimeModelError21","details","msgs","msgData","position1","viewMsg","title","removeMode","position2","messageType","userTag","userTag2","userTag3","userTag4","orderValueAppDEFieldId","titleAppDEFieldId","removeFlagAppDEFieldId","msgTypeAppDEFieldId","contentAppDEFieldId","msgPosAppDEFieldId","fetchParams","sortField","basicMsg","titleField","positionField","messageField","typeField","removeModeField","isNil17","mergeRight2","ViewController","_model","IBizContext2","engineModels","ins","appCounterRefs","counterRef","modalData","isNotNil2","ctrl","ctrlProvider","appViewLogics","_eventName","isNil18","isEmpty8","createUUID7","notNilEmpty6","RuntimeError30","panel","appViewMsgGroupId","messages","rest","modalParams","MobViewController","WFStepTraceViewController","entityService","EditorController","selfContext","selfParams","CodeListEditorController","dataItems","RuntimeModelError22","ControlController","IBizContext3","IBizParams","panelModel","clone14","eventName","controlNavContexts","controlNavParams","notNilEmpty7","ctrlParams","logics","ctrlMsg","msgItem","duration","isNil19","scriptParams","resTag","NoticeError","MDControlController","debounce","order","extraParams","curPage","sortQuery","noSort","isInitialLoad","isLoadMore","RuntimeError31","needRefresh","selection","selectedData","isElementSame","filterArr","dedataImportId","importItem","importName","modal","_args","AppMenuController","useDepth","menuItem","findRecursiveChild","RuntimeError32","RuntimeModelError23","menu","permitted","visible","childrenState","flattenMenus","menuItems","counters","AppMenuIconViewController","findRecursiveChild2","RuntimeError33","RuntimeModelError24","CalendarService","sysCalendarItems","promises","RuntimeError34","calendarItem","CalendarController","x","y","dayjs2","selectedDate","srfstartdate","srfenddate","firstDayOfMonth","lastDayOfMonth","timeParam","date","dayjs3","minMax","isSameOrBefore","quarterOfYear","weekOfYear","isoWeek","DEFAULT_GROUP","BaseSeriesGenerator","chartGenerator","chartSeriesEncode","caption","userParam","RuntimeModelError25","chartXAxisId","chartYAxisId","toNumberOrNil","parseUserParams2","codeListKey","isExclude","isNil20","codeListItems","groupData","group","tempChartData","seriesCodeListId","catalogCodeListId","groupVal","plus","catalogData","mergeDeepRight","temData","tempData","_c","clone15","groupMode","format","formattedDate","dateMap","sortedKeys","yearA","quarterA","yearB","quarterB","sortedMap","sortKey","dates","_val","maxDate","minDate","currentDate","endDate","currentYear","endYear","yearString","currentYearMonth","endYearMonth","yearMonthString","yearQuarters","yearQuarter","minYearQuarter","min","current","maxYearQuarter","max","minYear","maxYear","year","quarter","yearWeeks","yearWeek","minYearWeek","maxYearWeek","numWeeks","week","LineSeriesGenerator","RuntimeModelError26","stack","step","BarSeriesGenerator","RuntimeModelError27","FunnelSeriesGenerator","PieSeriesGenerator","ScatterSeriesGenerator","RuntimeModelError28","RadarCoordSystem","indicator","RadarSeriesGenerator","radar","radarData","mergeDeepRight2","option","customKey","ChartOptionsGenerator2","dechartTitle","dechartLegend","chartXAxises","chartYAxises","series","seriesGenerator","chartTitle","showTitle","subTitle","titlePos","titleOption","position","chartLegend","showLegend","legendPos","legendOption","chartAxises","AxisOption","chartAxis","dataShowMode","mergeDeepRight3","loadCodeList","generator","seriesOption","startIndex","endIndex","RuntimeError35","ChartService","ChartController","chart","activeData","RuntimeError36","CaptionBarController","_caption","dataInfo","UILogicContext","parameters","UILogicLinkCond","handleSrcVal2","srcDEUILogicParamId","clone16","ModelError17","UILogicLinkSingleCond","dstVal","RuntimeModelError29","ModelError18","UILogicLinkGroupCond","_UILogicLinkGroupCond","RuntimeModelError30","UILogicLink","linkMode","deuilogicLinkGroupCond","ModelError19","UILogicNode","DEActionNode2","dstDEUILogicParamId","retDEUILogicParamId","RuntimeModelError31","DEUIActionNode","dstAppDEUIActionId","RuntimeModelError32","actionData","UIActionUtil","StartNode2","EndNode2","ModelError20","PrepareJSParamNode","ModelError21","RuntimeError37","clone17","ViewCtrlInvokeNode","invokeMethod","invokeCtrlId","invokeParamId","RuntimeModelError33","invokeParam","RuntimeError38","invokeCtrl","isFunction","BindParamNode2","RuntimeModelError34","MsgBoxNode","msgBoxType","buttonsType","msgBoxParamId","RuntimeModelError35","resultTags","ModelError22","PFPluginNode","DebugParamNode","RuntimeModelError36","ResetParamNode2","RuntimeModelError37","CopyParamNode2","RuntimeModelError38","clone18","AppendParamNode2","RuntimeModelError39","SortParamNode2","RuntimeModelError40","RenewParamNode2","RuntimeModelError41","DataSetNode2","RuntimeModelError42","ThrowExceptionNode2","RuntimeError39","ViewCtrlFireEventNode","eventParamId","fireCtrlId","RuntimeModelError43","RuntimeError40","eventParam","ExecuteDELogicNode","dstAppDELogicId","RuntimeModelError44","dstParam","RuntimeError41","RawJSCodeNode","UILogicParam","ModelError23","UILogic","RuntimeModelError45","ModelError24","startDEUILogicNodeId","uiLogicMap","execUILogic","deUILogic","RuntimeError42","RuntimeError43","UIActionProviderBase","appDEUILogicId","uilogicAttachMode","RuntimeModelError46","_result","nextActionParams","nextResult","confirmMsg","nextActionId","keyField","originData","valueItem","paramItem","valueKey","isMultiData","msgRes","cmlanguageRes","successMsg","smlanguageRes","msgResContent","BackendUIActionProvider","actionResult","entityName","RuntimeModelError47","frontPSAppView","isArray9","SysUIActionProvider","uIActionTag","FrontUIActionProvider","noWaitRoute","StringUtil","RuntimeModelError48","ModelError25","appDEPrint","print","requestUrl","RuntimeError44","filename","href","appDEDataImport","appDEDataExport","blob","elink","WFWithdrawUIActionProvider","_action","isWithdraw","isCloseView","presetUIActionProvider","frontUIActionProvider","backendUIActionProvider","sysUIActionProvider","wfWithdrawUIActionProvider","ToolbarController","RuntimeError45","enableLoading","recursiveIterate","uiItem","buttonState","isExtra","logicParams","itemState","dynaVisible","dynaEnable","buttons","actualLogics","ContextMenuController","DashboardController","portletModels","ignorePortletTypes","portlet","CustomDashboardController","PortletPartState","PortletPartController","dashboard","sysCss","uiactionGroup","containerState","actionid","dynaClass","ContainerPortletController","ViewPortletController","MenuPortletController","ChartPortletController","ActionBarPortletController","HtmlPortletController","ListPortletController","RawItemPortletController","DataViewControlService","deField","deFieldKey","DataViewControlController","groupUIActionGroup","groupAppDEFieldId","select","selectGroup","_a2","actionGroup","optItemModel","dedataViewItems","RuntimeModelError49","enableGroup","groupMap","isNil21","groupCodeListId","groupArr","codeListItem","sortItems","hasDefaultSort","tempItem","ExpBarControlController","RuntimeModelError50","searchFields","placeHolders","searchField","selectItem","navViewMsg","XDataModel","navDER","RuntimeError46","viewModelId","hasToolbar","info","CalendarExpBarController","itemTypeName","RuntimeModelError51","itemModel","TreeExpBarController","RuntimeModelError52","nodeId","detreeNodes","nodeModel","nodeData","RuntimeError47","srfnav","expandedKeys","expandKeys","ChartExpBarController","activeSeriesGenerator","tempContext2","tempParams2","FormController","names","debounceAndAsyncMerge","arr1","arr2","detailProvider","detailController","_formItemUpdateId","formItem","recursiveIterate2","SearchFormService","recursiveIterate3","dataUI","SearchFormController","mergeDefaultInLeft","filterParams","searchButtonStyle","deleteRight","deleteBottom","searchButtonPos","recursivePanelItems","childrenKey","newArr","RuntimeError48","FormDetailState","$visible","$keepAlive","FormDetailEventName","FormDetailEventName2","PanelItemEventName","PanelItemEventName2","FormDetailController","labelSysCss","_state","mustCalc","relatedNames","isOverlap","ok","disabled","itemEnable","itemVIsible","required","itemAllowEmpty","FormButtonState","FormButtonController","FormDruipartState","FormDRUIPartController","strArr","isOverlap2","newContext","notNilEmpty8","newParams","createUUID8","FormGroupPanelState","FormGroupPanelController","FormItemState","$disabled","FormItemController","enableCond","formItemsVRs","Schema","isNew","resetItemNames","isReset","resetItemName","isNilOrEmpty8","errors","_fields","isCreate","createDVT","createDV","updateDVT","updateDV","defaultVal","FormMDCtrlController","BitMask","FormMDCtrlMDController","contentControl","RuntimeModelError53","mergeInLeft","controlProvider","ModelError26","FormMDCtrlFormState","FormMDCtrlFormController","RuntimeModelError54","formData","RuntimeError49","createUUID9","FormMDCtrlRepeaterController","ModelError27","tempForm","clone19","tempValue","_","FormPageState","FormPageController","FormRawItemState","FormRawItemController","FormTabPageState","FormTabPageController","FormTabPanelState","FormTabPanelController","EditFormService","RuntimeModelError55","wfForm","presetFields","recursiveIterate4","EditFormController","debounce2","mergeDefaultInLeft2","clone20","createUUID10","silent","awaitTimeout","RuntimeError50","saveData","noFillBack","mergeInLeft2","formItemUpdateId","formItemUpdate","appDEMethodId","defiupdateDetails","customCode","updateItems","itemName","cloneData","GridColumnController","row","GridRowState","column","editColumn","GridService","GridController","debounceAndAsyncMerge2","RuntimeModelError56","groupFieldName","removeEls","fieldColumn","uaState","codeListGroup","groupFiledName","groupFieldValue","aggMode","aggAppDataEntityId","aggAppDEDataSetId","findIndex2","item2","enableRowNew","editShowMode","RuntimeError51","defaultData","draftData","mergeDefaultInLeft3","newRow","rowState","awaitTimeout2","needSaveData","childColumn","recursiveIterate5","showColumns","allNum","frozenFirstColumn","frozenLastColumn","_row","editable","isSave","toState","clone21","updateId","findUpdate","degeiupdateDetails","exportColumnsPromises","tempExportColumn","formatExcelData","data2","codeListMap","exportColumn","_a3","_item","getExportData","startPage","endPage","formatArrayData","filterVal2","tableData","v","filterVal","compareKey","GridFieldColumnController","debounce3","ModelError28","linkAppViewId","wfContext","clone22","aggField","aggValueFormat","unitName","isNil22","aggValue","plus2","strVal","DataTypes3","formatVal","dayjs4","GridUAColumnController","deuiactionGroup","RuntimeModelError57","GridFieldEditColumnController","editItem","editItemsVRs","Schema2","oldRequired","RuntimeError52","enable","allowEmpty","itemBlank","isReadOnly","editName","isNilOrEmpty9","GridGroupColumnController","ListService","ListController","childrenMap","otherGroup","PanelController","container","panelItems","panelItemProvider","panelItemController","RuntimeError53","panelData","fieldKeys","recursiveIterate6","ViewLayoutPanelController","getNewArr","PanelItemState","PanelItemController","isOverlap3","PickupViewPanelController","SearchBarFilterController","searchBar","RuntimeModelError58","SearchBarController","filters","filterController","hasFilter","hasError","recursiveIterate7","isNil23","TabExpPanelController","viewPanel","tabPages","activeTab","tab","isRoutePushed","activeName","tabViewPanel","TreeService","childrenNodes","childNodeRSs","childNodeRS","childNode","rootNode","nodeRS","leaf","tempOpts","ModelError29","expandFirstOnly","expanded","isExpandedRoot","subChildrenNodes","parentValueLevel","parentDER1N","parentData","parentNodeModel","TreeController","nodes","parentNode","recursiveIterate8","isExpand","hasKey","selectionIds","eventArgs","refreshParent","currentNode","targetNode","noExpandKeys","existNodes","WizardPanelService","initAction","finishAction","WizardPanelController","wizardForm","_b2","formName","wizardStep","stepTag","deeditForms","editForm","formTag","activeFormTag","RuntimeError54","formController","activeForm","prevTag","nextTag","wizardSteps","editForms","_step","nextWizardStep","nextWizardForm","MDCtrlService","MobMDCtrlRowState","MDCtrlController","rows","deuiactionGroup2","RuntimeModelError59","isNil24","KanbanService","KanbanController","RuntimeModelError60","isAsc","sortValue","isNil25","toNum","RuntimeError55","from","to","fromIndex","toIndex","groupField","modifiedItems","fromGroup","toGroup","draggedItem2","getNextSort","num","originArr","changedArr","draggedItem","removeItems","lastSort","cacheArr","cacheLastSort","cache","changedItems","TreeGridExService","dataMap","isArray10","dataUIMap","TreeGridExController","recursiveIterate9","defaultExpandedKeys","TreeGridController","TreeGridService","MEditViewPanelService","MEditViewPanelController","embedView","embedViewEntity","tempPanelUiItems","UiItem","arg","parameterName","createUUID11","parameter","parameterName2","pathName","datas","isBackToEnd","panelUiItemIndex","RuntimeError56","tempUiItem","MapService","allData","customParams","HttpResponse6","MapController","tempareaData","temppointData","areaCode","mapData","ReportPanelService","ReportPanelBaseGenerator","UserReportPanelGenerator","User2ReportPanelGenerator","ReportPanelGeneratorFactory","ReportPanelController","HubController","AppHub","ids","RuntimeError57","EngineFactory","engineType","engineCat","ViewEngineBase","childNames","_d","showHeader","showFooter","evt","RuntimeError58","MDViewEngine","formExists","RuntimeModelError61","copyMode","clone23","searchformContainer","DefaultErrorHandler","RuntimeModelError62","ModelError30","HttpError4","NoticeError2","RuntimeError59","ErrorHandlerCenter","handler","GlobalUtil","el","LogicExecutor","scheduler","_executeParams","RuntimeError60","LogicExecutorFactory","ModelError31","ScriptExecutor","executeParams","paramKeys","convertFun","AppDEUILogicExecutor","RuntimeModelError63","LogicScheduler","executor","trigger","defaultParams","mergeLeft2","matchParams","triggers","triggerType","ctrlName","ControlLogicScheduler","filterLogics","ViewLogicScheduler","LogicTriggerFactory","ModelError32","LogicSchedulerCenter","LogicTrigger","RuntimeError61","CustomTrigger","ItemDynaLogicTrigger","RuntimeError62","TimerTrigger","RuntimeModelError64","RuntimeError63","AppUILogicExecutor","appUILogic","RuntimeError64","openViewRefs","openViewRef","RuntimeModelError65","openView","notNilEmpty9","typeFileName","formTypeValue","findView","enableWizardAdd","enableBatchAdd","batchAddOnly","newDataAppView","newViewRef","parentDeName","batchViews","ModelError33","wizardAppView","newDataAppViews","selectData","indexType","selections","selfDe","minorDERs","pickParentDeName","pickParentFieldName","majorDeName","openViewKeyParam","navParam","keyValuePairs","keyMapping","pair","sourceKey","targetKey","ViewEventTrigger","ControlEventTrigger","AppDEUIActionExecutor","RuntimeModelError66","installLogicSchedule","install2","ibiz2","PluginStaticResource","mateUrl","dir","path","pathStr","urls","styleUrl","linkDom","RemotePluginItem","repo","config"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}