44 lines
1019 B
TypeScript
44 lines
1019 B
TypeScript
![]() |
import { reactive } from "vue"
|
||
|
|
||
|
interface IDefaultPaginationData {
|
||
|
total: number
|
||
|
currentPage: number
|
||
|
pageSizes: number[]
|
||
|
pageSize: number
|
||
|
layout: string
|
||
|
}
|
||
|
|
||
|
interface IPaginationData {
|
||
|
total?: number
|
||
|
currentPage?: number
|
||
|
pageSizes?: number[]
|
||
|
pageSize?: number
|
||
|
layout?: string
|
||
|
}
|
||
|
|
||
|
/** 默认的分页参数 */
|
||
|
const defaultPaginationData: IDefaultPaginationData = {
|
||
|
total: 0,
|
||
|
currentPage: 1,
|
||
|
pageSizes: [10, 20, 50],
|
||
|
pageSize: 10,
|
||
|
layout: "total, sizes, prev, pager, next, jumper"
|
||
|
}
|
||
|
|
||
|
export const usePagination = (_paginationData: IPaginationData = {}) => {
|
||
|
/** 合并分页参数 */
|
||
|
const paginationData = reactive(Object.assign({ ...defaultPaginationData }, _paginationData))
|
||
|
|
||
|
/** 改变当前页码 */
|
||
|
const handleCurrentChange = (value: number) => {
|
||
|
paginationData.currentPage = value
|
||
|
}
|
||
|
|
||
|
/** 改变页面大小 */
|
||
|
const handleSizeChange = (value: number) => {
|
||
|
paginationData.pageSize = value
|
||
|
}
|
||
|
|
||
|
return { paginationData, handleCurrentChange, handleSizeChange }
|
||
|
}
|