MelissaPaciente: editPatient abre PatientCadastroDialog INLINE (sem sair)

Bug reportado: ao clicar "Editar dados" no prontuario, o user era
redirecionado pra /melissa/pacientes?edit=X (que entao abria o cadastro
em MelissaPacientes). Isso saia da tela do prontuario — comportamento
incorreto.

FIX: importar PatientCadastroDialog no MelissaPaciente e abrir por cima
da pagina (z-index PrimeVue ~1100 > .mpa-page z-index 40). Ao salvar,
recarrega os dados do paciente in-place via detail.load().

ADICIONADO
- Import PatientCadastroDialog
- Refs locais cadastroOpen + cadastroPatientId
- editPatient() agora seta refs e abre dialog (era router.push)
- onPatientSaved() handler que fecha o dialog e refetcha o detail
- <PatientCadastroDialog v-model="cadastroOpen" ...> renderizado depois
  da .mpa-page no template

O watch route.query.edit em MelissaPacientes (Fase 8) continua valido
pra deep-links externos, mas o fluxo MelissaPaciente -> editar nao usa
mais essa rota.

ESLint: 0 errors.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Leonardo
2026-05-08 11:06:49 -03:00
parent 5d2c389486
commit 301a7124a7
+24 -3
View File
@@ -24,6 +24,7 @@ import { useToast } from 'primevue/usetoast';
import { useConversationDrawerStore } from '@/stores/conversationDrawerStore';
import DocumentsListPage from '@/features/documents/DocumentsListPage.vue';
import PatientConversationsTab from '@/features/patients/prontuario/PatientConversationsTab.vue';
import PatientCadastroDialog from '@/components/ui/PatientCadastroDialog.vue';
import { usePatientDetail } from '@/features/patients/composables/usePatientDetail';
import { usePatientSessions } from '@/features/patients/composables/usePatientSessions';
import { usePatientFinancial } from '@/features/patients/composables/usePatientFinancial';
@@ -338,11 +339,22 @@ function goToPacientes() {
router.push('/melissa/pacientes');
}
// Edit: navega pra /melissa/pacientes?edit=<id> e a propria
// MelissaPacientes detecta esse query param e abre o cadastroFullDialog.
// Edit: abre o PatientCadastroDialog INLINE (sem sair do prontuario).
// Antes redirecionava pra /melissa/pacientes?edit=X mas isso saia da
// tela do prontuario. Agora o dialog abre por cima e ao salvar
// recarrega os dados do paciente in-place.
const cadastroOpen = ref(false);
const cadastroPatientId = ref(null);
function editPatient() {
emit('edit', props.patientId);
router.push({ path: '/melissa/pacientes', query: { edit: props.patientId } });
cadastroPatientId.value = String(props.patientId || '');
cadastroOpen.value = true;
}
async function onPatientSaved() {
cadastroOpen.value = false;
if (props.patientId) {
await detail.load(props.patientId);
}
}
// Open WhatsApp: usa o conversationDrawerStore global (mesmo padrao
@@ -1870,6 +1882,15 @@ onBeforeUnmount(() => {
</div>
</div>
</section>
<!-- Dialog de cadastro/edicao do paciente abre INLINE por cima do
prontuario (z-index PrimeVue ~1100 > .mpa-page z-index 40). Ao
salvar/criar, recarrega os dados do paciente sem sair da tela. -->
<PatientCadastroDialog
v-model="cadastroOpen"
:patient-id="cadastroPatientId"
@created="onPatientSaved"
/>
</template>
<style scoped>