From 93eb6b470773bc49ea6e1a9d4cbd914eb95d525b Mon Sep 17 00:00:00 2001
From: lrj <owen.stl@gmail.com>
Date: 星期二, 30 九月 2025 17:38:04 +0800
Subject: [PATCH] feat: 完善比赛晋级功能并清理测试文件

---
 web/src/router/index.ts |   69 ++++++++++++++++++++++++++++++++++
 1 files changed, 68 insertions(+), 1 deletions(-)

diff --git a/web/src/router/index.ts b/web/src/router/index.ts
index 854f6f1..b052ee7 100644
--- a/web/src/router/index.ts
+++ b/web/src/router/index.ts
@@ -1,4 +1,5 @@
 import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'
+import { isLoggedIn } from '@/utils/auth'
 
 const routes: RouteRecordRaw[] = [
   {
@@ -64,7 +65,13 @@
         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',
@@ -89,6 +96,42 @@
         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' }
+      },
+      {
+        path: '/test/graphql',
+        name: 'GraphQLTest',
+        component: () => import('@/views/test/graphql-test.vue'),
+        meta: { title: 'GraphQL娴嬭瘯', icon: 'Connection' }
       }
     ]
   },
@@ -105,4 +148,28 @@
   routes
 })
 
+// 璺敱瀹堝崼
+router.beforeEach((to, from, next) => {
+  // 濡傛灉鏄櫥褰曢〉闈紝鐩存帴鏀捐
+  if (to.path === '/login') {
+    // 濡傛灉宸茬粡鐧诲綍锛岄噸瀹氬悜鍒伴椤�
+    if (isLoggedIn()) {
+      next('/')
+    } else {
+      next()
+    }
+    return
+  }
+
+  // 妫�鏌ユ槸鍚﹀凡鐧诲綍
+  if (!isLoggedIn()) {
+    // 鏈櫥褰曪紝閲嶅畾鍚戝埌鐧诲綍椤�
+    next('/login')
+    return
+  }
+
+  // 宸茬櫥褰曪紝姝e父璁块棶
+  next()
+})
+
 export default router
\ No newline at end of file

--
Gitblit v1.8.0