fix:结算页面经验进度条后端对接完成

This commit is contained in:
2026-05-09 17:41:41 +08:00
parent 3bfd8b2328
commit 76efe5a207

View File

@@ -30,15 +30,15 @@ const overlayTimer = ref(null);
/** 控制经验条是否执行进场动画(弹窗关闭后才置 true避免动画被遮挡 */ /** 控制经验条是否执行进场动画(弹窗关闭后才置 true避免动画被遮挡 */
const showExpAnim = ref(false); const showExpAnim = ref(false);
// ---- Mock 数据(等待后端补充经验接口后替换---- // ---- 经验进度条数据onLoad 中从 teams.players 解析填充----
/** 本局获得的经验值MOCK后端暂未返回待接口就绪后替换 */ /** 本局获得的经验值 */
const expGained = ref(24); const expGained = ref(0);
/** 当前经验进度值MOCK */ /** 对战结束后当前经验进度值 */
const expCurrent = ref(66); const expCurrent = ref(0);
/** 升级所需总经验(MOCK */ /** 升级到下一级所需总经验(兜底 100防止分母为 0 */
const expTotal = ref(100); const expTotal = ref(100);
/** 用户当前等级MOCK */ /** 用户当前等级 */
const userLvl = ref(90); const userLvl = ref(0);
// ---- 计算属性 ---- // ---- 计算属性 ----
@@ -170,6 +170,20 @@ onLoad(async (options) => {
const result = await getBattleAPI(options.battleId); const result = await getBattleAPI(options.battleId);
data.value = result; data.value = result;
// 从 teams 各队伍的 players 中找到当前用户,解析经验进度条所需字段
// 后端字段exp本局经验/ currentExp当前经验/ upgradeExp升级所需经验/ level当前等级
const myIdStr = String(user.value.id);
for (const team of Object.values(result.teams || {})) {
const p = (team.players || []).find((pl) => String(pl.id) === myIdStr);
if (p) {
expGained.value = p.exp ?? 0;
expCurrent.value = p.currentExp ?? 0;
expTotal.value = p.upgradeExp ?? 100;
userLvl.value = p.level ?? 0;
break;
}
}
// 判断当前用户是否在胜利队伍中 // 判断当前用户是否在胜利队伍中
// 优先使用接口返回的 winTeam 字段;若缺失则以队伍得分高低作为兜底判断 // 优先使用接口返回的 winTeam 字段;若缺失则以队伍得分高低作为兜底判断
const myId = String(user.value.id); const myId = String(user.value.id);