update:新增个人训练重连机制,修复海报
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user