From 69baec5045ab2c2365f215b5d880bf11d7b5117f Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Tue, 18 Mar 2025 11:09:11 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=EC=97=90=EB=9F=AC=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20css=20=EC=88=98=EC=A0=95=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/css/custom.css | 1 + 1 file changed, 1 insertion(+) diff --git a/public/css/custom.css b/public/css/custom.css index e06cd3e..a8b4294 100644 --- a/public/css/custom.css +++ b/public/css/custom.css @@ -83,6 +83,7 @@ background: linear-gradient(90deg, orange, #ff8c00); box-shadow: 0 0 20px rgba(255, 140, 0, 1); transform: scale(1.05); + color: #fff; } /* 페이드 인 애니메이션 */ @keyframes fadeIn { From aaeda4b0cc368b2ff5975f9d50309c0a9ed545e7 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Tue, 18 Mar 2025 11:10:49 +0900 Subject: [PATCH 2/6] =?UTF-8?q?=EB=9D=BC=EC=9A=B0=ED=84=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/router/index.js b/src/router/index.js index 0db5705..7d59c04 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,7 +8,7 @@ const routes = [ path: '/', name: "Home", component: () => import('@v/MainView.vue'), - // meta: { requiresAuth: true } + meta: { requiresAuth: true } }, { path: '/board', From e353309c1973e16a31d9bdf42628272e75876934 Mon Sep 17 00:00:00 2001 From: yoon Date: Tue, 18 Mar 2025 12:17:15 +0900 Subject: [PATCH 3/6] =?UTF-8?q?=EC=95=84=EC=9D=B4=EC=BD=98=20pe-none?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/list/ProjectCard.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/list/ProjectCard.vue b/src/components/list/ProjectCard.vue index b1498d2..bd8b807 100644 --- a/src/components/list/ProjectCard.vue +++ b/src/components/list/ProjectCard.vue @@ -7,7 +7,7 @@
{{ title }}
-

+

From adbc5d03835df563573fe6ace5afeae601784755 Mon Sep 17 00:00:00 2001 From: yoon Date: Tue, 18 Mar 2025 12:17:24 +0900 Subject: [PATCH 4/6] =?UTF-8?q?=ED=88=AC=ED=91=9C=20css=20=EC=88=98?= =?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 | 4 ++++ src/components/voteboard/voteCard.vue | 4 ++-- src/components/voteboard/voteCardCheck.vue | 4 +++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/public/css/custom.css b/public/css/custom.css index a8b4294..efb780b 100644 --- a/public/css/custom.css +++ b/public/css/custom.css @@ -1,5 +1,9 @@ /* 여기에 light css 작성 */ +.opacity-50 { + opacity: 0.5; +} + /* board */ .board-content img { max-width: 100% !important; diff --git a/src/components/voteboard/voteCard.vue b/src/components/voteboard/voteCard.vue index edd223a..060e771 100644 --- a/src/components/voteboard/voteCard.vue +++ b/src/components/voteboard/voteCard.vue @@ -1,5 +1,5 @@ From 00acd58995d0412406f9c11722ee6a6eae183a82 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Tue, 18 Mar 2025 12:23:23 +0900 Subject: [PATCH 5/6] =?UTF-8?q?=EC=97=90=EB=9F=AC=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=A7=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/common/axios-interceptor.js | 7 +- src/components/modal/VacationGrantModal.vue | 1 - src/router/index.js | 6 +- src/views/admin/TheAuthorization.vue | 2 - src/views/board/BoardList.vue | 114 ++++++++--------- src/views/board/BoardView.vue | 59 ++++----- src/views/board/BoardWrite.vue | 15 +-- src/views/error/Error400.vue | 2 +- src/views/vacation/VacationManagement.vue | 135 +++++++++----------- 9 files changed, 149 insertions(+), 192 deletions(-) diff --git a/src/common/axios-interceptor.js b/src/common/axios-interceptor.js index 68e9bd4..1cd85ef 100644 --- a/src/common/axios-interceptor.js +++ b/src/common/axios-interceptor.js @@ -79,9 +79,10 @@ $api.interceptors.response.use( } // 에러 응답에 커스텀 메시지가 포함되어 있다면 해당 메시지 사용 - if (error.response && error.response.data && error.response.data.message) { - toastStore.onToast(error.response.data.message, 'e'); - } else if (error.response) { + // if (error.response && error.response.data && error.response.data.message) { + // toastStore.onToast(error.response.data.message, 'e'); + // } else if (error.response) { + if (error.response) { // 기본 HTTP 에러 처리 switch (error.response.status) { case 400: diff --git a/src/components/modal/VacationGrantModal.vue b/src/components/modal/VacationGrantModal.vue index ac977fd..06b5e1b 100644 --- a/src/components/modal/VacationGrantModal.vue +++ b/src/components/modal/VacationGrantModal.vue @@ -48,7 +48,6 @@ const fetchSentVacationCount = async () => { availableQuota.value = Math.max(maxQuota - sentCount.value, 0); grantCount.value = availableQuota.value; } catch (error) { - console.error("🚨 연차 전송 기록 조회 실패:", error); availableQuota.value = maxQuota; grantCount.value = maxQuota; } diff --git a/src/router/index.js b/src/router/index.js index 7d59c04..4461e85 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -95,11 +95,11 @@ const routes = [ component: () => import('@v/admin/TheAuthorization.vue'), meta: { requiresAuth: true } }, - { path: "/error/400", name: "Error400", component: () => import('@v/error/Error400.vue') }, - { path: "/error/500", name: "Error500", component: () => import('@v/error/Error500.vue') }, + { path: "/error/400", name: "Error400", component: () => import('@v/error/Error400.vue'), meta: {layout: 'NoLayout'} }, + { path: "/error/500", name: "Error500", component: () => import('@v/error/Error500.vue'), meta: {layout: 'NoLayout'} }, { path: "/:anything(.*)", - name: "Error404", component: () => import('@v/error/Error404.vue') + name: "Error404", component: () => import('@v/error/Error404.vue'), meta: {layout: 'NoLayout'} }, ]; diff --git a/src/views/admin/TheAuthorization.vue b/src/views/admin/TheAuthorization.vue index d4da706..f3c9ca9 100644 --- a/src/views/admin/TheAuthorization.vue +++ b/src/views/admin/TheAuthorization.vue @@ -52,7 +52,6 @@ async function fetchUsers() { isAdmin: user.MEMBERROL === 'ROLE_ADMIN', })); } catch (error) { - console.error('사용자 목록을 불러오는 중 오류 발생:', error); toastStore.onToast('사용자 목록을 불러오지 못했습니다.', 'e'); } } @@ -83,7 +82,6 @@ async function toggleAdmin(user) { throw new Error('권한 변경 실패'); } } catch (error) { - console.error('권한 변경 중 오류 발생:', error); toastStore.onToast('권한 변경에 실패했습니다.', 'e'); } } diff --git a/src/views/board/BoardList.vue b/src/views/board/BoardList.vue index 30539ec..875693d 100644 --- a/src/views/board/BoardList.vue +++ b/src/views/board/BoardList.vue @@ -182,74 +182,66 @@ const handleSizeChange = () => { // 일반 게시물 데이터 로드 const fetchGeneralPosts = async (page = 1) => { - try { - const { data } = await axios.get("board/general", { - params: { - page, - size: selectedSize.value, - orderBy: selectedOrder.value, - searchKeyword: searchText.value - } - }); - - if (data?.data) { - const totalPosts = data.data.total; - generalList.value = data.data.list.map((post, index) => ({ - realId: post.id, - id: totalPosts - ((page - 1) * selectedSize.value) - index, - title: post.title, - author: post.author || '익명', - rawDate: post.date, - date: formatDate(post.date), // 날짜 변환 적용 - views: post.cnt || 0, - hasAttachment: post.hasAttachment, - img: post.firstImageUrl || null, - commentCount : post.commentCount - })); - - pagination.value = { - ...pagination.value, - currentPage: data.data.pageNum, - pages: data.data.pages, - prePage: data.data.prePage, - nextPage: data.data.nextPage, - isFirstPage: data.data.isFirstPage, - isLastPage: data.data.isLastPage, - hasPreviousPage: data.data.hasPreviousPage, - hasNextPage: data.data.hasNextPage, - navigatePages: data.data.navigatePages, - navigatepageNums: data.data.navigatepageNums, - navigateFirstPage: data.data.navigateFirstPage, - navigateLastPage: data.data.navigateLastPage - }; + const { data } = await axios.get("board/general", { + params: { + page, + size: selectedSize.value, + orderBy: selectedOrder.value, + searchKeyword: searchText.value } - } catch (error) { - console.error("데이터 오류:", error); + }); + + if (data?.data) { + const totalPosts = data.data.total; + generalList.value = data.data.list.map((post, index) => ({ + realId: post.id, + id: totalPosts - ((page - 1) * selectedSize.value) - index, + title: post.title, + author: post.author || '익명', + rawDate: post.date, + date: formatDate(post.date), // 날짜 변환 적용 + views: post.cnt || 0, + hasAttachment: post.hasAttachment, + img: post.firstImageUrl || null, + commentCount : post.commentCount + })); + + pagination.value = { + ...pagination.value, + currentPage: data.data.pageNum, + pages: data.data.pages, + prePage: data.data.prePage, + nextPage: data.data.nextPage, + isFirstPage: data.data.isFirstPage, + isLastPage: data.data.isLastPage, + hasPreviousPage: data.data.hasPreviousPage, + hasNextPage: data.data.hasNextPage, + navigatePages: data.data.navigatePages, + navigatepageNums: data.data.navigatepageNums, + navigateFirstPage: data.data.navigateFirstPage, + navigateLastPage: data.data.navigateLastPage + }; } }; // 공지사항 데이터 로드 const fetchNoticePosts = async () => { - try { - const { data } = await axios.get("board/notices", { - params: { searchKeyword: searchText.value } - }); + const { data } = await axios.get("board/notices", { + params: { searchKeyword: searchText.value } + }); - if (data?.data) { - noticeList.value = data.data.map(post => ({ - id: post.id, - title: post.title, - author: post.author || '관리자', - date: formatDate(post.date), - rawDate: post.date, - views: post.cnt || 0, - hasAttachment: post.hasAttachment, - img: post.firstImageUrl || null, - commentCount : post.commentCount - })); - } - } catch (error) { - console.error("데이터 오류:", error); + if (data?.data) { + noticeList.value = data.data.map(post => ({ + id: post.id, + title: post.title, + author: post.author || '관리자', + date: formatDate(post.date), + rawDate: post.date, + views: post.cnt || 0, + hasAttachment: post.hasAttachment, + img: post.firstImageUrl || null, + commentCount : post.commentCount + })); } }; diff --git a/src/views/board/BoardView.vue b/src/views/board/BoardView.vue index 9f7a992..52a23b8 100644 --- a/src/views/board/BoardView.vue +++ b/src/views/board/BoardView.vue @@ -206,7 +206,6 @@ link.remove(); window.URL.revokeObjectURL(url); } catch (error) { - console.error('파일 다운로드 오류:', error); alert('파일 다운로드 중 오류가 발생했습니다.'); } }; @@ -272,25 +271,21 @@ // 좋아요, 싫어요 const handleUpdateReaction = async ({ boardId, commentId, isLike, isDislike }) => { - try { - await axios.post(`/board/${boardId}/${commentId}/reaction`, { - LOCBRDSEQ: boardId, // 게시글 id - LOCCMTSEQ: commentId, //댓글 id - LOCGOBGOD: isLike ? 'T' : 'F', - LOCGOBBAD: isDislike ? 'T' : 'F', - }); + await axios.post(`/board/${boardId}/${commentId}/reaction`, { + LOCBRDSEQ: boardId, // 게시글 id + LOCCMTSEQ: commentId, //댓글 id + LOCGOBGOD: isLike ? 'T' : 'F', + LOCGOBBAD: isDislike ? 'T' : 'F', + }); - const response = await axios.get(`board/${boardId}`); - const updatedData = response.data.data; + const response = await axios.get(`board/${boardId}`); + const updatedData = response.data.data; - likes.value = updatedData.likeCount; - dislikes.value = updatedData.dislikeCount; + likes.value = updatedData.likeCount; + dislikes.value = updatedData.dislikeCount; - likeClicked.value = isLike; - dislikeClicked.value = isDislike; - } catch (error) { - alert('오류가 발생했습니다.'); - } + likeClicked.value = isLike; + dislikeClicked.value = isDislike; }; // 대댓글 좋아요 @@ -411,24 +406,20 @@ return; } - try { - const response = await axios.post(`board/${currentBoardId.value}/comment`, { - LOCBRDSEQ: currentBoardId.value, - LOCCMTRPY: comment, - LOCCMTPWD: isCheck ? password : '', - LOCCMTPNT: 1, - LOCBRDTYP: isCheck ? '300102' : null, - }); + const response = await axios.post(`board/${currentBoardId.value}/comment`, { + LOCBRDSEQ: currentBoardId.value, + LOCCMTRPY: comment, + LOCCMTPWD: isCheck ? password : '', + LOCCMTPNT: 1, + LOCBRDTYP: isCheck ? '300102' : null, + }); - if (response.status === 200) { - passwordAlert.value = ''; - commentAlert.value = ''; - await fetchComments(); - } else { - alert('댓글 작성을 실패했습니다.'); - } - } catch (error) { - alert('오류가 발생했습니다.'); + if (response.status === 200) { + passwordAlert.value = ''; + commentAlert.value = ''; + await fetchComments(); + } else { + alert('댓글 작성을 실패했습니다.'); } }; diff --git a/src/views/board/BoardWrite.vue b/src/views/board/BoardWrite.vue index 799ad5a..95d8fbd 100644 --- a/src/views/board/BoardWrite.vue +++ b/src/views/board/BoardWrite.vue @@ -129,15 +129,11 @@ const fileError = ref(''); const fetchCategories = async () => { - try { - const response = await axios.get('board/categories'); - categoryList.value = response.data.data; - const freeCategory = categoryList.value.find(category => category.CMNCODNAM === '자유'); - if (freeCategory) { - categoryValue.value = freeCategory.CMNCODVAL; - } - } catch (error) { - console.error('카테고리 불러오기 오류:', error); + const response = await axios.get('board/categories'); + categoryList.value = response.data.data; + const freeCategory = categoryList.value.find(category => category.CMNCODNAM === '자유'); + if (freeCategory) { + categoryValue.value = freeCategory.CMNCODVAL; } }; @@ -243,7 +239,6 @@ toastStore.onToast('게시물이 작성되었습니다.', 's'); goList(); } catch (error) { - console.error(error); toastStore.onToast('게시물 작성 중 오류가 발생했습니다.', 'e'); } }; diff --git a/src/views/error/Error400.vue b/src/views/error/Error400.vue index 9f1c61b..2ebf108 100644 --- a/src/views/error/Error400.vue +++ b/src/views/error/Error400.vue @@ -1,5 +1,5 @@