yjryu / KERIS star
류윤주 류윤주 2023-11-28
231128 류윤주 쿠키 팝업
@fa063bbd555faef97525ef44d73295bd02dadfaa
client/views/pages/user/main/Main.vue
--- client/views/pages/user/main/Main.vue
+++ client/views/pages/user/main/Main.vue
@@ -300,23 +300,16 @@
 
 
         <div class="w1400">
-
             <div class="main-partner-logo">
                 <div class="main-partner-img lo1">
                 </div>
                 <div class="main-partner-img lo2">
-
                 </div>
                 <div class="main-partner-img lo3">
-
                 </div>
                 <div class="main-partner-img lo4">
-
-
                 </div>
                 <div class="main-partner-img lo5">
-
-
                 </div>
             </div>
 
@@ -326,7 +319,7 @@
 
 
 
-    <div class="main-popup" v-show="popupList.length > 0">
+    <div class="main-popup" v-if="showPopup">
         <div>
             <div class="main-popup-div">
                 <swiper :spaceBetween="30" :centeredSlides="true" :autoplay="{
@@ -337,15 +330,16 @@
 }" :navigation="false" :modules="modules" class="mySwiper">
 
                     <swiper-slide v-for="(item, index) in popupList" :key="index">
-                        <a :href="item.shortcuts_url" target="_blank">
+                        <a :href="item.shortcuts_url" target="_blank" v-if="shortcuts_yn === 'Y'">
                             <img :src="getFilePath(item.file_path, item.file_nm, item.file_extn_nm)" alt="">
                         </a>
+                        <img :src="getFilePath(item.file_path, item.file_nm, item.file_extn_nm)" alt="" v-else>
                     </swiper-slide>
 
                 </swiper>
             </div>
             <div class="main-popup-input" :class="{ active: doNotShow }">
-                <p @click="closeForDay">오늘 하루동안 열지 않기</p>
+                <p @click="hidePopup">24시간 동안 열지 않기</p>
                 <p @click="closeNow">닫기</p>
             </div>
         </div>
@@ -363,6 +357,7 @@
 import axios from 'axios';
 import COMMON_UTIL from '../../../../resources/js/commonUtil.js';
 import { useStore } from "vuex";
+import Cookies from 'js-cookie';
 
 export default {
     data() {
@@ -384,38 +379,32 @@
             noticeListForBanner: [],
             swiper: null,
             store: useStore(),
-            popupList: []
+            popupList: [],
+            showPopup: true
         }
     },
     methods: {
-        // closeForDay: function () {
-        //     this.doNotShow = true;
-        //     const now = new Date();
-        //     localStorage.setItem('popupClosed', now);
-        //     this.doNotShow = true;
-        // },
+        // 메인 팝업 관련 메서드
         closeNow: function () {
-            this.popupList = [];
+            this.showPopup = false;
         },
-        // checkPopup: function () {
-        //     const popupClosedTime = localStorage.getItem('popupClosed');
-        //     if (popupClosedTime) {
-        //         const closedTime = new Date(popupClosedTime);
-        //         const now = new Date();
-        //         const diffTime = Math.abs(now - closedTime);
-        //         const diffHours = Math.ceil(diffTime / (1000 * 60 * 60));
-        //         if (diffHours < 24) {
-        //             return true;
-        //         }
-        //     }
-        //     return false;
-        // },
-
-        getFilePath: function (filePath, fileName,fileExt) {
+        getFilePath: function (filePath, fileName, fileExt) {
             return `http://localhost:8080${filePath}/${fileName}.${fileExt}`;
         },
 
+        checkPopupStatus() {
+            // 쿠키가 설정되어 있으면 팝업을 감춥니다.
+            if (Cookies.get('popupClosed')) {
+                this.showPopup = false;
+            }
+        },
+        hidePopup() {
+            // 'popupClosed' 쿠키를 1일(24시간) 동안 설정합니다.
+            Cookies.set('popupClosed', true, { expires: 1 });
+            this.showPopup = false;
+        },
 
+        // 페이지 준비중 alert
         showAlert: function () {
             alert('페이지 준비중입니다.');
         },
@@ -589,6 +578,7 @@
         this.noticeListForMain();
         this.noticeBannerListForMain();
         this.visitLogInsert();
+        this.checkPopupStatus();
     }
 }
 </script>
package-lock.json
--- package-lock.json
+++ package-lock.json
@@ -25,6 +25,7 @@
         "file-saver": "^2.0.5",
         "fs": "0.0.1-security",
         "git": "^0.1.5",
+        "js-cookie": "^3.0.5",
         "lodash": "^4.17.21",
         "new-line": "^1.1.1",
         "pg": "8.8.0",
@@ -3519,6 +3520,14 @@
       "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==",
       "peer": true
     },
+    "node_modules/js-cookie": {
+      "version": "3.0.5",
+      "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
+      "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
+      "engines": {
+        "node": ">=14"
+      }
+    },
     "node_modules/js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
package.json
--- package.json
+++ package.json
@@ -20,6 +20,7 @@
     "file-saver": "^2.0.5",
     "fs": "0.0.1-security",
     "git": "^0.1.5",
+    "js-cookie": "^3.0.5",
     "lodash": "^4.17.21",
     "new-line": "^1.1.1",
     "pg": "8.8.0",
Add a comment
List