From d5d03b0dd02d68aea901f8d41752d4f85e85a18b Mon Sep 17 00:00:00 2001 From: Jessica_Faro Date: Sat, 13 Sep 2025 15:44:47 -0300 Subject: [PATCH] =?UTF-8?q?atualiza=C3=A7=C3=A3o=20do=20laudo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/LaudoManager.jsx | 53 +++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/src/pages/LaudoManager.jsx b/src/pages/LaudoManager.jsx index d95de17..83b0680 100644 --- a/src/pages/LaudoManager.jsx +++ b/src/pages/LaudoManager.jsx @@ -1,5 +1,5 @@ // src/pages/LaudoManager.jsx -import React, { useState, useRef, useEffect } from "react"; +import React, { useState, useEffect } from "react"; /* ===== Estilos embutidos ===== */ /* Eu coloquei os estilos aqui para simplificar a edição. */ @@ -32,8 +32,8 @@ const styles = ` .small-muted { color:#7f95a8; font-size:13px; } .empty { padding:40px; text-align:center; color:#7d97b4; } -/* notificação simples (sem backdrop escuro) */ -.notice-card { position:fixed; top:20vh; left:50%; transform:translateX(-50%); background:#fff; border-radius:8px; padding:14px 18px; box-shadow:0 8px 30px rgba(10,20,40,0.12); z-index:13000; pointer-events:auto; } +/* notificação simples (centralizada) */ +.notice-card { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); background:#fff; border-radius:8px; padding:14px 18px; box-shadow:0 8px 30px rgba(10,20,40,0.12); z-index:13000; pointer-events:auto; max-width:720px; } `; /* ===== Mock data (simula APIDOG) ===== */ @@ -94,8 +94,11 @@ export default function LaudoManager() { /* notificação simples (sem backdrop) para 'sem permissão' */ const [showNoPermission, setShowNoPermission] = useState(false); + /* pesquisa */ + const [query, setQuery] = useState(""); + /* Para simplificar: eu assumo aqui que estamos na visão da secretaria */ - const isSecretary = true; // eu deixei true para forçar o comportamento "somente leitura" + const isSecretary = true; // permanece true (somente leitura) useEffect(() => { const el = document.createElement("style"); @@ -122,35 +125,34 @@ export default function LaudoManager() { setOpenDropdownId(prev => (prev === id ? null : id)); } - /* Quando clicar em Editar: - - se for secretaria eu mostro um aviso simples sem fundo escuro - - se for médico (isSecretary=false) eu abriria o editor (aqui eu deixei o mecanismo) */ + /* (botao editar) */ function handleOpenViewer(laudo) { setOpenDropdownId(null); if (isSecretary) { - // eu mostro um aviso simples (sem modal que bloqueia) + // (notificação sem bloquear) setShowNoPermission(true); return; } setViewerLaudo(laudo); } - /* Ao pedir impressão: eu fecho qualquer viewer aberto e abro a preview - - a pré-visualização NÃO bloqueia a página (removi backdrop) */ + /* (botao imprimir) */ function handlePrint(laudo) { - // Evito o bug: fechar viewer antes de abrir preview + // evitar bug: fechar viewer antes de abrir preview setViewerLaudo(null); setPreviewLaudo(laudo); setShowPreview(true); setOpenDropdownId(null); } + /* (botao excluir) */ function handleRequestDelete(laudo) { setToDelete(laudo); setOpenDropdownId(null); setShowConfirmDelete(true); } + /* (funcionalidade do botao de excluir) */ async function doConfirmDelete(confirm) { if (!toDelete) return; if (!confirm) { @@ -162,7 +164,7 @@ export default function LaudoManager() { try { const resp = await mockDeleteLaudo(toDelete.id); if (resp.ok || resp === true) { - // eu removo o laudo da lista local + // removo o laudo da lista local setLaudos(curr => curr.filter(l => l.id !== toDelete.id)); setShowConfirmDelete(false); setToDelete(null); @@ -177,25 +179,40 @@ export default function LaudoManager() { } } + /* filtro de pesquisa (por pedido ou nome do paciente) */ + const normalized = (s = "") => String(s).toLowerCase(); + const filteredLaudos = laudos.filter(l => { + const q = normalized(query).trim(); + if (!q) return true; + if (normalized(l.pedido).includes(q)) return true; + if (normalized(l.paciente?.nome).includes(q)) return true; + return false; + }); + return (
Gerenciamento de Laudo
-
Visualização: Secretaria (Somente leitura)
+ {/* removi a linha "Visualização: Secretaria" conforme pedido */}
- + setQuery(e.target.value)} + style={{ width:"100%", padding:12, borderRadius:8, border:"1px solid #e6eef8" }} + />
- {laudos.length === 0 ? ( + {filteredLaudos.length === 0 ? (
Nenhum laudo encontrado.
) : (
- {laudos.map((l) => ( + {filteredLaudos.map((l) => (
{l.pedido}
@@ -312,7 +329,7 @@ export default function LaudoManager() {
)} - {/* Notificação simples: Sem permissão (exibe sem backdrop escuro) */} + {/* Notificação simples: Sem permissão (exibe sem backdrop escuro) - centralizada */} {showNoPermission && (
Sem permissão para editar
@@ -354,4 +371,4 @@ function computeAge(birth) { const dd = today.getDate(); if (mm < m || (mm === m && dd < d)) age--; return age; -} \ No newline at end of file +}