| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- import { clearBackendAuthTokens, loadBackendAuthTokens, loadBackendBaseUrl } from '../../utils/backendAuth'
- import { getEntryHome, type BackendCardResult, type BackendEntryHomeResult } from '../../utils/backendApi'
- const DEFAULT_CHANNEL_CODE = 'mini-demo'
- const DEFAULT_CHANNEL_TYPE = 'wechat_mini'
- type HomePageData = {
- loading: boolean
- statusText: string
- userNameText: string
- tenantText: string
- channelText: string
- ongoingSessionText: string
- recentSessionText: string
- cards: BackendCardResult[]
- }
- function requireAuthToken(): string | null {
- const app = getApp<IAppOption>()
- const tokens = app.globalData && app.globalData.backendAuthTokens
- ? app.globalData.backendAuthTokens
- : loadBackendAuthTokens()
- return tokens && tokens.accessToken ? tokens.accessToken : null
- }
- Page({
- data: {
- loading: false,
- statusText: '准备加载首页',
- userNameText: '--',
- tenantText: '--',
- channelText: '--',
- ongoingSessionText: '无',
- recentSessionText: '无',
- cards: [],
- } as HomePageData,
- onLoad() {
- this.loadEntryHome()
- },
- onShow() {
- this.loadEntryHome()
- },
- async loadEntryHome() {
- const accessToken = requireAuthToken()
- if (!accessToken) {
- wx.redirectTo({ url: '/pages/login/login' })
- return
- }
- this.setData({
- loading: true,
- statusText: '正在加载首页聚合',
- })
- try {
- const result = await getEntryHome({
- baseUrl: loadBackendBaseUrl(),
- accessToken,
- channelCode: DEFAULT_CHANNEL_CODE,
- channelType: DEFAULT_CHANNEL_TYPE,
- })
- this.applyEntryHomeResult(result)
- } catch (error) {
- const message = error && (error as { message?: string }).message ? (error as { message: string }).message : '未知错误'
- this.setData({
- loading: false,
- statusText: `首页加载失败:${message}`,
- })
- }
- },
- applyEntryHomeResult(result: BackendEntryHomeResult) {
- this.setData({
- loading: false,
- statusText: '首页加载完成',
- userNameText: result.user.nickname || result.user.publicId || result.user.id,
- tenantText: `${result.tenant.name} (${result.tenant.code})`,
- channelText: `${result.channel.displayName} / ${result.channel.code}`,
- ongoingSessionText: result.ongoingSession
- ? `${result.ongoingSession.eventName || result.ongoingSession.eventDisplayName || result.ongoingSession.eventId || result.ongoingSession.id || result.ongoingSession.sessionId} / ${result.ongoingSession.status || result.ongoingSession.sessionStatus}`
- : '无',
- recentSessionText: result.recentSession
- ? `${result.recentSession.eventName || result.recentSession.eventDisplayName || result.recentSession.eventId || result.recentSession.id || result.recentSession.sessionId} / ${result.recentSession.status || result.recentSession.sessionStatus}`
- : '无',
- cards: result.cards || [],
- })
- },
- handleRefresh() {
- this.loadEntryHome()
- },
- handleOpenCard(event: WechatMiniprogram.TouchEvent) {
- const eventId = event.currentTarget.dataset.eventId as string | undefined
- if (!eventId) {
- wx.showToast({
- title: '该卡片暂无活动入口',
- icon: 'none',
- })
- return
- }
- wx.navigateTo({
- url: `/pages/event/event?eventId=${encodeURIComponent(eventId)}`,
- })
- },
- handleOpenRecentResult() {
- wx.navigateTo({
- url: '/pages/result/result',
- })
- },
- handleLogout() {
- clearBackendAuthTokens()
- const app = getApp<IAppOption>()
- if (app.globalData) {
- app.globalData.backendAuthTokens = null
- }
- wx.redirectTo({
- url: '/pages/login/login',
- })
- },
- })
|