1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
48
49
50
51
52
53
| import { asyncRoutes, baseRoute } from '@/router'
| import { getCache,setCache } from '@/utils/sessionStorage';
| function hasPermission(roles, route) {
| if (route.meta && route.meta.roles) {
| return roles.some(role => route.meta.roles.includes(role))
| } else {
| return true
| }
| }
|
| export function filterAsyncRoutes(routes, roles) {
| const res = []
|
| routes.forEach(route => {
| const tmp = { ...route }
| if (hasPermission(roles, tmp)) {
| if (tmp.children) {
| tmp.children = filterAsyncRoutes(tmp.children, roles)
| }
| res.push(tmp)
| }
| })
|
| return res
| }
|
| const state = {
| routes: [],
| addRoutes: []
| }
|
| const mutations = {
| SET_ROUTES: (state, routes) => {
| state.addRoutes = routes
| state.routes = baseRoute.concat(routes)
| }
| }
|
| const actions = {
| generateRoutes({ commit }, roles) {
|
|
| commit('SET_ROUTES', roles)
|
| }
| }
|
| export default {
| namespaced: true,
| state,
| mutations,
| actions
| }
|
|