@ibiz-template/runtime 0.1.12-dev.0 → 0.1.13
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 +6294 -371
- package/dist/index.system.min.js +1 -1
- package/dist/index.system.min.js.map +1 -1
- package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
- package/out/controller/common/control/md-control.controller.js +9 -0
- package/out/controller/common/editor/editor.controller.d.ts +1 -1
- package/out/controller/common/editor/editor.controller.d.ts.map +1 -1
- package/out/controller/common/editor/editor.controller.js +2 -4
- package/out/controller/control/app-menu/app-menu.controller.d.ts +1 -1
- package/out/controller/control/app-menu/app-menu.controller.d.ts.map +1 -1
- package/out/controller/control/app-menu/app-menu.controller.js +2 -2
- package/out/controller/control/caption-bar/caption-bar.controller.d.ts.map +1 -1
- package/out/controller/control/caption-bar/caption-bar.controller.js +1 -2
- package/out/controller/control/chart/chart.controller.js +1 -1
- package/out/controller/control/chart/generator/base-series-generator.d.ts.map +1 -1
- package/out/controller/control/chart/generator/base-series-generator.js +5 -4
- package/out/controller/control/chart/generator/chart-options-generator.d.ts +25 -1
- package/out/controller/control/chart/generator/chart-options-generator.d.ts.map +1 -1
- package/out/controller/control/chart/generator/chart-options-generator.js +29 -1
- package/out/controller/control/exp-bar/exp-bar.controller.d.ts.map +1 -1
- package/out/controller/control/exp-bar/exp-bar.controller.js +19 -0
- package/out/controller/control/form/edit-form/edit-form.controller.d.ts +7 -0
- package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
- package/out/controller/control/form/edit-form/edit-form.controller.js +54 -19
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.d.ts +4 -2
- 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 -1
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.js +22 -2
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.d.ts +3 -62
- 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 -1
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.js +7 -97
- 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 +2 -48
- 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 -1
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.js +2 -94
- package/out/controller/control/form/search-form/search-form.controller.js +1 -0
- package/out/controller/control/form/search-form/search-form.service.d.ts +1 -1
- package/out/controller/control/form/search-form/search-form.service.d.ts.map +1 -1
- package/out/controller/control/form/search-form/search-form.service.js +2 -3
- package/out/controller/control/grid/grid/grid-column.controller.d.ts +16 -0
- package/out/controller/control/grid/grid/grid-column.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid-column.controller.js +22 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts +8 -0
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.js +20 -8
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +8 -0
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.js +20 -1
- package/out/controller/control/index.d.ts +1 -0
- package/out/controller/control/index.d.ts.map +1 -1
- package/out/controller/control/index.js +1 -0
- package/out/controller/control/md-ctrl/index.d.ts +4 -0
- package/out/controller/control/md-ctrl/index.d.ts.map +1 -0
- package/out/controller/control/md-ctrl/index.js +3 -0
- package/out/controller/control/md-ctrl/md-ctrl-row.state.d.ts +34 -0
- package/out/controller/control/md-ctrl/md-ctrl-row.state.d.ts.map +1 -0
- package/out/controller/control/md-ctrl/md-ctrl-row.state.js +31 -0
- package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts +77 -0
- package/out/controller/control/md-ctrl/md-ctrl.controller.d.ts.map +1 -0
- package/out/controller/control/md-ctrl/md-ctrl.controller.js +160 -0
- package/out/controller/control/md-ctrl/md-ctrl.service.d.ts +21 -0
- package/out/controller/control/md-ctrl/md-ctrl.service.d.ts.map +1 -0
- package/out/controller/control/md-ctrl/md-ctrl.service.js +40 -0
- package/out/controller/control/panel/panel/panel-item.controller.js +1 -1
- package/out/controller/control/panel/panel/panel.controller.d.ts.map +1 -1
- package/out/controller/control/panel/panel/panel.controller.js +4 -2
- package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
- package/out/controller/control/search-bar/search-bar.controller.js +15 -6
- package/out/engine/md-view.engine.d.ts.map +1 -1
- package/out/engine/md-view.engine.js +9 -3
- package/out/global/global-util/global-util.d.ts +8 -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/hub/config/app-view-config-service.d.ts.map +1 -1
- package/out/hub/config/app-view-config-service.js +1 -0
- package/out/interface/common/i-app-view-config-service/i-app-view-config-service.d.ts +4 -0
- package/out/interface/common/i-app-view-config-service/i-app-view-config-service.d.ts.map +1 -1
- package/out/interface/controller/event/control/i-edit-form.event.d.ts +48 -3
- package/out/interface/controller/event/control/i-edit-form.event.d.ts.map +1 -1
- package/out/interface/controller/event/control/i-form.event.d.ts +27 -0
- package/out/interface/controller/event/control/i-form.event.d.ts.map +1 -1
- package/out/interface/controller/event/control/i-md-control.event.d.ts +57 -14
- package/out/interface/controller/event/control/i-md-control.event.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-exp-bar-control.state.d.ts +7 -0
- package/out/interface/controller/state/control/i-exp-bar-control.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-search-bar.state.d.ts +7 -0
- package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +1 -1
- package/out/logic-scheduler/executor/app-ui-logic-executor.d.ts +3 -3
- package/out/logic-scheduler/executor/app-ui-logic-executor.d.ts.map +1 -1
- package/out/logic-scheduler/executor/app-ui-logic-executor.js +3 -3
- package/out/service/service/code-list/code-list.service.d.ts.map +1 -1
- package/out/service/service/code-list/code-list.service.js +1 -1
- package/out/service/service/entity/method/method.d.ts.map +1 -1
- package/out/service/service/entity/method/method.js +4 -4
- package/out/service/utils/dynamic-code-list/dynamic-code-list.js +1 -1
- package/out/service/utils/index.d.ts +0 -1
- package/out/service/utils/index.d.ts.map +1 -1
- package/out/service/utils/index.js +0 -1
- package/out/ui-action/provider/backend-ui-action-provider.d.ts.map +1 -1
- package/out/ui-action/provider/backend-ui-action-provider.js +2 -3
- package/out/ui-action/uiaction-util.js +1 -1
- package/out/utils/handlebars/handlebars.d.ts +50 -0
- package/out/utils/handlebars/handlebars.d.ts.map +1 -0
- package/out/utils/handlebars/handlebars.js +64 -0
- 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/script/script-function.d.ts.map +1 -1
- package/out/utils/script/script-function.js +3 -0
- package/out/utils/text-util/text-util.d.ts +9 -0
- package/out/utils/text-util/text-util.d.ts.map +1 -1
- package/out/utils/text-util/text-util.js +11 -0
- package/package.json +5 -3
- package/src/controller/common/control/md-control.controller.ts +7 -0
- package/src/controller/common/editor/editor.controller.ts +3 -6
- package/src/controller/control/app-menu/app-menu.controller.ts +6 -3
- package/src/controller/control/caption-bar/caption-bar.controller.ts +1 -2
- package/src/controller/control/chart/chart.controller.ts +1 -1
- package/src/controller/control/chart/generator/base-series-generator.ts +5 -3
- package/src/controller/control/chart/generator/chart-options-generator.ts +39 -1
- package/src/controller/control/exp-bar/exp-bar.controller.ts +25 -0
- package/src/controller/control/form/edit-form/edit-form.controller.ts +55 -24
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form-item.controller.ts +41 -4
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller.ts +11 -159
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/form-mdctrl-repeater-form-one/form-mdctrl-repeater-form-one.controller.ts +2 -140
- package/src/controller/control/form/search-form/search-form.controller.ts +1 -1
- package/src/controller/control/form/search-form/search-form.service.ts +2 -3
- package/src/controller/control/grid/grid/grid-column.controller.ts +22 -0
- package/src/controller/control/grid/grid/grid.controller.ts +25 -7
- package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts +21 -1
- package/src/controller/control/index.ts +1 -0
- package/src/controller/control/md-ctrl/index.ts +3 -0
- package/src/controller/control/md-ctrl/md-ctrl-row.state.ts +40 -0
- package/src/controller/control/md-ctrl/md-ctrl.controller.ts +199 -0
- package/src/controller/control/md-ctrl/md-ctrl.service.ts +40 -0
- package/src/controller/control/panel/panel/panel-item.controller.ts +1 -1
- package/src/controller/control/panel/panel/panel.controller.ts +6 -2
- package/src/controller/control/search-bar/search-bar.controller.ts +21 -8
- package/src/engine/md-view.engine.ts +7 -3
- package/src/global/global-util/global-util.ts +9 -1
- package/src/hub/config/app-view-config-service.ts +1 -0
- package/src/interface/common/i-app-view-config-service/i-app-view-config-service.ts +4 -0
- package/src/interface/controller/event/control/i-edit-form.event.ts +53 -3
- package/src/interface/controller/event/control/i-form.event.ts +30 -0
- package/src/interface/controller/event/control/i-md-control.event.ts +63 -15
- package/src/interface/controller/state/control/i-exp-bar-control.state.ts +8 -0
- package/src/interface/controller/state/control/i-search-bar.state.ts +8 -0
- package/src/logic-scheduler/executor/app-ui-logic-executor.ts +5 -5
- package/src/service/service/code-list/code-list.service.ts +1 -4
- package/src/service/service/entity/method/method.ts +4 -8
- package/src/service/utils/dynamic-code-list/dynamic-code-list.ts +1 -1
- package/src/service/utils/index.ts +0 -1
- package/src/ui-action/provider/backend-ui-action-provider.ts +2 -3
- package/src/ui-action/uiaction-util.ts +1 -1
- package/src/utils/handlebars/handlebars.ts +70 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/script/script-function.ts +3 -0
- package/src/utils/text-util/text-util.ts +12 -0
- package/out/service/utils/route-context/route-context.d.ts +0 -20
- package/out/service/utils/route-context/route-context.d.ts.map +0 -1
- package/out/service/utils/route-context/route-context.js +0 -71
- package/src/service/utils/route-context/route-context.ts +0 -75
|
@@ -157,6 +157,9 @@ export class MDControlController<
|
|
|
157
157
|
await this._evt.emit('onLoadSuccess', {
|
|
158
158
|
isInitialLoad,
|
|
159
159
|
});
|
|
160
|
+
} catch (error) {
|
|
161
|
+
await this._evt.emit('onLoadError', undefined);
|
|
162
|
+
throw error;
|
|
160
163
|
} finally {
|
|
161
164
|
await this.endLoading();
|
|
162
165
|
}
|
|
@@ -210,6 +213,7 @@ export class MDControlController<
|
|
|
210
213
|
}
|
|
211
214
|
}
|
|
212
215
|
|
|
216
|
+
await this._evt.emit('onBeforeRemove', undefined);
|
|
213
217
|
await this.startLoading();
|
|
214
218
|
let needRefresh = false;
|
|
215
219
|
try {
|
|
@@ -241,6 +245,9 @@ export class MDControlController<
|
|
|
241
245
|
if (needRefresh) {
|
|
242
246
|
this.refresh();
|
|
243
247
|
}
|
|
248
|
+
} catch (error) {
|
|
249
|
+
await this._evt.emit('onRemoveError', undefined);
|
|
250
|
+
throw error;
|
|
244
251
|
} finally {
|
|
245
252
|
await this.endLoading();
|
|
246
253
|
}
|
|
@@ -110,7 +110,7 @@ export class EditorController<T extends IEditor = IEditor>
|
|
|
110
110
|
}
|
|
111
111
|
if (this.model.editorParams) {
|
|
112
112
|
Object.keys(this.model.editorParams).forEach(key => {
|
|
113
|
-
this.editorParams[key
|
|
113
|
+
this.editorParams[key] = this.model.editorParams![key];
|
|
114
114
|
});
|
|
115
115
|
}
|
|
116
116
|
}
|
|
@@ -126,21 +126,18 @@ export class EditorController<T extends IEditor = IEditor>
|
|
|
126
126
|
data: IData,
|
|
127
127
|
context: IContext,
|
|
128
128
|
params: IParams,
|
|
129
|
-
): { context:
|
|
129
|
+
): { context: IData; params: IParams } {
|
|
130
130
|
const { navigateContexts, navigateParams } = this
|
|
131
131
|
.model as INavigateParamContainer;
|
|
132
132
|
let selfContext = {};
|
|
133
133
|
if (navigateContexts && data) {
|
|
134
134
|
selfContext = convertNavData(navigateContexts!, context, params, data);
|
|
135
135
|
}
|
|
136
|
-
const _context = Object.assign(context.clone(), selfContext);
|
|
137
|
-
|
|
138
136
|
let selfParams = {};
|
|
139
137
|
if (navigateParams && data) {
|
|
140
138
|
selfParams = convertNavData(navigateParams!, context, params, data);
|
|
141
139
|
}
|
|
142
|
-
|
|
143
|
-
return { context: _context, params: _params };
|
|
140
|
+
return { context: selfContext, params: selfParams };
|
|
144
141
|
}
|
|
145
142
|
|
|
146
143
|
/**
|
|
@@ -64,7 +64,11 @@ export class AppMenuController
|
|
|
64
64
|
* @param {string} id
|
|
65
65
|
* @return {*} {Promise<void>}
|
|
66
66
|
*/
|
|
67
|
-
async onClickMenuItem(
|
|
67
|
+
async onClickMenuItem(
|
|
68
|
+
id: string,
|
|
69
|
+
event?: MouseEvent,
|
|
70
|
+
useDepth: boolean = true,
|
|
71
|
+
): Promise<void> {
|
|
68
72
|
const menuItem = findRecursiveChild(this.model, id, {
|
|
69
73
|
compareField: 'id',
|
|
70
74
|
childrenFields: ['appMenuItems'],
|
|
@@ -83,8 +87,7 @@ export class AppMenuController
|
|
|
83
87
|
}
|
|
84
88
|
|
|
85
89
|
const tempContext = this.context.clone();
|
|
86
|
-
|
|
87
|
-
if (this.routeDepth) {
|
|
90
|
+
if (this.routeDepth && useDepth) {
|
|
88
91
|
Object.assign(tempContext, {
|
|
89
92
|
toRouteDepth: this.routeDepth + 1,
|
|
90
93
|
});
|
|
@@ -24,8 +24,7 @@ export class CaptionBarController
|
|
|
24
24
|
if (this.view.model.capLanguageRes) {
|
|
25
25
|
this.state.caption = ibiz.i18n.t(
|
|
26
26
|
this.view.model.capLanguageRes.lanResTag!,
|
|
27
|
-
this.view.model.
|
|
28
|
-
this.view.model.caption,
|
|
27
|
+
this.view.model.caption,
|
|
29
28
|
);
|
|
30
29
|
} else {
|
|
31
30
|
this.state.caption = this.view.model.caption!;
|
|
@@ -45,7 +45,7 @@ export class ChartController
|
|
|
45
45
|
this.service = new ChartService(this.model);
|
|
46
46
|
await this.service.init(this.context);
|
|
47
47
|
this.generator = new ChartOptionsGenerator(this.model);
|
|
48
|
-
await this.generator.
|
|
48
|
+
await this.generator.init(this.context, this.params);
|
|
49
49
|
|
|
50
50
|
// 监听resize调整图表大小
|
|
51
51
|
window.addEventListener('resize', this.resizeChart);
|
|
@@ -147,9 +147,11 @@ export class BaseSeriesGenerator<T extends IDEChartSeries = IDEChartSeries> {
|
|
|
147
147
|
if (!model.valueField) {
|
|
148
148
|
throw new RuntimeModelError(model, '缺少值属性配置');
|
|
149
149
|
}
|
|
150
|
-
this.catalogField = model.catalogField
|
|
151
|
-
this.valueField = model.valueField
|
|
152
|
-
this.groupField = model.seriesField
|
|
150
|
+
this.catalogField = chartGenerator.getFieldKey(model.catalogField);
|
|
151
|
+
this.valueField = chartGenerator.getFieldKey(model.valueField);
|
|
152
|
+
this.groupField = model.seriesField
|
|
153
|
+
? chartGenerator.getFieldKey(model.seriesField)
|
|
154
|
+
: undefined;
|
|
153
155
|
|
|
154
156
|
const { chartXAxisId, chartYAxisId } = (chartSeriesEncode ||
|
|
155
157
|
{}) as IChartSeriesCSCartesian2DEncode;
|
|
@@ -6,6 +6,7 @@ import type {
|
|
|
6
6
|
ECElementEvent,
|
|
7
7
|
} from 'echarts';
|
|
8
8
|
import {
|
|
9
|
+
IAppDataEntity,
|
|
9
10
|
IChartXAxis,
|
|
10
11
|
IChartYAxis,
|
|
11
12
|
IDEChart,
|
|
@@ -54,6 +55,14 @@ export function parseUserParams(userParams: Record<string, string>): IData {
|
|
|
54
55
|
}
|
|
55
56
|
|
|
56
57
|
export class ChartOptionsGenerator {
|
|
58
|
+
/**
|
|
59
|
+
* 实体模型
|
|
60
|
+
* @author lxm
|
|
61
|
+
* @date 2023-08-29 06:39:01
|
|
62
|
+
* @type {IAppDataEntity}
|
|
63
|
+
*/
|
|
64
|
+
entity!: IAppDataEntity;
|
|
65
|
+
|
|
57
66
|
/**
|
|
58
67
|
* 根据模型配置算出来的静态echarts配置
|
|
59
68
|
* @author lxm
|
|
@@ -106,7 +115,6 @@ export class ChartOptionsGenerator {
|
|
|
106
115
|
codeListMap: Map<string, Readonly<CodeListItem[]>> = new Map();
|
|
107
116
|
|
|
108
117
|
constructor(private model: IDEChart) {
|
|
109
|
-
this.initSeriesGenerators();
|
|
110
118
|
const {
|
|
111
119
|
dechartTitle,
|
|
112
120
|
dechartLegend,
|
|
@@ -199,6 +207,10 @@ export class ChartOptionsGenerator {
|
|
|
199
207
|
const { showLegend, legendPos } = chartLegend;
|
|
200
208
|
const legendOption: EChartsOption['legend'] = {};
|
|
201
209
|
legendOption.show = showLegend;
|
|
210
|
+
// 图表单序列不应出图例
|
|
211
|
+
if (this.model.dechartSerieses?.length === 1) {
|
|
212
|
+
legendOption.show = false;
|
|
213
|
+
}
|
|
202
214
|
const position = legendPos?.toLowerCase();
|
|
203
215
|
if (position === 'left' || position === 'right') {
|
|
204
216
|
legendOption.left = position;
|
|
@@ -252,6 +264,32 @@ export class ChartOptionsGenerator {
|
|
|
252
264
|
return AxisOption;
|
|
253
265
|
}
|
|
254
266
|
|
|
267
|
+
/**
|
|
268
|
+
* 初始化
|
|
269
|
+
* @author lxm
|
|
270
|
+
* @date 2023-08-29 06:34:04
|
|
271
|
+
* @param {IContext} context
|
|
272
|
+
* @param {IParams} params
|
|
273
|
+
* @return {*} {Promise<void>}
|
|
274
|
+
*/
|
|
275
|
+
async init(context: IContext, params: IParams): Promise<void> {
|
|
276
|
+
await this.loadCodeList(context, params);
|
|
277
|
+
this.entity = await ibiz.hub.getAppDataEntity(this.model.appDataEntityId!);
|
|
278
|
+
this.initSeriesGenerators();
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* 找到实体属性的codeName小写
|
|
283
|
+
* @author lxm
|
|
284
|
+
* @date 2023-08-29 06:42:06
|
|
285
|
+
* @param {string} fieldName 属性的name
|
|
286
|
+
* @return {*} {string}
|
|
287
|
+
*/
|
|
288
|
+
getFieldKey(fieldName: string): string {
|
|
289
|
+
const find = this.entity.appDEFields!.find(item => item.name === fieldName);
|
|
290
|
+
return find ? find.codeName!.toLowerCase() : fieldName.toLowerCase();
|
|
291
|
+
}
|
|
292
|
+
|
|
255
293
|
/**
|
|
256
294
|
* 加载代码表,
|
|
257
295
|
* - 如果已经加载过会清空缓存重新加载
|
|
@@ -164,6 +164,31 @@ export class ExpBarControlController<
|
|
|
164
164
|
protected async onCreated(): Promise<void> {
|
|
165
165
|
await super.onCreated();
|
|
166
166
|
this.childNames.push(this.model.xdataControlName!);
|
|
167
|
+
const appDataEntity = await ibiz.hub.getAppDataEntity(
|
|
168
|
+
this.model.appDataEntityId!,
|
|
169
|
+
this.context.srfappid,
|
|
170
|
+
)!;
|
|
171
|
+
if (appDataEntity) {
|
|
172
|
+
const searchFields = appDataEntity.appDEFields?.filter(field => {
|
|
173
|
+
return field.enableQuickSearch;
|
|
174
|
+
});
|
|
175
|
+
const placeHolders: string[] = [];
|
|
176
|
+
searchFields?.forEach(searchField => {
|
|
177
|
+
if (searchField?.lnlanguageRes && searchField.lnlanguageRes.lanResTag) {
|
|
178
|
+
placeHolders.push(
|
|
179
|
+
ibiz.i18n.t(
|
|
180
|
+
searchField.lnlanguageRes.lanResTag,
|
|
181
|
+
searchField.logicName,
|
|
182
|
+
),
|
|
183
|
+
);
|
|
184
|
+
} else if (searchField?.logicName) {
|
|
185
|
+
placeHolders.push(searchField.logicName);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
if (placeHolders.length > 0) {
|
|
189
|
+
this.state.placeHolder = placeHolders.join('、');
|
|
190
|
+
}
|
|
191
|
+
}
|
|
167
192
|
}
|
|
168
193
|
|
|
169
194
|
/**
|
|
@@ -59,6 +59,41 @@ export class EditFormController
|
|
|
59
59
|
}) as () => Promise<void>;
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
+
/**
|
|
63
|
+
* 加载草稿行为
|
|
64
|
+
* @author lxm
|
|
65
|
+
* @date 2023-08-25 02:45:11
|
|
66
|
+
* @return {*} {Promise<IData>}
|
|
67
|
+
*/
|
|
68
|
+
async loadDraft(): Promise<IData> {
|
|
69
|
+
const queryParams = { ...this.params };
|
|
70
|
+
// 新建默认值给到graft接口,接口会回来
|
|
71
|
+
const params = await this.getDraftParams(); // 新建默认值
|
|
72
|
+
Object.assign(queryParams, params);
|
|
73
|
+
|
|
74
|
+
let res;
|
|
75
|
+
try {
|
|
76
|
+
await this.startLoading();
|
|
77
|
+
await this.evt.emit('onBeforeLoadDraft', { params: queryParams });
|
|
78
|
+
res = await this.service.getDraft(this.context, queryParams);
|
|
79
|
+
} catch (error) {
|
|
80
|
+
await this.evt.emit('onLoadDraftError', undefined);
|
|
81
|
+
throw error;
|
|
82
|
+
} finally {
|
|
83
|
+
await this.endLoading();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
this.state.data = res.data;
|
|
87
|
+
// 处理后台导致的新建默认值丢失
|
|
88
|
+
mergeDefaultInLeft(this.data, params);
|
|
89
|
+
|
|
90
|
+
this.formStateNotify(FormNotifyState.DRAFT);
|
|
91
|
+
|
|
92
|
+
await this.evt.emit('onLoadDraftSuccess', undefined);
|
|
93
|
+
this.state.isLoaded = true;
|
|
94
|
+
return this.data;
|
|
95
|
+
}
|
|
96
|
+
|
|
62
97
|
/**
|
|
63
98
|
* 部件加载数据行为
|
|
64
99
|
*
|
|
@@ -70,42 +105,30 @@ export class EditFormController
|
|
|
70
105
|
this.context,
|
|
71
106
|
this.model.appDataEntityId!,
|
|
72
107
|
);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
// 新建默认值给到graft接口,接口会回来
|
|
76
|
-
let params: IData = {};
|
|
108
|
+
// 加载草稿单独走一个方法
|
|
77
109
|
if (isLoadDraft) {
|
|
78
|
-
|
|
79
|
-
Object.assign(queryParams, params);
|
|
110
|
+
return this.loadDraft();
|
|
80
111
|
}
|
|
81
112
|
|
|
82
|
-
|
|
113
|
+
const queryParams = { ...this.params };
|
|
114
|
+
|
|
83
115
|
let res;
|
|
84
116
|
try {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
117
|
+
await this.startLoading();
|
|
118
|
+
await this.evt.emit('onBeforeLoad', undefined);
|
|
119
|
+
res = await this.service.get(this.context, queryParams);
|
|
120
|
+
} catch (error) {
|
|
121
|
+
await this.evt.emit('onLoadError', undefined);
|
|
122
|
+
throw error;
|
|
88
123
|
} finally {
|
|
89
124
|
await this.endLoading();
|
|
90
125
|
}
|
|
91
126
|
|
|
92
|
-
if (isLoadDraft) {
|
|
93
|
-
// !getDraft的时候不替换,进行合并,空值不覆盖
|
|
94
|
-
mergeInLeft(this.data, res.data);
|
|
95
|
-
} else {
|
|
96
|
-
this.state.data = res.data;
|
|
97
|
-
}
|
|
98
127
|
this.state.modified = false;
|
|
99
128
|
this.state.data = res.data;
|
|
100
|
-
|
|
101
|
-
this.formStateNotify(
|
|
102
|
-
isLoadDraft ? FormNotifyState.DRAFT : FormNotifyState.LOAD,
|
|
103
|
-
);
|
|
129
|
+
this.formStateNotify(FormNotifyState.LOAD);
|
|
104
130
|
|
|
105
|
-
await this.evt.emit(
|
|
106
|
-
isLoadDraft ? 'onLoadDraftSuccess' : 'onLoadSuccess',
|
|
107
|
-
undefined,
|
|
108
|
-
);
|
|
131
|
+
await this.evt.emit('onLoadSuccess', undefined);
|
|
109
132
|
this.state.isLoaded = true;
|
|
110
133
|
return this.data;
|
|
111
134
|
}
|
|
@@ -128,12 +151,16 @@ export class EditFormController
|
|
|
128
151
|
throw new RuntimeError('请检查表单填写!');
|
|
129
152
|
}
|
|
130
153
|
await this.startLoading();
|
|
154
|
+
await this.evt.emit('onBeforeSave', undefined);
|
|
131
155
|
let res;
|
|
132
156
|
try {
|
|
133
157
|
res =
|
|
134
158
|
this.data.srfuf === Srfuf.CREATE
|
|
135
159
|
? await this.service.create(this.context, this.data)
|
|
136
160
|
: await this.service.update(this.context, this.data);
|
|
161
|
+
} catch (error) {
|
|
162
|
+
await this.evt.emit('onSaveError', undefined);
|
|
163
|
+
throw error;
|
|
137
164
|
} finally {
|
|
138
165
|
await this.endLoading();
|
|
139
166
|
}
|
|
@@ -159,6 +186,7 @@ export class EditFormController
|
|
|
159
186
|
// 新建数据清空数据
|
|
160
187
|
let res: IHttpResponse | undefined;
|
|
161
188
|
let ok: boolean = false;
|
|
189
|
+
await this.evt.emit('onBeforeRemove', undefined);
|
|
162
190
|
// 新建的数据不用进行后台删除
|
|
163
191
|
if (this.data.srfuf === Srfuf.UPDATE) {
|
|
164
192
|
ok = await ibiz.modal.confirm({
|
|
@@ -172,6 +200,9 @@ export class EditFormController
|
|
|
172
200
|
await this.startLoading();
|
|
173
201
|
try {
|
|
174
202
|
res = await this.service.remove(this.context, this.params);
|
|
203
|
+
} catch (error) {
|
|
204
|
+
await this.evt.emit('onRemoveError', undefined);
|
|
205
|
+
throw error;
|
|
175
206
|
} finally {
|
|
176
207
|
await this.endLoading();
|
|
177
208
|
}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import { IControl, IDEFormMDCtrl } from '@ibiz/model-core';
|
|
1
|
+
import { IControl, IDEFormDetail, IDEFormMDCtrl } from '@ibiz/model-core';
|
|
2
2
|
import { IFormController } from '../../../../../../../interface';
|
|
3
|
+
import { findChildFormDetails } from '../../../../../../../model';
|
|
4
|
+
import { getFormDetailProvider } from '../../../../../../../register';
|
|
3
5
|
import { CTX } from '../../../../../../ctx';
|
|
4
6
|
import { EditFormController } from '../../../../edit-form';
|
|
7
|
+
import { FormController } from '../../../../form';
|
|
8
|
+
import { FormGroupPanelController } from '../../../form-group-panel';
|
|
9
|
+
import { FormItemController } from '../../../form-item';
|
|
5
10
|
|
|
6
11
|
/**
|
|
7
12
|
* 表单多数据部件项控制器
|
|
@@ -28,9 +33,41 @@ export class FormMDCtrlItemController
|
|
|
28
33
|
this.state.isSimple = true;
|
|
29
34
|
}
|
|
30
35
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
36
|
+
protected async initDetailControllers(
|
|
37
|
+
details: IDEFormDetail[] = (this.model as IDEFormMDCtrl).deformDetails!,
|
|
38
|
+
form: FormController = this,
|
|
39
|
+
parent: FormGroupPanelController | undefined = undefined,
|
|
40
|
+
): Promise<void> {
|
|
41
|
+
await Promise.all(
|
|
42
|
+
details.map(async detail => {
|
|
43
|
+
// 生成表单成员控制器
|
|
44
|
+
const detailProvider = await getFormDetailProvider(detail);
|
|
45
|
+
if (!detailProvider) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
form.providers[detail.id!] = detailProvider;
|
|
49
|
+
const detailController = await detailProvider.createController(
|
|
50
|
+
detail,
|
|
51
|
+
form,
|
|
52
|
+
parent,
|
|
53
|
+
);
|
|
54
|
+
form.details[detail.id!] = detailController;
|
|
55
|
+
if (
|
|
56
|
+
detail.detailType === 'FORMITEM' ||
|
|
57
|
+
detail.detailType === 'MDCTRL'
|
|
58
|
+
) {
|
|
59
|
+
form.formItems.push(detailController as FormItemController);
|
|
60
|
+
}
|
|
61
|
+
// 有子成员的生成子控制器
|
|
62
|
+
const childDetails = findChildFormDetails(detail);
|
|
63
|
+
if (childDetails.length) {
|
|
64
|
+
await this.initDetailControllers(
|
|
65
|
+
childDetails,
|
|
66
|
+
form,
|
|
67
|
+
detailController as FormGroupPanelController,
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
}),
|
|
34
71
|
);
|
|
35
72
|
}
|
|
36
73
|
}
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
// import { useCtx } from '@ibiz-template/vue3-util';
|
|
2
|
-
import { IDEFormDetail } from '@ibiz/model-core';
|
|
3
|
-
// import { reactive } from 'vue';
|
|
4
|
-
import { FormController } from '../../../../form';
|
|
5
|
-
import { FormGroupPanelController } from '../../../form-group-panel';
|
|
6
1
|
import { FormMDCtrlContentTypeController } from '../../form-mdctrl-content-type.controller';
|
|
7
2
|
import { FormMDCtrlItemController } from './form-mdctrl-repeater-form-item.controller';
|
|
8
|
-
import { FormItemController } from '../../../form-item';
|
|
9
|
-
import { IFormDetailController } from '../../../../../../../interface';
|
|
10
|
-
import { findChildFormDetails } from '../../../../../../../model';
|
|
11
|
-
import { getFormDetailProvider } from '../../../../../../../register';
|
|
12
|
-
import { CTX } from '../../../../../../ctx';
|
|
13
3
|
|
|
14
4
|
/**
|
|
15
5
|
* 表单多数据部件表格类型控制器
|
|
@@ -22,108 +12,6 @@ import { CTX } from '../../../../../../ctx';
|
|
|
22
12
|
* @implements {IFormController}
|
|
23
13
|
*/
|
|
24
14
|
export class FormMDCtrlRepeaterFormController extends FormMDCtrlContentTypeController {
|
|
25
|
-
/**
|
|
26
|
-
* 表单项控制器的集合(二维数组)
|
|
27
|
-
*
|
|
28
|
-
* @author zk
|
|
29
|
-
* @date 2023-07-25 05:07:56
|
|
30
|
-
* @type {Array<Array<FormItemController>>}
|
|
31
|
-
* @memberof FormMDCtrlController
|
|
32
|
-
*/
|
|
33
|
-
formDetails: Array<
|
|
34
|
-
Array<{ name: string; detailType: string; c: IFormDetailController }>
|
|
35
|
-
> = [];
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* 表单ctx
|
|
39
|
-
*
|
|
40
|
-
* @author zk
|
|
41
|
-
* @date 2023-07-31 12:07:00
|
|
42
|
-
* @private
|
|
43
|
-
* @type {CTX}
|
|
44
|
-
* @memberof FormMDCtrlRepeaterFormController
|
|
45
|
-
*/
|
|
46
|
-
private formCtx!: CTX;
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* uiState
|
|
50
|
-
*
|
|
51
|
-
* @author zk
|
|
52
|
-
* @date 2023-07-31 12:07:07
|
|
53
|
-
* @type {{ isInit: boolean }}
|
|
54
|
-
* @memberof FormMDCtrlRepeaterFormController
|
|
55
|
-
*/
|
|
56
|
-
state: { isInit: boolean } = { isInit: false };
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* 初始化表单成员控制器
|
|
60
|
-
*
|
|
61
|
-
* @author lxm
|
|
62
|
-
* @date 2022-08-24 21:08:48
|
|
63
|
-
* @protected
|
|
64
|
-
*/
|
|
65
|
-
protected async initFormMDCtrlItemControllers(
|
|
66
|
-
details: IDEFormDetail[],
|
|
67
|
-
index: number,
|
|
68
|
-
form: FormController = this.parent.form,
|
|
69
|
-
data: IData = {},
|
|
70
|
-
parent: FormGroupPanelController | undefined = undefined,
|
|
71
|
-
): Promise<IData> {
|
|
72
|
-
const formData = data;
|
|
73
|
-
// const formData = reactive(data);
|
|
74
|
-
|
|
75
|
-
const formController = new FormMDCtrlItemController(
|
|
76
|
-
this.model,
|
|
77
|
-
this.parent.form.context,
|
|
78
|
-
this.parent.form.params,
|
|
79
|
-
this.formCtx,
|
|
80
|
-
formData,
|
|
81
|
-
);
|
|
82
|
-
await formController.onInit();
|
|
83
|
-
formController.evt.on('onFormDataChange', arg => {
|
|
84
|
-
if (arg.data.length > 0) {
|
|
85
|
-
this.onDataItemChange(arg.data[0], index);
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
formController.state.isLoaded = true;
|
|
90
|
-
await Promise.all(
|
|
91
|
-
details.map(async detail => {
|
|
92
|
-
// 生成表单成员控制器
|
|
93
|
-
const detailProvider = await getFormDetailProvider(detail);
|
|
94
|
-
if (!detailProvider) {
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
form.providers[detail.id!] = detailProvider;
|
|
98
|
-
const detailController = await detailProvider.createController(
|
|
99
|
-
detail,
|
|
100
|
-
formController,
|
|
101
|
-
parent,
|
|
102
|
-
);
|
|
103
|
-
if (!this.formDetails[index]) {
|
|
104
|
-
this.formDetails[index] = [];
|
|
105
|
-
}
|
|
106
|
-
this.formDetails[index].push({
|
|
107
|
-
name: detail.id!,
|
|
108
|
-
detailType: detail.detailType!,
|
|
109
|
-
c: detailController,
|
|
110
|
-
});
|
|
111
|
-
// 有子成员的生成子控制器
|
|
112
|
-
const childDetails = findChildFormDetails(detail);
|
|
113
|
-
if (childDetails.length) {
|
|
114
|
-
await this.initFormMDCtrlItemControllers(
|
|
115
|
-
childDetails,
|
|
116
|
-
index,
|
|
117
|
-
formController,
|
|
118
|
-
data,
|
|
119
|
-
detailController as FormGroupPanelController,
|
|
120
|
-
);
|
|
121
|
-
}
|
|
122
|
-
}),
|
|
123
|
-
);
|
|
124
|
-
return data;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
15
|
/**
|
|
128
16
|
* 数据插入
|
|
129
17
|
*
|
|
@@ -132,10 +20,7 @@ export class FormMDCtrlRepeaterFormController extends FormMDCtrlContentTypeContr
|
|
|
132
20
|
* @memberof FormMDCtrlRepeaterFormController
|
|
133
21
|
*/
|
|
134
22
|
async onDataInsert(): Promise<void> {
|
|
135
|
-
const data =
|
|
136
|
-
this.model.deformDetails!,
|
|
137
|
-
this.data.length,
|
|
138
|
-
);
|
|
23
|
+
const data = {};
|
|
139
24
|
super.onDataInsert(data);
|
|
140
25
|
}
|
|
141
26
|
|
|
@@ -152,41 +37,9 @@ export class FormMDCtrlRepeaterFormController extends FormMDCtrlContentTypeContr
|
|
|
152
37
|
return;
|
|
153
38
|
}
|
|
154
39
|
super.onDataRemove(index);
|
|
155
|
-
this.formDetails.splice(index, 1);
|
|
156
40
|
}
|
|
157
41
|
|
|
158
|
-
|
|
159
|
-
* 初始化formCtx
|
|
160
|
-
*
|
|
161
|
-
* @author zk
|
|
162
|
-
* @date 2023-07-29 05:07:21
|
|
163
|
-
* @memberof FormMDCtrlRepeaterFormController
|
|
164
|
-
*/
|
|
165
|
-
useFormMdCtrlCtx(): void {
|
|
166
|
-
// this.formCtx = useCtx();
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* 初始化数据
|
|
171
|
-
*
|
|
172
|
-
* @author zk
|
|
173
|
-
* @date 2023-07-31 12:07:37
|
|
174
|
-
* @memberof FormMDCtrlRepeaterFormController
|
|
175
|
-
*/
|
|
176
|
-
async initData(): Promise<void> {
|
|
177
|
-
super.initData();
|
|
178
|
-
await Promise.all(
|
|
179
|
-
this.data.map(async (item, index) => {
|
|
180
|
-
await this.initFormMDCtrlItemControllers(
|
|
181
|
-
this.model.deformDetails!,
|
|
182
|
-
index,
|
|
183
|
-
this.parent.form,
|
|
184
|
-
item,
|
|
185
|
-
);
|
|
186
|
-
}),
|
|
187
|
-
);
|
|
188
|
-
this.state.isInit = true;
|
|
189
|
-
}
|
|
42
|
+
formControllerArray: Array<FormMDCtrlItemController> = [];
|
|
190
43
|
|
|
191
44
|
/**
|
|
192
45
|
* 表单项值规则校验
|
|
@@ -196,18 +49,17 @@ export class FormMDCtrlRepeaterFormController extends FormMDCtrlContentTypeContr
|
|
|
196
49
|
* @memberof FormMDCtrlRepeaterFormController
|
|
197
50
|
*/
|
|
198
51
|
async validate(): Promise<boolean> {
|
|
199
|
-
const values: Promise<boolean>[] =
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
values.push(c.validate());
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
});
|
|
208
|
-
|
|
52
|
+
const values: Promise<boolean>[] = this.formControllerArray.map(
|
|
53
|
+
(c: FormMDCtrlItemController) => {
|
|
54
|
+
return c.validate();
|
|
55
|
+
},
|
|
56
|
+
);
|
|
209
57
|
const results = await Promise.all(values);
|
|
210
58
|
// 找不到value为false即全部是true
|
|
211
59
|
return results.findIndex(value => !value) === -1;
|
|
212
60
|
}
|
|
61
|
+
|
|
62
|
+
setFromController(c: FormMDCtrlItemController): void {
|
|
63
|
+
this.formControllerArray.push(c);
|
|
64
|
+
}
|
|
213
65
|
}
|