/** * 新增时默认排序号:当前列表中最大 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 { 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 }