与牧同行-兽医端小程序
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.
 

129 lines
3.3 KiB

import http from '../../../utils/api'
const baseUrl = require('../../../utils/baseUrl')
Page({
data: {
baseUrl: baseUrl,
user: {},
// 聊天申请列表数据
applyList: [],
// 分页相关
page: 1,
pageSize: 10,
total: 0,
hasMore: true, // 是否还有更多数据
isLoading: false, // 是否正在加载
isFirstLoad: true, // 是否首次加载
},
onLoad() {
this.getzj()
this.getsessions(true) // true 表示首次加载(重置列表)
},
// 个人专家信息
getzj() {
const user = wx.getStorageSync('userInfo')
console.log(222, user)
this.setData({
user: user
})
},
// 咨询列表 - 支持分页加载
getsessions(isRefresh = false) {
// 防止重复请求
if (this.data.isLoading) return
// 如果是加载更多但已无更多数据,直接返回
if (!isRefresh && !this.data.hasMore) return
this.setData({ isLoading: true })
// 准备请求参数
const params = {
page: isRefresh ? 1 : this.data.page,
pageSize: this.data.pageSize
}
http.sessions({
data: params,
success: (res) => {
console.log('接口返回数据:', res)
let newList = []
let total = 0
if (Array.isArray(res)) {
// 如果直接返回数组
newList = res
total = res.length
} else if (res.data && Array.isArray(res.data)) {
// 如果返回 { data: [], total: 100 }
newList = res.data
total = res.total || res.data.length
} else if (res.list && Array.isArray(res.list)) {
// 如果返回 { list: [], total: 100 }
newList = res.list
total = res.total || res.list.length
} else {
console.error('接口返回格式不正确', res)
newList = []
total = 0
}
// 计算是否有更多数据
const currentPage = isRefresh ? 1 : this.data.page
const pageSize = this.data.pageSize
const hasMore = currentPage * pageSize < total
this.setData({
applyList: isRefresh ? newList : [...this.data.applyList, ...newList],
total: total,
page: isRefresh ? 2 : this.data.page + 1, // 下次请求的页码
hasMore: hasMore,
isLoading: false,
isFirstLoad: false
})
},
fail: (err) => {
console.error('加载失败:', err)
wx.showToast({
title: '加载失败',
icon: 'none'
})
this.setData({
isLoading: false,
isFirstLoad: false
})
}
})
},
// 加载更多(上拉触底触发)
loadMore() {
// 如果有更多数据且不在加载中,则加载下一页
if (this.data.hasMore && !this.data.isLoading) {
this.getsessions(false)
}
},
// 处理点击申请项
handleApply(e) {
console.log(111, e)
const id = e.currentTarget.dataset.id
wx.navigateTo({
url: `/pagesA/pages/expertChat/expertChat?id=${id}`,
})
},
// 可选:下拉刷新功能
onPullDownRefresh() {
this.setData({
page: 1,
hasMore: true
})
this.getsessions(true)
// 停止下拉刷新
wx.stopPullDownRefresh()
}
})