yjryu / KERIS star
윤주 2023-10-26
231026 류윤주 관리자단 사용자단 합침
@a35a32053f3ecb7569fbc8444614d3d222bd9cb9
client/resources/css/reset.css
--- client/resources/css/reset.css
+++ client/resources/css/reset.css
@@ -40,7 +40,7 @@
   overflow-y: scroll;
 }
 
-body {
+body,#root {
   width: 100%;
   height: 100%;
 }
 
client/views/layout/AdminFooter.vue (added)
+++ client/views/layout/AdminFooter.vue
@@ -0,0 +1,35 @@
+<template>
+  <footer>
+    <address>Copyright (C)  All Right Reserved.</address>
+  </footer>
+</template>
+
+<script>
+export default {
+  data() {
+    return {};
+  },
+  methods: {},
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {
+    console.log("Header mounted");
+  },
+};
+</script>
+
+<style scoped>
+footer {
+  max-width: 100%;
+  padding: 10px 0;
+  grid-area: footer;
+  background: #ddd;
+}
+
+footer address{
+  font-style: normal;
+  text-align: center;
+  color: #fff;
+}
+</style>
 
client/views/layout/AdminHeader.vue (added)
+++ client/views/layout/AdminHeader.vue
@@ -0,0 +1,73 @@
+<template>
+    <header>
+        <p class="navigate_bar"><router-link to="/">Home</router-link> > {{pathName()}}</p>
+    </header>
+</template>
+
+<script>
+import { useRoute } from 'vue-router';
+
+export default {
+    data() {
+        return {
+            //현재 라우터의 정보
+			route: useRoute(),
+
+            // 페이지 경로 목록
+            pageList: [
+                {path: "/management.page", name: "수요반응자원 관리"}
+                , {path: "/contract.page", name: "참여고객 관리"}
+                , {path: "/rrmsePropose.page", name: "RRMSE 산출의뢰"}
+                , {path: "/rrmseCalculationLog.page", name: "RRMSE 산출이력"}
+                , {path: "/reduceState.page", name: "감축현황"}
+                , {path: "/reduceReport.page", name: "감축결과보고서"}
+                , {path: "/translateDay.page", name: "데이터송수신현황 일별"}
+                , {path: "/translateContract.page", name: "데이터송수신현황 참여고객별"}
+                , {path: "/dataStatus.page", name: "데이터송수신현황 데이터수집현황"}
+                , {path: "/analysis.page", name: "전력사용량/CBL 통계"}
+                , {path: "/cblAnalysis.page", name: "CBL 분석"}
+                , {path: "/device.page", name: "5분검침기 현황"}
+                , {path: "/smsAutoSend.page", name: "SMS발송관리 자동발송설정"}
+                , {path: "/smsManualSend.page", name: "SMS발송관리 수동발송"}
+                , {path: "/smsLog.page", name: "SMS발송관리 발송이력"}
+                , {path: "/emailAutoSend.page", name: "E-mail발송관리 자동발송설정"}
+                , {path: "/emailLog.page", name: "E-mail발송관리 발송이력"}
+                , {path: "/system.page", name: "회원관리"}
+                , {path: "/login.page", name: "로그인"}
+            ]
+        };
+    },
+    methods: {
+        pathName: function () {
+            for(let i=0; i<this.pageList.length; i++) {
+                if(this.route.path == this.pageList[i]['path']) {
+                    return this.pageList[i]['name'];
+                }
+            }
+            return "대시보드"
+        }
+    },
+    watch: {},
+    computed: {},
+    components: {},
+    mounted() {
+        console.log("Header mounted");
+        console.log("Header route: ", this.route);
+    },
+};
+</script>
+
+<style scoped>
+header {
+    max-width: 100%;
+    border-bottom: 1px solid #eee;
+    grid-area: header;
+    background: #fff;
+}
+
+header p {
+    padding: 15px 30px;
+    font-size: 1.5rem;
+    font-weight: 900;
+}
+</style>
 
client/views/layout/AdminMenu.vue (added)
+++ client/views/layout/AdminMenu.vue
@@ -0,0 +1,123 @@
+<template>
+  <nav class="main-menu">
+    <div class="logo-wrap">
+      <h1 class="logo"><router-link to="/">AI 디지털교과서 통합지원센터</router-link></h1>
+    </div>
+    <ul>
+      <li v-for="(menu, index) in menuList" :key="index" @click="toggleMenu(menu)">
+        <router-link :to="menu.path">{{ menu.pathName }}<span v-html="menu.icon"></span></router-link>
+        <ul v-if="menu.subMenu" class="sub-menu" :style="{ 'max-height': menu.isOpen ? '200px' : '0' }">
+          <li v-for="(subMenu, subIndex) in menu.subMenu" :key="subIndex">
+            <router-link :to="subMenu.path">{{ subMenu.pathName }}</router-link>
+          </li>
+        </ul>
+      </li>
+    </ul>
+  </nav>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      menuList: [
+        { path: "/main.page", pathName: "대시보드" },
+        { path: "/notice.page", pathName: "커뮤니티", subMenu: [{ path: "/notice.page", pathName: "공지사항" }, { path: "/new.page", pathName: "홍보/뉴스" }], icon: "<i class='fa-solid fa-angle-right'></i>", isOpen: false },
+        { path: "/document.page", pathName: "자료실", subMenu: [{ path: "/document.page", pathName: "기술문서" }, { path: "/reference.page", pathName: "자료집" }], icon: "<i class='fa-solid fa-angle-right'></i>", isOpen: false },
+        { path: "/statistics.page", pathName: "통계서비스" },
+        { path: "/corporatePR.page", pathName: "네트워킹", subMenu: [{ path: "/corporatePR.page", pathName: "기업홍보관" }], icon: "<i class='fa-solid fa-angle-right'></i>", isOpen: false },
+        { path: "/modal.page", pathName: "팝업관리" },
+        { path: "/email.page", pathName: "메일발송" },
+        { path: "/userSelectList.page", pathName: "사용자관리" },
+        { path: "/subscription .page", pathName: "구독서비스" },
+      ]
+    };
+  },
+  methods: {
+    //토글 메뉴
+    toggleMenu(menu) {
+      console.log(menu);
+      if (menu.hasOwnProperty('isOpen')) {
+        menu.isOpen = !menu.isOpen;
+        if (menu.isOpen) {
+          menu.icon = "<i class='fa-solid fa-angle-down'></i>";
+        } else {
+          menu.icon = "<i class='fa-solid fa-angle-right'></i>";
+        }
+      }
+    },
+    // 하위메뉴 클릭 시 메뉴 닫힘 방지
+    stopToggleSubMenuClick(event) {
+      event.stopPropagation();
+    },
+  },
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {
+    console.log("Header mounted");
+  },
+};
+</script>
+
+<style scoped>
+.main-menu {
+  height: 100%;
+  grid-area: nav;
+  background-color: #101924;
+  overflow-y: auto;
+}
+
+.main-menu::-webkit-scrollbar {
+  width: 10px;
+}
+
+.main-menu::-webkit-scrollbar-thumb {
+  background-color: #2f3542;
+  border-radius: 10px;
+  background-clip: padding-box;
+  border: 2px solid transparent;
+}
+
+.main-menu::-webkit-scrollbar-track {
+  background-color: grey;
+  border-radius: 10px;
+  box-shadow: inset 0px 0px 5px white;
+}
+
+.logo-wrap h1 a {
+  display: block;
+  font-size: 2rem;
+  font-weight: 900;
+  color: #fff;
+  padding: 30px 15px;
+}
+
+.main-menu>ul {
+  padding: 30px 0;
+}
+
+.main-menu>ul>li>a,
+.sub-menu>li>a {
+  display: block;
+  color: #fff;
+  padding: 10px 15px;
+}
+
+.main-menu>ul>li>a {
+  font-size: 1.6rem;
+  display: flex;
+  justify-content: space-between;
+}
+
+.sub-menu {
+  background-color: #203248;
+  overflow: hidden;
+  transition: all 0.5s ease-in-out;
+}
+
+.sub-menu>li>a {
+  font-size: 1.3rem;
+  padding: 10px 30px;
+}
+</style>
client/views/pages/App.vue
--- client/views/pages/App.vue
+++ client/views/pages/App.vue
@@ -1,5 +1,13 @@
 <template>
-   <div v-cloak>
+   <div v-if="isUserPage" :class="{ 'layout-wrap': true }">
+      <AdminHeader></AdminHeader>
+      <AdminMenu></AdminMenu>
+      <div class="main-warp">
+         <router-view />
+      </div>
+      <AdminFooter></AdminFooter>
+   </div>
+   <div v-else>
       <Header></Header>
       <Menu></Menu>
       <div class="main-warp">
@@ -15,6 +23,9 @@
 import Header from '../layout/Header.vue';
 import Menu from '../layout/Menu.vue';
 import Footer from '../layout/Footer.vue';
+import AdminHeader from '../layout/AdminHeader.vue';
+import AdminMenu from '../layout/AdminMenu.vue';
+import AdminFooter from '../layout/AdminFooter.vue';
 
 const App = {
    data: () => {
@@ -22,38 +33,38 @@
          title: null,
          isLogin: false,
          userInfo: {
-               user_id: null,
+            user_id: null,
          },
          store: useStore(),
       };
    },
    methods: {
-//로그인 사용자 조회
+      //로그인 사용자 조회
       loginUserSelectOne: function (callback) {
          let vm = this;
          axios({
-               url: "/user/loginUserSelectOne.json",
-               method: "post",
-               headers: {
-                  "Content-Type": "application/json; charset=UTF-8",
-               },
+            url: "/user/loginUserSelectOne.json",
+            method: "post",
+            headers: {
+               "Content-Type": "application/json; charset=UTF-8",
+            },
          }).then(function (response) {
-               // console.log("getIsLogin - response : ", response);
-               if (response.data.loginUser != null && response.data.loginUser['user_id'] != null) {
-                  vm.store.commit("setLoginUser", response.data.loginUser);
-                  vm.isLogin = true;
-                  vm.userInfo.user_id = response.data.loginUser['user_id'];
-               } else {
-                  vm.store.commit("setLoginUser", null);
-               }
-               if (response.data.key != null && response.data.key['salt'] != null) {
-                  vm.store.commit("setKey", response.data.key);
-               } else {
-                  vm.store.commit("setKey", null);
-               }
-               callback(response.data);
+            // console.log("getIsLogin - response : ", response);
+            if (response.data.loginUser != null && response.data.loginUser['user_id'] != null) {
+               vm.store.commit("setLoginUser", response.data.loginUser);
+               vm.isLogin = true;
+               vm.userInfo.user_id = response.data.loginUser['user_id'];
+            } else {
+               vm.store.commit("setLoginUser", null);
+            }
+            if (response.data.key != null && response.data.key['salt'] != null) {
+               vm.store.commit("setKey", response.data.key);
+            } else {
+               vm.store.commit("setKey", null);
+            }
+            callback(response.data);
          }).catch(function (error) {
-               console.log("getIsLogin - error : ", error);
+            console.log("getIsLogin - error : ", error);
          });
       }
    },
@@ -61,12 +72,18 @@
 
    },
    computed: {
-
+      isUserPage() {
+         // 현재 URL을 기반으로 사용자와 관리자 페이지 여부를 판단
+         return this.$route.path.startsWith('/adm');
+      }
    },
    components: {
       'Header': Header,
+      'AdminHeader': AdminHeader,
       'Menu': Menu,
+      'AdminMenu': AdminMenu,
       'Footer': Footer,
+      'AdminFooter': AdminFooter,
    },
    mounted: () => {
       console.log('Vue mounted');
@@ -117,4 +134,21 @@
 export default App;
 </script>
 
-<style></style>
+<style scoped>
+.layout-wrap {
+   width: 100%;
+   height: 100%;
+   display: grid;
+   grid-template-columns: 200px minmax(1234px, 1fr);
+   grid-template-rows: 50px 1fr 33px;
+   grid-template-areas:
+      "nav header "
+      "nav  main  "
+      "nav  footer  "
+}
+
+.main-wrap {
+   padding: 30px;
+   grid-area: main;
+}
+</style>
client/views/pages/AppRouter.js
--- client/views/pages/AppRouter.js
+++ client/views/pages/AppRouter.js
@@ -1,12 +1,16 @@
 import { createWebHistory, createRouter } from "vue-router";
 
-import Main from "../pages/main/Main.vue";
-import Matching from "../pages/matching/Matching.vue";
-import Data from "../pages/Data/Data.vue";
-import Login from "../pages/login/Login.vue";
-import Join from "../pages/Join/Join.vue";
-import Introduction from "../pages/introduction/Introduction.vue";
-import Technology from "../pages/Data/Technology.vue";
+import Main from "../pages/user/main/Main.vue";
+import Matching from "../pages/user/matching/Matching.vue";
+import Data from "../pages/user/Data/Data.vue";
+import Login from "../pages/user/login/Login.vue";
+import Join from "../pages/user/Join/Join.vue";
+import Introduction from "../pages/user/introduction/Introduction.vue";
+import Technology from "../pages/user/Data/Technology.vue";
+
+  /* 관리자 */
+  import AdminMain from "../pages/admin/main/Main.vue";
+  import AdminUser from "../pages/admin/user/UserSelectList.vue";
 
 const routes = [
   /* 메인화면 */
@@ -17,6 +21,9 @@
   { path: "/Join.page", name: "Join", component: Join },
   { path: "/Introduction.page", name: "Introduction", component: Introduction },
   { path: "/Technology.page", name: "Technology", component: Technology },
+  /* 관리자 */
+  { path: "/adm.page", name: "AdminMain", component: AdminMain },
+  { path: "/adm/user.page", name: "AdminUser", component: AdminUser },
 ];
 
 const AppRouter = createRouter({
 
client/views/pages/admin/login/Login.vue (added)
+++ client/views/pages/admin/login/Login.vue
@@ -0,0 +1,16 @@
+<template>
+
+</template>
+  
+<script>
+export default {
+    data() {
+        return {};
+    },
+    methods: {},
+    watch: {},
+    computed: {},
+    components: {},
+    mounted() { },
+};
+</script>
 
client/views/pages/admin/main/Main.vue (added)
+++ client/views/pages/admin/main/Main.vue
@@ -0,0 +1,19 @@
+<template>
+
+</template>
+
+<script>
+import axios from "axios";
+
+
+export default {
+    data() {
+        return {}
+    },
+    methods: {},
+    watch: {},
+    computed: {},
+    components: {},
+    mounted() {}
+}
+</script>
 
client/views/pages/admin/user/UserInsert.vue (added)
+++ client/views/pages/admin/user/UserInsert.vue
@@ -0,0 +1,0 @@
 
client/views/pages/admin/user/UserSelectList.vue (added)
+++ client/views/pages/admin/user/UserSelectList.vue
@@ -0,0 +1,143 @@
+<template>
+    <div class="user-wrap">
+        <div class="content-box">
+            <div class="title-wrap">
+                <h2 class="main-title">회원관리</h2>
+            </div>
+            <div class="content-wrap">
+                <ul class="tab-menu">
+                    <li v-for="(tab, index) in tabMenu" :key="index">
+                        <a @click="currentTab = index" :class="{ active: currentTab === index }">{{ tab }}</a>
+                    </li>
+                </ul>
+                <div class="tab-content">
+                    <div v-show="currentTab == 0">
+                        <table>
+                            <thead>
+                                <tr>
+                                    <th>아이디</th>
+                                    <th>기업명</th>
+                                    <th>담당자명</th>
+                                    <th>이메일</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                <tr v-for="(user,index) in user1" :key="index">
+                                    <td>{{ user.id }}</td>
+                                    <td>{{ user.company }}</td>
+                                    <td>{{ user.name }}</td>
+                                    <td>{{ user.email }}</td>
+                                </tr>
+                            </tbody>
+                        </table>
+                    </div>
+                    <div v-show="currentTab == 1">
+                        <table>
+                            <thead>
+                                <tr>
+                                    <th>아이디</th>
+                                    <th>기업명</th>
+                                    <th>담당자명</th>
+                                    <th>이메일</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                <tr v-for="(user,index) in user2" :key="index">
+                                    <td>{{ user.id }}</td>
+                                    <td>{{ user.company }}</td>
+                                    <td>{{ user.name }}</td>
+                                    <td>{{ user.email }}</td>
+                                </tr>
+                            </tbody>
+                        </table>
+                    </div>
+                    <div v-show="currentTab == 2">
+                        <table>
+                            <thead>
+                                <tr>
+                                    <th>아이디</th>
+                                    <th>기업명</th>
+                                    <th>담당자명</th>
+                                    <th>이메일</th>
+                                </tr>
+                            </thead>
+                            <tbody>
+                                <tr v-for="(user,index) in user3" :key="index">
+                                    <td>{{ user.id }}</td>
+                                    <td>{{ user.company }}</td>
+                                    <td>{{ user.name }}</td>
+                                    <td>{{ user.email }}</td>
+                                </tr>
+                            </tbody>
+                        </table>
+                        <div class="btn-wrap">
+                            <button class="blue-btn">등록</button>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+        
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            currentTab: 0,
+            tabMenu: ['일반회원', '기관회원', '관리자'],
+            user1:[
+                {id:"test1",company:"test1C",name:"user1",email:"test1@abc.com"},
+                {id:"teste2",company:"test2C",name:"user2",email:"test2@abc.com"},
+                {id:"test3",company:"test3C",name:"user3",email:"test3@abc.com"},
+            ],
+            user2:[
+                {id:"test1",company:"test1C",name:"user1",email:"test1@abc.com"},
+                {id:"teste2",company:"test2C",name:"user2",email:"test2@abc.com"},
+                {id:"test3",company:"test3C",name:"user3",email:"test3@abc.com"},
+            ],
+            user3:[
+                {id:"test1",company:"test1C",name:"user1",email:"test1@abc.com"},
+                {id:"teste2",company:"test2C",name:"user2",email:"test2@abc.com"},
+                {id:"test3",company:"test3C",name:"user3",email:"test3@abc.com"},
+            ]
+        };
+    },
+    methods: {},
+    watch: {},
+    computed: {},
+    components: {},
+    mounted() { },
+};
+</script>
+<style scoped>
+.tab-menu{
+    display: flex;
+    justify-content: flex-start;
+    align-items: center;
+}
+.tab-menu li a{
+    padding: 10px 15px;
+    display: block;
+    font-size: 1.6rem;
+    border-radius: 5px 5px 0 0;
+    cursor: pointer;
+    border: 1px solid #ddd;
+    border-bottom: 0;
+}
+
+.tab-menu li a.active{
+    background-color: #f8f8f8;
+    color: #2b7cff;
+    font-weight: 800;
+    border: 0;
+}
+
+.tab-content{
+    width: 100%;
+    height: 100%;
+    background-color: #f8f8f8;
+    padding: 15px;
+
+}
+</style>
 
client/views/pages/admin/user/UserSelectOne.vue (added)
+++ client/views/pages/admin/user/UserSelectOne.vue
@@ -0,0 +1,38 @@
+<template>
+    <div class="user-wrap">
+        <div class="content-box">
+            <div class="title-wrap">
+                <h2 class="main-title">회원관리</h2>
+            </div>
+            <div class="content-wrap">
+                <ul class="tab-menu">
+                    <li v-for="(tab, index) in tabMenu" :key="index" :class="{ active: currentTab === index }">
+                        <a href="#" v-on:click="currentTab = index">{{ tab }}</a>
+                    </li>
+                </ul>
+                <div class="tab-content">
+                    <div v-show="currentTab == 0">1</div>
+                    <div v-show="currentTab == 1">2</div>
+                    <div v-show="currentTab == 2">3</div>
+                </div>
+            </div>
+        </div>
+
+    </div>
+</template>
+<script>
+export default {
+    data() {
+        return {
+            currentTab: 0,
+            tabMenu: ['일반회원', '기관회원', '관리자']
+        };
+    },
+    methods: {},
+    watch: {},
+    computed: {},
+    components: {},
+    mounted() { },
+};
+</script>
+<style scoped></style>>
client/views/pages/user/Data/Data.vue (Renamed from client/views/pages/Data/Data.vue)
--- client/views/pages/Data/Data.vue
+++ client/views/pages/user/Data/Data.vue
No changes
client/views/pages/user/Data/Technology.vue (Renamed from client/views/pages/Data/Technology.vue)
--- client/views/pages/Data/Technology.vue
+++ client/views/pages/user/Data/Technology.vue
@@ -2,7 +2,7 @@
     <div class="w1400">
         <div class="tech">
             <section class="tech-logo">
-                <img src="../../../resources/jpg/tech-logo.png" alt="">
+                <img src="../../../../resources/jpg/tech-logo.png" alt="">
 
                 <h1>기술문서</h1>
             </section>
@@ -16,7 +16,7 @@
 
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
@@ -31,7 +31,7 @@
                         <h3>기술문서</h3>
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
@@ -46,7 +46,7 @@
                         <h3>기술문서</h3>
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
@@ -61,7 +61,7 @@
                         <h3>기술문서</h3>
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
@@ -76,7 +76,7 @@
                         <h3>기술문서</h3>
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
@@ -91,7 +91,7 @@
                         <h3>기술문서</h3>
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
@@ -106,7 +106,7 @@
                         <h3>기술문서</h3>
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
@@ -121,7 +121,7 @@
                         <h3>기술문서</h3>
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
@@ -136,7 +136,7 @@
                         <h3>기술문서</h3>
                     </div>
                     <div>
-                        <img src="../../../resources/jpg/data-img3.png" alt="">
+                        <img src="../../../../resources/jpg/data-img3.png" alt="">
                     </div>
                     <div>
                         <p>기술문서1의 설명</p>
client/views/pages/user/introduction/Introduction.vue (Renamed from client/views/pages/introduction/Introduction.vue)
--- client/views/pages/introduction/Introduction.vue
+++ client/views/pages/user/introduction/Introduction.vue
@@ -8,7 +8,7 @@
 
             <section class="intro-img">
                 <div>
-                    <img src="../../../resources/jpg/intro.png" alt="">
+                    <img src="../../../../resources/jpg/intro.png" alt="">
                 </div>
             </section>
         </div>
client/views/pages/user/join/Join.vue (Renamed from client/views/pages/join/Join.vue)
--- client/views/pages/join/Join.vue
+++ client/views/pages/user/join/Join.vue
@@ -8,11 +8,11 @@
                 <input type="radio" id="one" v-model="selectedMembership" value="one">
                 <label for="one" class="radio-t t1"
                     :style="{ backgroundColor: selectedMembership === 'one' ? '#86868644' : '#e2ecfc' }">기관회원
-                    <img src="../../../resources/jpg/join-bt2.png" alt=""></label>
+                    <img src="../../../../resources/jpg/join-bt2.png" alt=""></label>
                 <input type="radio" id="two" v-model="selectedMembership" value="two">
                 <label for="two" class="radio-t t2"
                     :style="{ backgroundColor: selectedMembership === 'two' ? '#86868644' : '#e6fff1' }">일반회원
-                    <img src="../../../resources/jpg/join-bt.png" alt=""></label>
+                    <img src="../../../../resources/jpg/join-bt.png" alt=""></label>
 
             </div>
         </section>
client/views/pages/user/login/Login.vue (Renamed from client/views/pages/login/Login.vue)
--- client/views/pages/login/Login.vue
+++ client/views/pages/user/login/Login.vue
@@ -3,7 +3,7 @@
         <div class=" login-sec">
             <section class="login-logo">
                 <div class="login-logo-d">
-                    <img src="../../../resources/jpg/logo/keris.gif" alt="">
+                    <img src="../../../../resources/jpg/logo/keris.gif" alt="">
                     <h1>AI 디지털교과서 통합지원센터</h1>
                 </div>
             </section>
client/views/pages/user/main/Main.vue (Renamed from client/views/pages/main/Main.vue)
--- client/views/pages/main/Main.vue
+++ client/views/pages/user/main/Main.vue
@@ -85,28 +85,28 @@
 
                                 <div class="m-p-c-2">
                                     <div>
-                                        <img src="../../../resources/jpg/fille.png" alt="">
+                                        <img src="../../../../resources/jpg/fille.png" alt="">
                                         <input type="button" value="매칭서비스" class="m-p-ai">
 
                                     </div>
                                 </div>
                                 <div class="m-p-c-3">
                                     <div>
-                                        <img src="../../../resources/jpg/m-p-ai2.png" alt="">
+                                        <img src="../../../../resources/jpg/m-p-ai2.png" alt="">
                                         <input type="button" value="자료집" class="m-p-ai">
 
                                     </div>
                                 </div>
                                 <div class="m-p-c-4">
                                     <div>
-                                        <img src="../../../resources/jpg/m-p-ai.png" alt="">
+                                        <img src="../../../../resources/jpg/m-p-ai.png" alt="">
                                         <input type="button" value="AI 디지털교과서 정책소개 다운" class="m-p-ai">
 
                                     </div>
                                 </div>
                                 <div class="m-p-c-5">
                                     <div>
-                                        <img src="../../../resources/jpg/ki-i.png" alt="">
+                                        <img src="../../../../resources/jpg/ki-i.png" alt="">
                                         <input type="button" value="기술문서" class="m-p-ai">
 
                                     </div>
@@ -311,15 +311,15 @@
                                 1023: { slidesPerView: 5 }
                             }" :navigation="false" :modules="modules" class="mySwiper swiper-2">
 
-                            <swiper-slide><img src="../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
-                            <swiper-slide><img src="../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
-                            <swiper-slide><img src="../../../resources/jpg/logo/kefa.png" alt=""></swiper-slide>
-                            <swiper-slide><img src="../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
-                            <swiper-slide><img src="../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
-                            <swiper-slide><img src="../../../resources/jpg/logo/keris.gif" alt=""></swiper-slide>
-                            <swiper-slide><img src="../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
-                            <swiper-slide><img src="../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
-                            <swiper-slide><img src="../../../resources/jpg/logo/ko.png" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/kefa.png" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/keris.gif" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/ko-go.jpg" alt=""></swiper-slide>
+                            <swiper-slide><img src="../../../../resources/jpg/logo/ko.png" alt=""></swiper-slide>
 
                         </swiper>
                     </div>
client/views/pages/user/matching/Matching.vue (Renamed from client/views/pages/matching/Matching.vue)
--- client/views/pages/matching/Matching.vue
+++ client/views/pages/user/matching/Matching.vue
@@ -8,7 +8,7 @@
                     <div class="w1400">
                         <div class="mat-b-b">
                             <div class="mat-img">
-                                <img src="../../../resources/jpg/mat-img.png" alt="">
+                                <img src="../../../../resources/jpg/mat-img.png" alt="">
                             </div>
                             <!-- 매칭 텍스트 -->
                             <div class="mat-text">
@@ -16,7 +16,7 @@
                                 <p>추천 매칭서비스</p>
                             </div>
                             <div class="mat-img">
-                                <img src="../../../resources/jpg/mat-img1.png" alt="">
+                                <img src="../../../../resources/jpg/mat-img1.png" alt="">
                             </div>
 
                         </div>
@@ -40,7 +40,7 @@
                                 <div>
 
                                     <h3>(주)지학사</h3>
-                                    <img src="../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
+                                    <img src="../../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
                                     <p>기업은 고객,고객은 기업이라는 마인드로 항상 고객의 만족을 최우선의 가치로 실천한다.</p>
                                     <div class="g1-1">
                                         <p><i class="fa-regular fa-heart fa-lg" style="color: #3f87f7;"></i> 3045</p>
@@ -59,7 +59,7 @@
                             <div class="mat-b-g-2  g1">
                                 <div>
                                     <h3>(주)지학사</h3>
-                                    <img src="../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
+                                    <img src="../../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
                                     <p>기업은 고객,고객은 기업이라는 마인드로 항상 고객의 만족을 최우선의 가치로 실천한다.</p>
                                     <div class="g1-1">
                                         <p><i class="fa-regular fa-heart fa-lg" style="color: #3f87f7;"></i> 3045</p>
@@ -77,7 +77,7 @@
                             <div class="mat-b-g-3  g1">
                                 <div>
                                     <h3>(주)지학사</h3>
-                                    <img src="../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
+                                    <img src="../../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
                                     <p>기업은 고객,고객은 기업이라는 마인드로 항상 고객의 만족을 최우선의 가치로 실천한다.</p>
                                     <div class="g1-1">
                                         <p><i class="fa-regular fa-heart fa-lg" style="color: #3f87f7;"></i> 3045</p>
@@ -95,7 +95,7 @@
                             <div class="mat-b-g-3  g1">
                                 <div>
                                     <h3>(주)지학사</h3>
-                                    <img src="../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
+                                    <img src="../../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
                                     <p>기업은 고객,고객은 기업이라는 마인드로 항상 고객의 만족을 최우선의 가치로 실천한다.</p>
                                     <div class="g1-1">
                                         <p><i class="fa-regular fa-heart fa-lg" style="color: #3f87f7;"></i> 3045</p>
@@ -113,7 +113,7 @@
                             <div class="mat-b-g-3  g1">
                                 <div>
                                     <h3>(주)지학사</h3>
-                                    <img src="../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
+                                    <img src="../../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
                                     <p>기업은 고객,고객은 기업이라는 마인드로 항상 고객의 만족을 최우선의 가치로 실천한다.</p>
                                     <div class="g1-1">
                                         <p><i class="fa-regular fa-heart fa-lg" style="color: #3f87f7;"></i> 3045</p>
@@ -131,7 +131,7 @@
                             <div class="mat-b-g-3 g1">
                                 <div>
                                     <h3>(주)지학사</h3>
-                                    <img src="../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
+                                    <img src="../../../../resources/jpg/zigaksa.jpg" width="20px" alt="">
                                     <p>기업은 고객,고객은 기업이라는 마인드로 항상 고객의 만족을 최우선의 가치로 실천한다.</p>
                                     <div class="g1-1">
                                         <p><i class="fa-regular fa-heart fa-lg" style="color: #3f87f7;"></i> 3045</p>
package-lock.json
--- package-lock.json
+++ package-lock.json
@@ -1,5 +1,5 @@
 {
-  "name": "KERIS",
+  "name": "KERIS-1",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
Add a comment
List