feat(team): 展会战报支持关联活动实时排行榜加载
这个提交包含在:
@@ -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<TeamRankItem[]> {
|
||||
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,
|
||||
|
||||
在新工单中引用
屏蔽一个用户