对于表格,列表末尾数据可删除时,存在删除后刷新数据,当前分页下无数据的问题。
这里需要对几种状态条件做处理:
- 删除后数据当前分页数据不为空
- 删除后数据当前分页数据为空,分页号不为1 即只剩最后一页
- 删除后数据当前分页数据为空,分页号为1
状况1和状态3: 直接刷新当前分页数据
状态2:需要获取前一页数据
所以处理的方式主要是对三种状态的判断和对应的分页号计算,注:这里可能存在删除一条或多条(批量删除)
实现
/**
* 列表删除最后当前分页是否为空,是否需要计算刷新的分页号
* @summary
* 通过total, pageSize 计算是否为第一页
* listOrLength, deleteLength 判断删除数据后
*/
export default function deleteLastPage (options) {
const {
pageNum,
total,
pageSize,
listOrLength,
deleteLength = 1
} = options
const totalPage = Math.ceil(total / pageSize)
const currentListLength = Array.isArray(listOrLength) ? listOrLength.length : listOrLength
// 判断是否删除末尾数据, 即: 末尾页的最后一条数据
const isLast = currentListLength <= deleteLength && (totalPage === pageNum)
if (!isLast) {
return pageNum
}
// const prePageNum = pageNum - 1
// if (prePageNum >= 1) {
// return prePageNum
// }
// return 1
// 与上面 prePageNum 获取的等价算法
return [pageNum - 1, 1].sort((a, b) => a - b)[1]
}