路由配置解决

This commit is contained in:
曹前明 2022-07-15 16:37:53 +08:00
parent dc9b3aaa08
commit 5d89acd012
3 changed files with 102 additions and 55 deletions

View File

@ -277,7 +277,6 @@ export default {
// delete reqData[config.request.pageSize]
}
Object.assign(reqData, this.tableParams);
debugger;
try {
var res = await this.apiObj.req(reqData);
if (this.hidePagination) {

View File

@ -34,7 +34,6 @@ const routes = [
"title": "首页",
"icon": "el-icon-home-filled",
"type": "menu",
},
"children": [
{
@ -75,7 +74,7 @@ const routes = [
"meta": {
"title": "事件",
"icon": "el-icon-goods-filled",
"type": "menu"
"type": "menu",
},
"children": [
{
@ -84,8 +83,9 @@ const routes = [
"meta": {
"title": "事件列表",
"icon": "el-icon-document",
"perms": ["event"]
},
"component": "ecm/event"
"component": "ecm/event",
}
,
{
@ -262,7 +262,6 @@ const routes = [
},
"component": "opm/oplcate"
},
,
{
"name": "opl",
"path": "/opm/opl",
@ -273,7 +272,6 @@ const routes = [
},
"component": "opm/opl"
},
,
{
"name": "fire",
"path": "/opm/fire",
@ -284,7 +282,6 @@ const routes = [
},
"component": "opm/fire"
},
,
{
"name": "space",
"path": "/opm/space",
@ -295,7 +292,6 @@ const routes = [
},
"component": "opm/space"
},
,
{
"name": "clear",
"path": "/opm/clear",
@ -346,7 +342,6 @@ const routes = [
},
"component": "opm/cooler"
},
,
{
"name": "soil",
"path": "/opm/soil",

View File

@ -67,12 +67,14 @@ router.beforeEach(async (to, from, next) => {
//加载动态/静态路由
if (!isGetRouter) {
// let apiMenu = tool.data.get("MENU") || []
debugger;
let userInfo = tool.data.get("USER_INFO");
let permissions = tool.data.get("PERMISSIONS");
let userMenu = treeFilter(userRoutes, node => {
return node.meta.perms ? node.meta.perms.filter(item=>userInfo.perms.indexOf(item)>-1).length > 0 : true
let userMenu = userRoutes;
if(permissions.indexOf('superuser')==-1){
userMenu = treeFilter(userRoutes, node => {
return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true
});
}
// let userMenu = checkRoute(userRoutes, permissions)
// let menu = [...userMenu, ...apiMenu]
var menuRouter = filterAsyncRouter(userMenu);
menuRouter = flatAsyncRoutes(menuRouter);
@ -80,8 +82,7 @@ router.beforeEach(async (to, from, next) => {
router.addRoute("layout", item)
});
routes_404_r = router.addRoute(routes_404);
debugger;
if (to.matched.length ==0||permissions[0]==='superuser') {
if (to.matched.length == 0) {
router.push(to.fullPath);
}
isGetRouter = true;
@ -106,10 +107,14 @@ router.onError((error) => {
//入侵追加自定义方法、对象
router.sc_getMenu = () => {
// var apiMenu = tool.data.get("MENU") || []
let userInfo = tool.data.get("USER_INFO")
let userMenu = treeFilter(userRoutes, node => {
return node.meta.perms ? node.meta.perms.filter(item=>userInfo.perms.indexOf(item)>-1).length > 0 : true
})
let permissions = tool.data.get("PERMISSIONS");
let userMenu = userRoutes;
if(permissions.indexOf('superuser')==-1){
userMenu = treeFilter(userRoutes, node => {
return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true
});
}
// let userMenu = checkRoute(userRoutes, permissions)
// var menu = [...userMenu, ...apiMenu]
return userMenu
}
@ -180,4 +185,52 @@ function treeFilter(tree, func) {
})
}
function hasPerm(perms_need, perms_have) {
let has = false
for(var m=0;m<perms_need.length;m++){
if(perms_have.indexOf(perms_need[m])>-1){
has = true
}
}
return has
}
function checkRoute(routes, perms) {
if(perms.indexOf('superuser')>-1){
return routes
}
for (var i = 0; i < routes.length; i++) {
if (routes[i].meta && routes[i].meta.perms) {
let has = hasPerm(routes[i].meta.perms, perms)
if(!has){
routes.splice(i,1)
}
else if (routes[i].children){
for (var m = 0; m < routes[i].children.length; m++){
let child = routes[i].children[m]
if (child.meta && child.meta.perms) {
let has = hasPerm(child.meta.perms, perms)
if(!has){
routes[i].children.splice(m,1)
}
}
}
}
}
else if (routes[i].children){
for (var m = 0; m < routes[i].children.length; m++){
let child = routes[i].children[m]
console.log(m, child)
if (child.meta && child.meta.perms) {
let has = hasPerm(child.meta.perms, perms)
if(!has){
routes[i].children.splice(m,1)
}
}
}
}
}
return routes
}
export default router