import NProgress from "nprogress" import en from "../i18n/lang/en" import Layout from "@/views/layout/layout" import CommerViews from "@/views/commerViews" import router from "./index" import store from "../store" // let routeName = en.routeName 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: [] } ] // 获取角色信息,根据用户权限动态加载路由 router.beforeEach((to, from, next) => { NProgress.start() if (store.getters.token) { if (to.path === "/login") { next() } else { if (!store.getters.info.permissions) { !(async function getAddRouters() { // 省略 axios 请求代码 通过 token 向后台请求用户权限等信息,这里用假数据赋值 await store.commit("setInfo", { permissions: [ { role: "superAdmin", roleName: "超级管理员" } ], name: "李老师", // avatar: data.avatar ? data.avatar : "", // uid: data.id, // authorityRouter:[], }) await store.commit("setRouters", addrouters) let newAddRouters = store.getters.addRouters newAddRouters.forEach(res => { router.addRoute(res) }) next({ path: to.path }) }()) } else { next() } } } else { if (to.path === "/login") { next() } next({ path: "/login" }) } }) router.afterEach(() => { NProgress.done() }) // // 真实使用 // import fetchUser from "@/api/apis/user" // // router.beforeEach((to, from, next) => { // if (store.getters.token && store.getters.token !== "undefined") { // // store.dispatch('setToken', store.getters.token) // if (to.path === "/login") { // next({path: "/"}) // } else { // if (!store.getters.info) { // (async function getAddRouters () { // fetchUser.fetchGetUserInfo().then(async function (response) { // await store.dispatch("setInfo", response.data) // await store.dispatch("newRoutes", store.getters.info.authorityRouter) // await router.addRoutes(store.getters.addRouters) // next({path: "/index"}) // }).catch(function (error) { // console.log(error) // }) // }()) // } else { // let is404 = to.matched.some(record => { // console.log(record) // if (record.meta.role) { // return store.getters.info.authorityRouter === -1 // } // }) // if (is404) { // next({path: "/404"}) // return false // } // next() // } // } // } else { // if (to.path === "/login") { // next() // } // next({path: "/login"}) // } // })