up
This commit is contained in:
@@ -258,19 +258,13 @@ $_labColor = preg_match('/^#[0-9a-fA-F]{3,8}$/', $_dispCfg['doc_color'] ?? '')
|
||||
<!-- Cuerpo: Recepción | Muestras -->
|
||||
<div class="pg-body" id="pg-body">
|
||||
|
||||
<!-- Panel Recepción -->
|
||||
<!-- Panel Recepción (dinámico: N escritorios) -->
|
||||
<div class="area-panel" id="panel-recepcion">
|
||||
<div class="area-header recepcion">
|
||||
<i class="fas fa-door-open"></i> Recepción
|
||||
</div>
|
||||
<div class="area-turno" id="turno-recepcion">
|
||||
<div class="ring" id="ring-recepcion"></div>
|
||||
<div class="lbl-destino">Pase a Recepción</div>
|
||||
<div class="codigo-num" id="cod-recepcion">—</div>
|
||||
<div class="pac-nombre" id="pac-recepcion"></div>
|
||||
<div class="prio-chip" id="chip-recepcion">
|
||||
<i class="fas fa-hourglass-half"></i> En espera
|
||||
</div>
|
||||
<div class="lugares-grid" id="rec-grid">
|
||||
<!-- Se genera en JS según escritorios configurados -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -389,8 +383,8 @@ function anunciarTurno(codigo, destino) {
|
||||
}
|
||||
|
||||
// ── Estado previo ──────────────────────────────────────────────
|
||||
let lastCodRecepcion = null;
|
||||
const lastCodLugar = {}; // { lugar_id: codigo }
|
||||
const lastCodRecepcion = {}; // { desk_id: codigo }
|
||||
const lastCodLugar = {}; // { lugar_id: codigo }
|
||||
|
||||
// ── Escape HTML ────────────────────────────────────────────────
|
||||
function esc(str) {
|
||||
@@ -417,36 +411,50 @@ function limpiarColor(panelEl, ringEl, chipEl) {
|
||||
|
||||
// ── Render snapshot global ─────────────────────────────────────
|
||||
function renderSnapshot(snap) {
|
||||
// ── Recepción ───────────────────────────────────────────
|
||||
const rec = snap.activo_recepcion;
|
||||
const panelRec = document.getElementById('turno-recepcion');
|
||||
const ringRec = document.getElementById('ring-recepcion');
|
||||
const codRec = document.getElementById('cod-recepcion');
|
||||
const pacRec = document.getElementById('pac-recepcion');
|
||||
const chipRec = document.getElementById('chip-recepcion');
|
||||
// ── Recepción (múltiples escritorios) ───────────────────
|
||||
const recList = snap.activos_recepcion || [];
|
||||
const recGrid = document.getElementById('rec-grid');
|
||||
|
||||
if (rec) {
|
||||
const color = rec.prioridad_color || '#1565c0';
|
||||
if (rec.codigo !== lastCodRecepcion) {
|
||||
anunciarTurno(rec.codigo, 'Recepción');
|
||||
ringRec.classList.remove('animar');
|
||||
void ringRec.offsetWidth;
|
||||
ringRec.classList.add('animar');
|
||||
lastCodRecepcion = rec.codigo;
|
||||
recGrid.innerHTML = recList.map(d => {
|
||||
const t = d.turno;
|
||||
const color = t ? (t.prioridad_color || '#1565c0') : null;
|
||||
const colorStyle = color ? `style="--prio-color:${color};background:${color}12"` : '';
|
||||
const codStyle = color ? '' : 'style="color:#cbd5e1"';
|
||||
const chipStyle = color
|
||||
? `style="background:${color}22;color:${color}"`
|
||||
: 'style="background:#f1f5f9;color:#94a3b8"';
|
||||
const chipContent = t
|
||||
? `<i class='fas fa-ticket-alt'></i> ${esc(t.prioridad_codigo)} — ${esc(t.prioridad_nombre)}`
|
||||
: `<i class='fas fa-hourglass-half'></i> En espera`;
|
||||
const codText = t ? esc(t.codigo) : '—';
|
||||
const pacText = t ? esc(t.paciente_nombre || '') : '';
|
||||
|
||||
return `
|
||||
<div class="lugar-sub" id="sub-rec-${d.desk_id}">
|
||||
<div class="area-header" style="background:#1e40af;font-size:.7rem;padding:.35rem 1rem">
|
||||
<i class="fas fa-door-open"></i> ${esc(d.desk_nombre)}
|
||||
</div>
|
||||
<div class="area-turno" id="area-rec-${d.desk_id}" ${colorStyle}>
|
||||
<div class="ring" id="ring-rec-${d.desk_id}"></div>
|
||||
<div class="lbl-destino">Pase a ${esc(d.desk_nombre)}</div>
|
||||
<div class="codigo-num" id="cod-rec-${d.desk_id}" ${codStyle}>${codText}</div>
|
||||
<div class="pac-nombre">${pacText}</div>
|
||||
<div class="prio-chip" id="chip-rec-${d.desk_id}" ${chipStyle}>${chipContent}</div>
|
||||
</div>
|
||||
</div>`;
|
||||
}).join('');
|
||||
|
||||
// Sonido/animación por desk
|
||||
recList.forEach(d => {
|
||||
const t = d.turno;
|
||||
if (!t) { lastCodRecepcion[d.desk_id] = null; return; }
|
||||
if (t.codigo !== lastCodRecepcion[d.desk_id]) {
|
||||
anunciarTurno(t.codigo, d.desk_nombre);
|
||||
const ring = document.getElementById(`ring-rec-${d.desk_id}`);
|
||||
if (ring) { ring.classList.remove('animar'); void ring.offsetWidth; ring.classList.add('animar'); }
|
||||
lastCodRecepcion[d.desk_id] = t.codigo;
|
||||
}
|
||||
aplicarColor(panelRec, ringRec, chipRec, color);
|
||||
codRec.textContent = rec.codigo;
|
||||
codRec.style.color = '';
|
||||
pacRec.textContent = rec.paciente_nombre || '';
|
||||
chipRec.innerHTML = `<i class="fas fa-ticket-alt"></i> ${esc(rec.prioridad_codigo)} — ${esc(rec.prioridad_nombre)}`;
|
||||
} else {
|
||||
limpiarColor(panelRec, ringRec, chipRec);
|
||||
codRec.textContent = '—';
|
||||
codRec.style.color = '#cbd5e1';
|
||||
pacRec.textContent = '';
|
||||
chipRec.innerHTML = '<i class="fas fa-hourglass-half"></i> En espera';
|
||||
lastCodRecepcion = null;
|
||||
}
|
||||
});
|
||||
|
||||
// ── Lugares (muestras) ──────────────────────────────────
|
||||
const lugares = snap.lugares || [];
|
||||
|
||||
Reference in New Issue
Block a user