Files
zeronline b01a5f91c3
CI / Server (Go) (push) Has been cancelled
CI / Web (Next.js) (push) Has been cancelled
CI / Mobile (React Native) (push) Has been cancelled
CI / Admin (React) (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
提交修改
2026-06-29 16:49:54 +08:00

26 lines
1.1 KiB
JavaScript

const api = require('../../services/api')
const app = getApp()
Page({
data: { user: null, items: [], streaks: {}, loading: true, themeMode: 'light' },
onShow() {
if (!app.globalData.token) { wx.reLaunch({ url: '/pages/login/index' }); return }
this.setData({ user: app.globalData.user, themeMode: app.globalData.themeMode })
this.loadItems()
},
onPullDownRefresh() { this.loadItems().then(() => wx.stopPullDownRefresh()) },
async loadItems() {
try {
const items = await api.get('/api/checkin/items')
const streaks = {}
for (const item of items.filter(i => i.status === 'active')) {
try { const s = await api.get('/api/checkin/streak/' + item.id); streaks[item.id] = s.streak } catch(e) {}
}
this.setData({ items: items.filter(i => i.status !== 'deleted'), streaks, loading: false })
} catch(e) { this.setData({ loading: false }) }
},
goCreate() { wx.navigateTo({ url: '/pages/checkin/create/index' }) },
goDetail(e) { wx.navigateTo({ url: '/pages/checkin/detail/index?id=' + e.currentTarget.dataset.id }) },
goProfile() { wx.switchTab({ url: '/pages/profile/index/index' }) },
})