Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
CALIDADWEB
/
CALIDADWEB
/
FRONTED
/
INPUTS
:
FOR-S-CCI-65.js
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
document.addEventListener("DOMContentLoaded", () => { const canvas = document.getElementById("firmaCorrectivo"); const ctx = canvas.getContext("2d"); const clearBtn = document.getElementById("clearBtnCorrectivo"); const base64Input = document.getElementById("base64Correctivo"); const form = document.getElementById("formGeneral"); if (!canvas || !form || !base64Input) { console.error("❌ Elementos no encontrados"); return; } let drawing = false; let lastPos = { x: 0, y: 0 }; ctx.lineWidth = 2; ctx.lineCap = "round"; ctx.strokeStyle = "black"; function getPos(e) { const rect = canvas.getBoundingClientRect(); if (e.touches) { return { x: e.touches[0].clientX - rect.left, y: e.touches[0].clientY - rect.top }; } return { x: e.clientX - rect.left, y: e.clientY - rect.top }; } canvas.addEventListener("mousedown", e => { drawing = true; lastPos = getPos(e); }); canvas.addEventListener("mousemove", e => { if (!drawing) return; const pos = getPos(e); ctx.beginPath(); ctx.moveTo(lastPos.x, lastPos.y); ctx.lineTo(pos.x, pos.y); ctx.stroke(); lastPos = pos; }); canvas.addEventListener("mouseup", () => drawing = false); canvas.addEventListener("mouseleave", () => drawing = false); canvas.addEventListener("touchstart", e => { e.preventDefault(); drawing = true; lastPos = getPos(e); }, { passive: false }); canvas.addEventListener("touchmove", e => { e.preventDefault(); if (!drawing) return; const pos = getPos(e); ctx.beginPath(); ctx.moveTo(lastPos.x, lastPos.y); ctx.lineTo(pos.x, pos.y); ctx.stroke(); lastPos = pos; }, { passive: false }); canvas.addEventListener("touchend", () => drawing = false); clearBtn.addEventListener("click", () => { ctx.clearRect(0, 0, canvas.width, canvas.height); base64Input.value = ""; }); // 🔥 AQUÍ ESTÁ LA CLAVE DEFINITIVA form.addEventListener("submit", (e) => { const img = canvas.toDataURL("image/png"); base64Input.value = img; console.log("📌 BASE64 ENVIADO:", img.substring(0, 50)); if (!img || img.length < 50) { e.preventDefault(); alert("Debe firmar antes de enviar"); return false; } }); }); // Constante con áreas y superficies inspeccion operativa POES const Area = { /* BENEFICIO */ "ENFRIAMIENTO Y EMPAQUE DE VISCERAS": [ "Rejilla caída de víscera", "Mesas de recepción", "Baldes de recolección de víscera", "Conos metálicos", "Mesas de embandejado", "Recipientes (tazas inox y/o baldes)", "Grameras", "Desinfección de superficies y ambientes", "Guantes metálicos", "Cuchillos, Chairas", "Termómetro de Punzón", "Delantales", ], "ENFRIAMIENTO Y EMPAQUE DE CANAL": [ "Descolgador de pollo", "Banda de cangilones entrada de canal al chiller", "Escurridor de tambor", "Grameras", "Mesas de recibo de canal", "Delantales", "Bandeja de ingreso de canal a prechiller", "seleccionadora (banda y pateadora de teflón)", "Cajones de empaque de producto", "Embudos", "Pala de hielo", "Desinfección de superficies y ambientes", "Tijeras", "Termómetro de Punzón", "Banda escurridor salida chiller", ], "DESPRESE Y MARINADO": [ "Banda de Cangilones", "Banda de empaque", "Banda transportadora de presas", "Cuchillos, chairas", "Despresadora automatica (cuchilla y guías metálicas)", "Despresadora manual (cuchilla y guías metálicas)", "Marinadora de presa (agujas, banda, cortinas y pie de bloque)", "Guantes metálicos", "Mesas", "Recipientes (tazas inox y/o baldes)", "Delantales", "Grameras", "Desinfección de superficies y ambientes", "Termómetro de Punzón", ], "FILETEO DE POLLO": [ "Cuchillos, chairas", "Tablas de teflón", "Recipientes (tazas inox y/o baldes)", "Guantes metálicos", "Mesas de corte", "Deshuesador", "Soporte Grameras", "Grameras", "Desinfección de superficies y ambientes", "Delantales", "Termómetro de Punzón", ], "DESPRESE Y FILETEO DE PAVO": [ "Asentador", "Banda transportadora de presas", "Campanas Protectoras de Antebrazo", "Mesas despresado (conos)", "Mesas de fileteo", "Cuchillos, chairas", "Mesas de empaque", "Sierra", "Grameras", "Tablas de teflón", "Recipientes (tazas inox y/o baldes)", "Desinfección de superficies y ambientes", "Guantes metálicos", "Delantales", "Termómetro de Punzón", ], "POST PROCESOS": [ "Banda de pinchos", "Tumbler", "Banda de conos", "Embudos", "Recipientes (tazas inox y/o baldes)", "Grameras", "Mesas", "Banda transportadora de presas", "Formadora de hamburguesas", "Despresadora manual (cuchilla y guías metálicas)", "Guantes metálicos", "Desinfección de superficies y ambientes", "Delantales", "Termómetro de Punzón", ], "EVISCERACION": [ "Pistola Succión Pulmones", "Pistola Extractora de Cloaca", "Pistola Destronconadora", "Peladora de mollejas (rodillos)", "Mesa de recuperación", "Mesa de inspección", "Mesa de colgado", "Maquina de quiebre y corta cuello", "Guantes metálicos", "Extractora tráquea y buche (cabezal)", "Extractora de Pulmones", "Extractora de cloaca (Cuchilla, Guía de canal)", "Evisceradora (sujetador de canal, guía de posición, paleta de remoción)", "Delantales", "Cuchillos, chairas", "Cortadora de Cabeza", "Canaleta de evisceración (separación de vísceras)", "Bandeja tolerancia cero", "Banda Transportadora de Pavo", "Banda de Cangilones", ], "CARNES MOLIDAS": [ "Delantales", "Desinfección de superficies y ambientes", "Espátulas", "Molino (Baader)", "Quebrantador (citalsa)", "Quebrantador (lima)", "Termómetro de Punzón", ], /* DERIVADOS */ "CUARTO DE PRODUCTO EN PROCESO": [ "CUARTO FRIO DE PRODUCTO EN PROCESO", "PISOS", "PAREDES Y PUERTAS", "DESAGUES, REJILLAS", "CORTINAS", "DIFUSORES", "TECHOS", "LÁMPARAS", ], "CUARTO MPC 1, 2 Y 3": [ "CUARTO DE MATERIA PRIMA REFRIGERADA", "PISOS", "PAREDES Y PUERTAS", "LAVAMANOS", "LAVABOTAS", "PEDILUVIOS", "DESAGUES, REJILLAS", "BASCULA", "CORTINAS", "DIFUSORES", "TECHOS", "LÁMPARAS", "DISPENSADORES DE GEL Y JABÓN", "CUARTO DE MATERIA PRIMA CONGELADA", ], "PESAJE DE MPNC": [ "PESAJE DE CONDIMIMENTOS", "PISOS", "PAREDES Y PUERTAS", "LAVAMANOS", "EXTRACTORES", "DESAGUES, REJILLAS", "BASCULA", "ASPERSORES DE DESINFECCIÓN", "CANECAS DE RESIDUOS", "TECHOS", "LÁMPARAS", "DISPENSADORES DE GEL Y JABÓN", "DISPENSADORES DE TOALLA DE PAPEL", "ESTIBAS", "ESTANTERIA DE ALMACENAMIENTO", ], "ALMACENAMIENTO DE EMPAQUES": [ "CUARTO DE ALMACENAMIENTO DE EMPAQUES", "PISOS", "PAREDES Y PUERTAS", "TECHOS", "LÁMPARAS", "ESTIBAS", "ESTANTERIA DE ALMACENAMIENTO", ], "COCCIÓN": [ "UTENSILIOS DE ASEO", "PISOS", "PAREDES Y PUERTAS", "EXTRACTORES", "DESAGUES, REJILLAS", "HORNO", "CANECAS DE RESIDUOS", "ESTERILIZADORES DE VARILLAS", "MANGUERAS", "SOPORTE DE MANGUERAS", "VARILLAS DE ARRASTRE", "TECHOS", "LÁMPARAS", "DILUTORES", "DOORWAY", ], "EMBUTIDO": [ "UTENSILIOS DE ASEO", "PISOS", "PAREDES Y PUERTAS", "VIDEO JET", "DESAGUES, REJILLAS", "ASPERSORES DE DESINFECCIÓN", "CAJÓN DE ACERO INOXIDABLES", "CANECAS DE RESIDUOS", "ESTERILIZADORES DE CUCHILLOS", "ESTERILIZADORES DE VARILLAS", "MANGUERAS", "SOPORTE DE MANGUERAS", "VARILLAS DE ARRASTRE", "LOTEADORA DE SALCHICHÓN", "TECHOS", "LÁMPARAS", "DIFUSORES", "DISPENSADORES DE GEL Y JABÓN", "DISPENSADORES DE TOALLA DE PAPEL", ], "TERMOFORMADO": [ "UTENSILIOS DE ASEO", "PISOS", "PAREDES Y PUERTAS", "VIDEO JET", "DESAGUES, REJILLAS", "SELLADORA", "ASPERSORES DE DESINFECCIÓN", "CAJÓN DE ACERO INOXIDABLE", "CANECAS DE RESIDUOS", "ESTERILIZADORES DE CUCHILLOS", "ESTERILIZADORES DE VARILLAS", "MANGUERAS", "SOPORTE DE MANGUERAS", "TECHOS", "LÁMPARAS", "DIFUSORES", "DISPENSADORES DE GEL Y JABÓN", "DISPENSADORES DE TOALLA DE PAPEL", "GABINETES PLÁSTICOS", "SOPORTE PELÍCULAS EMPAQUE", ], "ZONA DE PICADO Y TAJADO": [ "UTENSILIOS DE ASEO", "PISOS", "PAREDES Y PUERTAS", "LAVAMANOS", "DESAGUES, REJILLAS", "BASCULA", "ASPERSORES DE DESINFECCIÓN", "CAJÓN DE ACERO INOXIDABLE", "CANECAS DE RESIDUOS", "ESTERILIZADORES DE CUCHILLOS", "ESTERILIZADORES DE VARILLAS", "MANGUERAS", "SOPORTE DE MANGUERAS", "VARILLAS DE ARRASTRE", "TECHOS", "LÁMPARAS", "DIFUSORES", "GABINETES PLÁSTICOS", "COMPUERTA SALIDA CANASTAS", ], "ALISTAMIENTO, MEZCLADO Y MOLIENDA MPC": [ "PISOS", "PAREDES Y PUERTAS", "LAVABOTAS", "DESAGUES, REJILLAS", "BASCULA", "CORTINAS", "CAJÓN COMPUTADOR", "CAJÓN DE ACERO INOXIDABLE", "CANECAS DE RESIDUOS", "ESTANTERIA DE COLORANTES", "ESTERILIZADORES DE CUCHILLOS", "ESTERILIZADORES DE VARILLAS", "MANGUERAS", "SOPORTE DE MANGUERAS", "VARILLAS DE ARRASTRE", "ESCALERAS AUXILIARES", "TECHOS", "LÁMPARAS", "DIFUSORES", ], "CUARTOS DE ALMACENAMIENTO DE PT": [ "PISOS", "PAREDES Y PUERTAS", "DESAGUES, REJILLAS", "CORTINAS", "MANGUERAS", "ESTIBAS", "CUARTOS DE PRODUCTO TERMINADO", "DILUTORES", "VARILLAS DE ARRASTRE", "CARROS DE ALMACENAMIENTO DE PT", "TECHOS", "LÁMPARAS", "DIFUSORES", "DOORWAY", ], "ESCALAS": [ "PISOS", "PAREDES Y PUERTAS", "LAVABOTAS", "DESAGUES, REJILLAS", "CORTINAS", "MANGUERAS", "ESTIBAS", "CANECAS DE RESIDUOS", "TECHOS", "LÁMPARAS", ], "LOCKERS Y VESTIERES": [ "PISOS", "PAREDES Y PUERTAS", "LAVAMANOS", "BAÑOS", "ÁREA DE VESTIERES", "DESAGUES, REJILLAS", "CANECAS DE RESIDUOS", "TECHOS", "LÁMPARAS", "DISPENSADORES DE GEL Y JABÓN", "DISPENSADORES DE TOALLA DE PAPEL", "VESTIERES PRODUCCIÓN", "VESTIERES EMPAQUE", "LOCKERS", "GABINETES PLÁSTICOS", ], "TÚNEL DE CHOQUE": [ "PISOS", "PAREDES Y PUERTAS", "DESAGUES, REJILLAS", "CORTINAS", "DIFUSORES", "TECHOS", "LÁMPARAS", ], "FILTROS SANITARIOS": [ "PISOS", "PAREDES Y PUERTAS", "LAVAMANOS", "PEDILUVIOS", "LAVADOR DE DELANTALES", "TECHOS", "LÁMPARAS", "DISPENSADORES DE GEL Y JABÓN", "DISPENSADORES DE TOALLA DE PAPEL", ], "EMBALAJE": [ "PISOS", "PAREDES Y PUERTAS", "DESAGUES, REJILLAS", "ASPERSORES DE DESINFECCIÓN", "CANECAS DE RESIDUOS", "TECHOS", "LÁMPARAS", "DIFUSORES", ], "ZONA DE CHOQUE": [ "PISOS", "PAREDES Y PUERTAS", "LAVAMANOS", "DESAGUES, REJILLAS", "BASCULA", "ASPERSORES DE DESINFECCIÓN", "CAJÓN DE ACERO INOXIDABLE", "CANECAS DE RESIDUOS", "ESTERILIZADORES DE CUCHILLOS", "ESTERILIZADORES DE VARILLAS", "MANGUERAS", "SOPORTE DE MANGUERAS", "VARILLAS DE ARRASTRE", "TECHOS", "LÁMPARAS", "GABINETES PLÁSTICOS", "COMPUERTA SALIDA CANASTAS", ], "LAVADO DE CANASTILLAS": [ "PISOS", "PAREDES Y PUERTAS", "EXTRACTORES", "DESAGUES, REJILLAS", "MÁQUINA LAVADORA DE CANASTAS", "CANECAS DE RESIDUOS", "CARROS BASE DE CANASTA", "MANGUERAS", "SOPORTE DE MANGUERAS", "TECHOS", "LÁMPARAS", "DIFUSORES", "CANASTILLAS MULTICOLOR", "COMPUERTA SALIDA CANASTAS", ], "EXTERIORES": [ "PISOS", "PAREDES Y PUERTAS", "SHUT DE BASURAS", "CUARTO L&D", ], "TÚNEL Y ALMACENAMIENTO DE CANASTILLAS": [ "PISOS", "PAREDES Y PUERTAS", "DESAGUES, REJILLAS", "CORTINAS", "TECHOS", "LÁMPARAS", "CANASTILLAS MULTICOLOR", "ARCO DE DESINFECCIÓN DE CANASTAS", "TANQUE DE DESINFECCIÓN DE CANASTAS", ], }; document.addEventListener("DOMContentLoaded", function () { const selectArea = document.getElementById("Area"); if (selectArea) { selectArea.addEventListener("change", cargarSuperficies); } else { console.error("El elemento <select> con id 'area' no se encontró en el DOM."); } }); function cargarSuperficies(event) { const areaSeleccionada = event.target.value || document.getElementById("Area").value; const contenedor = document.getElementById("contenedorCheckboxes"); // Limpiar el contenedor antes de agregar nuevos checkboxes contenedor.innerHTML = ""; // Verificar que el área seleccionada es válida console.log("Área seleccionada:", `"${areaSeleccionada}"`); if (!areaSeleccionada) { console.warn("No se ha seleccionado ninguna área."); return; } if (!(areaSeleccionada in Area)) { console.error(`El área seleccionada "${areaSeleccionada}" no existe en el objeto Area.`); return; } // Generar los checkboxes Area[areaSeleccionada].forEach((superficie) => { const checkbox = document.createElement("input"); checkbox.type = "checkbox"; checkbox.name = "superficies"; // Mismo nombre para capturarlos como un array checkbox.value = superficie; checkbox.id = superficie.replace(/\s+/g, "_"); // Reemplazar espacios con _ para IDs válidos // Escuchar cambios en el estado del checkbox checkbox.addEventListener("change", function () { actualizarSuperficiesData(); calcularPorcentajeInspeccion(); }); const label = document.createElement("label"); label.htmlFor = checkbox.id; label.textContent = superficie; label.style.marginLeft = "5px"; const div = document.createElement("div"); div.style.marginBottom = "5px"; div.appendChild(checkbox); div.appendChild(label); contenedor.appendChild(div); }); console.log("Checkboxes generados correctamente."); // Asegurarse de que se actualice el porcentaje después de la carga inicial actualizarSuperficiesData(); calcularPorcentajeInspeccion(); } function calcularPorcentajeInspeccion() { const checkboxes = document.querySelectorAll('#contenedorCheckboxes input[type="checkbox"]'); const seleccionados = document.querySelectorAll( '#contenedorCheckboxes input[type="checkbox"]:checked', ); let porcentaje = 100; if (checkboxes.length > 0) { porcentaje = 100 - (seleccionados.length / checkboxes.length) * 100; } document.getElementById("porcent").value = porcentaje.toFixed(1) + "%"; } function actualizarSuperficiesData() { const inputSuperficies = document.getElementById("superficiesInput"); const checkboxes = document.querySelectorAll('input[name="superficies"]'); const superficiesData = {}; checkboxes.forEach((checkbox) => { const superficie = checkbox.value.trim(); const estado = checkbox.checked ? 0 : 1; superficiesData[superficie] = estado; }); const jsonSuperficies = JSON.stringify(superficiesData); console.log("✅ JSON que se va a enviar:", jsonSuperficies); inputSuperficies.value = jsonSuperficies; } // Ejecutar cuando cambie un checkbox document.addEventListener("DOMContentLoaded", function () { const contenedor = document.getElementById("contenedorCheckboxes"); if (!contenedor) { console.error("❌ Error: No se encontró #contenedorCheckboxes."); return; } contenedor.addEventListener("change", function () { actualizarSuperficiesData(); calcularPorcentajeInspeccion(); }); }); // funcion para el sweet alert document.addEventListener('DOMContentLoaded', function () { if (typeof window.swalData !== 'undefined') { Swal.fire({ title: window.swalData.title, text: window.swalData.text, icon: window.swalData.icon, confirmButtonText: 'Aceptar', confirmButtonColor: '#3085d6' }); } }); const datosAreas = { "BENEFICIO": [ "ENFRIAMIENTO Y EMPAQUE DE VISCERAS", "ENFRIAMIENTO Y EMPAQUE DE CANAL", "DESPRESE Y MARINADO", "FILETEO DE POLLO", "DESPRESE Y FILETEO DE PAVO", "POST PROCESOS", "EVISCERACION", "CARNES MOLIDAS" ], "DERIVADOS": [ "CUARTO DE PRODUCTO EN PROCESO", "CUARTO MPC 1, 2 Y 3", "PESAJE DE MPNC", "ALMACENAMIENTO DE EMPAQUES", "COCCIÓN", "EMBUTIDO", "TERMOFORMADO", "ZONA DE PICADO Y TAJADO", "ALISTAMIENTO, MEZCLADO Y MOLIENDA MPC", "CUARTOS DE ALMACENAMIENTO DE PT", "ESCALAS", "LOCKERS Y VESTIERES", "TÚNEL DE CHOQUE", "FILTROS SANITARIOS", "EMBALAJE", "ZONA DE CHOQUE", "LAVADO DE CANASTILLAS", "EXTERIORES", "TÚNEL Y ALMACENAMIENTO DE CANASTILLAS" ] }; function filtrarAreas() { const plantaSeleccionada = document.getElementById("FiltroPlanta").value; const selectArea = document.getElementById("Area"); // Limpiamos todo el contenido actual selectArea.innerHTML = ""; // Si hay una planta elegida, dibujamos sus áreas if (plantaSeleccionada in datosAreas) { // Añadimos una opción por defecto let def = document.createElement("option"); def.text = "SELECCIONAR AREA"; def.value = ""; selectArea.add(def); // Agregamos las áreas correspondientes datosAreas[plantaSeleccionada].forEach(area => { let opt = document.createElement("option"); opt.value = area; opt.text = area; selectArea.add(opt); }); } else { selectArea.innerHTML = '<option value="">-- ELIGE UNA PLANTA PRIMERO --</option>'; } }