From 0636f74c9b187b9a58eaf38a55a5da1bd0b1ffe8 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Tue, 25 Mar 2025 10:35:09 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9D=B4=EB=AF=B8=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EB=90=9C=20=ED=83=80=EC=9E=85=ED=9C=B4=EA=B0=80=20=ED=99=9C?= =?UTF-8?q?=EC=84=B1=ED=99=94=20=EB=B0=A9=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/vacation/VacationManagement.vue | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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);