From 67967053b2f4da5afaab62a3db5462d83e0aad81 Mon Sep 17 00:00:00 2001 From: Kevin_Ramirez Date: Thu, 21 May 2026 08:53:11 -0500 Subject: [PATCH] Actualziacion reactiva en datos, estabilidad del formulario de creacion, cambio del nombre en los filtros --- .../general_catalogs/electronic-notices.ts | 7 ++- .../create-edit-dialog.svelte | 2 +- .../electronic_notices/+page.svelte | 50 +++++++++---------- 3 files changed, 32 insertions(+), 27 deletions(-) diff --git a/frontend/src/lib/api/dashboard/a76/general_catalogs/electronic-notices.ts b/frontend/src/lib/api/dashboard/a76/general_catalogs/electronic-notices.ts index 744a4d8d..3271458b 100644 --- a/frontend/src/lib/api/dashboard/a76/general_catalogs/electronic-notices.ts +++ b/frontend/src/lib/api/dashboard/a76/general_catalogs/electronic-notices.ts @@ -55,7 +55,12 @@ export async function getElectronicNotices( const params = new URLSearchParams({ page: page.toString(), page_size: pageSize.toString(), - ...filters + }); + // Excluir valores undefined/null para evitar que URLSearchParams los convierta al string "undefined" + Object.entries(filters).forEach(([key, value]) => { + if (value !== undefined && value !== null && value !== '') { + params.append(key, String(value)); + } }); if (companyId) { params.append('company_id', companyId.toString()); diff --git a/frontend/src/lib/components/dashboard/general_catalogs/electronic_notices/create-edit-dialog.svelte b/frontend/src/lib/components/dashboard/general_catalogs/electronic_notices/create-edit-dialog.svelte index e14af62a..b6c7bc1f 100644 --- a/frontend/src/lib/components/dashboard/general_catalogs/electronic_notices/create-edit-dialog.svelte +++ b/frontend/src/lib/components/dashboard/general_catalogs/electronic_notices/create-edit-dialog.svelte @@ -117,7 +117,7 @@ - + e.preventDefault()}> {title} diff --git a/frontend/src/routes/dashboard/general_catalogs/electronic_notices/+page.svelte b/frontend/src/routes/dashboard/general_catalogs/electronic_notices/+page.svelte index 5a2bc163..cf39b54d 100644 --- a/frontend/src/routes/dashboard/general_catalogs/electronic_notices/+page.svelte +++ b/frontend/src/routes/dashboard/general_catalogs/electronic_notices/+page.svelte @@ -47,8 +47,8 @@ manejarActualizar: () => reloadData() ); // Filtros -let searchCode = $state($page.url.searchParams.get('code') || ''); -let searchDesc = $state($page.url.searchParams.get('description') || ''); +let searchNoticeNumber = $state($page.url.searchParams.get('notice_number') || ''); +let searchPedimento = $state($page.url.searchParams.get('pedimento') || ''); let timeout: ReturnType; let allItems = $state(data.notices?.items || data.notices || []); @@ -82,15 +82,15 @@ loading = true; error = null; try { const response = await electronicNoticesApi.list(companyStore.activeCompany.id, { -code: searchCode || undefined, -description: searchDesc || undefined, +notice_number: searchNoticeNumber || undefined, +pedimento: searchPedimento || undefined, page: '1', page_size: pageSize.toString() }); -if (response.data) { -allItems = response.data.items; +if (response?.items) { +allItems = response.items; currentPage = 1; -totalItems = response.data.total; +totalItems = response.total; } } catch (err) { error = 'Error aplicando filtros'; @@ -99,10 +99,10 @@ loading = false; } const url = new URL($page.url); -if (searchCode) url.searchParams.set('code', searchCode); -else url.searchParams.delete('code'); -if (searchDesc) url.searchParams.set('description', searchDesc); -else url.searchParams.delete('description'); +if (searchNoticeNumber) url.searchParams.set('notice_number', searchNoticeNumber); +else url.searchParams.delete('notice_number'); +if (searchPedimento) url.searchParams.set('pedimento', searchPedimento); +else url.searchParams.delete('pedimento'); history.replaceState(history.state, '', url); }, 500); } @@ -112,15 +112,15 @@ if (loading || !hasMore || !companyStore.activeCompany) return; loading = true; try { const response = await electronicNoticesApi.list(companyStore.activeCompany.id, { -code: searchCode || undefined, -description: searchDesc || undefined, +notice_number: searchNoticeNumber || undefined, +pedimento: searchPedimento || undefined, page: (currentPage + 1).toString(), page_size: pageSize.toString() }); -if (response.data?.items) { -allItems = [...allItems, ...response.data.items]; +if (response?.items) { +allItems = [...allItems, ...response.items]; currentPage += 1; -totalItems = response.data.total; +totalItems = response.total; } } finally { loading = false; @@ -133,15 +133,15 @@ loading = true; error = null; try { const response = await electronicNoticesApi.list(companyStore.activeCompany.id, { -code: searchCode || undefined, -description: searchDesc || undefined, +notice_number: searchNoticeNumber || undefined, +pedimento: searchPedimento || undefined, page: '1', page_size: pageSize.toString() }); -if (response.data?.items) { -allItems = response.data.items; +if (response?.items) { +allItems = response.items; currentPage = 1; -totalItems = response.data.total; +totalItems = response.total; } } finally { loading = false; @@ -165,8 +165,8 @@ const columns = $derived(createColumns(handleSuccess, { canEdit, canDelete }));

Catálogo de Avisos Electrónicos del sistema

- {#if !isError && canCreate}