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: "/login", }, { path: "/login", meta: { title: "登录", oneself: true, hide: true, }, component: () => import("../views/login"), }, { 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: "/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: "/strain", component: Layouts, meta: { title: "菌种库", }, children: [ { path: "/strain-library", component: Parent, meta: { title: "菌种库管理", }, children: [ { path: "strain-library-manage", name: "StrainLibraryManage", meta: { title: "原始细胞库", keepAlive: true, }, component: () => import("../views/strain-library/strain-library-manage"), }, { path: "strain-library-manage/add", name: "StrainLibraryManageAdd", meta: { title: "新增原始细胞库", keepAlive: true, hide: true }, component: () => import("../views/strain-library/strain-library-manage/add.vue"), }, { path: "strain-library-manage/record", name: "StrainRecord", meta: { title: "出入库记录", keepAlive: true, hide: true }, component: () => import("../views/strain-library/strain-library-manage/record.vue"), }, { path: "main-cell-library", name: "MainCellLibrary", meta: { title: "主细胞库", keepAlive: true, }, component: () => import("../views/strain-library/main-cell-library"), }, { path: "main-cell-library/add", name: "MainCellLibraryAdd", meta: { title: "新增主细胞", keepAlive: true, hide: true }, component: () => import("../views/strain-library/main-cell-library/add.vue"), }, { path: "production-cell-library", name: "ProductionCellLibrary", meta: { title: "生产细胞库", keepAlive: true, }, component: () => import("../views/strain-library/production-cell-library"), }, { path: "production-cell-library/add", name: "ProductionCellLibraryAdd", meta: { title: "新增生产细胞", keepAlive: true, hide: true }, component: () => import("../views/strain-library/production-cell-library/add.vue"), } ] }, { path: 'pedigree-vhart', name: 'PedigreeChart', meta: { title: "菌种传代生产谱系图", }, component: () => import("../views/pedigree-chart"), }, { path: 'add-pedigree', name: 'AddPedigree', meta: { title: "新增母代菌种传代生产谱系图", hide: true }, component: () => import("../views/pedigree-chart/add"), }, { path: 'add-progenitor', name: 'AddProgenitor', meta: { title: "新增祖代菌种传代生产谱系图", hide: true }, component: () => import("../views/pedigree-chart/addProgenitor"), }, // { // path: "strain-flow-chart", // name: "StrainFlowChart", // meta: { // title: "菌种传代产生流程图", // keepAlive: true, // }, // component: () => import("../views/strain-library/strain-flow-chart"), // }, { path: 'breeding-record', name: 'BreedingRecord', meta: { title: "菌种选育保藏记录", }, component: () => import("../views/strain-library/breeding-record"), }, { path: 'add-breeding-record', name: 'AddBreedingRecord', meta: { title: "新增菌种选育保藏记录", hide: true, }, component: () => import("../views/strain-library/breeding-record/add"), }, { path: 'validation', meta: { title: "菌种验证数据资料", }, component: Parent, children: [ { path: 'primitive-cell', name: 'PrimitiveCell', meta: { title: '原始细胞库资料', }, component: () => import("../views/strain-library/validation/primitive-cell/index.vue") }, { path: 'add-primitive-cell', name: 'AddPrimitiveCell', meta: { title: '新增原始细胞库资料', hide: true }, component: () => import("../views/strain-library/validation/primitive-cell/add.vue") }, { path: 'confirm-detail', name: 'ConfirmDetail', meta: { title: '确认原始细胞库资料', hide: true }, component: () => import("../views/strain-library/validation/primitive-cell/confirm-detail.vue") }, { path: 'chief-cell', name: 'ChiefCell', meta: { title: '主细胞库资料' }, component: () => import("../views/strain-library/validation/chief-cell") } ] }, ] }, { path: "/strainReportLibrary", component: Layouts, meta: { title: "菌种报告库", }, children: [{ path: "reportLibraryOne", meta: { title: "报告库一", keepAlive: true, }, component: () => import("../views/strainReportLibrary/reportLibraryOne/index.vue"), }, { path: "add", meta: { title: "新增报告", hide: true, keepAlive: true, }, component: () => import("../views/strainReportLibrary/reportLibraryOne/add.vue"), }, { path: "reportLibraryTwo", meta: { title: "报告库二", keepAlive: true, }, component: () => import("../views/strainReportLibrary/reportLibraryOneTWO/index.vue"), }, { path: "addTwo", meta: { title: "新增报告", hide: true, keepAlive: true, }, component: () => import("../views/strainReportLibrary/reportLibraryOneTWO/add.vue"), }, { path: "reportLibraryThree", meta: { title: "报告库三", keepAlive: true, }, component: () => import("../views/strainReportLibrary/reportLibraryOneThree/index.vue"), }, { path: "addThree", meta: { title: "新增报告", hide: true, keepAlive: true, }, component: () => import("../views/strainReportLibrary/reportLibraryOneThree/add.vue"), }, { path: "reportLibraryFour", meta: { title: "报告库四", keepAlive: true, }, component: () => import("../views/strainReportLibrary/reportLibraryOneFour/index.vue"), }, { path: "addFour", meta: { title: "新增报告", hide: true, keepAlive: true, }, component: () => import("../views/strainReportLibrary/reportLibraryOneFour/add.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") { // if (sessionStorage.getItem('token')) { // next('/projectList'); // 已登录状态访问登录页时重定向到系统首页 // return; // } // next(); // return; // } // // 登录状态校验 // const isAuthenticated = sessionStorage.getItem('token'); // if (!isAuthenticated) { // next('/login'); // 未登录用户重定向到登录页 // return; // } // 判断是否拥有要跳转菜单权限 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(sessionStorage.getItem('tagList') || '[]') // 判断是否存在 let isExist = tagList.some(item => item.path === to.path) if (!isExist) { // 只保存必要的信息 const tagInfo = { path: to.path, name: to.name, meta: to.meta, query: to.query, } tagList.push(tagInfo) sessionStorage.setItem('tagList', JSON.stringify(tagList)) store.commit('SET_TAGLIST', tagList) } } // 判断是否需要缓存 if (to.meta.keepAlive) { let keepAliveList = JSON.parse(sessionStorage.getItem('keepAliveList') || '[]') // 判断是否已经缓存 let isExist = keepAliveList.includes(to.name) if (!isExist) { keepAliveList.push(to.name) sessionStorage.setItem('keepAliveList', JSON.stringify(keepAliveList)) store.commit('SET_KEEPALIVELIST', keepAliveList) } } next() }); export default router;