@ibiz-template/runtime 0.4.10 → 0.4.12
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 +996 -290
- package/dist/index.system.min.js +2 -2
- package/out/config/global-config.d.ts.map +1 -1
- package/out/config/global-config.js +1 -0
- package/out/controller/common/control/control.controller.d.ts +14 -0
- package/out/controller/common/control/control.controller.d.ts.map +1 -1
- package/out/controller/common/control/control.controller.js +21 -0
- package/out/controller/common/control/md-control.controller.d.ts +9 -0
- package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
- package/out/controller/common/control/md-control.controller.js +20 -0
- package/out/controller/common/view/view.controller.d.ts +8 -1
- package/out/controller/common/view/view.controller.d.ts.map +1 -1
- package/out/controller/common/view/view.controller.js +12 -4
- 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 +36 -38
- package/out/controller/control/form/edit-form/edit-form.service.d.ts +3 -2
- package/out/controller/control/form/edit-form/edit-form.service.d.ts.map +1 -1
- package/out/controller/control/form/edit-form/edit-form.service.js +11 -2
- package/out/controller/control/form/form/form.controller.d.ts +0 -7
- package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
- package/out/controller/control/form/form/form.controller.js +0 -11
- package/out/controller/control/form/form/form.service.d.ts +24 -0
- package/out/controller/control/form/form/form.service.d.ts.map +1 -0
- package/out/controller/control/form/form/form.service.js +45 -0
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.d.ts +1 -1
- package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +1 -1
- package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts +8 -0
- package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-item/form-item.controller.js +14 -5
- package/out/controller/control/form/search-form/search-form.controller.d.ts.map +1 -1
- package/out/controller/control/form/search-form/search-form.controller.js +1 -5
- package/out/controller/control/form/search-form/search-form.service.d.ts +4 -3
- 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 +8 -3
- package/out/controller/control/gantt/gantt.controller.d.ts +55 -1
- package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
- package/out/controller/control/gantt/gantt.controller.js +150 -0
- package/out/controller/control/gantt/gantt.service.d.ts +69 -6
- package/out/controller/control/gantt/gantt.service.d.ts.map +1 -1
- package/out/controller/control/gantt/gantt.service.js +196 -5
- package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
- package/out/controller/control/search-bar/search-bar.controller.js +10 -6
- package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts +8 -1
- package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts.map +1 -1
- package/out/controller/control/wizard-panel/wizard-panel.controller.js +22 -7
- package/out/interface/common/i-global-config/i-global-view-config.d.ts +7 -0
- package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-control.controller.d.ts +14 -0
- package/out/interface/controller/controller/control/i-control.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-drbar.controller.d.ts +7 -0
- package/out/interface/controller/controller/control/i-drbar.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/view/i-view.controller.d.ts +14 -0
- package/out/interface/controller/controller/view/i-view.controller.d.ts.map +1 -1
- package/out/interface/controller/event/view/i-de-index-view.event.d.ts +12 -0
- package/out/interface/controller/event/view/i-de-index-view.event.d.ts.map +1 -0
- package/out/interface/controller/event/view/i-de-index-view.event.js +1 -0
- package/out/interface/controller/event/view/index.d.ts +1 -0
- package/out/interface/controller/event/view/index.d.ts.map +1 -1
- package/out/interface/controller/event/view/index.js +1 -0
- package/out/interface/controller/state/control/i-control.state.d.ts +8 -0
- package/out/interface/controller/state/control/i-control.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-drbar.state.d.ts +28 -7
- package/out/interface/controller/state/control/i-drbar.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-gantt.state.d.ts +94 -3
- package/out/interface/controller/state/control/i-gantt.state.d.ts.map +1 -1
- package/out/interface/controller/state/view/i-de-index-view.state.d.ts +19 -0
- package/out/interface/controller/state/view/i-de-index-view.state.d.ts.map +1 -0
- package/out/interface/controller/state/view/i-de-index-view.state.js +1 -0
- package/out/interface/controller/state/view/i-edit-view2.state.d.ts +8 -0
- package/out/interface/controller/state/view/i-edit-view2.state.d.ts.map +1 -1
- package/out/interface/controller/state/view/i-view.state.d.ts +8 -0
- package/out/interface/controller/state/view/i-view.state.d.ts.map +1 -1
- package/out/interface/controller/state/view/index.d.ts +1 -0
- package/out/interface/controller/state/view/index.d.ts.map +1 -1
- package/out/interface/controller/state/view/index.js +1 -0
- package/out/interface/service/service/i-auth.service.d.ts +3 -2
- package/out/interface/service/service/i-auth.service.d.ts.map +1 -1
- package/out/register/helper/ui-action-register.d.ts.map +1 -1
- package/out/register/helper/ui-action-register.js +6 -1
- package/out/service/service/auth/v7-auth.service.d.ts +1 -1
- package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
- package/out/service/service/auth/v7-auth.service.js +12 -7
- package/out/service/service/entity/de.service.d.ts.map +1 -1
- package/out/service/service/entity/de.service.js +1 -8
- package/out/service/service/entity/method/de-action.d.ts.map +1 -1
- package/out/service/service/entity/method/de-action.js +5 -5
- package/out/service/utils/de-cache/de-cache.d.ts +19 -0
- package/out/service/utils/de-cache/de-cache.d.ts.map +1 -1
- package/out/service/utils/de-cache/de-cache.js +54 -4
- package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts +19 -0
- package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts.map +1 -0
- package/out/service/vo/gantt-node-data/gantt-code-list-node-data.js +14 -0
- package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts +19 -0
- package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts.map +1 -0
- package/out/service/vo/gantt-node-data/gantt-data-set-node-data.js +14 -0
- package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts +9 -0
- package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts.map +1 -0
- package/out/service/vo/gantt-node-data/gantt-node-data-util.js +19 -0
- package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts +17 -0
- package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts.map +1 -0
- package/out/service/vo/gantt-node-data/gantt-static-node-data.js +13 -0
- package/out/service/vo/gantt-node-data/index.d.ts +4 -0
- package/out/service/vo/gantt-node-data/index.d.ts.map +1 -0
- package/out/service/vo/gantt-node-data/index.js +3 -0
- 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/ui-action/provider/index.d.ts.map +1 -1
- package/out/ui-action/provider/index.js +4 -0
- package/out/ui-action/provider/loginout-ui-action-provider.d.ts +16 -0
- package/out/ui-action/provider/loginout-ui-action-provider.d.ts.map +1 -0
- package/out/ui-action/provider/loginout-ui-action-provider.js +25 -0
- package/out/utils/layout-panel-util/layout-panel-util.d.ts.map +1 -1
- package/out/utils/layout-panel-util/layout-panel-util.js +16 -2
- package/package.json +3 -3
- package/src/config/global-config.ts +1 -0
- package/src/controller/common/control/control.controller.ts +23 -0
- package/src/controller/common/control/md-control.controller.ts +21 -0
- package/src/controller/common/view/view.controller.ts +12 -5
- package/src/controller/control/form/edit-form/edit-form.controller.ts +59 -58
- package/src/controller/control/form/edit-form/edit-form.service.ts +11 -2
- package/src/controller/control/form/form/form.controller.ts +0 -14
- package/src/controller/control/form/form/form.service.ts +63 -0
- package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +1 -1
- package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +15 -5
- package/src/controller/control/form/search-form/search-form.controller.ts +1 -5
- package/src/controller/control/form/search-form/search-form.service.ts +8 -3
- package/src/controller/control/gantt/gantt.controller.ts +179 -1
- package/src/controller/control/gantt/gantt.service.ts +305 -6
- package/src/controller/control/search-bar/search-bar.controller.ts +11 -8
- package/src/controller/control/wizard-panel/wizard-panel.controller.ts +27 -7
- package/src/interface/common/i-global-config/i-global-view-config.ts +8 -0
- package/src/interface/controller/controller/control/i-control.controller.ts +16 -0
- package/src/interface/controller/controller/control/i-drbar.controller.ts +8 -0
- package/src/interface/controller/controller/view/i-view.controller.ts +16 -0
- package/src/interface/controller/event/view/i-de-index-view.event.ts +12 -0
- package/src/interface/controller/event/view/index.ts +1 -0
- package/src/interface/controller/state/control/i-control.state.ts +9 -0
- package/src/interface/controller/state/control/i-drbar.state.ts +32 -8
- package/src/interface/controller/state/control/i-gantt.state.ts +106 -4
- package/src/interface/controller/state/view/i-de-index-view.state.ts +19 -0
- package/src/interface/controller/state/view/i-edit-view2.state.ts +10 -1
- package/src/interface/controller/state/view/i-view.state.ts +9 -0
- package/src/interface/controller/state/view/index.ts +1 -0
- package/src/interface/service/service/i-auth.service.ts +3 -2
- package/src/register/helper/ui-action-register.ts +7 -1
- package/src/service/service/auth/v7-auth.service.ts +18 -8
- package/src/service/service/entity/de.service.ts +2 -1
- package/src/service/service/entity/method/de-action.ts +5 -4
- package/src/service/utils/de-cache/de-cache.ts +64 -3
- package/src/service/vo/gantt-node-data/gantt-code-list-node-data.ts +68 -0
- package/src/service/vo/gantt-node-data/gantt-data-set-node-data.ts +68 -0
- package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +26 -0
- package/src/service/vo/gantt-node-data/gantt-static-node-data.ts +50 -0
- package/src/service/vo/gantt-node-data/index.ts +3 -0
- package/src/service/vo/index.ts +1 -0
- package/src/ui-action/provider/index.ts +4 -0
- package/src/ui-action/provider/loginout-ui-action-provider.ts +31 -0
- package/src/utils/layout-panel-util/layout-panel-util.ts +17 -2
|
@@ -106,6 +106,21 @@ export class FormItemController
|
|
|
106
106
|
return undefined;
|
|
107
107
|
}
|
|
108
108
|
|
|
109
|
+
/**
|
|
110
|
+
* 标签标题
|
|
111
|
+
* @author lxm
|
|
112
|
+
* @date 2023-12-12 09:48:21
|
|
113
|
+
* @readonly
|
|
114
|
+
* @type {(string | undefined)}
|
|
115
|
+
*/
|
|
116
|
+
get labelCaption(): string | undefined {
|
|
117
|
+
const { captionItemName } = this.model;
|
|
118
|
+
if (captionItemName) {
|
|
119
|
+
return this.data[captionItemName];
|
|
120
|
+
}
|
|
121
|
+
return this.model.caption;
|
|
122
|
+
}
|
|
123
|
+
|
|
109
124
|
/**
|
|
110
125
|
* Creates an instance of FormItemController.
|
|
111
126
|
*
|
|
@@ -268,11 +283,6 @@ export class FormItemController
|
|
|
268
283
|
|
|
269
284
|
// 计算启用条件
|
|
270
285
|
this.calcEnableCond();
|
|
271
|
-
|
|
272
|
-
// 触发默认值
|
|
273
|
-
if (state === FormNotifyState.LOAD) {
|
|
274
|
-
this.setDefaultValue(false);
|
|
275
|
-
}
|
|
276
286
|
}
|
|
277
287
|
|
|
278
288
|
protected calcDynamicLogic(names: string[], mustCalc: boolean = false): void {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RuntimeError
|
|
1
|
+
import { RuntimeError } from '@ibiz-template/core';
|
|
2
2
|
import { IDESearchForm } from '@ibiz/model-core';
|
|
3
3
|
import {
|
|
4
4
|
ISearchFormController,
|
|
@@ -77,9 +77,6 @@ export class SearchFormController
|
|
|
77
77
|
async load(): Promise<IData> {
|
|
78
78
|
const queryParams = { ...this.params };
|
|
79
79
|
|
|
80
|
-
// 新建默认值给到graft接口,接口会回来
|
|
81
|
-
const params = await this.getDraftParams();
|
|
82
|
-
Object.assign(queryParams, params);
|
|
83
80
|
await this.evt.emit('onBeforeLoadDraft', { params: queryParams });
|
|
84
81
|
let res;
|
|
85
82
|
try {
|
|
@@ -91,7 +88,6 @@ export class SearchFormController
|
|
|
91
88
|
throw error;
|
|
92
89
|
}
|
|
93
90
|
this.state.data = res.data;
|
|
94
|
-
mergeDefaultInLeft(this.data, params);
|
|
95
91
|
this.state.isLoaded = true;
|
|
96
92
|
this.formStateNotify(FormNotifyState.DRAFT);
|
|
97
93
|
this.actionNotification('GETDRAFTSUCCESS');
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { IHttpResponse, recursiveIterate } from '@ibiz-template/core';
|
|
2
2
|
import { IDESearchForm, IDEFormDetail } from '@ibiz/model-core';
|
|
3
|
-
import {
|
|
3
|
+
import { ControlVO, UIMapField } from '../../../../service';
|
|
4
|
+
import { FormService } from '../form/form.service';
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* 搜索表单服务
|
|
@@ -14,7 +15,7 @@ import { ControlService, ControlVO, UIMapField } from '../../../../service';
|
|
|
14
15
|
*/
|
|
15
16
|
export class SearchFormService<
|
|
16
17
|
T extends IDESearchForm = IDESearchForm,
|
|
17
|
-
> extends
|
|
18
|
+
> extends FormService<T> {
|
|
18
19
|
/**
|
|
19
20
|
* 执行获取草稿方法
|
|
20
21
|
*
|
|
@@ -25,12 +26,16 @@ export class SearchFormService<
|
|
|
25
26
|
* @returns {*} {Promise<IHttpResponse>}
|
|
26
27
|
*/
|
|
27
28
|
async getDraft(
|
|
28
|
-
|
|
29
|
+
context: IParams,
|
|
29
30
|
params: IParams = {},
|
|
30
31
|
): Promise<IHttpResponse<ControlVO>> {
|
|
31
32
|
const tempData = this.getFilteredData({ ...params });
|
|
32
33
|
let res = { ok: true, status: 200, data: tempData } as IHttpResponse;
|
|
33
34
|
res = this.handleResponse(res);
|
|
35
|
+
// 设置默认值
|
|
36
|
+
if (res.ok && res.data) {
|
|
37
|
+
this.setDefault(res.data, context, params, 'create');
|
|
38
|
+
}
|
|
34
39
|
return res as IHttpResponse<ControlVO>;
|
|
35
40
|
}
|
|
36
41
|
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
/* eslint-disable no-param-reassign */
|
|
2
|
+
import { recursiveIterate } from '@ibiz-template/core';
|
|
1
3
|
import { IDEGantt } from '@ibiz/model-core';
|
|
2
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
IGanttController,
|
|
6
|
+
IGanttEvent,
|
|
7
|
+
IGanttNodeData,
|
|
8
|
+
IGanttState,
|
|
9
|
+
MDCtrlLoadParams,
|
|
10
|
+
} from '../../../interface';
|
|
3
11
|
import { MDControlController } from '../../common';
|
|
4
12
|
import { GanttService } from './gantt.service';
|
|
13
|
+
import { ContextMenuController } from '../context-menu';
|
|
5
14
|
|
|
6
15
|
/**
|
|
7
16
|
* 甘特图控制器
|
|
@@ -19,9 +28,178 @@ export class GanttController
|
|
|
19
28
|
{
|
|
20
29
|
declare service: GanttService;
|
|
21
30
|
|
|
31
|
+
/**
|
|
32
|
+
* 上下文菜单控制器
|
|
33
|
+
*
|
|
34
|
+
* @author tony001
|
|
35
|
+
* @date 2023-12-11 16:12:57
|
|
36
|
+
* @type {{ [p: string]: ContextMenuController }}
|
|
37
|
+
*/
|
|
38
|
+
contextMenus: { [p: string]: ContextMenuController } = {};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* 是否启用快速搜索
|
|
42
|
+
*
|
|
43
|
+
* @author tony001
|
|
44
|
+
* @date 2023-12-11 16:12:13
|
|
45
|
+
* @type {boolean}
|
|
46
|
+
*/
|
|
47
|
+
enableQuickSearch: boolean = false;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* 初始化状态
|
|
51
|
+
*
|
|
52
|
+
* @author tony001
|
|
53
|
+
* @date 2023-12-11 16:12:20
|
|
54
|
+
* @protected
|
|
55
|
+
*/
|
|
56
|
+
protected initState(): void {
|
|
57
|
+
super.initState();
|
|
58
|
+
this.state.size = 0;
|
|
59
|
+
this.state.query = '';
|
|
60
|
+
}
|
|
61
|
+
|
|
22
62
|
protected async onCreated(): Promise<void> {
|
|
23
63
|
await super.onCreated();
|
|
64
|
+
|
|
65
|
+
// 快速搜索
|
|
66
|
+
if (this.model.detreeNodes?.[0].enableQuickSearch) {
|
|
67
|
+
this.enableQuickSearch = true;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// 计算快速搜索占位符
|
|
71
|
+
if (this.dataEntity) {
|
|
72
|
+
const searchFields = this.dataEntity.appDEFields?.filter(field => {
|
|
73
|
+
return field.enableQuickSearch;
|
|
74
|
+
});
|
|
75
|
+
const placeHolders: string[] = [];
|
|
76
|
+
searchFields?.forEach(searchField => {
|
|
77
|
+
if (searchField?.lnlanguageRes && searchField.lnlanguageRes.lanResTag) {
|
|
78
|
+
placeHolders.push(
|
|
79
|
+
ibiz.i18n.t(
|
|
80
|
+
searchField.lnlanguageRes.lanResTag,
|
|
81
|
+
searchField.logicName,
|
|
82
|
+
),
|
|
83
|
+
);
|
|
84
|
+
} else if (searchField?.logicName) {
|
|
85
|
+
placeHolders.push(searchField.logicName);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
if (placeHolders.length > 0) {
|
|
89
|
+
this.state.placeHolder = placeHolders.join('、');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
24
93
|
this.service = new GanttService(this.model);
|
|
25
94
|
await this.service.init(this.context);
|
|
95
|
+
|
|
96
|
+
// 初始化上下文菜单控制器
|
|
97
|
+
this.model.detreeNodes!.forEach(node => {
|
|
98
|
+
if (node.decontextMenu?.detoolbarItems?.length) {
|
|
99
|
+
this.contextMenus[node.decontextMenu.id!] = new ContextMenuController(
|
|
100
|
+
node.decontextMenu,
|
|
101
|
+
this.context,
|
|
102
|
+
this.params,
|
|
103
|
+
this.ctx,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
// 上下文菜单控制器初始化
|
|
109
|
+
await Promise.all(
|
|
110
|
+
Object.values(this.contextMenus).map(menu => menu.created()),
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* 加载
|
|
116
|
+
*
|
|
117
|
+
* @author tony001
|
|
118
|
+
* @date 2023-12-12 11:12:08
|
|
119
|
+
* @param {MDCtrlLoadParams} [args={}]
|
|
120
|
+
* @return {*} {Promise<IGanttNodeData[]>}
|
|
121
|
+
*/
|
|
122
|
+
async load(args: MDCtrlLoadParams = {}): Promise<IGanttNodeData[]> {
|
|
123
|
+
const isInitialLoad = args.isInitialLoad === true;
|
|
124
|
+
if (isInitialLoad) {
|
|
125
|
+
await this.startLoading();
|
|
126
|
+
}
|
|
127
|
+
let nodes;
|
|
128
|
+
try {
|
|
129
|
+
nodes = await this.loadNodes();
|
|
130
|
+
} finally {
|
|
131
|
+
if (isInitialLoad) {
|
|
132
|
+
await this.endLoading();
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
await this.afterLoad(args, nodes);
|
|
136
|
+
this.state.isLoaded = true;
|
|
137
|
+
await this.evt.emit('onLoadSuccess', {
|
|
138
|
+
isInitialLoad,
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
return nodes;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* 获取查询参数
|
|
146
|
+
*
|
|
147
|
+
* @author tony001
|
|
148
|
+
* @date 2023-12-12 11:12:22
|
|
149
|
+
* @param {IParams} [extraParams]
|
|
150
|
+
* @return {*} {Promise<IParams>}
|
|
151
|
+
*/
|
|
152
|
+
async getFetchParams(extraParams?: IParams): Promise<IParams> {
|
|
153
|
+
const params = await super.getFetchParams(extraParams);
|
|
154
|
+
if (this.state.query) {
|
|
155
|
+
params.query = this.state.query;
|
|
156
|
+
}
|
|
157
|
+
return params;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* 加载节点
|
|
162
|
+
*
|
|
163
|
+
* @author tony001
|
|
164
|
+
* @date 2023-12-12 11:12:33
|
|
165
|
+
* @param {IGanttNodeData} [parentNode]
|
|
166
|
+
* @return {*} {Promise<IGanttNodeData[]>}
|
|
167
|
+
*/
|
|
168
|
+
async loadNodes(parentNode?: IGanttNodeData): Promise<IGanttNodeData[]> {
|
|
169
|
+
const params = await this.getFetchParams();
|
|
170
|
+
const hasQuery = !!params.query;
|
|
171
|
+
|
|
172
|
+
this.state.isLoading = true;
|
|
173
|
+
|
|
174
|
+
let nodes: IGanttNodeData[] | undefined;
|
|
175
|
+
try {
|
|
176
|
+
// 请求服务获取子节点数据
|
|
177
|
+
nodes =
|
|
178
|
+
(await this.service.fetchGanttChildNodes(parentNode, {
|
|
179
|
+
context: this.context.clone(),
|
|
180
|
+
params,
|
|
181
|
+
hasQuery,
|
|
182
|
+
defaultExpandedKeys: [],
|
|
183
|
+
})) || [];
|
|
184
|
+
} finally {
|
|
185
|
+
this.state.isLoading = false;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
// 有父节点绑定到父节点数据上,无父节点替换rootNodes
|
|
189
|
+
if (parentNode) {
|
|
190
|
+
parentNode.children = nodes;
|
|
191
|
+
} else {
|
|
192
|
+
this.state.rootNodes = nodes;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// 更新items
|
|
196
|
+
this.state.items = [];
|
|
197
|
+
recursiveIterate(
|
|
198
|
+
{ children: this.state.rootNodes },
|
|
199
|
+
(node: IGanttNodeData) => {
|
|
200
|
+
this.state.items.push(node);
|
|
201
|
+
},
|
|
202
|
+
);
|
|
203
|
+
return nodes;
|
|
26
204
|
}
|
|
27
205
|
}
|
|
@@ -1,13 +1,312 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
IDETreeCodeListNode,
|
|
3
|
+
IDETreeDataSetNode,
|
|
4
|
+
IDETreeNode,
|
|
5
|
+
IDETreeNodeRS,
|
|
6
|
+
} from '@ibiz/model-core';
|
|
7
|
+
import { ModelError } from '@ibiz-template/core';
|
|
8
|
+
import { IGanttNodeData } from '../../../interface';
|
|
9
|
+
import { getChildNodeRSs, getRootNode, getTreeNode } from '../../../model';
|
|
10
|
+
import { handleAllSettled } from '../../../utils';
|
|
11
|
+
import { TreeFetchOpts, TreeService } from '../tree';
|
|
12
|
+
import {
|
|
13
|
+
GanttCodeListNodeData,
|
|
14
|
+
GanttDataSetNodeData,
|
|
15
|
+
GanttStaticNodeData,
|
|
16
|
+
} from '../../../service';
|
|
3
17
|
|
|
4
18
|
/**
|
|
5
19
|
* 甘特图服务
|
|
6
20
|
*
|
|
7
|
-
* @author
|
|
8
|
-
* @date 2023-12-
|
|
21
|
+
* @author tony001
|
|
22
|
+
* @date 2023-12-11 16:12:57
|
|
9
23
|
* @export
|
|
10
24
|
* @class GanttService
|
|
11
|
-
* @extends {
|
|
25
|
+
* @extends {TreeService}
|
|
12
26
|
*/
|
|
13
|
-
export class GanttService extends
|
|
27
|
+
export class GanttService extends TreeService {
|
|
28
|
+
/**
|
|
29
|
+
* 获取子节点数据
|
|
30
|
+
*
|
|
31
|
+
* @author tony001
|
|
32
|
+
* @date 2023-12-11 18:12:58
|
|
33
|
+
* @param {(IGanttNodeData | undefined)} parentNodeData
|
|
34
|
+
* @param {TreeFetchOpts} opts
|
|
35
|
+
* @return {*} {(Promise<IGanttNodeData[] | undefined>)}
|
|
36
|
+
*/
|
|
37
|
+
async fetchGanttChildNodes(
|
|
38
|
+
parentNodeData: IGanttNodeData | undefined,
|
|
39
|
+
opts: TreeFetchOpts,
|
|
40
|
+
): Promise<IGanttNodeData[] | undefined> {
|
|
41
|
+
const { hasQuery } = opts;
|
|
42
|
+
|
|
43
|
+
let childrenNodes: IGanttNodeData[] = [];
|
|
44
|
+
if (!parentNodeData) {
|
|
45
|
+
// 没有父节点的加载根节点数据
|
|
46
|
+
const rootNode = getRootNode(this.model);
|
|
47
|
+
childrenNodes = await this.fetchGanttNodeDatasByType(
|
|
48
|
+
rootNode,
|
|
49
|
+
undefined,
|
|
50
|
+
undefined,
|
|
51
|
+
opts,
|
|
52
|
+
);
|
|
53
|
+
} else {
|
|
54
|
+
// 有父节点的计算节点关系查询对应节点数据并合并
|
|
55
|
+
const childNodeRSs = getChildNodeRSs(this.model, {
|
|
56
|
+
parentId: parentNodeData.nodeId,
|
|
57
|
+
hasQuery,
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
if (childNodeRSs.length === 0) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const results = await handleAllSettled(
|
|
64
|
+
childNodeRSs.map(async childNodeRS => {
|
|
65
|
+
const childNode = getTreeNode(
|
|
66
|
+
this.model,
|
|
67
|
+
childNodeRS.childDETreeNodeId!,
|
|
68
|
+
);
|
|
69
|
+
return this.fetchGanttNodeDatasByType(
|
|
70
|
+
childNode,
|
|
71
|
+
childNodeRS,
|
|
72
|
+
parentNodeData,
|
|
73
|
+
opts,
|
|
74
|
+
);
|
|
75
|
+
}),
|
|
76
|
+
false,
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
results.forEach(result => {
|
|
80
|
+
childrenNodes.push(...result);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return childrenNodes;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* 通过节点类型加载节点数据
|
|
88
|
+
*
|
|
89
|
+
* @author tony001
|
|
90
|
+
* @date 2023-12-11 18:12:35
|
|
91
|
+
* @protected
|
|
92
|
+
* @param {IDETreeNode} nodeModel
|
|
93
|
+
* @param {(IDETreeNodeRS | undefined)} nodeRS
|
|
94
|
+
* @param {(ITreeNodeData | undefined)} parentNodeData
|
|
95
|
+
* @param {TreeFetchOpts} opts
|
|
96
|
+
* @return {*} {Promise<IGanttNodeData[]>}
|
|
97
|
+
*/
|
|
98
|
+
protected async fetchGanttNodeDatasByType(
|
|
99
|
+
nodeModel: IDETreeNode,
|
|
100
|
+
nodeRS: IDETreeNodeRS | undefined,
|
|
101
|
+
parentNodeData: IGanttNodeData | undefined,
|
|
102
|
+
opts: TreeFetchOpts,
|
|
103
|
+
): Promise<IGanttNodeData[]> {
|
|
104
|
+
// 有没有下级
|
|
105
|
+
const leaf =
|
|
106
|
+
getChildNodeRSs(this.model, {
|
|
107
|
+
parentId: nodeModel.id,
|
|
108
|
+
hasQuery: opts.hasQuery,
|
|
109
|
+
}).length === 0;
|
|
110
|
+
const tempOpts = { ...opts, leaf };
|
|
111
|
+
|
|
112
|
+
// 根据类型查询节点数据
|
|
113
|
+
let result: IGanttNodeData[] = [];
|
|
114
|
+
switch (nodeModel.treeNodeType) {
|
|
115
|
+
case 'STATIC':
|
|
116
|
+
{
|
|
117
|
+
const nodeData = await this.getStaticGanttNodeData(
|
|
118
|
+
nodeModel,
|
|
119
|
+
nodeRS,
|
|
120
|
+
parentNodeData,
|
|
121
|
+
tempOpts,
|
|
122
|
+
);
|
|
123
|
+
result = [nodeData];
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
126
|
+
case 'DE':
|
|
127
|
+
result = await this.getDEGanttNodeDatas(
|
|
128
|
+
nodeModel as IDETreeDataSetNode,
|
|
129
|
+
nodeRS,
|
|
130
|
+
parentNodeData,
|
|
131
|
+
tempOpts,
|
|
132
|
+
);
|
|
133
|
+
break;
|
|
134
|
+
case 'CODELIST':
|
|
135
|
+
result = await this.getCodeListGanttNodeDatas(
|
|
136
|
+
nodeModel as IDETreeCodeListNode,
|
|
137
|
+
nodeRS,
|
|
138
|
+
parentNodeData,
|
|
139
|
+
tempOpts,
|
|
140
|
+
);
|
|
141
|
+
break;
|
|
142
|
+
default:
|
|
143
|
+
throw new ModelError(
|
|
144
|
+
nodeModel,
|
|
145
|
+
`${nodeModel.treeNodeType}节点类型未支持`,
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
// *查询回来之后,如果有子节点,看默认展开相关配置有时每个节点数据走一遍展开逻辑
|
|
149
|
+
const { expandFirstOnly, expanded, rootNode } = nodeModel;
|
|
150
|
+
const isExpandedRoot = rootNode && !this.model.rootVisible; // root节点不显示的时候默认展开其子节点
|
|
151
|
+
if (!leaf) {
|
|
152
|
+
await Promise.all(
|
|
153
|
+
result.map(async (childNode, index) => {
|
|
154
|
+
if (
|
|
155
|
+
(expanded && // 全展开合只展开首节点expanded都为true
|
|
156
|
+
(!expandFirstOnly || (expandFirstOnly && index === 0))) ||
|
|
157
|
+
isExpandedRoot
|
|
158
|
+
) {
|
|
159
|
+
const subChildrenNodes = await this.fetchGanttChildNodes(
|
|
160
|
+
childNode,
|
|
161
|
+
opts,
|
|
162
|
+
);
|
|
163
|
+
childNode.children = subChildrenNodes;
|
|
164
|
+
}
|
|
165
|
+
}),
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* 获取静态节点数据
|
|
173
|
+
*
|
|
174
|
+
* @author tony001
|
|
175
|
+
* @date 2023-12-11 18:12:06
|
|
176
|
+
* @protected
|
|
177
|
+
* @param {IDETreeNode} nodeModel
|
|
178
|
+
* @param {(IDETreeNodeRS | undefined)} nodeRS
|
|
179
|
+
* @param {(IGanttNodeData | undefined)} parentNodeData
|
|
180
|
+
* @param {TreeFetchOpts} opts
|
|
181
|
+
* @return {*} {Promise<IGanttNodeData>}
|
|
182
|
+
*/
|
|
183
|
+
protected async getStaticGanttNodeData(
|
|
184
|
+
nodeModel: IDETreeNode,
|
|
185
|
+
nodeRS: IDETreeNodeRS | undefined,
|
|
186
|
+
parentNodeData: IGanttNodeData | undefined,
|
|
187
|
+
opts: TreeFetchOpts,
|
|
188
|
+
): Promise<IGanttNodeData> {
|
|
189
|
+
const nodeData: IGanttNodeData = new GanttStaticNodeData(
|
|
190
|
+
this.model,
|
|
191
|
+
nodeModel,
|
|
192
|
+
parentNodeData,
|
|
193
|
+
{ parentValueLevel: nodeRS?.parentValueLevel, leaf: !!opts.leaf },
|
|
194
|
+
);
|
|
195
|
+
return nodeData;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* 获取实体数据集数据
|
|
200
|
+
*
|
|
201
|
+
* @author tony001
|
|
202
|
+
* @date 2023-12-11 18:12:23
|
|
203
|
+
* @protected
|
|
204
|
+
* @param {IDETreeDataSetNode} nodeModel
|
|
205
|
+
* @param {(IDETreeNodeRS | undefined)} nodeRS
|
|
206
|
+
* @param {(IGanttNodeData | undefined)} parentNodeData
|
|
207
|
+
* @param {TreeFetchOpts} opts
|
|
208
|
+
* @return {*} {Promise<IGanttNodeData[]>}
|
|
209
|
+
*/
|
|
210
|
+
protected async getDEGanttNodeDatas(
|
|
211
|
+
nodeModel: IDETreeDataSetNode,
|
|
212
|
+
nodeRS: IDETreeNodeRS | undefined,
|
|
213
|
+
parentNodeData: IGanttNodeData | undefined,
|
|
214
|
+
opts: TreeFetchOpts,
|
|
215
|
+
): Promise<IGanttNodeData[]> {
|
|
216
|
+
const { appDEDataSetId, appDataEntityId } = nodeModel;
|
|
217
|
+
|
|
218
|
+
// 处理查询参数,没有关系的时候不处理参数了
|
|
219
|
+
const { context, params, navContext, navParams } = nodeRS
|
|
220
|
+
? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts)
|
|
221
|
+
: {
|
|
222
|
+
context: opts.context,
|
|
223
|
+
params: opts.params,
|
|
224
|
+
navContext: {},
|
|
225
|
+
navParams: {},
|
|
226
|
+
};
|
|
227
|
+
|
|
228
|
+
// 设置查询长度
|
|
229
|
+
params.size = nodeModel.maxSize || 1000;
|
|
230
|
+
// 排序属性
|
|
231
|
+
if (nodeModel.sortAppDEFieldId) {
|
|
232
|
+
Object.assign(params, {
|
|
233
|
+
sort: `${nodeModel.sortAppDEFieldId.toLowerCase()},${
|
|
234
|
+
nodeModel.sortDir ? nodeModel.sortDir.toLowerCase() : 'asc'
|
|
235
|
+
}`,
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// 请求实体数据
|
|
240
|
+
const response = await this.app.deService.exec(
|
|
241
|
+
appDataEntityId!,
|
|
242
|
+
appDEDataSetId!,
|
|
243
|
+
context,
|
|
244
|
+
params,
|
|
245
|
+
);
|
|
246
|
+
if (response.data.length) {
|
|
247
|
+
const nodeDatas = response.data.map((item: IData) => {
|
|
248
|
+
return new GanttDataSetNodeData(this.model, nodeModel, parentNodeData, {
|
|
249
|
+
data: item,
|
|
250
|
+
leaf: !!opts.leaf,
|
|
251
|
+
navContext,
|
|
252
|
+
navParams,
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
return nodeDatas;
|
|
256
|
+
}
|
|
257
|
+
return [];
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* 获取代码表节点数据
|
|
262
|
+
*
|
|
263
|
+
* @author tony001
|
|
264
|
+
* @date 2023-12-11 18:12:35
|
|
265
|
+
* @protected
|
|
266
|
+
* @param {IDETreeCodeListNode} nodeModel
|
|
267
|
+
* @param {(IDETreeNodeRS | undefined)} nodeRS
|
|
268
|
+
* @param {(IGanttNodeData | undefined)} parentNodeData
|
|
269
|
+
* @param {TreeFetchOpts} opts
|
|
270
|
+
* @return {*} {Promise<IGanttNodeData[]>}
|
|
271
|
+
*/
|
|
272
|
+
protected async getCodeListGanttNodeDatas(
|
|
273
|
+
nodeModel: IDETreeCodeListNode,
|
|
274
|
+
nodeRS: IDETreeNodeRS | undefined,
|
|
275
|
+
parentNodeData: IGanttNodeData | undefined,
|
|
276
|
+
opts: TreeFetchOpts,
|
|
277
|
+
): Promise<IGanttNodeData[]> {
|
|
278
|
+
// 处理查询参数,没有关系的时候不处理参数了
|
|
279
|
+
const { context, params, navContext, navParams } = nodeRS
|
|
280
|
+
? this.getNodeRSFilterParams(nodeRS, parentNodeData, opts)
|
|
281
|
+
: {
|
|
282
|
+
context: opts.context,
|
|
283
|
+
params: opts.params,
|
|
284
|
+
navContext: {},
|
|
285
|
+
navParams: {},
|
|
286
|
+
};
|
|
287
|
+
|
|
288
|
+
// 请求实体数据
|
|
289
|
+
const items = await this.app.codeList.get(
|
|
290
|
+
nodeModel.codeListId!,
|
|
291
|
+
context,
|
|
292
|
+
params,
|
|
293
|
+
);
|
|
294
|
+
if (items.length) {
|
|
295
|
+
const nodeDatas = items.map(item => {
|
|
296
|
+
return new GanttCodeListNodeData(
|
|
297
|
+
this.model,
|
|
298
|
+
nodeModel,
|
|
299
|
+
parentNodeData,
|
|
300
|
+
{
|
|
301
|
+
data: item,
|
|
302
|
+
leaf: !!opts.leaf,
|
|
303
|
+
navContext,
|
|
304
|
+
navParams,
|
|
305
|
+
},
|
|
306
|
+
);
|
|
307
|
+
});
|
|
308
|
+
return nodeDatas;
|
|
309
|
+
}
|
|
310
|
+
return [];
|
|
311
|
+
}
|
|
312
|
+
}
|
|
@@ -156,7 +156,7 @@ export class SearchBarController
|
|
|
156
156
|
// 搜索过滤器
|
|
157
157
|
const filters = this.calcFilters();
|
|
158
158
|
if (filters) {
|
|
159
|
-
params.
|
|
159
|
+
params.searchconds = filters;
|
|
160
160
|
}
|
|
161
161
|
return params;
|
|
162
162
|
}
|
|
@@ -218,7 +218,7 @@ export class SearchBarController
|
|
|
218
218
|
}
|
|
219
219
|
});
|
|
220
220
|
if (hasFilter && !hasError) {
|
|
221
|
-
const filter = this.formatFilters(this.state.filterNodes[0]);
|
|
221
|
+
const filter = [this.formatFilters(this.state.filterNodes[0])];
|
|
222
222
|
return filter;
|
|
223
223
|
}
|
|
224
224
|
}
|
|
@@ -233,15 +233,18 @@ export class SearchBarController
|
|
|
233
233
|
formatFilters(node: IFilterNode): IData {
|
|
234
234
|
if (!node.leaf) {
|
|
235
235
|
return {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
236
|
+
condtype: 'GROUP',
|
|
237
|
+
condop: node.logicType,
|
|
238
|
+
bnotmode: false,
|
|
239
|
+
searchcondlist: node.children.map(item => this.formatFilters(item)),
|
|
239
240
|
};
|
|
240
241
|
}
|
|
242
|
+
|
|
241
243
|
return {
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
244
|
+
condtype: 'DEFIELD',
|
|
245
|
+
fieldname: node.field,
|
|
246
|
+
condop: node.valueOP,
|
|
247
|
+
value: node.value,
|
|
245
248
|
};
|
|
246
249
|
}
|
|
247
250
|
}
|