Blame view

src/store/index.js 4.26 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";
4c4f7640   梁保满   路由表,路由前端文件
7
  
42056450   阿宝   权限修改
8
9
10
11
  import request from "@/api/index";
  import router from "@/router/index";
  import { addrouters } from "@/router/index";
  Vue.use(Vuex);
c1b532ad   梁保满   权限配置,路由基础设置
12
13
14
  
  const store = new Vuex.Store({
    state: {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
15
16
      token: "",
      csCode: localStorage.getItem("csCode") || "",
42056450   阿宝   权限修改
17
18
19
20
21
22
23
24
25
26
      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   梁保满   权限配置,路由基础设置
27
28
    },
    mutations: {
4c4f7640   梁保满   路由表,路由前端文件
29
      setToken(state, token) {
42056450   阿宝   权限修改
30
        state.token = token;
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
31
32
33
      },
      setCode(state, code) {
        state.csCode = code;
42056450   阿宝   权限修改
34
        localStorage.setItem("csCode", code);
4c4f7640   梁保满   路由表,路由前端文件
35
36
      },
      setInfo(state, data) {
42056450   阿宝   权限修改
37
38
        state.info = { ...data };
        sessionStorage.setItem("info", JSON.stringify(state.info));
4c4f7640   梁保满   路由表,路由前端文件
39
40
      },
      setRouters: (state, routers) => {
42056450   阿宝   权限修改
41
42
43
44
        let aRouters = addrouters.filter((item) => {
          let path = item.children[0]?.path.replace("/", "");
          return routers?.includes(path);
        });
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
45
  
42056450   阿宝   权限修改
46
47
48
        state.addRouters = aRouters; // 保存动态路由用来addRouter
        state.routers = defaultRouter.concat(aRouters); // 所有有权限的路由表,用来生成菜单列表
        sessionStorage.setItem("addRouters", JSON.stringify(routers));
4c4f7640   梁保满   路由表,路由前端文件
49
      },
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
50
51
      setTokenSources(state, data) {
        if (data instanceof Array) {
42056450   阿宝   权限修改
52
          state.tokenSources.set(data[0], data[1]);
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
53
        } else {
42056450   阿宝   权限修改
54
          state.tokenSources = new Map();
65f592b6   梁保满   答题卡列表页
55
56
        }
      },
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
57
      delTokenSources(state, data) {
42056450   阿宝   权限修改
58
        state.tokenSources.delete(data);
65f592b6   梁保满   答题卡列表页
59
      },
c1b532ad   梁保满   权限配置,路由基础设置
60
61
    },
    actions: {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
62
      Login({ state, commit }, params) {
42056450   阿宝   权限修改
63
        let loginForm = {};
13b58a42   梁保满   备题组卷部分前端页面基本完成
64
65
        loginForm.username = params.username;
        loginForm.password = encryptLoginPassword(params.password);
42056450   阿宝   权限修改
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
        request
          .login({ ...loginForm })
          .then((res) => {
            let response = res;
            if (response.status == 0) {
              const userInfo = { ...response.data };
              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: [],
              });
              console.log(Cookies.get("ZT_YIJIAO_TOKEN"));
              if (params.url) {
                window.location.href = params.url;
              } else {
                router.push({ path: "/" });
              }
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
91
            }
42056450   阿宝   权限修改
92
93
          })
          .catch(() => {});
29f8fb90   梁保满   刷新浏览器重新动态添加路由
94
      },
42056450   阿宝   权限修改
95
96
97
98
99
100
101
      permissions({ state, commit }, role) {
        commit("setToken", "isLogin");
        let userInfo = state.info;
        let authorityRouterObj = userInfo.permissions.filter((item) => {
          return item.role == role;
        });
        userInfo.showRoleName = authorityRouterObj[0]?.roleName
bb778c90   阿宝   设备状态
102
        commit("setInfo", userInfo);
42056450   阿宝   权限修改
103
        commit("setRouters", [...authorityRouterObj[0]?.authorityRouter]);
13b58a42   梁保满   备题组卷部分前端页面基本完成
104
        state.addRouters.forEach((res) => {
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
105
          router.addRoute(res);
29f8fb90   梁保满   刷新浏览器重新动态添加路由
106
        });
b769660c   梁保满   备课组题细节调整,随堂问列表页面开发完成
107
108
109
110
        router.addRoute({
          path: "*",
          redirect: "/404",
          hidden: true,
42056450   阿宝   权限修改
111
112
113
114
          children: [],
        });
        router.push({ path: "/" });
      },
c1b532ad   梁保满   权限配置,路由基础设置
115
116
    },
    getters: {
42056450   阿宝   权限修改
117
118
119
120
121
122
123
124
125
126
      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   梁保满   权限配置,路由基础设置
127
128
    },
    modules: {
42056450   阿宝   权限修改
129
130
131
      layoutStore,
    },
  });
c1b532ad   梁保满   权限配置,路由基础设置
132
  
42056450   阿宝   权限修改
133
  export default store;