From f6fad55ff30507c6ff477ef28510ca68344d51b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Gustavo?= Date: Tue, 25 Nov 2025 12:39:50 -0300 Subject: [PATCH] fix-visual-adjustments --- .../app/(main-routes)/calendar/page.tsx | 2 +- susconecta/app/laudos-editor/page.tsx | 65 ++++++++++++-- susconecta/app/laudos/[id]/editar/page.tsx | 85 +++++++++++++------ .../paciente/resultados/ResultadosClient.tsx | 11 --- susconecta/app/profissional/page.tsx | 6 +- .../components/features/dashboard/header.tsx | 2 +- 6 files changed, 123 insertions(+), 48 deletions(-) diff --git a/susconecta/app/(main-routes)/calendar/page.tsx b/susconecta/app/(main-routes)/calendar/page.tsx index cf86cd4..da2c9dc 100644 --- a/susconecta/app/(main-routes)/calendar/page.tsx +++ b/susconecta/app/(main-routes)/calendar/page.tsx @@ -309,7 +309,7 @@ export default function AgendamentoPage() { {/* legenda dinâmica: mostra as cores presentes nos agendamentos do dia atual */} -
+
diff --git a/susconecta/app/laudos-editor/page.tsx b/susconecta/app/laudos-editor/page.tsx index 52bd823..4f69751 100644 --- a/susconecta/app/laudos-editor/page.tsx +++ b/susconecta/app/laudos-editor/page.tsx @@ -178,6 +178,33 @@ export default function LaudosEditorPage() { } }, []); + // Auto-salvar no localStorage sempre que houver mudanças (com debounce) + useEffect(() => { + const timeoutId = setTimeout(() => { + // Capturar conteúdo atual do editor antes de salvar + const currentContent = editorRef.current?.innerHTML || content; + + const draft = { + pacienteSelecionado, + content: currentContent, + campos, + solicitanteId, + solicitanteNome, + prazoDate, + prazoTime, + imagens, + lastSaved: new Date().toISOString(), + }; + + // Só salvar se houver conteúdo ou dados preenchidos + if (currentContent || pacienteSelecionado || campos.exame || campos.diagnostico || imagens.length > 0) { + localStorage.setItem('laudoDraft', JSON.stringify(draft)); + } + }, 1000); // Aguarda 1 segundo após última mudança + + return () => clearTimeout(timeoutId); + }, [pacienteSelecionado, content, campos, solicitanteId, solicitanteNome, prazoDate, prazoTime, imagens]); + // Tentar obter o registro de médico correspondente ao usuário autenticado useEffect(() => { let mounted = true; @@ -247,6 +274,23 @@ export default function LaudosEditorPage() { } }, [content]); + // Função para trocar de aba salvando conteúdo antes + const handleTabChange = (newTab: string) => { + // Salvar conteúdo do editor antes de trocar + if (editorRef.current) { + const editorContent = editorRef.current.innerHTML; + setContent(editorContent); + } + setActiveTab(newTab); + }; + + // Restaurar conteúdo do editor quando voltar para a aba editor + useEffect(() => { + if (activeTab === 'editor' && editorRef.current && content) { + editorRef.current.innerHTML = content; + } + }, [activeTab]); + // Desfazer const handleUndo = () => { if (historyIndex > 0) { @@ -321,11 +365,15 @@ export default function LaudosEditorPage() { // Salvar rascunho no localStorage const saveDraft = () => { + // Capturar conteúdo atual do editor antes de salvar + const currentContent = editorRef.current?.innerHTML || content; + const draft = { pacienteSelecionado, - content, + content: currentContent, campos, solicitanteId, + solicitanteNome, prazoDate, prazoTime, imagens, @@ -389,6 +437,9 @@ export default function LaudosEditorPage() { return; } + // Capturar conteúdo atual do editor antes de salvar + const currentContent = editorRef.current?.innerHTML || content; + const userId = user?.id || '00000000-0000-0000-0000-000000000001'; let composedDueAt = undefined; @@ -404,7 +455,7 @@ export default function LaudosEditorPage() { diagnosis: campos.diagnostico || '', conclusion: campos.conclusao || '', cid_code: campos.cid || '', - content_html: content, + content_html: currentContent, content_json: {}, requested_by: solicitanteId || userId, due_at: composedDueAt ?? new Date().toISOString(), @@ -414,6 +465,10 @@ export default function LaudosEditorPage() { if (createNewReport) { await createNewReport(payload as any); + + // Limpar rascunho salvo após sucesso + localStorage.removeItem('laudoDraft'); + toast({ title: 'Laudo criado com sucesso!', description: 'O laudo foi liberado e salvo.', @@ -536,7 +591,7 @@ export default function LaudosEditorPage() { {/* Tabs */}
- {/* Mais filtros / Voltar */} -
- -
- {/* Voltar */}
{dropdownOpen && ( -
+