@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.
Files changed (159) hide show
  1. package/dist/index.esm.js +996 -290
  2. package/dist/index.system.min.js +2 -2
  3. package/out/config/global-config.d.ts.map +1 -1
  4. package/out/config/global-config.js +1 -0
  5. package/out/controller/common/control/control.controller.d.ts +14 -0
  6. package/out/controller/common/control/control.controller.d.ts.map +1 -1
  7. package/out/controller/common/control/control.controller.js +21 -0
  8. package/out/controller/common/control/md-control.controller.d.ts +9 -0
  9. package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
  10. package/out/controller/common/control/md-control.controller.js +20 -0
  11. package/out/controller/common/view/view.controller.d.ts +8 -1
  12. package/out/controller/common/view/view.controller.d.ts.map +1 -1
  13. package/out/controller/common/view/view.controller.js +12 -4
  14. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  15. package/out/controller/control/form/edit-form/edit-form.controller.js +36 -38
  16. package/out/controller/control/form/edit-form/edit-form.service.d.ts +3 -2
  17. package/out/controller/control/form/edit-form/edit-form.service.d.ts.map +1 -1
  18. package/out/controller/control/form/edit-form/edit-form.service.js +11 -2
  19. package/out/controller/control/form/form/form.controller.d.ts +0 -7
  20. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  21. package/out/controller/control/form/form/form.controller.js +0 -11
  22. package/out/controller/control/form/form/form.service.d.ts +24 -0
  23. package/out/controller/control/form/form/form.service.d.ts.map +1 -0
  24. package/out/controller/control/form/form/form.service.js +45 -0
  25. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.d.ts +1 -1
  26. package/out/controller/control/form/form-detail/form-druipart/form-druipart.controller.js +1 -1
  27. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts +8 -0
  28. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
  29. package/out/controller/control/form/form-detail/form-item/form-item.controller.js +14 -5
  30. package/out/controller/control/form/search-form/search-form.controller.d.ts.map +1 -1
  31. package/out/controller/control/form/search-form/search-form.controller.js +1 -5
  32. package/out/controller/control/form/search-form/search-form.service.d.ts +4 -3
  33. package/out/controller/control/form/search-form/search-form.service.d.ts.map +1 -1
  34. package/out/controller/control/form/search-form/search-form.service.js +8 -3
  35. package/out/controller/control/gantt/gantt.controller.d.ts +55 -1
  36. package/out/controller/control/gantt/gantt.controller.d.ts.map +1 -1
  37. package/out/controller/control/gantt/gantt.controller.js +150 -0
  38. package/out/controller/control/gantt/gantt.service.d.ts +69 -6
  39. package/out/controller/control/gantt/gantt.service.d.ts.map +1 -1
  40. package/out/controller/control/gantt/gantt.service.js +196 -5
  41. package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
  42. package/out/controller/control/search-bar/search-bar.controller.js +10 -6
  43. package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts +8 -1
  44. package/out/controller/control/wizard-panel/wizard-panel.controller.d.ts.map +1 -1
  45. package/out/controller/control/wizard-panel/wizard-panel.controller.js +22 -7
  46. package/out/interface/common/i-global-config/i-global-view-config.d.ts +7 -0
  47. package/out/interface/common/i-global-config/i-global-view-config.d.ts.map +1 -1
  48. package/out/interface/controller/controller/control/i-control.controller.d.ts +14 -0
  49. package/out/interface/controller/controller/control/i-control.controller.d.ts.map +1 -1
  50. package/out/interface/controller/controller/control/i-drbar.controller.d.ts +7 -0
  51. package/out/interface/controller/controller/control/i-drbar.controller.d.ts.map +1 -1
  52. package/out/interface/controller/controller/view/i-view.controller.d.ts +14 -0
  53. package/out/interface/controller/controller/view/i-view.controller.d.ts.map +1 -1
  54. package/out/interface/controller/event/view/i-de-index-view.event.d.ts +12 -0
  55. package/out/interface/controller/event/view/i-de-index-view.event.d.ts.map +1 -0
  56. package/out/interface/controller/event/view/i-de-index-view.event.js +1 -0
  57. package/out/interface/controller/event/view/index.d.ts +1 -0
  58. package/out/interface/controller/event/view/index.d.ts.map +1 -1
  59. package/out/interface/controller/event/view/index.js +1 -0
  60. package/out/interface/controller/state/control/i-control.state.d.ts +8 -0
  61. package/out/interface/controller/state/control/i-control.state.d.ts.map +1 -1
  62. package/out/interface/controller/state/control/i-drbar.state.d.ts +28 -7
  63. package/out/interface/controller/state/control/i-drbar.state.d.ts.map +1 -1
  64. package/out/interface/controller/state/control/i-gantt.state.d.ts +94 -3
  65. package/out/interface/controller/state/control/i-gantt.state.d.ts.map +1 -1
  66. package/out/interface/controller/state/view/i-de-index-view.state.d.ts +19 -0
  67. package/out/interface/controller/state/view/i-de-index-view.state.d.ts.map +1 -0
  68. package/out/interface/controller/state/view/i-de-index-view.state.js +1 -0
  69. package/out/interface/controller/state/view/i-edit-view2.state.d.ts +8 -0
  70. package/out/interface/controller/state/view/i-edit-view2.state.d.ts.map +1 -1
  71. package/out/interface/controller/state/view/i-view.state.d.ts +8 -0
  72. package/out/interface/controller/state/view/i-view.state.d.ts.map +1 -1
  73. package/out/interface/controller/state/view/index.d.ts +1 -0
  74. package/out/interface/controller/state/view/index.d.ts.map +1 -1
  75. package/out/interface/controller/state/view/index.js +1 -0
  76. package/out/interface/service/service/i-auth.service.d.ts +3 -2
  77. package/out/interface/service/service/i-auth.service.d.ts.map +1 -1
  78. package/out/register/helper/ui-action-register.d.ts.map +1 -1
  79. package/out/register/helper/ui-action-register.js +6 -1
  80. package/out/service/service/auth/v7-auth.service.d.ts +1 -1
  81. package/out/service/service/auth/v7-auth.service.d.ts.map +1 -1
  82. package/out/service/service/auth/v7-auth.service.js +12 -7
  83. package/out/service/service/entity/de.service.d.ts.map +1 -1
  84. package/out/service/service/entity/de.service.js +1 -8
  85. package/out/service/service/entity/method/de-action.d.ts.map +1 -1
  86. package/out/service/service/entity/method/de-action.js +5 -5
  87. package/out/service/utils/de-cache/de-cache.d.ts +19 -0
  88. package/out/service/utils/de-cache/de-cache.d.ts.map +1 -1
  89. package/out/service/utils/de-cache/de-cache.js +54 -4
  90. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts +19 -0
  91. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.d.ts.map +1 -0
  92. package/out/service/vo/gantt-node-data/gantt-code-list-node-data.js +14 -0
  93. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts +19 -0
  94. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.d.ts.map +1 -0
  95. package/out/service/vo/gantt-node-data/gantt-data-set-node-data.js +14 -0
  96. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts +9 -0
  97. package/out/service/vo/gantt-node-data/gantt-node-data-util.d.ts.map +1 -0
  98. package/out/service/vo/gantt-node-data/gantt-node-data-util.js +19 -0
  99. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts +17 -0
  100. package/out/service/vo/gantt-node-data/gantt-static-node-data.d.ts.map +1 -0
  101. package/out/service/vo/gantt-node-data/gantt-static-node-data.js +13 -0
  102. package/out/service/vo/gantt-node-data/index.d.ts +4 -0
  103. package/out/service/vo/gantt-node-data/index.d.ts.map +1 -0
  104. package/out/service/vo/gantt-node-data/index.js +3 -0
  105. package/out/service/vo/index.d.ts +1 -0
  106. package/out/service/vo/index.d.ts.map +1 -1
  107. package/out/service/vo/index.js +1 -0
  108. package/out/ui-action/provider/index.d.ts.map +1 -1
  109. package/out/ui-action/provider/index.js +4 -0
  110. package/out/ui-action/provider/loginout-ui-action-provider.d.ts +16 -0
  111. package/out/ui-action/provider/loginout-ui-action-provider.d.ts.map +1 -0
  112. package/out/ui-action/provider/loginout-ui-action-provider.js +25 -0
  113. package/out/utils/layout-panel-util/layout-panel-util.d.ts.map +1 -1
  114. package/out/utils/layout-panel-util/layout-panel-util.js +16 -2
  115. package/package.json +3 -3
  116. package/src/config/global-config.ts +1 -0
  117. package/src/controller/common/control/control.controller.ts +23 -0
  118. package/src/controller/common/control/md-control.controller.ts +21 -0
  119. package/src/controller/common/view/view.controller.ts +12 -5
  120. package/src/controller/control/form/edit-form/edit-form.controller.ts +59 -58
  121. package/src/controller/control/form/edit-form/edit-form.service.ts +11 -2
  122. package/src/controller/control/form/form/form.controller.ts +0 -14
  123. package/src/controller/control/form/form/form.service.ts +63 -0
  124. package/src/controller/control/form/form-detail/form-druipart/form-druipart.controller.ts +1 -1
  125. package/src/controller/control/form/form-detail/form-item/form-item.controller.ts +15 -5
  126. package/src/controller/control/form/search-form/search-form.controller.ts +1 -5
  127. package/src/controller/control/form/search-form/search-form.service.ts +8 -3
  128. package/src/controller/control/gantt/gantt.controller.ts +179 -1
  129. package/src/controller/control/gantt/gantt.service.ts +305 -6
  130. package/src/controller/control/search-bar/search-bar.controller.ts +11 -8
  131. package/src/controller/control/wizard-panel/wizard-panel.controller.ts +27 -7
  132. package/src/interface/common/i-global-config/i-global-view-config.ts +8 -0
  133. package/src/interface/controller/controller/control/i-control.controller.ts +16 -0
  134. package/src/interface/controller/controller/control/i-drbar.controller.ts +8 -0
  135. package/src/interface/controller/controller/view/i-view.controller.ts +16 -0
  136. package/src/interface/controller/event/view/i-de-index-view.event.ts +12 -0
  137. package/src/interface/controller/event/view/index.ts +1 -0
  138. package/src/interface/controller/state/control/i-control.state.ts +9 -0
  139. package/src/interface/controller/state/control/i-drbar.state.ts +32 -8
  140. package/src/interface/controller/state/control/i-gantt.state.ts +106 -4
  141. package/src/interface/controller/state/view/i-de-index-view.state.ts +19 -0
  142. package/src/interface/controller/state/view/i-edit-view2.state.ts +10 -1
  143. package/src/interface/controller/state/view/i-view.state.ts +9 -0
  144. package/src/interface/controller/state/view/index.ts +1 -0
  145. package/src/interface/service/service/i-auth.service.ts +3 -2
  146. package/src/register/helper/ui-action-register.ts +7 -1
  147. package/src/service/service/auth/v7-auth.service.ts +18 -8
  148. package/src/service/service/entity/de.service.ts +2 -1
  149. package/src/service/service/entity/method/de-action.ts +5 -4
  150. package/src/service/utils/de-cache/de-cache.ts +64 -3
  151. package/src/service/vo/gantt-node-data/gantt-code-list-node-data.ts +68 -0
  152. package/src/service/vo/gantt-node-data/gantt-data-set-node-data.ts +68 -0
  153. package/src/service/vo/gantt-node-data/gantt-node-data-util.ts +26 -0
  154. package/src/service/vo/gantt-node-data/gantt-static-node-data.ts +50 -0
  155. package/src/service/vo/gantt-node-data/index.ts +3 -0
  156. package/src/service/vo/index.ts +1 -0
  157. package/src/ui-action/provider/index.ts +4 -0
  158. package/src/ui-action/provider/loginout-ui-action-provider.ts +31 -0
  159. package/src/utils/layout-panel-util/layout-panel-util.ts +17 -2
@@ -53,7 +53,7 @@ export class FormDRUIPartController extends FormDetailController<IDEFormDRUIPart
53
53
  refreshItems: string[] = ['srfkey'];
54
54
 
55
55
  /**
56
- * 参数项名称
56
+ * 参数项名称(这个模型暂不使用,相关场景可以通过配置导航参数实现)
57
57
  *
58
58
  * @author lxm
59
59
  * @date 2022-09-15 19:09:36
@@ -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, mergeDefaultInLeft } from '@ibiz-template/core';
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 { ControlService, ControlVO, UIMapField } from '../../../../service';
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 ControlService<T> {
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
- _context: IParams,
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 { 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
+ }
@@ -156,7 +156,7 @@ export class SearchBarController
156
156
  // 搜索过滤器
157
157
  const filters = this.calcFilters();
158
158
  if (filters) {
159
- params.filters = filters;
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
- [`$${node.logicType.toLowerCase()}`]: node.children.map(item =>
237
- this.formatFilters(item),
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
- [`${node.field}`]: {
243
- [`$${node.valueOP!.toLowerCase()}`]: node.value,
244
- },
244
+ condtype: 'DEFIELD',
245
+ fieldname: node.field,
246
+ condop: node.valueOP,
247
+ value: node.value,
245
248
  };
246
249
  }
247
250
  }