@ibiz-template/model-helper 0.4.8-dev.0 → 0.4.9
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 +57 -11
- package/dist/index.system.min.js +1 -1
- package/out/model-helper.d.ts.map +1 -1
- package/out/model-helper.js +2 -14
- package/out/utils/index.d.ts +1 -0
- package/out/utils/index.d.ts.map +1 -1
- package/out/utils/index.js +1 -0
- package/out/utils/merge-model/merge-app-menu.d.ts +11 -0
- package/out/utils/merge-model/merge-app-menu.d.ts.map +1 -0
- package/out/utils/merge-model/merge-app-menu.js +84 -0
- package/package.json +3 -3
- package/src/model-helper.ts +2 -16
- package/src/utils/index.ts +1 -0
- package/src/utils/merge-model/merge-app-menu.ts +84 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-helper.d.ts","sourceRoot":"","sources":["../src/model-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,UAAU,EAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC;;;;;;;GAOG;AACH,qBAAa,WAAW;IAgCpB,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IACpD,SAAS,CAAC,YAAY,EAAE,MAAM;IAC9B,SAAS,CAAC,UAAU,EAAE,OAAO;IAjC/B,SAAS,CAAC,GAAG,YAAmB;IAEhC;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,CAAM;IAExC;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEpD;;;;;;;OAOG;gBAES,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC1C,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,OAAc;IAKtC;;;;;;;OAOG;IACG,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5C;;;;;;;;OAQG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAA0B,GAChC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;;;OAQG;cACa,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDlE;;;;;;;;;OASG;cACa,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;OAOG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAWlE;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7D;;;;;;;;;OASG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,EACxB,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,CAAC;IAU1B;;;;;;;OAOG;IACH,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"model-helper.d.ts","sourceRoot":"","sources":["../src/model-helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,UAAU,EAGX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAIzC;;;;;;;GAOG;AACH,qBAAa,WAAW;IAgCpB,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC;IACpD,SAAS,CAAC,YAAY,EAAE,MAAM;IAC9B,SAAS,CAAC,UAAU,EAAE,OAAO;IAjC/B,SAAS,CAAC,GAAG,YAAmB;IAEhC;;;;;;;OAOG;IACH,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,CAAM;IAExC;;;;;;;OAOG;IACH,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAa;IAEpD;;;;;;;OAOG;gBAES,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC1C,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,OAAc;IAKtC;;;;;;;OAOG;IACG,OAAO,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK5C;;;;;;;;OAQG;IACG,aAAa,CACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAA0B,GAChC,OAAO,CAAC,IAAI,CAAC;IAYhB;;;;;;;;OAQG;cACa,SAAS,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDlE;;;;;;;;;OASG;cACa,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC;IAQhB;;;;;;;OAOG;IACG,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAWlE;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI7D;;;;;;;;;OASG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,EACxB,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,cAAc,CAAC;IAU1B;;;;;;;OAOG;IACH,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAatD;;;;;;;;OAQG;IACG,eAAe,CACnB,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GACvB,OAAO,CAAC,QAAQ,CAAC;IAOpB;;;;;;;;OAQG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GACvB,OAAO,CAAC,OAAO,CAAC;IAKnB;;;;;;;;OAQG;IACH,SAAS,CAAC,YAAY,CACpB,OAAO,GAAE,OAAO,GAAG,MAA0B,GAC5C,SAAS;IAQZ;;;;;;;;OAQG;IACH,SAAS,CAAC,SAAS,CAAC,IAAI,GAAE,OAAO,GAAG,MAA0B,GAAG,MAAM;CASxE"}
|
package/out/model-helper.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DSLHelper } from '@ibiz/rt-model-api';
|
|
2
2
|
import { ModelUtil } from './model-util';
|
|
3
3
|
import { ModelLoader } from './model-loader';
|
|
4
|
-
import { plural } from './utils';
|
|
4
|
+
import { mergeAppMenu, plural } from './utils';
|
|
5
5
|
/**
|
|
6
6
|
* 模型加载工具类
|
|
7
7
|
*
|
|
@@ -202,19 +202,7 @@ export class ModelHelper {
|
|
|
202
202
|
view.controls.forEach((ctrl) => {
|
|
203
203
|
if (ctrl.controlType === 'APPMENU') {
|
|
204
204
|
ctrl = ctrl;
|
|
205
|
-
this.subAppRefs
|
|
206
|
-
if (subApp &&
|
|
207
|
-
subApp.appMenuModel &&
|
|
208
|
-
subApp.appMenuModel.appMenuItems) {
|
|
209
|
-
if (!ctrl.appMenuItems) {
|
|
210
|
-
ctrl.appMenuItems = [];
|
|
211
|
-
}
|
|
212
|
-
ctrl.appMenuItems = [
|
|
213
|
-
...ctrl.appMenuItems,
|
|
214
|
-
...subApp.appMenuModel.appMenuItems,
|
|
215
|
-
];
|
|
216
|
-
}
|
|
217
|
-
});
|
|
205
|
+
mergeAppMenu(ctrl, this.subAppRefs);
|
|
218
206
|
}
|
|
219
207
|
});
|
|
220
208
|
}
|
package/out/utils/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export { formatPath } from './format-path/format-path';
|
|
|
2
2
|
export { mergeModel } from './merge-model/merge-model';
|
|
3
3
|
export { plural, pluralLower } from './plural/plural';
|
|
4
4
|
export { ServicePathDeep, ServicePathItem, ServicePathUtil, } from './service-path-util/service-path-util';
|
|
5
|
+
export { mergeAppMenu } from './merge-model/merge-app-menu';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/out/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,uCAAuC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EACL,eAAe,EACf,eAAe,EACf,eAAe,GAChB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC"}
|
package/out/utils/index.js
CHANGED
|
@@ -2,3 +2,4 @@ export { formatPath } from './format-path/format-path';
|
|
|
2
2
|
export { mergeModel } from './merge-model/merge-model';
|
|
3
3
|
export { plural, pluralLower } from './plural/plural';
|
|
4
4
|
export { ServicePathUtil, } from './service-path-util/service-path-util';
|
|
5
|
+
export { mergeAppMenu } from './merge-model/merge-app-menu';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IAppMenuModel, ISubAppRef } from '@ibiz/model-core';
|
|
2
|
+
/**
|
|
3
|
+
* 合并主应用首页菜单
|
|
4
|
+
* @author lxm
|
|
5
|
+
* @date 2023-12-07 02:26:57
|
|
6
|
+
* @export
|
|
7
|
+
* @param {IAppMenuModel} mainMenu
|
|
8
|
+
* @param {ISubAppRef[]} subAppRefs
|
|
9
|
+
*/
|
|
10
|
+
export declare function mergeAppMenu(mainMenu: IAppMenuModel, subAppRefs: ISubAppRef[]): void;
|
|
11
|
+
//# sourceMappingURL=merge-app-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-app-menu.d.ts","sourceRoot":"","sources":["../../../src/utils/merge-model/merge-app-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyD3E;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,UAAU,EAAE,GACvB,IAAI,CAeN"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 递归合并主菜单项和子菜单项
|
|
3
|
+
* @author lxm
|
|
4
|
+
* @date 2023-12-07 03:16:13
|
|
5
|
+
* @param {IAppMenuItem} mainItem
|
|
6
|
+
* @param {IAppMenuItem} subItem
|
|
7
|
+
*/
|
|
8
|
+
function mergeMenuItem(mainItem, subItem) {
|
|
9
|
+
var _a, _b, _c;
|
|
10
|
+
// 主菜单项没有子菜单项直接合并替换
|
|
11
|
+
if (!((_a = mainItem.appMenuItems) === null || _a === void 0 ? void 0 : _a.length)) {
|
|
12
|
+
if ((_b = subItem.appMenuItems) === null || _b === void 0 ? void 0 : _b.length) {
|
|
13
|
+
// 子菜单有下级菜单的时候只是添加下级菜单
|
|
14
|
+
mainItem.appMenuItems = subItem.appMenuItems;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
// 子菜单项也没有下级菜单的时候覆盖
|
|
18
|
+
Object.assign(mainItem, subItem);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
const addItems = [];
|
|
23
|
+
(_c = subItem.appMenuItems) === null || _c === void 0 ? void 0 : _c.forEach(item => {
|
|
24
|
+
var _a;
|
|
25
|
+
const sameMenu = (_a = mainItem.appMenuItems) === null || _a === void 0 ? void 0 : _a.find(x => x.id === item.id);
|
|
26
|
+
if (sameMenu) {
|
|
27
|
+
mergeMenuItem(sameMenu, item);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
addItems.push(item);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
mainItem.appMenuItems.push(...addItems);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* 合并主菜单和子菜单
|
|
38
|
+
* @author lxm
|
|
39
|
+
* @date 2023-12-07 03:15:54
|
|
40
|
+
* @param {IAppMenuModel} main
|
|
41
|
+
* @param {IAppMenuModel} sub
|
|
42
|
+
*/
|
|
43
|
+
function mergeMenu(main, sub) {
|
|
44
|
+
var _a;
|
|
45
|
+
const addItems = [];
|
|
46
|
+
(_a = sub.appMenuItems) === null || _a === void 0 ? void 0 : _a.forEach(item => {
|
|
47
|
+
var _a;
|
|
48
|
+
const sameMenu = (_a = main.appMenuItems) === null || _a === void 0 ? void 0 : _a.find(x => x.id === item.id);
|
|
49
|
+
if (sameMenu) {
|
|
50
|
+
mergeMenuItem(sameMenu, item);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
addItems.push(item);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
if (!main.appMenuItems) {
|
|
57
|
+
main.appMenuItems = [];
|
|
58
|
+
}
|
|
59
|
+
main.appMenuItems.push(...addItems);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 合并主应用首页菜单
|
|
63
|
+
* @author lxm
|
|
64
|
+
* @date 2023-12-07 02:26:57
|
|
65
|
+
* @export
|
|
66
|
+
* @param {IAppMenuModel} mainMenu
|
|
67
|
+
* @param {ISubAppRef[]} subAppRefs
|
|
68
|
+
*/
|
|
69
|
+
export function mergeAppMenu(mainMenu, subAppRefs) {
|
|
70
|
+
const subMenus = [];
|
|
71
|
+
subAppRefs.forEach(sub => {
|
|
72
|
+
var _a, _b;
|
|
73
|
+
if ((_b = (_a = sub.appMenuModel) === null || _a === void 0 ? void 0 : _a.appMenuItems) === null || _b === void 0 ? void 0 : _b.length) {
|
|
74
|
+
subMenus.push(sub.appMenuModel);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
if (subMenus.length === 0) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// 依次合并主应用菜单和子应用菜单
|
|
81
|
+
subMenus.forEach(subMenu => {
|
|
82
|
+
mergeMenu(mainMenu, subMenu);
|
|
83
|
+
});
|
|
84
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ibiz-template/model-helper",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.9",
|
|
4
4
|
"description": "控制器包",
|
|
5
5
|
"main": "out/index.js",
|
|
6
6
|
"types": "out/index.d.ts",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"ramda": "^0.29.1"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@ibiz-template/runtime": "^0.4.
|
|
38
|
+
"@ibiz-template/runtime": "^0.4.9",
|
|
39
39
|
"@types/pluralize": "^0.0.33",
|
|
40
40
|
"@types/ramda": "^0.29.9"
|
|
41
41
|
},
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"@ibiz-template/runtime": "^0.4.0",
|
|
44
44
|
"ramda": "^0.29.0"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "aed61e1dc8d1cf0f56bbed55cfe70d6ea0f5cc58"
|
|
47
47
|
}
|
package/src/model-helper.ts
CHANGED
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
import { DSLHelper } from '@ibiz/rt-model-api';
|
|
12
12
|
import { ModelUtil } from './model-util';
|
|
13
13
|
import { ModelLoader } from './model-loader';
|
|
14
|
-
import { plural } from './utils';
|
|
14
|
+
import { mergeAppMenu, plural } from './utils';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* 模型加载工具类
|
|
@@ -246,21 +246,7 @@ export class ModelHelper {
|
|
|
246
246
|
view.controls.forEach((ctrl: IAppMenu) => {
|
|
247
247
|
if (ctrl.controlType === 'APPMENU') {
|
|
248
248
|
ctrl = ctrl as IAppMenuModel;
|
|
249
|
-
this.subAppRefs
|
|
250
|
-
if (
|
|
251
|
-
subApp &&
|
|
252
|
-
subApp.appMenuModel &&
|
|
253
|
-
subApp.appMenuModel.appMenuItems
|
|
254
|
-
) {
|
|
255
|
-
if (!ctrl.appMenuItems) {
|
|
256
|
-
ctrl.appMenuItems = [];
|
|
257
|
-
}
|
|
258
|
-
ctrl.appMenuItems = [
|
|
259
|
-
...ctrl.appMenuItems,
|
|
260
|
-
...subApp.appMenuModel.appMenuItems,
|
|
261
|
-
];
|
|
262
|
-
}
|
|
263
|
-
});
|
|
249
|
+
mergeAppMenu(ctrl, this.subAppRefs);
|
|
264
250
|
}
|
|
265
251
|
});
|
|
266
252
|
}
|
package/src/utils/index.ts
CHANGED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { IAppMenuItem, IAppMenuModel, ISubAppRef } from '@ibiz/model-core';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* 递归合并主菜单项和子菜单项
|
|
5
|
+
* @author lxm
|
|
6
|
+
* @date 2023-12-07 03:16:13
|
|
7
|
+
* @param {IAppMenuItem} mainItem
|
|
8
|
+
* @param {IAppMenuItem} subItem
|
|
9
|
+
*/
|
|
10
|
+
function mergeMenuItem(mainItem: IAppMenuItem, subItem: IAppMenuItem): void {
|
|
11
|
+
// 主菜单项没有子菜单项直接合并替换
|
|
12
|
+
if (!mainItem.appMenuItems?.length) {
|
|
13
|
+
if (subItem.appMenuItems?.length) {
|
|
14
|
+
// 子菜单有下级菜单的时候只是添加下级菜单
|
|
15
|
+
mainItem.appMenuItems = subItem.appMenuItems;
|
|
16
|
+
} else {
|
|
17
|
+
// 子菜单项也没有下级菜单的时候覆盖
|
|
18
|
+
Object.assign(mainItem, subItem);
|
|
19
|
+
}
|
|
20
|
+
} else {
|
|
21
|
+
const addItems: IAppMenuItem[] = [];
|
|
22
|
+
subItem.appMenuItems?.forEach(item => {
|
|
23
|
+
const sameMenu = mainItem.appMenuItems?.find(x => x.id === item.id);
|
|
24
|
+
if (sameMenu) {
|
|
25
|
+
mergeMenuItem(sameMenu, item);
|
|
26
|
+
} else {
|
|
27
|
+
addItems.push(item);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
mainItem.appMenuItems.push(...addItems);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* 合并主菜单和子菜单
|
|
36
|
+
* @author lxm
|
|
37
|
+
* @date 2023-12-07 03:15:54
|
|
38
|
+
* @param {IAppMenuModel} main
|
|
39
|
+
* @param {IAppMenuModel} sub
|
|
40
|
+
*/
|
|
41
|
+
function mergeMenu(main: IAppMenuModel, sub: IAppMenuModel): void {
|
|
42
|
+
const addItems: IAppMenuItem[] = [];
|
|
43
|
+
sub.appMenuItems?.forEach(item => {
|
|
44
|
+
const sameMenu = main.appMenuItems?.find(x => x.id === item.id);
|
|
45
|
+
if (sameMenu) {
|
|
46
|
+
mergeMenuItem(sameMenu, item);
|
|
47
|
+
} else {
|
|
48
|
+
addItems.push(item);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
if (!main.appMenuItems) {
|
|
53
|
+
main.appMenuItems = [];
|
|
54
|
+
}
|
|
55
|
+
main.appMenuItems.push(...addItems);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* 合并主应用首页菜单
|
|
60
|
+
* @author lxm
|
|
61
|
+
* @date 2023-12-07 02:26:57
|
|
62
|
+
* @export
|
|
63
|
+
* @param {IAppMenuModel} mainMenu
|
|
64
|
+
* @param {ISubAppRef[]} subAppRefs
|
|
65
|
+
*/
|
|
66
|
+
export function mergeAppMenu(
|
|
67
|
+
mainMenu: IAppMenuModel,
|
|
68
|
+
subAppRefs: ISubAppRef[],
|
|
69
|
+
): void {
|
|
70
|
+
const subMenus: IAppMenuModel[] = [];
|
|
71
|
+
subAppRefs.forEach(sub => {
|
|
72
|
+
if (sub.appMenuModel?.appMenuItems?.length) {
|
|
73
|
+
subMenus.push(sub.appMenuModel);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
if (subMenus.length === 0) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// 依次合并主应用菜单和子应用菜单
|
|
81
|
+
subMenus.forEach(subMenu => {
|
|
82
|
+
mergeMenu(mainMenu, subMenu);
|
|
83
|
+
});
|
|
84
|
+
}
|