+
+
-
-
+
{{ boardTitle }}
+
+
+
+
+
+
-
@@ -21,16 +38,51 @@
-
diff --git a/src/views/board/BoardWrite.vue b/src/views/board/BoardWrite.vue
index f522ea4..97249fd 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 '@api';
const categoryList = ['자유', '익명', '공지사항'];
-// input 경고문 만들어야함
+// input 경고문 만들어야함!!
const title = ref('');
const password = ref('');
const category = ref(0);
@@ -76,9 +77,81 @@ 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', //공지사항 추가해야함!!
+ // MEMBERSEQ: 로그인이용자 id(세션)
+ };
+
+ // 게시물 작성 API 호출
+ const { data: boardResponse } = await axios.post('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(`board/${boardId}/attachments`, formData, {
+ headers: {
+ "Content-Type": "multipart/form-data",
+ },
+ });
+ }
+ }
+
+ alert("게시물이 작성되었습니다.");
+ goList();
+ } catch (error) {
+ console.error(error);
+ alert("게시물 작성 중 오류가 발생했습니다.");
+ }
};
+
+