blob: 5dd4d7b7f279832e608baa03373f2cae3539ed54 [file] [log] [blame]
2081595154f846f912025-06-04 17:35:21 +08001import { createRouter, createWebHistory } from 'vue-router'
2import { ElMessage } from 'element-plus'
3
4// 路由组件
5import LoginView from '@/views/auth/LoginView.vue'
6import RegisterView from '@/views/auth/RegisterView.vue'
7import HomeView from '@/views/HomeView.vue'
8
9const routes = [
10 {
11 path: '/',
12 redirect: '/login'
13 },
14 {
15 path: '/login',
16 name: 'Login',
17 component: LoginView,
18 meta: {
19 title: 'PT Tracker - 登录',
20 requiresGuest: true
21 }
22 },
23 {
24 path: '/register',
25 name: 'Register',
26 component: RegisterView,
27 meta: {
28 title: 'PT Tracker - 注册',
29 requiresGuest: true
30 }
31 },
32 {
33 path: '/home',
34 name: 'Home',
35 component: HomeView,
36 meta: {
37 title: 'PT Tracker - 首页',
38 requiresAuth: true
39 }
40 },
41 {
42 path: '/:pathMatch(.*)*',
43 redirect: '/login'
44 }
45]
46
47const router = createRouter({
48 history: createWebHistory(),
49 routes
50})
51
52// 路由守卫
53router.beforeEach((to, from, next) => {
54 // 设置页面标题
55 if (to.meta.title) {
56 document.title = to.meta.title
57 }
58
59 // 检查登录状态
60 const isLoggedIn = localStorage.getItem('isLoggedIn') === 'true'
61
62 console.log(`路由跳转: ${from.path} -> ${to.path}, 登录状态: ${isLoggedIn}`)
63
64 // 需要登录但未登录
65 if (to.meta.requiresAuth && !isLoggedIn) {
66 ElMessage.warning('请先登录')
67 next('/login')
68 return
69 }
70
71 // 已登录但访问登录/注册页
72 if (to.meta.requiresGuest && isLoggedIn) {
73 next('/home')
74 return
75 }
76
77 next()
78})
79
80export default router