import React, { useState, useEffect } from 'react'; export default function Reports() { const tabs = [ { key: 'pedimentos', label: 'Generar Reporte de Pedimentos' }, { key: 'datastage', label: 'Generar Reporte de Datastage' }, { key: 'minimos', label: 'Generar Reporte de Mínimos' }, { key: 'coves', label: 'Generar Reporte de COVES' }, ]; // Columnas por tipo de reporte y tipo de registro para datastage const columnasPorTab = { pedimentos: [ { key: 'id', label: 'ID' }, { key: 'nombre', label: 'Nombre' }, { key: 'pedimento', label: 'Pedimento' }, { key: 'fecha', label: 'Fecha' }, { key: 'estado', label: 'Estado' }, ], datastage: { entrada: [ { key: 'id', label: 'ID' }, { key: 'nombre', label: 'Nombre' }, { key: 'fecha', label: 'Fecha' }, { key: 'usuario', label: 'Usuario' }, { key: 'entrada', label: 'Entrada' }, ], salida: [ { key: 'id', label: 'ID' }, { key: 'nombre', label: 'Nombre' }, { key: 'fecha', label: 'Fecha' }, { key: 'usuario', label: 'Usuario' }, { key: 'salida', label: 'Salida' }, ], proceso: [ { key: 'id', label: 'ID' }, { key: 'nombre', label: 'Nombre' }, { key: 'fecha', label: 'Fecha' }, { key: 'usuario', label: 'Usuario' }, { key: 'proceso', label: 'Proceso' }, ], default: [ { key: 'id', label: 'ID' }, { key: 'nombre', label: 'Nombre' }, { key: 'fecha', label: 'Fecha' }, { key: 'usuario', label: 'Usuario' }, ], }, minimos: [ { key: 'id', label: 'ID' }, { key: 'nombre', label: 'Nombre' }, { key: 'minimo', label: 'Mínimo' }, { key: 'fecha', label: 'Fecha' }, ], coves: [ { key: 'id', label: 'ID' }, { key: 'nombre', label: 'Nombre' }, { key: 'cove', label: 'COVE' }, { key: 'fecha', label: 'Fecha' }, ], }; const [activeTab, setActiveTab] = useState('pedimentos'); const [nombreReporte, setNombreReporte] = useState(''); const [columnas, setColumnas] = useState(['id', 'nombre']); const [fechaInicio, setFechaInicio] = useState(''); const [fechaFin, setFechaFin] = useState(''); const [pedimento, setPedimento] = useState(''); const [tipoRegistro, setTipoRegistro] = useState(''); const handleColumnaChange = (col) => { setColumnas((prev) => prev.includes(col) ? prev.filter((c) => c !== col) : [...prev, col] ); }; const handleGenerarReporte = (e) => { e.preventDefault(); alert(`Generando reporte: ${nombreReporte}\nTipo: ${activeTab}\nColumnas: ${columnas.join(', ')}\nPedimento: ${pedimento}\nFecha: ${fechaInicio} a ${fechaFin}`); }; // Reset columnas al cambiar de tab o tipo de registro en datastage useEffect(() => { if (activeTab === 'datastage') { if (tipoRegistro && columnasPorTab.datastage[tipoRegistro]) { setColumnas(['id', 'nombre']); } else { setColumnas(['id', 'nombre']); } } else { setColumnas(['id', 'nombre']); } }, [activeTab, tipoRegistro]); return (
{/* Header decorativo */}

Reportes

Consulta y descarga reportes relacionados con el sistema.

{/* Efecto decorativo de fondo */}
{/* Animación personalizada para el icono */} {/* Tabs y formulario en tarjeta */}
{tabs.map(tab => ( ))}

{tabs.find(t => t.key === activeTab)?.label}

Selecciona los campos y filtros que deseas incluir en tu reporte personalizado.

setNombreReporte(e.target.value)} placeholder="Ej: Reporte personalizado" className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
{/* Pedimento y fechas para cada tab según requerimiento */} {activeTab === 'pedimentos' && (
setPedimento(e.target.value)} placeholder="Ej: 12345678" className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
)} {activeTab === 'datastage' && ( <>
setPedimento(e.target.value)} placeholder="Ej: 12345678" className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
setFechaInicio(e.target.value)} className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
setFechaFin(e.target.value)} className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
)} {activeTab === 'coves' && ( <>
setPedimento(e.target.value)} placeholder="Ej: 12345678" className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
setFechaInicio(e.target.value)} className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
setFechaFin(e.target.value)} className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
)} {activeTab === 'minimos' && ( <>
setPedimento(e.target.value)} placeholder="Ej: 12345678" className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
setFechaInicio(e.target.value)} className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
setFechaFin(e.target.value)} className="border rounded px-3 py-2 w-full text-sm focus:outline-none focus:ring-2 focus:ring-blue-300" />
)} {/* Columnas a incluir solo si no es minimos */} {activeTab !== 'minimos' && (
{activeTab === 'datastage' ? (columnasPorTab.datastage[tipoRegistro] || columnasPorTab.datastage.default).map(col => ( )) : columnasPorTab[activeTab].map(col => ( ))}
)} {/* Fechas para los demás tabs - ya incluidas arriba */}
{/* Tabla de reportes de ejemplo */}

Resultados

{/* Más filas de ejemplo aquí */}
ID Nombre Tipo Pedimento Fecha Acciones
1 Reporte de usuarios Usuarios 12345678 2025-07-22
2 Reporte de documentos Documentos 87654321 2025-07-21
); }