MelissaAgendador: pagina nativa 2-col com 6 secoes de config
Tira "Agendador Online" do MelissaConfiguracoes (era embed cfg-agendador -> ConfiguracoesAgendadorPage.vue) e tambem do MelissaEmbed (era 'online-scheduling' em MELISSA_EMBED_KEYS). Cria a /melissa/online-scheduling como pagina nativa Melissa. Sidebar (mag-side): - Card "Status" — toggle ativo + tag PRO + link publico (com input selecionavel + copy + open) + slug personalizado (se entitlement) ou upgrade hint - Card "Configuracoes" — 6 atalhos clicaveis com icones coloridos + resumo dinamico de cada secao (scroll suave pra ancora) Main (50/50 desktop, Textos full-width): - Identidade Visual: nome + cor (ColorPicker) + 3 uploads (logomarca/header/fundo) com auto-save apos upload - Perfil Publico: endereco + botao "Como chegar" toggle + maps_url - Fluxo: modo aprovacao (radio cards) + prazo resposta + modalidade (SelectButton) + tipos (chips) + duracao + antecedencia - Pagamento: 3 modos (radio) + metodos visiveis (com payment_settings sync) + Pix config + reserva - Triagem & LGPD: 4 toggles (motivo + origem + verificacao email + lgpd) - Textos: 3 Editors PrimeVue (boas-vindas + como_se_preparar + termos_lgpd condicional) — em row full-width pq sao mais altos Cada card tem botao "Salvar" proprio (saveCard build payload do respectivo subset). Aplicam o pattern: min-h 300, max-h 100%, body overflow-y: auto. Logica espelhada do ConfiguracoesAgendadorPage (agendador_configuracoes + bucket agendador + entitlements). Compativel com /configuracoes/agendador. Wire-up: - MelissaLayout: import + render `<MelissaAgendador>` quando secaoAberta === 'online-scheduling' - MELISSA_EMBED_KEYS agora vazio (Melissa nao tem mais embeds) - 'online-scheduling' adicionado explicitamente em MELISSA_NON_CONFIG_SLUGS - SECOES['online-scheduling'].descricao atualizada - MelissaConfiguracoes: cfg-agendador removido de COMPONENT_MAP e do grupo Agenda (resta so cfg-agenda) 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
@@ -73,7 +73,7 @@ function secaoToRota(key) {
|
||||
const COMPONENT_MAP = {
|
||||
'cfg-agenda': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesAgendaPage.vue')),
|
||||
// 'cfg-bloqueios' removido — virou pagina nativa MelissaBloqueios em /melissa/bloqueios
|
||||
'cfg-agendador': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesAgendadorPage.vue')),
|
||||
// 'cfg-agendador' removido — virou pagina nativa MelissaAgendador em /melissa/online-scheduling
|
||||
'cfg-pagamento': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesPagamentoPage.vue')),
|
||||
'cfg-precificacao': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesPrecificacaoPage.vue')),
|
||||
'cfg-descontos': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesDescontosPage.vue')),
|
||||
@@ -151,9 +151,9 @@ const grupos = [
|
||||
desc: 'Horários, bloqueios e agendador público para pacientes.',
|
||||
icon: 'pi pi-calendar',
|
||||
items: [
|
||||
{ key: 'cfg-agenda', label: 'Agenda', desc: 'Horários semanais, exceções, duração e intervalo padrão.', icon: 'pi pi-calendar' },
|
||||
// "Bloqueios" virou pagina nativa em /melissa/bloqueios (MelissaBloqueios)
|
||||
{ key: 'cfg-agendador', label: 'Agendador Online', desc: 'Link público para pacientes solicitarem horários.', icon: 'pi pi-calendar-clock' }
|
||||
{ key: 'cfg-agenda', label: 'Agenda', desc: 'Horários semanais, exceções, duração e intervalo padrão.', icon: 'pi pi-calendar' }
|
||||
// "Bloqueios" virou pagina nativa em /melissa/bloqueios (MelissaBloqueios)
|
||||
// "Agendador Online" virou pagina nativa em /melissa/online-scheduling (MelissaAgendador)
|
||||
]
|
||||
},
|
||||
{
|
||||
|
||||
@@ -39,6 +39,7 @@ import MelissaNegocio from './MelissaNegocio.vue';
|
||||
import MelissaAlterarPlano from './MelissaAlterarPlano.vue';
|
||||
import MelissaSeguranca from './MelissaSeguranca.vue';
|
||||
import MelissaBloqueios from './MelissaBloqueios.vue';
|
||||
import MelissaAgendador from './MelissaAgendador.vue';
|
||||
import MelissaEmbed from './MelissaEmbed.vue';
|
||||
import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue';
|
||||
import MelissaAgendamentosRecebidos from './MelissaAgendamentosRecebidos.vue';
|
||||
@@ -187,16 +188,15 @@ const SECOES = {
|
||||
'documentos': { label: 'Documentos', icon: 'pi pi-file', descricao: 'Documentos clínicos do tenant.' },
|
||||
'documentos-templates': { label: 'Templates de documentos', icon: 'pi pi-file-edit', descricao: 'Modelos pra prontuários e relatórios.' },
|
||||
'agendamentos-recebidos': { label: 'Agendamentos recebidos', icon: 'pi pi-inbox', descricao: 'Solicitações do agendador online.' },
|
||||
'online-scheduling': { label: 'Agendador online', icon: 'pi pi-calendar-clock', descricao: 'Configure o link público de agendamento.' },
|
||||
'online-scheduling': { label: 'Agendador online', icon: 'pi pi-calendar-clock', descricao: 'Configure o link publico, identidade visual, fluxo, pagamento e textos do agendador.' },
|
||||
'relatorios': { label: 'Relatórios', icon: 'pi pi-chart-bar', descricao: 'Indicadores clínicos e financeiros do tenant.' },
|
||||
'notificacoes': { label: 'Notificações', icon: 'pi pi-bell', descricao: 'Histórico de notificações enviadas.' },
|
||||
'link-externo': { label: 'Link externo de cadastro', icon: 'pi pi-share-alt', descricao: 'Link público pra pacientes se cadastrarem.' }
|
||||
};
|
||||
|
||||
// Set de keys que renderizam via MelissaEmbed (Onda 1 — pages 1-coluna).
|
||||
// Quase todas foram promovidas pra páginas nativas; resta apenas
|
||||
// 'online-scheduling' por enquanto.
|
||||
const MELISSA_EMBED_KEYS = ['online-scheduling'];
|
||||
// Todas foram promovidas pra paginas nativas Melissa.
|
||||
const MELISSA_EMBED_KEYS = [];
|
||||
|
||||
// Slugs reservados pra páginas dedicadas (não-config) — agenda, pacientes,
|
||||
// conversas etc. + as MELISSA_EMBED_KEYS. Usado no isConfigRoute pra
|
||||
@@ -207,6 +207,7 @@ const MELISSA_NON_CONFIG_SLUGS = new Set([
|
||||
'link-externo', 'notificacoes', 'financeiro', 'financeiro-lancamentos',
|
||||
'documentos', 'documentos-templates', 'relatorios',
|
||||
'perfil', 'plano', 'negocio', 'seguranca', 'bloqueios', 'alterar-plano',
|
||||
'online-scheduling',
|
||||
...MELISSA_EMBED_KEYS
|
||||
]);
|
||||
// Aliases "bonitos" + INLINE_KEYS reconhecidos pelo MelissaConfiguracoes.
|
||||
@@ -2252,6 +2253,11 @@ function onKeydown(e) {
|
||||
@close="fecharSecao"
|
||||
/>
|
||||
|
||||
<MelissaAgendador
|
||||
v-if="layoutReady && secaoAberta === 'online-scheduling'"
|
||||
@close="fecharSecao"
|
||||
/>
|
||||
|
||||
<MelissaConfiguracoes
|
||||
v-if="layoutReady && isMelissaConfigRoute(secaoAberta)"
|
||||
:secao-rota="secaoAberta"
|
||||
|
||||
Reference in New Issue
Block a user