DESKTOP-T61HUSC\user 5 ヶ月 前
コミット
bd3e9e4f01

+ 3 - 3
assets/img/ico_logout.svg

@@ -1,5 +1,5 @@
 <svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
-<path d="M13 25H9C8.46957 25 7.96086 24.7893 7.58579 24.4142C7.21071 24.0391 7 23.5304 7 23V9C7 8.46957 7.21071 7.96086 7.58579 7.58579C7.96086 7.21071 8.46957 7 9 7H13" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M20 21L25 16L20 11" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
-<path d="M25 16H13" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M13 25H9C8.46957 25 7.96086 24.7893 7.58579 24.4142C7.21071 24.0391 7 23.5304 7 23V9C7 8.46957 7.21071 7.96086 7.58579 7.58579C7.96086 7.21071 8.46957 7 9 7H13" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M20 21L25 16L20 11" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M25 16H13" stroke="black" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
 </svg>

ファイルの差分が大きいため隠しています
+ 6 - 0
assets/img/pf_sample.svg


+ 1 - 1
assets/scss/default.scss

@@ -37,7 +37,7 @@
 
     .main{
       padding:1.625rem;
-      width:calc(100% -  250px);     
+      width:calc(100%);     
 
       .data--list--wrap{
         width:100%;

+ 100 - 46
assets/scss/mode-w-m.scss

@@ -12,49 +12,97 @@
 // header
 .container {
   .new--header {
-    background: #0B318B;
+    gap: 20px;
+    background: #ffffff;
     /*height:calc(1vh * (90 / 10.8));*/
-    height: 3.75rem;
     display: flex;
     align-items: center;
+    flex-direction: column;
     flex-shrink: 0;
     position: relative;
-    padding: 0 1.88rem;
-    z-index: 2200;
-
-    .logo {
-      color: #FFFFFF;
-      font-size: 1.125rem;
-      font-weight: 700;
-      line-height: 100%;
-      flex-shrink: 0;
+    width: 340px;
+    padding: 20px;
+    z-index: 22;
+    .pro--wrap{
+      border: 1px solid #cccccc;
+      border-radius: 30px;
+      padding: 30px;
+      width: 100%;
+      height: 300px;
       display: flex;
+      flex-direction: column;
       align-items: center;
-      margin-right: 15.5rem;
-
-      .logo--img {
-        background-image: url(../img/logo_new.svg);
+      justify-content: center;
+      .pro--img{
+        width: 96px;
+        height: 96px;
+        border-radius: 50%;
+        background-position: center;
         background-repeat: no-repeat;
-        background-size: cover;
-        width: 2rem;
-        height: 2rem;
-        margin-right: 1rem;
-        display: inline-block;
+        background-size: 100%;
+        background-image: url(../img/pf_sample.svg);
+        margin-bottom: 20px;
       }
-
-      .dashboard{
-        color: #FFF500;
-        font-size: 0.9375rem;
-        font-weight: 700;
-        padding-left: 0.81rem;
-        margin-left: 0.81rem;
-        border-left: 1px solid #FFFFFF80;
+      .pro--id{
+        cursor: pointer;
+        position: relative;
+        font-size: 1rem;
+        font-weight: 500;
+        margin-bottom: 20px;
+        line-height: 1;
+        .ico{
+          font-style: normal;
+          transform: rotate(90deg);
+          display: inline-block;
+          &.on{
+            transform: rotate(270deg);
+          }
+        }
+        .id--box{
+          position: absolute;
+          right: -50%;
+          top: 100%;
+          display: flex;
+          padding: 20px;
+          flex-direction: column;
+          white-space: nowrap;
+          border-radius: 10px;
+          border: 1px solid #cccccc;
+          background-color: #fff;
+          button{
+            font-size: 0.8rem;
+            padding: 10px;
+          }
+          // .btn-logout {
+          //   width: 1.5rem;
+          //   height: 1.5rem;
+          //   background: url("../img/ico_logout.svg") no-repeat center / 100%;
+          // }
+        }
+      }
+      .pro--info{
+        padding: 10px 30px;
+        border-radius: 10px;
+        color: #ffffff;
+        font-weight: 500;
+        line-height: 1;
+        font-size: 0.8rem;
+        background-color: #9475EC;
+        pointer-events: none;
+        &.inf{
+          background-color: #F74F78;
+        }
       }
     }
 
     .gnb {
       z-index: 10;
-      height: 100%;
+      border: 1px solid #cccccc;
+      border-radius: 30px;
+      padding: 30px;
+      width: 100%;
+      height: calc(100% - 320px);
+
 
       &:hover {
         .gnb-bg {
@@ -72,29 +120,41 @@
 
       .depth1 {
         display: flex;
+        flex-direction: column;
         height: 100%;
 
         >li {
           position: relative;
-
-          &.active {
-            >button {
-              background: #ffffff;
-              color: #0b318b;
-              font-weight: 700;
-            }
-          }
-
           >button {
             /* width: calc(1vw * (180 / 19.2)); */
             /* height:calc(1vh * (90 / 10.8)); */
             /* min-height:90px; */
-            width: 8.75rem;
+            padding-left: 2rem;
+            width: 100%;
+            text-align: left;
             height: 3.75rem;
             display: inline-block;
-            color: #fff;
+            color: #000000;
             font-size: 1rem;
             font-weight: 600;
+            &:hover{
+              background-color: #f2f7ff;
+            }
+            &.actv{
+              &::before{
+                content: '';
+                position: absolute;
+                left: -0px;
+                top: calc(50% - 0.75rem);
+                background-size: 100%;
+                background-position: center;
+                background-repeat: no-repeat;
+                background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M16.3818 5C17.1394 5 17.8321 5.42793 18.1709 6.10547L19.7754 9.31543L23 11.4648V16C23 17.1046 22.1046 18 21 18H19.8262C19.4141 19.1647 18.3059 20 17 20C15.6941 20 14.5859 19.1647 14.1738 18H9.82617C9.41406 19.1647 8.30585 20 7 20C5.69415 20 4.58594 19.1647 4.17383 18H3C1.89543 18 1 17.1046 1 16V7C1 5.89543 1.89543 5 3 5H16.3818ZM7 16C6.44772 16 6 16.4477 6 17C6 17.5523 6.44772 18 7 18C7.55228 18 8 17.5523 8 17C8 16.4477 7.55228 16 7 16ZM17 16C16.4477 16 16 16.4477 16 17C16 17.5523 16.4477 18 17 18C17.5523 18 18 17.5523 18 17C18 16.4477 17.5523 16 17 16ZM3 16H4.17383C4.58594 14.8353 5.69415 14 7 14C8.30585 14 9.41406 14.8353 9.82617 16H14.1738C14.5859 14.8353 15.6941 14 17 14C18.3059 14 19.4141 14.8353 19.8262 16H21V12.5352L18.2246 10.6846L16.3818 7H3V16Z' fill='black'/%3E%3C/svg%3E");
+                width: 1.5rem;
+                height: 1.5rem;
+              }
+
+            }
           }
 
           .depth2 {
@@ -600,12 +660,6 @@
         font-weight: 700;
         cursor: pointer;
       }
-
-      .btn-logout {
-        width: 2rem;
-        height: 2rem;
-        background: url("../img/ico_logout.svg") no-repeat center / 100%;
-      }
     }
   }
 }

+ 1 - 2
assets/scss/style.scss

@@ -2,8 +2,6 @@
   height: 100%;
   width: 100%;
   display: flex;
-  flex-direction: column;
-
   .header {
     background: #064F9E;
     height: calc(1vh * (90 / 10.8));
@@ -500,6 +498,7 @@
     position: relative;
     overflow-y: auto;    
     background: #fff;
+    width: calc(100% - 340px);
   }
 
   .footer {

+ 27 - 30
components/common/header.vue

@@ -1,40 +1,29 @@
 <template>
   <header class="new--header">
-    <h1 class="logo">
-      <!-- prettier-ignore  -->
-      SHOPDELI
-    </h1>
+    <div class="pro--wrap">
+      <div class="pro--img"></div>
+      <div class="pro--id" @click="proOn ? proOn = false : proOn = true ">
+        {{ userId }} <i class="ico" :class="[proOn ? 'on' : '']">></i>
+        <div class="id--box" v-show="proOn">
+          <button type="button" class="btn-profile" @click="myPage(userId)">
+            마이페이지
+          </button>
+          <button type="button" class="btn-logout" @click="fnLoguOut">로그아웃</button>
+        </div>
+      </div>
+      <div class="pro--info inf">
+        인플루언서
+      </div>
+    </div>
     <nav class="gnb">
       <ul class="depth1">
         <li v-for="(menu, index) in arrMenuInfo" :key="index">
-          <button @click="menuAction(menu.menuId, menu.menuName, menu.linkType)">
+          <button @click="menuAction(menu.menuId, menu.menuName, menu.linkType)" :class="{ actv: menu.linkType === $route.path }">
             {{ menu.menuName }}
           </button>
         </li>
       </ul>
-
-      <!-- 오버매뉴 사용시 사용 -->
-      <!-- <div class="gnb-bg"></div> -->
     </nav>
-    <!-- 가청, 화면테마, 언어, 프로필, 로그아웃 -->
-    <div class="util log--btn">
-      <span class="user-name">{{ userId }} ( {{ userName }} )</span>
-      <button type="button" class="btn-profile" @click="myPage(userId)">
-        <svg
-          xmlns="http://www.w3.org/2000/svg"
-          viewBox="0 0 512 512"
-          width="22"
-          height="22"
-          style="color: #fff; vertical-align: top"
-        >
-          <path
-            fill="currentColor"
-            d="M406.5 399.6C387.4 352.9 341.5 320 288 320l-64 0c-53.5 0-99.4 32.9-118.5 79.6C69.9 362.2 48 311.7 48 256C48 141.1 141.1 48 256 48s208 93.1 208 208c0 55.7-21.9 106.2-57.5 143.6zm-40.1 32.7C334.4 452.4 296.6 464 256 464s-78.4-11.6-110.5-31.7c7.3-36.7 39.7-64.3 78.5-64.3l64 0c38.8 0 71.2 27.6 78.5 64.3zM256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-272a40 40 0 1 1 0-80 40 40 0 1 1 0 80zm-88-40a88 88 0 1 0 176 0 88 88 0 1 0 -176 0z"
-          />
-        </svg>
-      </button>
-      <button type="button" class="btn-logout" @click="fnLoguOut"></button>
-    </div>
   </header>
 </template>
 
@@ -43,12 +32,14 @@
 |    전역
 ************************************************************************/
   const { $log } = useNuxtApp();
+  const proOn = ref(false);
   const pageId = "header";
   const arrMenuInfo = ref([]); // 메뉴정보
   const useStore = useDetailStore();
   const userName = ref("");
   const userCompanyName = ref("");
   const userId = ref("");
+  const route = useRoute();
   const router = useRouter();
   /************************************************************************
 |    함수 : 세팅
@@ -58,6 +49,12 @@
     arrMenuInfo.value = [];
 
     info.push(
+      {
+        menuId: "menu00",
+        parentMenuId: "menu00",
+        menuName: "주문 관리",
+        linkType: "/view/order",
+      },
       {
         menuId: "menu01",
         parentMenuId: "menu01",
@@ -74,19 +71,19 @@
         menuId: "menu03",
         parentMenuId: "menu03",
         menuName: "벤더 관리",
-        linkType: "/view/winner",
+        linkType: "/view/vendor",
       },
       {
         menuId: "menu04",
         parentMenuId: "menu04",
         menuName: "정산 관리",
-        linkType: "/",
+        linkType: "/view/settle",
       },
       {
         menuId: "menu05",
         parentMenuId: "menu05",
         menuName: "고객센터",
-        linkType: "/",
+        linkType: "/view/cs",
     }
     );
 

+ 0 - 69
layouts/default.vue

@@ -3,75 +3,6 @@
     <div class="container">
       <headerLayout />
       <div class="content">
-        <aside>
-          <h2 class="aside--main--title">{{ useDtStore.menuInfo.pageRtName }}</h2>
-          <div class="aside--list" v-show="useDtStore.menuInfo.menuId == 'menu01'">
-            <v-btn
-              class="custom-btn"
-              :class="{ actv: useDtStore.menuInfo.menuIndex == '0' }"
-              @click="subMenuActv(0, '/view/mng', 'menu01', '관리자 관리')"
-              >-관리자 리스트</v-btn
-            >
-            <v-btn
-              class="custom-btn"
-              :class="{ actv: useDtStore.menuInfo.menuIndex == '1' }"
-              @click="subMenuActv(1, '/view/mng/mngListDeleted', 'menu01', '관리자 관리')"
-              >-삭제 관리자</v-btn
-            >
-          </div>
-          <div class="aside--list" v-show="useDtStore.menuInfo.menuId === 'menu02'">
-            <v-btn
-              class="custom-btn"
-              :class="{ actv: useDtStore.menuInfo.menuIndex == '0' }"
-              @click="subMenuActv(0, '/view/event/evtList', 'menu02', '이벤트 관리')"
-              >-전체 이벤트</v-btn
-            >
-            <v-btn
-              class="custom-btn"
-              :class="{ actv: useDtStore.menuInfo.menuIndex == '1' }"
-              @click="
-                subMenuActv(1, '/view/event/evtListPending', 'menu02', '이벤트 관리')
-              "
-              >-대기중 이벤트</v-btn
-            >
-            <v-btn
-              class="custom-btn"
-              :class="{ actv: useDtStore.menuInfo.menuIndex == '2' }"
-              @click="
-                subMenuActv(2, '/view/event/evtListOngoing', 'menu02', '이벤트 관리')
-              "
-              >-진행중 이벤트</v-btn
-            >
-            <v-btn
-              class="custom-btn"
-              :class="{ actv: useDtStore.menuInfo.menuIndex == '3' }"
-              @click="
-                subMenuActv(3, '/view/event/evtListClosed', 'menu02', '이벤트 관리')
-              "
-              >-마감된 이벤트</v-btn
-            >
-            <!-- <v-btn
-              class="custom-btn"
-              :class="{ actv: subActv == '1' }"
-              @click="subMenuActv(1, '/view/media/pressKitlist', 'menu02', '이벤트 관리')"
-              >-보도자료</v-btn
-            > -->
-          </div>
-          <div class="aside--list" v-show="useDtStore.menuInfo.menuId == 'menu03'">
-            <v-btn
-              class="custom-btn"
-              :class="{ actv: useDtStore.menuInfo.menuIndex == '0' }"
-              @click="subMenuActv(0, '/view/winner', 'menu03', '당첨자 관리', 1)"
-              >-진행중 이벤트</v-btn
-            >
-            <v-btn
-              class="custom-btn"
-              :class="{ actv: useDtStore.menuInfo.menuIndex == '1' }"
-              @click="subMenuActv(1, '/view/winner', 'menu03', '당첨자 관리', 2)"
-              >-마감된 이벤트</v-btn
-            >
-          </div>
-        </aside>
         <NuxtPage class="main" />
       </div>
       <!-- <footerLayout /> -->

+ 1 - 1
nuxt.config.ts

@@ -9,7 +9,7 @@ export default defineNuxtConfig({
   app: {
     head: {
       titleTemplate: '',
-      title: 'Roulette',
+      title: 'ShopDeli',
       htmlAttrs: {
         lang: 'ko'
       },

+ 7 - 7
pages/index.vue

@@ -81,8 +81,8 @@
     <!-- footer -->
     <div class="login-footer">
       <div class="login--footer--l">
-        <p>COPYRIGHT@2018 룰렛 INC. ALL RIGHTS RESERVED.</p>
-        <p>마포구 합정동&nbsp; |&nbsp;TEL&nbsp;02-1234-5678</p>
+        <p>COPYRIGHT@2025 SHOPDELI INC. ALL RIGHTS RESERVED.</p>
+        <p>마포구 합정동</p>
       </div>
     </div>
   </div>
@@ -95,8 +95,8 @@
   //import PrivacyPop from "@/components/login/privacyPop.vue";
   //import AgrNPop from "@/components/terms/agreeNListPop.vue";
   import apiUrl from "@/composables/useApi";
-  import QRCode from "qrcode";
-  import { useI18n } from "vue-i18n";
+import QRCode from "qrcode";
+import { useI18n } from "vue-i18n";
 
   /************************
    *    layout setting
@@ -287,10 +287,10 @@
           useAuthStore().setAccessToken(res.data.accessToken);
           useAuthStore().setRefreshToken(res.data.refreshToken);
           localStorage.setItem("tempAccess", __ID);
-          useUtil.setPageMove("/view/event/evtList");
+          useUtil.setPageMove("/view/item");
           useStore.menuInfo.menuIndex = "0";
-          useStore.menuInfo.menuId = "menu02";
-          useStore.menuInfo.pageRtName = "이벤트 관리";
+          useStore.menuInfo.menuId = "menu01";
+          useStore.menuInfo.pageRtName = "제품 관리";
           useStore.menuInfo.pageStatus = null;
         }
       })

+ 0 - 0
pages/view/finance/financial.vue → pages/view/cs/financial.vue


+ 0 - 0
pages/view/finance/corporate.vue → pages/view/cs/index.vue


+ 0 - 0
pages/view/mng/index.vue → pages/view/deli/index.vue


+ 0 - 0
pages/view/mng/mngAdd.vue → pages/view/deli/mngAdd.vue


+ 0 - 0
pages/view/mng/mngListDeleted.vue → pages/view/deli/mngListDeleted.vue


+ 2 - 3
pages/view/item/evtList.vue → pages/view/item/index.vue

@@ -4,7 +4,6 @@
       <h2>{{ pageId }}</h2>
       <div class="bread--crumbs--wrap">
         <span>홈</span>
-        <span>이벤트 관리</span>
         <span>{{ pageId }}</span>
       </div>
     </div>
@@ -73,7 +72,7 @@
 
 <script setup>
   import { AgGridVue } from "ag-grid-vue3";
-  import pagination from "../components/common/pagination.vue";
+import pagination from "../components/common/pagination.vue";
   /************************************************************************
 |    레이아웃
 ************************************************************************/
@@ -104,7 +103,7 @@
   ]);
   const { $toast, $log, $dayjs, $eventBus } = useNuxtApp();
   const router = useRouter();
-  const pageId = ref("전체 이벤트");
+  const pageId = ref("제품 관리");
   let pageObj = ref({
     page: 1, // 현재 페이지
     pageMaxNumSize: 10, // 페이지 숫자 최대 표현 개수

+ 0 - 809
pages/view/media/newsAdd.vue.bak

@@ -1,809 +0,0 @@
-<template>
-  <div>
-    <div class="inner--headers">
-      <h2>{{ pageId }}</h2>
-      <div class="bread--crumbs--wrap">
-        <span>홈</span>
-        <span>미디어 관리</span>
-        <span>{{ pageId }}</span>
-      </div>
-    </div>
-
-    <div class="view-wrap mt--45">
-      <div class="view-box">
-        <div class="view-box-top">
-          <h3 v-if="pageType == 'I'">뉴스룸 등록</h3>
-          <h3 v-else>뉴스룸 수정</h3>
-        </div>
-        <div class="view-box-btm">
-          <div class="form-style1">
-            <table>
-              <colgroup>
-                <col style="width: 12.5rem" />
-                <col />
-              </colgroup>
-              <tbody>
-                <tr>
-                  <th>언어</th>
-                  <td>
-                    <v-radio-group
-                      v-model="form.formValue0"
-                      inline
-                      hide-details
-                      class="radio--group"
-                    >
-                      <v-radio label="Korean" value="KR"></v-radio>
-                      <v-radio label="English" value="EN"></v-radio>
-                      <v-radio label="Chinese" value="CN"></v-radio>
-                      <v-radio label="Japanese" value="JP"></v-radio>
-                    </v-radio-group>
-                  </td>
-                </tr>
-                <tr>
-                  <th>노출여부<span class="bul">*</span></th>
-                  <td>
-                    <v-radio-group
-                      class="radio--group"
-                      v-model="form.formValue2"
-                      inline
-                      hide-details
-                    >
-                      <v-radio label="노출" value="Y"></v-radio>
-                      <v-radio label="비노출" value="N"></v-radio>
-                    </v-radio-group>
-                  </td>
-                </tr>
-                <tr>
-                  <th>고정여부<span class="bul">*</span></th>
-                  <td>
-                    <v-radio-group
-                      class="radio--group"
-                      v-model="form.formValue3"
-                      inline
-                      hide-details
-                    >
-                      <v-radio label="고정 " value="Y"></v-radio>
-                      <v-radio label="비고정" value="N"></v-radio>
-                    </v-radio-group>
-                  </td>
-                </tr>
-                <tr>
-                  <th>제목<span class="bul">*</span></th>
-                  <td>
-                    <v-text-field
-                      v-model="form.formValue1"
-                      class="custom-input mini"
-                      placeholder="제목을 입력해주세요."
-                      :rules="[useValid.required('제목')]"
-                    ></v-text-field>
-                  </td>
-                </tr>
-                <tr>
-                  <th>해시태그<span class="bul">*</span></th>
-                  <td>
-                    <v-text-field
-                      v-model="form.formValue7"
-                      class="custom-input mini"
-                      placeholder="해시태그를 입력해주세요. 예) 태그, 태그 형태로 여러개 입력시 ,를 이용하여 입력해주세요"
-                      :rules="[useValid.required('제목')]"
-                    ></v-text-field>
-                  </td>
-                </tr>
-
-                <tr>
-                  <th>썸네일 이미지<span class="bul">*</span></th>
-                  <td>
-                    <div class="equip--image--wrap">
-                      <!--이미지가 없을 때-->
-                      <div class="equip--image" v-show="!form.formValue4">
-                        <img src="/assets/img/ic_no_img.svg" />
-                      </div>
-                      <!--이미지 첨부했을 때-->
-                      <div class="equip--image" v-show="form.formValue4">
-                        <CoolLightBox
-                          v-if="items.length > 0"
-                          :items="items"
-                          :index="index"
-                          @close="index = null"
-                        />
-
-                        <div class="images-wrapper">
-                          <div
-                            class="image"
-                            :key="imageIndex"
-                            @click="index = imageIndex"
-                          >
-                            <img id="preview_image" :src="imgTemp" />
-                          </div>
-                        </div>
-                      </div>
-                      <div class="equip--image--select">
-                        <div class="form--group">
-                          <label
-                            for="fileUpload_pic"
-                            class="file--btn"
-                            @click="fnPicFileUploadOpen()"
-                            >파일 선택</label
-                          >
-                          <v-file-input
-                            v-model="form.formValue4"
-                            id="fileUpload_pic"
-                            ref="fileupload_pic"
-                            accept=".jpg, .jpeg, .png, .gif"
-                            variant="plain"
-                            hide-details
-                            placeholder="선택된 파일 없음"
-                            prepend-icon=""
-                            class="custom-input"
-                            style="max-width: 400px"
-                            height="33px"
-                            :clearable="false"
-                            @change="fnUploadPicFileCheck()"
-                          >
-                            <template #append>
-                              <div class="v-input__icon v-input__icon--clear">
-                                <button
-                                  @click="clearFile"
-                                  type="button"
-                                  aria-label="clear icon"
-                                  tabindex="-1"
-                                  class="v-icon notranslate v-icon--link mdi mdi-close"
-                                ></button>
-                              </div>
-                            </template>
-                          </v-file-input>
-                        </div>
-                        <p class="equip--image--desc">
-                          (권장 이미지 : 1024 x 768 / gif, jpg, jpeg, png)
-                        </p>
-                      </div>
-                      <div class="div_error_text">{{ objProc.validErrorMessage }}</div>
-                    </div>
-                  </td>
-                </tr>
-                <tr>
-                  <th>내용<span class="bul">*</span></th>
-                  <td>
-                    <vue-editor
-                      ref="quillEditor"
-                      v-model="form.formValue5"
-                      :options="editorOptions"
-                    ></vue-editor>
-                  </td>
-                </tr>
-                <tr>
-                  <th>첨부 파일</th>
-                  <td>
-                    <div
-                      class="form--group--inner"
-                      v-if="pageType == 'U' && uploadFiles[0].file_name"
-                    >
-                      <div @click="fnFileDownload(uploadFiles[0])" class="text--box">
-                        {{ uploadFiles[0].ogn_name }}
-                      </div>
-                      <!-- <v-btn
-                        elevation="0"
-                        class="list--dell--btn"
-                        width="84px"
-                        height="40px"
-                        @click="fnFileDeleteInfo(uploadFiles[0].file_name)"
-                        >삭제하기</v-btn
-                      > -->
-                    </div>
-                    <div class="form--group flex--type max--w320">
-                      <v-file-input
-                        v-model="form.formValue6"
-                        id="fileupload"
-                        ref="fileupload"
-                        accept=".jpg, .jpeg, .png, .zip, .pdf, .ppt, .xls, .pptx, .xlsx, .hwp, .doc, .docx"
-                        placeholder=""
-                        class="custom-input mini"
-                        prepend-icon=""
-                        label=""
-                        variant="outlined"
-                        hide-details
-                        @change="fnUploadFileCheck()"
-                      ></v-file-input>
-                      <v-btn class="file--btn" elevation="0" @click="fnFileUploadOpen()"
-                        >첨부하기</v-btn
-                      >
-                    </div>
-                  </td>
-                </tr>
-              </tbody>
-            </table>
-          </div>
-        </div>
-      </div>
-
-      <div class="view-btm-btn">
-        <div class="btn-l">
-          <v-btn class="custom-btn btn-list" @click="listLocated"
-            ><i class="ico"></i>목록</v-btn
-          >
-          <v-btn v-show="pageType == 'U'" class="custom-btn btn-del" @click="fnDelEvt"
-            ><i class="ico"></i>삭제</v-btn
-          >
-        </div>
-        <div class="btn-r">
-          <v-btn v-if="pageType == 'I'" class="custom-btn btn-blue2" @click="fnBtnEvt"
-            ><i class="ico"></i>저장</v-btn
-          >
-          <v-btn v-else class="custom-btn btn-blue2" @click="fnBtnEvt"
-            ><i class="ico"></i>수정</v-btn
-          >
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import useAxios from "@/composables/useAxios";
-import useUtil from "@/composables/useUtil";
-import useErrorHandler from "@/composables/useErrorHandler";
-
-/************************************************************************
-|    레이아웃
-************************************************************************/
-definePageMeta({
-  layout: "default",
-});
-
-/************************************************************************
-|    스토어
- ************************************************************************/
-const useDtStore = useDetailStore();
-
-/************************************************************************
-|    전역
- ************************************************************************/
-const { $toast, $log, $dayjs, $eventBus } = useNuxtApp();
-const router = useRouter();
-const pageId = ref("NEWS ROOM");
-
-const index = ref(null);
-const imageIndex = ref(0);
-const items = ref([]);
-const quillEditor = ref(null);
-const imgTemp = ref(null);
-const rowId = ref();
-const form = ref({
-  formValue0: "KR",
-  formValue1: "",
-  formValue2: "Y",
-  formValue3: "N",
-  formValue4: null,
-  formValue5: "",
-  formValue6: null,
-  formValue7: null,
-  fileResponse: null,
-});
-const apiUrl = ref("");
-
-apiUrl.value = import.meta.env.VITE_APP_API_URL;
-
-const fileUpload = ref(null);
-const uploadFiles = ref([
-  {
-    file_name: "",
-    ogn_name: "",
-  },
-]);
-
-const uploadPicFiles = ref([
-  {
-    file_name: "",
-    ogn_name: "-",
-  },
-]);
-
-const deleteFile = ref("");
-const objProc = ref({
-  validErrorMessage: "",
-});
-
-const pageType = ref("");
-
-/************************************************************************
-|    함수(METHODS)
-************************************************************************/
-
-const listLocated = () => {
-  router.push({
-    path: "/view/media/newsList",
-  });
-};
-
-const editorOptions = ref({
-  modules: {
-    toolbar: {
-      handlers: {
-        image: () => {
-          // DOM 요소로 input[type="file"]을 생성하여 이미지 파일을 선택하게 한다.
-          const input = document.createElement("input");
-          input.setAttribute("type", "file");
-          input.setAttribute("accept", "image/*");
-          input.click(); // 파일 선택 창 열기
-
-          input.onchange = async () => {
-            const file = input.files[0];
-            if (file) {
-              const formDataEdt = new FormData();
-              formDataEdt.append("picObj", file);
-
-              try {
-                // const response = await this.$api.post("/file/upload", formDataEdt, {
-                //   headers: { "Content-Type": "multipart/form-data" },
-                // }); // 서버에 이미지 업로드
-                const response = await useAxios()
-                  .post("/pic/upload", formDataEdt, {
-                    headers: { "Content-Type": "multipart/form-data" },
-                  })
-                  .then((res) => {
-                    const quill = quillEditor.value.quill;
-                    let range = quill.getSelection(); // 현재 커서 위치 가져오기
-
-                    const filePath = res.data.ogn_name.path.replace(/.*\/files\//, "");
-                    const fileName = res.data.ogn_name.file_name;
-
-                    quill.insertEmbed(
-                      range.index,
-                      "image",
-                      apiUrl.value + "/images/" + filePath + "/" + fileName
-                    );
-                    quill.setSelection(range.index + 1, 0);
-                  })
-                  .catch((error) => {
-                    if (error.status == 500) {
-                      let param = {
-                        id: pageId,
-                        title: "공고사항",
-                        content: "10mb 이상은 업로드가 불가합니다.",
-                        yes: {
-                          text: "확인",
-                          isProc: false,
-                        },
-                        no: {
-                          text: "취소",
-                          isProc: false,
-                        },
-                      };
-                      $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-                    }
-                  })
-                  .finally(() => {
-                    //$log.debug("[equipMgmtReg][fnGetTenantList][finished]");
-                    //objSlt.value.tenantNameList = _cloneDeep(temp);
-                  });
-              } catch (error) {
-                console.error("Image upload failed:", error);
-              }
-            }
-          };
-        },
-      },
-    },
-  },
-});
-
-/**
- * 첨부파일 다운로드
- */
-const fnFileDownload = (objFile) => {
-  let reqData = { file_name: objFile.file_name };
-  useAxios()
-    .post("/file/download", reqData, { responseType: "blob" })
-    .then((res) => {
-      const contentType = res.headers["content-type"] || "application/octet-stream"; // 기본값
-
-      const blob = new Blob([res.data], { type: contentType });
-      let fileUrl = window.URL.createObjectURL(blob);
-      let link = document.createElement("a");
-      link.href = fileUrl;
-      link.style.display = "none";
-      console.log(objFile.ogn_name);
-      link.download = objFile.ogn_name;
-      document.body.appendChild(link);
-      link.click();
-      link.remove();
-      window.URL.revokeObjectURL(fileUrl);
-    })
-    .catch((error) => {})
-    .finally(() => {});
-};
-
-const fnPicFileUploadOpen = () => {
-  let fileUpload = document.getElementById("fileupload_pic");
-  if (fileUpload != null) {
-    fileUpload.click();
-  }
-};
-
-const fnFileUploadOpen = () => {
-  let fileUpload = document.getElementById("fileupload");
-  if (fileUpload != null) {
-    fileUpload.click();
-  }
-};
-/**
- * 첨부 파일 등록
- */
-const fnUploadFileCheck = () => {
-  if (form.value.formValue6) {
-    // 10Mb 이상은 업로드 불가
-    if (form.value.formValue6.size > 10 * 1024 * 1024) {
-      fnOpenCommPop("10mb 이상은 업로드가 불가합니다.");
-      form.value.formValue6 = null;
-      return;
-    }
-    // 이미지 파일 형식 체크
-    let extension = form.value.formValue6.name.split(".").pop().toLowerCase();
-    if (
-      extension != "jpg" &&
-      extension != "jpeg" &&
-      extension != "png" &&
-      extension != "gif" &&
-      extension != "zip" &&
-      extension != "ppt" &&
-      extension != "pptx" &&
-      extension != "pdf" &&
-      extension != "xls" &&
-      extension != "xlsx" &&
-      extension != "hwp" &&
-      extension != "doc" &&
-      extension != "docx"
-    ) {
-      fnOpenCommPop("파일 형식 또는 확장자가 올바르지 않습니다.");
-      form.value.formValue6 = null;
-      return;
-    }
-  }
-};
-/**
- * 이미지 다운로드
- */
-const fnPicFileDownload = (objFile) => {
-  let local = this;
-  let reqData = { file_name: objFile.file_name };
-
-  useAxios()
-    .post("/picInfo/download", reqData)
-    .then((res) => {
-      let reader = new FileReader();
-      reader.readAsDataURL(res.data);
-      reader.onloadend = function () {
-        // File 객체 생성
-        let blob = new Blob([res.data]);
-        let file = new File([blob], objFile.ogn_name);
-        local.form.formValue4 = file;
-
-        // 화면 랜더링
-        local.items[0] = reader.result;
-        console.log(reader.result);
-
-        $("#preview_image").attr("src", reader.result);
-      };
-    })
-    .catch((err) => {
-      this.$log.debug("[unitEquipmentAdd][fnPicFileDownload][error]");
-    })
-    .finally(() => {
-      this.$log.debug("[unitEquipmentAdd][fnPicFileDownload][finally]");
-    });
-};
-const fnUploadPicFileCheck = () => {
-  if (form.value.formValue4) {
-    // 10Mb 이상은 업로드 불가
-    if (form.value.formValue4.size > 10 * 1024 * 1024) {
-      fnOpenCommPop("10mb 이상은 업로드가 불가합니다.");
-      form.value.formValue4 = null;
-      return;
-    }
-    // 이미지 파일 형식 체크
-    let extension = form.value.formValue4.name.split(".").pop().toLowerCase();
-    if (
-      extension != "jpg" &&
-      extension != "jpeg" &&
-      extension != "png" &&
-      extension != "gif"
-    ) {
-      fnOpenCommPop("파일 형식 또는 확장자가 올바르지 않습니다.");
-      form.value.formValue4 = null;
-      return;
-    }
-
-    objProc.validErrorMessage = "";
-
-    // 이미지 미리보기
-    let previewImage = new Image();
-    let tempImageUrl = window.URL.createObjectURL(form.value.formValue4);
-
-    console.log(tempImageUrl);
-
-    previewImage.src = tempImageUrl;
-    items.value[0] = tempImageUrl;
-    imgTemp.value = tempImageUrl;
-  }
-};
-const clearFile = () => {
-  form.value.formValue4 = null;
-};
-
-/*======================================================================
-|    작성 시퀀스
-| 1. 작성 컨펌
-| 2. 버튼 체크
-| 3. 등록시 -> 등록 API 호출
-======================================================================*/
-
-const fnOpenCommPop = (__TEXT) => {
-  let param = {
-    id: pageId,
-    title: "알림",
-    content: __TEXT,
-    yes: {
-      text: "확인",
-      isProc: false,
-    },
-  };
-  $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-};
-
-const fnRegEvt = () => {
-  let param = {
-    id: pageId,
-    title: "뉴스룸 등록",
-    content: "등록하시겠습니까?",
-    yes: {
-      text: "등록",
-      isProc: true,
-      event: "FN_INSERT",
-      param: "",
-    },
-    no: {
-      text: "취소",
-      isProc: false,
-    },
-  };
-  $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-};
-
-const fnUpdEvt = () => {
-  let param = {
-    id: pageId,
-    title: "뉴스룸 수정",
-    content: "수정하시겠습니까?",
-    yes: {
-      text: "확인",
-      isProc: true,
-      event: "FN_UPDATE",
-      param: "",
-    },
-    no: {
-      text: "취소",
-      isProc: false,
-    },
-  };
-  $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-};
-
-const fnInsert = () => {
-  let frm = new FormData();
-  let wterGet = localStorage.getItem("tempAccess");
-  let params = JSON.stringify({
-    //seq: useDtStore.boardInfo.seq,
-    //seq: "",
-    brd_cd: "BR00",
-    brd_lang: form.value.formValue0,
-    show_yn: form.value.formValue2,
-    hash_tag: form.value.formValue7,
-    title: form.value.formValue1,
-    content: form.value.formValue5,
-    wter: wterGet,
-    fix_yn: form.value.formValue3,
-  });
-
-  frm.append("params", params);
-  frm.append("picObj", form.value.formValue4);
-  frm.append("fileObj", form.value.formValue6);
-
-  useAxios()
-    .post("/brd/ins", frm, { headers: { "Content-Type": "multipart/form-data" } })
-    .then((res) => {
-      router.push("/view/media/newsList");
-    })
-    .catch((error) => {
-      let param = {
-        id: pageId,
-        title: "뉴스룸 등록",
-        content: "고정여부값은 4건 초과 등록할 수 없습니다",
-        yes: {
-          text: "확인",
-          isProc: true,
-        },
-        no: {
-          text: "취소",
-          isProc: false,
-        },
-      };
-      $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-    })
-    .finally(() => {
-      //$log.debug("[equipMgmtReg][fnGetTenantList][finished]");
-      //objSlt.value.tenantNameList = _cloneDeep(temp);
-    });
-};
-
-const fnUpdate = () => {
-  let frm = new FormData();
-  let wterGet = localStorage.getItem("tempAccess");
-  let params = JSON.stringify({
-    seq: useDtStore.boardInfo.seq,
-    brd_cd: "BR00",
-    brd_lang: form.value.formValue0,
-    show_yn: form.value.formValue2,
-    title: form.value.formValue1,
-    content: form.value.formValue5,
-    hash_tag: form.value.formValue7,
-    wter: wterGet,
-    fix_yn: form.value.formValue3,
-    url_link: "", //?
-  });
-
-  frm.append("params", params);
-  frm.append("picObj", form.value.formValue4);
-  frm.append("fileObj", form.value.formValue6);
-
-  useAxios()
-    .post("/brd/upd", frm, { headers: { "Content-Type": "multipart/form-data" } })
-    .then((res) => {
-      router.push("/view/media/newsList");
-    })
-    .catch((error) => {
-      //$log.debug("[equipMgmtReg][fnGetTenantList][error]");
-      //useErrorHandler().fnSetCommErrorHandle(error, fnGetTenantList);
-    })
-    .finally(() => {
-      //$log.debug("[equipMgmtReg][fnGetTenantList][finished]");
-      //objSlt.value.tenantNameList = _cloneDeep(temp);
-    });
-};
-
-const fnDelEvt = () => {
-  let param = {
-    id: pageId,
-    title: "뉴스룸",
-    content: "삭제하시겠습니까?",
-    yes: {
-      text: "확인",
-      isProc: true,
-      event: "FN_DELETE",
-      param: "",
-    },
-    no: {
-      text: "취소",
-      isProc: false,
-    },
-  };
-  $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-};
-
-const fnDelete = () => {
-  let wterGet = localStorage.getItem("tempAccess");
-  let req = {
-    brd_cd: "BR00",
-    seq: useDtStore.boardInfo.seq,
-    wter: wterGet,
-  };
-
-  useAxios()
-    .post("/brd/del", req)
-    .then((res) => {
-      router.push("/view/media/newsList");
-    })
-    .catch((error) => {
-      //$log.debug("[equipMgmtReg][fnGetTenantList][error]");
-      //useErrorHandler().fnSetCommErrorHandle(error, fnGetTenantList);
-    })
-    .finally(() => {
-      //$log.debug("[equipMgmtReg][fnGetTenantList][finished]");
-      //objSlt.value.tenantNameList = _cloneDeep(temp);
-    });
-};
-
-const fnDetail = () => {
-  let req = {
-    seq: useDtStore.boardInfo.seq,
-  };
-  useAxios()
-    .post("/brd/detail", req)
-    .then((res) => {
-      const resData = res.data;
-
-      form.value.formValue0 = resData.brd_lang;
-      form.value.formValue2 = resData.show_yn;
-      form.value.formValue1 = resData.title;
-      form.value.formValue5 = resData.content.replace(/<\/?div[^>]*>/g, "");
-      form.value.formValue3 = resData.fix_yn;
-      form.value.formValue7 = resData.hash_tag;
-
-      //console.log(res.data);
-
-      uploadFiles.value[0].file_name = resData.file_title;
-      uploadFiles.value[0].ogn_name = resData.ogn_f_title;
-
-      form.value.formValue4 = resData.file_title_pic;
-      uploadPicFiles.value[0].file_name = resData.file_title_pic;
-      uploadPicFiles.value[0].ogn_name = resData.ogn_f_title_pic;
-      imgTemp.value =
-        apiUrl.value +
-        "/images/" +
-        res.data.path.replace(/.*\/files\//, "") +
-        "/" +
-        res.data.file_title_pic;
-    })
-    .catch((error) => {
-      //$log.debug("[equipMgmtReg][fnGetTenantList][error]");
-      //useErrorHandler().fnSetCommErrorHandle(error, fnGetTenantList);
-    })
-    .finally(() => {
-      //$log.debug("[equipMgmtReg][fnGetTenantList][finished]");
-      //objSlt.value.tenantNameList = _cloneDeep(temp);
-    });
-};
-
-const fnBtnEvt = () => {
-  if (pageType.value == "I") fnRegEvt();
-  else fnUpdEvt();
-};
-
-/************************************************************************
-|    팝업 이벤트버스 정의
-************************************************************************/
-$eventBus.off("FN_INSERT");
-$eventBus.on("FN_INSERT", () => {
-  fnInsert();
-});
-
-$eventBus.off("FN_UPDATE");
-$eventBus.on("FN_UPDATE", () => {
-  fnUpdate();
-});
-
-$eventBus.off("FN_DELETE");
-$eventBus.on("FN_DELETE", () => {
-  fnDelete();
-});
-
-/************************************************************************
-|    라이프사이클
-************************************************************************/
-onMounted(() => {
-  pageType.value = useDtStore.boardInfo.pageType;
-
-  //상세 등록 아니 리스트 클릭시 상세 정보로 접근
-  if (pageType.value == "U") {
-    fnDetail();
-  }
-});
-
-/************************************************************************
-|    WATCH
-************************************************************************/
-const observer = new MutationObserver((mutations) => {
-  mutations.forEach((mutation) => {
-    if (mutation.type === "childList") {
-      if (quillEditor.value) {
-        const quill = quillEditor.value.quill;
-        if (quill) {
-          quill
-            .getModule("toolbar")
-            .addHandler("image", editorOptions.value.modules.toolbar.handlers.image);
-        }
-      }
-    }
-  });
-});
-observer.observe(document.body, { childList: true, subtree: true });
-</script>

+ 0 - 194
pages/view/media/pressKitList.vue

@@ -1,194 +0,0 @@
-<template>
-  <div>
-    <div class="inner--headers">
-      <h2>{{ pageId }}</h2>
-      <div class="bread--crumbs--wrap">
-        <span>홈</span>
-        <span>{{ pageId }}</span>
-        <span v-if="pageIdSub">{{ pageIdSub }}</span>
-      </div>
-    </div>
-
-    <searchModules />
-
-    <div class="data--list--wrap">
-      <div class="btn--actions--wrap">
-        <div class="left--sections">
-          <v-btn class="custom-btn mini btn-white">선택 삭제</v-btn>
-        </div>
-        <div class="right--sections">
-          <v-btn class="custom-btn mini btn-reg" @click="addLocated"
-            ><i class="ico"></i>신규 등록</v-btn
-          >
-        </div>
-      </div>
-
-      <div class="tbl-wrapper">
-        <div class="tbl-wrap">
-          <!-- ag grid -->
-          <ag-grid-vue
-            style="width: 100%; height: calc(10 * 2.94rem)"
-            class="ag-theme-quartz"
-            :gridOptions="gridOptions"
-            :paginationPageSize="pageObj.pageSize"
-            @grid-ready="onGridReady"
-            @rowClicked="detailLocated"
-          >
-          </ag-grid-vue>
-
-          <!-- 페이징 -->
-          <div class="ag-grid-custom-pagenations">
-            <pagination @chg_page="chgPage" :pageObj="pageObj"></pagination>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-import pagination from "../components/common/pagination.vue";
-import { AgGridVue } from "ag-grid-vue3";
-import searchModules from "@/components/search/searchModules";
-/************************************************************************
-|    레이아웃
-************************************************************************/
-definePageMeta({
-  layout: "default",
-});
-/************************************************************************
-|   PROPS
- ************************************************************************/
-const props = defineProps({
-  propsData: {
-    type: Object,
-    default: () => {},
-  },
-});
-
-/************************************************************************
-|    전역
- ************************************************************************/
-
-const { $toast, $log, $dayjs, $eventBus } = useNuxtApp();
-const router = useRouter();
-const pageId = ref("보도자료");
-const pageIdSub = ref();
-let pageObj = ref({
-  page: 1, // 현재 페이지
-  pageMaxNumSize: 5, // 페이지 숫자 최대 표현 개수
-  pageSize: 10, // 테이블 조회 데이터 개수
-  totalCnt: 0, // 전체 페이지
-});
-const tblItems = ref([]); // stat 데이터
-
-/* eslint-disable */
-/* prettier-ignore */
-tblItems.value = [
-  {th1: "1",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "2",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "3",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "4",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "5",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "6",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "비노출",th7: "2024-12-25"},  
-  {th1: "7",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "8",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "9",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "10",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "11",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "12",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "13",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "14",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "15",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "16",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "17",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "18",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "19",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "20",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "21",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "22",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "23",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},  
-  {th1: "24",th2: "한국어",th3: "텔레칩스 뉴스 전달드립니다.",th4: "홍길동",th5: "135", th6: "노출",th7: "2024-12-25"},     
-];
-
-pageObj.value.totalCnt = tblItems.value.length;
-
-const remToPx = () => parseFloat(getComputedStyle(document.documentElement).fontSize);
-const rowHeightRem = 2.65; // 원하는 rem 값
-const rowHeightPx = rowHeightRem * remToPx();
-const gridApi = shallowRef();
-
-// gridOption
-const gridOptions = {
-  columnDefs: [
-    { headerName: "No", field: "th1", sortable: false },
-    { headerName: "언어", field: "th2", sortable: false },
-    { headerName: "제목", field: "th3", sortable: false },
-    { headerName: "작성자", field: "th4", sortable: false },
-    { headerName: "조회수", field: "th5", sortable: false },
-    { headerName: "노출여부", field: "th6", sortable: false },
-    { headerName: "등록일", field: "th7", sortable: false },
-    {
-      headerName: "알림 메일 수신 여부",
-      field: "th7",
-      sortable: false,
-    },
-  ],
-  rowData: tblItems.value, // 테이블 데이터
-
-  autoSizeStrategy: {
-    type: "fitGridWidth", // width맞춤
-  },
-  suppressMovableColumns: true,
-  headerHeight: rowHeightPx,
-  rowHeight: rowHeightPx,
-  pagination: true,
-  suppressPaginationPanel: true, // 하단 default 페이징 컨트롤 숨김
-  rowSelection: {
-    checkboxes: true,
-    headerCheckbox: true,
-    enableClickSelection: false,
-    mode: "multiRow",
-  },
-};
-
-/************************************************************************
-|    함수(METHODS)
-************************************************************************/
-const onGridReady = (__PARAMS) => {
-  gridApi.value = __PARAMS.api;
-};
-
-const chgPage = (__PAGE) => {
-  pageObj.value.page = __PAGE;
-  gridApi.value.paginationGoToPage(__PAGE - 1);
-};
-
-const addLocated = () => {
-  router.push({
-    path: "/view/mng/newsAdd",
-    //query: { id: rowId },
-  });
-};
-
-const detailLocated = (__EVENT) => {
-  const rowId = __EVENT.data.th1;
-  router.push({
-    path: "/view/mng/newsAdd",
-    query: { id: rowId },
-  });
-};
-
-/************************************************************************
-|    WATCH
-************************************************************************/
-
-watch(
-  () => props,
-  () => {
-    searchObj.value = props.propsData;
-    fnGetStat();
-  },
-  { deep: true }
-);
-</script>

+ 7 - 17
pages/view/winner/winDetail.vue → pages/view/order/index.vue

@@ -1,10 +1,10 @@
 <template>
   <div>
     <div class="inner--headers">
-      <h2>{{ pageId }}<span class="event--status">진행중</span></h2>
+      <h2>{{ pageId }}</h2>
       <div class="bread--crumbs--wrap">
         <span>홈</span>
-        <span>관리자 관리</span>
+        <!-- <span>주문 관리</span> -->
         <span>{{ pageId }}</span>
       </div>
     </div>
@@ -12,8 +12,7 @@
     <div class="view-wrap mt--45">
       <div class="view-box">
         <div class="view-box-top">
-          <h3 v-if="pageType == 'I'">관리자 등록</h3>
-          <h3 v-else>이벤트</h3>
+          <h3 >주문 관리</h3>
         </div>
         <div class="view-box-btm">
           <div class="form-style1">
@@ -148,12 +147,10 @@
 </template>
 
 <script setup>
-  import pagination from "../components/common/pagination.vue";
-  import { AgGridVue } from "ag-grid-vue3";
-  import useValid from "@/composables/useValid";
   import customButtonSms from "@/components/cellRenderer/customButtonSms";
-  import useApi from "@/composables/useApi";
-  import useUtil from "@/composables/useUtil";
+import useUtil from "@/composables/useUtil";
+import { AgGridVue } from "ag-grid-vue3";
+import pagination from "../components/common/pagination.vue";
 
   /***********************
    *     plugins inject
@@ -411,14 +408,7 @@
     pageType.value = useDtStore.adminInfo.pageType;
 
     //관리자 등록/수정 분기처리
-    if (pageType.value == "U") {
-      adminId.value = useDtStore.adminInfo.adminId;
-      pageId.value = "당첨자 리스트";
-      isReadonly.value = true;
-      fnDetail();
-    } else {
-      pageId.value = "관리자 등록";
-    }
+      pageId.value = "주문 관리";
   });
 
   /************************************************************************

+ 0 - 631
pages/view/roulette/index.vue

@@ -1,631 +0,0 @@
-<template>
-  <div class="roulette--container--wrappers">
-    <div class="roulette--wrapper">
-      <div class="title">
-        <div>미리 포인트로 즐기는 행운의 찬스!</div>
-        <div class="main-title"><span>룰렛</span><span>을 돌려라!</span></div>
-      </div>
-
-      <div class="roulette-container-wrap">
-        <div class="roulette-container">
-          <div class="pointer"></div>
-          <div ref="wheelRef" class="wheel"></div>
-          <div ref="textLayerRef" class="text-layer"></div>
-
-          <button
-            id="agreeButton"
-            type="button"
-            class="center-button"
-            @click="activeLayer(1)"
-          ></button>
-
-          <!-- <button
-            id="spinButton"
-            type="button"
-            class="center-button"
-            @click="trySpinRoulette"
-          ></button> -->
-        </div>
-      </div>
-      <div class="bottom-text">100% 당첨! 룰렛 돌리기</div>
-      <div class="sub-text">미리톡에서 추후 시 500P 사용하면 보너 2개!</div>
-
-      <div class="buttons">
-        <button type="button" class="button secondary">응모권 확인하기</button>
-        <button type="button" class="button primary">나의 포인트 전환</button>
-      </div>
-
-      <div class="probability-display">
-        <div>당첨 확률: <span id="probabilityDisplay">0.2</span>%</div>
-      </div>
-    </div>
-
-    <!-- 레이어 입력 폼 -->
-    <div
-      id="randomBoxAuth-layer01"
-      class="layer-popup bottom-sheet-wrap event"
-      role="dialog"
-      aria-hidden="false"
-      tabindex="0"
-      style="z-index: 101"
-      :class="{ show: activeLayer1 }"
-    >
-      <div class="layer-popup-item evt-reservation jan-roulette-pop">
-        <div class="popup-header">
-          <strong class="txt-main">룰렛 이벤트 신청</strong>
-        </div>
-        <div class="popup-body">
-          <div class="page-desc">
-            <h2>
-              이벤트 신청을 위해서 본인 인증이 필요합니다.<br />본인 인증을 진행해 주세요.
-            </h2>
-            <!--                <p>이벤트 기간 내 가입한 010 신규가입자도 룰렛 이벤트에 참여 가능합니다.</p>-->
-          </div>
-          <!--            <div class="box-btn">-->
-          <!--                <button class="btns md-ripples ripples-light gtm-tracking" type="button" data-gtm-tracking-category="랜덤박스 팝업_PC" data-gtm-tracking-action="본인인증 시도_PC" data-gtm-tracking-label="인증하기 버튼" id="randomBoxAuthBtn">본인 인증 하기</button>-->
-          <!--                <button id="randomBoxChkBtn" class="btns md-ripples ripples-light" type="button" disabled="" style="display: none;">인증 완료</button>-->
-          <!--            </div>-->
-          <div class="phone-certification mt45">
-            <h2>신청자 정보</h2>
-            <div class="box-input mt--45">
-              <label for="userName" class="input-label">이름</label>
-              <div class="input-wrap">
-                <input
-                  id="userName"
-                  type="text"
-                  placeholder="이름을 입력해주세요."
-                  class="input-default is-delete"
-                />
-              </div>
-            </div>
-            <div class="box-input mt45">
-              <label for="userPhone" class="input-label">휴대폰 번호</label>
-              <div class="input-wrap">
-                <input
-                  id="userPhone"
-                  type="text"
-                  placeholder="휴대폰 번호를 입력해주세요."
-                  class="input-default is-delete"
-                />
-              </div>
-              <input id="randomBoxInput3" type="hidden" disabled="" value="" />
-            </div>
-
-            <div class="rq-form">
-              <div class="agree-wrap">
-                <!-- 전체 동의 -->
-                <div class="btn-box btn-check btn-text-line">
-                  <input
-                    type="checkbox"
-                    id="agreeAll"
-                    v-model="agreeAll"
-                    @change="onAgreeAllChange"
-                  />
-                  <label for="agreeAll">
-                    <span class="ico-check"></span>전체 동의 (필수)
-                  </label>
-                </div>
-                <div class="agree-group">
-                  <div class="btn-box btn-check">
-                    <input
-                      type="checkbox"
-                      class="agreeReq"
-                      id="randomBoxAgree1"
-                      v-model="agree1"
-                      @change="onAgreeChange"
-                    />
-                    <label for="randomBoxAgree1">
-                      <span class="ico-check"></span>이벤트 참여 및 전화 상담을 위한
-                      개인정보 수집 및 이용 동의 (필수)
-                    </label>
-                    <a @click="activeLayer(2)" class="ico-arrow-right agreeActions"
-                      >더보기</a
-                    >
-                  </div>
-                  <div class="btn-box btn-check">
-                    <input
-                      type="checkbox"
-                      class="agreeReq"
-                      id="randomBoxAgree2"
-                      v-model="agree2"
-                      @change="onAgreeChange"
-                    />
-                    <label for="randomBoxAgree2">
-                      <span class="ico-check"></span>고객 혜택 정보 및 광고 수신 동의
-                      (필수)
-                    </label>
-                    <a @click="activeLayer(2)" class="ico-arrow-right agreeActions"
-                      >더보기</a
-                    >
-                  </div>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-        <div class="popup-footer">
-          <div class="btn-group">
-            <button
-              class="btns w-sm lightgray md-ripples ripples-dark popup-close"
-              type="button"
-            >
-              취소
-            </button>
-            <button
-              id="randomBoxAplyBtn"
-              class="btns w-sm md-ripples ripples-light gtm-tracking"
-              data-gtm-tracking-category="랜덤박스 팝업_PC"
-              data-gtm-tracking-action="랜덤박스 열기_PC"
-              data-gtm-tracking-label="박스열기 버튼"
-              type="button"
-              @click="trySpinRoulette(useSeq)"
-            >
-              룰렛 돌리기
-            </button>
-          </div>
-          <button
-            @click="activeLayer1 = !activeLayer1"
-            type="button"
-            id="layer-close01"
-            class="btn-close-x popup-close"
-          >
-            <svg
-              xmlns="http://www.w3.org/2000/svg"
-              width="37.657"
-              height="37.657"
-              viewBox="0 0 37.657 37.657"
-            >
-              <path
-                data-name="선 392"
-                transform="translate(2.828 2.828)"
-                style="fill: none; stroke: #000; stroke-linecap: round; stroke-width: 4px"
-                d="m0 0 32 32"
-              />
-              <path
-                data-name="선 393"
-                transform="translate(2.828 2.828)"
-                style="fill: none; stroke: #000; stroke-linecap: round; stroke-width: 4px"
-                d="M32 0 0 32"
-              />
-            </svg>
-          </button>
-        </div>
-      </div>
-    </div>
-
-    <div
-      id="randomBoxAgree-layer02"
-      class="layer-popup bottom-sheet-wrap terms"
-      role="dialog"
-      aria-hidden="false"
-      tabindex="0"
-      style="z-index: 101"
-      :class="{ show: activeLayer2 }"
-    >
-      <div class="layer-popup-item">
-        <div class="popup-header">
-          <strong class="txt-main">약관 및 동의 내용 보기</strong>
-        </div>
-        <div class="popup-body">
-          <div class="agree-cont">
-            <div class="agree-box">
-              <p>
-                귀사가 고객 혜택정보 및 광고 수신동의(필수) 항목에서 수집한 개인정보,
-                고객세분화정보,<br />
-                선호도 및 라이프스타일 정보, 전산조회이력정보 및 상담이력정보, 고객 간
-                관계에 관한 예측 정보 및 이 정보들에 대한 통계·분석데이터를 해지 시까지
-                수집·이용·분석하여 각종 서비스<br />
-                ·상품(주)미디어로그가 제공하는 이동통신, 금융서비스, 결합·제휴상품,
-                스토리지 등<br />
-                데이터·콘텐츠서비스, 부가서비스, 전자상거래서비스, 위치정보서비스,
-                it솔루션, Smart health서비스, 신규서비스·상품 포함), 제휴사와 결합된
-                서비스 및 제휴사의 서비스에 대하여 홍보, 가입권유, 프로모션, 생활정보,
-                멤버십정보, 이벤트, 해외로밍 안내(공항 또는 항만 위치 시 로밍 이용방법,
-                진행중인 이벤트 등 안내) 및 설문조사 목적으로 수집·이용·활용하는 것,
-                본인에게 혜택정보, 광고정보를 각종 통신방식[전화, SMS, LMS, MMS, WAP
-                Push,이메일, 우편, APP안내 및 팝업, APP PUSH]으로 전송하는 것에
-                동의합니다.
-              </p>
-            </div>
-          </div>
-        </div>
-        <div class="popup-footer">
-          <!-- <div class="btn-group">
-            <button
-              class="btns w-sm lightgray md-ripples ripples-dark popup-close"
-              type="button"
-            >
-              취소
-            </button>
-            <button class="btns w-sm md-ripples ripples-light popup-close" type="button">
-              확인
-            </button>
-          </div> -->
-          <button
-            @click="activeLayer2 = !activeLayer2"
-            class="btn-close-x popup-close"
-            id="layer-close02"
-            type="button"
-          >
-            <svg
-              xmlns="http://www.w3.org/2000/svg"
-              width="37.657"
-              height="37.657"
-              viewBox="0 0 37.657 37.657"
-            >
-              <path
-                data-name="선 392"
-                transform="translate(2.828 2.828)"
-                style="fill: none; stroke: #000; stroke-linecap: round; stroke-width: 4px"
-                d="m0 0 32 32"
-              />
-              <path
-                data-name="선 393"
-                transform="translate(2.828 2.828)"
-                style="fill: none; stroke: #000; stroke-linecap: round; stroke-width: 4px"
-                d="M32 0 0 32"
-              />
-            </svg>
-          </button>
-        </div>
-      </div>
-    </div>
-  </div>
-</template>
-
-<script setup>
-  import { ref, onMounted, nextTick } from "vue";
-
-  definePageMeta({
-    layout: "roulette",
-  });
-
-  const pageId = ref("ROULETTE");
-  const { $eventBus } = useNuxtApp();
-  const winProbability = ref(100.0);
-  const savedName = ref("");
-  const savedPhone = ref("");
-  const isSpinning = ref(false);
-  const activeLayer1 = ref(false);
-  const activeLayer2 = ref(false);
-
-  const wheelRef = ref(null);
-  const textLayerRef = ref(null);
-
-  const agreeAll = ref(false);
-  const agree1 = ref(false);
-  const agree2 = ref(false);
-
-  /************************************************************************
-  |    스토어
-   ************************************************************************/
-  const useDtStore = useDetailStore();
-  const useSeq = ref();
-
-  const setWinProbability = (probability) => {
-    winProbability.value = Math.max(0, Math.min(100, parseFloat(probability)));
-    return winProbability.value;
-  };
-
-  const activeLayer = (idx) => {
-    if (idx === 1) {
-      activeLayer1.value = !activeLayer1.value;
-    } else if (idx === 2) {
-      activeLayer2.value = !activeLayer2.value;
-    }
-  };
-
-  const createRoulette = (numSections, itemName) => {
-    nextTick(() => {
-      const $wheel = wheelRef.value;
-      const $textLayer = textLayerRef.value;
-      if (!$wheel || !$textLayer) return;
-
-      // 초기화
-      $wheel.style.background = "";
-      $textLayer.innerHTML = "";
-      const items = ["당첨", "꽝", "꽝", "꽝", "꽝", "꽝", "꽝", "꽝"];
-      const sectionCount = numSections;
-      const sectionAngle = 360 / sectionCount;
-      const colors = ["#f5c4c3", "#fdf195", "#F0FFF0"];
-
-      // conic-gradient
-      let conicGradient = "conic-gradient(";
-      for (let i = 0; i < sectionCount; i++) {
-        const startAngle = i * sectionAngle;
-        const endAngle = (i + 1) * sectionAngle;
-        const color = colors[i % 3];
-        conicGradient += `${color} ${startAngle}deg ${endAngle}deg`;
-        if (i < sectionCount - 1) conicGradient += ", ";
-      }
-      conicGradient += ")";
-      $wheel.style.background = conicGradient;
-
-      // 룰렛 크기 계산
-      const wheelRect = $wheel.getBoundingClientRect();
-      const radius = wheelRect.width / 2;
-
-      for (let i = 0; i < sectionCount; i++) {
-        const textDiv = document.createElement("div");
-        textDiv.className = "section-text";
-        textDiv.innerText = items[i % items.length];
-        const angle = i * sectionAngle + sectionAngle / 2;
-        const distance = radius * 0.75;
-        const radians = angle * (Math.PI / 180);
-        const centerX = radius;
-        const centerY = radius;
-        const x = centerX + Math.sin(radians) * distance;
-        const y = centerY - Math.cos(radians) * distance;
-        textDiv.style.position = "absolute";
-        textDiv.style.left = `${x}px`;
-        textDiv.style.top = `${y}px`;
-        textDiv.style.transform = `rotate(${angle}deg)`;
-        $textLayer.appendChild(textDiv);
-      }
-
-      // 당첨 섹션 강조
-      const winSectionIndex = 4;
-      const $winText = $textLayer.children[winSectionIndex];
-      if ($winText) {
-        $winText.style.color = "#E91E63";
-        $winText.style.fontWeight = "bolder";
-      }
-    });
-  };
-
-  onMounted(() => {
-    useSeq.value = useDtStore.boardInfo.seq;
-    winnerCheck(useSeq.value);
-    /*
-        TODO :        
-      */
-  });
-
-  const handleWin = (name, phone, EVT_SEQ) => {
-    let __req = {
-      name: name,
-      phone: phone,
-      seq: EVT_SEQ,
-    };
-    useAxios()
-      .post("/winner/reg", __req)
-      .then((res) => {
-        if (res.data.rank > 0) {
-          let param = {
-            id: pageId,
-            title: "시스템 메시지",
-            content: `축하합니다.<br/>${res.data.rank}등에 당첨되었습니다!`,
-            yes: {
-              text: "확인",
-              isProc: false,
-            },
-            no: {
-              text: "취소",
-              isProc: false,
-            },
-            reload: true,
-          };
-          $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-        } else {
-          let param = {
-            id: pageId,
-            title: "시스템 메시지",
-            content: `당첨에 실패하였습니다.<br/>다음 기회에 도전해보세요!`,
-            yes: {
-              text: "확인",
-              isProc: false,
-            },
-            no: {
-              text: "취소",
-              isProc: false,
-            },
-            reload: true,
-          };
-          $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-        }
-      })
-      .catch((error) => {})
-      .finally(() => {});
-  };
-
-  const spinRoulette = (name, phone, EVT_SEQ) => {
-    if (isSpinning.value) return;
-    isSpinning.value = true;
-
-    const spinDuration = 5000;
-    const spinRounds = 5; // 룰렛 회전 횟수
-    const sectionCount = 8; // 룰렛 섹션 개수
-    const sectionAngle = 360 / sectionCount;
-    const winSectionIndex = 0; //당첨 섹션 인덱스 : crateRoulette()에서 설정한 인덱스와 동일해야 함
-    const winSectionStart = winSectionIndex * sectionAngle; // 당첨 섹션 시작 각도
-    const winSectionEnd = (winSectionIndex + 1) * sectionAngle; // 당첨 섹션 끝 각도
-
-    const isWin = Math.random() * 100 < winProbability.value;
-    let stopAngle;
-    if (isWin) {
-      stopAngle = winSectionStart + Math.random() * (winSectionEnd - winSectionStart);
-    } else {
-      const loseSections = [];
-      for (let i = 0; i < sectionCount; i++) {
-        if (i !== winSectionIndex) loseSections.push(i);
-      }
-      const loseIndex = loseSections[Math.floor(Math.random() * loseSections.length)];
-      const loseStart = loseIndex * sectionAngle;
-      const loseEnd = (loseIndex + 1) * sectionAngle;
-      stopAngle = loseStart + Math.random() * (loseEnd - loseStart);
-    }
-
-    const rotationAmount = spinRounds * 360 + (360 - stopAngle);
-
-    nextTick(() => {
-      const $wheel = wheelRef.value;
-      const $textLayer = textLayerRef.value;
-      if (!$wheel || !$textLayer) return;
-
-      $wheel.style.transition = "none";
-      $wheel.style.transform = "rotate(0deg)";
-      $textLayer.style.transition = "none";
-      $textLayer.style.transform = "rotate(0deg)";
-      void $wheel.offsetWidth;
-      $wheel.style.transition = `transform ${spinDuration}ms cubic-bezier(0.2, 0.8, 0.3, 0.9)`;
-      $wheel.style.transform = `rotate(${rotationAmount}deg)`;
-      $textLayer.style.transition = `transform ${spinDuration}ms cubic-bezier(0.2, 0.8, 0.3, 0.9)`;
-      $textLayer.style.transform = `rotate(${rotationAmount}deg)`;
-
-      setTimeout(() => {
-        isSpinning.value = false;
-        const finalAngle = (360 - (rotationAmount % 360)) % 360;
-        const sectionIndex = Math.floor(finalAngle / sectionAngle);
-
-        //console.log(sectionIndex, winSectionIndex);
-        if (sectionIndex === winSectionIndex) {
-          handleWin(name, phone, EVT_SEQ);
-        } else {
-          handleWin(name, phone, EVT_SEQ);
-        }
-      }, spinDuration);
-    });
-  };
-
-  const trySpinRoulette = (EVT_SEQ) => {
-    const name = document.getElementById("userName").value.trim();
-    const phone = document.getElementById("userPhone").value.trim();
-
-    if (!name) {
-      let param = {
-        id: pageId,
-        title: "시스템 메시지",
-        content: "이름을 입력하세요.",
-        yes: {
-          text: "확인",
-          isProc: false,
-        },
-        no: {
-          text: "취소",
-          isProc: false,
-        },
-      };
-      $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-      document.getElementById("userName").focus();
-      return;
-    }
-    if (!phone) {
-      let param = {
-        id: pageId,
-        title: "시스템 메시지",
-        content: "휴대폰 번호를 입력하세요.",
-        yes: {
-          text: "확인",
-          isProc: false,
-        },
-        no: {
-          text: "취소",
-          isProc: false,
-        },
-      };
-      $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-      document.getElementById("userPhone").focus();
-      return;
-    }
-
-    const phoneRegex = /^010-\d{4}-\d{4}$/;
-    if (!phoneRegex.test(phone)) {
-      let param = {
-        id: pageId,
-        title: "시스템 메시지",
-        content: "휴대폰 번호를 형식에 맞게 입력하세요. 예시: 010-1234-5678",
-        yes: {
-          text: "확인",
-          isProc: false,
-        },
-        no: {
-          text: "취소",
-          isProc: false,
-        },
-      };
-      $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-      document.getElementById("userPhone").focus();
-      return;
-    }
-
-    if (!agreeAll.value) {
-      let param = {
-        id: pageId,
-        title: "시스템 메시지",
-        content:
-          "이벤트 참여 및 전화 상담을 위한 개인정보 수집 및\n이용 동의 (필수) 에 동의해주세요.",
-        yes: {
-          text: "확인",
-          isProc: false,
-        },
-        no: {
-          text: "취소",
-          isProc: false,
-        },
-      };
-      $eventBus.emit("OPEN_CONFIRM_POP_UP", param);
-
-      return;
-    }
-
-    savedName.value = name;
-    savedPhone.value = phone;
-
-    activeLayer1.value = !activeLayer1.value;
-
-    spinRoulette(savedName.value, savedPhone.value, EVT_SEQ);
-  };
-
-  const rouletteCnt = (EVT_SEQ) => {
-    let __req = {
-      seq: EVT_SEQ,
-    };
-    useAxios()
-      .post("/winner/itemcount", __req)
-      .then((res) => {
-        //createRoulette(res.data.count, res.data.items);
-        /*
-            TODO :
-            룰렛 생성 어떤 형태로 진행할지 기획 조율 필요
-          */
-        createRoulette(8, res.data.items);
-      })
-      .catch((error) => {})
-      .finally(() => {});
-  };
-  // 전체 동의 체크 시 하위 동의도 같이 변경
-  const onAgreeAllChange = () => {
-    agree1.value = agreeAll.value;
-    agree2.value = agreeAll.value;
-  };
-
-  // 하위 동의 체크 시 전체 동의 상태도 동기화
-  const onAgreeChange = () => {
-    agreeAll.value = agree1.value && agree2.value;
-  };
-
-  const winnerCheck = (EVT_SEQ) => {
-    let params = {
-      seq: EVT_SEQ,
-    };
-    useAxios()
-      .post("/winner/winnerchk", params)
-      .then((res) => {
-        //console.log(res.data.status);
-        rouletteCnt(EVT_SEQ);
-        if (res.data.status == "closed") {
-          setWinProbability(0);
-        } else {
-          setWinProbability(100); // 당첨 확률 몇 퍼센트로 할지 관리자 설정값으로 진행할지 여부 확인 필요
-        }
-      })
-      .catch((error) => {
-        //$log.debug("[equipMgmtReg][fnGetTenantList][error]");
-        //useErrorHandler().fnSetCommErrorHandle(error, fnGetTenantList);
-      })
-      .finally(() => {
-        //$log.debug("[equipMgmtReg][fnGetTenantList][finished]");
-        //objSlt.value.tenantNameList = _cloneDeep(temp);
-      });
-  };
-</script>

+ 0 - 0
pages/view/media/curationAdd.vue → pages/view/settle/curationAdd.vue


+ 0 - 0
pages/view/media/curationList.vue → pages/view/settle/curationList.vue


+ 1 - 2
pages/view/media/irList.vue → pages/view/settle/index.vue

@@ -71,9 +71,8 @@
 </template>
 
 <script setup>
-import pagination from "../components/common/pagination.vue";
 import { AgGridVue } from "ag-grid-vue3";
-import searchModules from "@/components/search/searchModules";
+import pagination from "../components/common/pagination.vue";
 
 /************************************************************************
 |    레이아웃

+ 0 - 0
pages/view/media/irAdd.vue → pages/view/settle/irAdd.vue


+ 0 - 0
pages/view/media/mediaAdd.vue → pages/view/settle/mediaAdd.vue


+ 0 - 0
pages/view/media/mediaList.vue → pages/view/settle/mediaList.vue


+ 0 - 0
pages/view/media/newsAdd.vue → pages/view/settle/newsAdd.vue


+ 0 - 0
pages/view/media/newsList.vue → pages/view/settle/newsList.vue


+ 0 - 0
pages/view/winner/index.vue → pages/view/vendor/index.vue


この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません