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: "/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: "editProject", name: "EditProject", meta: { title: "编辑项目组", hide: true, }, component: () => import("../views/projectList/editProject"), }, { path: "detailProject", name: "DetailProject", meta: { title: "项目组详情", hide: true, }, component: () => import("../views/projectList/detailProject"), } ] }, { 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: "检验方法确认单", hide: true, }, component: () => import("../views/dataManagement/confirmation-sheet/components/add.vue"), }, { path: "scheme-management", name: "schemeManagement", meta: { title: "实验方案管理", }, component: () => import("../views/dataManagement/schemeManagement/list.vue"), }, { path: "scheme-management/add", name: "addSchemeManagement", meta: { title: "添加实验方案", hide: true, }, component: () => import("../views/dataManagement/schemeManagement/addPlan.vue"), }, { path: "scheme-management/stop-experiment", name: "schemeManagementStopExperiment", meta: { title: "终止实验方案", hide: true, }, component: () => import("../views/dataManagement/schemeManagement/stop-experiment.vue"), }, { path: "/sampleManage", meta: { title: "样品管理", // keepAlive: true, }, component: Parent, children: [ { path: "manage", 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: "record", meta: { title: "取样操作记录列表", keepAlive: true, }, component: () => import("../views/dataManagement/sampleRecordList/list.vue"), }, { path: "changeRecord", name: "changeRecord", meta: { title: "填写取样操作记录", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/sampleRecordList/changeRecord"), }, { path: "submissionList", meta: { title: "送样单列表", keepAlive: true, }, component: () => import("../views/dataManagement/sampleSubmissionList/list.vue"), }, { path: "submission", name: "submission", meta: { title: "送样单详情", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/sampleSubmissionList/submission"), }, ] }, { path: "deliveryRecord", meta: { title: "取样送样记录", keepAlive: true, }, component: () => import("../views/dataManagement/SampleDeliveryRecord/list.vue"), }, { path: "delivery", name: "delivery", meta: { title: "送样详情", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/SampleDeliveryRecord/deliveryRecord"), }, { path: "originalRecordTest", meta: { title: "原始检验记录", keepAlive: true, }, component: () => import("../views/dataManagement/originalRecordTest/list.vue"), }, { path: "originalRecordTest/detail", name: "OriginalRecordTestDetail", meta: { title: "原始检验记录详情", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/originalRecordTest/detail.vue"), }, { path: "inspectionReport", meta: { title: "检验报告管理", keepAlive: true, }, component: () => import("../views/dataManagement/inspectionReport/list.vue"), }, { path: "inspectionReport/detail", name: "inspectionReportDetail", meta: { title: "检验报告详情", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/inspectionReport/detail.vue"), }, { path: "testResultReport", meta: { title: "实验结果汇报", keepAlive: true, }, component: () => import("../views/dataManagement/testResultReport/list.vue"), }, { path: "testResultReport/detail", name: "testResultReportDetail", meta: { title: "实验结果详情", hide: true, keepAlive: true, }, component: () => import("../views/dataManagement/testResultReport/detail.vue"), }, { path: "suspendExperiment", meta: { title: "实验中止审批", keepAlive: true, }, component: () => import("../views/dataManagement/suspendExperiment/list.vue"), }, ], }, { 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: "edit", 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: "addFeasibility", meta: { title: "新增可行报告", hide: true, keepAlive: true, }, component: () => import("../views/reportLibrary/feasibilityReport/add.vue"), }, { path: "editFeasibility", meta: { title: "编辑可行报告", hide: true, keepAlive: true, }, component: () => import("../views/reportLibrary/feasibilityReport/add.vue"), }, { path: "processDevelopment", meta: { title: "工艺开发工具", keepAlive: true, }, component: () => import("../views/reportLibrary/processDevelopment/index.vue"), }, { path: "addProcessDevelopment", meta: { title: "新增工艺开发工具", hide: true, keepAlive: true, }, component: () => import("../views/reportLibrary/processDevelopment/add.vue"), }, { path: "editProcessDevelopment", meta: { title: "编辑工艺开发工具", hide: true, keepAlive: true, }, component: () => import("../views/reportLibrary/processDevelopment/add.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: "/chemistQa", component: Layouts, meta: { title: "化验师QA专题报告", }, children: [ { path: "projectTesting", meta: { title: "项目检测项、检验包列表", keepAlive: true, }, component: () => import("../views/chemistQa/projectTesting/index.vue"), }, { path: "add", meta: { title: "新增检测项", hide: true, keepAlive: true, }, component: () => import("../views/chemistQa/projectTesting/add.vue"), }, { path: "addDetectionReport", meta: { title: "新增报告", hide: true, keepAlive: true, }, component: () => import("../views/chemistQa/projectTesting/addDetectionReport.vue"), }, { path: "pilotAndProduction", meta: { title: "中试、生产验证试验检验分析报告", keepAlive: true, }, component: () => import("../views/chemistQa/pilotAndProduction/index.vue"), }, { path: "addPilot", meta: { title: "新增中试、生产验证试验检验分析报告", hide: true, keepAlive: true, }, component: () => import("../views/chemistQa/pilotAndProduction/add.vue"), }, { path: "rawMaterials", meta: { title: "原辅料、包材、竞品检验分析报告", keepAlive: true, }, component: () => import("../views/chemistQa/rawMaterials/index.vue"), }, { path: "addRawMaterials", meta: { title: "新增原辅料、包材、竞品检验分析报告", hide: true, keepAlive: true, }, component: () => import("../views/chemistQa/rawMaterials/add.vue"), }, { path: "productApproval", meta: { title: "产品报批及项目工作总计报告", keepAlive: true, }, component: () => import("../views/chemistQa/productApproval/index.vue"), }, { path: "addProductApproval", meta: { title: "新增产品报批及项目工作总计报告", hide: true, keepAlive: true, }, component: () => import("../views/chemistQa/productApproval/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"), }, { // 超级管理员 path: "taskList", meta: { title: "课题列表", }, component: () => import("../views/deliveryAssessment/taskList"), }, { // 工艺工程师 审批人 实验员 超级管理员 path: "restsTask", meta: { title: "实验员其他任务", }, component: () => import("../views/deliveryAssessment/restsTask"), }, { // 超级管理员 工艺工程师 审批人 path: "clinicalTrial", meta: { title: "临床试验积分列表", }, component: () => import("../views/deliveryAssessment/clinicalTrial"), }, { // 化验师 审批人 工艺工程师 path: "testingAndEvaluation", meta: { title: "检测项评定列表", }, component: () => import("../views/deliveryAssessment/testingAndEvaluation"), }, { // 化验师 实验员 path: "experimentResults", meta: { title: "实验结果评定", }, component: () => import("../views/deliveryAssessment/experimentResults"), }, { // 化验师 工艺工程师 审批人 path: "assayTaskList", meta: { title: "课题评定列表", }, component: () => import("../views/deliveryAssessment/assayTaskList"), }, { // 工艺工程师 审批人 path: "processEngineerEvaluate", meta: { title: "工艺工程师工作评定详情", }, component: () => import("../views/deliveryAssessment/processEngineerEvaluate"), }, { // 工艺工程师 path: "testerWorkerEvaluate", meta: { title: "实验员工作评定", }, component: () => import("../views/deliveryAssessment/testerWorkerEvaluate"), }, { // 工艺工程师 path: "addTesterWorkerEvaluate", name: 'AddTesterWorkerEvaluate', meta: { title: "新增实验员工作评定", hide: true, keepAlive: true, }, component: () => import("../views/deliveryAssessment/testerWorkerEvaluate/add"), }, { // 工艺工程师 path: "chemistEvaluate", meta: { title: "化验师工作评定", }, component: () => import("../views/deliveryAssessment/chemistEvaluate"), }, { // 工艺工程师 path: "addchemistEvaluate", name: 'AddchemistEvaluate', meta: { title: "新增化验师工作评定", hide: true, keepAlive: true, }, component: () => import("../views/deliveryAssessment/chemistEvaluate/add"), }, { // 工艺工程师 path: "QAList", name: 'QAList', meta: { title: "化验师QA专题报告评定", keepAlive: true, }, component: () => import("../views/deliveryAssessment/QA"), }, { // 审批人 path: "experimenterJobEvaluation", name: 'ExperimenterJobEvaluation', meta: { title: "实验员工作评定详情", keepAlive: true, }, component: () => import("../views/deliveryAssessment/experimenterJobEvaluation"), }, { // 审批人 path: "technicianJobEvaluation", name: 'TechnicianJobEvaluation', meta: { title: "化验师工作评定详情", keepAlive: true, }, component: () => import("../views/deliveryAssessment/technicianJobEvaluation"), }, { // 审批人 path: "reportEvaluation", name: 'ReportEvaluation', meta: { title: "专业报告库评定", keepAlive: true, }, component: () => import("../views/deliveryAssessment/reportEvaluation"), }, ] } ]; 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('/system'); // 已登录状态访问登录页时重定向到系统首页 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;