From fa1c1bbe7ddc2c0157f0d67a4559fe1790e2b352 Mon Sep 17 00:00:00 2001 From: wikiboss Date: Mon, 21 Sep 2026 11:16:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(team):=20=E5=B1=95=E4=BC=9A=E6=88=98?= =?UTF-8?q?=E6=8A=A5=E6=94=AF=E6=8C=81=E5=85=B3=E8=81=94=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E5=AE=9E=E6=97=B6=E6=8E=92=E8=A1=8C=E6=A6=9C=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mpuniapp/pages/owner/team/useOverview.uts | 42 +++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/mpuniapp/pages/owner/team/useOverview.uts b/mpuniapp/pages/owner/team/useOverview.uts index 511180d..a46f23a 100644 --- a/mpuniapp/pages/owner/team/useOverview.uts +++ b/mpuniapp/pages/owner/team/useOverview.uts @@ -60,6 +60,7 @@ export type LoadOverviewApi = { export type LoadOverviewResult = { leads: LeadEntity[]; tracks: RadarTrack[]; + ranks: TeamRankItem[]; summary: OverviewSummary; empty: boolean; errorMessage: string; @@ -68,6 +69,7 @@ export type LoadOverviewResult = { export type OverviewState = { leads: LeadEntity[]; tracks: RadarTrack[]; + ranks: TeamRankItem[]; summary: OverviewSummary; loading: boolean; empty: boolean; @@ -124,6 +126,9 @@ export function resolveOverviewText(key: OverviewCopyKey): string { if (key === 'unknownCountry') { return zh ? '未标注' : 'Unspecified'; } + if (key === 'rankTitle') { + return zh ? '现场排行' : 'Floor ranking'; + } return ''; } @@ -257,9 +262,11 @@ export async function loadOverview( const leads = parseList(pages[0]); const tracks = parseList(pages[1]); const summary = summarize(leads, tracks); + const ranks = await loadEventRanks(api); return { leads, tracks, + ranks, summary, empty: leads.length === 0 && tracks.length === 0, errorMessage: '', @@ -268,6 +275,7 @@ export async function loadOverview( return { leads: [], tracks: [], + ranks: [], summary: emptySummary(), empty: false, errorMessage: readErrorMessage(err), @@ -275,10 +283,42 @@ export async function loadOverview( } } +async function loadEventRanks(api?: LoadOverviewApi): Promise { + const fetchRank = + api != null && api.fetchTeamLiveRank != null + ? api.fetchTeamLiveRank + : api == null + ? fetchTeamLiveRank + : null; + if (fetchRank == null) { + return []; + } + try { + let eventId = ''; + const fetchEvent = + api != null && api.fetchCurrentEvent != null + ? api.fetchCurrentEvent + : api == null + ? fetchCurrentEvent + : null; + if (fetchEvent != null) { + const current = await fetchEvent(); + if (current != null && current.code != null) { + eventId = current.code; + } + } + const list = await fetchRank(eventId); + return list != null ? list : []; + } catch (_err) { + return []; + } +} + export function createOverviewState(): OverviewState { return { leads: [], tracks: [], + ranks: [], summary: emptySummary(), loading: false, empty: true, @@ -292,6 +332,7 @@ export function applyOverviewResult( ): void { state.leads = result.leads; state.tracks = result.tracks; + state.ranks = result.ranks; state.summary = result.summary; state.empty = result.empty; state.errorMessage = result.errorMessage; @@ -315,6 +356,7 @@ export async function refreshOverview( return { leads: state.leads, tracks: state.tracks, + ranks: state.ranks, summary: state.summary, empty: state.empty, errorMessage: state.errorMessage,