Modificaciones en algunas funcionalidades

This commit is contained in:
santiago
2025-10-09 19:33:40 +02:00
parent 393e6b6c1a
commit 9a2035f8d4
4 changed files with 5783 additions and 150 deletions
+5639
View File
File diff suppressed because it is too large Load Diff
+5 -3
View File
@@ -5,7 +5,6 @@ import Footer from "@/components/layout/footer";
import '@/sass/bootstrap.scss';
import "./globals.css";
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
@@ -17,8 +16,11 @@ const geistMono = Geist_Mono({
});
export const metadata: Metadata = {
title: "Create Next App",
description: "Generated by create next app",
title: "Directorio de Funcionarios Fes Acatlan",
description: "Este es un servicio para buscar a los funcionarios de Acatlan",
icons: {
icon: '/static/favicon.ico',
},
};
export default function RootLayout({
+139 -147
View File
@@ -1,10 +1,10 @@
'use client';
import React, { useState } from 'react';
import React, { useState, useEffect } from 'react';
import axios from 'axios';
import { Funcionario } from '../types/Funcionarios';
import { PayloadBusqueda } from '../types/Funcionarios';
import { errorBuscar, funcionarioNoEncontrado } from '@/utils/alerts'
import { errorBuscar, funcionarioNoEncontrado } from '@/utils/alerts';
interface BuscarFuncionarioProps {
onResultados: (data: Funcionario[]) => void;
@@ -15,17 +15,18 @@ export default function BuscarFuncionario({ onResultados }: BuscarFuncionarioPro
const [apellidos, setApellidos] = useState('');
const [area, setArea] = useState('0');
const fetchData = async () => {
const fetchData = async (tipo?: 'manual' | 'auto') => {
try {
const payload: PayloadBusqueda = {};
//Validar que haya datos para buscar
if (area === '0' && !nombre.trim() && !apellidos.trim()) {
errorBuscar();
if (tipo === 'manual') errorBuscar();
return;
}
// Tipo de búsqueda
if (area !== '0') {
// Búsqueda por área
payload.tipoBusqueda = 'area';
payload.IdUnidadResponsable = parseInt(area, 10);
} else {
@@ -34,26 +35,9 @@ export default function BuscarFuncionario({ onResultados }: BuscarFuncionarioPro
payload.Apellidos = apellidos.trim();
}
/*
if (area !== '0') {
// Búsqueda por área
payload.tipoBusqueda = 'area';
payload.IdUnidadResponsable = parseInt(area, 10);
} else if (nombre.trim() || apellidos.trim()) {
// Búsqueda por nombre/apellidos
payload.tipoBusqueda = 'nombre';
payload.Nombre = nombre.trim();
payload.Apellidos = apellidos.trim();
} else {
alert('Por favor llena al menos un campo para filtrar.');
return;
}
*/
const url = process.env.NEXT_PUBLIC_API_FUNCIONARIOS;
if (!url) throw new Error("Url no definida en las variables de entorno");
console.log(payload)
const response = await axios.post(url, payload);
if (Array.isArray(response.data) && response.data.length > 0) {
@@ -63,145 +47,153 @@ export default function BuscarFuncionario({ onResultados }: BuscarFuncionarioPro
onResultados([]);
}
//Limpiar campos después de buscar
setNombre('');
setApellidos('');
setArea('0');
} catch (error) {
console.error('Error al buscar funcionario:', error);
//Limpiar filtro aunque falle
setNombre('');
setApellidos('');
setArea('0');
funcionarioNoEncontrado();
onResultados([]);
}
};
const limpiarFiltro = () => {
setNombre('');
setApellidos('');
setArea('0');
onResultados([]); // También limpiamos en el padre
};
//Búsqueda automática al seleccionar un área
useEffect(() => {
if (area !== '0') {
fetchData('auto');
}
}, [area]);
return (
<div className="col-12 col-md-3 mb-4">
<div className="bg-white p-4 rounded shadow-sm">
<h4 className="mb-4">Filtro</h4>
<div className="bg-white p-4 rounded shadow-sm">
<h4 className="mb-4">Filtro</h4>
{/* Nombre */}
<form
onSubmit={(e) => {
e.preventDefault();
fetchData();
}}
>
<div className="mb-3">
<label htmlFor="nombre" className="form-label">Nombre</label>
<input
type="text"
id="nombre"
className="form-control"
value={nombre}
onChange={(e) => setNombre(e.target.value)}
/>
</div>
<form
onSubmit={(e) => {
e.preventDefault();
fetchData('manual');
}}
>
{/* Nombre */}
<div className="mb-3">
<label htmlFor="nombre" className="form-label">Nombre</label>
<input
type="text"
id="nombre"
className="form-control"
value={nombre}
onChange={(e) => setNombre(e.target.value)}
/>
</div>
{/* Apellidos */}
<div className="mb-3">
<label htmlFor="apellidos" className="form-label">Apellidos</label>
<input
type="text"
id="apellidos"
className="form-control"
value={apellidos}
onChange={(e) => setApellidos(e.target.value)}
/>
</div>
{/* Apellidos */}
<div className="mb-3">
<label htmlFor="apellidos" className="form-label">Apellidos</label>
<input
type="text"
id="apellidos"
className="form-control"
value={apellidos}
onChange={(e) => setApellidos(e.target.value)}
/>
</div>
{/* Área */}
<div className="mb-3">
<label htmlFor="adscripcion" className="form-label">Área</label>
<select
id="bus_depid"
name="bus_depid"
className="form-select"
value={area}
onChange={(e) => setArea(e.target.value)}
>
<option value="0">-- Selecciona un área --</option>
<option value="128"> Coordinación de Actividades Deportivas y Recreativas </option>
<option value="122"> Coordinación de Comunicación Social </option>
<option value="9"> Coordinación de Cuerpos Colegiados </option>
<option value="126"> Coordinación de Derecho del Sistema de Universidad Abierta y Educación a Distancia </option>
<option value="206"> Coordinación de Especializaciones </option>
<option value="120"> Coordinación de Estudios de Posgrado </option>
<option value="182"> Coordinación de la Unidad de Investigación Multidisciplinaria Aplicada </option>
<option value="174"> Coordinación de LICEL Sistema de Universidad Abierta y Educación a Distancia </option>
<option value="221"> Coordinación de Maestrías y Doctorados </option>
<option value="152"> Coordinación de Relaciones Internacionales del Sistema de Universidad Abierta y Educación a Distancia </option>
<option value="121"> Coordinación de Servicios Académicos </option>
<option value="125"> Coordinación del Centro de Difusión Cultural </option>
<option value="124"> Coordinación del Centro de Educación Continua </option>
<option value="129"> Coordinación del Centro de Enseñanza de Idiomas </option>
<option value="214"> Coordinación del Centro de Estudios Municipales y Metropolitanos </option>
<option value="176"> Coordinación del Centro Tecnológico para la Educación a Distancia </option>
<option value="58"> Coordinación del Programa de Actuaría </option>
<option value="57"> Coordinación del Programa de Arquitectura </option>
<option value="46"> Coordinación del Programa de Comunicación </option>
<option value="56"> Coordinación del Programa de Derecho </option>
<option value="55"> Coordinación del Programa de Diseño Gráfico </option>
<option value="54"> Coordinación del Programa de Economía </option>
<option value="49"> Coordinación del Programa de Enseñanza de Inglés </option>
<option value="52"> Coordinación del Programa de Humanidades </option>
<option value="51"> Coordinación del Programa de Ingeniería Civil </option>
<option value="48"> Coordinación del Programa de Matemáticas Aplicadas y Computación </option>
<option value="47"> Coordinación del Programa de Pedagogía </option>
<option value="44"> Coordinación del Programa de Sociología </option>
<option value="43"> Coordinación del Programa Político </option>
<option value="194"> Departamento de Intendencia </option>
<option value="193"> Departamento de Investigación en Comunicación y Estudios Culturales </option>
<option value="222"> Departamento de Orientación Académica del Sistema de Universidad Abierta y Educación a Distancia </option>
<option value="204"> Departamento de Proyectos Administrativos </option>
<option value="86"> Departamento de Talleres y Laboratorios </option>
<option value="72"> Dirección </option>
<option value="80"> División de Ciencias Jurídicas </option>
<option value="79"> División de Ciencias Socioeconómicas </option>
<option value="78"> División de Diseño y Edificación </option>
<option value="77"> División de Humanidades </option>
<option value="76"> División de Matemáticas e Ingeniería </option>
<option value="74"> División del Sistema de Universidad Abierta y Educación a Distancia </option>
<option value="70"> Especialización en Costos en la Construcción </option>
<option value="69"> Especialización en Finanzas Públicas </option>
<option value="68"> Especialización en Geotecnia </option>
<option value="71"> Especialización en Sistemas de Calidad </option>
<option value="220"> Especialización en Tecnología Digital para la Enseñanza de Matemáticas </option>
<option value="207"> Grupo de Trabajo de Educación para Adultos (GTEA) </option>
<option value="173"> Maestría en Docencia para la Educación Media Superior </option>
<option value="224"> Posgrado en Ciencias Políticas y Sociales </option>
<option value="62"> Posgrado en Derecho </option>
<option value="164"> Posgrado en Economía </option>
<option value="197"> Posgrado en Pedagogía </option>
<option value="63"> Posgrado en Urbanismo </option>
<option value="226"> Programa Único de Especializaciones en Derecho </option>
<option value="127"> Secretaría Administrativa </option>
<option value="181"> Secretaría de Asuntos Académicos Estudiantiles </option>
<option value="177"> Secretaría de Extensión Universitaria y Vinculación Institucional </option>
<option value="119"> Secretaría de Posgrado e Investigación </option>
<option value="8"> Secretaría General </option>
<option value="6"> Unidad de Administración Escolar </option>
<option value="5"> Unidad de Administración y Recursos </option>
<option value="4"> Unidad de Planeación </option>
<option value="3"> Unidad de Servicios a la Comunidad </option>
<option value="2"> Unidad de Servicios Editoriales </option>
<option value="1"> Unidad de Talleres, Laboratorios y Audiovisuales </option>
<option value="130"> Unidad del Centro de Desarrollo Tecnológico </option>
<option value="123"> Unidad del Centro de Información y Documentación </option>
</select>
</div>
{/* Área */}
<div className="mb-3">
<label htmlFor="adscripcion" className="form-label">Área</label>
<select
id="bus_depid"
name="bus_depid"
className="form-select"
value={area}
onChange={(e) => setArea(e.target.value)}
>
<option value="0">-- Selecciona un área --</option>
<option value="128">Coordinación de Actividades Deportivas y Recreativas</option>
<option value="122">Coordinación de Comunicación Social</option>
<option value="9">Coordinación de Cuerpos Colegiados</option>
<option value="126">Coordinación de Derecho del Sistema de Universidad Abierta y Educación a Distancia</option>
<option value="206">Coordinación de Especializaciones</option>
<option value="120">Coordinación de Estudios de Posgrado</option>
<option value="182">Coordinación de la Unidad de Investigación Multidisciplinaria Aplicada</option>
<option value="174">Coordinación de LICEL Sistema de Universidad Abierta y Educación a Distancia</option>
<option value="221">Coordinación de Maestrías y Doctorados</option>
<option value="152">Coordinación de Relaciones Internacionales del Sistema de Universidad Abierta y Educación a Distancia</option>
<option value="121">Coordinación de Servicios Académicos</option>
<option value="125">Coordinación del Centro de Difusión Cultural</option>
<option value="124">Coordinación del Centro de Educación Continua</option>
<option value="129">Coordinación del Centro de Enseñanza de Idiomas</option>
<option value="214">Coordinación del Centro de Estudios Municipales y Metropolitanos</option>
<option value="176">Coordinación del Centro Tecnológico para la Educación a Distancia</option>
<option value="58">Coordinación del Programa de Actuaría</option>
<option value="57">Coordinación del Programa de Arquitectura</option>
<option value="46">Coordinación del Programa de Comunicación</option>
<option value="56">Coordinación del Programa de Derecho</option>
<option value="55">Coordinación del Programa de Diseño Gráfico</option>
<option value="54">Coordinación del Programa de Economía</option>
<option value="49">Coordinación del Programa de Enseñanza de Inglés</option>
<option value="52">Coordinación del Programa de Humanidades</option>
<option value="51">Coordinación del Programa de Ingeniería Civil</option>
<option value="48">Coordinación del Programa de Matemáticas Aplicadas y Computación</option>
<option value="47">Coordinación del Programa de Pedagogía</option>
<option value="44">Coordinación del Programa de Sociología</option>
<option value="43">Coordinación del Programa Político</option>
<option value="194">Departamento de Intendencia</option>
<option value="193">Departamento de Investigación en Comunicación y Estudios Culturales</option>
<option value="222">Departamento de Orientación Académica del Sistema de Universidad Abierta y Educación a Distancia</option>
<option value="204">Departamento de Proyectos Administrativos</option>
<option value="86">Departamento de Talleres y Laboratorios</option>
<option value="72">Dirección</option>
<option value="80">División de Ciencias Jurídicas</option>
<option value="79">División de Ciencias Socioeconómicas</option>
<option value="78">División de Diseño y Edificación</option>
<option value="77">División de Humanidades</option>
<option value="76">División de Matemáticas e Ingeniería</option>
<option value="74">División del Sistema de Universidad Abierta y Educación a Distancia</option>
<option value="70">Especialización en Costos en la Construcción</option>
<option value="69">Especialización en Finanzas Públicas</option>
<option value="68">Especialización en Geotecnia</option>
<option value="71">Especialización en Sistemas de Calidad</option>
<option value="220">Especialización en Tecnología Digital para la Enseñanza de Matemáticas</option>
<option value="207">Grupo de Trabajo de Educación para Adultos (GTEA)</option>
<option value="173">Maestría en Docencia para la Educación Media Superior</option>
<option value="224">Posgrado en Ciencias Políticas y Sociales</option>
<option value="62">Posgrado en Derecho</option>
<option value="164">Posgrado en Economía</option>
<option value="197">Posgrado en Pedagogía</option>
<option value="63">Posgrado en Urbanismo</option>
<option value="226">Programa Único de Especializaciones en Derecho</option>
<option value="127">Secretaría Administrativa</option>
<option value="181">Secretaría de Asuntos Académicos Estudiantiles</option>
<option value="177">Secretaría de Extensión Universitaria y Vinculación Institucional</option>
<option value="119">Secretaría de Posgrado e Investigación</option>
<option value="8">Secretaría General</option>
<option value="6">Unidad de Administración Escolar</option>
<option value="5">Unidad de Administración y Recursos</option>
<option value="4">Unidad de Planeación</option>
<option value="3">Unidad de Servicios a la Comunidad</option>
<option value="2">Unidad de Servicios Editoriales</option>
<option value="1">Unidad de Talleres, Laboratorios y Audiovisuales</option>
<option value="130">Unidad del Centro de Desarrollo Tecnológico</option>
<option value="123">Unidad del Centro de Información y Documentación</option>
</select>
</div>
{/* Botones */}
<div className="d-grid gap-2">
<button className="btn btn-primary" type='submit'>Filtrar</button>
<button className="btn btn-secondary" type='button' onClick={limpiarFiltro}>Limpiar Filtro</button>
{/* Botón de buscar (sin limpiar) */}
<div className="d-grid gap-2">
<button className="btn btn-primary" type="submit">Buscar</button>
</div>
</form>
</div>
</form>
</div>
</div>
);
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB