🔨 修改路由配置.
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
import type { RouteLocationNormalized } from 'vue-router';
|
||||
import type { TagProps } from '@/store/modules/tab-bar/types';
|
||||
|
||||
export const LOGIN_ROUTE_NAME = 'login';
|
||||
|
||||
export const REDIRECT_ROUTE_NAME = 'redirect';
|
||||
|
||||
export const LOGIN_ROUTE_NAME = 'login';
|
||||
export const UPDATE_PASSWORD_ROUTE_NAME = 'updatePassword';
|
||||
|
||||
export const FORBIDDEN_ROUTER_NAME = 'forbidden';
|
||||
|
||||
@@ -24,6 +26,7 @@ export const DEFAULT_ROUTER = { name: DEFAULT_ROUTE_NAME, children: [] };
|
||||
export const WHITE_ROUTER_LIST = [
|
||||
{ name: LOGIN_ROUTE_NAME, children: [] },
|
||||
{ name: REDIRECT_ROUTE_NAME, children: [] },
|
||||
{ name: UPDATE_PASSWORD_ROUTE_NAME, children: [] },
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -34,16 +37,6 @@ export const STATUS_ROUTER_LIST = [
|
||||
{ name: FORBIDDEN_ROUTER_NAME, children: [] },
|
||||
];
|
||||
|
||||
/**
|
||||
* 默认 tab 页面
|
||||
*/
|
||||
export const DEFAULT_TAB = {
|
||||
title: '工作台',
|
||||
name: DEFAULT_ROUTE_NAME,
|
||||
path: DEFAULT_ROUTE_FULL_PATH,
|
||||
fullPath: DEFAULT_ROUTE_FULL_PATH,
|
||||
};
|
||||
|
||||
/**
|
||||
* router 转 tag
|
||||
*/
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import type { Router } from 'vue-router';
|
||||
import NProgress from 'nprogress';
|
||||
import { useMenuStore } from '@/store';
|
||||
import { NOT_FOUND_ROUTER_NAME, WHITE_ROUTER_LIST } from '../constants';
|
||||
import NProgress from 'nprogress';
|
||||
import usePermission from '@/hooks/permission';
|
||||
|
||||
export default function setupPermissionGuard(router: Router) {
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import type { LocationQueryRaw, Router } from 'vue-router';
|
||||
import type { RouteLocationRaw, Router } from 'vue-router';
|
||||
import NProgress from 'nprogress';
|
||||
import { useUserStore } from '@/store';
|
||||
import { isLogin } from '@/utils/auth';
|
||||
import { LOGIN_ROUTE_NAME, UPDATE_PASSWORD_ROUTE_NAME } from '@/router/constants';
|
||||
|
||||
/**
|
||||
* 初始化用户登录路由守卫
|
||||
@@ -11,40 +12,49 @@ export default function setupUserLoginInfoGuard(router: Router) {
|
||||
NProgress.start();
|
||||
const userStore = useUserStore();
|
||||
if (isLogin()) {
|
||||
// 获取用户信息
|
||||
if (userStore.id) {
|
||||
// 跳转
|
||||
next();
|
||||
} else {
|
||||
try {
|
||||
// 获取用户信息
|
||||
await userStore.info();
|
||||
next();
|
||||
const info = await userStore.getUserInfo();
|
||||
if (info.user.passwordUpdateStatus === 1) {
|
||||
// 跳转到修改密码页面
|
||||
next({
|
||||
name: UPDATE_PASSWORD_ROUTE_NAME,
|
||||
query: { reason: info.user.passwordUpdateReason },
|
||||
} as RouteLocationRaw);
|
||||
} else {
|
||||
// 跳转
|
||||
next();
|
||||
}
|
||||
} catch (error) {
|
||||
// 获取失败退出登录
|
||||
await userStore.logout();
|
||||
next({
|
||||
name: 'login',
|
||||
name: LOGIN_ROUTE_NAME,
|
||||
query: {
|
||||
redirect: to.name,
|
||||
...to.query,
|
||||
} as LocationQueryRaw,
|
||||
});
|
||||
},
|
||||
} as RouteLocationRaw);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// 未登录跳转到登录页
|
||||
if (to.name === 'login') {
|
||||
if (to.name === LOGIN_ROUTE_NAME) {
|
||||
// 未登录跳转到登录页
|
||||
next();
|
||||
return;
|
||||
} else {
|
||||
// 跳转到登录页
|
||||
next({
|
||||
name: LOGIN_ROUTE_NAME,
|
||||
query: {
|
||||
redirect: to.name,
|
||||
...to.query,
|
||||
},
|
||||
} as RouteLocationRaw);
|
||||
}
|
||||
// 跳转到登录页
|
||||
next({
|
||||
name: 'login',
|
||||
query: {
|
||||
redirect: to.name,
|
||||
...to.query,
|
||||
} as LocationQueryRaw,
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import type { RouteLocationRaw } from 'vue-router';
|
||||
import { createRouter, createWebHistory } from 'vue-router';
|
||||
import NProgress from 'nprogress';
|
||||
import { appRoutes } from './routes';
|
||||
import BASE_ROUTERS from './routes/base';
|
||||
import createRouteGuard from './guard';
|
||||
import { openWindow } from '@/utils';
|
||||
import { isStandaloneMode } from '@/utils/env';
|
||||
import createRouteGuard from './guard';
|
||||
import baseRouters from './routes/base';
|
||||
import NProgress from 'nprogress';
|
||||
import 'nprogress/nprogress.css';
|
||||
|
||||
NProgress.configure({ showSpinner: false });
|
||||
@@ -14,7 +14,7 @@ NProgress.configure({ showSpinner: false });
|
||||
const router = createRouter({
|
||||
history: createWebHistory(),
|
||||
routes: [
|
||||
...BASE_ROUTERS,
|
||||
...baseRouters,
|
||||
...appRoutes,
|
||||
],
|
||||
scrollBehavior() {
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
import type { RouteRecordRaw } from 'vue-router';
|
||||
import { DEFAULT_ROUTE_FULL_PATH, FORBIDDEN_ROUTER_NAME, LOGIN_ROUTE_NAME, NOT_FOUND_ROUTER_NAME, REDIRECT_ROUTE_NAME, } from '@/router/constants';
|
||||
import {
|
||||
DEFAULT_ROUTE_FULL_PATH,
|
||||
FORBIDDEN_ROUTER_NAME,
|
||||
LOGIN_ROUTE_NAME,
|
||||
NOT_FOUND_ROUTER_NAME,
|
||||
REDIRECT_ROUTE_NAME,
|
||||
UPDATE_PASSWORD_ROUTE_NAME,
|
||||
} from '@/router/constants';
|
||||
|
||||
// 默认布局
|
||||
export const DEFAULT_LAYOUT = () => import('@/layout/default-layout.vue');
|
||||
@@ -8,13 +15,13 @@ export const DEFAULT_LAYOUT = () => import('@/layout/default-layout.vue');
|
||||
export const FULL_LAYOUT = () => import('@/layout/full-layout.vue');
|
||||
|
||||
// 根页面
|
||||
export const ROOT_ROUTER: RouteRecordRaw = {
|
||||
export const ROOT_ROUTE: RouteRecordRaw = {
|
||||
path: '/',
|
||||
redirect: DEFAULT_ROUTE_FULL_PATH,
|
||||
};
|
||||
|
||||
// 登录页面
|
||||
export const LOGIN_ROUTER: RouteRecordRaw = {
|
||||
export const LOGIN_ROUTE: RouteRecordRaw = {
|
||||
path: '/login',
|
||||
name: LOGIN_ROUTE_NAME,
|
||||
meta: {
|
||||
@@ -24,7 +31,7 @@ export const LOGIN_ROUTER: RouteRecordRaw = {
|
||||
};
|
||||
|
||||
// 重定向页面
|
||||
export const REDIRECT_ROUTER: RouteRecordRaw = {
|
||||
export const REDIRECT_ROUTE: RouteRecordRaw = {
|
||||
path: '/redirect',
|
||||
name: 'redirectWrapper',
|
||||
component: DEFAULT_LAYOUT,
|
||||
@@ -46,14 +53,24 @@ export const REDIRECT_ROUTER: RouteRecordRaw = {
|
||||
],
|
||||
};
|
||||
|
||||
// 修改密码
|
||||
export const UPDATE_PASSWORD_ROUTE: RouteRecordRaw = {
|
||||
path: '/update-password',
|
||||
name: UPDATE_PASSWORD_ROUTE_NAME,
|
||||
component: () => import('@/views/base/update-password/index.vue'),
|
||||
meta: {
|
||||
locale: '修改密码'
|
||||
},
|
||||
};
|
||||
|
||||
// 403 页面
|
||||
export const FORBIDDEN_ROUTE: RouteRecordRaw = {
|
||||
path: '/403',
|
||||
name: FORBIDDEN_ROUTER_NAME,
|
||||
component: () => import('@/views/base/status/forbidden/index.vue'),
|
||||
meta: {
|
||||
locale: '403'
|
||||
},
|
||||
component: () => import('@/views/base/status/forbidden/index.vue'),
|
||||
};
|
||||
|
||||
// 404 页面
|
||||
@@ -61,16 +78,17 @@ export const NOT_FOUND_ROUTE: RouteRecordRaw = {
|
||||
// path: '/:pathMatch(.*)*',
|
||||
path: '/404',
|
||||
name: NOT_FOUND_ROUTER_NAME,
|
||||
component: () => import('@/views/base/status/not-found/index.vue'),
|
||||
meta: {
|
||||
locale: '404'
|
||||
},
|
||||
component: () => import('@/views/base/status/not-found/index.vue'),
|
||||
};
|
||||
|
||||
export default [
|
||||
ROOT_ROUTER,
|
||||
LOGIN_ROUTER,
|
||||
REDIRECT_ROUTER,
|
||||
ROOT_ROUTE,
|
||||
LOGIN_ROUTE,
|
||||
REDIRECT_ROUTE,
|
||||
UPDATE_PASSWORD_ROUTE,
|
||||
NOT_FOUND_ROUTE,
|
||||
FORBIDDEN_ROUTE
|
||||
];
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import type { AppRouteRecordRaw } from '../types';
|
||||
import { DEFAULT_LAYOUT } from '../base';
|
||||
import { DEFAULT_ROUTE_FULL_PATH, DEFAULT_ROUTE_NAME } from '@/router/constants';
|
||||
|
||||
const DASHBOARD: AppRouteRecordRaw = {
|
||||
name: 'dashboard',
|
||||
@@ -7,8 +8,8 @@ const DASHBOARD: AppRouteRecordRaw = {
|
||||
component: DEFAULT_LAYOUT,
|
||||
children: [
|
||||
{
|
||||
name: 'workplace',
|
||||
path: '/workplace',
|
||||
name: DEFAULT_ROUTE_NAME,
|
||||
path: DEFAULT_ROUTE_FULL_PATH,
|
||||
component: () => import('@/views/dashboard/workplace/index.vue'),
|
||||
},
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user