From d8b570430066fae42d6884671cef541fc820de1c Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期五, 15 十一月 2024 14:42:44 +0800
Subject: [PATCH] 动态路由

---
 src/permission.js |   74 ++++++++++++++++++++++--------------
 1 files changed, 45 insertions(+), 29 deletions(-)

diff --git a/src/permission.js b/src/permission.js
index 03ed486..f8a49a3 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -18,42 +18,58 @@
   if (getToken()) {
     to.meta.title && useSettingsStore().setTitle(to.meta.title)
     /* has token*/
-    // if (to.path === '/homePage') {
-    //   next({ path: '/' })
-    //   NProgress.done()
-    // } else {
-    //   if (useUserStore().roles.length === 0) {
-    //     isRelogin.show = true
-    //     // 判断当前用户是否已拉取完user_info信息
-    //     useUserStore().getInfo().then(() => {
-    //       isRelogin.show = false
-    //       usePermissionStore().generateRoutes().then(accessRoutes => {
-    //         // 根据roles权限生成可访问的路由表
-    //         accessRoutes.forEach(route => {
-    //           if (!isHttp(route.path)) {
-    //             router.addRoute(route) // 动态添加可访问路由表
-    //           }
-    //         })
-    //         next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
-    //       })
-    //     }).catch(err => {
-    //       useUserStore().logOut().then(() => {
-    //         ElMessage.error(err)
-    //         next({ path: '/' })
-    //       })
-    //     })
-    //   } else {
+    if (to.path === '/homePage') {
+      next({ path: '/' })
+      NProgress.done()
+    } else if (whiteList.indexOf(to.path) !== -1) {
+      next()
+    } else {
+      if (useUserStore().roles.length === 0) {
+        isRelogin.show = true
+        // 判断当前用户是否已拉取完user_info信息
+        useUserStore().getInfo().then(() => {
+          isRelogin.show = false
+          usePermissionStore().generateRoutes().then(accessRoutes => {
+            // 根据roles权限生成可访问的路由表
+            accessRoutes.forEach(route => {
+              if (!isHttp(route.path)) {
+                router.addRoute(route) // 动态添加可访问路由表
+              }
+            })
+            console.log(to.fullPath,"to.fullPath")
+            if (to.fullPath == '/index') {
+              // 当登录之后,直接通过ip地址和端口号访问时,跳转到第一个路由页面indexPage
+              let pathIndex = ''
+              //通过权限返回菜单去避免 如有首页权限 出现//index 情况
+              if (accessRoutes[0].path == '/') {
+                pathIndex = accessRoutes[0].path + accessRoutes[0].children[0].path
+              } else{
+                pathIndex = accessRoutes[0].path + '/' + accessRoutes[0].children[0].path
+              }
+              next({ path: pathIndex, replace: true }) // hack方法 确保addRoutes已完成
+            } else {
+              next({ ...to, replace: true }) // hack方法 确保addRoutes已完成
+            }
+            // next({ ...to, replace: true })
+            // hack方法 确保addRoutes已完成
+          })
+        }).catch(err => {
+          useUserStore().logOut().then(() => {
+            ElMessage.error(err)
+            next({ path: '/' })
+          })
+        })
+      } else {
         next()
-    //   }
-    // }
+      }
+    }
   } else {
     // 没有token
     if (whiteList.indexOf(to.path) !== -1) {
       // 在免登录白名单,直接进入
       next()
     } else {
-      // next(`/homePage?redirect=${to.fullPath}`) // 否则全部重定向到登录页
-      next('/homePage')
+      next(`/homePage?redirect=${to.fullPath}`) // 否则全部重定向到登录页
       NProgress.done()
     }
   }

--
Gitblit v1.9.2