From c1bcd4ea5bf8f03b33a0541d20e3adb25220d37b Mon Sep 17 00:00:00 2001 From: Administrator Date: Mon, 28 Sep 2026 17:09:49 -0500 Subject: [PATCH] Actualizar frontend/src/pages/Retiros.jsx --- frontend/src/pages/Retiros.jsx | 223 ++++++++++++++++++++++++++++++++- 1 file changed, 217 insertions(+), 6 deletions(-) diff --git a/frontend/src/pages/Retiros.jsx b/frontend/src/pages/Retiros.jsx index 3f3510c..7374ce0 100644 --- a/frontend/src/pages/Retiros.jsx +++ b/frontend/src/pages/Retiros.jsx @@ -157,14 +157,16 @@ export default function Retiros() { }; // Cargar los alumnos POR RETIRAR de (año, mes) con sus datos + info manual de ese mes - useEffect(() => { - let activo = true; + const cargar = () => { setLoading(true); setError(null); setMsgTotal(null); api.retiros(ano, mes) - .then((r) => { if (activo) { setFilas(r.filas || []); setGuardado(!!r.guardado); setGuardadoEn(r.guardado_en || null); setLoading(false); } }) - .catch((e) => { if (activo) { setError(e.message); setLoading(false); } }); - return () => { activo = false; }; - }, [ano, mes]); + .then((r) => { setFilas(r.filas || []); setGuardado(!!r.guardado); setGuardadoEn(r.guardado_en || null); setLoading(false); }) + .catch((e) => { setError(e.message); setLoading(false); }); + }; + useEffect(() => { cargar(); }, [ano, mes]); + + // Buscador para agregar/quitar alumnos POR RETIRAR + const [buscadorAbierto, setBuscadorAbierto] = useState(false); // Opciones de sectorista (de los datos cargados) — sin "TODOS" (checks) const sectoristas = useMemo(() => { @@ -262,6 +264,13 @@ export default function Retiros() { {msgTotal.txt} )} + + + +
+ setQ(e.target.value)} + placeholder="Escribe nombre de alumno, programa, vendedor o matrícula…" + style={{ width: "100%", padding: "11px 14px", border: "1px solid #cbd5e1", + borderRadius: 10, fontSize: 14, boxSizing: "border-box", outline: "none" }} /> + +
+ {loading ? ( +
Cargando alumnos…
+ ) : ( + + + + + + + + + {filtrados.length === 0 && ( + + )} + {filtrados.map((f, i) => { + const mat = String(f[15]); + const est = estados[mat] || "EN CURSO"; + const porRetirar = est === "POR RETIRAR"; + return ( + + + + + + + + + ); + })} + +
ALUMNOVENDEDORF. MATRÍCULAPROGRAMAINV. NETAESTADO
+ Sin resultados. +
{f[1]}{f[0]}{f[2]}{f[8]}{f[7]} + +
+ )} +
+ {!loading && ( +
+ Al marcar POR RETIRAR, el alumno aparece en la tabla de Retiros con sus datos calculados. {q ? `${filtrados.length} resultado(s).` : "Escribe para buscar."} +
+ )} + + {/* Pie: mensaje + botón Guardar cambios */} +
+ {msg && ( + + {msg.txt} + + )} + {!msg && cambios.length > 0 && ( + + {cambios.length} cambio(s) sin guardar + + )} + {!msg && cambios.length === 0 && } + + +
+
+ + + ); +}