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,