diff --git a/src/views/board/BoardWrite.vue b/src/views/board/BoardWrite.vue index f522ea4..e93b086 100644 --- a/src/views/board/BoardWrite.vue +++ b/src/views/board/BoardWrite.vue @@ -55,9 +55,10 @@ import FormSelect from '@c/input/FormSelect.vue'; import FormFile from '@c/input/FormFile.vue'; import { ref, watch } from 'vue'; import router from '@/router'; +import axios from 'axios'; const categoryList = ['자유', '익명', '공지사항']; -// input 경고문 만들어야함 +// input 경고문 만들어야함!! const title = ref(''); const password = ref(''); const category = ref(0); @@ -76,9 +77,80 @@ const goList = () => { router.push('/board'); }; -const write = () => { - console.log('작성'); +const write = async () => { + // 입력값 유효성 검사 + if (!title.value) { + titleAlert.value = true; + return; + } else { + titleAlert.value = false; + } + + if (category.value === 1 && !password.value) { + passwordAlert.value = true; + return; + } else { + passwordAlert.value = false; + } + + if (!content.value) { + contentAlert.value = true; + return; + } else { + contentAlert.value = false; + } + + try { + // 게시물 작성 데이터 준비 + const boardData = { + LOCBRDTTL: title.value, + LOCBRDCON: content.value, + LOCBRDPWD: category.value === 1 ? password.value : null, + LOCBRDTYP: category.value === 1 ? 'S' : 'F', //공지사항 추가해야함!! + }; + + // 게시물 작성 API 호출 + const { data: boardResponse } = await axios.post('/api/board', boardData); + const boardId = boardResponse.data.boardId; + + // 첨부파일 처리 + if (attachFiles.value && attachFiles.value.length > 0) { + for (const file of attachFiles.value) { + const realName = file.name.substring(0, file.name.lastIndexOf('.')); + const fileInfo = { + path: "/uploads", // 파일 경로 (수정 필요) + originalName: realName, // 확장자를 제외한 파일명 + extension: file.name.split('.').pop(), // 파일 확장자 + registrantId: 1, // 등록자 ID (수정 필요) + }; + + + const formData = new FormData(); + formData.append("file", file); // 첨부 파일 + formData.append("CMNFLEPAT", fileInfo.path); // 파일 경로 + formData.append("CMNFLENAM", fileInfo.originalName); // 파일 명(확장자제외) + formData.append("CMNFLEORG", fileInfo.originalName); // 원본 파일명(확장자제외) + formData.append("CMNFLEEXT", fileInfo.extension); // 파일 확장자 + formData.append("CMNFLESIZ", file.size); // 파일 크기 + formData.append("CMNFLEREG", fileInfo.registrantId); // 등록자 ID + + const response = await axios.post(`/api/board/${boardId}/attachments`, formData, { + headers: { + "Content-Type": "multipart/form-data", + }, + }); + } + } + + alert("게시물이 작성되었습니다."); + goList(); + } catch (error) { + console.error(error); + alert("게시물 작성 중 오류가 발생했습니다."); + } }; + +