yjryu / KERIS star
류윤주 류윤주 2023-11-29
231129 류윤주 관리자 기업홍보관 커밋
@aa792f79ebd7d7baed87ce5829ce22f44e8be206
client/resources/css/Main.css
--- client/resources/css/Main.css
+++ client/resources/css/Main.css
@@ -676,7 +676,7 @@
   font-weight: 700;
   color: rgb(6, 6, 6);
 }
-
+eObjectURL
 .matchingbox-text span {
   font-weight: 400;
 }
@@ -793,9 +793,9 @@
   border-bottom: 1px solid rgb(199, 199, 199);
 }
 
-.mat-sec2 div {
+/* .mat-sec2 div {
   padding: 2rem 0;
-}
+} */
 
 .mat-sec2-end {
   display: grid;
@@ -2349,9 +2349,9 @@
   grid-template-columns: 1fr !important;
 }
 
-.info-sec-summary div {
+/* .info-sec-summary div {
   grid-template-columns: 1fr;
-}
+} */
 
 .info-sec-summary textarea {
   height: 200px;
client/resources/css/common.css
--- client/resources/css/common.css
+++ client/resources/css/common.css
@@ -151,10 +151,6 @@
   /* padding: 10px; */
 }
 
-.viewer {
-  min-height: 388px;
-}
-
 .article-list {
   padding: 30px 0;
 }
@@ -417,6 +413,7 @@
   width: 100%;
 }
 .viewer{
+  padding: 1.5rem 0;
   text-align: left;
 }
 .viewer iframe {
client/resources/css/reset.css
--- client/resources/css/reset.css
+++ client/resources/css/reset.css
@@ -54,6 +54,7 @@
 a {
   color: #333;
   text-decoration: none;
+  cursor: pointer;
 }
 
 button {
client/views/pages/App.vue
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
@@ -242,7 +242,7 @@
                      this.isModalOpen = true;
                      next(false);
                   }
-                  next();
+                  next('/');
                }
             });
          }
client/views/pages/admin/networking/NetworkingSelectOne.vue
--- client/views/pages/admin/networking/NetworkingSelectOne.vue
+++ client/views/pages/admin/networking/NetworkingSelectOne.vue
@@ -16,17 +16,17 @@
                     <tbody>
                         <tr>
                             <td class="title-zone" colspan="2">
-                                <p class="post-title">타이틀 <span v-if="best === 'best'">(BEST 기업)</span></p>
+                                <p class="post-title">{{ company.company_nm }}</p>
                                 <div class="flex">
                                     <p class="write-info">
                                         <span><i class="fa fa-heart fa-lg" style="color: #d41515;"></i></span>
-                                        <span>100</span>
+                                        <span>{{ company.company_pick_cnt }}</span>
                                     </p>
                                     <p class="flex-end write-info">
-                                        <span class="writer">작성자</span>
-                                        <span>ㅏ아아아앙</span>
+                                        <!-- <span class="writer">{{ company }}</span>
+                                        <span>ㅏ아아아앙</span> -->
                                         <span class="view">조회수</span>
-                                        <span>후후후후후</span>
+                                        <span>{{ company.view_cnt }}</span>
                                     </p>
                                 </div>
 
@@ -34,32 +34,28 @@
                         </tr>
                         <tr>
                             <td colspan="2">
-                                <div id="viewer" ref="viewer" class="viewer"></div>
+                                <div id="viewer1" ref="viewer1" class="viewer"></div>
+                                <div id="viewer2" ref="viewer2" class="viewer"></div>
+                                <div id="viewer3" ref="viewer3" class="viewer"></div>
                             </td>
                         </tr>
                         <tr>
                             <th style="width: 10%;">회사소개서</th>
                             <td>
-                                <!-- <div v-if="fileList.length == 0">
-                                    <label>첨부된 파일이 없습니다.</label>
-                                </div> -->
-                                <!-- <ul v-else v-for="(item, idx) in fileList" :key="idx">
-                                    <li @click="downloadFile(item)">{{ item.real_file_nm
-                                    }}</li>
-                                </ul> -->
+                                <p @click="downloadFile(company)">{{ company.real_file_nm }}</p>
                             </td>
                         </tr>
                     </tbody>
                 </table>
-                <div class="article-list">
+                <!-- <div class="article-list">
                     <ul>
                         <li><span class="next">다음글</span><span></span></li>
                         <li><span class="prev">이전글</span><span></span></li>
                     </ul>
-                </div>
+                </div> -->
                 <div class="btn-wrap">
+                    <button class="dark-gray-btn" @click="postSelectListPage">목록</button>
                     <!-- <button class="red-btn" @click="postDelete()">삭제</button>
-                    <button class="dark-gray-btn" @click="postSelectListPage()">목록</button>
                     <button class="blue-btn" @click="postUpdatePage()">수정</button> -->
                 </div>
             </div>
@@ -67,22 +63,135 @@
     </div>
 </template>
 <script>
+import { useRoute } from 'vue-router';
+import axios from 'axios';
+import Viewer from '@toast-ui/editor/dist/toastui-editor-viewer';
+import '@toast-ui/editor/dist/toastui-editor.css';
+import '@toast-ui/editor/dist/i18n/ko-kr';
+import * as FileSaver from 'file-saver';
 
 
 export default {
 
     data() {
-        return {};
+        return {
+            company: {
+                company_id: null,
+                company_nm: null,
+                company_info: null,
+                company_point: null,
+                file_id: null,
+                user_id: null,
+                keyword: null,
+                company_pick_cnt: null,
+                company_technology: null,
+                company_service: null,
+                view_cnt: null,
+                file_path: null,
+                file_nm: null,
+                file_extn_nm: null,
+                real_file_nm: null,
+                pick_yn: null,
+            },
+            best: null,
+            userCompanyId: null,
+            route: useRoute(),
+        };
     },
     methods: {
-        selectList: function () {
-            this.$router.push({ path: '/adm/newsSelectList.page' });
+        companySelectOne: function () {
+            const vm = this;
+
+            vm.best = vm.route.query.best;
+
+            axios({
+                url: '/matching/companySelectOne.json',
+                method: 'post',
+                hearder: {
+                    'Content-Type': "application/json; charset=UTF-8",
+                },
+                data: { 'company_id': vm.route.query.company_id }
+            }).then(function (response) {
+                vm.company = response.data;
+                vm.userCompanyId = response.data.userCompanyId;
+            }).catch(function (error) {
+                console.log("error - ", error)
+                alert("기업 상세보기 조회 오류, 관리자에게 문의하세요.");
+            })
+        },
+
+        getViewer(data, viewerId) {
+            this.viewer = new Viewer({
+                el: this.$refs[viewerId],
+                initialEditType: 'wysiwyg',
+                previewStyle: 'vertical',
+                initialValue: data,
+                customHTMLRenderer: {
+                    htmlBlock: {
+                        iframe(node) {
+                            return [
+                                { type: 'openTag', tagName: 'iframe', outerNewLine: true, attributes: node.attrs },
+                                { type: 'html', content: node.childrenHTML },
+                                { type: 'closeTag', tagName: 'iframe', outerNewLine: true },
+                            ];
+                        },
+                    }
+                },
+            });
+        },
+        downloadFile: function (item) {
+            const vm = this;
+            let path = item.file_path + '/' + item.file_nm + '.' + item.file_extn_nm;
+            console.log(path);
+            axios({
+                url: '/file/downloadFile.json',
+                method: 'post',
+                headers: {
+                    "Content-Type": "application/x-www-form-urlencoded",
+                },
+                responseType: 'blob',
+                data: `file_path=${encodeURIComponent(path)}`
+            }).then((response) => {
+                const blob = new Blob([response.data]);
+
+                const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
+
+                if (isSafari) {
+                    FileSaver.saveAs(blob, item.real_file_nm);
+                } else {
+                    const url = window.URL.createObjectURL(blob);
+                    const a = document.createElement('a');
+                    a.style.display = 'none';
+                    a.href = url;
+                    a.download = item.real_file_nm;
+                    document.body.appendChild(a);
+                    a.click();
+                    window.URL.revokeObjectURL(url);
+                }
+
+                this.$router.go(0);
+
+            }).catch(function (error) {
+                console.log('error - ', error)
+                alert('에러발생');
+            });
+        },
+        postSelectListPage: function () {
+            this.$router.push({ path: '/adm/networkingSelectList.page' });
+        },
+    },
+    watch: {
+        'company': function (nuwValue) {
+            console.log(nuwValue);
+            this.getViewer(nuwValue.company_info, 'viewer1');
+            this.getViewer(nuwValue.company_service, 'viewer2');
+            this.getViewer(nuwValue.company_technology, 'viewer3');
         }
     },
-    watch: {},
     computed: {},
     components: {},
     mounted() {
+        this.companySelectOne();
     }
 };
 </script>
client/views/pages/user/mypage/Info.vue
--- client/views/pages/user/mypage/Info.vue
+++ client/views/pages/user/mypage/Info.vue
@@ -111,10 +111,11 @@
                         </div>
                         <div>
                             <p class="info-th">첨부파일</p>
-                            <a style="font-size: 15px;" class="down-btn-1"
+                            <a @click="downloadFile(proFile)">{{ proFile.real_file_nm }}</a>
+                            <!-- <a style="font-size: 15px;" class="down-btn-1"
                                 :href="'http://localhost:8080' + proFile.file_path + '/' + proFile.file_nm + '.' + proFile.file_extn_nm" target='_blank' download>
                                 {{ proFile.real_file_nm }}
-                            </a>
+                            </a> -->
                         </div>
                         <div class="">
                             <p class="info-th info-keword-far">명함</p>
client/views/pages/user/networking/MatchingOne.vue
--- client/views/pages/user/networking/MatchingOne.vue
+++ client/views/pages/user/networking/MatchingOne.vue
@@ -43,24 +43,9 @@
                 <section class="mat-sec2">
                     <div class="info-sec-summary">
                         <sapn class="info-th"></sapn>
-                        <details>
-                            <summary @click="getViewer(0)">기업소개</summary>
-                            <div>
-                                <span id="viewer1" ref="viewer1" class="viewer"></span>
-                            </div>
-                        </details>
-                        <details>
-                            <summary @click="getViewer(1)">대표 기술 소개</summary>
-                            <div>
-                                <span id="viewer2" ref="viewer2" class="viewer"></span>
-                            </div>
-                        </details>
-                        <details>
-                            <summary @click="getViewer(2)">서비스 소개</summary>
-                            <div>
-                                <span id="viewer3" ref="viewer3" class="viewer"></span>
-                            </div>
-                        </details>
+                        <div id="viewer1" ref="viewer1" class="viewer"></div>
+                                <div id="viewer2" ref="viewer2" class="viewer"></div>
+                                <div id="viewer3" ref="viewer3" class="viewer"></div>
                     </div>
                     <div class="mat-sec2-end">
                         <p>
@@ -173,11 +158,9 @@
             })
         },
 
-        getViewer(idx) {
-            const vm = this;
-            let data = [vm.company.company_info, vm.company.company_technology, vm.company.company_service][idx];
+        getViewer(data, viewerId) {
             this.viewer = new Viewer({
-                el: this.$refs[`viewer${idx + 1}`],
+                el: this.$refs[viewerId],
                 initialEditType: 'wysiwyg',
                 previewStyle: 'vertical',
                 initialValue: data,
@@ -366,7 +349,12 @@
         },
     },
     watch: {
-
+        'company': function (nuwValue) {
+            console.log(nuwValue);
+            this.getViewer(nuwValue.company_info, 'viewer1');
+            this.getViewer(nuwValue.company_service, 'viewer2');
+            this.getViewer(nuwValue.company_technology, 'viewer3');
+        }
     },
     computed: {
 
@@ -374,9 +362,6 @@
     mounted() {
         console.log('Matching mounted');
         this.companySelectOne();
-        this.getViewer(0);
-        this.getViewer(1);
-        this.getViewer(2);
     }
 }
 </script>
Add a comment
List