yjryu / KERIS star
Stormen123 2023-12-01
231201 김성훈 교육과정표준체계 조회 로그 추가
@83662a77c114a7edc19723d034ee60ba60fe0304
client/views/layout/Menu.vue
--- client/views/layout/Menu.vue
+++ client/views/layout/Menu.vue
@@ -38,7 +38,7 @@
                         @mouseover="menuItem.isHovered = true" @mouseout="menuItem.isHovered = false">
                         <router-link v-if="shouldRenderMenuItem(menuItem) && menuItem.text !== '교육과정 표준체계'" :to="menuItem.link">{{ menuItem.text
                         }}</router-link>
-                        <a v-else-if="menuItem.text === '교육과정 표준체계'" :href="menuItem.link" target="_blank">{{ menuItem.text }}</a>
+                        <a v-else-if="menuItem.text === '교육과정 표준체계'" target="_blank" @click="postSelectOnePage(menuItem)">{{ menuItem.text }}</a>
                         <ul class="sub-menu sub-menu-1">
                             <li v-for="subMenuItem in menuItem.subMenu" :key="subMenuItem.text" @click="navClose(menuItem)">
                                 <router-link v-if="shouldRenderSubMenuItem(subMenuItem)" :to="subMenuItem.link">{{ subMenuItem.text }}</router-link>
@@ -53,6 +53,8 @@
 
 <script>
 import { useStore } from "vuex";
+import axios from 'axios';
+
 export default {
     data() {
         return {
@@ -98,6 +100,9 @@
                 {
                     text:"교육과정 표준체계",
                     link: "http://211.253.31.234/",
+                    post_id: "POST_0000000098",
+                    bbs_id: "3",
+                    ctgry_nm: "service"
                 },
                 {
                     text: "마이페이지",
@@ -142,7 +147,33 @@
             }
             // 다른 서브 메뉴 항목은 항상 표시
             return true;
-        }
+        },
+
+        //게시글 상세조회 페이지로 이동
+        postSelectOnePage: function (item) {
+            const vm = this;
+
+            axios({
+                url: '/post/postViewCount.json',
+                method: 'post',
+                hearder: {
+                    'Content-Type': "application/json; charset=UTF-8",
+                },
+                data: { 'post_id': item.post_id, 'bbs_id': item.bbs_id }
+            }).then(function (response) {
+                axios({
+                    url: '/statistics/postLogInsert.json',
+                    method: 'post',
+                    hearder: {
+                        'Content-Type': "application/json; charset=UTF-8",
+                    },
+                    data: item
+                }).then(function (response) {
+                    window.location.href = item.link;
+                })
+               
+            })
+        },
     },
     watch: {
 
client/views/pages/admin/statistics/MatchingStatistics.vue
--- client/views/pages/admin/statistics/MatchingStatistics.vue
+++ client/views/pages/admin/statistics/MatchingStatistics.vue
@@ -37,7 +37,7 @@
                         </div>
                         <div class="table-zone">
                             <div class="btn-wrap">
-                                <button class="blue-border-bnt">Excel 다운로드</button>
+                                <button class="blue-border-bnt" @click="statisticsLogExcel()">Excel 다운로드</button>
                             </div>
                             <table class="statistics-table">
                                 <colgroup>
@@ -134,11 +134,11 @@
                         </div>
                         <div class="table-zone">
                             <div class="flex middle-zone">
-                                <select name="" id="">
+                                <select name="" id="" v-model="company_id" @change="detailTypeCheck()">
                                     <option v-for="(item, idx) in companyList" :key="idx" :value=item.company_id>{{
                                         item.company_nm }}</option>
                                 </select>
-                                <button class="blue-border-bnt">Excel 다운로드</button>
+                                <button class="blue-border-bnt" @click="detailLogExcel()">Excel 다운로드</button>
                             </div>
                             <table class="statistics-table">
                                 <colgroup>
@@ -160,10 +160,10 @@
                                 </thead>
                                 <tbody>
                                     <tr>
-                                        <td>{{ item.date }}</td>
-                                        <td>{{ item.total }}</td>
-                                        <td>{{ item.company }}</td>
-                                        <td>{{ item.common }}</td>
+                                        <td></td>
+                                        <td></td>
+                                        <td></td>
+                                        <td></td>
                                     </tr>
                                 </tbody>
                             </table>
@@ -214,11 +214,15 @@
             },
             // oneMonthLater: COMMON_UTIL.today(),
             yesterDay: COMMON_UTIL.yesterday(),
-            companyList: [],
+            
             companyStatisticsList: [],
             companySelectListCount: 0,
             totalCount: {},
+
+            company_id: null,
+            companyList: [],
             companyDetailStatistics: [],
+            detailTotalCount: {},
         };
     },
     methods: {
@@ -234,10 +238,10 @@
             console.log(clickedRadioName);
             if (clickedRadioName == "pickMatching1") {
                 this.selectedOption1 = option;
-                this.listDateCheck();
+                this.listTypeCheck();
             } else if (clickedRadioName == "pickMatching2") {
                 this.selectedOption2 = option;
-                this.detailDateCheck();
+                this.detailTypeCheck();
             }
         },
 
@@ -284,6 +288,8 @@
         /** 선택기업 픽 세부통계 */
         companyDetailPickStatistics: function () {
             const vm = this;
+            vm.listSearch.company_id = vm.company_id;
+
             axios({
                 url: '/statistics/companyDetailPickStatistics.json',
                 method: 'post',
@@ -292,8 +298,8 @@
                 },
                 data: vm.listSearch
             }).then(function (response) {
-                vm.companyStatisticsList = response.data.companyPickStatistics;
-                vm.companySelectListCount = response.data.companySelectListCount;
+                vm.companyDetailStatistics = response.data.companyDetailStatistics;
+                vm.detailTotalCount = response.data.data.totalCount;
             }).catch(function (error) {
                 console.log("error - ", error)
                 alert("PICK 통계 조회 오류, 관리자에게 문의하세요.");
@@ -311,8 +317,8 @@
                 },
                 data: vm.listSearch
             }).then(function (response) {
-                vm.companyStatisticsList = response.data.companyMatchingStatistics;
-                vm.companySelectListCount = response.data.companySelectListCount;
+                vm.companyDetailStatistics = response.data.companyMatchingStatistics;
+                vm.detailTotalCount = response.data.data.totalCount;
             }).catch(function (error) {
                 console.log("error - ", error)
                 alert("MATCHING 통계 조회 오류, 관리자에게 문의하세요.");
@@ -376,11 +382,53 @@
                 data: vm.listSearch
             }).then(function (response) {
                 vm.companyList = response.data
+                vm.company_id = vm.companyList[0].company_id;
+                vm.companyDetailPickStatistics();
             }).catch(function (error) {
                 console.log("error - ", error)
                 alert("기업 리스트 조회 오류, 관리자에게 문의하세요.");
             })
         },
+
+        /** 기업 별 pick 통계 엑셀 다운로드 */
+        statisticsLogExcel: function() {
+            const vm = this;
+
+            if(vm.companySelectListCount === 0) {
+                alert("데이터가 없어 EXCEL 다운로드를 실행할 수 없습니다.")
+                return
+            }
+
+            vm.listSearch.selectedOption1 = vm.selectedOption1;
+
+            axios({
+                url: "/statistics/pickStatisticsLogExcel.json",
+                method: "post",
+                herders: {
+                "Content-Type": "application/json; charset=UTF-8",
+                },
+                responseType: 'arraybuffer',
+                data: vm.listSearch,
+            })
+            .then(function (response) {
+                const url = window.URL.createObjectURL(new Blob([response.data], { type: response.headers["content-type"] }));
+                const link = document.createElement("a");
+                link.href = url;
+                let today = COMMON_UTIL.today();
+                if(vm.selectedOption1 == 'pick') {
+                    link.download = '[' + today + ']' + '기업별 pick 통계';
+                } else {
+                    link.download = '[' + today + ']' + '기업별 matching 통계';
+                }
+                
+                link.click();
+                window.URL.revokeObjectURL(url);
+            })
+                .catch(function (error) {
+                console.log("userAccessLogExcel - error : ", error);
+                alert("통계 Excel 다운로드 오류, 관리자에게 문의해주세요.");
+            });
+        },
     },
     watch: {
         // 'listSearch.startDate': function (newValue) {
client/views/pages/user/Data/Technology.vue
--- client/views/pages/user/Data/Technology.vue
+++ client/views/pages/user/Data/Technology.vue
@@ -211,7 +211,17 @@
                 },
                 data: { 'post_id': item.post_id, 'bbs_id': item.bbs_id }
             }).then(function (response) {
-                window.location.href = item.link_url;
+                axios({
+                    url: '/statistics/postLogInsert.json',
+                    method: 'post',
+                    hearder: {
+                        'Content-Type': "application/json; charset=UTF-8",
+                    },
+                    data: item
+                }).then(function (response) {
+                    window.location.href = item.link_url;
+                })
+                
             }).catch(function (error) {
                 alert("기술문서 상세보기 오류, 관리자에게 문의바랍니다.");
             })
Add a comment
List