"use client"; import { useSearchParams } from "next/navigation"; import { useEffect, useState } from "react"; import axios from "axios"; import Cookies from "js-cookie"; import toast from "react-hot-toast"; 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"; export default function Editar() { const searchParams = useSearchParams(); const inventario = searchParams.get("equipoId"); const [formData, setFormData] = useState({ inventario: "", serie: "", marca: "", modelo: "", tipoEquipo: "", estado: "", sistemaOperativo: "", procesador: "", tipoUso: "", observaciones: "", adscripcion: "", lugar: "", responsable: "", }); interface TipoUso { id_tipo_uso: number; tipo_uso: string; } interface Estado { id_estado: number; estado: string; } interface TipoEquipo { id_tipo_de_equipo: number; tipo_equipo: string; } interface SistemaOperativo { id_sistema_operativo: number; sistema_operativo: string; } interface Procesador { id_procesador: number; procesador: string; } interface Marca { id_marca: number; marca: string; } interface Adscripcion { id_adscripcion: number; adscripcion: string; } const [tiposUso, setTiposUso] = useState([]); const [marcas, setMarcas] = useState([]); const [estados, setEstados] = useState([]); const [adscripciones, setAdscripciones] = useState([]); const [tiposEquipo, setTiposEquipo] = useState([]); const [sistemasOperativos, setSistemasOperativos] = useState< SistemaOperativo[] >([]); const [procesadores, setProcesadores] = useState([]); const api_url = process.env.NEXT_PUBLIC_API_URL; const mostrarCamposComputadora = formData.tipoEquipo !== "PERIF脡RICO"; // 馃敼 Cargar cat谩logos useEffect(() => { const fetchCatalogos = async () => { const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; try { const [ usosRes, marcasRes, estadosRes, adscripcionesRes, tiposEquipoRes, sistemasOperativosRes, procesadoresRes, ] = await Promise.all([ axios.get(`${api_url}/equipos/usos`, { headers }), axios.get(`${api_url}/equipos/marcas`, { headers }), axios.get(`${api_url}/equipos/estados`, { headers }), axios.get(`${api_url}/equipos/adscripciones`, { headers }), axios.get(`${api_url}/equipos/tipos-equipo`, { headers }), axios.get(`${api_url}/equipos/sistemas-operativos`, { headers }), axios.get(`${api_url}/equipos/procesadores`, { headers }), ]); setTiposUso(usosRes.data); setMarcas(marcasRes.data); setEstados(estadosRes.data); setAdscripciones(adscripcionesRes.data); setTiposEquipo(tiposEquipoRes.data); setSistemasOperativos(sistemasOperativosRes.data); setProcesadores(procesadoresRes.data); } catch (error) { console.error("Error cargando cat谩logos:", error); toast.error("No se pudieron cargar los cat谩logos de datos"); } }; fetchCatalogos(); }, []); useEffect(() => { const fetchEquipo = async () => { if (!inventario) return; const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; try { const response = await axios.get( `${api_url}/equipos/buscar/${inventario}`, { headers, } ); const equipo = response.data; setFormData({ inventario: equipo.inventario || "", serie: equipo.serie || "", marca: equipo.marca?.marca || "", // <- relaci贸n modelo: equipo.modelo || "", tipoEquipo: equipo.tipoEquipo?.tipo || "", estado: equipo.estado?.estado || "", sistemaOperativo: equipo.sistemaOperativo?.nombre || "", procesador: equipo.procesador?.nombre || "", tipoUso: equipo.tipoUso?.tipo || "", observaciones: equipo.observaciones || "", adscripcion: equipo.adscripcion?.adscripcion || "", lugar: equipo.lugar || "", responsable: equipo.responsable || "", // <- devuelto por searchResponsable }); } catch (error) { console.error("Error al obtener el equipo:", error); toast.error("No se pudo cargar la informaci贸n del equipo."); } }; fetchEquipo(); }, [inventario]); // 馃敼 Guardar cambios const handleGuardar = async () => { const token = Cookies.get("token"); const headers = { Authorization: `Bearer ${token}` }; try { await axios.patch( `${api_url}/equipos/update/${formData.inventario}`, formData, { headers } ); toast.success("Equipo actualizado correctamente"); } catch (error) { console.error("Error al guardar:", error); toast.error("Hubo un error al guardar el equipo."); } }; const handleCancelar = () => { toast("Acci贸n cancelada"); }; return (

{formData.tipoEquipo} Inventario:{formData.inventario} Fecha de censo:

{/* Columna 1 */}
setFormData({ ...formData, serie: e.target.value }) } />
setFormData({ ...formData, modelo: e.target.value }) } />
{/* Columna 2 */}
{mostrarCamposComputadora && ( <>
)} {!mostrarCamposComputadora && (
)}
{/* Columna 3 */}