import Vue from "vue" import Vuex from "vuex" import Cookies from "js-cookie" import layoutStore from "./modules/layout/index" import { defaultRouter } from "@/router/index" import request from "@/api/index" import router from "@/router/index" import Layout from "@/views/layout/layout" import CommerViews from "@/views/commerViews" const ExaminationPaper = () => import("@/views/examinationPaper/index") const ExaminationPaperAdd = () => import("@/views/examinationPaper/add") const ExaminationPaperEdit = () => import("@/views/examinationPaper/edit") const ExaminationPaperRecycle = () => import("@/views/examinationPaper/recycle") const Ask = () => import("@/views/ask/index") const AskAnalysis = () => import("@/views/ask/analysis") const Test = () => import("@/views/test/index") const TestAnalysis = () => import("@/views/test/analysis") const DataSync = () => import("@/views/dataSync/index") const Portrait = () => import("@/views/portrait/index") const Card = () => import("@/views/card/index") const Analysis = () => import("@/views/analysis/index") const Device = () => import("@/views/device/index") const Down = () => import("@/views/down/index") const DownClient = () => import("@/views/down/client") const SetUpAccount = () => import("@/views/setUp/account") const SetUpConglomerate = () => import("@/views/setUp/conglomerate") const SetUpSchool = () => import("@/views/setUp/school") const SetUpStudent = () => import("@/views/setUp/student") const SetUpTeacher = () => import("@/views/setUp/teacher") let addrouters = [ //测试用,后续后端获取 { path: "/examinationPaper", iconCls: "fa fa-file-text", // 图标样式class name: "备题组卷", component: Layout, alone: true, children: [ { path: "/examinationPaper", iconCls: "fa fa-file-text", // 图标样式class name: "", component: ExaminationPaper, children: [] }, { path: "/examinationPaperAdd", iconCls: "", // 图标样式class name: "添加答题卡", component: ExaminationPaperAdd, children: [] }, { path: "/examinationPaperEdit", iconCls: "", // 图标样式class name: "修改答题卡", component: ExaminationPaperEdit, children: [] }, { path: "/examinationPaperRecycle", iconCls: "", // 图标样式class name: "已归档答题卡", component: ExaminationPaperRecycle, children: [] }, ] }, { path: "/ask", iconCls: "fa fa-bar-chart", // 图标样式class name: "随堂问报表", component: Layout, alone: true, children: [ { path: "/ask", iconCls: "fa fa-bar-chart", // 图标样式class name: "", component: Ask, children: [] }, { path: "/askAnalysis", iconCls: "", // 图标样式class name: "随堂问报表分析", component: AskAnalysis, children: [] } ] }, { path: "/test", iconCls: "fa fa-pie-chart", // 图标样式class name: "即时测报表", component: Layout, alone: true, children: [ { path: "/test", iconCls: "fa fa-pie-chart", // 图标样式class name: "", component: Test, children: [] }, { path: "/testAnalysis", iconCls: "", // 图标样式class name: "即时测报表分析", component: TestAnalysis, children: [] } ] }, { path: "/portrait", iconCls: "fa fa-users", // 图标样式class name: "学生画像", component: Layout, alone: true, children: [ { path: "/portrait", iconCls: "fa fa-users", // 图标样式class name: "", component: Portrait, children: [] } ] }, { path: "/setUpConglomerate", iconCls: "fa fa-building", // 图标样式class name: "学校管理", component: Layout, alone: true, children: [ { path: "/setUpConglomerate", iconCls: "fa fa-building", name: '集团管理', component: SetUpConglomerate, children: [] }, ] }, { path: "/setUpAccount", iconCls: "fa fa-id-card-o", // 图标样式class name: "账号管理", component: Layout, alone: true, children: [ { path: "/setUpAccount", iconCls: "fa fa-id-card-o", name: '', component: SetUpAccount, children: [] }, ] }, { path: "/", iconCls: "fa fa-cog", name: '学校设置', component: Layout, children: [ { path: "/setUpSchool", iconCls: "fa fa-calculator", name: '学校设置', component: SetUpSchool, children: [] }, { path: "/setUpTeacher", iconCls: "fa fa-male", name: '教师管理', component: SetUpTeacher, children: [] }, { path: "/setUpStudent", iconCls: "fa fa-mortar-board", name: '学生管理', component: SetUpStudent, children: [] }, ] }, { path: "/card", iconCls: "fa fa-id-card", // 图标样式class name: "发卡记录", component: Layout, alone: true, children: [ { path: "/card", iconCls: "fa fa-id-card", // 图标样式class name: "", component: Card, children: [] } ] }, { path: "/device", iconCls: "fa fa-dashboard", // 图标样式class name: "设备状态", component: Layout, alone: true, children: [ { path: "/device", iconCls: "fa fa-dashboard", // 图标样式class name: "", component: Device, children: [] } ] }, { path: "/analysis", iconCls: "fa fa-area-chart", // 图标样式class name: "使用分析", component: Layout, alone: true, children: [ { path: "/analysis", iconCls: "fa fa-area-chart", // 图标样式class name: "", component: Analysis, children: [] } ] }, { path: "/down", iconCls: "fa fa-download", // 图标样式class name: "软件下载", component: Layout, alone: true, children: [ { path: "/down", iconCls: "fa fa-download", // 图标样式class name: "发卡软件", component: Down, children: [] }, { path: "/downClient", iconCls: "", // 图标样式class name: "授课端软件", component: DownClient, children: [] } ] }, { path: "/dataSync", iconCls: "fa fa-random", // 图标样式class name: "数据同步", component: Layout, alone: true, children: [ { path: "/dataSync", iconCls: "fa fa-random", // 图标样式class name: "", component: DataSync, children: [] } ] }, { path: "*", redirect: "/404", hidden: true, children: [] } ] Vue.use(Vuex) const store = new Vuex.Store({ state: { token: Cookies.get("token"), info: "", // 每次刷新都要通过token请求个人信息来筛选动态路由 routers: [], addRouters: [], tokenSources:new Map(), }, mutations: { setToken(state, token) { state.token = token Cookies.set("token", token, { expires: 1 / 24 }) }, setInfo(state, data) { state.info = { role: data.role, permissions: data.permissions, name: data.name, authorityRouter: data.authorityRouter, avatar: data.avatar ? data.avatar : "", uid: data.id } localStorage.setItem("info", JSON.stringify(store.getters.info)) }, setRouters: (state, routers) => { state.addRouters = routers // 保存动态路由用来addRouter state.routers = defaultRouter.concat(routers) // 所有有权限的路由表,用来生成菜单列表 }, setTokenSources(state,data){ if(data instanceof Array){ state.tokenSources.set(data[0], data[1]) }else{ state.tokenSources = new Map() } }, delTokenSources(state,data){ state.tokenSources.delete(data) }, }, actions: { Login({ commit }, that) { // request.fetchLogin(that.loginForm).then(res => { // if (res.status == 200) { commit("setToken", "xxxx") commit("setInfo", { permissions: [ { role: "superAdmin", roleName: "超级管理员", }, ], name: "张老师", // avatar: data.avatar ? data.avatar : "", // uid: data.id, // authorityRouter:[], }); commit("setRouters", addrouters) addrouters.forEach((res) => { that.$router.addRoute(res); }); that.$router.push({ path: "/" }) // } // }) }, permissions({ commit }, that) { // request.fetchLogin(that.loginForm).then(res => { // if (res.status == 200) { commit("setToken", "xxxx") commit("setInfo", { permissions: [ { role: "superAdmin", roleName: "超级管理员", }, ], name: "李老师", // avatar: data.avatar ? data.avatar : "", // uid: data.id, // authorityRouter:[], }); commit("setRouters", addrouters) addrouters.forEach((res) => { that.$router.addRoute(res); }); that.$router.push({ path: "/" }) // } // }) } }, getters: { addRouters: state => state.addRouters, token: state => state.token, 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 }, modules: { layoutStore } }) export default store