diff --git a/src/views/vacation/VacationManagement.vue b/src/views/vacation/VacationManagement.vue index 52dbbe3..43693a8 100644 --- a/src/views/vacation/VacationManagement.vue +++ b/src/views/vacation/VacationManagement.vue @@ -143,6 +143,12 @@ const calendarOptions = reactive({ dateClick: handleDateClick, datesSet: handleMonthChange, events: calendarEvents, + customButtons: { + today: { + text: 'TODAY', + click: () => fullCalendarRef.value?.getApi().today(), + }, + }, }); // 캘린더 월 변경 function handleMonthChange(viewInfo) { @@ -178,6 +184,21 @@ function handleDateClick(info) { const isMyVacation = myVacations.value.some(vac => vac.date.substring(0, 10) === clickedDateStr && !vac.receiverId); + if (!selectedDates.value.has(clickedDateStr) && isMyVacation && halfDayType.value) { + const existingVacation = myVacations.value.find(vac => vac.date.substring(0, 10) === clickedDateStr && !vac.receiverId); + const selectedType = + halfDayType.value === "AM" ? "700101" : + halfDayType.value === "PM" ? "700102" : "700103"; + if (existingVacation.type === selectedType) { + toastStore.onToast("이미 사용한 연차입니다.", "e"); + if (halfDayButtonsRef.value) { + halfDayButtonsRef.value.resetHalfDay(); + } + halfDayType.value = null; + return; + } + } + // 이미 활성화된 날짜를 한 번 더 클릭하면 비활성화 if (currentValue && currentValue !== "delete") { selectedDates.value.delete(clickedDateStr);