feat(turnero): botón de llamado por registro en lugar/toma de muestras
- Agrega botón campana por cada card en cola (solo turnos en_espera_lugar) - Click en card abre ficha sin llamar; campana llama ese turno específico - Llamar siguiente ahora también llama de verdad (antes solo abría ficha) - Cards en_servicio mantienen indicador de estetoscopio sin botón Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
6adbcc3059
commit
910edeb876
@@ -448,18 +448,20 @@ function renderCola(snap) {
|
||||
lista.innerHTML = items.map(t => {
|
||||
const enServicio = t.estado === 'en_servicio';
|
||||
const esActivo = turnoActivo?.id == t.id;
|
||||
const onclick = enServicio
|
||||
? `seleccionarSinLlamar(${t.id})`
|
||||
: `seleccionarSinLlamar(${t.id})`;
|
||||
const indicador = enServicio
|
||||
? `<div class="ms-auto d-flex flex-column align-items-center" style="gap:1px">
|
||||
? `<div class="ms-auto d-flex flex-column align-items-center" style="gap:1px;flex-shrink:0">
|
||||
<i class="fas fa-stethoscope text-success" style="font-size:.85rem"></i>
|
||||
<span style="font-size:.58rem;color:#16a34a;font-weight:700">EN SERVICIO</span>
|
||||
</div>`
|
||||
: `<i class="fas fa-chevron-right text-muted ms-auto" style="font-size:.7rem"></i>`;
|
||||
: `<button onclick="event.stopPropagation();llamarTurnoEspecifico(${t.id})"
|
||||
title="Llamar turno ${escHtml(t.codigo)}"
|
||||
style="flex-shrink:0;background:#2563eb;border:none;color:#fff;
|
||||
border-radius:7px;padding:5px 9px;font-size:.78rem;cursor:pointer">
|
||||
<i class="fas fa-bell"></i>
|
||||
</button>`;
|
||||
return `
|
||||
<div class="cola-card ${enServicio ? 'en-servicio-card' : ''} ${esActivo ? 'activo' : ''}"
|
||||
style="cursor:pointer" onclick="${onclick}"
|
||||
style="cursor:pointer" onclick="seleccionarSinLlamar(${t.id})"
|
||||
title="${enServicio ? 'Ver turno en servicio' : `Ver turno ${escHtml(t.codigo)}`}">
|
||||
<div class="prio-dot" style="background:${t.prioridad_color}">${t.prioridad_codigo}</div>
|
||||
<div class="turno-info">
|
||||
@@ -503,15 +505,13 @@ async function rellamarDesdeCard(turnoId) {
|
||||
await abrirFicha(json.turno);
|
||||
}
|
||||
|
||||
// ── Llamar siguiente: selecciona el primero en espera sin llamarlo ─
|
||||
// ── Llamar siguiente: llama al primero en espera ──────────────
|
||||
async function llamarSiguiente() {
|
||||
const primero = [..._colaMap.values()].find(t => t.estado === 'en_espera_lugar');
|
||||
if (!primero) { mostrarToast('Cola vacía — no hay turnos en espera.', 'warn', 3000); return; }
|
||||
await seleccionarSinLlamar(primero.id);
|
||||
await _llamar({});
|
||||
}
|
||||
|
||||
async function llamarTurnoEspecifico(turnoId) {
|
||||
await seleccionarSinLlamar(turnoId);
|
||||
await _llamar({ turno_id: turnoId });
|
||||
}
|
||||
|
||||
async function _llamar(extra) {
|
||||
|
||||
Reference in New Issue
Block a user