mudancas escala

This commit is contained in:
ka-lucas 2025-05-05 17:20:12 -03:00
parent e0a359acb9
commit 02604df6ce
5 changed files with 42 additions and 26 deletions

View File

@ -112,49 +112,49 @@
<div class="mb-4"> <div class="mb-4">
<v-checkbox <v-checkbox
v-model="form.dias_semana" v-model="form.dias_semana"
:value="0" :value="1"
label="Domingo" label="Domingo"
hide-details hide-details
class="d-inline-block mr-4" class="d-inline-block mr-4"
></v-checkbox> ></v-checkbox>
<v-checkbox <v-checkbox
v-model="form.dias_semana" v-model="form.dias_semana"
:value="1" :value="2"
label="Segunda" label="Segunda"
hide-details hide-details
class="d-inline-block mr-4" class="d-inline-block mr-4"
></v-checkbox> ></v-checkbox>
<v-checkbox <v-checkbox
v-model="form.dias_semana" v-model="form.dias_semana"
:value="2" :value="3"
label="Terça" label="Terça"
hide-details hide-details
class="d-inline-block mr-4" class="d-inline-block mr-4"
></v-checkbox> ></v-checkbox>
<v-checkbox <v-checkbox
v-model="form.dias_semana" v-model="form.dias_semana"
:value="3" :value="4"
label="Quarta" label="Quarta"
hide-details hide-details
class="d-inline-block mr-4" class="d-inline-block mr-4"
></v-checkbox> ></v-checkbox>
<v-checkbox <v-checkbox
v-model="form.dias_semana" v-model="form.dias_semana"
:value="4" :value="5"
label="Quinta" label="Quinta"
hide-details hide-details
class="d-inline-block mr-4" class="d-inline-block mr-4"
></v-checkbox> ></v-checkbox>
<v-checkbox <v-checkbox
v-model="form.dias_semana" v-model="form.dias_semana"
:value="5" :value="6"
label="Sexta" label="Sexta"
hide-details hide-details
class="d-inline-block mr-4" class="d-inline-block mr-4"
></v-checkbox> ></v-checkbox>
<v-checkbox <v-checkbox
v-model="form.dias_semana" v-model="form.dias_semana"
:value="6" :value="7"
label="Sábado" label="Sábado"
hide-details hide-details
class="d-inline-block" class="d-inline-block"
@ -219,13 +219,13 @@ watch(isOpen, (val) => emit('update:modelValue', val));
// Mapeamento de nomes para valores de dias // Mapeamento de nomes para valores de dias
const diaSemanaMap = { const diaSemanaMap = {
'Domingo': 0, 'Domingo': 1,
'Segunda-feira': 1, 'Segunda-feira': 2,
'Terça-feira': 2, 'Terça-feira': 3,
'Quarta-feira': 3, 'Quarta-feira': 4,
'Quinta-feira': 4, 'Quinta-feira': 5,
'Sexta-feira': 5, 'Sexta-feira': 6,
'Sábado': 6 'Sábado': 7
}; };
// Atualiza os dados do formulário com shiftData recebido // Atualiza os dados do formulário com shiftData recebido
@ -255,6 +255,7 @@ function fechar() {
async function submit() { async function submit() {
try { try {
loading.value = true; loading.value = true;
console.log('Dados do formulário:', form.value);
await shiftStore.updateShift(form.value.id, form.value); await shiftStore.updateShift(form.value.id, form.value);
emit('save', form.value); // notifica o pai emit('save', form.value); // notifica o pai
fechar(); fechar();

View File

@ -135,6 +135,9 @@ const handleSave = async () => {
...localHoliday.value, ...localHoliday.value,
adicional_he: parseInt(localHoliday.value.adicional_he) || 0, adicional_he: parseInt(localHoliday.value.adicional_he) || 0,
parent_id: authStore.userId, parent_id: authStore.userId,
date: typeof localHoliday.value.date === 'string'
? localHoliday.value.date
: new Date(localHoliday.value.date).toISOString().split('T')[0],
service_instance_id: authStore.service_instance_id service_instance_id: authStore.service_instance_id
}; };

View File

@ -146,6 +146,9 @@ const handleSave = async () => {
...localHoliday.value, ...localHoliday.value,
adicional_he: parseInt(localHoliday.value.adicional_he) || 0, adicional_he: parseInt(localHoliday.value.adicional_he) || 0,
parent_id: authStore.userId, parent_id: authStore.userId,
date: typeof localHoliday.value.date === 'string'
? localHoliday.value.date
: new Date(localHoliday.value.date).toISOString().split('T')[0],
service_instance_id: authStore.service_instance_id service_instance_id: authStore.service_instance_id
}; };

View File

@ -153,18 +153,24 @@ export const useShiftStore = defineStore('shifts', {
/** /**
* Atualiza os dados de um turno * Atualiza os dados de um turno
*/ */
async updateShift(id, shift) { async updateShift(id, shiftData) {
const url = `/shift/${id}`; const url = `/shift/${id}`;
this.loading = true; this.loading = true;
this.error = null; this.error = null;
const authStore = useAuthStore();
try { try {
const response = await api.put(url, { const response = await api.put(url, {
name: shift.name, name: shiftData.nome,
days: shift.days, description: shiftData.descricao,
break_time: shift.break_time, start_time: shiftData.entrada,
break_type: shift.break_type, end_time: shiftData.saida_final,
status: shift.status, interval_start: shiftData.saida_almoco,
interval_end: shiftData.retorno_almoco,
type_interval: shiftData.almoco_automatico ? 'automatic' : 'manual',
tolerance: shiftData.tolerancia || 0,
service_instance_id: authStore.service_instance_id,
time_schedule_ids: shiftData.dias_semana || []
}); });
const index = this.shifts.findIndex((s) => s.id === id); const index = this.shifts.findIndex((s) => s.id === id);

View File

@ -65,8 +65,9 @@
</div> </div>
</template> </template>
<template v-slot:item.almoco_type="{ item }"> <template v-slot:item.almoco_type="{ item }">
{{ item.type_interval === 'auto' ? 'Automático' : 'Manual' }} {{ item.type_interval === 'automatic' ? 'Automático' : 'Manual' }}
</template> </template>
<template v-slot:item.actions="{ item }"> <template v-slot:item.actions="{ item }">
<v-icon size="small" class="mr-2" @click="openEditShiftDialog(item.id)">mdi-pencil</v-icon> <v-icon size="small" class="mr-2" @click="openEditShiftDialog(item.id)">mdi-pencil</v-icon>
<v-icon size="small" @click="confirmDelete('shift', item)">mdi-delete</v-icon> <v-icon size="small" @click="confirmDelete('shift', item)">mdi-delete</v-icon>
@ -200,7 +201,9 @@ export default {
interval_start: data.interval_start || '', interval_start: data.interval_start || '',
interval_end: data.interval_end || '', interval_end: data.interval_end || '',
type_interval: data.type_interval || '', type_interval: data.type_interval || '',
tolerance: data.tolerance || '' tolerance: data.tolerance || '',
description: data.description || '' ,
time_schedules: data.time_schedules || []
}; };
dialogs.value.editShift = true; dialogs.value.editShift = true;
}; };
@ -219,8 +222,8 @@ export default {
}; };
const submitEdit = async (data) => { const submitEdit = async (data) => {
await shiftStore.updateShift(data.id, data); //await shiftStore.updateShift(data.id, data);
await fetchShifts(); await shiftStore.fetchShifts();
showNotification('Escala atualizada com sucesso'); showNotification('Escala atualizada com sucesso');
dialogs.value.editShift = false; dialogs.value.editShift = false;
}; };
@ -264,7 +267,7 @@ export default {
dialogs, loading, filters, shifts, snackbar, forms, dialogs, loading, filters, shifts, snackbar, forms,
page, itemsPerPage, headers, itemToDelete, page, itemsPerPage, headers, itemToDelete,
formatTimeRange, openCreateShiftDialog, openEditShiftDialog, formatTimeRange, openCreateShiftDialog, openEditShiftDialog,
confirmDelete, deleteItem, submitEdit, handleCreatedShift, filteredshifts confirmDelete, deleteItem, submitEdit, handleCreatedShift,handleEditedShift, filteredshifts
}; };
} }
}; };