@ibiz-template/runtime 0.4.17-dev.0 → 0.5.0-beta.0
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 +972 -529
- package/dist/index.system.min.js +2 -2
- package/out/controller/common/control/md-control.controller.d.ts.map +1 -1
- package/out/controller/common/control/md-control.controller.js +7 -2
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.d.ts.map +1 -1
- package/out/controller/control/form/form-detail/form-detail/form-detail.controller.js +2 -6
- package/out/controller/control/grid/grid/grid-column.controller.d.ts +2 -1
- package/out/controller/control/grid/grid/grid-column.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.d.ts +17 -1
- package/out/controller/control/grid/grid/grid.controller.d.ts.map +1 -1
- package/out/controller/control/grid/grid/grid.controller.js +32 -0
- package/out/controller/control/kanban/kanban.controller.d.ts +2 -2
- package/out/controller/control/kanban/kanban.controller.d.ts.map +1 -1
- package/out/controller/control/kanban/kanban.controller.js +1 -1
- package/out/controller/control/md-ctrl/md-ctrl.controller.js +1 -1
- package/out/controller/control/search-bar/index.d.ts +1 -0
- package/out/controller/control/search-bar/index.d.ts.map +1 -1
- package/out/controller/control/search-bar/index.js +1 -0
- package/out/controller/control/search-bar/search-bar.controller.d.ts +59 -2
- package/out/controller/control/search-bar/search-bar.controller.d.ts.map +1 -1
- package/out/controller/control/search-bar/search-bar.controller.js +142 -9
- package/out/controller/control/search-bar/search-bar.service.d.ts +78 -0
- package/out/controller/control/search-bar/search-bar.service.d.ts.map +1 -0
- package/out/controller/control/search-bar/search-bar.service.js +130 -0
- package/out/controller/control/tree/tree.controller.d.ts +27 -1
- package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
- package/out/controller/control/tree/tree.controller.js +45 -7
- package/out/controller/control/tree/tree.service.d.ts +1 -1
- package/out/controller/control/tree/tree.service.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/index.d.ts +2 -0
- package/out/controller/control/tree-grid-ex/index.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/index.js +2 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts +4 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/index.js +3 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts +93 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.js +89 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts +13 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.js +11 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts +31 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.js +61 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts +26 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.d.ts.map +1 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex-row.state.js +26 -0
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts +48 -46
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex.controller.js +85 -115
- package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts +8 -58
- package/out/controller/control/tree-grid-ex/tree-grid-ex.service.d.ts.map +1 -1
- package/out/controller/control/tree-grid-ex/tree-grid-ex.service.js +5 -135
- package/out/interface/controller/controller/control/i-grid.controller.d.ts +8 -0
- package/out/interface/controller/controller/control/i-grid.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts +7 -7
- package/out/interface/controller/controller/control/i-tree-grid-ex.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/control/i-tree.controller.d.ts +1 -1
- package/out/interface/controller/controller/control/i-tree.controller.d.ts.map +1 -1
- package/out/interface/controller/controller/control/index.d.ts +1 -0
- package/out/interface/controller/controller/control/index.d.ts.map +1 -1
- package/out/interface/controller/controller/control/index.js +1 -0
- package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.d.ts +12 -0
- package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.d.ts.map +1 -0
- package/out/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.js +1 -0
- package/out/interface/controller/controller/control/tree-grid-ex-column/index.d.ts +2 -0
- package/out/interface/controller/controller/control/tree-grid-ex-column/index.d.ts.map +1 -0
- package/out/interface/controller/controller/control/tree-grid-ex-column/index.js +1 -0
- package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts +2 -2
- package/out/interface/controller/event/control/i-tree-grid-ex.event.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-search-bar.state.d.ts +64 -0
- package/out/interface/controller/state/control/i-search-bar.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts +31 -23
- package/out/interface/controller/state/control/i-tree-grid-ex.state.d.ts.map +1 -1
- package/out/interface/controller/state/control/i-tree.state.d.ts +8 -1
- package/out/interface/controller/state/control/i-tree.state.d.ts.map +1 -1
- package/out/interface/provider/i-tree-grid-ex-column.provider.d.ts +31 -0
- package/out/interface/provider/i-tree-grid-ex-column.provider.d.ts.map +1 -0
- package/out/interface/provider/i-tree-grid-ex-column.provider.js +1 -0
- package/out/interface/provider/index.d.ts +1 -0
- package/out/interface/provider/index.d.ts.map +1 -1
- package/out/interface/service/service/i-app-de.service.d.ts +10 -0
- package/out/interface/service/service/i-app-de.service.d.ts.map +1 -1
- package/out/register/helper/index.d.ts +1 -0
- package/out/register/helper/index.d.ts.map +1 -1
- package/out/register/helper/index.js +1 -0
- package/out/register/helper/tree-grid-ex-column-register.d.ts +23 -0
- package/out/register/helper/tree-grid-ex-column-register.d.ts.map +1 -0
- package/out/register/helper/tree-grid-ex-column-register.js +50 -0
- package/out/service/de-service-util.d.ts +3 -2
- package/out/service/de-service-util.d.ts.map +1 -1
- package/out/service/de-service-util.js +11 -10
- package/out/service/dto/method.dto.d.ts +2 -3
- package/out/service/dto/method.dto.d.ts.map +1 -1
- package/out/service/dto/method.dto.js +3 -4
- package/out/service/service/entity/de.service.d.ts +10 -0
- package/out/service/service/entity/de.service.d.ts.map +1 -1
- package/out/service/service/entity/de.service.js +22 -1
- package/out/service/service/entity/method/method.d.ts.map +1 -1
- package/out/service/service/entity/method/method.js +1 -12
- package/out/service/vo/tree-node-data/tree-data-set-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-data-set-node-data.js +51 -0
- package/out/service/vo/tree-node-data/tree-node-data.d.ts +2 -0
- package/out/service/vo/tree-node-data/tree-node-data.d.ts.map +1 -1
- package/out/service/vo/tree-node-data/tree-node-data.js +1 -0
- package/package.json +3 -3
- package/src/controller/common/control/md-control.controller.ts +7 -2
- package/src/controller/control/form/form-detail/form-detail/form-detail.controller.ts +2 -6
- package/src/controller/control/grid/grid/grid-column.controller.ts +4 -1
- package/src/controller/control/grid/grid/grid.controller.ts +34 -0
- package/src/controller/control/kanban/kanban.controller.ts +2 -2
- package/src/controller/control/md-ctrl/md-ctrl.controller.ts +1 -1
- package/src/controller/control/search-bar/index.ts +1 -0
- package/src/controller/control/search-bar/search-bar.controller.ts +178 -10
- package/src/controller/control/search-bar/search-bar.service.ts +161 -0
- package/src/controller/control/tree/tree.controller.ts +58 -11
- package/src/controller/control/tree/tree.service.ts +3 -1
- package/src/controller/control/tree-grid-ex/index.ts +2 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/index.ts +3 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-column/tree-grid-ex-column.controller.ts +121 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.controller.ts +13 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller.ts +76 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex-row.state.ts +37 -0
- package/src/controller/control/tree-grid-ex/tree-grid-ex.controller.ts +116 -140
- package/src/controller/control/tree-grid-ex/tree-grid-ex.service.ts +10 -165
- package/src/interface/controller/controller/control/i-grid.controller.ts +9 -0
- package/src/interface/controller/controller/control/i-tree-grid-ex.controller.ts +11 -12
- package/src/interface/controller/controller/control/i-tree.controller.ts +5 -2
- package/src/interface/controller/controller/control/index.ts +1 -0
- package/src/interface/controller/controller/control/tree-grid-ex-column/i-tree-grid-ex-column.controller.ts +12 -0
- package/src/interface/controller/controller/control/tree-grid-ex-column/index.ts +1 -0
- package/src/interface/controller/event/control/i-tree-grid-ex.event.ts +2 -2
- package/src/interface/controller/state/control/i-search-bar.state.ts +73 -0
- package/src/interface/controller/state/control/i-tree-grid-ex.state.ts +27 -24
- package/src/interface/controller/state/control/i-tree.state.ts +9 -1
- package/src/interface/provider/i-tree-grid-ex-column.provider.ts +39 -0
- package/src/interface/provider/index.ts +1 -0
- package/src/interface/service/service/i-app-de.service.ts +13 -0
- package/src/register/helper/index.ts +1 -0
- package/src/register/helper/tree-grid-ex-column-register.ts +67 -0
- package/src/service/de-service-util.ts +6 -4
- package/src/service/dto/method.dto.ts +4 -5
- package/src/service/service/entity/de.service.ts +26 -1
- package/src/service/service/entity/method/method.ts +1 -13
- package/src/service/vo/tree-node-data/tree-data-set-node-data.ts +53 -0
- package/src/service/vo/tree-node-data/tree-node-data.ts +6 -0
|
@@ -581,10 +581,10 @@ export class KanbanController
|
|
|
581
581
|
/**
|
|
582
582
|
* 打开批操作工具栏
|
|
583
583
|
*
|
|
584
|
-
* @param {string} groupKey
|
|
584
|
+
* @param {string | number} groupKey
|
|
585
585
|
* @memberof KanbanController
|
|
586
586
|
*/
|
|
587
|
-
openBatch(groupKey: string): void {
|
|
587
|
+
openBatch(groupKey: string | number): void {
|
|
588
588
|
this.state.selectGroupKey = groupKey;
|
|
589
589
|
this.state.batching = true;
|
|
590
590
|
this.state.selectedData = [];
|
|
@@ -84,7 +84,7 @@ export class MDCtrlController
|
|
|
84
84
|
async loadMore(): Promise<void> {
|
|
85
85
|
// 修复加载更多时,数据未加载成功 但是还是会继续加载的问题
|
|
86
86
|
if (this.state.total > this.state.items.length && !this.state.isLoading) {
|
|
87
|
-
await this.load({ isLoadMore: true });
|
|
87
|
+
await this.load({ isLoadMore: true, silent: true });
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { recursiveIterate } from '@ibiz-template/core';
|
|
1
|
+
import { mergeInLeft, recursiveIterate } from '@ibiz-template/core';
|
|
2
2
|
import { IAppDataEntity, ISearchBar } from '@ibiz/model-core';
|
|
3
3
|
import { isNil } from 'ramda';
|
|
4
4
|
import {
|
|
@@ -6,10 +6,13 @@ import {
|
|
|
6
6
|
ISearchBarEvent,
|
|
7
7
|
ISearchBarController,
|
|
8
8
|
IFilterNode,
|
|
9
|
+
IBackendSearchBarGroup,
|
|
10
|
+
IGridController,
|
|
9
11
|
} from '../../../interface';
|
|
10
12
|
import { convertNavData, ScriptFactory } from '../../../utils';
|
|
11
13
|
import { ControlController } from '../../common';
|
|
12
14
|
import { SearchBarFilterController } from './search-bar-filter.controller';
|
|
15
|
+
import { SearchBarService } from './search-bar.service';
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* 搜索栏控制器
|
|
@@ -40,6 +43,40 @@ export class SearchBarController
|
|
|
40
43
|
*/
|
|
41
44
|
filterControllers: SearchBarFilterController[] = [];
|
|
42
45
|
|
|
46
|
+
/**
|
|
47
|
+
* 搜索栏服务
|
|
48
|
+
* @author lxm
|
|
49
|
+
* @date 2023-05-15 11:03:34
|
|
50
|
+
* @type {EditFormService}
|
|
51
|
+
*/
|
|
52
|
+
service!: SearchBarService;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* 当前编辑的分组
|
|
56
|
+
* @return {*}
|
|
57
|
+
* @author: zhujiamin
|
|
58
|
+
* @Date: 2023-12-20 18:06:37
|
|
59
|
+
*/
|
|
60
|
+
currentEditGroup: IBackendSearchBarGroup | null = null;
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* 是否为后台分组
|
|
64
|
+
* @return {*}
|
|
65
|
+
* @author: zhujiamin
|
|
66
|
+
* @Date: 2023-12-21 10:17:43
|
|
67
|
+
*/
|
|
68
|
+
isBackendSearchGroup = true;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* 表格控制器
|
|
72
|
+
* @return {*}
|
|
73
|
+
* @author: zhujiamin
|
|
74
|
+
* @Date: 2023-12-22 13:50:16
|
|
75
|
+
*/
|
|
76
|
+
get grid(): IGridController | undefined {
|
|
77
|
+
return this.ctx.getController('grid') as IGridController;
|
|
78
|
+
}
|
|
79
|
+
|
|
43
80
|
/**
|
|
44
81
|
* 实体模型
|
|
45
82
|
* @author lxm
|
|
@@ -60,6 +97,8 @@ export class SearchBarController
|
|
|
60
97
|
if (this.model.enableFilter) {
|
|
61
98
|
this.resetFilter();
|
|
62
99
|
}
|
|
100
|
+
this.state.searchBarGroups = [];
|
|
101
|
+
this.state.selectedSearchGroupItem = null;
|
|
63
102
|
}
|
|
64
103
|
|
|
65
104
|
protected async onCreated(): Promise<void> {
|
|
@@ -73,7 +112,14 @@ export class SearchBarController
|
|
|
73
112
|
this.calcQuickSearchPlaceholder();
|
|
74
113
|
}
|
|
75
114
|
|
|
115
|
+
// 实例部件服务
|
|
116
|
+
if (this.isBackendSearchGroup && this.view.model.codeName) {
|
|
117
|
+
this.service = new SearchBarService(this.model, this.view.model.codeName);
|
|
118
|
+
await this.service.init(this.context);
|
|
119
|
+
}
|
|
120
|
+
|
|
76
121
|
await this.initSearchBarFilters();
|
|
122
|
+
await this.initSearBarGroups();
|
|
77
123
|
}
|
|
78
124
|
|
|
79
125
|
/**
|
|
@@ -144,7 +190,10 @@ export class SearchBarController
|
|
|
144
190
|
params.query = this.state.query;
|
|
145
191
|
}
|
|
146
192
|
// 快速分组
|
|
147
|
-
if (
|
|
193
|
+
if (
|
|
194
|
+
this.state.selectedGroupItem?.data &&
|
|
195
|
+
typeof this.state.selectedGroupItem.data === 'string'
|
|
196
|
+
) {
|
|
148
197
|
const navParams = ScriptFactory.execSingleLine(
|
|
149
198
|
this.state.selectedGroupItem.data,
|
|
150
199
|
) as IData;
|
|
@@ -167,13 +216,7 @@ export class SearchBarController
|
|
|
167
216
|
* @date 2023-10-16 03:52:44
|
|
168
217
|
*/
|
|
169
218
|
resetFilter(): void {
|
|
170
|
-
this.state.filterNodes =
|
|
171
|
-
{
|
|
172
|
-
leaf: false,
|
|
173
|
-
logicType: 'AND',
|
|
174
|
-
children: [{ leaf: true, field: null, valueOP: null, value: null }],
|
|
175
|
-
},
|
|
176
|
-
];
|
|
219
|
+
this.state.filterNodes = this.getOriginFilterNodes();
|
|
177
220
|
this.evt.emit('onSearch', undefined);
|
|
178
221
|
}
|
|
179
222
|
|
|
@@ -202,7 +245,7 @@ export class SearchBarController
|
|
|
202
245
|
* @date 2023-10-13 05:53:35
|
|
203
246
|
* @return {*} {IData}
|
|
204
247
|
*/
|
|
205
|
-
calcFilters(): IData | undefined {
|
|
248
|
+
calcFilters(): IData[] | undefined {
|
|
206
249
|
if (!this.model.enableFilter) {
|
|
207
250
|
return;
|
|
208
251
|
}
|
|
@@ -248,4 +291,129 @@ export class SearchBarController
|
|
|
248
291
|
value: node.value,
|
|
249
292
|
};
|
|
250
293
|
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* 获取初始过滤项树节点数据集合
|
|
297
|
+
* @return {*}
|
|
298
|
+
* @author: zhujiamin
|
|
299
|
+
* @Date: 2023-12-21 17:29:47
|
|
300
|
+
*/
|
|
301
|
+
protected getOriginFilterNodes(): IFilterNode[] {
|
|
302
|
+
return [
|
|
303
|
+
{
|
|
304
|
+
leaf: false,
|
|
305
|
+
logicType: 'AND',
|
|
306
|
+
children: [{ leaf: true, field: null, valueOP: null, value: null }],
|
|
307
|
+
},
|
|
308
|
+
];
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* 初始化搜索栏分组项(获取后台分组清单并合并模型)
|
|
313
|
+
* @return {*}
|
|
314
|
+
* @author: zhujiamin
|
|
315
|
+
* @Date: 2023-12-19 14:43:46
|
|
316
|
+
*/
|
|
317
|
+
async initSearBarGroups(): Promise<void> {
|
|
318
|
+
this.state.searchBarGroups = [];
|
|
319
|
+
if (this.isBackendSearchGroup) {
|
|
320
|
+
if (this.model.searchBarGroups && this.model.searchBarGroups.length > 0) {
|
|
321
|
+
this.state.searchBarGroups = this.model.searchBarGroups.map(item => ({
|
|
322
|
+
...item,
|
|
323
|
+
show: true,
|
|
324
|
+
saved: false,
|
|
325
|
+
searchGroupData: {},
|
|
326
|
+
}));
|
|
327
|
+
}
|
|
328
|
+
// 请求并合并searchBarGroups ,这里只能拿到清单
|
|
329
|
+
const res = await this.service.fetch();
|
|
330
|
+
if (res.ok) {
|
|
331
|
+
res.data.forEach((group: IData) => {
|
|
332
|
+
// 已经存在的覆盖,否则新增
|
|
333
|
+
const existGroup = this.state.searchBarGroups.find(
|
|
334
|
+
item => item.id === group.id,
|
|
335
|
+
);
|
|
336
|
+
if (existGroup) {
|
|
337
|
+
mergeInLeft(existGroup, group);
|
|
338
|
+
existGroup.saved = true;
|
|
339
|
+
} else {
|
|
340
|
+
this.state.searchBarGroups.push({
|
|
341
|
+
...group,
|
|
342
|
+
appId: this.context.srfappid,
|
|
343
|
+
show: true,
|
|
344
|
+
saved: true,
|
|
345
|
+
searchGroupData: {},
|
|
346
|
+
} as IBackendSearchBarGroup);
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
/**
|
|
354
|
+
* 处理保存
|
|
355
|
+
* @return {*}
|
|
356
|
+
* @author: zhujiamin
|
|
357
|
+
* @Date: 2023-12-19 16:17:15
|
|
358
|
+
*/
|
|
359
|
+
async handleSave(): Promise<void> {
|
|
360
|
+
if (this.grid && this.state.selectedSearchGroupItem) {
|
|
361
|
+
const filters = this.calcFilters();
|
|
362
|
+
const saveParams = {
|
|
363
|
+
filternodes: this.state.filterNodes,
|
|
364
|
+
searchconds: filters,
|
|
365
|
+
sort: this.grid.state.sortQuery,
|
|
366
|
+
columnstates: this.grid.state.columnStates,
|
|
367
|
+
show: this.state.selectedSearchGroupItem.show,
|
|
368
|
+
};
|
|
369
|
+
// 根据是否保存过决定是更新还是新建
|
|
370
|
+
if (this.state.selectedSearchGroupItem.saved) {
|
|
371
|
+
await this.service.update(this.state.selectedSearchGroupItem.id!, {
|
|
372
|
+
theme_model: saveParams,
|
|
373
|
+
show: this.state.selectedSearchGroupItem.show,
|
|
374
|
+
});
|
|
375
|
+
ibiz.message.success('保存成功');
|
|
376
|
+
} else {
|
|
377
|
+
const res = await this.service.createWithParams(
|
|
378
|
+
this.state.selectedSearchGroupItem.id!,
|
|
379
|
+
saveParams,
|
|
380
|
+
);
|
|
381
|
+
if (res.ok) {
|
|
382
|
+
const savedGroup = this.state.searchBarGroups.find(
|
|
383
|
+
group => group.id === res.data.id,
|
|
384
|
+
);
|
|
385
|
+
if (savedGroup) {
|
|
386
|
+
savedGroup.saved = true;
|
|
387
|
+
}
|
|
388
|
+
ibiz.message.success('保存成功');
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* 处理点击后台分组
|
|
396
|
+
* @return {*}
|
|
397
|
+
* @author: zhujiamin
|
|
398
|
+
* @Date: 2023-12-21 10:29:24
|
|
399
|
+
*/
|
|
400
|
+
async handleGroupClick(groupItem: IBackendSearchBarGroup): Promise<void> {
|
|
401
|
+
this.state.selectedSearchGroupItem = groupItem;
|
|
402
|
+
if (groupItem.saved) {
|
|
403
|
+
// 请求获取到搜索分组数据
|
|
404
|
+
const res = await this.service.get(groupItem.id!);
|
|
405
|
+
if (res.ok) {
|
|
406
|
+
mergeInLeft(groupItem, res.data);
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
if (groupItem.searchGroupData && groupItem.searchGroupData.filternodes) {
|
|
410
|
+
this.state.filterNodes = groupItem.searchGroupData.filternodes;
|
|
411
|
+
} else {
|
|
412
|
+
this.state.filterNodes = this.getOriginFilterNodes();
|
|
413
|
+
}
|
|
414
|
+
if (this.grid && groupItem && groupItem.searchGroupData) {
|
|
415
|
+
this.grid.setGroupParams(groupItem.searchGroupData);
|
|
416
|
+
await this.grid.load({ isInitialLoad: true });
|
|
417
|
+
}
|
|
418
|
+
}
|
|
251
419
|
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { IHttpResponse } from '@ibiz-template/core';
|
|
2
|
+
import { ISearchBar } from '@ibiz/model-core';
|
|
3
|
+
import { IAppService } from '../../../interface';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* 搜索栏服务
|
|
7
|
+
* @return {*}
|
|
8
|
+
* @author: zhujiamin
|
|
9
|
+
* @Date: 2023-12-22 10:28:32
|
|
10
|
+
*/
|
|
11
|
+
export class SearchBarService {
|
|
12
|
+
/**
|
|
13
|
+
* 应用
|
|
14
|
+
*
|
|
15
|
+
*/
|
|
16
|
+
app!: IAppService;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* 视图标识
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
viewTag!: string;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* 部件模型
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
28
|
+
readonly model: ISearchBar;
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Creates an instance of ControlService.
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
constructor(model: ISearchBar, viewTag: string) {
|
|
35
|
+
this.model = model;
|
|
36
|
+
this.viewTag = viewTag;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
async init(_context?: IContext): Promise<void> {
|
|
40
|
+
this.app = ibiz.hub.getApp(this.model.appId);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* 主题管理URL
|
|
45
|
+
* @return {*}
|
|
46
|
+
* @author: zhujiamin
|
|
47
|
+
* @Date: 2023-12-22 10:51:49
|
|
48
|
+
*/
|
|
49
|
+
themeUrl = '/extension/app_view_themes';
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* 执行查询多条数据的方法
|
|
53
|
+
*
|
|
54
|
+
*/
|
|
55
|
+
async fetch(): Promise<IHttpResponse> {
|
|
56
|
+
const res = await this.app.net.post(`${this.themeUrl}/fetch_default`, {
|
|
57
|
+
app_view_tag: this.viewTag,
|
|
58
|
+
sort: 'create_time,asc',
|
|
59
|
+
});
|
|
60
|
+
if (res.ok) {
|
|
61
|
+
res.data = this.convertBackDataToFront(res.data as IData[]);
|
|
62
|
+
}
|
|
63
|
+
return res;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* 执行获取单条数据方法
|
|
68
|
+
*
|
|
69
|
+
*/
|
|
70
|
+
async get(id: string): Promise<IHttpResponse> {
|
|
71
|
+
const res = await this.app.net.get(`${this.themeUrl}/${id}`, {
|
|
72
|
+
app_view_tag: this.viewTag,
|
|
73
|
+
});
|
|
74
|
+
if (res.ok) {
|
|
75
|
+
[res.data] = this.convertBackDataToFront([res.data] as IData[]);
|
|
76
|
+
}
|
|
77
|
+
return res;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* 删除单条数据
|
|
82
|
+
*
|
|
83
|
+
*/
|
|
84
|
+
async remove(id: string): Promise<IHttpResponse> {
|
|
85
|
+
const res = await this.app.net.delete(`${this.themeUrl}/${id}`, {
|
|
86
|
+
app_view_tag: this.viewTag,
|
|
87
|
+
});
|
|
88
|
+
return res;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* 新建数据
|
|
93
|
+
*
|
|
94
|
+
*/
|
|
95
|
+
async create(caption: string): Promise<IHttpResponse> {
|
|
96
|
+
const res = await this.app.net.post(`${this.themeUrl}`, {
|
|
97
|
+
name: caption,
|
|
98
|
+
app_view_tag: this.viewTag,
|
|
99
|
+
});
|
|
100
|
+
return res;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* 新建数据(带参数,给平台配置建立的分组用)
|
|
105
|
+
*
|
|
106
|
+
*/
|
|
107
|
+
async createWithParams(id: string, data: IData): Promise<IHttpResponse> {
|
|
108
|
+
const res = await this.app.net.post(`${this.themeUrl}`, {
|
|
109
|
+
id,
|
|
110
|
+
theme_model: JSON.stringify(data),
|
|
111
|
+
app_view_tag: this.viewTag,
|
|
112
|
+
show: data.show,
|
|
113
|
+
});
|
|
114
|
+
return res;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* 更新数据
|
|
119
|
+
*
|
|
120
|
+
*/
|
|
121
|
+
async update(id: string, data: IData): Promise<IHttpResponse> {
|
|
122
|
+
const updateParams = { app_view_tag: this.viewTag };
|
|
123
|
+
if (data.theme_model) {
|
|
124
|
+
Object.assign(updateParams, {
|
|
125
|
+
theme_model: JSON.stringify(data.theme_model),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
if (data.caption) {
|
|
129
|
+
Object.assign(updateParams, {
|
|
130
|
+
name: data.caption,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
if (typeof data.show === 'boolean') {
|
|
134
|
+
Object.assign(updateParams, {
|
|
135
|
+
show: data.show,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
const res = await this.app.net.put(`${this.themeUrl}/${id}`, updateParams);
|
|
139
|
+
return res;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* 转换后台数据成前端需要的格式
|
|
144
|
+
* @param {IData} data
|
|
145
|
+
* @return {*}
|
|
146
|
+
* @author: zhujiamin
|
|
147
|
+
* @Date: 2023-12-22 11:19:50
|
|
148
|
+
*/
|
|
149
|
+
convertBackDataToFront(data: IData[]): IData[] {
|
|
150
|
+
return data.map(item => {
|
|
151
|
+
const tempItem = { ...item };
|
|
152
|
+
if (item.name) {
|
|
153
|
+
tempItem.caption = item.name;
|
|
154
|
+
}
|
|
155
|
+
if (item.theme_model) {
|
|
156
|
+
tempItem.searchGroupData = JSON.parse(item.theme_model);
|
|
157
|
+
}
|
|
158
|
+
return tempItem;
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
getChildNodeRSs,
|
|
27
27
|
getUIActionItemsByActionLevel,
|
|
28
28
|
} from '../../../model';
|
|
29
|
+
import { ControllerEvent } from '../../utils';
|
|
29
30
|
|
|
30
31
|
export type DropNodeRS = {
|
|
31
32
|
minorEntityId: string;
|
|
@@ -42,12 +43,20 @@ export type DropNodeRS = {
|
|
|
42
43
|
* @extends {MDControlController<IDETree, ITreeState, ITreeEvent>}
|
|
43
44
|
* @implements {ITreeController}
|
|
44
45
|
*/
|
|
45
|
-
export class TreeController
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
export class TreeController<
|
|
47
|
+
T extends IDETree = IDETree,
|
|
48
|
+
S extends ITreeState = ITreeState,
|
|
49
|
+
E extends ITreeEvent = ITreeEvent,
|
|
50
|
+
>
|
|
51
|
+
extends MDControlController<T, S, E>
|
|
52
|
+
implements ITreeController<T, S, E>
|
|
48
53
|
{
|
|
49
54
|
declare service: TreeService;
|
|
50
55
|
|
|
56
|
+
protected get _evt(): ControllerEvent<ITreeEvent> {
|
|
57
|
+
return this.evt;
|
|
58
|
+
}
|
|
59
|
+
|
|
51
60
|
/**
|
|
52
61
|
* 上下文菜单控制器
|
|
53
62
|
* @author lxm
|
|
@@ -124,8 +133,7 @@ export class TreeController
|
|
|
124
133
|
this.initDropNodeRss();
|
|
125
134
|
this.initNodeClickTBUIActionItem();
|
|
126
135
|
|
|
127
|
-
this.
|
|
128
|
-
await this.service.init(this.context);
|
|
136
|
+
await this.initService();
|
|
129
137
|
|
|
130
138
|
// 初始化上下文菜单控制器
|
|
131
139
|
this.model.detreeNodes!.forEach(node => {
|
|
@@ -145,6 +153,18 @@ export class TreeController
|
|
|
145
153
|
);
|
|
146
154
|
}
|
|
147
155
|
|
|
156
|
+
/**
|
|
157
|
+
* 初始化对应类型的部件服务
|
|
158
|
+
* @author lxm
|
|
159
|
+
* @date 2023-12-21 11:25:33
|
|
160
|
+
* @protected
|
|
161
|
+
* @return {*} {Promise<void>}
|
|
162
|
+
*/
|
|
163
|
+
protected async initService(): Promise<void> {
|
|
164
|
+
this.service = new TreeService(this.model);
|
|
165
|
+
await this.service.init(this.context);
|
|
166
|
+
}
|
|
167
|
+
|
|
148
168
|
/**
|
|
149
169
|
* 初始化节点拖入关系处理
|
|
150
170
|
* @author lxm
|
|
@@ -218,7 +238,7 @@ export class TreeController
|
|
|
218
238
|
}
|
|
219
239
|
await this.afterLoad(args, nodes);
|
|
220
240
|
this.state.isLoaded = true;
|
|
221
|
-
await this.
|
|
241
|
+
await this._evt.emit('onLoadSuccess', {
|
|
222
242
|
isInitialLoad,
|
|
223
243
|
});
|
|
224
244
|
|
|
@@ -267,6 +287,19 @@ export class TreeController
|
|
|
267
287
|
this.state.rootNodes = nodes;
|
|
268
288
|
}
|
|
269
289
|
|
|
290
|
+
await this.afterLoadNodes(nodes);
|
|
291
|
+
|
|
292
|
+
return nodes;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
/**
|
|
296
|
+
* loadNodes加载完子数据之后的处理
|
|
297
|
+
* @author lxm
|
|
298
|
+
* @date 2023-12-22 02:37:50
|
|
299
|
+
* @param {ITreeNodeData[]} nodes 加载回来的子数据
|
|
300
|
+
* @return {*} {Promise<void>}
|
|
301
|
+
*/
|
|
302
|
+
async afterLoadNodes(nodes: ITreeNodeData[]): Promise<void> {
|
|
270
303
|
// 更新items
|
|
271
304
|
this.state.items = [];
|
|
272
305
|
recursiveIterate(
|
|
@@ -276,9 +309,8 @@ export class TreeController
|
|
|
276
309
|
},
|
|
277
310
|
);
|
|
278
311
|
|
|
312
|
+
// 重新计算展开节点标识
|
|
279
313
|
this.state.expandedKeys = this.calcExpandedKeys(nodes);
|
|
280
|
-
|
|
281
|
-
return nodes;
|
|
282
314
|
}
|
|
283
315
|
|
|
284
316
|
/**
|
|
@@ -363,7 +395,7 @@ export class TreeController
|
|
|
363
395
|
|
|
364
396
|
setActive(item: ITreeNodeData): Promise<void> {
|
|
365
397
|
const nodeParams = this.parseTreeNodeData(item);
|
|
366
|
-
return this.
|
|
398
|
+
return this._evt.emit('onActive', { ...nodeParams, nodeData: item });
|
|
367
399
|
}
|
|
368
400
|
|
|
369
401
|
setSelection(selection: IData[]): void {
|
|
@@ -388,6 +420,21 @@ export class TreeController
|
|
|
388
420
|
return this.model.detreeNodes?.find(item => item.id === id);
|
|
389
421
|
}
|
|
390
422
|
|
|
423
|
+
/**
|
|
424
|
+
* 通过标识获取节点数据
|
|
425
|
+
* @author lxm
|
|
426
|
+
* @date 2023-12-22 02:21:38
|
|
427
|
+
* @param {string} id 可以是节点id也可以是_uuid
|
|
428
|
+
* @return {*} {(ITreeNodeData | undefined)}
|
|
429
|
+
*/
|
|
430
|
+
getNodeData(key: string): ITreeNodeData | undefined {
|
|
431
|
+
const find = this.state.items.find(item => item.id === key);
|
|
432
|
+
if (find) {
|
|
433
|
+
return find;
|
|
434
|
+
}
|
|
435
|
+
return this.state.items.find(item => item._uuid === key);
|
|
436
|
+
}
|
|
437
|
+
|
|
391
438
|
/**
|
|
392
439
|
* 执行界面行为
|
|
393
440
|
*
|
|
@@ -517,7 +564,7 @@ export class TreeController
|
|
|
517
564
|
const targetNode = refreshParent ? currentNode.parent! : currentNode;
|
|
518
565
|
|
|
519
566
|
const nodes = await this.loadNodes(targetNode);
|
|
520
|
-
this.
|
|
567
|
+
this._evt.emit('onAfterRefreshParent', {
|
|
521
568
|
parentNode: targetNode,
|
|
522
569
|
children: nodes,
|
|
523
570
|
});
|
|
@@ -761,7 +808,7 @@ export class TreeController
|
|
|
761
808
|
await this.updateDeNodeData(modifiedNodeDatas);
|
|
762
809
|
|
|
763
810
|
// *通知界面修改移入的父节点的子节点数据
|
|
764
|
-
this.
|
|
811
|
+
this._evt.emit('onAfterNodeDrop', { isChangedParent });
|
|
765
812
|
}
|
|
766
813
|
|
|
767
814
|
/**
|
|
@@ -69,7 +69,9 @@ export interface TreeFetchOpts {
|
|
|
69
69
|
* @class GridService
|
|
70
70
|
* @extends {MDControlService<IDETree>}
|
|
71
71
|
*/
|
|
72
|
-
export class TreeService
|
|
72
|
+
export class TreeService<
|
|
73
|
+
T extends IDETree = IDETree,
|
|
74
|
+
> extends MDControlService<T> {
|
|
73
75
|
/**
|
|
74
76
|
* 获取子节点数据
|
|
75
77
|
*
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { TreeGridExColumnController } from './tree-grid-ex-column/tree-grid-ex-column.controller';
|
|
2
|
+
export { TreeGridExFieldColumnController } from './tree-grid-ex-field-column/tree-grid-ex-field-column.controller';
|
|
3
|
+
export { TreeGridExUAColumnController } from './tree-grid-ex-ua-column/tree-grid-ex-ua-column.controller';
|