From 7781b565db049b6c4150113abbddf46e798c900d Mon Sep 17 00:00:00 2001
From: 董国庆 <364620639@qq.com>
Date: 星期四, 19 六月 2025 18:46:55 +0800
Subject: [PATCH] 修改bug,加权限

---
 laboratory/src/router/index.js |   71 +++++++++++++++++++++++++++++++----
 1 files changed, 63 insertions(+), 8 deletions(-)

diff --git a/laboratory/src/router/index.js b/laboratory/src/router/index.js
index f4d206b..63a437c 100644
--- a/laboratory/src/router/index.js
+++ b/laboratory/src/router/index.js
@@ -41,6 +41,7 @@
         meta: {
             title: "中台",
             middleground: true,
+            privilege:'middleground'
             // hide: true,
         },
         component: () => import("../views/middleground"),
@@ -49,6 +50,8 @@
         path: "/system",
         meta: {
             title: "系统管理",
+             privilege:'system'
+            
         },
         component: Layouts,
         children: [{
@@ -56,6 +59,7 @@
                 name: "User",
                 meta: {
                     title: "人员管理",
+                     privilege:'system_user'
                 },
                 component: () => import("../views/system/user"),
             },
@@ -64,6 +68,7 @@
                 name: "Role",
                 meta: {
                     title: "角色管理",
+                     privilege:'system_role'
                 },
                 component: () => import("../views/system/role"),
             },
@@ -98,6 +103,7 @@
                 path: "operation-log",
                 meta: {
                     title: "操作日志",
+                     privilege:'system_operation-log'
                 },
                 component: () => import("../views/system/operation-log"),
             },
@@ -107,6 +113,7 @@
         path: "/projectList",
         meta: {
             title: "项目组管理",
+             privilege:'projectList'
         },
         component: Layouts,
         children: [{
@@ -114,6 +121,7 @@
                 name: "ProjectList",
                 meta: {
                     title: "项目组管理",
+                     privilege:'projectList_list'
                 },
                 component: () => import("../views/projectList"),
             },
@@ -152,12 +160,14 @@
         component: Layouts,
         meta: {
             title: "实验室数据管理",
+              privilege:'dataManagement'
         },
         children: [{
                 path: "approvalPlan",
                 meta: {
                     title: "项目课题方案审批",
                     keepAlive: true,
+                      privilege:'dataManagement_approvalPlan'
                 },
                 component: () => import("../views/dataManagement/approvalPlan/list.vue"),
             },
@@ -176,6 +186,7 @@
                 meta: {
                     title: "实验调度管理",
                     keepAlive: true,
+                      privilege:'dataManagement_dispatching'
                 },
                 component: () => import("../views/dataManagement/dispatching/list.vue"),
             },
@@ -193,6 +204,7 @@
                 name: "ConfirmationSheet",
                 meta: {
                     title: "检验方法确认单",
+                      privilege:'dataManagement_confirmation-sheet'
                 },
                 component: () => import("../views/dataManagement/confirmation-sheet"),
             },
@@ -210,6 +222,7 @@
                 name: "schemeManagement",
                 meta: {
                     title: "实验方案管理",
+                      privilege:'dataManagement_scheme-management'
                 },
                 component: () => import("../views/dataManagement/schemeManagement/list.vue"),
             },
@@ -234,6 +247,7 @@
                 path: "/sampleManage",
                 meta: {
                     title: "样品管理",
+                      privilege:'sampleManage'
                     // keepAlive: true,
                 },
                 component: Parent,
@@ -242,6 +256,7 @@
                         meta: {
                             title: "样品管理",
                             keepAlive: true,
+                              privilege:'sampleManage_manage'
                         },
                         component: () => import("../views/dataManagement/sampleManage/list.vue"),
                     },
@@ -259,6 +274,7 @@
                         meta: {
                             title: "取样操作记录列表",
                             keepAlive: true,
+                              privilege:'sampleManage_record'
                         },
                         component: () => import("../views/dataManagement/sampleRecordList/list.vue"),
                     },
@@ -276,6 +292,7 @@
                         meta: {
                             title: "送样单列表",
                             keepAlive: true,
+                              privilege:'sampleManage_submissionList'
                         },
                         component: () => import("../views/dataManagement/sampleSubmissionList/list.vue"),
                     },
@@ -297,6 +314,7 @@
                 meta: {
                     title: "取样送样记录",
                     keepAlive: true,
+                     privilege:'dataManagement_deliveryRecord'
                 },
                 component: () => import("../views/dataManagement/SampleDeliveryRecord/list.vue"),
             },
@@ -315,6 +333,7 @@
                 meta: {
                     title: "原始检验记录",
                     keepAlive: true,
+                     privilege:'dataManagement_originalRecordTest'
                 },
                 component: () => import("../views/dataManagement/originalRecordTest/list.vue"),
             },
@@ -333,6 +352,7 @@
                 meta: {
                     title: "检验报告管理",
                     keepAlive: true,
+                     privilege:'dataManagement_inspectionReport'
                 },
                 component: () => import("../views/dataManagement/inspectionReport/list.vue"),
             },
@@ -351,6 +371,7 @@
                 meta: {
                     title: "实验结果汇报",
                     keepAlive: true,
+                     privilege:'dataManagement_testResultReport'
                 },
                 component: () => import("../views/dataManagement/testResultReport/list.vue"),
             },
@@ -369,6 +390,7 @@
                 meta: {
                     title: "实验中止审批",
                     keepAlive: true,
+                     privilege:'dataManagement_suspendExperiment'
                 },
                 component: () => import("../views/dataManagement/suspendExperiment/list.vue"),
             },
@@ -379,12 +401,14 @@
         component: Layouts,
         meta: {
             title: "专业报告库审批",
+              privilege:'reportLibrary'
         },
         children: [{
                 path: "feasibilityStudy",
                 meta: {
                     title: "可研报告库",
                     keepAlive: true,
+                      privilege:'reportLibrary_feasibilityStudy'
                 },
                 component: () => import("../views/reportLibrary/feasibilityStudy/index.vue"),
             },
@@ -406,12 +430,12 @@
                 },
                 component: () => import("../views/reportLibrary/feasibilityStudy/add.vue"),
             },
-
             {
                 path: "feasibilityReport",
                 meta: {
                     title: "可行报告库",
                     keepAlive: true,
+                      privilege:'reportLibrary_feasibilityReport'
                 },
                 component: () => import("../views/reportLibrary/feasibilityReport/index.vue"),
             },
@@ -440,6 +464,7 @@
                 meta: {
                     title: "工艺开发工具",
                     keepAlive: true,
+                      privilege:'reportLibrary_processDevelopment'
                 },
                 component: () => import("../views/reportLibrary/processDevelopment/index.vue"),
             },
@@ -462,14 +487,12 @@
                 },
                 component: () => import("../views/reportLibrary/processDevelopment/add.vue"),
             },
-
-
-
             {
                 path: "verificationRelease",
                 meta: {
                     title: "验证与发布",
                     keepAlive: true,
+                      privilege:'reportLibrary_verificationRelease'
                 },
                 component: () => import("../views/reportLibrary/verificationRelease/index.vue"),
             },
@@ -496,6 +519,7 @@
                 meta: {
                     title: "立项报告库",
                     keepAlive: true,
+                      privilege:'reportLibrary_projectProposalLibrary'
                 },
                 component: () => import("../views/reportLibrary/projectProposalLibrary/index.vue"),
             },
@@ -524,12 +548,14 @@
         component: Layouts,
         meta: {
             title: "化验师QA专题报告",
+             privilege:'chemistQa'
         },
         children: [{
                 path: "projectTesting",
                 meta: {
                     title: "项目检测项、检验包列表",
                     keepAlive: true,
+                     privilege:'chemistQa_projectTesting'
                 },
                 component: () => import("../views/chemistQa/projectTesting/index.vue"),
             },
@@ -556,6 +582,7 @@
                 meta: {
                     title: "中试、生产验证试验检验分析报告",
                     keepAlive: true,
+                     privilege:'chemistQa_pilotAndProduction'
                 },
                 component: () => import("../views/chemistQa/pilotAndProduction/index.vue"),
             },
@@ -573,6 +600,7 @@
                 meta: {
                     title: "原辅料、包材、竞品检验分析报告",
                     keepAlive: true,
+                     privilege:'chemistQa_rawMaterials'
                 },
                 component: () => import("../views/chemistQa/rawMaterials/index.vue"),
             },
@@ -590,6 +618,7 @@
                 meta: {
                     title: "产品报批及项目工作总计报告",
                     keepAlive: true,
+                     privilege:'chemistQa_productApproval'
                 },
                 component: () => import("../views/chemistQa/productApproval/index.vue"),
             },
@@ -609,11 +638,13 @@
         component: Layouts,
         meta: {
             title: "工作交付评定",
+             privilege:'deliveryAssessment'
         },
         children: [{
                 path: "projectTeamIntegral",
                 meta: {
                     title: "项目组总积分",
+                     privilege:'deliveryAssessment_projectTeamIntegral'
                 },
                 component: () => import("../views/deliveryAssessment/projectTeamIntegral"),
             },
@@ -630,6 +661,7 @@
                 path: "taskList",
                 meta: {
                     title: "课题列表",
+                     privilege:'deliveryAssessment_taskList'
                 },
                 component: () => import("../views/deliveryAssessment/taskList"),
             },
@@ -638,6 +670,7 @@
                 path: "restsTask",
                 meta: {
                     title: "实验员其他任务",
+                     privilege:'deliveryAssessment_restsTask'
                 },
                 component: () => import("../views/deliveryAssessment/restsTask"),
             },
@@ -646,6 +679,7 @@
                 path: "clinicalTrial",
                 meta: {
                     title: "临床试验积分列表",
+                     privilege:'deliveryAssessment_clinicalTrial'
                 },
                 component: () => import("../views/deliveryAssessment/clinicalTrial"),
             },
@@ -654,6 +688,7 @@
                 path: "testingAndEvaluation",
                 meta: {
                     title: "检测项评定列表",
+                     privilege:'deliveryAssessment_testingAndEvaluation'
                 },
                 component: () => import("../views/deliveryAssessment/testingAndEvaluation"),
             },
@@ -662,6 +697,7 @@
                 path: "experimentResults",
                 meta: {
                     title: "实验结果评定",
+                     privilege:'deliveryAssessment_experimentResults'
                 },
                 component: () => import("../views/deliveryAssessment/experimentResults"),
             },
@@ -670,6 +706,7 @@
                 path: "assayTaskList",
                 meta: {
                     title: "课题评定列表",
+                     privilege:'deliveryAssessment_assayTaskList'
                 },
                 component: () => import("../views/deliveryAssessment/assayTaskList"),
             },
@@ -678,6 +715,7 @@
                 path: "processEngineerEvaluate",
                 meta: {
                     title: "工艺工程师工作评定详情",
+                     privilege:'deliveryAssessment_processEngineerEvaluate'
                 },
                 component: () => import("../views/deliveryAssessment/processEngineerEvaluate"),
             },
@@ -686,6 +724,7 @@
                 path: "testerWorkerEvaluate",
                 meta: {
                     title: "实验员工作评定",
+                     privilege:'deliveryAssessment_testerWorkerEvaluate'
                 },
                 component: () => import("../views/deliveryAssessment/testerWorkerEvaluate"),
             },
@@ -705,6 +744,7 @@
                 path: "chemistEvaluate",
                 meta: {
                     title: "化验师工作评定",
+                     privilege:'deliveryAssessment_chemistEvaluate'
                 },
                 component: () => import("../views/deliveryAssessment/chemistEvaluate"),
             },
@@ -725,6 +765,7 @@
                 name: 'QAList',
                 meta: {
                     title: "化验师QA专题报告评定",
+                     privilege:'deliveryAssessment_QAList',
                     keepAlive: true,
                 },
                 component: () => import("../views/deliveryAssessment/QA"),
@@ -735,6 +776,7 @@
                 name: 'ExperimenterJobEvaluation',
                 meta: {
                     title: "实验员工作评定详情",
+                     privilege:'deliveryAssessment_experimenterJobEvaluation',
                     keepAlive: true,
                 },
                 component: () => import("../views/deliveryAssessment/experimenterJobEvaluation"),
@@ -746,6 +788,7 @@
                 meta: {
                     title: "化验师工作评定详情",
                     keepAlive: true,
+                     privilege:'deliveryAssessment_technicianJobEvaluation'
                 },
                 component: () => import("../views/deliveryAssessment/technicianJobEvaluation"),
             },
@@ -756,6 +799,7 @@
                 meta: {
                     title: "专业报告库评定",
                     keepAlive: true,
+                     privilege:'deliveryAssessment_reportEvaluation'
                 },
                 component: () => import("../views/deliveryAssessment/reportEvaluation"),
             },
@@ -792,10 +836,21 @@
         return;
     }
 
-    // 判断是否拥有要跳转菜单权限
-    let menus = store.state.menus
-    if (to.meta.hasOwnProperty('privilege') && !menus.includes(to.meta.privilege)) {
-        return
+    // 权限判断(使用flatMenus)
+    let flatMenus = store.state.flatMenus
+    if (!flatMenus || flatMenus.length === 0) {
+        // 刷新后从sessionStorage恢复
+        const menus = JSON.parse(sessionStorage.getItem('menus') || '[]')
+        const flat = JSON.parse(sessionStorage.getItem('flatMenus') || '[]')
+        store.commit('SET_MENUS', menus)
+        store.commit('SET_FLAT_MENUS', flat)
+        flatMenus = flat
+    }
+    if (to.meta && to.meta.privilege) {
+        if (!flatMenus.includes(to.meta.privilege)) {
+            next('/403') // 无权限跳转403
+            return
+        }
     }
 
     // 设置标签列表

--
Gitblit v1.7.1