@ibiz-template/runtime 0.2.8 → 0.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +619 -305
- 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 +16 -21
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts +11 -11
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +22 -16
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.d.ts +1 -1
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.js +2 -2
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.js +4 -2
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts +20 -0
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.js +57 -1
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts +1 -1
- package/out/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.js +19 -32
- package/out/controller/control/map/map.controller.d.ts +6 -0
- package/out/controller/control/map/map.controller.d.ts.map +1 -1
- package/out/controller/control/map/map.controller.js +35 -1
- package/out/controller/control/panel/panel/panel.controller.d.ts.map +1 -1
- package/out/controller/control/panel/panel/panel.controller.js +4 -20
- package/out/controller/utils/data-file-util/data-file-util.d.ts +45 -0
- package/out/controller/utils/data-file-util/data-file-util.d.ts.map +1 -0
- package/out/controller/utils/data-file-util/data-file-util.js +121 -0
- package/out/controller/utils/index.d.ts +1 -0
- package/out/controller/utils/index.d.ts.map +1 -1
- package/out/controller/utils/index.js +1 -0
- package/out/global/global-util/global-util.d.ts +2 -2
- package/out/global/global-util/global-util.d.ts.map +1 -1
- package/out/interface/controller/controller/control/panel-item/i-panel-data-container.controller.d.ts +1 -1
- package/out/interface/controller/controller/control/panel-item/i-panel-data-container.controller.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-map.state.d.ts +21 -0
- package/out/interface/controller/state/control/i-map.state.d.ts.map +1 -1
- package/out/interface/index.d.ts +2 -1
- package/out/interface/index.d.ts.map +1 -1
- package/out/interface/index.js +2 -1
- package/out/interface/provider/i-ui-login-node.provider.d.ts +23 -0
- package/out/interface/provider/i-ui-login-node.provider.d.ts.map +1 -0
- package/out/interface/provider/index.d.ts +1 -0
- package/out/interface/provider/index.d.ts.map +1 -1
- package/out/interface/ui-login/i-ui-logic-context.d.ts +85 -0
- package/out/interface/ui-login/i-ui-logic-context.d.ts.map +1 -0
- package/out/interface/ui-login/i-ui-logic-context.js +1 -0
- package/out/interface/ui-login/index.d.ts +2 -0
- package/out/interface/ui-login/index.d.ts.map +1 -0
- package/out/interface/ui-login/index.js +1 -0
- package/out/interface/util/{i-export-excel/i-export-excel.d.ts → i-excel-util/i-excel-util.d.ts} +4 -4
- package/out/interface/util/i-excel-util/i-excel-util.d.ts.map +1 -0
- package/out/interface/util/i-excel-util/i-excel-util.js +1 -0
- package/out/interface/util/index.d.ts +1 -1
- package/out/interface/util/index.d.ts.map +1 -1
- package/out/model/panel/index.d.ts +1 -0
- package/out/model/panel/index.d.ts.map +1 -1
- package/out/model/panel/index.js +1 -0
- package/out/model/panel/panel-field.d.ts +11 -0
- package/out/model/panel/panel-field.d.ts.map +1 -0
- package/out/model/panel/panel-field.js +35 -0
- package/out/model/utils/util.d.ts +12 -1
- package/out/model/utils/util.d.ts.map +1 -1
- package/out/model/utils/util.js +18 -0
- package/out/register/helper/common-register.js +1 -1
- package/out/register/helper/index.d.ts +3 -2
- package/out/register/helper/index.d.ts.map +1 -1
- package/out/register/helper/index.js +3 -2
- package/out/register/helper/ui-logic-node-register.d.ts +25 -0
- package/out/register/helper/ui-logic-node-register.d.ts.map +1 -0
- package/out/register/helper/ui-logic-node-register.js +37 -0
- package/out/service/service/entity/method/de-action.d.ts.map +1 -1
- package/out/service/service/entity/method/de-action.js +3 -0
- package/out/service/service/entity/method/fetch.d.ts.map +1 -1
- package/out/service/service/entity/method/fetch.js +1 -1
- package/out/service/vo/index.d.ts +1 -0
- package/out/service/vo/index.d.ts.map +1 -1
- package/out/service/vo/index.js +1 -0
- package/out/service/vo/panel-data/index.d.ts +2 -0
- package/out/service/vo/panel-data/index.d.ts.map +1 -0
- package/out/service/vo/panel-data/index.js +1 -0
- package/out/service/vo/panel-data/panel-data.d.ts +21 -0
- package/out/service/vo/panel-data/panel-data.d.ts.map +1 -0
- package/out/service/vo/panel-data/panel-data.js +73 -0
- package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-data-set-node-data.js +6 -2
- package/out/ui-logic/ui-logic-context.d.ts +7 -2
- package/out/ui-logic/ui-logic-context.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-context.js +5 -0
- package/out/ui-logic/ui-logic-node/index.d.ts +1 -0
- package/out/ui-logic/ui-logic-node/index.d.ts.map +1 -1
- package/out/ui-logic/ui-logic-node/index.js +1 -0
- package/out/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.d.ts +17 -0
- package/out/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.d.ts.map +1 -0
- package/out/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.js +19 -0
- package/out/ui-logic/ui-logic.d.ts.map +1 -1
- package/out/ui-logic/ui-logic.js +3 -1
- package/package.json +2 -2
- package/src/controller/common/control/md-control.controller.ts +22 -22
- package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +35 -25
- package/src/controller/control/form/form-detail/form-group-panel/form-group-panel.controller.ts +2 -2
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl-content-type.controller.ts +2 -2
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.controller.ts +66 -1
- package/src/controller/control/form/form-detail/form-mdctrl/form-mdctrl.state.ts +1 -1
- package/src/controller/control/grid/grid/grid.controller.ts +20 -32
- package/src/controller/control/map/map.controller.ts +38 -1
- package/src/controller/control/panel/panel/panel.controller.ts +4 -21
- package/src/controller/utils/data-file-util/data-file-util.ts +156 -0
- package/src/controller/utils/index.ts +1 -0
- package/src/global/global-util/global-util.ts +2 -2
- package/src/interface/controller/controller/control/panel-item/i-panel-data-container.controller.ts +1 -1
- package/src/interface/controller/state/control/i-map.state.ts +24 -0
- package/src/interface/index.ts +2 -1
- package/src/interface/provider/i-ui-login-node.provider.ts +23 -0
- package/src/interface/provider/index.ts +1 -0
- package/src/interface/ui-login/i-ui-logic-context.ts +95 -0
- package/src/interface/ui-login/index.ts +1 -0
- package/src/interface/util/{i-export-excel/i-export-excel.ts → i-excel-util/i-excel-util.ts} +3 -3
- package/src/interface/util/index.ts +1 -1
- package/src/model/panel/index.ts +1 -0
- package/src/model/panel/panel-field.ts +49 -0
- package/src/model/utils/util.ts +20 -0
- package/src/register/helper/common-register.ts +1 -1
- package/src/register/helper/index.ts +3 -2
- package/src/register/helper/ui-logic-node-register.ts +52 -0
- package/src/service/service/entity/method/de-action.ts +4 -1
- package/src/service/service/entity/method/fetch.ts +7 -1
- package/src/service/vo/index.ts +1 -0
- package/src/service/vo/panel-data/index.ts +1 -0
- package/src/service/vo/panel-data/panel-data.ts +93 -0
- package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +6 -2
- package/src/ui-logic/ui-logic-context.ts +7 -2
- package/src/ui-logic/ui-logic-node/index.ts +1 -0
- package/src/ui-logic/ui-logic-node/pf-plugin-node/pf-plugin-node.ts +24 -0
- package/src/ui-logic/ui-logic.ts +3 -0
- package/out/interface/util/i-export-excel/i-export-excel.d.ts.map +0 -1
- /package/out/interface/{util/i-export-excel/i-export-excel.js → provider/i-ui-login-node.provider.js} +0 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IDEFormMDCtrl } from '@ibiz/model-core';
|
|
2
|
+
import { clone } from 'ramda';
|
|
2
3
|
import { FormDetailController } from '../form-detail';
|
|
3
4
|
import { FormMDCtrlContentTypeController } from './form-mdctrl-content-type.controller';
|
|
4
5
|
import { FormMDCtrlDataViewController } from './form-mdctrl-data-view/form-mdctrl-data-view.controller';
|
|
@@ -33,6 +34,30 @@ export class FormMDCtrlController extends FormDetailController<IDEFormMDCtrl> {
|
|
|
33
34
|
|
|
34
35
|
declare form: EditFormController;
|
|
35
36
|
|
|
37
|
+
/**
|
|
38
|
+
* 是否显示添加按钮
|
|
39
|
+
*
|
|
40
|
+
* @memberof FormMDCtrlController
|
|
41
|
+
*/
|
|
42
|
+
get isCreate(): boolean {
|
|
43
|
+
if (this.model.buildInActions) {
|
|
44
|
+
return [1, 3, 5, 7].includes(this.model.buildInActions);
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* 是否显示删除按钮
|
|
51
|
+
*
|
|
52
|
+
* @memberof FormMDCtrlController
|
|
53
|
+
*/
|
|
54
|
+
get isDelete(): boolean {
|
|
55
|
+
if (this.model.buildInActions) {
|
|
56
|
+
return [4, 5, 6, 7].includes(this.model.buildInActions);
|
|
57
|
+
}
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
|
|
36
61
|
/**
|
|
37
62
|
* Creates an instance of FormMDCtrlController.
|
|
38
63
|
*
|
|
@@ -126,7 +151,7 @@ export class FormMDCtrlController extends FormDetailController<IDEFormMDCtrl> {
|
|
|
126
151
|
const name =
|
|
127
152
|
this.model.appDEFieldId || this.model.fieldName || this.model.id;
|
|
128
153
|
if (name) {
|
|
129
|
-
this.form.setDataValue(name, this.state.contentCtrlData);
|
|
154
|
+
this.form.setDataValue(name, clone(this.state.contentCtrlData));
|
|
130
155
|
}
|
|
131
156
|
}
|
|
132
157
|
|
|
@@ -151,4 +176,44 @@ export class FormMDCtrlController extends FormDetailController<IDEFormMDCtrl> {
|
|
|
151
176
|
setDefaultValue(): void {
|
|
152
177
|
// todo 设置默认值
|
|
153
178
|
}
|
|
179
|
+
|
|
180
|
+
/**
|
|
181
|
+
* 表单数据变更通知
|
|
182
|
+
*
|
|
183
|
+
* @author lxm
|
|
184
|
+
* @date 2022-09-20 18:09:56
|
|
185
|
+
* @param {string[]} names
|
|
186
|
+
*/
|
|
187
|
+
async dataChangeNotify(names: string[]): Promise<void> {
|
|
188
|
+
await super.dataChangeNotify(names);
|
|
189
|
+
const { resetItemNames } = this.model;
|
|
190
|
+
const mdctrlName =
|
|
191
|
+
this.model.appDEFieldId || this.model.fieldName || this.model.id!;
|
|
192
|
+
|
|
193
|
+
// 重置项,变更时自己的值置空
|
|
194
|
+
let isReset = false;
|
|
195
|
+
if (resetItemNames && resetItemNames.length > 0) {
|
|
196
|
+
resetItemNames.forEach((resetItemName: string) => {
|
|
197
|
+
if (names.includes(resetItemName)) {
|
|
198
|
+
isReset = true;
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
if (isReset) {
|
|
203
|
+
this.state.contentCtrlData = null;
|
|
204
|
+
this.setFormDataValue();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// 刚加载初始化时的值不校验,只校验自身值变更
|
|
208
|
+
if (names.includes(mdctrlName)) {
|
|
209
|
+
this.validate();
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// 有表单项更新,且是自身变更时,触发表单项更新
|
|
213
|
+
if (names.includes(mdctrlName) && this.model.deformItemUpdateId) {
|
|
214
|
+
await (this.form as EditFormController).updateFormItem(
|
|
215
|
+
this.model.deformItemUpdateId,
|
|
216
|
+
);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
154
219
|
}
|
|
@@ -32,7 +32,7 @@ import { getGridColumnProvider } from '../../../../register';
|
|
|
32
32
|
import { ControlVO, Srfuf } from '../../../../service';
|
|
33
33
|
import { MDControlController } from '../../../common';
|
|
34
34
|
import { GridNotifyState } from '../../../constant';
|
|
35
|
-
import { getDefaultValue, isValueChange } from '../../../utils';
|
|
35
|
+
import { exportData, getDefaultValue, isValueChange } from '../../../utils';
|
|
36
36
|
import { handleAllSettled, ScriptFactory } from '../../../../utils';
|
|
37
37
|
|
|
38
38
|
/**
|
|
@@ -918,28 +918,28 @@ export class GridController
|
|
|
918
918
|
this.fieldColumns;
|
|
919
919
|
// 数据格式化
|
|
920
920
|
const formatExcelData = (data: IData[]): IData[] => {
|
|
921
|
-
const codeListMap: Map<string, readonly CodeListItem[]> = new Map();
|
|
922
|
-
Object.keys(items).forEach((key: string) => {
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
});
|
|
921
|
+
// const codeListMap: Map<string, readonly CodeListItem[]> = new Map();
|
|
922
|
+
// Object.keys(items).forEach((key: string) => {
|
|
923
|
+
// if (items[key].codeList) {
|
|
924
|
+
// codeListMap.set(key, items[key].codeListItems!);
|
|
925
|
+
// }
|
|
926
|
+
// });
|
|
927
927
|
const cloneData = clone(
|
|
928
928
|
data.map(item => {
|
|
929
929
|
return item.getOrigin();
|
|
930
930
|
}),
|
|
931
931
|
);
|
|
932
|
-
cloneData.forEach(item => {
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
});
|
|
932
|
+
// cloneData.forEach(item => {
|
|
933
|
+
// const fields = Object.keys(item);
|
|
934
|
+
// fields.forEach((key: string) => {
|
|
935
|
+
// if (codeListMap.get(key)) {
|
|
936
|
+
// item[key] =
|
|
937
|
+
// codeListMap.get(key)!.find(_item => {
|
|
938
|
+
// return _item.value === item[key];
|
|
939
|
+
// })?.text || item[key];
|
|
940
|
+
// }
|
|
941
|
+
// });
|
|
942
|
+
// });
|
|
943
943
|
return cloneData;
|
|
944
944
|
};
|
|
945
945
|
const getExportData = async (): Promise<IData[]> => {
|
|
@@ -973,7 +973,7 @@ export class GridController
|
|
|
973
973
|
const formatArrayData = (
|
|
974
974
|
filterVal: string[],
|
|
975
975
|
tableData: IData[],
|
|
976
|
-
): IData[] => {
|
|
976
|
+
): IData[][] => {
|
|
977
977
|
return tableData.map(v => {
|
|
978
978
|
return filterVal.map(j => {
|
|
979
979
|
return v[j];
|
|
@@ -990,19 +990,7 @@ export class GridController
|
|
|
990
990
|
);
|
|
991
991
|
// 二维数组
|
|
992
992
|
const data = formatArrayData(filterVal, await getExportData());
|
|
993
|
-
|
|
994
|
-
throw new RuntimeError('ibiz.util.getExportExcel不存在');
|
|
995
|
-
}
|
|
996
|
-
const exportExcel = await ibiz.util.getExportExcel();
|
|
997
|
-
if (!exportExcel) {
|
|
998
|
-
throw new RuntimeError('导出模块加载错误');
|
|
999
|
-
}
|
|
1000
|
-
exportExcel.exportJsonToExcel({
|
|
1001
|
-
header, // 表头内容 数组格式
|
|
1002
|
-
data, // 具体数据 这是个二维数组
|
|
1003
|
-
filename: this.model.logicName!, // 文件名称
|
|
1004
|
-
autoWidth: true, // 单元格是否自适应
|
|
1005
|
-
});
|
|
993
|
+
await exportData(header, data, this.model.logicName!);
|
|
1006
994
|
}
|
|
1007
995
|
|
|
1008
996
|
/**
|
|
@@ -20,7 +20,7 @@ export class MapController
|
|
|
20
20
|
this.state.size = 1000;
|
|
21
21
|
this.state.pointData = [];
|
|
22
22
|
this.state.areaData = [];
|
|
23
|
-
this.
|
|
23
|
+
this.calcDefaultOptions();
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
protected async onCreated(): Promise<void> {
|
|
@@ -91,6 +91,43 @@ export class MapController
|
|
|
91
91
|
return result;
|
|
92
92
|
}
|
|
93
93
|
|
|
94
|
+
/**
|
|
95
|
+
* 计算默认选项
|
|
96
|
+
* @author lxm
|
|
97
|
+
* @date 2023-11-01 03:23:33
|
|
98
|
+
*/
|
|
99
|
+
calcDefaultOptions(): void {
|
|
100
|
+
this.state.strAreaCode = false;
|
|
101
|
+
this.state.defaultAreaCode = 100000;
|
|
102
|
+
|
|
103
|
+
if (this.model.controlParam?.ctrlParams) {
|
|
104
|
+
const { ctrlParams } = this.model.controlParam;
|
|
105
|
+
Object.keys(ctrlParams).forEach(key => {
|
|
106
|
+
const value = ctrlParams[key];
|
|
107
|
+
switch (key.toLowerCase()) {
|
|
108
|
+
case 'defaultareacode':
|
|
109
|
+
this.state.defaultAreaCode = value;
|
|
110
|
+
break;
|
|
111
|
+
case 'strareacode':
|
|
112
|
+
this.state.strAreaCode = value === 'true';
|
|
113
|
+
break;
|
|
114
|
+
case 'jsonbaseurl':
|
|
115
|
+
this.state.jsonBaseUrl = value;
|
|
116
|
+
break;
|
|
117
|
+
default:
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// 根据strAreaCode格式化默认区域代码的数值还是字符串
|
|
124
|
+
this.state.defaultAreaCode = this.state.strAreaCode
|
|
125
|
+
? `${this.state.defaultAreaCode}`
|
|
126
|
+
: Number(this.state.defaultAreaCode);
|
|
127
|
+
|
|
128
|
+
this.state.areaCode = this.state.defaultAreaCode;
|
|
129
|
+
}
|
|
130
|
+
|
|
94
131
|
/**
|
|
95
132
|
* 地图变更事件处理
|
|
96
133
|
* @author lxm
|
|
@@ -16,7 +16,9 @@ import {
|
|
|
16
16
|
IControlProvider,
|
|
17
17
|
IPanelItemContainerController,
|
|
18
18
|
} from '../../../../interface';
|
|
19
|
+
import { getAllPanelField } from '../../../../model';
|
|
19
20
|
import { getPanelItemProvider } from '../../../../register';
|
|
21
|
+
import { PanelData } from '../../../../service/vo';
|
|
20
22
|
import { ControlController } from '../../../common';
|
|
21
23
|
import { PanelNotifyState } from '../../../constant';
|
|
22
24
|
import { ControllerEvent } from '../../../utils';
|
|
@@ -222,27 +224,8 @@ export class PanelController<
|
|
|
222
224
|
* @memberof PanelController
|
|
223
225
|
*/
|
|
224
226
|
convertData(data: IData): IData {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
// this.model.panelFields.forEach(field => {
|
|
228
|
-
// if (field.id !== field.dataFieldName) {
|
|
229
|
-
// map[field.id] = field.dataFieldName;
|
|
230
|
-
// }
|
|
231
|
-
// });
|
|
232
|
-
|
|
233
|
-
// return new Proxy(data, {
|
|
234
|
-
// get(target, p, receiver) {
|
|
235
|
-
// if (Reflect.ownKeys(map).includes(p)) {
|
|
236
|
-
// return Reflect.get(target, map[p], receiver);
|
|
237
|
-
// }
|
|
238
|
-
// return Reflect.get(target, p, receiver);
|
|
239
|
-
// },
|
|
240
|
-
// set(target, p, value, receiver) {
|
|
241
|
-
// Reflect.set(target, p, value, receiver);
|
|
242
|
-
// return true;
|
|
243
|
-
// },
|
|
244
|
-
// });
|
|
245
|
-
return data;
|
|
227
|
+
const fields = getAllPanelField(this.model);
|
|
228
|
+
return new PanelData(fields, data);
|
|
246
229
|
}
|
|
247
230
|
|
|
248
231
|
/**
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import {
|
|
2
|
+
IPortalAsyncAction,
|
|
3
|
+
IPortalMessage,
|
|
4
|
+
RuntimeError,
|
|
5
|
+
} from '@ibiz-template/core';
|
|
6
|
+
import { IAppDataEntity } from '@ibiz/model-core';
|
|
7
|
+
|
|
8
|
+
// 异步导入URL
|
|
9
|
+
const asyncImportUrl = '/asyncimportdata2';
|
|
10
|
+
|
|
11
|
+
// 标准导入url
|
|
12
|
+
const importUrl = '/importdata2';
|
|
13
|
+
|
|
14
|
+
// 导入结果类型
|
|
15
|
+
export type ImportDataResult = {
|
|
16
|
+
total: number;
|
|
17
|
+
success: number;
|
|
18
|
+
message?: string;
|
|
19
|
+
};
|
|
20
|
+
// 导出结果类型
|
|
21
|
+
export type IExportDataResult = {
|
|
22
|
+
// 是否导出成功
|
|
23
|
+
ok: boolean;
|
|
24
|
+
// 导出文件地址 (后期异步导出可能会用到)
|
|
25
|
+
url?: string;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 监听异步作业
|
|
30
|
+
*
|
|
31
|
+
* @author zk
|
|
32
|
+
* @date 2023-10-31 03:10:31
|
|
33
|
+
* @param {string} id
|
|
34
|
+
* @return {*} {Promise<ImportDataResult>}
|
|
35
|
+
*/
|
|
36
|
+
function listenAsyncAction(id: string): Promise<ImportDataResult> {
|
|
37
|
+
return new Promise(resolve => {
|
|
38
|
+
const callBack = (msg: IPortalMessage): void => {
|
|
39
|
+
// 兼容接口返回类型与实际返回类型不一致
|
|
40
|
+
const messageid = msg.messageid || (msg.data as IData).asyncacitonid;
|
|
41
|
+
if (
|
|
42
|
+
id === messageid &&
|
|
43
|
+
(msg.data as IPortalAsyncAction).actionstate === 30
|
|
44
|
+
) {
|
|
45
|
+
// 返回结果是字符串, 需解析
|
|
46
|
+
try {
|
|
47
|
+
const result = JSON.parse(
|
|
48
|
+
(msg.data as IPortalAsyncAction).actionresult as string,
|
|
49
|
+
);
|
|
50
|
+
resolve(result as ImportDataResult);
|
|
51
|
+
} catch (error) {
|
|
52
|
+
throw new RuntimeError('解析数据发生错误');
|
|
53
|
+
} finally {
|
|
54
|
+
// 异步作业结束 取消订阅
|
|
55
|
+
ibiz.mc.command.asyncAction.off(callBack);
|
|
56
|
+
}
|
|
57
|
+
} else if ((msg.data as IPortalAsyncAction).actionstate === 40) {
|
|
58
|
+
resolve({
|
|
59
|
+
total: 0,
|
|
60
|
+
success: 0,
|
|
61
|
+
message: (msg.data as IPortalAsyncAction).actionresult as string,
|
|
62
|
+
});
|
|
63
|
+
// 异步作业结束 取消订阅
|
|
64
|
+
ibiz.mc.command.asyncAction.off(callBack);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
ibiz.mc.command.asyncAction.on(callBack);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* 异步作业导入方法
|
|
73
|
+
*
|
|
74
|
+
* @author zk
|
|
75
|
+
* @date 2023-10-31 02:10:06
|
|
76
|
+
* @export
|
|
77
|
+
* @param {File} file
|
|
78
|
+
* @param {IAppDataEntity} appDataEntity
|
|
79
|
+
* @return {*} {Promise<IData>}
|
|
80
|
+
*/
|
|
81
|
+
export async function asyncImportData(
|
|
82
|
+
file: File,
|
|
83
|
+
appDataEntity: IAppDataEntity,
|
|
84
|
+
): Promise<ImportDataResult> {
|
|
85
|
+
const data = new FormData();
|
|
86
|
+
data.append('file', file);
|
|
87
|
+
const url = `${appDataEntity.codeName2!.toLowerCase()}/${asyncImportUrl}`;
|
|
88
|
+
const res = await ibiz.net.request(url, {
|
|
89
|
+
method: 'post',
|
|
90
|
+
data,
|
|
91
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
92
|
+
});
|
|
93
|
+
return listenAsyncAction(res.data.asyncacitonid);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* 标准导入方法
|
|
98
|
+
*
|
|
99
|
+
* @author zk
|
|
100
|
+
* @date 2023-10-31 02:10:29
|
|
101
|
+
* @export
|
|
102
|
+
* @param {File} file
|
|
103
|
+
* @param {IAppDataEntity} appDataEntity
|
|
104
|
+
* @return {*} {Promise<IData>}
|
|
105
|
+
*/
|
|
106
|
+
export async function importData(
|
|
107
|
+
file: File,
|
|
108
|
+
appDataEntity: IAppDataEntity,
|
|
109
|
+
): Promise<ImportDataResult> {
|
|
110
|
+
const data = new FormData();
|
|
111
|
+
data.append('file', file);
|
|
112
|
+
const url = `${appDataEntity.codeName2!.toLowerCase()}/${importUrl}`;
|
|
113
|
+
const res = await ibiz.net.request(url, {
|
|
114
|
+
method: 'post',
|
|
115
|
+
data,
|
|
116
|
+
headers: { 'Content-Type': 'multipart/form-data' },
|
|
117
|
+
});
|
|
118
|
+
// 错误情况 服务层会抛出异常
|
|
119
|
+
return res.data as ImportDataResult;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* 标准导出方法
|
|
124
|
+
*
|
|
125
|
+
* @author zk
|
|
126
|
+
* @date 2023-10-31 09:10:13
|
|
127
|
+
* @export
|
|
128
|
+
* @param {string[]} header
|
|
129
|
+
* @param {IData[][]} data
|
|
130
|
+
* @param {string} fileName
|
|
131
|
+
* @return {*} {Promise<IExportDataResult>}
|
|
132
|
+
*/
|
|
133
|
+
export async function exportData(
|
|
134
|
+
header: string[],
|
|
135
|
+
data: IData[][],
|
|
136
|
+
fileName: string,
|
|
137
|
+
): Promise<IExportDataResult> {
|
|
138
|
+
if (!ibiz.util.getExcelUtil) {
|
|
139
|
+
throw new RuntimeError('ibiz.util.getExportExcel不存在');
|
|
140
|
+
}
|
|
141
|
+
const exportExcel = await ibiz.util.getExcelUtil();
|
|
142
|
+
if (!exportExcel) {
|
|
143
|
+
throw new RuntimeError('导出模块加载错误');
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
exportExcel.exportJsonToExcel({
|
|
147
|
+
header, // 表头内容 数组格式
|
|
148
|
+
data, // 具体数据 这是个二维数组
|
|
149
|
+
filename: fileName, // 文件名称
|
|
150
|
+
autoWidth: true, // 单元格是否自适应
|
|
151
|
+
});
|
|
152
|
+
return { ok: true };
|
|
153
|
+
} catch (error) {
|
|
154
|
+
return { ok: false };
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IExcelUtil } from '../../interface';
|
|
2
2
|
import {
|
|
3
3
|
TextUtil,
|
|
4
4
|
LayoutPanelUtil,
|
|
@@ -67,7 +67,7 @@ export class GlobalUtil {
|
|
|
67
67
|
* @author lxm
|
|
68
68
|
* @date 2023-08-24 10:47:06
|
|
69
69
|
*/
|
|
70
|
-
|
|
70
|
+
getExcelUtil?: () => Promise<IExcelUtil>;
|
|
71
71
|
|
|
72
72
|
/**
|
|
73
73
|
* 显示应用级别的加载提示
|
|
@@ -27,6 +27,22 @@ export interface IMapState extends IMDControlState {
|
|
|
27
27
|
*/
|
|
28
28
|
areaData: IMapData[];
|
|
29
29
|
|
|
30
|
+
/**
|
|
31
|
+
* 区域编码是否是字符串
|
|
32
|
+
* @author lxm
|
|
33
|
+
* @date 2023-11-01 03:30:09
|
|
34
|
+
* @type {boolean}
|
|
35
|
+
*/
|
|
36
|
+
strAreaCode: boolean;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 默认显示的区域代码
|
|
40
|
+
* @author lxm
|
|
41
|
+
* @date 2023-10-31 09:03:23
|
|
42
|
+
* @type {string}
|
|
43
|
+
*/
|
|
44
|
+
defaultAreaCode: string | number;
|
|
45
|
+
|
|
30
46
|
/**
|
|
31
47
|
* 当前区域代码
|
|
32
48
|
* @author lxm
|
|
@@ -34,6 +50,14 @@ export interface IMapState extends IMDControlState {
|
|
|
34
50
|
* @type {string}
|
|
35
51
|
*/
|
|
36
52
|
areaCode: string | number;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 地图json数据基础路径
|
|
56
|
+
* @author lxm
|
|
57
|
+
* @date 2023-11-01 03:37:19
|
|
58
|
+
* @type {string}
|
|
59
|
+
*/
|
|
60
|
+
jsonBaseUrl?: string;
|
|
37
61
|
}
|
|
38
62
|
|
|
39
63
|
/**
|
package/src/interface/index.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export * from './common';
|
|
2
|
-
export * from './util';
|
|
3
2
|
export * from './provider';
|
|
4
3
|
export * from './register';
|
|
5
4
|
export * from './controller';
|
|
@@ -8,3 +7,5 @@ export * from './engine';
|
|
|
8
7
|
export * from './logic-scheduler';
|
|
9
8
|
export * from './model';
|
|
10
9
|
export * from './studio';
|
|
10
|
+
export * from './ui-login';
|
|
11
|
+
export * from './util';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { IDEUIPFPluginLogic } from '@ibiz/model-core';
|
|
2
|
+
import { IUILogicContext } from '../ui-login';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 界面逻辑前端节点适配器
|
|
6
|
+
*
|
|
7
|
+
* @author chitanda
|
|
8
|
+
* @date 2023-11-01 17:11:16
|
|
9
|
+
* @export
|
|
10
|
+
* @interface IUILogicNodeProvider
|
|
11
|
+
*/
|
|
12
|
+
export interface IUILogicNodeProvider {
|
|
13
|
+
/**
|
|
14
|
+
* 执行界面逻辑 节点
|
|
15
|
+
*
|
|
16
|
+
* @author chitanda
|
|
17
|
+
* @date 2023-11-01 18:11:17
|
|
18
|
+
* @param {IDEUIPFPluginLogic} model
|
|
19
|
+
* @param {IUILogicContext} ctx
|
|
20
|
+
* @return {*} {Promise<unknown>}
|
|
21
|
+
*/
|
|
22
|
+
exec(model: IDEUIPFPluginLogic, ctx: IUILogicContext): Promise<unknown>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
export interface IUILogicContext {
|
|
2
|
+
/**
|
|
3
|
+
* 上一次返回值
|
|
4
|
+
*/
|
|
5
|
+
lastReturn: unknown;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* 上下文
|
|
9
|
+
*/
|
|
10
|
+
readonly context: IContext;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* 数据
|
|
14
|
+
*/
|
|
15
|
+
readonly data: IData;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* 视图参数
|
|
19
|
+
*/
|
|
20
|
+
readonly viewParam: IParams;
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 界面逻辑参数
|
|
24
|
+
*
|
|
25
|
+
* @author chitanda
|
|
26
|
+
* @date 2023-11-01 17:11:52
|
|
27
|
+
* @type {Record<string, unknown>}
|
|
28
|
+
*/
|
|
29
|
+
readonly params: Record<string, unknown>;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* UI 逻辑执行返回值
|
|
33
|
+
*
|
|
34
|
+
* @author chitanda
|
|
35
|
+
* @date 2023-11-01 17:11:29
|
|
36
|
+
* @type {unknown}
|
|
37
|
+
*/
|
|
38
|
+
result: unknown;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 是否存在结束节点
|
|
42
|
+
*
|
|
43
|
+
* @author chitanda
|
|
44
|
+
* @date 2023-11-01 17:11:57
|
|
45
|
+
* @type {boolean}
|
|
46
|
+
*/
|
|
47
|
+
isEndNode: boolean;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* 默认参数节点名称
|
|
51
|
+
*
|
|
52
|
+
* @default 'Default'
|
|
53
|
+
* @author chitanda
|
|
54
|
+
* @date 2023-11-01 17:11:31
|
|
55
|
+
* @type {string}
|
|
56
|
+
*/
|
|
57
|
+
defaultParamName: string;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* 重置实体逻辑参数
|
|
61
|
+
*
|
|
62
|
+
* @author chitanda
|
|
63
|
+
* @date 2023-11-01 17:11:18
|
|
64
|
+
* @param {string} name
|
|
65
|
+
*/
|
|
66
|
+
resetParam(name: string): void;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* 设置上一次返回值
|
|
70
|
+
*
|
|
71
|
+
* @author chitanda
|
|
72
|
+
* @date 2023-11-01 17:11:31
|
|
73
|
+
* @param {string} name
|
|
74
|
+
*/
|
|
75
|
+
renewParam(name: string): void;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* 设置上一次返回值
|
|
79
|
+
*
|
|
80
|
+
* @author chitanda
|
|
81
|
+
* @date 2023-11-01 17:11:48
|
|
82
|
+
* @param {unknown} value
|
|
83
|
+
*/
|
|
84
|
+
setLastReturn(value: unknown): void;
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* 是否是实体参数变量(即后台数据对象)
|
|
88
|
+
*
|
|
89
|
+
* @author chitanda
|
|
90
|
+
* @date 2023-11-01 17:11:01
|
|
91
|
+
* @param {string} paramId
|
|
92
|
+
* @return {*} {boolean}
|
|
93
|
+
*/
|
|
94
|
+
isEntityParam(paramId: string): boolean;
|
|
95
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type { IUILogicContext } from './i-ui-logic-context';
|
package/src/interface/util/{i-export-excel/i-export-excel.ts → i-excel-util/i-excel-util.ts}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* excel文件工具
|
|
3
3
|
* @author lxm
|
|
4
4
|
* @date 2023-08-24 10:45:32
|
|
5
5
|
* @export
|
|
6
|
-
* @interface
|
|
6
|
+
* @interface IExcelUtil
|
|
7
7
|
*/
|
|
8
|
-
export interface
|
|
8
|
+
export interface IExcelUtil {
|
|
9
9
|
/**
|
|
10
10
|
* 导出成Excel文件
|
|
11
11
|
* @author lxm
|
|
@@ -12,4 +12,4 @@ export { IOverlayController } from './i-overlay-controller/i-overlay-controller'
|
|
|
12
12
|
export { IOverlayPopoverContainer } from './i-overlay-popover-container/i-overlay-popover-container';
|
|
13
13
|
|
|
14
14
|
export { IScriptFunctionOpts } from './script/i-script-function';
|
|
15
|
-
export {
|
|
15
|
+
export { IExcelUtil } from './i-excel-util/i-excel-util';
|
package/src/model/panel/index.ts
CHANGED