diff --git a/src/layout/melissa/MelissaBloqueios.vue b/src/layout/melissa/MelissaBloqueios.vue new file mode 100644 index 0000000..582f741 --- /dev/null +++ b/src/layout/melissa/MelissaBloqueios.vue @@ -0,0 +1,1467 @@ + + + + + + + + + + + + + + + + + + + Menu + + + + Bloqueios e Feriados + {{ ano }} + + + + + + + + + + + + + + + Feriados nacionais sao automaticos. Adicione feriados municipais + e periodos bloqueados (ferias, recesso, licencas) que afetam + a sua agenda. + + + + + + + + + + + + + + + + + + + + + + + + + + Feriados Nacionais + Gerados automaticamente + + {{ nacionais.length }} + + + + + Nenhum feriado nacional para {{ ano }}. + + + + {{ fmtDateShort(f.data) }} + {{ f.nome }} + + + + + + + + + + + + Feriados Municipais + Cadastrados manualmente + + + + Adicionar + + + + + + Nenhum feriado municipal cadastrado para {{ ano }}. + + + + {{ fmtDate(f.data) }} + + {{ f.nome }} + — {{ f.observacao }} + + + + + + + + + + + + + + + Bloqueios + Férias, recesso, licença ou janela horária + + + + Novo + + + + + + Nenhum bloqueio cadastrado para {{ ano }}. + + + + {{ fmtPeriodo(b) }} + + {{ b.titulo }} + + — {{ b.observacao }} + + + + + + + + + + + + + + + + + + + + + + Nome do feriado * + + + + Data * + + + + + + + + Observação (opcional) + + + + + Já existe um feriado com esse nome nessa data. + + + + + Cancelar + + + + Cadastrar + + + + + + + + + Título * + + + + + Data início * + + + + + + + + Data fim (opcional) + + + + + + + + + + Hora início (opcional) + + + + + + + + Hora fim (opcional) + + + + + + + + + Observação (opcional) + + + + + + Cancelar + + + + {{ dlgMode === 'edit' ? 'Salvar' : 'Adicionar' }} + + + + + + + diff --git a/src/layout/melissa/MelissaConfiguracoes.vue b/src/layout/melissa/MelissaConfiguracoes.vue index 76ac319..28b360b 100644 --- a/src/layout/melissa/MelissaConfiguracoes.vue +++ b/src/layout/melissa/MelissaConfiguracoes.vue @@ -38,8 +38,7 @@ const emit = defineEmits(['close']); // rotaToSecao() lê alias OU key direta; secaoToRota() devolve alias se // existir, senão a key como-é. const ROUTE_ALIASES = { - aparencia: 'aparencia', - bloqueios: 'cfg-bloqueios' + aparencia: 'aparencia' }; // URLs antigas (/melissa/fundo, /melissa/relogio, /melissa/cronometro) // agora caem no slug unificado "aparencia" — pagina Layout Melissa @@ -73,7 +72,7 @@ function secaoToRota(key) { // Mantém o user dentro do overlay Melissa em vez de navegar pra fora. const COMPONENT_MAP = { 'cfg-agenda': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesAgendaPage.vue')), - 'cfg-bloqueios': defineAsyncComponent(() => import('@/layout/configuracoes/BloqueiosPage.vue')), + // 'cfg-bloqueios' removido — virou pagina nativa MelissaBloqueios em /melissa/bloqueios 'cfg-agendador': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesAgendadorPage.vue')), 'cfg-pagamento': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesPagamentoPage.vue')), 'cfg-precificacao': defineAsyncComponent(() => import('@/layout/configuracoes/ConfiguracoesPrecificacaoPage.vue')), @@ -153,7 +152,7 @@ const grupos = [ 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' }, - { key: 'cfg-bloqueios', label: 'Bloqueios', desc: 'Feriados nacionais, municipais e períodos bloqueados.', icon: 'pi pi-ban' }, + // "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' } ] }, diff --git a/src/layout/melissa/MelissaLayout.vue b/src/layout/melissa/MelissaLayout.vue index a534f43..852bd74 100644 --- a/src/layout/melissa/MelissaLayout.vue +++ b/src/layout/melissa/MelissaLayout.vue @@ -38,6 +38,7 @@ import MelissaPlano from './MelissaPlano.vue'; import MelissaNegocio from './MelissaNegocio.vue'; import MelissaAlterarPlano from './MelissaAlterarPlano.vue'; import MelissaSeguranca from './MelissaSeguranca.vue'; +import MelissaBloqueios from './MelissaBloqueios.vue'; import MelissaEmbed from './MelissaEmbed.vue'; import MelissaCadastrosRecebidos from './MelissaCadastrosRecebidos.vue'; import MelissaAgendamentosRecebidos from './MelissaAgendamentosRecebidos.vue'; @@ -176,6 +177,8 @@ const SECOES = { negocio: { label: 'Meu Negócio', icon: 'pi pi-briefcase', descricao: 'Identidade, fiscal, endereco, contato, redes — gamificacao no aside.' }, // Pagina nativa de seguranca (MelissaSeguranca) — saiu do MelissaConfiguracoes seguranca: { label: 'Segurança', icon: 'pi pi-shield', descricao: 'Trocar senha + boas praticas + estado da sessao.' }, + // Pagina nativa de bloqueios (MelissaBloqueios) — saiu do MelissaConfiguracoes + bloqueios: { label: 'Bloqueios e Feriados', icon: 'pi pi-ban', descricao: 'Feriados nacionais (auto), municipais e bloqueios manuais.' }, // 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.' }, // Onda 1 — pages embedadas via MelissaEmbed (1-coluna, hero glass) @@ -203,13 +206,13 @@ const MELISSA_NON_CONFIG_SLUGS = new Set([ 'tags', 'grupos', 'cadastros-recebidos', 'medicos', 'agendamentos-recebidos', 'link-externo', 'notificacoes', 'financeiro', 'financeiro-lancamentos', 'documentos', 'documentos-templates', 'relatorios', - 'perfil', 'plano', 'negocio', 'seguranca', 'alterar-plano', + 'perfil', 'plano', 'negocio', 'seguranca', 'bloqueios', 'alterar-plano', ...MELISSA_EMBED_KEYS ]); // Aliases "bonitos" + INLINE_KEYS reconhecidos pelo MelissaConfiguracoes. // Mantidos sincronizados com o ROUTE_ALIASES/INLINE_KEYS de lá. const MELISSA_CONFIG_ALIASES = new Set([ - 'aparencia', 'bloqueios', + 'aparencia', 'fundo', 'relogio', 'cronometro' ]); function isMelissaConfigRoute(slug) { @@ -2244,6 +2247,11 @@ function onKeydown(e) { @close="fecharSecao" /> + +