表格,列表末尾数据删除后分页回退的处理

对于表格,列表末尾数据可删除时,存在删除后刷新数据,当前分页下无数据的问题。
这里需要对几种状态条件做处理:

  1. 删除后数据当前分页数据不为空
  2. 删除后数据当前分页数据为空,分页号不为1 即只剩最后一页
  3. 删除后数据当前分页数据为空,分页号为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]
}



你可能感兴趣的:(表格,列表末尾数据删除后分页回退的处理)