9b7e125f
monkeyhouyi
属地页面
|
1
|
// import auth from '@/plugins/auth'
|
477ec56f
monkeyhouyi
权限
|
2
3
|
import { constantRoutes } from '@/router'
import VueRouter from "vue-router";
|
9b7e125f
monkeyhouyi
属地页面
|
4
|
// import { getRouters } from '@/api/menu'
|
0e2463be
monkeyhouyi
系统修改记录
|
5
|
import Layout from '@/views/homePage/HomePage.vue'
|
477ec56f
monkeyhouyi
权限
|
6
|
import baseRouters from '@/router/modules/base'
|
9b7e125f
monkeyhouyi
属地页面
|
7
8
9
10
|
const permission = {
state: {
routes: [],
|
477ec56f
monkeyhouyi
权限
|
11
|
addRoutes: []
|
9b7e125f
monkeyhouyi
属地页面
|
12
13
14
15
16
|
},
mutations: {
SET_ROUTES: (state, routes) => {
state.addRoutes = routes
state.routes = constantRoutes.concat(routes)
|
477ec56f
monkeyhouyi
权限
|
17
|
}
|
9b7e125f
monkeyhouyi
属地页面
|
18
19
|
},
actions: {
|
477ec56f
monkeyhouyi
权限
|
20
|
generateRoutes({ commit }, route) {
|
9b7e125f
monkeyhouyi
属地页面
|
21
|
return new Promise(resolve => {
|
477ec56f
monkeyhouyi
权限
|
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
let accessedRoutes
let dtRoutes = {
path: '/',
component: Layout,
redirect: '/homePage',
children: [
...baseRouters,
...route,
{
path: '/404',
component: (resolve) => require(['@/views/error-page/404'], resolve),
hidden: true
},
]
};
accessedRoutes = [
dtRoutes,
{
path: '*',
redirect: '/404',
hidden: true
}
]
console.log(accessedRoutes, baseRouters);
commit('SET_ROUTES', accessedRoutes)
resolve(accessedRoutes)
|
9b7e125f
monkeyhouyi
属地页面
|
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
})
}
}
}
// 遍历后台传来的路由字符串,转换为组件对象
function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
return asyncRouterMap.filter(route => {
if (type && route.children) {
route.children = filterChildren(route.children)
}
if (route.component) {
// Layout ParentView 组件特殊处理
if (route.component === 'Layout') {
route.component = Layout
} else if (route.component === 'ParentView') {
route.component = ParentView
} else {
route.component = loadView(route.component)
}
}
if (route.children != null && route.children && route.children.length) {
route.children = filterAsyncRouter(route.children, route, type)
} else {
delete route['children']
delete route['redirect']
}
return true
})
}
function filterChildren(childrenMap, lastRouter = false) {
var children = []
childrenMap.forEach((el, index) => {
if (el.children && el.children.length) {
if (el.component === 'ParentView' && !lastRouter) {
el.children.forEach(c => {
c.path = el.path + '/' + c.path
if (c.children && c.children.length) {
children = children.concat(filterChildren(c.children, c))
return
}
children.push(c)
})
return
}
}
if (lastRouter) {
el.path = lastRouter.path + '/' + el.path
if (el.children && el.children.length) {
children = children.concat(filterChildren(el.children, el))
return
}
}
children = children.concat(el)
})
return children
}
// 动态路由遍历,验证是否具备权限
export function filterDynamicRoutes(routes) {
const res = []
// routes.forEach(route => {
// if (route.permissions) {
// if (auth.hasPermiOr(route.permissions)) {
// res.push(route)
// }
// } else if (route.roles) {
// if (auth.hasRoleOr(route.roles)) {
// res.push(route)
// }
// }
// })
return res
}
export const loadView = (view) => {
if (process.env.NODE_ENV === 'development') {
return (resolve) => require([`@/views/${view}`], resolve)
} else {
// 使用 import 实现生产环境的路由懒加载
return () => import(`@/views/${view}`)
}
}
export default permission
|