diff --git a/src/layout/melissa/MelissaPaciente.vue b/src/layout/melissa/MelissaPaciente.vue index 0c4056b..27df13b 100644 --- a/src/layout/melissa/MelissaPaciente.vue +++ b/src/layout/melissa/MelissaPaciente.vue @@ -495,16 +495,29 @@ function goAgendar() { const remainder = base.getMinutes() % 15; if (remainder !== 0) base.setMinutes(base.getMinutes() + (15 - remainder)); + // Acha o commitment "Sessão" (native_key='session') pra pre-popular o + // determined_commitment_id no eventRow — assim o resetForm do composer + // ja inicia com form.commitment_id setado, isSessionEvent=true e os + // blocos de jornada/billing/frequencia aparecem. + const sessaoCommitment = (melissaAgenda.commitmentOptions?.value || []) + .find((c) => c.native_key === 'session'); + + // Pre-popula tambem nome/avatar/status do paciente — sem isso o resumo + // lateral do dialog mostra "Paciente vinculado" sem nome (ja que o + // composer so faz fetch async de nome quando isEdit=true). sessaoDialogEventRow.value = { owner_id: melissaAgenda.ownerId.value, terapeuta_id: null, paciente_id: String(props.patientId), + paciente_nome: nomeCompleto.value || '', + paciente_avatar: avatarUrl.value || '', + paciente_status: statusPaciente.value || 'Ativo', + determined_commitment_id: sessaoCommitment?.id || null, tipo: 'sessao', status: 'agendado', titulo: null, observacoes: null, - visibility_scope: 'public', - determined_commitment_id: null + visibility_scope: 'public' }; sessaoDialogStartISO.value = base.toISOString(); sessaoDialogEndISO.value = new Date(base.getTime() + durMin * 60000).toISOString();