| | |
| | | import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router' |
| | | import { isLoggedIn } from '@/utils/auth' |
| | | |
| | | const routes: RouteRecordRaw[] = [ |
| | | { |
| | |
| | | component: () => import('@/views/dashboard/index.vue'), |
| | | meta: { title: '工作台', icon: 'Grid' } |
| | | }, |
| | | |
| | | { |
| | | path: '/activity', |
| | | name: 'Activity', |
| | |
| | | path: '/player', |
| | | name: 'Player', |
| | | component: () => import('@/views/player/index.vue'), |
| | | meta: { title: '比赛报名', icon: 'UserFilled' } |
| | | meta: { title: '报名审核', icon: 'UserFilled' } |
| | | }, |
| | | { |
| | | path: '/player/:id/detail', |
| | | name: 'PlayerDetail', |
| | | component: () => import('@/views/player/detail.vue'), |
| | | meta: { title: '报名详情', icon: 'UserFilled' } |
| | | }, |
| | | { |
| | | path: '/activity-player/:id/rating', |
| | |
| | | name: 'Employee', |
| | | component: () => import('@/views/employee/index.vue'), |
| | | meta: { title: '员工管理', icon: 'Avatar' } |
| | | } |
| | | }, |
| | | { |
| | | path: '/project-review', |
| | | name: 'ProjectReview', |
| | | component: () => import('@/views/project-review/index.vue'), |
| | | meta: { title: '项目评审', icon: 'View' } |
| | | }, |
| | | { |
| | | path: '/project-review/:id/detail', |
| | | name: 'ProjectReviewDetail', |
| | | component: () => import('@/views/project-review/detail.vue'), |
| | | meta: { title: '项目评审详情', hidden: true } |
| | | }, |
| | | { |
| | | path: '/review', |
| | | name: 'Review', |
| | | component: () => import('@/views/review/index.vue'), |
| | | meta: { title: '项目评审', icon: 'Edit' } |
| | | }, |
| | | { |
| | | path: '/review/:id/detail', |
| | | name: 'ReviewDetail', |
| | | component: () => import('@/views/review/detail.vue'), |
| | | meta: { title: '项目评审详情', hidden: true } |
| | | }, |
| | | { |
| | | path: '/competition-promotion', |
| | | name: 'CompetitionPromotion', |
| | | component: () => import('@/views/competition-promotion/index.vue'), |
| | | meta: { title: '比赛晋级', icon: 'Promotion' } |
| | | }, |
| | | |
| | | ] |
| | | }, |
| | | { |
| | |
| | | routes |
| | | }) |
| | | |
| | | // 路由守卫 |
| | | router.beforeEach((to, from, next) => { |
| | | // 如果是登录页面,直接放行 |
| | | if (to.path === '/login') { |
| | | // 如果已经登录,重定向到首页 |
| | | if (isLoggedIn()) { |
| | | next('/') |
| | | } else { |
| | | next() |
| | | } |
| | | return |
| | | } |
| | | |
| | | // 检查是否已登录 |
| | | if (!isLoggedIn()) { |
| | | // 未登录,重定向到登录页 |
| | | next('/login') |
| | | return |
| | | } |
| | | |
| | | // 已登录,正常访问 |
| | | next() |
| | | }) |
| | | |
| | | export default router |