2.8 KiB
2.8 KiB
winB_Pagination 分页管理工厂函数说明
概述
用于生成带 winB_ 前缀的 Vue mixin,统一管理分页列表。支持两种模式:上拉加载更多(loadMore)与分页器(pager)。
期望接口返回结构
code: 业务码,应为200rows: 当前页数据数组total: 数据总条数
选项(createPagination options)
- fetchData: 必填,请求函数,入参为
winB_QueryParams - defaultParams: 初始查询参数(合并到
winB_QueryParams) - mode:
'loadMore' | 'pager',默认loadMore - pageSize: 每页条数,默认
10 - autoLoad: 组件创建时是否自动请求,默认
true
状态与计算属性
- 核心状态
winB_List: 数据列表winB_Loading: 加载中标记winB_Error: 错误对象winB_QueryParams:{ pageNum, pageSize, ...defaultParams }winB_Pagination:{ total, currentPage, pageSize, totalPages, remainingItems }winB_NoMore:loadMore模式下是否还有更多
- 计算属性
winB_HasData: 列表是否有数据winB_IsEmpty: 非加载且列表为空winB_CanLoadMore: 仅在loadMore模式、未到尽头且未加载时为true
主要方法
- winB_GetList(reset = false): 拉取数据;
reset时清空并重置页码为 1,成功后更新列表与分页信息;在loadMore模式下计算winB_NoMore。 - winB_Refresh(): 重置并刷新(等价于
winB_GetList(true))。 - winB_LoadMore(): 上拉加载下一页(仅在
winB_CanLoadMore时生效)。 - winB_GoToPage(page): 分页器模式跳页(校验范围与重复页)。
- winB_Reset(): 重置所有分页相关状态与列表。
- winB_UpdateParams(newParams): 合并查询参数并重置页码为 1,然后重置与拉取。
- winB_FormatDate(dateString): 将日期格式化为
YYYY.MM.DD。
生命周期
- created: 当
autoLoad=true时自动调用winB_GetList()。
使用示例
// 导入
import { createPagination } from "../../composables/winB_Pagination";
export default {
mixins: [
createPagination({
fetchData: getProjectSchedule,
mode: "loadMore", // 或 "pager"
pageSize: 5,
autoLoad: false, // 手动触发时设为 false
}),
],
created() {
// 条件就绪后触发首次加载
this.winB_UpdateParams({ formedId: this.formedId });
},
onReachBottom() {
this.winB_LoadMore();
},
};
<!-- 列表渲染 -->
<view v-for="(item, index) in winB_List" :key="index">...</view>
小提示
fetchData应直接返回包含code/rows/total的对象。若接口结构不同,可在fetchData外层适配或在winB_GetList内做映射。- 切换筛选条件时使用
winB_UpdateParams,它会自动重置页码并刷新。