melissa/paciente-docs: wire-up preview actions + Editar abre dialog em modo edicao
DocumentPreviewDialog emitia @download/@edit/@share/@sign/@delete que o MelissaPatientDocuments nao ouvia — os 5 botoes da sidebar do preview caiam no vazio. Adicionado wire-up roteando pros mesmos handlers do card (onDownload, onEdit, onShare, onSign, onDelete). Share/sign/delete fecham o preview antes de abrir o proprio dialog pra UX limpa; download mantem preview aberto (acao instantanea). DocumentGenerateDialog ganha prop editing-doc-id. Quando setado: - Busca template_id + dados_preenchidos via loadGeneratedFromDocId - Pre-seleciona template, popula vars (sobrescreve auto-loaded vars com dados_preenchidos pra preservar customizacao anterior) - Pula direto pra step 'edit' - Save vira UPDATE in-place (preserva documents.id e audit trail) - Header muda pra "Editar documento" + icone pi-pencil amber - Botao final vira "Substituir documento" - Doc sem registro generated (legado): toast info + flow normal de select template; ao salvar, cria o registro generated linkado. MelissaPatientDocuments: - onEdit substituido (era shortcut pra onPreview): abre generate dialog com editing-doc-id setado. - Novo ref editingDoc dedicado (separado do selectedDoc que serve preview/share/sign/delete) pra evitar vazar "edit state" pro botao "Gerar" do header quando user so abre preview e fecha. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,10 @@ const signatureDlg = ref(false);
|
||||
const shareDlg = ref(false);
|
||||
const selectedDoc = ref(null);
|
||||
const previewUrl = ref('');
|
||||
// Ref dedicado pro modo edicao do generate dialog. Separado do selectedDoc
|
||||
// (que tambem alimenta preview/share/sign/delete) pra evitar vazar "edit
|
||||
// state" pro "Gerar" do header quando o user so abre preview e fecha.
|
||||
const editingDoc = ref(null);
|
||||
|
||||
// ── Tipo selecionado (filtro pela sidebar) ────────────────
|
||||
// null = todos os tipos
|
||||
@@ -123,9 +127,15 @@ async function onPreview(doc) {
|
||||
function onDownload(doc) { download(doc); }
|
||||
|
||||
function onEdit(doc) {
|
||||
selectedDoc.value = doc;
|
||||
// Reusa preview dialog em modo "ver" — edit completo só via DocumentsListPage
|
||||
onPreview(doc);
|
||||
// Abre o DocumentGenerateDialog em modo edicao (editingDocId passado).
|
||||
// Dialog busca template + dados_preenchidos do document_generated e
|
||||
// pre-popula tudo, pulando direto pra step 'edit'. Save substitui o PDF
|
||||
// in-place no Storage e atualiza documents (preserva id + audit trail).
|
||||
// Docs uploaded direto (sem registro generated) caem no flow normal de
|
||||
// "select template" com um toast info.
|
||||
editingDoc.value = doc;
|
||||
previewDlg.value = false; // fecha preview se estiver aberto
|
||||
generateDlg.value = true;
|
||||
}
|
||||
|
||||
function onDelete(doc) {
|
||||
@@ -380,13 +390,24 @@ onBeforeUnmount(() => {
|
||||
:doc="selectedDoc"
|
||||
:preview-url="previewUrl"
|
||||
@updated="fetchDocuments"
|
||||
@download="onDownload"
|
||||
@edit="onEdit"
|
||||
@share="(d) => { previewDlg = false; onShare(d); }"
|
||||
@sign="(d) => { previewDlg = false; onSign(d); }"
|
||||
@delete="(d) => { previewDlg = false; onDelete(d); }"
|
||||
/>
|
||||
<!-- editing-doc-id vem do ref editingDoc dedicado — so e setado
|
||||
via onEdit (botao Editar). "Gerar" no header usa generateDlg=true
|
||||
com editingDoc=null, abrindo limpo. Limpa editingDoc no
|
||||
fechamento pra nao vazar pro proximo Gerar. -->
|
||||
<DocumentGenerateDialog
|
||||
v-if="patientId"
|
||||
v-model:visible="generateDlg"
|
||||
:visible="generateDlg"
|
||||
:patient-id="patientId"
|
||||
:patient-name="patientName"
|
||||
:editing-doc-id="editingDoc?.id || null"
|
||||
@generated="onGenerated"
|
||||
@update:visible="(v) => { generateDlg = v; if (!v) editingDoc = null; }"
|
||||
/>
|
||||
<DocumentSignatureDialog
|
||||
:visible="signatureDlg"
|
||||
|
||||
Reference in New Issue
Block a user