@ibiz-template/runtime 0.1.11 → 0.1.12-dev.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +16418 -7232
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/out/config/global-config.js +1 -1
- package/out/controller/control/app-menu/app-menu.controller.d.ts +62 -0
- package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -0
- package/out/controller/control/app-menu/app-menu.controller.js +133 -0
- package/out/controller/control/app-menu/index.d.ts +2 -0
- package/out/controller/control/app-menu/index.d.ts.map +1 -0
- package/out/controller/control/app-menu/index.js +1 -0
- package/out/controller/control/app-menu-icon-view/app-menu-icon-view.controller.d.ts +5 -0
- package/out/controller/control/app-menu-icon-view/app-menu-icon-view.controller.d.ts.map +1 -0
- package/out/controller/control/app-menu-icon-view/app-menu-icon-view.controller.js +29 -0
- package/out/controller/control/app-menu-icon-view/index.d.ts +2 -0
- package/out/controller/control/app-menu-icon-view/index.d.ts.map +1 -0
- package/out/controller/control/app-menu-icon-view/index.js +1 -0
- package/out/controller/control/calendar/calendar.controller.d.ts +95 -0
- package/out/controller/control/calendar/calendar.controller.d.ts.map +1 -0
- package/out/controller/control/calendar/calendar.controller.js +167 -0
- package/out/controller/control/calendar/calendar.service.d.ts +51 -0
- package/out/controller/control/calendar/calendar.service.d.ts.map +1 -0
- package/out/controller/control/calendar/calendar.service.js +79 -0
- package/out/controller/control/calendar/index.d.ts +3 -0
- package/out/controller/control/calendar/index.d.ts.map +1 -0
- package/out/controller/control/calendar/index.js +2 -0
- package/out/controller/control/caption-bar/caption-bar.controller.d.ts +17 -0
- package/out/controller/control/caption-bar/caption-bar.controller.d.ts.map +1 -0
- package/out/controller/control/caption-bar/caption-bar.controller.js +28 -0
- package/out/controller/control/caption-bar/index.d.ts +2 -0
- package/out/controller/control/caption-bar/index.d.ts.map +1 -0
- package/out/controller/control/caption-bar/index.js +1 -0
- package/out/controller/control/chart/chart.controller.d.ts +56 -0
- package/out/controller/control/chart/chart.controller.d.ts.map +1 -0
- package/out/controller/control/chart/chart.controller.js +84 -0
- package/out/controller/control/chart/chart.service.d.ts +13 -0
- package/out/controller/control/chart/chart.service.d.ts.map +1 -0
- package/out/controller/control/chart/chart.service.js +11 -0
- package/out/controller/control/chart/generator/bar-series-generator.d.ts +15 -0
- package/out/controller/control/chart/generator/bar-series-generator.d.ts.map +1 -0
- package/out/controller/control/chart/generator/bar-series-generator.js +28 -0
- package/out/controller/control/chart/generator/base-series-generator.d.ts +189 -0
- package/out/controller/control/chart/generator/base-series-generator.d.ts.map +1 -0
- package/out/controller/control/chart/generator/base-series-generator.js +433 -0
- package/out/controller/control/chart/generator/chart-options-generator.d.ts +84 -0
- package/out/controller/control/chart/generator/chart-options-generator.d.ts.map +1 -0
- package/out/controller/control/chart/generator/chart-options-generator.js +285 -0
- package/out/controller/control/chart/generator/funnel-series-generator.d.ts +20 -0
- package/out/controller/control/chart/generator/funnel-series-generator.d.ts.map +1 -0
- package/out/controller/control/chart/generator/funnel-series-generator.js +27 -0
- package/out/controller/control/chart/generator/line-series-generator.d.ts +15 -0
- package/out/controller/control/chart/generator/line-series-generator.d.ts.map +1 -0
- package/out/controller/control/chart/generator/line-series-generator.js +32 -0
- package/out/controller/control/chart/generator/pie-series-generator.d.ts +20 -0
- package/out/controller/control/chart/generator/pie-series-generator.d.ts.map +1 -0
- package/out/controller/control/chart/generator/pie-series-generator.js +27 -0
- package/out/controller/control/chart/generator/radar-coord-system.d.ts +53 -0
- package/out/controller/control/chart/generator/radar-coord-system.d.ts.map +1 -0
- package/out/controller/control/chart/generator/radar-coord-system.js +65 -0
- package/out/controller/control/chart/generator/radar-series-generator.d.ts +24 -0
- package/out/controller/control/chart/generator/radar-series-generator.d.ts.map +1 -0
- package/out/controller/control/chart/generator/radar-series-generator.js +64 -0
- package/out/controller/control/chart/generator/scatter-series-generator.d.ts +15 -0
- package/out/controller/control/chart/generator/scatter-series-generator.d.ts.map +1 -0
- package/out/controller/control/chart/generator/scatter-series-generator.js +24 -0
- package/out/controller/control/chart/index.d.ts +3 -0
- package/out/controller/control/chart/index.d.ts.map +1 -0
- package/out/controller/control/chart/index.js +2 -0
- package/out/controller/control/context-menu/context-menu.controllerr.d.ts +14 -0
- package/out/controller/control/context-menu/context-menu.controllerr.d.ts.map +1 -0
- package/out/controller/control/context-menu/context-menu.controllerr.js +11 -0
- package/out/controller/control/context-menu/index.d.ts +2 -0
- package/out/controller/control/context-menu/index.d.ts.map +1 -0
- package/out/controller/control/context-menu/index.js +1 -0
- package/out/controller/control/dashboard/dashboard.controller.d.ts +55 -0
- package/out/controller/control/dashboard/dashboard.controller.d.ts.map +1 -0
- package/out/controller/control/dashboard/dashboard.controller.js +94 -0
- package/out/controller/control/dashboard/index.d.ts +3 -0
- package/out/controller/control/dashboard/index.d.ts.map +1 -0
- package/out/controller/control/dashboard/index.js +2 -0
- package/out/controller/control/dashboard/portlet/container-portlet/container-portlet.controller.d.ts +5 -0
- package/out/controller/control/dashboard/portlet/container-portlet/container-portlet.controller.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/container-portlet/container-portlet.controller.js +3 -0
- package/out/controller/control/dashboard/portlet/container-portlet/index.d.ts +2 -0
- package/out/controller/control/dashboard/portlet/container-portlet/index.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/container-portlet/index.js +1 -0
- package/out/controller/control/dashboard/portlet/index.d.ts +4 -0
- package/out/controller/control/dashboard/portlet/index.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/index.js +3 -0
- package/out/controller/control/dashboard/portlet/portlet-part/index.d.ts +3 -0
- package/out/controller/control/dashboard/portlet/portlet-part/index.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/portlet-part/index.js +2 -0
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts +123 -0
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.js +182 -0
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.state.d.ts +21 -0
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.state.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/portlet-part/portlet-part.state.js +30 -0
- package/out/controller/control/dashboard/portlet/view-portlet/index.d.ts +2 -0
- package/out/controller/control/dashboard/portlet/view-portlet/index.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/view-portlet/index.js +1 -0
- package/out/controller/control/dashboard/portlet/view-portlet/view-portlet.controller.d.ts +5 -0
- package/out/controller/control/dashboard/portlet/view-portlet/view-portlet.controller.d.ts.map +1 -0
- package/out/controller/control/dashboard/portlet/view-portlet/view-portlet.controller.js +3 -0
- package/out/controller/control/data-view/data-view.controller.d.ts +90 -0
- package/out/controller/control/data-view/data-view.controller.d.ts.map +1 -0
- package/out/controller/control/data-view/data-view.controller.js +207 -0
- package/out/controller/control/data-view/data-view.service.d.ts +18 -0
- package/out/controller/control/data-view/data-view.service.d.ts.map +1 -0
- package/out/controller/control/data-view/data-view.service.js +37 -0
- package/out/controller/control/data-view/index.d.ts +3 -0
- package/out/controller/control/data-view/index.d.ts.map +1 -0
- package/out/controller/control/data-view/index.js +2 -0
- package/out/controller/control/exp-bar/calendar-exp-bar.controller.d.ts +35 -0
- package/out/controller/control/exp-bar/calendar-exp-bar.controller.d.ts.map +1 -0
- package/out/controller/control/exp-bar/calendar-exp-bar.controller.js +74 -0
- package/out/controller/control/exp-bar/exp-bar.controller.d.ts +184 -0
- package/out/controller/control/exp-bar/exp-bar.controller.d.ts.map +1 -0
- package/out/controller/control/exp-bar/exp-bar.controller.js +315 -0
- package/out/controller/control/exp-bar/index.d.ts +4 -0
- package/out/controller/control/exp-bar/index.d.ts.map +1 -0
- package/out/controller/control/exp-bar/index.js +3 -0
- package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts +66 -0
- package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts.map +1 -0
- package/out/controller/control/exp-bar/tree-exp-bar.controller.js +134 -0
- package/out/controller/control/form/edit-form/edit-form.controller.d.ts +97 -0
- package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -0
- package/out/controller/control/form/edit-form/edit-form.controller.js +258 -0
- package/out/controller/control/form/edit-form/edit-form.service.d.ts +115 -0
- package/out/controller/control/form/edit-form/edit-form.service.d.ts.map +1 -0
- package/out/controller/control/form/edit-form/edit-form.service.js +231 -0
- package/out/controller/control/form/edit-form/index.d.ts +3 -0
- package/out/controller/control/form/edit-form/index.d.ts.map +1 -0
- package/out/controller/control/form/edit-form/index.js +2 -0
- package/out/controller/control/form/form/form.controller.d.ts +130 -0
- package/out/controller/control/form/form/form.controller.d.ts.map +1 -0
- package/out/controller/control/form/form/form.controller.js +199 -0
- package/out/controller/control/form/form/index.d.ts +2 -0
- package/out/controller/control/form/form/index.d.ts.map +1 -0
- package/out/controller/control/form/form/index.js +1 -0
- package/out/controller/control/form/form-detail/form-button/form-button.controller.d.ts +50 -0
- package/out/controller/control/form/form-detail/form-button/form-button.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-button/form-button.controller.js +79 -0
- package/out/controller/control/form/form-detail/form-button/form-button.state.d.ts +17 -0
- package/out/controller/control/form/form-detail/form-button/form-button.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-button/form-button.state.js +19 -0
- package/out/controller/control/form/form-detail/form-button/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-button/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-button/index.js +2 -0
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts +130 -0
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +188 -0
- package/out/controller/control/form/form-detail/form-detail/form-detail.state.d.ts +34 -0
- package/out/controller/control/form/form-detail/form-detail/form-detail.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-detail/form-detail.state.js +89 -0
- package/out/controller/control/form/form-detail/form-detail/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-detail/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-detail/index.js +2 -0
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.d.ts +92 -0
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +148 -0
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.state.d.ts +25 -0
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.state.js +19 -0
- package/out/controller/control/form/form-detail/form-druipart/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-druipart/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-druipart/index.js +2 -0
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.d.ts +54 -0
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.js +95 -0
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.state.d.ts +28 -0
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.state.js +29 -0
- package/out/controller/control/form/form-detail/form-group-panel/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-group-panel/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-group-panel/index.js +2 -0
- package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts +165 -0
- package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-item/form-item.controller.js +308 -0
- package/out/controller/control/form/form-detail/form-item/form-item.state.d.ts +28 -0
- package/out/controller/control/form/form-detail/form-item/form-item.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-item/form-item.state.js +43 -0
- package/out/controller/control/form/form-detail/form-item/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-item/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-item/index.js +2 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.d.ts +96 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.js +116 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-control/form-mdctrl-control.controller.d.ts +41 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-control/form-mdctrl-control.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-control/form-mdctrl-control.controller.js +34 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.controller.d.ts +97 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.controller.js +104 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.controller.d.ts +135 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.controller.js +189 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-grid/form-mdctrl-grid.controller.d.ts +114 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-grid/form-mdctrl-grid.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-grid/form-mdctrl-grid.controller.js +140 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.controller.d.ts +97 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.controller.js +104 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.d.ts +18 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.js +20 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.d.ts +101 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.js +150 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.d.ts +80 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.js +130 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-grid/form-mdctrl-repeater-grid.controller.d.ts +75 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-grid/form-mdctrl-repeater-grid.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-grid/form-mdctrl-repeater-grid.controller.js +108 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts +87 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.js +119 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts +16 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.js +18 -0
- package/out/controller/control/form/form-detail/form-mdctrl/index.d.ts +13 -0
- package/out/controller/control/form/form-detail/form-mdctrl/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-mdctrl/index.js +12 -0
- package/out/controller/control/form/form-detail/form-page/form-page.controller.d.ts +17 -0
- package/out/controller/control/form/form-detail/form-page/form-page.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-page/form-page.controller.js +17 -0
- package/out/controller/control/form/form-detail/form-page/form-page.state.d.ts +13 -0
- package/out/controller/control/form/form-detail/form-page/form-page.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-page/form-page.state.js +12 -0
- package/out/controller/control/form/form-detail/form-page/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-page/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-page/index.js +2 -0
- package/out/controller/control/form/form-detail/form-rawitem/form-rawitem.controller.d.ts +17 -0
- package/out/controller/control/form/form-detail/form-rawitem/form-rawitem.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-rawitem/form-rawitem.controller.js +17 -0
- package/out/controller/control/form/form-detail/form-rawitem/form-rawitem.state.d.ts +10 -0
- package/out/controller/control/form/form-detail/form-rawitem/form-rawitem.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-rawitem/form-rawitem.state.js +9 -0
- package/out/controller/control/form/form-detail/form-rawitem/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-rawitem/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-rawitem/index.js +2 -0
- package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.d.ts +18 -0
- package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.js +17 -0
- package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.state.d.ts +10 -0
- package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-tab-page/form-tab-page.state.js +9 -0
- package/out/controller/control/form/form-detail/form-tab-page/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-tab-page/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-tab-page/index.js +2 -0
- package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.d.ts +18 -0
- package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.js +17 -0
- package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.d.ts +10 -0
- package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.js +9 -0
- package/out/controller/control/form/form-detail/form-tab-panel/index.d.ts +3 -0
- package/out/controller/control/form/form-detail/form-tab-panel/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/form-tab-panel/index.js +2 -0
- package/out/controller/control/form/form-detail/index.d.ts +11 -0
- package/out/controller/control/form/form-detail/index.d.ts.map +1 -0
- package/out/controller/control/form/form-detail/index.js +10 -0
- package/out/controller/control/form/index.d.ts +5 -0
- package/out/controller/control/form/index.d.ts.map +1 -0
- package/out/controller/control/form/index.js +4 -0
- package/out/controller/control/form/search-form/index.d.ts +3 -0
- package/out/controller/control/form/search-form/index.d.ts.map +1 -0
- package/out/controller/control/form/search-form/index.js +2 -0
- package/out/controller/control/form/search-form/search-form.controller.d.ts +79 -0
- package/out/controller/control/form/search-form/search-form.controller.d.ts.map +1 -0
- package/out/controller/control/form/search-form/search-form.controller.js +108 -0
- package/out/controller/control/form/search-form/search-form.service.d.ts +42 -0
- package/out/controller/control/form/search-form/search-form.service.d.ts.map +1 -0
- package/out/controller/control/form/search-form/search-form.service.js +61 -0
- package/out/controller/control/grid/grid/grid-column.controller.d.ts +107 -0
- package/out/controller/control/grid/grid/grid-column.controller.d.ts.map +1 -0
- package/out/controller/control/grid/grid/grid-column.controller.js +119 -0
- package/out/controller/control/grid/grid/grid-row.state.d.ts +75 -0
- package/out/controller/control/grid/grid/grid-row.state.d.ts.map +1 -0
- package/out/controller/control/grid/grid/grid-row.state.js +80 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts +298 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -0
- package/out/controller/control/grid/grid/grid.controller.js +739 -0
- package/out/controller/control/grid/grid/grid.service.d.ts +32 -0
- package/out/controller/control/grid/grid/grid.service.d.ts.map +1 -0
- package/out/controller/control/grid/grid/grid.service.js +64 -0
- package/out/controller/control/grid/grid/index.d.ts +5 -0
- package/out/controller/control/grid/grid/index.d.ts.map +1 -0
- package/out/controller/control/grid/grid/index.js +4 -0
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +100 -0
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +224 -0
- package/out/controller/control/grid/grid-column/grid-field-column/index.d.ts +2 -0
- package/out/controller/control/grid/grid-column/grid-field-column/index.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/grid-field-column/index.js +1 -0
- package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts +168 -0
- package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.js +270 -0
- package/out/controller/control/grid/grid-column/grid-field-edit-column/index.d.ts +2 -0
- package/out/controller/control/grid/grid-column/grid-field-edit-column/index.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/grid-field-edit-column/index.js +1 -0
- package/out/controller/control/grid/grid-column/grid-group-column/grid-group-column.controller.d.ts +11 -0
- package/out/controller/control/grid/grid-column/grid-group-column/grid-group-column.controller.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/grid-group-column/grid-group-column.controller.js +9 -0
- package/out/controller/control/grid/grid-column/grid-group-column/index.d.ts +2 -0
- package/out/controller/control/grid/grid-column/grid-group-column/index.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/grid-group-column/index.js +1 -0
- package/out/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.d.ts +29 -0
- package/out/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.js +59 -0
- package/out/controller/control/grid/grid-column/grid-ua-column/index.d.ts +2 -0
- package/out/controller/control/grid/grid-column/grid-ua-column/index.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/grid-ua-column/index.js +1 -0
- package/out/controller/control/grid/grid-column/index.d.ts +5 -0
- package/out/controller/control/grid/grid-column/index.d.ts.map +1 -0
- package/out/controller/control/grid/grid-column/index.js +4 -0
- package/out/controller/control/grid/index.d.ts +3 -0
- package/out/controller/control/grid/index.d.ts.map +1 -0
- package/out/controller/control/grid/index.js +2 -0
- package/out/controller/control/index.d.ts +20 -0
- package/out/controller/control/index.d.ts.map +1 -0
- package/out/controller/control/index.js +19 -0
- package/out/controller/control/list/index.d.ts +3 -0
- package/out/controller/control/list/index.d.ts.map +1 -0
- package/out/controller/control/list/index.js +2 -0
- package/out/controller/control/list/list.controller.d.ts +92 -0
- package/out/controller/control/list/list.controller.d.ts.map +1 -0
- package/out/controller/control/list/list.controller.js +186 -0
- package/out/controller/control/list/list.service.d.ts +20 -0
- package/out/controller/control/list/list.service.d.ts.map +1 -0
- package/out/controller/control/list/list.service.js +39 -0
- package/out/controller/control/panel/index.d.ts +3 -0
- package/out/controller/control/panel/index.d.ts.map +1 -0
- package/out/controller/control/panel/index.js +2 -0
- package/out/controller/control/panel/panel/index.d.ts +4 -0
- package/out/controller/control/panel/panel/index.d.ts.map +1 -0
- package/out/controller/control/panel/panel/index.js +3 -0
- package/out/controller/control/panel/panel/panel-item.controller.d.ts +120 -0
- package/out/controller/control/panel/panel/panel-item.controller.d.ts.map +1 -0
- package/out/controller/control/panel/panel/panel-item.controller.js +206 -0
- package/out/controller/control/panel/panel/panel-item.state.d.ts +27 -0
- package/out/controller/control/panel/panel/panel-item.state.d.ts.map +1 -0
- package/out/controller/control/panel/panel/panel-item.state.js +73 -0
- package/out/controller/control/panel/panel/panel.controller.d.ts +115 -0
- package/out/controller/control/panel/panel/panel.controller.d.ts.map +1 -0
- package/out/controller/control/panel/panel/panel.controller.js +202 -0
- package/out/controller/control/panel/view-layout-panel/index.d.ts +2 -0
- package/out/controller/control/panel/view-layout-panel/index.d.ts.map +1 -0
- package/out/controller/control/panel/view-layout-panel/index.js +1 -0
- package/out/controller/control/panel/view-layout-panel/view-layout-panel.controller.d.ts +24 -0
- package/out/controller/control/panel/view-layout-panel/view-layout-panel.controller.d.ts.map +1 -0
- package/out/controller/control/panel/view-layout-panel/view-layout-panel.controller.js +57 -0
- package/out/controller/control/pickup-view-panel/index.d.ts +2 -0
- package/out/controller/control/pickup-view-panel/index.d.ts.map +1 -0
- package/out/controller/control/pickup-view-panel/index.js +1 -0
- package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.d.ts +60 -0
- package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.d.ts.map +1 -0
- package/out/controller/control/pickup-view-panel/pickup-view-panel.controller.js +93 -0
- package/out/controller/control/search-bar/index.d.ts +2 -0
- package/out/controller/control/search-bar/index.d.ts.map +1 -0
- package/out/controller/control/search-bar/index.js +1 -0
- package/out/controller/control/search-bar/search-bar.controller.d.ts +39 -0
- package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -0
- package/out/controller/control/search-bar/search-bar.controller.js +61 -0
- package/out/controller/control/tab-exp-panel/index.d.ts +2 -0
- package/out/controller/control/tab-exp-panel/index.d.ts.map +1 -0
- package/out/controller/control/tab-exp-panel/index.js +1 -0
- package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.d.ts +87 -0
- package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.d.ts.map +1 -0
- package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.js +163 -0
- package/out/controller/control/toolbar/index.d.ts +2 -0
- package/out/controller/control/toolbar/index.d.ts.map +1 -0
- package/out/controller/control/toolbar/index.js +1 -0
- package/out/controller/control/toolbar/toolbar.controllerr.d.ts +47 -0
- package/out/controller/control/toolbar/toolbar.controllerr.d.ts.map +1 -0
- package/out/controller/control/toolbar/toolbar.controllerr.js +148 -0
- package/out/controller/control/tree/index.d.ts +3 -0
- package/out/controller/control/tree/index.d.ts.map +1 -0
- package/out/controller/control/tree/index.js +2 -0
- package/out/controller/control/tree/tree.controller.d.ts +110 -0
- package/out/controller/control/tree/tree.controller.d.ts.map +1 -0
- package/out/controller/control/tree/tree.controller.js +268 -0
- package/out/controller/control/tree/tree.service.d.ts +115 -0
- package/out/controller/control/tree/tree.service.d.ts.map +1 -0
- package/out/controller/control/tree/tree.service.js +249 -0
- package/out/controller/control/wizard-panel/index.d.ts +3 -0
- package/out/controller/control/wizard-panel/index.d.ts.map +1 -0
- package/out/controller/control/wizard-panel/index.js +2 -0
- package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts +147 -0
- package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts.map +1 -0
- package/out/controller/control/wizard-panel/wizard-panel.controller.js +275 -0
- package/out/controller/control/wizard-panel/wizard-panel.service.d.ts +37 -0
- package/out/controller/control/wizard-panel/wizard-panel.service.d.ts.map +1 -0
- package/out/controller/control/wizard-panel/wizard-panel.service.js +46 -0
- package/out/controller/index.d.ts +1 -0
- package/out/controller/index.d.ts.map +1 -1
- package/out/controller/index.js +1 -0
- package/out/controller/utils/counter/counter.d.ts +1 -1
- package/out/controller/utils/counter/counter.js +1 -1
- package/out/global/global-util/global-util.d.ts +15 -1
- package/out/global/global-util/global-util.d.ts.map +1 -1
- package/out/global/global-util/global-util.js +8 -1
- package/out/install.d.ts.map +1 -1
- package/out/install.js +3 -1
- package/out/interface/common/i-drawer-options/i-drawer-options.d.ts +6 -6
- package/out/interface/common/i-drawer-options/i-drawer-options.d.ts.map +1 -1
- package/out/interface/provider/i-app-counter.provider.d.ts +22 -0
- package/out/interface/provider/i-app-counter.provider.d.ts.map +1 -0
- package/out/interface/provider/i-app-counter.provider.js +1 -0
- package/out/interface/provider/index.d.ts +1 -0
- package/out/interface/provider/index.d.ts.map +1 -1
- package/out/interface/util/i-export-excel/i-export-excel.d.ts +21 -0
- package/out/interface/util/i-export-excel/i-export-excel.d.ts.map +1 -0
- package/out/interface/util/i-export-excel/i-export-excel.js +1 -0
- package/out/interface/util/index.d.ts +1 -0
- package/out/interface/util/index.d.ts.map +1 -1
- package/out/register/helper/app-counter-register.d.ts +23 -0
- package/out/register/helper/app-counter-register.d.ts.map +1 -0
- package/out/register/helper/app-counter-register.js +61 -0
- package/out/register/helper/index.d.ts +1 -0
- package/out/register/helper/index.d.ts.map +1 -1
- package/out/register/helper/index.js +1 -0
- package/out/service/service/counter/counter.service.d.ts.map +1 -1
- package/out/service/service/counter/counter.service.js +4 -6
- package/out/service/utils/app-counter/app-counter.d.ts +1 -3
- package/out/service/utils/app-counter/app-counter.d.ts.map +1 -1
- package/out/service/utils/app-counter/app-counter.js +3 -15
- package/out/service/utils/app-counter/app-de-counter.d.ts +34 -0
- package/out/service/utils/app-counter/app-de-counter.d.ts.map +1 -0
- package/out/service/utils/app-counter/app-de-counter.js +46 -0
- package/out/service/utils/app-counter/app-de-counter.provider.d.ts +15 -0
- package/out/service/utils/app-counter/app-de-counter.provider.d.ts.map +1 -0
- package/out/service/utils/app-counter/app-de-counter.provider.js +14 -0
- package/out/service/utils/app-counter/index.d.ts +13 -0
- package/out/service/utils/app-counter/index.d.ts.map +1 -0
- package/out/service/utils/app-counter/index.js +16 -0
- package/out/service/utils/index.d.ts +1 -1
- package/out/service/utils/index.d.ts.map +1 -1
- package/out/service/utils/index.js +1 -1
- package/out/utils/index.d.ts +1 -0
- package/out/utils/index.d.ts.map +1 -1
- package/out/utils/index.js +1 -0
- package/out/utils/text-util/text-util.d.ts +21 -0
- package/out/utils/text-util/text-util.d.ts.map +1 -0
- package/out/utils/text-util/text-util.js +22 -0
- package/package.json +5 -3
- package/src/config/global-config.ts +1 -1
- package/src/controller/control/app-menu/app-menu.controller.ts +169 -0
- package/src/controller/control/app-menu/index.ts +1 -0
- package/src/controller/control/app-menu-icon-view/app-menu-icon-view.controller.ts +48 -0
- package/src/controller/control/app-menu-icon-view/index.ts +1 -0
- package/src/controller/control/calendar/calendar.controller.ts +212 -0
- package/src/controller/control/calendar/calendar.service.ts +112 -0
- package/src/controller/control/calendar/index.ts +2 -0
- package/src/controller/control/caption-bar/caption-bar.controller.ts +44 -0
- package/src/controller/control/caption-bar/index.ts +1 -0
- package/src/controller/control/chart/chart.controller.ts +123 -0
- package/src/controller/control/chart/chart.service.ts +12 -0
- package/src/controller/control/chart/generator/bar-series-generator.ts +32 -0
- package/src/controller/control/chart/generator/base-series-generator.ts +593 -0
- package/src/controller/control/chart/generator/chart-options-generator.ts +409 -0
- package/src/controller/control/chart/generator/funnel-series-generator.ts +36 -0
- package/src/controller/control/chart/generator/line-series-generator.ts +37 -0
- package/src/controller/control/chart/generator/pie-series-generator.ts +36 -0
- package/src/controller/control/chart/generator/radar-coord-system.ts +85 -0
- package/src/controller/control/chart/generator/radar-series-generator.ts +80 -0
- package/src/controller/control/chart/generator/scatter-series-generator.ts +28 -0
- package/src/controller/control/chart/index.ts +2 -0
- package/src/controller/control/context-menu/context-menu.controllerr.ts +23 -0
- package/src/controller/control/context-menu/index.ts +1 -0
- package/src/controller/control/dashboard/dashboard.controller.ts +127 -0
- package/src/controller/control/dashboard/index.ts +2 -0
- package/src/controller/control/dashboard/portlet/container-portlet/container-portlet.controller.ts +4 -0
- package/src/controller/control/dashboard/portlet/container-portlet/index.ts +1 -0
- package/src/controller/control/dashboard/portlet/index.ts +3 -0
- package/src/controller/control/dashboard/portlet/portlet-part/index.ts +2 -0
- package/src/controller/control/dashboard/portlet/portlet-part/portlet-part.controller.ts +246 -0
- package/src/controller/control/dashboard/portlet/portlet-part/portlet-part.state.ts +39 -0
- package/src/controller/control/dashboard/portlet/view-portlet/index.ts +1 -0
- package/src/controller/control/dashboard/portlet/view-portlet/view-portlet.controller.ts +4 -0
- package/src/controller/control/data-view/data-view.controller.ts +258 -0
- package/src/controller/control/data-view/data-view.service.ts +37 -0
- package/src/controller/control/data-view/index.ts +2 -0
- package/src/controller/control/exp-bar/calendar-exp-bar.controller.ts +108 -0
- package/src/controller/control/exp-bar/exp-bar.controller.ts +400 -0
- package/src/controller/control/exp-bar/index.ts +3 -0
- package/src/controller/control/exp-bar/tree-exp-bar.controller.ts +178 -0
- package/src/controller/control/form/edit-form/edit-form.controller.ts +325 -0
- package/src/controller/control/form/edit-form/edit-form.service.ts +322 -0
- package/src/controller/control/form/edit-form/index.ts +2 -0
- package/src/controller/control/form/form/form.controller.ts +271 -0
- package/src/controller/control/form/form/index.ts +1 -0
- package/src/controller/control/form/form-detail/form-button/form-button.controller.ts +88 -0
- package/src/controller/control/form/form-detail/form-button/form-button.state.ts +17 -0
- package/src/controller/control/form/form-detail/form-button/index.ts +2 -0
- package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +253 -0
- package/src/controller/control/form/form-detail/form-detail/form-detail.state.ts +106 -0
- package/src/controller/control/form/form-detail/form-detail/index.ts +2 -0
- package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +207 -0
- package/src/controller/control/form/form-detail/form-druipart/form-druipart.state.ts +26 -0
- package/src/controller/control/form/form-detail/form-druipart/index.ts +2 -0
- package/src/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.ts +118 -0
- package/src/controller/control/form/form-detail/form-group-panel/form-group-panel.state.ts +29 -0
- package/src/controller/control/form/form-detail/form-group-panel/index.ts +2 -0
- package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +401 -0
- package/src/controller/control/form/form-detail/form-item/form-item.state.ts +48 -0
- package/src/controller/control/form/form-detail/form-item/index.ts +2 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.ts +138 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-control/form-mdctrl-control.controller.ts +56 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.controller.ts +120 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.controller.ts +224 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-grid/form-mdctrl-grid.controller.ts +161 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.controller.ts +120 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.ts +36 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.ts +213 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.ts +178 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-grid/form-mdctrl-repeater-grid.controller.ts +119 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts +153 -0
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.ts +16 -0
- package/src/controller/control/form/form-detail/form-mdctrl/index.ts +12 -0
- package/src/controller/control/form/form-detail/form-page/form-page.controller.ts +20 -0
- package/src/controller/control/form/form-detail/form-page/form-page.state.ts +12 -0
- package/src/controller/control/form/form-detail/form-page/index.ts +2 -0
- package/src/controller/control/form/form-detail/form-rawitem/form-rawitem.controller.ts +20 -0
- package/src/controller/control/form/form-detail/form-rawitem/form-rawitem.state.ts +9 -0
- package/src/controller/control/form/form-detail/form-rawitem/index.ts +2 -0
- package/src/controller/control/form/form-detail/form-tab-page/form-tab-page.controller.ts +24 -0
- package/src/controller/control/form/form-detail/form-tab-page/form-tab-page.state.ts +9 -0
- package/src/controller/control/form/form-detail/form-tab-page/index.ts +2 -0
- package/src/controller/control/form/form-detail/form-tab-panel/form-tab-panel.controller.ts +24 -0
- package/src/controller/control/form/form-detail/form-tab-panel/form-tab-panel.state.ts +9 -0
- package/src/controller/control/form/form-detail/form-tab-panel/index.ts +2 -0
- package/src/controller/control/form/form-detail/index.ts +10 -0
- package/src/controller/control/form/index.ts +4 -0
- package/src/controller/control/form/search-form/index.ts +2 -0
- package/src/controller/control/form/search-form/search-form.controller.ts +136 -0
- package/src/controller/control/form/search-form/search-form.service.ts +74 -0
- package/src/controller/control/grid/grid/grid-column.controller.ts +151 -0
- package/src/controller/control/grid/grid/grid-row.state.ts +102 -0
- package/src/controller/control/grid/grid/grid.controller.ts +905 -0
- package/src/controller/control/grid/grid/grid.service.ts +71 -0
- package/src/controller/control/grid/grid/index.ts +4 -0
- package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +270 -0
- package/src/controller/control/grid/grid-column/grid-field-column/index.ts +1 -0
- package/src/controller/control/grid/grid-column/grid-field-edit-column/grid-field-edit-column.controller.ts +364 -0
- package/src/controller/control/grid/grid-column/grid-field-edit-column/index.ts +1 -0
- package/src/controller/control/grid/grid-column/grid-group-column/grid-group-column.controller.ts +10 -0
- package/src/controller/control/grid/grid-column/grid-group-column/index.ts +1 -0
- package/src/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.ts +70 -0
- package/src/controller/control/grid/grid-column/grid-ua-column/index.ts +1 -0
- package/src/controller/control/grid/grid-column/index.ts +4 -0
- package/src/controller/control/grid/index.ts +2 -0
- package/src/controller/control/index.ts +19 -0
- package/src/controller/control/list/index.ts +2 -0
- package/src/controller/control/list/list.controller.ts +228 -0
- package/src/controller/control/list/list.service.ts +39 -0
- package/src/controller/control/panel/index.ts +2 -0
- package/src/controller/control/panel/panel/index.ts +3 -0
- package/src/controller/control/panel/panel/panel-item.controller.ts +244 -0
- package/src/controller/control/panel/panel/panel-item.state.ts +86 -0
- package/src/controller/control/panel/panel/panel.controller.ts +267 -0
- package/src/controller/control/panel/view-layout-panel/index.ts +1 -0
- package/src/controller/control/panel/view-layout-panel/view-layout-panel.controller.ts +77 -0
- package/src/controller/control/pickup-view-panel/index.ts +1 -0
- package/src/controller/control/pickup-view-panel/pickup-view-panel.controller.ts +138 -0
- package/src/controller/control/search-bar/index.ts +1 -0
- package/src/controller/control/search-bar/search-bar.controller.ts +76 -0
- package/src/controller/control/tab-exp-panel/index.ts +1 -0
- package/src/controller/control/tab-exp-panel/tab-exp-panel.controller.ts +195 -0
- package/src/controller/control/toolbar/index.ts +1 -0
- package/src/controller/control/toolbar/toolbar.controllerr.ts +215 -0
- package/src/controller/control/tree/index.ts +2 -0
- package/src/controller/control/tree/tree.controller.ts +327 -0
- package/src/controller/control/tree/tree.service.ts +425 -0
- package/src/controller/control/wizard-panel/index.ts +2 -0
- package/src/controller/control/wizard-panel/wizard-panel.controller.ts +325 -0
- package/src/controller/control/wizard-panel/wizard-panel.service.ts +58 -0
- package/src/controller/index.ts +1 -0
- package/src/controller/utils/counter/counter.ts +1 -1
- package/src/global/global-util/global-util.ts +17 -1
- package/src/install.ts +3 -1
- package/src/interface/common/i-drawer-options/i-drawer-options.ts +6 -6
- package/src/interface/provider/i-app-counter.provider.ts +22 -0
- package/src/interface/provider/index.ts +1 -0
- package/src/interface/util/i-export-excel/i-export-excel.ts +20 -0
- package/src/interface/util/index.ts +1 -0
- package/src/register/helper/app-counter-register.ts +75 -0
- package/src/register/helper/index.ts +1 -0
- package/src/service/service/counter/counter.service.ts +4 -5
- package/src/service/utils/app-counter/app-counter.ts +3 -24
- package/src/service/utils/app-counter/app-de-counter.provider.ts +18 -0
- package/src/service/utils/app-counter/app-de-counter.ts +60 -0
- package/src/service/utils/app-counter/index.ts +18 -0
- package/src/service/utils/index.ts +1 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/text-util/text-util.ts +22 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.system.min.js","sources":["index.esm.js"],"sourcesContent":["var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\n// ../../node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.js\nvar require_path_browserify = __commonJS({\n \"../../node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.js\"(exports, module) {\n \"use strict\";\n function assertPath(path2) {\n if (typeof path2 !== \"string\") {\n throw new TypeError(\"Path must be a string. Received \" + JSON.stringify(path2));\n }\n }\n function normalizeStringPosix(path2, allowAboveRoot) {\n var res = \"\";\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path2.length; ++i) {\n if (i < path2.length)\n code = path2.charCodeAt(i);\n else if (code === 47)\n break;\n else\n code = 47;\n if (code === 47) {\n if (lastSlash === i - 1 || dots === 1) {\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += \"/..\";\n else\n res = \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += \"/\" + path2.slice(lastSlash + 1, i);\n else\n res = path2.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n }\n function _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || \"\") + (pathObject.ext || \"\");\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n }\n var posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = \"\";\n var resolvedAbsolute = false;\n var cwd;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path2;\n if (i >= 0)\n path2 = arguments[i];\n else {\n if (cwd === void 0)\n cwd = process.cwd();\n path2 = cwd;\n }\n assertPath(path2);\n if (path2.length === 0) {\n continue;\n }\n resolvedPath = path2 + \"/\" + resolvedPath;\n resolvedAbsolute = path2.charCodeAt(0) === 47;\n }\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return \"/\" + resolvedPath;\n else\n return \"/\";\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return \".\";\n }\n },\n normalize: function normalize(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n var isAbsolute = path2.charCodeAt(0) === 47;\n var trailingSeparator = path2.charCodeAt(path2.length - 1) === 47;\n path2 = normalizeStringPosix(path2, !isAbsolute);\n if (path2.length === 0 && !isAbsolute)\n path2 = \".\";\n if (path2.length > 0 && trailingSeparator)\n path2 += \"/\";\n if (isAbsolute)\n return \"/\" + path2;\n return path2;\n },\n isAbsolute: function isAbsolute(path2) {\n assertPath(path2);\n return path2.length > 0 && path2.charCodeAt(0) === 47;\n },\n join: function join() {\n if (arguments.length === 0)\n return \".\";\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === void 0)\n joined = arg;\n else\n joined += \"/\" + arg;\n }\n }\n if (joined === void 0)\n return \".\";\n return posix.normalize(joined);\n },\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n if (from === to)\n return \"\";\n from = posix.resolve(from);\n to = posix.resolve(to);\n if (from === to)\n return \"\";\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47) {\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47) {\n lastCommonSep = i;\n } else if (i === 0) {\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47)\n lastCommonSep = i;\n }\n var out = \"\";\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47) {\n if (out.length === 0)\n out += \"..\";\n else\n out += \"/..\";\n }\n }\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47)\n ++toStart;\n return to.slice(toStart);\n }\n },\n _makeLong: function _makeLong(path2) {\n return path2;\n },\n dirname: function dirname(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n var code = path2.charCodeAt(0);\n var hasRoot = code === 47;\n var end = -1;\n var matchedSlash = true;\n for (var i = path2.length - 1; i >= 1; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n matchedSlash = false;\n }\n }\n if (end === -1)\n return hasRoot ? \"/\" : \".\";\n if (hasRoot && end === 1)\n return \"//\";\n return path2.slice(0, end);\n },\n basename: function basename(path2, ext) {\n if (ext !== void 0 && typeof ext !== \"string\")\n throw new TypeError('\"ext\" argument must be a string');\n assertPath(path2);\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {\n if (ext.length === path2.length && ext === path2)\n return \"\";\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path2.length - 1; i >= 0; --i) {\n var code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n end = i;\n }\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end)\n end = firstNonSlashEnd;\n else if (end === -1)\n end = path2.length;\n return path2.slice(start, end);\n } else {\n for (i = path2.length - 1; i >= 0; --i) {\n if (path2.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1)\n return \"\";\n return path2.slice(start, end);\n }\n },\n extname: function extname(path2) {\n assertPath(path2);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var preDotState = 0;\n for (var i = path2.length - 1; i >= 0; --i) {\n var code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return \"\";\n }\n return path2.slice(startDot, end);\n },\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== \"object\") {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format(\"/\", pathObject);\n },\n parse: function parse(path2) {\n assertPath(path2);\n var ret = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (path2.length === 0)\n return ret;\n var code = path2.charCodeAt(0);\n var isAbsolute = code === 47;\n var start;\n if (isAbsolute) {\n ret.root = \"/\";\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path2.length - 1;\n var preDotState = 0;\n for (; i >= start; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = path2.slice(1, end);\n else\n ret.base = ret.name = path2.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path2.slice(1, startDot);\n ret.base = path2.slice(1, end);\n } else {\n ret.name = path2.slice(startPart, startDot);\n ret.base = path2.slice(startPart, end);\n }\n ret.ext = path2.slice(startDot, end);\n }\n if (startPart > 0)\n ret.dir = path2.slice(0, startPart - 1);\n else if (isAbsolute)\n ret.dir = \"/\";\n return ret;\n },\n sep: \"/\",\n delimiter: \":\",\n win32: null,\n posix: null\n };\n posix.posix = posix;\n module.exports = posix;\n }\n});\n\n// src/config/global-config.ts\nvar GlobalConfig = class {\n constructor() {\n // 全局视图配置\n this.view = {\n enableDataInfoBar: true\n };\n // 全局表格配置\n this.grid = {\n editShowMode: \"row\",\n editSaveMode: \"cell-blur\"\n };\n // 全局菜单配置\n this.appMenu = {\n enableEcho: false\n };\n // 全局代码表配置\n this.codeList = {\n timeout: 60 * 60 * 1e3\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 ModelError4, RuntimeError as RuntimeError5 } from \"@ibiz-template/core\";\n\n// src/utils/nav-params/nav-params.ts\nimport { isEmpty } from \"lodash-es\";\nimport { isNilOrEmpty, notNilEmpty } from \"qx-util\";\nfunction convertNavData(naviDatas, ...origins) {\n if (!naviDatas || isEmpty(naviDatas)) {\n return {};\n }\n if (Object.prototype.toString.call(naviDatas) === \"[object Array]\") {\n return convertNavDataByArray(naviDatas, ...origins);\n }\n if (Object.prototype.toString.call(naviDatas) === \"[object Object]\") {\n return convertNavDataByObject(naviDatas, ...origins);\n }\n return {};\n}\nfunction convertNavDataByArray(naviDatas, ...origins) {\n const result = {};\n for (const naviData of naviDatas) {\n if (notNilEmpty(naviData.value) && !naviData.rawValue) {\n const findOrigin = origins.find((item) => {\n if (isNilOrEmpty(item)) {\n return false;\n }\n return (\n // proxy数据判断是否能拿到值\n item[naviData.value] || // 上下文等判断是否有这个属性,如果有且值为空,则赋该空值\n Object.prototype.hasOwnProperty.call(item, naviData.value)\n );\n });\n if (findOrigin) {\n result[naviData.key.toLowerCase()] = findOrigin[naviData.value];\n }\n } else {\n result[naviData.key.toLowerCase()] = naviData.value || null;\n }\n }\n return result;\n}\nfunction convertNavDataByObject(naviData, ...origins) {\n const result = {};\n const reg2 = /^%(.+)%$/;\n for (const key in naviData) {\n if (notNilEmpty(naviData[key]) && reg2.test(naviData[key])) {\n const valueKey = naviData[key].substring(1, naviData[key].length - 1);\n const findOrigin = origins.find((item) => {\n return Object.prototype.hasOwnProperty.call(item, valueKey);\n });\n if (findOrigin) {\n result[key.toLowerCase()] = findOrigin[valueKey];\n }\n } else {\n result[key.toLowerCase()] = naviData[key] || null;\n }\n }\n return result;\n}\nfunction convertObjectToNavParams(naviData) {\n const result = [];\n const reg2 = /^%(.+)%$/;\n for (const key in naviData) {\n let rawValue = true;\n let value = naviData[key];\n if (notNilEmpty(naviData[key]) && reg2.test(naviData[key])) {\n rawValue = false;\n value = naviData[key].substring(1, naviData[key].length - 1);\n }\n result.push({\n key: key.toLowerCase(),\n rawValue,\n value\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, context, params, data);\n const tempParams = convertNavData(navParams, context, params, data);\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 } from \"@ibiz-template/core\";\nimport { isNilOrEmpty as isNilOrEmpty2, notNilEmpty as notNilEmpty2 } from \"qx-util\";\nimport qs from \"qs\";\n\n// src/model/utils/util.ts\nfunction findModelChild(models, id) {\n if (models) {\n const model = models.find((item) => item.id === id);\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(navigateContexts, { [splitArr[1]]: param });\n break;\n case \"SRFNAVCTX\":\n Object.assign(navigateParams, { [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}\n\n// src/model/layout/layout.ts\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 const result = {};\n if (valignSelf || halignSelf) {\n Object.assign(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 return ScriptFactory.execScriptFn({ data }, expression, {\n singleRowReturn: true,\n isAsync: false\n });\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 { isNotNil } from \"ramda\";\nfunction calcDeCodeNameById(id) {\n const arr = id.split(\".\");\n return arr.pop();\n}\nfunction hasDeCodeName(params, entityId) {\n const codeName = calcDeCodeNameById(entityId);\n return isNotNil(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}\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;\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, context, params);\n context = Object.assign(context.clone(), navContextData);\n const navParams = appView.appViewNavParams || [];\n const navParamsData = convertNavData(navParams, context, params);\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 RuntimeModelError(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 RuntimeModelError(\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 (notNilEmpty2(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 (notNilEmpty2(srfWf)) {\n if (notNilEmpty2(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 (notNilEmpty2(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 notNilEmpty3 } 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 notNilEmpty3(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 return fn.apply({}, args);\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 const view = param.view;\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 \"env\":\n param.env = ibiz.env;\n break;\n case \"app\":\n param.app = ibiz.hub.controller;\n break;\n case \"parent\":\n param.parent = view == null ? void 0 : view.parentView;\n break;\n case \"topView\":\n param.topView = view == null ? void 0 : view.getTopView();\n break;\n case \"parentView\":\n param.parentView = view == null ? void 0 : view.parentView;\n break;\n case \"topViewSession\":\n param.topViewSession = view == null ? void 0 : view.getTopView().session;\n break;\n case \"viewSession\":\n param.viewSession = view == null ? void 0 : view.session;\n break;\n case \"appSession\":\n param.appSession = ibiz.hub.controller.session;\n break;\n default:\n break;\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// 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();\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 RuntimeModelError2 } 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 RuntimeModelError2(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 RuntimeModelError3 } 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 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 !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.find((viewRef) => {\n return viewRef.name === key;\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[\"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/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.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 await this.hooks.shouldDismiss.call(context);\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/command/app/open-app-view/open-app-view.ts\nimport { ModelError as ModelError3, RuntimeError as RuntimeError4 } from \"@ibiz-template/core\";\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 appView = await ibiz.hub.config.view.get(appViewId);\n if (!appView) {\n throw new RuntimeError4(\"\\u5E94\\u7528\\u89C6\\u56FE[\".concat(appViewId, \"]\\u4E0D\\u5B58\\u5728\"));\n }\n if (context.srfkey && appView.appDataEntityId) {\n const deName = calcDeCodeNameById(appView.appDataEntityId);\n context[deName] = context.srfkey;\n context.srfkey = void 0;\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;\n }\n return this.openIndexViewTab(appView, context, params);\n case \"POPUP\":\n throw new ModelError3(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 ModelError3(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 RuntimeError4(\"\\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 RuntimeError5(\"\\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, context, params));\n const _params = convertNavData(navigateParams, context, params);\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 ModelError4(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 RuntimeError5(\"\\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 RuntimeError5(\"\\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 RuntimeError5(\"\\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 RuntimeError5(\"\\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/service/utils/app-counter/app-counter.ts\nimport { IBizContext, RuntimeModelError as RuntimeModelError4 } from \"@ibiz-template/core\";\nimport { notNilEmpty as notNilEmpty4, 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.appDataEntityId = this.model.appDataEntityId;\n const action = this.model.getAppDEActionId;\n if (!action) {\n throw new RuntimeModelError4(this.model, \"\\u672A\\u627E\\u5230\\u83B7\\u53D6\\u8BA1\\u6570\\u5668\\u884C\\u4E3A!\");\n }\n this.action = action;\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 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 *\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 && notNilEmpty4(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/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 RuntimeError6 } 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 RuntimeError6(\"\\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/service/utils/de-dq-cond-util/de-dq-cond-util.ts\nimport { ModelError as ModelError5 } 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 ModelError5(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 ModelError6, RuntimeModelError as RuntimeModelError5 } 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 ModelError6(\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 { valueAppDEFieldId, textAppDEFieldId } = 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 return Object.freeze(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 if (this.isPredefined) {\n if (!params.size) {\n params.size = 1e4;\n }\n const res2 = await app.net.get(\n \"/dictionaries/codelist/\".concat(this.codeList.codeName),\n params\n );\n return Object.freeze(res2.data.items);\n }\n const { appDataEntityId, appDEDataSetId } = this.codeList;\n if (!appDataEntityId) {\n throw new RuntimeModelError5(this.codeList, \"\\u672A\\u914D\\u7F6E\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!appDEDataSetId) {\n throw new RuntimeModelError5(this.codeList, \"\\u672A\\u914D\\u7F6E\\u6570\\u636E\\u96C6\");\n }\n const res = await app.deService.exec(\n appDataEntityId,\n appDEDataSetId,\n context,\n {},\n params\n );\n let resultItems = [];\n if (res.data.length) {\n resultItems = res.data.map((item) => {\n return this.convertData(item);\n });\n }\n return resultItems;\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 RuntimeError7 } 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 RuntimeError7(\"\\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 RuntimeError7(\"\\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 = new RegExp(\"(?<=\\\\$\\\\{)(.*?)(?=\\\\})\", \"g\");\nfunction getMatchResPath(context, entity) {\n const pathItems = entity.requestPaths || [];\n const items = pathItems.map((str) => {\n return {\n path: str,\n keys: str.match(reg) || []\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/route-context/route-context.ts\nvar excludeViewTypes = [\n \"DEGRIDVIEW\" /* DE_GRID_VIEW */,\n \"DEGRIDEXPVIEW\" /* DE_GRID_EXP_VIEW */,\n \"DELISTVIEW\" /* DE_LIST_VIEW */,\n \"DELISTEXPVIEW\" /* DE_LIST_EXP_VIEW */,\n \"DEDATAVIEW\" /* DE_DATA_VIEW */,\n \"DEDATAVIEWEXPVIEW\" /* DE_DATAVIEW_EXP_VIEW */,\n \"DECALENDARVIEW\" /* DE_CALENDAR_VIEW */,\n \"DECALENDAREXPVIEW\" /* DE_CALENDAR_EXP_VIEW */,\n \"DECHARTVIEW\" /* DE_CHART_VIEW */,\n \"DECHARTEXPVIEW\" /* DE_CHART_EXP_VIEW */,\n \"DEKANBANVIEW\" /* DE_KANBAN_VIEW */\n];\nfunction calcRouteContext(_appView) {\n let paths = [];\n paths = paths.sort((a, b) => b.length - a.length);\n const [pathArr] = paths;\n if (pathArr) {\n const obj = {};\n pathArr.forEach(([key, val]) => {\n obj[key] = val;\n });\n return obj;\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 RuntimeError8 } 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(\n codeItem.textLanguageRes.lanResTag,\n codeItem.textLanguageRes.defaultContent\n );\n }\n const _codeItem = {\n text,\n value: isValueNumber ? Number(codeItem.value) : codeItem.value,\n color: codeItem.color,\n id: codeItem.codeName\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 RuntimeError8(\"\\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/counter/counter.service.ts\nimport { ModelError as ModelError7, RuntimeModelError as RuntimeModelError6 } 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 counter = new AppCounter(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 RuntimeModelError6(model, \"\\u672A\\u914D\\u7F6E\\u5E94\\u7528\\u8BA1\\u6570\\u5668!\");\n }\n if (appCounter.counterType === \"CUSTOM\") {\n throw new ModelError7(appCounter, \"\\u672A\\u652F\\u6301\\u81EA\\u5B9A\\u4E49\\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 { ModelError as ModelError16, RuntimeError as RuntimeError11 } from \"@ibiz-template/core\";\n\n// src/service/service/work-flow/work-flow.service.ts\nimport { RuntimeError as RuntimeError9 } 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 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/alls/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/alls/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 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 \"sendback\":\n return this.wfSendBack(context, params, data);\n case \"sendcopy\":\n return this.wfSendCopy(context, params, data);\n default: {\n throw new RuntimeError9(\"\\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/method/de-action.ts\nimport {\n HttpResponse as HttpResponse3,\n RuntimeModelError as RuntimeModelError18\n} from \"@ibiz-template/core\";\n\n// src/service/service/entity/method/method.ts\nimport { RuntimeModelError as RuntimeModelError7 } from \"@ibiz-template/core\";\n\n// src/service/app-data-entity/app-data-entity.ts\nimport { clone as clone4 } 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/app-data-entity/app-data-entity.ts\nvar AppDataEntity = class _AppDataEntity {\n get srfuf() {\n return this.srfkey ? 1 /* UPDATE */ : 0 /* CREATE */;\n }\n /**\n * Creates an instance of AppDataEntity.\n *\n * @author chitanda\n * @date 2022-10-11 21:10:21\n * @param {IAppDataEntity} entity\n * @param {(IData | AppDataEntity)} data\n */\n constructor(entity, data) {\n let _srfkey;\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 ? clone4(data._data) : clone4(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, \"srfkeyfile\", {\n get() {\n return key;\n }\n });\n Object.defineProperty(this, \"srfkey\", {\n set(val) {\n _srfkey = val;\n },\n get() {\n return this._data[key] || _srfkey;\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, \"srfmajorfile\", {\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 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 } = 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 if (!keys.includes(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 });\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 return new _AppDataEntity(this._entity, this._data);\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 if (data instanceof _AppDataEntity) {\n Object.assign(this._data, data._data);\n } else {\n Object.assign(this._data, data);\n }\n return this;\n }\n};\n\n// src/service/dto/method.dto.ts\nimport { ModelError as ModelError8 } from \"@ibiz-template/core\";\nvar MethodDto = class _MethodDto {\n constructor(entity, dto) {\n this.entity = entity;\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 get isLocalMode() {\n return this.entity.storageMode === 1 || this.entity.storageMode === 4;\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 break;\n }\n case \"DTOS\": {\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 break;\n }\n default:\n throw new ModelError8(\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 service.local.clear(context);\n return Promise.all(\n data.map(async (datum) => {\n const all = this.fields.filter((field) => field.type === \"DTOS\").map(async (field) => {\n if (!field.refAppDataEntityId) {\n return;\n }\n const key = field.codeName.toLowerCase();\n const dto = await this.getFieldDto(field);\n const items = datum[key];\n if (items) {\n await dto.sets(context, items);\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, methodDto);\n this.dtoMap.set(field.codeName, dto);\n return dto;\n }\n};\n\n// src/service/service/entity/method/method-input.ts\nvar MethodInput = class {\n /**\n * Creates an instance of MethodInput.\n *\n * @author chitanda\n * @date 2022-10-11 17:10:59\n * @param {IAppDataEntity} entity\n * @param {IAppDEMethodInput} [input]\n */\n constructor(entity, input) {\n this.entity = entity;\n this.input = input;\n if (input) {\n const methodDto = findModelChild(\n entity.appDEMethodDTOs || [],\n input.appDEMethodDTOId\n );\n if (methodDto) {\n this.dto = new MethodDto(entity, methodDto);\n }\n }\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\nvar MethodReturn = class {\n /**\n * Creates an instance of MethodReturn.\n *\n * @author chitanda\n * @date 2022-10-11 17:10:47\n * @param {IAppDataEntity} entity\n * @param {IAppDEMethodReturn} [output]\n */\n constructor(entity, output) {\n this.entity = entity;\n this.output = output;\n if (output) {\n const methodDto = findModelChild(\n entity.appDEMethodDTOs || [],\n output.appDEMethodDTOId\n );\n if (methodDto) {\n this.dto = new MethodDto(entity, methodDto);\n }\n }\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 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.appDEMethodInput);\n this.result = new MethodReturn(entity, method.appDEMethodReturn);\n }\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 this.entity.storageMode === 1 || this.entity.storageMode === 4;\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(\"\".concat(path2, \"/\").concat(methodName), data, params);\n break;\n case \"GET\":\n res = await this.app.net.get(\"\".concat(path2, \"/\").concat(methodName), data, params);\n break;\n case \"PUT\":\n res = await this.app.net.put(\"\".concat(path2, \"/\").concat(methodName), data, params);\n break;\n case \"DELETE\":\n res = await this.app.net.delete(\n \"\".concat(path2, \"/\").concat(methodName),\n data,\n params\n );\n break;\n default:\n if (requestMethod) {\n throw new RuntimeModelError7(\n this.method,\n \"\\u672A\\u652F\\u6301\\u7684\\u8BF7\\u6C42\\u65B9\\u5F0F: \".concat(requestMethod)\n );\n } else {\n throw new RuntimeModelError7(this.method, \"\\u672A\\u914D\\u7F6E\\u8BF7\\u6C42\\u65B9\\u5F0F\");\n }\n }\n return res;\n }\n throw new RuntimeModelError7(this.method, \"\\u672A\\u652F\\u6301\\u7684\\u884C\\u4E3A\\u7C7B\\u578B[\".concat(actionType, \"]\"));\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 *\n * @author chitanda\n * @date 2022-10-11 22:10:05\n * @protected\n * @param {(IData | IDataEntity)} data\n * @return {*} {IDataEntity}\n */\n createEntity(data) {\n return new AppDataEntity(this.entity, data);\n }\n};\n\n// src/de-logic/index.ts\nimport { HttpError as HttpError2, HttpResponse as HttpResponse2, RuntimeError as RuntimeError10 } from \"@ibiz-template/core\";\n\n// src/de-logic/de-logic.ts\nimport { ModelError as ModelError14, RuntimeModelError as RuntimeModelError17 } from \"@ibiz-template/core\";\n\n// src/de-logic/de-logic-context.ts\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} viewParams 视图参数\n */\n constructor(deLogicParams, context, data, viewParams) {\n this.deLogicParams = deLogicParams;\n this.context = context;\n this.data = data;\n this.viewParams = viewParams;\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 }\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// src/de-logic/de-logic-node/de-action-node/de-action-node.ts\nimport { RuntimeModelError as RuntimeModelError10 } 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 RuntimeModelError9 } 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 ModelError9, RuntimeModelError as RuntimeModelError8 } 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 RuntimeModelError8(\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 RuntimeModelError8(\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 ModelError9(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 RuntimeModelError9(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 || {});\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 RuntimeModelError10(this.model, \"\\u672A\\u6307\\u5B9A\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!dstAppDEActionId) {\n throw new RuntimeModelError10(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.viewParams\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 ModelError10 } 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 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 = 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 ModelError10(\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 ModelError12 } from \"@ibiz-template/core\";\nimport { clone as clone6 } from \"ramda\";\n\n// src/de-logic/utils/handle-src-val.ts\nimport { ModelError as ModelError11 } from \"@ibiz-template/core\";\nimport { clone as clone5 } from \"ramda\";\nfunction handleSrcVal(ctx, srcValParams) {\n const { srcDELogicParamId, srcValueType, srcFieldName, srcValue } = srcValParams;\n if (!srcValParams.srcValueType) {\n srcValParams.srcValueType = \"SRCDLPARAM\";\n }\n let value;\n switch (srcValueType) {\n case \"SRCDLPARAM\":\n value = ctx.params[srcDELogicParamId];\n break;\n case \"NULLVALUE\":\n return null;\n case \"NONEVALUE\":\n return void 0;\n case \"SRCVALUE\":\n return srcValue;\n case \"VIEWPARAM\":\n value = ctx.viewParams;\n break;\n case \"APPDATA\":\n value = ctx.context;\n break;\n case \"ENVPARAM\":\n value = clone5(ibiz.env);\n break;\n default:\n throw new ModelError11(srcValParams, \"\\u6682\\u672A\\u652F\\u6301\\u6E90\\u503C\\u7C7B\\u578B\".concat(srcValueType));\n }\n const srcField = srcFieldName == null ? void 0 : srcFieldName.toLowerCase();\n if (value && srcField) {\n value = value[srcField];\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 ModelError12(\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] = clone6(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 const dstField = dstFieldName == null ? void 0 : dstFieldName.toLowerCase();\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 requestData = 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 requestData,\n ctx.viewParams\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 RuntimeModelError11 } 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 RuntimeModelError11(\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 RuntimeModelError12 } from \"@ibiz-template/core\";\nvar ResetParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId } = this.model;\n if (!dstDELogicParamId) {\n throw new RuntimeModelError12(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 RuntimeModelError13 } from \"@ibiz-template/core\";\nvar RenewParamNode = 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.renewParam(dstDELogicParamId);\n }\n};\n\n// src/de-logic/de-logic-node/copy-param-node/copy-param-node.ts\nimport { RuntimeModelError as RuntimeModelError14 } from \"@ibiz-template/core\";\nimport { clone as clone7 } from \"ramda\";\nvar CopyParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId, srcDELogicParamId } = this.model;\n if (!dstDELogicParamId || !srcDELogicParamId) {\n throw new RuntimeModelError14(\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] = clone7(srcVal);\n }\n};\n\n// src/de-logic/de-logic-node/sort-param-node/sort-param-node.ts\nimport { RuntimeModelError as RuntimeModelError15 } 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 RuntimeModelError15(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 RuntimeModelError16 } 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 RuntimeModelError16(\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 } from \"@ibiz-template/core\";\nvar ThrowExceptionNode = class extends DELogicNode {\n async exec(_ctx) {\n const { errorCode, errorInfo } = this.model;\n throw new HttpError({\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 ModelError13 } from \"@ibiz-template/core\";\nimport { clone as clone8 } 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 ctx.params[tag] = ctx.data || {};\n } else if (m.appGlobalParam) {\n ctx.params[tag] = clone8(ibiz.env);\n } else if (m.entityListParam) {\n ctx.params[tag] = [];\n } else if (m.entityPageParam) {\n throw new ModelError13(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 throw new ModelError13(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u4E0A\\u6B21\\u8C03\\u7528\\u8FD4\\u56DE\");\n } else if (m.appContextParam) {\n ctx.params[tag] = ctx.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] = clone8(ctx.data || {});\n } else if (m.envParam) {\n throw new ModelError13(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 ModelError13(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 ModelError13(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 ModelError13(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 ModelError13(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 ModelError13(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 ModelError13(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 ModelError13(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 (!((_a = model.delogicNodes) == null ? void 0 : _a.length)) {\n throw new RuntimeModelError17(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 ModelError14(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 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 RuntimeModelError17(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 RuntimeError10(\"\".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 try {\n const result = await execDELogic(deDELogic, context, data, params);\n return new HttpResponse2(result);\n } catch (err) {\n if (err instanceof HttpError2) {\n return new HttpResponse2(err, 500);\n }\n throw err;\n }\n}\nasync function execFieldLogics(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}\n\n// src/service/service/entity/method/de-action.ts\nvar DEActionMethod = class extends Method {\n async exec(context, data, params) {\n if (this.method.actionType === \"DELOGIC\") {\n const deLogic = findDELogic(this.method.appDELogicId, this.entity);\n if (!deLogic) {\n throw new RuntimeModelError18(this.method, \"\\u7F3A\\u5C11\\u5B9E\\u4F53\\u5904\\u7406\\u903B\\u8F91\");\n }\n return execDELogicAction(deLogic, context, data, params);\n }\n if (!this.isLocalMode) {\n data = await this.input.handle(context, data);\n }\n if (![\"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 path2 = \"\".concat(path2, \"/\").concat(context[this.entity.codeName.toLowerCase()] || data[this.entity.keyAppDEFieldId]);\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 await execFieldLogics(this.entity, \"compute\", context, result.data, params);\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 (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 (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 data = await s.local.add(context, this.createEntity(entity));\n return new HttpResponse3(data);\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 data = s.local.update(context, this.createEntity(entity));\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: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/fetch.ts\nimport {\n HttpResponse as HttpResponse4,\n ModelError as ModelError15,\n RuntimeModelError as RuntimeModelError19\n} from \"@ibiz-template/core\";\nimport { ascSort, descSort } from \"qx-util\";\nimport { clone as clone9, equals as equals2, isEmpty as isEmpty7, isNil as isNil7, where as where2 } from \"ramda\";\nvar FetchMethod = class extends Method {\n async exec(context, data, params) {\n if (this.isLocalMode) {\n const items2 = await this.searchLocal(\n null,\n new SearchFilter(context, data)\n );\n return new HttpResponse4(items2, 200);\n }\n let res;\n switch (this.method.dataSetType) {\n case \"INDEXDE\":\n case \"CODELIST\":\n res = await this.fetchCodeListSet(context, params);\n break;\n case \"REMOTE\":\n {\n const path2 = this.calcPath(context);\n res = await this.request(path2, context, data, params);\n }\n break;\n default:\n throw new ModelError15(\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.length) {\n await Promise.all(\n res.data.map(\n (item) => execFieldLogics(this.entity, \"compute\", context, item, params)\n )\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 (!isNil7(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) => clone9(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 RuntimeModelError19(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/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.wf = new WorkFlowService(model);\n this.file = new FileService(model);\n }\n /**\n * 获取实体服务方法实例\n *\n * @author chitanda\n * @date 2022-10-10 14:10:53\n * @protected\n * @param {string} id\n * @return {*} {Method}\n */\n getMethod(id) {\n if (this.methodMap.has(id)) {\n return this.methodMap.get(id);\n }\n const model = findModelChild(this.model.appDEMethods, id);\n let method = null;\n switch (model.methodType) {\n case \"DEACTION\":\n method = new DEActionMethod(this.model, model);\n break;\n case \"FETCH\":\n case \"FETCHTEMP\":\n method = new FetchMethod(this.model, model);\n break;\n default:\n throw new ModelError16(\n model,\n \"\\u672A\\u652F\\u6301\\u7684\\u670D\\u52A1\\u65B9\\u6CD5\\u7C7B\\u578B: \".concat(model.methodType)\n );\n }\n this.methodMap.set(id, 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 exec(id, context, params = {}, params2 = {}) {\n const method = this.getMethod(id);\n if (method) {\n return method.exec(context, params, params2);\n }\n throw new RuntimeError11(\"\".concat(this.model.codeName, \"\\u672A\\u652F\\u6301\\u300C\").concat(id, \"\\u300D\\u65B9\\u6CD5\"));\n }\n};\n\n// src/service/vo/control.vo.ts\nimport { clone as clone10, isNil as isNil8 } from \"ramda\";\nvar ControlVO = class _ControlVO {\n /**\n * 是否是新建数据,0为新建\n *\n * @author lxm\n * @date 2022-09-06 22:09:24\n * @type {Srfuf}\n */\n get srfuf() {\n if (isNil8(this.$origin.srfuf)) {\n return this.srfkey ? 1 /* UPDATE */ : 0 /* CREATE */;\n }\n return this.$origin.srfuf;\n }\n /**\n * 主键\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfkey() {\n return this.$origin.srfkey;\n }\n /**\n * 主信息\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfmajortext() {\n return this.$origin.srfmajortext;\n }\n /**\n * 实体模型标识\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfdeid() {\n return this.$origin.srfdeid;\n }\n /**\n * 实体模型代码名称\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfdecodename() {\n return this.$origin.srfdecodename;\n }\n /**\n * 实体主键属性\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfkeyfile() {\n return this.$origin.srfkeyfile;\n }\n /**\n * 实体主信息属性\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfmajorfile() {\n return this.$origin.srfmajorfile;\n }\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 this.$dataUIMap.forEach((mapField, key) => {\n const value = mapField.dataKey;\n this.linkProperty(key, value, mapField.isOriginField);\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 * @returns {*}\n */\n linkProperty(uiKey, dataKey, isOriginField = true) {\n if (uiKey === \"srfuf\") {\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 = clone10(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 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 RuntimeError12 } from \"@ibiz-template/core\";\nimport { isArray } 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 RuntimeError12(\"\\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 (isArray(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 RuntimeError13 } 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 RuntimeError13(\"\\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 throw new RuntimeError13(\"\\u6CA1\\u6709appData\\u6570\\u636E\");\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) {\n try {\n const res = await ibiz.net.post(\"/v7/login\", { loginname, password });\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/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.deData = data;\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 = data.srfmajortext;\n this.value = 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 }\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 { isNil as isNil9 } 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 (!isNil9(opts.isOriginField)) {\n this.isOriginField = opts.isOriginField;\n }\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/de-service-util.ts\nimport { RuntimeError as RuntimeError14 } 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 RuntimeError14(\"\\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/app-hub.ts\nimport { RuntimeError as RuntimeError21 } from \"@ibiz-template/core\";\n\n// src/application.ts\nimport { Net } 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.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 }\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 await this.net.get(\"\".concat(ibiz.env.remoteModelUrl, \"/PSSYSAPP.json.css\")).then((res) => {\n const dom = document.createElement(\"style\");\n dom.setAttribute(\"type\", \"text/css\");\n if (res.request && res.request.responseURL) {\n const url = new URL(res.request.responseURL);\n dom.id = url.pathname;\n }\n dom.innerHTML = res.data;\n document.head.appendChild(dom);\n }).catch((err) => {\n ibiz.log.error(\n \"\\u5E94\\u7528[\".concat(this.appId, \"]\\u6A21\\u578B\\u5168\\u5C40\\u6837\\u5F0F\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A\").concat(err.message)\n );\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 RuntimeError15 } 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 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 RuntimeError15(\"\\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 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};\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 createUUID2, notNilEmpty as notNilEmpty5 } from \"qx-util\";\nimport { IBizContext as IBizContext2, RuntimeError as RuntimeError19 } from \"@ibiz-template/core\";\nimport { isEmpty as isEmpty8, isNil as isNil11 } 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 RuntimeError16 } 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 RuntimeError16(\"\\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 QXEvent2 } 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 * CTX事件\n * @author lxm\n * @date 2023-04-26 07:54:46\n * @protected\n */\n this.evt = new QXEvent2(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 }\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 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 this.noDataDisabled = 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 }\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;\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 QXEvent3 } from \"qx-util\";\nvar QXEventEx = class extends QXEvent3 {\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 *\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 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 this.evt.on(name, fn);\n }\n /**\n * 订阅任意事件\n * @author lxm\n * @date 2023-03-30 06:48:28\n * @param fn 事件回调\n */\n onAll(fn) {\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 }\n};\n\n// src/controller/utils/util/util.ts\nimport { isNil as isNil10 } from \"ramda\";\nfunction isValueChange(value, value2) {\n if ((isNil10(value) || value === \"\") && (isNil10(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 RuntimeError17 } from \"@ibiz-template/core\";\nimport { isNilOrEmpty as isNilOrEmpty5 } from \"qx-util\";\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 (isNilOrEmpty5(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 RuntimeError17(infoMessage || deRule.ruleInfo));\n }\n return true;\n },\n trigger: \"change blur\"\n });\n }\n });\n return rules;\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 }\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 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/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(\"\\u627E\\u4E0D\\u5230\".concat(pluginId, \"\\u7684\\u63D2\\u4EF6\\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/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 getProvider(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 = getProvider(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 = getProvider(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 = getProvider(controlType);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u90E8\\u4EF6\\u7C7B\\u578B\".concat(controlType, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\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 getProvider2(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 = getProvider2(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 = getProvider2(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 = getProvider2(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 = getProvider2(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 getProvider3(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 = getProvider3(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 = getProvider3(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 getProvider4(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 = getProvider4(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 = getProvider4(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 getProvider5(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 = getProvider5(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 = getProvider5(key);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u9762\\u677F\\u5BB9\\u5668\\u9884\\u7F6E\\u7C7B\\u578B\\u4E3A\".concat(predefinedType, \"\\u7684\\u9002\\u914D\\u5668\"));\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 = getProvider5(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\")\n );\n } else {\n return provider;\n }\n }\n provider = getProvider5(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/ui-action-register.ts\nimport { RuntimeError as RuntimeError18 } 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 getProvider6(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 = getProvider6(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 = getProvider6(uiactionMode);\n if (!provider) {\n throw new RuntimeError18(\"\\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/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 getProvider7(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 = getProvider7(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 = getProvider7(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 = getProvider7(viewType);\n }\n if (!provider) {\n provider = getProvider7(\"DEFAULT\");\n }\n return provider;\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 getProvider8(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 = getProvider8(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 = getProvider8(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/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 }\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 }\n async onCreated() {\n await super.onCreated();\n this.modal.hooks.beforeDismiss.tapPromise(async (modalData) => {\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 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 (isNil11(this.context.srfsessionid) || isEmpty8(this.context.srfsessionid)) {\n this.context.srfsessionid = createUUID2();\n }\n const navContexts = this.model.appViewNavContexts;\n let context = {};\n if (notNilEmpty5(navContexts)) {\n context = convertNavData(navContexts, this.context, this.params);\n }\n Object.assign(this.context, context);\n const navParams = this.model.appViewNavParams;\n let params = {};\n if (notNilEmpty5(navParams)) {\n params = convertNavData(navParams, this.context, this.params);\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 RuntimeError19(\"\\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.triggerEvent\n );\n });\n }\n }\n};\n\n// src/controller/common/view/mob-view.controller.ts\nvar MobViewController = class extends ViewController {\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 * @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.toLowerCase()] = this.model.editorParams[key];\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, context, params, data);\n }\n const _context = Object.assign(context.clone(), selfContext);\n let selfParams = {};\n if (navigateParams && data) {\n selfParams = convertNavData(navigateParams, context, params, data);\n }\n const _params = { ...params, ...selfParams };\n return { context: _context, params: _params };\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 RuntimeModelError20 } 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 RuntimeModelError20(this.model, \"\\u8BF7\\u914D\\u7F6E\\u4EE3\\u7801\\u8868\");\n }\n};\n\n// src/controller/common/control/control.controller.ts\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(model, context, params, ctx);\n /**\n * 子部件适配器\n * @author lxm\n * @date 2023-07-19 04:14:50\n * @type {{ [key: string]: IControlProvider }}\n */\n this.providers = {};\n this.registerToCtx();\n const panelModel = ibiz.util.layoutPanel.get(\n \"\".concat(model.controlType, \"_DEFAULT\")\n );\n if (panelModel) {\n this.controlPanel = panelModel;\n }\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 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.initControlScheduler(this.model.controlLogics);\n }\n async onDestroyed() {\n await super.onDestroyed();\n if (this.scheduler) {\n this.scheduler.destroy();\n }\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 const data = (args == null ? void 0 : args.data) || this.getData() || [];\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 * @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// src/controller/common/control/md-control.controller.ts\nimport { isElementSame, RuntimeError as RuntimeError20 } from \"@ibiz-template/core\";\nvar MDControlController = class extends ControlController {\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 await super.onCreated();\n this.setSort();\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 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.params);\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 } finally {\n await this.endLoading();\n }\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 RuntimeError20(\"\\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.startLoading();\n let needRefresh = false;\n try {\n const deName = calcDeCodeNameById(this.model.appDataEntityId);\n await Promise.allSettled(\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(data);\n })\n );\n if ((args == null ? void 0 : args.silent) !== true) {\n ibiz.notification.success({\n desc: \"\\u6570\\u636E[\".concat(data.map((item) => item.srfmajortext).join(\"\\u3001\"), \"]\\u5220\\u9664\\u6210\\u529F!\")\n });\n }\n if (needRefresh) {\n this.refresh();\n }\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 this.state.items.splice(index, 1);\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 }\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/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-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 RuntimeError21(\"\\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 RuntimeError21(\"\\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 RuntimeError21(\"\\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 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<Application>}\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 {*} {Application}\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 RuntimeError22 } 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\") {\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 RuntimeError22(\"\\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 RuntimeModelError21 } from \"@ibiz-template/core\";\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 }\n async onMounted() {\n await super.onMounted();\n const { model } = this.view;\n this.xdataControl.evt.on(\"onActive\", async (event) => {\n await this.openData(event);\n });\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.refresh();\n });\n }\n if (this.searchBar) {\n this.searchBar.evt.on(\"onSearch\", () => {\n this.refresh();\n });\n }\n if (!this.view.state.noLoadDefault && model.loadDefault) {\n this.load();\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 await this.openData(args);\n return null;\n }\n if (key === \"New\" /* NEW */) {\n await this.newData(args);\n return null;\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 === \"Copy\" /* COPY */) {\n this.copy(args);\n return null;\n }\n if (key === \"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 ibiz.log.warn(\"\\u89C6\\u56FE[\".concat(this.view.model.codeName, \"]\\uFF0C\\u672A\\u914D\\u7F6E\\u7F16\\u8F91\\u6253\\u5F00\\u89C6\\u56FE\"));\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 RuntimeModelError21(this.view.model, \"\\u7F3A\\u5C11newdata\\u7684\\u89C6\\u56FE\\u903B\\u8F91\");\n }\n const context = this.view.context.clone();\n if (copyMode) {\n context.srfcopymode = true;\n }\n const result = await ((_c = this.view.scheduler) == null ? void 0 : _c.triggerCustom(\"newdata\", {\n context,\n params: this.view.params,\n data,\n event,\n view: this.view\n }));\n if (result === -1) {\n throw new RuntimeModelError21(this.view.model, \"\\u7F3A\\u5C11newdata\\u7684\\u89C6\\u56FE\\u903B\\u8F91\");\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:26:04\n * @return {*} {IParams}\n */\n getSearchParams() {\n const params = {};\n if (this.searchForm) {\n const addParams = this.searchForm.getData()[0];\n const filteredParams = Object.entries(addParams).reduce(\n (result, [key, value]) => {\n if (value !== null && value !== void 0 && value !== \"\") {\n result[key] = value;\n }\n return result;\n },\n {}\n );\n Object.assign(params, filteredParams);\n }\n if (this.searchBar && this.searchBar.state.query) {\n const addParams = {\n query: this.searchBar.state.query\n };\n Object.assign(params, addParams);\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) {\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/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// src/ui-action/provider/backend-ui-action-provider.ts\nimport { RuntimeModelError as RuntimeModelError31 } from \"@ibiz-template/core\";\nimport { isArray as isArray2 } from \"qx-util\";\n\n// src/ui-action/provider/ui-action-provider-base.ts\nimport { RuntimeModelError as RuntimeModelError30 } from \"@ibiz-template/core\";\n\n// src/ui-logic/index.ts\nimport { RuntimeError as RuntimeError24 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic.ts\nimport { ModelError as ModelError23, RuntimeModelError as RuntimeModelError29 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic-context.ts\nvar UILogicContext = 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} viewParams 视图参数\n * @param {IParams} [opt] 额外参数\n */\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 get context() {\n return this.parameters.context;\n }\n /**\n * 数据\n */\n get data() {\n return this.parameters.data;\n }\n /**\n * 视图参数\n */\n get viewParams() {\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// src/ui-logic/ui-logic-node/de-action-node/de-action-node.ts\nimport { RuntimeModelError as RuntimeModelError24 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic-link/ui-logic-link.ts\nimport { ModelError as ModelError18 } 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 RuntimeModelError23 } 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 ModelError17, RuntimeModelError as RuntimeModelError22 } from \"@ibiz-template/core\";\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.toLowerCase();\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 dst = ctx.params[this.dstParam];\n switch (this.type) {\n case \"ENTITYFIELD\": {\n if (!this.value) {\n throw new RuntimeModelError22(\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 RuntimeModelError22(\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 ModelError17(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/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 RuntimeModelError23(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) {\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 ModelError18(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u6B65\\u7ED3\\u675F\");\n case 3:\n throw new ModelError18(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u6B65\\u62D2\\u7EDD\");\n case 9:\n throw new ModelError18(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u5E38\\u5904\\u7406\");\n default:\n throw new ModelError18(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 RuntimeModelError24(this.model, \"\\u672A\\u6307\\u5B9A\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!dstAppDEActionId) {\n throw new RuntimeModelError24(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.viewParams\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 RuntimeModelError25 } 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 RuntimeModelError25(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 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 ModelError19 } 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 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 = 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 ModelError19(\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 } from \"@ibiz-template/core\";\n\n// src/ui-logic/utils/handle-src-val.ts\nimport { ModelError as ModelError20 } from \"@ibiz-template/core\";\nimport { clone as clone11 } from \"ramda\";\nfunction handleSrcVal2(ctx, srcValParams) {\n const { srcDEUILogicParamId, srcFieldName, srcValue } = srcValParams;\n const srcValueType = srcValParams.srcValueType || \"SRCDLPARAM\";\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 srcValue;\n case \"VIEWPARAM\":\n value = ctx.viewParams;\n break;\n case \"APPDATA\":\n value = ctx.context;\n break;\n case \"ENVPARAM\":\n value = clone11(ibiz.env);\n break;\n default:\n throw new ModelError20(srcValParams, \"\\u6682\\u672A\\u652F\\u6301\\u6E90\\u503C\\u7C7B\\u578B\".concat(srcValueType));\n }\n const srcField = srcFieldName == null ? void 0 : srcFieldName.toLowerCase();\n if (value && srcField) {\n value = value[srcField];\n }\n return value;\n}\n\n// src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts\nvar PrepareJSParamNode = class extends UILogicNode {\n async exec(ctx) {\n const nodeParams = this.model.deuilogicNodeParams;\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 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 /**\n * 设置变量\n * @author lxm\n * @date 2023-03-17 03:34:02\n * @protected\n * @param {IPSDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n */\n setParamValue(nodeParam, ctx) {\n const { dstFieldName, dstDEUILogicParamId } = nodeParam;\n const dstField = dstFieldName == null ? void 0 : dstFieldName.toLowerCase();\n const srcVal = handleSrcVal2(ctx, nodeParam);\n if (dstField) {\n ctx.params[dstDEUILogicParamId][dstField] = srcVal;\n } else {\n ctx.params[dstDEUILogicParamId] = srcVal;\n }\n }\n};\n\n// src/ui-logic/ui-logic-node/view-ctrl-invoke-node/view-ctrl-invoke-node.ts\nimport { RuntimeError as RuntimeError23, RuntimeModelError as RuntimeModelError26 } 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 RuntimeModelError26(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u754C\\u9762\\u5BF9\\u8C61\");\n }\n if (!invokeParamId) {\n throw new RuntimeModelError26(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u64CD\\u4F5C\\u53C2\\u6570\");\n }\n if (!invokeMethod) {\n throw new RuntimeModelError26(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u8C03\\u7528\\u65B9\\u6CD5\");\n }\n const invokeParam = ctx.params[invokeParamId];\n if (!invokeParam) {\n throw new RuntimeError23(\"\\u6CA1\\u6709\\u627E\\u5230\\u64CD\\u4F5C\\u53C2\\u6570\".concat(invokeParamId));\n }\n const invokeCtrl = ctx.params[invokeCtrlId];\n if (!invokeCtrl) {\n throw new RuntimeError23(\"\\u6CA1\\u6709\\u627E\\u5230\\u754C\\u9762\\u5BF9\\u8C61\".concat(invokeCtrlId));\n }\n if (!invokeCtrl[invokeMethod] || !isFunction(invokeCtrl[invokeMethod])) {\n throw new RuntimeError23(\"\\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 RuntimeModelError27 } 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 RuntimeModelError27(\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-param/ui-logic-param.ts\nimport { ModelError as ModelError22, RuntimeModelError as RuntimeModelError28 } 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 { context, viewParams, data, parameters } = ctx;\n const app = ibiz.hub.getApp(context.srfappid);\n if (m.default) {\n ctx.params[tag] = data && data.length > 0 ? data[0] : {};\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 throw new RuntimeModelError28(\n this.model,\n \"\\u89C6\\u56FE\\u903B\\u8F91\\u521D\\u59CB\\u5316\\u53C2\\u6570\\uFF0C\\u672A\\u627E\\u5230\".concat(m.codeName, \"\\u6307\\u5B9A\\u90E8\\u4EF6\\u5BF9\\u8C61\")\n );\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 ModelError22(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 throw new ModelError22(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u4E0A\\u6B21\\u8C03\\u7528\\u8FD4\\u56DE\");\n } else if (m.navContextParam) {\n ctx.params[tag] = context;\n } else if (m.navViewParamParam) {\n throw new ModelError22(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 ModelError22(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] = viewParams;\n } else if (m.viewSessionParam) {\n throw new ModelError22(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 ModelError22(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 RuntimeModelError29(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 \"BINDPARAM\":\n logicNode = new BindParamNode2(node);\n break;\n case \"VIEWCTRLINVOKE\":\n logicNode = new ViewCtrlInvokeNode(node);\n break;\n case \"RESETPARAM\":\n case \"COPYPARAM\":\n case \"VIEWCTRLFIREEVENT\":\n case \"APPENDPARAM\":\n case \"SORTPARAM\":\n case \"RENEWPARAM\":\n case \"PFPLUGIN\":\n case \"MSGBOX\":\n case \"DEDATASET\":\n case \"DELOGIC\":\n case \"THROWEXCEPTION\":\n case \"DEBUGPARAM\":\n default:\n throw new ModelError23(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 RuntimeModelError29(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 RuntimeError24(\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 RuntimeError25 } 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 RuntimeError25(\"\\u6CA1\\u627E\\u5230\".concat(actionId, \"\\u7684\\u754C\\u9762\\u884C\\u4E3A\\u6A21\\u578B\"));\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.closeView();\n } else if (result.refresh) {\n switch (result.refreshMode) {\n case 1:\n await params.view.callUIAction(\"Refresh\" /* REFRESH */);\n break;\n case 2:\n await ((_a = params.view.parentView) == null ? void 0 : _a.callUIAction(\"Refresh\" /* REFRESH */));\n break;\n case 3:\n await ((_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 RuntimeModelError30(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)) {\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 nextResult = await this.doNextAction(action, {\n ...args,\n context: result.nextContext || context,\n data: result.data || data,\n params: result.nextParams || params\n });\n if (nextResult) {\n Object.assign(result, nextResult);\n if (nextResult.cancel === true) {\n return this.returnError(result);\n }\n }\n if (action.uilogicAttachMode === \"AFTER\") {\n if (!appDEUILogicId) {\n throw new RuntimeModelError30(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) {\n if (action.enableConfirm && action.confirmMsg) {\n return ibiz.modal.confirm({ title: action.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 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) => ({ [deName]: item.srfkey || item[deName] })) : [{}];\n break;\n case \"SINGLEKEY\":\n {\n const originData = data[0] || {};\n resultData = deName ? [{ [deName]: originData.srfkey || originData[deName] }] : [{}];\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 context,\n params,\n isMultiData ? formatMultiData(navContexts, data) : data[0] || {}\n );\n Object.assign(resultContext, tempContext);\n const navParams = action.navigateParams;\n const resultParams = convertNavData(\n navParams,\n resultContext,\n params,\n isMultiData ? formatMultiData(navParams, data) : data[0] || {}\n );\n return { resultContext, resultData, resultParams };\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 RuntimeModelError31(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 = { ...params, ...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 resultData.forEach((item) => {\n item.srfactionparam = res2.data;\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 });\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 && action.successMsg) {\n ibiz.message.success(action.successMsg);\n }\n Object.assign(actionResult, {\n data: isArray2(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 ]);\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 { StringUtil, RuntimeModelError as RuntimeModelError32, ModelError as ModelError24 } 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 RuntimeModelError32(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 \"OTHER\":\n actionResult = this.doOther(action, args);\n break;\n default:\n throw new ModelError24(\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 RuntimeModelError32(action, \"\\u81EA\\u5B9A\\u4E49\\u7C7B\\u578B\\u7F3A\\u5C11\\u914D\\u7F6E\\u811A\\u672C\\u4EE3\\u7801\");\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/logic-scheduler/executor/logic-executor.ts\nimport { RuntimeError as RuntimeError26 } 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 RuntimeError26(\"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 ModelError25 } 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 ModelError25(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 RuntimeModelError33 } 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 RuntimeModelError33(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 } 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 mergeLeft(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, event) {\n const matchParams = {\n ctrlName,\n eventName: event.eventName,\n triggerType: \"CTRLEVENT\"\n };\n this.triggerAndExecute(matchParams, event);\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 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 ModelError26 } 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 ModelError26(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 RuntimeError27 } 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 RuntimeError27(\"\".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 RuntimeError28 } 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 RuntimeError28(\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 const superResult = super.match(matchParams);\n return superResult && matchParams.itemName === this.logic.itemName;\n }\n execute(executeParams) {\n const result = this.executor.execute(executeParams);\n if (typeof result === \"boolean\") {\n return result;\n }\n throw new RuntimeError28(\"\".concat(this.logic.id, \"\\u903B\\u8F91\\u8FD4\\u56DE\\u503C\\u4E0D\\u662F\\u5E03\\u5C14\\u503C\"));\n }\n};\n\n// src/logic-scheduler/trigger/timer-trigger.ts\nimport { RuntimeError as RuntimeError29 } from \"@ibiz-template/core\";\nvar TimerTrigger = class extends LogicTrigger {\n constructor() {\n super(...arguments);\n this.timer = null;\n }\n start() {\n this.timer = setInterval(() => {\n if (!this.scheduler.defaultParamsCb) {\n throw new RuntimeError29(\"\\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 ModelError27,\n RuntimeError as RuntimeError30,\n RuntimeModelError as RuntimeModelError34\n} from \"@ibiz-template/core\";\nimport { notNilEmpty as notNilEmpty6 } 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 lxm\n * @date 2022-08-22 14:08:03\n * @export\n * @param {IPSAppUIOpenDataLogic} appUILogic 应用预置界面逻辑opendata模型对象\n * @param {IContext} context 上下文参数\n * @param {(IData | null)} data 数据集合\n * @param {IParams} params 视图参数\n * @param {IData} [opts] 额外参数,event是js原生事件\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 RuntimeError30(\"opendata\\u6CA1\\u6709\\u53EF\\u64CD\\u4F5C\\u6570\\u636E\\uFF01\");\n }\n const openViewRef = appUILogic.openDataAppView;\n if (!openViewRef) {\n throw new RuntimeModelError34(\n appUILogic,\n \"opendata\\u89C6\\u56FE\\u903B\\u8F91\\u6CA1\\u6709\\u914D\\u7F6E\\u9ED8\\u8BA4\\u6253\\u5F00\\u89C6\\u56FE\"\n );\n }\n const openView = openViewRef.refAppViewId;\n if (!openView) {\n throw new RuntimeModelError34(\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, context, params, data[0])\n );\n let tempParams = {};\n const navParams = openViewRef.navigateParams;\n if (notNilEmpty6(navParams)) {\n tempParams = convertNavData(navParams, params, context, data[0]);\n }\n await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n openView,\n tempContext,\n tempParams,\n rest\n );\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 } = 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;\n }\n } else if (enableBatchAdd) {\n throw new ModelError27(appUILogic, \"enableBatchAdd\\u6682\\u672A\\u652F\\u6301\");\n } else if (batchAddOnly) {\n throw new ModelError27(appUILogic, \"batchAddOnly\\u6682\\u672A\\u652F\\u6301\");\n } else {\n newViewRef = newDataAppView;\n if (!newViewRef || !newViewRef.refAppViewId) {\n throw new RuntimeModelError34(\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 (notNilEmpty6(navContexts)) {\n tempContext = convertNavData(navContexts, context, params, _data);\n }\n tempContext = Object.assign(context, tempContext);\n const navParams = newViewRef.navigateParams;\n if (notNilEmpty6(navParams)) {\n tempParams = convertNavData(navParams, params, context, _data);\n }\n if (context.srfcopymode) {\n _data.srfkey = void 0;\n tempParams = Object.assign(tempParams, _data.$origin);\n }\n await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n newViewRef.refAppViewId,\n tempContext,\n tempParams,\n rest\n );\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 RuntimeModelError34(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 RuntimeError30(\"\\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 RuntimeError30(\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// 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 && matchParams.ctrlName === this.logic.ctrlName && this.listenEventNames.includes(matchParams.eventName);\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}\n\n// src/install.ts\nfunction install() {\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.engine = new EngineFactory();\n installCommand();\n presetUIActionProvider();\n installLogicSchedule();\n}\n\n// src/plugin/plugin-static-resource/plugin-static-resource.ts\nvar import_path_browserify = __toESM(require_path_browserify(), 1);\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 = import_path_browserify.default.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 import_path_browserify.default.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 ActivityCounter,\n AppCounter,\n AppDataEntity,\n AppFuncCommand,\n Application,\n AuthorityService,\n BackendUIActionProvider,\n BaseController,\n ButtonContainerState,\n CONTROL_PROVIDER_PREFIX,\n CTX,\n CTXState,\n CalendarItemData,\n CodeListEditorController,\n CodeListService,\n ControlController,\n ControlService,\n ControlType,\n ControlVO,\n ControllerEvent,\n Counter,\n CounterService,\n DECache,\n DEDQCondUtil,\n DEService,\n DEServiceUtil,\n DeAuthorityService,\n DynamicCodeListCache,\n EDITOR_PROVIDER_PREFIX,\n EditorController,\n EngineFactory,\n FORMDETAIL_PROVIDER_PREFIX,\n FormNotifyState,\n FrontUIActionProvider,\n GRIDCOLUMN_PROVIDER_PREFIX,\n GridNotifyState,\n HubController,\n LayoutPanelUtil,\n LoadingState,\n MDControlController,\n MDControlService,\n MDViewEngine,\n MethodDto,\n MobViewController,\n Modal,\n OpenAppViewCommand,\n PANELITEM_PROVIDER_PREFIX,\n PORTLET_PROVIDER_PREFIX,\n PSDEDQCondEngine,\n PanelNotifyState,\n PluginStaticResource,\n QXEventEx,\n RegisterCenter,\n RemotePluginItem,\n ScriptFactory,\n ScriptFunction,\n SearchFilter,\n Srfuf,\n StudioControlEvents,\n StudioPanelEvents,\n StudioViewEvents,\n SysUIActionProvider,\n SysUIActionTag,\n TreeCodeListNodeData,\n TreeDataSetNodeData,\n TreeNodeData,\n TreeStaticNodeData,\n UIACTION_PROVIDER_PREFIX,\n UIActionButtonState,\n UIActionUtil,\n UIMapField,\n V7AuthService,\n VIEW_PROVIDER_PREFIX,\n ViewController,\n ViewEngineBase,\n ViewMode,\n ViewType,\n WFWithdrawUIActionProvider,\n WorkFlowService,\n calcContentAlignStyle,\n calcDeCodeNameById,\n calcDynaClass,\n calcGridLayoutPos,\n calcLayoutHeightWidth,\n calcMainStateOPPrivsStrs,\n calcNavParams,\n calcResPath,\n calcRouteContext,\n compare,\n compareNumber,\n contains,\n convertNavData,\n convertNavDataByArray,\n convertNavDataByObject,\n convertObjectToNavParams,\n execDELogic,\n execDELogicAction,\n execDELogicById,\n execFieldLogics,\n execUILogic,\n filterFieldLogics,\n filterValueRules,\n findChildFormDetails,\n findDELogic,\n findEditItem,\n findFieldById,\n findModelChild,\n formatMultiData,\n generateRules,\n getAppViewRef,\n getChildNodeRSs,\n getControl,\n getControlProvider,\n getControlsByView,\n getDeACMode,\n getEditorProvider,\n getFormDetailProvider,\n getGridColumnProvider,\n getMatchResPath,\n getOriginData,\n getPanelItemProvider,\n getPortletProvider,\n getRootNode,\n getTreeNode,\n getUIActionById,\n getUIActionProvider,\n getViewEngines,\n getViewLogics,\n getViewProvider,\n getWFContext,\n getWFSubmitViewId,\n hasDeCodeName,\n install,\n installCommand,\n isValueChange,\n matchMainState,\n openRedirectView,\n parseUserParams,\n presetUIActionProvider,\n registerControlProvider,\n registerEditorProvider,\n registerFormDetailProvider,\n registerGridColumnProvider,\n registerPanelItemProvider,\n registerPortletProvider,\n registerUIActionProvider,\n registerViewProvider,\n strContain,\n testCond,\n toLocalOpenWFRedirectView,\n verifyDeRules,\n verifyFormGroupLogic,\n verifyPanelGroupLogic\n};\n"],"names":["layoutPos","valignSelf","halignSelf","result","Object","assign","display","expression","data","ScriptFactory","execScriptFn","singleRowReturn","isAsync","layout","colXS","colXSOffset","colSM","colSMOffset","colMD","colMDOffset","colLG","colLGOffset","calcActualValues","span","offset","xs","sm","md","lg","width","height","widthMode","heightMode","concat","model","originParams","deName","navFilter","pickupDEFName","navContexts","navParams","context","params","derValue","resultContext","resultParams","deSrfkey","srfkey","toLowerCase","tempContext","convertNavData","tempParams","_appView","paths","sort","a","b","length","pathArr","obj","forEach","key","val","async","deDELogicId","dataEntityId","deLogic","appId","appDataEntity","ibiz","hub","getAppDataEntity","findDELogic","findDeLogic","srfappid","RuntimeError10","execDELogic","vrs","name","filter","vr","checkMode","belongName","deformItemName","degridEditItemName","parent","childDetails","detailType","deformTabPages","deformDetails","grid","codeName","_a","degridEditItems","find","item","itemVRs","valueItemName","rules","valueRuleType","sysRule","sysValueRule","deRule","defvalueRule","ruleType","push","pattern","RegExp","regExCode","message","ruleInfo","trigger","validator","rule","value","callback","source","scriptCode","error","console","valueName","isNilOrEmpty5","isPast","infoMessage","verifyDeRules","groupCond","RuntimeError17","view","_b","appViewRefs","viewLayoutPanel","id","tree","args","parentId","getRootNode","detreeNodeRSs","nodeRs","parentDETreeNodeId","searchMode","hasQuery","controls","appDEACModeId","entityId","appDEACModes","mode","provider","editorType","editorStyle","predefinedType","sysPFPluginId","pluginKey","getPluginRegisterKey","getProvider2","log","getProvider3","columnType","enableRowEdit","getProvider4","singleData","Array","isArray","ControlVO","getOrigin","itemType","getProvider5","rawItem","portletType","getProvider8","detreeNodes","node","viewType","viewStyle","getProvider7","param09","srfprocessinstanceid","link","type","sequenceflowview","sequenceflowmobview","toUpperCase","env","isMob","submitViewRef","viewRef","refAppViewId","calcDeCodeNameById","isNotNil","ibiz2","window","util","GlobalUtil","AppHub","register","RegisterCenter","config","GlobalConfig","auth","V7AuthService","engine","EngineFactory","installCommand","presetUIActionProvider","scheduler","LogicSchedulerCenter","triggerFactory","logic","ItemDynaLogicTrigger","TimerTrigger","CustomTrigger","ViewEventTrigger","ControlEventTrigger","executorFactory","ScriptExecutor","AppDEUILogicExecutor","AppUILogicExecutor","value2","isNil10","userParams","navigateContexts","navigateParams","other","prototype","hasOwnProperty","call","param","indexOf","splitArr","split","CONTROL_PROVIDER_PREFIX","EDITOR_PROVIDER_PREFIX","FORMDETAIL_PROVIDER_PREFIX","GRIDCOLUMN_PROVIDER_PREFIX","PANELITEM_PROVIDER_PREFIX","PORTLET_PROVIDER_PREFIX","VIEW_PROVIDER_PREFIX","verifyFormGroupLogic","logicType","isGroupLogic","children","defdlogics","RuntimeModelError2","groupOP","childLogic","notMode","isSingleLogic","testCond","defdname","condOP","ModelError","verifyPanelGroupLogic","isGroupLogic2","panelItemLogics","RuntimeModelError3","isSingleLogic2","dstModelField","condOp","ModelError2","cb","mod","__create","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","require_path_browserify","exports","module","assertPath","path2","TypeError","JSON","stringify","normalizeStringPosix","allowAboveRoot","code","res","lastSegmentLength","lastSlash","dots","i","charCodeAt","lastSlashIndex","lastIndexOf","slice","posix","resolve","cwd","resolvedPath","resolvedAbsolute","arguments","process","normalize","isAbsolute","trailingSeparator","join","joined","arg","relative","from","to","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","out","_makeLong","dirname","hasRoot","end","matchedSlash","basename","ext","start","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","format","pathObject","sep","dir","root","base","_format","parse","ret","delimiter","win32","constructor","this","enableDataInfoBar","editShowMode","editSaveMode","appMenu","enableEcho","codeList","timeout","providers","Map","newProvider","set","unRegister","delete","get","func","naviDatas","origins","isEmpty","toString","convertNavDataByArray","convertNavDataByObject","naviData","notNilEmpty","rawValue","findOrigin","isNilOrEmpty","reg2","test","valueKey","substring","convertObjectToNavParams","formatMultiData","dataArr","naviArr","data1","naviParam","map","findModelChild","models","matchMainState","mainStateAppDEFieldIds","demainStates","values","field","stateValue","state2Value","state3Value","stateValues","calcMainStateOPPrivsStrs","mainState","app","getApp","demainStateOPPrivs","opprivAllowMode","mainStateOPPrivIds","opprivs","deopprivs","includes","pop","appDELogicId","entity","appDELogics","filterFieldLogics","resultIds","appDEFields","computeAppDEFLogicId","onChangeAppDEFLogicId","defaultValueAppDEFLogicId","findFieldById","fieldId","getUIActionById","getUIAction","rootNode","getControlsByView","getViewLogics","viewLogics","appViewLogics","getViewEngines","appViewEngines","openRedirectView","appView","opts","navContext","appViewNavContexts","navContextData","clone","appViewNavParams","navParamsData","appDataEntityId","curData","actionId","getDataAppDEActionId","service","deService","getService","loading","showRedirect","exec","ok","linkUrl","linkurl","dev","startsWith","Promise","newWindow","open","toLocalOpenWFRedirectView","hideRedirect","rdTag","rdView","typeFieldId","typeAppDEFieldId","notNilEmpty2","warn","defView","srfWf","srfwf","wf","typeValue","indexTypeAppDEFieldId","isNilOrEmpty2","formTypeAppDEFieldId","calcDERdTag","rdTagItems","wfRdTag","deRdTag","allRefViews","redirectAppViewRefs","refView","matchKey","realTitle","viewId","tag","title","RuntimeModelError","commands","execute","OpenAppViewCommand","TAG","openDERedirectView","queryStr","decodeURIComponent","qs","srfdename","RuntimeError","deCodeName","deName2DeCodeName","deRdViewCodeName","deRdView","getAppView","wfTag","processDefinitionKey","wfVersion","op","is","contains","compare","isNilOrEmpty3","notNilEmpty3","isNil","strContain","RuntimeError2","number1","Number","number2","isNaN","compareNumber","date1","Date","getTime","date2","val2","index","DefaultOptions","ScriptFunction","argKeys","options","formatCode","calcArgKeys","fn","Function","scriptFn","apply","keys","presetParams","Set","convertArgs","_params","mergeRight","document","selector","className","getElementsByClassName","fillDefaultParams","notification","modal","confirm","openView","controller","parentView","topView","getTopView","topViewSession","session","viewSession","appSession","scriptArgs","static","createScriptFn","condition","flag","condType","isGroupCondition","childRules","conds","array","operateTag","isReverse","len","temp","logicForEach","defname","isSimpleCondition","errorInfo","paramType","form","primaryModel","isNil2","isEmpty2","RuntimeError3","checkFieldSimpleRule","paramValue","keyCond","isValueRange2Condition","viewValue","minNumber","indexOfMin","maxNumber","indexOfMax","isNilOrEmpty4","checkFieldRegExRule","parseFloat","checkFieldValueRangeRule","minValue","includeMinValue","maxValue","includeMaxValue","isRegExCondition","isStringLengthCondition","minLength","maxLength","viewValueLength","checkFieldStringLengthRule","isSysValueRuleCondition","selfError","resultBoolean","checkFieldScriptRule","strReg","LayoutPanelUtil","cache","fill","viewModel","useDefaultLayout","calcLayoutTag","has","appCounterRefs","calcIndexViewLayoutTag","blankMode","mainMenuAlign","exTag","ControlType","ControlType2","ViewType","ViewType2","ViewMode","ViewMode2","SysUIActionTag","SysUIActionTag2","StudioViewEvents","onViewMounted","onViewDestroyed","StudioPanelEvents","onClick","onChange","onEnter","onLeave","StudioControlEvents","onBeforeLoad","onLoadSuccess","onLoadError","onBeforeLoadDraft","onLoadDraftSuccess","onLoadDraftError","onBeforeSave","onSaveSuccess","onSaveError","onBeforeRemove","onRemoveSuccess","onRemoveError","CLICK","Modal","viewUsage","hooks","shouldDismiss","AsyncSeriesHook","beforeDismiss","_dismiss","routeDepth","dismiss","injectDismiss","allowClose","destroy","debug","clear","_OpenAppViewCommand","bind","appViewId","RuntimeError4","redirectView","openMode","noWaitRoute","openIndexViewTab","ModelError3","openModal","openPopover","event","openDrawer","openUserCustom","popover","drawer","custom","_AppFuncCommand","appFuncId","appFunc","getAppFunc","RuntimeError5","appFuncType","_context","openAppView","openHtmlPage","openPdAppFunc","executeJavaScript","ModelError4","url","htmlPageUrl","AppFuncCommand","AppCounter","destroyed","IBizContext","evt","QXEvent","isDestroyed","setParams","action","getAppDEActionId","RuntimeModelError4","interval","load","clone2","destroyInterval","intervalTimer","setInterval","getSize","timer","clearInterval","emit","refresh","immediate","on","notNilEmpty4","offChange","off","getCounter","reset","PSModelCondEngineBase","psModelGroupCondBase","createPSModelGroupCond","testSingleCond","strCondOp","objValue","objCondValue","nRet","err","getPSModelGroupCondBase","PSModelCondBase","getCondOp","setCondOp","PSModelSingleCondBase","arr","nCount","bOpStart","bParamStart","bValueStart","strText","setParam","setValueType","setValue","getValueType","strValueType","getValue","strValue","getParamType","strParamType","setParamType","getParam","strParam","PSModelGroupCondBase","_PSModelGroupCondBase","super","childCondList","bNotMode","bNotStart","bCondStart","setNotMode","list","RuntimeError6","child","isNotMode","getChildPSModelCondBases","PSDEDQGroupCond","PSDEDQSingleCond","_PSDEDQCondEngine","cond","isEmpty3","bAnd","bRet","childCond","valType","PARAMTYPE_WEBCONTEXT","PARAMTYPE_DATACONTEXT","createPSModelSingleCond","PSDEDQCondEngine","dataSet","groups","dedqgroupConditions","calcCond","items","condArr","dedqconditions","ModelError5","fieldName","condValue","WeakMap","DynamicCodeListCache","isPredefined","initPromise","ModelError6","convertData","valueAppDEFieldId","textAppDEFieldId","text","srfmajortext","freeze","size","res2","net","appDEDataSetId","RuntimeModelError5","resultItems","enableCache","cacheData2","expirationTime","promise","cacheTimeout","waitTime","isNil3","cacheData","isExistSrfKey","funcName","isNil4","isEmpty4","RuntimeError7","isExistSessionId","srfsessionid","DECache","cacheMap","forceAdd","getCacheByTag","forceUpdate","clone3","forceDelete","srfKey","add","isNil5","isEmpty5","createUUID","srftempdate","update","Error","createBatch","entities","updateBatch","deleteBatch","srfKeys","notRemoveKeys","checkData","getList","findIndex","generatePred","equals","where","reg","getMatchResPath","filterItems","requestPaths","str","path","match","every","calcResPath","replace","SearchFilter","page","sortField","sortMode","isNil6","isEmpty6","query","srfparentkey","srfparentdename","CodeListService","appModel","allCodeLists","getStatic","codeItems","formatStaticItems","codeItemValueNumber","setCodeList","getCodeList","isValueNumber","codeItem","textLanguageRes","i18n","t","lanResTag","defaultContent","_codeItem","color","dynamicCache","init","RuntimeError8","codeListType","getDynamicCodeList","CounterService","counterMap","counter2","counter","appCounter","RuntimeModelError6","counterType","ModelError7","WorkFlowService","commonBaseUrl","appContext","appData","srfsystemid","getBaseUrl","getActiveData","taskDefinitionKey","deKeyValue","post","activedata","request","method","responseType","taskId","methodName","wfStart","wfSubmit","wfReassign","wfAddStepBefore","wfSendBack","wfSendCopy","RuntimeError9","Srfuf","Srfuf2","AppDataEntity","_AppDataEntity","srfuf","_srfkey","enumerable","configurable","clone4","_data","keyAppField","keyAppDEFieldId","majorAppField","majorAppDEFieldId","major","defineProperties","properties","_entity","MethodDto","_MethodDto","dto","dtoMap","fields","appDEMethodDTOFields","isLocalMode","storageMode","refAppDataEntityId","getFieldDto","local","j","ModelError8","all","datum","sets","entityData","methodDto","appDEMethodDTOs","refAppDEMethodDTOId","Method","input","appDEMethodDTOId","appDEMethodInput","output","appDEMethodReturn","actionType","requestMethod","put","RuntimeModelError7","calcPath","curPath","codeName2","createEntity","DELogicLinkCond","DELogicLinkSingleCond","srcParam","srcLogicParamId","dstParam","dstLogicParamId","dstField","dstFieldName","ctx","dst","RuntimeModelError8","src","ModelError9","DELogicLinkGroupCond","_DELogicLinkGroupCond","bol","RuntimeModelError9","judge","DELogicNode","links","srcNode","dstNode","delogicLinkGroupCond","defaultLink","DEActionNode","dstAppDataEntityId","dstAppDEActionId","dstDELogicParamId","retDELogicParamId","RuntimeModelError10","requestData","viewParams","StartNode","_ctx","EndNode","isEndNode","returnParamId","returnType","ModelError10","handleSrcVal","srcValParams","srcDELogicParamId","srcValueType","srcFieldName","srcValue","clone5","ModelError11","srcField","PrepareParamNode","nodeParams","delogicNodeParams","nodeParam","paramAction","setParamValue","resetParam","copyParam","bindParam","renewParam","appendParam","sortParam","ModelError12","srcVal","clone6","dstIndex","srcIndex","srcSize","insertIndex","_srcIndex","_srcSize","splice","dstSortDir","DataSetNode","dstAppDEDataSetId","BindParamNode","RuntimeModelError11","ResetParamNode","RuntimeModelError12","RenewParamNode","RuntimeModelError13","CopyParamNode","RuntimeModelError14","clone7","SortParamNode","RuntimeModelError15","AppendParamNode","RuntimeModelError16","ThrowExceptionNode","errorCode","HttpError","response","status","statusText","DELogic","nodes","delogicNodes","RuntimeModelError17","logicNodeType","logicNode","ModelError14","delogicParams","calc","m","default","appGlobalParam","clone8","entityListParam","entityPageParam","ModelError13","entityParam","lastReturnParam","appContextParam","simpleListParam","simpleParam","cloneParam","envParam","fileListParam","fileParam","filterParam","lastParam","originEntity","sessionParam","renew","thenId","initLogicParams","defaultParamName","deLogicParams","startDELogicNodeId","deepExec","parallelOutput","deLogicMap","deDELogic","execDELogicAction","HttpResponse2","HttpError2","execFieldLogics","fieldLogics","DEActionMethod","RuntimeModelError18","handle","actionMode","getDraft","remove","createTemp","getTemp","getDraftTemp","removeTemp","updateTemp","needResourceKey","s","HttpResponse3","FetchMethod","items2","searchLocal","HttpResponse4","dataSetType","fetchCodeListSet","ModelError15","ascSort","nullData","undefinedData","emptyData","equals2","isEmpty7","pred","where2","nullPred","undefinedPred","emptyPred","queryParamKeys","quickSearchAppDEFieldIds","selectLocal","isNil7","descSort","clone9","appCodeListId","RuntimeModelError19","DEService","methodMap","file","exportData","dataExport","fetchAction","resPath","exportUrl","getMethod","appDEMethods","methodType","ModelError16","params2","RuntimeError11","_ControlVO","isNil8","$origin","srfdeid","srfdecodename","srfkeyfile","srfmajorfile","$dataUIMap","mapField","dataKey","linkProperty","isOriginField","uiKey","writable","setOrigin","cloneOrigin","clone10","newVal","ControlService","dataUIMap","initUIDataMap","handleResponse","toUIData","DeAuthorityService","fetchControlAction","appDEMethodId","getAction","getControlAction","getDraftAction","getDraftControlAction","removeAction","removeControlAction","createAction","createControlAction","updateAction","updateControlAction","_dataExport","RuntimeError12","headers","total","entityModel","dataAccessAction","srfopprivs","calcByDeMainState","enableDEMainState","AuthorityService","constructorCache","resCodes","enablePermission","RuntimeError13","unires","enablepermissionvalid","calcByResCode","resCode","appDeId","opPriv","getOPPriv","mapSysUniResCode","calcByDataAccessAction","loginname","password","token","setCookie","CoreConst","TOKEN","expiredDate","expirein","TOKEN_EXPIRES","desc","clearCookie","TreeNodeData","parentNodeData","leaf","nodeId","calcIcon","sysImage","icon","cssClass","imagePath","DEServiceUtil","deData","textHtml","calcTextHtml","iconAppDEFieldId","detreeNodeDataItems","iconDataItem","htmlStr","calcDataItemScript","dataItem","customCode","html","textDataItem","nodeValue","parentValueLevel","isRequestNeed","isNil9","navId","bkColor","bkcolorAppDEFieldId","bkcolor","beginTime","beginTimeAppDEFieldId","colorAppDEFieldId","content","contentAppDEFieldId","endTime","endTimeAppDEFieldId","idAppDEFieldId","level","levelAppDEFieldId","tag2","tag2AppDEFieldId","tagAppDEFieldId","tips","tipsAppDEFieldId","RuntimeError14","clearTempCache","Application","Net","baseURL","baseUrl","authority","loadAppModelStyle","remoteModelUrl","then","dom","createElement","setAttribute","responseURL","URL","pathname","innerHTML","head","appendChild","catch","appFuncs","appDEUIActions","deUILogicId","appDEUILogics","FormNotifyState","FormNotifyState2","GridNotifyState","GridNotifyState2","PanelNotifyState","PanelNotifyState2","Counter","count","state","reusable","increment","decrement","callback2","RuntimeError16","LoadingState","isLoading","NOOP","begin","CTXState","CTX","QXEvent2","controllersMap","registerController","nextState","startLoading","endLoading","c","getController","traceRoot","ActivityCounter","registration","enroll","attend","QXEventEx","uiActionId","disabled","visible","permitted","noPermissionHidden","noDataDisabled","isInit","uiAction","appDeName","noPrivDisplayMode","actionTarget","uiactionMode","uiactionTag","calcPermission","addState","setLoading","QXEvent3","anyEventFns","onAll","resultPromise1","asyncEmit","resultPromise2","resultArr1","resultArr2","clearAll","ControllerEvent","getBaseArgs","eventName","SELF_KEY","BaseController","getEventArgs","mountCounter","mounted","childNames","initState","_evt","isCreated","isMounted","targetName","onCreated","force","mountSelf","onMounted","onDestroyed","_callback","listenNewController","pluginId","plugin","appPFPluginRefs","pluginCode","loadPlugin","pluginType","getProvider","getControlProvider","controlType","controlStyle","UIACTION_PROVIDER_PREFIX","registerUIActionProvider","getProvider6","getUIActionProvider","RuntimeError18","ViewController","layoutPanel","IBizContext2","engines","slotProps","counters","viewLoading","isCloseView","_isActive","initEngines","isActive","onActivated","onDeactivated","engineModels","ins","getEngine","engineCat","engineType","counterRef","getCounterByRef","caption","srfactiveviewdata","tapPromise","modalData","handleContextParams","ctrl","ctrlProvider","initCounters","createViewScheduler","defaultParamsCb","hasViewEventTrigger","_eventName","triggerViewEvent","startTimerTrigger","isNil11","isEmpty8","createUUID2","notNilEmpty5","callUIAction","RuntimeError19","setLayoutPanel","panel","hasControlEventTrigger","triggerControlEvent","triggerControlName","triggerEvent","EditorController","placeHolder","editorParams","readonly","readOnly","onInit","handlePublicParams","selfContext","selfParams","toObj","toBoolean","ControlController","dataItems","RuntimeModelError20","registerToCtx","panelModel","controlPanel","getData","initControlScheduler","controlLogics","getControlType","handlerAbilityParams","logics","createControlScheduler","HubController","selectedData","searchParams","noSort","sortQuery","curPage","isLoaded","singleSelect","mdctrlActiveMode","setSort","order","extraParams","isInitialLoad","isLoadMore","getFetchParams","fetch","afterLoad","RuntimeError20","silent","needRefresh","allSettled","afterRemove","success","setActive","setSelection","selection","isElementSame","filterArr","_args","login","loginName","logout","convert","appMap","apps","view2appMap","views","dataEntities","viewConfigs","viewConfig","RuntimeError15","defaultAppIndexViewName","calcAppViewId","ids","registerModelLoaderProvider","modelLoaderProvider","registerApp","registerAppView","registerAppDataEntity","setAppView","hasAppView","createApp","RuntimeError21","getAppDataEntityByCodeName","viewEngines","ViewEngineBase","initViewState","toolbar","leftToolbar","rightToolbar","footerToolbar","calcViewHeaderVisible","panelItems","view_header","calcViewFooterVisible","view_footer","_c","_d","showHeader","showCaptionBar","view_captionbar","lefttoolbar","righttoolbar","view_toolbar","showFooter","RuntimeError22","dataInfo","xdataControlName","searchForm","searchBar","xdataControl","openData","calcButtonState","getSearchParams","view_searchform","formExists","keepAlive","expandSearchForm","noLoadDefault","loadDefault","toggleFilter","newData","importData","copy","triggerCustom","copyMode","RuntimeModelError21","srfcopymode","addParams","filteredParams","entries","reduce","view_searchbar","searchformContainer","UILogicLinkCond","UILogicLinkSingleCond","RuntimeModelError22","ModelError17","UILogicLinkGroupCond","_UILogicLinkGroupCond","deuilogicLinkConds","RuntimeModelError23","UILogicNode","deuilogicLinks","linkMode","deuilogicLinkGroupCond","ModelError18","DEActionNode2","dstDEUILogicParamId","retDEUILogicParamId","RuntimeModelError24","DEUIActionNode","dstAppDEUIActionId","parameters","RuntimeModelError25","actionData","UIActionUtil","execAndResolved","StartNode2","EndNode2","ModelError19","handleSrcVal2","srcDEUILogicParamId","clone11","ModelError20","PrepareJSParamNode","deuilogicNodeParams","ModelError21","ViewCtrlInvokeNode","invokeMethod","invokeCtrlId","invokeParamId","RuntimeModelError26","invokeParam","RuntimeError23","invokeCtrl","isFunction","BindParamNode2","RuntimeModelError27","UILogic","deuilogicNodes","RuntimeModelError29","ModelError23","deuilogicParams","activeContainerParam","activeCtrlParam","ctrlParam","control","RuntimeModelError28","activeViewParam","applicationParam","ModelError22","navContextParam","navViewParamParam","routeViewSessionParam","viewNavDataParam","viewSessionParam","dstDEUILogicNodeId","startDEUILogicNodeId","uiLogicMap","execUILogic","deUILogic","getDEUILogic","RuntimeError24","uiLogic","RuntimeError25","closeView","refreshMode","UIActionProviderBase","reloadData","closeEditView","appDEUILogicId","uilogicAttachMode","RuntimeModelError30","isConfirm","returnError","_result","execAction","cancel","nextResult","doNextAction","nextContext","nextParams","enableConfirm","confirmMsg","nextActionId","nextId","resultData","originData","valueItem","paramItem","unshift","isMultiData","BackendUIActionProvider","actionResult","entityName","RuntimeModelError31","handleParams","frontPSAppView","frontAppViewId","srfactionparam","successMsg","isArray2","SysUIActionProvider","predefinedActionMap","uIActionTag","FrontUIActionProvider","frontProcessType","StringUtil","RuntimeModelError32","doOther","ModelError24","el","target","WFWithdrawUIActionProvider","_action","frontUIActionProvider","backendUIActionProvider","sysUIActionProvider","wfWithdrawUIActionProvider","LogicExecutor","_executeParams","RuntimeError26","initialized","convertScriptArgs","executeParams","paramKeys","convertFun","RuntimeModelError33","LogicScheduler","triggers","executors","executor","createExecutor","createTrigger","bindExecutor","getExecuteParams","defaultParams","mergeLeft","triggerType","getMatchTriggers","matchParams","triggerAndExecute","triggerItemDynaLogic","itemName","triggerItemVisible","triggerItemEnable","triggerItemBlank","ctrlName","ControlLogicScheduler","ViewLogicScheduler","logicTrigger","constructorMap","ModelError25","ModelError26","LogicTrigger","bindScriptExecutor","RuntimeError27","RuntimeError28","RuntimeError29","builtinAppUILogic","executeOpenDataAppUILogic","executeNewDataAppUILogic","appUILogic","rest","RuntimeError30","openViewRef","openDataAppView","RuntimeModelError34","notNilEmpty6","enableWizardAdd","enableBatchAdd","batchAddOnly","newDataAppView","newViewRef","getWizardNewViewRef","ModelError27","wizardAppView","newDataAppViews","selectData","indexType","findView","refMode","listenEventNames","names","eventNames","import_path_browserify","isNodeMode","except","__copyProps","__esModule","__toESM","mateUrl","styleElementMap","baseDir","pathStr","urls","styleUrl","reject","linkDom","onload","onerror","repo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.system.min.js","sources":["index.esm.js"],"sourcesContent":["var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __commonJS = (cb, mod) => function __require() {\n return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\n\n// ../../node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.js\nvar require_path_browserify = __commonJS({\n \"../../node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.js\"(exports, module) {\n \"use strict\";\n function assertPath(path2) {\n if (typeof path2 !== \"string\") {\n throw new TypeError(\"Path must be a string. Received \" + JSON.stringify(path2));\n }\n }\n function normalizeStringPosix(path2, allowAboveRoot) {\n var res = \"\";\n var lastSegmentLength = 0;\n var lastSlash = -1;\n var dots = 0;\n var code;\n for (var i = 0; i <= path2.length; ++i) {\n if (i < path2.length)\n code = path2.charCodeAt(i);\n else if (code === 47)\n break;\n else\n code = 47;\n if (code === 47) {\n if (lastSlash === i - 1 || dots === 1) {\n } else if (lastSlash !== i - 1 && dots === 2) {\n if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) {\n if (res.length > 2) {\n var lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex !== res.length - 1) {\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = i;\n dots = 0;\n continue;\n }\n } else if (res.length === 2 || res.length === 1) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = i;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n if (res.length > 0)\n res += \"/..\";\n else\n res = \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0)\n res += \"/\" + path2.slice(lastSlash + 1, i);\n else\n res = path2.slice(lastSlash + 1, i);\n lastSegmentLength = i - lastSlash - 1;\n }\n lastSlash = i;\n dots = 0;\n } else if (code === 46 && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n }\n function _format(sep, pathObject) {\n var dir = pathObject.dir || pathObject.root;\n var base = pathObject.base || (pathObject.name || \"\") + (pathObject.ext || \"\");\n if (!dir) {\n return base;\n }\n if (dir === pathObject.root) {\n return dir + base;\n }\n return dir + sep + base;\n }\n var posix = {\n // path.resolve([from ...], to)\n resolve: function resolve() {\n var resolvedPath = \"\";\n var resolvedAbsolute = false;\n var cwd;\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path2;\n if (i >= 0)\n path2 = arguments[i];\n else {\n if (cwd === void 0)\n cwd = process.cwd();\n path2 = cwd;\n }\n assertPath(path2);\n if (path2.length === 0) {\n continue;\n }\n resolvedPath = path2 + \"/\" + resolvedPath;\n resolvedAbsolute = path2.charCodeAt(0) === 47;\n }\n resolvedPath = normalizeStringPosix(resolvedPath, !resolvedAbsolute);\n if (resolvedAbsolute) {\n if (resolvedPath.length > 0)\n return \"/\" + resolvedPath;\n else\n return \"/\";\n } else if (resolvedPath.length > 0) {\n return resolvedPath;\n } else {\n return \".\";\n }\n },\n normalize: function normalize(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n var isAbsolute = path2.charCodeAt(0) === 47;\n var trailingSeparator = path2.charCodeAt(path2.length - 1) === 47;\n path2 = normalizeStringPosix(path2, !isAbsolute);\n if (path2.length === 0 && !isAbsolute)\n path2 = \".\";\n if (path2.length > 0 && trailingSeparator)\n path2 += \"/\";\n if (isAbsolute)\n return \"/\" + path2;\n return path2;\n },\n isAbsolute: function isAbsolute(path2) {\n assertPath(path2);\n return path2.length > 0 && path2.charCodeAt(0) === 47;\n },\n join: function join() {\n if (arguments.length === 0)\n return \".\";\n var joined;\n for (var i = 0; i < arguments.length; ++i) {\n var arg = arguments[i];\n assertPath(arg);\n if (arg.length > 0) {\n if (joined === void 0)\n joined = arg;\n else\n joined += \"/\" + arg;\n }\n }\n if (joined === void 0)\n return \".\";\n return posix.normalize(joined);\n },\n relative: function relative(from, to) {\n assertPath(from);\n assertPath(to);\n if (from === to)\n return \"\";\n from = posix.resolve(from);\n to = posix.resolve(to);\n if (from === to)\n return \"\";\n var fromStart = 1;\n for (; fromStart < from.length; ++fromStart) {\n if (from.charCodeAt(fromStart) !== 47)\n break;\n }\n var fromEnd = from.length;\n var fromLen = fromEnd - fromStart;\n var toStart = 1;\n for (; toStart < to.length; ++toStart) {\n if (to.charCodeAt(toStart) !== 47)\n break;\n }\n var toEnd = to.length;\n var toLen = toEnd - toStart;\n var length = fromLen < toLen ? fromLen : toLen;\n var lastCommonSep = -1;\n var i = 0;\n for (; i <= length; ++i) {\n if (i === length) {\n if (toLen > length) {\n if (to.charCodeAt(toStart + i) === 47) {\n return to.slice(toStart + i + 1);\n } else if (i === 0) {\n return to.slice(toStart + i);\n }\n } else if (fromLen > length) {\n if (from.charCodeAt(fromStart + i) === 47) {\n lastCommonSep = i;\n } else if (i === 0) {\n lastCommonSep = 0;\n }\n }\n break;\n }\n var fromCode = from.charCodeAt(fromStart + i);\n var toCode = to.charCodeAt(toStart + i);\n if (fromCode !== toCode)\n break;\n else if (fromCode === 47)\n lastCommonSep = i;\n }\n var out = \"\";\n for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {\n if (i === fromEnd || from.charCodeAt(i) === 47) {\n if (out.length === 0)\n out += \"..\";\n else\n out += \"/..\";\n }\n }\n if (out.length > 0)\n return out + to.slice(toStart + lastCommonSep);\n else {\n toStart += lastCommonSep;\n if (to.charCodeAt(toStart) === 47)\n ++toStart;\n return to.slice(toStart);\n }\n },\n _makeLong: function _makeLong(path2) {\n return path2;\n },\n dirname: function dirname(path2) {\n assertPath(path2);\n if (path2.length === 0)\n return \".\";\n var code = path2.charCodeAt(0);\n var hasRoot = code === 47;\n var end = -1;\n var matchedSlash = true;\n for (var i = path2.length - 1; i >= 1; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n matchedSlash = false;\n }\n }\n if (end === -1)\n return hasRoot ? \"/\" : \".\";\n if (hasRoot && end === 1)\n return \"//\";\n return path2.slice(0, end);\n },\n basename: function basename(path2, ext) {\n if (ext !== void 0 && typeof ext !== \"string\")\n throw new TypeError('\"ext\" argument must be a string');\n assertPath(path2);\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n if (ext !== void 0 && ext.length > 0 && ext.length <= path2.length) {\n if (ext.length === path2.length && ext === path2)\n return \"\";\n var extIdx = ext.length - 1;\n var firstNonSlashEnd = -1;\n for (i = path2.length - 1; i >= 0; --i) {\n var code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else {\n if (firstNonSlashEnd === -1) {\n matchedSlash = false;\n firstNonSlashEnd = i + 1;\n }\n if (extIdx >= 0) {\n if (code === ext.charCodeAt(extIdx)) {\n if (--extIdx === -1) {\n end = i;\n }\n } else {\n extIdx = -1;\n end = firstNonSlashEnd;\n }\n }\n }\n }\n if (start === end)\n end = firstNonSlashEnd;\n else if (end === -1)\n end = path2.length;\n return path2.slice(start, end);\n } else {\n for (i = path2.length - 1; i >= 0; --i) {\n if (path2.charCodeAt(i) === 47) {\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n }\n if (end === -1)\n return \"\";\n return path2.slice(start, end);\n }\n },\n extname: function extname(path2) {\n assertPath(path2);\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var preDotState = 0;\n for (var i = path2.length - 1; i >= 0; --i) {\n var code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return \"\";\n }\n return path2.slice(startDot, end);\n },\n format: function format(pathObject) {\n if (pathObject === null || typeof pathObject !== \"object\") {\n throw new TypeError('The \"pathObject\" argument must be of type Object. Received type ' + typeof pathObject);\n }\n return _format(\"/\", pathObject);\n },\n parse: function parse(path2) {\n assertPath(path2);\n var ret = { root: \"\", dir: \"\", base: \"\", ext: \"\", name: \"\" };\n if (path2.length === 0)\n return ret;\n var code = path2.charCodeAt(0);\n var isAbsolute = code === 47;\n var start;\n if (isAbsolute) {\n ret.root = \"/\";\n start = 1;\n } else {\n start = 0;\n }\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n var i = path2.length - 1;\n var preDotState = 0;\n for (; i >= start; --i) {\n code = path2.charCodeAt(i);\n if (code === 47) {\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46) {\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n preDotState = -1;\n }\n }\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n if (end !== -1) {\n if (startPart === 0 && isAbsolute)\n ret.base = ret.name = path2.slice(1, end);\n else\n ret.base = ret.name = path2.slice(startPart, end);\n }\n } else {\n if (startPart === 0 && isAbsolute) {\n ret.name = path2.slice(1, startDot);\n ret.base = path2.slice(1, end);\n } else {\n ret.name = path2.slice(startPart, startDot);\n ret.base = path2.slice(startPart, end);\n }\n ret.ext = path2.slice(startDot, end);\n }\n if (startPart > 0)\n ret.dir = path2.slice(0, startPart - 1);\n else if (isAbsolute)\n ret.dir = \"/\";\n return ret;\n },\n sep: \"/\",\n delimiter: \":\",\n win32: null,\n posix: null\n };\n posix.posix = posix;\n module.exports = posix;\n }\n});\n\n// src/config/global-config.ts\nvar GlobalConfig = class {\n constructor() {\n // 全局视图配置\n this.view = {\n enableDataInfoBar: true\n };\n // 全局表格配置\n this.grid = {\n editShowMode: \"row\",\n editSaveMode: \"cell-blur\"\n };\n // 全局菜单配置\n this.appMenu = {\n enableEcho: true\n };\n // 全局代码表配置\n this.codeList = {\n timeout: 60 * 60 * 1e3\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 ModelError4, RuntimeError as RuntimeError5 } from \"@ibiz-template/core\";\n\n// src/utils/nav-params/nav-params.ts\nimport { isEmpty } from \"lodash-es\";\nimport { isNilOrEmpty, notNilEmpty } from \"qx-util\";\nfunction convertNavData(naviDatas, ...origins) {\n if (!naviDatas || isEmpty(naviDatas)) {\n return {};\n }\n if (Object.prototype.toString.call(naviDatas) === \"[object Array]\") {\n return convertNavDataByArray(naviDatas, ...origins);\n }\n if (Object.prototype.toString.call(naviDatas) === \"[object Object]\") {\n return convertNavDataByObject(naviDatas, ...origins);\n }\n return {};\n}\nfunction convertNavDataByArray(naviDatas, ...origins) {\n const result = {};\n for (const naviData of naviDatas) {\n if (notNilEmpty(naviData.value) && !naviData.rawValue) {\n const findOrigin = origins.find((item) => {\n if (isNilOrEmpty(item)) {\n return false;\n }\n return (\n // proxy数据判断是否能拿到值\n item[naviData.value] || // 上下文等判断是否有这个属性,如果有且值为空,则赋该空值\n Object.prototype.hasOwnProperty.call(item, naviData.value)\n );\n });\n if (findOrigin) {\n result[naviData.key.toLowerCase()] = findOrigin[naviData.value];\n }\n } else {\n result[naviData.key.toLowerCase()] = naviData.value || null;\n }\n }\n return result;\n}\nfunction convertNavDataByObject(naviData, ...origins) {\n const result = {};\n const reg2 = /^%(.+)%$/;\n for (const key in naviData) {\n if (notNilEmpty(naviData[key]) && reg2.test(naviData[key])) {\n const valueKey = naviData[key].substring(1, naviData[key].length - 1);\n const findOrigin = origins.find((item) => {\n return Object.prototype.hasOwnProperty.call(item, valueKey);\n });\n if (findOrigin) {\n result[key.toLowerCase()] = findOrigin[valueKey];\n }\n } else {\n result[key.toLowerCase()] = naviData[key] || null;\n }\n }\n return result;\n}\nfunction convertObjectToNavParams(naviData) {\n const result = [];\n const reg2 = /^%(.+)%$/;\n for (const key in naviData) {\n let rawValue = true;\n let value = naviData[key];\n if (notNilEmpty(naviData[key]) && reg2.test(naviData[key])) {\n rawValue = false;\n value = naviData[key].substring(1, naviData[key].length - 1);\n }\n result.push({\n key: key.toLowerCase(),\n rawValue,\n value\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, context, params, data);\n const tempParams = convertNavData(navParams, context, params, data);\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 } from \"@ibiz-template/core\";\nimport { isNilOrEmpty as isNilOrEmpty2, notNilEmpty as notNilEmpty2 } from \"qx-util\";\nimport qs from \"qs\";\n\n// src/model/utils/util.ts\nfunction findModelChild(models, id) {\n if (models) {\n const model = models.find((item) => item.id === id);\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(navigateContexts, { [splitArr[1]]: param });\n break;\n case \"SRFNAVCTX\":\n Object.assign(navigateParams, { [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}\n\n// src/model/layout/layout.ts\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 const result = {};\n if (valignSelf || halignSelf) {\n Object.assign(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 return ScriptFactory.execScriptFn({ data }, expression, {\n singleRowReturn: true,\n isAsync: false\n });\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 { isNotNil } from \"ramda\";\nfunction calcDeCodeNameById(id) {\n const arr = id.split(\".\");\n return arr.pop();\n}\nfunction hasDeCodeName(params, entityId) {\n const codeName = calcDeCodeNameById(entityId);\n return isNotNil(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}\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;\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, context, params);\n context = Object.assign(context.clone(), navContextData);\n const navParams = appView.appViewNavParams || [];\n const navParamsData = convertNavData(navParams, context, params);\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 RuntimeModelError(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 RuntimeModelError(\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 (notNilEmpty2(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 (notNilEmpty2(srfWf)) {\n if (notNilEmpty2(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 (notNilEmpty2(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 notNilEmpty3 } 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 notNilEmpty3(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 return fn.apply({}, args);\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 const view = param.view;\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 \"env\":\n param.env = ibiz.env;\n break;\n case \"app\":\n param.app = ibiz.hub.controller;\n break;\n case \"parent\":\n param.parent = view == null ? void 0 : view.parentView;\n break;\n case \"topView\":\n param.topView = view == null ? void 0 : view.getTopView();\n break;\n case \"parentView\":\n param.parentView = view == null ? void 0 : view.parentView;\n break;\n case \"topViewSession\":\n param.topViewSession = view == null ? void 0 : view.getTopView().session;\n break;\n case \"viewSession\":\n param.viewSession = view == null ? void 0 : view.session;\n break;\n case \"appSession\":\n param.appSession = ibiz.hub.controller.session;\n break;\n default:\n break;\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// 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();\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 RuntimeModelError2 } 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 RuntimeModelError2(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 RuntimeModelError3 } 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 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 !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.find((viewRef) => {\n return viewRef.name === key;\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[\"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/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.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 await this.hooks.shouldDismiss.call(context);\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 /**\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// src/command/app/open-app-view/open-app-view.ts\nimport { ModelError as ModelError3, RuntimeError as RuntimeError4 } from \"@ibiz-template/core\";\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 appView = await ibiz.hub.config.view.get(appViewId);\n if (!appView) {\n throw new RuntimeError4(\"\\u5E94\\u7528\\u89C6\\u56FE[\".concat(appViewId, \"]\\u4E0D\\u5B58\\u5728\"));\n }\n if (context.srfkey && appView.appDataEntityId) {\n const deName = calcDeCodeNameById(appView.appDataEntityId);\n context[deName] = context.srfkey;\n context.srfkey = void 0;\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;\n }\n return this.openIndexViewTab(appView, context, params);\n case \"POPUP\":\n throw new ModelError3(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 ModelError3(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 RuntimeError4(\"\\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 RuntimeError5(\"\\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, context, params));\n const _params = convertNavData(navigateParams, context, params);\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 ModelError4(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 RuntimeError5(\"\\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 RuntimeError5(\"\\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 RuntimeError5(\"\\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 RuntimeError5(\"\\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/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 RuntimeError6 } 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 RuntimeError6(\"\\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/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(\"\\u627E\\u4E0D\\u5230\".concat(pluginId, \"\\u7684\\u63D2\\u4EF6\\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/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 getProvider(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 = getProvider(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 = getProvider(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 = getProvider(controlType);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u90E8\\u4EF6\\u7C7B\\u578B\".concat(controlType, \"\\u5BF9\\u5E94\\u7684\\u9002\\u914D\\u5668\"));\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 getProvider2(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 = getProvider2(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 = getProvider2(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 = getProvider2(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 = getProvider2(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 getProvider3(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 = getProvider3(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 = getProvider3(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 getProvider4(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 = getProvider4(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 = getProvider4(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 getProvider5(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 = getProvider5(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 = getProvider5(key);\n if (!provider) {\n ibiz.log.error(\"\\u627E\\u4E0D\\u5230\\u9762\\u677F\\u5BB9\\u5668\\u9884\\u7F6E\\u7C7B\\u578B\\u4E3A\".concat(predefinedType, \"\\u7684\\u9002\\u914D\\u5668\"));\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 = getProvider5(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\")\n );\n } else {\n return provider;\n }\n }\n provider = getProvider5(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/ui-action-register.ts\nimport { RuntimeError as RuntimeError7 } 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 getProvider6(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 = getProvider6(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 = getProvider6(uiactionMode);\n if (!provider) {\n throw new RuntimeError7(\"\\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/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 getProvider7(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 = getProvider7(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 = getProvider7(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 = getProvider7(viewType);\n }\n if (!provider) {\n provider = getProvider7(\"DEFAULT\");\n }\n return provider;\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 getProvider8(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 = getProvider8(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 = getProvider8(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/app-counter-register.ts\nimport { RuntimeError as RuntimeError8 } from \"@ibiz-template/core\";\nvar APP_COUNTER_PROVIDER_PREFIX = \"APPCOUNTER\";\nfunction registerAppCounterProvider(key, callback) {\n ibiz.register.register(\"\".concat(APP_COUNTER_PROVIDER_PREFIX, \"_\").concat(key), callback);\n}\nfunction getProvider9(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 = getProvider9(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 = getProvider9(codeName);\n if (!provider) {\n throw new RuntimeError8(\"\\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 = getProvider9(counterType);\n if (!provider) {\n throw new RuntimeError8(\"\\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/service/utils/app-counter/app-counter.ts\nimport { IBizContext, RuntimeError as RuntimeError9 } from \"@ibiz-template/core\";\nimport { notNilEmpty as notNilEmpty4, 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 RuntimeError9(\"\\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 && notNilEmpty4(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 RuntimeModelError4 } 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 RuntimeModelError4(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 ModelError5 } 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 ModelError5(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 ModelError6, RuntimeModelError as RuntimeModelError5 } 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 ModelError6(\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 { valueAppDEFieldId, textAppDEFieldId } = 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 return Object.freeze(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 if (this.isPredefined) {\n if (!params.size) {\n params.size = 1e4;\n }\n const res2 = await app.net.get(\n \"/dictionaries/codelist/\".concat(this.codeList.codeName),\n params\n );\n return Object.freeze(res2.data.items);\n }\n const { appDataEntityId, appDEDataSetId } = this.codeList;\n if (!appDataEntityId) {\n throw new RuntimeModelError5(this.codeList, \"\\u672A\\u914D\\u7F6E\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!appDEDataSetId) {\n throw new RuntimeModelError5(this.codeList, \"\\u672A\\u914D\\u7F6E\\u6570\\u636E\\u96C6\");\n }\n const res = await app.deService.exec(\n appDataEntityId,\n appDEDataSetId,\n context,\n {},\n params\n );\n let resultItems = [];\n if (res.data.length) {\n resultItems = res.data.map((item) => {\n return this.convertData(item);\n });\n }\n return resultItems;\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 RuntimeError10 } 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 RuntimeError10(\"\\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 RuntimeError10(\"\\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 = new RegExp(\"(?<=\\\\$\\\\{)(.*?)(?=\\\\})\", \"g\");\nfunction getMatchResPath(context, entity) {\n const pathItems = entity.requestPaths || [];\n const items = pathItems.map((str) => {\n return {\n path: str,\n keys: str.match(reg) || []\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/route-context/route-context.ts\nvar excludeViewTypes = [\n \"DEGRIDVIEW\" /* DE_GRID_VIEW */,\n \"DEGRIDEXPVIEW\" /* DE_GRID_EXP_VIEW */,\n \"DELISTVIEW\" /* DE_LIST_VIEW */,\n \"DELISTEXPVIEW\" /* DE_LIST_EXP_VIEW */,\n \"DEDATAVIEW\" /* DE_DATA_VIEW */,\n \"DEDATAVIEWEXPVIEW\" /* DE_DATAVIEW_EXP_VIEW */,\n \"DECALENDARVIEW\" /* DE_CALENDAR_VIEW */,\n \"DECALENDAREXPVIEW\" /* DE_CALENDAR_EXP_VIEW */,\n \"DECHARTVIEW\" /* DE_CHART_VIEW */,\n \"DECHARTEXPVIEW\" /* DE_CHART_EXP_VIEW */,\n \"DEKANBANVIEW\" /* DE_KANBAN_VIEW */\n];\nfunction calcRouteContext(_appView) {\n let paths = [];\n paths = paths.sort((a, b) => b.length - a.length);\n const [pathArr] = paths;\n if (pathArr) {\n const obj = {};\n pathArr.forEach(([key, val]) => {\n obj[key] = val;\n });\n return obj;\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 RuntimeError11 } 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(\n codeItem.textLanguageRes.lanResTag,\n codeItem.textLanguageRes.defaultContent\n );\n }\n const _codeItem = {\n text,\n value: isValueNumber ? Number(codeItem.value) : codeItem.value,\n color: codeItem.color,\n id: codeItem.codeName\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 RuntimeError11(\"\\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/counter/counter.service.ts\nimport { RuntimeModelError as RuntimeModelError6 } 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 RuntimeModelError6(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 { ModelError as ModelError15, RuntimeError as RuntimeError14 } from \"@ibiz-template/core\";\n\n// src/service/service/work-flow/work-flow.service.ts\nimport { RuntimeError as RuntimeError12 } 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 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/alls/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/alls/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 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 \"sendback\":\n return this.wfSendBack(context, params, data);\n case \"sendcopy\":\n return this.wfSendCopy(context, params, data);\n default: {\n throw new RuntimeError12(\"\\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/method/de-action.ts\nimport {\n HttpResponse as HttpResponse3,\n RuntimeModelError as RuntimeModelError18\n} from \"@ibiz-template/core\";\n\n// src/service/service/entity/method/method.ts\nimport { RuntimeModelError as RuntimeModelError7 } from \"@ibiz-template/core\";\n\n// src/service/app-data-entity/app-data-entity.ts\nimport { clone as clone4 } 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/app-data-entity/app-data-entity.ts\nvar AppDataEntity = class _AppDataEntity {\n get srfuf() {\n return this.srfkey ? 1 /* UPDATE */ : 0 /* CREATE */;\n }\n /**\n * Creates an instance of AppDataEntity.\n *\n * @author chitanda\n * @date 2022-10-11 21:10:21\n * @param {IAppDataEntity} entity\n * @param {(IData | AppDataEntity)} data\n */\n constructor(entity, data) {\n let _srfkey;\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 ? clone4(data._data) : clone4(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, \"srfkeyfile\", {\n get() {\n return key;\n }\n });\n Object.defineProperty(this, \"srfkey\", {\n set(val) {\n _srfkey = val;\n },\n get() {\n return this._data[key] || _srfkey;\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, \"srfmajorfile\", {\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 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 } = 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 if (!keys.includes(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 });\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 return new _AppDataEntity(this._entity, this._data);\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 if (data instanceof _AppDataEntity) {\n Object.assign(this._data, data._data);\n } else {\n Object.assign(this._data, data);\n }\n return this;\n }\n};\n\n// src/service/dto/method.dto.ts\nimport { ModelError as ModelError7 } from \"@ibiz-template/core\";\nvar MethodDto = class _MethodDto {\n constructor(entity, dto) {\n this.entity = entity;\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 get isLocalMode() {\n return this.entity.storageMode === 1 || this.entity.storageMode === 4;\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 break;\n }\n case \"DTOS\": {\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 break;\n }\n default:\n throw new ModelError7(\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 service.local.clear(context);\n return Promise.all(\n data.map(async (datum) => {\n const all = this.fields.filter((field) => field.type === \"DTOS\").map(async (field) => {\n if (!field.refAppDataEntityId) {\n return;\n }\n const key = field.codeName.toLowerCase();\n const dto = await this.getFieldDto(field);\n const items = datum[key];\n if (items) {\n await dto.sets(context, items);\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, methodDto);\n this.dtoMap.set(field.codeName, dto);\n return dto;\n }\n};\n\n// src/service/service/entity/method/method-input.ts\nvar MethodInput = class {\n /**\n * Creates an instance of MethodInput.\n *\n * @author chitanda\n * @date 2022-10-11 17:10:59\n * @param {IAppDataEntity} entity\n * @param {IAppDEMethodInput} [input]\n */\n constructor(entity, input) {\n this.entity = entity;\n this.input = input;\n if (input) {\n const methodDto = findModelChild(\n entity.appDEMethodDTOs || [],\n input.appDEMethodDTOId\n );\n if (methodDto) {\n this.dto = new MethodDto(entity, methodDto);\n }\n }\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\nvar MethodReturn = class {\n /**\n * Creates an instance of MethodReturn.\n *\n * @author chitanda\n * @date 2022-10-11 17:10:47\n * @param {IAppDataEntity} entity\n * @param {IAppDEMethodReturn} [output]\n */\n constructor(entity, output) {\n this.entity = entity;\n this.output = output;\n if (output) {\n const methodDto = findModelChild(\n entity.appDEMethodDTOs || [],\n output.appDEMethodDTOId\n );\n if (methodDto) {\n this.dto = new MethodDto(entity, methodDto);\n }\n }\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 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.appDEMethodInput);\n this.result = new MethodReturn(entity, method.appDEMethodReturn);\n }\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 this.entity.storageMode === 1 || this.entity.storageMode === 4;\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(\"\".concat(path2, \"/\").concat(methodName), data, params);\n break;\n case \"GET\":\n res = await this.app.net.get(\"\".concat(path2, \"/\").concat(methodName), data, params);\n break;\n case \"PUT\":\n res = await this.app.net.put(\"\".concat(path2, \"/\").concat(methodName), data, params);\n break;\n case \"DELETE\":\n res = await this.app.net.delete(\n \"\".concat(path2, \"/\").concat(methodName),\n data,\n params\n );\n break;\n default:\n if (requestMethod) {\n throw new RuntimeModelError7(\n this.method,\n \"\\u672A\\u652F\\u6301\\u7684\\u8BF7\\u6C42\\u65B9\\u5F0F: \".concat(requestMethod)\n );\n } else {\n throw new RuntimeModelError7(this.method, \"\\u672A\\u914D\\u7F6E\\u8BF7\\u6C42\\u65B9\\u5F0F\");\n }\n }\n return res;\n }\n throw new RuntimeModelError7(this.method, \"\\u672A\\u652F\\u6301\\u7684\\u884C\\u4E3A\\u7C7B\\u578B[\".concat(actionType, \"]\"));\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 *\n * @author chitanda\n * @date 2022-10-11 22:10:05\n * @protected\n * @param {(IData | IDataEntity)} data\n * @return {*} {IDataEntity}\n */\n createEntity(data) {\n return new AppDataEntity(this.entity, data);\n }\n};\n\n// src/de-logic/index.ts\nimport { HttpError as HttpError2, HttpResponse as HttpResponse2, RuntimeError as RuntimeError13 } from \"@ibiz-template/core\";\n\n// src/de-logic/de-logic.ts\nimport { ModelError as ModelError13, RuntimeModelError as RuntimeModelError17 } from \"@ibiz-template/core\";\n\n// src/de-logic/de-logic-context.ts\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} viewParams 视图参数\n */\n constructor(deLogicParams, context, data, viewParams) {\n this.deLogicParams = deLogicParams;\n this.context = context;\n this.data = data;\n this.viewParams = viewParams;\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 }\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// src/de-logic/de-logic-node/de-action-node/de-action-node.ts\nimport { RuntimeModelError as RuntimeModelError10 } 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 RuntimeModelError9 } 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 ModelError8, RuntimeModelError as RuntimeModelError8 } 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 RuntimeModelError8(\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 RuntimeModelError8(\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 ModelError8(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 RuntimeModelError9(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 || {});\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 RuntimeModelError10(this.model, \"\\u672A\\u6307\\u5B9A\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!dstAppDEActionId) {\n throw new RuntimeModelError10(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.viewParams\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 ModelError9 } 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 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 = 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 ModelError9(\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 ModelError11 } from \"@ibiz-template/core\";\nimport { clone as clone6 } from \"ramda\";\n\n// src/de-logic/utils/handle-src-val.ts\nimport { ModelError as ModelError10 } from \"@ibiz-template/core\";\nimport { clone as clone5 } from \"ramda\";\nfunction handleSrcVal(ctx, srcValParams) {\n const { srcDELogicParamId, srcValueType, srcFieldName, srcValue } = srcValParams;\n if (!srcValParams.srcValueType) {\n srcValParams.srcValueType = \"SRCDLPARAM\";\n }\n let value;\n switch (srcValueType) {\n case \"SRCDLPARAM\":\n value = ctx.params[srcDELogicParamId];\n break;\n case \"NULLVALUE\":\n return null;\n case \"NONEVALUE\":\n return void 0;\n case \"SRCVALUE\":\n return srcValue;\n case \"VIEWPARAM\":\n value = ctx.viewParams;\n break;\n case \"APPDATA\":\n value = ctx.context;\n break;\n case \"ENVPARAM\":\n value = clone5(ibiz.env);\n break;\n default:\n throw new ModelError10(srcValParams, \"\\u6682\\u672A\\u652F\\u6301\\u6E90\\u503C\\u7C7B\\u578B\".concat(srcValueType));\n }\n const srcField = srcFieldName == null ? void 0 : srcFieldName.toLowerCase();\n if (value && srcField) {\n value = value[srcField];\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 ModelError11(\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] = clone6(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 const dstField = dstFieldName == null ? void 0 : dstFieldName.toLowerCase();\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 requestData = 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 requestData,\n ctx.viewParams\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 RuntimeModelError11 } 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 RuntimeModelError11(\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 RuntimeModelError12 } from \"@ibiz-template/core\";\nvar ResetParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId } = this.model;\n if (!dstDELogicParamId) {\n throw new RuntimeModelError12(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 RuntimeModelError13 } from \"@ibiz-template/core\";\nvar RenewParamNode = 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.renewParam(dstDELogicParamId);\n }\n};\n\n// src/de-logic/de-logic-node/copy-param-node/copy-param-node.ts\nimport { RuntimeModelError as RuntimeModelError14 } from \"@ibiz-template/core\";\nimport { clone as clone7 } from \"ramda\";\nvar CopyParamNode = class extends DELogicNode {\n async exec(ctx) {\n const { dstDELogicParamId, srcDELogicParamId } = this.model;\n if (!dstDELogicParamId || !srcDELogicParamId) {\n throw new RuntimeModelError14(\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] = clone7(srcVal);\n }\n};\n\n// src/de-logic/de-logic-node/sort-param-node/sort-param-node.ts\nimport { RuntimeModelError as RuntimeModelError15 } 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 RuntimeModelError15(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 RuntimeModelError16 } 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 RuntimeModelError16(\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 } from \"@ibiz-template/core\";\nvar ThrowExceptionNode = class extends DELogicNode {\n async exec(_ctx) {\n const { errorCode, errorInfo } = this.model;\n throw new HttpError({\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 ModelError12 } from \"@ibiz-template/core\";\nimport { clone as clone8 } 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 ctx.params[tag] = ctx.data || {};\n } else if (m.appGlobalParam) {\n ctx.params[tag] = clone8(ibiz.env);\n } else if (m.entityListParam) {\n ctx.params[tag] = [];\n } else if (m.entityPageParam) {\n throw new ModelError12(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 throw new ModelError12(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u4E0A\\u6B21\\u8C03\\u7528\\u8FD4\\u56DE\");\n } else if (m.appContextParam) {\n ctx.params[tag] = ctx.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] = clone8(ctx.data || {});\n } else if (m.envParam) {\n throw new ModelError12(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 ModelError12(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 ModelError12(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 ModelError12(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 ModelError12(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 ModelError12(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 ModelError12(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 ModelError12(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 (!((_a = model.delogicNodes) == null ? void 0 : _a.length)) {\n throw new RuntimeModelError17(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 ModelError13(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 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 RuntimeModelError17(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 RuntimeError13(\"\".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 try {\n const result = await execDELogic(deDELogic, context, data, params);\n return new HttpResponse2(result);\n } catch (err) {\n if (err instanceof HttpError2) {\n return new HttpResponse2(err, 500);\n }\n throw err;\n }\n}\nasync function execFieldLogics(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}\n\n// src/service/service/entity/method/de-action.ts\nvar DEActionMethod = class extends Method {\n async exec(context, data, params) {\n if (this.method.actionType === \"DELOGIC\") {\n const deLogic = findDELogic(this.method.appDELogicId, this.entity);\n if (!deLogic) {\n throw new RuntimeModelError18(this.method, \"\\u7F3A\\u5C11\\u5B9E\\u4F53\\u5904\\u7406\\u903B\\u8F91\");\n }\n return execDELogicAction(deLogic, context, data, params);\n }\n if (!this.isLocalMode) {\n data = await this.input.handle(context, data);\n }\n if (![\"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 path2 = \"\".concat(path2, \"/\").concat(context[this.entity.codeName.toLowerCase()] || data[this.entity.keyAppDEFieldId]);\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 await execFieldLogics(this.entity, \"compute\", context, result.data, params);\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 (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 (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 data = await s.local.add(context, this.createEntity(entity));\n return new HttpResponse3(data);\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 data = s.local.update(context, this.createEntity(entity));\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: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/fetch.ts\nimport {\n HttpResponse as HttpResponse4,\n ModelError as ModelError14,\n RuntimeModelError as RuntimeModelError19\n} from \"@ibiz-template/core\";\nimport { ascSort, descSort } from \"qx-util\";\nimport { clone as clone9, equals as equals2, isEmpty as isEmpty7, isNil as isNil7, where as where2 } from \"ramda\";\nvar FetchMethod = class extends Method {\n async exec(context, data, params) {\n if (this.isLocalMode) {\n const items2 = await this.searchLocal(\n null,\n new SearchFilter(context, data)\n );\n return new HttpResponse4(items2, 200);\n }\n let res;\n switch (this.method.dataSetType) {\n case \"INDEXDE\":\n case \"CODELIST\":\n res = await this.fetchCodeListSet(context, params);\n break;\n case \"REMOTE\":\n {\n const path2 = this.calcPath(context);\n res = await this.request(path2, context, data, params);\n }\n break;\n default:\n throw new ModelError14(\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.length) {\n await Promise.all(\n res.data.map(\n (item) => execFieldLogics(this.entity, \"compute\", context, item, params)\n )\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 (!isNil7(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) => clone9(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 RuntimeModelError19(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/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.wf = new WorkFlowService(model);\n this.file = new FileService(model);\n }\n /**\n * 获取实体服务方法实例\n *\n * @author chitanda\n * @date 2022-10-10 14:10:53\n * @protected\n * @param {string} id\n * @return {*} {Method}\n */\n getMethod(id) {\n if (this.methodMap.has(id)) {\n return this.methodMap.get(id);\n }\n const model = findModelChild(this.model.appDEMethods, id);\n let method = null;\n switch (model.methodType) {\n case \"DEACTION\":\n method = new DEActionMethod(this.model, model);\n break;\n case \"FETCH\":\n case \"FETCHTEMP\":\n method = new FetchMethod(this.model, model);\n break;\n default:\n throw new ModelError15(\n model,\n \"\\u672A\\u652F\\u6301\\u7684\\u670D\\u52A1\\u65B9\\u6CD5\\u7C7B\\u578B: \".concat(model.methodType)\n );\n }\n this.methodMap.set(id, 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 exec(id, context, params = {}, params2 = {}) {\n const method = this.getMethod(id);\n if (method) {\n return method.exec(context, params, params2);\n }\n throw new RuntimeError14(\"\".concat(this.model.codeName, \"\\u672A\\u652F\\u6301\\u300C\").concat(id, \"\\u300D\\u65B9\\u6CD5\"));\n }\n};\n\n// src/service/vo/control.vo.ts\nimport { clone as clone10, isNil as isNil8 } from \"ramda\";\nvar ControlVO = class _ControlVO {\n /**\n * 是否是新建数据,0为新建\n *\n * @author lxm\n * @date 2022-09-06 22:09:24\n * @type {Srfuf}\n */\n get srfuf() {\n if (isNil8(this.$origin.srfuf)) {\n return this.srfkey ? 1 /* UPDATE */ : 0 /* CREATE */;\n }\n return this.$origin.srfuf;\n }\n /**\n * 主键\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfkey() {\n return this.$origin.srfkey;\n }\n /**\n * 主信息\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfmajortext() {\n return this.$origin.srfmajortext;\n }\n /**\n * 实体模型标识\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfdeid() {\n return this.$origin.srfdeid;\n }\n /**\n * 实体模型代码名称\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfdecodename() {\n return this.$origin.srfdecodename;\n }\n /**\n * 实体主键属性\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfkeyfile() {\n return this.$origin.srfkeyfile;\n }\n /**\n * 实体主信息属性\n *\n * @author lxm\n * @date 2022-09-07 19:09:42\n * @type {string}\n */\n get srfmajorfile() {\n return this.$origin.srfmajorfile;\n }\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 this.$dataUIMap.forEach((mapField, key) => {\n const value = mapField.dataKey;\n this.linkProperty(key, value, mapField.isOriginField);\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 * @returns {*}\n */\n linkProperty(uiKey, dataKey, isOriginField = true) {\n if (uiKey === \"srfuf\") {\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 = clone10(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 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 RuntimeError15 } from \"@ibiz-template/core\";\nimport { isArray } 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 RuntimeError15(\"\\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 (isArray(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 RuntimeError16 } 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 RuntimeError16(\"\\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 throw new RuntimeError16(\"\\u6CA1\\u6709appData\\u6570\\u636E\");\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) {\n try {\n const res = await ibiz.net.post(\"/v7/login\", { loginname, password });\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/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.deData = data;\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 = data.srfmajortext;\n this.value = 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 }\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 { isNil as isNil9 } 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 (!isNil9(opts.isOriginField)) {\n this.isOriginField = opts.isOriginField;\n }\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/de-service-util.ts\nimport { RuntimeError as RuntimeError17 } 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 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 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/app-hub.ts\nimport { RuntimeError as RuntimeError43 } from \"@ibiz-template/core\";\n\n// src/application.ts\nimport { Net } 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.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 }\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 await this.net.get(\"\".concat(ibiz.env.remoteModelUrl, \"/PSSYSAPP.json.css\")).then((res) => {\n const dom = document.createElement(\"style\");\n dom.setAttribute(\"type\", \"text/css\");\n if (res.request && res.request.responseURL) {\n const url = new URL(res.request.responseURL);\n dom.id = url.pathname;\n }\n dom.innerHTML = res.data;\n document.head.appendChild(dom);\n }).catch((err) => {\n ibiz.log.error(\n \"\\u5E94\\u7528[\".concat(this.appId, \"]\\u6A21\\u578B\\u5168\\u5C40\\u6837\\u5F0F\\u52A0\\u8F7D\\u5931\\u8D25\\uFF1A\").concat(err.message)\n );\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 RuntimeError18 } 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 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 RuntimeError18(\"\\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 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};\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 createUUID2, notNilEmpty as notNilEmpty5 } from \"qx-util\";\nimport { IBizContext as IBizContext2, RuntimeError as RuntimeError21 } from \"@ibiz-template/core\";\nimport { isEmpty as isEmpty8, isNil as isNil11 } 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 RuntimeError19 } 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 RuntimeError19(\"\\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 QXEvent2 } 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 * CTX事件\n * @author lxm\n * @date 2023-04-26 07:54:46\n * @protected\n */\n this.evt = new QXEvent2(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 }\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 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 this.noDataDisabled = 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 }\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;\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 QXEvent3 } from \"qx-util\";\nvar QXEventEx = class extends QXEvent3 {\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 *\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 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 this.evt.on(name, fn);\n }\n /**\n * 订阅任意事件\n * @author lxm\n * @date 2023-03-30 06:48:28\n * @param fn 事件回调\n */\n onAll(fn) {\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 }\n};\n\n// src/controller/utils/util/util.ts\nimport { isNil as isNil10 } from \"ramda\";\nfunction isValueChange(value, value2) {\n if ((isNil10(value) || value === \"\") && (isNil10(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 RuntimeError20 } from \"@ibiz-template/core\";\nimport { isNilOrEmpty as isNilOrEmpty5 } from \"qx-util\";\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 (isNilOrEmpty5(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 RuntimeError20(infoMessage || deRule.ruleInfo));\n }\n return true;\n },\n trigger: \"change blur\"\n });\n }\n });\n return rules;\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 }\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 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/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 }\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 }\n async onCreated() {\n await super.onCreated();\n this.modal.hooks.beforeDismiss.tapPromise(async (modalData) => {\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 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 (isNil11(this.context.srfsessionid) || isEmpty8(this.context.srfsessionid)) {\n this.context.srfsessionid = createUUID2();\n }\n const navContexts = this.model.appViewNavContexts;\n let context = {};\n if (notNilEmpty5(navContexts)) {\n context = convertNavData(navContexts, this.context, this.params);\n }\n Object.assign(this.context, context);\n const navParams = this.model.appViewNavParams;\n let params = {};\n if (notNilEmpty5(navParams)) {\n params = convertNavData(navParams, this.context, this.params);\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 RuntimeError21(\"\\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.triggerEvent\n );\n });\n }\n }\n};\n\n// src/controller/common/view/mob-view.controller.ts\nvar MobViewController = class extends ViewController {\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 * @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.toLowerCase()] = this.model.editorParams[key];\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, context, params, data);\n }\n const _context = Object.assign(context.clone(), selfContext);\n let selfParams = {};\n if (navigateParams && data) {\n selfParams = convertNavData(navigateParams, context, params, data);\n }\n const _params = { ...params, ...selfParams };\n return { context: _context, params: _params };\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 RuntimeModelError20 } 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 RuntimeModelError20(this.model, \"\\u8BF7\\u914D\\u7F6E\\u4EE3\\u7801\\u8868\");\n }\n};\n\n// src/controller/common/control/control.controller.ts\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(model, context, params, ctx);\n /**\n * 子部件适配器\n * @author lxm\n * @date 2023-07-19 04:14:50\n * @type {{ [key: string]: IControlProvider }}\n */\n this.providers = {};\n this.registerToCtx();\n const panelModel = ibiz.util.layoutPanel.get(\n \"\".concat(model.controlType, \"_DEFAULT\")\n );\n if (panelModel) {\n this.controlPanel = panelModel;\n }\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 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.initControlScheduler(this.model.controlLogics);\n }\n async onDestroyed() {\n await super.onDestroyed();\n if (this.scheduler) {\n this.scheduler.destroy();\n }\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 const data = (args == null ? void 0 : args.data) || this.getData() || [];\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 * @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// src/controller/common/control/md-control.controller.ts\nimport { isElementSame, RuntimeError as RuntimeError22 } from \"@ibiz-template/core\";\nvar MDControlController = class extends ControlController {\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 await super.onCreated();\n this.setSort();\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 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.params);\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 } finally {\n await this.endLoading();\n }\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 RuntimeError22(\"\\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.startLoading();\n let needRefresh = false;\n try {\n const deName = calcDeCodeNameById(this.model.appDataEntityId);\n await Promise.allSettled(\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(data);\n })\n );\n if ((args == null ? void 0 : args.silent) !== true) {\n ibiz.notification.success({\n desc: \"\\u6570\\u636E[\".concat(data.map((item) => item.srfmajortext).join(\"\\u3001\"), \"]\\u5220\\u9664\\u6210\\u529F!\")\n });\n }\n if (needRefresh) {\n this.refresh();\n }\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 this.state.items.splice(index, 1);\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 }\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 RuntimeError23,\n RuntimeModelError as RuntimeModelError21\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) {\n const menuItem = findRecursiveChild(this.model, id, {\n compareField: \"id\",\n childrenFields: [\"appMenuItems\"]\n });\n if (!menuItem) {\n throw new RuntimeError23(\"\\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 RuntimeModelError21(menuItem, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u5E94\\u7528\\u529F\\u80FD\");\n }\n const tempContext = this.context.clone();\n if (this.routeDepth) {\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 RuntimeError24,\n RuntimeModelError as RuntimeModelError22\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 RuntimeError24(\"\\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 RuntimeModelError22(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 dayjs from \"dayjs\";\n\n// src/controller/control/calendar/calendar.service.ts\nimport { RuntimeError as RuntimeError25 } 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 RuntimeError25(\"\\u672A\\u627E\\u5230\\u65E5\\u5386\\u9879\\u6A21\\u578B\");\n }\n const calendarItem = sysCalendarItems[index];\n if (!calendarItem) {\n throw new RuntimeError25(\"\\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.params);\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 await this.evt.emit(\"onLoadSuccess\", {\n isInitialLoad\n });\n return items;\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 { start, end } = param;\n if (!start || !end) {\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 start: dayjs(firstDayOfMonth).format(\"YYYY-MM-DD HH:mm:ss\"),\n end: dayjs(lastDayOfMonth).format(\"YYYY-MM-DD HH:mm:ss\")\n };\n }\n return { start, end };\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 const timeParam = this.getCurSelectDate(resultParams);\n Object.assign(resultParams, timeParam);\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 RuntimeError27 } from \"@ibiz-template/core\";\n\n// src/controller/control/chart/generator/chart-options-generator.ts\nimport { mergeDeepRight as mergeDeepRight3 } from \"ramda\";\nimport { RuntimeError as RuntimeError26 } from \"@ibiz-template/core\";\n\n// src/controller/control/chart/generator/line-series-generator.ts\nimport { RuntimeModelError as RuntimeModelError24 } from \"@ibiz-template/core\";\n\n// src/controller/control/chart/generator/base-series-generator.ts\nimport { RuntimeModelError as RuntimeModelError23, toNumberOrNil } from \"@ibiz-template/core\";\nimport dayjs2 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 clone11, isNil as isNil12, mergeDeepRight } from \"ramda\";\ndayjs2.extend(minMax);\ndayjs2.extend(isSameOrBefore);\ndayjs2.extend(quarterOfYear);\ndayjs2.extend(weekOfYear);\ndayjs2.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 * 静态的序列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 var _a;\n this.model = model;\n this.chartGenerator = chartGenerator;\n const { chartSeriesEncode, caption, id, userParam } = model;\n if (!model.catalogField) {\n throw new RuntimeModelError23(model, \"\\u7F3A\\u5C11\\u5206\\u7C7B\\u5C5E\\u6027\\u914D\\u7F6E\");\n }\n if (!model.valueField) {\n throw new RuntimeModelError23(model, \"\\u7F3A\\u5C11\\u503C\\u5C5E\\u6027\\u914D\\u7F6E\");\n }\n this.catalogField = model.catalogField.toLowerCase();\n this.valueField = model.valueField.toLowerCase();\n this.groupField = (_a = model.seriesField) == null ? void 0 : _a.toLowerCase();\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 (isNil12(val)) {\n return void 0;\n }\n if (isNil12(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 * @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 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 (isNil12(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 return;\n }\n if (!groupData[group].get(catalog)) {\n groupData[group].set(catalog, { value: 0 });\n }\n groupData[group].get(catalog).value += item[this.valueField];\n groupData[group].get(catalog).deData = item;\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 var _a;\n temData.push([key, catalog.value, (_a = catalog.deData) == null ? void 0 : _a.srfkey]);\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 * 通过事件的params获取主键\n * @author lxm\n * @date 2023-06-09 10:56:25\n * @param {ECElementEvent} params\n * @return {*} {string}\n */\n getSrfkeyByParams(params) {\n return params.value[2];\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(clone11(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 = dayjs2(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(dayjs2(\n singleData[this.catalogField]\n ).format(\"YYYY\"), \"-\").concat(dayjs2(\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(dayjs2(\n singleData[this.catalogField]\n ).format(\"YYYY\"), \"-\").concat(dayjs2(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) => dayjs2(a).diff(dayjs2(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(dayjs2(date));\n });\n });\n const maxDate = dayjs2.max(dates);\n const minDate = dayjs2.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 = dayjs2(\"\".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 RuntimeModelError24(this.model, \"\\u5E8F\\u5217\\u6CA1\\u6709\\u914D\\u7F6EX\\u5750\\u6807\\u8F74\");\n }\n if (this.yAxisIndex === void 0) {\n throw new RuntimeModelError24(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 RuntimeModelError25 } from \"@ibiz-template/core\";\nvar BarSeriesGenerator = class extends BaseSeriesGenerator {\n calcStaticOptions() {\n if (this.xAxisIndex === void 0) {\n throw new RuntimeModelError25(this.model, \"\\u5E8F\\u5217\\u6CA1\\u6709\\u914D\\u7F6EX\\u5750\\u6807\\u8F74\");\n }\n if (this.yAxisIndex === void 0) {\n throw new RuntimeModelError25(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}%({c})\";\n options.label.position = \"outer\";\n return options;\n }\n calcSeriesData(catalogData) {\n return Object.keys(catalogData).map((catalog) => {\n var _a;\n const data = catalogData.get(catalog);\n return { name: catalog, value: [data.value, (_a = data.deData) == null ? void 0 : _a.srfkey] };\n });\n }\n getSrfkeyByParams(params) {\n return params.value[1];\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}%({c})\";\n options.label.position = \"outside\";\n return options;\n }\n calcSeriesData(catalogData) {\n return Object.keys(catalogData).map((catalog) => {\n var _a;\n const data = catalogData.get(catalog);\n return { name: catalog, value: [data.value, (_a = data.deData) == null ? void 0 : _a.srfkey] };\n });\n }\n getSrfkeyByParams(params) {\n return params.value[1];\n }\n};\n\n// src/controller/control/chart/generator/scatter-series-generator.ts\nimport { RuntimeModelError as RuntimeModelError26 } from \"@ibiz-template/core\";\nvar ScatterSeriesGenerator = 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 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 Object.keys(catalogData).forEach((catalog) => {\n radar.updateIndicator(catalog, catalogData.get(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);\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 getSrfkeyByParams(params) {\n return params.value[1];\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 this.initSeriesGenerators();\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 (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 * - 如果已经加载过会清空缓存重新加载\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 series = generator.calcByData(data);\n if (series instanceof Array) {\n seriesOption.push(...series);\n } else {\n seriesOption.push(series);\n }\n });\n this.options.series = seriesOption;\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 getSrfkeyByParams(params) {\n const generator = this.seriesGenerators[params.seriesIndex];\n if (!generator) {\n throw new RuntimeError26(\"\\u627E\\u4E0D\\u5230\".concat(params.seriesIndex, \"\\u5E8F\\u5217\\u7684generator\\uFF01\"));\n }\n return generator.getSrfkeyByParams(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.loadCodeList(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 srfkey = this.generator.getSrfkeyByParams(params);\n const activeData = this.state.items.find((item) => item.srfkey === srfkey);\n console.log(\"\\u5B9E\\u4F53\\u6570\\u636E\", activeData);\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 RuntimeError27(\"chart\\u5BF9\\u8C61\\u6CA1\\u6709\\u6B63\\u786E\\u521D\\u59CB\\u5316\");\n }\n if (!this.options) {\n throw new RuntimeError27(\"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.capLanguageRes.defaultContent || 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.state.caption).concat(dataInfo ? \"-\".concat(dataInfo) : \"\");\n });\n }\n};\n\n// src/controller/control/toolbar/toolbar.controllerr.ts\nimport { recursiveIterate } from \"@ibiz-template/core\";\n\n// src/ui-action/provider/backend-ui-action-provider.ts\nimport { RuntimeModelError as RuntimeModelError36 } from \"@ibiz-template/core\";\nimport { isArray as isArray2 } from \"qx-util\";\n\n// src/ui-action/provider/ui-action-provider-base.ts\nimport { RuntimeModelError as RuntimeModelError35 } from \"@ibiz-template/core\";\n\n// src/ui-logic/index.ts\nimport { RuntimeError as RuntimeError29 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic.ts\nimport { ModelError as ModelError22, RuntimeModelError as RuntimeModelError34 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic-context.ts\nvar UILogicContext = 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} viewParams 视图参数\n * @param {IParams} [opt] 额外参数\n */\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 get context() {\n return this.parameters.context;\n }\n /**\n * 数据\n */\n get data() {\n return this.parameters.data;\n }\n /**\n * 视图参数\n */\n get viewParams() {\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// src/ui-logic/ui-logic-node/de-action-node/de-action-node.ts\nimport { RuntimeModelError as RuntimeModelError29 } from \"@ibiz-template/core\";\n\n// src/ui-logic/ui-logic-link/ui-logic-link.ts\nimport { ModelError as ModelError17 } 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 RuntimeModelError28 } 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 ModelError16, RuntimeModelError as RuntimeModelError27 } from \"@ibiz-template/core\";\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.toLowerCase();\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 dst = ctx.params[this.dstParam];\n switch (this.type) {\n case \"ENTITYFIELD\": {\n if (!this.value) {\n throw new RuntimeModelError27(\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 RuntimeModelError27(\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 ModelError16(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/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 RuntimeModelError28(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) {\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 ModelError17(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u6B65\\u7ED3\\u675F\");\n case 3:\n throw new ModelError17(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u6B65\\u62D2\\u7EDD\");\n case 9:\n throw new ModelError17(this.model, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u8FDE\\u63A5\\u7C7B\\u578B: \\u5F02\\u5E38\\u5904\\u7406\");\n default:\n throw new ModelError17(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 RuntimeModelError29(this.model, \"\\u672A\\u6307\\u5B9A\\u5E94\\u7528\\u5B9E\\u4F53\");\n }\n if (!dstAppDEActionId) {\n throw new RuntimeModelError29(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.viewParams\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 RuntimeModelError30 } 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 RuntimeModelError30(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 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 ModelError18 } 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 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 = 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 ModelError18(\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 ModelError20 } from \"@ibiz-template/core\";\n\n// src/ui-logic/utils/handle-src-val.ts\nimport { ModelError as ModelError19 } from \"@ibiz-template/core\";\nimport { clone as clone12 } from \"ramda\";\nfunction handleSrcVal2(ctx, srcValParams) {\n const { srcDEUILogicParamId, srcFieldName, srcValue } = srcValParams;\n const srcValueType = srcValParams.srcValueType || \"SRCDLPARAM\";\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 srcValue;\n case \"VIEWPARAM\":\n value = ctx.viewParams;\n break;\n case \"APPDATA\":\n value = ctx.context;\n break;\n case \"ENVPARAM\":\n value = clone12(ibiz.env);\n break;\n default:\n throw new ModelError19(srcValParams, \"\\u6682\\u672A\\u652F\\u6301\\u6E90\\u503C\\u7C7B\\u578B\".concat(srcValueType));\n }\n const srcField = srcFieldName == null ? void 0 : srcFieldName.toLowerCase();\n if (value && srcField) {\n value = value[srcField];\n }\n return value;\n}\n\n// src/ui-logic/ui-logic-node/prepare-js-param-node/prepare-js-param-node.ts\nvar PrepareJSParamNode = class extends UILogicNode {\n async exec(ctx) {\n const nodeParams = this.model.deuilogicNodeParams;\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 default:\n throw new ModelError20(\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-17 03:34:02\n * @protected\n * @param {IPSDELogicNodeParam} nodeParam\n * @param {DELogicContext} ctx\n */\n setParamValue(nodeParam, ctx) {\n const { dstFieldName, dstDEUILogicParamId } = nodeParam;\n const dstField = dstFieldName == null ? void 0 : dstFieldName.toLowerCase();\n const srcVal = handleSrcVal2(ctx, nodeParam);\n if (dstField) {\n ctx.params[dstDEUILogicParamId][dstField] = srcVal;\n } else {\n ctx.params[dstDEUILogicParamId] = srcVal;\n }\n }\n};\n\n// src/ui-logic/ui-logic-node/view-ctrl-invoke-node/view-ctrl-invoke-node.ts\nimport { RuntimeError as RuntimeError28, RuntimeModelError as RuntimeModelError31 } 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 RuntimeModelError31(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u754C\\u9762\\u5BF9\\u8C61\");\n }\n if (!invokeParamId) {\n throw new RuntimeModelError31(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u64CD\\u4F5C\\u53C2\\u6570\");\n }\n if (!invokeMethod) {\n throw new RuntimeModelError31(this.model, \"\\u6CA1\\u6709\\u914D\\u7F6E\\u8C03\\u7528\\u65B9\\u6CD5\");\n }\n const invokeParam = ctx.params[invokeParamId];\n if (!invokeParam) {\n throw new RuntimeError28(\"\\u6CA1\\u6709\\u627E\\u5230\\u64CD\\u4F5C\\u53C2\\u6570\".concat(invokeParamId));\n }\n const invokeCtrl = ctx.params[invokeCtrlId];\n if (!invokeCtrl) {\n throw new RuntimeError28(\"\\u6CA1\\u6709\\u627E\\u5230\\u754C\\u9762\\u5BF9\\u8C61\".concat(invokeCtrlId));\n }\n if (!invokeCtrl[invokeMethod] || !isFunction(invokeCtrl[invokeMethod])) {\n throw new RuntimeError28(\"\\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 RuntimeModelError32 } 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 RuntimeModelError32(\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-param/ui-logic-param.ts\nimport { ModelError as ModelError21, RuntimeModelError as RuntimeModelError33 } 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 { context, viewParams, data, parameters } = ctx;\n const app = ibiz.hub.getApp(context.srfappid);\n if (m.default) {\n ctx.params[tag] = data && data.length > 0 ? data[0] : {};\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 throw new RuntimeModelError33(\n this.model,\n \"\\u89C6\\u56FE\\u903B\\u8F91\\u521D\\u59CB\\u5316\\u53C2\\u6570\\uFF0C\\u672A\\u627E\\u5230\".concat(m.codeName, \"\\u6307\\u5B9A\\u90E8\\u4EF6\\u5BF9\\u8C61\")\n );\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 ModelError21(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 throw new ModelError21(m, \"\\u672A\\u652F\\u6301\\u7684\\u903B\\u8F91\\u53C2\\u6570\\u7C7B\\u578B: \\u4E0A\\u6B21\\u8C03\\u7528\\u8FD4\\u56DE\");\n } else if (m.navContextParam) {\n ctx.params[tag] = context;\n } else if (m.navViewParamParam) {\n throw new ModelError21(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 ModelError21(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] = viewParams;\n } else if (m.viewSessionParam) {\n throw new ModelError21(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 ModelError21(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 RuntimeModelError34(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 \"BINDPARAM\":\n logicNode = new BindParamNode2(node);\n break;\n case \"VIEWCTRLINVOKE\":\n logicNode = new ViewCtrlInvokeNode(node);\n break;\n case \"RESETPARAM\":\n case \"COPYPARAM\":\n case \"VIEWCTRLFIREEVENT\":\n case \"APPENDPARAM\":\n case \"SORTPARAM\":\n case \"RENEWPARAM\":\n case \"PFPLUGIN\":\n case \"MSGBOX\":\n case \"DEDATASET\":\n case \"DELOGIC\":\n case \"THROWEXCEPTION\":\n case \"DEBUGPARAM\":\n default:\n throw new ModelError22(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 RuntimeModelError34(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 RuntimeError29(\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 RuntimeError30 } 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 RuntimeError30(\"\\u6CA1\\u627E\\u5230\".concat(actionId, \"\\u7684\\u754C\\u9762\\u884C\\u4E3A\\u6A21\\u578B\"));\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.closeView();\n } else if (result.refresh) {\n switch (result.refreshMode) {\n case 1:\n await params.view.callUIAction(\"Refresh\" /* REFRESH */);\n break;\n case 2:\n await ((_a = params.view.parentView) == null ? void 0 : _a.callUIAction(\"Refresh\" /* REFRESH */));\n break;\n case 3:\n await ((_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 RuntimeModelError35(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)) {\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 nextResult = await this.doNextAction(action, {\n ...args,\n context: result.nextContext || context,\n data: result.data || data,\n params: result.nextParams || params\n });\n if (nextResult) {\n Object.assign(result, nextResult);\n if (nextResult.cancel === true) {\n return this.returnError(result);\n }\n }\n if (action.uilogicAttachMode === \"AFTER\") {\n if (!appDEUILogicId) {\n throw new RuntimeModelError35(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) {\n if (action.enableConfirm && action.confirmMsg) {\n return ibiz.modal.confirm({ title: action.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 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) => ({ [deName]: item.srfkey || item[deName] })) : [{}];\n break;\n case \"SINGLEKEY\":\n {\n const originData = data[0] || {};\n resultData = deName ? [{ [deName]: originData.srfkey || originData[deName] }] : [{}];\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 context,\n params,\n isMultiData ? formatMultiData(navContexts, data) : data[0] || {}\n );\n Object.assign(resultContext, tempContext);\n const navParams = action.navigateParams;\n const resultParams = convertNavData(\n navParams,\n resultContext,\n params,\n isMultiData ? formatMultiData(navParams, data) : data[0] || {}\n );\n return { resultContext, resultData, resultParams };\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 RuntimeModelError36(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 = { ...params, ...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 resultData.forEach((item) => {\n item.srfactionparam = res2.data;\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 });\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 && action.successMsg) {\n ibiz.message.success(action.successMsg);\n }\n Object.assign(actionResult, {\n data: isArray2(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 ]);\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 { StringUtil, RuntimeModelError as RuntimeModelError37, ModelError as ModelError23 } 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 RuntimeModelError37(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 \"OTHER\":\n actionResult = this.doOther(action, args);\n break;\n default:\n throw new ModelError23(\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 RuntimeModelError37(action, \"\\u81EA\\u5B9A\\u4E49\\u7C7B\\u578B\\u7F3A\\u5C11\\u914D\\u7F6E\\u811A\\u672C\\u4EE3\\u7801\");\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 res = await this.ctx.view.call(\"GetData\");\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 }\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.state.buttonsState.update();\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 this.state.buttonsState.setLoading(item.id);\n const isExtra = item.buttonType === \"extra\";\n try {\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 } finally {\n this.state.buttonsState.setLoading(\"\");\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 && _data) {\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(item.id, {\n data: [_data]\n });\n if (dynaVisible !== void 0) {\n itemState.visible = dynaVisible;\n }\n }\n if (!itemState.disabled) {\n const dynaEnable = this.scheduler.triggerItemEnable(item.id, {\n data: [_data]\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\nimport { RuntimeError as RuntimeError31 } from \"@ibiz-template/core\";\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 await Promise.all(\n portletModels.map(async (portlet) => {\n var _a;\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 const values = await Promise.allSettled(\n Object.values(this.portlets).map(async (portlet) => {\n return portlet.dataChangeNotify(data);\n })\n );\n if (values.find((item) => item.status === \"rejected\")) {\n ibiz.log.error(\"dataChangeNotify\\u62A5\\u9519\", values);\n throw new RuntimeError31(\"\\u6570\\u636E\\u53D8\\u66F4\\u540E\\u6709\\u9519\\u8BEF\");\n }\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 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 *\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\", (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(data, appDataEntityId);\n }\n });\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// 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/data-view/data-view.controller.ts\nimport { RuntimeModelError as RuntimeModelError38 } from \"@ibiz-template/core\";\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 });\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 * 初始化State\n *\n * @protected\n * @memberof DataViewControlController\n */\n initState() {\n super.initState();\n this.state.noSort = this.model.noSort === true;\n }\n /**\n * 初始化\n *\n * @protected\n * @return {*} {Promise<void>}\n * @memberof DataViewControlController\n */\n async onCreated() {\n await super.onCreated();\n this.state.size = this.model.pagingSize || 20;\n this.service = new DataViewControlService(this.model);\n await this.service.init(this.context);\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.handleDataGroup();\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 RuntimeModelError38(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 } = 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 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 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 children: [...otherGroup]\n });\n }\n this.state.groups = groups;\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 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// src/controller/control/exp-bar/calendar-exp-bar.controller.ts\nimport { RuntimeModelError as RuntimeModelError40 } from \"@ibiz-template/core\";\n\n// src/controller/control/exp-bar/exp-bar.controller.ts\nimport { RuntimeError as RuntimeError32, RuntimeModelError as RuntimeModelError39 } 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 RuntimeModelError39(\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-05-29 10:05:22\n * @protected\n * @return {*} {Promise<void>}\n * @memberof ExpBarControlController\n */\n async onCreated() {\n await super.onCreated();\n this.childNames.push(this.model.xdataControlName);\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(\"onBeforeLoad\", () => {\n const searchParams = {};\n if (this.state.query) {\n searchParams.query = this.state.query;\n }\n this.xDataController.state.searchParams = searchParams;\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 }\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.defaultNavBySrfnav();\n } else {\n this.defaultNavByFirstItem();\n }\n }\n }\n /**\n * 默认通过路由上的srfnav导航\n * @author lxm\n * @date 2023-08-10 04:04:08\n * @protected\n */\n defaultNavBySrfnav() {\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 if (selectItem) {\n this.xDataController.setSelection([selectItem]);\n }\n this._evt.emit(\"onNavViewChange\", {\n navViewMsg: { key: this.state.srfnav },\n context: this.context\n });\n }\n /**\n * 导航页面首次打开且没有回显时,\n * 默认取第一条数据进行导航\n * 对于不同的导航,第一条可导航的数据可能定义不同,可以重写改方法。\n * @author lxm\n * @date 2023-08-10 03:58:15\n * @protected\n */\n defaultNavByFirstItem() {\n const data = this.xDataController.state.items[0];\n if (!data) {\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 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 RuntimeError32(\"\\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 };\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// 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 RuntimeModelError40(\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 defaultNavBySrfnav() {\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.defaultNavBySrfnav();\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 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 RuntimeError33, RuntimeModelError as RuntimeModelError41 } 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 RuntimeModelError41(\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 RuntimeError33(\"\\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 return {\n key: nodeId,\n viewId: nodeModel.navAppViewId,\n ...result\n };\n }\n defaultNavByFirstItem() {\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 const expandedKeys = [];\n this.state.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 this.defaultExpandedKeys = expandedKeys;\n }\n }\n};\n\n// src/controller/control/form/search-form/search-form.controller.ts\nimport { mergeDefaultInLeft } from \"@ibiz-template/core\";\n\n// src/controller/control/form/form/form.controller.ts\nimport { RuntimeError as RuntimeError34, debounceAndAsyncMerge } 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 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 const values = await Promise.allSettled(\n Object.values(this.details).map(async (detail) => {\n return detail.dataChangeNotify(names);\n })\n );\n if (values.find((item) => item.status === \"rejected\")) {\n ibiz.log.error(\"dataChangeNotify\\u62A5\\u9519\", values);\n throw new RuntimeError34(\"\\u6570\\u636E\\u53D8\\u66F4\\u540E\\u6709\\u9519\\u8BEF\");\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 }\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\" || detail.detailType === \"MDCTRL\") {\n form.formItems.push(detailController);\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 /**\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.map((formItem) => formItem.validate())\n );\n return values.findIndex((value) => !value) === -1;\n }\n};\n\n// src/controller/control/form/search-form/search-form.service.ts\nimport { recursiveIterate as recursiveIterate2 } 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 let res = { ok: true, status: 200, data: {} };\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 recursiveIterate2(\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\", \"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// src/controller/control/form/search-form/search-form.controller.ts\nvar SearchFormController = class extends FormController {\n async onCreated() {\n await super.onCreated();\n this.service = new SearchFormService(this.model);\n await this.service.init(this.context);\n await this.load();\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 const res = await this.service.getDraft(this.context, queryParams);\n this.state.data = res.data;\n mergeDefaultInLeft(this.data, params);\n this.state.isLoaded = true;\n this.formStateNotify(\"DRAFT\" /* DRAFT */);\n return this.data;\n }\n /**\n * 获取搜索表单的视图过滤参数\n *\n * @author lxm\n * @date 2022-09-22 17:09:21\n * @returns {*} {IParams}\n */\n getParams() {\n return { ...this.data.getOrigin() };\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// 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\";\nvar FormDetailController = class {\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 * @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 * 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 this.model = model;\n this.form = form;\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.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.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([], state);\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 {FormNotifyState} [state] 表单通知状态\n * @returns {*} {void}\n */\n calcDynamicLogic(names, state) {\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 (state || isOverlap(relatedNames, names)) {\n try {\n const ok = verifyFormGroupLogic(this.form.data, logic);\n switch (logic.logicCat) {\n case \"ITEMBLANK\":\n this.state.required = !ok;\n break;\n case \"ITEMENABLE\":\n this.state.disabled = !ok;\n break;\n case \"PANELVISIBLE\":\n this.state.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// 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-01 22:09:48\n * @readonly\n */\n get data() {\n return this.form.data;\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 }\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 createUUID3, notNilEmpty as notNilEmpty6 } 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 this.state.showMask = this.isNewData;\n this.calcViewParams();\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 (notNilEmpty6(navContexts)) {\n newContext = Object.assign(\n newContext,\n convertNavData(\n navContexts,\n this.form.context,\n this.form.params,\n this.form.data\n )\n );\n }\n const newParams = convertNavData(\n this.model.navigateParams,\n this.form.params,\n this.form.context,\n this.form.data\n );\n if (!this.state.viewComponentKey) {\n this.state.viewComponentKey = createUUID3();\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.callUIAction(\"Refresh\" /* REFRESH */);\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.calcDynamicLogic([], state);\n if (this.state.actionGroupState) {\n this.state.actionGroupState.update(this.form.data.getOrigin());\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 { createUUID as createUUID4, isNilOrEmpty as isNilOrEmpty6 } from \"qx-util\";\nimport { ModelError as ModelError24, RuntimeError as RuntimeError35 } from \"@ibiz-template/core\";\nimport dayjs3 from \"dayjs\";\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 2022-09-01 22:09:49\n * @type {IData}\n */\n this.rules = [];\n this.context = form.context;\n this.params = form.params;\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.fieldName || 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.form.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 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 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 const formItemsVRs = filterValueRules(\n this.form.model.deformItemVRs || [],\n this.name\n );\n if (!formItemsVRs) {\n return;\n }\n this.rules = generateRules(formItemsVRs, this.name, this.valueItemName);\n this.validator = new Schema({ [this.name]: this.rules });\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 (!enableCond) {\n this.state.enableCondDisabled = true;\n } else 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, state) {\n if (!this.model.hidden) {\n super.calcDynamicLogic(names, state);\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 && isNilOrEmpty6(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 }\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 var _a;\n const { createDVT, createDV, updateDVT, updateDV } = this.model;\n const valueType = isCreate ? createDVT : updateDVT;\n const defaultValue = isCreate ? createDV : updateDV;\n if (valueType === \"RESET\") {\n data[this.name] = null;\n return;\n }\n if (this.value) {\n return;\n }\n if (isNilOrEmpty6(valueType) && isNilOrEmpty6(defaultValue)) {\n return;\n }\n if (!valueType && defaultValue) {\n data[this.name] = defaultValue;\n return;\n }\n switch (valueType) {\n case \"APPDATA\":\n if (Object.prototype.hasOwnProperty.call(this.params, defaultValue)) {\n data[this.name] = this.params[defaultValue];\n }\n if (Object.prototype.hasOwnProperty.call(this.context, defaultValue)) {\n data[this.name] = this.context[defaultValue];\n }\n break;\n case \"OPERATORNAME\":\n data[this.name] = this.context.srfusername;\n break;\n case \"OPERATOR\":\n data[this.name] = this.context.srfuserid;\n break;\n case \"CURTIME\":\n data[this.name] = dayjs3().format(this.model.valueFormat);\n break;\n case \"PARAM\":\n data[this.name] = this.data[defaultValue];\n break;\n case \"SESSION\":\n case \"APPLICATION\":\n if (!((_a = ibiz.appData) == null ? void 0 : _a.context)) {\n throw new RuntimeError35(\"appdata.context\\u4E0D\\u5B58\\u5728\");\n }\n data[this.name] = ibiz.appData.context[defaultValue];\n break;\n case \"CONTEXT\":\n data[this.name] = this.params[defaultValue];\n break;\n case \"UNIQUEID\":\n data[this.name] = createUUID4();\n break;\n default:\n throw new ModelError24(this.model, \"\\u9ED8\\u8BA4\\u503C\\u7C7B\\u578B[\".concat(valueType, \"]\\u672A\\u652F\\u6301\"));\n }\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.ts\nvar FormMDCtrlContentTypeController = class {\n /**\n * Creates an instance of FormMDCtrlControlController.\n * @author zk\n * @date 2023-07-28 09:07:22\n * @param {FormMDCtrlController} c\n * @memberof FormMDCtrlControlController\n */\n constructor(parent) {\n this.parent = parent;\n this.model = this.parent.model;\n }\n get data() {\n return this.parent.state.contentCtrlData;\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 }\n /**\n * 内部表单数据发生改变,同步contentCtrlData并设置外部表单值\n *\n * @author zk\n * @date 2023-07-30 05:07:18\n * @param {IData[]} data\n * @memberof FormMDCtrlController\n */\n onDataChange(data) {\n this.parent.state.contentCtrlData = data;\n this.parent.setFormDataValue();\n }\n /**\n * 内部表单项数据发生改变,同步contentCtrlData并设置外部表单值\n *\n * @author zk\n * @date 2023-07-30 05:07:11\n * @param {IData} data\n * @param {number} index\n * @memberof FormMDCtrlController\n */\n onDataItemChange(data, index) {\n this.parent.state.contentCtrlData[index] = data;\n this.parent.setFormDataValue();\n }\n /**\n * 数据删除\n *\n * @author zk\n * @date 2023-07-30 05:07:32\n * @param {number} index\n * @memberof FormMDCtrlController\n */\n onDataRemove(index) {\n if (index < 0) {\n return;\n }\n this.parent.state.contentCtrlData.splice(index, 1);\n this.parent.setFormDataValue();\n }\n /**\n * 数据插入\n *\n * @author zk\n * @date 2023-07-31 12:07:27\n * @param {IData} [data]\n * @memberof FormMDCtrlContentTypeController\n */\n onDataInsert(data) {\n this.parent.state.contentCtrlData.push(data || {});\n this.parent.setFormDataValue();\n }\n /**\n * 初始化数据\n *\n * @author zk\n * @date 2023-07-30 08:07:32\n * @memberof FormMDCtrlContentTypeController\n */\n async initData() {\n const name = this.model.appDEFieldId || this.model.fieldName || this.model.id;\n if (name) {\n if (this.model.contentType === \"REPEATER\" && this.model.detailStyle === \"STYLE3\") {\n this.parent.state.contentCtrlData = this.parent.data[name] || {};\n } else {\n this.parent.state.contentCtrlData = this.parent.data[name] || [];\n }\n }\n }\n /**\n * 表单项值规则校验\n *\n * @author zzq\n * @date 2023-08-23 16:33:32\n * @memberof FormMDCtrlContentTypeController\n */\n async validate() {\n return true;\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-control/form-mdctrl-control.controller.ts\nimport { RuntimeError as RuntimeError36 } from \"@ibiz-template/core\";\nvar FormMDCtrlControlController = class extends FormMDCtrlContentTypeController {\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 const { model } = this.parent;\n const { contentControl } = model;\n if (!contentControl) {\n throw new RuntimeError36(\"\\u8868\\u5355\\u591A\\u6570\\u636E\\u90E8\\u4EF6\\u672A\\u914D\\u7F6E\\u5D4C\\u5165\\u90E8\\u4EF6\");\n }\n this.controlModel = contentControl;\n const controlProvider = await getControlProvider(this.controlModel);\n if (controlProvider) {\n this.provider = controlProvider;\n }\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-data-view/form-mdctrl-data-view.controller.ts\nvar FormMDCtrlDataViewController = class extends FormMDCtrlControlController {\n constructor() {\n super(...arguments);\n /**\n * 表格选中数据\n *\n * @author zk\n * @date 2023-07-30 07:07:45\n * @type {IData[]}\n * @memberof FormMDCtrlDataViewController\n */\n this.selectData = [];\n /**\n * uiState\n *\n * @author zk\n * @date 2023-07-31 12:07:57\n * @type {{ isSelect: boolean }}\n * @memberof FormMDCtrlDataViewController\n */\n this.state = { isSelect: false };\n }\n /**\n * 表格挂载后把控制器抛出来\n *\n * @author zk\n * @date 2023-07-30 07:07:25\n * @param {EventBase} event\n * @memberof FormMDCtrlDataViewController\n */\n onDataViewMounted(event) {\n this.dataViewController = event.ctrl;\n }\n /**\n * 表格选中事件\n *\n * @author zk\n * @date 2023-07-30 07:07:06\n * @param {EventBase} event\n * @memberof FormMDCtrlDataViewController\n */\n onSelectionChange(event) {\n this.state.isSelect = event.data.length > 0;\n }\n /**\n * 数据删除\n *\n * @author zk\n * @date 2023-07-30 05:07:32\n * @param {number} index\n * @memberof FormMDCtrlController\n */\n onDataRemove() {\n this.dataViewController.remove();\n this.parent.state.contentCtrlData = this.dataViewController.state.items;\n this.parent.setFormDataValue();\n }\n /**\n * 内部表单数据发生改变,同步contentCtrlData并设置外部表单值\n *\n * @author zk\n * @date 2023-07-30 05:07:18\n * @param {IData[]} data\n * @memberof FormMDCtrlController\n */\n onDataChange(data) {\n this.parent.state.contentCtrlData = data;\n this.parent.setFormDataValue();\n }\n /**\n * 初始化数据\n *\n * @author zk\n * @date 2023-07-30 08:07:32\n * @memberof FormMDCtrlContentTypeController\n */\n async initData() {\n this.dataViewController.load();\n }\n /**\n * 数据插入\n *\n * @author zk\n * @date 2023-07-31 12:07:27\n * @param {IData} [data]\n * @memberof FormMDCtrlContentTypeController\n */\n async onDataInsert() {\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.controller.ts\nimport { mergeInLeft as mergeInLeft2 } from \"@ibiz-template/core\";\nimport { isArray as isArray3 } from \"lodash-es\";\n\n// src/controller/control/form/edit-form/edit-form.controller.ts\nimport {\n awaitTimeout,\n mergeInLeft,\n RuntimeError as RuntimeError37,\n mergeDefaultInLeft as mergeDefaultInLeft2\n} from \"@ibiz-template/core\";\nimport { debounce } from \"lodash-es\";\n\n// src/controller/control/form/edit-form/edit-form.service.ts\nimport {\n recursiveIterate as recursiveIterate3,\n RuntimeModelError as RuntimeModelError42\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 let res = await this.exec(\n ((_a = this.model.createControlAction) == null ? void 0 : _a.appDEMethodId) || \"create\",\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-07 19:09:11\n * @param {IParams} context 上下文\n * @param {IData} data 数据\n * @returns {*}\n */\n async update(context, data) {\n var _a;\n let res = await this.exec(\n ((_a = this.model.updateControlAction) == null ? void 0 : _a.appDEMethodId) || \"update\",\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-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 RuntimeModelError42(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 recursiveIterate3(\n this.model,\n (item) => {\n if (item.detailType === \"FORMITEM\") {\n const formItem = item;\n const uiKey = formItem.fieldName || 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 });\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 if (item.detailType === \"MDCTRL\") {\n const formItem = item;\n const uiKey = formItem.fieldName || 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 });\n } else {\n mapField = new UIMapField(uiKey, uiKey, {\n isOriginField: true\n });\n }\n this.dataUIMap.set(uiKey, mapField);\n }\n },\n {\n childrenFields: [\"deformPages\", \"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// src/controller/control/form/edit-form/edit-form.controller.ts\nvar EditFormController = class extends FormController {\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 = debounce(this.autoSave.bind(this), 500, {\n trailing: true\n });\n }\n /**\n * 部件加载数据行为\n *\n * @author lxm\n * @date 2022-08-19 14:08:50\n */\n async load() {\n const isLoadDraft = !hasDeCodeName(\n this.context,\n this.model.appDataEntityId\n );\n const queryParams = { ...this.params };\n let params = {};\n if (isLoadDraft) {\n params = await this.getDraftParams();\n Object.assign(queryParams, params);\n }\n await this.startLoading();\n let res;\n try {\n res = isLoadDraft ? await this.service.getDraft(this.context, queryParams) : await this.service.get(this.context, queryParams);\n } finally {\n await this.endLoading();\n }\n if (isLoadDraft) {\n mergeInLeft(this.data, res.data);\n } else {\n this.state.data = res.data;\n }\n this.state.modified = false;\n this.state.data = res.data;\n mergeDefaultInLeft2(this.data, params);\n this.formStateNotify(\n isLoadDraft ? \"DRAFT\" /* DRAFT */ : \"LOAD\" /* LOAD */\n );\n await this.evt.emit(\n isLoadDraft ? \"onLoadDraftSuccess\" : \"onLoadSuccess\",\n void 0\n );\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() {\n if (this.state.processing) {\n const data = await awaitTimeout(500, this.save.bind(this));\n return data;\n }\n const isValid = await this.validate();\n if (!isValid) {\n throw new RuntimeError37(\"\\u8BF7\\u68C0\\u67E5\\u8868\\u5355\\u586B\\u5199\\uFF01\");\n }\n await this.startLoading();\n let res;\n try {\n res = this.data.srfuf === 0 /* CREATE */ ? await this.service.create(this.context, this.data) : await this.service.update(this.context, this.data);\n } finally {\n await this.endLoading();\n }\n if (res.data) {\n mergeInLeft(this.data, res.data);\n }\n this.state.modified = false;\n await this.evt.emit(\"onSaveSuccess\", void 0);\n this.formStateNotify(\"SAVE\" /* SAVE */);\n ibiz.message.success(\"\".concat(this.data.srfmajortext || \"\", \"\\u4FDD\\u5B58\\u6210\\u529F\"));\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() {\n let res;\n let ok = false;\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(this.context, this.params);\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 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 mergeInLeft(this.data, res.data);\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 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 RuntimeError37(\"\\u6CA1\\u627E\\u5230\".concat(formItemUpdateId, \"\\u8868\\u5355\\u9879\\u66F4\\u65B0\"));\n }\n const { appDEMethodId, defiupdateDetails } = formItemUpdate;\n const updateItems = defiupdateDetails.map((item) => item.id);\n const params = { ...this.params, ...this.data.getOrigin() };\n const res = await this.service.updateFormItem(\n appDEMethodId,\n this.context,\n params\n );\n const result = res.data;\n if (result && (updateItems == null ? void 0 : updateItems.length)) {\n await Promise.all(\n updateItems.map(\n (itemName) => this.setDataValue(itemName, result[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(extraParams = {}) {\n const isValid = await this.validate();\n if (!isValid) {\n throw new RuntimeError37(\"\\u8BF7\\u68C0\\u67E5\\u8868\\u5355\\u586B\\u5199\\uFF01\");\n }\n await this.startLoading();\n try {\n await this.service.wfStart(\n this.context,\n {\n ...this.params,\n ...extraParams\n },\n this.data\n );\n } finally {\n await this.endLoading();\n }\n ibiz.message.success(\"\\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(extraParams = {}) {\n const isValid = await this.validate();\n if (!isValid) {\n throw new RuntimeError37(\"\\u8BF7\\u68C0\\u67E5\\u8868\\u5355\\u586B\\u5199\\uFF01\");\n }\n await this.startLoading();\n try {\n await this.service.wfSubmit(\n this.context,\n {\n ...this.params,\n ...extraParams\n },\n this.data\n );\n } finally {\n await this.endLoading();\n }\n ibiz.message.success(\"\\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();\n } catch (error) {\n ibiz.log.error(error);\n }\n }\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.controller.ts\nvar FormMDCtrlFormController = class extends FormMDCtrlControlController {\n constructor() {\n super(...arguments);\n /**\n * 表格控制器\n *\n * @author zk\n * @date 2023-07-30 07:07:18\n * @type {IGridController}\n * @memberof FormMDCtrlGridController\n */\n this.controlControllerArray = [];\n /**\n * uiState\n *\n * @author zk\n * @date 2023-08-01 03:08:16\n * @type {{ data: IData[] }}\n * @memberof FormMDCtrlFormController\n */\n this.state = { data: [] };\n }\n /**\n * 表格挂载后把控制器抛出来\n *\n * @author zk\n * @date 2023-07-30 07:07:25\n * @param {EventBase} event\n * @memberof FormMDCtrlGridController\n */\n onControlMounted(event, index) {\n const formController = event.ctrl;\n this.controlControllerArray[index] = formController;\n formController.load();\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 this.service = new EditFormService(this.model.contentControl);\n await this.service.init(this.parent.form.context);\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 fetch(context, params = {}) {\n const fetchAction = \"fetchdefault\";\n let res = await this.service.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:13\n * @param {IHttpResponse} res\n * @returns {*} {IHttpResponse}\n */\n handleResponse(response) {\n const res = response;\n if (res.ok) {\n if (isArray3(res.data)) {\n res.data = res.data.map(\n (item) => this.service.toUIData(item)\n );\n } else {\n res.data = this.service.toUIData(res.data);\n }\n }\n return res;\n }\n /**\n * 初始化数据\n *\n * @author zk\n * @date 2023-07-30 08:07:32\n * @memberof FormMDCtrlFormController\n */\n async initData() {\n const res = await this.fetch(\n this.parent.form.context,\n this.parent.form.params\n );\n this.state.data = res.data;\n }\n /**\n * 数据删除\n *\n * @author zk\n * @date 2023-07-30 05:07:32\n * @param {number} index\n * @memberof FormMDCtrlController\n */\n onDataRemove(index) {\n const c = this.controlControllerArray[index];\n if (!c) {\n return;\n }\n c.remove();\n }\n /**\n * 处理表单数据变化\n *\n * @author zk\n * @date 2023-07-30 05:07:03\n * @param {IData[]} data\n * @param {number} index\n * @memberof FormMDCtrlFormController\n */\n onFormChange(data, index) {\n const c = this.controlControllerArray[index];\n if (!c) {\n return;\n }\n c.save();\n if (this.state.data[index]) {\n mergeInLeft2(this.state.data[index], data[0]);\n }\n this.parent.state.contentCtrlData = this.state.data;\n this.parent.setFormDataValue();\n }\n /**\n * 表单删除成功\n *\n * @author zk\n * @date 2023-08-01 03:08:47\n * @param {number} index\n * @memberof FormMDCtrlFormController\n */\n onFormRemoveSuccess(index) {\n this.state.data.splice(index, 1);\n this.controlControllerArray.splice(index, 1);\n this.parent.state.contentCtrlData = this.state.data;\n this.parent.setFormDataValue();\n }\n /**\n * 数据插入\n *\n * @author zk\n * @date 2023-07-31 12:07:27\n * @memberof FormMDCtrlFormController\n */\n async onDataInsert() {\n const res = await this.service.getDraft(\n this.parent.form.context,\n this.parent.form.params\n );\n if (res.data) {\n const result = await this.service.create(\n this.parent.form.context,\n res.data\n );\n this.state.data.push(result.data);\n this.parent.state.contentCtrlData = this.state.data;\n this.parent.setFormDataValue();\n }\n }\n /**\n * 表单项值规则校验\n *\n * @author zzq\n * @date 2023-08-23 16:33:32\n * @memberof FormMDCtrlFormController\n */\n async validate() {\n const values = await Promise.all(\n this.controlControllerArray.map((form) => form.validate())\n );\n return values.findIndex((value) => !value) === -1;\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-grid/form-mdctrl-grid.controller.ts\nimport { RuntimeError as RuntimeError38, mergeInLeft as mergeInLeft3 } from \"@ibiz-template/core\";\nvar FormMDCtrlGridController = class extends FormMDCtrlControlController {\n constructor() {\n super(...arguments);\n /**\n * 表格选中数据\n *\n * @author zk\n * @date 2023-07-30 07:07:45\n * @type {IData[]}\n * @memberof FormMDCtrlGridController\n */\n this.selectData = [];\n /**\n * uiState\n *\n * @author zk\n * @date 2023-07-31 12:07:57\n * @type {{ isSelect: boolean }}\n * @memberof FormMDCtrlGridController\n */\n this.state = { isSelect: false };\n }\n /**\n * 表格挂载后把控制器抛出来\n *\n * @author zk\n * @date 2023-07-30 07:07:25\n * @param {EventBase} event\n * @memberof FormMDCtrlGridController\n */\n onGridMounted(event) {\n this.gridController = event.ctrl;\n }\n /**\n * 表格选中事件\n *\n * @author zk\n * @date 2023-07-30 07:07:06\n * @param {EventBase} event\n * @memberof FormMDCtrlGridController\n */\n onSelectionChange(event) {\n this.state.isSelect = event.data.length > 0;\n }\n /**\n * 数据删除\n *\n * @author zk\n * @date 2023-07-30 05:07:32\n * @param {number} index\n * @memberof FormMDCtrlController\n */\n onDataRemove() {\n this.gridController.remove();\n this.parent.state.contentCtrlData = this.gridController.state.items;\n this.parent.setFormDataValue();\n }\n /**\n * 内部表单数据发生改变,同步contentCtrlData并设置外部表单值\n *\n * @author zk\n * @date 2023-07-30 05:07:18\n * @param {IData[]} data\n * @memberof FormMDCtrlController\n */\n onDataChange(data) {\n this.parent.state.contentCtrlData = data;\n this.parent.setFormDataValue();\n }\n /**\n * 初始化数据\n *\n * @author zk\n * @date 2023-07-30 08:07:32\n * @memberof FormMDCtrlContentTypeController\n */\n async initData() {\n this.gridController.load();\n }\n /**\n * 数据插入\n *\n * @author zk\n * @date 2023-07-31 12:07:27\n * @param {IData} [data]\n * @memberof FormMDCtrlContentTypeController\n */\n async onDataInsert() {\n await this.gridController.newRow();\n this.parent.state.contentCtrlData = this.gridController.state.items;\n this.parent.setFormDataValue();\n }\n /**\n * 初始化, 表格默认支持行编辑、行编辑\n *\n * @author zzq\n * @date 2023-08-23 15:41:27\n * @param {IData} [data]\n * @memberof FormMDCtrlContentTypeController\n */\n async onInit() {\n const { model } = this.parent;\n const { contentControl } = model;\n if (!contentControl) {\n throw new RuntimeError38(\"\\u8868\\u5355\\u591A\\u6570\\u636E\\u90E8\\u4EF6\\u672A\\u914D\\u7F6E\\u5D4C\\u5165\\u90E8\\u4EF6\");\n }\n mergeInLeft3(contentControl, { enableRowEdit: true, enableRowNew: true });\n this.controlModel = contentControl;\n const controlProvider = await getControlProvider(this.controlModel);\n if (controlProvider) {\n this.provider = controlProvider;\n }\n }\n /**\n * 表单项值规则校验\n *\n * @author zzq\n * @date 2023-08-23 16:33:32\n * @memberof FormMDCtrlFormController\n */\n async validate() {\n const { rows } = this.gridController.state;\n const values = await Promise.all(\n rows.map((row) => this.gridController.validate(row))\n );\n return values.findIndex((value) => !value) === -1;\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-list/form-mdctrl-list.controller.ts\nvar FormMDCtrlListController = class extends FormMDCtrlControlController {\n constructor() {\n super(...arguments);\n /**\n * 表格选中数据\n *\n * @author zk\n * @date 2023-07-30 07:07:45\n * @type {IData[]}\n * @memberof FormMDCtrlListController\n */\n this.selectData = [];\n /**\n * uiState\n *\n * @author zk\n * @date 2023-07-31 12:07:57\n * @type {{ isSelect: boolean }}\n * @memberof FormMDCtrlListController\n */\n this.state = { isSelect: false };\n }\n /**\n * 表格挂载后把控制器抛出来\n *\n * @author zk\n * @date 2023-07-30 07:07:25\n * @param {EventBase} event\n * @memberof FormMDCtrlListController\n */\n onListMounted(event) {\n this.listController = event.ctrl;\n }\n /**\n * 表格选中事件\n *\n * @author zk\n * @date 2023-07-30 07:07:06\n * @param {EventBase} event\n * @memberof FormMDCtrlListController\n */\n onSelectionChange(event) {\n this.state.isSelect = event.data.length > 0;\n }\n /**\n * 数据删除\n *\n * @author zk\n * @date 2023-07-30 05:07:32\n * @param {number} index\n * @memberof FormMDCtrlController\n */\n onDataRemove() {\n this.listController.remove();\n this.parent.state.contentCtrlData = this.listController.state.items;\n this.parent.setFormDataValue();\n }\n /**\n * 内部表单数据发生改变,同步contentCtrlData并设置外部表单值\n *\n * @author zk\n * @date 2023-07-30 05:07:18\n * @param {IData[]} data\n * @memberof FormMDCtrlController\n */\n onDataChange(data) {\n this.parent.state.contentCtrlData = data;\n this.parent.setFormDataValue();\n }\n /**\n * 初始化数据\n *\n * @author zk\n * @date 2023-07-30 08:07:32\n * @memberof FormMDCtrlContentTypeController\n */\n async initData() {\n this.listController.load();\n }\n /**\n * 数据插入\n *\n * @author zk\n * @date 2023-07-31 12:07:27\n * @param {IData} [data]\n * @memberof FormMDCtrlContentTypeController\n */\n async onDataInsert() {\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.ts\nvar FormMDCtrlItemController = class extends EditFormController {\n constructor(model, context, params, ctx, data) {\n super(model, context, params, ctx);\n this.state.data = data;\n this.state.isSimple = true;\n }\n async onInit() {\n await this.initDetailControllers(\n this.model.deformDetails\n );\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.ts\nvar FormMDCtrlRepeaterFormOneController = class extends FormMDCtrlContentTypeController {\n constructor() {\n super(...arguments);\n /**\n * 表单项控制器的集合(二维数组)\n *\n * @author zk\n * @date 2023-07-25 05:07:56\n * @type {Array<Array<FormItemController>>}\n * @memberof FormMDCtrlController\n */\n this.formDetail = [];\n this.state = { isInit: false };\n }\n /**\n * 数据\n *\n * @author zk\n * @date 2023-07-31 09:07:25\n * @readonly\n * @type {IData[]}\n * @memberof FormMDCtrlRepeaterFormOneController\n */\n get data() {\n return this.parent.state.contentCtrlData;\n }\n /**\n * 初始化表单成员控制器\n *\n * @author lxm\n * @date 2022-08-24 21:08:48\n * @protected\n */\n async initFormMDCtrlItemControllers(details, form = this.parent.form, data = {}, parent = void 0) {\n const formData = data;\n const formController = new FormMDCtrlItemController(\n this.model,\n this.parent.form.context,\n this.parent.form.params,\n this.formCtx,\n formData\n );\n await formController.onInit();\n formController.evt.on(\"onFormDataChange\", (arg) => {\n if (arg.data.length > 0) {\n this.onDataItemChange(arg.data[0]);\n }\n });\n formController.state.isLoaded = true;\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 formController,\n parent\n );\n if (!this.formDetail) {\n this.formDetail = [];\n }\n this.formDetail.push({\n name: detail.id,\n detailType: detail.detailType,\n c: detailController\n });\n const childDetails = findChildFormDetails(detail);\n if (childDetails.length) {\n await this.initFormMDCtrlItemControllers(\n childDetails,\n formController,\n data,\n detailController\n );\n }\n })\n );\n return data;\n }\n /**\n * 初始化formCtx\n *\n * @author zk\n * @date 2023-07-29 05:07:21\n * @memberof FormMDCtrlRepeaterFormController\n */\n useFormMdCtrlCtx() {\n }\n async initData() {\n super.initData();\n await this.initFormMDCtrlItemControllers(\n this.model.deformDetails,\n this.parent.form,\n this.data\n );\n this.state.isInit = true;\n }\n /**\n * 内部表单项数据发生改变,同步contentCtrlData并设置外部表单值\n *\n * @author zk\n * @date 2023-07-30 05:07:11\n * @param {IData} data\n * @param {number} index\n * @memberof FormMDCtrlController\n */\n onDataItemChange(data) {\n this.parent.state.contentCtrlData = data;\n this.parent.setFormDataValue();\n }\n /**\n * 表单值校验\n *\n * @author zzq\n * @date 2023-08-23 19:07:11\n * @memberof FormMDCtrlController\n */\n async validate() {\n const values = [];\n this.formDetail.forEach((detail) => {\n if (detail.detailType === \"FORMITEM\") {\n const c = detail.c;\n values.push(c.validate());\n }\n });\n const results = await Promise.all(values);\n return results.findIndex((value) => !value) === -1;\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.ts\nvar FormMDCtrlRepeaterFormController = class extends FormMDCtrlContentTypeController {\n constructor() {\n super(...arguments);\n /**\n * 表单项控制器的集合(二维数组)\n *\n * @author zk\n * @date 2023-07-25 05:07:56\n * @type {Array<Array<FormItemController>>}\n * @memberof FormMDCtrlController\n */\n this.formDetails = [];\n /**\n * uiState\n *\n * @author zk\n * @date 2023-07-31 12:07:07\n * @type {{ isInit: boolean }}\n * @memberof FormMDCtrlRepeaterFormController\n */\n this.state = { isInit: false };\n }\n /**\n * 初始化表单成员控制器\n *\n * @author lxm\n * @date 2022-08-24 21:08:48\n * @protected\n */\n async initFormMDCtrlItemControllers(details, index, form = this.parent.form, data = {}, parent = void 0) {\n const formData = data;\n const formController = new FormMDCtrlItemController(\n this.model,\n this.parent.form.context,\n this.parent.form.params,\n this.formCtx,\n formData\n );\n await formController.onInit();\n formController.evt.on(\"onFormDataChange\", (arg) => {\n if (arg.data.length > 0) {\n this.onDataItemChange(arg.data[0], index);\n }\n });\n formController.state.isLoaded = true;\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 formController,\n parent\n );\n if (!this.formDetails[index]) {\n this.formDetails[index] = [];\n }\n this.formDetails[index].push({\n name: detail.id,\n detailType: detail.detailType,\n c: detailController\n });\n const childDetails = findChildFormDetails(detail);\n if (childDetails.length) {\n await this.initFormMDCtrlItemControllers(\n childDetails,\n index,\n formController,\n data,\n detailController\n );\n }\n })\n );\n return data;\n }\n /**\n * 数据插入\n *\n * @author zk\n * @date 2023-07-31 12:07:21\n * @memberof FormMDCtrlRepeaterFormController\n */\n async onDataInsert() {\n const data = await this.initFormMDCtrlItemControllers(\n this.model.deformDetails,\n this.data.length\n );\n super.onDataInsert(data);\n }\n /**\n * 数据删除\n *\n * @author zk\n * @date 2023-07-30 05:07:32\n * @param {number} index\n * @memberof FormMDCtrlController\n */\n onDataRemove(index) {\n if (index < 0) {\n return;\n }\n super.onDataRemove(index);\n this.formDetails.splice(index, 1);\n }\n /**\n * 初始化formCtx\n *\n * @author zk\n * @date 2023-07-29 05:07:21\n * @memberof FormMDCtrlRepeaterFormController\n */\n useFormMdCtrlCtx() {\n }\n /**\n * 初始化数据\n *\n * @author zk\n * @date 2023-07-31 12:07:37\n * @memberof FormMDCtrlRepeaterFormController\n */\n async initData() {\n super.initData();\n await Promise.all(\n this.data.map(async (item, index) => {\n await this.initFormMDCtrlItemControllers(\n this.model.deformDetails,\n index,\n this.parent.form,\n item\n );\n })\n );\n this.state.isInit = true;\n }\n /**\n * 表单项值规则校验\n *\n * @author zzq\n * @date 2023-08-23 17:21:37\n * @memberof FormMDCtrlRepeaterFormController\n */\n async validate() {\n const values = [];\n this.formDetails.forEach((details) => {\n details.forEach((detail) => {\n if (detail.detailType === \"FORMITEM\") {\n const c = detail.c;\n values.push(c.validate());\n }\n });\n });\n const results = await Promise.all(values);\n return results.findIndex((value) => !value) === -1;\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-grid/form-mdctrl-repeater-grid.controller.ts\nvar FormMDCtrlRepeaterGridController = class extends FormMDCtrlContentTypeController {\n constructor() {\n super(...arguments);\n /**\n * 表格列对象\n *\n * @author zk\n * @date 2023-07-31 12:07:58\n * @type {{ codeName: string; caption: string }[]}\n * @memberof FormMDCtrlRepeaterGridController\n */\n this.columns = [];\n /**\n * 编辑器对象\n *\n * @author zk\n * @date 2023-07-31 12:07:48\n * @type {{\n * [key: string]: { provider: IEditorProvider; controller: IEditorController };\n * }}\n * @memberof FormMDCtrlRepeaterGridController\n */\n this.editorMap = {};\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 this.initColumns(this.model.deformDetails || []);\n }\n /**\n * 初始化表格列\n *\n * @author zk\n * @date 2023-07-31 12:07:06\n * @param {IDEFormDetail[]} details\n * @memberof FormMDCtrlRepeaterGridController\n */\n initColumns(details) {\n details.forEach(async (detail) => {\n if (detail.detailType === \"FORMITEM\") {\n const { editor } = detail;\n const editorProvider = await getEditorProvider(editor);\n if (editorProvider) {\n const c = await editorProvider.createController(editor, {\n unitName: editor.unitName,\n valueFormat: editor.valueFormat,\n context: this.parent.form.context,\n params: this.parent.form.params\n });\n this.editorMap[detail.codeName] = {\n provider: editorProvider,\n controller: c\n };\n }\n this.columns.push({\n codeName: detail.codeName,\n caption: detail.caption\n });\n }\n const childDetails = findChildFormDetails(detail);\n if (childDetails.length) {\n this.initColumns(childDetails);\n }\n });\n }\n /**\n * 行数据改变\n *\n * @author zk\n * @date 2023-07-30 10:07:27\n * @param {unknown} val\n * @param {string} name\n * @param {number} index\n * @return {*}\n * @memberof FormMDCtrlRepeaterGridController\n */\n rowDataChange(val, name, index) {\n const item = this.data[index];\n if (Object.prototype.hasOwnProperty.call(item, name) && !isValueChange(item[name], val)) {\n return;\n }\n item[name] = val;\n this.onDataItemChange(item, index);\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.ts\nvar FormMDCtrlState = class extends FormDetailState {\n constructor() {\n super(...arguments);\n /**\n * 多数据内容数据\n *\n * @type {Array<IData>}\n */\n this.contentCtrlData = [];\n }\n};\n\n// src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts\nvar FormMDCtrlController = class extends FormDetailController {\n /**\n * Creates an instance of FormMDCtrlController.\n *\n * @author zk\n * @date 2023-07-28 09:07:25\n * @protected\n * @return {*} {FormMDCtrlState}\n * @memberof FormMDCtrlController\n */\n createState() {\n var _a;\n return new FormMDCtrlState((_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 await super.onInit();\n switch (this.model.contentType) {\n case \"FORM\":\n this.mdCtrlContentController = new FormMDCtrlFormController(this);\n break;\n case \"GRID\":\n this.mdCtrlContentController = new FormMDCtrlGridController(this);\n break;\n case \"LIST\":\n this.mdCtrlContentController = new FormMDCtrlListController(this);\n break;\n case \"DATAVIEW\":\n this.mdCtrlContentController = new FormMDCtrlDataViewController(this);\n break;\n case \"REPEATER\":\n if (this.model.detailStyle === \"DEFAULT\") {\n this.mdCtrlContentController = new FormMDCtrlRepeaterFormController(\n this\n );\n }\n if (this.model.detailStyle === \"STYLE3\") {\n this.mdCtrlContentController = new FormMDCtrlRepeaterFormOneController(this);\n }\n if (this.model.detailStyle === \"STYLE2\") {\n this.mdCtrlContentController = new FormMDCtrlRepeaterGridController(\n this\n );\n }\n break;\n default:\n break;\n }\n if (this.mdCtrlContentController) {\n await this.mdCtrlContentController.onInit();\n }\n }\n /**\n * 手动通知外部表单值变更\n *\n * @author zk\n * @date 2023-08-02 09:08:41\n * @memberof FormMDCtrlController\n */\n setFormDataValue() {\n const name = this.model.appDEFieldId || this.model.fieldName || this.model.id;\n if (name) {\n this.form.setDataValue(name, this.state.contentCtrlData);\n }\n }\n /**\n * 加载数据,要在表单加载完成之后再去加载\n *\n * @author zk\n * @date 2023-07-28 11:07:09\n * @memberof FormMDCtrlController\n */\n async loadData() {\n await this.mdCtrlContentController.initData();\n }\n /**\n * 表单校验,通知子表单进行校验\n *\n * @author zzq\n * @date 2023-08-23 11:07:09\n * @memberof FormMDCtrlController\n */\n async validate() {\n return this.mdCtrlContentController.validate();\n }\n /**\n * 设置默认值\n *\n * @author zzq\n * @date 2023-08-23 19:00:09\n * @memberof FormMDCtrlController\n */\n setDefaultValue() {\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/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 * 子类不可覆盖或重写此方法,在 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 RuntimeError as RuntimeError39,\n RuntimeModelError as RuntimeModelError43\n} from \"@ibiz-template/core\";\nimport { clone as clone13 } 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 });\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 let res = await this.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 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 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 RuntimeModelError43(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 RuntimeModelError43(\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 RuntimeModelError43(\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 RuntimeModelError43(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 RuntimeModelError43(\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 Promise.allSettled(\n Object.values(this.fieldColumns).map(async (fieldColumn) => {\n await fieldColumn.loadCodeList();\n })\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 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 RuntimeModelError43(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.state.rows.findIndex(\n (item) => item.data.srfkey === data.srfkey\n );\n this.state.rows.splice(index, 1);\n this.state.groups.forEach((item) => {\n if (item.children.length) {\n const findIndex = item.children.findIndex(\n (item2) => item2.srfkey === data.srfkey\n );\n if (findIndex !== -1) {\n item.children.splice(findIndex, 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 if (!enableRowEdit || !enableRowNew || ibiz.config.grid.editShowMode !== \"row\") {\n ibiz.log.error(\"\\u4E0D\\u652F\\u6301\\u65B0\\u5EFA\\u884C\");\n return;\n }\n const editingRow = this.state.rows.find((item) => item.showRowEdit);\n if (editingRow) {\n throw new RuntimeError39(\"\\u8BF7\\u5148\\u5B8C\\u6210\\u5F53\\u524D\\u884C\\u7F16\\u8F91\\u4E2D\\u7684\\u884C\\u7684\\u64CD\\u4F5C\");\n }\n const res = await this.service.getDraft(this.context, this.params);\n this.state.items.unshift(res.data);\n const newRow = new GridRowState(res.data, this);\n this.state.rows.unshift(newRow);\n this.gridStateNotify(newRow, \"DRAFT\" /* DRAFT */);\n this.switchRowEdit(this.state.rows[0], true);\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 rowState = this.state.rows.find(\n (item) => item.data.srfkey === data.srfkey\n );\n if (!rowState) {\n throw new RuntimeError39(\"\\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 RuntimeError39(\"\\u884C\\u6570\\u636E\\u6821\\u9A8C\\u4E0D\\u901A\\u8FC7\\uFF0C\\u4FDD\\u5B58\\u53D6\\u6D88\");\n }\n await this.startLoading();\n let res;\n const isCreate = data.srfuf === 0 /* CREATE */;\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 } finally {\n await this.endLoading();\n }\n const index = this.state.items.findIndex(\n (item) => item.srfkey === data.srfkey\n );\n this.state.items.splice(index, 1, res.data);\n rowState.data = res.data;\n rowState.modified = false;\n ibiz.message.success(\"\".concat(res.data.srfmajortext || \"\", \"\\u4FDD\\u5B58\\u6210\\u529F\"));\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 Promise.allSettled(\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 !== \"GROUPGRIDCOLUMN\") {\n this.state.columnStates.push({\n key: column.codeName,\n caption: column.caption,\n hidden: !!column.hideDefault\n });\n }\n if (column.columnType === \"DEFGRIDCOLUMN\") {\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 *\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 const values = await Promise.allSettled(\n Object.values(this.editColumns).map(async (column) => {\n return column.dataChangeNotify(row, names);\n })\n );\n if (values.find((item) => item.status === \"rejected\")) {\n ibiz.log.error(\"dataChangeNotify\\u62A5\\u9519\", values);\n throw new RuntimeError39(\"\\u6570\\u636E\\u53D8\\u66F4\\u540E\\u6709\\u9519\\u8BEF\");\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 RuntimeError39(\"\\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 {\n 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 }\n }\n }\n if (toState === true) {\n const editingRow = this.state.rows.find((item) => item.showRowEdit);\n if (editingRow) {\n throw new RuntimeError39(\"\\u540C\\u65F6\\u53EA\\u80FD\\u6709\\u4E00\\u884C\\u5F00\\u542F\\u884C\\u7F16\\u8F91\");\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(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 *\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 RuntimeError39(\"\\u6CA1\\u627E\\u5230\".concat(updateId, \"\\u7F16\\u8F91\\u5217\\u66F4\\u65B0\"));\n }\n const { appDEMethodId, degeiupdateDetails } = findUpdate;\n const updateItems = degeiupdateDetails.map((item) => item.id);\n const params = { ...this.params, ...row.data.getOrigin() };\n const res = await this.service.updateGridEditItem(\n appDEMethodId,\n this.context,\n params\n );\n const result = res.data;\n if (result && (updateItems == null ? void 0 : updateItems.length)) {\n await Promise.all(\n updateItems.map((itemName) => {\n return this.setRowValue(row, itemName, result[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.params);\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 *\n * @param {MouseEvent} event 原生js点击事件\n * @returns {*} {Promise<void>}\n * @memberof MDControlController\n */\n async exportData(_args) {\n const items = this.fieldColumns;\n const formatExcelData = (data2) => {\n const codeListMap = /* @__PURE__ */ new Map();\n Object.keys(items).forEach((key) => {\n if (items[key].codeList) {\n codeListMap.set(key, items[key].codeListItems);\n }\n });\n const cloneData = clone13(\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 _a;\n if (codeListMap.get(key)) {\n item[key] = ((_a = codeListMap.get(key).find((_item) => {\n return _item.value === item[key];\n })) == null ? void 0 : _a.text) || item[key];\n }\n });\n });\n return cloneData;\n };\n const getExportData = async () => {\n var _a;\n const type = (_a = _args.params) == null ? void 0 : _a.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({ params });\n }\n if (type === \"selectedRows\") {\n data2 = this.getData();\n }\n if (data2.length === 0) {\n throw new RuntimeError39(\"\\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 const filterVal = Object.keys(items).map(\n (key) => items[key].model.id\n );\n const header = Object.keys(items).map(\n (key) => items[key].model.caption\n );\n const data = formatArrayData(filterVal, await getExportData());\n if (!ibiz.util.getExportExcel) {\n throw new RuntimeError39(\"ibiz.util.getExportExcel\\u4E0D\\u5B58\\u5728\");\n }\n const exportExcel = await ibiz.util.getExportExcel();\n if (!exportExcel) {\n throw new RuntimeError39(\"\\u5BFC\\u51FA\\u6A21\\u5757\\u52A0\\u8F7D\\u9519\\u8BEF\");\n }\n exportExcel.exportJsonToExcel({\n header,\n // 表头内容 数组格式\n data,\n // 具体数据 这是个二维数组\n filename: this.model.logicName,\n // 文件名称\n autoWidth: true\n // 单元格是否自适应\n });\n }\n};\n\n// src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts\nimport { ModelError as ModelError25 } from \"@ibiz-template/core\";\nimport { clone as clone14 } 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 /**\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, context, params, data);\n }\n const _context = Object.assign(context.clone(), selfContext);\n let selfParams = {};\n if (navigateParams && data) {\n selfParams = convertNavData(navigateParams, context, params, data);\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 ModelError25(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 = clone14(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 }\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 } = this.model;\n if (aggMode === \"NONE\") {\n return;\n }\n const fieldName = aggField || this.model.id;\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) => a + b, 0);\n break;\n case \"AVG\":\n aggValue = items.map((item) => item[fieldName]).reduce((a, b) => 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 ModelError25(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 ModelError25(this.model, \"\\u8FDC\\u7A0B\\u805A\\u5408\\u6682\\u672A\\u652F\\u6301\");\n } else {\n throw new ModelError25(\n this.grid.model,\n \"\\u6682\\u672A\\u652F\\u6301\\u805A\\u5408\\u6A21\\u5F0F\".concat(this.grid.model.aggMode)\n );\n }\n if (!aggValueFormat) {\n return \"\".concat(aggValue);\n }\n const formatValue = \"\";\n switch (aggValueFormat) {\n default:\n throw new ModelError25(\n this.model,\n \"\\u6682\\u672A\\u652F\\u6301\".concat(aggValueFormat, \"\\u7684\\u805A\\u5408\\u503C\\u683C\\u5F0F\\u5316\")\n );\n }\n return formatValue;\n }\n};\n\n// src/controller/control/grid/grid-column/grid-ua-column/grid-ua-column.controller.ts\nimport { RuntimeModelError as RuntimeModelError44 } 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 RuntimeModelError44(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 RuntimeError40 } from \"@ibiz-template/core\";\nimport Schema2 from \"async-validator\";\nimport { isNilOrEmpty as isNilOrEmpty7 } from \"qx-util\";\nvar GridFieldEditColumnController = class extends GridFieldColumnController {\n constructor() {\n super(...arguments);\n /**\n * 值规则\n *\n * @author lxm\n * @date 2022-09-01 22:09:49\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 const editItemsVRs = filterValueRules(\n this.grid.model.degridEditItemVRs || [],\n this.fieldName\n );\n if (!editItemsVRs) {\n return;\n }\n this.rules = generateRules(\n editItemsVRs,\n this.fieldName,\n this.valueItemName\n );\n this.validator = new Schema2({ [this.fieldName]: this.rules });\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 RuntimeError40(\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 && isNilOrEmpty7(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 });\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.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 this.state.sortQuery = \"\".concat(minorSortAppDEFieldId.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 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 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 children: [...otherGroup]\n });\n }\n this.state.groups = groups;\n }\n }\n};\n\n// src/controller/control/panel/panel/panel.controller.ts\nimport { RuntimeError as RuntimeError41 } from \"@ibiz-template/core\";\nvar PanelController = 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]: 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 }\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 async onCreated() {\n await super.onCreated();\n await this.initPanelItemControllers();\n }\n async onMounted() {\n this.load();\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) {\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 const data = await this.prepareData();\n if (!data) {\n throw new RuntimeError41(\"\\u672A\\u83B7\\u53D6\\u5230\\u9762\\u677F\\u6570\\u636E\");\n }\n const panelData = this.convertData(data);\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 return data;\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 this.dataChangeNotify([name]);\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 this.preprocessModel();\n await super.onCreated();\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 {PanelController} panel 面板控制器\n * @param {PanelItemController} [parent] 父容器控制器\n */\n constructor(model, panel, parent) {\n this.model = model;\n this.panel = panel;\n this.parent = parent;\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 /**\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 dataChangeNotify(names) {\n this.calcDynamicLogic(names);\n this.calcDynaClass(this.data);\n }\n /**\n * 面板状态变更通知\n *\n * @author lxm\n * @date 2022-09-20 18:09:07\n */\n panelStateNotify(_state) {\n this.calcDynamicLogic([], true);\n this.calcDynaClass(this.data);\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.panel.data, logic);\n switch (logic.logicCat) {\n case \"ITEMBLANK\":\n this.state.required = !ok;\n break;\n case \"ITEMENABLE\":\n this.state.disabled = !ok;\n break;\n case \"PANELVISIBLE\":\n this.state.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// 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 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.context, this.params)\n );\n }\n if (navigateParams) {\n Object.assign(\n params,\n convertNavData(navigateParams, this.context, this.params)\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\");\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\");\n return items;\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 initState() {\n super.initState();\n this.state.query = \"\";\n }\n async onCreated() {\n var _a;\n await super.onCreated();\n const appDataEntity = await ibiz.hub.getAppDataEntity(\n this.model.appDataEntityId,\n this.context.srfappid\n );\n if (appDataEntity) {\n const searchField = (_a = appDataEntity.appDEFields) == null ? void 0 : _a.find((field) => {\n return field.enableQuickSearch;\n });\n if ((searchField == null ? void 0 : searchField.lnlanguageRes) && searchField.lnlanguageRes.lanResTag) {\n this.placeHolder = ibiz.i18n.t(\n searchField.lnlanguageRes.lanResTag,\n searchField.lnlanguageRes.defaultContent\n );\n } else if (searchField == null ? void 0 : searchField.logicName) {\n this.placeHolder = searchField.logicName;\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 handleSearch() {\n this.evt.emit(\"onSearch\", void 0);\n }\n};\n\n// src/controller/control/tab-exp-panel/tab-exp-panel.controller.ts\nvar TabExpPanelController = class extends ControlController {\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 }\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 });\n });\n this.state.tabPages = tabPages;\n if (tabPages.length > 0) {\n this.initDefaultPage();\n }\n }\n /**\n * 初始化默认分页\n *\n * @author zk\n * @date 2023-06-19 09:06:33\n * @memberof TabExpPanelController\n */\n initDefaultPage() {\n const initFirstPage = () => {\n this.state.activeName = this.state.tabPages[0].tabTag;\n this.handleTabChange();\n };\n if (!this.state.defaultTabName) {\n initFirstPage();\n } else {\n const activeTab = this.state.tabPages.find(\n (item) => item.tabTag === this.state.defaultTabName\n );\n if (!activeTab) {\n initFirstPage();\n } else {\n this.state.activeName = activeTab.tabTag;\n this.changeToTab();\n }\n }\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) {\n const navViewMsg = this.getNavViewMsg(tab);\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 };\n }\n};\n\n// src/controller/control/tree/tree.controller.ts\nimport { recursiveIterate as recursiveIterate4 } from \"@ibiz-template/core\";\n\n// src/controller/control/tree/tree.service.ts\nimport { ModelError as ModelError26 } 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 Promise.allSettled(\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 );\n results.forEach((result) => {\n if (result.status === \"fulfilled\" && result.value) {\n childrenNodes.push(...result.value);\n } else if (result.status === \"rejected\") {\n ibiz.log.error(result.reason);\n }\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 ModelError26(\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 && 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 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.size = 0;\n }\n async onCreated() {\n await super.onCreated();\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 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 * @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 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 recursiveIterate4(\n { children: this.state.rootNodes },\n (node) => {\n this.state.items.push(node);\n }\n );\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.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-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 super.setSelection(selection);\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 = [];\n recursiveIterate4({ 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 * @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};\n\n// src/controller/control/wizard-panel/wizard-panel.controller.ts\nimport { RuntimeError as RuntimeError42 } 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 RuntimeError42(\"\\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 * 执行初始化操作,存在初始化实体行为的时候加载数据并把主键放入上下文\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 }\n if (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 await this.activeFormController.goBack();\n this.tagHistory.pop();\n const prevTag = this.tagHistory[this.tagHistory.length - 1];\n if (!prevTag) {\n throw new RuntimeError42(\"\\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.model.dewizard.dewizardForms.find(\n (_wizardForm) => {\n return _wizardForm.formTag === data.srfnextform;\n }\n );\n if (!wizardForm) {\n throw new RuntimeError42(\"\\u627E\\u4E0D\\u5230\\u6807\\u8BC6\\u4E3A\".concat(data.srfnextform, \"\\u7684\\u5411\\u5BFC\\u8868\\u5355\"));\n }\n nextTag = data.srfnextform;\n } else {\n const { formTag } = this.activeWizardForm;\n const wizardSteps = this.model.dewizard.dewizardSteps;\n if (wizardSteps && formTag) {\n const index = wizardSteps.findIndex((_step) => {\n return _step.stepTag === formTag;\n });\n const nextWizardStep = wizardSteps[index + 1];\n if (!nextWizardStep) {\n throw new RuntimeError42(\"\\u627E\\u4E0D\\u5230\\u4E0B\\u4E00\\u4E2A\\u5411\\u5BFC\\u6B65\\u9AA4\");\n }\n const nextWizardForm = this.model.dewizard.dewizardForms.find(\n (wizardForm) => {\n return wizardForm.formTag === nextWizardStep.stepTag;\n }\n );\n if (nextWizardForm) {\n nextTag = nextWizardForm.formTag;\n }\n }\n }\n if (!nextTag) {\n throw new RuntimeError42(\"\\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/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-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 RuntimeError43(\"\\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 RuntimeError43(\"\\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 RuntimeError43(\"\\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 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<Application>}\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 {*} {Application}\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 RuntimeError44 } 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\") {\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 RuntimeError44(\"\\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 RuntimeModelError45 } from \"@ibiz-template/core\";\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 }\n async onMounted() {\n await super.onMounted();\n const { model } = this.view;\n this.xdataControl.evt.on(\"onActive\", async (event) => {\n await this.openData(event);\n });\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.refresh();\n });\n }\n if (this.searchBar) {\n this.searchBar.evt.on(\"onSearch\", () => {\n this.refresh();\n });\n }\n if (!this.view.state.noLoadDefault && model.loadDefault) {\n this.load();\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 await this.openData(args);\n return null;\n }\n if (key === \"New\" /* NEW */) {\n await this.newData(args);\n return null;\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 === \"Copy\" /* COPY */) {\n this.copy(args);\n return null;\n }\n if (key === \"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 ibiz.log.warn(\"\\u89C6\\u56FE[\".concat(this.view.model.codeName, \"]\\uFF0C\\u672A\\u914D\\u7F6E\\u7F16\\u8F91\\u6253\\u5F00\\u89C6\\u56FE\"));\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 RuntimeModelError45(this.view.model, \"\\u7F3A\\u5C11newdata\\u7684\\u89C6\\u56FE\\u903B\\u8F91\");\n }\n const context = this.view.context.clone();\n if (copyMode) {\n context.srfcopymode = true;\n }\n const result = await ((_c = this.view.scheduler) == null ? void 0 : _c.triggerCustom(\"newdata\", {\n context,\n params: this.view.params,\n data,\n event,\n view: this.view\n }));\n if (result === -1) {\n throw new RuntimeModelError45(this.view.model, \"\\u7F3A\\u5C11newdata\\u7684\\u89C6\\u56FE\\u903B\\u8F91\");\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:26:04\n * @return {*} {IParams}\n */\n getSearchParams() {\n const params = {};\n if (this.searchForm) {\n const addParams = this.searchForm.getData()[0];\n const filteredParams = Object.entries(addParams).reduce(\n (result, [key, value]) => {\n if (value !== null && value !== void 0 && value !== \"\") {\n result[key] = value;\n }\n return result;\n },\n {}\n );\n Object.assign(params, filteredParams);\n }\n if (this.searchBar && this.searchBar.state.query) {\n const addParams = {\n query: this.searchBar.state.query\n };\n Object.assign(params, addParams);\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) {\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/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};\n\n// src/logic-scheduler/executor/logic-executor.ts\nimport { RuntimeError as RuntimeError45 } 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 RuntimeError45(\"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 ModelError27 } 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 ModelError27(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 RuntimeModelError46 } 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 RuntimeModelError46(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 } 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 mergeLeft(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, event) {\n const matchParams = {\n ctrlName,\n eventName: event.eventName,\n triggerType: \"CTRLEVENT\"\n };\n this.triggerAndExecute(matchParams, event);\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 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 ModelError28 } 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 ModelError28(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 RuntimeError46 } 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 RuntimeError46(\"\".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 RuntimeError47 } 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 RuntimeError47(\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 const superResult = super.match(matchParams);\n return superResult && matchParams.itemName === this.logic.itemName;\n }\n execute(executeParams) {\n const result = this.executor.execute(executeParams);\n if (typeof result === \"boolean\") {\n return result;\n }\n throw new RuntimeError47(\"\".concat(this.logic.id, \"\\u903B\\u8F91\\u8FD4\\u56DE\\u503C\\u4E0D\\u662F\\u5E03\\u5C14\\u503C\"));\n }\n};\n\n// src/logic-scheduler/trigger/timer-trigger.ts\nimport { RuntimeError as RuntimeError48 } from \"@ibiz-template/core\";\nvar TimerTrigger = class extends LogicTrigger {\n constructor() {\n super(...arguments);\n this.timer = null;\n }\n start() {\n this.timer = setInterval(() => {\n if (!this.scheduler.defaultParamsCb) {\n throw new RuntimeError48(\"\\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 ModelError29,\n RuntimeError as RuntimeError49,\n RuntimeModelError as RuntimeModelError47\n} from \"@ibiz-template/core\";\nimport { notNilEmpty as notNilEmpty7 } 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 lxm\n * @date 2022-08-22 14:08:03\n * @export\n * @param {IPSAppUIOpenDataLogic} appUILogic 应用预置界面逻辑opendata模型对象\n * @param {IContext} context 上下文参数\n * @param {(IData | null)} data 数据集合\n * @param {IParams} params 视图参数\n * @param {IData} [opts] 额外参数,event是js原生事件\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 RuntimeError49(\"opendata\\u6CA1\\u6709\\u53EF\\u64CD\\u4F5C\\u6570\\u636E\\uFF01\");\n }\n const openViewRef = appUILogic.openDataAppView;\n if (!openViewRef) {\n throw new RuntimeModelError47(\n appUILogic,\n \"opendata\\u89C6\\u56FE\\u903B\\u8F91\\u6CA1\\u6709\\u914D\\u7F6E\\u9ED8\\u8BA4\\u6253\\u5F00\\u89C6\\u56FE\"\n );\n }\n const openView = openViewRef.refAppViewId;\n if (!openView) {\n throw new RuntimeModelError47(\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, context, params, data[0])\n );\n let tempParams = {};\n const navParams = openViewRef.navigateParams;\n if (notNilEmpty7(navParams)) {\n tempParams = convertNavData(navParams, params, context, data[0]);\n }\n await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n openView,\n tempContext,\n tempParams,\n rest\n );\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 } = 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;\n }\n } else if (enableBatchAdd) {\n throw new ModelError29(appUILogic, \"enableBatchAdd\\u6682\\u672A\\u652F\\u6301\");\n } else if (batchAddOnly) {\n throw new ModelError29(appUILogic, \"batchAddOnly\\u6682\\u672A\\u652F\\u6301\");\n } else {\n newViewRef = newDataAppView;\n if (!newViewRef || !newViewRef.refAppViewId) {\n throw new RuntimeModelError47(\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 (notNilEmpty7(navContexts)) {\n tempContext = convertNavData(navContexts, context, params, _data);\n }\n tempContext = Object.assign(context, tempContext);\n const navParams = newViewRef.navigateParams;\n if (notNilEmpty7(navParams)) {\n tempParams = convertNavData(navParams, params, context, _data);\n }\n if (context.srfcopymode) {\n _data.srfkey = void 0;\n tempParams = Object.assign(tempParams, _data.$origin);\n }\n await ibiz.commands.execute(\n OpenAppViewCommand.TAG,\n newViewRef.refAppViewId,\n tempContext,\n tempParams,\n rest\n );\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 RuntimeModelError47(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 RuntimeError49(\"\\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 RuntimeError49(\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// 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 && matchParams.ctrlName === this.logic.ctrlName && this.listenEventNames.includes(matchParams.eventName);\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}\n\n// src/install.ts\nfunction install() {\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.engine = new EngineFactory();\n installCommand();\n presetUIActionProvider();\n presetAppCounterProvider();\n installLogicSchedule();\n}\n\n// src/plugin/plugin-static-resource/plugin-static-resource.ts\nvar import_path_browserify = __toESM(require_path_browserify(), 1);\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 = import_path_browserify.default.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 import_path_browserify.default.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 ActivityCounter,\n AppCounter,\n AppDECounter,\n AppDECounterProvider,\n AppDataEntity,\n AppFuncCommand,\n AppMenuController,\n AppMenuIconViewController,\n Application,\n AuthorityService,\n BackendUIActionProvider,\n BaseController,\n ButtonContainerState,\n CONTROL_PROVIDER_PREFIX,\n CTX,\n CTXState,\n CalendarController,\n CalendarExpBarController,\n CalendarItemData,\n CalendarService,\n CaptionBarController,\n ChartController,\n ChartService,\n CodeListEditorController,\n CodeListService,\n ContainerPortletController,\n ContextMenuController,\n ControlController,\n ControlService,\n ControlType,\n ControlVO,\n ControllerEvent,\n Counter,\n CounterService,\n DECache,\n DEDQCondUtil,\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 FormButtonController,\n FormButtonState,\n FormController,\n FormDRUIPartController,\n FormDetailController,\n FormDetailState,\n FormDruipartState,\n FormGroupPanelController,\n FormGroupPanelState,\n FormItemController,\n FormItemState,\n FormMDCtrlContentTypeController,\n FormMDCtrlControlController,\n FormMDCtrlController,\n FormMDCtrlDataViewController,\n FormMDCtrlFormController,\n FormMDCtrlGridController,\n FormMDCtrlItemController,\n FormMDCtrlListController,\n FormMDCtrlRepeaterFormController,\n FormMDCtrlRepeaterFormOneController,\n FormMDCtrlRepeaterGridController,\n FormMDCtrlState,\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 HubController,\n LayoutPanelUtil,\n ListController,\n ListService,\n LoadingState,\n MDControlController,\n MDControlService,\n MDViewEngine,\n MethodDto,\n MobViewController,\n Modal,\n OpenAppViewCommand,\n PANELITEM_PROVIDER_PREFIX,\n PORTLET_PROVIDER_PREFIX,\n PSDEDQCondEngine,\n PanelController,\n PanelItemController,\n PanelItemState,\n PanelNotifyState,\n PickupViewPanelController,\n PluginStaticResource,\n PortletPartController,\n PortletPartState,\n QXEventEx,\n RegisterCenter,\n RemotePluginItem,\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 TreeNodeData,\n TreeService,\n TreeStaticNodeData,\n UIACTION_PROVIDER_PREFIX,\n UIActionButtonState,\n UIActionUtil,\n UIMapField,\n V7AuthService,\n VIEW_PROVIDER_PREFIX,\n ViewController,\n ViewEngineBase,\n ViewLayoutPanelController,\n ViewMode,\n ViewPortletController,\n ViewType,\n WFWithdrawUIActionProvider,\n WizardPanelController,\n WizardPanelService,\n WorkFlowService,\n calcContentAlignStyle,\n calcDeCodeNameById,\n calcDynaClass,\n calcGridLayoutPos,\n calcLayoutHeightWidth,\n calcMainStateOPPrivsStrs,\n calcNavParams,\n calcResPath,\n calcRouteContext,\n compare,\n compareNumber,\n contains,\n convertNavData,\n convertNavDataByArray,\n convertNavDataByObject,\n convertObjectToNavParams,\n execDELogic,\n execDELogicAction,\n execDELogicById,\n execFieldLogics,\n execUILogic,\n filterFieldLogics,\n filterValueRules,\n findChildFormDetails,\n findDELogic,\n findEditItem,\n findFieldById,\n findModelChild,\n formatMultiData,\n generateRules,\n getAppCounterProvider,\n getAppViewRef,\n getChildNodeRSs,\n getControl,\n getControlProvider,\n getControlsByView,\n getDeACMode,\n getEditorProvider,\n getFormDetailProvider,\n getGridColumnProvider,\n getMatchResPath,\n getOriginData,\n getPanelItemProvider,\n getPortletProvider,\n getRootNode,\n getTreeNode,\n getUIActionById,\n getUIActionProvider,\n getViewEngines,\n getViewLogics,\n getViewProvider,\n getWFContext,\n getWFSubmitViewId,\n hasDeCodeName,\n install,\n installCommand,\n isValueChange,\n matchMainState,\n openRedirectView,\n parseUserParams,\n presetAppCounterProvider,\n presetUIActionProvider,\n registerAppCounterProvider,\n registerControlProvider,\n registerEditorProvider,\n registerFormDetailProvider,\n registerGridColumnProvider,\n registerPanelItemProvider,\n registerPortletProvider,\n registerUIActionProvider,\n registerViewProvider,\n strContain,\n testCond,\n toLocalOpenWFRedirectView,\n verifyDeRules,\n verifyFormGroupLogic,\n verifyPanelGroupLogic\n};\n"],"names":["layoutPos","valignSelf","halignSelf","result","Object","assign","display","layout","colXS","colXSOffset","colSM","colSMOffset","colMD","colMDOffset","colLG","colLGOffset","calcActualValues","span","offset","xs","sm","md","lg","_appView","paths","sort","a","b","length","pathArr","obj","forEach","key","val","async","deDELogicId","dataEntityId","context","data","params","deLogic","appId","appDataEntity","ibiz","hub","getAppDataEntity","findDELogic","findDeLogic","srfappid","RuntimeError13","concat","execDELogic","view","_a","_b","appViewRefs","viewLayoutPanel","find","item","name","id","controls","codeName","appDEACModeId","entityId","appDEACModes","mode","model","provider","viewType","viewStyle","sysPFPluginId","pluginKey","getPluginRegisterKey","getProvider7","log","error","link","type","sequenceflowview","sequenceflowmobview","toUpperCase","env","isMob","submitViewRef","viewRef","refAppViewId","ibiz2","window","util","GlobalUtil","AppHub","register","RegisterCenter","config","GlobalConfig","auth","V7AuthService","engine","EngineFactory","installCommand","presetUIActionProvider","presetAppCounterProvider","scheduler","LogicSchedulerCenter","triggerFactory","logic","ItemDynaLogicTrigger","TimerTrigger","CustomTrigger","ViewEventTrigger","ControlEventTrigger","executorFactory","ScriptExecutor","AppDEUILogicExecutor","AppUILogicExecutor","callback","CONTROL_PROVIDER_PREFIX","EDITOR_PROVIDER_PREFIX","FORMDETAIL_PROVIDER_PREFIX","GRIDCOLUMN_PROVIDER_PREFIX","PANELITEM_PROVIDER_PREFIX","PORTLET_PROVIDER_PREFIX","VIEW_PROVIDER_PREFIX","cb","mod","__create","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","require_path_browserify","exports","module","assertPath","path2","TypeError","JSON","stringify","normalizeStringPosix","allowAboveRoot","code","res","lastSegmentLength","lastSlash","dots","i","charCodeAt","lastSlashIndex","lastIndexOf","slice","posix","resolve","cwd","resolvedPath","resolvedAbsolute","arguments","process","normalize","isAbsolute","trailingSeparator","join","joined","arg","relative","from","to","fromStart","fromEnd","fromLen","toStart","toLen","lastCommonSep","fromCode","out","_makeLong","dirname","hasRoot","end","matchedSlash","basename","ext","start","extIdx","firstNonSlashEnd","extname","startDot","startPart","preDotState","format","pathObject","sep","dir","root","base","_format","parse","ret","delimiter","win32","constructor","this","enableDataInfoBar","grid","editShowMode","editSaveMode","appMenu","enableEcho","codeList","timeout","providers","Map","newProvider","set","unRegister","delete","get","args","func","convertNavData","naviDatas","origins","isEmpty","toString","call","convertNavDataByArray","convertNavDataByObject","naviData","notNilEmpty","value","rawValue","findOrigin","isNilOrEmpty","toLowerCase","reg2","test","valueKey","substring","convertObjectToNavParams","push","formatMultiData","navParams","dataArr","naviArr","Array","isArray","data1","naviParam","map","calcNavParams","originParams","deName","navFilter","pickupDEFName","navContexts","derValue","resultContext","resultParams","deSrfkey","srfkey","tempContext","tempParams","findModelChild","models","parseUserParams","userParams","navigateContexts","navigateParams","other","param","indexOf","splitArr","split","calcLayoutHeightWidth","width","height","widthMode","heightMode","calcDynaClass","expression","ScriptFactory","execScriptFn","singleRowReturn","isAsync","matchMainState","mainStateAppDEFieldIds","demainStates","values","field","stateValue","state2Value","state3Value","stateValues","calcMainStateOPPrivsStrs","mainState","app","getApp","demainStateOPPrivs","opprivAllowMode","mainStateOPPrivIds","opprivs","deopprivs","filter","includes","calcDeCodeNameById","pop","hasDeCodeName","isNotNil","appDELogicId","entity","appDELogics","filterFieldLogics","resultIds","appDEFields","computeAppDEFLogicId","onChangeAppDEFLogicId","defaultValueAppDEFLogicId","findFieldById","fieldId","getUIActionById","getUIAction","getRootNode","tree","detreeNodes","node","rootNode","getTreeNode","getChildNodeRSs","parentId","detreeNodeRSs","nodeRs","parentDETreeNodeId","searchMode","hasQuery","findEditItem","degridEditItems","findChildFormDetails","parent","childDetails","detailType","deformTabPages","deformDetails","getControlsByView","getViewLogics","viewLogics","appViewLogics","getViewEngines","appViewEngines","openRedirectView","appView","opts","navContext","appViewNavContexts","navContextData","clone","appViewNavParams","navParamsData","appDataEntityId","curData","actionId","getDataAppDEActionId","service","deService","getService","loading","showRedirect","exec","ok","linkUrl","linkurl","srfprocessinstanceid","dev","startsWith","Promise","newWindow","open","toLocalOpenWFRedirectView","hideRedirect","rdTag","rdView","typeFieldId","typeAppDEFieldId","notNilEmpty2","warn","defView","srfWf","srfwf","wf","typeValue","indexTypeAppDEFieldId","isNilOrEmpty2","formTypeAppDEFieldId","calcDERdTag","rdTagItems","wfRdTag","deRdTag","allRefViews","redirectAppViewRefs","refView","matchKey","realTitle","viewId","tag","title","RuntimeModelError","commands","execute","OpenAppViewCommand","TAG","openDERedirectView","queryStr","decodeURIComponent","qs","srfdename","RuntimeError","deCodeName","deName2DeCodeName","deRdViewCodeName","deRdView","getAppView","wfTag","processDefinitionKey","wfVersion","testCond","op","value2","is","contains","compare","isNilOrEmpty3","notNilEmpty3","isNil","strContain","RuntimeError2","number1","Number","number2","isNaN","compareNumber","date1","Date","getTime","date2","val2","index","DefaultOptions","ScriptFunction","argKeys","scriptCode","options","formatCode","calcArgKeys","fn","Function","scriptFn","apply","keys","presetParams","Set","convertArgs","_params","mergeRight","document","selector","className","getElementsByClassName","fillDefaultParams","message","notification","modal","confirm","openView","controller","parentView","topView","getTopView","topViewSession","session","viewSession","appSession","scriptArgs","static","createScriptFn","verifyDeRules","condition","flag","isPast","infoMessage","ruleInfo","condType","isGroupCondition","childRules","conds","array","operateTag","isReverse","len","temp","logicForEach","condOp","notMode","defname","isSimpleCondition","errorInfo","paramType","form","primaryModel","isNil2","isEmpty2","RuntimeError3","checkFieldSimpleRule","paramValue","keyCond","isValueRange2Condition","viewValue","minNumber","indexOfMin","maxNumber","indexOfMax","isNilOrEmpty4","checkFieldRegExRule","parseFloat","checkFieldValueRangeRule","minValue","includeMinValue","maxValue","includeMaxValue","isRegExCondition","regExCode","isStringLengthCondition","minLength","maxLength","viewValueLength","checkFieldStringLengthRule","isSysValueRuleCondition","sysValueRule","ruleType","source","selfError","resultBoolean","checkFieldScriptRule","strReg","RegExp","verifyFormGroupLogic","logicType","isGroupLogic","children","defdlogics","RuntimeModelError2","groupOP","childLogic","isSingleLogic","defdname","condOP","ModelError","verifyPanelGroupLogic","isGroupLogic2","panelItemLogics","RuntimeModelError3","isSingleLogic2","dstModelField","ModelError2","LayoutPanelUtil","cache","fill","viewModel","useDefaultLayout","calcLayoutTag","has","appCounterRefs","calcIndexViewLayoutTag","blankMode","mainMenuAlign","exTag","getWFContext","param09","ControlType","ControlType2","ViewType","ViewType2","ViewMode","ViewMode2","SysUIActionTag","SysUIActionTag2","StudioViewEvents","onViewMounted","onViewDestroyed","StudioPanelEvents","onClick","onChange","onEnter","onLeave","StudioControlEvents","onBeforeLoad","onLoadSuccess","onLoadError","onBeforeLoadDraft","onLoadDraftSuccess","onLoadDraftError","onBeforeSave","onSaveSuccess","onSaveError","onBeforeRemove","onRemoveSuccess","onRemoveError","CLICK","Modal","viewUsage","hooks","shouldDismiss","AsyncSeriesHook","beforeDismiss","_dismiss","routeDepth","dismiss","injectDismiss","allowClose","destroy","debug","clear","filterValueRules","vrs","vr","checkMode","belongName","deformItemName","degridEditItemName","TextUtil","_code","_OpenAppViewCommand","bind","appViewId","RuntimeError4","redirectView","openMode","noWaitRoute","openIndexViewTab","ModelError3","openModal","openPopover","event","openDrawer","openUserCustom","popover","drawer","custom","_AppFuncCommand","appFuncId","appFunc","getAppFunc","RuntimeError5","appFuncType","_context","openAppView","openHtmlPage","openPdAppFunc","executeJavaScript","ModelError4","url","htmlPageUrl","AppFuncCommand","PSModelCondEngineBase","psModelGroupCondBase","createPSModelGroupCond","testSingleCond","strCondOp","objValue","objCondValue","nRet","err","getPSModelGroupCondBase","PSModelCondBase","getCondOp","setCondOp","PSModelSingleCondBase","arr","nCount","bOpStart","bParamStart","bValueStart","strText","setParam","setValueType","setValue","getValueType","strValueType","getValue","strValue","getParamType","strParamType","setParamType","getParam","strParam","PSModelGroupCondBase","_PSModelGroupCondBase","super","childCondList","bNotMode","bNotStart","bCondStart","setNotMode","list","RuntimeError6","child","isNotMode","getChildPSModelCondBases","PSDEDQGroupCond","PSDEDQSingleCond","_PSDEDQCondEngine","cond","isEmpty3","bAnd","bRet","childCond","valType","PARAMTYPE_WEBCONTEXT","PARAMTYPE_DATACONTEXT","createPSModelSingleCond","PSDEDQCondEngine","pluginId","plugin","appPFPluginRefs","pluginCode","loadPlugin","pluginType","getProvider","getControlProvider","controlType","controlStyle","getProvider2","getEditorProvider","editorType","editorStyle","predefinedType","getProvider3","getFormDetailProvider","getProvider4","getGridColumnProvider","columnType","enableRowEdit","getProvider5","getPanelItemProvider","itemType","rawItem","UIACTION_PROVIDER_PREFIX","registerUIActionProvider","getProvider6","getUIActionProvider","uiactionMode","RuntimeError7","getProvider8","getPortletProvider","portletType","APP_COUNTER_PROVIDER_PREFIX","registerAppCounterProvider","getProvider9","getAppCounterProvider","counterType","RuntimeError8","AppCounter","destroyed","IBizContext","evt","QXEvent","isDestroyed","setParams","interval","load","clone2","destroyInterval","intervalTimer","setInterval","getSize","timer","clearInterval","RuntimeError9","refresh","immediate","on","notNilEmpty4","offChange","off","getCounter","reset","AppDECounter","action","getAppDEActionId","RuntimeModelError4","init","emit","AppDECounterProvider","createCounter","dataSet","groups","dedqgroupConditions","calcCond","items","condArr","dedqconditions","ModelError5","fieldName","condValue","WeakMap","DynamicCodeListCache","isPredefined","initPromise","ModelError6","convertData","valueAppDEFieldId","textAppDEFieldId","text","srfmajortext","freeze","size","res2","net","appDEDataSetId","RuntimeModelError5","resultItems","enableCache","cacheData2","expirationTime","promise","cacheTimeout","waitTime","isNil3","cacheData","isExistSrfKey","funcName","isNil4","isEmpty4","RuntimeError10","isExistSessionId","srfsessionid","DECache","cacheMap","forceAdd","getCacheByTag","forceUpdate","clone3","forceDelete","srfKey","add","isNil5","isEmpty5","createUUID","srftempdate","update","Error","createBatch","entities","updateBatch","deleteBatch","srfKeys","notRemoveKeys","checkData","getList","findIndex","generatePred","equals","where","reg","getMatchResPath","filterItems","requestPaths","str","path","match","every","calcResPath","replace","SearchFilter","page","sortField","sortMode","isNil6","isEmpty6","query","srfparentkey","srfparentdename","CodeListService","appModel","allCodeLists","getStatic","codeItems","formatStaticItems","codeItemValueNumber","setCodeList","getCodeList","isValueNumber","codeItem","textLanguageRes","i18n","t","lanResTag","defaultContent","_codeItem","color","dynamicCache","RuntimeError11","codeListType","getDynamicCodeList","CounterService","counterMap","counter2","counter","appCounter","RuntimeModelError6","WorkFlowService","commonBaseUrl","appContext","appData","srfsystemid","getBaseUrl","getActiveData","taskDefinitionKey","deKeyValue","post","activedata","request","method","responseType","taskId","methodName","wfStart","wfSubmit","wfReassign","wfAddStepBefore","wfSendBack","wfSendCopy","RuntimeError12","Srfuf","Srfuf2","AppDataEntity","_AppDataEntity","srfuf","_srfkey","enumerable","configurable","clone4","_data","keyAppField","keyAppDEFieldId","majorAppField","majorAppDEFieldId","major","defineProperties","properties","_entity","MethodDto","_MethodDto","dto","dtoMap","fields","appDEMethodDTOFields","isLocalMode","storageMode","refAppDataEntityId","getFieldDto","local","j","ModelError7","all","datum","sets","entityData","methodDto","appDEMethodDTOs","refAppDEMethodDTOId","Method","input","appDEMethodDTOId","appDEMethodInput","output","appDEMethodReturn","actionType","requestMethod","put","RuntimeModelError7","calcPath","curPath","codeName2","createEntity","DELogicLinkCond","DELogicLinkSingleCond","srcParam","srcLogicParamId","dstParam","dstLogicParamId","dstField","dstFieldName","ctx","dst","RuntimeModelError8","src","ModelError8","DELogicLinkGroupCond","_DELogicLinkGroupCond","bol","RuntimeModelError9","judge","DELogicNode","links","srcNode","dstNode","groupCond","delogicLinkGroupCond","defaultLink","DEActionNode","dstAppDataEntityId","dstAppDEActionId","dstDELogicParamId","retDELogicParamId","RuntimeModelError10","requestData","viewParams","StartNode","_ctx","EndNode","isEndNode","returnParamId","returnType","ModelError9","handleSrcVal","srcValParams","srcDELogicParamId","srcValueType","srcFieldName","srcValue","clone5","ModelError10","srcField","PrepareParamNode","nodeParams","delogicNodeParams","nodeParam","paramAction","setParamValue","resetParam","copyParam","bindParam","renewParam","appendParam","sortParam","ModelError11","srcVal","clone6","dstIndex","srcIndex","srcSize","insertIndex","_srcIndex","_srcSize","splice","dstSortDir","DataSetNode","dstAppDEDataSetId","BindParamNode","RuntimeModelError11","ResetParamNode","RuntimeModelError12","RenewParamNode","RuntimeModelError13","CopyParamNode","RuntimeModelError14","clone7","SortParamNode","RuntimeModelError15","AppendParamNode","RuntimeModelError16","ThrowExceptionNode","errorCode","HttpError","response","status","statusText","DELogic","nodes","delogicNodes","RuntimeModelError17","logicNodeType","logicNode","ModelError13","delogicParams","calc","m","default","appGlobalParam","clone8","entityListParam","entityPageParam","ModelError12","entityParam","lastReturnParam","appContextParam","simpleListParam","simpleParam","cloneParam","envParam","fileListParam","fileParam","filterParam","lastParam","originEntity","sessionParam","renew","thenId","initLogicParams","defaultParamName","deLogicParams","startDELogicNodeId","deepExec","parallelOutput","deLogicMap","deDELogic","execDELogicAction","HttpResponse2","HttpError2","execFieldLogics","fieldLogics","DEActionMethod","RuntimeModelError18","handle","actionMode","getDraft","remove","createTemp","getTemp","getDraftTemp","removeTemp","updateTemp","needResourceKey","s","HttpResponse3","FetchMethod","items2","searchLocal","HttpResponse4","dataSetType","fetchCodeListSet","ModelError14","ascSort","nullData","undefinedData","emptyData","equals2","isEmpty7","pred","where2","nullPred","undefinedPred","emptyPred","queryParamKeys","quickSearchAppDEFieldIds","selectLocal","isNil7","descSort","clone9","appCodeListId","RuntimeModelError19","DEService","methodMap","file","exportData","dataExport","fetchAction","resPath","exportUrl","getMethod","appDEMethods","methodType","ModelError15","params2","RuntimeError14","ControlVO","_ControlVO","isNil8","$origin","srfdeid","srfdecodename","srfkeyfile","srfmajorfile","$dataUIMap","mapField","dataKey","linkProperty","isOriginField","uiKey","writable","getOrigin","setOrigin","cloneOrigin","clone10","newVal","ControlService","dataUIMap","initUIDataMap","handleResponse","toUIData","MDControlService","fetchControlAction","appDEMethodId","getAction","getControlAction","getDraftAction","getDraftControlAction","removeAction","removeControlAction","createAction","createControlAction","updateAction","updateControlAction","_dataExport","RuntimeError15","headers","total","DeAuthorityService","entityModel","dataAccessAction","srfopprivs","calcByDeMainState","enableDEMainState","AuthorityService","constructorCache","resCodes","enablePermission","RuntimeError16","unires","enablepermissionvalid","calcByResCode","resCode","appDeId","opPriv","getOPPriv","mapSysUniResCode","calcByDataAccessAction","loginname","password","token","setCookie","CoreConst","TOKEN","expiredDate","expirein","TOKEN_EXPIRES","desc","clearCookie","TreeNodeData","parentNodeData","leaf","nodeId","calcIcon","sysImage","icon","cssClass","imagePath","TreeCodeListNodeData","deData","TreeDataSetNodeData","textHtml","calcTextHtml","iconAppDEFieldId","detreeNodeDataItems","iconDataItem","htmlStr","calcDataItemScript","dataItem","customCode","html","textDataItem","TreeStaticNodeData","nodeValue","parentValueLevel","UIMapField","isRequestNeed","isNil9","CalendarItemData","navId","bkColor","bkcolorAppDEFieldId","bkcolor","beginTime","beginTimeAppDEFieldId","colorAppDEFieldId","content","contentAppDEFieldId","endTime","endTimeAppDEFieldId","idAppDEFieldId","level","levelAppDEFieldId","tag2","tag2AppDEFieldId","tagAppDEFieldId","tips","tipsAppDEFieldId","DEServiceUtil","RuntimeError17","clearTempCache","Application","Net","baseURL","baseUrl","authority","loadAppModelStyle","remoteModelUrl","then","dom","createElement","setAttribute","responseURL","URL","pathname","innerHTML","head","appendChild","catch","appFuncs","appDEUIActions","deUILogicId","appDEUILogics","FormNotifyState","FormNotifyState2","GridNotifyState","GridNotifyState2","PanelNotifyState","PanelNotifyState2","Counter","count","state","reusable","increment","decrement","callback2","RuntimeError19","LoadingState","isLoading","NOOP","begin","CTXState","CTX","QXEvent2","controllersMap","registerController","nextState","startLoading","endLoading","c","getController","traceRoot","ActivityCounter","registration","enroll","attend","UIActionButtonState","uiActionId","disabled","visible","permitted","noPermissionHidden","noDataDisabled","isInit","uiAction","appDeName","noPrivDisplayMode","actionTarget","uiactionTag","calcPermission","ButtonContainerState","addState","setLoading","QXEventEx","QXEvent3","anyEventFns","onAll","resultPromise1","asyncEmit","resultPromise2","resultArr1","resultArr2","clearAll","ControllerEvent","getBaseArgs","eventName","isValueChange","isNil10","getOriginData","singleData","generateRules","itemVRs","valueItemName","rules","valueRuleType","sysRule","deRule","defvalueRule","pattern","trigger","validator","rule","console","valueName","isNilOrEmpty5","RuntimeError20","SELF_KEY","BaseController","getEventArgs","mountCounter","mounted","childNames","initState","_evt","isCreated","isMounted","targetName","onCreated","force","mountSelf","onMounted","onDestroyed","_callback","listenNewController","ViewController","layoutPanel","IBizContext2","engines","slotProps","counters","viewLoading","isCloseView","_isActive","initEngines","isActive","onActivated","onDeactivated","engineModels","ins","getEngine","engineCat","engineType","counterRef","getCounterByRef","caption","srfactiveviewdata","tapPromise","modalData","handleContextParams","ctrl","ctrlProvider","initCounters","createViewScheduler","defaultParamsCb","hasViewEventTrigger","_eventName","triggerViewEvent","startTimerTrigger","isNil11","isEmpty8","createUUID2","notNilEmpty5","callUIAction","RuntimeError21","setLayoutPanel","panel","hasControlEventTrigger","triggerControlEvent","triggerControlName","triggerEvent","EditorController","placeHolder","editorParams","readonly","readOnly","onInit","handlePublicParams","selfContext","selfParams","toObj","toBoolean","ControlController","dataItems","RuntimeModelError20","registerToCtx","panelModel","controlPanel","getData","initControlScheduler","controlLogics","getControlType","handlerAbilityParams","logics","createControlScheduler","MDControlController","selectedData","searchParams","noSort","sortQuery","curPage","isLoaded","singleSelect","mdctrlActiveMode","setSort","order","extraParams","isInitialLoad","isLoadMore","getFetchParams","fetch","afterLoad","RuntimeError22","silent","needRefresh","allSettled","afterRemove","success","setActive","setSelection","selection","isElementSame","filterArr","_args","AppMenuController","menuItemsState","appMenuItems","initMenuItemState","menuItem","findRecursiveChild","compareField","childrenFields","RuntimeError23","eventArg","RuntimeModelError21","toRouteDepth","menu","hidden","accessKey","childrenState","getAllItems","flattenMenus","menuItems","CalendarService","findRecursiveChild2","RuntimeError24","RuntimeModelError22","sysCalendarItems","promises","exec2","setCalendarConfigData","flat","RuntimeError25","calendarItem","selectedDate","search","getCurSelectDate","firstDayOfMonth","getFullYear","getMonth","lastDayOfMonth","dayjs","timeParam","setSelectDate","date","dayjs2","extend","minMax","isSameOrBefore","quarterOfYear","weekOfYear","isoWeek","DEFAULT_GROUP","BaseSeriesGenerator","chartGenerator","staticOptions","autoCompleteCategory","chartSeriesEncode","userParam","catalogField","RuntimeModelError23","valueField","groupField","seriesField","chartXAxisId","chartYAxisId","xAxisIndex","toNumberOrNil","yAxisIndex","seriesName","calcStaticOptions","seriesUserParam","parseUserParams2","seriesType","emphasis","label","fontSize","show","position","translateVal","codeListKey","isExclude","isNil12","codeListItems","codeListMap","x","calcGroupData","groupData","seriesCodeListId","catalogCodeListId","group","groupVal","catalog","calcGroupSeries","catalogData","calcSeriesData","mergeDeepRight","temData","calcByData","tempData","dataPreprocess","addTimeData","getSrfkeyByParams","clone11","groupMode","formattedDate","quarter","week","sortTimeData","dateMap","sortedKeys","diff","yearA","quarterA","yearB","quarterB","parseInt","sortedMap","sortKey","dates","_val","maxDate","max","minDate","min","currentDate","endDate","currentYear","year","endYear","yearString","currentYearMonth","startOf","endYearMonth","yearMonthString","yearQuarters","yearQuarter","minYearQuarter","reduce","current","maxYearQuarter","minYear","maxYear","yearWeeks","yearWeek","minYearWeek","maxYearWeek","numWeeks","LineSeriesGenerator","RuntimeModelError24","stack","step","BarSeriesGenerator","RuntimeModelError25","FunnelSeriesGenerator","formatter","PieSeriesGenerator","ScatterSeriesGenerator","RuntimeModelError26","RadarSeriesGenerator","calcRadarCoordSystem","radarMap","indicator","indicatorKeys","_indicatorKeys","updateIndicator","toOptions","Math","radar","radarData","mergeDeepRight2","option","customKey","ChartService","UILogicLinkCond","generator","tooltip","seriesGenerators","initSeriesGenerators","dechartTitle","dechartLegend","chartXAxises","chartYAxises","calcTitleOption","legend","calcLegendOption","xAxis","calcXYAxisOption","yAxis","chartUserParam","dechartSerieses","series","seriesGenerator","chartTitle","showTitle","subTitle","titlePos","titleOption","subtext","left","top","chartLegend","showLegend","legendPos","legendOption","orient","chartAxises","AxisOption","chartAxis","dataShowMode","echartsType","axisLabel","rotate","mergeDeepRight3","loadCodeList","calcOptionsByData","seriesOption","seriesIndex","RuntimeError26","addEventListener","resizeChart","srfcount","calcOptions","initChart","chart","activeData","updateChart","RuntimeError27","setOption","resize","removeEventListener","dispose","capLanguageRes","_caption","dataInfo","UILogicLinkSingleCond","RuntimeModelError27","ModelError16","UILogicLinkGroupCond","_UILogicLinkGroupCond","deuilogicLinkConds","RuntimeModelError28","UILogicNode","deuilogicLinks","linkMode","deuilogicLinkGroupCond","ModelError17","DEActionNode2","dstDEUILogicParamId","retDEUILogicParamId","RuntimeModelError29","DEUIActionNode","dstAppDEUIActionId","parameters","RuntimeModelError30","actionData","UIActionUtil","execAndResolved","StartNode2","EndNode2","ModelError18","handleSrcVal2","srcDEUILogicParamId","clone12","ModelError19","PrepareJSParamNode","deuilogicNodeParams","ModelError20","ViewCtrlInvokeNode","invokeMethod","invokeCtrlId","invokeParamId","RuntimeModelError31","invokeParam","RuntimeError28","invokeCtrl","isFunction","BindParamNode2","RuntimeModelError32","UILogic","deuilogicNodes","RuntimeModelError34","ModelError22","deuilogicParams","activeContainerParam","activeCtrlParam","ctrlParam","control","RuntimeModelError33","activeViewParam","applicationParam","ModelError21","navContextParam","navViewParamParam","routeViewSessionParam","viewNavDataParam","viewSessionParam","dstDEUILogicNodeId","startDEUILogicNodeId","uiLogicMap","execUILogic","deUILogic","getDEUILogic","RuntimeError29","uiLogic","RuntimeError30","closeView","refreshMode","UIActionProviderBase","reloadData","closeEditView","appDEUILogicId","uilogicAttachMode","RuntimeModelError35","isConfirm","returnError","_result","execAction","cancel","nextResult","doNextAction","nextContext","nextParams","enableConfirm","confirmMsg","nextActionId","nextId","resultData","originData","valueItem","paramItem","unshift","isMultiData","BackendUIActionProvider","actionResult","entityName","RuntimeModelError36","handleParams","frontPSAppView","frontAppViewId","srfactionparam","successMsg","isArray2","SysUIActionProvider","predefinedActionMap","uIActionTag","FrontUIActionProvider","frontProcessType","StringUtil","RuntimeModelError37","doOther","ModelError23","el","target","WFWithdrawUIActionProvider","_action","frontUIActionProvider","backendUIActionProvider","sysUIActionProvider","wfWithdrawUIActionProvider","ToolbarController","buttonsState","viewMode","extraButtons","uiactionId","recursiveIterate","uiItem","buttonState","isExtra","buttonType","doUIAction","itemState","dynaVisible","triggerItemVisible","dynaEnable","triggerItemEnable","setExtraButtons","buttons","clearExtraButtons","actualLogics","ContextMenuController","PortletPartState","portlets","initPortlets","dataChangeNotify","portletModels","portlet","createController","RuntimeError31","keepAlive","extraStyle","extraClass","contentStyle","class","container","containerDyna","actionGroupState","PortletPartController","dashboard","containerClass","createState","sysCss","cssName","initActionStates","uiactionGroup","uiactionGroupDetails","containerState","detail","actionid","dynaClass","DataViewControlService","dedataViewDataItems","deField","appDEFieldId","deFieldKey","ExpBarControlController","pagingSize","handleDataGroup","getOptItemModel","optItemModel","dedataViewItems","getOptItemAction","deuiactionGroup","RuntimeModelError38","enableGroup","handleAutoGroup","handleCodeListGroup","groupAppDEFieldId","childrenMap","groupCodeListId","codeListItem","otherGroup","minorSortAppDEFieldId","minorSortDir","navKeyName","xDataController","xdataControlName","RuntimeModelError39","toolbarController","XDataModel","xDataActive","xDataLoadSuccess","calcButtonState","srfnav","defaultNavBySrfnav","defaultNavByFirstItem","selectItem","navViewMsg","getNavViewMsg","prepareParams","navDER","currentSrfNav","calcViewModelId","navAppViewId","RuntimeError32","viewModelId","calcControlHeaderVisible","hasToolbar","panelItems","control_toolbar","showTitleBar","enableSearch","control_header","FormController","getCalendarItemModel","itemTypeName","RuntimeModelError40","itemModel","navNodeModelIds","RuntimeModelError41","getNodeModel","nodeModel","nodeData","RuntimeError33","rootVisible","rootNodes","noNeedNavView","expandedKeys","defaultExpandedKeys","details","formItems","processing","modified","names","RuntimeError34","formStateNotify","initDetailControllers","debounceAndAsyncMerge","arr1","arr2","setDefaultValue","deformPages","detailProvider","detailController","formItem","validate","SearchFormService","recursiveIterate2","FormDetailState","queryParams","getDraftParams","mergeDefaultInLeft","getParams","enableAutoSearch","e","onSearchButtonClick","labelDyna","required","showMoreMode","$keepAlive","$visible","isShowMore","FormDetailController","labelClass","labelSysCss","calcDynamicLogic","defdgroupLogics","relatedNames","relatedDetailNames","isOverlap","logicCat","labelDynaClass","FormButtonState","FormDruipartState","doFormItemUpdate","deformItemUpdateId","updateFormItem","showMask","FormGroupPanelState","refreshItems","isNewData","overflow","strArr","isOverlap2","calcViewParams","newContext","notNilEmpty6","newParams","viewComponentKey","embedView","createUUID3","setEmbedView","FormGroupPanelController","disableClose","titleBarCloseMode","defaultExpansion","FormItemState","enableCondDisabled","$disabled","FormMDCtrlContentTypeController","editor","unitName","valueFormat","allowEmpty","editorProvider","initRules","formItemsVRs","deformItemVRs","Schema","calcEnableCond","enableCond","isNew","resetItemNames","isReset","resetItemName","setDataValue","isNilOrEmpty6","errors","_fields","isCreate","createDVT","createDV","updateDVT","updateDV","valueType","defaultValue","srfusername","srfuserid","dayjs3","RuntimeError35","createUUID4","ModelError24","contentCtrlData","onDataChange","setFormDataValue","onDataItemChange","onDataRemove","onDataInsert","contentType","detailStyle","FormMDCtrlControlController","contentControl","RuntimeError36","controlModel","controlProvider","FormMDCtrlDataViewController","selectData","isSelect","onDataViewMounted","dataViewController","onSelectionChange","EditFormService","goBackControlAction","RuntimeModelError42","wfstartControlAction","wfForm","wfsubmitControlAction","presetFields","recursiveIterate3","EditFormController","autoSave","debounce","trailing","isLoadDraft","mergeInLeft","mergeDefaultInLeft2","awaitTimeout","save","RuntimeError37","goBack","formItemUpdateId","formItemUpdate","deformItemUpdates","defiupdateDetails","updateItems","itemName","enableAutoSave","FormMDCtrlFormController","controlControllerArray","onControlMounted","formController","isArray3","onFormChange","mergeInLeft2","onFormRemoveSuccess","FormMDCtrlGridController","onGridMounted","gridController","newRow","RuntimeError38","mergeInLeft3","enableRowNew","rows","row","FormMDCtrlListController","onListMounted","listController","FormMDCtrlItemController","isSimple","FormMDCtrlRepeaterFormOneController","formDetail","formData","formCtx","initFormMDCtrlItemControllers","useFormMdCtrlCtx","initData","FormMDCtrlRepeaterFormController","formDetails","FormMDCtrlRepeaterGridController","columns","editorMap","initColumns","rowDataChange","FormMDCtrlState","FormPageState","mdCtrlContentController","FormRawItemState","FormTabPageState","FormTabPanelState","GridColumnController","isAdaptiveColumn","isCustomCode","widthUnit","hasAdaptiveColumn","deGridDataItem","degridDataItems","getCustomHtml","GridRowState","uaColStates","editColStates","showRowEdit","uaColumns","column","editColumns","editColumn","editable","GridService","entityService","GridFieldColumnController","isMultistageHeader","fieldColumns","aggTitle","groupCodeListItems","groupFieldColumn","enableAgg","aggMode","allowRowEdit","rowEditOpen","columnStates","aggResult","initGridColumns","debounceAndAsyncMerge2","initGroup","RuntimeModelError43","groupFieldName","removeEls","fieldColumn","gridStateNotify","uaState","calcAggResult","groupMap","codeListGroup","groupFiledName","groupFieldValue","aggAppDataEntityId","aggAppDEDataSetId","remoteAggResult","calcFieldAgg","item2","RuntimeError39","switchRowEdit","rowState","awaitTimeout2","needSaveData","hideDefault","degridColumns","childColumn","initColumnsController","_row","isSave","toState","updateId","findUpdate","degridEditItemUpdates","degeiupdateDetails","updateGridEditItem","setRowValue","filterVal","header","filterVal2","data2","startPage","endPage","loadData","cloneData","clone13","_item","formatExcelData","getExportData","v","getExportExcel","exportExcel","exportJsonToExcel","filename","logicName","autoWidth","isLinkColumn","enableLinkView","linkAppViewId","hasAction","deuiactionId","clickable","linkValueItem","ModelError25","wfContext","clone14","_event","aggField","aggValueFormat","aggValue","ListService","RuntimeModelError44","editItem","dataItemName","editItemsVRs","degridEditItemVRs","Schema2","calcColumnDisabled","oldRequired","calcColumnRequired","RuntimeError40","degridEditItemUpdateId","_state","calcColumnReadonly","enable","itemEnable","itemBlank","triggerItemBlank","isReadOnly","editName","isNilOrEmpty7","delistDataItems","PanelController","batchToolbarController","quickToolbarController","setData","getAllData","setInputData","inputData","initPanelItemControllers","rootPanelItems","panelItem","panelItemProvider","panelItemController","panelTabPages","prepareData","RuntimeError41","panelData","panelStateNotify","dataMode","PanelItemState","preprocessModel","getNewArr","TreeService","dataParent","findDataParent","mustCalc","panelItemGroupLogics","relatedItemNames","isOverlap3","isDataContainer","embeddedAppDEViewId","initNavParam","searchField","enableQuickSearch","lnlanguageRes","handleInput","handleSearch","tabPages","activeName","initTabPages","viewPanel","tabTag","initDefaultPage","initFirstPage","handleTabChange","defaultTabName","activeTab","changeToTab","tab","activeTabViewPanelModel","tabViewPanel","childrenNodes","childNodeRSs","childNodeRS","childNode","childDETreeNodeId","fetchNodeDatasByType","reason","nodeRS","tempOpts","treeNodeType","getStaticNodeData","getDENodeDatas","getCodeListNodeDatas","ModelError26","expandFirstOnly","expanded","isExpandedRoot","subChildrenNodes","fetchChildNodes","getNodeRSFilterParams","parentFilter","parentDER1N","parentData","parentNodeModel","maxSize","sortAppDEFieldId","sortDir","codeListId","WizardPanelService","contextMenus","decontextMenu","detoolbarItems","created","loadNodes","calcExpandedKeys","parentNode","recursiveIterate4","parseTreeNodeData","eventArgs","refreshNodeChildren","refreshParent","currentNode","targetNode","initAction","initControlAction","finishAction","finishControlAction","HubController","tagHistory","firstForm","formControllers","steps","stepTags","dewizard","dewizardForms","wizardForm","_a2","_b2","_c","formName","formTag","wizardStep","dewizardSteps","dewizardStepId","stepTag","deeditForms","editForm","dewizardForm","activeWizardForm","activeFormTag","activeFormController","RuntimeError42","onFormMounted","onFormSaved","initialize","finish","prevTag","nextTag","srfnextform","_wizardForm","wizardSteps","_step","nextWizardStep","nextWizardForm","login","loginName","logout","convert","appMap","apps","view2appMap","views","dataEntities","viewConfigs","viewConfig","RuntimeError18","defaultAppIndexViewName","calcAppViewId","ids","registerModelLoaderProvider","modelLoaderProvider","registerApp","registerAppView","registerAppDataEntity","setAppView","hasAppView","createApp","RuntimeError43","getAppDataEntityByCodeName","viewEngines","ViewEngineBase","initViewState","toolbar","leftToolbar","rightToolbar","footerToolbar","calcViewHeaderVisible","view_header","calcViewFooterVisible","view_footer","_d","showHeader","showCaptionBar","view_captionbar","lefttoolbar","righttoolbar","view_toolbar","showFooter","RuntimeError44","searchForm","searchBar","xdataControl","openData","getSearchParams","view_searchform","formExists","expandSearchForm","noLoadDefault","loadDefault","toggleFilter","newData","importData","copy","triggerCustom","copyMode","RuntimeModelError45","srfcopymode","addParams","filteredParams","entries","view_searchbar","searchformContainer","LogicExecutor","_executeParams","RuntimeError45","initialized","convertScriptArgs","executeParams","paramKeys","convertFun","RuntimeModelError46","LogicScheduler","triggers","executors","executor","createExecutor","createTrigger","bindExecutor","getExecuteParams","defaultParams","mergeLeft","triggerType","getMatchTriggers","matchParams","triggerAndExecute","triggerItemDynaLogic","ctrlName","ControlLogicScheduler","ViewLogicScheduler","logicTrigger","constructorMap","ModelError27","ModelError28","LogicTrigger","bindScriptExecutor","RuntimeError46","RuntimeError47","RuntimeError48","builtinAppUILogic","executeOpenDataAppUILogic","executeNewDataAppUILogic","appUILogic","rest","RuntimeError49","openViewRef","openDataAppView","RuntimeModelError47","notNilEmpty7","enableWizardAdd","enableBatchAdd","batchAddOnly","newDataAppView","newViewRef","getWizardNewViewRef","ModelError29","wizardAppView","newDataAppViews","indexType","findView","refMode","listenEventNames","eventNames","import_path_browserify","isNodeMode","except","__copyProps","__esModule","__toESM","mateUrl","styleElementMap","baseDir","pathStr","urls","styleUrl","reject","linkDom","onload","onerror","repo"],"mappings":"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"}
|