路由配置解决

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] // delete reqData[config.request.pageSize]
} }
Object.assign(reqData, this.tableParams); Object.assign(reqData, this.tableParams);
debugger;
try { try {
var res = await this.apiObj.req(reqData); var res = await this.apiObj.req(reqData);
if (this.hidePagination) { if (this.hidePagination) {

View File

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

View File

@ -67,12 +67,14 @@ router.beforeEach(async (to, from, next) => {
//加载动态/静态路由 //加载动态/静态路由
if (!isGetRouter) { if (!isGetRouter) {
// let apiMenu = tool.data.get("MENU") || [] // let apiMenu = tool.data.get("MENU") || []
debugger;
let userInfo = tool.data.get("USER_INFO");
let permissions = tool.data.get("PERMISSIONS"); let permissions = tool.data.get("PERMISSIONS");
let userMenu = treeFilter(userRoutes, node => { let userMenu = userRoutes;
return node.meta.perms ? node.meta.perms.filter(item=>userInfo.perms.indexOf(item)>-1).length > 0 : true 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] // let menu = [...userMenu, ...apiMenu]
var menuRouter = filterAsyncRouter(userMenu); var menuRouter = filterAsyncRouter(userMenu);
menuRouter = flatAsyncRoutes(menuRouter); menuRouter = flatAsyncRoutes(menuRouter);
@ -80,8 +82,7 @@ router.beforeEach(async (to, from, next) => {
router.addRoute("layout", item) router.addRoute("layout", item)
}); });
routes_404_r = router.addRoute(routes_404); routes_404_r = router.addRoute(routes_404);
debugger; if (to.matched.length == 0) {
if (to.matched.length ==0||permissions[0]==='superuser') {
router.push(to.fullPath); router.push(to.fullPath);
} }
isGetRouter = true; isGetRouter = true;
@ -106,10 +107,14 @@ router.onError((error) => {
//入侵追加自定义方法、对象 //入侵追加自定义方法、对象
router.sc_getMenu = () => { router.sc_getMenu = () => {
// var apiMenu = tool.data.get("MENU") || [] // var apiMenu = tool.data.get("MENU") || []
let userInfo = tool.data.get("USER_INFO") let permissions = tool.data.get("PERMISSIONS");
let userMenu = treeFilter(userRoutes, node => { let userMenu = userRoutes;
return node.meta.perms ? node.meta.perms.filter(item=>userInfo.perms.indexOf(item)>-1).length > 0 : true 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] // var menu = [...userMenu, ...apiMenu]
return userMenu 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 export default router