|
|
|
@ -133,32 +133,26 @@ export const usePermissionStore = defineStore({
|
|
|
|
|
|
|
|
|
|
const normalizeMenu = (data) => {
|
|
|
|
|
let path = '';
|
|
|
|
|
if (data.item.url.indexOf('@') > 0) {
|
|
|
|
|
path = data.item.url.replace('@', '/');
|
|
|
|
|
if (data.url.indexOf('@') > 0) {
|
|
|
|
|
path = data.url.replace('@', '/');
|
|
|
|
|
} else {
|
|
|
|
|
path =
|
|
|
|
|
data.item.url ||
|
|
|
|
|
'/formCallPage?id=' +
|
|
|
|
|
data.item.id +
|
|
|
|
|
'&name=' +
|
|
|
|
|
data.item.name +
|
|
|
|
|
'&code=' +
|
|
|
|
|
data.item.code;
|
|
|
|
|
data.url || '/formCallPage?id=' + data.id + '&name=' + data.name + '&code=' + data.code;
|
|
|
|
|
}
|
|
|
|
|
const newPath = {
|
|
|
|
|
orderNo: data.item.sortNo,
|
|
|
|
|
icon: data.item.iconName,
|
|
|
|
|
title: data.item.name,
|
|
|
|
|
orderNo: data.sortNo,
|
|
|
|
|
icon: data.iconName,
|
|
|
|
|
title: data.name,
|
|
|
|
|
meta: {
|
|
|
|
|
orderNo: data.item.sortNo,
|
|
|
|
|
icon: data.item.iconName,
|
|
|
|
|
title: data.item.name,
|
|
|
|
|
elements: (data.item && data.item.elements) || '',
|
|
|
|
|
orderNo: data.sortNo,
|
|
|
|
|
icon: data.iconName,
|
|
|
|
|
title: data.name,
|
|
|
|
|
elements: (data && data.elements) || '',
|
|
|
|
|
},
|
|
|
|
|
name: data.item.name,
|
|
|
|
|
hideMenu: data.item.status == 1 ? false : true,
|
|
|
|
|
name: data.name,
|
|
|
|
|
hideMenu: data.status == 1 ? false : true,
|
|
|
|
|
path: path,
|
|
|
|
|
id: data.item.id || '',
|
|
|
|
|
id: data.id || '',
|
|
|
|
|
children: [],
|
|
|
|
|
};
|
|
|
|
|
if (data.children && data.children.length > 0) {
|
|
|
|
@ -172,56 +166,56 @@ export const usePermissionStore = defineStore({
|
|
|
|
|
const modules = import.meta.glob('../../views/**/**/**/index.vue');
|
|
|
|
|
childData.forEach((element) => {
|
|
|
|
|
// 菜单里配置带参数,但没有单独的主路由,先注册主路由
|
|
|
|
|
if (element.item.status == 1 && element.item.url.indexOf('@') > 0) {
|
|
|
|
|
if (router.hasRoute(element.item.code)) {
|
|
|
|
|
const path = element.item.url.substring(0, element.item.url.indexOf('@'));
|
|
|
|
|
router.addRoute(element.item.code, {
|
|
|
|
|
if (element.status == 1 && element.url.indexOf('@') > 0) {
|
|
|
|
|
if (router.hasRoute(element.code)) {
|
|
|
|
|
const path = element.url.substring(0, element.url.indexOf('@'));
|
|
|
|
|
router.addRoute(element.code, {
|
|
|
|
|
path: path + '/:id',
|
|
|
|
|
name: element.item.url.replaceAll('/', ''),
|
|
|
|
|
name: element.url.replaceAll('/', ''),
|
|
|
|
|
meta: {
|
|
|
|
|
title: element.item.name,
|
|
|
|
|
icon: element.item.iconName,
|
|
|
|
|
elements: element.item.elements,
|
|
|
|
|
title: element.name,
|
|
|
|
|
icon: element.iconName,
|
|
|
|
|
elements: element.elements,
|
|
|
|
|
},
|
|
|
|
|
component: modules['../../views/demo' + path + '/index.vue'],
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
const path = element.item.url.substring(0, element.item.url.indexOf('@'));
|
|
|
|
|
const path = element.url.substring(0, element.url.indexOf('@'));
|
|
|
|
|
router.addRoute('Root', {
|
|
|
|
|
path: path,
|
|
|
|
|
name: element.item.code,
|
|
|
|
|
name: element.code,
|
|
|
|
|
meta: {
|
|
|
|
|
title: element.item.name,
|
|
|
|
|
icon: element.item.iconName,
|
|
|
|
|
title: element.name,
|
|
|
|
|
icon: element.iconName,
|
|
|
|
|
hideChildrenInMenu: true,
|
|
|
|
|
elements: element.item.elements,
|
|
|
|
|
elements: element.elements,
|
|
|
|
|
},
|
|
|
|
|
component: LAYOUT,
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: path + '/:id',
|
|
|
|
|
name: element.item.url.replaceAll('/', ''),
|
|
|
|
|
name: element.url.replaceAll('/', ''),
|
|
|
|
|
meta: {
|
|
|
|
|
title: element.item.name,
|
|
|
|
|
icon: element.item.iconName,
|
|
|
|
|
elements: element.item.elements,
|
|
|
|
|
title: element.name,
|
|
|
|
|
icon: element.iconName,
|
|
|
|
|
elements: element.elements,
|
|
|
|
|
},
|
|
|
|
|
component: modules['../../views/demo' + path + '/index.vue'],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
} else if (element.item.code && element.item.status == 1) {
|
|
|
|
|
router.addRoute(element.item.code, {
|
|
|
|
|
path: element.item.url,
|
|
|
|
|
name: element.item.url.replaceAll('/', ''),
|
|
|
|
|
} else if (element.code && element.status == 1) {
|
|
|
|
|
router.addRoute(element.code, {
|
|
|
|
|
path: element.url,
|
|
|
|
|
name: element.url.replaceAll('/', ''),
|
|
|
|
|
meta: {
|
|
|
|
|
title: element.item.name,
|
|
|
|
|
icon: element.item.iconName,
|
|
|
|
|
elements: element.item.elements,
|
|
|
|
|
title: element.name,
|
|
|
|
|
icon: element.iconName,
|
|
|
|
|
elements: element.elements,
|
|
|
|
|
},
|
|
|
|
|
// component: () => import('../../views/demo' + element.item.url + '/index.vue')
|
|
|
|
|
component: modules['../../views/demo' + element.item.url + '/index.vue'],
|
|
|
|
|
// component: () => import('../../views/demo' + element.url + '/index.vue')
|
|
|
|
|
component: modules['../../views/demo' + element.url + '/index.vue'],
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (element.children && element.children.length > 0) {
|
|
|
|
@ -232,43 +226,43 @@ export const usePermissionStore = defineStore({
|
|
|
|
|
// 注册路由
|
|
|
|
|
const registeredRoute = (data) => {
|
|
|
|
|
const modules = import.meta.glob('../../views/**/**/**/index.vue');
|
|
|
|
|
if (data.item.url.split('/')[1] == 'map') {
|
|
|
|
|
if (data.url.split('/')[1] == 'map') {
|
|
|
|
|
// 大屏的情况下不继承layout
|
|
|
|
|
router.addRoute('Root', {
|
|
|
|
|
path: data.item.url,
|
|
|
|
|
name: data.item.code,
|
|
|
|
|
path: data.url,
|
|
|
|
|
name: data.code,
|
|
|
|
|
meta: {
|
|
|
|
|
title: data.item.name,
|
|
|
|
|
icon: data.item.iconName,
|
|
|
|
|
elements: data.item.elements,
|
|
|
|
|
title: data.name,
|
|
|
|
|
icon: data.iconName,
|
|
|
|
|
elements: data.elements,
|
|
|
|
|
},
|
|
|
|
|
component: modules['../../views' + data.item.url + '/index.vue'],
|
|
|
|
|
component: modules['../../views' + data.url + '/index.vue'],
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
// 正常菜单
|
|
|
|
|
if (data.children.length == 0 && data.item.status == 1) {
|
|
|
|
|
if (data.children.length == 0 && data.status == 1) {
|
|
|
|
|
// 没有子菜单
|
|
|
|
|
if (data.item.url.indexOf('@') > 0) {
|
|
|
|
|
if (data.url.indexOf('@') > 0) {
|
|
|
|
|
//给带参数的路由先注册主路由
|
|
|
|
|
const path = data.item.url.substring(0, data.item.url.indexOf('@'));
|
|
|
|
|
const path = data.url.substring(0, data.url.indexOf('@'));
|
|
|
|
|
router.addRoute('Root', {
|
|
|
|
|
path: path,
|
|
|
|
|
name: data.item.code,
|
|
|
|
|
name: data.code,
|
|
|
|
|
meta: {
|
|
|
|
|
title: data.item.name,
|
|
|
|
|
icon: data.item.iconName,
|
|
|
|
|
title: data.name,
|
|
|
|
|
icon: data.iconName,
|
|
|
|
|
hideChildrenInMenu: true,
|
|
|
|
|
elements: data.item.elements,
|
|
|
|
|
elements: data.elements,
|
|
|
|
|
},
|
|
|
|
|
component: LAYOUT,
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: path + '/:id',
|
|
|
|
|
name: data.item.url.replaceAll('/', ''),
|
|
|
|
|
name: data.url.replaceAll('/', ''),
|
|
|
|
|
meta: {
|
|
|
|
|
title: data.item.name,
|
|
|
|
|
icon: data.item.iconName,
|
|
|
|
|
elements: data.item.elements,
|
|
|
|
|
title: data.name,
|
|
|
|
|
icon: data.iconName,
|
|
|
|
|
elements: data.elements,
|
|
|
|
|
},
|
|
|
|
|
component: modules['../../views/demo' + path + '/index.vue'],
|
|
|
|
|
},
|
|
|
|
@ -276,46 +270,44 @@ export const usePermissionStore = defineStore({
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
router.addRoute('Root', {
|
|
|
|
|
path: data.item.url,
|
|
|
|
|
name: data.item.code,
|
|
|
|
|
path: data.url,
|
|
|
|
|
name: data.code,
|
|
|
|
|
meta: {
|
|
|
|
|
title: data.item.name,
|
|
|
|
|
icon: data.item.iconName,
|
|
|
|
|
title: data.name,
|
|
|
|
|
icon: data.iconName,
|
|
|
|
|
hideChildrenInMenu: true,
|
|
|
|
|
elements: data.item.elements,
|
|
|
|
|
elements: data.elements,
|
|
|
|
|
},
|
|
|
|
|
component: LAYOUT,
|
|
|
|
|
children: [
|
|
|
|
|
{
|
|
|
|
|
path: data.item.url,
|
|
|
|
|
name: data.item.url.replaceAll('/', ''),
|
|
|
|
|
path: data.url,
|
|
|
|
|
name: data.url.replaceAll('/', ''),
|
|
|
|
|
meta: {
|
|
|
|
|
title: data.item.name,
|
|
|
|
|
icon: data.item.iconName,
|
|
|
|
|
elements: data.item.elements,
|
|
|
|
|
title: data.name,
|
|
|
|
|
icon: data.iconName,
|
|
|
|
|
elements: data.elements,
|
|
|
|
|
},
|
|
|
|
|
component: modules['../../views/demo' + data.item.url + '/index.vue'],
|
|
|
|
|
component: modules['../../views/demo' + data.url + '/index.vue'],
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 有子菜单
|
|
|
|
|
if (data.item.status == 0) {
|
|
|
|
|
if (data.status == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
router.addRoute('Root', {
|
|
|
|
|
path: data.item.url,
|
|
|
|
|
name: data.item.code,
|
|
|
|
|
path: data.url,
|
|
|
|
|
name: data.code,
|
|
|
|
|
meta: {
|
|
|
|
|
title: data.item.name,
|
|
|
|
|
icon: data.item.iconName,
|
|
|
|
|
elements: data.item.elements,
|
|
|
|
|
title: data.name,
|
|
|
|
|
icon: data.iconName,
|
|
|
|
|
elements: data.elements,
|
|
|
|
|
},
|
|
|
|
|
component:
|
|
|
|
|
data.item.parentId == 0
|
|
|
|
|
? LAYOUT
|
|
|
|
|
: modules['../../views/demo' + data.item.url + '/index.vue'],
|
|
|
|
|
data.parentId == 0 ? LAYOUT : modules['../../views/demo' + data.url + '/index.vue'],
|
|
|
|
|
});
|
|
|
|
|
if (data.children && data.children.length > 0) {
|
|
|
|
|
childRoute(data.children);
|
|
|
|
|