fix:大乱斗结算页面结构样式完成

This commit is contained in:
2026-05-09 13:57:36 +08:00
parent d8a94c8ff6
commit 6e62ec4348
13 changed files with 1095 additions and 10 deletions

View File

@@ -38,10 +38,14 @@ const showRoundTip = ref(false);
const isFinalShoot = ref(false);
const matchStatus = ref(undefined);
const updateRemainSecond = ref(0);
/** 对战来源类型1=好友约战2=匹配对战),用于结算页分流 */
const battleWay = ref(0);
const recoverData = (battleInfo, {force = false, arrowOnly = false} = {}) => {
try {
battleId.value = battleInfo.matchId;
// 存储对战来源,供结算跳转分流使用
if (battleInfo.way !== undefined) battleWay.value = battleInfo.way;
// 优先使用接口返回的队伍数据,如果没有则尝试从缓存读取(应对匹配刚完成接口未就绪的情况)
const t1 = battleInfo.teams?.[1] || {};
@@ -118,15 +122,24 @@ function onAudioEnded(s) {
uni.$emit("update-remain", {stop: false, value: updateRemainSecond.value, team: team});
}
if (s.indexOf("比赛结束") >= 0) {
console.log("比赛结束");
onBattleEnd()
}
}
function onBattleEnd() {
if (matchStatus.value === 2) {
uni.redirectTo({
url: `/pages/battle-result?battleId=${battleId.value}`,
});
// 好友约战way===1跳转专属结算页其他模式保持跳转旧结算页
// 后期如需新增更多模式的专属页面,在此扩展 if/else 分支即可
if (battleWay.value === 1) {
uni.redirectTo({
url: `/pages/friend-battle-result?battleId=${battleId.value}`,
});
} else {
uni.redirectTo({
url: `/pages/battle-result?battleId=${battleId.value}`,
});
}
}
}
@@ -202,13 +215,17 @@ onShow(async () => {
const result = await getBattleAPI(battleId.value);
if (!result) return;
if (result.status === 2) {
uni.showToast({
title: "比赛已结束",
icon: "none",
});
uni.navigateBack({
delta: 2,
});
// 比赛已结束(如切后台再回来):跳结算页,按 way 分流
// 与 onBattleEnd 保持一致,避免返回首页
if (result.way === 1) {
uni.redirectTo({
url: `/pages/friend-battle-result?battleId=${result.matchId}`,
});
} else {
uni.redirectTo({
url: `/pages/battle-result?battleId=${result.matchId}`,
});
}
} else {
recoverData(result, {force: true});
}