Actualizar servicios.html
This commit is contained in:
139
servicios.html
139
servicios.html
@@ -664,71 +664,92 @@ async function searchClientByPhone(phone) {
|
|||||||
setTimeout(() => { toast.classList.add('hidden'); }, 3500);
|
setTimeout(() => { toast.classList.add('hidden'); }, 3500);
|
||||||
}
|
}
|
||||||
|
|
||||||
function openDetail(id) {
|
function openDetail(id, startInEditMode = false) {
|
||||||
const s = localData.find(x => x.id === id);
|
const s = localData.find(x => x.id === id);
|
||||||
if (!s) return;
|
if (!s) return;
|
||||||
const raw = s.raw_data;
|
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] : "";
|
|
||||||
|
|
||||||
if (singlePhone) {
|
// 1. IDs y Referencias
|
||||||
document.getElementById('detPhone').innerText = singlePhone;
|
document.getElementById('detId').value = s.id;
|
||||||
document.getElementById('detPhoneLink').href = `tel:+34${singlePhone}`;
|
document.getElementById('detRef').innerText = s.service_ref;
|
||||||
document.getElementById('detPhoneLink').classList.remove('text-slate-400', 'pointer-events-none');
|
document.getElementById('detCp').value = raw["Código Postal"] || "00000";
|
||||||
document.getElementById('detPhoneLink').classList.add('text-blue-600');
|
|
||||||
} else {
|
const companyName = raw['Compañía'] || raw['COMPAÑIA'] || raw['Procedencia'] || "Particular";
|
||||||
document.getElementById('detPhone').innerText = "Sin Teléfono";
|
document.getElementById('detCompany').innerText = companyName;
|
||||||
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('detAddrText').innerText = `${raw["Dirección"] || "Dirección no especificada"} ${raw["Población"] || ""}`;
|
// 2. RELLENAR CAMPOS EDITABLES (NUEVO)
|
||||||
document.getElementById('detDesc').innerHTML = (raw["Descripción"] || raw["DESCRIPCION"] || "Sin notas.").replace(/\n/g, '<br>');
|
// 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') {
|
if (singlePhone) {
|
||||||
document.getElementById('panelEnBolsa').classList.remove('hidden');
|
document.getElementById('detPhone').innerText = singlePhone;
|
||||||
document.getElementById('panelAsignado').classList.add('hidden');
|
document.getElementById('detPhoneLink').href = `tel:+34${singlePhone}`;
|
||||||
document.getElementById('panelSinAsignar').classList.add('hidden');
|
document.getElementById('detPhoneLink').classList.remove('text-slate-400', 'pointer-events-none');
|
||||||
}
|
document.getElementById('detPhoneLink').classList.add('text-blue-600');
|
||||||
else if (s.assigned_name && stateInfo.id !== 'bolsa' && !stateInfo.name.toLowerCase().includes('asignar') && !stateInfo.name.toLowerCase().includes('desasignado')) {
|
} else {
|
||||||
document.getElementById('panelEnBolsa').classList.add('hidden');
|
document.getElementById('detPhone').innerText = "Sin Teléfono";
|
||||||
document.getElementById('panelAsignado').classList.remove('hidden');
|
document.getElementById('detPhoneLink').href = "#";
|
||||||
document.getElementById('panelSinAsignar').classList.add('hidden');
|
document.getElementById('detPhoneLink').classList.remove('text-blue-600');
|
||||||
|
document.getElementById('detPhoneLink').classList.add('text-slate-400', 'pointer-events-none');
|
||||||
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>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
document.getElementById('detailModal').classList.remove('hidden');
|
const fullAddr = `${raw["Dirección"] || ""} ${raw["Población"] || ""}`.trim();
|
||||||
lucide.createIcons();
|
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() {
|
async function stopAutomation() {
|
||||||
const id = document.getElementById('detId').value;
|
const id = document.getElementById('detId').value;
|
||||||
|
|||||||
Reference in New Issue
Block a user