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