import Vue from "vue"; import VueRouter from "vue-router"; import Layouts from "../layouts"; import Parent from "../layouts/components/AppContent" import store from "../store"; Vue.use(VueRouter); const originalPush = VueRouter.prototype.push VueRouter.prototype.push = function push(location) { return originalPush.call(this, location).catch(err => err) } /** * path: "/login", ------页面地址 component: () => import("../views/login"), ------组件地址 name: "Login", ------组件名称 缓存时需要 唯一性 meta: { title: "登录", ------页面标题 icon: "el-icon-user-solid", ------菜单图标 oneself: true, ------是否在单独页面打开 hide: true, ------是否隐藏改菜单 keepAlive: true, ------是否缓存 } */ const routes = [ { path: "/", redirect: "/projectList/list", }, { path: "/login", meta: { title: "登录", oneself: true, hide: true, }, component: () => import("../views/login"), }, { path: "/system", meta: { title: "系统管理", }, component: Layouts, children: [ { path: "user", name: "User", meta: { title: "人员管理", }, component: () => import("../views/system/user"), }, { path: "role", name: "Role", meta: { title: "角色管理", }, component: () => import("../views/system/role"), }, { path: "add-role", name: "AddRole", meta: { title: "新增角色", hide: true, }, component: () => import("../views/system/role/add"), }, { path: "edit-role", name: "EditRole", meta: { title: "编辑角色", hide: true, }, component: () => import("../views/system/role/edit"), }, { path: "detail-role", name: "DetailRole", meta: { title: "角色详情", hide: true, }, component: () => import("../views/system/role/detail"), }, { path: "operation-log", meta: { title: "操作日志", }, component: () => import("../views/system/operation-log"), }, ] }, { path: "/projectList", meta: { title: "项目组管理", }, component: Layouts, children: [ { path: "list", name: "ProjectList", meta: { title: "项目组管理", }, component: () => import("../views/projectList"), }, { path: "addProject", name: "AddProject", meta: { title: "新增项目组", hide: true, keepAlive: true, }, component: () => import("../views/projectList/addProject"), } ] }, { path: "/dataManagement", component: Layouts, meta: { title: "实验室数据管理", }, children: [ { path: "approvalPlan", meta: { title: "项目课题方案审批", keepAlive: true, }, component: () => import("../views/dataManagement/approvalPlan/list.vue"), }, { path: "addPlan", name: "addPlan", meta: { title: "新增项目课题方案", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/approvalPlan/addPlan"), }, { path: "dispatching", meta: { title: "实验调度管理", keepAlive: true, }, component: () => import("../views/dataManagement/dispatching/list.vue"), }, { path: "addDispatch", meta: { title: "新增实验调度", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/dispatching/addDispatch"), }, { path: "confirmation-sheet", name: "ConfirmationSheet", meta: { title: "检验方法确认单", }, component: () => import("../views/dataManagement/confirmation-sheet"), }, { path: "confirmation-sheet/add", name: "AddConfirmationSheet", meta: { title: "检验方法确认单", }, component: () => import("../views/dataManagement/confirmation-sheet/components/add.vue"), }, { path: "sampleManage", meta: { title: "样品管理", keepAlive: true, }, component: () => import("../views/dataManagement/sampleManage/list.vue"), }, { path: "addSample", name: "addPaddSamplelan", meta: { title: "新增样品", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/sampleManage/addSample"), }, ], }, { path: "/reportLibrary", component: Layouts, meta: { title: "专业报告库审批", }, children: [ { path: "feasibilityStudy", meta: { title: "可研报告库", keepAlive: true, }, component: () => import("../views/reportLibrary/feasibilityStudy/index.vue"), }, { path: "add", meta: { title: "新增可行报告", hide: true, keepAlive: true, }, component: () => import("../views/reportLibrary/feasibilityStudy/add.vue"), }, { path: "feasibilityReport", meta: { title: "可行报告库", keepAlive: true, }, component: () => import("../views/reportLibrary/feasibilityReport/index.vue"), }, { path: "processDevelopment", meta: { title: "工艺开发工具", keepAlive: true, }, component: () => import("../views/reportLibrary/processDevelopment/index.vue"), }, { path: "verificationRelease", meta: { title: "验证与发布", keepAlive: true, }, component: () => import("../views/reportLibrary/verificationRelease/index.vue"), }, { path: "projectProposalLibrary", meta: { title: "立项报告库", keepAlive: true, }, component: () => import("../views/reportLibrary/projectProposalLibrary/index.vue"), }, ], }, { path: "/deliveryAssessment", component: Layouts, meta: { title: "工作交付评定", }, children: [ { path: "projectTeamIntegral", meta: { title: "项目组总积分", }, component: () => import("../views/deliveryAssessment/projectTeamIntegral"), }, { path: "projectTeamIntegral-detail", meta: { title: "积分详情", hide: true }, component: () => import("../views/deliveryAssessment/projectTeamIntegral/detail.vue"), }, ] } ]; const router = new VueRouter({ mode: "hash", base: process.env.BASE_URL, routes, }); // 前置路由拦截器 router.beforeEach((to, from, next) => { // 设置当前页签名称 document.title = to.meta.title || '实验室流程'; // 登录验证 // if (to.path === "/login") { // localStorage.removeItem('userInfo') // next() // } else if (!localStorage.getItem('userInfo')) { // next('/login') // } else { // // 判断是否拥有要跳转菜单权限 // let menus = store.state.menus // if (to.meta.hasOwnProperty('privilege') && !menus.includes(to.meta.privilege)) { // return // } // 设置标签列表 if (!to.meta.hide || !to.meta.oneself) { let tagList = JSON.parse(localStorage.getItem('tagList') || '[]') // 判断是否存在 let isExist = tagList.some(item => item.path === to.path) if (!isExist) { // 只保存必要的信息 const tagInfo = { path: to.path, name: to.name, meta: to.meta } tagList.push(tagInfo) localStorage.setItem('tagList', JSON.stringify(tagList)) store.commit('SET_TAGLIST', tagList) } } // 判断是否需要缓存 if (to.meta.keepAlive) { let keepAliveList = JSON.parse(localStorage.getItem('keepAliveList') || '[]') // 判断是否已经缓存 let isExist = keepAliveList.includes(to.name) if (!isExist) { keepAliveList.push(to.name) localStorage.setItem('keepAliveList', JSON.stringify(keepAliveList)) store.commit('SET_KEEPALIVELIST', keepAliveList) } } next() // } }); export default router;