Files
zkxw/web-admin/src/utils/sort-order.ts
T
2026-05-26 19:04:27 +08:00

30 lines
1.1 KiB
TypeScript

/**
* 新增时默认排序号:当前列表中最大 sortOrder + 1;无任何数据时为 0。
* 依赖列表接口按 sort_order 升序分页(最后一页含最大排序号)。
*/
import { MAX_ADMIN_LIST_PAGE_SIZE } from '@/utils/fetch-paged-list'
export async function fetchNextSortOrder(
fetchList: (params: {
page: number
pageSize: number
keyword?: string
isActive?: boolean | number | string | undefined
}) => Promise<{ list: { sortOrder?: number }[]; total: number }>,
options?: { pageSize?: number }
): Promise<number> {
const requested = options?.pageSize ?? MAX_ADMIN_LIST_PAGE_SIZE
const pageSize = Math.min(Math.max(1, requested), MAX_ADMIN_LIST_PAGE_SIZE)
const first = await fetchList({ page: 1, pageSize })
const total = first.total ?? 0
if (total === 0) return 0
const lastPage = Math.ceil(total / pageSize)
const res = lastPage <= 1 ? first : await fetchList({ page: lastPage, pageSize })
const list = res.list ?? []
const nums = list.map((r) => {
const n = Number(r.sortOrder)
return Number.isFinite(n) ? n : 0
})
return (nums.length ? Math.max(...nums) : 0) + 1
}