kydc/review-result/review-result.js

61 lines
1.9 KiB
JavaScript
Raw Normal View History

2026-04-18 17:16:49 +08:00
const app = getApp()
Page({
data: {
2026-04-19 11:56:49 +08:00
accuracy: 0,
timeUsed: '--:--',
total: 0,
mastered: 0,
reviewNeeded: 0,
2026-04-19 16:39:02 +08:00
improved: 0,
regressed: 0,
2026-04-19 11:56:49 +08:00
loading: false,
error: '',
2026-04-18 17:16:49 +08:00
},
onLoad() {
2026-04-19 11:56:49 +08:00
this.loadResult()
},
loadResult() {
const sessionId = app.globalData.reviewSessionMeta?.id
2026-04-19 16:39:02 +08:00
const fallbackSession = app.globalData.reviewSession
2026-04-23 11:34:54 +08:00
if (!sessionId) {
if (fallbackSession?.completed) {
this.setData({ error: '本地复习已完成,但结果会话信息已丢失' })
} else {
this.setData({ error: '暂无复习结果' })
}
2026-04-19 11:56:49 +08:00
return
}
this.setData({ loading: true, error: '' })
wx.request({
url: `${app.globalData.baseUrl}/api/v1/review-result?session_id=${sessionId}`,
header: { 'X-OpenID': app.globalData.openid || '' },
success: (res) => {
2026-04-19 16:39:02 +08:00
const data = res.data?.data || {}
const total = Number(data.total || 0)
const correct = Number(data.correct || 0)
const wrong = Number(data.wrong || Math.max(0, total - correct))
const accuracy = total ? Math.round((correct / total) * 100) : 0
this.setData({
total,
accuracy,
mastered: Number(data.mastered ?? correct),
reviewNeeded: Number(data.review_needed ?? wrong),
improved: Number(data.improved ?? 0),
regressed: Number(data.regressed ?? 0),
timeUsed: data.time_used || '--:--',
})
2026-04-19 11:56:49 +08:00
},
fail: () => this.setData({ error: '结果加载失败' }),
complete: () => this.setData({ loading: false }),
2026-04-18 17:16:49 +08:00
})
},
restart() {
app.globalData.reviewSession = { deck: [], currentIndex: 0, correctCount: 0, wrongCount: 0, completed: false, currentAnswer: '' }
wx.reLaunch({ url: '/pages/review-config/review-config' })
},
goHome() {
wx.reLaunch({ url: '/pages/index/index' })
},
})