Actualizar servicios.html

This commit is contained in:
2026-03-02 23:10:55 +00:00
parent c01f8431aa
commit 2f7203af05

View File

@@ -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, '<br>');
// 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 = '<option value="">-- Elija gremio primero --</option>';
}
}
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, '<br>');
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 = '<option value="">-- Elija gremio primero --</option>';
}
}
// 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;