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