([]);
const api_url = process.env.NEXT_PUBLIC_API_URL;
- const mostrarCamposComputadora = formData.tipoEquipo !== "Impresora";
+ const mostrarCamposComputadora = formData.tipoEquipo !== "PERIFÉRICO";
// 🔹 Cargar catálogos
useEffect(() => {
@@ -214,8 +216,8 @@ export default function Editar() {
>
{marcas.map((m) => (
-
))}
@@ -298,9 +300,9 @@ export default function Editar() {
}
>
- {procesadores.map((p) => (
-
))}
@@ -318,12 +320,9 @@ export default function Editar() {
}
>
- {sistemasOperativos.map((so) => (
-
))}
@@ -331,6 +330,15 @@ export default function Editar() {
>
)}
+ {!mostrarCamposComputadora && (
+
+
+
+
+ )}
+
@@ -246,7 +278,7 @@ export default function Page() {
required
type="text"
placeholder="Ingresa serie"
- value={""}
+ value={formData.serie}
onChange={(e) => handleInputChange("serie", e.target.value)}
/>
@@ -369,9 +401,19 @@ export default function Page() {
{!mostrarCamposComputadora && (
-
-
)}
diff --git a/src/components/Editar.tsx b/src/components/Editar.tsx
index ab76498..935b674 100644
--- a/src/components/Editar.tsx
+++ b/src/components/Editar.tsx
@@ -5,16 +5,20 @@ import { useEffect, useState } from "react";
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 "../app/styles/layout/agregarEquipo.scss";
import "./editar.css";
-import { SO_POR_EQUIPO } from "@/data/so_por_equipo";
import { PROCESADORES_POR_EQUIPO } from "@/data/procesadores";
+import { useRouter } from "next/navigation";
export default function Editar() {
const searchParams = useSearchParams();
const inventario = searchParams.get("equipoId");
+ const router = useRouter();
+
const [formData, setFormData] = useState({
inventario: "",
serie: "",
@@ -76,6 +80,10 @@ export default function Editar() {
>([]);
const [procesadores, setProcesadores] = useState
([]);
+ const [suggestions, setSuggestions] = useState({
+ adscripcion: [] as string[],
+ });
+
const api_url = process.env.NEXT_PUBLIC_API_URL;
const mostrarCamposComputadora = formData.tipoEquipo !== "PERIFÉRICO";
@@ -178,8 +186,42 @@ export default function Editar() {
}
};
+ const handleInputChange = (field: string, value: string) => {
+ setFormData((prev) => ({ ...prev, [field]: value }));
+
+ if (field === "adscripcion") {
+ if (value.length < 3) {
+ // Si no hay al menos 3 letras, no mostrar sugerencias
+ setSuggestions((prev) => ({ ...prev, adscripcion: [] }));
+ return;
+ }
+
+ // Normaliza para quitar acentos y poner en minúsculas
+ const normalize = (str: string) =>
+ str
+ .normalize("NFD")
+ .replace(/[\u0300-\u036f]/g, "")
+ .toLowerCase()
+ .trim();
+
+ const searchValue = normalize(value);
+
+ // Busca coincidencias
+ const matches = AREAS.map((a) => a.label)
+ .filter((label) => normalize(label).includes(searchValue))
+ .slice(0, 10); // máximo 10 sugerencias
+
+ setSuggestions((prev) => ({ ...prev, adscripcion: matches }));
+ }
+ };
+
+ const handleSelectSuggestion = (field: string, value: string) => {
+ setFormData((prev) => ({ ...prev, [field]: value }));
+ setSuggestions((prev) => ({ ...prev, [field]: [] }));
+ };
+
const handleCancelar = () => {
- toast("Acción cancelada");
+ router.push("/Escaner");
};
return (
@@ -339,21 +381,29 @@ export default function Editar() {
+
-
- setFormData({ ...formData, adscripcion: e.target.value })
+ handleInputChange("adscripcion", e.target.value)
}
- >
-
- {adscripciones.map((a) => (
-
- ))}
-
+ />
+ {suggestions.adscripcion.length > 0 && (
+
+ {suggestions.adscripcion.map((s) => (
+ - handleSelectSuggestion("adscripcion", s)}
+ >
+ {s}
+
+ ))}
+
+ )}
diff --git a/src/components/header.tsx b/src/components/header.tsx
index f7eb04d..df18e34 100644
--- a/src/components/header.tsx
+++ b/src/components/header.tsx
@@ -8,7 +8,8 @@ import { usePathname } from "next/navigation";
function Header() {
const pathname = usePathname();
- const rutasConBar = ["/Escaner", "/AgregarEquipo"];
+ const publicNav = ["/Escaner", "/AgregarEquipo", "/Editar"];
+ const privateNav = ["/Reporte", "/CrearCuenta", "/CambiarPass"];
return (
@@ -40,7 +41,8 @@ function Header() {
alignItems: "end",
}}
>
- {rutasConBar.includes(pathname) && }
+ {publicNav.includes(pathname) && }
+ {privateNav.includes(pathname) && }
);
diff --git a/src/data/areas.ts b/src/data/areas.ts
index 41753fd..1dcb0eb 100644
--- a/src/data/areas.ts
+++ b/src/data/areas.ts
@@ -1,4 +1,4 @@
-//Esto es culpa de los webservices
+//Esto es culpa de los webservices y de santi(wizard) attentamente IO
export const AREAS: Array<{ id: number; label: string }> = [
{ id: 128, label: "Coordinación de Actividades Deportivas y Recreativas" },
From 4cca4c15de9608fe92704b3c84e5c884f1cd84a4 Mon Sep 17 00:00:00 2001
From: Alejandra-Guzman-Mendez <424118767@pcpuma.acatlan.unam.mx>
Date: Tue, 4 Nov 2025 13:15:28 -0600
Subject: [PATCH 11/11] mensaje
---
package-lock.json | 68 ++++++++++++++++++++++++------
package.json | 1 +
src/app/(Operador)/Editar/page.tsx | 10 ++++-
3 files changed, 64 insertions(+), 15 deletions(-)
diff --git a/package-lock.json b/package-lock.json
index c8cf1cf..4f2b984 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,6 +10,7 @@
"dependencies": {
"@ericblade/quagga2": "^1.8.4",
"@zxing/library": "^0.21.3",
+ "axios": "^1.13.1",
"next": "15.5.6",
"react": "19.1.0",
"react-dom": "19.1.0"
@@ -2220,6 +2221,33 @@
"node": ">=4"
}
},
+ "node_modules/axios": {
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.1.tgz",
+ "integrity": "sha512-hU4EGxxt+j7TQijx1oYdAjw4xuIp1wRQSsbMFwSthCWeBQur1eF+qJ5iQ5sN3Tw8YRzQNKb8jszgBdMDVqwJcw==",
+ "license": "MIT",
+ "dependencies": {
+ "follow-redirects": "^1.15.6",
+ "form-data": "^4.0.4",
+ "proxy-from-env": "^1.1.0"
+ }
+ },
+ "node_modules/axios/node_modules/form-data": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz",
+ "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==",
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "hasown": "^2.0.2",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/axobject-query": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
@@ -2293,7 +2321,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -2655,7 +2682,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
@@ -2756,7 +2782,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -2766,7 +2791,6 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -2804,7 +2828,6 @@
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
@@ -2817,7 +2840,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@@ -3436,6 +3458,26 @@
"dev": true,
"license": "ISC"
},
+ "node_modules/follow-redirects": {
+ "version": "1.15.11",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
+ "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/RubenVerborgh"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=4.0"
+ },
+ "peerDependenciesMeta": {
+ "debug": {
+ "optional": true
+ }
+ }
+ },
"node_modules/for-each": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
@@ -3493,7 +3535,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
- "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -3544,7 +3585,6 @@
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
@@ -3588,7 +3628,6 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
@@ -3691,7 +3730,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -3786,7 +3824,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -3799,7 +3836,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
- "dev": true,
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
@@ -3815,7 +3851,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -4554,7 +4589,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -5119,6 +5153,12 @@
"react-is": "^16.13.1"
}
},
+ "node_modules/proxy-from-env": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+ "license": "MIT"
+ },
"node_modules/psl": {
"version": "1.15.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz",
diff --git a/package.json b/package.json
index 722cc57..26b69e6 100644
--- a/package.json
+++ b/package.json
@@ -11,6 +11,7 @@
"dependencies": {
"@ericblade/quagga2": "^1.8.4",
"@zxing/library": "^0.21.3",
+ "axios": "^1.13.1",
"next": "15.5.6",
"react": "19.1.0",
"react-dom": "19.1.0"
diff --git a/src/app/(Operador)/Editar/page.tsx b/src/app/(Operador)/Editar/page.tsx
index 18c25fb..a483b83 100644
--- a/src/app/(Operador)/Editar/page.tsx
+++ b/src/app/(Operador)/Editar/page.tsx
@@ -3,11 +3,12 @@ import { useEffect, useState } from "react";
import "../../styles/layout/agregarEquipo.scss";
import "./editar.css";
import { useSearchParams } from "next/navigation";
+import axios from "axios";
export default function Home() {
const searchParams = useSearchParams();
const equipoId = searchParams.get("equipoId"); // 🔹 Obtener ID del equipo
-
+ const [marca, setMarca]=useState([])
const [formData, setFormData] = useState({
serie: "",
marca: "",
@@ -23,6 +24,13 @@ export default function Home() {
responsable: "",
});
+
+ async function Marca(){
+ const response=await axios.get("http");
+ setMarca(response.data);
+ }
+
+
// Si viene un equipoId, precargarlo
useEffect(() => {
if (equipoId) {