fix(projects): 修复权限切换路由数据未更新的问题

This commit is contained in:
Soybean
2022-05-09 23:51:19 +08:00
parent 3590b65e22
commit 60f912508b
9 changed files with 159 additions and 73 deletions

View File

@ -1,4 +1,4 @@
import type { Router, RouteLocationNormalized, NavigationGuardNext } from 'vue-router';
import type { RouteLocationNormalized, NavigationGuardNext } from 'vue-router';
import { routeName } from '@/router';
import { useRouteStore } from '@/store';
import { getToken } from '@/utils';
@ -9,8 +9,7 @@ import { getToken } from '@/utils';
export async function createDynamicRouteGuard(
to: RouteLocationNormalized,
_from: RouteLocationNormalized,
next: NavigationGuardNext,
router: Router
next: NavigationGuardNext
) {
const route = useRouteStore();
const isLogin = Boolean(getToken());
@ -28,7 +27,7 @@ export async function createDynamicRouteGuard(
return false;
}
await route.initAuthRoute(router);
await route.initAuthRoute();
if (to.name === routeName('not-found-page')) {
// 动态路由没有加载导致被not-found-page路由捕获等待权限路由加载好了回到之前的路由

View File

@ -11,7 +11,7 @@ export function createRouterGuard(router: Router) {
// 开始 loadingBar
window.$loadingBar?.start();
// 页面跳转权限处理
await createPermissionGuard(to, from, next, router);
await createPermissionGuard(to, from, next);
});
router.afterEach(to => {
// 设置document title

View File

@ -1,4 +1,4 @@
import type { Router, RouteLocationNormalized, NavigationGuardNext } from 'vue-router';
import type { RouteLocationNormalized, NavigationGuardNext } from 'vue-router';
import { routeName } from '@/router';
import { useAuthStore } from '@/store';
import { exeStrategyActions, getToken } from '@/utils';
@ -8,11 +8,10 @@ import { createDynamicRouteGuard } from './dynamic';
export async function createPermissionGuard(
to: RouteLocationNormalized,
from: RouteLocationNormalized,
next: NavigationGuardNext,
router: Router
next: NavigationGuardNext
) {
// 动态路由
const permission = await createDynamicRouteGuard(to, from, next, router);
const permission = await createDynamicRouteGuard(to, from, next);
if (!permission) return;
// 外链路由, 从新标签打开,返回上一个路由