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
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
/*用户状态*/
import {
  setSessionStorage,
  getSessionStorage
} from '@/utils/base'
import getRolelist from './getRolelist.js'
import {
  errpage
} from '@/router/baseRouter.js'
 
import {
  cearedRoute
} from './cearedRoute.js'
import {
  createdAuth
} from '@/utils/createdAuth'
 
 
const user = {
 
  namespaced: true,
 
  /*状态值*/
  state: {
    roles: null,
    page: null
  },
 
  /*状态值转换*/
  getters: {
 
    getroles: (state) => (name) => {
      return state.roles;
    },
 
  },
 
  /*改变状态的方法 不可异步*/
  mutations: {
 
    setState(state, value) {
      state[value.key] = value.val;
    },
 
    saveMenulist(state, value) {
      state.getters.menulist = value;
    }
 
  },
 
  /*可异步改变*/
  actions: {
 
    generateRoutes: function(context, str) {
      /*返回*/
      return new Promise((resolve, reject) => {
        const menu = [];
        /*判断本地缓存是否有菜单数据*/
        let rolelist = getSessionStorage('rolelist');
        let routerlist = null;
        if (rolelist) {
          /*本地缓存有数据,直接获取缓存里的数据*/
          let auth = getSessionStorage('authlist');
          if (!auth) {
            let authlist = {}
            createdAuth(auth, authlist);
            setSessionStorage('authlist', authlist);
          }
          let list = cearedRoute(rolelist);
          routerlist = menu.concat(list, errpage);
          context.commit("setState", {
            key: 'roles',
            val: rolelist
          });
          resolve(routerlist);
        } else {
          /*本地缓存没有数据,去掉菜单接口*/
          getRolelist().then(res => {
              let list = cearedRoute(res);
              routerlist = menu.concat(list, errpage);
              setSessionStorage('rolelist', res);
              let authlist = {}
              createdAuth(res, authlist);
              setSessionStorage('authlist', authlist);
              context.commit("setState", {
                key: 'roles',
                val: rolelist
              });
              resolve(routerlist);
            })
            .catch(error => {
              reject(error);
            });
        }
      })
    }
 
  }
}
 
 
export default user;