From bd414cfc3f4886ce6b332c074a1de469f37dfa66 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 27 Oct 2025 18:33:55 +0800 Subject: [PATCH] fix --- src/oj/api.ts | 4 ++-- src/oj/user/index.vue | 23 +++++++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/oj/api.ts b/src/oj/api.ts index d89ec90..2758286 100644 --- a/src/oj/api.ts +++ b/src/oj/api.ts @@ -351,8 +351,8 @@ export function updateProblemSetProgress( } // 获取用户徽章列表 -export function getUserBadges() { - return http.get("user/badges") +export function getUserBadges(username?: string) { + return http.get("user/badges", { params: username ? { username } : {} }) } // 获取题单徽章列表 diff --git a/src/oj/user/index.vue b/src/oj/user/index.vue index 40703db..fb19ee7 100644 --- a/src/oj/user/index.vue +++ b/src/oj/user/index.vue @@ -73,8 +73,23 @@ async function init() { } ac.sort() problems.value = ac + const promises: Promise<{ data: any }>[] = [] + if (profile.value.submission_number > 0) { - const metricsRes = await getMetrics(profile.value.user.id) + promises.push(getMetrics(profile.value.user.id)) + } + + if (route.query.name) { + promises.push(getUserBadges(route.query.name)) + } else { + promises.push(getUserBadges()) + } + + const results = await Promise.all(promises) + + // 处理 metrics 结果 + if (profile.value.submission_number > 0) { + const metricsRes = results[0] firstSubmissionAt.value = parseTime(metricsRes.data.first) latestSubmissionAt.value = parseTime(metricsRes.data.latest) toLatestAt.value = durationToDays( @@ -86,9 +101,9 @@ async function init() { metricsRes.data.latest, ) } - // 获取用户徽章 - const badgesRes = await getUserBadges() - userBadges.value = groupBadgesByIcon(badgesRes.data) + + // 处理 badges 结果 + userBadges.value = groupBadgesByIcon(results[1].data) } finally { toggle(false) }