pages/tpl/style3/index.vue 交互流程与 API 分析pages/tpl/style3/index.vue 是一个用于展示赛事卡片概览的页面。以下是其详细的交互流程和 API 调用分析。
页面初始化 (onLoad):
token (用户令牌)、id (卡片ID,即 ecId)、type (卡片类型,例如“锦标赛”) 和 btnText (按钮文本,例如“开始比赛”) 等信息。cardfunc: 调用 cardfunc.init() 方法,对卡片功能相关的模块进行初始化。cardfunc.getCardConfig() 获取卡片页面所需的配置数据。这些配置可能包括页面的样式规则和通用设置。配置成功加载后,pageReady 状态会被设为 true,页面内容将显示给用户。getCardBaseQuery() 方法来获取卡片的基本信息。matchRsDetailQuery() 方法获取赛事的详细数据,这部分数据主要用于检测更新和显示“小红点”通知。页面逻辑处理:
getCardBaseQuery 成功返回数据后,页面会启动一个定时器 (setInterval)。这个定时器每分钟会调用 getCountdown() 方法来更新页面上显示的倒计时。当赛事结束时,isFinished 状态会被设为 true。dealNotice): matchRsDetailQuery 返回的数据会被转换为 JSON 字符串,然后与存储在本地缓存 (uni.getStorage) 中的旧数据进行对比。如果数据有差异,意味着有新的更新,页面会设置 notice = true 来显示一个“小红点”通知图标。btnClick): 用户点击卡片主体时,会根据当前赛事的报名状态和结束状态执行不同的跳转逻辑:
/pages/tpl/style3/rankList)。secondCardName 的配置,跳转到报名页 (/pages/tpl/style3/signup) 或排行榜页。tools.appAction(url) 方法完成。页面卸载 (onUnload):
clear() 方法来清除之前设置的倒计时定时器。该页面通过 uni.request 发起以下后端 API 请求,这些 API 的定义通常在 common/api.js 中:
apiCardBaseQuery:
ecId (卡片ID), pageName (当前页面名称,此处为 "index")。ecName (卡片名称), ecDesc (卡片简介), beginSecond (开始时间戳), endSecond (结束时间戳), secondCardName (次级卡片名称,用于跳转逻辑)。apiUserJoinCardQuery:
ecId (卡片ID)。isJoin (布尔值,表示用户是否已报名)。isJoin 的值,页面会更新按钮文本或决定 btnClick 后的跳转行为。apiMatchRsDetailQuery:
ecId (卡片ID)。dealNotice 方法)。如果数据有更新,则会在页面上显示一个通知图标(“小红点”)。uni.getStorage, uni.setStorage)rank-tpl-style3-{ecId}: 用于存储 apiMatchRsDetailQuery 返回的数据的 JSON 字符串。这个值用于在用户返回页面时,与最新的数据进行比较,以判断是否有新的榜单信息需要提醒用户。