BotSchedule
Editor de agenda semanal para bots de atendimento. Lista os 7 dias da semana com checkbox para ativar cada dia. Quando ativado, exibe time pickers (flatPickr, formato 24h) para Abertura, Início/Final da Pausa (opcional) e Fechamento. Emite @updatedWeekDays e @updatedMessages com debounce de 100ms.
Simples (sem pausa)
useSchedulingPause=false, useMessageShield=false. Dias ativos exibem apenas Abertura e Fechamento. Dias inativos mostram apenas o checkbox.
Com Pausa
useSchedulingPause=true. Dias ativos exibem Abertura, Início da Pausa, Final da Pausa e Fechamento. Botão + adiciona pausa; ícone × remove. Final da Pausa fica desabilitado até Início da Pausa ser definido.
Por Departamento (com mensagem fora do horário)
useMessageShield=true. Exibe textarea para mensagem fora do horário de atendimento. userDepartmentId é passado como 2º argumento nos eventos — permite distinguir qual departamento foi atualizado. Padrão usado quando useSchedulingInDepartament=true.
Completo (pausa + mensagem)
useSchedulingPause=true + useMessageShield=true. Todos os campos visíveis: 4 time pickers por dia ativo, mensagem fora do horário e mensagem de pausa.
API
Exemplo completo
<!-- weekDays: array de 7 objetos {value, label, start_at, finish_at, selected, start_pause, finish_pause} -->
<!-- @updatedWeekDays: payload [weekDays, userDepartmentId] — debounce 100ms -->
<!-- @updatedMessages: payload [messages, userDepartmentId] — debounce 100ms -->
<bot-schedule
:week-days="weekDays"
:use-scheduling-pause="useSchedulingPause"
:use-message-shield="true"
:messages="messages"
:user-department-id="departmentId"
@updatedWeekDays="onWeekDaysUpdated"
@updatedMessages="onMessagesUpdated"
/>
Props
| Nome | Tipo | Default | Obrig. | Descrição |
|---|---|---|---|---|
useSchedulingPause |
Boolean | false | Sim | Ativa/desativa campos de pausa (Início/Final da Pausa) para cada dia. Ao mudar para false, reseta todos os start_pause/finish_pause para 00:00. |
useMessageShield |
Boolean | false | Não | Exibe textarea para mensagem fora do horário (+ mensagem de pausa se useSchedulingPause=true). |
userDepartmentId |
any | null | Não | ID do departamento — passado como 2º argumento nos eventos emitidos para identificar qual instância foi atualizada. |
messages |
Array/Object | [] | Não | Objeto com messages['message'] (fora do horário) e messages['message_pause'] (pausa). Vinculado ao vs-textarea. |
weekDays |
Array | 7 dias default (todos desmarcados, 00:00) | Não | Array de 7 objetos com {value, label, start_at, finish_at, selected, start_pause, finish_pause}. value: 0=Domingo, 1=Segunda... 6=Sábado. |
Eventos
| Evento | Payload | Descrição |
|---|---|---|
@updatedWeekDays |
[weekDays, userDepartmentId] |
Emitido com debounce 100ms sempre que weekDays muda (watch deep + immediate). Disparado na montagem — pai recebe valores iniciais imediatamente. |
@updatedMessages |
[messages, userDepartmentId] |
Emitido com debounce 100ms sempre que messages muda (watch deep + immediate). |
Estrutura padrão de weekDays[i]
// value: 0=Domingo, 1=Segunda, ..., 6=Sábado
{
value: "1",
label: "Segunda-feira",
start_at: "00:00",
finish_at: "00:00",
selected: false,
start_pause: "00:00",
finish_pause: "00:00"
}
Dependências
vue-flatpickr-component+flatpickr/dist/flatpickr.css— time pickers (noCalendar, enableTime, formato H:i)vs-checkbox,vs-button,vs-textarea(Vuesax 3)feather-icon(XIcon para remover pausa)
Onde é usado
src/views/chat-flows/ChatFlowsList.vue— 2 instâncias (bot global + por departamento)
@updatedWeekDays usa immediate: true no watch — o evento é emitido na montagem do componente com os valores iniciais. O pai deve estar preparado para receber o evento durante o created/mounted cycle.