2019-11-19 13:44:19 +08:00
|
|
|
import { constantRouterMap } from '@/router/routers'
|
2020-01-07 23:32:27 +08:00
|
|
|
import Layout from '@/layout/index'
|
2019-11-19 13:44:19 +08:00
|
|
|
|
|
|
|
const permission = {
|
|
|
|
state: {
|
|
|
|
routers: constantRouterMap,
|
|
|
|
addRouters: []
|
|
|
|
},
|
|
|
|
mutations: {
|
|
|
|
SET_ROUTERS: (state, routers) => {
|
|
|
|
state.addRouters = routers
|
|
|
|
state.routers = constantRouterMap.concat(routers)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
actions: {
|
|
|
|
GenerateRoutes({ commit }, asyncRouter) {
|
|
|
|
commit('SET_ROUTERS', asyncRouter)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const filterAsyncRouter = (routers) => { // 遍历后台传来的路由字符串,转换为组件对象
|
2020-01-07 23:32:27 +08:00
|
|
|
return routers.filter(router => {
|
2019-11-19 13:44:19 +08:00
|
|
|
if (router.component) {
|
|
|
|
if (router.component === 'Layout') { // Layout组件特殊处理
|
|
|
|
router.component = Layout
|
|
|
|
} else {
|
|
|
|
const component = router.component
|
|
|
|
router.component = loadView(component)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (router.children && router.children.length) {
|
|
|
|
router.children = filterAsyncRouter(router.children)
|
|
|
|
}
|
|
|
|
return true
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2020-01-07 23:32:27 +08:00
|
|
|
export const loadView = (view) => {
|
2019-11-19 13:44:19 +08:00
|
|
|
return () => import(`@/views/${view}`)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default permission
|