From 8b45d5f0488f01bf1afd1a077734bd781840f8a3 Mon Sep 17 00:00:00 2001 From: yoon Date: Fri, 21 Feb 2025 14:42:44 +0900 Subject: [PATCH 01/11] =?UTF-8?q?defaultProfile=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/user/UserList.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/user/UserList.vue b/src/components/user/UserList.vue index 835c7ff..16c6c12 100644 --- a/src/components/user/UserList.vue +++ b/src/components/user/UserList.vue @@ -15,7 +15,7 @@ user @@ -32,6 +32,7 @@ const emit = defineEmits(['user-list-update']); const userStore = useUserStore(); const userList = ref([]); const baseUrl = $api.defaults.baseURL.replace(/api\/$/, ''); +const defaultProfile = "/img/icons/icon.png"; const props = defineProps({ projctSeq: { From 2aa2c97ae5b5139f772836d1bc1ca6c78b3b7fd8 Mon Sep 17 00:00:00 2001 From: yoon Date: Fri, 21 Feb 2025 14:43:37 +0900 Subject: [PATCH 02/11] =?UTF-8?q?=EC=B6=9C=ED=87=B4=EA=B7=BC=20=ED=98=84?= =?UTF-8?q?=ED=99=A9=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/commuters/Calendar.vue | 202 ++++++++++++++++++++++++++ src/layouts/TheMenu.vue | 10 +- src/router/index.js | 4 + src/views/commuters/TheCommuters.vue | 9 ++ 4 files changed, 223 insertions(+), 2 deletions(-) create mode 100644 src/components/commuters/Calendar.vue create mode 100644 src/views/commuters/TheCommuters.vue diff --git a/src/components/commuters/Calendar.vue b/src/components/commuters/Calendar.vue new file mode 100644 index 0000000..08af625 --- /dev/null +++ b/src/components/commuters/Calendar.vue @@ -0,0 +1,202 @@ + + + diff --git a/src/layouts/TheMenu.vue b/src/layouts/TheMenu.vue index 2116b7b..f82dba7 100644 --- a/src/layouts/TheMenu.vue +++ b/src/layouts/TheMenu.vue @@ -67,12 +67,18 @@
Project
- + diff --git a/src/router/index.js b/src/router/index.js index 2957e04..1271744 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -80,6 +80,10 @@ const routes = [ path: '/projectlist', component: () => import('@v/projectlist/TheProjectList.vue'), }, + { + path: '/commuters', + component: () => import('@v/commuters/TheCommuters.vue'), + }, { path: '/sample', component: () => import('@c/calendar/SampleCalendar.vue'), diff --git a/src/views/commuters/TheCommuters.vue b/src/views/commuters/TheCommuters.vue new file mode 100644 index 0000000..545eca1 --- /dev/null +++ b/src/views/commuters/TheCommuters.vue @@ -0,0 +1,9 @@ + + + From c4b1a946ab4c7464b80979a59eca1dd620806778 Mon Sep 17 00:00:00 2001 From: yoon Date: Fri, 21 Feb 2025 15:43:49 +0900 Subject: [PATCH 03/11] =?UTF-8?q?profilePath=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/user/UserList.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/user/UserList.vue b/src/components/user/UserList.vue index 16c6c12..a216483 100644 --- a/src/components/user/UserList.vue +++ b/src/components/user/UserList.vue @@ -31,6 +31,7 @@ import $api from '@api'; const emit = defineEmits(['user-list-update']); const userStore = useUserStore(); const userList = ref([]); +const profilePath = ref(null); const baseUrl = $api.defaults.baseURL.replace(/api\/$/, ''); const defaultProfile = "/img/icons/icon.png"; From ce1ecb5897e2f949d6e1806dd22541aae43252be Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Fri, 21 Feb 2025 16:21:26 +0900 Subject: [PATCH 04/11] =?UTF-8?q?=ED=9C=B4=EA=B0=80=20=EC=88=98=EC=A0=95?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/css/custom.css | 6 --- src/views/vacation/VacationManagement.vue | 61 ++++++++++++----------- 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/public/css/custom.css b/public/css/custom.css index 62bc1b9..2a0f0c5 100644 --- a/public/css/custom.css +++ b/public/css/custom.css @@ -16,12 +16,6 @@ .half-day-buttons .btn.active { border: 2px solid black; } - .fc-daygrid-day-frame { - min-height: 80px !important; - max-height: 120px !important; - overflow: hidden !important; - padding-top: 25px !important; - } .fc-daygrid-day-events { max-height: 100px !important; overflow-y: auto !important; diff --git a/src/views/vacation/VacationManagement.vue b/src/views/vacation/VacationManagement.vue index 19647f7..4ffa1f8 100644 --- a/src/views/vacation/VacationManagement.vue +++ b/src/views/vacation/VacationManagement.vue @@ -123,30 +123,32 @@ }; // 프로필 클릭 시 연차 내역 가져오기 - const handleProfileClick = async (user) => { - try { - if (user.MEMBERSEQ === userStore.user.id) { - const response = await axios.get(`vacation/history`); - if (response.status === 200 && response.data) { - myVacations.value = response.data.data.usedVacations || []; - receivedVacations.value = response.data.data.receivedVacations || []; - isModalOpen.value = true; - // 모달을 열 때 기준 연도와 기준 월 갱신 - modalYear.value = new Date().getFullYear(); - modalMonth.value = String(new Date().getMonth() + 1).padStart(2, "0"); - isGrantModalOpen.value = false; - } else { - console.warn("❌ 연차 내역을 불러오지 못했습니다."); - } +// 프로필 클릭 시 연차 내역 가져오기 +const handleProfileClick = async (user) => { + try { + if (user.MEMBERSEQ === userStore.user.id) { + const year = new Date().getFullYear(); // 현재 연도 + // 연도 파라미터를 전달하여 전체 연도의 연차 내역을 조회 + const response = await axios.get(`vacation/history?year=${year}`); + if (response.status === 200 && response.data) { + myVacations.value = response.data.data.usedVacations || []; + receivedVacations.value = response.data.data.receivedVacations || []; + isModalOpen.value = true; + // 모달을 열 때 기준 연도 갱신 + modalYear.value = year; + isGrantModalOpen.value = false; } else { - selectedUser.value = user; - isGrantModalOpen.value = true; - isModalOpen.value = false; + console.warn("❌ 연차 내역을 불러오지 못했습니다."); } - } catch (error) { - console.error("🚨 연차 데이터 불러오기 실패:", error); + } else { + selectedUser.value = user; + isGrantModalOpen.value = true; + isModalOpen.value = false; } - }; + } catch (error) { + console.error("🚨 연차 데이터 불러오기 실패:", error); + } +}; const fetchUserList = async () => { try { @@ -186,10 +188,11 @@ }; // computed: modalYear와 일치하는 항목만 필터링 - const filteredMyVacations = computed(() => { +const filteredMyVacations = computed(() => { const filtered = myVacations.value.filter(vac => { - console.log(vac) - const year = vac.date ? vac.date.split("T")[0].substring(0, 4) : null; + // vac.date가 없으면 vac.LOCVACUDT를 사용하도록 함 + const dateStr = vac.date || vac.LOCVACUDT; + const year = dateStr ? dateStr.split("T")[0].substring(0, 4) : null; console.log("vacation year:", year, "modalYear:", modalYear.value); return year === String(modalYear.value); }); @@ -199,12 +202,10 @@ const filteredReceivedVacations = computed(() => { return receivedVacations.value.filter(vac => { - console.log( - vac.date, - vac.date ? vac.date.split("T")[0].substring(0, 4) : null, - modalYear.value - ); - return vac.date && vac.date.split("T")[0].substring(0, 4) === String(modalYear.value); + const dateStr = vac.date || vac.LOCVACUDT; + const year = dateStr ? dateStr.split("T")[0].substring(0, 4) : null; + console.log("vacation year:", year, "modalYear:", modalYear.value); + return dateStr && year === String(modalYear.value); }); }); From fc5f4463b10bbb67d78aa4fa621702d5b7e8d3d5 Mon Sep 17 00:00:00 2001 From: yoon Date: Sat, 22 Feb 2025 14:01:48 +0900 Subject: [PATCH 05/11] =?UTF-8?q?select=20input=20=EC=95=88=EB=82=98?= =?UTF-8?q?=EC=98=A4=EB=8A=94=EA=B1=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/user/FindPassword.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/user/FindPassword.vue b/src/components/user/FindPassword.vue index c4e073a..bef2c59 100644 --- a/src/components/user/FindPassword.vue +++ b/src/components/user/FindPassword.vue @@ -108,7 +108,9 @@ const passwordcheckAlert = ref(false); const passwordcheckErrorAlert = ref(false); - const { pwhintList } = commonApi(); + const { pwhintList } = commonApi({ + loadPwhint: true, + }); const handleIdChange = value => { id.value = value; From ac5cf6077ccdb215cd9fd9c2bccde90855bf50dc Mon Sep 17 00:00:00 2001 From: yoon Date: Sat, 22 Feb 2025 14:02:05 +0900 Subject: [PATCH 06/11] =?UTF-8?q?default=20img=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/user/UserList.vue | 5 ++--- src/layouts/TheTop.vue | 4 +++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/user/UserList.vue b/src/components/user/UserList.vue index a216483..27f81e6 100644 --- a/src/components/user/UserList.vue +++ b/src/components/user/UserList.vue @@ -15,8 +15,9 @@ user @@ -31,9 +32,7 @@ import $api from '@api'; const emit = defineEmits(['user-list-update']); const userStore = useUserStore(); const userList = ref([]); -const profilePath = ref(null); const baseUrl = $api.defaults.baseURL.replace(/api\/$/, ''); -const defaultProfile = "/img/icons/icon.png"; const props = defineProps({ projctSeq: { diff --git a/src/layouts/TheTop.vue b/src/layouts/TheTop.vue index 1d45645..9957c39 100644 --- a/src/layouts/TheTop.vue +++ b/src/layouts/TheTop.vue @@ -152,7 +152,7 @@