new form to get adscriptions

This commit is contained in:
2025-11-13 15:11:23 -06:00
parent edeb9fa29b
commit 0bd4047a20
3 changed files with 68 additions and 40 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ export default function Login() {
return (
<section className="containerGrid">
<div className="login-container">
<h2>Inicio de sesión</h2>
<h2>Sistema de censo</h2>
<form onSubmit={handleSubmit}>
<div>
<label>Usuario</label>
+31 -14
View File
@@ -6,7 +6,6 @@ import axios from "axios";
import Cookies from "js-cookie";
import toast from "react-hot-toast";
import { AREAS } from "@/data/areas";
import { SO_POR_EQUIPO } from "@/data/so_por_equipo";
import { PROCESADORES_POR_EQUIPO } from "@/data/procesadores";
import { useRouter } from "next/navigation";
@@ -133,7 +132,6 @@ export default function Page() {
setAdscripciones(adscripcionesRes.data);
setTiposEquipo(tiposEquipoRes.data);
setSistemasOperativos(sistemasOperativosRes.data);
console.log(adscripciones);
} catch (err) {
if (axios.isAxiosError(err)) {
if (err.response) {
@@ -200,9 +198,15 @@ export default function Page() {
const textValue = value as string;
setAdscripcionLabel(textValue);
const matches = AREAS.filter((a) =>
a.label.toLowerCase().includes(textValue.toLowerCase())
).map((a) => a.label);
const normalize = (str: string) =>
str
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.toLowerCase();
const matches = adscripciones
.filter((a) => normalize(a.adscripcion).includes(normalize(textValue)))
.map((a) => a.adscripcion);
setSuggestions((prev) => ({
...prev,
@@ -234,7 +238,6 @@ export default function Page() {
};
const handleGuardar = async () => {
if (!formData.inventario) {
toast.error("Inventario no encontrado");
return;
@@ -272,7 +275,11 @@ export default function Page() {
}
}
if(formData.id_tipo_equipo != 8 && formData.id_tipo_equipo != 7 && formData.id_tipo_equipo != 9){
if (
formData.id_tipo_equipo != 8 &&
formData.id_tipo_equipo != 7 &&
formData.id_tipo_equipo != 9
) {
if (!formData.id_sistema_operativo) {
toast.error("Sistema operativo no encontrado ");
return;
@@ -422,13 +429,17 @@ export default function Page() {
<div className="formGroup">
<label>Procesador</label>
<select
disabled={formData.id_tipo_equipo ==0}
disabled={formData.id_tipo_equipo == 0}
value={formData.id_procesador}
onChange={(e) =>
handleInputChange("id_procesador", e.target.value)
}
>
<option value="">{formData.id_tipo_equipo ? "Selecciona procesador":"Selecciona primero el tipo de equipo"}</option>
<option value="">
{formData.id_tipo_equipo
? "Selecciona procesador"
: "Selecciona primero el tipo de equipo"}
</option>
{PROCESADORES_POR_EQUIPO[formData.id_tipo_equipo]?.map(
(p) => (
<option key={p.id_procesador} value={p.id_procesador}>
@@ -442,7 +453,7 @@ export default function Page() {
<div className="formGroup">
<label>Sistema operativo</label>
<select
disabled={formData.id_tipo_equipo ==0}
disabled={formData.id_tipo_equipo == 0}
value={formData.id_sistema_operativo}
onChange={(e) =>
handleInputChange(
@@ -451,7 +462,11 @@ export default function Page() {
)
}
>
<option value="">{formData.id_tipo_equipo ? "Selecciona sistema operativo":"Selecciona primero el tipo de equipo"}</option>
<option value="">
{formData.id_tipo_equipo
? "Selecciona sistema operativo"
: "Selecciona primero el tipo de equipo"}
</option>
{SO_POR_EQUIPO[formData.id_tipo_equipo]?.map((so) => (
<option
key={so.id_sistema_operativo}
@@ -502,13 +517,15 @@ export default function Page() {
<li
key={s}
onClick={() => {
const selected = AREAS.find((a) => a.label === s);
const selected = adscripciones.find(
(a) => a.adscripcion === s
);
if (selected) {
setFormData((prev) => ({
...prev,
id_adscripcion: selected.id,
id_adscripcion: selected.id_adscripcion,
}));
setAdscripcionLabel(selected.label);
setAdscripcionLabel(selected.adscripcion);
setSuggestions((prev) => ({
...prev,
adscripcion: [],
+36 -25
View File
@@ -7,7 +7,6 @@ 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";
@@ -34,7 +33,7 @@ export default function Editar() {
observaciones: "",
responsable: "",
id_periferico: 0,
fechaFactura: "",
fechaMovimiento: "",
});
interface TipoUso {
@@ -159,7 +158,7 @@ export default function Editar() {
inventario: string;
serie: string;
lugar: string;
fechaFactura: string;
fechaMovimiento: string;
antiguedad: string;
modelo: string;
estado: { id_estado: number; estado: string };
@@ -220,13 +219,13 @@ export default function Editar() {
id_estado: equipo.estado?.id_estado || 0,
id_sistema_operativo:
equipo.sistemaOperativo?.id_sistema_operativo || 0,
id_procesador:equipo.procesador?.id_procesador || 0,
id_procesador: equipo.procesador?.id_procesador || 0,
id_uso: equipo.tipoUso?.id_uso || 0,
observaciones: equipo.observaciones || "",
id_adscripcion: equipo.adscripcion?.id_adscripcion || 0,
lugar: equipo.lugar || "",
id_periferico: equipo.periferico?.id_periferico || 0,
fechaFactura: equipo.fechaFactura || "",
fechaMovimiento: equipo.fechaMovimiento || "",
responsable,
});
@@ -280,8 +279,6 @@ export default function Editar() {
}, [formData.id_tipo_equipo]);
const handleGuardar = async () => {
if (!formData.inventario) {
toast.error("Inventario no encontrado");
return;
@@ -319,7 +316,11 @@ export default function Editar() {
}
}
if (formData.id_tipo_equipo != 8 && formData.id_tipo_equipo != 7 && formData.id_tipo_equipo != 9) {
if (
formData.id_tipo_equipo != 8 &&
formData.id_tipo_equipo != 7 &&
formData.id_tipo_equipo != 9
) {
if (!formData.id_sistema_operativo) {
toast.error("Sistema operativo no encontrado ");
return;
@@ -350,14 +351,11 @@ export default function Editar() {
};
try {
await axios.patch(
`${api_url}/equipos/update/${id}`,
data,
{
headers,
}
);
await axios.patch(`${api_url}/equipos/update/${id}`, data, {
headers,
});
toast.success("Equipo actualizado correctamente");
router.push("/escaner");
} catch (error) {
console.error("Error al guardar:", error);
toast.error("Hubo un error al guardar el equipo.");
@@ -372,9 +370,15 @@ export default function Editar() {
const textValue = value as string;
setAdscripcionLabel(textValue);
const matches = AREAS.filter((a) =>
a.label.toLowerCase().includes(textValue.toLowerCase())
).map((a) => a.label);
const normalize = (str: string) =>
str
.normalize("NFD")
.replace(/[\u0300-\u036f]/g, "")
.toLowerCase();
const matches = adscripciones
.filter((a) => normalize(a.adscripcion).includes(normalize(textValue)))
.map((a) => a.adscripcion);
setSuggestions((prev) => ({
...prev,
@@ -425,8 +429,9 @@ export default function Editar() {
const first = data[0];
setFormData((prev) => ({
...prev,
responsable: `${first.nombre ?? ""} ${first.apellidos ?? ""
}`.trim(),
responsable: `${first.nombre ?? ""} ${
first.apellidos ?? ""
}`.trim(),
}));
} else {
toast.error(
@@ -460,7 +465,7 @@ export default function Editar() {
<span>Inventario: {formData.inventario}</span>
<span>
Fecha de censo:{" "}
{new Date(formData.fechaFactura).toLocaleDateString("es-MX")}
{new Date(formData.fechaMovimiento).toLocaleDateString("es-MX")}
</span>
</h2>
@@ -578,7 +583,11 @@ export default function Editar() {
handleInputChange("id_procesador", e.target.value)
}
>
<option value="">{formData.id_tipo_equipo ? "Selecciona procesador" : "Selecciona primero el tipo de equipo"}</option>
<option value="">
{formData.id_tipo_equipo
? "Selecciona procesador"
: "Selecciona primero el tipo de equipo"}
</option>
{PROCESADORES_POR_EQUIPO[formData.id_tipo_equipo]?.map(
(p) => (
<option key={p.id_procesador} value={p.id_procesador}>
@@ -648,13 +657,15 @@ export default function Editar() {
<li
key={s}
onClick={() => {
const selected = AREAS.find((a) => a.label === s);
const selected = adscripciones.find(
(a) => a.adscripcion === s
);
if (selected) {
setFormData((prev) => ({
...prev,
id_adscripcion: selected.id,
id_adscripcion: selected.id_adscripcion,
}));
setAdscripcionLabel(selected.label);
setAdscripcionLabel(selected.adscripcion);
setSuggestions((prev) => ({
...prev,
adscripcion: [],