From 656696be4b70513e94f1341db8d1c2d3f43b3e6d Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期三, 13 七月 2022 09:18:47 +0800 Subject: [PATCH] 登录跳转首页 --- src/router/index.ts | 135 +++++++++++++++++++++----------------------- 1 files changed, 65 insertions(+), 70 deletions(-) diff --git a/src/router/index.ts b/src/router/index.ts index 112fa0f..5fe7e90 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -10,9 +10,7 @@ import { staticRoutes } from '/@/router/route'; import { initFrontEndControlRoutes } from '/@/router/frontEnd'; import { initBackEndControlRoutes } from '/@/router/backEnd'; -import {useUserInfo} from "/@/stores/userInfo"; - - +import { useUserInfo } from '/@/stores/userInfo'; // 读取 `/src/stores/themeConfig.ts` 是否开启后端控制路由配置 const storesThemeConfig = useThemeConfig(pinia); @@ -20,89 +18,86 @@ const { isRequestRoutes } = themeConfig.value; if (isRequestRoutes) staticRoutes.splice(0, 1); - export const router = createRouter({ - history: createWebHashHistory(), - routes: staticRoutes, + history: createWebHashHistory(), + routes: staticRoutes }); - export function formatFlatteningRoutes(arr: any) { - if (arr.length <= 0) return false; - for (let i = 0; i < arr.length; i++) { - if (arr[i].children) { - arr = arr.slice(0, i + 1).concat(arr[i].children, arr.slice(i + 1)); - } - } - return arr; + if (arr.length <= 0) return false; + for (let i = 0; i < arr.length; i++) { + if (arr[i].children) { + arr = arr.slice(0, i + 1).concat(arr[i].children, arr.slice(i + 1)); + } + } + return arr; } - export function formatTwoStageRoutes(arr: any) { - if (arr.length <= 0) return false; - const newArr: any = []; - const cacheList: Array<string> = []; - arr.forEach((v: any) => { - if (v.path === '/') { - newArr.push({ component: v.component, name: v.name, path: v.path, redirect: v.redirect, meta: v.meta, children: [] }); - } else { - // 判断是否是动态路由(xx/:id/:name),用于 tagsView 等中使用 - // 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I3YX6G - if (v.path.indexOf('/:') > -1) { - v.meta['isDynamic'] = true; - v.meta['isDynamicPath'] = v.path; - } - newArr[0].children.push({ ...v }); - // 存 name 值,keep-alive 中 include 使用,实现路由的缓存 - // 路径:/@/layout/routerView/parent.vue - if (newArr[0].meta.isKeepAlive && v.meta.isKeepAlive) { - cacheList.push(v.name); - const stores = useKeepALiveNames(pinia); - stores.setCacheKeepAlive(cacheList); - } - } - }); - return newArr; + if (arr.length <= 0) return false; + const newArr: any = []; + const cacheList: Array<string> = []; + arr.forEach((v: any) => { + if (v.path === '/') { + newArr.push({ component: v.component, name: v.name, path: v.path, redirect: v.redirect, meta: v.meta, children: [] }); + } else { + // 判断是否是动态路由(xx/:id/:name),用于 tagsView 等中使用 + // 修复:https://gitee.com/lyt-top/vue-next-admin/issues/I3YX6G + if (v.path.indexOf('/:') > -1) { + v.meta['isDynamic'] = true; + v.meta['isDynamicPath'] = v.path; + } + newArr[0].children.push({ ...v }); + // 存 name 值,keep-alive 中 include 使用,实现路由的缓存 + // 路径:/@/layout/routerView/parent.vue + if (newArr[0].meta.isKeepAlive && v.meta.isKeepAlive) { + cacheList.push(v.name); + const stores = useKeepALiveNames(pinia); + stores.setCacheKeepAlive(cacheList); + } + } + }); + return newArr; } -// isRequestRoutes 为 true,则开启后端控制路由,路径:`/src/stores/themeConfig.ts` -if (!isRequestRoutes) initFrontEndControlRoutes(); +// // isRequestRoutes 为 true,则开启后端控制路由,路径:`/src/stores/themeConfig.ts` +// if (!isRequestRoutes) initFrontEndControlRoutes(); // 路由加载前 router.beforeEach(async (to, from, next) => { - NProgress.configure({ showSpinner: false }); - if (to.meta.title) NProgress.start(); - const token = Session.get('token'); - if (to.path === '/login' && !token) { - next(); - NProgress.done(); - } else { - if (!token) { - next(`/login?redirect=${to.path}¶ms=${JSON.stringify(to.query ? to.query : to.params)}`); - Session.clear(); - NProgress.done(); - } else if (token && to.path === '/login') { - next('/home'); - NProgress.done(); - } else { - const storesRoutesList = useRoutesList(pinia); - const { routesList } = storeToRefs(storesRoutesList); - if (routesList.value.length === 0) { - // 后端控制路由:路由数据初始化,防止刷新时丢失 - await initBackEndControlRoutes(); - // 动态添加路由:防止非首页刷新时跳转回首页的问题 - // 确保 addRoute() 时动态添加的路由已经被完全加载上去 - next({ ...to, replace: true }); - } else { - next(); - } - } - } + NProgress.configure({ showSpinner: false }); + if (to.meta.title) NProgress.start(); + const token = Session.get('token'); + if (to.path === '/login' && !token) { + next(); + NProgress.done(); + } else { + if (!token) { + next(`/login?redirect=${to.path}¶ms=${JSON.stringify(to.query ? to.query : to.params)}`); + Session.clear(); + NProgress.done(); + } else if (token && to.path === '/login') { + next('/homeMenu'); + NProgress.done(); + } else { + const storesRoutesList = useRoutesList(pinia); + const { routesList } = storeToRefs(storesRoutesList); + if (routesList.value.length === 0) { + // 后端控制路由:路由数据初始化,防止刷新时丢失 + await initBackEndControlRoutes(); + // 动态添加路由:防止非首页刷新时跳转回首页的问题 + // 确保 addRoute() 时动态添加的路由已经被完全加载上去 + next({ ...to, replace: true }); + } else { + next(); + } + } + } }); // 路由加载后 router.afterEach(() => { - NProgress.done(); + NProgress.done(); }); // 导出路由 -- Gitblit v1.9.2