From d80e01ad261e555b5ff395315a84362f5bc86009 Mon Sep 17 00:00:00 2001 From: esteban Date: Sat, 25 Jul 2026 09:44:55 -0500 Subject: [PATCH] feat: add PR to countries, add second name and add full_name like value --- public/forms/formulario-inscripcion.json | 5 +++-- public/forms/paises.json | 8 +++++++- src/components/forms/DynamicForm.vue | 20 ++++++++++++++------ src/i18n/es.json | 3 ++- src/pages/api/formulario/send.ts | 2 +- 5 files changed, 27 insertions(+), 11 deletions(-) diff --git a/public/forms/formulario-inscripcion.json b/public/forms/formulario-inscripcion.json index df346b5..8b12133 100644 --- a/public/forms/formulario-inscripcion.json +++ b/public/forms/formulario-inscripcion.json @@ -26,8 +26,9 @@ "column": 2, "fields": [ { "key": "nombre", "label": "form.nombre", "type": "text", "required": true }, + { "key": "segundo_nombre", "label": "form.segundo_nombre", "type": "text" }, { "key": "apellido", "label": "form.apellido", "type": "text", "required": true }, - { "key": "documentos", "label": "form.documentos", "type": "text", "required": true, "colspan": 2 }, + { "key": "documentos", "label": "form.documentos", "type": "phone", "required": true }, { "key": "correo", "label": "form.correo", "type": "email", "required": true, "colspan": 2 }, { "key": "reglamento_firma", "label": "form.reglamento_firma", "type": "text", "required": true, "colspan": 2, "placeholder": "form.reglamento_firma_placeholder" }, { "key": "fecha_nacimiento", "label": "form.fecha_nacimiento", "type": "date", "required": true }, @@ -221,7 +222,7 @@ "label": "form.step8", "column": 2, "fields": [ - { "key": "confirmar_nombre", "label": "form.confirmar_nombre", "type": "text", "readonly": true, "valueFrom": "nombre" }, + { "key": "confirmar_nombre", "label": "form.confirmar_nombre", "type": "text", "readonly": true, "valueFrom": "nombre_completo" }, { "key": "confirmar_firma", "label": "form.confirmar_firma", "type": "text", "readonly": true, "valueFrom": "reglamento_firma" }, { "key": "declaracion_voluntario", diff --git a/public/forms/paises.json b/public/forms/paises.json index 5197469..a2a9e86 100644 --- a/public/forms/paises.json +++ b/public/forms/paises.json @@ -353,6 +353,12 @@ "dial_code": "+1", "flag": "馃嚭馃嚫" }, + { + "label": "Puerto Rico", + "value": "Puerto Rico", + "dial_code": "+1", + "flag": "馃嚨馃嚪" + }, { "label": "Estonia", "value": "Estonia", @@ -1157,4 +1163,4 @@ "dial_code": "+263", "flag": "馃嚳馃嚰" } -] \ No newline at end of file +] diff --git a/src/components/forms/DynamicForm.vue b/src/components/forms/DynamicForm.vue index 0cd9cd5..fb4fcdd 100644 --- a/src/components/forms/DynamicForm.vue +++ b/src/components/forms/DynamicForm.vue @@ -236,15 +236,19 @@ const buildPayload = () => { const responses = []; config.value.steps.forEach((step, si) => { step.fields.forEach((field) => { - const value = formData[field.key]; - if (value !== "" && !(Array.isArray(value) && value.length === 0)) { + if (field.key === "segundo_nombre") return; + let finalValue = formData[field.key]; + if (field.key === "nombre" && formData.segundo_nombre) { + finalValue = `${finalValue} ${formData.segundo_nombre}`; + } + if (finalValue !== "" && !(Array.isArray(finalValue) && finalValue.length === 0)) { responses.push({ key: field.key, - value: value, + value: finalValue, section_id: `step_${si}` }); - if (field.levels && Array.isArray(value)) { - value.forEach((optVal) => { + if (field.levels && Array.isArray(finalValue)) { + finalValue.forEach((optVal) => { const levelKey = `${field.key}_nivel_${optVal}`; const levelVal = formData[levelKey]; if (levelVal) { @@ -458,9 +462,13 @@ watch(currentStep, (step) => { } }, { immediate: true }); +watch([() => formData.nombre, () => formData.segundo_nombre], ([nombre, segundo_nombre]) => { + formData.nombre_completo = [nombre, segundo_nombre].filter(Boolean).join(" "); +}); + const getFieldIcon = (field) => { const k = field.key; - if (k === "nombre" || k === "emergencia_nombre") return "ph:user"; + if (k === "nombre" || k === "segundo_nombre" || k === "emergencia_nombre") return "ph:user"; if (k === "apellido") return "ph:identification-card"; if (k === "documentos") return "ph:cardholder"; if (k === "correo" || k === "emergencia_correo") return "ph:envelope"; diff --git a/src/i18n/es.json b/src/i18n/es.json index 6db6054..4c969b8 100644 --- a/src/i18n/es.json +++ b/src/i18n/es.json @@ -211,6 +211,7 @@ "form.step6": "Informaci贸n M茅dica", "form.step7": "Contacto de Emergencia", "form.nombre": "Nombre", + "form.segundo_nombre": "Segundo Nombre", "form.apellido": "Apellido", "form.documentos": "Documento de Identidad / Pasaporte", "form.correo": "Correo Electr贸nico", @@ -312,7 +313,7 @@ "form.declaracion.autorizo_datos": "Autorizo el tratamiento de mis datos personales conforme a la Pol铆tica de Privacidad del Centro y la legislaci贸n aplicable.", "form.declaracion.confidencialidad": "Me comprometo a guardar absoluta confidencialidad respecto de toda la informaci贸n a la que tenga acceso durante mi participaci贸n.", "form.declaracion.voluntaria": "Entiendo que mi participaci贸n es completamente voluntaria y que no genera relaci贸n laboral alguna con el Centro.", - "form.confirmar_nombre": "Nombre", + "form.confirmar_nombre": "Nombres", "form.confirmar_firma": "Firma electr贸nica", "form.confirmacion": "Confirmaci贸n final", "form.confirmacion_label": "Confirmo que los datos personales y la firma mostrados arriba son correctos y corresponden a mi persona.", diff --git a/src/pages/api/formulario/send.ts b/src/pages/api/formulario/send.ts index 6204c10..21e3b38 100644 --- a/src/pages/api/formulario/send.ts +++ b/src/pages/api/formulario/send.ts @@ -5,7 +5,7 @@ export const prerender = false; const COLUMNS = [ "aceptacion_reglamento", - "nombre", + "nombre_completo", "apellido", "documentos", "correo",