merge carlos

This commit is contained in:
2025-11-10 11:47:13 -06:00
parent fcb0740659
commit 15861cbf85
5 changed files with 197 additions and 50 deletions
@@ -0,0 +1,65 @@
import React from "react";
import Link from "next/link";
import "./page1.css"; // Importamos los estilos
export default function Pregunta1() {
return (
<main className="pregunta-page pregunta1">
<div className="pregunta-container">
<h1 className="pregunta-titulo">PREGUNTA 1</h1>
<section className="pregunta-seccion">
<p className="pregunta-texto">
1. Desglose el número de equipos de impresión con que cuenta el área
universitaria.
</p>
<div className="pregunta-grid">
<div>
<label>Inyección de tinta</label>
<input value="7" readOnly />
</div>
<div>
<label>Láser pequeña B/N</label>
<input value="186" readOnly />
</div>
<div>
<label>Láser de alto volumen B/N</label>
<input value="28" readOnly />
</div>
<div>
<label>Láser de alto volumen Color</label>
<input value="18" readOnly />
</div>
<div>
<label>Láser pequeña Color</label>
<input value="20" readOnly />
</div>
<div>
<label>Multifuncionales</label>
<input value="108" readOnly />
</div>
<div>
<label>Matriz de puntos</label>
<input value="" readOnly />
</div>
<div>
<label>3D</label>
<input value="2" readOnly />
</div>
<div>
<label>Plotter</label>
<input value="11" readOnly />
</div>
</div>
</section>
<div className="boton-contenedor">
<Link href="/pregunta2" className="boton siguiente">
Ir a Pregunta 2
</Link>
</div>
</div>
</main>
);
}
@@ -0,0 +1,59 @@
"use client";
import React from "react";
import Link from "next/link";
import "./page2.css"; // 👈 Importamos los estilos
export default function Pregunta2() {
return (
<main className="pregunta-page pregunta2">
<div className="pregunta-container">
<h1 className="pregunta-titulo">PREGUNTA 2</h1>
<section className="pregunta-seccion">
<p className="pregunta-texto">
Indique el número de equipos de impresión de acuerdo con la
población universitaria al que se destina su uso primordialmente.
</p>
<div className="pregunta-grid">
<div>
<label>Alumnos</label>
<input value="35" readOnly />
</div>
<div>
<label>Profesores</label>
<input value="43" readOnly />
</div>
<div>
<label>Técnicos Académicos</label>
<input value="" readOnly />
</div>
<div>
<label>Investigadores</label>
<input value="" readOnly />
</div>
<div>
<label>Administrativos</label>
<input value="302" readOnly />
</div>
<div>
<label>Total</label>
<input value="380" readOnly />
</div>
</div>
</section>
<div className="boton-grupo">
<Link href="/pregunta1" className="boton anterior">
Volver a Pregunta 1
</Link>
<Link href="#" className="boton siguiente">
Ir a Pregunta 3
</Link>
</div>
</div>
</main>
);
}
+73 -50
View File
@@ -2,16 +2,16 @@
import { useSearchParams } from "next/navigation";
import { useEffect, useState } from "react";
import { useRouter } from "next/navigation";
import axios from "axios";
import Cookies from "js-cookie";
import toast from "react-hot-toast";
import { SO_POR_EQUIPO } from "@/data/so_por_equipo";
import { AREAS } from "@/data/areas";
import { PROCESADORES_POR_EQUIPO } from "@/data/procesadores";
import "../app/styles/layout/agregarEquipo.scss";
import "./editar.css";
import { PROCESADORES_POR_EQUIPO } from "@/data/procesadores";
import { useRouter } from "next/navigation";
export default function Editar() {
const searchParams = useSearchParams();
@@ -22,16 +22,16 @@ export default function Editar() {
const [formData, setFormData] = useState({
inventario: "",
serie: "",
marca: "",
modelo: "",
tipoEquipo: "",
estado: "",
sistemaOperativo: "",
procesador: "",
tipoUso: "",
observaciones: "",
adscripcion: "",
id_tipo_equipo: 0,
id_marca: 0,
id_estado: 0,
id_uso: 0,
id_adscripcion: 0,
id_sistema_operativo: 0,
id_procesador: 0,
lugar: "",
observaciones: "",
responsable: "",
periferico: "",
fechaFactura: "",
@@ -93,7 +93,7 @@ export default function Editar() {
});
const api_url = process.env.NEXT_PUBLIC_API_URL;
const mostrarCamposComputadora = formData.tipoEquipo !== "PERIFÉRICO";
const mostrarCamposComputadora = Number(formData.id_tipo_equipo) !== 9;
// 🔹 Cargar catálogos
useEffect(() => {
@@ -170,6 +170,7 @@ export default function Editar() {
procesador_tipoequipo: {
id: number;
procesador: {
id_procesador: number;
procesador: string;
};
} | null;
@@ -214,16 +215,17 @@ export default function Editar() {
setFormData({
inventario: equipo.inventario || "",
serie: equipo.serie || "",
marca: equipo.marca?.marca || "",
id_marca: equipo.marca?.id_marca || 0,
modelo: equipo.modelo || "",
tipoEquipo: equipo.tipoEquipo?.tipo_equipo || "",
estado: equipo.estado?.estado || "",
sistemaOperativo: equipo.sistemaOperativo?.sistema_operativo || "",
procesador:
equipo.procesador_tipoequipo?.procesador?.procesador || "",
tipoUso: equipo.tipoUso?.tipo_uso || "",
id_tipo_equipo: equipo.tipoEquipo?.id_tipo_de_equipo || 0,
id_estado: equipo.estado?.id_estado || 0,
id_sistema_operativo:
equipo.sistemaOperativo?.id_sistema_operativo || 0,
id_procesador:
equipo.procesador_tipoequipo?.procesador?.id_procesador || 0,
id_uso: equipo.tipoUso?.id_uso || 0,
observaciones: equipo.observaciones || "",
adscripcion: equipo.adscripcion?.adscripcion || "",
id_adscripcion: equipo.adscripcion?.id_adscripcion || 0,
lugar: equipo.lugar || "",
periferico: equipo.periferico?.periferico || "",
fechaFactura: equipo.fechaFactura || "",
@@ -244,7 +246,7 @@ export default function Editar() {
const headers = { Authorization: `Bearer ${token}` };
const response = await axios.get(
`${api_url}/equipos/procesador-tipo-equipos/${formData.tipoEquipo}`,
`${api_url}/equipos/procesador-tipo-equipos/${formData.id_tipo_equipo}`,
{
headers,
}
@@ -257,7 +259,7 @@ export default function Editar() {
useEffect(() => {
const fetchPerifericos = async () => {
if (formData.tipoEquipo !== "PERIFÉRICO") return;
if (Number(formData.id_tipo_equipo) != 9) return;
const token = Cookies.get("token");
const headers = { Authorization: `Bearer ${token}` };
@@ -274,17 +276,31 @@ export default function Editar() {
};
fetchPerifericos();
}, [formData.tipoEquipo]);
}, [formData.id_tipo_equipo]);
const handleGuardar = async () => {
const token = Cookies.get("token");
const headers = { Authorization: `Bearer ${token}` };
const data = {
id_estado: formData.id_estado,
id_adscripcion: formData.id_adscripcion,
lugar: formData.lugar,
id_sistema_operativo: formData.id_sistema_operativo,
id_uso: formData.id_uso,
serie: formData.serie,
modelo: formData.modelo,
id_marca: formData.id_marca,
observaciones: formData.observaciones,
};
try {
await axios.patch(
`${api_url}/equipos/update/${formData.inventario}`,
formData,
{ headers }
data,
{
headers,
}
);
toast.success("Equipo actualizado correctamente");
} catch (error) {
@@ -332,7 +348,11 @@ export default function Editar() {
<div className="agregarEquipoContainer">
<div className="innerContainer">
<h2 className="information">
<span>{formData.tipoEquipo}</span>
<span>
{tiposEquipo.find(
(t) => t.id_tipo_de_equipo === Number(formData.id_tipo_equipo)
)?.tipo_equipo || "Sin tipo"}
</span>
<span>Inventario: {formData.inventario}</span>
<span>
Fecha de censo:{" "}
@@ -358,14 +378,14 @@ export default function Editar() {
<div className="formGroup">
<label>Marca</label>
<select
value={formData.marca}
value={formData.id_marca}
onChange={(e) =>
setFormData({ ...formData, marca: e.target.value })
setFormData({ ...formData, id_marca: Number(e.target.value) })
}
>
<option value="">Selecciona marca</option>
{marcas.map((m) => (
<option key={m.id_marca} value={m.marca}>
<option key={m.id_marca} value={m.id_marca}>
{m.marca}
</option>
))}
@@ -387,14 +407,15 @@ export default function Editar() {
<div className="formGroup">
<label>Tipo de equipo</label>
<select
value={formData.tipoEquipo}
required
value={formData.id_tipo_equipo}
onChange={(e) =>
setFormData({ ...formData, tipoEquipo: e.target.value })
handleInputChange("id_tipo_equipo", e.target.value)
}
>
<option value="">Selecciona tipo</option>
<option value="">Selecciona tipo de equipo</option>
{tiposEquipo.map((t) => (
<option key={t.id_tipo_de_equipo} value={t.tipo_equipo}>
<option key={t.id_tipo_de_equipo} value={t.id_tipo_de_equipo}>
{t.tipo_equipo}
</option>
))}
@@ -404,14 +425,17 @@ export default function Editar() {
<div className="formGroup">
<label>Estado</label>
<select
value={formData.estado}
value={formData.id_estado}
onChange={(e) =>
setFormData({ ...formData, estado: e.target.value })
setFormData({
...formData,
id_estado: Number(e.target.value),
})
}
>
<option value="">Selecciona estado</option>
{estados.map((e) => (
<option key={e.id_estado} value={e.estado}>
<option key={e.id_estado} value={e.id_estado}>
{e.estado}
</option>
))}
@@ -424,9 +448,9 @@ export default function Editar() {
<div className="formGroup">
<label>Tipo de uso</label>
<select
value={formData.tipoUso}
value={formData.id_uso}
onChange={(e) =>
setFormData({ ...formData, tipoUso: e.target.value })
setFormData({ ...formData, id_uso: Number(e.target.value) })
}
>
<option value="">Selecciona uso</option>
@@ -443,33 +467,32 @@ export default function Editar() {
<div className="formGroup">
<label>Procesador</label>
<select
value={formData.procesador || ""}
value={formData.id_procesador}
onChange={(e) =>
handleInputChange("id_procesador", e.target.value)
}
>
<option value="">Selecciona procesador</option>
{PROCESADORES_POR_EQUIPO[formData.tipoEquipo]?.map((p) => (
<option key={p.id_procesador} value={p.id_procesador}>
{p.procesador}
</option>
))}
{PROCESADORES_POR_EQUIPO[formData.id_tipo_equipo]?.map(
(p) => (
<option key={p.id_procesador} value={p.id_procesador}>
{p.procesador}
</option>
)
)}
</select>
</div>
<div className="formGroup">
<label>Sistema operativo</label>
<select
value={formData.sistemaOperativo}
value={formData.id_sistema_operativo}
onChange={(e) =>
setFormData({
...formData,
sistemaOperativo: e.target.value,
})
handleInputChange("id_sistema_operativo", e.target.value)
}
>
<option value="">Selecciona sistema operativo</option>
{SO_POR_EQUIPO[formData.tipoEquipo]?.map((so) => (
{SO_POR_EQUIPO[formData.id_tipo_equipo]?.map((so) => (
<option
key={so.id_sistema_operativo}
value={so.id_sistema_operativo}
@@ -507,7 +530,7 @@ export default function Editar() {
required
type="text"
placeholder="Ingresa adscripción"
value={formData.adscripcion}
value={formData.id_adscripcion}
onChange={(e) =>
handleInputChange("adscripcion", e.target.value)
}