fix:动态路由
This commit is contained in:
parent
82ee266d51
commit
25a2427138
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue