@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.
Files changed (104) hide show
  1. package/dist/index.esm.js +847 -211
  2. package/dist/index.system.min.js +2 -2
  3. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  4. package/out/controller/control/form/edit-form/edit-form.controller.js +27 -16
  5. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.d.ts +1 -1
  6. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +1 -1
  7. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts +8 -0
  8. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
  9. package/out/controller/control/form/form-detail/form-item/form-item.controller.js +14 -0
  10. package/out/controller/control/gantt/gantt.controller.d.ts +55 -1
  11. package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
  12. package/out/controller/control/gantt/gantt.controller.js +150 -0
  13. package/out/controller/control/gantt/gantt.service.d.ts +69 -6
  14. package/out/controller/control/gantt/gantt.service.d.ts.map +1 -1
  15. package/out/controller/control/gantt/gantt.service.js +196 -5
  16. package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts +8 -1
  17. package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts.map +1 -1
  18. package/out/controller/control/wizard-panel/wizard-panel.controller.js +22 -7
  19. package/out/interface/controller/controller/control/i-drbar.controller.d.ts +7 -0
  20. package/out/interface/controller/controller/control/i-drbar.controller.d.ts.map +1 -1
  21. package/out/interface/controller/event/view/i-de-index-view.event.d.ts +12 -0
  22. package/out/interface/controller/event/view/i-de-index-view.event.d.ts.map +1 -0
  23. package/out/interface/controller/event/view/i-de-index-view.event.js +1 -0
  24. package/out/interface/controller/event/view/index.d.ts +1 -0
  25. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  26. package/out/interface/controller/event/view/index.js +1 -0
  27. package/out/interface/controller/state/control/i-drbar.state.d.ts +28 -7
  28. package/out/interface/controller/state/control/i-drbar.state.d.ts.map +1 -1
  29. package/out/interface/controller/state/control/i-gantt.state.d.ts +94 -3
  30. package/out/interface/controller/state/control/i-gantt.state.d.ts.map +1 -1
  31. package/out/interface/controller/state/view/i-de-index-view.state.d.ts +19 -0
  32. package/out/interface/controller/state/view/i-de-index-view.state.d.ts.map +1 -0
  33. package/out/interface/controller/state/view/i-de-index-view.state.js +1 -0
  34. package/out/interface/controller/state/view/i-edit-view2.state.d.ts +8 -0
  35. package/out/interface/controller/state/view/i-edit-view2.state.d.ts.map +1 -1
  36. package/out/interface/controller/state/view/index.d.ts +1 -0
  37. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  38. package/out/interface/controller/state/view/index.js +1 -0
  39. package/out/interface/service/service/i-auth.service.d.ts +8 -0
  40. package/out/interface/service/service/i-auth.service.d.ts.map +1 -1
  41. package/out/register/helper/ui-action-register.d.ts.map +1 -1
  42. package/out/register/helper/ui-action-register.js +6 -1
  43. package/out/service/service/auth/v7-auth.service.d.ts +1 -0
  44. package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
  45. package/out/service/service/auth/v7-auth.service.js +23 -3
  46. package/out/service/service/entity/de.service.d.ts.map +1 -1
  47. package/out/service/service/entity/de.service.js +1 -8
  48. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  49. package/out/service/service/entity/method/de-action.js +5 -5
  50. package/out/service/utils/de-cache/de-cache.d.ts +19 -0
  51. package/out/service/utils/de-cache/de-cache.d.ts.map +1 -1
  52. package/out/service/utils/de-cache/de-cache.js +54 -4
  53. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts +19 -0
  54. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts.map +1 -0
  55. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.js +14 -0
  56. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts +19 -0
  57. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts.map +1 -0
  58. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.js +14 -0
  59. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts +9 -0
  60. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts.map +1 -0
  61. package/out/service/vo/gantt-node-data/gantt-node-data-util.js +19 -0
  62. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts +17 -0
  63. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts.map +1 -0
  64. package/out/service/vo/gantt-node-data/gantt-static-node-data.js +13 -0
  65. package/out/service/vo/gantt-node-data/index.d.ts +4 -0
  66. package/out/service/vo/gantt-node-data/index.d.ts.map +1 -0
  67. package/out/service/vo/gantt-node-data/index.js +3 -0
  68. package/out/service/vo/index.d.ts +1 -0
  69. package/out/service/vo/index.d.ts.map +1 -1
  70. package/out/service/vo/index.js +1 -0
  71. package/out/ui-action/provider/index.d.ts.map +1 -1
  72. package/out/ui-action/provider/index.js +4 -0
  73. package/out/ui-action/provider/loginout-ui-action-provider.d.ts +16 -0
  74. package/out/ui-action/provider/loginout-ui-action-provider.d.ts.map +1 -0
  75. package/out/ui-action/provider/loginout-ui-action-provider.js +25 -0
  76. package/package.json +5 -5
  77. package/src/controller/control/form/edit-form/edit-form.controller.ts +48 -32
  78. package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +1 -1
  79. package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +15 -0
  80. package/src/controller/control/gantt/gantt.controller.ts +179 -1
  81. package/src/controller/control/gantt/gantt.service.ts +305 -6
  82. package/src/controller/control/wizard-panel/wizard-panel.controller.ts +27 -7
  83. package/src/interface/controller/controller/control/i-drbar.controller.ts +8 -0
  84. package/src/interface/controller/event/view/i-de-index-view.event.ts +12 -0
  85. package/src/interface/controller/event/view/index.ts +1 -0
  86. package/src/interface/controller/state/control/i-drbar.state.ts +32 -8
  87. package/src/interface/controller/state/control/i-gantt.state.ts +106 -4
  88. package/src/interface/controller/state/view/i-de-index-view.state.ts +19 -0
  89. package/src/interface/controller/state/view/i-edit-view2.state.ts +10 -1
  90. package/src/interface/controller/state/view/index.ts +1 -0
  91. package/src/interface/service/service/i-auth.service.ts +9 -0
  92. package/src/register/helper/ui-action-register.ts +7 -1
  93. package/src/service/service/auth/v7-auth.service.ts +30 -3
  94. package/src/service/service/entity/de.service.ts +2 -1
  95. package/src/service/service/entity/method/de-action.ts +5 -4
  96. package/src/service/utils/de-cache/de-cache.ts +64 -3
  97. package/src/service/vo/gantt-node-data/gantt-code-list-node-data.ts +68 -0
  98. package/src/service/vo/gantt-node-data/gantt-data-set-node-data.ts +68 -0
  99. package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +26 -0
  100. package/src/service/vo/gantt-node-data/gantt-static-node-data.ts +50 -0
  101. package/src/service/vo/gantt-node-data/index.ts +3 -0
  102. package/src/service/vo/index.ts +1 -0
  103. package/src/ui-action/provider/index.ts +4 -0
  104. 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 { IGanttController, IGanttEvent, IGanttState } from '../../../interface';
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 { IDEGantt } from '@ibiz/model-core';
2
- import { MDControlService } from '../../../service';
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 zhanghengfeng
8
- * @date 2023-12-08 15:12:34
21
+ * @author tony001
22
+ * @date 2023-12-11 16:12:57
9
23
  * @export
10
24
  * @class GanttService
11
- * @extends {MDControlService<IDEGantt>}
25
+ * @extends {TreeService}
12
26
  */
13
- export class GanttService extends MDControlService<IDEGantt> {}
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
- const data = await this.activeFormController.goBack();
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 (this.model.stateAppDEFieldId && data[this.model.stateAppDEFieldId]) {
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
  );
@@ -19,4 +19,12 @@ export interface IDRBarController
19
19
  * @memberof IDRBarController
20
20
  */
21
21
  getData(): IData[];
22
+
23
+ /**
24
+ * 处理选中改变
25
+ *
26
+ * @param {string} key
27
+ * @memberof DRBarController
28
+ */
29
+ handleSelectChange(key: string): void;
22
30
  }
@@ -0,0 +1,12 @@
1
+ import { IViewEvent } from '.';
2
+
3
+ /**
4
+ * 实体首页视图事件
5
+ *
6
+ * @author lxm
7
+ * @date 2022-09-26 20:09:17
8
+ * @export
9
+ * @interface IDEIndexViewEvent
10
+ * @extends {IViewEvent}
11
+ */
12
+ export type IDEIndexViewEvent = IViewEvent;
@@ -44,3 +44,4 @@ export * from './i-chart-exp-view.event';
44
44
  export * from './i-map-view.event';
45
45
  export * from './i-report-view.event';
46
46
  export * from './i-gantt-view.event';
47
+ export * from './i-de-index-view.event';
@@ -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
  *