From 3f181778a10f5d1510f9dbab493633e58749f15e Mon Sep 17 00:00:00 2001 From: chenlimao Date: Mon, 11 May 2026 17:57:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix=EF=BC=9A=E4=BC=98=E5=8C=96=E6=88=90?= =?UTF-8?q?=E7=BB=A9=E8=AF=A6=E6=83=85=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/match-detail.vue | 5 +++-- src/pages/my-growth.vue | 9 ++++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/pages/match-detail.vue b/src/pages/match-detail.vue index 66eb93c..35af471 100644 --- a/src/pages/match-detail.vue +++ b/src/pages/match-detail.vue @@ -59,13 +59,14 @@ const checkBowData = (selected) => { @@ -76,7 +77,7 @@ const checkBowData = (selected) => { { }; const getName = (battle) => { if (battle.mode <= 3) return `${battle.mode}V${battle.mode}`; - return battle.mode + "人大乱斗"; + // 排位赛大乱斗:mode 数字与实际人数不一致,使用固定映射 + if (battle.way === 2) { + if (battle.mode === 4) return "5人大乱斗"; + if (battle.mode === 5) return "10人大乱斗"; + } + // 好友约战大乱斗:从 teams[0].players 取实际参与人数动态展示 + const count = battle.teams?.[0]?.players?.length; + return count ? `${count}人大乱斗` : "大乱斗"; }; /** From 5e69cd1d47a3d5f1ed56a4d7afc42b210e45b451 Mon Sep 17 00:00:00 2001 From: chenlimao Date: Tue, 12 May 2026 09:20:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?fix=EF=BC=9A=E4=BC=98=E5=8C=96=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E6=88=90=E7=BB=A9=E9=A1=B5=E9=9D=A2=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/match-detail.vue | 42 +++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/pages/match-detail.vue b/src/pages/match-detail.vue index 35af471..f5d5e38 100644 --- a/src/pages/match-detail.vue +++ b/src/pages/match-detail.vue @@ -20,25 +20,47 @@ onLoad(async (options) => { const result = await getBattleAPI(battleId.value); data.value = result; if (result.mode > 3) { - players.value = result.resultList.map((item, index) => { - const plist = result.teams[0] ? result.teams[0].players : []; - const p = plist.find((p) => p.id === item.userId); + const plist = result.teams[0] ? result.teams[0].players : []; + // 以 id 为 key 建立 teams 玩家快速查找表 + const teamPlayerMap = {}; + plist.forEach((p) => { teamPlayerMap[p.id] = p; }); + + // 处理有成绩的玩家(resultList 顺序即排名顺序) + const rankedPlayers = (result.resultList || []).map((item, index) => { + const playerId = item.userId || item.id; + const p = teamPlayerMap[playerId] || item; const arrows = new Array(12); - result.rounds.forEach((r, index) => { - if (r.shoots[item.userId]) { - r.shoots[item.userId].forEach((s, index2) => { - arrows[index2 + index * 6] = s; + result.rounds.forEach((r, rIndex) => { + if (r.shoots[playerId]) { + r.shoots[playerId].forEach((s, sIndex) => { + arrows[sIndex + rIndex * 6] = s; }); } }); return { ...item, + id: playerId, rank: index + 1, - name: p.name, - avatar: p.avatar || "", + name: (p && p.name) || item.name, + avatar: (p && p.avatar) || item.avatar || "", arrows, }; }); + + // 追加未出现在 resultList 中的玩家(未射箭),rank=0 隐藏角标 + const rankedIds = new Set(rankedPlayers.map((p) => p.id)); + const unrankedPlayers = plist + .filter((p) => !rankedIds.has(p.id)) + .map((p) => ({ + id: p.id, + name: p.name, + avatar: p.avatar || "", + arrows: [], + totalScore: 0, + rank: 0, + })); + + players.value = [...rankedPlayers, ...unrankedPlayers]; } }); @@ -84,7 +106,7 @@ const checkBowData = (selected) => { :avatar="player.avatar" :arrows="player.arrows" :totalScore="player.totalScore" - :rank="index + 1" + :rank="player.rank" />