From 5a9eed686fe1bf10a095e6b56fbef4188832fe00 Mon Sep 17 00:00:00 2001
From: 13404089107 <puwei@sinata.cn>
Date: 星期二, 01 四月 2025 11:35:58 +0800
Subject: [PATCH] Merge branch 'main' of http://120.76.84.145:10101/gitblit/r/H5/leshan-laboratory

---
 src/router/index.js |  146 +++++++++++++++++++++++++++++++++++-------------
 1 files changed, 106 insertions(+), 40 deletions(-)

diff --git a/src/router/index.js b/src/router/index.js
index c4ba5c2..8c706f4 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -13,46 +13,86 @@
 /**
  *  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: "/",
         component: Layouts,
         children: [
             {
-                path: "/login",
-                meta: {
-                    title: "登录",
-                    oneself: true,
-                    hide: true,
-                    privilege: 'login'
-                },
-                component: () => import("../views/login"),
+                path: "",
+                redirect: "/projectList/list"
             },
-        ],
-    },{
-        path: "",
-        redirect: "dispatching",
-        component: Layouts,
-        children: [
             {
-                path: "/dispatching",
+                path: "/projectList",
                 meta: {
-                    title: "实验调度管理",
-                    oneself: true,
-                    hide: true,
-                    privilege: 'dispatching'
+                    title: "项目组管理",
                 },
-                component: () => import("../views/dispatching/list.vue"),
+                component: Parent,
+                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: Parent,
+                meta: {
+                    title: "实验室数据管理",
+                },
+                children: [
+                    {
+                        path: "/approvalPlan",
+                        meta: {
+                            title: "项目课题方案审批",
+                            keepAlive: true,
+                        },
+                        component: () => import("../views/dataManagement/approvalPlan/list.vue"),
+                    },
+                    {
+                        path: "/dispatching",
+                        meta: {
+                            title: "实验调度管理",
+                            keepAlive: true,
+                        },
+                        component: () => import("../views/dataManagement/dispatching/list.vue"),
+                    },
+                ],
+            }
         ],
     },
 ];
@@ -66,27 +106,53 @@
 // 前置路由拦截器
 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
+    document.title = to.meta.title || '实验室流程';
 
-        // console.log(store.state.menus);
-        // console.log(to.meta);
-        // console.log(to.meta.hasOwnProperty('privilege'));
-        // console.log(!menus.includes(to.meta.privilege));
-        
-        if (to.meta.hasOwnProperty('privilege') && !menus.includes(to.meta.privilege)) {
-            return
+    // 登录验证
+    // 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;

--
Gitblit v1.7.1