update:新增个人训练重连机制,修复海报

This commit is contained in:
2026-07-24 16:00:46 +08:00
parent f316d52cec
commit c5618fb60b
12 changed files with 811 additions and 69 deletions
+56 -3
View File
@@ -13,10 +13,10 @@ const data = ref({
rounds: [],
});
const players = ref([]);
const isLoading = ref(true);
const loadError = ref("");
onLoad(async (options) => {
if (!options.battleId) return;
battleId.value = options.battleId || "60510101693403136";
const loadBattle = async () => {
const result = await getBattleAPI(battleId.value);
data.value = result;
if (result.mode > 3) {
@@ -62,6 +62,32 @@ onLoad(async (options) => {
players.value = [...rankedPlayers, ...unrankedPlayers];
}
// 数据和派生列表均已就绪后再关闭占位,避免空壳闪烁。
isLoading.value = false;
};
const requestBattle = () => {
if (!battleId.value) return;
isLoading.value = true;
loadError.value = "";
loadBattle().catch((error) => {
console.error("加载比赛详情失败:", error);
loadError.value = "赛况加载失败";
isLoading.value = false;
});
};
onLoad((options) => {
if (!options.battleId) {
loadError.value = "缺少比赛信息";
isLoading.value = false;
return;
}
battleId.value = options.battleId;
requestBattle();
});
const checkBowData = (selected) => {
@@ -80,6 +106,17 @@ const checkBowData = (selected) => {
<template>
<Container title="详情">
<view class="container">
<view v-if="isLoading" class="page-state">
<text>赛况加载中...</text>
</view>
<view
v-else-if="loadError"
class="page-state page-state--error"
@click="requestBattle"
>
<text>{{ loadError }}</text>
<text v-if="battleId" class="retry-text">点击重新加载</text>
</view>
<BattleHeader
v-if="data.mode <= 3"
:winner="data.winTeam"
@@ -165,6 +202,22 @@ const checkBowData = (selected) => {
width: 100%;
height: 100%;
}
.page-state {
min-height: 60vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, 0.6);
font-size: 26rpx;
}
.page-state--error {
color: rgba(255, 255, 255, 0.72);
}
.retry-text {
margin-top: 16rpx;
color: #fed847;
}
.score-header,
.score-row {
display: flex;