From 2f7203af05f1e904f0f6818e9dea46d3b393296f Mon Sep 17 00:00:00 2001 From: marsalva Date: Mon, 2 Mar 2026 23:10:55 +0000 Subject: [PATCH] Actualizar servicios.html --- servicios.html | 139 ++++++++++++++++++++++++++++--------------------- 1 file changed, 80 insertions(+), 59 deletions(-) diff --git a/servicios.html b/servicios.html index 8632cd3..13e13a7 100644 --- a/servicios.html +++ b/servicios.html @@ -664,71 +664,92 @@ async function searchClientByPhone(phone) { setTimeout(() => { toast.classList.add('hidden'); }, 3500); } - function openDetail(id) { - const s = localData.find(x => x.id === id); - if (!s) return; - const raw = s.raw_data; - document.getElementById('detId').value = s.id; - document.getElementById('detRef').innerText = s.service_ref; - document.getElementById('detCp').value = raw["Código Postal"] || "00000"; - - const companyName = raw['Compañía'] || raw['COMPAÑIA'] || raw['Procedencia'] || "Particular"; - document.getElementById('detCompany').innerText = companyName; - document.getElementById('detName').innerText = raw["Nombre Cliente"] || raw["CLIENTE"] || "Asegurado Sin Nombre"; - - const rawPhone = raw["Teléfono"] || raw["TELEFONOS"] || raw["TELEFONO"] || ""; - const matchPhone = rawPhone.toString().match(/[6789]\d{8}/); - const singlePhone = matchPhone ? matchPhone[0] : ""; + function openDetail(id, startInEditMode = false) { + const s = localData.find(x => x.id === id); + if (!s) return; + const raw = s.raw_data; - if (singlePhone) { - document.getElementById('detPhone').innerText = singlePhone; - document.getElementById('detPhoneLink').href = `tel:+34${singlePhone}`; - document.getElementById('detPhoneLink').classList.remove('text-slate-400', 'pointer-events-none'); - document.getElementById('detPhoneLink').classList.add('text-blue-600'); - } else { - document.getElementById('detPhone').innerText = "Sin Teléfono"; - document.getElementById('detPhoneLink').href = "#"; - document.getElementById('detPhoneLink').classList.remove('text-blue-600'); - document.getElementById('detPhoneLink').classList.add('text-slate-400', 'pointer-events-none'); - } + // 1. IDs y Referencias + document.getElementById('detId').value = s.id; + document.getElementById('detRef').innerText = s.service_ref; + document.getElementById('detCp').value = raw["Código Postal"] || "00000"; + + const companyName = raw['Compañía'] || raw['COMPAÑIA'] || raw['Procedencia'] || "Particular"; + document.getElementById('detCompany').innerText = companyName; - document.getElementById('detAddrText').innerText = `${raw["Dirección"] || "Dirección no especificada"} ${raw["Población"] || ""}`; - document.getElementById('detDesc').innerHTML = (raw["Descripción"] || raw["DESCRIPCION"] || "Sin notas.").replace(/\n/g, '
'); + // 2. RELLENAR CAMPOS EDITABLES (NUEVO) + // Rellenamos tanto los visuales como los que usaremos para editar + const clientName = raw["Nombre Cliente"] || raw["CLIENTE"] || "Asegurado Sin Nombre"; + document.getElementById('detName').innerText = clientName; + if(document.getElementById('editName')) document.getElementById('editName').value = clientName; - const stateInfo = s._stateInfo; + const rawPhone = raw["Teléfono"] || raw["TELEFONOS"] || raw["TELEFONO"] || ""; + const matchPhone = rawPhone.toString().match(/[6789]\d{8}/); + const singlePhone = matchPhone ? matchPhone[0] : ""; + if(document.getElementById('editPhone')) document.getElementById('editPhone').value = singlePhone; - if (s.automation_status === 'in_progress') { - document.getElementById('panelEnBolsa').classList.remove('hidden'); - document.getElementById('panelAsignado').classList.add('hidden'); - document.getElementById('panelSinAsignar').classList.add('hidden'); - } - else if (s.assigned_name && stateInfo.id !== 'bolsa' && !stateInfo.name.toLowerCase().includes('asignar') && !stateInfo.name.toLowerCase().includes('desasignado')) { - document.getElementById('panelEnBolsa').classList.add('hidden'); - document.getElementById('panelAsignado').classList.remove('hidden'); - document.getElementById('panelSinAsignar').classList.add('hidden'); - - document.getElementById('detWorker').innerText = s.assigned_name; - document.getElementById('dateInput').value = raw.scheduled_date || ""; - document.getElementById('timeInput').value = raw.scheduled_time || ""; - document.getElementById('detStatusMap').value = stateInfo.id; - } else { - document.getElementById('panelEnBolsa').classList.add('hidden'); - document.getElementById('panelAsignado').classList.add('hidden'); - document.getElementById('panelSinAsignar').classList.remove('hidden'); - - const rawGuildId = s.guild_id || raw['guild_id'] || raw.guild_id; - if(rawGuildId) { - document.getElementById('reGremio').value = String(rawGuildId); - loadOps(rawGuildId, 'reOperario'); - } else { - document.getElementById('reGremio').value = ""; - document.getElementById('reOperario').innerHTML = ''; - } - } + if (singlePhone) { + document.getElementById('detPhone').innerText = singlePhone; + document.getElementById('detPhoneLink').href = `tel:+34${singlePhone}`; + document.getElementById('detPhoneLink').classList.remove('text-slate-400', 'pointer-events-none'); + document.getElementById('detPhoneLink').classList.add('text-blue-600'); + } else { + document.getElementById('detPhone').innerText = "Sin Teléfono"; + document.getElementById('detPhoneLink').href = "#"; + document.getElementById('detPhoneLink').classList.remove('text-blue-600'); + document.getElementById('detPhoneLink').classList.add('text-slate-400', 'pointer-events-none'); + } - document.getElementById('detailModal').classList.remove('hidden'); - lucide.createIcons(); + const fullAddr = `${raw["Dirección"] || ""} ${raw["Población"] || ""}`.trim(); + document.getElementById('detAddrText').innerText = fullAddr || "Dirección no especificada"; + if(document.getElementById('editAddr')) document.getElementById('editAddr').value = raw["Dirección"] || ""; + + const descContent = raw["Descripción"] || raw["DESCRIPCION"] || "Sin notas."; + document.getElementById('detDesc').innerHTML = descContent.replace(/\n/g, '
'); + if(document.getElementById('editDesc')) document.getElementById('editDesc').value = descContent; + + // 3. Lógica de Paneles (Asignación/Bolsa) + const stateInfo = s._stateInfo; + if (s.automation_status === 'in_progress') { + document.getElementById('panelEnBolsa').classList.remove('hidden'); + document.getElementById('panelAsignado').classList.add('hidden'); + document.getElementById('panelSinAsignar').classList.add('hidden'); + } + else if (s.assigned_name && stateInfo.id !== 'bolsa' && !stateInfo.name.toLowerCase().includes('asignar') && !stateInfo.name.toLowerCase().includes('desasignado')) { + document.getElementById('panelEnBolsa').classList.add('hidden'); + document.getElementById('panelAsignado').classList.remove('hidden'); + document.getElementById('panelSinAsignar').classList.add('hidden'); + + document.getElementById('detWorker').innerText = s.assigned_name; + document.getElementById('dateInput').value = raw.scheduled_date || ""; + document.getElementById('timeInput').value = raw.scheduled_time || ""; + document.getElementById('detStatusMap').value = stateInfo.id; + } else { + document.getElementById('panelEnBolsa').classList.add('hidden'); + document.getElementById('panelAsignado').classList.add('hidden'); + document.getElementById('panelSinAsignar').classList.remove('hidden'); + + const rawGuildId = s.guild_id || raw['guild_id'] || raw.guild_id; + if(rawGuildId) { + document.getElementById('reGremio').value = String(rawGuildId); + loadOps(rawGuildId, 'reOperario'); + } else { + document.getElementById('reGremio').value = ""; + document.getElementById('reOperario').innerHTML = ''; } + } + + // 4. ACTIVAR MODO EDICIÓN SI SE PULSÓ EL LÁPIZ (NUEVO) + document.getElementById('detailModal').classList.remove('hidden'); + + if (startInEditMode) { + enableEditing(); + } else { + cancelEditing(); // Resetear a modo lectura + } + + lucide.createIcons(); +} async function stopAutomation() { const id = document.getElementById('detId').value;