| | |
| | | } |
| | | */ |
| | | |
| | | const routes = [{ |
| | | path: "/", |
| | | redirect: "/projectList/list", |
| | | }, |
| | | { |
| | | path: "/login", |
| | | meta: { |
| | | title: "登录", |
| | | oneself: true, |
| | | hide: true, |
| | | const routes = [ |
| | | { |
| | | path: "/", |
| | | redirect: "/projectList/list", |
| | | }, |
| | | component: () => import("../views/login"), |
| | | }, |
| | | { |
| | | path: "/projectList", |
| | | meta: { |
| | | title: "项目组管理", |
| | | { |
| | | path: "/login", |
| | | meta: { |
| | | title: "登录", |
| | | oneself: true, |
| | | hide: true, |
| | | }, |
| | | component: () => import("../views/login"), |
| | | }, |
| | | component: Layouts, |
| | | children: [{ |
| | | path: "list", |
| | | name: "ProjectList", |
| | | { |
| | | path: "/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: Layouts, |
| | | children: [ |
| | | { |
| | | path: "list", |
| | | name: "ProjectList", |
| | | meta: { |
| | | title: "项目组管理", |
| | | }, |
| | | component: () => import("../views/projectList"), |
| | | }, |
| | | 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: "strain-flow-chart", |
| | | name: "StrainFlowChart", |
| | | meta: { |
| | | title: "菌种传代产生流程图", |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/strain-library/strain-flow-chart"), |
| | | }, |
| | | { |
| | | path: "addProject", |
| | | name: "AddProject", |
| | | meta: { |
| | | title: "新增项目组", |
| | | hide: true, |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/projectList/addProject"), |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | path: 'pedigree-vhart', |
| | | name: 'PedigreeChart', |
| | | path: "/system", |
| | | meta: { |
| | | title: "菌种传代生产谱系图", |
| | | title: "系统管理", |
| | | }, |
| | | component: () => import("../views/pedigree-chart"), |
| | | } |
| | | ] |
| | | }, |
| | | |
| | | { |
| | | path: "/dataManagement", |
| | | component: Layouts, |
| | | meta: { |
| | | title: "实验室数据管理", |
| | | }, |
| | | children: [{ |
| | | path: "approvalPlan", |
| | | meta: { |
| | | title: "项目课题方案审批", |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/dataManagement/approvalPlan/list.vue"), |
| | | 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: "addPlan", |
| | | name: "addPlan", |
| | | path: "/strain", |
| | | component: Layouts, |
| | | meta: { |
| | | title: "新增项目课题方案", |
| | | hide: true, |
| | | keepAlive: true, |
| | | title: "菌种库", |
| | | }, |
| | | component: () => import("../views/dataManagement/approvalPlan/addPlan"), |
| | | }, |
| | | { |
| | | path: "dispatching", |
| | | 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: "新增菌种传代生产谱系图", |
| | | }, |
| | | component: () => import("../views/pedigree-chart/add"), |
| | | }, |
| | | { |
| | | path: 'add-pedigree', |
| | | name: 'AddPedigree', |
| | | meta: { |
| | | title: "新增菌种传代生产谱系图", |
| | | }, |
| | | component: () => import("../views/pedigree-chart/add"), |
| | | } |
| | | ] |
| | | }, { |
| | | path: "/strainReportLibrary", |
| | | component: Layouts, |
| | | meta: { |
| | | title: "实验调度管理", |
| | | keepAlive: true, |
| | | title: "菌种报告库", |
| | | }, |
| | | 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: Parent, |
| | | children: [{ |
| | | path: "manage", |
| | | path: "reportLibraryOne", |
| | | meta: { |
| | | title: "样品管理", |
| | | title: "报告库一", |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/dataManagement/sampleManage/list.vue"), |
| | | component: () => import("../views/strainReportLibrary/reportLibraryOne/index.vue"), |
| | | }, |
| | | { |
| | | path: "addSample", |
| | | name: "addPaddSamplelan", |
| | | path: "add", |
| | | meta: { |
| | | title: "新增样品", |
| | | title: "新增报告", |
| | | hide: true, |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/dataManagement/sampleManage/addSample"), |
| | | }, { |
| | | path: "record", |
| | | meta: { |
| | | title: "取样操作记录列表", |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/dataManagement/sampleRecordList/list.vue"), |
| | | component: () => import("../views/strainReportLibrary/reportLibraryOne/add.vue"), |
| | | }, |
| | | { |
| | | path: "changeRecord", |
| | | name: "changeRecord", |
| | | path: "reportLibraryTwo", |
| | | meta: { |
| | | title: "填写取样操作记录", |
| | | title: "报告库二", |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/strainReportLibrary/reportLibraryOneTWO/index.vue"), |
| | | }, |
| | | { |
| | | path: "addTwo", |
| | | 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"), |
| | | component: () => import("../views/strainReportLibrary/reportLibraryOneTWO/add.vue"), |
| | | }, |
| | | { |
| | | path: "submission", |
| | | name: "submission", |
| | | path: "reportLibraryThree", |
| | | meta: { |
| | | title: "送样单详情", |
| | | title: "报告库三", |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/strainReportLibrary/reportLibraryOneThree/index.vue"), |
| | | }, |
| | | { |
| | | path: "addThree", |
| | | meta: { |
| | | title: "新增报告", |
| | | hide: true, |
| | | keepAlive: true, |
| | | }, |
| | | component: () => import("../views/dataManagement/sampleSubmissionList/submission"), |
| | | 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"), |
| | | }, |
| | | ] |
| | | |
| | | }, |
| | | { |
| | | 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: "/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: "/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({ |
| | |
| | | document.title = to.meta.title || '实验室流程'; |
| | | |
| | | // 登录验证 |
| | | if (to.path === "/login") { |
| | | sessionStorage.clear(); |
| | | next() |
| | | } else if (!sessionStorage.getItem('token')) { |
| | | next('/login') |
| | | } else { |
| | | // 判断是否拥有要跳转菜单权限 |
| | | let menus = store.state.menus |
| | | if (to.meta.hasOwnProperty('privilege') && !menus.includes(to.meta.privilege)) { |
| | | return |
| | | } |
| | | // if (to.path === "/login") { |
| | | // sessionStorage.removeItem('userInfo') |
| | | // next() |
| | | // } else if (!sessionStorage.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(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 |
| | | } |
| | | tagList.push(tagInfo) |
| | | sessionStorage.setItem('tagList', JSON.stringify(tagList)) |
| | | store.commit('SET_TAGLIST', tagList) |
| | | // 设置标签列表 |
| | | 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 |
| | | } |
| | | 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() |
| | | } |
| | | |
| | | // 判断是否需要缓存 |
| | | 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; |
| | | export default router; |
New file |
| | |
| | | <template> |
| | | <el-form |
| | | :model="form" |
| | | :rules="rules" |
| | | ref="pedigreeForm" |
| | | label-position="top" |
| | | class="strain-form" |
| | | > |
| | | <div class="card"> |
| | | <div class="form-items-row"> |
| | | <el-form-item label="菌种源" prop="strainSource" required> |
| | | <div class="flex-row"> |
| | | <div class="input-wrapper"> |
| | | <el-input |
| | | v-model="form.strainSource" |
| | | placeholder="请输入" |
| | | class="fixed-width-input" |
| | | ></el-input> |
| | | </div> |
| | | <span class="form-text">代—</span> |
| | | <div class="input-wrapper"> |
| | | <el-input |
| | | v-model="form.generation" |
| | | placeholder="请输入" |
| | | class="fixed-width-input" |
| | | ></el-input> |
| | | </div> |
| | | <span class="form-text">细胞库</span> |
| | | </div> |
| | | </el-form-item> |
| | | <el-form-item label="传代菌种编号" prop="strainNo" required> |
| | | <el-input |
| | | v-model="form.strainNo" |
| | | placeholder="请输入" |
| | | class="fixed-width-input" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="传代菌种名称" prop="strainName" required> |
| | | <el-input |
| | | v-model="form.strainName" |
| | | placeholder="请输入" |
| | | class="fixed-width-input" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </div> |
| | | </div> |
| | | <div class="chart"> |
| | | <div class="header"> |
| | | <div class="title">菌种传代生产谱系图</div> |
| | | <div class="option-btn"> |
| | | <el-button type="primary" class="el-icon-plus"> 新增</el-button> |
| | | <el-button type="primary">设置传代计划数</el-button> |
| | | <el-button type="primary">详情</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="end-btn"> |
| | | <el-button type="primary" @click="handleSubmit">提交</el-button> |
| | | <el-button @click="handleDraft">存草稿</el-button> |
| | | <el-button @click="handleCancel">取消</el-button> |
| | | </div> |
| | | <!-- 签字确认组件 --> |
| | | <SignatureCanvas |
| | | :visible.sync="signatureVisible" |
| | | @confirm="handleSignatureConfirm" |
| | | /> |
| | | </el-form> |
| | | </template> |
| | | |
| | | <script> |
| | | import SignatureCanvas from "@/components/SignatureCanvas.vue"; |
| | | |
| | | export default { |
| | | name: "AddPedigree", |
| | | components: { |
| | | SignatureCanvas, |
| | | }, |
| | | data() { |
| | | return { |
| | | signatureVisible: false, |
| | | form: { |
| | | strainSource: "", |
| | | generation: "", |
| | | cellBank: "", |
| | | strainNo: "", |
| | | strainName: "", |
| | | remarks: "", |
| | | }, |
| | | rules: { |
| | | strainSource: [ |
| | | { required: true, message: "请输入菌种源", trigger: "blur" }, |
| | | ], |
| | | strainNo: [ |
| | | { required: true, message: "请输入传代菌种编号", trigger: "blur" }, |
| | | ], |
| | | strainName: [ |
| | | { required: true, message: "请输入传代菌种名称", trigger: "blur" }, |
| | | ], |
| | | }, |
| | | }; |
| | | }, |
| | | methods: { |
| | | handleSubmit() { |
| | | this.$refs.pedigreeForm.validate((valid) => { |
| | | if (valid) { |
| | | this.signatureVisible = true; |
| | | } |
| | | }); |
| | | }, |
| | | handleDraft() { |
| | | // 实现存草稿逻辑 |
| | | console.log("save draft", this.form); |
| | | }, |
| | | handleCancel() { |
| | | this.$router.back(); |
| | | }, |
| | | handleSignatureConfirm(signatureImage) { |
| | | this.signatureVisible = false; |
| | | // 处理提交逻辑 |
| | | console.log("submit form with signature:", this.form, signatureImage); |
| | | this.$router.back(); |
| | | }, |
| | | }, |
| | | }; |
| | | </script> |
| | | |
| | | <style scoped lang="less"> |
| | | .card { |
| | | min-height: 145px; |
| | | background: rgba(255, 255, 255, 0.8); |
| | | box-shadow: 0px 10px 19px 0px rgba(0, 0, 0, 0.06); |
| | | border-radius: 16px; |
| | | border: 4px solid #ffffff; |
| | | padding: 0 20px; |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .chart { |
| | | padding: 20px 38px; |
| | | background: rgba(255,255,255,0.8); |
| | | box-shadow: 0px 10px 19px 0px rgba(0,0,0,0.06); |
| | | border-radius: 16px; |
| | | border: 4px solid #FFFFFF; |
| | | margin-top: 30px; |
| | | .header { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | .title { |
| | | font-size: 18px; |
| | | } |
| | | .option-btn { |
| | | display: flex; |
| | | gap: 10px; |
| | | .el-button { |
| | | margin-left: 0; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .form-items-row { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | width: 100%; |
| | | align-items: center; |
| | | |
| | | @media (min-width: 1200px) { |
| | | flex-direction: row; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | @media (max-width: 1199px) { |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | } |
| | | } |
| | | |
| | | .flex-row { |
| | | display: flex; |
| | | align-items: center; |
| | | flex-wrap: wrap; |
| | | |
| | | @media (max-width: 768px) { |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .strain-form { |
| | | width: 100%; |
| | | |
| | | :deep(.el-form-item) { |
| | | margin-bottom: 15px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-start; |
| | | |
| | | @media (min-width: 1200px) { |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | @media (max-width: 1199px) { |
| | | width: 100%; |
| | | margin-right: 0; |
| | | } |
| | | |
| | | .el-form-item__label { |
| | | padding: 0 0 8px; |
| | | line-height: 1.2; |
| | | text-align: left; |
| | | } |
| | | |
| | | .el-form-item__content { |
| | | width: 100%; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .input-wrapper { |
| | | @media (min-width: 769px) { |
| | | width: 290px; |
| | | min-width: 290px; |
| | | } |
| | | |
| | | @media (max-width: 768px) { |
| | | width: 100%; |
| | | } |
| | | } |
| | | |
| | | .fixed-width-input { |
| | | width: 100%; |
| | | |
| | | @media (min-width: 769px) { |
| | | width: 290px !important; |
| | | min-width: 290px !important; |
| | | } |
| | | } |
| | | |
| | | .form-text { |
| | | margin: 0 8px; |
| | | white-space: nowrap; |
| | | |
| | | @media (max-width: 768px) { |
| | | margin: 8px 0; |
| | | } |
| | | } |
| | | |
| | | .end-btn { |
| | | margin-top: 20px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | gap: 10px; |
| | | } |
| | | </style> |
| | |
| | | status: "", |
| | | }; |
| | | }, |
| | | handleNewStrain() { |
| | | this.$router.push({ |
| | | path: "/strain/add-pedigree", |
| | | }); |
| | | }, |
| | | handleSearch() { |
| | | // 实现查询逻辑 |
| | | console.log("查询条件:", this.form); |
| | |
| | | const apiConfig = { |
| | | // 开发环境 |
| | | development: { |
| | | baseURL: "", |
| | | baseURL: "http://192.168.110.34:8081/", |
| | | imgUrl: "", |
| | | }, |
| | | // 生产环境 |
| | |
| | | const res = response; |
| | | if (res.data.code == 200) { |
| | | if (!res.data.data) { |
| | | return Promise.resolve({}) |
| | | return Promise.resolve({...res.data}) |
| | | } |
| | | return Promise.resolve(res.data.data) |
| | | } else { |
| | |
| | | </el-form-item> |
| | | <el-form-item label=""> |
| | | <el-button type="default" @click="resetForm">重置</el-button> |
| | | <el-button type="primary" @click="handleSearch">查询</el-button> |
| | | <el-button type="primary" @click="handleSearch" style="margin-left: 20px;">查询</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </template> |
| | |
| | | |
| | | <script> |
| | | import ApprovalDialog from './components/approvalDialog.vue' |
| | | import { getProposalList } from './service' |
| | | |
| | | export default { |
| | | name: "ProjectList", |
| | |
| | | createTime: [], |
| | | approver: "", |
| | | status: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | }, |
| | | tableData: [], |
| | | total: 0, |
| | |
| | | createTime: [], |
| | | approver: "", |
| | | status: "", |
| | | pageNum: 1, |
| | | pageSize: 10, |
| | | }; |
| | | }, |
| | | handleSearch() { |
| | |
| | | getTableData() { |
| | | // 根据currentType请求不同的数据 |
| | | if (this.currentType === 'list') { |
| | | getProposalList(this.form).then(res => { |
| | | console.log(res,'1111111111111111111111111') |
| | | }) |
| | | this.tableData = this.mockListData; |
| | | this.total = this.mockListData.length; |
| | | } else { |
New file |
| | |
| | | import axios from '@/utils/request'; |
| | | |
| | | // 添加项目课题方案 |
| | | export function addProposal(data) { |
| | | return axios.post('/api/t-project-proposal/add', { ...data }) |
| | | } |
| | | //修改方案 |
| | | export function updateProposal(data) { |
| | | return axios.post('/api/t-project-proposal/update', { ...data }) |
| | | } |
| | | //查询方案列表 |
| | | export function getProposalList(data) { |
| | | return axios.post('/api/t-project-proposal/pageList', { ...data }) |
| | | } |
| | | //上下架 |
| | | export function upAndDown(data) { |
| | | return axios.post('/api/t-project-proposal/upAndDown', { ...data }) |
| | | } |
| | | //审批 |
| | | export function audit(data) { |
| | | return axios.post('/api/t-project-proposal/audit', { ...data }) |
| | | } |
| | | |
| | | //删除 |
| | | export function deleteById(data) { |
| | | return axios.delete('/open/t-project-proposal/deleteById', { ...data }) |
| | | } |
| | | |
| | | //批量删除 |
| | | export function deleteByIds(data) { |
| | | return axios.delete('/open/t-project-proposal/deleteByIds', { ...data }) |
| | | } |
| | | //根据id查询方案详情 |
| | | export function getDetailById(data) { |
| | | return axios.get('/open/t-project-proposal/getDetailById', { ...data }) |
| | | } |
| | |
| | | <div class="login-form"> |
| | | <div class="form-item flex"> |
| | | <img class="form-item-icon" :src="require('../../assets/login/account@2x.png')" alt=""> |
| | | <el-input v-model="loginForm.account" placeholder="请输入账号"></el-input> |
| | | <el-input v-model="loginForm.username" placeholder="请输入账号"></el-input> |
| | | </div> |
| | | |
| | | <div class="form-item flex mt-40"> |
| | |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import { login } from './service' |
| | | export default { |
| | | name: 'Login', |
| | | data() { |
| | |
| | | windowWidth: window.innerWidth, |
| | | |
| | | loginForm: { |
| | | account: '', |
| | | username: '', |
| | | password: '' |
| | | }, |
| | | viewWidth: '', |
| | |
| | | console.log(this.viewWidth) |
| | | }, |
| | | login() { |
| | | this.$router.push('/') |
| | | console.log(this.loginForm) |
| | | login(this.loginForm).then(res => { |
| | | console.log(res,'1111111111111111111111111') |
| | | if (res.code === 200) { |
| | | sessionStorage.setItem('token', res.token) |
| | | sessionStorage.setItem('userInfo', JSON.stringify(res.userInfo)) |
| | | this.$router.push('/') |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |