fix: 可采用后端返回路由

This commit is contained in:
shijing 2024-12-16 17:38:43 +08:00 committed by caoqianming
parent 92302c061d
commit 9098fb1390
2 changed files with 52 additions and 26 deletions

View File

@ -61,20 +61,32 @@ router.beforeEach(async (to, from, next) => {
} }
//加载动态/静态路由 //加载动态/静态路由
if (!isGetRouter) { if (!isGetRouter) {
let permissions = tool.data.get("PERMISSIONS") || [];//账号页面权限 let userMenu = [];
let userMenu = userRoutes;//静态路由 if(tool.data.get('BASE_INFO').base.base_menucate=='dynamic'){
userMenu = treeFilter(userRoutes, node => { userMenu = tool.data.get("MENU") || [];
return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true }else{
}); let permissions = tool.data.get("PERMISSIONS") || [];//账号页面权限
var menuRouter = filterAsyncRouter(userMenu); // console.log("permissions",permissions);
menuRouter = flatAsyncRoutes(menuRouter); userMenu = userRoutes;//静态路由
menuRouter.forEach(item => { userMenu = treeFilter(userRoutes, node => {
router.addRoute("layout", item) return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true
}); });
if (to.matched.length == 0) {
router.push(to.fullPath);
} }
isGetRouter = true; try {
var menuRouter = filterAsyncRouter(userMenu);
menuRouter = flatAsyncRoutes(menuRouter);
menuRouter.forEach(item => {
router.addRoute("layout", item)
});
routes_404_r = router.addRoute(routes_404);
if (to.matched.length == 0) {
router.push(to.fullPath);
}
isGetRouter = true;
}catch (e) {
}
} }
beforeEach(to, from) beforeEach(to, from)
next(); next();
@ -95,14 +107,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'){
let permissions = tool.data.get("PERMISSIONS") || []; return tool.data.get("MENU") || []
let userMenu = userRoutes; }
userMenu = treeFilter(userRoutes, node => { else{
return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true let permissions = tool.data.get("PERMISSIONS") || [];
}); let userMenu = treeFilter(userRoutes, node => {
let menus = checkRoute(userMenu, permissions) return node.meta.perms ? node.meta.perms.filter(item => permissions.indexOf(item) > -1).length > 0 : true
return menus });
userMenu = checkRoute(userMenu, permissions)
return userMenu
}
} }
//转换 //转换
@ -118,8 +133,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)

View File

@ -118,9 +118,20 @@ export default {
if (base_dashboard == null || base_dashboard == undefined || base_dashboard == '') { if (base_dashboard == null || base_dashboard == undefined || base_dashboard == '') {
base_dashboard = '/dashboard' base_dashboard = '/dashboard'
} }
this.$router.replace({ if(this.$TOOL.data.get('BASE_INFO').base.base_menucate=='dynamic'){
path: base_dashboard, try{
}); var res = await that.$API.system.user.routers.req({})
this.$TOOL.data.set("MENU",res)
console.log(res)
} catch (err) {
}
}
that.$router.replace({
path: base_dashboard,
});
} catch (err) { } catch (err) {
that.islogin = false; that.islogin = false;
} }