AgendaEventDialog: lockType auto-seleciona commitment "Sessão" (fix jornada/billing/freq sumidos)
User apontou que jornada de trabalho, frequencia e billing (particular/
convenio/gratuito) sumiam quando o dialog abria do prontuario. Causa:
meu watch original do commit 30d09eb so forcava step.value=2 sem
inicializar form.commitment_id. Sem commitment, o computed
isSessionEvent virava false e esses 3 blocos do template (que dependem
de isSessionEvent) ficavam ocultos:
- jornadaDialog: <Message v-if="jornadaDialog && isSessionEvent">
- frequencia: bloco v-if="!hasSerie" tem gates internos de billing/
patient que dependem de isSessionEvent
- billing radio (particular/convenio/gratuito): isSessionEvent
FIX: watch agora chama selectCommitment(sessao) — exatamente o que o
user faria clicando no card "Sessão" no step 1. Isso seta:
- form.commitment_id pro id do native_key='session'
- form.extra_fields = {} populado pelos fields do commitment
- step.value = 2
Adicionei props.commitmentOptions ao watch dep — necessario pq quando
o dialog abre antes do tenant load terminar, commitmentOptions chega
vazio inicialmente. Watch re-roda quando popula.
Idempotente: so chama selectCommitment se ainda nao tem commitment_id
ou se id atual nao bate com sessao.id (re-open com mesmo lockType
nao reinicializa redundantemente).
301 specs do agenda continuam passando. ESLint: 31 errors pre-existentes
(mesmos do commit anterior).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -193,13 +193,27 @@ const {
|
||||
resetForm
|
||||
} = _composer;
|
||||
|
||||
// Lock de tipo: quando lockType=true (callsite no contexto de Sessao do
|
||||
// paciente, ex: MelissaPaciente), pula o step 1 e vai direto pro form.
|
||||
// Watch immediate cobre tanto open quanto re-open com novo eventRow.
|
||||
// Lock de tipo: quando lockType=true (ex: MelissaPaciente), simula o
|
||||
// click no card "Sessão" do step 1. Chama selectCommitment com o
|
||||
// commitment native_key='session' — isso seta form.commitment_id +
|
||||
// extra_fields + step.value=2. Sem isso, pular pro step 2 sem
|
||||
// commitment_id deixaria isSessionEvent=false e esconderia jornada,
|
||||
// billing (particular/convenio/gratuito) e frequencia.
|
||||
//
|
||||
// Re-roda quando commitmentOptions popula tarde (caso usual: dialog
|
||||
// abre antes do tenant load terminar). Idempotente: so chama se ainda
|
||||
// nao tem commitment_id ou step != 2.
|
||||
watch(
|
||||
() => [props.lockType, props.modelValue],
|
||||
[() => props.lockType, () => props.modelValue, () => props.commitmentOptions],
|
||||
([locked, open]) => {
|
||||
if (locked && open) step.value = 2;
|
||||
if (!locked || !open) return;
|
||||
const sessao = commitmentCards.value.find((c) => c.native_key === 'session');
|
||||
if (!sessao) return;
|
||||
if (!form.value.commitment_id || form.value.commitment_id !== sessao.id) {
|
||||
selectCommitment(sessao);
|
||||
} else if (step.value !== 2) {
|
||||
step.value = 2;
|
||||
}
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user