const api = require('../../utils/api') Page({ data: { notices: [], loading: true, error: null }, onLoad() { this.loadNotices() }, onBack() { wx.navigateBack() }, async loadNotices() { this.setData({ loading: true, error: null }) try { const res = await api.common.getNotices() console.log('[notices] 公告列表响应:', res) if (res.success && res.data) { const notices = res.data.map(item => ({ id: item.id, content: item.content, linkType: item.linkType || 'none', linkValue: item.linkValue || '', sortOrder: item.sortOrder || 0, createdAt: this.formatDate(item.createdAt) })) this.setData({ notices }) } else { this.setData({ error: res.error || '加载失败' }) } } catch (err) { console.error('[notices] 加载公告失败:', err) this.setData({ error: err.message || '加载失败' }) } finally { this.setData({ loading: false }) } }, onNoticeTap(e) { const notice = e.currentTarget.dataset.notice console.log('[notices] 点击公告:', notice) if (notice.linkType === 'web' && notice.linkValue) { wx.navigateTo({ url: `/pages/webview/webview?url=${encodeURIComponent(notice.linkValue)}` }) } else if (notice.linkType === 'miniprogram' && notice.linkValue) { wx.navigateToMiniProgram({ appId: notice.linkValue }) } else if (notice.linkType === 'article' && notice.linkValue) { wx.navigateTo({ url: `/pages/academy/detail/detail?id=${notice.linkValue}` }) } else { wx.navigateTo({ url: `/pages/notices/detail/detail?id=${notice.id}` }) } }, formatDate(dateStr) { if (!dateStr) return '' const date = new Date(dateStr) const year = date.getFullYear() const month = String(date.getMonth() + 1).padStart(2, '0') const day = String(date.getDate()).padStart(2, '0') return `${year}-${month}-${day}` } })