大屏不继承layout

zzq
刘妍 2024-06-18 15:32:52 +08:00
parent 89e22cf3e1
commit f2d783714a
1 changed files with 116 additions and 121 deletions

View File

@ -170,72 +170,9 @@ export const usePermissionStore = defineStore({
};
// 注册路由
const registeredRoute = (data) => {
let modules;
let component;
// 判断是不是大屏不是大屏的情况下增加路径demo
const modules = import.meta.glob('../../views/**/**/**/index.vue');
if (data.item.url.split('/')[1] == 'map') {
modules = import.meta.glob('../../views/**/**/**/index.vue');
component = modules['../../views' + data.item.url + '/index.vue'];
} else {
modules = import.meta.glob('../../views/demo/**/**/index.vue');
component = modules['../../views/demo' + data.item.url + '/index.vue'];
}
if (data.children.length == 0 && data.item.parentId == 0 && data.item.status == 1) {
//给带参数的路由先注册主路由
if (data.item.url.indexOf('@') > 0) {
const path = data.item.url.substring(0, data.item.url.indexOf('@'));
router.addRoute('Root', {
path: path,
name: data.item.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
hideChildrenInMenu: true,
elements: data.item.elements,
},
component: LAYOUT,
children: [
{
path: path + '/:id',
name: data.item.url.replaceAll('/', ''),
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
},
component: modules['../../views/demo' + path + '/index.vue'],
},
],
});
} else {
router.addRoute('Root', {
path: data.item.url,
name: data.item.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
hideChildrenInMenu: true,
elements: data.item.elements,
},
component: LAYOUT,
children: [
{
path: data.item.url,
name: data.item.url.replaceAll('/', ''),
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
},
component: component,
},
],
});
}
} else {
if (data.item.status == 0) {
return;
}
// 大屏的情况下不继承layout
router.addRoute('Root', {
path: data.item.url,
name: data.item.code,
@ -244,66 +181,124 @@ export const usePermissionStore = defineStore({
icon: data.item.iconName,
elements: data.item.elements,
},
component: data.item.parentId == 0 ? LAYOUT : component,
component: modules['../../views' + data.item.url + '/index.vue'],
});
if (data.children && data.children.length > 0) {
data.children.forEach((element) => {
// 菜单里配置带参数,但没有单独的主路由,先注册主路由
if (element.item.status == 1 && element.item.url.indexOf('@') > 0) {
const path = element.item.url.substring(0, element.item.url.indexOf('@'));
let childComponent;
if (data.item.url.split('/')[1] == 'map') {
modules = import.meta.glob('../../views/**/**/**/index.vue');
childComponent = modules['../../views' + path + '/index.vue'];
} else {
modules = import.meta.glob('../../views/demo/**/**/index.vue');
childComponent = modules['../../views/demo' + path + '/index.vue'];
}
router.addRoute('Root', {
path: path,
name: element.item.code,
meta: {
title: element.item.name,
icon: element.item.iconName,
hideChildrenInMenu: true,
elements: element.item.elements,
},
component: LAYOUT,
children: [
{
path: path + '/:id',
name: element.item.url.replaceAll('/', ''),
meta: {
title: element.item.name,
icon: element.item.iconName,
elements: element.item.elements,
},
component: childComponent,
} else {
// 正常菜单
if (data.children.length == 0 && data.item.parentId == 0 && data.item.status == 1) {
// 没有子菜单
if (data.item.url.indexOf('@') > 0) {
//给带参数的路由先注册主路由
const path = data.item.url.substring(0, data.item.url.indexOf('@'));
router.addRoute('Root', {
path: path,
name: data.item.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
hideChildrenInMenu: true,
elements: data.item.elements,
},
component: LAYOUT,
children: [
{
path: path + '/:id',
name: data.item.url.replaceAll('/', ''),
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
},
],
});
} else if (element.item.code && element.item.status == 1) {
let childComponent;
if (data.item.url.split('/')[1] == 'map') {
modules = import.meta.glob('../../views/**/**/**/index.vue');
childComponent = modules['../../views' + element.item.url + '/index.vue'];
} else {
modules = import.meta.glob('../../views/demo/**/**/index.vue');
childComponent = modules['../../views/demo' + element.item.url + '/index.vue'];
}
router.addRoute(element.item.code, {
path: element.item.url,
name: element.item.url.replaceAll('/', ''),
meta: {
title: element.item.name,
icon: element.item.iconName,
elements: element.item.elements,
component: modules['../../views/demo' + path + '/index.vue'],
},
// component: () => import('../../views/demo' + element.item.url + '/index.vue')
component: childComponent,
});
}
],
});
} else {
router.addRoute('Root', {
path: data.item.url,
name: data.item.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
hideChildrenInMenu: true,
elements: data.item.elements,
},
component: LAYOUT,
children: [
{
path: data.item.url,
name: data.item.url.replaceAll('/', ''),
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
},
component: modules['../../views/demo' + data.item.url + '/index.vue'],
},
],
});
}
} else {
// 有子菜单
if (data.item.status == 0) {
return;
}
router.addRoute('Root', {
path: data.item.url,
name: data.item.code,
meta: {
title: data.item.name,
icon: data.item.iconName,
elements: data.item.elements,
},
component:
data.item.parentId == 0
? LAYOUT
: modules['../../views/demo' + data.item.url + '/index.vue'],
});
if (data.children && data.children.length > 0) {
data.children.forEach((element) => {
// 菜单里配置带参数,但没有单独的主路由,先注册主路由
if (element.item.status == 1 && element.item.url.indexOf('@') > 0) {
const path = element.item.url.substring(0, element.item.url.indexOf('@'));
router.addRoute('Root', {
path: path,
name: element.item.code,
meta: {
title: element.item.name,
icon: element.item.iconName,
hideChildrenInMenu: true,
elements: element.item.elements,
},
component: LAYOUT,
children: [
{
path: path + '/:id',
name: element.item.url.replaceAll('/', ''),
meta: {
title: element.item.name,
icon: element.item.iconName,
elements: element.item.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('/', ''),
meta: {
title: element.item.name,
icon: element.item.iconName,
elements: element.item.elements,
},
// component: () => import('../../views/demo' + element.item.url + '/index.vue')
component: modules['../../views/demo' + element.item.url + '/index.vue'],
});
}
});
}
}
}
// console.log(router.getRoutes())