From 6859fca06d8f9313a54151fa7c72d439caa1efb7 Mon Sep 17 00:00:00 2001 From: evenegas Date: Wed, 30 Jul 2025 10:25:09 -0600 Subject: [PATCH] Se cambiaron estilos --- src/app/alta/alta.tsx | 28 +++++++++++++++++++++------- src/app/page.tsx | 2 +- src/app/visualizacion/page.tsx | 27 +++++++++++++++------------ src/components/layout/footer.tsx | 2 +- 4 files changed, 38 insertions(+), 21 deletions(-) diff --git a/src/app/alta/alta.tsx b/src/app/alta/alta.tsx index 504fad4..127c3bb 100644 --- a/src/app/alta/alta.tsx +++ b/src/app/alta/alta.tsx @@ -4,20 +4,22 @@ import React, { useState } from "react"; const apiUrl = process.env.NEXT_PUBLIC_API_URL; - const tiposUsuarioEstudiante = [ "Diplomado", "Extra Largo", "Servicio Social", "Idiomas R (UNAM)", "Idiomas Sabatino", "Reinscrito", "Posgrado", "Intercambio UNAM", "Movilidad", "Ampliación de Conocimiento", "Licenciatura", ]; -const tiposUsuarioEspecial = ["Profesor", "Trabajadores"]; +const tiposUsuarioEspecial = ["Caso especial"]; + +const tiposUsuarioTrabajador = ["Profesor", "Trabajadores"]; const FormularioCargaIndividual = () => { const [tipoUsuario, setTipoUsuario] = useState(""); const [formData, setFormData] = useState({}); const [errores, setErrores] = useState([]); const [mensaje, setMensaje] = useState(""); + const [guardando, setGuardando] = useState(false); // 🔹 Estado para controlar el botón const camposEstudiante = [ "num_cuenta", "carrera", "clave_carrera", "nombre", @@ -25,6 +27,11 @@ const FormularioCargaIndividual = () => { ]; const camposEspecial = [ + "nombre", "a_paterno", "a_materno", "contraseña", + "usuario", + ]; + + const camposTrabajador = [ "num_cuenta", "nombre", "a_paterno", "a_materno", "rfc", "fecha_nacimiento", "genero", "carrera", "clave_carrera", ]; @@ -34,9 +41,11 @@ const FormularioCargaIndividual = () => { ? [] : tiposUsuarioEstudiante.includes(tipoUsuario) ? camposEstudiante - : tiposUsuarioEspecial.includes(tipoUsuario) - ? camposEspecial - : []; + : tiposUsuarioTrabajador.includes(tipoUsuario) + ? camposTrabajador + : tiposUsuarioEspecial.includes(tipoUsuario) + ? camposEspecial + : []; const handleChange = ( e: React.ChangeEvent @@ -74,6 +83,8 @@ const FormularioCargaIndividual = () => { return; } + setGuardando(true); // 🔹 Empieza a guardar + try { const token = localStorage.getItem("token"); const normalizado = { ...formData }; @@ -113,6 +124,8 @@ const FormularioCargaIndividual = () => { } catch (err) { console.error("Error en petición fetch:", err); setMensaje("Ocurrió un error al guardar el usuario ❌"); + } finally { + setGuardando(false); // 🔹 Termina de guardar } }; @@ -131,7 +144,7 @@ const FormularioCargaIndividual = () => { required > - {[...tiposUsuarioEstudiante, ...tiposUsuarioEspecial].map((tipo) => ( + {[...tiposUsuarioEstudiante, ...tiposUsuarioTrabajador, ...tiposUsuarioEspecial].map((tipo) => ( @@ -183,8 +196,9 @@ const FormularioCargaIndividual = () => { type="submit" className="btn" style={{ backgroundColor: "#003d79", color: "#fff" }} + disabled={guardando} // 🔹 Se desactiva mientras se guarda > - Guardar Usuario + {guardando ? "Guardando..." : "Guardar Usuario"} diff --git a/src/app/page.tsx b/src/app/page.tsx index 61f8a43..04ac78e 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -59,11 +59,11 @@ const Home = () => { const items: HeaderItem[] = user ? [ { label: "Inicio", page: "landing" }, + { label: "Consulta", page: "consulta" }, { label: isCarga, page: "carga" }, ...(user.tipo === "LOAD" ? [ { label: "Carga individual", page: "carga individual" as PageKey }, - { label: "Consulta", page: "consulta" as PageKey }, ] : []), { label: "Cerrar sesión", onClick: handleLogout }, diff --git a/src/app/visualizacion/page.tsx b/src/app/visualizacion/page.tsx index 98b5f26..0e601b2 100644 --- a/src/app/visualizacion/page.tsx +++ b/src/app/visualizacion/page.tsx @@ -125,18 +125,21 @@ export default function Consulta() { {resultados.map((item, idx) => ( - {Object.values(item).map((val, i) => ( - - {String(val)} - - ))} + {Object.values(item).map((val, i) => { + const cellKey = Object.keys(item)[i]; + return ( + + {String(val)} + + ); + })} ))} diff --git a/src/components/layout/footer.tsx b/src/components/layout/footer.tsx index ba4ef81..59fc2c8 100644 --- a/src/components/layout/footer.tsx +++ b/src/components/layout/footer.tsx @@ -20,7 +20,7 @@ export default function Footer() { Hecho en México. Todos los derechos reservados 2025.

- Esta página puede ser reproducida con fines no lucrativos, siempre y + Esta página no puede ser reproducida con fines lucrativos, siempre y cuando no se mutile, se cite la fuente completa y su dirección electrónica. De otra forma, requiere permiso previo por escrito de la institución.