58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
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.reLaunch({ url: '/pages/index/index' })
|
|
},
|
|
goToReview() {
|
|
wx.navigateTo({ url: '/pages/review-config/review-config' })
|
|
},
|
|
goToMe() {},
|
|
})
|