@ibiz-template/runtime 0.4.9 → 0.4.11
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 +847 -211
- package/dist/index.system.min.js +2 -2
- 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 +27 -16
- 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 -0
- 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/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/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/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-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/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 +8 -0
- 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 -0
- package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
- package/out/service/service/auth/v7-auth.service.js +23 -3
- 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/package.json +5 -5
- package/src/controller/control/form/edit-form/edit-form.controller.ts +48 -32
- 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 -0
- package/src/controller/control/gantt/gantt.controller.ts +179 -1
- package/src/controller/control/gantt/gantt.service.ts +305 -6
- package/src/controller/control/wizard-panel/wizard-panel.controller.ts +27 -7
- package/src/interface/controller/controller/control/i-drbar.controller.ts +8 -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-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/index.ts +1 -0
- package/src/interface/service/service/i-auth.service.ts +9 -0
- package/src/register/helper/ui-action-register.ts +7 -1
- package/src/service/service/auth/v7-auth.service.ts +30 -3
- 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
|
@@ -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
|
+
}
|
|
@@ -93,6 +93,14 @@ export class WizardPanelController
|
|
|
93
93
|
*/
|
|
94
94
|
stepTags: IData = {};
|
|
95
95
|
|
|
96
|
+
/**
|
|
97
|
+
* 向导表单数据
|
|
98
|
+
* @return {*}
|
|
99
|
+
* @author: zhujiamin
|
|
100
|
+
* @Date: 2023-12-12 13:43:07
|
|
101
|
+
*/
|
|
102
|
+
formData: IData = {};
|
|
103
|
+
|
|
96
104
|
protected initState(): void {
|
|
97
105
|
super.initState();
|
|
98
106
|
}
|
|
@@ -185,11 +193,12 @@ export class WizardPanelController
|
|
|
185
193
|
* @author: zhujiamin
|
|
186
194
|
* @Date: 2023-06-07 15:14:05
|
|
187
195
|
*/
|
|
188
|
-
onFormMounted(activeFormTag: string, event: EventBase): void {
|
|
196
|
+
async onFormMounted(activeFormTag: string, event: EventBase): Promise<void> {
|
|
189
197
|
const formController = event.ctrl as EditFormController;
|
|
190
198
|
this.formControllers.set(activeFormTag, formController);
|
|
191
199
|
// 调用表单的load加载一次数据
|
|
192
|
-
formController.load();
|
|
200
|
+
const data = await formController.load();
|
|
201
|
+
Object.assign(this.formData, data);
|
|
193
202
|
}
|
|
194
203
|
|
|
195
204
|
/**
|
|
@@ -201,6 +210,7 @@ export class WizardPanelController
|
|
|
201
210
|
*/
|
|
202
211
|
onFormSaved(event: EventBase): void {
|
|
203
212
|
const data = event.data[0];
|
|
213
|
+
Object.assign(this.formData, data);
|
|
204
214
|
const deName = calcDeCodeNameById(this.model.appDataEntityId!);
|
|
205
215
|
if (!this.context[deName] && data && data.srfkey) {
|
|
206
216
|
this.context[deName] = data.srfkey;
|
|
@@ -239,9 +249,10 @@ export class WizardPanelController
|
|
|
239
249
|
async initialize(): Promise<void> {
|
|
240
250
|
const initAction = this.model.initControlAction?.appDEMethodId;
|
|
241
251
|
if (initAction) {
|
|
242
|
-
const res = await this.service.initialize(this.context, this.params);
|
|
252
|
+
const res = await this.service.initialize(this.context, {}, this.params);
|
|
243
253
|
const deName = calcDeCodeNameById(this.model.appDataEntityId!);
|
|
244
254
|
if (res.data && res.data.srfkey) {
|
|
255
|
+
this.formData = res.data;
|
|
245
256
|
this.context[deName] = res.data.srfkey;
|
|
246
257
|
}
|
|
247
258
|
// 初始化时状态向导面板根据状态属性去决定当前激活哪个表单
|
|
@@ -274,7 +285,7 @@ export class WizardPanelController
|
|
|
274
285
|
* @memberof WizardPanelController
|
|
275
286
|
*/
|
|
276
287
|
async finish(): Promise<void> {
|
|
277
|
-
await this.service.finish(this.context, this.params);
|
|
288
|
+
await this.service.finish(this.context, this.formData, this.params);
|
|
278
289
|
this.evt.emit('onFinishSuccess', undefined);
|
|
279
290
|
}
|
|
280
291
|
|
|
@@ -286,11 +297,20 @@ export class WizardPanelController
|
|
|
286
297
|
* @memberof WizardPanelController
|
|
287
298
|
*/
|
|
288
299
|
async onPrevClick(): Promise<void> {
|
|
289
|
-
//
|
|
290
|
-
|
|
300
|
+
// 状态向导先执行表单返回行为
|
|
301
|
+
let data;
|
|
302
|
+
if (
|
|
303
|
+
(this.activeFormController.model as IDEWizardEditForm).goBackControlAction
|
|
304
|
+
) {
|
|
305
|
+
data = await this.activeFormController.goBack();
|
|
306
|
+
}
|
|
291
307
|
let prevTag;
|
|
292
308
|
// 返回上一个表单优先级 stateAppDEFieldId > tagHistory
|
|
293
|
-
if (
|
|
309
|
+
if (
|
|
310
|
+
this.model.stateAppDEFieldId &&
|
|
311
|
+
data &&
|
|
312
|
+
data[this.model.stateAppDEFieldId]
|
|
313
|
+
) {
|
|
294
314
|
const wizardForm = this.getWizardFormByTag(
|
|
295
315
|
data[this.model.stateAppDEFieldId],
|
|
296
316
|
);
|
|
@@ -9,6 +9,38 @@ import { IControlState } from './i-control.state';
|
|
|
9
9
|
* @extends {IControlState}
|
|
10
10
|
*/
|
|
11
11
|
export interface IDRBarState extends IControlState {
|
|
12
|
+
/**
|
|
13
|
+
* 默认显示的项的id
|
|
14
|
+
* @author lxm
|
|
15
|
+
* @date 2023-12-11 05:53:27
|
|
16
|
+
* @type {string}
|
|
17
|
+
*/
|
|
18
|
+
defaultItem: string;
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* 选中的项的id
|
|
22
|
+
* @author lxm
|
|
23
|
+
* @date 2023-12-11 07:10:05
|
|
24
|
+
* @type {string}
|
|
25
|
+
*/
|
|
26
|
+
selectedItem: string;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* 隐藏编辑项
|
|
30
|
+
* @type {boolean}
|
|
31
|
+
* @default false
|
|
32
|
+
* 来源 isHideEditItem
|
|
33
|
+
*/
|
|
34
|
+
hideEditItem?: boolean;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 导航数据
|
|
38
|
+
* @author lxm
|
|
39
|
+
* @date 2023-12-11 05:52:57
|
|
40
|
+
* @type {string}
|
|
41
|
+
*/
|
|
42
|
+
srfnav: string;
|
|
43
|
+
|
|
12
44
|
/**
|
|
13
45
|
* 关系项集合
|
|
14
46
|
*
|
|
@@ -41,14 +73,6 @@ export interface IDRBarItemsState {
|
|
|
41
73
|
*/
|
|
42
74
|
caption?: string;
|
|
43
75
|
|
|
44
|
-
/**
|
|
45
|
-
* 是否隐藏
|
|
46
|
-
*
|
|
47
|
-
* @type {boolean}
|
|
48
|
-
* @memberof IDRBarItemsState
|
|
49
|
-
*/
|
|
50
|
-
hidden: boolean;
|
|
51
|
-
|
|
52
76
|
/**
|
|
53
77
|
* 是否禁用
|
|
54
78
|
*
|