yjryu / KERIS star
류윤주 류윤주 2023-11-06
231106 류윤주 관리자 페이지 수정
@e3165cc75e7a0b39704eb5f8910c6511277fc361
client/resources/css/common.css
--- client/resources/css/common.css
+++ client/resources/css/common.css
@@ -208,13 +208,13 @@
 .modal-container {
   background: #fff;
   min-width: 300px;
-  width: 50%;
+  width: 30%;
   border-radius: 5px;
   display: flex;
   flex-direction: column;
   justify-content: center;
   align-items: center;
-  padding: 20px;
+  padding: 30px;
   box-sizing: border-box;
   max-height: 90%;
 }
client/resources/css/reset.css
--- client/resources/css/reset.css
+++ client/resources/css/reset.css
@@ -76,3 +76,9 @@
   border: 1px solid #aaa;
   border-radius: 5px;
 }
+
+select{
+  padding: 10px;
+  border: 1px solid #aaa;
+  border-radius: 5px;
+}
client/views/pages/admin/networking/NetworkingSelectList.vue
--- client/views/pages/admin/networking/NetworkingSelectList.vue
+++ client/views/pages/admin/networking/NetworkingSelectList.vue
@@ -44,9 +44,9 @@
                         </tr>
                     </tbody>
                 </table>
-                <div class="btn-wrap">
+                <!-- <div class="btn-wrap">
                     <button class="blue-btn" @click="selectInsert">글쓰기</button>
-                </div>
+                </div> -->
             </div>
         </div>
     </div>
client/views/pages/admin/news/NewsInsert.vue
--- client/views/pages/admin/news/NewsInsert.vue
+++ client/views/pages/admin/news/NewsInsert.vue
@@ -41,14 +41,20 @@
 export default {
     data() {
         return {
-            oEditors:[], // oEditors는 스마트에디터용
+            oEditors: [], // oEditors는 스마트에디터용
         };
     },
     methods: {
-        selectList:function(){
-            this.$router.push({ path: '/adm/newsSelectList.page'});
+        selectList: function () {
+            this.$router.push({ path: '/adm/newsSelectList.page' });
         },
-        fileUpload: function() {
+
+        // 파일 업로드 커스텀을 위한 함수
+        openFileInput: function () {
+            this.$refs.fileInput.click(); // 파일 업로드 input 요소를 클릭
+        },
+
+        fileUpload: function () {
             this.fileList[this.filecount] = this.$refs.fileInput.files[0]
             this.filecount += 1
             console.log("file", this.fileList);
@@ -61,19 +67,19 @@
         // 스마트 에디터 적용
         const oEditors = this.oEditors;
         nhn.husky.EZCreator.createInIFrame({
-        oAppRef: oEditors,
-        elPlaceHolder: "smart",
-        sSkinURI: "/client/smarteditor2-2.8.2.3/SmartEditor2Skin.html",
-        htParams: {
-            bUseToolbar : true,				// 툴바 사용 여부 (true:사용/ false:사용하지 않음)
-            bSkipXssFilter : true,
-            bUseVerticalResizer: true,	
-            bUseModeChanger: true	
-        },
-        fCreator: "createSEditor2"
-        }); 
+            oAppRef: oEditors,
+            elPlaceHolder: "smart",
+            sSkinURI: "/client/smarteditor2-2.8.2.3/SmartEditor2Skin.html",
+            htParams: {
+                bUseToolbar: true,				// 툴바 사용 여부 (true:사용/ false:사용하지 않음)
+                bSkipXssFilter: true,
+                bUseVerticalResizer: true,
+                bUseModeChanger: true
+            },
+            fCreator: "createSEditor2"
+        });
 
-        
+
     }
 };
 </script>
@@ -90,12 +96,12 @@
     border-bottom: 3px solid #ddd;
 }
 
-textarea{
+textarea {
     width: 100%;
     height: 450px;
 }
 
-.dark-gray-btn{
+.dark-gray-btn {
     margin-right: 5px;
 }
 </style>
client/views/pages/admin/news/NewsSelectList.vue
--- client/views/pages/admin/news/NewsSelectList.vue
+++ client/views/pages/admin/news/NewsSelectList.vue
@@ -22,6 +22,14 @@
                         </div>
                     </div>
                 </div>
+                <!-- <div class="sort">
+                    <div>
+                        <button type="button">최신순</button>
+                        <button type="button">등록순</button>
+                        <button type="button">조회수 많은순</button>
+                        <button type="button">조회수 적은순</button>
+                    </div>
+                </div> -->
                 <ul class="news-list">
                     <li>
                         <a href="#">
@@ -30,8 +38,11 @@
                             </div>
                             <div class="text-zone">
                                 <p class="content-title">제목이 들어가는 부분입니다.</p>
-                                <p class="content-detail">제목이 내용이 들어가는 부분입니다.</p>
-                                <div class="content-info"><p><span class="writer">작성자</span><span>keris</span></p><p><span class="views">조회수</span><span>1000</span></p></div>
+                                <p class="content-detail">내용이 들어가는 부분입니다.</p>
+                                <div class="content-info">
+                                    <p><span class="writer">작성자</span><span>keris</span></p>
+                                    <p><span class="views">조회수</span><span>1000</span></p>
+                                </div>
                                 <p class="content-date">23.10.23</p>
                             </div>
                         </a>
@@ -43,8 +54,11 @@
                             </div>
                             <div class="text-zone">
                                 <p class="content-title">제목이 들어가는 부분입니다.</p>
-                                <p class="content-detail">제목이 내용이 들어가는 부분입니다.</p>
-                                <div class="content-info"><p><span class="writer">작성자</span><span>keris</span></p><p><span class="views">조회수</span><span>1000</span></p></div>
+                                <p class="content-detail">내용이 들어가는 부분입니다.</p>
+                                <div class="content-info">
+                                    <p><span class="writer">작성자</span><span>keris</span></p>
+                                    <p><span class="views">조회수</span><span>1000</span></p>
+                                </div>
                                 <p class="content-date">23.10.23</p>
                             </div>
                         </a>
@@ -56,8 +70,11 @@
                             </div>
                             <div class="text-zone">
                                 <p class="content-title">제목이 들어가는 부분입니다.</p>
-                                <p class="content-detail">제목이 내용이 들어가는 부분입니다.</p>
-                                <div class="content-info"><p><span class="writer">작성자</span><span>keris</span></p><p><span class="views">조회수</span><span>1000</span></p></div>
+                                <p class="content-detail">내용이 들어가는 부분입니다.</p>
+                                <div class="content-info">
+                                    <p><span class="writer">작성자</span><span>keris</span></p>
+                                    <p><span class="views">조회수</span><span>1000</span></p>
+                                </div>
                                 <p class="content-date">23.10.23</p>
                             </div>
                         </a>
@@ -69,8 +86,11 @@
                             </div>
                             <div class="text-zone">
                                 <p class="content-title">제목이 들어가는 부분입니다.</p>
-                                <p class="content-detail">제목이 내용이 들어가는 부분입니다.</p>
-                                <div class="content-info"><p><span class="writer">작성자</span><span>keris</span></p><p><span class="views">조회수</span><span>1000</span></p></div>
+                                <p class="content-detail">내용이 들어가는 부분입니다.</p>
+                                <div class="content-info">
+                                    <p><span class="writer">작성자</span><span>keris</span></p>
+                                    <p><span class="views">조회수</span><span>1000</span></p>
+                                </div>
                                 <p class="content-date">23.10.23</p>
                             </div>
                         </a>
@@ -82,8 +102,11 @@
                             </div>
                             <div class="text-zone">
                                 <p class="content-title">제목이 들어가는 부분입니다.</p>
-                                <p class="content-detail">제목이 내용이 들어가는 부분입니다.</p>
-                                <div class="content-info"><p><span class="writer">작성자</span><span>keris</span></p><p><span class="views">조회수</span><span>1000</span></p></div>
+                                <p class="content-detail">내용이 들어가는 부분입니다.</p>
+                                <div class="content-info">
+                                    <p><span class="writer">작성자</span><span>keris</span></p>
+                                    <p><span class="views">조회수</span><span>1000</span></p>
+                                </div>
                                 <p class="content-date">23.10.23</p>
                             </div>
                         </a>
@@ -173,7 +196,7 @@
     word-break: break-all;
 }
 
-.content-info{
+.content-info {
     display: flex;
     justify-content: space-between;
 }
@@ -182,8 +205,8 @@
     color: #aaa;
 }
 
-.views,.writer{
+.views,
+.writer {
     color: #3f87f7;
     margin-right: 10px;
-}
-</style>
+}</style>
client/views/pages/admin/notice/NoticeInsert.vue
--- client/views/pages/admin/notice/NoticeInsert.vue
+++ client/views/pages/admin/notice/NoticeInsert.vue
@@ -41,14 +41,18 @@
 export default {
     data() {
         return {
-            oEditors:[], // oEditors는 스마트에디터용
+            oEditors: [], // oEditors는 스마트에디터용
         };
     },
     methods: {
-        selectList:function(){
-            this.$router.push({ path: '/adm/noticeSelectList.page'});
+        selectList: function () {
+            this.$router.push({ path: '/adm/noticeSelectList.page' });
         },
-        fileUpload: function() {
+        // 파일 업로드 커스텀을 위한 함수
+        openFileInput: function () {
+            this.$refs.fileInput.click(); // 파일 업로드 input 요소를 클릭
+        },
+        fileUpload: function () {
             this.fileList[this.filecount] = this.$refs.fileInput.files[0]
             this.filecount += 1
             console.log("file", this.fileList);
@@ -61,17 +65,17 @@
         // 스마트 에디터 적용
         const oEditors = this.oEditors;
         nhn.husky.EZCreator.createInIFrame({
-        oAppRef: oEditors,
-        elPlaceHolder: "smart",
-        sSkinURI: "/client/smarteditor2-2.8.2.3/SmartEditor2Skin.html",
-        htParams: {
-            bUseToolbar : true,				// 툴바 사용 여부 (true:사용/ false:사용하지 않음)
-            bSkipXssFilter : true,
-            bUseVerticalResizer: true,	
-            bUseModeChanger: true	
-        },
-        fCreator: "createSEditor2"
-        }); 
+            oAppRef: oEditors,
+            elPlaceHolder: "smart",
+            sSkinURI: "/client/smarteditor2-2.8.2.3/SmartEditor2Skin.html",
+            htParams: {
+                bUseToolbar: true,				// 툴바 사용 여부 (true:사용/ false:사용하지 않음)
+                bSkipXssFilter: true,
+                bUseVerticalResizer: true,
+                bUseModeChanger: true
+            },
+            fCreator: "createSEditor2"
+        });
     }
 };
 </script>
@@ -88,12 +92,12 @@
     border-bottom: 3px solid #ddd;
 }
 
-textarea{
+textarea {
     width: 100%;
     height: 450px;
 }
 
-.dark-gray-btn{
+.dark-gray-btn {
     margin-right: 5px;
 }
 </style>
client/views/pages/admin/technology/TechInsert.vue
--- client/views/pages/admin/technology/TechInsert.vue
+++ client/views/pages/admin/technology/TechInsert.vue
@@ -19,15 +19,15 @@
                             <td>
                                 <div class="flex-start">
                                     <div>
-                                        <input type="radio" name="category" id="api"  style="display:none" checked>
+                                        <input type="radio" name="category" id="api" style="display:none" checked>
                                         <label for="api">API</label>
                                     </div>
                                     <div>
-                                        <input type="radio" name="category" id="tech"  style="display:none">
+                                        <input type="radio" name="category" id="tech" style="display:none">
                                         <label for="tech">기술리포트</label>
                                     </div>
                                     <div>
-                                        <input type="radio" name="category" id="issue"  style="display:none">
+                                        <input type="radio" name="category" id="issue" style="display:none">
                                         <label for="issue">이슈리포트</label>
                                     </div>
                                     <div>
@@ -40,6 +40,17 @@
                         <tr>
                             <th>내용</th>
                             <td><textarea name="smart" id="smart" style="width:100%"></textarea></td>
+                        </tr>
+                        <tr>
+                            <th>첨부파일</th>
+                            <td>
+                                <div class="btn-upload" @click="openFileInput">파일 업로드하기</div>
+                                <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>
@@ -57,12 +68,30 @@
 export default {
     data() {
         return {
-            oEditors:[], // oEditors는 스마트에디터용
+            oEditors: [], // oEditors는 스마트에디터용
         };
     },
     methods: {
-        selectList:function(){
-            this.$router.push({ path: '/adm/techSelectList.page'});
+        selectList: function () {
+            this.$router.push({ path: '/adm/techSelectList.page' });
+        },
+
+        // 파일 업로드 커스텀을 위한 함수
+        openFileInput: function () {
+            this.$refs.fileInput.click(); // 파일 업로드 input 요소를 클릭
+        },
+        //파일업로드
+        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;
         },
     },
     watch: {},
@@ -72,17 +101,17 @@
         // 스마트 에디터 적용
         const oEditors = this.oEditors;
         nhn.husky.EZCreator.createInIFrame({
-        oAppRef: oEditors,
-        elPlaceHolder: "smart",
-        sSkinURI: "/client/smarteditor2-2.8.2.3/SmartEditor2Skin.html",
-        htParams: {
-            bUseToolbar : true,				// 툴바 사용 여부 (true:사용/ false:사용하지 않음)
-            bSkipXssFilter : true,
-            bUseVerticalResizer: true,	
-            bUseModeChanger: true	
-        },
-        fCreator: "createSEditor2"
-        }); 
+            oAppRef: oEditors,
+            elPlaceHolder: "smart",
+            sSkinURI: "/client/smarteditor2-2.8.2.3/SmartEditor2Skin.html",
+            htParams: {
+                bUseToolbar: true,				// 툴바 사용 여부 (true:사용/ false:사용하지 않음)
+                bSkipXssFilter: true,
+                bUseVerticalResizer: true,
+                bUseModeChanger: true
+            },
+            fCreator: "createSEditor2"
+        });
     }
 };
 </script>
@@ -99,15 +128,16 @@
     border-bottom: 3px solid #ddd;
 }
 
-textarea{
+textarea {
     width: 100%;
     height: 450px;
 }
 
-.dark-gray-btn{
+.dark-gray-btn {
     margin-right: 5px;
 }
-label{
+
+label {
     border: 1px solid #535353;
     color: #535353;
     background-color: #fff;
@@ -115,7 +145,8 @@
     border-radius: 3px;
     margin-right: 10px;
 }
-input:checked+label{
+
+input:checked+label {
     background: #535353;
     color: #fff;
 
client/views/pages/admin/user/UserSelectList.vue
--- client/views/pages/admin/user/UserSelectList.vue
+++ client/views/pages/admin/user/UserSelectList.vue
@@ -93,26 +93,25 @@
                 <div class="modal-title">
                     <h2>관리자 등록</h2>
                 </div>
-                <div v-show="modalType == 'userInsert'" class="modal-content-monthly ">
-                    <div>
-                        <input type="text" placeholder="ID" v-model="mngr.mngr_id" />
-                        <button type="button" class="idchk green-btn" @click="idChcek">중복확인</button>
+                <div v-show="modalType == 'userInsert'" class="modal-content-monthly">
+                    <div class="flex">
+                        <input type="text" placeholder="ID" v-model="mngr.mngr_id" class="id-input"/>
+                        <button type="button" class="idchk blue-btn" @click="idChcek">중복확인</button>
                     </div>
                     <div><input type="password" name="pw" id="pw" placeholder="password" v-model="mngr.mngr_pw"
                             @change="passwordSyncCheck()" /></div>
                     <div>
                         <input type="password" name="pwCk" id="pwCk" placeholder="password 확인" v-model="passwordCheck"
                             @change="passwordSyncCheck()" />
-                        <div v-if="this.passwordCheckFlag" style="color:chartreuse">비밀번호 일치</div>
-                        <div v-else style="color:red">비밀번호 불일치</div>
+                        <div v-if="this.passwordCheckFlag" style="color:rgb(0, 198, 60); display:block" class="warning">비밀번호 일치</div>
+                        <div v-else style="color:red; display:block" class="warning">비밀번호 불일치</div>
                     </div>
                     <div><input type="text" placeholder="이름" v-model="mngr.mngr_nm" /></div>
                     <div class="flex">
-                        <span>이메일 : </span>
-                        <input type="text" v-model="email_id">
-                        <div>&nbsp; @ &nbsp;</div>
-                        <input class="m-r" type="text" v-model="email_domain" :disabled="email_disabled === true">
-                        <select @change="emailValue($event.target.value)">
+                        <input type="text" v-model="email_id" placeholder="email">
+                        <div class="at">@</div>
+                        <input class="mail-input" type="text" v-model="email_domain" :disabled="email_disabled === true">
+                        <select @change="emailValue($event.target.value)" class="mail-select">
                             <option selected disabled>선택하세요</option>
                             <option value="naver.com">naver.com</option>
                             <option value="gmail.com">gmail.com</option>
@@ -457,6 +456,29 @@
     width: 100%;
     height: 100%;
     padding: 15px;
-
 }
+
+.modal-content-monthly > div{
+    margin-bottom: 10px;
+}
+
+.id-input{
+    width: 79%;
+    margin-right: 1%;
+}
+
+.at{
+    padding: 0 10px;
+    font-size: 1.4rem;
+}
+
+.mail-input{
+    margin-right: 10px;
+}
+
+.warning{
+    padding: 5px;
+    display: none;
+}
+
 </style>
Add a comment
List