通用分类分页加载器的完善3.0

This commit is contained in:
WindowBird 2025-08-26 11:24:37 +08:00
parent 8df43ff8d4
commit 44d3469bc1
2 changed files with 8 additions and 23 deletions

View File

@ -58,33 +58,17 @@ export function usePagination(options = {}) {
try {
const response = await fetchData(queryParams.value)
if (!response || response.code !== 200) {
throw new Error(response?.message || '获取数据失败')
}
const { rows = [], total = 0 } = response
// 数据转换将API返回的用户数据转换为页面需要的格式
const transformedData = rows.map(user => ({
...user,
isExpanded: false, // 默认收起
// 将orders转换为devices格式
devices: user.orders
? user.orders.map(order => ({
type: order.typeName || '未知设备',
amount: order.amount || 0,
rentDate: formatDate(order.leaseTime),
period: order.suitName || '未知周期',
expiryDate: formatDate(order.expirationTime),
}))
: [],
}))
if (reset) {
list.value = transformedData
list.value = rows
} else {
list.value.push(...transformedData)
list.value.push(...rows)
}
// 更新分页信息
@ -98,10 +82,12 @@ export function usePagination(options = {}) {
// 检查是否还有更多数据
if (mode === 'loadMore') {
noMore.value = queryParams.value.pageNum * pageSize >= total
console.log(`noMore状态: ${noMore.value}, 当前页: ${queryParams.value.pageNum}, 每页: ${pageSize}, 总数: ${total}`)
console.log(
`noMore状态: ${noMore.value}, 当前页: ${queryParams.value.pageNum}, 每页: ${pageSize}, 总数: ${total}`
)
}
console.log(`获取数据成功: 第${queryParams.value.pageNum}页,共${transformedData.length}`)
console.log(`获取数据成功: 第${queryParams.value.pageNum}页,共${rows.length}`)
} catch (err) {
console.error('获取数据失败:', err)
error.value = err
@ -182,7 +168,7 @@ export function usePagination(options = {}) {
* @param {string} dateString - 日期字符串
* @returns {string} 格式化后的日期
*/
const formatDate = (dateString) => {
const formatDate = dateString => {
if (!dateString) return '未知'
const date = new Date(dateString)
return `${date.getFullYear()}.${String(date.getMonth() + 1).padStart(2, '0')}.${String(date.getDate()).padStart(2, '0')}`

View File

@ -105,7 +105,6 @@
<script setup>
import { ref, reactive, onMounted } from 'vue'
import { onReachBottom } from '@dcloudio/uni-app'
import { commonEnum } from '@/enum/commonEnum.js'
import { getUserList } from '@/api/user/user.js'
import UniIcons from '../../uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
import { usePagination } from '@/composables/usePagination.js'