kydc/progress-list/progress-list.js

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 }),
})
},
})