@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
|
@@ -1,15 +1,4 @@
|
|
|
1
|
-
|
|
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
|
-
import { FormMDCtrlContentTypeController } from '../../form-mdctrl-content-type.controller';
|
|
7
|
-
import { FormMDCtrlItemController } from '../form-mdctrl-repeater-form/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';
|
|
1
|
+
import { FormMDCtrlRepeaterFormController } from '../form-mdctrl-repeater-form/form-mdctrl-repeater-form.controller';
|
|
13
2
|
|
|
14
3
|
/**
|
|
15
4
|
* 表单多数据部件表格类型控制器
|
|
@@ -21,7 +10,7 @@ import { CTX } from '../../../../../../ctx';
|
|
|
21
10
|
* @extends {EditFormController}
|
|
22
11
|
* @implements {IFormController}
|
|
23
12
|
*/
|
|
24
|
-
export class FormMDCtrlRepeaterFormOneController extends
|
|
13
|
+
export class FormMDCtrlRepeaterFormOneController extends FormMDCtrlRepeaterFormController {
|
|
25
14
|
/**
|
|
26
15
|
* 数据
|
|
27
16
|
*
|
|
@@ -35,112 +24,6 @@ export class FormMDCtrlRepeaterFormOneController extends FormMDCtrlContentTypeCo
|
|
|
35
24
|
return this.parent.state.contentCtrlData as IData[];
|
|
36
25
|
}
|
|
37
26
|
|
|
38
|
-
/**
|
|
39
|
-
* 表单项控制器的集合(二维数组)
|
|
40
|
-
*
|
|
41
|
-
* @author zk
|
|
42
|
-
* @date 2023-07-25 05:07:56
|
|
43
|
-
* @type {Array<Array<FormItemController>>}
|
|
44
|
-
* @memberof FormMDCtrlController
|
|
45
|
-
*/
|
|
46
|
-
formDetail: Array<{
|
|
47
|
-
name: string;
|
|
48
|
-
detailType: string;
|
|
49
|
-
c: IFormDetailController;
|
|
50
|
-
}> = [];
|
|
51
|
-
|
|
52
|
-
private formCtx!: CTX;
|
|
53
|
-
|
|
54
|
-
state: { isInit: boolean } = { isInit: false };
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* 初始化表单成员控制器
|
|
58
|
-
*
|
|
59
|
-
* @author lxm
|
|
60
|
-
* @date 2022-08-24 21:08:48
|
|
61
|
-
* @protected
|
|
62
|
-
*/
|
|
63
|
-
protected async initFormMDCtrlItemControllers(
|
|
64
|
-
details: IDEFormDetail[],
|
|
65
|
-
form: FormController = this.parent.form,
|
|
66
|
-
data: IData = {},
|
|
67
|
-
parent: FormGroupPanelController | undefined = undefined,
|
|
68
|
-
): Promise<IData> {
|
|
69
|
-
const formData = data;
|
|
70
|
-
// const formData = reactive(data);
|
|
71
|
-
|
|
72
|
-
const formController = new FormMDCtrlItemController(
|
|
73
|
-
this.model,
|
|
74
|
-
this.parent.form.context,
|
|
75
|
-
this.parent.form.params,
|
|
76
|
-
this.formCtx,
|
|
77
|
-
formData,
|
|
78
|
-
);
|
|
79
|
-
await formController.onInit();
|
|
80
|
-
formController.evt.on('onFormDataChange', arg => {
|
|
81
|
-
if (arg.data.length > 0) {
|
|
82
|
-
this.onDataItemChange(arg.data[0]);
|
|
83
|
-
}
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
formController.state.isLoaded = true;
|
|
87
|
-
await Promise.all(
|
|
88
|
-
details.map(async detail => {
|
|
89
|
-
// 生成表单成员控制器
|
|
90
|
-
const detailProvider = await getFormDetailProvider(detail);
|
|
91
|
-
if (!detailProvider) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
form.providers[detail.id!] = detailProvider;
|
|
95
|
-
const detailController = await detailProvider.createController(
|
|
96
|
-
detail,
|
|
97
|
-
formController,
|
|
98
|
-
parent,
|
|
99
|
-
);
|
|
100
|
-
if (!this.formDetail) {
|
|
101
|
-
this.formDetail = [];
|
|
102
|
-
}
|
|
103
|
-
this.formDetail.push({
|
|
104
|
-
name: detail.id!,
|
|
105
|
-
detailType: detail.detailType!,
|
|
106
|
-
c: detailController,
|
|
107
|
-
});
|
|
108
|
-
// 有子成员的生成子控制器
|
|
109
|
-
const childDetails = findChildFormDetails(detail);
|
|
110
|
-
if (childDetails.length) {
|
|
111
|
-
await this.initFormMDCtrlItemControllers(
|
|
112
|
-
childDetails,
|
|
113
|
-
formController,
|
|
114
|
-
data,
|
|
115
|
-
detailController as FormGroupPanelController,
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
}),
|
|
119
|
-
);
|
|
120
|
-
return data;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* 初始化formCtx
|
|
125
|
-
*
|
|
126
|
-
* @author zk
|
|
127
|
-
* @date 2023-07-29 05:07:21
|
|
128
|
-
* @memberof FormMDCtrlRepeaterFormController
|
|
129
|
-
*/
|
|
130
|
-
useFormMdCtrlCtx(): void {
|
|
131
|
-
// this.formCtx = useCtx();
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
async initData(): Promise<void> {
|
|
135
|
-
super.initData();
|
|
136
|
-
await this.initFormMDCtrlItemControllers(
|
|
137
|
-
this.model.deformDetails!,
|
|
138
|
-
this.parent.form,
|
|
139
|
-
this.data,
|
|
140
|
-
);
|
|
141
|
-
this.state.isInit = true;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
27
|
/**
|
|
145
28
|
* 内部表单项数据发生改变,同步contentCtrlData并设置外部表单值
|
|
146
29
|
*
|
|
@@ -154,25 +37,4 @@ export class FormMDCtrlRepeaterFormOneController extends FormMDCtrlContentTypeCo
|
|
|
154
37
|
this.parent.state.contentCtrlData = data;
|
|
155
38
|
this.parent.setFormDataValue();
|
|
156
39
|
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* 表单值校验
|
|
160
|
-
*
|
|
161
|
-
* @author zzq
|
|
162
|
-
* @date 2023-08-23 19:07:11
|
|
163
|
-
* @memberof FormMDCtrlController
|
|
164
|
-
*/
|
|
165
|
-
async validate(): Promise<boolean> {
|
|
166
|
-
const values: Promise<boolean>[] = [];
|
|
167
|
-
this.formDetail.forEach(detail => {
|
|
168
|
-
if (detail.detailType === 'FORMITEM') {
|
|
169
|
-
const c = detail.c as FormItemController;
|
|
170
|
-
values.push(c.validate());
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
const results = await Promise.all(values);
|
|
175
|
-
// 找不到value为false即全部是true
|
|
176
|
-
return results.findIndex(value => !value) === -1;
|
|
177
|
-
}
|
|
178
40
|
}
|
|
@@ -54,7 +54,7 @@ export class SearchFormController
|
|
|
54
54
|
// 新建默认值给到graft接口,接口会回来
|
|
55
55
|
const params = await this.getDraftParams();
|
|
56
56
|
Object.assign(queryParams, params);
|
|
57
|
-
|
|
57
|
+
await this.evt.emit('onBeforeLoadDraft', { params: queryParams });
|
|
58
58
|
const res = await this.service.getDraft(this.context, queryParams);
|
|
59
59
|
this.state.data = res.data;
|
|
60
60
|
mergeDefaultInLeft(this.data, params);
|
|
@@ -26,10 +26,9 @@ export class SearchFormService<
|
|
|
26
26
|
*/
|
|
27
27
|
async getDraft(
|
|
28
28
|
_context: IParams,
|
|
29
|
-
|
|
29
|
+
params: IParams = {},
|
|
30
30
|
): Promise<IHttpResponse<ControlVO>> {
|
|
31
|
-
|
|
32
|
-
let res = { ok: true, status: 200, data: {} } as IHttpResponse;
|
|
31
|
+
let res = { ok: true, status: 200, data: { ...params } } as IHttpResponse;
|
|
33
32
|
res = this.handleResponse(res);
|
|
34
33
|
return res as IHttpResponse<ControlVO>;
|
|
35
34
|
}
|
|
@@ -91,6 +91,28 @@ export class GridColumnController<T extends IDEGridColumn = IDEGridColumn> {
|
|
|
91
91
|
});
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
/**
|
|
95
|
+
* 值格式化
|
|
96
|
+
* @author lxm
|
|
97
|
+
* @date 2023-08-25 05:03:07
|
|
98
|
+
* @readonly
|
|
99
|
+
* @type {(string | undefined)}
|
|
100
|
+
*/
|
|
101
|
+
get valueFormat(): string | undefined {
|
|
102
|
+
return this.deGridDataItem?.format;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* 数据类型(数值)
|
|
107
|
+
* @author lxm
|
|
108
|
+
* @date 2023-08-25 05:03:07
|
|
109
|
+
* @readonly
|
|
110
|
+
* @type {(string | undefined)}
|
|
111
|
+
*/
|
|
112
|
+
get dataType(): number | undefined {
|
|
113
|
+
return this.deGridDataItem?.dataType;
|
|
114
|
+
}
|
|
115
|
+
|
|
94
116
|
/**
|
|
95
117
|
* Creates an instance of GridFieldColumnController.
|
|
96
118
|
* @author lxm
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
awaitTimeout,
|
|
4
4
|
debounceAndAsyncMerge,
|
|
5
5
|
HttpResponse,
|
|
6
|
+
recursiveIterate,
|
|
6
7
|
RuntimeError,
|
|
7
8
|
RuntimeModelError,
|
|
8
9
|
} from '@ibiz-template/core';
|
|
@@ -186,6 +187,7 @@ export class GridController
|
|
|
186
187
|
|
|
187
188
|
this.service = new GridService(this.model);
|
|
188
189
|
await this.service.init(this.context);
|
|
190
|
+
this.initColumnStates();
|
|
189
191
|
await this.initGridColumns();
|
|
190
192
|
|
|
191
193
|
// !数据变更通知防抖,且合并参数,如果有同一批触发不同行的值变更则该方法需要重写
|
|
@@ -528,13 +530,6 @@ export class GridController
|
|
|
528
530
|
// 初始化表格列控制器
|
|
529
531
|
const controller = await provider.createController(column, this);
|
|
530
532
|
this.columns[column.codeName!] = controller as GridColumnController;
|
|
531
|
-
if (column.columnType !== 'GROUPGRIDCOLUMN') {
|
|
532
|
-
this.state.columnStates.push({
|
|
533
|
-
key: column.codeName!,
|
|
534
|
-
caption: column.caption!,
|
|
535
|
-
hidden: !!column.hideDefault,
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
533
|
// 分类存放控制器
|
|
539
534
|
if (column.columnType === 'DEFGRIDCOLUMN') {
|
|
540
535
|
this.fieldColumns[column.codeName!] =
|
|
@@ -556,6 +551,29 @@ export class GridController
|
|
|
556
551
|
}
|
|
557
552
|
}
|
|
558
553
|
|
|
554
|
+
/**
|
|
555
|
+
* 初始化表格列状态
|
|
556
|
+
* @author lxm
|
|
557
|
+
* @date 2023-08-28 02:53:12
|
|
558
|
+
* @protected
|
|
559
|
+
* @return {*} {Promise<void>}
|
|
560
|
+
*/
|
|
561
|
+
protected initColumnStates(): void {
|
|
562
|
+
recursiveIterate(
|
|
563
|
+
this.model,
|
|
564
|
+
(column: IDEGridColumn) => {
|
|
565
|
+
if (column.columnType !== 'GROUPGRIDCOLUMN') {
|
|
566
|
+
this.state.columnStates.push({
|
|
567
|
+
key: column.codeName!,
|
|
568
|
+
caption: column.caption!,
|
|
569
|
+
hidden: !!column.hideDefault,
|
|
570
|
+
});
|
|
571
|
+
}
|
|
572
|
+
},
|
|
573
|
+
{ childrenFields: ['degridColumns'] },
|
|
574
|
+
);
|
|
575
|
+
}
|
|
576
|
+
|
|
559
577
|
/**
|
|
560
578
|
* 初始化表格属性列,操作列,编辑项控制器
|
|
561
579
|
*
|
package/src/controller/control/grid/grid-column/grid-field-column/grid-field-column.controller.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
2
|
-
import { ModelError } from '@ibiz-template/core';
|
|
2
|
+
import { DataTypes, ModelError } from '@ibiz-template/core';
|
|
3
3
|
import { IAppCodeList, IDEGridFieldColumn } from '@ibiz/model-core';
|
|
4
|
+
import dayjs from 'dayjs';
|
|
4
5
|
import { clone } from 'ramda';
|
|
5
6
|
import { OpenAppViewCommand } from '../../../../../command';
|
|
6
7
|
import { CodeListItem, IModalData } from '../../../../../interface';
|
|
@@ -267,4 +268,23 @@ export class GridFieldColumnController extends GridColumnController<IDEGridField
|
|
|
267
268
|
}
|
|
268
269
|
return formatValue;
|
|
269
270
|
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* 值格式化
|
|
274
|
+
* @author lxm
|
|
275
|
+
* @date 2023-08-25 05:18:11
|
|
276
|
+
* @param {unknown} value
|
|
277
|
+
* @return {*} {string}
|
|
278
|
+
*/
|
|
279
|
+
formatValue(value: unknown = ''): string {
|
|
280
|
+
const strVal = `${value}`;
|
|
281
|
+
if (!this.valueFormat) {
|
|
282
|
+
return strVal;
|
|
283
|
+
}
|
|
284
|
+
const isDate = DataTypes.isDate(this.dataType!);
|
|
285
|
+
if (isDate) {
|
|
286
|
+
return dayjs(strVal).format(this.valueFormat);
|
|
287
|
+
}
|
|
288
|
+
return ibiz.util.text.format(strVal, this.valueFormat);
|
|
289
|
+
}
|
|
270
290
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IButtonContainerState,
|
|
3
|
+
IMobMDCtrlController,
|
|
4
|
+
IMobMDCtrlRowState,
|
|
5
|
+
} from '../../../interface';
|
|
6
|
+
import { ControlVO } from '../../../service';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* 多数据部件行状态
|
|
10
|
+
*
|
|
11
|
+
* @author chitanda
|
|
12
|
+
* @date 2023-06-19 18:06:44
|
|
13
|
+
* @export
|
|
14
|
+
* @class MobMDCtrlRowState
|
|
15
|
+
*/
|
|
16
|
+
export class MobMDCtrlRowState implements IMobMDCtrlRowState {
|
|
17
|
+
/**
|
|
18
|
+
* 行为状态
|
|
19
|
+
*
|
|
20
|
+
* @author chitanda
|
|
21
|
+
* @date 2023-06-19 18:06:27
|
|
22
|
+
* @type {{ [p: string]: IButtonContainerState }}
|
|
23
|
+
*/
|
|
24
|
+
readonly uaColStates: { [p: string]: IButtonContainerState } = {};
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Creates an instance of MDCtrlRowState.
|
|
28
|
+
*
|
|
29
|
+
* @author chitanda
|
|
30
|
+
* @date 2023-06-19 18:06:12
|
|
31
|
+
* @param {ControlVO} data 行数据
|
|
32
|
+
* @param {IMobMDCtrlController} controller 多数据部件控制器
|
|
33
|
+
*/
|
|
34
|
+
constructor(
|
|
35
|
+
public data: ControlVO,
|
|
36
|
+
public controller: IMobMDCtrlController,
|
|
37
|
+
) {
|
|
38
|
+
this.data = data;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IDEMobMDCtrl,
|
|
3
|
+
IUIActionGroup,
|
|
4
|
+
IUIActionGroupDetail,
|
|
5
|
+
} from '@ibiz/model-core';
|
|
6
|
+
import {
|
|
7
|
+
IMobMDCtrlEvent,
|
|
8
|
+
IMobMDCtrlController,
|
|
9
|
+
IMobMdCtrlState,
|
|
10
|
+
IMobMDCtrlRowState,
|
|
11
|
+
MDCtrlLoadParams,
|
|
12
|
+
} from '../../../interface';
|
|
13
|
+
import { MDCtrlService } from './md-ctrl.service';
|
|
14
|
+
import { MobMDCtrlRowState } from './md-ctrl-row.state';
|
|
15
|
+
import { MDControlController } from '../../common';
|
|
16
|
+
import { ControlVO } from '../../../service';
|
|
17
|
+
import { UIActionUtil } from '../../../ui-action';
|
|
18
|
+
import { ButtonContainerState, UIActionButtonState } from '../../utils';
|
|
19
|
+
|
|
20
|
+
export class MDCtrlController
|
|
21
|
+
extends MDControlController<IDEMobMDCtrl, IMobMdCtrlState, IMobMDCtrlEvent>
|
|
22
|
+
implements IMobMDCtrlController
|
|
23
|
+
{
|
|
24
|
+
declare service: MDCtrlService;
|
|
25
|
+
|
|
26
|
+
protected initState(): void {
|
|
27
|
+
super.initState();
|
|
28
|
+
this.state.rows = [];
|
|
29
|
+
this.state.noSort = this.model.noSort === true;
|
|
30
|
+
// 多数据默认激活值为1
|
|
31
|
+
this.state.mdctrlActiveMode = 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
protected async onCreated(): Promise<void> {
|
|
35
|
+
await super.onCreated();
|
|
36
|
+
this.service = new MDCtrlService(this.model);
|
|
37
|
+
await this.service.init(this.context);
|
|
38
|
+
// 设置默认排序
|
|
39
|
+
this.setSort();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* 设置排序
|
|
44
|
+
*
|
|
45
|
+
* @author lxm
|
|
46
|
+
* @date 2022-09-28 13:09:44
|
|
47
|
+
* @param {string} key 排序字段
|
|
48
|
+
* @param {string} order 排序顺序
|
|
49
|
+
*/
|
|
50
|
+
setSort(key?: string, order?: 'asc' | 'desc'): void {
|
|
51
|
+
if (key && order) {
|
|
52
|
+
super.setSort(key, order);
|
|
53
|
+
} else {
|
|
54
|
+
// 设置默认排序或者置空
|
|
55
|
+
const { minorSortAppDEFieldId, minorSortDir } = this.model;
|
|
56
|
+
if (minorSortAppDEFieldId && minorSortDir) {
|
|
57
|
+
this.state.sortQuery = `${minorSortAppDEFieldId.toLowerCase()},${minorSortDir.toLowerCase()}`;
|
|
58
|
+
} else {
|
|
59
|
+
this.state.sortQuery = '';
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* 加载更多
|
|
66
|
+
* @author lxm
|
|
67
|
+
* @date 2023-05-22 07:33:59
|
|
68
|
+
* @return {*} {Promise<void>}
|
|
69
|
+
*/
|
|
70
|
+
async loadMore(): Promise<void> {
|
|
71
|
+
// 修复加载更多时,数据未加载成功 但是还是会继续加载的问题
|
|
72
|
+
if (this.state.total > this.state.items.length && !this.state.isLoading) {
|
|
73
|
+
await this.load({ isLoadMore: true });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* 列表多数据刷新 需重置分页
|
|
79
|
+
*
|
|
80
|
+
* @author zk
|
|
81
|
+
* @date 2023-08-11 05:08:20
|
|
82
|
+
* @return {*} {Promise<void>}
|
|
83
|
+
* @memberof MDCtrlController
|
|
84
|
+
*/
|
|
85
|
+
async refresh(): Promise<void> {
|
|
86
|
+
await this.load({ isInitialLoad: true });
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
afterLoad(args: MDCtrlLoadParams, items: ControlVO[]): Promise<IData[]> {
|
|
90
|
+
if (args.isInitialLoad) {
|
|
91
|
+
this.state.rows = [];
|
|
92
|
+
}
|
|
93
|
+
if (items && items.length > 0) {
|
|
94
|
+
this.state.rows.push(
|
|
95
|
+
...items.map(item => {
|
|
96
|
+
const row = new MobMDCtrlRowState(item, this);
|
|
97
|
+
this.initActionStates(row);
|
|
98
|
+
return row;
|
|
99
|
+
}),
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
return super.afterLoad(args, items);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* 设置列表数据
|
|
107
|
+
*
|
|
108
|
+
* @author zk
|
|
109
|
+
* @date 2023-05-26 02:05:46
|
|
110
|
+
* @param {IData[]} items
|
|
111
|
+
* @memberof ListController
|
|
112
|
+
*/
|
|
113
|
+
setData(items: IData[]): void {
|
|
114
|
+
const rows = items.map(item => {
|
|
115
|
+
const row = new MobMDCtrlRowState(item as ControlVO, this);
|
|
116
|
+
return row;
|
|
117
|
+
});
|
|
118
|
+
this.state.rows = rows;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* 获取列表数据
|
|
123
|
+
*
|
|
124
|
+
* @author zk
|
|
125
|
+
* @date 2023-05-26 02:05:35
|
|
126
|
+
* @return {*} {IData[]}
|
|
127
|
+
* @memberof ListController
|
|
128
|
+
*/
|
|
129
|
+
getAllData(): IData[] {
|
|
130
|
+
return this.state.rows.map(row => row.data);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* 界面行为组项点击
|
|
135
|
+
*
|
|
136
|
+
* @author chitanda
|
|
137
|
+
* @date 2023-06-19 18:06:18
|
|
138
|
+
* @param {IUIActionGroupDetail} detail
|
|
139
|
+
* @param {MDCtrlRowState} row
|
|
140
|
+
* @param {MouseEvent} event
|
|
141
|
+
* @return {*} {Promise<void>}
|
|
142
|
+
*/
|
|
143
|
+
async onActionClick(
|
|
144
|
+
detail: IUIActionGroupDetail,
|
|
145
|
+
row: IMobMDCtrlRowState,
|
|
146
|
+
event: MouseEvent,
|
|
147
|
+
): Promise<void> {
|
|
148
|
+
const actionId = detail.uiactionId;
|
|
149
|
+
await UIActionUtil.execAndResolved(actionId!, {
|
|
150
|
+
context: this.context,
|
|
151
|
+
params: this.params,
|
|
152
|
+
data: [row.data],
|
|
153
|
+
view: this.view,
|
|
154
|
+
event,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* 初始化按钮状态
|
|
160
|
+
*
|
|
161
|
+
* @author chitanda
|
|
162
|
+
* @date 2023-06-21 16:06:55
|
|
163
|
+
* @protected
|
|
164
|
+
* @param {MobMDCtrlRowState} row
|
|
165
|
+
*/
|
|
166
|
+
protected initActionStates(row: MobMDCtrlRowState): void {
|
|
167
|
+
const { deuiactionGroup, deuiactionGroup2 } = this.model;
|
|
168
|
+
if (deuiactionGroup) {
|
|
169
|
+
this.initUIActionGroup(row, deuiactionGroup);
|
|
170
|
+
}
|
|
171
|
+
if (deuiactionGroup2) {
|
|
172
|
+
this.initUIActionGroup(row, deuiactionGroup2);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
protected initUIActionGroup(
|
|
177
|
+
row: MobMDCtrlRowState,
|
|
178
|
+
group: IUIActionGroup,
|
|
179
|
+
): void {
|
|
180
|
+
if (!group!.uiactionGroupDetails?.length) {
|
|
181
|
+
ibiz.log.debug('操作列界面行为组没有配置界面行为');
|
|
182
|
+
}
|
|
183
|
+
const containerState = new ButtonContainerState();
|
|
184
|
+
const details = group!.uiactionGroupDetails || [];
|
|
185
|
+
details.forEach(detail => {
|
|
186
|
+
const actionid = detail.uiactionId;
|
|
187
|
+
if (actionid) {
|
|
188
|
+
const buttonState = new UIActionButtonState(
|
|
189
|
+
detail.id!,
|
|
190
|
+
this.context.srfappid!,
|
|
191
|
+
actionid,
|
|
192
|
+
);
|
|
193
|
+
containerState.addState(detail.id!, buttonState);
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
containerState.update(row.data.getOrigin());
|
|
197
|
+
row.uaColStates[group.id!] = containerState;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { IDEMobMDCtrl } from '@ibiz/model-core';
|
|
2
|
+
import { MDControlService, UIMapField } from '../../../service';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 多数据部件服务
|
|
6
|
+
*
|
|
7
|
+
* @author lxm
|
|
8
|
+
* @date 2023-05-15 09:53:35
|
|
9
|
+
* @export
|
|
10
|
+
* @class MDCtrlService
|
|
11
|
+
* @extends {MDControlService<IDEMobMDCtrl>}
|
|
12
|
+
*/
|
|
13
|
+
export class MDCtrlService extends MDControlService<IDEMobMDCtrl> {
|
|
14
|
+
/**
|
|
15
|
+
* 初始化属性映射
|
|
16
|
+
*
|
|
17
|
+
* @author lxm
|
|
18
|
+
* @date 2022-08-31 18:08:37
|
|
19
|
+
*/
|
|
20
|
+
initUIDataMap(): void {
|
|
21
|
+
super.initUIDataMap();
|
|
22
|
+
// *初始化表格数据项的属性映射
|
|
23
|
+
this.model.delistDataItems?.forEach(item => {
|
|
24
|
+
const uiKey = item.id!.toLowerCase();
|
|
25
|
+
const deField = item.appDEFieldId;
|
|
26
|
+
let mapField: UIMapField;
|
|
27
|
+
// 后台实体属性
|
|
28
|
+
if (deField) {
|
|
29
|
+
const deFieldKey = deField.toLowerCase();
|
|
30
|
+
mapField = new UIMapField(uiKey, deFieldKey, {
|
|
31
|
+
isOriginField: true,
|
|
32
|
+
});
|
|
33
|
+
} else {
|
|
34
|
+
// 前台属性
|
|
35
|
+
mapField = new UIMapField(uiKey, uiKey);
|
|
36
|
+
}
|
|
37
|
+
this.dataUIMap.set(uiKey, mapField);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -178,7 +178,7 @@ export class PanelItemController<T extends IPanelItem = IPanelItem>
|
|
|
178
178
|
// name是动态逻辑涉及到的时或state存在时
|
|
179
179
|
if (mustCalc || isOverlap(relatedNames, names)) {
|
|
180
180
|
try {
|
|
181
|
-
const ok = verifyPanelGroupLogic(this.
|
|
181
|
+
const ok = verifyPanelGroupLogic(this.data, logic);
|
|
182
182
|
switch (logic.logicCat) {
|
|
183
183
|
// 动态空输入,不满足则必填
|
|
184
184
|
case 'ITEMBLANK':
|
|
@@ -123,8 +123,12 @@ export class PanelController<
|
|
|
123
123
|
parent,
|
|
124
124
|
);
|
|
125
125
|
panel.panelItems[panelItem.id!] = panelItemController;
|
|
126
|
-
//
|
|
127
|
-
if (
|
|
126
|
+
// 有子成员的,且不是数据容器的。生成子控制器
|
|
127
|
+
if (
|
|
128
|
+
(panelItem as IPanelContainer).panelItems?.length &&
|
|
129
|
+
!(panelItemController as IPanelItemContainerController)
|
|
130
|
+
.isDataContainer
|
|
131
|
+
) {
|
|
128
132
|
await this.initPanelItemControllers(
|
|
129
133
|
(panelItem as IPanelContainer).panelItems,
|
|
130
134
|
panel,
|
|
@@ -30,6 +30,11 @@ export class SearchBarController
|
|
|
30
30
|
protected initState(): void {
|
|
31
31
|
super.initState();
|
|
32
32
|
this.state.query = '';
|
|
33
|
+
this.state.visible = !!(
|
|
34
|
+
this.model.enableQuickSearch ||
|
|
35
|
+
this.model.enableGroup ||
|
|
36
|
+
this.model.enableFilter
|
|
37
|
+
);
|
|
33
38
|
}
|
|
34
39
|
|
|
35
40
|
protected async onCreated(): Promise<void> {
|
|
@@ -39,16 +44,24 @@ export class SearchBarController
|
|
|
39
44
|
this.context.srfappid,
|
|
40
45
|
)!;
|
|
41
46
|
if (appDataEntity) {
|
|
42
|
-
const
|
|
47
|
+
const searchFields = appDataEntity.appDEFields?.filter(field => {
|
|
43
48
|
return field.enableQuickSearch;
|
|
44
49
|
});
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
const placeHolders: string[] = [];
|
|
51
|
+
searchFields?.forEach(searchField => {
|
|
52
|
+
if (searchField?.lnlanguageRes && searchField.lnlanguageRes.lanResTag) {
|
|
53
|
+
placeHolders.push(
|
|
54
|
+
ibiz.i18n.t(
|
|
55
|
+
searchField.lnlanguageRes.lanResTag,
|
|
56
|
+
searchField.logicName,
|
|
57
|
+
),
|
|
58
|
+
);
|
|
59
|
+
} else if (searchField?.logicName) {
|
|
60
|
+
placeHolders.push(searchField.logicName);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
if (placeHolders.length > 0) {
|
|
64
|
+
this.placeHolder = placeHolders.join('、');
|
|
52
65
|
}
|
|
53
66
|
}
|
|
54
67
|
}
|