MelissaAlterarPlano: pagina nativa pra escolha de plano
Substitui o redirect pra /therapist/upgrade (que sai do overlay
Melissa) por uma pagina nativa em /melissa/alterar-plano com o
mesmo chrome 2-col das outras.
Sidebar (map-side):
- Card "Plano atual" — nome destacado em primary box + key + valor
+ status; ou empty state se nao tem plano pessoal
- Card "Filtros" — busca por nome/key/desc + chips Mensal/Anual
- Footer: botao "Voltar pro Meu Plano"
Main:
- Grid responsivo 1/2/3 cols (mobile/md/xl) de plan cards
- Cada card: nome + key (mono) + tag "Atual" se for o plano atual,
descricao, preco grande (do interval selecionado), CTA primario
"Escolher mensal/anual" + 2 botoes secundarios (Mensal | Anual)
cada um mostrando seu preco abaixo do label
- Card destacado com border primary se for o plano atual
- Empty state: filtro vazio com botao "Limpar busca"
Logica:
- preflight: valida sessao + plano + interval + preco ativo + nao ja
estar nesse plano/intervalo
- choosePlan: se ja tem subscription -> RPC change_subscription_plan
+ update do interval; se nao tem -> insert manual em subscriptions.
Apos sucesso, emit('goto', 'plano') volta pro MelissaPlano com
estado fresh.
Wire-up:
- MelissaLayout: import + render `<MelissaAlterarPlano>` com
@goto="abrirSecao"
- 'alterar-plano' adicionado em SECOES + MELISSA_NON_CONFIG_SLUGS
- MelissaPlano.goUpgrade() agora router.push pra Melissa(secao=alterar-plano)
em vez de /therapist/upgrade
Espelha o TherapistUpgradePage.vue (subscriptions + plans target=therapist
+ plan_prices + RPC change_subscription_plan), compativel com fluxo legacy.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -36,6 +36,7 @@ import MelissaConfiguracoes from './MelissaConfiguracoes.vue';
|
|||||||
import MelissaPerfil from './MelissaPerfil.vue';
|
import MelissaPerfil from './MelissaPerfil.vue';
|
||||||
import MelissaPlano from './MelissaPlano.vue';
|
import MelissaPlano from './MelissaPlano.vue';
|
||||||
import MelissaNegocio from './MelissaNegocio.vue';
|
import MelissaNegocio from './MelissaNegocio.vue';
|
||||||
|
import MelissaAlterarPlano from './MelissaAlterarPlano.vue';
|
||||||
import MelissaEmbed from './MelissaEmbed.vue';
|
import MelissaEmbed from './MelissaEmbed.vue';
|
||||||
import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue';
|
import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue';
|
||||||
import MelissaAgendamentosRecebidos from './MelissaAgendamentosRecebidos.vue';
|
import MelissaAgendamentosRecebidos from './MelissaAgendamentosRecebidos.vue';
|
||||||
@@ -172,6 +173,8 @@ const SECOES = {
|
|||||||
plano: { label: 'Meu Plano', icon: 'pi pi-credit-card', descricao: 'Assinatura, recursos liberados e historico de mudancas.' },
|
plano: { label: 'Meu Plano', icon: 'pi pi-credit-card', descricao: 'Assinatura, recursos liberados e historico de mudancas.' },
|
||||||
// Pagina nativa do negocio (MelissaNegocio) — saiu do MelissaConfiguracoes
|
// Pagina nativa do negocio (MelissaNegocio) — saiu do MelissaConfiguracoes
|
||||||
negocio: { label: 'Meu Negócio', icon: 'pi pi-briefcase', descricao: 'Identidade, fiscal, endereco, contato, redes — gamificacao no aside.' },
|
negocio: { label: 'Meu Negócio', icon: 'pi pi-briefcase', descricao: 'Identidade, fiscal, endereco, contato, redes — gamificacao no aside.' },
|
||||||
|
// Pagina nativa de alterar plano (MelissaAlterarPlano) — substitui /therapist/upgrade
|
||||||
|
'alterar-plano': { label: 'Alterar Plano', icon: 'pi pi-arrow-up-right', descricao: 'Escolha um plano pessoal pra ativar todos os recursos.' },
|
||||||
seguranca: { label: 'Segurança', icon: 'pi pi-shield', descricao: 'Senha, dispositivos confiáveis e sessões.' },
|
seguranca: { label: 'Segurança', icon: 'pi pi-shield', descricao: 'Senha, dispositivos confiáveis e sessões.' },
|
||||||
// Onda 1 — pages embedadas via MelissaEmbed (1-coluna, hero glass)
|
// Onda 1 — pages embedadas via MelissaEmbed (1-coluna, hero glass)
|
||||||
'financeiro': { label: 'Financeiro', icon: 'pi pi-wallet', descricao: 'Visão geral, recebíveis e indicadores.' },
|
'financeiro': { label: 'Financeiro', icon: 'pi pi-wallet', descricao: 'Visão geral, recebíveis e indicadores.' },
|
||||||
@@ -198,7 +201,7 @@ const MELISSA_NON_CONFIG_SLUGS = new Set([
|
|||||||
'tags', 'grupos', 'cadastros-recebidos', 'medicos', 'agendamentos-recebidos',
|
'tags', 'grupos', 'cadastros-recebidos', 'medicos', 'agendamentos-recebidos',
|
||||||
'link-externo', 'notificacoes', 'financeiro', 'financeiro-lancamentos',
|
'link-externo', 'notificacoes', 'financeiro', 'financeiro-lancamentos',
|
||||||
'documentos', 'documentos-templates', 'relatorios',
|
'documentos', 'documentos-templates', 'relatorios',
|
||||||
'perfil', 'plano', 'negocio',
|
'perfil', 'plano', 'negocio', 'alterar-plano',
|
||||||
...MELISSA_EMBED_KEYS
|
...MELISSA_EMBED_KEYS
|
||||||
]);
|
]);
|
||||||
// Aliases "bonitos" + INLINE_KEYS reconhecidos pelo MelissaConfiguracoes.
|
// Aliases "bonitos" + INLINE_KEYS reconhecidos pelo MelissaConfiguracoes.
|
||||||
@@ -2228,6 +2231,12 @@ function onKeydown(e) {
|
|||||||
@close="fecharSecao"
|
@close="fecharSecao"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
|
<MelissaAlterarPlano
|
||||||
|
v-if="layoutReady && secaoAberta === 'alterar-plano'"
|
||||||
|
@close="fecharSecao"
|
||||||
|
@goto="abrirSecao"
|
||||||
|
/>
|
||||||
|
|
||||||
<MelissaConfiguracoes
|
<MelissaConfiguracoes
|
||||||
v-if="layoutReady && isMelissaConfigRoute(secaoAberta)"
|
v-if="layoutReady && isMelissaConfigRoute(secaoAberta)"
|
||||||
:secao-rota="secaoAberta"
|
:secao-rota="secaoAberta"
|
||||||
|
|||||||
@@ -201,7 +201,9 @@ function displayUser(userId) {
|
|||||||
|
|
||||||
// ── Actions ────────────────────────────────────────────────
|
// ── Actions ────────────────────────────────────────────────
|
||||||
function goUpgrade() {
|
function goUpgrade() {
|
||||||
router.push('/therapist/upgrade?redirectTo=/melissa/plano');
|
// Vai pra pagina nativa Melissa de alterar plano (substitui o
|
||||||
|
// /therapist/upgrade que virava redirect e perdia o overlay Melissa).
|
||||||
|
router.push({ name: 'Melissa', params: { secao: 'alterar-plano' } });
|
||||||
}
|
}
|
||||||
|
|
||||||
// ── Fetch ──────────────────────────────────────────────────
|
// ── Fetch ──────────────────────────────────────────────────
|
||||||
|
|||||||
Reference in New Issue
Block a user