yjryu / KERIS star
Stormen123 2023-11-03
231103 김성훈 자료집 insert 추가(진행중)
@878993c3839b87d29647cd8fb0942bf4c2d1cd6c
client/resources/js/commonUtil.js
--- client/resources/js/commonUtil.js
+++ client/resources/js/commonUtil.js
@@ -15,12 +15,12 @@
 		isEmpty: function (data) {
 			if (data === undefined || data === null || data === "" || data.length === 0 || (data.constructor == Object && Object.keys(data).length === 0)) {
 				if ((typeof data) === "number") {
-					return false
+					return true
 				} else {
-					return true;
+					return false;
 				}
 			} else {
-				return false;
+				return true;
 			}
 		},
 
client/smarteditor2-2.8.2.3/sample/photo_uploader/attach_photo.js
--- client/smarteditor2-2.8.2.3/sample/photo_uploader/attach_photo.js
+++ client/smarteditor2-2.8.2.3/sample/photo_uploader/attach_photo.js
@@ -334,7 +334,7 @@
     	var tempFile,
     		sUploadURL;
     	
-    	sUploadURL= '/post/postImageUpload.file'; 	//upload URL
+    	sUploadURL= '/file/postImageUpload.file'; 	//upload URL
     	
     	//파일을 하나씩 보내고, 결과를 받음.
     	for(var j=0, k=0; j < nImageInfoCnt; j++) {
client/views/pages/admin/databook/DataInsert.vue
--- client/views/pages/admin/databook/DataInsert.vue
+++ client/views/pages/admin/databook/DataInsert.vue
@@ -12,8 +12,8 @@
                     <tbody>
                         <tr>
                             <th>제목</th>
-                            <td><input type="text" name="" id="newsTitle"></td>
-                        </tr>
+                                <td><input type="text" name="" id="newsTitle" v-model = "post.post_title"></td>
+                            </tr>
                         <tr>
                             <th>내용</th>
                             <td><textarea name="smart" id="smart"></textarea></td>
@@ -22,29 +22,138 @@
                             <th>첨부파일</th>
                             <td>
                                 <div class="btn-upload" @click="openFileInput">파일 업로드하기</div>
-                                <input type="file" name="file" id="file" ref="fileInput" style="display: none">
+                                <input type="file" name="file" id="file" ref="fileInput" style="display: none" @change="fileUpload()">
+                                <div v-for="(file, idx) in fileList" :key="idx">
+                                    <div> {{ file.name }} <button @click="fileRemove(idx)">삭제</button></div>
+                                </div> 
                             </td>
                         </tr>
                     </tbody>
                 </table>
                 <div class="btn-wrap">
-                    <button class="dark-gray-btn" @click="selectList">이전</button>
-                    <button class="blue-btn">글쓰기</button>
+                    <button class="dark-gray-btn" @click="postSelectListPage()">이전</button>
+                    <button class="blue-btn" @click="postInsertCheck()">등록</button>
                 </div>
             </div>
         </div>
     </div>
 </template>
 <script>
+import axios from 'axios';
+import COMMON_UTIL from '../../../../resources/js/commonUtil';
 
 export default {
     data() {
         return {
+            post: {
+                bbs_id: '0',
+                post_title: null,
+                post_content: null,
+                link_url: null,
+            },
+            fileList:[],
+            filecount: 0,
             oEditors: [], // oEditors는 스마트에디터용
         };
     },
     methods: {
-        selectList: function () {
+
+        //게시글 및 첨부파일 등록
+        postInsert: function () {
+            const vm = this;
+            let formData = new FormData();
+            
+            if (vm.fileList.length > 0) {
+                for(let i = 0; i < vm.fileList.length; i++ ) {
+                    formData.append('file', vm.fileList[i]);
+                    console.log(formData.get('file'));
+                }
+                formData.append("post", JSON.stringify(vm.post));
+
+                axios({
+                    url: '/post/postFileInsert.file',
+                    method: 'post',
+                    headers: {
+                        'Content-Type': 'multipart/form-data',
+                    },
+                    data: formData
+                }).then(function (response) {
+                    console.log("qnaInsert - response : ", response);
+                    let result = response.data;
+                    if (result > 0) {
+                        alert("등록을 완료하였습니다.");
+                        vm.postSelectListPage()
+                    } else {
+                        alert("등록 실패, 관리자에게 문의해주세요.");
+                    }
+                }).catch(function (error) {
+                    console.log("qnaInsert - error : ", error);
+                    alert("등록 오류, 관리자에게 문의해주세요.");
+                });
+            } else {
+
+                axios({
+                    url: '/post/postInsert.json',
+                    method: 'post',
+                    headers: {
+                        'Content-Type': "application/json; charset=UTF-8",
+                    },
+                    data: vm.post
+                }).then(function (response) {
+                        console.log("noticeInsert - response : ", response);
+                        let result = response.data;
+                    if (result > 0) {
+                        alert("등록을 완료하였습니다.");
+                        vm.postSelectListPage()
+                    } else {
+                        alert("등록 실패, 관리자에게 문의해주세요.");
+                    }
+                }).catch(function (error) {
+                        console.log("noticeInsert - error : ", error);
+                        alert("등록 오류, 관리자에게 문의해주세요.");
+                });
+            }
+        },
+
+        //등록 유효성 검사
+        postInsertCheck: function () {
+            const oEditors = this.oEditors;
+            oEditors.getById["smart"].exec("UPDATE_CONTENTS_FIELD", []); 
+            // 스마트에디터의 iframe에 있는 내용을 textarea로. 
+            this.post.post_content = document.getElementById("smart").value;
+            console.log(document.getElementById("smart").value);
+            console.log(this.post.post_content);
+            console.log(COMMON_UTIL.isEmpty(this.post.post_title));
+
+            if (COMMON_UTIL.isEmpty(this.post.post_title) === false) {
+                alert("제목을 입력해주세요.");
+                return false;
+            }
+
+            if (COMMON_UTIL.isEmpty(this.post.post_content) === false || this.post.post_content === "<p><br></p>") {
+                alert("내용을 입력해주세요.");
+                return false;
+            }
+
+            this.postInsert();
+        },
+
+        //파일업로드
+        fileUpload: function() {
+            this.fileList[this.filecount] = this.$refs.fileInput.files[0]
+            this.filecount += 1
+            console.log("file", this.fileList);
+        },
+
+        //파일업로드 중 업로드 파일 삭제
+        fileRemove(idx) {
+            this.fileList.splice(idx, 1);
+            console.log("reMove_file", this.fileList);
+            this.filecount = this.fileList.length;
+        },
+
+        //게시글 리스트로 이동
+        postSelectListPage: function () {
             this.$router.push({ path: '/adm/dataSelectList.page' });
         },
 
Add a comment
List