Se cambiaron estilos

This commit is contained in:
evenegas
2025-07-30 10:25:09 -06:00
parent 5f1c6cee9e
commit 6859fca06d
4 changed files with 38 additions and 21 deletions
+21 -7
View File
@@ -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<any>({});
const [errores, setErrores] = useState<string[]>([]);
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<HTMLInputElement | HTMLSelectElement>
@@ -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
>
<option value="">Selecciona una opción</option>
{[...tiposUsuarioEstudiante, ...tiposUsuarioEspecial].map((tipo) => (
{[...tiposUsuarioEstudiante, ...tiposUsuarioTrabajador, ...tiposUsuarioEspecial].map((tipo) => (
<option key={tipo} value={tipo}>
{tipo}
</option>
@@ -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"}
</button>
</div>
</form>
+1 -1
View File
@@ -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 },
+15 -12
View File
@@ -125,18 +125,21 @@ export default function Consulta() {
<tbody>
{resultados.map((item, idx) => (
<tr key={idx}>
{Object.values(item).map((val, i) => (
<td
key={i}
style={{
padding: "0.75rem",
borderBottom: "1px solid #eee",
textAlign: "left",
}}
>
{String(val)}
</td>
))}
{Object.values(item).map((val, i) => {
const cellKey = Object.keys(item)[i];
return (
<td
key={i}
style={{
padding: "0.75rem",
borderBottom: "1px solid #eee",
textAlign: cellKey === "fecha_activacion" ? "center" : "left",
}}
>
{String(val)}
</td>
);
})}
</tr>
))}
</tbody>
+1 -1
View File
@@ -20,7 +20,7 @@ export default function Footer() {
Hecho en México. Todos los derechos reservados 2025.
</p>
<p className="mb-0">
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.