Mecanismo sort para tablas

This commit is contained in:
2026-03-27 08:45:51 -05:00
parent d35f02563a
commit d93c4c6b7b
39 changed files with 1724 additions and 1237 deletions

View File

@@ -59,6 +59,8 @@ export interface A76ClassListParams {
class_code?: string;
description?: string;
q?: string; // Agregado por si usas búsqueda general
sort_by?: string;
sort_order?: 'asc' | 'desc';
}
// --- API OBJECT ---
@@ -112,12 +114,17 @@ export const classesApi = {
company_id: number;
page?: number;
page_size?: number;
sort_by?: string;
sort_order?: 'asc' | 'desc';
}): Promise<ApiResponse<A76Class[]>> => {
const query = new URLSearchParams({
company_id: params.company_id.toString(),
page: (params.page || 1).toString(),
page_size: (params.page_size || 1000).toString()
});
if (params.sort_by) query.append('sort_by', params.sort_by);
if (params.sort_order) query.append('sort_order', params.sort_order);
return api.get(`/v1/a76/classes/with-fa-data?${query.toString()}`);
}
};

View File

@@ -154,7 +154,9 @@ export const partsApi = {
company_id: number;
page?: number;
page_size?: number;
q?: string
q?: string;
sort_by?: string;
sort_order?: 'asc' | 'desc';
}) => {
const { company_id, page = 1, page_size = 50, q = '' } = params;
@@ -168,6 +170,9 @@ export const partsApi = {
queryParams.description = q;
}
if (params.sort_by) queryParams.sort_by = params.sort_by;
if (params.sort_order) queryParams.sort_order = params.sort_order;
const query = new URLSearchParams(queryParams);
return api.get<PartListResponse>(`/v1/a76/parts/?${query.toString()}`);

View File

@@ -274,6 +274,8 @@ export interface PedimentoFilters {
status?: string;
client_id?: number;
year?: string;
sort_by?: string;
sort_order?: 'asc' | 'desc' | string;
}
/**
@@ -288,19 +290,21 @@ export const pedimentosApi = {
* @param companyId - ID de la compañía (por defecto 1)
*/
list: (page = 1, pageSize = 50, filters?: PedimentoFilters, companyId?: number) => {
let url = `/v1/a76/pedimentos/?company_id=${companyId}&page=${page}&page_size=${pageSize}`;
const params = new URLSearchParams({
company_id: companyId?.toString() || '',
page: page.toString(),
page_size: pageSize.toString()
});
if (filters?.status) {
url += `&status=${encodeURIComponent(filters.status)}`;
}
if (filters?.client_id) {
url += `&client_id=${filters.client_id}`;
}
if (filters?.year) {
url += `&year=${encodeURIComponent(filters.year)}`;
if (filters) {
Object.entries(filters).forEach(([key, value]) => {
if (value !== undefined && value !== null && value !== '') {
params.append(key, value.toString());
}
});
}
return api.get<PedimentoListResponse>(url);
return api.get<PedimentoListResponse>(`/v1/a76/pedimentos/?${params.toString()}`);
},
/**