From 024807ccda85bb43117808661e1a0ba1e88a33d3 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Tue, 11 Feb 2025 15:10:02 +0900 Subject: [PATCH] =?UTF-8?q?board-view-content=20=EB=A8=B8=EC=A7=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/board/BoardProfile.vue | 120 +++++++++++++------------- src/components/input/FormInputBtn.vue | 92 ++++++++++++++++++++ 2 files changed, 154 insertions(+), 58 deletions(-) create mode 100644 src/components/input/FormInputBtn.vue diff --git a/src/components/board/BoardProfile.vue b/src/components/board/BoardProfile.vue index 7a4e538..5f77e63 100644 --- a/src/components/board/BoardProfile.vue +++ b/src/components/board/BoardProfile.vue @@ -25,22 +25,17 @@ -
- - - +
+
+ + +
+ {{ passwordAlert }}
@@ -71,6 +66,10 @@ import BoardRecommendBtn from '../button/BoardRecommendBtn.vue'; // Vue Router 인스턴스 const router = useRouter(); +const isPassword = ref(false); +const password = ref(''); +const passwordAlert = ref(false); +const lastClickedButton = ref(''); // Props 정의 const props = defineProps({ @@ -112,22 +111,14 @@ const props = defineProps({ } }); -const isPassword = ref(false); -const password = ref(''); -const lastClickedButton = ref(''); - -const boardId = 100; //수정필요! - const emit = defineEmits(['togglePasswordInput']); // 수정 버튼 const handleEdit = () => { - // router.push({ name: 'BoardEdit', params: { id: boardId } }); - if (props.unknown) { togglePassword('edit'); } else { - router.push({ name: 'BoardEdit', params: { id: 100 } }); // 로그인한 경우 바로 편집 + router.push({ name: 'BoardEdit', params: { id: props.boardId } }); } }; @@ -136,7 +127,7 @@ const handleDelete = () => { if (props.unknown) { togglePassword('delete'); } else { - deletePost(); // 로그인한 경우 바로 삭제 + deletePost(); } }; @@ -151,12 +142,11 @@ const togglePassword = (button) => { }; // 비밀번호 확인 -const handlePasswordSubmit = async () => { - isPassword.value = false; - lastClickedButton.value = null; - - console.log('비밀번호:', password.value); - console.log(props.boardId) +const handleSubmit = async () => { + if (!password.value) { + passwordAlert.value = '비밀번호를 입력해주세요.'; + return; + } try { const requestData = { @@ -164,47 +154,61 @@ const handlePasswordSubmit = async () => { LOCBRDSEQ: 288 } - console.log(requestData) - const postResponse = await axios.post(`board/${props.boardId}/password`, requestData); - console.log('post결과:', postResponse.data) + if (postResponse.data.code === 200) { + if (postResponse.data.data === true) { + isPassword.value = false; + - // if (response.data.code === 200 && response.data.data === true) { - // console.log("완료"); // 비밀번호가 맞으면 출력 - // } else { - // console.log("비밀번호가 틀립니다."); - // } + if (lastClickedButton.value === 'edit') { + router.push({ name: 'BoardEdit', params: { id: props.boardId } }); + } else if (lastClickedButton.value === 'delete') { + await deletePost(); + } + + lastClickedButton.value = null; + } else { + passwordAlert.value = '비밀번호가 일치하지 않습니다.'; + } + } else { + passwordAlert.value = '비밀번호가 일치하지 않습니다.'; + } } catch (error) { - console.error('비밀번호 확인 중 오류 발생:', error); + // 401 오류 + if (error.response && error.response.status === 401) { + passwordAlert.value = '비밀번호가 일치하지 않습니다.'; + } else if (error.response) { + alert(`오류 발생: ${error.response.data.message || '서버 오류'}`); + } else { + alert('네트워크 오류가 발생했습니다. 다시 시도해주세요.'); + } } }; const deletePost = async () => { if (confirm('정말 삭제하시겠습니까?')) { try { - await axios.delete(`board/100`); - alert('게시물이 삭제되었습니다.'); - router.push({ name: 'BoardList' }); + const response = await axios.delete(`board/${props.boardId}`, { + data: { LOCBRDSEQ: props.boardId } + }); + + if (response.data.code === 200) { + alert('게시물이 삭제되었습니다.'); + router.push({ name: 'BoardList' }); + } else { + alert('삭제 실패: ' + response.data.message); + } } catch (error) { - alert('삭제 중 오류 발생'); + if (error.response) { + alert(`삭제 실패: ${error.response.data.message || '서버 오류'}`); + } else { + alert('네트워크 오류가 발생했습니다. 다시 시도해주세요.'); + } } } }; -// const fetchBoardDetails = async () => { -// try { -// const response = await axios.get(`board/${props.boardId}`); -// console.log(response.data); -// } catch (error) { -// console.error('게시물 데이터 불러오기 오류:', error); -// } -// }; - -// onMounted(() => { -// // fetchBoardDetails(); -// }); -