Blame view

src/store/index.js 6.1 KB
42056450   阿宝   权限修改
1
2
3
4
5
  import Vue from "vue";
  import Vuex from "vuex";
  import Cookies from "js-cookie";
  import layoutStore from "./modules/layout/index";
  import { defaultRouter } from "@/router/index";
13b58a42   梁保满   备题组卷部分前端页面基本完成
6
  import { encryptLoginPassword } from "@/utils";
aeac66d4   阿宝   飞书测试bug
7
  import { Message } from "element-ui";
4c4f7640   梁保满   路由表,路由前端文件
8
  
42056450   阿宝   权限修改
9
10
11
12
  import request from "@/api/index";
  import router from "@/router/index";
  import { addrouters } from "@/router/index";
  Vue.use(Vuex);
c1b532ad   梁保满   权限配置,路由基础设置
13
14
15
  
  const store = new Vuex.Store({
    state: {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
16
17
      token: "",
      csCode: localStorage.getItem("csCode") || "",
42056450   阿宝   权限修改
18
19
20
21
22
23
24
25
26
27
      info: sessionStorage.getItem("info")
        ? JSON.parse(sessionStorage.getItem("info"))
        : "", // 每次刷新都要通过token请求个人信息来筛选动态路由
      routers: [], //左侧菜单
      addRouters:
        sessionStorage.getItem("addRouters") &&
        sessionStorage.getItem("addRouters") != "undefined"
          ? JSON.parse(sessionStorage.getItem("addRouters"))
          : [], //动态路由
      tokenSources: new Map(), //正在请求接口(切换取消请求)
c1b532ad   梁保满   权限配置,路由基础设置
28
29
    },
    mutations: {
4c4f7640   梁保满   路由表,路由前端文件
30
      setToken(state, token) {
42056450   阿宝   权限修改
31
        state.token = token;
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
32
33
34
      },
      setCode(state, code) {
        state.csCode = code;
42056450   阿宝   权限修改
35
        localStorage.setItem("csCode", code);
4c4f7640   梁保满   路由表,路由前端文件
36
37
      },
      setInfo(state, data) {
42056450   阿宝   权限修改
38
        state.info = { ...data };
6d7bd862   梁保满   飞书bug
39
        sessionStorage.setItem("info", JSON.stringify(data));
4c4f7640   梁保满   路由表,路由前端文件
40
41
      },
      setRouters: (state, routers) => {
42056450   阿宝   权限修改
42
43
44
45
        let aRouters = addrouters.filter((item) => {
          let path = item.children[0]?.path.replace("/", "");
          return routers?.includes(path);
        });
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
46
  
42056450   阿宝   权限修改
47
48
49
        state.addRouters = aRouters; // 保存动态路由用来addRouter
        state.routers = defaultRouter.concat(aRouters); // 所有有权限的路由表,用来生成菜单列表
        sessionStorage.setItem("addRouters", JSON.stringify(routers));
4c4f7640   梁保满   路由表,路由前端文件
50
      },
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
51
52
      setTokenSources(state, data) {
        if (data instanceof Array) {
42056450   阿宝   权限修改
53
          state.tokenSources.set(data[0], data[1]);
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
54
        } else {
42056450   阿宝   权限修改
55
          state.tokenSources = new Map();
65f592b6   梁保满   答题卡列表页
56
57
        }
      },
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
58
      delTokenSources(state, data) {
42056450   阿宝   权限修改
59
        state.tokenSources.delete(data);
65f592b6   梁保满   答题卡列表页
60
      },
c1b532ad   梁保满   权限配置,路由基础设置
61
62
    },
    actions: {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
63
      Login({ state, commit }, params) {
42056450   阿宝   权限修改
64
        let loginForm = {};
13b58a42   梁保满   备题组卷部分前端页面基本完成
65
66
        loginForm.username = params.username;
        loginForm.password = encryptLoginPassword(params.password);
42056450   阿宝   权限修改
67
68
69
70
71
72
        request
          .login({ ...loginForm })
          .then((res) => {
            let response = res;
            if (response.status == 0) {
              const userInfo = { ...response.data };
aeac66d4   阿宝   飞书测试bug
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
              if (userInfo.permissions && userInfo.permissions.length) {
                userInfo.showRoleName = response.data.permissions[0]?.roleName;
                commit("setToken", "isLogin");
                commit("setInfo", { ...userInfo });
                commit("setRouters", [
                  ...userInfo.permissions[0]?.authorityRouter,
                ]);
                state.addRouters.forEach((res) => {
                  router.addRoute(res);
                });
                router.addRoute({
                  path: "*",
                  redirect: "/404",
                  hidden: true,
                  children: [],
                });
aeac66d4   阿宝   飞书测试bug
89
90
91
92
93
                if (params.url) {
                  window.location.href = params.url;
                } else {
                  router.push({ path: "/" });
                }
42056450   阿宝   权限修改
94
              } else {
aeac66d4   阿宝   飞书测试bug
95
96
97
98
99
                Message({
                  message: "该账号暂无权限,请联系管理员~",
                  type: "error",
                  duration: 3 * 1000,
                });
42056450   阿宝   权限修改
100
              }
aeac66d4   阿宝   飞书测试bug
101
102
103
104
105
106
            } else {
              Message({
                message: response.info,
                type: "error",
                duration: 3 * 1000,
              });
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
107
            }
42056450   阿宝   权限修改
108
109
          })
          .catch(() => {});
29f8fb90   梁保满   刷新浏览器重新动态添加路由
110
      },
b21d90ef   梁保满   长水登录
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
      CSLogin({ state, commit }, code) {
        request
          .ssoLogin({ code:code})
          .then((res) => {
            let response = res;
            if (response.status == 0) {
              const userInfo = { ...response.data };
              if (userInfo.permissions && userInfo.permissions.length) {
                userInfo.showRoleName = response.data.permissions[0]?.roleName;
                commit("setToken", "isLogin");
                commit("setCode", code);
                commit("setInfo", { ...userInfo });
                commit("setRouters", [
                  ...userInfo.permissions[0]?.authorityRouter,
                ]);
                state.addRouters.forEach((res) => {
                  router.addRoute(res);
                });
                router.addRoute({
                  path: "*",
                  redirect: "/404",
                  hidden: true,
                  children: [],
                });
                  router.push({ path: "/" });
                
              } else {
                Message({
                  message: "该账号暂无权限,请联系管理员~",
                  type: "error",
                  duration: 3 * 1000,
                });
              }
            } else {
              Message({
                message: response.info,
                type: "error",
                duration: 3 * 1000,
              });
            }
          })
          .catch(() => {});
      },
42056450   阿宝   权限修改
154
155
156
157
158
159
      permissions({ state, commit }, role) {
        commit("setToken", "isLogin");
        let userInfo = state.info;
        let authorityRouterObj = userInfo.permissions.filter((item) => {
          return item.role == role;
        });
aeac66d4   阿宝   飞书测试bug
160
        userInfo.showRoleName = authorityRouterObj[0]?.roleName;
bb778c90   阿宝   设备状态
161
        commit("setInfo", userInfo);
42056450   阿宝   权限修改
162
        commit("setRouters", [...authorityRouterObj[0]?.authorityRouter]);
13b58a42   梁保满   备题组卷部分前端页面基本完成
163
        state.addRouters.forEach((res) => {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
164
          router.addRoute(res);
29f8fb90   梁保满   刷新浏览器重新动态添加路由
165
        });
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
166
167
168
169
        router.addRoute({
          path: "*",
          redirect: "/404",
          hidden: true,
42056450   阿宝   权限修改
170
171
172
173
          children: [],
        });
        router.push({ path: "/" });
      },
c1b532ad   梁保满   权限配置,路由基础设置
174
175
    },
    getters: {
42056450   阿宝   权限修改
176
177
178
179
180
181
182
183
184
185
      addRouters: (state) => state.addRouters,
      token: (state) => state.token,
      code: (state) => state.csCode,
      info: (state) => state.info,
      routers: (state) => state.routers,
      logoShow: (state) => state.layoutStore.logoShow,
      isCollapse: (state) => state.layoutStore.isCollapse,
      uniquerouter: (state) => state.layoutStore.uniquerouter,
      tabnavBox: (state) => state.layoutStore.tabnavBox,
      rightNav: (state) => state.layoutStore.rightNav,
c1b532ad   梁保满   权限配置,路由基础设置
186
187
    },
    modules: {
42056450   阿宝   权限修改
188
189
190
      layoutStore,
    },
  });
c1b532ad   梁保满   权限配置,路由基础设置
191
  
42056450   阿宝   权限修改
192
  export default store;