ertonglianxibiao/pages/category-detail/category-detail.js

91 lines
2.0 KiB
JavaScript
Raw Permalink Normal View History

2026-01-14 15:33:15 +08:00
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}`
})
}
}))