최정임 최정임 03-19
250319 최정임 퍼블리싱
@898c5d7f3aafd64090638d7148d67b82cc015d40
 
client/resources/css/common/common.css (added)
+++ client/resources/css/common/common.css
@@ -0,0 +1,66 @@
+*{
+    padding: 0; margin: 0;  color: #333;
+    font-family: "Pretendard-R";
+}
+
+html{font-size: 10px;}
+
+a{text-decoration: none; display: block;}
+li{list-style: none;}
+button{border: 0; background: none; cursor: pointer;}
+input{border: 0;}
+input::placeholder{color: #999999;}
+input[type="checkbox"]{
+    width: 15px;
+    height: 15px;
+}
+input[readonly] {
+    background-color: #f6f6f6 !important; 
+    color: #999;
+}
+select{
+ border: 0;
+ font-size: 20px;
+ font-family: "Pretendard-L";
+ color: #555;
+ appearance: none; 
+ background-image: url(../../images/icon/select.png);
+ background-repeat: no-repeat;
+ background-position: right 0px center;
+ background-size: 17px;
+ option{
+    
+ font-family: "Pretendard-L";
+ }
+}
+
+.w1500{width: 1500px; margin: 0 auto;}
+.wfull{width: -webkit-fill-available;}
+
+.flex-end{
+    display: flex;
+    justify-content: end;
+}
+
+.mt-5{margin-top: 5px;}
+
+.mb-10{margin-bottom: 10px;}
+.mb-25{margin-bottom: 25px;}
+.mb-50{margin-bottom: 50px;}
+.mb-60{margin-bottom: 60px;}
+.mb-110{margin-bottom: 110px;}
+
+
+.btn-group button{
+    padding: 15px 30px;
+    border-radius: 10px;
+    font-size: 20px;
+    &.signout{
+        border: 1px solid #ce3e48;
+        color: #ce3e48;
+    }
+    &.update{
+        border: 1px solid #275cbd;
+        color: #275cbd;
+    }
+}(파일 끝에 줄바꿈 문자 없음)
 
client/resources/css/common/font.css (added)
+++ client/resources/css/common/font.css
@@ -0,0 +1,51 @@
+@font-face {
+    font-family: "Pretendard-B";
+    src: url(../../font/Pretendard-Bold.ttf);
+}
+@font-face {
+    font-family: "Pretendard-SB";
+    src: url(../../font/Pretendard-SemiBold.ttf);
+}
+@font-face {
+    font-family: "Pretendard-EB";
+    src: url(../../font/Pretendard-ExtraBold.ttf);
+}
+
+@font-face {
+    font-family: "Pretendard-R";
+    src: url(../../font/Pretendard-Regular.ttf);
+}
+
+@font-face {
+    font-family: "Pretendard-M";
+    src: url(../../font/Pretendard-Medium.ttf);
+}
+
+@font-face {
+    font-family: "Pretendard-L";
+    src: url(../../font/Pretendard-Light.ttf);
+}
+@font-face {
+    font-family: "Pretendard-EL";
+    src: url(../../font/Pretendard-ExtraLight.ttf);
+}
+@font-face {
+    font-family: "HAPPINESSSANSVF";
+    src: url(../../font/HAPPINESSSANSVF.ttf);
+}
+@font-face {
+    font-family: "HAPPINESS-SANS-REGULAR";
+    src: url(../../font/HAPPINESS-SANS-REGULAR.OTF);
+}
+@font-face {
+    font-family: "HAPPINESS-SANS-BOLD";
+    src: url(../../font/HAPPINESS-SANS-BOLD.OTF);
+}
+@font-face {
+    font-family: "HAPPINESS-SANS-title";
+    src: url(../../font/Happiness-Sans-Title.ttf);
+}
+@font-face {
+    font-family: "MIWON";
+    src: url(../../font/MIWON.OTF);
+}
 
client/resources/css/user/board.css (added)
+++ client/resources/css/user/board.css
@@ -0,0 +1,0 @@
 
client/resources/css/user/layout.css (added)
+++ client/resources/css/user/layout.css
@@ -0,0 +1,48 @@
+.container{
+    min-height: 100vh;
+}
+.header-container{
+    width: 1500px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 24px 0;
+    position: sticky;
+    .logo img{width: 174px; height: 69px;}
+    .nav-wrap{display: flex;}
+
+    nav{
+        ul{display: flex; gap: 102px;}
+        li{font-size: 22px;}
+    }
+    .auth-area{
+        display: flex; align-items: center; gap: 50px;
+        ul{display: flex; align-items: center; gap: 20px;}
+        li{ display: flex; align-items: center;
+            img{margin-right: 6px;}
+            a{font-size: 16px;}
+        }
+        .line{width: 2px; height: 16px; background-color: #eeeeee;}
+    }
+}
+
+footer{
+    background-color: #333;
+    border-top-left-radius: 50px;
+    border-top-right-radius: 50px;
+    .footer-container{
+        display: flex; align-items: center; gap: 80px; padding: 35px 0;
+        ul{display: flex; align-items: center; gap: 20px; margin-bottom: 5px;}
+        li, p{
+            font-size: 18px;
+            color: rgba(255, 255, 255, 0.5);
+            font-family: "Pretendard-M";
+        }
+
+        .line{width: 2px; height: 13px; background-color: rgba(255, 255, 255, 0.3);}
+
+    }
+    
+}
+
+.scroll-up{position: fixed; right: 0; bottom: 0;}(파일 끝에 줄바꿈 문자 없음)
 
client/resources/css/user/main.css (added)
+++ client/resources/css/user/main.css
@@ -0,0 +1,203 @@
+.visual{position: relative;}
+.pagination{
+    color: #fff;
+    font-size: 20px;
+    position: absolute;
+
+}
+.search-wrap{
+    position: absolute;
+    bottom: 174px;
+    left: 50%;
+    transform: translateX(-50%);
+    z-index: 10;
+    display: flex;
+    gap: 20px;
+    .search-area{
+        padding-left: 40px;
+        display: flex;
+        align-items: center;
+        gap: 25px;
+        background-color: #fff;
+        width: 687px;
+        height: 76px;
+        border-radius: 38px;
+        position: relative;
+        .search-btn{
+            position: absolute;
+            right: 0;
+            top: 0;
+        }
+    }
+    .line{
+        width: 2px;
+        height: 20px;
+        background-color: #cccccc;
+    }
+    input{font-size: 20px; font-family: "Pretendard-L";}
+    input::placeholder{color: #555;}
+    .total-btn{
+        font-family: "Pretendard-B";
+        color: #fff;
+        font-size: 20px;
+        border-radius: 37.5px;
+        width: 150px;
+        height: 75px;
+        background: linear-gradient(-45deg,#1865c8, #4037aa )
+    }
+
+}
+
+.current-status{
+    background-color: #f6f6f6;
+    padding: 30px 0;
+    .board{
+        position: relative;
+        padding: 49px 0px; 
+        background-color: #fff;
+        border-radius: 50px;
+        ul{display: flex; gap: 37px;  
+            margin-right: 37px;
+            justify-content: end;}
+        li {
+            .labeling{
+                display: flex;
+            align-self: center;
+            justify-content: center;
+            margin-bottom: 14px;
+            }
+            .count{
+                font-family: "Pretendard-EB";
+                font-size: 32px;
+                background-color: #f6f6f6;
+                border-radius: 15px;
+                width: 150px;
+                height: 70px;
+                line-height: 70px;
+                text-align: center;
+                &.all{
+                    background-color: #fbefef;
+                    color: #dd1b1b;
+                }
+            }
+            
+        }
+       .line{width: 2px; height: 110px; background-color: #eeeeee;}
+        span{font-size: 22px; font-family: "Pretendard-SB";}
+        img{margin-right: 10px; object-fit: contain;}
+    }
+    .current-btn {
+        background-image: url(../../images/direct-btn-bg.png);
+            background-repeat: no-repeat;
+            position: absolute;
+            width: 375px;
+            height: 247px;
+            top: 0;
+            button{
+                position: absolute;
+                top: 40px;
+                right: 60px;
+            display: flex;
+            align-items: center;
+            gap: 40px;
+            span{
+                font-family: "MIWON";
+                font-size: 30px;
+                color: #fff;
+            }
+            }
+            
+    }
+}
+
+.tabs{
+    ul{display: flex;
+        justify-content: center;
+     li:first-child::after{
+        content: ''; width: 3px; height: 30px; background-color: rgba(173, 176, 177, 0.2);
+        margin: 0 38px 0 25px;
+        
+    }
+    }
+    .tab-title{
+        display: flex;
+        align-items: center;
+        gap: 13px;
+        p{
+            cursor: pointer;
+            font-family: "HAPPINESS-SANS-REGULAR";
+            color: #cccccc;
+            font-size: 26px;
+            b{
+                color: #cccccc;
+            }
+        }
+       
+    }
+    .tab-title.active p{
+        color: #000;
+        b{
+            color: #ff4141;
+        }
+    }
+
+}
+
+
+/* swiper */
+
+.swiper {
+    width:1620px;
+    height: 100%;
+  }
+  .swiper-wrapper{
+    width: 1500px !important;
+    margin: 0 auto;
+  } 
+  .swiper-slide {
+    text-align: center;
+    font-size: 18px;
+    background: #fff;
+  
+    /* Center slide text vertically */
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
+  
+  .swiper-slide img {
+    display: block;
+    height: 100%;
+    object-fit: cover;
+  }
+.swiper-horizontal > .swiper-pagination-progressbar, .swiper-pagination-progressbar.swiper-pagination-horizontal{
+    width: 30rem !important;
+    top: 407px !important;
+    left: 50% !important;
+    transform: translateX(-50%);
+}
+.swiper-pagination-progressbar{
+    background-color: #fff !important;
+}
+.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{
+    background-color: #4557a4 !important;
+}
+.swiper-button-prev {
+    background-image: url(../../images/prev-btn.png);
+    width: 94px !important;
+    height: 94px !important;
+}
+
+.swiper-button-prev:after, .swiper-rtl .swiper-button-prev:after{
+    content: '' !important;
+}
+.swiper-button-next {
+    background-image: url(../../images/next-btn.png);
+    width: 94px !important;
+    height: 94px !important;
+    right: 66px;
+}
+
+.swiper-button-next:after, .swiper-rtl .swiper-button-prev:after{
+    content: '' !important;
+}(파일 끝에 줄바꿈 문자 없음)
 
client/resources/css/user/sub.css (added)
+++ client/resources/css/user/sub.css
@@ -0,0 +1,96 @@
+.content{    
+    width: 1500px;
+    margin: 0 auto;
+    padding-top: 56px;
+    h2{ font-family: "HAPPINESSSANSVF"; font-size: 40px;}
+    h3{ font-family: "Pretendard-B"; font-size: 25px;
+        position: relative;
+        padding-left: 20px;
+        margin-bottom: 20px;
+        &::before{
+            content: '';
+            background: url(../../images/icon/subtitle.png);
+            width: 7px;
+            top: 11px;
+            left: 0;
+            height: 17px;
+            display: block;
+            position: absolute;
+        }
+    }
+}
+
+.sub-title-area{display: flex; justify-content: space-between; align-items: flex-end;}
+.breadcrumb-list{
+    ul{display: flex; align-items: center; gap: 15px;}
+    li{font-size: 16px; font-family: "Pretendard-SB"; color: #000;}
+}
+form{
+    margin: 0 auto;
+    border: 1px solid #dddddd;
+    border-radius: 20px;
+    input{padding: 15px; border: 1px solid #dddddd; border-radius: 5px; 
+        font-size: 16px; 
+    }
+}
+.login-form{
+    width: 600px;    
+    padding: 50px 60px;
+    label{
+        color: #666;
+        font-size: 16px;
+        display: block;
+        margin-bottom: 6px;
+    }
+   
+    button{font-size: 22px; font-family: "Pretendard-B"; background: linear-gradient(132deg,#3e355c, #763954 );
+        width: 100%; padding: 19px 0; border-radius: 15px; margin-top: 10px;
+        img{margin: 0 12px 0 0;}
+        span{color: #fff;}
+    }
+    .check-area{
+        input{margin-right: 5px;}
+    }
+}
+
+.info-form, .pwchange-form{
+    dd{display: flex; align-items: center;}
+    padding: 30px 50px;
+    label{
+        position: relative;
+        width: 200px;
+        display: block;
+        color: #000;
+        font-size: 18px;
+        &.require::after {
+            position: absolute;
+            top: 5px;
+            padding-left: 3px;
+            content: "*";
+            color: #df2d2d;
+          }
+    }
+    .hr{background-color: #eeeeee; margin: 10px 0;
+        width: 100%;
+        height: 1px;
+    }
+   
+}
+.pwchange-form{
+    input{
+        width:40%;
+     }
+}
+.invalid-feedback {
+    display: flex; align-items: center; gap: 4px;
+    background-color: #fbf1f2;
+    border: 1px solid #ce3e48;
+    border-radius: 20px;
+    padding: 8px 24px;
+    margin-left: 20px;
+    span{font-size: 14px; color: #e22d2d; font-family: "Pretendard-EL"; }
+}
+
+.btn-group{
+    gap: 10px;
+}(파일 끝에 줄바꿈 문자 없음)
 
client/resources/font/HAPPINESS-SANS-BOLD.OTF (Binary) (added)
+++ client/resources/font/HAPPINESS-SANS-BOLD.OTF
Binary file is not shown
 
client/resources/font/HAPPINESS-SANS-REGULAR.OTF (Binary) (added)
+++ client/resources/font/HAPPINESS-SANS-REGULAR.OTF
Binary file is not shown
 
client/resources/font/HAPPINESSSANSVF.TTF (Binary) (added)
+++ client/resources/font/HAPPINESSSANSVF.TTF
Binary file is not shown
 
client/resources/font/Happiness-Sans-Title.ttf (Binary) (added)
+++ client/resources/font/Happiness-Sans-Title.ttf
Binary file is not shown
 
client/resources/font/MIWON.OTF (Binary) (added)
+++ client/resources/font/MIWON.OTF
Binary file is not shown
 
client/resources/font/Pretendard-Black.ttf (Binary) (added)
+++ client/resources/font/Pretendard-Black.ttf
Binary file is not shown
 
client/resources/font/Pretendard-Bold.ttf (Binary) (added)
+++ client/resources/font/Pretendard-Bold.ttf
Binary file is not shown
 
client/resources/font/Pretendard-ExtraBold.ttf (Binary) (added)
+++ client/resources/font/Pretendard-ExtraBold.ttf
Binary file is not shown
 
client/resources/font/Pretendard-ExtraLight.ttf (Binary) (added)
+++ client/resources/font/Pretendard-ExtraLight.ttf
Binary file is not shown
 
client/resources/font/Pretendard-Light.ttf (Binary) (added)
+++ client/resources/font/Pretendard-Light.ttf
Binary file is not shown
 
client/resources/font/Pretendard-Medium.ttf (Binary) (added)
+++ client/resources/font/Pretendard-Medium.ttf
Binary file is not shown
 
client/resources/font/Pretendard-Regular.ttf (Binary) (added)
+++ client/resources/font/Pretendard-Regular.ttf
Binary file is not shown
 
client/resources/font/Pretendard-SemiBold.ttf (Binary) (added)
+++ client/resources/font/Pretendard-SemiBold.ttf
Binary file is not shown
 
client/resources/font/Pretendard-Thin.ttf (Binary) (added)
+++ client/resources/font/Pretendard-Thin.ttf
Binary file is not shown
 
client/resources/images/allmenu.png (Binary) (added)
+++ client/resources/images/allmenu.png
Binary file is not shown
 
client/resources/images/direct-btn-bg.png (Binary) (added)
+++ client/resources/images/direct-btn-bg.png
Binary file is not shown
 
client/resources/images/direct-btn.png (Binary) (added)
+++ client/resources/images/direct-btn.png
Binary file is not shown
 
client/resources/images/icon/error.png (Binary) (added)
+++ client/resources/images/icon/error.png
Binary file is not shown
 
client/resources/images/icon/home.png (Binary) (added)
+++ client/resources/images/icon/home.png
Binary file is not shown
 
client/resources/images/icon/icon1.png (Binary) (added)
+++ client/resources/images/icon/icon1.png
Binary file is not shown
 
client/resources/images/icon/icon2.png (Binary) (added)
+++ client/resources/images/icon/icon2.png
Binary file is not shown
 
client/resources/images/icon/icon3.png (Binary) (added)
+++ client/resources/images/icon/icon3.png
Binary file is not shown
 
client/resources/images/icon/icon4.png (Binary) (added)
+++ client/resources/images/icon/icon4.png
Binary file is not shown
 
client/resources/images/icon/icon5.png (Binary) (added)
+++ client/resources/images/icon/icon5.png
Binary file is not shown
 
client/resources/images/icon/lock.png (Binary) (added)
+++ client/resources/images/icon/lock.png
Binary file is not shown
 
client/resources/images/icon/logout-box-line.png (Binary) (added)
+++ client/resources/images/icon/logout-box-line.png
Binary file is not shown
 
client/resources/images/icon/right.png (Binary) (added)
+++ client/resources/images/icon/right.png
Binary file is not shown
 
client/resources/images/icon/search.png (Binary) (added)
+++ client/resources/images/icon/search.png
Binary file is not shown
 
client/resources/images/icon/select.png (Binary) (added)
+++ client/resources/images/icon/select.png
Binary file is not shown
 
client/resources/images/icon/subtitle.png (Binary) (added)
+++ client/resources/images/icon/subtitle.png
Binary file is not shown
 
client/resources/images/icon/top.png (Binary) (added)
+++ client/resources/images/icon/top.png
Binary file is not shown
 
client/resources/images/icon/user-settings-line.png (Binary) (added)
+++ client/resources/images/icon/user-settings-line.png
Binary file is not shown
 
client/resources/images/logo.png (Binary) (added)
+++ client/resources/images/logo.png
Binary file is not shown
 
client/resources/images/next-btn.png (Binary) (added)
+++ client/resources/images/next-btn.png
Binary file is not shown
 
client/resources/images/pic-btn-click.png (Binary) (added)
+++ client/resources/images/pic-btn-click.png
Binary file is not shown
 
client/resources/images/prev-btn.png (Binary) (added)
+++ client/resources/images/prev-btn.png
Binary file is not shown
 
client/resources/images/video-btn.png (Binary) (added)
+++ client/resources/images/video-btn.png
Binary file is not shown
 
client/resources/images/visual.png (Binary) (added)
+++ client/resources/images/visual.png
Binary file is not shown
client/views/App.vue
--- client/views/App.vue
+++ client/views/App.vue
@@ -1,7 +1,23 @@
 <template>
-  <router-view />
+ <div class="wrapper">
+    <Header />
+    <div class="container "><router-view /></div>
+    <Footer />
+    <button class="scroll-up">
+      <img src="../resources/images/icon/top.png" alt="">
+    </button>
+  </div>
 </template>
 <script>
-export default {}
+import Header from './layout/Header.vue';
+import Footer from './layout/Footer.vue';
+
+export default {
+
+  components: {
+    Header: Header,
+    Footer: Footer,
+  }
+}
 </script>
 <style></style>
(파일 끝에 줄바꿈 문자 없음)
client/views/index.html
--- client/views/index.html
+++ client/views/index.html
@@ -5,6 +5,12 @@
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   <meta name="description" content="Node Vue Web">
+  <link rel="stylesheet" href="../client/resources/css/common/common.css">
+  <link rel="stylesheet" href="../client/resources/css/common/font.css">
+  <link rel="stylesheet" href="../client/resources/css/user/board.css">
+  <link rel="stylesheet" href="../client/resources/css/user/layout.css">
+  <link rel="stylesheet" href="../client/resources/css/user/main.css">
+  <link rel="stylesheet" href="../client/resources/css/user/sub.css">
   <title>구미시 디지털 아카이브</title>
 </head>
 <body>
 
client/views/layout/Header.vue (added)
+++ client/views/layout/Header.vue
@@ -0,0 +1,43 @@
+<template>
+
+    <header>
+        <div class="header-container w1500">
+            <div class="logo-wrap">
+                <router-link :to="{path : '/'}" class="logo"><img :src="logo" alt=""></router-link>
+            </div>
+            <div class="nav-wrap">
+                <nav>
+                    <ul>
+                        <li>기록물</li>
+                        <li>언론에서 바라본 구미시</li>
+                        <li>회원관리</li>
+                        <li>카테고리 관리</li>
+                    </ul>
+                </nav>                
+            </div>
+            <div class="auth-area">
+                <ul>
+                    <li><img src="../../resources/images/icon/user-settings-line.png" alt="">
+                        <router-link :to="{path : '/MyInfo.page'}">관리자</router-link></li>
+                    <li>
+                        <div class="line"></div>
+                    </li>
+                    <li><img src="../../resources/images/icon/logout-box-line.png" alt="">
+                        <router-link :to="{path : '/Login.page'}">로그인</router-link>
+                        </li>
+                </ul>
+                <a href="#" class="all-menu"><img src="../../resources/images/allmenu.png" alt=""></a>
+            </div>
+        </div>
+    </header>
+</template>
+<script>
+    export default {
+    data() {
+        return {
+        // Define the image sources
+        logo: 'client/resources/images/logo.png',
+        };
+    }
+    };
+</script>(파일 끝에 줄바꿈 문자 없음)
 
client/views/layout/Menu.vue (added)
+++ client/views/layout/Menu.vue
@@ -0,0 +1,0 @@
client/views/pages/AppRouter.js
--- client/views/pages/AppRouter.js
+++ client/views/pages/AppRouter.js
@@ -1,11 +1,15 @@
 import { createWebHistory, createRouter } from "vue-router";
 
 // 공통페이지
+import Login from "./login/Login.vue";
+import MyInfo from "./user/MyInfo.vue";
 import Main from "./main/Main.vue";
 import NotFound from "./etc/NotFound.vue";
 
 const routes = [
   { path: "/", name: "MainPage", component: Main },
+  { path: "/Login.page", name: "Login", component: Login },
+  { path: "/MyInfo.page", name: "MyInfo", component: MyInfo },
   { path: "/notFound.page", name: "NotFoundPage", component: NotFound },
 ];
 
 
client/views/pages/login/Login.vue (added)
+++ client/views/pages/login/Login.vue
@@ -0,0 +1,47 @@
+<template>
+    <div class="content">
+      <div class="sub-title-area mb-110">
+            <h2>로그인</h2>
+            <div class="breadcrumb-list">
+                <ul>
+                    <!-- Bind the image source dynamically for homeicon -->
+                    <li><img :src="homeicon" alt="Home Icon"></li>
+                    <li><img :src="righticon" alt="Home Icon"></li>
+                    <li>로그인</li>
+                </ul>
+            </div>
+      </div>
+        <form action="login" class="login-form">
+            <dl>
+                <dd class="mb-25">
+                    <label for="id">아이디</label>
+                    <input type="text" id="id" class="wfull" placeholder="아이디를 입력하세요.">
+                </dd>
+                
+                <dd class="mb-10">
+                    <label for="pw">비밀번호</label>
+                    <input type="text" id="pw" class="wfull" placeholder="비밀번호를 입력하세요.">
+                </dd>
+                <dd class="check-area flex-end mb-25">
+                    <input type="checkbox" class="margin-top">
+                    <label for="save">아이디 저장</label>
+                </dd>
+            </dl>
+            <!-- Bind the image source dynamically for loginicon -->
+            <button><img :src="loginicon" alt="Login Icon"><span>로그인</span></button>
+        </form>
+    </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      // Define the image sources
+      homeicon: 'client/resources/images/icon/home.png',
+      loginicon: 'client/resources/images/icon/lock.png',
+      righticon: 'client/resources/images/icon/right.png',
+    };
+  }
+};
+</script>
client/views/pages/main/Main.vue
--- client/views/pages/main/Main.vue
+++ client/views/pages/main/Main.vue
@@ -1,9 +1,153 @@
 <template>
-  <h1>메인화면</h1>
-</template>
-<script>
-export default {
+  <div class="visual mb-50">
+    <swiper :loop="true" :spaceBetween="30" :centeredSlides="true" :pagination="{
+      type: 'progressbar',
+    }" :navigation="true" :modules="modules" class="mySwiper ">
+      <swiper-slide v-for="(item, index) in slides" :key="index" >
+        <img :src="item.img" :alt="item.alt" />
+      </swiper-slide>
+      <div class="pagination">
+        <div class="page-count">1/3</div>
 
-}
+      </div>
+    </swiper>
+    <div class="search-wrap">
+
+      <div class="search-area">
+        <select name="" id="">
+          <option value="" selected>전체</option>
+          <option value="">사진</option>
+          <option value="">영상</option>
+          <option value="">미디어 영상</option>
+          <option value="">보도자료</option>
+        </select>
+        <div class="line"></div>
+        <input type="text" placeholder="검색어를 입력하세요">
+        <button class="search-btn"><img :src="search" alt=""></button>
+      </div>
+      <div class="total-search">
+        <button class="total-btn">상세검색</button>
+      </div>
+    </div>
+  </div>
+  <div class="current-status mb-60">
+    <div class="board w1500">
+      <ul>
+        <li>
+          <div class="labeling"><img :src="icon1" alt=""><span>전체</span></div>
+          <div class="count all">520</div>
+        </li>
+        <li class="line"></li>
+        <li>
+          <div class="labeling"><img :src="icon2" alt=""><span>사진</span></div>
+          <div class="count">520</div>
+        </li>
+        <li class="line"></li>
+        <li>
+          <div class="labeling"><img :src="icon3" alt=""><span>영상</span></div>
+          <div class="count">520</div>
+        </li>
+        <li class="line"></li>
+        <li>
+          <div class="labeling"><img :src="icon4" alt=""><span>미디어</span></div>
+          <div class="count">520</div>
+        </li>
+        <li class="line"></li>
+        <li>
+          <div class="labeling"><img :src="icon5" alt=""><span>보도자료</span></div>
+          <div class="count">520</div>
+        </li>
+      </ul>
+      <div class="current-btn"> <button><span>기록물 현황</span><img :src="direct" alt=""></button></div>
+    </div>
+  </div>
+  <div class="new-update w1500">
+    <div class="tabs">
+        <ul>
+          <li v-for="(tab, index) in tabs" :key="index" class="tab-title" :class="{ active: selectedTab === index }"
+            @click="selectTab(index)">
+            <img
+            :src="selectedTab === index ? tab.activeImage : tab.inactiveImage"
+            :alt="tab.title"
+            class="tab-icon"
+          />
+            <p><b>{{ tab.title }}</b>&nbsp;기록물</p>
+          </li>
+        </ul>
+      <div class="tab-content">
+        <div v-if="selectedTab === 0" class="new-pic">
+          <p>{{ tabs[0].content }}</p>
+        </div>
+        <div v-if="selectedTab === 1" class="new-video">
+          <p>{{ tabs[1].content }}</p>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { ref } from 'vue';
+// Import Swiper Vue components
+import { Swiper, SwiperSlide } from 'swiper/vue';
+
+// Import Swiper styles
+import 'swiper/css';
+
+import 'swiper/css/pagination';
+import 'swiper/css/navigation';
+
+
+// import required modules
+import { Autoplay, Pagination, Navigation } from 'swiper/modules';
+export default {
+  components: {
+    Swiper,
+    SwiperSlide,
+  },
+  setup() {
+    return {
+      modules: [Autoplay, Pagination, Navigation],
+    };
+  },
+  data() {
+    return {
+      selectedTab: 0, // Set initial tab index to 0 (first tab)
+      tabs: [
+        { title: "신규 사진", content: "This is the content for Tab 1", activeImage: "client/resources/images/pic-btn-click.png", // Active tab image
+        inactiveImage: "client/resources/images/pic-btn-click.png"},
+        { title: "신규 영상", content: "This is the content for Tab 2",activeImage: "client/resources/images/video-btn.png", // Active tab image
+        inactiveImage: "client/resources/images/video-btn.png"},
+      ],
+      direct: 'client/resources/images/direct-btn.png',
+      search: 'client/resources/images/icon/search.png',
+      icon1: 'client/resources/images/icon/icon1.png',
+      icon2: 'client/resources/images/icon/icon2.png',
+      icon3: 'client/resources/images/icon/icon3.png',
+      icon4: 'client/resources/images/icon/icon4.png',
+      icon5: 'client/resources/images/icon/icon5.png',
+      slides: [
+        { img: 'client/resources/images/visual.png', alt: 'Slide 1' },
+        { img: 'client/resources/images/visual.png', alt: 'Slide 2' },
+        { img: 'client/resources/images/visual.png', alt: 'Slide 3' },
+        // Add more slides as needed
+      ],
+      autoplay: {
+        delay: 2500, // Delay in milliseconds
+        disableOnInteraction: false, // Autoplay won't stop when interacting
+      },
+      pagination: {
+        clickable: true, // Allow clicking pagination
+      },
+      navigation: true, // Enable navigation buttons (prev/next)
+    };
+  },
+  methods: {
+    selectTab(index) {
+      this.selectedTab = index; // Update the selected tab index
+    },
+  },
+};
 </script>
-<style></style>
(파일 끝에 줄바꿈 문자 없음)
+
+<style scoped></style>
 
client/views/pages/user/MyInfo.vue (added)
+++ client/views/pages/user/MyInfo.vue
@@ -0,0 +1,69 @@
+<template>
+    <div class="content">
+      <div class="sub-title-area mb-110">
+            <h2>내 정보 수정</h2>
+            <div class="breadcrumb-list">
+                <ul>
+                    <li><img :src="homeicon" alt="Home Icon"></li>
+                    <li><img :src="righticon" alt="Home Icon"></li>
+                    <li>내 정보 수정</li>
+                </ul>
+            </div>
+      </div>
+      <h3>기본정보</h3>
+        <form action="" class="info-form mb-50">
+            <dl>
+                <dd >
+                    <label for="id" class="require">아이디</label>
+                    <input type="text" id="id" value="admin" readonly>
+                </dd>
+                <div class="hr"></div>
+                
+                <dd >
+                    <label for="name" class="require">이름</label>
+                    <input type="text" id="name" value="관리자">
+                    
+                </dd>
+               
+            </dl>
+        </form>
+        <h3>비밀번호 변경</h3>
+        <form action="" class="pwchange-form mb-50">
+            <dl>
+                <dd >
+                    <label for="id">아이디</label>
+                    <input type="text" id="id" placeholder="아이디를 입력하세요.">
+                </dd>
+                <div class="hr"></div>
+                <dd >
+                    <label for="pw">비밀번호</label>
+                    <input type="text" id="pw" placeholder="비밀번호를 입력하세요.">
+                    <div class="invalid-feedback"><img :src="erroricon" alt=""><span>영문, 숫자, 특수문자를 최소 한가지씩 조합하고 8자 이상 ~ 20자 이내로 입력해주세요.</span></div>
+                </dd>
+                <div class="hr"></div>
+                <dd >
+                    <label for="pw">비밀번호</label>
+                    <input type="text" id="pw" placeholder="비밀번호를 입력하세요.">
+                    
+                </dd>
+            </dl>
+        </form>
+        <div class="btn-group flex-end">
+            <button class="signout">회원탈퇴</button>
+            <button class="update">수정</button>
+        </div>
+    </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      // Define the image sources
+      homeicon: 'client/resources/images/icon/home.png',
+      erroricon: 'client/resources/images/icon/error.png',
+      righticon: 'client/resources/images/icon/right.png',
+    };
+  }
+};
+</script>
 
client/views/pages/user/TotalSearch.vue (added)
+++ client/views/pages/user/TotalSearch.vue
@@ -0,0 +1,47 @@
+<template>
+    <div class="content">
+      <div class="sub-title-area mb-110">
+            <h2>통합검색</h2>
+            <div class="breadcrumb-list">
+                <ul>
+                    <!-- Bind the image source dynamically for homeicon -->
+                    <li><img :src="homeicon" alt="Home Icon"></li>
+                    <li><img :src="righticon" alt=""></li>
+                    <li>통합검색</li>
+                </ul>
+            </div>
+      </div>
+        <form action="login" class="login-form">
+            <dl>
+                <dd class="mb-25">
+                    <label for="id">아이디</label>
+                    <input type="text" id="id" class="wfull" placeholder="아이디를 입력하세요.">
+                </dd>
+                
+                <dd class="mb-10">
+                    <label for="pw">비밀번호</label>
+                    <input type="text" id="pw" class="wfull" placeholder="비밀번호를 입력하세요.">
+                </dd>
+                <dd class="check-area flex-end mb-25">
+                    <input type="checkbox" class="margin-top">
+                    <label for="save">아이디 저장</label>
+                </dd>
+            </dl>
+            <!-- Bind the image source dynamically for loginicon -->
+            <button><img :src="loginicon" alt="Login Icon"><span>로그인</span></button>
+        </form>
+    </div>
+</template>
+
+<script>
+export default {
+  data() {
+    return {
+      // Define the image sources
+      homeicon: 'client/resources/images/icon/home.png',
+      loginicon: 'client/resources/images/icon/lock.png',
+      righticon: 'client/resources/images/icon/right.png',
+    };
+  }
+};
+</script>
package.json
--- package.json
+++ package.json
@@ -10,6 +10,7 @@
     "file-loader": "^6.2.0",
     "fs": "0.0.1-security",
     "new-line": "^1.1.1",
+    "swiper": "^11.2.5",
     "vue": "3.2.40",
     "vue-loader": "^17.2.2",
     "vue-router": "^4.3.2",
@@ -32,6 +33,7 @@
   "devDependencies": {
     "html-webpack-plugin": "^5.6.0",
     "rimraf": "^6.0.1",
+    "url-loader": "^4.1.1",
     "vue-style-loader": "^4.1.3"
   }
-}
(파일 끝에 줄바꿈 문자 없음)
+}
Add a comment
List