lista de espera: salas consultoria/cabina (toggle + etiqueta) y scroll de WhatsApp
- skeen_citas: campo sala en skeen.lista.espera (consultoria/cabina, indexado) - frontend.py: sala en _lista_espera_to_dict, create y update (toggle desde la etiqueta; valor invalido vuelve a sin sala; cambio queda en historial) - ListaEspera.tsx: toggle Todas/Consultoria/Cabina con conteo, etiqueta clicable en cada tarjeta que alterna de sala, selector en el modal de alta - Agenda.tsx: cambiarSala() conectado al panel - WacrmMessages.tsx: el auto-refresco ya no empuja el scroll abajo si el usuario esta leyendo mensajes anteriores (solo baja al cambiar de conversacion, por deep-link o al enviar respuesta propia) Verificacion API: 7/7 tests OK (alta con sala, toggle, valor invalido, GET)
This commit is contained in:
@@ -939,8 +939,20 @@ const Agenda: FC = () => {
|
||||
}
|
||||
}, []);
|
||||
|
||||
const quitarDeListaEspera = async (entry: ListaEspera) => {
|
||||
if (!window.confirm(`¿Quitar a ${entry.patient} de la lista de espera?`)) return;
|
||||
// Toggle de sala en la lista de espera: Consultoría <-> Cabina
|
||||
const cambiarSala = async (entry: ListaEspera, sala: string) => {
|
||||
try {
|
||||
await odooApi.updateListaEspera(entry.id, { sala });
|
||||
const etiqueta = sala === 'consultoria' ? 'Consultoría' : sala === 'cabina' ? 'Cabina' : 'Sin sala';
|
||||
toast.success(`${entry.patient}: ${etiqueta}`);
|
||||
await recargarListaEspera();
|
||||
} catch (err) {
|
||||
const msg = (err as { response?: { data?: { message?: string } } })?.response?.data?.message;
|
||||
toast.error(msg || 'No se pudo cambiar la sala');
|
||||
}
|
||||
};
|
||||
|
||||
const quitarDeListaEspera = async (entry: ListaEspera) => { if (!window.confirm(`¿Quitar a ${entry.patient} de la lista de espera?`)) return;
|
||||
try {
|
||||
await odooApi.updateListaEspera(entry.id, { state: 'descartado' });
|
||||
toast.success('Paciente descartado de la lista de espera');
|
||||
@@ -2032,6 +2044,7 @@ const Agenda: FC = () => {
|
||||
loading={loading}
|
||||
loadingAgendaId={listaAgendando}
|
||||
puedeGestionar={puedeAgendar}
|
||||
onChangeSala={(e, sala) => void cambiarSala(e, sala)}
|
||||
onAgendar={agendarDesdeLista}
|
||||
onQuitar={(e) => void quitarDeListaEspera(e)}
|
||||
onAdd={() => { setListaPrefill({ doctorId: doctorFilter || undefined }); setListaModalOpen(true); }}
|
||||
|
||||
Reference in New Issue
Block a user