fix:动态路由

This commit is contained in:
shijing 2024-12-16 17:38:43 +08:00
parent 82ee266d51
commit 25a2427138
2 changed files with 49 additions and 55 deletions

View File

@ -66,18 +66,18 @@ router.beforeEach(async (to, from, next) => {
} }
//加载动态/静态路由 //加载动态/静态路由
if (!isGetRouter) { if (!isGetRouter) {
// let apiMenu = tool.data.get("MENU") || [] let userMenu = [];
if(tool.data.get('BASE_INFO').base.base_menucate=='dynamic'){
userMenu = tool.data.get("MENU") || [];
}else{
let permissions = tool.data.get("PERMISSIONS") || [];//账号页面权限 let permissions = tool.data.get("PERMISSIONS") || [];//账号页面权限
let userMenu = userRoutes;//静态路由 // console.log("permissions",permissions);
// debugger; userMenu = userRoutes;//静态路由
// console.log(userRoutes);
userMenu = treeFilter(userRoutes, node => { userMenu = treeFilter(userRoutes, node => {
return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true
}); });
// debugger; }
// console.log(userMenu); try {
// let userMenu = checkRoute(userRoutes, permissions)
// let menu = [...userMenu, ...apiMenu]
var menuRouter = filterAsyncRouter(userMenu); var menuRouter = filterAsyncRouter(userMenu);
menuRouter = flatAsyncRoutes(menuRouter); menuRouter = flatAsyncRoutes(menuRouter);
menuRouter.forEach(item => { menuRouter.forEach(item => {
@ -88,6 +88,10 @@ router.beforeEach(async (to, from, next) => {
router.push(to.fullPath); router.push(to.fullPath);
} }
isGetRouter = true; isGetRouter = true;
}catch (e) {
}
} }
beforeEach(to, from) beforeEach(to, from)
next(); next();
@ -108,14 +112,17 @@ router.onError((error) => {
//入侵追加自定义方法、对象 //入侵追加自定义方法、对象
router.sc_getMenu = () => { router.sc_getMenu = () => {
// var apiMenu = tool.data.get("MENU") || [] if(tool.data.get('BASE_INFO').base.base_menucate=='dynamic'){
return tool.data.get("MENU") || []
}
else{
let permissions = tool.data.get("PERMISSIONS") || []; let permissions = tool.data.get("PERMISSIONS") || [];
let userMenu = userRoutes; let userMenu = treeFilter(userRoutes, node => {
userMenu = treeFilter(userRoutes, node => {
return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true
}); });
let menus = checkRoute(userMenu, permissions) userMenu = checkRoute(userMenu, permissions)
return menus return userMenu
}
} }
//转换 //转换
@ -131,8 +138,8 @@ function filterAsyncRouter(routerMap) {
//MAP转路由对象 //MAP转路由对象
var route = { var route = {
path: item.path, path: item.path,
name: item.name, name: item.name?item.name:'',
meta: item.meta, meta: item.meta?item.meta:{},
redirect: item.redirect, redirect: item.redirect,
children: item.children ? filterAsyncRouter(item.children) : null, children: item.children ? filterAsyncRouter(item.children) : null,
component: loadComponent(item.component) component: loadComponent(item.component)
@ -185,16 +192,6 @@ function treeFilter(tree, func) {
return func(node) || (node.children && node.children.length) return func(node) || (node.children && node.children.length)
}) })
} }
//过滤树
// function treeFilter(tree, func) {
// let treemap = tree.map(node => ({ ...node }));
// let returnTree = treemap.filter(node => {
// node.children = node.children && treeFilter(node.children, func)
// return func(node) || (node.children && node.children.length)
// })
// return returnTree;
// }
function hasPerm(perms_need, perms_have) { function hasPerm(perms_need, perms_have) {
@ -231,18 +228,6 @@ function checkRoute(routes, perms) {
}else{ }else{
routes.splice(i, 1) 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]
// 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 return routes
} }

View File

@ -140,6 +140,14 @@ export default {
// else // else
if (base_dashboard == null || base_dashboard == undefined) { if (base_dashboard == null || base_dashboard == undefined) {
base_dashboard = '/dashboard' base_dashboard = '/dashboard'
}
if(this.$TOOL.data.get('BASE_INFO').base.base_menucate=='dynamic'){
try{
var res = await that.$API.system.user.routers.req({})
this.$TOOL.data.set("MENU",res)
console.log(res)
} catch (err) {
}
} }
if (this.$TOOL.data.get('BASE_INFO').base.base_name_short.indexOf('曲阳') != -1) { if (this.$TOOL.data.get('BASE_INFO').base.base_name_short.indexOf('曲阳') != -1) {
if (res1.type === 'employee') { if (res1.type === 'employee') {
@ -162,10 +170,11 @@ export default {
} }
}) })
} else { } else {
this.$router.replace({ that.$router.replace({
path: base_dashboard, path: base_dashboard,
}); });
} }
} catch (err) { } catch (err) {
that.islogin = false; that.islogin = false;
console.log(err); console.log(err);