pagedList.ts
859 Bytes
import { unwrapApiPayload } from './usAppApiRequest'
/** 解析分页 JSON:兼容 items / Items、camelCase / PascalCase、ABP 包装 */
export function extractPagedItems<T>(responseBody: unknown): {
items: T[]
totalCount: number
pageIndex: number
pageSize: number
} {
const raw = unwrapApiPayload<Record<string, unknown>>(responseBody)
if (raw == null || typeof raw !== 'object') {
return { items: [], totalCount: 0, pageIndex: 1, pageSize: 0 }
}
const itemsRaw = raw.items ?? raw.Items
const items = Array.isArray(itemsRaw) ? (itemsRaw as T[]) : []
const totalCount = Number(raw.totalCount ?? raw.TotalCount ?? items.length) || 0
const pageIndex = Number(raw.pageIndex ?? raw.PageIndex ?? 1) || 1
const pageSize = Number(raw.pageSize ?? raw.PageSize ?? items.length) || 0
return { items, totalCount, pageIndex, pageSize }
}