修复工单系统竞态与接口安全问题
This commit is contained in:
@@ -1,5 +1,21 @@
|
||||
import { request } from './client.js';
|
||||
|
||||
export function normalizeTicketListResponse(data, fallbackPageSize = 20) {
|
||||
const payload = Array.isArray(data) ? { tickets: data } : (data && typeof data === 'object' ? data : {});
|
||||
const tickets = Array.isArray(payload.tickets)
|
||||
? payload.tickets
|
||||
: (Array.isArray(payload.list) ? payload.list : (Array.isArray(payload.items) ? payload.items : []));
|
||||
const pageSizeValue = Number(payload.pageSize ?? payload.page_size);
|
||||
const pageSize = Number.isInteger(pageSizeValue) && pageSizeValue > 0 ? pageSizeValue : fallbackPageSize;
|
||||
const totalValue = Number(payload.total ?? payload.count);
|
||||
const total = Number.isFinite(totalValue) && totalValue >= 0 ? totalValue : tickets.length;
|
||||
const totalPagesValue = Number(payload.totalPages ?? payload.total_pages ?? payload.pages);
|
||||
const totalPages = Number.isInteger(totalPagesValue) && totalPagesValue > 0
|
||||
? totalPagesValue
|
||||
: Math.max(1, Math.ceil(total / pageSize));
|
||||
return { tickets, total, totalPages };
|
||||
}
|
||||
|
||||
export function listTickets(params = {}) {
|
||||
const query = new URLSearchParams();
|
||||
if (params.page) query.set('page', String(params.page));
|
||||
|
||||
Reference in New Issue
Block a user