pages/tpl/style3/rankList.vue 交互流程与 API 分析pages/tpl/style3/rankList.vue 是一个功能丰富的赛事排名列表页面,用于展示个人和团体的多维度成绩。以下是其详细的交互流程、API 调用和功能分析。
页面加载 (onLoad):
token、id (即 ecId,赛事ID) 和 ovtype (可选,用于特定视图逻辑)。cardfunc 模块。firstEnterKey (首次进入标志)、rankKey (榜单数据指纹)、mapKey (地图选择状态)、messageKey (消息阅读状态)。mapKey),以便恢复用户的浏览上下文。today)。cardfunc.getCardConfig() 获取页面的动态配置(包括 Tab 标题、榜单字段映射、页面文案等)。unReadMessageQuery) 和警告消息 (warnMessageQuery)。matchRsDetailQuery() 请求以获取赛事的基本详情。页面显示 (onShow):
getUserJoinCardQuery() 检查用户的报名状态。这将决定页面底部主操作按钮的显示文本(是“我要报名”还是“选择场地/进入比赛”)。数据获取与展示:
matchRsDetailQuery 成功返回后,页面会设置赛事名称、时间,并启动一个每分钟执行一次的定时器来更新倒计时显示。同时,它会触发后续的数据请求:mapListQuery (获取分组/地图列表) 和 compStatisticQuery (获取统计数据)。compStatisticQuery 返回的数据(如总里程、总答题数)会展示在页面的顶部区域。mapListQuery 返回的数据填充(通常对应不同的校区或组别)。getCardRankDetailQuery 获取。根据当前选中的地图 ID (ocaId),请求对应的榜单数据并存储在 rankList 对象中。my-ranklist 根据当前的 Tab 选择,从 rankList 中提取相应的数据进行渲染。用户交互:
tab1Current 或 tab2Current 索引,从而切换显示的榜单内容。onSelectChange。这会更新 ocaId,保存到本地缓存,并重新调用 getCardRankDetailQuery 刷新榜单数据。btnStartGame):
/pages/tpl/style3/rankOverview(概览页)或其他指定页面。/pages/tpl/style3/signup(报名页)。消息与通知:
my-popup 提示用户。dealNotice)也存在,用于提示用户榜单数据是否有变化。该页面集成了多个后端 API,主要包括:
apiMatchRsDetailQuery:
apiMapListQuery:
apiCompStatisticQuery:
totalDistance)、总答题数 (totalAnswerNum) 等,展示在页面顶部。apiCardRankDetailQuery:
mcIdListStr (赛事ID), ocaId (当前选中的地图/分组ID), dispArrStr (请求的字段集合)。apiUserJoinCardQuery:
apiIsAllowMcSignUp:
组件:
my-topbar: 顶部导航与功能入口。my-tab: 支持多级和下拉选择的 Tab 切换组件。my-ranklist: 负责渲染排名列表的核心组件。my-popup: 通用的弹窗组件,用于显示各类信息。本地存储 (Storage):
mapKey: 持久化用户选择的分组/地图 ID,提升用户体验。messageKey: 记录已读消息,防止重复弹窗干扰用户。firstEnterKey: 用于判断是否首次进入,以展示引导信息。