与牧同行-兽医端小程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

127 lines
3.0 KiB

import http from '../../../utils/api'
const baseUrl = require('../../../utils/baseUrl')
Page({
data: {
baseUrl: baseUrl,
loadMoreText: '上拉加载更多',
evaluations: [],
pageNo: 1,
pageSize: 10,
total: 0,
isLoading: false,
hasMore: true
},
onLoad() {
this.getfeedback(true)
},
// 服务评价列表
getfeedback(isRefresh = false) {
// 防止重复请求
if (this.data.isLoading) return
// 如果没有更多数据且不是刷新,直接返回
if (!this.data.hasMore && !isRefresh) {
this.setData({
loadMoreText: '—— 没有更多了 ——'
})
return
}
this.setData({ isLoading: true })
// 如果是刷新,重置为第一页
if (isRefresh) {
this.setData({
pageNo: 1,
hasMore: true
})
}
// 显示加载提示
if (this.data.pageNo > 1) {
this.setData({ loadMoreText: '加载中...' })
}
http.feedback({
data: {
type: '服务评价',
pageNo: this.data.pageNo,
pageSize: this.data.pageSize
},
success: res => {
console.log('评价列表响应:', res)
if (res && res.rows) {
const list = res.rows || []
const total = res.total || 0
// 判断是否还有更多数据
const hasMore = this.data.pageNo * this.data.pageSize < total
this.setData({
evaluations: isRefresh ? list : this.data.evaluations.concat(list),
total: total,
hasMore: hasMore,
loadMoreText: hasMore ? '上拉加载更多' : '—— 没有更多了 ——',
pageNo: this.data.pageNo + 1
})
} else {
// 处理异常情况
if (isRefresh) {
this.setData({
evaluations: [],
hasMore: false,
loadMoreText: '—— 没有更多了 ——'
})
}
}
},
fail: err => {
console.error('获取评价列表失败:', err)
wx.showToast({
title: '加载失败',
icon: 'none'
})
// 加载失败时,恢复加载提示
this.setData({
loadMoreText: this.data.hasMore ? '点击重试' : '—— 没有更多了 ——'
})
},
complete: () => {
this.setData({ isLoading: false })
wx.hideNavigationBarLoading()
wx.stopPullDownRefresh()
}
})
},
// 下拉刷新
onPullDownRefresh() {
wx.showNavigationBarLoading()
this.getfeedback(true)
},
// 上拉加载更多
onReachBottom() {
if (this.data.hasMore && !this.data.isLoading) {
this.getfeedback()
} else if (!this.data.hasMore) {
this.setData({
loadMoreText: '—— 没有更多了 ——'
})
}
},
// 重新加载(可用于点击重试)
retryLoad() {
if (this.data.evaluations.length === 0) {
this.getfeedback(true)
} else if (this.data.hasMore) {
this.getfeedback()
}
}
})