Actualizar servicios.html
This commit is contained in:
@@ -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>
|
||||
<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">
|
||||
<option value="sin_asignar">🔴 SIN ASIGNAR / EN PAUSA</option>
|
||||
<option value="citado">📅 CITADO (Visita programada)</option>
|
||||
<option value="de_camino">🚗 DE CAMINO AL DOMICILIO</option>
|
||||
<option value="trabajando">🛠️ TRABAJANDO EN EL LUGAR</option>
|
||||
@@ -216,13 +217,13 @@
|
||||
}
|
||||
|
||||
function renderLists() {
|
||||
// Lógica de separación en 3 columnas
|
||||
const unassigned = localData.filter(s => s.estado_operativo === 'sin_asignar');
|
||||
const pending = localData.filter(s => s.assigned_name && (!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 !== "");
|
||||
// Lógica inteligente de 3 columnas apoyada en el raw_data
|
||||
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 === "") && s.raw_data.status_operativo !== 'sin_asignar');
|
||||
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
|
||||
? 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>';
|
||||
|
||||
document.getElementById('pending-list').innerHTML = pending.length > 0
|
||||
@@ -233,6 +234,7 @@
|
||||
? assigned.map(s => {
|
||||
let color = 'emerald';
|
||||
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 === 'incidencia') { color = 'red'; label = 'Incidencia'; }
|
||||
if(s.raw_data.status_operativo === 'terminado') { color = 'purple'; label = 'Terminado'; }
|
||||
@@ -298,7 +300,13 @@
|
||||
|
||||
document.getElementById('dateInput').value = raw.scheduled_date || "";
|
||||
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');
|
||||
lucide.createIcons();
|
||||
@@ -310,7 +318,7 @@
|
||||
const time = document.getElementById('timeInput').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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user