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