diff --git a/.example.txt b/.example.txt new file mode 100644 index 0000000..4b73e25 --- /dev/null +++ b/.example.txt @@ -0,0 +1 @@ +NEXT_PUBLIC_API_URL= \ No newline at end of file diff --git a/src/app/(Operador)/AgregarEquipo/page.tsx b/src/app/(Operador)/AgregarEquipo/page.tsx index 743ce22..9ba95fb 100644 --- a/src/app/(Operador)/AgregarEquipo/page.tsx +++ b/src/app/(Operador)/AgregarEquipo/page.tsx @@ -2,11 +2,11 @@ import { useState, useEffect } from "react"; import axios from "axios"; -import Cookies from "js-cookie"; // Para leer cookies en el cliente -import "../../styles/layout/agregarEquipo.scss"; +import Cookies from "js-cookie"; import toast from "react-hot-toast"; +import "../../styles/layout/agregarEquipo.scss"; -export default function page() { +export default function Page() { const [formData, setFormData] = useState({ serie: "", marca: "", @@ -31,23 +31,15 @@ export default function page() { const [procesadores, setProcesadores] = useState([]); const [suggestions, setSuggestions] = useState({ - marca: [] as string[], - modelo: [] as string[], - estado: [] as string[], adscripcion: [] as string[], - tipoEquipo: [] as string[], - sistemaOperativo: [] as string[], - procesador: [] as string[], - tipoUso: [] as string[], }); const mostrarCamposComputadora = formData.tipoEquipo !== "Impresora"; - const api_url = process.env.NEXT_PUBLIC_API_URL; useEffect(() => { const fetchData = async () => { - const token = Cookies.get("token"); // Token desde cookies + const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; try { @@ -76,11 +68,11 @@ export default function page() { setTiposEquipo(tiposEquipoRes.data); setSistemasOperativos(sistemasOperativosRes.data); setProcesadores(procesadoresRes.data); - } catch (err: any) { + } catch (err) { if (axios.isAxiosError(err)) { if (err.response) { toast.error( - err.response.data?.message || "No se pudo conectar con el api" + err.response.data?.message || "No se pudo conectar con el API" ); } else if (err.request) { toast.error("No se pudo conectar con el servidor"); @@ -96,21 +88,8 @@ export default function page() { fetchData(); }, []); - const handleInputChange = ( - field: string, - value: string, - options: string[] - ) => { + const handleInputChange = (field: string, value: string) => { setFormData((prev) => ({ ...prev, [field]: value })); - - if (value.length >= 3) { - const filtered = options.filter((opt) => - opt.toLowerCase().includes(value.toLowerCase()) - ); - setSuggestions((prev) => ({ ...prev, [field]: filtered })); - } else { - setSuggestions((prev) => ({ ...prev, [field]: [] })); - } }; const handleSelectSuggestion = (field: string, value: string) => { @@ -118,25 +97,16 @@ export default function page() { setSuggestions((prev) => ({ ...prev, [field]: [] })); }; - const handleGuardar = () => { - console.log("Formulario enviado:", formData); - alert("Equipo guardado (vista solo)"); + const handleGuardar = async () => { + const token = Cookies.get("token"); + const headers = { Authorization: `Bearer ${token}` }; + + await axios.post(`${api_url}/equipos/crear`, formData, { headers }); + toast.success("Equipo guardado"); }; const handleCancelar = () => { - alert("Acción cancelada"); - }; - - const handleChange = (e: any) => { - const { name, value } = e.target; - setFormData((prev) => { - let updated = { ...prev, [name]: value }; - if (value === "Impresora") { - updated.sistemaOperativo = ""; - updated.procesador = ""; - } - return updated; - }); + toast.success("Acción cancelada"); }; return ( @@ -152,34 +122,23 @@ export default function page() { type="text" placeholder="Ingresa serie" value={formData.serie} - onChange={(e) => - setFormData({ ...formData, serie: e.target.value }) - } + onChange={(e) => handleInputChange("serie", e.target.value)} />
- - handleInputChange("marca", e.target.value, marcas) - } - /> - {suggestions.marca.length > 0 && ( - - )} + onChange={(e) => handleInputChange("marca", e.target.value)} + > + + {marcas.map((m) => ( + + ))} +
@@ -188,58 +147,40 @@ export default function page() { type="text" placeholder="Ingresa modelo" value={formData.modelo} - onChange={(e) => - handleInputChange("modelo", e.target.value, []) - } + onChange={(e) => handleInputChange("modelo", e.target.value)} />
- - handleInputChange("tipoEquipo", e.target.value, tiposEquipo) + handleInputChange("tipoEquipo", e.target.value) } - /> - {suggestions.tipoEquipo.length > 0 && ( - - )} + > + + {tiposEquipo.map((t) => ( + + ))} +
- - handleInputChange("estado", e.target.value, estados) - } - /> - {suggestions.estado.length > 0 && ( - - )} + onChange={(e) => handleInputChange("estado", e.target.value)} + > + + {estados.map((e) => ( + + ))} +
@@ -247,88 +188,53 @@ export default function page() {
- - handleInputChange("tipoUso", e.target.value, tiposUso) - } - /> - {suggestions.tipoUso.length > 0 && ( -
    - {suggestions.tipoUso.map((s) => ( -
  • handleSelectSuggestion("tipoUso", s)} - > - {s} -
  • - ))} -
- )} + onChange={(e) => handleInputChange("tipoUso", e.target.value)} + > + + {tiposUso.map((t) => ( + + ))} +
{mostrarCamposComputadora && ( <>
- - handleInputChange( - "procesador", - e.target.value, - procesadores - ) + handleInputChange("procesador", e.target.value) } - /> - {suggestions.procesador.length > 0 && ( -
    - {suggestions.procesador.map((s) => ( -
  • - handleSelectSuggestion("procesador", s) - } - > - {s} -
  • - ))} -
- )} + > + + {procesadores.map((p) => ( + + ))} +
- - handleInputChange( - "sistemaOperativo", - e.target.value, - sistemasOperativos - ) + handleInputChange("sistemaOperativo", e.target.value) } - /> - {suggestions.sistemaOperativo.length > 0 && ( -
    - {suggestions.sistemaOperativo.map((s) => ( -
  • - handleSelectSuggestion("sistemaOperativo", s) - } - > - {s} -
  • - ))} -
- )} + > + + {sistemasOperativos.map((so) => ( + + ))} +
)} @@ -340,11 +246,7 @@ export default function page() { placeholder="Selecciona adscripción" value={formData.adscripcion} onChange={(e) => - handleInputChange( - "adscripcion", - e.target.value, - adscripciones - ) + handleInputChange("adscripcion", e.target.value) } /> {suggestions.adscripcion.length > 0 && ( @@ -360,18 +262,6 @@ export default function page() { )}
- -
- - - setFormData({ ...formData, responsable: e.target.value }) - } - /> -
{/* Columna Derecha */} @@ -381,25 +271,25 @@ export default function page() {