From c3570afebae959c56a84d703edb21835e7fd92f1 Mon Sep 17 00:00:00 2001 From: chenlimao Date: Wed, 13 May 2026 15:14:53 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E6=AF=94=E8=B5=9B=E5=B0=84?= =?UTF-8?q?=E7=AE=AD=E6=95=B0=E6=94=B9=E4=B8=BA=E7=94=A8indexMap=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/HeaderProgress.vue | 4 ++-- src/pages/team-battle.vue | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/HeaderProgress.vue b/src/components/HeaderProgress.vue index a4803b6..c06c1d3 100644 --- a/src/components/HeaderProgress.vue +++ b/src/components/HeaderProgress.vue @@ -60,8 +60,8 @@ async function onReceiveMessage(message) { audioManager.play("比赛结束", false); } else if (type === MESSAGETYPESV2.ShootResult) { if (melee.value && current.playerId !== user.value.id) return; - // 直接使用后端返回的 myIndex(当前用户已射箭数),不在前端自增 - if (current.playerId === user.value.id) currentShot.value = current.myIndex ?? currentShot.value; + // 从 indexMap 按当前用户 id 取已射箭数,由后端维护准确值,不在前端自增 + if (current.playerId === user.value.id) currentShot.value = current.indexMap?.[user.value.id] ?? currentShot.value; if (message.shootData) { let key = []; key.push( diff --git a/src/pages/team-battle.vue b/src/pages/team-battle.vue index ffb55eb..06750f9 100644 --- a/src/pages/team-battle.vue +++ b/src/pages/team-battle.vue @@ -290,9 +290,9 @@ onShow(async () => { } else { if (result.status !== 0) { // 比赛进行中,从后端恢复箭数(测距阶段不展示) - // 决金轮不展示箭数;其余轮次使用后端 myIndex 恢复已射箭数 + // 决金轮不展示箭数;其余轮次从 indexMap 按用户 id 取已射箭数 if (result.shootNumber && !result.current?.goldRound) { - store.updateShotInfo(result.current?.myIndex ?? 0, result.shootNumber); + store.updateShotInfo(result.current?.indexMap?.[user.value.id] ?? 0, result.shootNumber); } } else { // 测距阶段重置箭数,防止 ImmediateWatcher 读取 Pinia 保留的旧值