55 lines
1.7 KiB
JavaScript
55 lines
1.7 KiB
JavaScript
const app = getApp()
|
|
|
|
const groupByType = (list) => ({
|
|
word: list.filter((item) => item.entry_type === 'word'),
|
|
sentence: list.filter((item) => item.entry_type === 'sentence'),
|
|
})
|
|
|
|
Page({
|
|
data: {
|
|
reviewList: [],
|
|
masteredList: [],
|
|
reviewWords: [],
|
|
reviewSentences: [],
|
|
masteredWords: [],
|
|
masteredSentences: [],
|
|
reviewWordCollapsed: false,
|
|
reviewSentenceCollapsed: false,
|
|
masteredWordCollapsed: false,
|
|
masteredSentenceCollapsed: false,
|
|
loading: false,
|
|
error: '',
|
|
},
|
|
onShow() {
|
|
this.loadData()
|
|
},
|
|
toggleSection(e) {
|
|
const key = e.currentTarget.dataset.key
|
|
this.setData({ [key]: !this.data[key] })
|
|
},
|
|
loadData() {
|
|
this.setData({ loading: true, error: '' })
|
|
wx.request({
|
|
url: `${app.globalData.baseUrl}/api/v1/progress/review`,
|
|
header: { 'X-Auth-Token': app.globalData.authToken || '' },
|
|
success: (res) => {
|
|
const reviewList = res.data?.data || []
|
|
const grouped = groupByType(reviewList)
|
|
this.setData({ reviewList, reviewWords: grouped.word, reviewSentences: grouped.sentence })
|
|
},
|
|
fail: () => this.setData({ error: '待复习数据加载失败' }),
|
|
})
|
|
wx.request({
|
|
url: `${app.globalData.baseUrl}/api/v1/progress/mastered`,
|
|
header: { 'X-Auth-Token': app.globalData.authToken || '' },
|
|
success: (res) => {
|
|
const masteredList = res.data?.data || []
|
|
const grouped = groupByType(masteredList)
|
|
this.setData({ masteredList, masteredWords: grouped.word, masteredSentences: grouped.sentence })
|
|
},
|
|
fail: () => this.setData({ error: '已掌握数据加载失败' }),
|
|
complete: () => this.setData({ loading: false }),
|
|
})
|
|
},
|
|
})
|