index.js 9.06 KB
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 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: "/dataSync",
    iconCls: "fa fa-random", // 图标样式class
    name: "数据同步",
    component: Layout,
    alone: true,
    children: [
      {
        path: "/dataSync",
        iconCls: "fa fa-random", // 图标样式class
        name: "",
        component: DataSync,
        children: []
      }
    ]
  },
  {
    path: "/",
    iconCls: "fa fa-cog",
    name: '信息管理',
    component: Layout,
    children: [
      {
        path: "/setUpAccount",
        iconCls: "fa fa-id-card-o",
        name: '账号管理',
        component: SetUpAccount,
        children: []
      },
      {
        path: "/setUpConglomerate",
        iconCls: "fa fa-building",
        name: '集团管理',
        component: SetUpConglomerate,
        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: "/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: "*",
    redirect: "/404",
    hidden: true,
    children: []
  }
]

Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    token: Cookies.get("token"),
    info: "", // 每次刷新都要通过token请求个人信息来筛选动态路由
    routers: [],
    addRouters: [],
  },
  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) // 所有有权限的路由表,用来生成菜单列表
    },
  },
  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)
      // let newAddRouters = getters.addRouters;
      // await router.addRoutes(newAddRouters)
      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)
      // let newAddRouters = getters.addRouters;
      // await router.addRoutes(newAddRouters)
      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