const app = getApp() Page({ data: { name: '', days: 0, badges: 0, openid: '', loading: false, error: '', }, onShow() { this.loadProfile() }, async loadProfile() { this.setData({ loading: true, error: '' }) await app.ensureLogin() if (!app.globalData.openid) { this.setData({ loading: false, error: '登录失败,请重试' }) return } this.setData({ openid: app.globalData.openid, name: '考研搭子' }) this.loadAchievements() this.setData({ loading: false }) }, loadAchievements() { if (!app.globalData.openid) { this.setData({ error: '未获取到登录态' }) return } wx.request({ url: `${app.globalData.baseUrl}/api/v1/achievements`, header: { 'X-OpenID': app.globalData.openid }, success: (res) => { const list = res.data?.data || [] const badges = Array.isArray(list) ? list.filter((i) => i.is_unlocked).length : 0 this.setData({ badges }) }, fail: () => this.setData({ error: '成就数据加载失败' }), }) }, goTo(e) { const { url } = e.currentTarget.dataset if (!app.globalData.openid) { wx.showToast({ title: '请先登录', icon: 'none' }) return } wx.navigateTo({ url }) }, goHome() { wx.switchTab({ url: '/pages/index/index' }) }, })