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/views/player/index.vue |  117 +++++++++++++++++++++-------------------------------------
 1 files changed, 43 insertions(+), 74 deletions(-)

diff --git a/web/src/views/player/index.vue b/web/src/views/player/index.vue
index 1780c81..3531e92 100644
--- a/web/src/views/player/index.vue
+++ b/web/src/views/player/index.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="player-page">
     <div class="page-card">
-      <h3 class="card-title">姣旇禌鎶ュ悕</h3>
+      <h3 class="card-title">鎶ュ悕瀹℃牳</h3>
       
       <!-- 鎼滅储鍜屾搷浣滄爮 -->
       <div class="toolbar">
@@ -26,13 +26,10 @@
           <el-option 
             v-for="activity in activityOptions" 
             :key="activity.id" 
-            :label="getActivityDisplayName(activity)" 
+            :label="activity.name" 
             :value="activity.id"
           >
-            <span>{{ getCompetitionName(activity) }}</span>
-            <span v-if="activity.pid > 0" style="color: #409eff; margin-left: 8px;">
-              {{ activity.name }}
-            </span>
+            {{ activity.name }}
           </el-option>
         </el-select>
         <el-select
@@ -41,10 +38,9 @@
           style="width: 150px"
           clearable
         >
-          <el-option label="鏈鏍�" value="0" />
-          <el-option label="杩涜涓�" value="1" />
-          <el-option label="宸查┏鍥�" value="2" />
-          <el-option label="宸茬粨鏉�" value="3" />
+          <el-option label="寰呭鏍�" value="0" />
+          <el-option label="閫氳繃" value="1" />
+          <el-option label="椹冲洖" value="2" />
         </el-select>
         <el-button type="primary" @click="handleSearch">
           <el-icon><Search /></el-icon>
@@ -70,27 +66,12 @@
             <el-tag :type="getStateType(row.state)">{{ getStateText(row.state) }}</el-tag>
           </template>
         </el-table-column>
-        <el-table-column label="鎿嶄綔" width="200" fixed="right">
+        <el-table-column label="鎿嶄綔" width="120" fixed="right">
           <template #default="{ row }">
             <div class="table-actions">
-              <el-button 
-                v-if="row.state === 1" 
-                type="success" 
-                size="small" 
-                @click="handleApprove(row)"
-              >
-                瀹℃牳閫氳繃
-              </el-button>
-              <el-button 
-                v-if="row.state === 1" 
-                type="danger" 
-                size="small" 
-                @click="handleReject(row)"
-              >
-                瀹℃牳鎷掔粷
-              </el-button>
-              <el-button type="primary" size="small" @click="handleView(row)">
-                璇勫垎璇︽儏
+              <!-- 鍙繚鐣欒鎯呮寜閽� -->
+              <el-button type="primary" size="small" @click="handleViewDetail(row)">
+                璇︽儏
               </el-button>
             </div>
           </template>
@@ -149,7 +130,7 @@
     activityName: '2024骞村垱鏂板垱涓氬ぇ璧�',
     phone: '13800138001',
     applyTime: '2024-01-05 14:30:00',
-    state: 1 // 1-寰呭鏍�, 2-杩涜涓�, 3-宸茬粨鏉�
+    state: 0 // 0-鏈鏍�
   },
   {
     id: 2,
@@ -158,7 +139,7 @@
     activityName: '涔︽硶姣旇禌',
     phone: '13900139002',
     applyTime: '2024-01-16 10:30:00',
-    state: 2
+    state: 1 // 1-瀹℃牳閫氳繃
   },
   {
     id: 3,
@@ -167,16 +148,25 @@
     activityName: '缁樼敾姣旇禌',
     phone: '13900139003',
     applyTime: '2024-01-17 14:20:00',
-    state: 1
+    state: 2 // 2-瀹℃牳椹冲洖
+  },
+  {
+    id: 4,
+    name: '璧靛叚',
+    avatar: '',
+    activityName: '闊充箰姣旇禌',
+    phone: '13900139004',
+    applyTime: '2024-01-18 09:15:00',
+    state: 0 // 0-鏈鏍�
   }
 ])
 
 // 鑾峰彇鐘舵�佹爣绛剧被鍨�
 const getStateType = (state: number | null | undefined) => {
   const typeMap: Record<number, string> = {
-    0: 'warning',   // 寰呭鏍�
-    1: 'success',   // 杩涜涓�
-    2: 'danger',    // 鏈�氳繃
+    0: 'warning',   // 鏈鏍�
+    1: 'success',   // 瀹℃牳閫氳繃
+    2: 'danger',    // 瀹℃牳椹冲洖
     3: 'info'       // 宸茬粨鏉�
   }
   return state != null ? (typeMap[state] || 'info') : 'info'
@@ -185,9 +175,9 @@
 // 鑾峰彇鐘舵�佹枃鏈�
 const getStateText = (state: number | null | undefined) => {
   const textMap: Record<number, string> = {
-    0: '寰呭鏍�',
-    1: '杩涜涓�',
-    2: '鏈�氳繃',
+    0: '鏈鏍�',
+    1: '瀹℃牳閫氳繃',
+    2: '瀹℃牳椹冲洖',
     3: '宸茬粨鏉�'
   }
   return state != null ? (textMap[state] || '鏈煡') : '鏈煡'
@@ -199,35 +189,16 @@
   loadData()
 }
 
-// 瀹℃牳閫氳繃
-const handleApprove = async (row: any) => {
-  try {
-    await ElMessageBox.confirm(`纭畾瀹℃牳閫氳繃瀛﹀憳"${row.name}"鐨勬姤鍚嶇敵璇峰悧锛焋, '鎻愮ず', {
-      confirmButtonText: '纭畾',
-      cancelButtonText: '鍙栨秷',
-      type: 'success'
-    })
-    
-    ElMessage.success('瀹℃牳閫氳繃鎴愬姛')
-    row.state = 2
-  } catch {
-    // 鐢ㄦ埛鍙栨秷
-  }
-}
 
-// 瀹℃牳鎷掔粷
-const handleReject = (row: any) => {
-  ElMessageBox.confirm('纭鎷掔粷璇ョ敵璇凤紵', '鎻愮ず', {
-    confirmButtonText: '纭畾',
-    cancelButtonText: '鍙栨秷',
-    type: 'warning'
-  }).then(() => {
-    // 杩欓噷搴旇璋冪敤API鏇存柊鐘舵��
-    row.state = 3 // 鏇存柊涓哄凡缁撴潫
-    ElMessage.success('宸叉嫆缁�')
-  }).catch(() => {
-    ElMessage.info('宸插彇娑�')
-  })
+
+// 鏌ョ湅璇︽儏锛堣烦杞埌璇︽儏椤甸潰锛屽彧璇绘ā寮忥級
+const handleViewDetail = (row: any) => {
+  if (!row.id) {
+    ElMessage.error('鏃犳硶鑾峰彇鎶ュ悕璁板綍ID')
+    return
+  }
+  // 璺宠浆鍒拌鎯呴〉闈紙鍙妯″紡锛�
+  router.push(`/player/${row.id}/detail`)
 }
 
 // 鏌ョ湅璇︽儏锛堣烦杞埌璇勫垎椤甸潰锛�
@@ -252,20 +223,14 @@
 }
 
 // 鑾峰彇姣旇禌鍚嶇О锛堝鏋滄槸闃舵锛岃繑鍥炵埗姣旇禌鍚嶇О锛涘鏋滄槸姣旇禌锛岃繑鍥炶嚜宸辩殑鍚嶇О锛�
-const getCompetitionName = (activity: any) => {
+const getActivityName = (activity: any) => {
   if (activity.pid > 0 && activity.parent) {
     return activity.parent.name
   }
   return activity.name
 }
 
-// 鑾峰彇娲诲姩鏄剧ず鍚嶇О锛堢敤浜庢悳绱㈠拰閫変腑鏃舵樉绀猴級
-const getActivityDisplayName = (activity: any) => {
-  if (activity.pid > 0 && activity.parent) {
-    return `${activity.parent.name} - ${activity.name}`
-  }
-  return activity.name
-}
+
 
 // 鍔犺浇娲诲姩閫夐」
 const loadActivityOptions = async () => {
@@ -285,6 +250,7 @@
     const list = await PlayerApi.getApplications(
       searchForm.name || '', 
       searchForm.activityId || null, 
+      searchForm.state !== '' ? parseInt(searchForm.state) : null,
       pagination.page, 
       pagination.size
     )
@@ -331,8 +297,11 @@
     display: flex;
     gap: 8px;
     flex-wrap: wrap;
+    align-items: center;
   }
   
+
+  
   .pagination {
     margin-top: 20px;
     display: flex;

--
Gitblit v1.8.0