Blame view

src/store/index.js 7.63 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
  import request from "@/api/index";
  import router from "@/router/index";
3617eaad   梁保满   长水账号设置
11
  import { addrouters, addRoutersAdmin, addroutersPersonal, csAddrouters } from "@/router/index";
42056450   阿宝   权限修改
12
  Vue.use(Vuex);
c1b532ad   梁保满   权限配置,路由基础设置
13
14
15
  
  const store = new Vuex.Store({
    state: {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
16
17
      token: "",
      csCode: localStorage.getItem("csCode") || "",
bbc51d4b   梁保满   组卷添加修改分数,打开新开页面跳转...
18
19
      info: localStorage.getItem("info")
        ? JSON.parse(localStorage.getItem("info"))
42056450   阿宝   权限修改
20
21
22
        : "", // 每次刷新都要通过token请求个人信息来筛选动态路由
      routers: [], //左侧菜单
      addRouters:
bbc51d4b   梁保满   组卷添加修改分数,打开新开页面跳转...
23
        localStorage.getItem("addRouters") &&
3617eaad   梁保满   长水账号设置
24
          localStorage.getItem("addRouters") != "undefined"
bbc51d4b   梁保满   组卷添加修改分数,打开新开页面跳转...
25
          ? JSON.parse(localStorage.getItem("addRouters"))
42056450   阿宝   权限修改
26
27
          : [], //动态路由
      tokenSources: new Map(), //正在请求接口(切换取消请求)
7812e986   梁保满   班主任查看报表添加额外信息
28
      classes: localStorage.getItem("classes") || "", //班主任选择班级查询报表(用于教学班学生筛选)
ce278878   梁保满   2-2 bugfix
29
      refreshTestList: false, //重新计分刷新列表
c1b532ad   梁保满   权限配置,路由基础设置
30
31
    },
    mutations: {
4c4f7640   梁保满   路由表,路由前端文件
32
      setToken(state, token) {
42056450   阿宝   权限修改
33
        state.token = token;
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
34
35
36
      },
      setCode(state, code) {
        state.csCode = code;
42056450   阿宝   权限修改
37
        localStorage.setItem("csCode", code);
4c4f7640   梁保满   路由表,路由前端文件
38
39
      },
      setInfo(state, data) {
42056450   阿宝   权限修改
40
        state.info = { ...data };
bbc51d4b   梁保满   组卷添加修改分数,打开新开页面跳转...
41
        localStorage.setItem("info", JSON.stringify(data));
4c4f7640   梁保满   路由表,路由前端文件
42
43
      },
      setRouters: (state, routers) => {
f45b3c05   LH_PC   云平台新UI界面
44
        console.log('current', state);
77ebf04d   梁保满   个人版
45
        let addrouterList = []
3617eaad   梁保满   长水账号设置
46
        if (state.info.showRole == 'ROLE_PERSONAL') {
77ebf04d   梁保满   个人版
47
          addrouterList = [...addroutersPersonal]
3617eaad   梁保满   长水账号设置
48
        } else if (state.info.showRole == 'ROLE_PINGTAI') {
77ebf04d   梁保满   个人版
49
          addrouterList = [...addRoutersAdmin]
3617eaad   梁保满   长水账号设置
50
51
52
53
54
55
        } else {
          if (state.csCode) {
            addrouterList = [...csAddrouters]
          } else {
            addrouterList = [...addrouters]
          }
77ebf04d   梁保满   个人版
56
        }
f45b3c05   LH_PC   云平台新UI界面
57
  
77ebf04d   梁保满   个人版
58
        let aRouters = addrouterList.filter((item) => {
6bca489d   LH_PC   云平台二期UI
59
  
42056450   阿宝   权限修改
60
          let path = item.children[0]?.path.replace("/", "");
f45b3c05   LH_PC   云平台新UI界面
61
62
          if (routers?.includes(path) == true) return item;
          else if (item.demoRoles?.includes(state.info.showRole) == true) return item;
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
63
  
f45b3c05   LH_PC   云平台新UI界面
64
65
66
67
68
          if (item.children) {
            item.children = item.children.filter((itemFilter) => {
              return itemFilter.demoRoles?.includes(state.info.showRole) == true
            });
            if (item.children.length >= 1) return item;
6bca489d   LH_PC   云平台二期UI
69
70
71
          }
          return null;
        });
42056450   阿宝   权限修改
72
73
        state.addRouters = aRouters; // 保存动态路由用来addRouter
        state.routers = defaultRouter.concat(aRouters); // 所有有权限的路由表,用来生成菜单列表
bbc51d4b   梁保满   组卷添加修改分数,打开新开页面跳转...
74
        localStorage.setItem("addRouters", JSON.stringify(routers));
4c4f7640   梁保满   路由表,路由前端文件
75
      },
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
76
77
      setTokenSources(state, data) {
        if (data instanceof Array) {
42056450   阿宝   权限修改
78
          state.tokenSources.set(data[0], data[1]);
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
79
        } else {
42056450   阿宝   权限修改
80
          state.tokenSources = new Map();
65f592b6   梁保满   答题卡列表页
81
82
        }
      },
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
83
      delTokenSources(state, data) {
42056450   阿宝   权限修改
84
        state.tokenSources.delete(data);
65f592b6   梁保满   答题卡列表页
85
      },
7812e986   梁保满   班主任查看报表添加额外信息
86
87
      setClasses(state, data) {
        state.classes = data;
6bca489d   LH_PC   云平台二期UI
88
89
        console.log(state)
        localStorage.setItem('store', "classes", data);
ce278878   梁保满   2-2 bugfix
90
91
92
      },
      setRefreshTestList(state, data) {
        state.refreshTestList = data;
7812e986   梁保满   班主任查看报表添加额外信息
93
      }
c1b532ad   梁保满   权限配置,路由基础设置
94
95
    },
    actions: {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
96
      Login({ state, commit }, params) {
42056450   阿宝   权限修改
97
        let loginForm = {};
13b58a42   梁保满   备题组卷部分前端页面基本完成
98
99
        loginForm.username = params.username;
        loginForm.password = encryptLoginPassword(params.password);
42056450   阿宝   权限修改
100
101
102
103
104
        request
          .login({ ...loginForm })
          .then((res) => {
            let response = res;
            if (response.status == 0) {
f45b3c05   LH_PC   云平台新UI界面
105
              console.log(response)
42056450   阿宝   权限修改
106
              const userInfo = { ...response.data };
aeac66d4   阿宝   飞书测试bug
107
108
              if (userInfo.permissions && userInfo.permissions.length) {
                userInfo.showRoleName = response.data.permissions[0]?.roleName;
21dfdeae   梁保满   平台管理员
109
                userInfo.showRole = response.data.permissions[0]?.role;
aeac66d4   阿宝   飞书测试bug
110
111
                commit("setToken", "isLogin");
                commit("setInfo", { ...userInfo });
21dfdeae   梁保满   平台管理员
112
113
114
                commit("setRouters", [
                  ...userInfo.permissions[0]?.authorityRouter,
                ]);
aeac66d4   阿宝   飞书测试bug
115
116
117
118
119
120
121
122
123
                state.addRouters.forEach((res) => {
                  router.addRoute(res);
                });
                router.addRoute({
                  path: "*",
                  redirect: "/404",
                  hidden: true,
                  children: [],
                });
aeac66d4   阿宝   飞书测试bug
124
125
126
127
128
                if (params.url) {
                  window.location.href = params.url;
                } else {
                  router.push({ path: "/" });
                }
42056450   阿宝   权限修改
129
              } else {
aeac66d4   阿宝   飞书测试bug
130
131
132
133
134
                Message({
                  message: "该账号暂无权限,请联系管理员~",
                  type: "error",
                  duration: 3 * 1000,
                });
42056450   阿宝   权限修改
135
              }
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
136
            }
42056450   阿宝   权限修改
137
          })
54857fa3   梁保满   下载模板跨域,集团管理员选择角色范...
138
139
140
141
142
143
144
          .catch((err) => {
            Message({
              message: err,
              type: "error",
              duration: 3 * 1000,
            });
          });
29f8fb90   梁保满   刷新浏览器重新动态添加路由
145
      },
b21d90ef   梁保满   长水登录
146
147
      CSLogin({ state, commit }, code) {
        request
3617eaad   梁保满   长水账号设置
148
          .ssoLogin({ code: code })
b21d90ef   梁保满   长水登录
149
150
151
152
153
154
          .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;
77ebf04d   梁保满   个人版
155
                userInfo.showRole = response.data.permissions[0]?.role;
b21d90ef   梁保满   长水登录
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
                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: [],
                });
3617eaad   梁保满   长水账号设置
171
172
                router.push({ path: "/" });
  
b21d90ef   梁保满   长水登录
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
              } else {
                Message({
                  message: "该账号暂无权限,请联系管理员~",
                  type: "error",
                  duration: 3 * 1000,
                });
              }
            } else {
              Message({
                message: response.info,
                type: "error",
                duration: 3 * 1000,
              });
            }
          })
3617eaad   梁保满   长水账号设置
188
          .catch(() => { });
b21d90ef   梁保满   长水登录
189
      },
42056450   阿宝   权限修改
190
191
192
193
194
195
      permissions({ state, commit }, role) {
        commit("setToken", "isLogin");
        let userInfo = state.info;
        let authorityRouterObj = userInfo.permissions.filter((item) => {
          return item.role == role;
        });
aeac66d4   阿宝   飞书测试bug
196
        userInfo.showRoleName = authorityRouterObj[0]?.roleName;
77ebf04d   梁保满   个人版
197
        userInfo.showRole = authorityRouterObj[0]?.role;
bb778c90   阿宝   设备状态
198
        commit("setInfo", userInfo);
42056450   阿宝   权限修改
199
        commit("setRouters", [...authorityRouterObj[0]?.authorityRouter]);
13b58a42   梁保满   备题组卷部分前端页面基本完成
200
        state.addRouters.forEach((res) => {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
201
          router.addRoute(res);
29f8fb90   梁保满   刷新浏览器重新动态添加路由
202
        });
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
203
204
205
206
        router.addRoute({
          path: "*",
          redirect: "/404",
          hidden: true,
42056450   阿宝   权限修改
207
208
209
          children: [],
        });
        router.push({ path: "/" });
11a4e518   梁保满   背题组卷修改答案设置,即使测随堂问...
210
        window.location.reload()
42056450   阿宝   权限修改
211
      },
c1b532ad   梁保满   权限配置,路由基础设置
212
213
    },
    getters: {
42056450   阿宝   权限修改
214
215
      addRouters: (state) => state.addRouters,
      token: (state) => state.token,
7812e986   梁保满   班主任查看报表添加额外信息
216
      csCode: (state) => state.csCode,
42056450   阿宝   权限修改
217
218
      info: (state) => state.info,
      routers: (state) => state.routers,
7812e986   梁保满   班主任查看报表添加额外信息
219
      classes: (state) => state.classes,
42056450   阿宝   权限修改
220
221
222
223
224
      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,
ce278878   梁保满   2-2 bugfix
225
      refreshTestList: (state) => state.refreshTestList,
c1b532ad   梁保满   权限配置,路由基础设置
226
227
    },
    modules: {
42056450   阿宝   权限修改
228
229
230
      layoutStore,
    },
  });
c1b532ad   梁保满   权限配置,路由基础设置
231
  
42056450   阿宝   权限修改
232
  export default store;