Browse Source

老数据子账户系统管理

master
hx 5 days ago
parent
commit
9fcea7fd45
  1. 28
      src/store/modules/permission.js

28
src/store/modules/permission.js

@ -1,4 +1,4 @@
import auth from '@/plugins/auth' import auth from '@/plugins/auth'
import router, { constantRoutes, dynamicRoutes } from '@/router' import router, { constantRoutes, dynamicRoutes } from '@/router'
import { getRouters } from '@/api/menu' import { getRouters } from '@/api/menu'
import Layout from '@/layout/index' import Layout from '@/layout/index'
@ -30,7 +30,7 @@ const permission = {
}, },
actions: { actions: {
// 生成路由 // 生成路由
GenerateRoutes({ commit }) { GenerateRoutes({ commit, rootState }) {
return new Promise(resolve => { return new Promise(resolve => {
// 向后端请求路由数据 // 向后端请求路由数据
getRouters().then(res => { getRouters().then(res => {
@ -40,9 +40,14 @@ const permission = {
.split("\"component\":\"/").join("\"component\":\"") .split("\"component\":\"/").join("\"component\":\"")
const sdata = JSON.parse(routeJson); const sdata = JSON.parse(routeJson);
const rdata = JSON.parse(routeJson) const rdata = JSON.parse(routeJson)
const isAdmin = rootState && rootState.user ? rootState.user.isAdmin === true : false
const parentId = rootState && rootState.user ? String(rootState.user.parentId || '') : ''
const canShowSystemMenu = isAdmin || parentId === '0'
const sidebarSource = filterSystemRoutesByUser(sdata, canShowSystemMenu)
const rewriteSource = filterSystemRoutesByUser(rdata, canShowSystemMenu)
const sidebarRoutes = filterAsyncRouter(sdata) const sidebarRoutes = filterAsyncRouter(sidebarSource)
const rewriteRoutes = filterAsyncRouter(rdata, false, true) const rewriteRoutes = filterAsyncRouter(rewriteSource, false, true)
const first = findFirstLeafRoute(sidebarRoutes) const first = findFirstLeafRoute(sidebarRoutes)
if (first) { if (first) {
console.log(first) console.log(first)
@ -80,14 +85,24 @@ const permission = {
} }
} }
// 遍历后台传来的路由字符串,转换为组件对象 function filterSystemRoutesByUser(routes, canShowSystemMenu) {
if (!Array.isArray(routes)) {
return []
}
if (canShowSystemMenu) {
return routes
}
return routes.filter(route => route && route.path !== '/system')
}
// 遍历后端传来的路由字符串,转换为组件对象
function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) { function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
return asyncRouterMap.filter(route => { return asyncRouterMap.filter(route => {
if (type && route.children) { if (type && route.children) {
route.children = filterChildren(route.children) route.children = filterChildren(route.children)
} }
if (route.component) { if (route.component) {
// Layout ParentView 组件特殊处理 // Layout / ParentView 组件特殊处理
if (route.component === 'Layout') { if (route.component === 'Layout') {
route.component = Layout route.component = Layout
} else if (route.component === 'ParentView') { } else if (route.component === 'ParentView') {
@ -162,3 +177,4 @@ export const loadView = (view) => { // 路由懒加载
} }
export default permission export default permission

Loading…
Cancel
Save