/* eslint-disable */ import { constantRouterMap } from "@/router"; import { asyncRouterMap } from "@/router/modules/router.js"; /* 用户菜单 */ import { asyncUserRouterMap } from "@/router/modules/router-user.js"; import { constantUserRouterMap } from "@/router/index-user.js"; /* * * 通过meta.role判断是否与当前用户权限匹配 * @param roles * @param route */ function hasPermission(menuList, route) { if (menuList && menuList.length) { let menuInfo = menuList.find(item => { let result = !route.meta || item.m == route.meta.menu_Id; return result; }); if (route.meta && menuInfo && menuInfo.d) { route.meta.menuName = menuInfo.d; // 启用别名 } return !!menuInfo; } else { return false; } } /* * * 递归过滤异步路由表,返回符合用户角色权限的路由表 * @param routes asyncRouterMap * @param menuList */ function filterAsyncRouter(routes, menuList) { const res = []; routes.forEach(route => { if (hasPermission(menuList, route)) { const tmp = { ...route }; if (tmp.children) { tmp.children = filterAsyncRouter(tmp.children, menuList); } res.push(tmp); } }); return res; } var userRouterMap = constantUserRouterMap(); var routerMap = constantRouterMap; const routers = location.href.indexOf("user.html") > 0 ? userRouterMap : routerMap; const permission = { state: { routers: routers, addRouters: [] }, mutations: { SET_ROUTERS: (state, routers) => { state.addRouters = routers; let allRouters = constantRouterMap.concat(routers); state.routers = allRouters; }, // 生成前端用户菜单 SET_USER_ROUTERS: (state, routers) => { state.addRouters = routers; let allRouters = constantUserRouterMap().concat(routers); state.routers = allRouters; } }, actions: { GenerateRoutes({ commit }, menuList) { return new Promise(resolve => { let accessedRouters = filterAsyncRouter(asyncRouterMap, menuList); commit("SET_ROUTERS", accessedRouters); resolve(); }); }, // 生成前端用户菜单 GenerateUserRoutes({ commit }, menuList) { return new Promise(resolve => { let accessedRouters = filterAsyncRouter(asyncUserRouterMap, menuList); commit("SET_USER_ROUTERS", accessedRouters); resolve(); }); } } }; export default permission;