91 lines
2.0 KiB
JavaScript
91 lines
2.0 KiB
JavaScript
|
|
import { injectPage } from '@jdmini/api'
|
||
|
|
const { getWorksheets } = require('../../utils/api.js')
|
||
|
|
const { DATA_BASE_URL } = require('../../utils/config.js')
|
||
|
|
|
||
|
|
Page(injectPage({})({
|
||
|
|
data: {
|
||
|
|
dataBaseUrl: DATA_BASE_URL,
|
||
|
|
categoryId: null,
|
||
|
|
categoryName: '',
|
||
|
|
worksheets: [],
|
||
|
|
page: 1,
|
||
|
|
pageSize: 20,
|
||
|
|
hasMore: true,
|
||
|
|
loading: false
|
||
|
|
},
|
||
|
|
|
||
|
|
onLoad(options) {
|
||
|
|
if (options.id) {
|
||
|
|
this.setData({ categoryId: Number(options.id) })
|
||
|
|
}
|
||
|
|
if (options.name) {
|
||
|
|
const name = decodeURIComponent(options.name)
|
||
|
|
this.setData({ categoryName: name })
|
||
|
|
wx.setNavigationBarTitle({ title: name })
|
||
|
|
}
|
||
|
|
this.loadWorksheets()
|
||
|
|
},
|
||
|
|
|
||
|
|
onPullDownRefresh() {
|
||
|
|
this.setData({
|
||
|
|
page: 1,
|
||
|
|
hasMore: true,
|
||
|
|
worksheets: []
|
||
|
|
})
|
||
|
|
this.loadWorksheets().finally(() => {
|
||
|
|
wx.stopPullDownRefresh()
|
||
|
|
})
|
||
|
|
},
|
||
|
|
|
||
|
|
onReachBottom() {
|
||
|
|
if (this.data.hasMore && !this.data.loading) {
|
||
|
|
this.loadMore()
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 加载练习表列表
|
||
|
|
async loadWorksheets() {
|
||
|
|
if (this.data.loading) return
|
||
|
|
|
||
|
|
try {
|
||
|
|
this.setData({ loading: true })
|
||
|
|
|
||
|
|
const res = await getWorksheets({
|
||
|
|
category_id: this.data.categoryId,
|
||
|
|
page: this.data.page,
|
||
|
|
pageSize: this.data.pageSize
|
||
|
|
})
|
||
|
|
|
||
|
|
if (res.success) {
|
||
|
|
const newWorksheets = res.data.list || []
|
||
|
|
this.setData({
|
||
|
|
worksheets: this.data.page === 1 ? newWorksheets : [...this.data.worksheets, ...newWorksheets],
|
||
|
|
hasMore: newWorksheets.length >= this.data.pageSize,
|
||
|
|
loading: false
|
||
|
|
})
|
||
|
|
}
|
||
|
|
} catch (error) {
|
||
|
|
console.error('加载练习表失败:', error)
|
||
|
|
this.setData({ loading: false })
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 加载更多
|
||
|
|
async loadMore() {
|
||
|
|
if (this.data.loading || !this.data.hasMore) return
|
||
|
|
|
||
|
|
this.setData({
|
||
|
|
page: this.data.page + 1
|
||
|
|
})
|
||
|
|
await this.loadWorksheets()
|
||
|
|
},
|
||
|
|
|
||
|
|
// 跳转详情页
|
||
|
|
goDetail(e) {
|
||
|
|
const id = e.currentTarget.dataset.id
|
||
|
|
wx.navigateTo({
|
||
|
|
url: `/pages/detail/detail?id=${id}`
|
||
|
|
})
|
||
|
|
}
|
||
|
|
}))
|