代码格式化

This commit is contained in:
WindowBird 2025-08-26 09:11:00 +08:00
parent f4e5481108
commit 04e2fd29bc
3 changed files with 45 additions and 57 deletions

View File

@ -10,130 +10,124 @@ import { ref, computed } from 'vue'
* @returns {Object} 分页相关的状态和方法 * @returns {Object} 分页相关的状态和方法
*/ */
export function usePagination(options = {}) { export function usePagination(options = {}) {
const { const { fetchData, defaultParams = {}, mode = 'loadMore', pageSize = 10 } = options
fetchData,
defaultParams = {},
mode = 'loadMore',
pageSize = 10
} = options
// 基础状态 // 基础状态
const list = ref([]) const list = ref([])
const loading = ref(false) const loading = ref(false)
const error = ref(null) const error = ref(null)
// 分页参数 // 分页参数
const queryParams = ref({ const queryParams = ref({
pageNum: 1, pageNum: 1,
pageSize, pageSize,
...defaultParams ...defaultParams,
}) })
// 分页信息 // 分页信息
const pagination = ref({ const pagination = ref({
total: 0, total: 0,
currentPage: 1, currentPage: 1,
pageSize, pageSize,
totalPages: 0 totalPages: 0,
}) })
// 上拉加载相关 // 上拉加载相关
const noMore = ref(false) const noMore = ref(false)
// 计算属性 // 计算属性
const hasData = computed(() => list.value.length > 0) const hasData = computed(() => list.value.length > 0)
const isEmpty = computed(() => !loading.value && list.value.length === 0) const isEmpty = computed(() => !loading.value && list.value.length === 0)
const canLoadMore = computed(() => mode === 'loadMore' && !noMore.value && !loading.value) const canLoadMore = computed(() => mode === 'loadMore' && !noMore.value && !loading.value)
/** /**
* 获取数据列表 * 获取数据列表
* @param {boolean} isRefresh - 是否为刷新操作 * @param {boolean} isRefresh - 是否为刷新操作
*/ */
const getList = async (isRefresh = false) => { const getList = async (isRefresh = false) => {
if (loading.value) return if (loading.value) return
try { try {
loading.value = true loading.value = true
error.value = null error.value = null
// 如果是刷新,重置页码 // 如果是刷新,重置页码
if (isRefresh) { if (isRefresh) {
queryParams.value.pageNum = 1 queryParams.value.pageNum = 1
noMore.value = false noMore.value = false
} }
const res = await fetchData(queryParams.value) const res = await fetchData(queryParams.value)
// 处理响应数据 // 处理响应数据
const newData = res?.rows || [] const newData = res?.rows || []
const total = res?.total || 0 const total = res?.total || 0
// 更新分页信息 // 更新分页信息
pagination.value = { pagination.value = {
total, total,
currentPage: queryParams.value.pageNum, currentPage: queryParams.value.pageNum,
pageSize, pageSize,
totalPages: Math.ceil(total / pageSize) totalPages: Math.ceil(total / pageSize),
} }
// 更新数据列表 // 更新数据列表
if (isRefresh || queryParams.value.pageNum === 1) { if (isRefresh || queryParams.value.pageNum === 1) {
list.value = newData list.value = newData
} else { } else {
list.value = [...list.value, ...newData] list.value = [...list.value, ...newData]
} }
// 检查是否还有更多数据 // 检查是否还有更多数据
if (mode === 'loadMore') { if (mode === 'loadMore') {
noMore.value = queryParams.value.pageNum * pageSize >= total noMore.value = queryParams.value.pageNum * pageSize >= total
} }
console.log(`获取数据成功: 第${queryParams.value.pageNum}页,共${newData.length}`) console.log(`获取数据成功: 第${queryParams.value.pageNum}页,共${newData.length}`)
} catch (err) { } catch (err) {
console.error('获取数据失败:', err) console.error('获取数据失败:', err)
error.value = err error.value = err
// 显示错误提示 // 显示错误提示
uni.showToast({ uni.showToast({
title: '数据加载失败', title: '数据加载失败',
icon: 'none' icon: 'none',
}) })
} finally { } finally {
loading.value = false loading.value = false
} }
} }
/** /**
* 刷新数据 * 刷新数据
*/ */
const refresh = () => { const refresh = () => {
getList(true) getList(true)
} }
/** /**
* 加载下一页上拉加载模式 * 加载下一页上拉加载模式
*/ */
const loadMore = () => { const loadMore = () => {
if (!canLoadMore.value) return if (!canLoadMore.value) return
queryParams.value.pageNum++ queryParams.value.pageNum++
getList() getList()
} }
/** /**
* 跳转到指定页分页器模式 * 跳转到指定页分页器模式
* @param {number} page - 目标页码 * @param {number} page - 目标页码
*/ */
const goToPage = (page) => { const goToPage = page => {
if (page < 1 || page > pagination.value.totalPages || page === queryParams.value.pageNum) { if (page < 1 || page > pagination.value.totalPages || page === queryParams.value.pageNum) {
return return
} }
queryParams.value.pageNum = page queryParams.value.pageNum = page
getList(true) getList(true)
} }
/** /**
* 重置分页状态 * 重置分页状态
*/ */
@ -147,24 +141,24 @@ export function usePagination(options = {}) {
total: 0, total: 0,
currentPage: 1, currentPage: 1,
pageSize, pageSize,
totalPages: 0 totalPages: 0,
} }
} }
/** /**
* 更新查询参数 * 更新查询参数
* @param {Object} newParams - 新的查询参数 * @param {Object} newParams - 新的查询参数
*/ */
const updateParams = (newParams) => { const updateParams = newParams => {
queryParams.value = { queryParams.value = {
...queryParams.value, ...queryParams.value,
...newParams, ...newParams,
pageNum: 1 // 重置页码 pageNum: 1, // 重置页码
} }
reset() reset()
getList() getList()
} }
return { return {
// 状态 // 状态
list, list,
@ -173,18 +167,18 @@ export function usePagination(options = {}) {
noMore, noMore,
pagination, pagination,
queryParams, queryParams,
// 计算属性 // 计算属性
hasData, hasData,
isEmpty, isEmpty,
canLoadMore, canLoadMore,
// 方法 // 方法
getList, getList,
refresh, refresh,
loadMore, loadMore,
goToPage, goToPage,
reset, reset,
updateParams updateParams,
} }
} }

View File

@ -2,7 +2,7 @@
export const DEV_CONFIG = { export const DEV_CONFIG = {
// 临时token用于开发测试 // 临时token用于开发测试
TEMP_TOKEN: TEMP_TOKEN:
'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjAwMjdjYTRkLTMwOTktNDA4OC04ZTI2LTUzOTQwNGJkZDg0MyJ9.4zQ96QGHIvWy3cJciCPF0e8XWHY2NC9e9svrc9rqNKarnHhiqrAXZ2ZqMfN2AGbSVYVEs6OhUkkrEedupOXYGQ', 'eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjM2YzUxYWQxLTVmZWMtNDI3Yy1iYjFkLThkYTFmZWE4OWM4MyJ9.Z8ZAPBw-pol_fsLudrWr4tHUn7b-zoMzWxIHnZItI4pW7VH7UsM8dzFwB6aWIzCBnmvnm8T1iTDCEvQT13ihEw',
// 是否使用临时token // 是否使用临时token
USE_TEMP_TOKEN: true, USE_TEMP_TOKEN: true,

View File

@ -56,40 +56,34 @@
<!-- 分页组件 --> <!-- 分页组件 -->
<pagination <pagination
:mode="'loadMore'" :current-page="pagination.currentPage"
:list="list" :list="list"
:loading="loading" :loading="loading"
:mode="'loadMore'"
:no-more="noMore" :no-more="noMore"
:total="pagination.total"
:current-page="pagination.currentPage"
:page-size="pagination.pageSize" :page-size="pagination.pageSize"
:total="pagination.total"
@page-change="handlePageChange" @page-change="handlePageChange"
/> />
</view> </view>
</template> </template>
<script setup> <script setup>
import { onMounted, onReachBottom } from '@dcloudio/uni-app' import { onMounted } from 'vue'
import { onReachBottom } from '@dcloudio/uni-app'
import { usePagination } from '@/composables/usePagination.js' import { usePagination } from '@/composables/usePagination.js'
import { getMyOrder } from '@/api/order/myOrder.js' import { getMyOrder } from '@/api/order/myOrder.js'
import Pagination from '@/components/pagination/pagination.vue' import Pagination from '@/components/pagination/pagination.vue'
// 使 // 使
const { const { list, loading, noMore, pagination, getList, loadMore } = usePagination({
list,
loading,
noMore,
pagination,
getList,
loadMore
} = usePagination({
fetchData: getMyOrder, fetchData: getMyOrder,
defaultParams: { defaultParams: {
orderByColumn: 'createTime', orderByColumn: 'createTime',
isAsc: 'descending' isAsc: 'descending',
}, },
mode: 'loadMore', mode: 'loadMore',
pageSize: 6 pageSize: 6,
}) })
// //
@ -103,7 +97,7 @@ onReachBottom(() => {
}) })
// //
const handlePageChange = (page) => { const handlePageChange = page => {
console.log('页码变化:', page) console.log('页码变化:', page)
} }