wip pdf
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
:placeholder="placeholder[langcode]"
|
:placeholder="placeholder[langcode]"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<p v-if="error" class="mt-2 text-sm text-error dark:text-error">{{ error }}</p>
|
<p v-if="error" class="mt-2 text-sm text-error dark:text-error">{{ error[langcode] }}</p>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -44,7 +44,9 @@ export default {
|
|||||||
updateEmail(email) {
|
updateEmail(email) {
|
||||||
const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
const pattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
||||||
if (pattern.test(String(email).toLowerCase())) {
|
if (pattern.test(String(email).toLowerCase())) {
|
||||||
this.$emit('input-value', email);
|
//this.$emit('input-value', email);
|
||||||
|
this.$emit('input-value', { email: email })
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
this.error = {
|
this.error = {
|
||||||
es: 'Por favor, introduce una dirección de correo electrónico válida.',
|
es: 'Por favor, introduce una dirección de correo electrónico válida.',
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ import { mapGetters } from 'vuex';
|
|||||||
|
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
|
id: { type: String, required: true },
|
||||||
type: { type: String, default: 'radio' },
|
type: { type: String, default: 'radio' },
|
||||||
label: { type: Object, default: () => ({}) },
|
label: { type: Object, default: () => ({}) },
|
||||||
options: { type: Array, default: () => [] },
|
options: { type: Array, default: () => [] },
|
||||||
|
|||||||
@@ -20,6 +20,10 @@
|
|||||||
import { mapGetters } from 'vuex';
|
import { mapGetters } from 'vuex';
|
||||||
export default {
|
export default {
|
||||||
props: {
|
props: {
|
||||||
|
id: {
|
||||||
|
type: String,
|
||||||
|
required: true
|
||||||
|
},
|
||||||
label: {
|
label: {
|
||||||
type: Object,
|
type: Object,
|
||||||
default: () => ({})
|
default: () => ({})
|
||||||
@@ -43,7 +47,7 @@ export default {
|
|||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
updateValue(event) {
|
updateValue(event) {
|
||||||
this.$emit('input-value', event.target.value)
|
this.$emit('input-value', { [this.id]: event.target.value });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="pdf-content" class="space-y-4 bg-surface text-accent">
|
<div id="pdf-content" class="space-y-4 bg-surface text-accent">
|
||||||
|
<img src="../public/logo-bravio.png" alt="logo-bravio-blanco" class="h-12 md:h-14 object-cover hidden" />
|
||||||
<h2 class="text-3xl font-semibold text-center">{{ data.title[langcode] }}</h2>
|
<h2 class="text-3xl font-semibold text-center">{{ data.title[langcode] }}</h2>
|
||||||
<p class="text-center text-muted">{{ data.subtitle[langcode] }}</p>
|
<p class="text-center text-muted">{{ data.subtitle[langcode] }}</p>
|
||||||
<!-- <div class="text-center">
|
<!-- <div class="text-center">
|
||||||
@@ -114,44 +115,96 @@ export default {
|
|||||||
},
|
},
|
||||||
reloadPage() {
|
reloadPage() {
|
||||||
if (import.meta.client) {
|
if (import.meta.client) {
|
||||||
|
localStorage.clear(); // Limpiar localStorage al cerrar el asistente
|
||||||
window.location.reload();
|
window.location.reload();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
async downloadPDF() {
|
async downloadPDF() {
|
||||||
if (import.meta.client) {
|
if (import.meta.client) {
|
||||||
const { jsPDF } = await import("jspdf")
|
const { jsPDF } = await import("jspdf")
|
||||||
const html2canvas = (await import("html2canvas")).default
|
|
||||||
|
|
||||||
const content = document.getElementById("pdf-content")
|
const content = document.getElementById("pdf-content")
|
||||||
|
if (!content) return
|
||||||
|
|
||||||
// // Parchear colores 'oklch' -> hex (html2canvas workaround)
|
//Parchear colores 'oklch' -> hex (html2canvas workaround)
|
||||||
// content.querySelectorAll("*").forEach(el => {
|
content.querySelectorAll("*").forEach(el => {
|
||||||
// const style = getComputedStyle(el)
|
const style = getComputedStyle(el)
|
||||||
// if (style.color.includes("oklch")) el.style.color = "#DAB2F4"
|
if (style.color.includes("oklch")) el.style.color = "#DAB2F4"
|
||||||
// if (style.backgroundColor.includes("oklch")) el.style.backgroundColor = "#eef2ff"
|
if (style.backgroundColor.includes("oklch")) el.style.backgroundColor = "#FFFFFF"
|
||||||
// if (style.borderColor.includes("oklch")) el.style.borderColor = "#DAB2F4"
|
if (style.borderColor.includes("oklch")) el.style.borderColor = "#DAB2F4"
|
||||||
// })
|
if (style.textDecorationColor.includes("oklch")) el.style.textDecorationColor = "#4F2773"
|
||||||
|
})
|
||||||
|
|
||||||
const canvas = await html2canvas(content, { scale: 2, backgroundColor: "#ffffff" })
|
const pdf = new jsPDF({
|
||||||
const imgData = canvas.toDataURL("image/png")
|
unit: "pt",
|
||||||
|
format: "a4",
|
||||||
|
putOnlyUsedFonts: true
|
||||||
|
})
|
||||||
|
|
||||||
const pdf = new jsPDF("p", "mm", "a4")
|
await pdf.html(content, {
|
||||||
const pageWidth = pdf.internal.pageSize.getWidth()
|
callback: (pdf) => {
|
||||||
const pageHeight = pdf.internal.pageSize.getHeight()
|
pdf.save("recomendaciones-bravioo.pdf")
|
||||||
|
},
|
||||||
// Definir márgenes (ejemplo: 20mm)
|
x: 20,
|
||||||
const margin = 20
|
y: 20,
|
||||||
const pdfWidth = pageWidth - 2 * margin
|
autoPaging: "text", //divide en varias páginas si hace falta
|
||||||
const pdfHeight = (canvas.height * pdfWidth) / canvas.width
|
html2canvas: {
|
||||||
pdf.setFontSize(12)
|
scale: 1,
|
||||||
|
useCORS: true
|
||||||
// Si el contenido es más alto que la página, ajustamos para que se pueda dividir en varias páginas
|
}
|
||||||
pdf.addImage(imgData, "PNG", 20, 20, pdfWidth, pdfHeight)
|
})
|
||||||
pdf.save("recomendaciones.pdf")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// async downloadPDF() {
|
||||||
|
// if (import.meta.client) {
|
||||||
|
// const { jsPDF } = await import("jspdf")
|
||||||
|
// const content = document.getElementById("pdf-content")
|
||||||
|
// if (!content) return
|
||||||
|
|
||||||
|
// // Clonamos el contenido para no alterar el DOM original
|
||||||
|
// const cloned = content // Otra opcion clonación nodo con: const cloned = content.cloneNode(true)
|
||||||
|
|
||||||
|
// // Aplicamos estilos globales antes de pasarlo a jsPDF
|
||||||
|
// cloned.querySelectorAll("*").forEach(el => {
|
||||||
|
// el.style.color = "#4F2773" // texto violeta
|
||||||
|
// el.style.backgroundColor = "#FFFFFF" // fondo blanco
|
||||||
|
// el.style.fontSize = "12px" // tamaño fuente
|
||||||
|
// el.style.lineHeight = "1.5"
|
||||||
|
// el.style.borderColor = "#4F2773"
|
||||||
|
// el.style.textDecorationColor = "#4F2773"
|
||||||
|
// })
|
||||||
|
|
||||||
|
// // También aseguramos que el contenedor tenga fondo blanco
|
||||||
|
// cloned.style.backgroundColor = "#FFFFFF"
|
||||||
|
// cloned.style.color = "#4F2773"
|
||||||
|
// cloned.style.fontSize = "12px"
|
||||||
|
// cloned.style.lineHeight = "1.5"
|
||||||
|
|
||||||
|
// // Crear PDF
|
||||||
|
// const pdf = new jsPDF({
|
||||||
|
// unit: "pt",
|
||||||
|
// format: "a4",
|
||||||
|
// putOnlyUsedFonts: true
|
||||||
|
// })
|
||||||
|
|
||||||
|
// // Renderizar HTML al PDF
|
||||||
|
// await pdf.html(cloned, {
|
||||||
|
// callback: (pdf) => {
|
||||||
|
// pdf.save("recomendaciones-bravioo.pdf")
|
||||||
|
// },
|
||||||
|
// x: 20,
|
||||||
|
// y: 20,
|
||||||
|
// autoPaging: "text", // divide si hace falta
|
||||||
|
// html2canvas: {
|
||||||
|
// scale: 1,
|
||||||
|
// useCORS: true,
|
||||||
|
// backgroundColor: "#FFFFFF" // asegura fondo blanco en el render
|
||||||
|
// }
|
||||||
|
// })
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -37,6 +37,7 @@
|
|||||||
|
|
||||||
<component
|
<component
|
||||||
:is="resolveComponent(input.type)"
|
:is="resolveComponent(input.type)"
|
||||||
|
:id="data.id"
|
||||||
:key="data.id + '-' + input.label[langcode] + '-' + idx"
|
:key="data.id + '-' + input.label[langcode] + '-' + idx"
|
||||||
v-bind="input"
|
v-bind="input"
|
||||||
:required="input.required || false"
|
:required="input.required || false"
|
||||||
@@ -124,6 +125,14 @@ export default {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
values(newVal) {
|
||||||
|
//console.log("Valores actuales en SliceQuestion →", newVal)
|
||||||
|
// comprobar si es válido
|
||||||
|
//console.log("isValid desde watch →", this.isValid)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
resolveComponent(type) {
|
resolveComponent(type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
|||||||
1533
data/bravioo copy.js
1533
data/bravioo copy.js
File diff suppressed because it is too large
Load Diff
@@ -129,6 +129,7 @@ export const surveyData = {
|
|||||||
},
|
},
|
||||||
],
|
],
|
||||||
questionTotalPoints: 1,
|
questionTotalPoints: 1,
|
||||||
|
//next: "end"
|
||||||
next: { "Honduras": "P1-F2-1", "Bolivia": "P1-F2-1", "Argentina": "P1-F2-1", "Chile": "P1-F2-1", "Otro": "P1-F2-2" }
|
next: { "Honduras": "P1-F2-1", "Bolivia": "P1-F2-1", "Argentina": "P1-F2-1", "Chile": "P1-F2-1", "Otro": "P1-F2-2" }
|
||||||
},
|
},
|
||||||
// Feedbacks P1-F2-1 y P1-F2-2
|
// Feedbacks P1-F2-1 y P1-F2-2
|
||||||
|
|||||||
655
data/iguales.js
655
data/iguales.js
@@ -1,655 +0,0 @@
|
|||||||
export const surveyData = {
|
|
||||||
title: "Formulario Demo",
|
|
||||||
slices: [
|
|
||||||
{
|
|
||||||
id: "welcome",
|
|
||||||
type: "welcome",
|
|
||||||
section: {
|
|
||||||
title: "Introducción",
|
|
||||||
description: ""
|
|
||||||
},
|
|
||||||
title: "Bienvenida a Iguales",
|
|
||||||
subtitle: "Cuestionario de evaluación",
|
|
||||||
button: "Comenzar",
|
|
||||||
next: "B0-01"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B0-01",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B0",
|
|
||||||
title: "1. Informativa",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "a) Nº de trabajadores",
|
|
||||||
description: "Por favor, selecciona una opción",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "Sector",
|
|
||||||
options: [
|
|
||||||
{ value: "<50", label: "Inferior a 50", score: 0},
|
|
||||||
{ value: ">50", label: "Superior a 50", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B0-02"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B0-02",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B0",
|
|
||||||
title: "1. Informativa",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "b) ¿Tiene plan de igualdad?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
{ value: "nsnc", label: "No sabe / No contesta", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B1-01"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B1-01",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B1",
|
|
||||||
title: "2. Brecha de género y salarial",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "a) Cual es la proporción entre Hombres/Mujeres de toda la plantilla con vinculación laboral (no perfiles voluntarios)",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: ">60", label: "Más del 60% son mujeres", score: 0},
|
|
||||||
{ value: "<60", label: "Menos del 60% son mujeres", score: 0},
|
|
||||||
{ value: "60/40", label: "60% Hombres / 40% Mujeres", score: 1},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B1-02"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B1-02",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B1",
|
|
||||||
title: "2. Brecha de género y salarial",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "b) A la hora de incorporar nuevos perfiles en la entidad, ¿existe un proceso de selección y reclutamiento basados en principios de transparencia e igualdad, público y difundido interna y externamente con perspectiva de género?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
{ value: "nsnc", label: "No sabe / No contesta", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B1-03"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B1-03",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B1",
|
|
||||||
title: "2. Brecha de género y salarial",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "c) ¿Existe algún puesto/ocupación en que solo hayan contratado hombres?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
{ value: "nsnc", label: "No sabe / No contesta", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B1-04"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B1-04",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B1",
|
|
||||||
title: "2. Brecha de género y salarial",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "d) ¿Existe algún puesto/ocupación en que solo hayan contratado mujeres?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
{ value: "nsnc", label: "No sabe / No contesta", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B1-05"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B1-05",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B1",
|
|
||||||
title: "2. Brecha de género y salarial",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "e) ¿Cuál es la retribución media salarial que predomina en vuestra entidad?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "igual", label: "La retribución media salarial mensual de los hombres es igual que la retribución media mensual de las mujeres", score: 1},
|
|
||||||
{ value: "menor-hombres", label: "La retribución media salarial mensual de los hombres es menor", score: 0},
|
|
||||||
{ value: "menor-mujeres", label: "La retribución media salarial mensual de las mujeres es menor", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B1-06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B1-06",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B1",
|
|
||||||
title: "2. Brecha de género y salarial",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "f) ¿Cuál es la proporción de Hombres/Mujeres en cargos/puestos en mandos intermedios?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: ">60-H", label: "Los mando intermedios están mayoritariamente ocupados por hombres (+ del 60%)", score: 0},
|
|
||||||
{ value: ">60-M", label: "Los mando intermedios están mayoritariamente ocupados por mujeres (+ del 60%)", score: 0},
|
|
||||||
{ value: "50/50", label: "Los mando intermedios están ocupados de manera igualitaria (50%-50%)", score: 1},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B1-07"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B1-07",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B1",
|
|
||||||
title: "2. Brecha de género y salarial",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "g) ¿Cuál es la proporción de Hombres/Mujeres en cargos directivos?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: ">60-H", label: "Los mando intermedios están mayoritariamente ocupados por hombres (+ del 60%)", score: 0},
|
|
||||||
{ value: ">60-M", label: "Los mando intermedios están mayoritariamente ocupados por mujeres (+ del 60%)", score: 0},
|
|
||||||
{ value: "50/50", label: "Los mando intermedios están ocupados de manera igualitaria (50%-50%)", score: 1},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "F1-B1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "F1-B1",
|
|
||||||
type: "feedback",
|
|
||||||
section: {
|
|
||||||
id: "B1",
|
|
||||||
title: "2. Brecha de género y salarial",
|
|
||||||
description: ""
|
|
||||||
},
|
|
||||||
title: "Resultados del bloque",
|
|
||||||
subtitle: "",
|
|
||||||
button: "Entendido · Continuar",
|
|
||||||
next: "B2-01"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B2-01",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B2",
|
|
||||||
title: "3. Formación y promoción",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "a) El plan o acciones de formación se han comunicado de forma abierta con opciones flexibles de horario y perspectiva de género",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B2-02"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B2-02",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B2",
|
|
||||||
title: "3. Formación y promoción",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "b) Se han realizado acciones formativas en habilidades de liderazgo o específicas de dirección de forma transversal para incentivar la promoción igualitaria?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B2-03"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B2-03",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B2",
|
|
||||||
title: "3. Formación y promoción",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "c) ¿Existen alternativas flexibles de formación (online/presencial) transversal para toda la plantilla?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B2-04"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B2-04",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B2",
|
|
||||||
title: "3. Formación y promoción",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "d) ¿Existen procesos de evaluación por objetivos y/o méritos formulados transversal e igualitariamente con perspectiva de género?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B2-05"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B2-05",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B2",
|
|
||||||
title: "3. Formación y promoción",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "e) ¿Existen procesos de evaluación por objetivos y/o méritos formulados transversal e igualitariamente con perspectiva de género?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "F1-B2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "F1-B2",
|
|
||||||
type: "feedback",
|
|
||||||
section: {
|
|
||||||
id: "B2",
|
|
||||||
title: "3. Formación y promoción",
|
|
||||||
description: ""
|
|
||||||
},
|
|
||||||
title: "Resultados del bloque",
|
|
||||||
subtitle: "",
|
|
||||||
button: "Entendido · Continuar",
|
|
||||||
next: "B3-01"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-01",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B301",
|
|
||||||
title: "4.1. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "a) ¿Existen procesos para la gestión de teletrabajo/herramientas adecuadas (software/hardware) provistos por la organización?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "F1-B3-1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "F1-B3-1",
|
|
||||||
type: "feedback",
|
|
||||||
section: {
|
|
||||||
id: "B301",
|
|
||||||
title: "4. Prevención y conciliación",
|
|
||||||
description: ""
|
|
||||||
},
|
|
||||||
title: "Resultados del subbloque",
|
|
||||||
subtitle: "",
|
|
||||||
button: "Entendido · Continuar",
|
|
||||||
next: "B3-02"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-02",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B302",
|
|
||||||
title: "4.2. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "b) Existe la posibilidad de trabajo voluntario y/o flexibilidad laboral bajo políticas igualitarias",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B3-03"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-03",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B302",
|
|
||||||
title: "4.2. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "c) ¿Existe un programa/politicas de conocimiento público sobre plan de conciliación laboral?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B3-04"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-04",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B302",
|
|
||||||
title: "4.2. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "d) ¿Cuentan con beneficios/servicios sociales? (guarderías/beneficios/descuentos)",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B3-05"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-05",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B302",
|
|
||||||
title: "4.2. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "e) ¿Se realizan campañas de sensibilización/divulgación sobre la corresponsabilidad de tareas domésticas/conciliación , cuidado de personas dependientes?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "F1-B3-2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "F1-B3-2",
|
|
||||||
type: "feedback",
|
|
||||||
section: {
|
|
||||||
id: "B302",
|
|
||||||
title: "4.2. Prevención y conciliación",
|
|
||||||
description: ""
|
|
||||||
},
|
|
||||||
title: "Resultados del subbloque",
|
|
||||||
subtitle: "",
|
|
||||||
button: "Entendido · Continuar",
|
|
||||||
next: "B3-06"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-06",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B303",
|
|
||||||
title: "4.3. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "f) Se ha realizado alguna campaña o acción de divulgación de información sobre los derechos de las mujeres victimas de violencia de género? (charlas en colaboración con organizaciones expertas en violencia de género)",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B3-07"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-07",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B303",
|
|
||||||
title: "4.3. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "g) Acerca del protocolo de acoso (sexual o por sexo) y procedimientos específicos para la prevención del acoso, conocimiento de los procesos, causa de las denuncias y reclamaciones. Responde por favor las siguientes preguntas; ¿Existe código ético de conducta y/o protocolo de acoso con la descripción de procedimientos para lam prevención y actuación en caso de acoso (sexual o por sexo)?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B3-08"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-08",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B303",
|
|
||||||
title: "4.3. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "h) ¿Existen formularios o plantillas de acceso público de denuncia por acoso sexual o por sexo?",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "B3-09"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "B3-09",
|
|
||||||
type: "question",
|
|
||||||
section: {
|
|
||||||
id: "B303",
|
|
||||||
title: "4.3. Prevención y conciliación",
|
|
||||||
description: "",
|
|
||||||
},
|
|
||||||
question: {
|
|
||||||
title: "i) El plan de PRL o normas de prevención laboral ¿Incluye(n) perspectiva de género para prevenir acoso sexual o por sexo? (disposición de los puestos de trabajo, acceso a servicios, herramientas y equipos de trabajo)",
|
|
||||||
description: "",
|
|
||||||
recommendation: ""
|
|
||||||
},
|
|
||||||
input: {
|
|
||||||
type: "radio",
|
|
||||||
label: "",
|
|
||||||
options: [
|
|
||||||
{ value: "si", label: "Si", score: 1},
|
|
||||||
{ value: "no", label: "No", score: 0},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
questionTotalPoints: 1,
|
|
||||||
next: "F1-B3-3"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "F1-B3-3",
|
|
||||||
type: "feedback",
|
|
||||||
section: {
|
|
||||||
id: "B303",
|
|
||||||
title: "4. Prevención y conciliación",
|
|
||||||
description: ""
|
|
||||||
},
|
|
||||||
title: "Resultados del subbloque",
|
|
||||||
subtitle: "",
|
|
||||||
button: "Entendido · Continuar",
|
|
||||||
next: "end"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: "end",
|
|
||||||
type: "end",
|
|
||||||
title: "¡Aquí están los resultados!",
|
|
||||||
subtitle: "Este es el diagnóstico de tu entidad en igualdad de género. Puedes leer cada bloque o descargar el informe completo en PDF. Para interpretar los resultados y planificar próximos pasos, sigue el curso IGUALES del Aula Virtual.",
|
|
||||||
}
|
|
||||||
],
|
|
||||||
rules: {
|
|
||||||
B1: (score) => score >= 6 ? "Vuestra entidad está comprometida con la eliminación de las brechas de género y salariales en base a género, y está haciendo las cosas bien. Ha conseguido acercarse a la proporción igualitaria en la plantilla y que las remuneraciones se hayan equiparado o estén cercanas a ello." : "Os animamos a continuar trabajando para la eliminación de las brechas de género y a conseguir la igualdad tanto en la proporción de hombres y mujeres en plantilla como la equiparación salarial. Queda camino pero conseguir una entidad igualitaria impacta positivamente en la sociedad.",
|
|
||||||
B2: (score) => score >= 3 ? "La formación y la promoción interna de vuestra entidad tiene perspectiva de género y muestra un compromiso con la igualdad de oportunidades para toda la plantilla. Os animamos a continuar así y (si no tienen Plan Igualdad) ha plasmar todas vuestras políticas en un plan de igualdad- (si tienen Plan de Igualdad) a comunicar vuestras políticas igualitarias a toda vuestra cadena de valor, colaboradores y entidades afines." : "Es importante que las entidades apliquen la perspectiva de género en materia formativa y de promoción de la plantilla. El compromiso de la entidad en este área reportará grandes beneficios a medio y largo plazo, teniendo una plantilla que integra la igualdad desde el conocimiento y naturaliza unos patrones sostenibles. No hay tiempo que perder, trabajemos en ello!",
|
|
||||||
B301: (score) => score >= 1 ? "La gestión del teletrabajo es una potente herramienta para la conciliación por lo que, el hecho de dotar de herramientas a la entidad ya es un simbolo del compromiso con la igualdad de oportunidades, enhorabuena." : "Es interesante incorporar medidas en las que el teletrabajo ayude a la conciliación y a la igualdad, no te quedes atrás y explora esa vía para fortalecer tu organización y la igualdad",
|
|
||||||
B302: (score) => score >= 2 ? "La conciliación y el poner los cuidados en el centro hacen de una entidad un lugar más lugar más amable e igualitario y no solo a nivel personal, sino también a nivel colectivo reporta grandes beneficios como el aumento de productividad, reducción del absentismo, fijación del talento y sostenibilidad de la plantilla. Un reconocimiento al buen hacer de la entidad integrando estas medidas de igualdad." : "La incorporación de medidas de conciliación pueden reportar grandes beneficios a vuestra entidad por lo que os impulsamos a incluir pequeños, pero firmes, pasos en el cuidado de la plantilla y la conciliación para tener un entorno laboral positivo y que el bienestar del equipo repercuta en un espacio más productivo y colaborativo. ",
|
|
||||||
B303: (score) => score >= 2 ? "Los protocolos de acoso y todas las medidas para frenar actitudes discriminatorias por razón de sexo o de cualquier otra índole que habéis incorporado en la entidad son imprescindibles para hacer un entorno más igualitario y sin duda alguna os han ayudado a crear un ambiente de trabajo sano e igualitario impactando positivamente en todos los aspectos de la organización. Esto os conviente en referentes de igualdad en vuestro sector y esperamos permee a toda vuestra cadena de valor!" : "Es imprescindible que la organización haga un esfuerzo y trabaje en la igualdad creando e implantando medidas que eviten el acoso y la discriminación por razón de sexo o de cualquier otra índole. Además tomar medidas y formar al equipo para dar visibilidad a la violencia de género ayuda no solo a un entorno de trabajo consciente y saludable sino también a una sociedad igualitaria y justa. Todos y todas somos necesarios para lograr la igualdad real."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
<transition name="fade" mode="out-in">
|
<transition name="fade" mode="out-in">
|
||||||
<component
|
<component
|
||||||
:is="currentSliceComponent"
|
:is="currentSliceComponent"
|
||||||
|
:id="currentSliceId"
|
||||||
:key="currentSliceId"
|
:key="currentSliceId"
|
||||||
:data="currentSlice"
|
:data="currentSlice"
|
||||||
:current-index="currentQuestionIndex"
|
:current-index="currentQuestionIndex"
|
||||||
@@ -83,12 +84,12 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
mounted() {
|
mounted() {
|
||||||
// Al montar, escuchar el evento de recarga/cierre
|
//Al montar, escuchar el evento de recarga/cierre
|
||||||
window.addEventListener("beforeunload", this.clearStorageOnReload)
|
window.addEventListener("beforeunload", this.clearStorageOnReload)
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeUnmount() {
|
beforeUnmount() {
|
||||||
// Limpiar el listener al desmontar el componente
|
//Limpiar el listener al desmontar el componente
|
||||||
window.removeEventListener("beforeunload", this.clearStorageOnReload)
|
window.removeEventListener("beforeunload", this.clearStorageOnReload)
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -110,7 +111,7 @@ export default {
|
|||||||
sectionId: this.currentSlice.section.id,
|
sectionId: this.currentSlice.section.id,
|
||||||
sectionTitle: this.currentSlice.section.title,
|
sectionTitle: this.currentSlice.section.title,
|
||||||
sliceId: this.currentSlice.id,
|
sliceId: this.currentSlice.id,
|
||||||
value: event.value,
|
value: event.value || event,
|
||||||
score: event.score,
|
score: event.score,
|
||||||
questionTotalPoints: this.currentSlice.questionTotalPoints || 0,
|
questionTotalPoints: this.currentSlice.questionTotalPoints || 0,
|
||||||
}
|
}
|
||||||
@@ -169,7 +170,7 @@ export default {
|
|||||||
|
|
||||||
saveAnswer(payload) {
|
saveAnswer(payload) {
|
||||||
// payload: { id: "question1", value: "Si" }
|
// payload: { id: "question1", value: "Si" }
|
||||||
////console.log("Guardando respuesta:", payload)
|
//console.log("Guardando respuesta - Payload:", payload)
|
||||||
let el;
|
let el;
|
||||||
if (typeof payload !== "object") {
|
if (typeof payload !== "object") {
|
||||||
el = {
|
el = {
|
||||||
@@ -180,7 +181,7 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
el = payload
|
el = payload
|
||||||
}
|
}
|
||||||
////console.log("Guardando respuesta:", el)
|
//console.log("Guardando respuesta - Final:", el)
|
||||||
this.answers.push(el)
|
this.answers.push(el)
|
||||||
localStorage.setItem("answers", JSON.stringify(this.answers))
|
localStorage.setItem("answers", JSON.stringify(this.answers))
|
||||||
},
|
},
|
||||||
@@ -212,9 +213,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
calculateFinalScore() {
|
calculateFinalScore() {
|
||||||
const results = JSON.parse(localStorage.getItem('results'))
|
const results = JSON.parse(localStorage.getItem('results'))
|
||||||
if (results && results.length > 0) {
|
if (results && results.length > 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user