yunzai-micro-plugin
Version:
Yunzai开发管理面板
61 lines (52 loc) • 1.31 kB
text/typescript
/** 分页器 */
export default class Pager {
$list:any[]
$pageNum:number
$pageSize:number
constructor(list:any[], pageNum:number, pageSize:number) {
this.$list = list
this.$pageNum = pageNum
this.$pageSize = pageSize
}
get pageNum() {
return this.$pageNum
}
set pageNum(pageNum) {
this.$pageNum = pageNum
}
get pageSize() {
return this.$pageSize
}
set pageSize(pageSize) {
this.$pageSize = pageSize
}
/** 根据当前分页条件,计算出的数据 */
get records() {
return [...this.$list].splice(this.offset, this.$pageSize)
}
/** 计算当前分页偏移量 */
get offset() {
let current = this.$pageNum
if (current <= 1) {
return 0
}
return Math.max((current - 1) * this.$pageSize, 0)
}
/** 最大页码 */
get maxNum() {
return Math.ceil(this.total / this.$pageSize)
}
/** 总行数 */
get total() {
return this.$list.length
}
toJSON() {
return {
pageNum: this.$pageNum,
pageSize: this.$pageSize,
total: this.total,
maxNum: this.maxNum,
records: this.records,
}
}
}