Actualizar servicios.html

This commit is contained in:
2026-02-16 21:30:43 +00:00
parent c5f806673c
commit e4d18f3a72

View File

@@ -171,6 +171,7 @@
<p class="text-[10px] font-black text-slate-800 uppercase ml-1 flex items-center gap-1.5"><i data-lucide="arrow-right-left" class="w-4 h-4 text-blue-500"></i> Cambio de Estado</p> <p class="text-[10px] font-black text-slate-800 uppercase ml-1 flex items-center gap-1.5"><i data-lucide="arrow-right-left" class="w-4 h-4 text-blue-500"></i> Cambio de Estado</p>
<div class="relative"> <div class="relative">
<select id="detStatusMap" class="w-full bg-slate-800 text-white border-none p-4 rounded-xl text-xs font-bold shadow-lg outline-none cursor-pointer appearance-none pr-10"> <select id="detStatusMap" class="w-full bg-slate-800 text-white border-none p-4 rounded-xl text-xs font-bold shadow-lg outline-none cursor-pointer appearance-none pr-10">
<option value="sin_asignar">🔴 SIN ASIGNAR / EN PAUSA</option>
<option value="citado">📅 CITADO (Visita programada)</option> <option value="citado">📅 CITADO (Visita programada)</option>
<option value="de_camino">🚗 DE CAMINO AL DOMICILIO</option> <option value="de_camino">🚗 DE CAMINO AL DOMICILIO</option>
<option value="trabajando">🛠️ TRABAJANDO EN EL LUGAR</option> <option value="trabajando">🛠️ TRABAJANDO EN EL LUGAR</option>
@@ -216,13 +217,13 @@
} }
function renderLists() { function renderLists() {
// Lógica de separación en 3 columnas // Lógica inteligente de 3 columnas apoyada en el raw_data
const unassigned = localData.filter(s => s.estado_operativo === 'sin_asignar'); const unassigned = localData.filter(s => !s.assigned_name || s.raw_data.status_operativo === 'sin_asignar');
const pending = localData.filter(s => s.assigned_name && (!s.raw_data.scheduled_date || s.raw_data.scheduled_date === "")); const pending = localData.filter(s => s.assigned_name && (!s.raw_data.scheduled_date || s.raw_data.scheduled_date === "") && s.raw_data.status_operativo !== 'sin_asignar');
const assigned = localData.filter(s => s.raw_data.scheduled_date && s.raw_data.scheduled_date !== ""); const assigned = localData.filter(s => s.raw_data.scheduled_date && s.raw_data.scheduled_date !== "" && s.raw_data.status_operativo !== 'sin_asignar');
document.getElementById('unassigned-list').innerHTML = unassigned.length > 0 document.getElementById('unassigned-list').innerHTML = unassigned.length > 0
? unassigned.map(s => cardTemplate(s, 'rose', 'Sin Asignar')).join('') ? unassigned.map(s => cardTemplate(s, 'rose', s.assigned_name ? 'Pausado' : 'Sin Asignar')).join('')
: '<p class="text-center py-10 text-slate-300 text-xs font-bold uppercase border-2 border-dashed border-slate-200/50 rounded-[1.5rem]">Vacío</p>'; : '<p class="text-center py-10 text-slate-300 text-xs font-bold uppercase border-2 border-dashed border-slate-200/50 rounded-[1.5rem]">Vacío</p>';
document.getElementById('pending-list').innerHTML = pending.length > 0 document.getElementById('pending-list').innerHTML = pending.length > 0
@@ -233,6 +234,7 @@
? assigned.map(s => { ? assigned.map(s => {
let color = 'emerald'; let color = 'emerald';
let label = 'Citado'; let label = 'Citado';
if(s.raw_data.status_operativo === 'de_camino') { color = 'blue'; label = 'De Camino'; }
if(s.raw_data.status_operativo === 'trabajando') { color = 'amber'; label = 'Trabajando'; } if(s.raw_data.status_operativo === 'trabajando') { color = 'amber'; label = 'Trabajando'; }
if(s.raw_data.status_operativo === 'incidencia') { color = 'red'; label = 'Incidencia'; } if(s.raw_data.status_operativo === 'incidencia') { color = 'red'; label = 'Incidencia'; }
if(s.raw_data.status_operativo === 'terminado') { color = 'purple'; label = 'Terminado'; } if(s.raw_data.status_operativo === 'terminado') { color = 'purple'; label = 'Terminado'; }
@@ -298,7 +300,13 @@
document.getElementById('dateInput').value = raw.scheduled_date || ""; document.getElementById('dateInput').value = raw.scheduled_date || "";
document.getElementById('timeInput').value = raw.scheduled_time || ""; document.getElementById('timeInput').value = raw.scheduled_time || "";
document.getElementById('detStatusMap').value = raw.status_operativo || 'citado';
// Si no tiene estado previo guardado, mostramos "citado" por defecto o "sin asignar" si procede.
let defaultStatus = raw.status_operativo;
if (!defaultStatus) {
defaultStatus = (!s.assigned_name) ? 'sin_asignar' : 'citado';
}
document.getElementById('detStatusMap').value = defaultStatus;
document.getElementById('detailModal').classList.remove('hidden'); document.getElementById('detailModal').classList.remove('hidden');
lucide.createIcons(); lucide.createIcons();
@@ -310,7 +318,7 @@
const time = document.getElementById('timeInput').value; const time = document.getElementById('timeInput').value;
const statusMap = document.getElementById('detStatusMap').value; const statusMap = document.getElementById('detStatusMap').value;
if(!date && statusMap !== 'incidencia' && statusMap !== 'terminado') { if(!date && statusMap !== 'incidencia' && statusMap !== 'terminado' && statusMap !== 'sin_asignar') {
if(!confirm("No has asignado una Fecha de Visita.\n\nEl estado se guardará, pero el expediente seguirá en la columna izquierda hasta que le pongas fecha. ¿Deseas continuar?")) return; if(!confirm("No has asignado una Fecha de Visita.\n\nEl estado se guardará, pero el expediente seguirá en la columna izquierda hasta que le pongas fecha. ¿Deseas continuar?")) return;
} }