From b4c159215bcf2c91adef2d023bcee30e6c8e3a04 Mon Sep 17 00:00:00 2001 From: AdalbertoCV <34152734@uaz.edu.mx> Date: Mon, 7 Oct 2024 20:56:01 -0600 Subject: [PATCH 1/3] =?UTF-8?q?Primera=20parte=20de=20edici=C3=B3n=20de=20?= =?UTF-8?q?respuestas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cosiap_frontend/src/App.jsx | 2 + .../common/utility/RenderElementEdit.jsx | 185 ++++++++++++++ .../src/components/modalidades/Modalidad.css | 32 +++ .../solicitudes/EditarSolicitud.jsx | 239 ++++++++++++++++++ .../solicitudes/HistorialSolicitudes.jsx | 5 +- 5 files changed, 462 insertions(+), 1 deletion(-) create mode 100644 cosiap_frontend/src/components/common/utility/RenderElementEdit.jsx create mode 100644 cosiap_frontend/src/components/solicitudes/EditarSolicitud.jsx diff --git a/cosiap_frontend/src/App.jsx b/cosiap_frontend/src/App.jsx index 93d6d55..63b2e17 100644 --- a/cosiap_frontend/src/App.jsx +++ b/cosiap_frontend/src/App.jsx @@ -29,6 +29,7 @@ import EditModalidad from "./components/modalidades/EditarModalidad"; import SolicitarModalidad from "./components/modalidades/Modalidad"; import Perfil from '@/components/users/Perfil/Perfil'; import ListaSolicitudes from "./components/solicitudes/HistorialSolicitudes"; +import EditarSolicitud from "./components/solicitudes/EditarSolicitud"; function App() { const [viewPageLoader, setViewPageLoader] = useState(false); @@ -102,6 +103,7 @@ function RoutesApp({ setViewPageLoader }) { } /> } /> } /> + } /> } /> {/* Solo administradores pueden acceder a estas url */} { + const { tipo, opciones, id, nombre, formato, obligatorio } = elemento; + + // Buscar si ya existe una respuesta para este elemento + const respuestaElemento = respuestas.find( + (r) => r.seccion_id === seccionId && r.elemento_id === id + ); + + // Determinar el valor prellenado + const valorPrellenado = respuestaElemento ? respuestaElemento.valor : ""; + + const handleChange = (e) => { + const valor = e.target.value; + console.log(`Valor seleccionado: ${valor}`); + handleInputChange(seccionId, id, valor); + }; + + const handleDownload = async (elemento, formato) => { + try { + const response = await api.formatos.getById(formato, { + responseType: 'blob', + }); + + const contentType = response.headers['content-type']; + console.log('Content Type:', contentType); + + if (contentType !== 'application/vnd.openxmlformats-officedocument.wordprocessingml.document') { + throw new Error('Tipo de archivo inesperado'); + } + + const blob = new Blob([response.data], { type: contentType }); + const url = window.URL.createObjectURL(blob); + + const link = document.createElement('a'); + link.href = url; + link.setAttribute('download', `${elemento.nombre}_formato.docx`); + + document.body.appendChild(link); + link.dispatchEvent(new MouseEvent('click', { bubbles: true, cancelable: true, view: window })); + window.URL.revokeObjectURL(url); + } catch (error) { + console.error('Error al descargar el formato:', error); + } + }; + + const renderInput = (inputElement, obligatorio) => ( + <> + {inputElement} + {obligatorio && *obligatorio} + + ); + + switch (tipo) { + case "texto_corto": + return renderInput( + , + obligatorio + ); + case "texto_parrafo": + return renderInput( +