From 569f8a14d1e8c4a0290c26097d96778a593529ef Mon Sep 17 00:00:00 2001 From: DevOps Date: Sun, 21 Dec 2025 15:22:03 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=81=E5=88=A4=E9=95=BF=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=88=86=E6=95=B0=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 限制裁判长修改分数范围为±0.050 2. 优化评委评分展示样式,添加灰色边框背景块 🤖 Generated with Claude Code Co-Authored-By: Claude --- src/pages/modify-score/modify-score.vue | 122 ++++++++++++++++-------- 1 file changed, 83 insertions(+), 39 deletions(-) diff --git a/src/pages/modify-score/modify-score.vue b/src/pages/modify-score/modify-score.vue index bf313b9..916c97b 100644 --- a/src/pages/modify-score/modify-score.vue +++ b/src/pages/modify-score/modify-score.vue @@ -18,7 +18,7 @@ {{ athleteInfo.name }} 总分: - {{ athleteInfo.totalScore }} + {{ formatScore(athleteInfo.totalScore) }} @@ -46,7 +46,7 @@ - 修改总分(+-0.005分) + 修改总分(±0.050分) @@ -65,10 +65,6 @@ +0.001 - - @@ -110,10 +106,10 @@ export default { judgeScores: [], modification: null, modifierId: '', - currentScore: 8.000, - originalScore: 8.000, + currentScore: 0, + originalScore: 0, note: '', - minScore: 5.0, + minScore: 0, maxScore: 10.0 } }, @@ -173,21 +169,51 @@ export default { // 获取裁判长ID this.modifierId = globalData.judgeId + // 🔥 关键修复:先用传递过来的选手数据初始化页面 + this.athleteInfo = { + athleteId: currentAthlete.athleteId, + name: currentAthlete.name || '', + idCard: currentAthlete.idCard || '', + team: currentAthlete.team || '', + number: currentAthlete.number || '', + totalScore: currentAthlete.totalScore || 0 + } + + // 设置初始分数(使用传递过来的总分) + const totalScore = parseFloat(currentAthlete.totalScore) || 0 + this.originalScore = totalScore + this.currentScore = totalScore + // 调试信息 if (config.debug) { console.log('修改评分页加载:', { + currentAthlete: currentAthlete, athleteId: currentAthlete.athleteId, + totalScore: totalScore, modifierId: this.modifierId }) } - // 加载选手评分详情 + // 尝试加载选手评分详情(获取各评委的评分) if (currentAthlete.athleteId) { await this.loadScoreDetail(currentAthlete.athleteId) } }, methods: { + formatScore(score) { + if (score === null || score === undefined || score === -1 || score === '-1') { + return '--' + } + if (typeof score === 'string' && !isNaN(parseFloat(score))) { + return parseFloat(score).toFixed(3) + } + if (typeof score === 'number') { + return score.toFixed(3) + } + return score + }, + async loadScoreDetail(athleteId) { try { uni.showLoading({ @@ -195,27 +221,35 @@ export default { mask: true }) - // 🔥 关键改动:使用 dataAdapter 获取评分详情 - // Mock模式:调用 mock/score.js 的 getScoreDetail 函数 - // API模式:调用 api/score.js 的 getScoreDetail 函数(GET /api/mini/score/detail/{athleteId}) const response = await dataAdapter.getData('getScoreDetail', { athleteId: athleteId }) uni.hideLoading() - // 保存选手信息和评分详情 - this.athleteInfo = response.data.athleteInfo || {} - this.judgeScores = response.data.judgeScores || [] - this.modification = response.data.modification || null + // 如果接口返回了数据,更新页面 + if (response && response.data) { + // 更新评委评分列表 + this.judgeScores = response.data.judgeScores || [] + this.modification = response.data.modification || null - // 设置初始分数 - this.originalScore = this.athleteInfo.totalScore || 8.000 - this.currentScore = this.originalScore + // 如果接口返回了选手信息,更新(但保留传递过来的数据作为备用) + if (response.data.athleteInfo) { + const apiAthleteInfo = response.data.athleteInfo + this.athleteInfo = { + athleteId: apiAthleteInfo.athleteId || this.athleteInfo.athleteId, + name: apiAthleteInfo.name || this.athleteInfo.name, + idCard: apiAthleteInfo.idCard || this.athleteInfo.idCard, + team: apiAthleteInfo.team || this.athleteInfo.team, + number: apiAthleteInfo.number || this.athleteInfo.number, + totalScore: apiAthleteInfo.totalScore || this.athleteInfo.totalScore + } - // 如果之前已修改过,加载修改后的分数 - if (this.modification && this.modification.modifiedScore) { - this.currentScore = this.modification.modifiedScore + // 更新分数 + const totalScore = parseFloat(apiAthleteInfo.totalScore) || this.originalScore + this.originalScore = totalScore + this.currentScore = totalScore + } } // 调试信息 @@ -232,10 +266,10 @@ export default { } catch (error) { uni.hideLoading() console.error('加载评分详情失败:', error) - uni.showToast({ - title: error.message || '加载失败', - icon: 'none' - }) + // 不显示错误提示,因为已经有传递过来的数据可以使用 + if (config.debug) { + console.log('使用传递过来的选手数据') + } } }, @@ -244,22 +278,28 @@ export default { }, decreaseScore() { - if (this.currentScore > this.minScore) { + // 限制最小值为原始分数-0.050 + const minAllowed = parseFloat((this.originalScore - 0.050).toFixed(3)) + if (this.currentScore > minAllowed) { this.currentScore = parseFloat((this.currentScore - 0.001).toFixed(3)) } }, increaseScore() { - if (this.currentScore < this.maxScore) { + // 限制最大值为原始分数+0.050 + const maxAllowed = parseFloat((this.originalScore + 0.050).toFixed(3)) + if (this.currentScore < maxAllowed) { this.currentScore = parseFloat((this.currentScore + 0.001).toFixed(3)) } }, async handleModify() { - // 验证评分范围 - if (this.currentScore < this.minScore || this.currentScore > this.maxScore) { + // 验证评分范围(±0.050) + const minAllowed = parseFloat((this.originalScore - 0.050).toFixed(3)) + const maxAllowed = parseFloat((this.originalScore + 0.050).toFixed(3)) + if (this.currentScore < minAllowed || this.currentScore > maxAllowed) { uni.showToast({ - title: `评分必须在${this.minScore}-${this.maxScore}分之间`, + title: '评分只能在原始分数±0.050范围内', icon: 'none' }) return @@ -280,13 +320,11 @@ export default { mask: true }) - // 🔥 关键改动:使用 dataAdapter 修改评分 - // Mock模式:调用 mock/score.js 的 modifyScore 函数 - // API模式:调用 api/score.js 的 modifyScore 函数(PUT /mini/score/modify) const response = await dataAdapter.getData('modifyScore', { + modifierId: this.modifierId, athleteId: this.athleteInfo.athleteId, - newScore: this.currentScore, - reason: this.note + modifiedScore: this.currentScore, + note: this.note }) uni.hideLoading() @@ -463,15 +501,21 @@ export default { } .judge-score-item { - font-size: 26rpx; - color: #333333; + display: flex; + align-items: center; + padding: 12rpx 20rpx; + background-color: #F5F5F5; + border-radius: 8rpx; + border: 2rpx solid #E5E5E5; } .judge-name { + font-size: 24rpx; color: #666666; } .judge-score { + font-size: 28rpx; color: #333333; font-weight: 500; }