jichoi / lms_front star
guntaek 09-13
Merge branch 'master' of http://210.180.118.83/jichoi/lms_front
@c4227a57ecf4ebc691efa6ac56f6d3f23d80575b
 
client/resources/audio/passage/passage_explanation.mp3 (Binary) (added)
+++ client/resources/audio/passage/passage_explanation.mp3
Binary file is not shown
 
client/resources/audio/passage/passage_intoduce.mp3 (Binary) (added)
+++ client/resources/audio/passage/passage_intoduce.mp3
Binary file is not shown
client/resources/css/reset.css
--- client/resources/css/reset.css
+++ client/resources/css/reset.css
@@ -1,118 +1,179 @@
 @charset "utf-8";
 
 @font-face {
-	font-family: 'Pretendard-Bold';
-    src: url('../font/Pretendard-Bold.otf') format('opentype');
+  font-family: "Pretendard-Bold";
+  src: url("../font/Pretendard-Bold.otf") format("opentype");
 }
 @font-face {
-	font-family: 'Pretendard-Black';
-    src: url('../font/Pretendard-Black.otf') format('opentype');
+  font-family: "Pretendard-Black";
+  src: url("../font/Pretendard-Black.otf") format("opentype");
 }
 @font-face {
-	font-family: 'Pretendard-ExtraBold';
-    src: url('../font/Pretendard-ExtraBold.otf') format('opentype');
+  font-family: "Pretendard-ExtraBold";
+  src: url("../font/Pretendard-ExtraBold.otf") format("opentype");
 }
 @font-face {
-	font-family: 'Pretendard-ExtraLight';
-    src: url('../font/Pretendard-ExtraLight.otf') format('opentype');
+  font-family: "Pretendard-ExtraLight";
+  src: url("../font/Pretendard-ExtraLight.otf") format("opentype");
 }
 @font-face {
-	font-family: 'Pretendard-Light';
-    src: url('../font/Pretendard-Light.otf') format('opentype');
+  font-family: "Pretendard-Light";
+  src: url("../font/Pretendard-Light.otf") format("opentype");
 }
 @font-face {
-	font-family: 'Pretendard-Medium';
-    src: url('../font/Pretendard-Medium.otf') format('opentype');
+  font-family: "Pretendard-Medium";
+  src: url("../font/Pretendard-Medium.otf") format("opentype");
 }
 @font-face {
-	font-family: 'Pretendard-Regular';
-    src: url('../font/Pretendard-Regular.otf') format('opentype');
+  font-family: "Pretendard-Regular";
+  src: url("../font/Pretendard-Regular.otf") format("opentype");
 }
 @font-face {
-	font-family: 'Pretendard-SemiBold';
-    src: url('../font/Pretendard-SemiBold.otf') format('opentype');
+  font-family: "Pretendard-SemiBold";
+  src: url("../font/Pretendard-SemiBold.otf") format("opentype");
 }
 @font-face {
-	font-family: 'Pretendard-Thin';
-    src: url('../font/Pretendard-Thin.otf') format('opentype');
-}
-
-
-@font-face {
-	font-family: 'ONEMobilePOP';
-    src: url('../font/ONEMobilePOP.ttf') format('truetype');
-}
-@font-face {
-	font-family: 'ONEMobileOTF-Regular';
-    src: url('../font/ONEMobileOTF-Regular.otf') format('opentype');
-}
-@font-face {
-	font-family: 'ONEMobileOTF-Light';
-    src: url('../font/ONEMobileOTF-Light.otf') format('opentype');
-}
-@font-face {
-	font-family: 'ONEMobileOTF-Bold';
-    src: url('../font/ONEMobileOTF-Bold.otf') format('opentype');
-}
-@font-face {
-	font-family: 'ONEMobilePOPOTF';
-    src: url('../font/ONEMobilePOPOTF.otf') format('opentype');
+  font-family: "Pretendard-Thin";
+  src: url("../font/Pretendard-Thin.otf") format("opentype");
 }
 
 @font-face {
-	font-family: 'neodgm';
-    src: url('../font/neodgm.ttf') format('truetype');
+  font-family: "ONEMobilePOP";
+  src: url("../font/ONEMobilePOP.ttf") format("truetype");
+}
+@font-face {
+  font-family: "ONEMobileOTF-Regular";
+  src: url("../font/ONEMobileOTF-Regular.otf") format("opentype");
+}
+@font-face {
+  font-family: "ONEMobileOTF-Light";
+  src: url("../font/ONEMobileOTF-Light.otf") format("opentype");
+}
+@font-face {
+  font-family: "ONEMobileOTF-Bold";
+  src: url("../font/ONEMobileOTF-Bold.otf") format("opentype");
+}
+@font-face {
+  font-family: "ONEMobilePOPOTF";
+  src: url("../font/ONEMobilePOPOTF.otf") format("opentype");
+}
+
+@font-face {
+  font-family: "neodgm";
+  src: url("../font/neodgm.ttf") format("truetype");
 }
 
 * {
-    padding: 0;
-    margin: 0;
-    box-sizing: border-box;
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
 }
 
-html, body, #root, #app{height: 100%;}
+html,
+body,
+#root,
+#app {
+  height: 100%;
+}
 html,
 body,
 #root {
-    font-size: 10px;
-    color: #2E2F30;
-    font-family: 'ONEMobileOTF-Regular';
-    
+  font-size: 10px;
+  color: #2e2f30;
+  font-family: "ONEMobileOTF-Regular";
 }
 html,
-body{ background-color: #eaedf4;}
-body{position:relative;text-align: left; overflow-x: hidden; width: 1920px;}
-::-webkit-scrollbar {width: 10px; height: 10px;}
-::-webkit-scrollbar-track {border-radius: 5px;background-color: #EAEDF4;}
-::-webkit-scrollbar-thumb {	border-radius: 5px; background-color: #FFBA08;}
-#root, #app{
-    /* height: 100%;  */
-   }
-input, select, span,p, label {
-    font-size: 16px;
+body {
+  background-color: #eaedf4;
 }
-input::placeholder{color: #8C8E92;}
-input[type="text"]{ padding:10px 20px; width: 100%; }
-input#file-upload-button{padding: 10px ;} 
-  
-button{
-    border: none;
-    background-color: transparent;
-    cursor: pointer;
+body {
+  position: relative;
+  text-align: left;
+  overflow-x: hidden;
+  width: 1920px;
 }
-textarea{resize: none; border: 0; outline: 0; font-size: 20px; font-family: 'ONEMobileOTF-Regular';}
+::-webkit-scrollbar {
+  width: 7px;
+  height: 10px;
+}
+::-webkit-scrollbar-track {
+  border-radius: 5px;
+  background-color: #eaedf4;
+}
+::-webkit-scrollbar-thumb {
+  border-radius: 5px;
+  background-color: #ffba08;
+}
+body,
+#root,
+#app {
+  /* height: 100%;  */
+  /* background-image: url("../img/new_img/plan/background.png");
+  background-repeat: no-repeat;
+  background-size: cover; */
+}
+body {
+  height: 100%;
+  background-image: url(../img/new_img/plan/background.png);
+  background-repeat: no-repeat;
+  background-size: cover;
+  background-position: center;
+  position: absolute;
+}
+input,
+select,
+span,
+p,
+label {
+  font-size: 16px;
+}
+input::placeholder {
+  color: #8c8e92;
+}
+input[type="text"] {
+  padding: 10px 20px;
+  width: 100%;
+}
+input#file-upload-button {
+  padding: 10px;
+}
 
-a{text-decoration: none; color: #2E2F30;}
+button {
+  border: none;
+  background-color: transparent;
+  cursor: pointer;
+}
+textarea {
+  resize: none;
+  border: 0;
+  outline: 0;
+  font-size: 20px;
+  font-family: "ONEMobileOTF-Regular";
+}
+
+a {
+  text-decoration: none;
+  color: #2e2f30;
+}
 
 table {
-    font-size: 20px;
-    width: 100%;
-    border-collapse: collapse;
-    table-layout: fixed;
-border: 0;}
-thead{background-color: #eaedf4;}
-tbody tr{border-bottom: #eaedf4 1px solid; cursor: pointer;}
-td{padding: 10px ; text-align: center;} 
+  font-size: 20px;
+  width: 100%;
+  border-collapse: collapse;
+  table-layout: fixed;
+  border: 0;
+}
+thead {
+  background-color: #eaedf4;
+}
+tbody tr {
+  border-bottom: #eaedf4 1px solid;
+  cursor: pointer;
+}
+td {
+  padding: 10px;
+  text-align: center;
+}
 
 /* .btn-upload {
     width: 100px;
@@ -132,4 +193,4 @@
   
   #file {
     display: none;
-  } */
(파일 끝에 줄바꿈 문자 없음)
+  } */
client/resources/css/style.css
--- client/resources/css/style.css
+++ client/resources/css/style.css
@@ -117,6 +117,14 @@
 /* 레이아웃 */
 .side {
   width: 42rem;
+  background-color: #ffffffa6;
+  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+  border-radius: 10px;
+  padding: 2rem;
+  position: absolute;
+
+  top: 179px;
+  height: 700px;
 }
 
 .main-wrap {
@@ -127,23 +135,40 @@
 .main-wrap {
   width: 134rem;
   height: 70rem;
-  background-color: #fff;
+  background-color: #ffffffa6;
   border-radius: 10px;
   position: absolute;
   right: 60px;
   top: 179px;
   z-index: 1;
 }
-.main-wrap-plan {
+
+.main-wrap-mypage {
   width: 134rem;
   height: 70rem;
-  background-color: #fff;
   border-radius: 10px;
   position: absolute;
   right: 60px;
   top: 179px;
   z-index: 1;
-  background-image: url("../img/new_img/plan/background.png");
+  background-image: url("../img/new_img/mypage/background.png");
+  background-size: 100% 100%;
+  background-position: center;
+  background-repeat: no-repeat;
+  padding: 6rem 8rem;
+}
+
+.main-wrap-plan {
+  width: 134rem;
+  height: 70rem;
+  border-radius: 10px;
+  position: absolute;
+  right: 60px;
+  top: 179px;
+  z-index: 1;
+  /* background-image: url("../img/new_img/plan/background.png"); */
+  background-color: #ffffffa6;
+  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
 }
 .header img {
   margin-left: 20px;
@@ -159,7 +184,7 @@
   /* height: 24rem; */
   /* background-color: #fff; */
   border-radius: 10px;
-  padding: 30px 20px 0px;
+  padding: 20px 20px 0px;
   font-size: 16px;
   font-family: "ONEMobileOTF-Regular";
   /* box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); */
@@ -406,15 +431,16 @@
 }
 
 .myphoto > div {
-  background-image: url("../img/img207_15s.png");
-  width: 1011px;
-  height: 558px;
+  background-image: url("../img/new_img/photobook/background.png");
+  width: 127rem;
+  height: 56rem;
   padding: 30px 60px;
   margin: 0 auto;
+  background-size: 100% 100%;
 }
 .tab-btn {
   position: relative;
-  color: #568bfa;
+  color: #fff;
 }
 .tab-btn p.custom-style {
   color: #fff;
@@ -426,12 +452,13 @@
   right: 7%;
   transform: translate(-50%, -50%);
   font-family: "ONEMobilePOPOTF";
-  font-size: 36px;
+  font-size: 27px;
 }
 .myphoto .btnGroup {
   width: max-content;
   position: absolute;
-  right: 45px;
+  top: 134px;
+  right: 14px;
   z-index: 10000;
 }
 .myphoto .class {
@@ -732,7 +759,8 @@
   box-shadow: 10px 10px 10px rgba(0, 0, 0, 0.1);
   width: 93%;
   height: 710px;
-  background-color: #fff;
+  /* background-color: #fff; */
+  background-color: #ffffffa6;
   border-radius: 20px;
 }
 
@@ -1169,7 +1197,8 @@
 }
 
 .class {
-  background-color: #f8f9fb;
+  /* background-color: #f8f9fb; */
+  background-image: url("../img/new_img/photobook/photo.png");
   border-radius: 10px;
   padding: 25px;
   font-size: 19px;
 
client/resources/img/new_img/content_ink/background.png (Binary) (added)
+++ client/resources/img/new_img/content_ink/background.png
Binary file is not shown
 
client/resources/img/new_img/content_ink/click_btn.png (Binary) (added)
+++ client/resources/img/new_img/content_ink/click_btn.png
Binary file is not shown
 
client/resources/img/new_img/content_ink/ink_1.png (Binary) (added)
+++ client/resources/img/new_img/content_ink/ink_1.png
Binary file is not shown
 
client/resources/img/new_img/content_ink/ink_2.png (Binary) (added)
+++ client/resources/img/new_img/content_ink/ink_2.png
Binary file is not shown
 
client/resources/img/new_img/content_ink/ink_3.png (Binary) (added)
+++ client/resources/img/new_img/content_ink/ink_3.png
Binary file is not shown
 
client/resources/img/new_img/content_ink/ink_4.png (Binary) (added)
+++ client/resources/img/new_img/content_ink/ink_4.png
Binary file is not shown
 
client/resources/img/new_img/content_ink/return_v2.png (Binary) (added)
+++ client/resources/img/new_img/content_ink/return_v2.png
Binary file is not shown
 
client/resources/img/new_img/dashboard/btn.png (Binary) (added)
+++ client/resources/img/new_img/dashboard/btn.png
Binary file is not shown
 
client/resources/img/new_img/dashboard/rabbit.png (Binary) (added)
+++ client/resources/img/new_img/dashboard/rabbit.png
Binary file is not shown
 
client/resources/img/new_img/icon/play_icon.png (Binary) (added)
+++ client/resources/img/new_img/icon/play_icon.png
Binary file is not shown
 
client/resources/img/new_img/icon/search-icon.png (Binary) (added)
+++ client/resources/img/new_img/icon/search-icon.png
Binary file is not shown
 
client/resources/img/new_img/logo_v2.png (Binary) (added)
+++ client/resources/img/new_img/logo_v2.png
Binary file is not shown
 
client/resources/img/new_img/mypage/background.png (Binary) (added)
+++ client/resources/img/new_img/mypage/background.png
Binary file is not shown
 
client/resources/img/new_img/mypage/photoBtn.png (Binary) (added)
+++ client/resources/img/new_img/mypage/photoBtn.png
Binary file is not shown
 
client/resources/img/new_img/photobook/background.png (Binary) (added)
+++ client/resources/img/new_img/photobook/background.png
Binary file is not shown
 
client/resources/img/new_img/photobook/down_btn.png (Binary) (added)
+++ client/resources/img/new_img/photobook/down_btn.png
Binary file is not shown
 
client/resources/img/new_img/photobook/heart.png (Binary) (added)
+++ client/resources/img/new_img/photobook/heart.png
Binary file is not shown
 
client/resources/img/new_img/photobook/heart_click.png (Binary) (added)
+++ client/resources/img/new_img/photobook/heart_click.png
Binary file is not shown
 
client/resources/img/new_img/photobook/page.png (Binary) (added)
+++ client/resources/img/new_img/photobook/page.png
Binary file is not shown
 
client/resources/img/new_img/photobook/page_click.png (Binary) (added)
+++ client/resources/img/new_img/photobook/page_click.png
Binary file is not shown
 
client/resources/img/new_img/photobook/photo.png (Binary) (added)
+++ client/resources/img/new_img/photobook/photo.png
Binary file is not shown
 
client/resources/img/new_img/photobook/up_btn.png (Binary) (added)
+++ client/resources/img/new_img/photobook/up_btn.png
Binary file is not shown
client/views/Login.vue
--- client/views/Login.vue
+++ client/views/Login.vue
@@ -1,5 +1,5 @@
 <template>
-   <div class="login-container">
+   <div style="padding: 20px 20px;">
 
       <div class="login ">
          <div class="logo flex justify-end"><img src="../resources/img/logo.png" alt=""></div>
@@ -57,12 +57,13 @@
          <div class="find-form mt30" v-if="selectedTab === 'tab1'">
             <div class="mb20 flex justify-between align-center">
                <p class="title2" for="username" style="width: 12rem;">이름</p>
-               <input class="data-wrap" type="text" id="username" v-model="findUserNm" placeholder="이름을 입력하세요."  style="width: 45rem;" >
+               <input class="data-wrap" type="text" id="username" v-model="findUserNm" placeholder="이름을 입력하세요."
+                  style="width: 45rem;">
             </div>
             <div class="mb30 flex justify-between align-center">
                <p class="title2" for="username" style="width: 12rem;">전화번호</p>
-               <div class="flex justify-between align-center"><input class="data-wrap"
-                     style="width: 14rem;" type="text" id="username" v-model="findTel1">
+               <div class="flex justify-between align-center"><input class="data-wrap" style="width: 14rem;" type="text"
+                     id="username" v-model="findTel1">
                   <p class="title2">-</p><input class="data-wrap" style="width: 14rem;" type="text" id="username"
                      v-model="findTel2">
                   <p class="title2">-</p><input class="data-wrap" style="width: 14rem;" type="text" id="username"
@@ -82,15 +83,18 @@
          <div class="find-form mt30" v-else-if="selectedTab === 'tab2'">
             <div class="mb20 flex justify-between align-center">
                <p class="title2" for="username" style="width: 12rem;">아이디</p>
-               <input class="data-wrap" type="text" id="username" v-model="changeLoginId" placeholder="아이디를 입력하세요." style="width: 45rem;" >
+               <input class="data-wrap" type="text" id="username" v-model="changeLoginId" placeholder="아이디를 입력하세요."
+                  style="width: 45rem;">
             </div>
             <div class="mb20 flex justify-between align-center">
                <p class="title2" for="username" style="width: 14rem;">변경할 비밀번호</p>
-               <input class="data-wrap" type="password" id="username" v-model="changeUserPw" placeholder="변경할 비밀번호를 입력하세요." style="width: 45rem;" >
+               <input class="data-wrap" type="password" id="username" v-model="changeUserPw"
+                  placeholder="변경할 비밀번호를 입력하세요." style="width: 45rem;">
             </div>
             <div class="mb20 flex justify-between align-center">
                <p class="title2" for="username" style="width: 12rem;">비밀번호 확인</p>
-               <input class="data-wrap" type="password" id="username" v-model="changeUserPwCheck" placeholder="변경할 비밀번호를 입력하세요." style="width: 45rem;" >
+               <input class="data-wrap" type="password" id="username" v-model="changeUserPwCheck"
+                  placeholder="변경할 비밀번호를 입력하세요." style="width: 45rem;">
             </div>
             <div class="flex justify-center ">
                <button type="button" title="글쓰기" class="new-btn mr10" @click="closeBtn">
@@ -161,8 +165,8 @@
          findTel1: '',
          findTel2: '',
          findTel3: '',
-         findUserInfo : {},
-         changeLoginId:'',
+         findUserInfo: {},
+         changeLoginId: '',
          changeUserPw: '',
          changeUserPwCheck: '',
       }
client/views/component/TextToImage.vue
--- client/views/component/TextToImage.vue
+++ client/views/component/TextToImage.vue
@@ -1,32 +1,35 @@
 <template>
-    <div class="flex justify-center align-center" style="margin-top : 30px">
-        <div class="content title-box aibox">
-            <p class="title mt25 title-bg">모르는 단어를 물어봐~!</p>
-            <div class="propmt-container">
-                <div class="input-conatiner">
-                    <input v-model="word" @keyup.enter="startProgress(word)"/>
-                    <button @click="startProgress(word)"> <p> 생성하기 </p> </button>
+    <div class="flex justify-center align-center">
+        <div class="propmt-container">
+            <div class="input-conatiner">
+                <input v-model="word" @keyup.enter="startProgress(word)" />
+                <button @click="startProgress(word)">
+                    <img src="../../resources/img/new_img/icon/search-icon.png" style="width: 52px" />
+                </button>
+            </div>
+        </div>
+        <div class="modal-container flex" v-if="!modalClose">
+            <div class="progress-container" v-if="progressWidth < 100 && progressWidth > 1">
+                <div class="progress-bar" :style="{ width: progressWidth + '%' }">{{ Math.floor(progressWidth) }}%</div>
+                <!-- 로딩 이미지 -->
+                <div class="loading-container">
+                    <img src="../../resources/img/jumpingRabbit.gif" alt="Loading" class="loading-gif" />
+                    <p>잠깐만 기다려봐~</p>
                 </div>
-                <div class="progress-container">
-                    <div class="progress-bar" :style="{ width: progressWidth + '%' }">{{ Math.floor(progressWidth) }}%</div>
-                    
-                    <!-- 로딩 이미지 -->
-                    <div v-if="progressWidth < 100 && progressWidth > 1" class="loading-container">
-                        <img src="../../resources/img/jumpingRabbit.gif" alt="Loading" class="loading-gif"/>
-                        <p> 잠깐만 기다려봐~ </p>
-                    </div>
-
-                </div>
-                <div v-if="visibleWord" class="result-container">
-                    <img :src="imageSrc"/>
+            </div>
+            <div v-if="visibleWord" class="result-container">
+                <div class="flex align-center modal-box">
+                    <img :src="imageSrc" />
                     <div class="word-container">
-                        <h2> {{ inputWord }}  </h2>
+                        <h2>{{ inputWord }}</h2>
                     </div>
                 </div>
+                <button @click="handleModalClose">
+                    <img src="../../resources/img/btn25_93t_normal.png" alt="" style="width: auto" />
+                </button>
             </div>
         </div>
     </div>
-    
 </template>
 
 <script>
@@ -36,22 +39,22 @@
     data() {
         return {
             progressWidth: 0,
-            inputWord : "",
+            inputWord: '',
 
-            // 하드 코딩 -> 수정 필요 : API
-            word : "",
-            imageSrc : "",
+            word: '',
+            imageSrc: '',
             imageData: null, // 서버에서 받아온 이미지 데이터 저장
 
-            visibleWord : false,
+            visibleWord: false,
+            modalClose: true, // 초기 상태 === 닫힘
         };
     },
-    mounted() {
-        
-    },
+    mounted() {},
     methods: {
         // 상태 진행 바(progress bar)
         startProgress(word) {
+            this.modalClose = false;
+
             if (this.progressWidth == 100) {
                 this.resetProgress();
             }
@@ -72,7 +75,7 @@
                     clearInterval(progressInterval);
                     this.visibleWord = true;
 
-                     // 진행이 완료된 후에 이미지 데이터 렌더링
+                    // 진행이 완료된 후에 이미지 데이터 렌더링
                     if (this.imageData) {
                         this.imageSrc = this.imageUrl;
                     }
@@ -86,31 +89,38 @@
             this.inputWord = word;
             this.visibleWord = false;
         },
-        
+
         resetProgress() {
             this.progressWidth = 0;
             this.visibleWord = false;
-            this.imageSrc = ""; // 이미지 URL 초기화
+            this.imageSrc = ''; // 이미지 URL 초기화
             this.imageData = null; // 이미지 데이터 초기화
+            this.word = '';
+        },
+
+        handleModalClose() {
+            this.resetProgress();
+            this.modalClose = true;
+            console.log('모달 상태 : ', this.modalClose);
         },
 
         // 이미지 API
-        async getAiImage(){
-            const url = "http://takensoftai.iptime.org:20200/generate_json";
+        async getAiImage() {
+            const url = 'http://takensoftai.iptime.org:20200/generate_json';
             // console.log(`word : ${this.word}`);
             try {
                 const response = await axios({
                     url: url,
-                    method: "post",
+                    method: 'post',
                     headers: {
-                        "Content-Type": "application/json; charset=UTF-8",
+                        'Content-Type': 'application/json; charset=UTF-8',
                     },
                     responseType: 'arraybuffer',
                     data: {
-                        text: this.word
+                        text: this.word,
                     },
                 });
-                
+
                 // console.log(`응답 : ${response}`);
 
                 // 바이너리 데이터 -> Blob으로 변환
@@ -124,23 +134,22 @@
             } catch (err) {
                 console.log(err);
             }
-        }
-    }
-}
+        },
+    },
+};
 </script>
 
 <style>
-.propmt-container{
-    padding: 0px 50px 30px 50px;
+.propmt-container {
+    /*padding: 0px 50px 30px 50px;*/
 }
 /* 입력 컨테이너  */
-.input-conatiner{
+.input-conatiner {
     display: flex;
     align-items: center;
-    gap: 30px;
-    height: 50px;
+    width: 80rem;
 }
-.input-conatiner input{
+.input-conatiner input {
     width: 90%;
     height: 100%;
     padding: 10px 30px;
@@ -148,34 +157,35 @@
     border-radius: 10px;
     box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px;
     outline: none;
-    font-size : 28px;
+    font-size: 28px;
 }
-.input-conatiner button{
+.input-conatiner button {
     width: 15%;
     height: 100%;
     border: none;
     border-radius: 10px;
     cursor: pointer;
-    background-color: #ffba08;
+    /*background-color: #ffba08;*/
     display: flex;
     justify-content: center;
     align-items: center;
 }
 
-.input-conatiner button p{
-    font-size : 28px;
+.input-conatiner button p {
+    font-size: 28px;
 }
 
 /* 진행 상태바 */
 .progress-container {
-    width: 100%;
+    width: 50rem;
+    height: fit-content;
     background-color: #ffffff;
-    border-radius: 5px;
+    border-radius: 10px;
     overflow: hidden;
-    margin-top: 20px;
-    display : flex;
+    display: flex;
     flex-direction: column;
-    gap :30px;
+    gap: 30px;
+    padding: 30px;
 }
 
 .progress-bar {
@@ -185,42 +195,43 @@
     text-align: center;
     line-height: 30px;
     color: white;
-    border : none;
+    border: none;
     border-radius: 5px;
     transition: width 0.3s;
-    font-size : 20px;
+    font-size: 20px;
 }
 
 /* 로딩 gif */
-.loading-container{
-    display : flex;
-    flex-direction: column;
-    align-items: center;
-    gap: 30px;
-    text-align: center;
-    margin-top : 30px;
-    padding-bottom : 40px;
-}
-.loading-gif{
-    width: 25%;
-    border-radius: 500px;
-}
-.loading-container p {
-    font-size : 25px;
-}
-
-/* 결과 container */
-.result-container{
-    margin-top: 30px;
+.loading-container {
     display: flex;
     flex-direction: column;
     align-items: center;
     gap: 30px;
+    text-align: center;
 }
-.result-container img{
-    width : 30%;
+.loading-gif {
+    width: 52%;
+    border-radius: 500px;
 }
-.word-container{
+.loading-container p {
+    font-size: 25px;
+}
+
+/* 결과 container */
+.result-container {
+    display: flex;
+    flex-direction: row;
+    align-items: flex-start;
+    background-color: #fff;
+    padding: 30px;
+    border-radius: 10px;
+    width: 50rem;
+    height: 100%;
+}
+.result-container img {
+    width: 60%;
+}
+.word-container {
     width: 30%;
     text-align: center;
     padding: 20px 0px;
@@ -231,14 +242,31 @@
     gap: 15px;
 }
 .word-container h2 {
-    font-size : 28px;
+    font-size: 28px;
 }
 
-.aibox{
+.aibox {
     display: flex;
     flex-direction: column;
     justify-content: center;
     height: auto;
     padding: 30px 0px;
 }
+
+.modal-container {
+    width: 50rem;
+    height: 40rem;
+    border-radius: 10px;
+    z-index: 100;
+    position: absolute;
+    top: 25rem;
+    right: 10%;
+    box-shadow: rgba(0, 0, 0, 0.16) 0px 3px 6px, rgba(0, 0, 0, 0.23) 0px 3px 6px;
+}
+
+.modal-box {
+    gap: 30px;
+    margin-top: 10%;
+    margin-left: 5%;
+}
 </style>
client/views/layout/Header.vue
--- client/views/layout/Header.vue
+++ client/views/layout/Header.vue
@@ -1,227 +1,267 @@
 <template>
-    <div class="header flex justify-between align-center header-box">
-        <div>
-            <router-link to="/MyPlan.page">
-                <div class="logo"><img src="../../resources/img/logo2.png" alt="" /></div>
-            </router-link>
+  <div class="header flex justify-between align-center header-box">
+    <div>
+      <router-link to="/MyPlan.page">
+        <div class="logo">
+          <img src="../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
-        <div class="flex align-center">
-            <Menu :currentRoute="$route.path"></Menu>
-            <div class="notice" @click="buttonSearch">
-                <img src="../../resources/img/icon2.png" alt="" />
-                <p>{{ unCheck }}</p>
-            </div>
-            <img src="../../resources/img/new_img/profile_img.png" alt="" />
-            <div class="look-btn" @click="logout">
-                <img src="../../resources/img/new_img/icon/logout_icon.png" alt="" />
-            </div>
-            <div class="popup-wrap" v-show="searchOpen">
-                <div class="popup-box">
-                    <div class="flex mb10 justify-between">
-                        <p class="popup-title">알림</p>
-                        <button type="button" class="popup-close-btn" @click="closeBtn">
-                            <svg-icon type="mdi" :path="mdiWindowClose" class="close-btn"></svg-icon>
-                        </button>
-                    </div>
-                    <article
-                        class="flex justify-between mt20"
-                        v-for="item in dataList"
-                        :key="item.id"
-                        :class="{ 'selected-row': selectedRow == item.dataList }"
-                    >
-                        <img style="width: fit-content" src="../../resources/img/img200_13p.png" alt="" />
-                        <p class="title1 ml20" style="width: 60%">{{ item.bbsTtl }}</p>
-                        <button @click="buttonSearch2(item)" type="button" title="글쓰기" class="new-btn">
-                            자세히 보기
-                        </button>
-                    </article>
-                    <article class="table-pagination flex justify-center align-center mb20 mt30" style="gap: 10px">
-                        <button @click="previousPage" :disabled="page === 1">이전</button>
-                        <button class="selected-btn">{{ page }}</button>
-                        <button @click="nextPage" :disabled="page === totalPages">다음</button>
-                    </article>
-                </div>
-            </div>
-            <div class="popup-wrap popup2" v-show="searchOpen2">
-                <div class="popup-box">
-                    <div class="flex mb10 justify-between">
-                        <p class="popup-title">알림 자세히 보기</p>
-                        <button type="button" class="popup-close-btn" @click="closeBtn2">
-                            <svg-icon type="mdi" :path="mdiWindowClose" class="close-btn"></svg-icon>
-                        </button>
-                    </div>
-                    <div class="board-wrap">
-                        <div class="flex align-center">
-                            <label for="" class="title2">{{ boardData.bbsTtl }}</label>
-                        </div>
-                        <hr />
-                        <!-- <textarea readonly name="" id="">{{ boardData.bbsCnt }}</textarea> -->
-                    </div>
-                    <div class="flex justify-center mt20">
-                        <button type="button" title="확인" class="new-btn" @click="closeBtn2">확인</button>
-                    </div>
-                </div>
-            </div>
-        </div>
+      </router-link>
     </div>
+    <div class="flex align-center">
+      <Menu :currentRoute="$route.path"></Menu>
+      <div class="notice" @click="buttonSearch">
+        <img src="../../resources/img/icon2.png" alt="" />
+        <p>{{ unCheck }}</p>
+      </div>
+      <img src="../../resources/img/new_img/profile_img.png" alt="" />
+      <div class="look-btn" @click="logout">
+        <img src="../../resources/img/new_img/icon/logout_icon.png" alt="" />
+      </div>
+      <div class="popup-wrap" v-show="searchOpen">
+        <div class="popup-box">
+          <div class="flex mb10 justify-between">
+            <p class="popup-title">알림</p>
+            <button type="button" class="popup-close-btn" @click="closeBtn">
+              <svg-icon
+                type="mdi"
+                :path="mdiWindowClose"
+                class="close-btn"
+              ></svg-icon>
+            </button>
+          </div>
+          <article
+            class="flex justify-between mt20"
+            v-for="item in dataList"
+            :key="item.id"
+            :class="{ 'selected-row': selectedRow == item.dataList }"
+          >
+            <img
+              style="width: fit-content"
+              src="../../resources/img/img200_13p.png"
+              alt=""
+            />
+            <p class="title1 ml20" style="width: 60%">{{ item.bbsTtl }}</p>
+            <button
+              @click="buttonSearch2(item)"
+              type="button"
+              title="글쓰기"
+              class="new-btn"
+            >
+              자세히 보기
+            </button>
+          </article>
+          <article
+            class="table-pagination flex justify-center align-center mb20 mt30"
+            style="gap: 10px"
+          >
+            <button @click="previousPage" :disabled="page === 1">이전</button>
+            <button class="selected-btn">{{ page }}</button>
+            <button @click="nextPage" :disabled="page === totalPages">
+              다음
+            </button>
+          </article>
+        </div>
+      </div>
+      <div class="popup-wrap popup2" v-show="searchOpen2">
+        <div class="popup-box">
+          <div class="flex mb10 justify-between">
+            <p class="popup-title">알림 자세히 보기</p>
+            <button type="button" class="popup-close-btn" @click="closeBtn2">
+              <svg-icon
+                type="mdi"
+                :path="mdiWindowClose"
+                class="close-btn"
+              ></svg-icon>
+            </button>
+          </div>
+          <div class="board-wrap">
+            <div class="flex align-center">
+              <label for="" class="title2">{{ boardData.bbsTtl }}</label>
+            </div>
+            <hr />
+            <!-- <textarea readonly name="" id="">{{ boardData.bbsCnt }}</textarea> -->
+          </div>
+          <div class="flex justify-center mt20">
+            <button
+              type="button"
+              title="확인"
+              class="new-btn"
+              @click="closeBtn2"
+            >
+              확인
+            </button>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script>
-import SvgIcon from '@jamescoyle/vue-icon';
-import { mdiMagnify, mdiWindowClose } from '@mdi/js';
-import axios from 'axios';
-import Menu from './Menu.vue';
+import SvgIcon from "@jamescoyle/vue-icon";
+import { mdiMagnify, mdiWindowClose } from "@mdi/js";
+import axios from "axios";
+import Menu from "./Menu.vue";
 export default {
-    data() {
-        return {
-            mdiWindowClose: mdiWindowClose,
-            showModal: false,
-            searchOpen: false,
-            searchOpen2: false,
+  data() {
+    return {
+      mdiWindowClose: mdiWindowClose,
+      showModal: false,
+      searchOpen: false,
+      searchOpen2: false,
 
-            // 게시글 정보
-            dataList: [],
-            totalBoard: null,
-            selectedRow: '',
-            unCheck: null,
+      // 게시글 정보
+      dataList: [],
+      totalBoard: null,
+      selectedRow: "",
+      unCheck: null,
 
-            boardData: [],
+      boardData: [],
 
-            // 페이징 정보
-            page: 1,
-            pageSize: 2,
-            totalpages: null,
+      // 페이징 정보
+      page: 1,
+      pageSize: 2,
+      totalpages: null,
 
-            // 사용자 정보
-            userId: 'USID_000000000000006',
-            stdId: '',
-        };
+      // 사용자 정보
+      userId: "USID_000000000000006",
+      stdId: "",
+    };
+  },
+  methods: {
+    closeModal() {
+      this.showModal = false;
     },
-    methods: {
-        closeModal() {
-            this.showModal = false;
-        },
-        buttonSearch() {
-            this.searchOpen = true;
-        },
-        buttonSearch2(item) {
-            const vm = this;
-            this.searchOpen2 = true;
-            this.boardData = item;
-
-            axios({
-                url: '/board/boardStudentCheck.json',
-                method: 'post',
-                headers: {
-                    'Content-Type': 'application/json; charset=UTF-8',
-                },
-                data: {
-                    bbsId: item.bbsId,
-                    stdId: vm.stdId,
-                },
-            })
-                .then(function (res) {
-                    vm.boardList();
-                })
-                .catch(function (error) {
-                    console.log('result - error : ', error);
-                });
-        },
-        closeBtn() {
-            this.searchOpen = false;
-        },
-        closeBtn2() {
-            this.searchOpen2 = false;
-        },
-
-        logout() {
-            const result = confirm('로그아웃 하시겠습니까?');
-            if (result) {
-                this.$store.dispatch('logout');
-                this.goToPage('login');
-            } else {
-                return;
-            }
-        },
-        goToPage(page) {
-            this.$router.push({ name: page });
-        },
-
-        // 공지 조회
-        boardList() {
-            const vm = this;
-            axios({
-                url: '/board/boardStudentList.json',
-                method: 'post',
-                headers: {
-                    'Content-Type': 'application/json; charset=UTF-8',
-                },
-                data: { page: vm.page, pageSize: vm.pageSize, userId: vm.userId },
-            })
-                .then(function (res) {
-                    vm.dataList = res.data.result[0].boardClass[0].board;
-                    vm.userNm = res.data.result[0].userNm;
-                    vm.userId = res.data.result[0].userId;
-                    vm.unCheck = res.data.unCheck;
-                    vm.stdId = res.data.result[0].boardClass[0].board[0].boardStudent[0].stdId;
-                    vm.totalBoard = res.data.totalBoard;
-                    vm.totalPages = Math.ceil(vm.totalBoard / vm.pageSize);
-                })
-                .catch(function (error) {
-                    console.log('result - error : ', error);
-                });
-        },
-
-        previousPage() {
-            if (this.page > 1) {
-                this.page -= 1;
-                this.boardList();
-            }
-        },
-
-        nextPage() {
-            if (this.page < this.totalPages) {
-                this.page += 1;
-                this.boardList();
-            }
-        },
+    buttonSearch() {
+      this.searchOpen = true;
     },
-    watch: {},
-    computed: {},
-    components: {
-        SvgIcon,
-        Menu: Menu,
+    buttonSearch2(item) {
+      const vm = this;
+      this.searchOpen2 = true;
+      this.boardData = item;
+
+      axios({
+        url: "/board/boardStudentCheck.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
+        },
+        data: {
+          bbsId: item.bbsId,
+          stdId: vm.stdId,
+        },
+      })
+        .then(function (res) {
+          vm.boardList();
+        })
+        .catch(function (error) {
+          console.log("result - error : ", error);
+        });
     },
-    mounted() {
-        console.log('Header mounted');
+    closeBtn() {
+      this.searchOpen = false;
+    },
+    closeBtn2() {
+      this.searchOpen2 = false;
+    },
+
+    logout() {
+      const result = confirm("로그아웃 하시겠습니까?");
+      if (result) {
+        this.$store.dispatch("logout");
+        this.goToPage("login");
+      } else {
+        return;
+      }
+    },
+    goToPage(page) {
+      this.$router.push({ name: page });
+    },
+
+    // 공지 조회
+    boardList() {
+      const vm = this;
+      axios({
+        url: "/board/boardStudentList.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
+        },
+        data: { page: vm.page, pageSize: vm.pageSize, userId: vm.userId },
+      })
+        .then(function (res) {
+          vm.dataList = res.data.result[0].boardClass[0].board;
+          vm.userNm = res.data.result[0].userNm;
+          vm.userId = res.data.result[0].userId;
+          vm.unCheck = res.data.unCheck;
+          vm.stdId =
+            res.data.result[0].boardClass[0].board[0].boardStudent[0].stdId;
+          vm.totalBoard = res.data.totalBoard;
+          vm.totalPages = Math.ceil(vm.totalBoard / vm.pageSize);
+        })
+        .catch(function (error) {
+          console.log("result - error : ", error);
+        });
+    },
+
+    previousPage() {
+      if (this.page > 1) {
+        this.page -= 1;
         this.boardList();
+      }
     },
+
+    nextPage() {
+      if (this.page < this.totalPages) {
+        this.page += 1;
+        this.boardList();
+      }
+    },
+  },
+  watch: {},
+  computed: {},
+  components: {
+    SvgIcon,
+    Menu: Menu,
+  },
+  mounted() {
+    console.log("Header mounted");
+    this.boardList();
+  },
 };
 </script>
 <style scoped>
 .popup-wrap {
-    position: fixed;
-    background-color: transparent;
-    width: fit-content;
-    height: fit-content;
-    z-index: 10;
+  position: fixed;
+  background-color: transparent;
+  width: fit-content;
+  height: fit-content;
+  z-index: 10;
 }
 
 .popup-box {
-    top: 300px;
-    left: 62%;
+  top: 300px;
+  left: 62%;
 }
 
 .popup2 .popup-box {
-    top: 450px;
-    left: 38%;
+  top: 450px;
+  left: 38%;
 }
 
+/* 
 .header-box {
     background-color: white;
     padding: 10px 50px;
     box-shadow: rgba(14, 63, 126, 0.04) 0px 0px 0px 1px, rgba(42, 51, 69, 0.04) 0px 1px 1px -0.5px,
         rgba(42, 51, 70, 0.04) 0px 3px 3px -1.5px, rgba(42, 51, 70, 0.04) 0px 6px 6px -3px,
         rgba(14, 63, 126, 0.04) 0px 12px 12px -6px, rgba(14, 63, 126, 0.04) 0px 24px 24px -12px;
+} */
+
+.header-box {
+  background-color: #ffffff80;
+  padding: 10px 50px;
+  /* box-shadow: rgba(14, 63, 126, 0.04) 0px 0px 0px 1px, rgba(42, 51, 69, 0.04) 0px 1px 1px -0.5px, rgba(42, 51, 70, 0.04) 0px 3px 3px -1.5px, rgba(42, 51, 70, 0.04) 0px 6px 6px -3px, rgba(14, 63, 126, 0.04) 0px 12px 12px -6px, rgba(14, 63, 126, 0.04) 0px 24px 24px -12px; */
+  backdrop-filter: blur(10px);
 }
 </style>
client/views/layout/Side.vue
--- client/views/layout/Side.vue
+++ client/views/layout/Side.vue
@@ -1,43 +1,54 @@
 <template>
-    <div class="side">
-        <div class="profile mb30">
-            <div class="flex align-center" style="gap: 18px">
-                <img src="../../resources/img/img16_s.png" alt="" style="border-radius: 100%; width: 10rem" />
-                <div class="mt25">
-                    <div>
-                        <p class="name mb10">{{ studentInfo.studentName }}</p>
-                        <p class="mb5">
-                            <span><img src="../../resources/img/new_img/icon/school_icon.png" alt="" /></span>
-                            {{ studentInfo.institutionName }} {{ studentInfo.grade }}학년
-                            {{ studentInfo.className }}
-                        </p>
-                    </div>
-                    <!-- <progress-bar :progress="progress"></progress-bar> -->
-                </div>
-            </div>
-            <div class="problem-box mt25">
-                <p style="font-weight: bold">
-                    지금까지 푼 총 문제 수 :
-                    <span style="color: #9528b7; font-size: 16px; font-weight: bold"
-                        >{{ studentInfo.totalProblemsSolved }}개</span
-                    >
-                </p>
-            </div>
+  <div class="side">
+    <div class="profile mb30">
+      <div class="flex align-center" style="gap: 18px">
+        <img
+          src="../../resources/img/img16_s.png"
+          alt=""
+          style="border-radius: 100%; width: 10rem"
+        />
+        <div class="mt25">
+          <div>
+            <p class="name mb10">{{ studentInfo.studentName }}</p>
+            <p class="mb5">
+              <span
+                ><img
+                  src="../../resources/img/new_img/icon/school_icon.png"
+                  alt=""
+              /></span>
+              {{ studentInfo.institutionName }} {{ studentInfo.grade }}학년
+              {{ studentInfo.className }}
+            </p>
+          </div>
+          <!-- <progress-bar :progress="progress"></progress-bar> -->
         </div>
-        <hr style="margin: 25px 20px" />
-        <div class="history-box">
-            <p class="title2 mb20">최근 학습 히스토리</p>
-            <ul class="flex-column" style="gap: 10px">
-                <!-- 더미 데이터 -->
-                <li>· 지학사 3학년 1학기</li>
-                <li>· 지학사 3학년 2학기</li>
-                <!-- 여기까지 -->
-                <li v-for="historyItem in studentInfo.history" :key="historyItem.unitId">
-                    · [{{ historyItem.bookName }}] {{ historyItem.unitName }}
-                </li>
-            </ul>
-        </div>
-        <!-- <div class="ask mb30">
+      </div>
+      <div class="problem-box mt25">
+        <p style="font-weight: bold">
+          지금까지 푼 총 문제 수 :
+          <span style="color: #9528b7; font-size: 16px; font-weight: bold"
+            >{{ studentInfo.totalProblemsSolved }}개</span
+          >
+        </p>
+      </div>
+    </div>
+    <hr style="margin: 25px 20px" />
+    <div class="history-box">
+      <p class="title2 mb20">최근 학습 히스토리</p>
+      <ul class="flex-column" style="gap: 10px">
+        <!-- 더미 데이터 -->
+        <li>· 에듀캐롯 3학년 1학기</li>
+        <li>· 에듀캐롯 3학년 2학기</li>
+        <!-- 여기까지 -->
+        <li
+          v-for="historyItem in studentInfo.history"
+          :key="historyItem.unitId"
+        >
+          · [{{ historyItem.bookName }}] {{ historyItem.unitName }}
+        </li>
+      </ul>
+    </div>
+    <!-- <div class="ask mb30">
             <p class="title1 mb15">선생님께 질문 있어요~</p>
 
             <div class="memo mb15">
@@ -52,231 +63,255 @@
                 <button @click="updateQuestion">질문하기</button>
             </div>
         </div> -->
-        <div class="mt25">
-            <div class="button-box flex">
-                <button @click="handleClickEvent" style="width: 100%">
-                    <img
-                        class="look-btn"
-                        src="../../resources/img/new_img/plan/wrong_note_btn.png"
-                        alt=""
-                        style="width: 100%"
-                    />
-                </button>
-            </div>
-            <div class="button-box flex">
-                <button @click="goPopupOpen" style="width: 100%">
-                    <img src="../../resources/img/new_img/plan/question_btn.png" alt="" style="width: 100%" />
-                </button>
-            </div>
-        </div>
+    <div class="mt25">
+      <div class="button-box flex">
+        <button @click="handleClickEvent" style="width: 100%">
+          <img
+            class="look-btn"
+            src="../../resources/img/new_img/plan/wrong_note_btn.png"
+            alt=""
+            style="width: 100%"
+          />
+        </button>
+      </div>
+      <div class="button-box flex">
+        <button @click="goPopupOpen" style="width: 100%">
+          <img
+            src="../../resources/img/new_img/plan/question_btn.png"
+            alt=""
+            style="width: 100%"
+          />
+        </button>
+      </div>
     </div>
-    <!-- 질문하기 팝업 -->
-    <div class="popup-wrap" v-if="this.popupOpen === true" style="z-index: 100">
-        <div class="question-popup">
-            <div class="flex justify-between align-center">
-                <p class="question-text mt20">선생님께 질문하기</p>
-                <img class="look-btn" @click="goPopupClose" src="../../resources/img/btn25_93t_normal.png" alt="" />
-            </div>
-            <p style="color: #8c8c8c; font-size: 20px; margin: 40px 0px">선생님! 질문있어요!!</p>
-            <div class="memo mt25">
-                <p class="title1 memo-text">내용</p>
-                <textarea name="" id="" placeholder="궁금한 것을 적어보세요." v-model="question"></textarea>
-            </div>
-            <div class="questionBtn-box flex justify-end" style="gap: 15px">
-                <button style="border-color: #eaedf4; color: #8c8c8c" @click="goPopupClose">취소하기</button>
-                <button @click="updateQuestion" style="border-color: #6327b9; color: white; background-color: #6327b9">
-                    질문하기
-                </button>
-            </div>
-        </div>
+  </div>
+  <!-- 질문하기 팝업 -->
+  <div class="popup-wrap" v-if="this.popupOpen === true" style="z-index: 100">
+    <div class="question-popup">
+      <div class="flex justify-between align-center">
+        <p class="question-text mt20">선생님께 질문하기</p>
+        <img
+          class="look-btn"
+          @click="goPopupClose"
+          src="../../resources/img/btn25_93t_normal.png"
+          alt=""
+        />
+      </div>
+      <p style="color: #8c8c8c; font-size: 20px; margin: 40px 0px">
+        선생님! 질문있어요!!
+      </p>
+      <div class="memo mt25">
+        <p class="title1 memo-text">내용</p>
+        <textarea
+          name=""
+          id=""
+          placeholder="궁금한 것을 적어보세요."
+          v-model="question"
+        ></textarea>
+      </div>
+      <div class="questionBtn-box flex justify-end" style="gap: 15px">
+        <button
+          style="border-color: #eaedf4; color: #8c8c8c"
+          @click="goPopupClose"
+        >
+          취소하기
+        </button>
+        <button
+          @click="updateQuestion"
+          style="border-color: #6327b9; color: white; background-color: #6327b9"
+        >
+          질문하기
+        </button>
+      </div>
     </div>
+  </div>
 </template>
 
 <script>
-import ProgressBar from '../component/ProgressBar.vue';
-import axios from 'axios';
+import ProgressBar from "../component/ProgressBar.vue";
+import axios from "axios";
 
 export default {
-    data() {
-        return {
-            progress: 20,
-            studentInfo: {
-                studentName: '',
-                institutionName: '',
-                grade: '',
-                className: '',
-                studentQuestion: '',
-                history: [],
-            },
-            userId: '1', // userId 임시 설정
+  data() {
+    return {
+      progress: 20,
+      studentInfo: {
+        studentName: "",
+        institutionName: "",
+        grade: "",
+        className: "",
+        studentQuestion: "",
+        history: [],
+      },
+      userId: "1", // userId 임시 설정
 
-            popupOpen: false,
-            question: null,
-        };
+      popupOpen: false,
+      question: null,
+    };
+  },
+  methods: {
+    pageSetting() {
+      this.userId = this.$store.getters.getUserInfo.userId;
+      console.log("유저 아이디: ", this.userId);
+      this.fetchStudentInfo();
     },
-    methods: {
-        pageSetting() {
-            this.userId = this.$store.getters.getUserInfo.userId;
-            console.log('유저 아이디: ', this.userId);
-            this.fetchStudentInfo();
-        },
 
-        // 학생 정보를 가져오는 메서드
-        fetchStudentInfo() {
-            axios
-                .post('/studentInfo/getInfo.json', { userId: this.userId })
-                .then((response) => {
-                    console.log('학생 정보 조회 : ', response.data);
-                    this.studentInfo = response.data;
-                })
-                .catch((error) => {
-                    console.error('학생 정보 가져오기 실패:', error);
-                });
-        },
-
-        // 질문 업데이트 메서드
-        updateQuestion() {
-            if (this.question === null) {
-                alert('질문을 입력해주세요');
-                return;
-            }
-            axios
-                .post('/studentInfo/updateQuestion.json', {
-                    userId: this.userId,
-                    // userId: 'USID_000000000000002',
-                    studentQuestion: this.question,
-                })
-                .then((response) => {
-                    console.log('질문이 성공적으로 업데이트되었습니다.');
-                    alert('질문이 성공적으로 업데이트되었습니다.');
-                })
-                .catch((error) => {
-                    console.error('질문 업데이트 실패:', error);
-                    alert('질문 업데이트에 실패했습니다.');
-                });
-            this.question = null;
-        },
-
-        handleClick() {
-            this.toggleText();
-            this.goToPage('PreviewNote');
-        },
-
-        handleClick() {
-            this.toggleTextAndNavigate();
-        },
-
-        toggleTextAndNavigate() {
-            if (this.buttonText === '오답노트') {
-                this.buttonText = '학습 코스';
-                this.goToPage('PreviewNote');
-                // 버튼 텍스트가 '학습 코스'일 때 이동할 경로
-            } else {
-                this.buttonText = '오답노트';
-                this.goToPage('Dashboard');
-                // 버튼 텍스트가 '오답노트'일 때 이동할 경로
-            }
-        },
-
-        handleClickEvent() {
-            this.goToPage('PreviewNote');
-        },
-
-        goToPage(page) {
-            this.$router.push({ name: page });
-        },
-
-        goPopupOpen() {
-            this.popupOpen = true;
-        },
-        goPopupClose() {
-            this.popupOpen = false;
-            this.question = null;
-        },
+    // 학생 정보를 가져오는 메서드
+    fetchStudentInfo() {
+      axios
+        .post("/studentInfo/getInfo.json", { userId: this.userId })
+        .then((response) => {
+          console.log("학생 정보 조회 : ", response.data);
+          this.studentInfo = response.data;
+        })
+        .catch((error) => {
+          console.error("학생 정보 가져오기 실패:", error);
+        });
     },
-    watch: {},
-    computed: {},
-    components: {
-        ProgressBar,
+
+    // 질문 업데이트 메서드
+    updateQuestion() {
+      if (this.question === null) {
+        alert("질문을 입력해주세요");
+        return;
+      }
+      axios
+        .post("/studentInfo/updateQuestion.json", {
+          userId: this.userId,
+          // userId: 'USID_000000000000002',
+          studentQuestion: this.question,
+        })
+        .then((response) => {
+          console.log("질문이 성공적으로 업데이트되었습니다.");
+          alert("질문이 성공적으로 업데이트되었습니다.");
+        })
+        .catch((error) => {
+          console.error("질문 업데이트 실패:", error);
+          alert("질문 업데이트에 실패했습니다.");
+        });
+      this.question = null;
     },
-    mounted() {
-        console.log('Side mounted');
-        this.pageSetting();
+
+    handleClick() {
+      this.toggleText();
+      this.goToPage("PreviewNote");
     },
+
+    handleClick() {
+      this.toggleTextAndNavigate();
+    },
+
+    toggleTextAndNavigate() {
+      if (this.buttonText === "오답노트") {
+        this.buttonText = "학습 코스";
+        this.goToPage("PreviewNote");
+        // 버튼 텍스트가 '학습 코스'일 때 이동할 경로
+      } else {
+        this.buttonText = "오답노트";
+        this.goToPage("Dashboard");
+        // 버튼 텍스트가 '오답노트'일 때 이동할 경로
+      }
+    },
+
+    handleClickEvent() {
+      this.goToPage("PreviewNote");
+    },
+
+    goToPage(page) {
+      this.$router.push({ name: page });
+    },
+
+    goPopupOpen() {
+      this.popupOpen = true;
+    },
+    goPopupClose() {
+      this.popupOpen = false;
+      this.question = null;
+    },
+  },
+  watch: {},
+  computed: {},
+  components: {
+    ProgressBar,
+  },
+  mounted() {
+    console.log("Side mounted");
+    this.pageSetting();
+  },
 };
 </script>
 <style scoped>
 .login-btn img {
-    width: 430px;
-    height: 85px;
+  width: 430px;
+  height: 85px;
 }
 
 .problem-box {
-    display: flex;
-    align-items: center;
-    justify-content: center;
-    border: 2px solid #6327b9;
-    background-color: #f0eaf8;
-    border-radius: 8px;
-    padding: 10px 10px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  border: 2px solid #6327b9;
+  background-color: #f0eaf8;
+  border-radius: 8px;
+  padding: 10px 10px;
 }
 
 .history-box {
-    background-color: white;
-    padding: 30px 20px;
-    border: 1px solid #c6c6c6;
-    border-radius: 10px;
-    margin: 25px 20px 0px;
+  background-color: white;
+  padding: 30px 20px;
+  border: 1px solid #c6c6c6;
+  border-radius: 10px;
+  margin: 25px 20px 0px;
 }
 
 .history-box li {
-    background-color: #eaedf4;
-    border-radius: 10px;
-    font-size: 18px;
-    list-style-type: none;
-    padding: 10px;
+  background-color: #eaedf4;
+  border-radius: 10px;
+  font-size: 18px;
+  list-style-type: none;
+  padding: 10px;
 }
 
 .button-box {
-    margin: 10px 20px;
+  margin: 10px 20px;
 }
 
 .question-popup {
-    background-color: white;
-    border-radius: 10px;
-    padding: 30px 40px;
-    position: absolute;
-    top: 15%;
-    left: 25%;
-    width: 100rem;
+  background-color: white;
+  border-radius: 10px;
+  padding: 30px 40px;
+  position: absolute;
+  top: 15%;
+  left: 25%;
+  width: 100rem;
 }
 
 .question-text {
-    font-family: 'ONEMobilePOPOTF';
-    font-size: 32px;
-    color: #6327b9;
+  font-family: "ONEMobilePOPOTF";
+  font-size: 32px;
+  color: #6327b9;
 }
 
 .memo-text {
-    font-family: 'ONEMobilePOPOTF';
-    color: #6327b9;
+  font-family: "ONEMobilePOPOTF";
+  color: #6327b9;
 }
 
 .memo textarea {
-    border: 2px solid #cac0e3;
-    border-radius: 10px;
-    width: 100%;
-    padding: 20px;
-    height: 30rem;
-    margin: 20px 0px 40px;
+  border: 2px solid #cac0e3;
+  border-radius: 10px;
+  width: 100%;
+  padding: 20px;
+  height: 30rem;
+  margin: 20px 0px 40px;
 }
 
 .questionBtn-box button {
-    font-size: 18px;
-    padding: 8px 30px;
-    border: 2px solid;
-    border-radius: 8px;
-    font-weight: bold;
-    font-family: 'ONEMobileOTF-Regular';
+  font-size: 18px;
+  padding: 8px 30px;
+  border: 2px solid;
+  border-radius: 8px;
+  font-weight: bold;
+  font-family: "ONEMobileOTF-Regular";
 }
 </style>
client/views/pages/main/Chapter/Chapter1.vue
--- client/views/pages/main/Chapter/Chapter1.vue
+++ client/views/pages/main/Chapter/Chapter1.vue
@@ -3,18 +3,19 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
-    <div class="title-box mb25 flex align-center mt40" style="
-    justify-content: space-between;
-">
+    <div
+      class="title-box mb25 flex align-center mt40"
+      style="justify-content: space-between"
+    >
       <div>
         <span class="title mr40">1. Hello WORLD</span>
         <span class="subtitle">my name is dd</span>
       </div>
-      <button class="completeBtn" @click="complete"> 학습 종료 </button>
+      <button class="completeBtn" @click="complete">학습 종료</button>
     </div>
     <div class="flex justify-between align-center">
       <div class="pre-btn">
@@ -43,8 +44,11 @@
   },
   methods: {
     complete() {
-        const { unit_id, book_id } = this.$route.query;
-        this.$router.push({ name: 'Dashboard', query: { value: 1, unit_id, book_id } });
+      const { unit_id, book_id } = this.$route.query;
+      this.$router.push({
+        name: "Dashboard",
+        query: { value: 1, unit_id, book_id },
+      });
     },
     goToPage(page) {
       this.$router.push({ name: page });
@@ -115,6 +119,6 @@
   padding: 10px 30px;
   border-radius: 10px;
   font-size: 28px;
-  font-family: 'ONEMobilePOPOTF';
+  font-family: "ONEMobilePOPOTF";
 }
 </style>
client/views/pages/main/Chapter/Chapter1_1.vue
--- client/views/pages/main/Chapter/Chapter1_1.vue
+++ client/views/pages/main/Chapter/Chapter1_1.vue
@@ -1,88 +1,373 @@
 <template>
-  <div id="Chapter1_1" class="content-wrap">
-    <div style="margin: 30px 0px 50px; width: 20%">
-      <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt=""></div>
-      </router-link>
-    </div>
-    <div class="title-box mb25 flex align-center mt40">
-      <span class="title mr40">1. Hello WORLD</span>
-      <span class="subtitle">my name is dd</span>
-    </div>
-    <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="goToPage('Chapter1')"><img src="../../../../resources/img/left.png" alt=""></div>
-      <div class="content title-box">
-        <p class="title mt25 title-bg">step1. Hello WORLD</p>
-
-        <div class="imgGroup">
-          <img src="../../../../resources/img/img35_s.png" data-num="1">
-
+    <div id="Chapter1_1" class="content-wrap">
+        <div style="margin: 30px 0px 50px; width: 20%">
+            <router-link to="/MyPlan.page">
+                <div class="logo mb25">
+                    <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+                </div>
+            </router-link>
         </div>
-        <div class="textareaGroup">
-          <textarea>Bike lanes are important because they ket, bike riders and all other people safe. Before bike lanes, people rode on the sidewalk or in the same lanes as the cars on the street. Riding a bike on the sidewalk can cause you to crash into someone who is walking by. And riding a bike in the same lanes as cars can be unsafe, too, Bikes move more slowly than cars, so people driving behind bikes will try to go around them. These cars could hit the bike riders or other cars. </textarea>
-          <div id="popup" class="popup">
-            <div class="imgGroup mb10">
-              <img src="../../../../resources/img/img36_s.png" data-num="1">
+        <div class="title-box mb25 flex align-center mt40" style="justify-content: space-between">
+            <div>
+                <span class="title mr40">1. Hello WORLD</span>
+                <span class="subtitle">my name is dd</span>
             </div>
-              <h3>sidewalk</h3>
-             <div class="flex align-center  justify-center mt10">
-                <p class="yellow-box">명</p>
-                <span class="title1">보도</span>
-             </div>
-          </div>
+            <div class="flex">
+                <TextToImage />
+                <button class="completeBtn" @click="complete">학습 종료</button>
+            </div>
         </div>
-      </div>
-      <div class="next-btn" @click="goToPage('Chapter1_2')"><img src="../../../../resources/img/right.png" alt=""></div>
+        <div class="flex justify-between align-center">
+            <div class="pre-btn" @click="goToPage('Chapter1_2')">
+                <img src="../../../../resources/img/left.png" alt="" />
+            </div>
+            <div class="content title-box">
+                <p class="title mt25 title-bg">step1. Hello WORLD</p>
+                <div class="flex align-center ml50 mb15" style="margin-top: -30px; gap: 10px">
+                    <h4>설명에 맞춰 영어 문장의 의미를 이해해봅시다. 대화문을 클릭해보세요!</h4>
+                    <div class="listen-btn">
+                        <img src="../../../../resources/img/btn10_s.png" alt="" @click="playAudio" />
+                        <audio
+                            id="audio-player"
+                            src="client/resources/audio/passage/passage_explanation.mp3"
+                            preload="auto"
+                        ></audio>
+                    </div>
+                </div>
+                <div class="flex justify-center" style="gap: 50px">
+                    <div class="readGroup">
+                        <div>
+                            <div class="textbox">
+                                <article
+                                    v-for="(line, index) in combinedLines"
+                                    :key="index"
+                                    :class="['flex', 'align-center', 'mb10', { 'justify-end': index % 2 !== 0 }]"
+                                >
+                                    <div v-if="index % 2 === 0" class="icon mr40">
+                                        <img src="../../../../resources/img/img37_s.png" alt="" />
+                                        <p class="name">{{ speakerA_name }}</p>
+                                    </div>
+                                    <p
+                                        v-if="index % 2 === 0"
+                                        class="read"
+                                        @click="handleSelectLine(line)"
+                                        :style="getStyle(line)"
+                                    >
+                                        {{ line }}
+                                    </p>
+
+                                    <p
+                                        v-if="index % 2 !== 0"
+                                        class="read mr40"
+                                        @click="handleSelectLine(line)"
+                                        :style="getStyle(line)"
+                                    >
+                                        {{ line }}
+                                    </p>
+                                    <div v-if="index % 2 !== 0" class="icon">
+                                        <img src="../../../../resources/img/img37_s.png" alt="" />
+                                        <p class="name">{{ speakerB_name }}</p>
+                                    </div>
+                                </article>
+                            </div>
+                        </div>
+                    </div>
+                    <div class="button-box">
+                        <button class="word" @click="wordQuestion">단어 설명</button>
+                        <button class="passage" @click="passageQuestion">문장 설명</button>
+                    </div>
+                </div>
+            </div>
+            <div class="next-btn" @click="goToNextPage">
+                <img src="../../../../resources/img/right.png" alt="" />
+            </div>
+        </div>
+        <div class="popup-wrap" v-if="popupOpen">
+            <div class="popup-container flex-column">
+                <div class="popup-header flex align-center">
+                    <p>선생님의 한 마디</p>
+                    <img
+                        class="look-btn"
+                        @click="handlePopupClose"
+                        src="../../../../resources/img/btn25_93t_normal.png"
+                        alt=""
+                    />
+                </div>
+                <div>
+                    <p class="popup-content mt30" v-html="formattedExplanation"></p>
+                </div>
+            </div>
+        </div>
     </div>
-  </div>
 </template>
 
 <script>
+import TextToImage from '../../../component/TextToImage.vue';
+import axios from 'axios';
 export default {
-  data() {
-    return {
-    }
-  },
-  methods: {
-    goToPage(page) {
-      this.$router.push({ name: page });
-    }
-  },
-  watch: {
+    data() {
+        return {
+            text_data: null, // 받아온 지문 정보
+            speakerA_name: null,
+            speakerB_name: null,
+            speakerA: [],
+            speakerB: [],
 
-  },
-  computed: {
+            seq: this.$store.getters.seqNum,
+            selectedLine: null, // 선택한 지문
+            explanation_response: null, // 설명 응답
 
-  },
-  components: {
-  },
-  mounted() {
-    const textArea = this.$refs.textArea;
-      const popup = this.$refs.popup;
+            popupOpen: false,
+        };
+    },
+    methods: {
+        complete() {
+            const { unit_id, book_id } = this.$route.query;
+            this.$router.push({
+                name: 'Dashboard',
+                query: { value: this.seq, unit_id, book_id },
+            });
+        },
+        goToPage(page) {
+            this.$router.push({ name: page });
+        },
+        goToNextPage() {
+            alert('지문 학습 완료!');
+            this.complete();
+        },
+        // 대화 지문 API
+        async fetchText() {
+            axios({
+                url: '/text/selectOneText.json',
+                method: 'post',
+                headers: {
+                    'Content-Type': 'application/json; charset=UTF-8',
+                },
+                data: {
+                    textId: this.textId,
+                },
+            })
+                .then((response) => {
+                    this.text_data = response.data[0].text_cnt;
+                    this.splitConversation();
+                })
+                .catch((err) => {
+                    console.log('지문 에러 : ', err);
+                });
+        },
+        // 대화 지문 split
+        splitConversation() {
+            const lines = this.text_data.split('/');
+            const speakers = {};
 
-      textArea.addEventListener('mousemove', (event) => {
-         const text = textArea.value;
-         const words = text.split(' ');
-         const selectionStart = textArea.selectionStart;
-         const selectionEnd = textArea.selectionEnd;
+            lines.forEach((line) => {
+                const [speaker, message] = line.trim().split(':');
 
-         if (selectionStart !== selectionEnd) {
-            const selectedText = text.substring(selectionStart, selectionEnd);
-            const rect = textArea.getBoundingClientRect();
-            popup.style.left = `${event.clientX}px`;
-            popup.style.top = `${event.clientY + window.scrollY}px`;
-            popup.innerHTML = `You selected: ${selectedText}`;
-            popup.style.display = 'block';
-         } else {
-            popup.style.display = 'none';
-         }
-      });
+                if (!speakers.speakerA_name && !speakers.speakerB_name) {
+                    // 첫 번째 발화자를 speakerA_name으로 설정
+                    speakers.speakerA_name = speaker.trim();
+                    this.speakerA.push(message.trim());
+                } else if (
+                    speakers.speakerA_name &&
+                    !speakers.speakerB_name &&
+                    speakers.speakerA_name !== speaker.trim()
+                ) {
+                    // 두 번째 발화자를 speakerB_name으로 설정
+                    speakers.speakerB_name = speaker.trim();
+                    this.speakerB.push(message.trim());
+                } else if (speaker.trim() === speakers.speakerA_name) {
+                    // speakerA_name에 내용 추가
+                    this.speakerA.push(message.trim());
+                } else if (speaker.trim() === speakers.speakerB_name) {
+                    // speakerB_name에 내용 추가
+                    this.speakerB.push(message.trim());
+                }
+            });
 
-      document.addEventListener('click', (event) => {
-         if (!textArea.contains(event.target) && !popup.contains(event.target)) {
-            popup.style.display = 'none';
-         }
-      });
-  }
+            this.speakerA_name = speakers.speakerA_name;
+            this.speakerB_name = speakers.speakerB_name;
+        },
+
+        playAudio() {
+            const audio = document.getElementById('audio-player');
+            audio.play();
+            console.log('playing');
+        },
+
+        // 검색할 지문 선택
+        handleSelectLine(line) {
+            this.selectedLine = line;
+            // console.log('선택된 지문 : ', this.selectedLine);
+        },
+
+        getStyle(line) {
+            return {
+                backgroundColor: this.selectedLine === line ? '#ffc980' : '',
+                fontSize: this.selectedLine === line ? '40px' : '',
+                boxShadow: this.selectedLine === line ? 'rgba(0, 0, 0, 0.24) 0px 3px 8px' : '',
+                fontWeight: this.selectedLine === line ? 'bold' : '',
+                cursor: 'pointer',
+            };
+        },
+
+        // 단어 설명
+        wordQuestion() {
+            // console.log('line : ', this.selectedLine);
+            if (this.selectedLine === null) {
+                alert('궁금한 대화문을 선택해주세요');
+                return;
+            }
+            axios({
+                url: 'http://165.229.169.32:35716/word_question',
+                method: 'post',
+                headers: {
+                    'Content-Type': 'application/json; charset=UTF-8',
+                },
+                data: {
+                    word: this.selectedLine,
+                },
+            })
+                .then((response) => {
+                    // console.log('word 지문 응답 : ', response.data.explanation);
+                    this.explanation_response = response.data.explanation;
+                    this.handlePopupOpen();
+                })
+                .catch((err) => {
+                    console.log('word 지문 에러 : ', err);
+                });
+        },
+
+        // 지문 설명
+        passageQuestion() {
+            // console.log('line : ', this.selectedLine);
+            if (this.selectedLine === null) {
+                alert('궁금한 대화문을 선택해주세요');
+                return;
+            }
+            axios({
+                url: 'http://165.229.169.32:35716/passage_question',
+                method: 'post',
+                headers: {
+                    'Content-Type': 'application/json; charset=UTF-8',
+                },
+                data: {
+                    passage: this.selectedLine,
+                },
+            })
+                .then((response) => {
+                    // console.log('passage 지문 응답 : ', response.data.explanation);
+                    this.explanation_response = response.data.explanation;
+                    this.handlePopupOpen();
+                })
+                .catch((err) => {
+                    console.log('passage 지문 에러 : ', err);
+                });
+        },
+
+        /* 팝업 */
+        handlePopupOpen() {
+            this.popupOpen = true;
+        },
+
+        handlePopupClose() {
+            this.popupOpen = false;
+            this.explanation_response = null;
+            this.selectedLine = null;
+        },
+    },
+    watch: {},
+    computed: {
+        textId() {
+            //console.log("지문 화면 아이디 : ", this.$store.getters.getTextId);
+            return this.$store.getters.getTextId;
+        },
+        combinedLines() {
+            const maxLength = Math.max(this.speakerA.length, this.speakerB.length);
+            const lines = [];
+
+            for (let i = 0; i < maxLength; i++) {
+                if (i < this.speakerA.length) {
+                    lines.push(this.speakerA[i]);
+                }
+                if (i < this.speakerB.length) {
+                    lines.push(this.speakerB[i]);
+                }
+            }
+            return lines;
+        },
+        // 지문 포맷팅
+        formattedExplanation() {
+            return this.explanation_response.replace(/\n/g, '<br>').replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>');
+        },
+    },
+    components: {
+        TextToImage: TextToImage,
+    },
+    mounted() {
+        this.fetchText();
+    },
+};
+</script>
+
+<style scoped>
+.completeBtn {
+    margin-right: 100px;
+    background-color: #ffba08;
+    padding: 10px 30px;
+    border-radius: 10px;
+    font-size: 28px;
+    font-family: 'ONEMobilePOPOTF';
 }
-</script>
(파일 끝에 줄바꿈 문자 없음)
+
+.button-box {
+    display: flex;
+    flex-direction: column;
+    align-items: center;
+    justify-content: space-evenly;
+}
+
+.button-box button {
+    font-family: 'ONEMobilePOPOTF';
+    font-size: 25px;
+    color: #fff;
+    padding: 20px 70px;
+    border-radius: 15px;
+    box-shadow: rgba(136, 165, 191, 0.48) 6px 2px 16px 0px, rgba(255, 255, 255, 0.8) -6px -2px 16px 0px;
+}
+
+.word {
+    background-color: #28b863;
+}
+
+.passage {
+    background-color: #9528b7;
+}
+
+.popup-container {
+    background-color: #fff;
+    position: absolute;
+    width: 120rem;
+    height: 60rem;
+    padding: 30px;
+    border-radius: 10px;
+    top: 25rem;
+    left: 40rem;
+    overflow: scroll;
+    overflow-x: hidden;
+}
+
+.popup-header {
+    justify-content: space-between;
+}
+
+.popup-header p {
+    font-size: 30px;
+    font-family: 'ONEMobilePOPOTF';
+    color: #6327b9;
+}
+
+.popup-content {
+    font-size: 24px;
+    padding: 20px;
+}
+</style>
client/views/pages/main/Chapter/Chapter1_2.vue
--- client/views/pages/main/Chapter/Chapter1_2.vue
+++ client/views/pages/main/Chapter/Chapter1_2.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
@@ -15,7 +15,10 @@
         <span class="title mr40">1. Hello WORLD</span>
         <span class="subtitle">my name is dd</span>
       </div>
-      <button class="completeBtn" @click="complete">학습 종료</button>
+      <div class="flex">
+        <TextToImage />
+        <button class="completeBtn" @click="complete">학습 종료</button>
+      </div>
     </div>
     <div class="flex justify-between align-center">
       <div
@@ -27,9 +30,29 @@
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step1. Hello WORLD</p>
+        <div
+          class="flex align-center ml50 mb15"
+          style="margin-top: -30px; gap: 10px"
+        >
+          <h4>
+            각 인물들의 대화를 듣고 읽어봅시다. 아래의 플레이버튼을 눌러 영어
+            발음을 들어보세요!
+          </h4>
+          <div class="listen-btn">
+            <img
+              src="../../../../resources/img/btn10_s.png"
+              alt=""
+              @click="playAudio"
+            />
+            <audio
+              id="audio-player"
+              src="client/resources/audio/passage/passage_intoduce.mp3"
+              preload="auto"
+            ></audio>
+          </div>
+        </div>
         <div class="flex justify-center">
           <div class="readGroup">
-            <h4>각 인물들의 대화를 집중해서 읽어보세요</h4>
             <div>
               <div class="textbox">
                 <article
@@ -37,7 +60,7 @@
                   :key="index"
                   :class="[
                     'flex',
-                    'align-start',
+                    'align-center',
                     'mb10',
                     { 'justify-end': index % 2 !== 0 },
                   ]"
@@ -47,7 +70,23 @@
                     <p class="name">{{ speakerA_name }}</p>
                   </div>
                   <p v-if="index % 2 === 0" class="read">{{ line }}</p>
+                  <div class="listen-btn ml10" v-if="index % 2 === 0">
+                    <img
+                      src="../../../../resources/img/new_img/icon/play_icon.png"
+                      alt=""
+                      @click="generateTts('male', line)"
+                    />
+                    <audio id="tts-audio-player" preload="auto"></audio>
+                  </div>
 
+                  <div class="listen-btn mr10" v-if="index % 2 !== 0">
+                    <img
+                      src="../../../../resources/img/new_img/icon/play_icon.png"
+                      alt=""
+                      @click="generateTts('femail', line)"
+                    />
+                    <audio id="tts-audio-player" preload="auto"></audio>
+                  </div>
                   <p v-if="index % 2 !== 0" class="read mr40">{{ line }}</p>
                   <div v-if="index % 2 !== 0" class="icon">
                     <img src="../../../../resources/img/img37_s.png" alt="" />
@@ -63,7 +102,6 @@
         <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
-    <TextToImage />
   </div>
 </template>
 
@@ -94,8 +132,9 @@
       this.$router.push({ name: page });
     },
     goToNextPage() {
-      alert("지문 학습 완료!");
+      // alert('지문 학습 완료!');
       this.complete();
+      this.goToPage("Chapter1_1");
     },
     // 대화 지문 API
     async fetchText() {
@@ -149,6 +188,40 @@
       this.speakerA_name = speakers.speakerA_name;
       this.speakerB_name = speakers.speakerB_name;
     },
+
+    playAudio() {
+      const audio = document.getElementById("audio-player");
+      audio.play();
+      console.log("playing");
+    },
+
+    // 대화 지문 재생
+    generateTts(gender, line) {
+      console.log("line : ", line);
+      axios({
+        url: "http://165.229.169.32:35716/generate_tts",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
+        },
+        responseType: "blob",
+        data: {
+          gender: gender,
+          input_text: line,
+        },
+      })
+        .then((response) => {
+          console.log("tts 응답 : ", response);
+          const audioBlob = new Blob([response.data], { type: "audio/mpeg" });
+          const audioUrl = URL.createObjectURL(audioBlob); // 오디오 url 생성
+          const audioPlayer = document.getElementById("tts-audio-player");
+          audioPlayer.src = audioUrl;
+          audioPlayer.play();
+        })
+        .catch((err) => {
+          console.log("tts 에러 : ", err);
+        });
+    },
   },
   watch: {},
   computed: {
client/views/pages/main/Chapter/Chapter1_3.vue
--- client/views/pages/main/Chapter/Chapter1_3.vue
+++ client/views/pages/main/Chapter/Chapter1_3.vue
@@ -1,125 +1,118 @@
 <template>
-  <div id="Chapter1" class="content-wrap">
-    <div style="margin: 30px 0px 50px; width: 20%">
-      <router-link to="/MyPlan.page">
-        <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+    <div id="Chapter1" class="content-wrap">
+        <div style="margin: 30px 0px 50px; width: 20%">
+            <router-link to="/MyPlan.page">
+                <div class="logo mb25">
+                    <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+                </div>
+            </router-link>
         </div>
-      </router-link>
-    </div>
-    <div
-      class="title-box mb25 flex align-center mt40"
-      style="justify-content: space-between"
-    >
-      <div>
-        <span class="title mr40">1. Hello WORLD</span>
-        <span class="subtitle">my name is dd</span>
-      </div>
-      <button class="completeBtn" @click="complete">학습 종료</button>
-    </div>
-    <div class="flex justify-between align-center">
-      <div
-        class="pre-btn"
-        style="visibility: hidden"
-        @click="goToPage('Chapter1_2')"
-      >
-        <img src="../../../../resources/img/left.png" alt="" />
-      </div>
-      <div class="content title-box">
-        <div class="listenGroup">
-          <p class="title mt25 title-bg">step1. Hello WORLD</p>
-          <!--
+        <div class="title-box mb25 flex align-center mt40" style="justify-content: space-between">
+            <div>
+                <span class="title mr40">1. Hello WORLD</span>
+                <span class="subtitle">my name is dd</span>
+            </div>
+            <button class="completeBtn" @click="complete">학습 종료</button>
+        </div>
+        <div class="flex justify-between align-center">
+            <div class="pre-btn" style="visibility: hidden" @click="goToPage('Chapter1_2')">
+                <img src="../../../../resources/img/left.png" alt="" />
+            </div>
+            <div class="content title-box">
+                <div class="listenGroup">
+                    <p class="title mt25 title-bg">step1. Hello WORLD</p>
+                    <!--
                     <img class="bg" src="../../../../resources/img/img39_s.png" data-num="1" />
                     -->
-          <img class="bg" :src="img_src" />
+                    <img class="bg" :src="img_src" />
+                </div>
+            </div>
+            <div class="next-btn" @click="goToNextPage">
+                <img src="../../../../resources/img/right.png" alt="" />
+            </div>
         </div>
-      </div>
-      <div class="next-btn" @click="goToNextPage">
-        <img src="../../../../resources/img/right.png" alt="" />
-      </div>
+        <TextToImage />
     </div>
-    <TextToImage />
-  </div>
 </template>
 
 <script>
-import TextToImage from "../../../component/TextToImage.vue";
-import axios from "axios";
+import TextToImage from '../../../component/TextToImage.vue';
+import axios from 'axios';
 export default {
-  data() {
-    return {
-      text_data: null,
-      img_src: null,
-      seq: this.$store.getters.seqNum,
-    };
-  },
-  methods: {
-    complete() {
-      const { unit_id, book_id } = this.$route.query;
-      this.$router.push({
-        name: "Dashboard",
-        query: { value: this.seq, unit_id, book_id },
-      });
+    data() {
+        return {
+            text_data: null,
+            img_src: null,
+            seq: this.$store.getters.seqNum,
+        };
     },
-    goToPage(page) {
-      this.$router.push({ name: page });
-    },
-    goToNextPage() {
-      alert("지문 학습 완료!");
-      this.complete();
-    },
-    // 지문 API
-    async fetchText() {
-      axios({
-        url: "/text/selectOneText.json",
-        method: "post",
-        headers: {
-          "Content-Type": "application/json; charset=UTF-8",
+    methods: {
+        complete() {
+            const { unit_id, book_id } = this.$route.query;
+            this.$router.push({
+                name: 'Dashboard',
+                query: { value: this.seq, unit_id, book_id },
+            });
         },
-        data: {
-          textId: this.textId,
+        goToPage(page) {
+            this.$router.push({ name: page });
         },
-      })
-        .then((response) => {
-          this.text_data = response.data[0];
-          console.log("지문 데이터 : ", this.text_data);
-          this.img_src = this.fetchImage(this.text_data.file_rpath);
-        })
-        .catch((err) => {
-          console.log("지문 에러 : ", err);
-        });
+        goToNextPage() {
+            alert('지문 학습 완료!');
+            this.complete();
+        },
+        // 지문 API
+        async fetchText() {
+            axios({
+                url: '/text/selectOneText.json',
+                method: 'post',
+                headers: {
+                    'Content-Type': 'application/json; charset=UTF-8',
+                },
+                data: {
+                    textId: this.textId,
+                },
+            })
+                .then((response) => {
+                    this.text_data = response.data[0];
+                    console.log('지문 데이터 : ', this.text_data);
+                    this.img_src = this.fetchImage(this.text_data.file_rpath);
+                })
+                .catch((err) => {
+                    console.log('지문 에러 : ', err);
+                });
+        },
+        // 이미지 불러오기
+        fetchImage(fileRpath) {
+            return 'http://165.229.169.113:9080/' + fileRpath;
+        },
     },
-    // 이미지 불러오기
-    fetchImage(fileRpath) {
-      return "http://165.229.169.113:9080/" + fileRpath;
+    watch: {},
+    computed: {
+        textId() {
+            //console.log("지문 화면 아이디 : ", this.$store.getters.getTextId);
+            return this.$store.getters.getTextId;
+        },
     },
-  },
-  watch: {},
-  computed: {
-    textId() {
-      //console.log("지문 화면 아이디 : ", this.$store.getters.getTextId);
-      return this.$store.getters.getTextId;
+    components: {
+        TextToImage: TextToImage,
     },
-  },
-  components: {
-    TextToImage: TextToImage,
-  },
-  mounted() {
-    this.fetchText();
-  },
+    mounted() {
+        this.fetchText();
+    },
 };
 </script>
 <style scoped>
 .listenGroup .textbox {
-  width: 900px;
+    width: 900px;
 }
 
 .completeBtn {
-  margin-right: 100px;
-  background-color: #ffba08;
-  padding: 10px 30px;
-  border-radius: 10px;
-  font-size: 28px;
-  font-family: "ONEMobilePOPOTF";
+    margin-right: 100px;
+    background-color: #ffba08;
+    padding: 10px 30px;
+    border-radius: 10px;
+    font-size: 28px;
+    font-family: 'ONEMobilePOPOTF';
 }
 </style>
client/views/pages/main/Chapter/Chapter2.vue
--- client/views/pages/main/Chapter/Chapter2.vue
+++ client/views/pages/main/Chapter/Chapter2.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
client/views/pages/main/Chapter/Chapter2_1.vue
--- client/views/pages/main/Chapter/Chapter2_1.vue
+++ client/views/pages/main/Chapter/Chapter2_1.vue
@@ -1,157 +1,173 @@
 <template>
   <div id="Chapter1_1" class="content-wrap">
-        <div style="margin: 30px 0px 50px">
-            <router-link to="/MyPlan.page">
-                <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt=""></div>
-            </router-link>
+    <div style="margin: 30px 0px 50px">
+      <router-link to="/MyPlan.page">
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
-      <div class="title-box mb25 flex align-center mt40">
-          <span class="title mr40">1. Hello WORLD</span>
-          <span class="subtitle">my name is dd</span>
+      </router-link>
+    </div>
+    <div class="title-box mb25 flex align-center mt40">
+      <span class="title mr40">1. Hello WORLD</span>
+      <span class="subtitle">my name is dd</span>
+    </div>
+    <div class="flex justify-between align-center">
+      <div class="pre-btn" @click="goToPage('Chapter2_2')">
+        <img src="../../../../resources/img/left.png" alt="" />
       </div>
-      <div class="flex justify-between align-center">
-          <div class="pre-btn" @click="goToPage('Chapter2_2')">
-              <img src="../../../../resources/img/left.png" alt="" />
-          </div>
-          <div class="content title-box">
-              <p class="title mt25 title-bg">step2</p>
-              <div class="flex align-center mb30">
-                  <p class="subtitle2 mr20">오늘 배웠던 단어를 말하고 생성된 예문을 따라 읽어보세요</p>
-                  <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
+      <div class="content title-box">
+        <p class="title mt25 title-bg">step2</p>
+        <div class="flex align-center mb30">
+          <p class="subtitle2 mr20">
+            오늘 배웠던 단어를 말하고 생성된 예문을 따라 읽어보세요
+          </p>
+          <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
         </button> -->
-              </div>
-              <div>
-                  <img src="http://localhost:8081/client/build/dad67b1726cb2d2b215965b433149ca3.png" data-num="1" />
-                  <p> {{ word }} </p>
-                  <p> {{ mean }} </p>
+        </div>
+        <div>
+          <img
+            src="http://localhost:8081/client/build/dad67b1726cb2d2b215965b433149ca3.png"
+            data-num="1"
+          />
+          <p>{{ word }}</p>
+          <p>{{ mean }}</p>
+        </div>
+        <div class="flex justify-center">
+          <div class="readGroup">
+            <section>
+              <div class="imgGroup flex justify-center">
+                <!-- 녹음 버튼 -->
+                <div
+                  :class="['mic-btn', { notRecording: !isRecording }]"
+                  @click="toggleRecording"
+                >
+                  <img src="../../../../resources/img/btn11_s.png" alt="" />
                 </div>
-              <div class="flex justify-center">
-                  <div class="readGroup">
-                      <section>
-                          <div class="imgGroup flex justify-center">
-                              <!-- 녹음 버튼 -->
-                              <div :class="['mic-btn', { notRecording: !isRecording }]" @click="toggleRecording">
-                                  <img src="../../../../resources/img/btn11_s.png" alt="" />
-                              </div>
-                          </div>
-                          <article>
-                              <p class="speakText mb25">
-                                  <span v-if="transcription === null"
-                                      >위의 버튼을 누른 후 오늘 배운 단어를 말해보세요!</span
-                                  >
-                                  <span v-else-if="!transcription || transcription.trim() === ''"
-                                      >다시 말해보세요!</span
-                                  >
-                                  <span v-else>{{ transcription }}</span>
-                              </p>
-                              <p class="read-ai">
-                                  <img style="margin-top: -5px" src="../../../../resources/img/img43_s.png" alt="" />
-                              </p>
-                          </article>
-                      </section>
-                  </div>
               </div>
+              <article>
+                <p class="speakText mb25">
+                  <span v-if="transcription === null"
+                    >위의 버튼을 누른 후 오늘 배운 단어를 말해보세요!</span
+                  >
+                  <span
+                    v-else-if="!transcription || transcription.trim() === ''"
+                    >다시 말해보세요!</span
+                  >
+                  <span v-else>{{ transcription }}</span>
+                </p>
+                <p class="read-ai">
+                  <img
+                    style="margin-top: -5px"
+                    src="../../../../resources/img/img43_s.png"
+                    alt=""
+                  />
+                </p>
+              </article>
+            </section>
           </div>
-          <div class="next-btn" @click="goToPage('Chapter2_4')">
-              <img src="../../../../resources/img/right.png" alt="" />
-          </div>
+        </div>
       </div>
+      <div class="next-btn" @click="goToPage('Chapter2_4')">
+        <img src="../../../../resources/img/right.png" alt="" />
+      </div>
+    </div>
   </div>
 </template>
 
 <script>
-import axios from 'axios';
-import SvgIcon from '@jamescoyle/vue-icon';
-import { mdiStop } from '@mdi/js';
+import axios from "axios";
+import SvgIcon from "@jamescoyle/vue-icon";
+import { mdiStop } from "@mdi/js";
 export default {
   data() {
-      return {
-          isRecording: false, // 녹음 중 여부
-          mediaRecorder: null,
-          audioChunks: [], // 녹음된 오디오 데이터
-          audioBlob: null, // 오디오 Blob 객체
-          transcription: null, // 서버에서 받아온 텍스트 결과
-          stream: null, // MediaStream 객체
+    return {
+      isRecording: false, // 녹음 중 여부
+      mediaRecorder: null,
+      audioChunks: [], // 녹음된 오디오 데이터
+      audioBlob: null, // 오디오 Blob 객체
+      transcription: null, // 서버에서 받아온 텍스트 결과
+      stream: null, // MediaStream 객체
 
-          path: mdiStop,
+      path: mdiStop,
 
-          /* audioURL : null // 오디오 URL 객체 */
+      /* audioURL : null // 오디오 URL 객체 */
 
-          word : "apple",
-          mean : "사과",
-          imageSrc : "http://localhost:8081/client/build/dad67b1726cb2d2b215965b433149ca3.png"
-      };
+      word: "apple",
+      mean: "사과",
+      imageSrc:
+        "http://localhost:8081/client/build/dad67b1726cb2d2b215965b433149ca3.png",
+    };
   },
   methods: {
-      goToPage(page) {
-          this.$router.push({ name: page });
-      },
-      // 녹음 시작/중지 토글
-      async toggleRecording() {
-          if (this.isRecording) {
-              console.log('녹음 그만!');
-              this.stopRecording(); // 녹음 중이면 중지
-          } else {
-              console.log('녹음 시작!');
-              await this.startRecording(); // 녹음 중이 아니면 녹음 시작
-          }
-      },
+    goToPage(page) {
+      this.$router.push({ name: page });
+    },
+    // 녹음 시작/중지 토글
+    async toggleRecording() {
+      if (this.isRecording) {
+        console.log("녹음 그만!");
+        this.stopRecording(); // 녹음 중이면 중지
+      } else {
+        console.log("녹음 시작!");
+        await this.startRecording(); // 녹음 중이 아니면 녹음 시작
+      }
+    },
 
-      // 녹음 시작
-      async startRecording() {
-          this.audioChunks = []; // 오디오 초기화
-          this.stream = await navigator.mediaDevices.getUserMedia({ audio: true });
-          this.mediaRecorder = new MediaRecorder(this.stream);
-          this.mediaRecorder.ondataavailable = (event) => {
-              this.audioChunks.push(event.data); // 녹음 데이터 저장
-          };
-          this.mediaRecorder.onstop = () => {
-              this.audioBlob = new Blob(this.audioChunks, { type: 'audio/wav' });
+    // 녹음 시작
+    async startRecording() {
+      this.audioChunks = []; // 오디오 초기화
+      this.stream = await navigator.mediaDevices.getUserMedia({ audio: true });
+      this.mediaRecorder = new MediaRecorder(this.stream);
+      this.mediaRecorder.ondataavailable = (event) => {
+        this.audioChunks.push(event.data); // 녹음 데이터 저장
+      };
+      this.mediaRecorder.onstop = () => {
+        this.audioBlob = new Blob(this.audioChunks, { type: "audio/wav" });
 
-              /******************************/
-              // this.audioURL = URL.createObjectURL(this.audioBlob); // 오디오 URL 생성
-              // console.log('Audio URL:', this.audioURL);
-              /******************************/
+        /******************************/
+        // this.audioURL = URL.createObjectURL(this.audioBlob); // 오디오 URL 생성
+        // console.log('Audio URL:', this.audioURL);
+        /******************************/
 
-              console.log('Recorded Audio Blob:', this.audioBlob); // 콘솔에 Blob 확인
-              this.sendAudioToServer(); // 서버로 오디오 전송
-          };
-          this.mediaRecorder.start(); // 녹음 시작
-          this.isRecording = true; // 녹음 상태 변경
-      },
+        console.log("Recorded Audio Blob:", this.audioBlob); // 콘솔에 Blob 확인
+        this.sendAudioToServer(); // 서버로 오디오 전송
+      };
+      this.mediaRecorder.start(); // 녹음 시작
+      this.isRecording = true; // 녹음 상태 변경
+    },
 
-      // 녹음 중지
-      stopRecording() {
-          this.mediaRecorder.stop(); // 녹음 중단
+    // 녹음 중지
+    stopRecording() {
+      this.mediaRecorder.stop(); // 녹음 중단
 
-          if (this.stream) {
-              this.stream.getTracks().forEach((track) => track.stop()); // 스트림의 모든 트랙 중지
-          }
+      if (this.stream) {
+        this.stream.getTracks().forEach((track) => track.stop()); // 스트림의 모든 트랙 중지
+      }
 
-          this.isRecording = false; // 녹음 상태 변경
-      },
+      this.isRecording = false; // 녹음 상태 변경
+    },
 
-      // 오디오 전송
-      async sendAudioToServer() {
-          const formData = new FormData();
-          formData.append('file', this.audioBlob, 'recording.wav');
-          try {
-              const resposne = await axios.post('/api/speechToText.json', formData, {
-                  headers: {
-                      'Content-Type': 'multipart/form-data',
-                  },
-              });
-              this.transcription = resposne.data;
-              console.log(`받은 데이터 : ${this.transcription}`);
-          } catch (error) {
-              console.log('파일 전송 실패 : ', error);
-          }
-      },
+    // 오디오 전송
+    async sendAudioToServer() {
+      const formData = new FormData();
+      formData.append("file", this.audioBlob, "recording.wav");
+      try {
+        const resposne = await axios.post("/api/speechToText.json", formData, {
+          headers: {
+            "Content-Type": "multipart/form-data",
+          },
+        });
+        this.transcription = resposne.data;
+        console.log(`받은 데이터 : ${this.transcription}`);
+      } catch (error) {
+        console.log("파일 전송 실패 : ", error);
+      }
+    },
   },
   watch: {},
   computed: {},
   components: {
-      SvgIcon,
+    SvgIcon,
   },
   mounted() {},
 };
@@ -171,4 +187,4 @@
 .speakText span {
   font-size: 28px;
 }
-</style>
(파일 끝에 줄바꿈 문자 없음)
+</style>
client/views/pages/main/Chapter/Chapter2_10.vue
--- client/views/pages/main/Chapter/Chapter2_10.vue
+++ client/views/pages/main/Chapter/Chapter2_10.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
client/views/pages/main/Chapter/Chapter2_11.vue
--- client/views/pages/main/Chapter/Chapter2_11.vue
+++ client/views/pages/main/Chapter/Chapter2_11.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
client/views/pages/main/Chapter/Chapter2_12.vue
--- client/views/pages/main/Chapter/Chapter2_12.vue
+++ client/views/pages/main/Chapter/Chapter2_12.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt=""></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,57 +12,85 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="goToPage('Chapter2_8')"><img src="../../../../resources/img/left.png" alt=""></div>
+      <div class="pre-btn" @click="goToPage('Chapter2_8')">
+        <img src="../../../../resources/img/left.png" alt="" />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step2</p>
-          <div class="flex align-center mb30">
+        <div class="flex align-center mb30">
           <p class="subtitle2 mr20">단어 짝 맞추기 게임</p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
           </button> -->
         </div>
 
         <div class="text-ct">
-          <div class="pickGroup flex align-center justify-center mt50" style="gap: 100px;">
+          <div
+            class="pickGroup flex align-center justify-center mt50"
+            style="gap: 100px"
+          >
             <div>
               <div class="mb20">
-                <button><img src="../../../../resources/img/img100_45s.png" alt="">
+                <button>
+                  <img src="../../../../resources/img/img100_45s.png" alt="" />
                   <p>1</p>
                 </button>
-                <button><img src="../../../../resources/img/img101_45s.png" alt="">
+                <button>
+                  <img src="../../../../resources/img/img101_45s.png" alt="" />
                   <p>1</p>
                 </button>
-                <button><img src="../../../../resources/img/img102_45s.png" alt="">
+                <button>
+                  <img src="../../../../resources/img/img102_45s.png" alt="" />
                   <p>1</p>
                 </button>
-                <button><img src="../../../../resources/img/img103_45s.png" alt="">
+                <button>
+                  <img src="../../../../resources/img/img103_45s.png" alt="" />
                   <p>1</p>
                 </button>
               </div>
               <div>
-                <button><img src="../../../../resources/img/img100_45s.png" alt="">
+                <button>
+                  <img src="../../../../resources/img/img100_45s.png" alt="" />
                   <p>1</p>
                 </button>
-                <button><img src="../../../../resources/img/img101_45s.png" alt="">
+                <button>
+                  <img src="../../../../resources/img/img101_45s.png" alt="" />
                   <p>1</p>
                 </button>
-                <button><img src="../../../../resources/img/img102_45s.png" alt="">
+                <button>
+                  <img src="../../../../resources/img/img102_45s.png" alt="" />
                   <p>1</p>
                 </button>
-                <button><img src="../../../../resources/img/img103_45s.png" alt="">
+                <button>
+                  <img src="../../../../resources/img/img103_45s.png" alt="" />
                   <p>1</p>
                 </button>
               </div>
             </div>
-            <div class="dropGroup" style="gap: 20px;">
-              <img src="../../../../resources/img/img160_43s.png" alt="">
+            <div class="dropGroup" style="gap: 20px">
+              <img src="../../../../resources/img/img160_43s.png" alt="" />
               <div class="dropimg">
-                <img style="top: 21px;" src="../../../../resources/img/img161_44s.png" alt="">
-                <img style="top: 119px;" src="../../../../resources/img/img162_43s.png" alt="">
-                <img style="top: 215px;" src="../../../../resources/img/img163_43s.png" alt="">
-                <img style="bottom: 36px;" src="../../../../resources/img/img164_43s.png" alt="">
+                <img
+                  style="top: 21px"
+                  src="../../../../resources/img/img161_44s.png"
+                  alt=""
+                />
+                <img
+                  style="top: 119px"
+                  src="../../../../resources/img/img162_43s.png"
+                  alt=""
+                />
+                <img
+                  style="top: 215px"
+                  src="../../../../resources/img/img163_43s.png"
+                  alt=""
+                />
+                <img
+                  style="bottom: 36px"
+                  src="../../../../resources/img/img164_43s.png"
+                  alt=""
+                />
               </div>
             </div>
-            
           </div>
 
           <div class="time-bg">
@@ -73,7 +103,9 @@
           </div>
         </div>
       </div>
-      <div class="next-btn" @click="goToPage('Chapter2_7')"><img src="../../../../resources/img/right.png" alt=""></div>
+      <div class="next-btn" @click="goToPage('Chapter2_7')">
+        <img src="../../../../resources/img/right.png" alt="" />
+      </div>
     </div>
   </div>
 </template>
@@ -83,7 +115,7 @@
   data() {
     return {
       timer: "00",
-    }
+    };
   },
   methods: {
     goToPage(page) {
@@ -101,24 +133,22 @@
           clearInterval(this.intervalId);
         }
       }, 1000);
-    }
+    },
   },
-  watch: {
-
-  },
-  computed: {
-
-  },
-  components: {
-  },
-  mounted() {
-
-  }
-}
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {},
+};
 </script>
 <style scoped>
-.dropGroup{position: relative;}
-.dropimg img{position: absolute; left: 27px;}
+.dropGroup {
+  position: relative;
+}
+.dropimg img {
+  position: absolute;
+  left: 27px;
+}
 .pickGroup button {
   position: relative;
   margin: 10px 40px;
@@ -131,4 +161,4 @@
   left: 50%;
   transform: translate(-50%, -50%);
 }
-</style>
(파일 끝에 줄바꿈 문자 없음)
+</style>
client/views/pages/main/Chapter/Chapter2_13.vue
--- client/views/pages/main/Chapter/Chapter2_13.vue
+++ client/views/pages/main/Chapter/Chapter2_13.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
client/views/pages/main/Chapter/Chapter2_2.vue
--- client/views/pages/main/Chapter/Chapter2_2.vue
+++ client/views/pages/main/Chapter/Chapter2_2.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
@@ -32,7 +32,9 @@
           class="flex align-center mb30"
           style="justify-content: space-between; margin-right: 9em"
         >
-          <p class="subtitle2 mr20">3초마다 뒤집어지는 카드의 단어를 외어보세요!</p>
+          <p class="subtitle2 mr20">
+            3초마다 뒤집어지는 카드의 단어를 외어보세요!
+          </p>
           <div class="time-bg">
             <div>
               <div class="time">
client/views/pages/main/Chapter/Chapter2_3.vue
--- client/views/pages/main/Chapter/Chapter2_3.vue
+++ client/views/pages/main/Chapter/Chapter2_3.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
client/views/pages/main/Chapter/Chapter2_4.vue
--- client/views/pages/main/Chapter/Chapter2_4.vue
+++ client/views/pages/main/Chapter/Chapter2_4.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
client/views/pages/main/Chapter/Chapter2_5.vue
--- client/views/pages/main/Chapter/Chapter2_5.vue
+++ client/views/pages/main/Chapter/Chapter2_5.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
client/views/pages/main/Chapter/Chapter2_6.vue
--- client/views/pages/main/Chapter/Chapter2_6.vue
+++ client/views/pages/main/Chapter/Chapter2_6.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
@@ -176,12 +176,10 @@
         this.showButton(dropNumber); // 버튼을 보여주고
         this.hideDragButton(dropNumber); // 드래그한 퍼즐은 숨김
         this.correctNum++;
-
       } else {
         // 오답일 경우 알림 표시
         alert("오답입니다! 다시 시도해보세요.");
       }
-      
 
       if (this.correctNum === 3) {
         setTimeout(() => {
client/views/pages/main/Chapter/Chapter2_7.vue
--- client/views/pages/main/Chapter/Chapter2_7.vue
+++ client/views/pages/main/Chapter/Chapter2_7.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
client/views/pages/main/Chapter/Chapter2_8.vue
--- client/views/pages/main/Chapter/Chapter2_8.vue
+++ client/views/pages/main/Chapter/Chapter2_8.vue
@@ -3,11 +3,14 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
-    <div class="title-box mb25 flex align-center mt40" style="justify-content: space-between">
+    <div
+      class="title-box mb25 flex align-center mt40"
+      style="justify-content: space-between"
+    >
       <div>
         <span class="title mr40">1. Hello WORLD</span>
         <span class="subtitle">my name is dd</span>
@@ -15,7 +18,11 @@
       <button class="completeBtn" @click="complete">학습 종료</button>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" :style="{ visibility: hiddenState ? 'hidden' : 'visible' }" @click="previousProblem()">
+      <div
+        class="pre-btn"
+        :style="{ visibility: hiddenState ? 'hidden' : 'visible' }"
+        @click="previousProblem()"
+      >
         <img src="../../../../resources/img/left.png" alt="" />
       </div>
       <div class="content title-box">
@@ -36,15 +43,27 @@
           <div class="dropGroup flex align-center justify-center mt30">
             <div style="position: relative">
               <img src="../../../../resources/img/img28_s.png" alt="" />
-              <button class="dropzone" :data-answer="answerArr[0]" style="left: 30px; top: 167px">
+              <button
+                class="dropzone"
+                :data-answer="answerArr[0]"
+                style="left: 30px; top: 167px"
+              >
                 <img src="../../../../resources/img/img29_s_01.png" alt="" />
                 <p style="font-size: 35px">?</p>
               </button>
-              <button class="dropzone" :data-answer="answerArr[1]" style="right: 409px; top: 133px">
+              <button
+                class="dropzone"
+                :data-answer="answerArr[1]"
+                style="right: 409px; top: 133px"
+              >
                 <img src="../../../../resources/img/img30_s_01.png" alt="" />
                 <p style="font-size: 35px">?</p>
               </button>
-              <button class="dropzone" :data-answer="answerArr[2]" style="right: 46px; top: 128px">
+              <button
+                class="dropzone"
+                :data-answer="answerArr[2]"
+                style="right: 46px; top: 128px"
+              >
                 <img src="../../../../resources/img/img31_s_01.png" alt="" />
                 <p style="font-size: 35px">?</p>
               </button>
@@ -52,19 +71,31 @@
           </div>
           <div class="dragGroup flex justify-center" style="gap: 20px">
             <article style="right: 0; top: 36%">
-              <button class="draggable" :data-text="answerArr[0]" draggable="true">
+              <button
+                class="draggable"
+                :data-text="answerArr[0]"
+                draggable="true"
+              >
                 <img src="../../../../resources/img/img29_s.png" alt="" />
                 <p style="font-size: 35px">{{ answerArr[0] }}</p>
               </button>
             </article>
             <article style="left: 0; top: 36%">
-              <button class="draggable" :data-text="answerArr[1]" draggable="true">
+              <button
+                class="draggable"
+                :data-text="answerArr[1]"
+                draggable="true"
+              >
                 <img src="../../../../resources/img/img30_s.png" alt="" />
                 <p style="font-size: 35px">{{ answerArr[1] }}</p>
               </button>
             </article>
             <article style="left: 50%; top: 10%">
-              <button class="draggable" :data-text="answerArr[2]" draggable="true">
+              <button
+                class="draggable"
+                :data-text="answerArr[2]"
+                draggable="true"
+              >
                 <img src="../../../../resources/img/img31_s.png" alt="" />
                 <p style="font-size: 35px">{{ answerArr[2] }}</p>
               </button>
@@ -111,7 +142,7 @@
       window.location.reload();
     },
     handleDragStart(event) {
-      this.draggedElement = event.target.closest(".draggable");// 드래그한 요소 저장
+      this.draggedElement = event.target.closest(".draggable"); // 드래그한 요소 저장
       event.dataTransfer.setData("text/plain", event.target.dataset.text);
       event.target.style.cursor = "grabbing"; // 드래그 중 커서 변경
     },
client/views/pages/main/Chapter/Chapter2_9.vue
--- client/views/pages/main/Chapter/Chapter2_9.vue
+++ client/views/pages/main/Chapter/Chapter2_9.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
@@ -28,8 +28,15 @@
       <div class="content title-box">
         <div style="display: flex; justify-content: space-between">
           <p class="title mt25 title-bg">STEP 2 - 단어로 공부하는 영어</p>
-          <button id="returnButton" @click="returnPage" style="margin: 4rem">
-            <img src="../../../../resources/img/btn_return_50x50.png" alt="" />
+          <button
+            id="returnButton"
+            @click="returnPage"
+            style="margin: 4rem 4rem 0 2rem"
+          >
+            <img
+              src="../../../../resources/img/new_img/content_ink/return_v2.png"
+              alt=""
+            />
             <p>되돌리기</p>
           </button>
         </div>
@@ -43,9 +50,9 @@
           <div class="dropGroup flex align-center justify-center">
             <div style="position: relative">
               <img
-                src="../../../../resources/img/img72_41s.png"
+                src="../../../../resources/img/new_img/content_ink/background.png"
                 alt=""
-                style="width: 93%"
+                style="width: 138rem; height: 49rem"
               />
               <div class="vocaGroup">
                 <div
@@ -77,30 +84,86 @@
                 <button
                   id="eraser1"
                   class="dropzone"
-                  style="left: 141px; top: 44px"
+                  style="left: 97px; top: 125px; position: fixed"
                 >
-                  <img src="../../../../resources/img/img78_41s.png" alt="" />
+                  <img
+                    src="../../../../resources/img/new_img/content_ink/ink_1.png"
+                    alt=""
+                    style="position: relative; z-index: 1"
+                  />
+                  <img
+                    src="../../../../resources/img/new_img/content_ink/click_btn.png"
+                    alt=""
+                    style="
+                      position: absolute;
+                      z-index: 2;
+                      height: 56px;
+                      right: 69px;
+                    "
+                  />
                 </button>
                 <button
                   id="eraser2"
                   class="dropzone"
-                  style="left: 200px; bottom: 46px"
+                  style="left: 87px; bottom: 38px; position: fixed"
                 >
-                  <img src="../../../../resources/img/img79_41s.png" alt="" />
+                  <img
+                    src="../../../../resources/img/new_img/content_ink/ink_2.png"
+                    alt=""
+                    style="position: relative; z-index: 1"
+                  />
+                  <img
+                    src="../../../../resources/img/new_img/content_ink/click_btn.png"
+                    alt=""
+                    style="
+                      position: absolute;
+                      z-index: 2;
+                      height: 56px;
+                      right: 139px;
+                    "
+                  />
                 </button>
                 <button
                   id="eraser3"
                   class="dropzone"
-                  style="right: 237px; top: 114px"
+                  style="right: 207px; top: 133px; position: fixed"
                 >
-                  <img src="../../../../resources/img/img80_41s.png" alt="" />
+                  <img
+                    src="../../../../resources/img/new_img/content_ink/ink_3.png"
+                    alt=""
+                    style="position: relative; z-index: 1"
+                  />
+                  <img
+                    src="../../../../resources/img/new_img/content_ink/click_btn.png"
+                    alt=""
+                    style="
+                      position: absolute;
+                      z-index: 2;
+                      height: 56px;
+                      right: 109px;
+                    "
+                  />
                 </button>
                 <button
                   id="eraser4"
                   class="dropzone"
-                  style="right: 159px; bottom: 5px"
+                  style="right: 206px; bottom: 51px; position: fixed"
                 >
-                  <img src="../../../../resources/img/img81_41s.png" alt="" />
+                  <img
+                    src="../../../../resources/img/new_img/content_ink/ink_4.png"
+                    alt=""
+                    style="position: relative; z-index: 1"
+                  />
+                  <img
+                    src="../../../../resources/img/new_img/content_ink/click_btn.png"
+                    alt=""
+                    style="
+                      position: absolute;
+                      z-index: 2;
+                      height: 56px;
+                      right: 115px;
+                    "
+                  />
                 </button>
               </div>
             </div>
@@ -304,8 +367,17 @@
       const dropZone = event.target.closest("button.dropzone");
 
       if (dropZone) {
-        // 드롭이 이루어진 영역이 버튼일 때만 처리
-        dropZone.querySelector("img").style.display = "none"; // 잉크를 숨깁니다
+        // 잉크 이미지를 숨깁니다
+        const inkImage = dropZone.querySelector("img:first-child");
+        if (inkImage) {
+          inkImage.style.display = "none";
+        }
+
+        // 클릭포인트 이미지를 숨깁니다
+        const clickPointImage = dropZone.querySelector("img:nth-child(2)");
+        if (clickPointImage) {
+          clickPointImage.style.display = "none";
+        }
       }
 
       // 드래그한 요소를 원래 위치로 복원
client/views/pages/main/Chapter/Chapter3.vue
--- client/views/pages/main/Chapter/Chapter3.vue
+++ client/views/pages/main/Chapter/Chapter3.vue
@@ -3,11 +3,14 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
-    <div class="title-box mb25 flex align-center mt40" style="justify-content: space-between">
+    <div
+      class="title-box mb25 flex align-center mt40"
+      style="justify-content: space-between"
+    >
       <div>
         <span class="title mr40">1. Hello WORLD</span>
         <span class="subtitle">my name is dd</span>
@@ -16,16 +19,28 @@
     </div>
     <div class="flex justify-between align-center">
       <div class="pre-btn" @click="previousProblem()">
-        <img src="../../../../resources/img/left.png" alt="" :class="{ active: currentIndex === 0 }" />
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         ,,,
         <p class="title mt25 title-bg">step3.</p>
-        <div class="flex align-center mb30" style="justify-content: space-between">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+        <div
+          class="flex align-center mb30"
+          style="justify-content: space-between"
+        >
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
         </div>
 
-        <div class="flex align-center justify-center" style="margin-top: 9rem; gap: 113px">
+        <div
+          class="flex align-center justify-center"
+          style="margin-top: 9rem; gap: 113px"
+        >
           <div class="time-hint">
             <button class="hint-btn">HINT</button>
             <div class="time-bg mt20">
@@ -43,22 +58,34 @@
             </div>
           </div>
           <div class="pickGroup">
-            <article class="flex justify-center mb50" style="gap: 60px" v-for="(item, index) in problemDetail"
-              :key="index">
+            <article
+              class="flex justify-center mb50"
+              style="gap: 60px"
+              v-for="(item, index) in problemDetail"
+              :key="index"
+            >
               <div class="flex" @click="handleClick(item.prblmDtlExpln)">
                 <button>
                   <img src="../../../../resources/img/img136_71s.png" alt="" />
-                  <p :class="{ active: selectedButton === item.prblmDtlExpln }">{{ index + 1 }}</p>
+                  <p :class="{ active: selectedButton === item.prblmDtlExpln }">
+                    {{ index + 1 }}
+                  </p>
                 </button>
                 <p>{{ item.prblmDtlExpln }}</p>
               </div>
             </article>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
       <div class="next-btn" @click="nextProblem()">
         <img src="../../../../resources/img/right.png" alt="" />
@@ -68,7 +95,6 @@
 </template>
 
 <script>
-
 import axios from "axios";
 export default {
   data() {
@@ -86,7 +112,10 @@
   methods: {
     complete() {
       const { unit_id, book_id } = this.$route.query;
-      this.$router.push({ name: 'Dashboard', query: { value: 8, unit_id, book_id } });
+      this.$router.push({
+        name: "Dashboard",
+        query: { value: 8, unit_id, book_id },
+      });
     },
     goToPage(page) {
       this.$router.push({ name: page });
@@ -105,7 +134,7 @@
       }, 1000);
     },
     handleClick(answer) {
-      console.log(answer)
+      console.log(answer);
       this.selectedButton = answer;
     },
     // 제출하기 버튼
@@ -113,18 +142,18 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
 
       axios({
         url: "problemLog/insertProblemLog.json",
@@ -133,13 +162,13 @@
           "Content-Type": "application/json; charset=UTF-8",
         },
         data: this.$store.getters.getAllAnswers,
-      }).then(function (res) {
-        console.log("problem - response : ", res.data);
       })
+        .then(function (res) {
+          console.log("problem - response : ", res.data);
+        })
         .catch(function (error) {
           console.log("problem - error : ", error);
         });
-
     },
     getProblem() {
       const vm = this;
@@ -167,27 +196,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -264,18 +296,18 @@
     },
     getStdId() {
       return this.$store.getters.getStdId;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
 
     // Fetch or process the current problem based on `currentLearningId`
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
@@ -328,7 +360,7 @@
   width: -webkit-fill-available;
 }
 
-.pickGroup article>div>p {
+.pickGroup article > div > p {
   font-size: 64px;
 }
 
client/views/pages/main/Chapter/Chapter3_1.vue
--- client/views/pages/main/Chapter/Chapter3_1.vue
+++ client/views/pages/main/Chapter/Chapter3_1.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,13 +12,22 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" /></div>
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
-          <button><img src="../../../../resources/img/btn10_s.png" alt="" /></button>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
+          <button>
+            <img src="../../../../resources/img/btn10_s.png" alt="" />
+          </button>
         </div>
 
         <div class="flex align-center justify-center" style="gap: 113px">
@@ -34,33 +45,53 @@
           <div class="pickGroup">
             <div class="flex" style="gap: 250px">
               <article class="text-ct" @click="handleClick('A')">
-                <div class="mb30"><img src="../../../../resources/img/img107_50s.png" alt="" /></div>
+                <div class="mb30">
+                  <img src="../../../../resources/img/img107_50s.png" alt="" />
+                </div>
                 <button class="popTxt">
-                  <img :src="selectedButton === 'A' ? selectedbuttonImg : buttonImg" alt="" />
+                  <img
+                    :src="
+                      selectedButton === 'A' ? selectedbuttonImg : buttonImg
+                    "
+                    alt=""
+                  />
                 </button>
               </article>
               <article class="text-ct" @click="handleClick('B')">
-                <div class="mb30"><img src="../../../../resources/img/img108_50s.png" alt="" /></div>
+                <div class="mb30">
+                  <img src="../../../../resources/img/img108_50s.png" alt="" />
+                </div>
                 <button class="popTxt">
-                  <img :src="selectedButton === 'B' ? selectedbuttonImg : buttonImg" alt="" />
+                  <img
+                    :src="
+                      selectedButton === 'B' ? selectedbuttonImg : buttonImg
+                    "
+                    alt=""
+                  />
                 </button>
               </article>
             </div>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
 </template>
 
 <script>
-
 import axios from "axios";
 export default {
   data() {
@@ -97,29 +128,26 @@
     },
     // 제출하기 버튼
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -131,7 +159,7 @@
         })
           .then((res) => {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -140,7 +168,6 @@
         console.log("Submission canceled by the user.");
       }
     },
-
 
     getProblem() {
       const vm = this;
@@ -168,27 +195,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -259,12 +289,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -272,7 +302,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_10.vue
--- client/views/pages/main/Chapter/Chapter3_10.vue
+++ client/views/pages/main/Chapter/Chapter3_10.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,15 +12,26 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" /></div>
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <button @click="playAudio">
             <img src="../../../../resources/img/btn10_s.png" alt="" />
-            <audio id="audio-player" src="client/resources/audio/bank.wav" preload="auto"></audio>
+            <audio
+              id="audio-player"
+              src="client/resources/audio/bank.wav"
+              preload="auto"
+            ></audio>
           </button>
         </div>
 
@@ -36,19 +49,32 @@
           </div>
           <div class="imgGroup mt20">
             <img src="../../../../resources/img/img116_59s.png" alt="" />
-            <p class="title1 mt10" style="width: auto"><strong>진수가 거절한 제안</strong>은 무엇인지 우리말로 쓰세요.</p>
+            <p class="title1 mt10" style="width: auto">
+              <strong>진수가 거절한 제안</strong>은 무엇인지 우리말로 쓰세요.
+            </p>
             <div class="mt20">
-              <input class="yellow-bd" v-model="answer" type="text" placeholder="답을 입력하세요." />
+              <input
+                class="yellow-bd"
+                v-model="answer"
+                type="text"
+                placeholder="답을 입력하세요."
+              />
             </div>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
-
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
@@ -91,29 +117,26 @@
       console.log("playing");
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -125,7 +148,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -160,27 +183,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -251,12 +277,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -264,7 +290,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_11.vue
--- client/views/pages/main/Chapter/Chapter3_11.vue
+++ client/views/pages/main/Chapter/Chapter3_11.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,13 +12,19 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" />
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
                </button> -->
         </div>
@@ -43,12 +51,19 @@
             </div>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
@@ -87,29 +102,26 @@
       }, 1000);
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -121,7 +133,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -156,27 +168,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -247,12 +262,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -260,7 +275,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_12.vue
--- client/views/pages/main/Chapter/Chapter3_12.vue
+++ client/views/pages/main/Chapter/Chapter3_12.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,13 +12,19 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" />
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
                </button> -->
         </div>
@@ -36,17 +44,33 @@
           <div class="dragGroup mt40">
             <div class="flex justify-center" style="gap: 20px">
               <div class="dropContainer" id="sourceContainer">
-                <button v-for="(word, index) in question" :key="index" draggable="true"
-                  @dragstart="onDragStart($event, word, index)">
+                <button
+                  v-for="(word, index) in question"
+                  :key="index"
+                  draggable="true"
+                  @dragstart="onDragStart($event, word, index)"
+                >
                   <p>{{ word }}</p>
                 </button>
               </div>
             </div>
           </div>
-          <div class="dropContainer flex align-center justify-center mt30" id="targetContainer">
-            <div class="dropSlot" v-for="(slot, index) in questionLength" :key="index" @dragover.prevent
-              @drop="onDrop($event, index)">
-              <div class="dropSlot-inner" draggable="true" @dragstart="onDragStart($event, userAnswer[index], index)">
+          <div
+            class="dropContainer flex align-center justify-center mt30"
+            id="targetContainer"
+          >
+            <div
+              class="dropSlot"
+              v-for="(slot, index) in questionLength"
+              :key="index"
+              @dragover.prevent
+              @drop="onDrop($event, index)"
+            >
+              <div
+                class="dropSlot-inner"
+                draggable="true"
+                @dragstart="onDragStart($event, userAnswer[index], index)"
+              >
                 <div class="dropSlot-inner">
                   <div v-if="userAnswer[index]" class="dropped-char">
                     {{ userAnswer[index] }}
@@ -56,12 +80,19 @@
             </div>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
@@ -122,29 +153,26 @@
       }
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -156,7 +184,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -191,27 +219,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -282,12 +313,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -295,7 +326,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
     this.initializeAnswer();
   },
 };
client/views/pages/main/Chapter/Chapter3_13.vue
--- client/views/pages/main/Chapter/Chapter3_13.vue
+++ client/views/pages/main/Chapter/Chapter3_13.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,13 +12,19 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" />
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
                </button> -->
         </div>
@@ -36,47 +44,78 @@
           <div class="flex justify-center">
             <div class="flex justify-between align-center" style="width: 50%">
               <!-- SVG Container for Drawing Lines -->
-              <svg class="line-container" xmlns="http://www.w3.org/2000/svg"
-                :style="{ width: svgWidth, height: svgHeight }">
-                <line v-for="(pair, index) in pairs" :key="'line-' + index" :x1="pair.leftPos.x" :y1="pair.leftPos.y"
-                  :x2="pair.rightPos.x" :y2="pair.rightPos.y" stroke="blue" stroke-width="2" />
+              <svg
+                class="line-container"
+                xmlns="http://www.w3.org/2000/svg"
+                :style="{ width: svgWidth, height: svgHeight }"
+              >
+                <line
+                  v-for="(pair, index) in pairs"
+                  :key="'line-' + index"
+                  :x1="pair.leftPos.x"
+                  :y1="pair.leftPos.y"
+                  :x2="pair.rightPos.x"
+                  :y2="pair.rightPos.y"
+                  stroke="blue"
+                  stroke-width="2"
+                />
               </svg>
 
               <div class="pickGroup left">
                 <div>
-                  <article class="flex align-center justify-between mb20" style="gap: 60px"
-                    v-for="(image, index) in images" :key="'left-' + index">
+                  <article
+                    class="flex align-center justify-between mb20"
+                    style="gap: 60px"
+                    v-for="(image, index) in images"
+                    :key="'left-' + index"
+                  >
                     <img :src="image.src" :alt="image.alt" />
                     <div>
-                      <button class="blue-c" @click="selectLeft(index, $event)"></button>
+                      <button
+                        class="blue-c"
+                        @click="selectLeft(index, $event)"
+                      ></button>
                     </div>
                   </article>
                 </div>
               </div>
 
               <div class="pickGroup right">
-                <article v-for="(word, index) in problemDetail" :key="index"
-                  class="flex align-center justify-start mb20" style="gap: 30px">
-                  <button class="blue-c" @click="selectRight(index, $event)"></button>
+                <article
+                  v-for="(word, index) in problemDetail"
+                  :key="index"
+                  class="flex align-center justify-start mb20"
+                  style="gap: 30px"
+                >
+                  <button
+                    class="blue-c"
+                    @click="selectRight(index, $event)"
+                  ></button>
                   <p class="word">{{ word.prblmDtlExpln }}</p>
                 </article>
               </div>
             </div>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
 </template>
 
 <script>
-
 import axios from "axios";
 export default {
   data() {
@@ -152,29 +191,26 @@
       };
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -186,7 +222,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -228,27 +264,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -319,12 +358,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -332,7 +371,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
     this.updateSVGSize();
     window.addEventListener("resize", this.updateSVGSize);
   },
client/views/pages/main/Chapter/Chapter3_14.vue
--- client/views/pages/main/Chapter/Chapter3_14.vue
+++ client/views/pages/main/Chapter/Chapter3_14.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,13 +12,19 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" />
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
                </button> -->
         </div>
@@ -33,21 +41,39 @@
               </div>
             </div>
           </div>
-          <div class="imgGroup"><img src="../../../../resources/img/img124_63s.png" alt="" /></div>
+          <div class="imgGroup">
+            <img src="../../../../resources/img/img124_63s.png" alt="" />
+          </div>
 
           <div class="dropGroup flex align-center justify-center mt30">
             <div class="mt50">
-              <input class="yellow-bd" v-model="answer" type="text" placeholder="답을 입력하세요." style="width: 50rem" />
+              <input
+                class="yellow-bd"
+                v-model="answer"
+                type="text"
+                placeholder="답을 입력하세요."
+                style="width: 50rem"
+              />
             </div>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem(answer)"><img src="../../../../resources/img/right.png" alt=""
-          :class="{ active: currentIndex === learningIdsLength - 1 }" />
+      <div class="next-btn" @click="nextProblem(answer)">
+        <img
+          src="../../../../resources/img/right.png"
+          alt=""
+          :class="{ active: currentIndex === learningIdsLength - 1 }"
+        />
       </div>
     </div>
   </div>
@@ -85,29 +111,26 @@
       }, 1000);
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -119,7 +142,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -155,27 +178,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: answer
-      }
+        prblmAns: answer,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: answer,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -249,12 +275,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -262,7 +288,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_15.vue
--- client/views/pages/main/Chapter/Chapter3_15.vue
+++ client/views/pages/main/Chapter/Chapter3_15.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,14 +12,22 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" />
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
-          <button><img src="../../../../resources/img/btn10_s.png" alt="" /></button>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
+          <button>
+            <img src="../../../../resources/img/btn10_s.png" alt="" />
+          </button>
         </div>
 
         <div class="text-ct">
@@ -32,19 +42,29 @@
               </div>
             </div>
           </div>
-          <div class="imgGroup"><img src="../../../../resources/img/img125_64s.png" alt="" /></div>
+          <div class="imgGroup">
+            <img src="../../../../resources/img/img125_64s.png" alt="" />
+          </div>
 
           <div class="dropGroup flex align-center justify-center mt70">
             <img src="../../../../resources/img/btn18_64s_normal.png" alt="" />
           </div>
         </div>
 
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" /></div>
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
+      </div>
     </div>
   </div>
 </template>
@@ -80,29 +100,26 @@
     },
 
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -114,7 +131,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -149,27 +166,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -240,12 +260,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -253,7 +273,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_16.vue
--- client/views/pages/main/Chapter/Chapter3_16.vue
+++ client/views/pages/main/Chapter/Chapter3_16.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt=""></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,7 +12,9 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="goToPage('Chapter4')"><img src="../../../../resources/img/left.png" alt=""></div>
+      <div class="pre-btn" @click="goToPage('Chapter4')">
+        <img src="../../../../resources/img/left.png" alt="" />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">중간 평가 설문 조사</p>
         <div class="flex align-center mb30">
@@ -19,13 +23,13 @@
                </button> -->
         </div>
 
-        <div class="text-ct ">
+        <div class="text-ct">
           <div class="table-wrap myplan">
             <table>
               <colgroup>
-                <col style="width: 5%;">
-                <col style="width: 70%;">
-                <col style="width: 25%;">
+                <col style="width: 5%" />
+                <col style="width: 70%" />
+                <col style="width: 25%" />
               </colgroup>
               <tr>
                 <td>
@@ -35,22 +39,46 @@
                   <p class="title1">2교시</p>
                 </td>
                 <td>
-                  <div class="flex justify-center" style="gap: 60px;">
+                  <div class="flex justify-center" style="gap: 60px">
                     <article>
                       <div class="flex align-center">
                         <p class="title1 mr20">네</p>
-                        <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)">
-                          <img :src="item.imgSrc1">
-                          <img :src="item.imgSrc2" :style="{ display: item.isSecondImageVisible ? 'block' : 'none' }">
+                        <button
+                          class="popTxt"
+                          v-for="(item, index) in items"
+                          :key="index"
+                          @click="toggleImage(index)"
+                        >
+                          <img :src="item.imgSrc1" />
+                          <img
+                            :src="item.imgSrc2"
+                            :style="{
+                              display: item.isSecondImageVisible
+                                ? 'block'
+                                : 'none',
+                            }"
+                          />
                         </button>
                       </div>
                     </article>
                     <article>
                       <div class="flex align-center">
                         <p class="title1 mr20">아니요</p>
-                        <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)">
-                          <img :src="item.imgSrc1">
-                          <img :src="item.imgSrc2" :style="{ display: item.isSecondImageVisible ? 'block' : 'none' }">
+                        <button
+                          class="popTxt"
+                          v-for="(item, index) in items"
+                          :key="index"
+                          @click="toggleImage(index)"
+                        >
+                          <img :src="item.imgSrc1" />
+                          <img
+                            :src="item.imgSrc2"
+                            :style="{
+                              display: item.isSecondImageVisible
+                                ? 'block'
+                                : 'none',
+                            }"
+                          />
                         </button>
                       </div>
                     </article>
@@ -65,22 +93,46 @@
                   <p class="title1">2교시</p>
                 </td>
                 <td>
-                  <div class="flex justify-center" style="gap: 60px;">
+                  <div class="flex justify-center" style="gap: 60px">
                     <article>
                       <div class="flex align-center">
                         <p class="title1 mr20">네</p>
-                        <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)">
-                          <img :src="item.imgSrc1">
-                          <img :src="item.imgSrc2" :style="{ display: item.isSecondImageVisible ? 'block' : 'none' }">
+                        <button
+                          class="popTxt"
+                          v-for="(item, index) in items"
+                          :key="index"
+                          @click="toggleImage(index)"
+                        >
+                          <img :src="item.imgSrc1" />
+                          <img
+                            :src="item.imgSrc2"
+                            :style="{
+                              display: item.isSecondImageVisible
+                                ? 'block'
+                                : 'none',
+                            }"
+                          />
                         </button>
                       </div>
                     </article>
                     <article>
                       <div class="flex align-center">
                         <p class="title1 mr20">아니요</p>
-                        <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)">
-                          <img :src="item.imgSrc1">
-                          <img :src="item.imgSrc2" :style="{ display: item.isSecondImageVisible ? 'block' : 'none' }">
+                        <button
+                          class="popTxt"
+                          v-for="(item, index) in items"
+                          :key="index"
+                          @click="toggleImage(index)"
+                        >
+                          <img :src="item.imgSrc1" />
+                          <img
+                            :src="item.imgSrc2"
+                            :style="{
+                              display: item.isSecondImageVisible
+                                ? 'block'
+                                : 'none',
+                            }"
+                          />
                         </button>
                       </div>
                     </article>
@@ -94,10 +146,11 @@
               </button>
             </div>
           </div>
-
         </div>
       </div>
-      <div class="next-btn" @click="goToPage('Dashboard')"><img src="../../../../resources/img/right.png" alt=""></div>
+      <div class="next-btn" @click="goToPage('Dashboard')">
+        <img src="../../../../resources/img/right.png" alt="" />
+      </div>
     </div>
   </div>
 </template>
@@ -107,19 +160,23 @@
   data() {
     return {
       items: [
-        { imgSrc1: 'client/resources/img/btn13_42s.png', imgSrc2: 'client/resources/img/btn14_50s_click.png', isSecondImageVisible: false },
-
+        {
+          imgSrc1: "client/resources/img/btn13_42s.png",
+          imgSrc2: "client/resources/img/btn14_50s_click.png",
+          isSecondImageVisible: false,
+        },
       ],
-      timer: '00',
+      timer: "00",
       showButton1: false,
       showButton2: false,
       showButton3: false,
       showButton4: false,
-    }
+    };
   },
   methods: {
     toggleImage(index) {
-      this.items[index].isSecondImageVisible = !this.items[index].isSecondImageVisible;
+      this.items[index].isSecondImageVisible =
+        !this.items[index].isSecondImageVisible;
     },
     goToPage(page) {
       this.$router.push({ name: page });
@@ -160,20 +217,13 @@
           clearInterval(this.intervalId);
         }
       }, 1000);
-    }
+    },
   },
-  watch: {
-
-  },
-  computed: {
-
-  },
-  components: {
-  },
-  mounted() {
-
-  }
-}
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {},
+};
 </script>
 <style scoped>
 .textbox {
@@ -202,4 +252,4 @@
   width: 150rem;
   margin: 0 auto;
 }
-</style>
(파일 끝에 줄바꿈 문자 없음)
+</style>
client/views/pages/main/Chapter/Chapter3_2.vue
--- client/views/pages/main/Chapter/Chapter3_2.vue
+++ client/views/pages/main/Chapter/Chapter3_2.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -11,12 +13,18 @@
     </div>
     <div class="flex justify-between align-center">
       <div class="pre-btn" @click="previousProblem()">
-        <img src="../../../../resources/img/left.png" alt="" :class="{ active: currentIndex === 0 }" />
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
           </button> -->
         </div>
@@ -39,16 +47,25 @@
           <div class="flex align-center justify-center">
             <div class="inputbox mt30">go</div>
           </div>
-          <div class="pickGroup mt40 flex align-center justify-center" style="gap: 100px">
+          <div
+            class="pickGroup mt40 flex align-center justify-center"
+            style="gap: 100px"
+          >
             <p>i</p>
-            <article style="gap: 60px; bottom: 159px; left: 242px" @click="handleClick(1)">
+            <article
+              style="gap: 60px; bottom: 159px; left: 242px"
+              @click="handleClick(1)"
+            >
               <button>
                 <img src="../../../../resources/img/img136_71s.png" alt="" />
                 <p :class="{ active: selectedButton === 1 }">1</p>
               </button>
             </article>
             <p>to</p>
-            <article style="gap: 60px; bottom: 159px; right: 559px" @click="handleClick(2)">
+            <article
+              style="gap: 60px; bottom: 159px; right: 559px"
+              @click="handleClick(2)"
+            >
               <button>
                 <img src="../../../../resources/img/img136_71s.png" alt="" />
                 <p :class="{ active: selectedButton === 2 }">2</p>
@@ -57,12 +74,20 @@
             <p>bed</p>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" /></div>
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
+      </div>
     </div>
   </div>
 </template>
@@ -105,29 +130,26 @@
     },
     // 제출하기 버튼
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -139,7 +161,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -174,27 +196,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -265,12 +290,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -278,7 +303,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_3.vue
--- client/views/pages/main/Chapter/Chapter3_3.vue
+++ client/views/pages/main/Chapter/Chapter3_3.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,8 +12,13 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" /></div>
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
@@ -30,27 +37,47 @@
               </div>
             </div>
           </div>
-          <div class="pickGroup mt60 flex align-center justify-center"
-            style="flex-wrap: wrap; gap: 100px; margin-top: 7%; margin-left: 5%">
-            <article v-for="(item, index) in problemDetail" :key="index"
-              style="flex: 1 0 calc(50% - 100px); bottom: 159px; left: 242px">
-              <div class="flex align-center" @click="handleClick(item.prblmDtlExpln)">
+          <div
+            class="pickGroup mt60 flex align-center justify-center"
+            style="flex-wrap: wrap; gap: 100px; margin-top: 7%; margin-left: 5%"
+          >
+            <article
+              v-for="(item, index) in problemDetail"
+              :key="index"
+              style="flex: 1 0 calc(50% - 100px); bottom: 159px; left: 242px"
+            >
+              <div
+                class="flex align-center"
+                @click="handleClick(item.prblmDtlExpln)"
+              >
                 <button>
                   <img src="../../../../resources/img/img136_71s.png" alt="" />
-                  <p :class="{ active: selectedButton === item.prblmDtlExpln }">{{ index + 1 }}</p>
+                  <p :class="{ active: selectedButton === item.prblmDtlExpln }">
+                    {{ index + 1 }}
+                  </p>
                 </button>
                 <p>{{ item.prblmDtlExpln }}</p>
               </div>
             </article>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt=""
-          :class="{ active: currentIndex === learningIdsLength - 1 }" />
+      <div class="next-btn" @click="nextProblem()">
+        <img
+          src="../../../../resources/img/right.png"
+          alt=""
+          :class="{ active: currentIndex === learningIdsLength - 1 }"
+        />
       </div>
     </div>
   </div>
@@ -96,29 +123,26 @@
     },
     // 제출하기 버튼
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -130,7 +154,7 @@
         })
           .then((res) => {
             console.log("problem - response : ", res.data);
-            this.goToPage("Chapter4");  // 'this' correctly refers to the Vue instance
+            this.goToPage("Chapter4"); // 'this' correctly refers to the Vue instance
           })
           .catch((error) => {
             console.log("problem - error : ", error);
@@ -165,27 +189,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -256,21 +283,20 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
-
 
     // Fetch or process the current problem based on `currentLearningId`
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_3_1.vue
--- client/views/pages/main/Chapter/Chapter3_3_1.vue
+++ client/views/pages/main/Chapter/Chapter3_3_1.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,13 +12,22 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" /></div>
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
-          <button><img src="../../../../resources/img/btn10_s.png" alt="" /></button>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
+          <button>
+            <img src="../../../../resources/img/btn10_s.png" alt="" />
+          </button>
         </div>
 
         <div class="text-ct">
@@ -35,7 +46,10 @@
             <img src="../../../../resources/img/img109_51s.png" alt="" />
           </div>
 
-          <div class="pickGroup mt60 flex align-center justify-center" style="gap: 100px; margin-top: 7%">
+          <div
+            class="pickGroup mt60 flex align-center justify-center"
+            style="gap: 100px; margin-top: 7%"
+          >
             <article style="gap: 60px; bottom: 159px; left: 242px">
               <div class="flex align-center" @click="handleClick(1)">
                 <button>
@@ -65,19 +79,25 @@
             </article>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
 </template>
 
 <script>
-
 import axios from "axios";
 export default {
   data() {
@@ -112,29 +132,26 @@
     },
     // 제출하기 버튼
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -146,7 +163,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -181,27 +198,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -272,12 +292,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -285,7 +305,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_4.vue
--- client/views/pages/main/Chapter/Chapter3_4.vue
+++ client/views/pages/main/Chapter/Chapter3_4.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
@@ -13,15 +13,29 @@
     </div>
     <div class="flex justify-between align-center">
       <div class="pre-btn" @click="previousProblem()">
-        <img src="../../../../resources/img/left.png" alt="" :class="{ active: currentIndex === 0 }" />
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <button>
-            <img src="../../../../resources/img/btn10_s.png" alt="Listen" @click="playAudio" />
-            <audio id="audio-player" src="client/resources/audio/tt.wav" preload="auto"></audio>
+            <img
+              src="../../../../resources/img/btn10_s.png"
+              alt="Listen"
+              @click="playAudio"
+            />
+            <audio
+              id="audio-player"
+              src="client/resources/audio/tt.wav"
+              preload="auto"
+            ></audio>
           </button>
         </div>
 
@@ -37,16 +51,23 @@
               </div>
             </div>
           </div>
-          <div class="pickGroup flex align-center justify-center"
-            style="flex-wrap: wrap; gap: 100px; margin-top: 7%; margin-left: 5%">
-            <article v-for="(item, index) in problemDetail" :key="index"
-              style="flex: 1 0 calc(50% - 100px); bottom: 159px; left: 242px">
+          <div
+            class="pickGroup flex align-center justify-center"
+            style="flex-wrap: wrap; gap: 100px; margin-top: 7%; margin-left: 5%"
+          >
+            <article
+              v-for="(item, index) in problemDetail"
+              :key="index"
+              style="flex: 1 0 calc(50% - 100px); bottom: 159px; left: 242px"
+            >
               <div class="flex align-center">
                 <button @click="handleClick(item.prblmDtlExpln)">
                   <img src="../../../../resources/img/img136_71s.png" alt="" />
-                  <p :class="{
-                    active: selectedButton === item.prblmDtlExpln,
-                  }">
+                  <p
+                    :class="{
+                      active: selectedButton === item.prblmDtlExpln,
+                    }"
+                  >
                     {{ index + 1 }}
                   </p>
                 </button>
@@ -55,10 +76,16 @@
             </article>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
       <div class="next-btn" @click="nextProblem()">
         <img src="../../../../resources/img/right.png" alt="" />
@@ -109,29 +136,26 @@
       this.selectedButton = number;
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -143,7 +167,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -178,27 +202,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -269,12 +296,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -282,7 +309,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_5.vue
--- client/views/pages/main/Chapter/Chapter3_5.vue
+++ client/views/pages/main/Chapter/Chapter3_5.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,12 +12,19 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" /></div>
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
           </button> -->
         </div>
@@ -40,7 +49,10 @@
               go
             </div>
           </div> -->
-          <div class="pickGroup mt40 flex align-center justify-center" style="gap: 100px">
+          <div
+            class="pickGroup mt40 flex align-center justify-center"
+            style="gap: 100px"
+          >
             <p>i</p>
             <p>&#40;</p>
             <article style="gap: 60px; bottom: 159px; left: 242px">
@@ -65,12 +77,19 @@
             <p>bed</p>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
@@ -111,29 +130,26 @@
     },
     // 제출하기 버튼
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -145,7 +161,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -180,27 +196,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -271,12 +290,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -284,7 +303,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_6.vue
--- client/views/pages/main/Chapter/Chapter3_6.vue
+++ client/views/pages/main/Chapter/Chapter3_6.vue
@@ -2,7 +2,9 @@
   <div id="Chapter2_2" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,14 +12,27 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" /></div>
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
-          <button @click="playAudio"><img src="../../../../resources/img/btn10_s.png" alt="" /> <audio id="audio-player"
-              src="client/resources/audio/bank.wav" preload="auto"></audio></button>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
+          <button @click="playAudio">
+            <img src="../../../../resources/img/btn10_s.png" alt="" />
+            <audio
+              id="audio-player"
+              src="client/resources/audio/bank.wav"
+              preload="auto"
+            ></audio>
+          </button>
         </div>
         <div class="time-hint">
           <button class="hint-btn">HINT</button>
@@ -35,18 +50,27 @@
           <img src="../../../../resources/img/img114_57s.png" alt="" />
         </div> -->
 
-        <div class="pickGroup flex align-center justify-center"
-          style="flex-wrap: wrap; gap: 100px; margin-top: 7%; margin-left: 5%">
-          <div class="pickGroup flex align-center justify-center"
-            style="flex-wrap: wrap; gap: 100px; margin-top: 7%; margin-left: 5%">
-            <article v-for="(item, index) in problemDetail" :key="index"
-              style="flex: 1 0 calc(50% - 100px); bottom: 159px; left: 242px">
+        <div
+          class="pickGroup flex align-center justify-center"
+          style="flex-wrap: wrap; gap: 100px; margin-top: 7%; margin-left: 5%"
+        >
+          <div
+            class="pickGroup flex align-center justify-center"
+            style="flex-wrap: wrap; gap: 100px; margin-top: 7%; margin-left: 5%"
+          >
+            <article
+              v-for="(item, index) in problemDetail"
+              :key="index"
+              style="flex: 1 0 calc(50% - 100px); bottom: 159px; left: 242px"
+            >
               <div class="flex align-center">
                 <button @click="handleClick(item.prblmDtlExpln)">
                   <img src="../../../../resources/img/img136_71s.png" alt="" />
-                  <p :class="{
-                    active: selectedButton === item.prblmDtlExpln,
-                  }">
+                  <p
+                    :class="{
+                      active: selectedButton === item.prblmDtlExpln,
+                    }"
+                  >
                     {{ index + 1 }}
                   </p>
                 </button>
@@ -55,30 +79,50 @@
             </article>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
-
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
 </template>
 
 <script>
-
 import axios from "axios";
 export default {
   data() {
     return {
       items: [
-        { imgSrc2: "client/resources/img/img53_6_35s.png", imgSrc1: "client/resources/img/img53_1_35s.png" },
-        { imgSrc2: "client/resources/img/img53_7_35s.png", imgSrc1: "client/resources/img/img53_2_35s.png" },
-        { imgSrc2: "client/resources/img/img53_8_35s.png", imgSrc1: "client/resources/img/img53_3_35s.png" },
-        { imgSrc2: "client/resources/img/img53_9_35s.png", imgSrc1: "client/resources/img/img53_4_35s.png" },
-        { imgSrc2: "client/resources/img/img53_10_35s.png", imgSrc1: "client/resources/img/img53_5_35s.png" },
+        {
+          imgSrc2: "client/resources/img/img53_6_35s.png",
+          imgSrc1: "client/resources/img/img53_1_35s.png",
+        },
+        {
+          imgSrc2: "client/resources/img/img53_7_35s.png",
+          imgSrc1: "client/resources/img/img53_2_35s.png",
+        },
+        {
+          imgSrc2: "client/resources/img/img53_8_35s.png",
+          imgSrc1: "client/resources/img/img53_3_35s.png",
+        },
+        {
+          imgSrc2: "client/resources/img/img53_9_35s.png",
+          imgSrc1: "client/resources/img/img53_4_35s.png",
+        },
+        {
+          imgSrc2: "client/resources/img/img53_10_35s.png",
+          imgSrc1: "client/resources/img/img53_5_35s.png",
+        },
       ],
       selectedIndex: null,
       timer: "00",
@@ -120,29 +164,26 @@
       this.selectedButton = number;
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -154,7 +195,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -194,27 +235,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -285,12 +329,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -298,7 +342,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_7.vue
--- client/views/pages/main/Chapter/Chapter3_7.vue
+++ client/views/pages/main/Chapter/Chapter3_7.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
@@ -13,12 +13,18 @@
     </div>
     <div class="flex justify-between align-center">
       <div class="pre-btn" @click="previousProblem()">
-        <img src="../../../../resources/img/left.png" alt="" :class="{ active: currentIndex === 0 }" />
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
         </div>
 
         <div class="text-ct">
@@ -34,7 +40,10 @@
             </div>
           </div>
 
-          <div class="pickGroup flex align-center justify-between mt80" style="gap: 100px">
+          <div
+            class="pickGroup flex align-center justify-between mt80"
+            style="gap: 100px"
+          >
             <!-- <p></p> -->
             <button>
               <img src="../../../../resources/img/btn10_s.png" alt="" />
@@ -43,7 +52,10 @@
               <article>
                 <div class="flex align-center">
                   <button @click="handleCheck('O')" name="O">
-                    <img src="../../../../resources/img/img136_71s.png" alt="" />
+                    <img
+                      src="../../../../resources/img/img136_71s.png"
+                      alt=""
+                    />
                     <p :class="{ active: selectedButton === 'O' }">1</p>
                   </button>
                   <img src="../../../../resources/img/img111_56s.png" alt="" />
@@ -52,7 +64,10 @@
               <article>
                 <div class="flex align-center">
                   <button @click="handleCheck('X')" name="X">
-                    <img src="../../../../resources/img/img136_71s.png" alt="" />
+                    <img
+                      src="../../../../resources/img/img136_71s.png"
+                      alt=""
+                    />
                     <p :class="{ active: selectedButton === 'X' }">2</p>
                   </button>
                   <img src="../../../../resources/img/img112_56s.png" alt="" />
@@ -61,11 +76,16 @@
             </div>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
-
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
       <div class="next-btn" @click="nextProblem()">
         <img src="../../../../resources/img/right.png" alt="" />
@@ -115,29 +135,26 @@
       console.log(this.selectedButton);
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -147,9 +164,9 @@
           },
           data: this.$store.getters.getAllAnswers,
         })
-          .then((res)=> {
+          .then((res) => {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -184,27 +201,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -275,12 +295,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -288,7 +308,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_8.vue
--- client/views/pages/main/Chapter/Chapter3_8.vue
+++ client/views/pages/main/Chapter/Chapter3_8.vue
@@ -2,7 +2,9 @@
   <div id="Chapter1_1" class="content-wrap">
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
-        <div class="logo mb25"><img src="../../../../resources/img/logo2.png" alt="" /></div>
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
+        </div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,12 +12,19 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="previousProblem()"><img src="../../../../resources/img/left.png" alt=""
-          :class="{ active: currentIndex === 0 }" /></div>
+      <div class="pre-btn" @click="previousProblem()">
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
+      </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
                </button> -->
         </div>
@@ -42,15 +51,28 @@
                 </button>
               </div>
             </div>
-            <input class="yellow-bd" v-model="answer" style="width: 45%" type="text" placeholder="답을 입력하세요." />
+            <input
+              class="yellow-bd"
+              v-model="answer"
+              style="width: 45%"
+              type="text"
+              placeholder="답을 입력하세요."
+            />
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="nextProblem()"><img src="../../../../resources/img/right.png" alt="" />
+      <div class="next-btn" @click="nextProblem()">
+        <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
   </div>
@@ -120,29 +142,26 @@
       }, 1000);
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -154,7 +173,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -189,27 +208,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -280,12 +302,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -293,7 +315,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter3_9.vue
--- client/views/pages/main/Chapter/Chapter3_9.vue
+++ client/views/pages/main/Chapter/Chapter3_9.vue
@@ -3,7 +3,7 @@
     <div style="margin: 30px 0px 50px; width: 20%">
       <router-link to="/MyPlan.page">
         <div class="logo mb25">
-          <img src="../../../../resources/img/logo2.png" alt="" />
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
       </router-link>
     </div>
@@ -13,12 +13,18 @@
     </div>
     <div class="flex justify-between align-center">
       <div class="pre-btn" @click="previousProblem()">
-        <img src="../../../../resources/img/left.png" alt="" :class="{ active: currentIndex === 0 }" />
+        <img
+          src="../../../../resources/img/left.png"
+          alt=""
+          :class="{ active: currentIndex === 0 }"
+        />
       </div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
-          <p class="subtitle2 mr20">{{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}</p>
+          <p class="subtitle2 mr20">
+            {{ currentProblemIndex + 1 }}. {{ dataList.prblmExpln }}
+          </p>
           <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
                </button> -->
         </div>
@@ -41,19 +47,30 @@
                             alt=""
                         /> -->
             <div class="mt50">
-              <input class="yellow-bd" type="text" name="" id="" placeholder="답을 입력하세요." v-model="answer"
-                @change="submitAnswer" />
+              <input
+                class="yellow-bd"
+                type="text"
+                name=""
+                id=""
+                placeholder="답을 입력하세요."
+                v-model="answer"
+                @change="submitAnswer"
+              />
             </div>
           </div>
         </div>
-        <button class="submit-button" @click="handleSubmit()"
-          v-if="currentIndex === learningIdsLength - 1">제출하기</button>
-          <button class="submit-button" @click="nextProblem()"
-          v-else>다음 문제로</button>
+        <button
+          class="submit-button"
+          @click="handleSubmit()"
+          v-if="currentIndex === learningIdsLength - 1"
+        >
+          제출하기
+        </button>
+        <button class="submit-button" @click="nextProblem()" v-else>
+          다음 문제로
+        </button>
       </div>
-      <div class="next-btn" @click="
-        nextProblem()
-        ">
+      <div class="next-btn" @click="nextProblem()">
         <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
@@ -122,29 +139,26 @@
       }, 1000);
     },
     handleSubmit() {
-
       const userConfirmed = window.confirm("제출 하시겠습니까?");
       if (userConfirmed) {
-
         const problemData = {
           prblmInfo: this.currentLearningId,
           prblmNumber: this.currentProblemIndex,
-          prblmAns: this.selectedButton
+          prblmAns: this.selectedButton,
         };
 
         const answerData = {
           prblmId: this.currentLearningId.prblm_id,
           prblmAns: this.selectedButton,
           stdId: this.$store.getters.getStdId,
-          prblmLogAnsCnt: 1
+          prblmLogAnsCnt: 1,
         };
 
-        this.$store.dispatch('saveProblemData', problemData);
-        this.$store.dispatch('saveProblemAttempt', answerData);
+        this.$store.dispatch("saveProblemData", problemData);
+        this.$store.dispatch("saveProblemAttempt", answerData);
 
         console.log(this.$store.getters.getAllProblems);
         console.log(this.$store.getters.getAllAnswers);
-
 
         axios({
           url: "problemLog/insertProblemLog.json",
@@ -156,7 +170,7 @@
         })
           .then(function (res) {
             console.log("problem - response : ", res.data);
-            this.goToPage('Chapter4')
+            this.goToPage("Chapter4");
           })
           .catch(function (error) {
             console.log("problem - error : ", error);
@@ -191,27 +205,30 @@
       const problemData = {
         prblmInfo: this.currentLearningId,
         prblmNumber: this.currentProblemIndex,
-        prblmAns: this.selectedButton
-      }
+        prblmAns: this.selectedButton,
+      };
       const answerData = {
         prblmId: this.currentLearningId.prblm_id,
         prblmAns: this.selectedButton,
         stdId: this.$store.getters.getStdId,
-        prblmLogAnsCnt: 1
-      }
-      this.$store.dispatch('saveProblemData', problemData);
-      this.$store.dispatch('saveProblemAttempt', answerData);
-      console.log(this.$store.getters.getAllProblems)
-      console.log(this.$store.getters.getAllAnswers)
-      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
-        this.$store.dispatch('goToNextProblem');
+        prblmLogAnsCnt: 1,
+      };
+      this.$store.dispatch("saveProblemData", problemData);
+      this.$store.dispatch("saveProblemAttempt", answerData);
+      console.log(this.$store.getters.getAllProblems);
+      console.log(this.$store.getters.getAllAnswers);
+      if (
+        this.currentProblemIndex <
+        this.$store.state.currentLearningIds.length - 1
+      ) {
+        this.$store.dispatch("goToNextProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
     },
     previousProblem() {
       if (this.currentProblemIndex > 0) {
-        this.$store.dispatch('goToPreviousProblem');
+        this.$store.dispatch("goToPreviousProblem");
         this.handleProblemDetail(this.currentLearningId);
         this.goToPage(this.problemType);
       }
@@ -282,12 +299,12 @@
     },
     isPreviousButtonDisabled() {
       return this.currentProblemIndex === 0;
-    }
+    },
   },
   created() {
-    console.log('Current Learning ID:', this.currentLearningId);
-    console.log('Current Label:', this.currentLabel);
-    console.log('Current Problem Index:', this.currentProblemIndex);
+    console.log("Current Learning ID:", this.currentLearningId);
+    console.log("Current Label:", this.currentLabel);
+    console.log("Current Problem Index:", this.currentProblemIndex);
     this.currentIndex = this.currentProblemIndex;
     this.learningIdsLength = this.$store.state.currentLearningIds.length;
 
@@ -295,7 +312,7 @@
   },
   components: {},
   mounted() {
-    this.getProblem()
+    this.getProblem();
   },
 };
 </script>
client/views/pages/main/Chapter/Chapter4.vue
--- client/views/pages/main/Chapter/Chapter4.vue
+++ client/views/pages/main/Chapter/Chapter4.vue
@@ -1,248 +1,264 @@
 <template>
-    <div id="Chapter1_1" class="content-wrap">
-        <div style="margin: 30px 0px 50px; width: 20%">
-            <router-link to="/MyPlan.page">
-                <div class="logo mb25">
-                    <img src="../../../../resources/img/logo2.png" alt="" />
-                </div>
-            </router-link>
+  <div id="Chapter1_1" class="content-wrap">
+    <div style="margin: 30px 0px 50px; width: 20%">
+      <router-link to="/MyPlan.page">
+        <div class="logo mb25">
+          <img src="../../../../resources/img/new_img/logo_v2.png" alt="" />
         </div>
-        <div class="title-box mb25 flex align-center mt40">
-            <span class="title mr40">1. Hello WORLD</span>
-            <span class="subtitle">my name is dd</span>
-        </div>
-        <div class="flex justify-between align-center">
-            <div class="pre-btn" @click="goToPage('Chapter3_15')">
-                <img src="../../../../resources/img/left.png" alt="" />
-            </div>
-            <div class="content title-box">
-                <p class="title mt25 title-bg">Quiz Result</p>
-                <!-- <div class="flex align-center mb30">
+      </router-link>
+    </div>
+    <div class="title-box mb25 flex align-center mt40">
+      <span class="title mr40">1. Hello WORLD</span>
+      <span class="subtitle">my name is dd</span>
+    </div>
+    <div class="flex justify-between align-center">
+      <div class="pre-btn" @click="goToPage('Chapter3_15')">
+        <img src="../../../../resources/img/left.png" alt="" />
+      </div>
+      <div class="content title-box">
+        <p class="title mt25 title-bg">Quiz Result</p>
+        <!-- <div class="flex align-center mb30">
                     <p class="subtitle2 mr20"></p>
                     <button><img src="../../../../resources/img/btn10_s.png" alt="">
                  </button>
                 </div> -->
 
-                <div class="text-ct flex justify-center" style="gap: 150px; margin: 0 auto">
-                    <div class="wrap-bg">
-                        <div class="title-box flex mb10 justify-between">
-                            <p class="title mb20">최종 점수</p>
-                            <button type="button" class="popup-close-btn" @click="closeBtn">
-                                <svg-icon type="mdi" :path="mdiWindowClose" class="close-btn"></svg-icon>
-                            </button>
-                        </div>
-                        <div style="width: 100%" class="flex mt30">
-                            <p class="title5"><em class="yellow">93</em></p>
-                            <p class="title4 ml10 mr10">&#47;</p>
-                            <p class="title4">100</p>
-                        </div>
-                    </div>
-                    <div class="bg-gray" style="width: 980px">
-                        <div class="title-box flex mb10 justify-between">
-                            <p class="title mb20">오답 문제 리스트</p>
-                            <button type="button" class="popup-close-btn" @click="closeBtn">
-                                <svg-icon type="mdi" :path="mdiWindowClose" class="close-btn"></svg-icon>
-                            </button>
-                        </div>
-                        <article class="mb20 flex-column result-box" style="gap: 20px">
-                            <div class="flex justify-between wrap" v-for="(item, index) in dataList" :key="index">
-                                <div class="flex align-center">
-                                    <div>
-                                        <p class="title1 mr20">
-                                            {{ index + 1 }}
-                                        </p>
-                                    </div>
-                                    <div class="text-lf">
-                                        <p class="title1">
-                                            {{ item.prblmInfo.prblm_expln }}
-                                        </p>
-                                    </div>
-                                </div>
-                                <div>
-                                    <div class="flex align-center" style="gap: 10px">
-                                        <button type="button" title="정답 확인" class="yellow-btn" @click="
-                                            [
-                                                handleProblemDetail(item.prblmInfo),
-                                                goToProblemPage(
-                                                    problemType
-                                                ),
-                                            ]
-                                            ">
-                                            정답 확인
-                                        </button>
-                                    </div>
-                                </div>
-                            </div>
-                        </article>
-                    </div>
+        <div
+          class="text-ct flex justify-center"
+          style="gap: 150px; margin: 0 auto"
+        >
+          <div class="wrap-bg">
+            <div class="title-box flex mb10 justify-between">
+              <p class="title mb20">최종 점수</p>
+              <button type="button" class="popup-close-btn" @click="closeBtn">
+                <svg-icon
+                  type="mdi"
+                  :path="mdiWindowClose"
+                  class="close-btn"
+                ></svg-icon>
+              </button>
+            </div>
+            <div style="width: 100%" class="flex mt30">
+              <p class="title5"><em class="yellow">93</em></p>
+              <p class="title4 ml10 mr10">&#47;</p>
+              <p class="title4">100</p>
+            </div>
+          </div>
+          <div class="bg-gray" style="width: 980px">
+            <div class="title-box flex mb10 justify-between">
+              <p class="title mb20">오답 문제 리스트</p>
+              <button type="button" class="popup-close-btn" @click="closeBtn">
+                <svg-icon
+                  type="mdi"
+                  :path="mdiWindowClose"
+                  class="close-btn"
+                ></svg-icon>
+              </button>
+            </div>
+            <article class="mb20 flex-column result-box" style="gap: 20px">
+              <div
+                class="flex justify-between wrap"
+                v-for="(item, index) in dataList"
+                :key="index"
+              >
+                <div class="flex align-center">
+                  <div>
+                    <p class="title1 mr20">
+                      {{ index + 1 }}
+                    </p>
+                  </div>
+                  <div class="text-lf">
+                    <p class="title1">
+                      {{ item.prblmInfo.prblm_expln }}
+                    </p>
+                  </div>
                 </div>
-            </div>
-            <div class="next-btn" @click="goToPage('Chapter3_16')">
-                <img src="../../../../resources/img/right.png" alt="" />
-            </div>
+                <div>
+                  <div class="flex align-center" style="gap: 10px">
+                    <button
+                      type="button"
+                      title="정답 확인"
+                      class="yellow-btn"
+                      @click="
+                        [
+                          handleProblemDetail(item.prblmInfo),
+                          goToProblemPage(problemType),
+                        ]
+                      "
+                    >
+                      정답 확인
+                    </button>
+                  </div>
+                </div>
+              </div>
+            </article>
+          </div>
         </div>
+      </div>
+      <div class="next-btn" @click="goToPage('Chapter3_16')">
+        <img src="../../../../resources/img/right.png" alt="" />
+      </div>
     </div>
+  </div>
 </template>
 
 <script>
 import axios from "axios";
 
 export default {
-    data() {
-        return {
-            timer: "00",
-            showButton1: false,
-            showButton2: false,
-            showButton3: false,
-            showButton4: false,
+  data() {
+    return {
+      timer: "00",
+      showButton1: false,
+      showButton2: false,
+      showButton3: false,
+      showButton4: false,
 
-            // 단원 평가 아이디, 추후 세션으로 받게 변경
-            evalId: "",
+      // 단원 평가 아이디, 추후 세션으로 받게 변경
+      evalId: "",
 
-            dataList: [],
+      dataList: [],
 
-            prblmId: "",
+      prblmId: "",
 
-            problemType: null,
-        };
+      problemType: null,
+    };
+  },
+  methods: {
+    goToPage(page) {
+      this.$router.push({ name: page });
     },
-    methods: {
-        goToPage(page) {
-            this.$router.push({ name: page });
-        },
-        goToProblemPage(page) {
-            this.$router.push({ name: page });
-        },
-        handleDrag(dragNumber) {
-            // Drag 버튼 숨기기
-            // 여기서는 상태 관리를 통해 버튼을 제어합니다.
-            if (dragNumber === 1) {
-                this.showButton1 = false;
-            } else if (dragNumber === 2) {
-                this.showButton2 = false;
-            } else if (dragNumber === 3) {
-                this.showButton3 = false;
-            }
-        },
-        showButton(dropNumber) {
-            // Drop 영역의 이미지 클릭 이벤트 핸들러 설정
-            // 여기서는 상태 관리를 통해 버튼을 보이게 합니다.
-            if (dropNumber === 1) {
-                this.showButton1 = true;
-            } else if (dropNumber === 2) {
-                this.showButton2 = true;
-            } else if (dropNumber === 3) {
-                this.showButton3 = true;
-            } else if (dropNumber === 4) {
-                this.showButton4 = true;
-            }
-        },
-        startTimer() {
-            if (this.intervalId) {
-                clearInterval(this.intervalId);
-            }
-            this.timer = 5;
-            this.intervalId = setInterval(() => {
-                if (this.timer > 0) {
-                    this.timer--;
-                } else {
-                    clearInterval(this.intervalId);
-                }
-            }, 1000);
-        },
-        problemList() {
-        },
+    goToProblemPage(page) {
+      this.$router.push({ name: page });
+    },
+    handleDrag(dragNumber) {
+      // Drag 버튼 숨기기
+      // 여기서는 상태 관리를 통해 버튼을 제어합니다.
+      if (dragNumber === 1) {
+        this.showButton1 = false;
+      } else if (dragNumber === 2) {
+        this.showButton2 = false;
+      } else if (dragNumber === 3) {
+        this.showButton3 = false;
+      }
+    },
+    showButton(dropNumber) {
+      // Drop 영역의 이미지 클릭 이벤트 핸들러 설정
+      // 여기서는 상태 관리를 통해 버튼을 보이게 합니다.
+      if (dropNumber === 1) {
+        this.showButton1 = true;
+      } else if (dropNumber === 2) {
+        this.showButton2 = true;
+      } else if (dropNumber === 3) {
+        this.showButton3 = true;
+      } else if (dropNumber === 4) {
+        this.showButton4 = true;
+      }
+    },
+    startTimer() {
+      if (this.intervalId) {
+        clearInterval(this.intervalId);
+      }
+      this.timer = 5;
+      this.intervalId = setInterval(() => {
+        if (this.timer > 0) {
+          this.timer--;
+        } else {
+          clearInterval(this.intervalId);
+        }
+      }, 1000);
+    },
+    problemList() {},
 
-        handleProblemDetail(item) {
-            if (item.prblm_type_id === "prblm_type_001") {
-                this.problemType = "Chapter3";
-            } else if (item.prblm_type_id === "prblm_type_002") {
-                this.problemType = "Chapter3_1";
-            } else if (item.prblm_type_id === "prblm_type_003") {
-                this.problemType = "Chapter3_2";
-            } else if (item.prblm_type_id === "prblm_type_004") {
-                this.problemType = "Chapter3_3";
-            } else if (item.prblm_type_id === "prblm_type_005") {
-                this.problemType = "Chapter3_3_1";
-            } else if (item.prblm_type_id === "prblm_type_006") {
-                this.problemType = "Chapter3_4";
-            } else if (item.prblm_type_id === "prblm_type_007") {
-                this.problemType = "Chapter3_5";
-            } else if (item.prblm_type_id === "prblm_type_008") {
-                this.problemType = "Chapter3_6";
-            } else if (item.prblm_type_id === "prblm_type_009") {
-                this.problemType = "Chapter3_7";
-            } else if (item.prblm_type_id === "prblm_type_010") {
-                this.problemType = "Chapter3_8";
-            } else if (item.prblm_type_id === "prblm_type_011") {
-                this.problemType = "Chapter3_9";
-            } else if (item.prblm_type_id === "prblm_type_012") {
-                this.problemType = "Chapter3_10";
-            } else if (item.prblm_type_id === "prblm_type_013") {
-                this.problemType = "Chapter3_11";
-            } else if (item.prblm_type_id === "prblm_type_014") {
-                this.problemType = "Chapter3_12";
-            } else if (item.prblm_type_id === "prblm_type_015") {
-                this.problemType = "Chapter3_13";
-            } else if (item.prblm_type_id === "prblm_type_016") {
-                this.problemType = "Chapter3_14";
-            } else if (item.prblm_type_id === "prblm_type_017") {
-                this.problemType = "Chapter3_15";
-            } else if (item.prblm_type_id === "prblm_type_018") {
-                this.problemType = "Chapter2_8";
-            } else if (item.prblm_type_id === "prblm_type_019") {
-                this.problemType = "Chapter2_7";
-            } else if (item.prblm_type_id === "prblm_type_020") {
-                this.problemType = "Chapter2_5";
-            } else if (item.prblm_type_id === "prblm_type_021") {
-                this.problemType = "Chapter2_6";
-            } else if (item.prblm_type_id === "prblm_type_022") {
-                this.problemType = "Chapter2_10";
-            } else if (item.prblm_type_id === "prblm_type_023") {
-                this.problemType = "Chapter2_11";
-            } else if (item.prblm_type_id === "prblm_type_024") {
-                this.problemType = "Chapter2_13";
-            }
-        },
+    handleProblemDetail(item) {
+      if (item.prblm_type_id === "prblm_type_001") {
+        this.problemType = "Chapter3";
+      } else if (item.prblm_type_id === "prblm_type_002") {
+        this.problemType = "Chapter3_1";
+      } else if (item.prblm_type_id === "prblm_type_003") {
+        this.problemType = "Chapter3_2";
+      } else if (item.prblm_type_id === "prblm_type_004") {
+        this.problemType = "Chapter3_3";
+      } else if (item.prblm_type_id === "prblm_type_005") {
+        this.problemType = "Chapter3_3_1";
+      } else if (item.prblm_type_id === "prblm_type_006") {
+        this.problemType = "Chapter3_4";
+      } else if (item.prblm_type_id === "prblm_type_007") {
+        this.problemType = "Chapter3_5";
+      } else if (item.prblm_type_id === "prblm_type_008") {
+        this.problemType = "Chapter3_6";
+      } else if (item.prblm_type_id === "prblm_type_009") {
+        this.problemType = "Chapter3_7";
+      } else if (item.prblm_type_id === "prblm_type_010") {
+        this.problemType = "Chapter3_8";
+      } else if (item.prblm_type_id === "prblm_type_011") {
+        this.problemType = "Chapter3_9";
+      } else if (item.prblm_type_id === "prblm_type_012") {
+        this.problemType = "Chapter3_10";
+      } else if (item.prblm_type_id === "prblm_type_013") {
+        this.problemType = "Chapter3_11";
+      } else if (item.prblm_type_id === "prblm_type_014") {
+        this.problemType = "Chapter3_12";
+      } else if (item.prblm_type_id === "prblm_type_015") {
+        this.problemType = "Chapter3_13";
+      } else if (item.prblm_type_id === "prblm_type_016") {
+        this.problemType = "Chapter3_14";
+      } else if (item.prblm_type_id === "prblm_type_017") {
+        this.problemType = "Chapter3_15";
+      } else if (item.prblm_type_id === "prblm_type_018") {
+        this.problemType = "Chapter2_8";
+      } else if (item.prblm_type_id === "prblm_type_019") {
+        this.problemType = "Chapter2_7";
+      } else if (item.prblm_type_id === "prblm_type_020") {
+        this.problemType = "Chapter2_5";
+      } else if (item.prblm_type_id === "prblm_type_021") {
+        this.problemType = "Chapter2_6";
+      } else if (item.prblm_type_id === "prblm_type_022") {
+        this.problemType = "Chapter2_10";
+      } else if (item.prblm_type_id === "prblm_type_023") {
+        this.problemType = "Chapter2_11";
+      } else if (item.prblm_type_id === "prblm_type_024") {
+        this.problemType = "Chapter2_13";
+      }
     },
-    watch: {},
-    computed: {
-        getAllProblems() {
-            return this.$store.getters.getAllProblems;
-        },
+  },
+  watch: {},
+  computed: {
+    getAllProblems() {
+      return this.$store.getters.getAllProblems;
     },
-    created() {
-        console.log('Problem List :', this.getAllProblems);
-        this.dataList = this.getAllProblems;
-        this.evalId = this.$route.query.eval_id;
-
-    },
-    components: {},
-    mounted() {
-        this.problemList();
-    },
+  },
+  created() {
+    console.log("Problem List :", this.getAllProblems);
+    this.dataList = this.getAllProblems;
+    this.evalId = this.$route.query.eval_id;
+  },
+  components: {},
+  mounted() {
+    this.problemList();
+  },
 };
 </script>
 <style scoped>
 .textbox {
-    height: 60px;
+  height: 60px;
 }
 
 .textbox p {
-    font-size: 28px;
-    font-weight: bold;
-    line-height: 65px;
+  font-size: 28px;
+  font-weight: bold;
+  line-height: 65px;
 }
 
 .dropGroup button {
-    position: relative;
+  position: relative;
 }
 
 .dropGroup button p {
-    font-size: 48px;
+  font-size: 48px;
 }
 
 .dragGroup button p {
-    font-size: 48px;
+  font-size: 48px;
 }
 </style>
client/views/pages/main/Dashboard.vue
--- client/views/pages/main/Dashboard.vue
+++ client/views/pages/main/Dashboard.vue
@@ -1,36 +1,22 @@
 <template>
-  <p
-    class="title1"
-    v-if="state === 'finish'"
-    style="position: absolute; top: 50%; transform: translate(0, -50%)"
-  >
+  <p class="title1" v-if="state === 'finish'" style="position: absolute; top: 50%; transform: translate(0, -50%)">
     오늘 공부를 다했어요! 너무 고생했어요!
   </p>
-  <div
-    class="title1"
-    v-else-if="state === 'notRegistered'"
-    style="position: absolute; top: 50%; transform: translate(0, -50%)"
-  >
-    <div>
-      <h3>
-        지금은 학습 루트가 등록이 안됐어요! 학습 일정에서 학습루트를
+  <div class="title1" v-else-if="state === 'notRegistered'"
+    style="position: absolute;top: 50%;transform: translate(-50%, -50%);left: 50%;">
+    <div class="title-box" style="text-align: center;">
+      <img src="../../../resources/img/new_img/dashboard/rabbit.png">
+      <h3 class="title" style=" margin-top: 1em; letter-spacing: 2px; line-height: 42px; font-size: 30px">
+        지금은 학습 루트가 등록이 안됐어요! <br> 학습 일정에서 학습루트를
         등록해볼까요?
       </h3>
-      <button
-        type="button"
-        title="바로가기"
-        class="yellow-btn"
-        @click="goToPage2('MyPlan2')"
-      >
-        바로가기
-      </button>
+      <div @click="goToPage2('MyPlan2')" style="cursor: pointer; margin-top: 2em;">
+        <img src="../../../resources/img/new_img/dashboard/btn.png">
+      </div>
     </div>
   </div>
-  <p
-    class="title1"
-    v-else-if="state === 'noProblem'"
-    style="position: absolute; top: 50%; transform: translate(0, -50%)"
-  >
+  <p class="title1" v-else-if="state === 'noProblem'"
+    style="position: absolute; top: 50%; transform: translate(0, -50%)">
     교재에 등록된 문제가 없습니다.
   </p>
   <div v-else class="main">
@@ -41,95 +27,46 @@
       </div> -->
       <div class="race-box">
         <div class="rabbit-start">
-          <img
-            src="../../../resources/img/new_img/rabbit.png"
-            alt=""
-            :style="{ display: rabbitPos[0] ? 'block' : 'none' }"
-          />
+          <img src="../../../resources/img/new_img/rabbit.png" alt=""
+            :style="{ display: rabbitPos[0] ? 'block' : 'none' }" />
         </div>
         <!-- 1번째줄 -->
-        <div
-          class="rcon flex justify-end mb5"
-          style="position: relative; top: 24px"
-        >
+        <div class="rcon flex justify-end mb5" style="position: relative; top: 24px">
           <!-- 1 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[0])]">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[1] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[1] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="1"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="1">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_1.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[1]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_1.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[1]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[1] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[1]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[1]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[0].label }}
             </p>
           </div>
           <!-- 2 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[1])]">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[2] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[2] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="2"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="2">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_2.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[2]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                  style="position: absolute; left: 16px"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_2.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[2]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" style="position: absolute; left: 16px" />
               </div>
             </button>
             <p :class="!rabbitCompl[2] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[2]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[2]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[1].label }}
             </p>
           </div>
@@ -139,213 +76,96 @@
           <!-- 7 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[6])]">
             <div class="rabbit-running" style="top: -71px">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[7] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[7] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="7"
-              style="top: -53px; position: relative"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="7"
+              style="top: -53px; position: relative">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_7.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[7]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                  style="position: absolute; top: 85px"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_7.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[7]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" style="position: absolute; top: 85px" />
               </div>
             </button>
-            <p
-              :class="!rabbitCompl[7] ? 'before-clear' : 'clear'"
-              style="position: relative; top: -53px; left: -10px"
-            >
-              <img
-                v-if="rabbitCompl[7]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+            <p :class="!rabbitCompl[7] ? 'before-clear' : 'clear'" style="position: relative; top: -53px; left: -10px">
+              <img v-if="rabbitCompl[7]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[6].label }}
             </p>
           </div>
           <!-- 6 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[5])]">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[6] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[6] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="6"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="6">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_6.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[6]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_6.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[6]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[6] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[6]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[6]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[5].label }}
             </p>
           </div>
           <!-- 5 -->
-          <div
-            class="race-btn"
-            @click="[storeLearningId(labeledItems[4])]"
-            style="position: relative; left: -31px"
-          >
+          <div class="race-btn" @click="[storeLearningId(labeledItems[4])]" style="position: relative; left: -31px">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[5] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[5] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="5"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="5">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_5.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[5]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_5.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[5]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[5] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[5]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[5]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[4].label }}
             </p>
           </div>
           <!-- 4 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[3])]">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[4] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[4] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="4"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="4">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_4.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[4]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_4.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[4]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[4] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[4]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[4]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[3].label }}
             </p>
           </div>
           <!-- 3 -->
-          <div
-            class="race-btn"
-            @click="[storeLearningId(labeledItems[2])]"
-            style="right: 12px"
-          >
+          <div class="race-btn" @click="[storeLearningId(labeledItems[2])]" style="right: 12px">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[3] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[3] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="3"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="3">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_3.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[3]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_3.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[3]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[3] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[3]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[3]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[2].label }}
             </p>
           </div>
@@ -355,178 +175,88 @@
           <!-- 8 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[7])]">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[8] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[8] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="8"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="8">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_8.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[8]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_8.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[8]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[8] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[8]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[8]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[7].label }}
             </p>
           </div>
           <!-- 9 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[8])]">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[9] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[9] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="9"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)" data-num="9">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_9.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[9]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_9.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[9]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[9] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[9]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[9]" src="../../../resources/img/new_img/icon/complete_icon.png" alt="Complete Icon"
+                class="complete-icon" />
               {{ labeledItems[8].label }}
             </p>
           </div>
           <!-- 10 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[9])]">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[10] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[10] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImage(index)"
-              data-num="10"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="toggleImage(index)"
+              data-num="10">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_10.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[10]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_10.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[10]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[10] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[10]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[10]" src="../../../resources/img/new_img/icon/complete_icon.png"
+                alt="Complete Icon" class="complete-icon" />
               {{ labeledItems[9].label }}
             </p>
           </div>
           <!-- 11 -->
           <div class="race-btn" @click="[storeLearningId(labeledItems[10])]">
             <div class="rabbit-running">
-              <img
-                src="../../../resources/img/new_img/rabbit.png"
-                alt=""
-                :style="{ display: rabbitPos[11] ? 'block' : 'none' }"
-              />
+              <img src="../../../resources/img/new_img/rabbit.png" alt=""
+                :style="{ display: rabbitPos[11] ? 'block' : 'none' }" />
             </div>
-            <button
-              class="popTxt"
-              v-for="(item, index) in items"
-              :key="index"
-              @click="toggleImageAndShowPopup(index, '11')"
-              data-num="11"
-            >
+            <button class="popTxt" v-for="(item, index) in items" :key="index"
+              @click="toggleImageAndShowPopup(index, '11')" data-num="11">
               <div class="image-container">
-                <img
-                  src="../../../resources/img/new_img/board/racebtn_11.png"
-                  alt="Race Button"
-                  class="base-img"
-                />
-                <img
-                  v-if="rabbitCompl[11]"
-                  src="../../../resources/img/new_img/icon/clear_img.png"
-                  alt="Clear Icon"
-                  class="clear-img"
-                />
+                <img src="../../../resources/img/new_img/board/racebtn_11.png" alt="Race Button" class="base-img" />
+                <img v-if="rabbitCompl[11]" src="../../../resources/img/new_img/icon/clear_img.png" alt="Clear Icon"
+                  class="clear-img" />
               </div>
             </button>
             <p :class="!rabbitCompl[11] ? 'before-clear' : 'clear'">
-              <img
-                v-if="rabbitCompl[11]"
-                src="../../../resources/img/new_img/icon/complete_icon.png"
-                alt="Complete Icon"
-                class="complete-icon"
-              />
+              <img v-if="rabbitCompl[11]" src="../../../resources/img/new_img/icon/complete_icon.png"
+                alt="Complete Icon" class="complete-icon" />
               {{ labeledItems[10].label }}
             </p>
           </div>
         </div>
         <div class="race-btn">
           <div class="rabbit-running" style="display: flex">
-            <img
-              class="rabbit-end"
-              src="../../../resources/img/new_img/rabbit.png"
-              alt=""
-              :style="{ display: rabbitEnd ? 'block' : 'none' }"
-            />
-            <img
-              class="fireworks-end"
-              src="../../../resources/img/fireworks.gif"
-              alt=""
-              :style="{ display: rabbitEnd ? 'block' : 'none' }"
-            />
+            <img class="rabbit-end" src="../../../resources/img/new_img/rabbit.png" alt=""
+              :style="{ display: rabbitEnd ? 'block' : 'none' }" />
+            <img class="fireworks-end" src="../../../resources/img/fireworks.gif" alt=""
+              :style="{ display: rabbitEnd ? 'block' : 'none' }" />
           </div>
         </div>
       </div>
@@ -534,17 +264,9 @@
       <!-- 팝업 -->
       <div v-show="searchOpen2" class="popup-wrap">
         <div class="popup-box">
-          <button
-            type="button"
-            class="popup-close-btn"
-            style="position: absolute; top: 10px; right: 10px"
-            @click="closeModal"
-          >
-            <svg-icon
-              type="mdi"
-              :path="mdiWindowClose"
-              class="close-btn"
-            ></svg-icon>
+          <button type="button" class="popup-close-btn" style="position: absolute; top: 10px; right: 10px"
+            @click="closeModal">
+            <svg-icon type="mdi" :path="mdiWindowClose" class="close-btn"></svg-icon>
           </button>
 
           <div class="mb30 text-ct">
@@ -554,12 +276,7 @@
             </p>
           </div>
           <div class="flex justify-center">
-            <button
-              type="button"
-              title="사진촬영"
-              class="new-btn"
-              @click="openCameraModal"
-            >
+            <button type="button" title="사진촬영" class="new-btn" @click="openCameraModal">
               사진 촬영
             </button>
           </div>
@@ -571,29 +288,15 @@
           <div class="flex mb10 justify-between">
             <p class="popup-title">사진 촬영</p>
             <button type="button" class="popup-close-btn" @click="closeModal">
-              <svg-icon
-                type="mdi"
-                :path="mdiWindowClose"
-                class="close-btn"
-              ></svg-icon>
+              <svg-icon type="mdi" :path="mdiWindowClose" class="close-btn"></svg-icon>
             </button>
           </div>
           <div class="box">
             <div style="width: 100%">
               <div id="container" ref="container">
-                <video
-                  v-if="!photoTaken"
-                  autoplay="true"
-                  ref="modalVideoElement"
-                  class="mirrored"
-                  @canplay="onVideoLoaded"
-                  style="position: absolute; height: 100%"
-                ></video>
-                <img
-                  src="../../../resources/img/camera-rabbit.png"
-                  class="camera-rabbit"
-                  style="position: absolute"
-                />
+                <video v-if="!photoTaken" autoplay="true" ref="modalVideoElement" class="mirrored"
+                  @canplay="onVideoLoaded" style="position: absolute; height: 100%"></video>
+                <img src="../../../resources/img/camera-rabbit.png" class="camera-rabbit" style="position: absolute" />
                 <canvas ref="canvas" style="pointer-events: none"></canvas>
               </div>
             </div>
@@ -606,17 +309,8 @@
     </div>
 
     <div class="complete-wrap myphoto">
-      <button
-        class="login-btn mt10"
-        type="submit"
-        style="width: 100%"
-        @click="finishSchedule"
-      >
-        <img
-          src="../../../resources/img/btn07_s.png"
-          alt=""
-          style="height: 100px"
-        />
+      <button class="login-btn mt10" type="submit" style="width: 100%" @click="finishSchedule">
+        <img src="../../../resources/img/btn07_s.png" alt="" style="height: 100px" />
         <p>학습 종료하기</p>
       </button>
       <h2 class="mb40 mt10">이 단원을 끝낸 친구들</h2>
@@ -624,19 +318,9 @@
       <article class="flex-column">
         <div class="flex-row">
           <div class="flex" style="gap: 5px; flex-wrap: wrap">
-            <div
-              v-for="(image, index) in images"
-              :key="image.fileId"
-              @click="buttonSearch(image)"
-              class="photo"
-              style="margin-bottom: 5px"
-            >
-              <img
-                :src="image.url"
-                :alt="image.fileNm"
-                reloadable="true"
-                style="height: 100%"
-              />
+            <div v-for="(image, index) in images" :key="image.fileId" @click="buttonSearch(image)" class="photo"
+              style="margin-bottom: 5px">
+              <img :src="image.url" :alt="image.fileNm" reloadable="true" style="height: 100%" />
             </div>
           </div>
         </div>
@@ -645,51 +329,27 @@
         <div class="popup-box" style="top: 50%">
           <div class="flex mb10 justify-between">
             <button type="button" class="popup-close-btn" @click="closeModal">
-              <svg-icon
-                type="mdi"
-                :path="mdiWindowClose"
-                class="close-btn"
-              ></svg-icon>
+              <svg-icon type="mdi" :path="mdiWindowClose" class="close-btn"></svg-icon>
             </button>
           </div>
           <div class="box">
             <div style="width: 910px; height: 680px">
-              <img
-                :src="selectedImage.image"
-                alt="Image"
-                @error="onImageError"
-                reloadable="true"
-              />
+              <img :src="selectedImage.image" alt="Image" @error="onImageError" reloadable="true" />
             </div>
           </div>
           <div class="flex justify-between mt20">
             <div class="text flex">
               <p class="title2 date ml30">{{ selectedImage.date }}</p>
-              <span class="title1 ml30"
-                >{{ selectedImage.unit }}을 마친
-                <em class="yellow">{{ selectedImage.name }}</em
-                >친구</span
-              >
+              <span class="title1 ml30">{{ selectedImage.unit }}을 마친
+                <em class="yellow">{{ selectedImage.name }}</em>친구</span>
             </div>
             <div class="title2 flex align-center" style="gap: 10px">
-              <svg-icon
-                v-if="!isHeartFilled"
-                type="mdi"
-                :path="mdiHeartOutline"
-                @click="
-                  toggleHeart(selectedImage.heart, selectedImage.fileMngId)
-                "
-                style="color: #ffba08; cursor: pointer"
-              ></svg-icon>
-              <svg-icon
-                v-if="isHeartFilled"
-                type="mdi"
-                :path="mdiHeart"
-                @click="
-                  toggleHeart(selectedImage.heart, selectedImage.fileMngId)
-                "
-                style="color: #ffba08; cursor: pointer"
-              ></svg-icon>
+              <svg-icon v-if="!isHeartFilled" type="mdi" :path="mdiHeartOutline" @click="
+                toggleHeart(selectedImage.heart, selectedImage.fileMngId)
+                " style="color: #ffba08; cursor: pointer"></svg-icon>
+              <svg-icon v-if="isHeartFilled" type="mdi" :path="mdiHeart" @click="
+                toggleHeart(selectedImage.heart, selectedImage.fileMngId)
+                " style="color: #ffba08; cursor: pointer"></svg-icon>
               <p>
                 <em class="yellow">{{ selectedImage.heart }}</em>
               </p>
@@ -1428,6 +1088,7 @@
 .complete-wrap img {
   width: auto;
 }
+
 .body {
   width: 1435px;
   height: auto;
@@ -1570,6 +1231,7 @@
   display: flex;
   align-items: center;
 }
+
 .lcon .race-btn .rabbit-running {
   transform: scaleX(1);
 }
client/views/pages/main/Main.vue
--- client/views/pages/main/Main.vue
+++ client/views/pages/main/Main.vue
@@ -9,6 +9,9 @@
                     <div v-if="$route.name === 'MyPlan'" class="main-wrap-plan">
                         <router-view />
                     </div>
+                    <div v-else-if="$route.name === 'MyPage'" class="main-wrap-mypage">
+                        <router-view />
+                    </div>
                     <div v-else class="main-wrap">
                         <router-view />
                     </div>
client/views/pages/main/MyPage.vue
--- client/views/pages/main/MyPage.vue
+++ client/views/pages/main/MyPage.vue
@@ -1,303 +1,341 @@
 <template>
-    <div class="mypage">
-        <div class="flex justify-between mb30" style="gap: 30px;">
-            <div>
-                <div class="title-box flex justify-between mb20">
-                    <p class="title">소속 반</p>
-                    <div class="flex align-center look-btn">
-                        <!-- <p>더보기 </p><svg-icon type="mdi" :path="mdilArrowRight" class=" ml10"></svg-icon> -->
-                    </div>
-                </div>
-                <div class="wrap " style="width: 82rem;">
-                    <section class="flex" style="gap: 20px;">
-                        <div class="class flex justify-between" style="cursor: default;">
-                            <div class="box gd-col2" style="gap: 5px;">
-                                <div><img src="../../../resources/img/img176_82t.png" alt=""></div>
-                                <div><img src="../../../resources/img/img176_82t.png" alt=""></div>
-                                <div><img src="../../../resources/img/img176_82t.png" alt=""></div>
-                                <div><img src="../../../resources/img/img176_82t.png" alt=""></div>
-                            </div>
-                            <div class="text mt10">
-                                <p class="title1 mb10">A반</p>
-                                <span class="member">20명</span>
-                            </div>
-                        </div>
-
-                    </section>
-                </div>
-            </div>
-            <div>
-                <div class="title-box flex justify-between mb20">
-                    <p class="title">사진첩</p>
-                </div>
-                <div class="photobook">
-                    <div class="flex justify-between">
-                        <div class="box" style="gap: 5px;">
-                            <div><img src="../../../resources/img/img198_12p.png" alt=""></div>
-                        </div>
-                        <div class="text mt10">
-                            <p class="title1 mb10">나의 사진첩</p>
-                            <button @click="selectedTab = 'tab4'; goToPage('PhotoBook')" type="button" title="글쓰기"
-                                class="new-btn">
-                                바로가기
-                            </button>
-
-                        </div>
-                    </div>
-
-                </div>
-            </div>
-        </div>
+  <div class="mypage">
+    <div class="flex justify-between mb30" style="gap: 30px">
+      <div>
         <div class="title-box flex justify-between mb20">
-            <p class="title">{{ studentInfo.studentName }} 학생 랭킹</p>
+          <p class="title" style="color: white">소속 반</p>
+          <div class="flex align-center look-btn">
+            <!-- <p>더보기 </p><svg-icon type="mdi" :path="mdilArrowRight" class=" ml10"></svg-icon> -->
+          </div>
         </div>
-        <div class=" mb30">
-            <div class=" flex " style="gap: 50px;">
-                <div class="textbook book-red">
-                    <div class="text ">
-                        <p class="title1" style="color: #fff;">포토북 랭킹</p>
-                    </div>
-                    <div class="box " style="gap: 10px;">
-                        <div><img src="../../../resources/img/img196_12p.png" alt=""></div>
-                        <P class="title2 mt10">현재 {{ stdCount }}명 중 <em class="red">{{ photo_rank }}등</em>입니다.</P>
-                    </div>
+        <div style="width: 82rem; padding: 2rem">
+          <section class="flex" style="gap: 20px">
+            <div
+              class="class flex justify-between"
+              style="cursor: default; background-color: transparent"
+            >
+              <div class="box gd-col2" style="gap: 5px">
+                <div>
+                  <img src="../../../resources/img/img176_82t.png" alt="" />
                 </div>
-                <div class="textbook ">
-                    <div class="text ">
-                        <p class="title1" style="color: #fff;">진도율 랭킹</p>
-                    </div>
-                    <div class="box " style="gap: 10px;">
-                        <div><img src="../../../resources/img/img196_12p.png" alt=""></div>
-                        <P class="title2 mt10">현재 {{ stdCount }}명 중 <em class="yellow">{{ problem_rank }}등</em>입니다.</P>
-                    </div>
+                <div>
+                  <img src="../../../resources/img/img176_82t.png" alt="" />
                 </div>
-                <div class="textbook book-blue">
-                    <div class="text ">
-                        <p class="title1" style="color: #fff;">점수 랭킹</p>
-                    </div>
-                    <div class="box " style="gap: 10px;">
-                        <div><img src="../../../resources/img/img196_12p.png" alt=""></div>
-                        <P class="title2 mt10">현재 {{ stdCount }}명 중 <em class="blue">{{ score_rank }}등</em>입니다.</P>
-                    </div>
+                <div>
+                  <img src="../../../resources/img/img176_82t.png" alt="" />
                 </div>
-                <div class="textbook book-navy">
-                    <div class="text ">
-                        <p class="title1" style="color: #fff;">학습시간 랭킹</p>
-                    </div>
-                    <div class="box " style="gap: 10px;">
-                        <div><img src="../../../resources/img/img196_12p.png" alt=""></div>
-                        <P class="title2 mt10">현재 {{ stdCount }}명 중 <em class="navy">{{ time_rank }}등</em>입니다.</P>
-                    </div>
+                <div>
+                  <img src="../../../resources/img/img176_82t.png" alt="" />
                 </div>
+              </div>
+              <div class="text mt10">
+                <p class="title1 mb10">A반</p>
+                <span class="member">20명</span>
+              </div>
             </div>
+          </section>
         </div>
+      </div>
+      <div>
+        <div
+          style="position: absolute; left: 102rem; top: 10rem; cursor: pointer"
+          @click="
+            selectedTab = 'tab4';
+            goToPage('PhotoBook');
+          "
+        >
+          <img
+            src="../../../resources/img/new_img/mypage/photoBtn.png"
+            alt=""
+          />
+        </div>
+        <div
+          class="title-box flex justify-between mb20"
+          style="position: absolute; left: 117em; top: 6em"
+        >
+          <p class="title" style="color: white">사진첩</p>
+        </div>
+      </div>
     </div>
+    <div class="title-box flex justify-between mb20">
+      <p class="title" style="color: white">
+        {{ studentInfo.studentName }} 학생 랭킹
+      </p>
+    </div>
+    <div class="mb30">
+      <div class="flex" style="gap: 95px">
+        <div
+          class="textbook book-red"
+          style="background-color: white; width: 19%; border: #f9c4eb solid 6px"
+        >
+          <div class="text" style="background-color: #f9c4eb">
+            <p class="title1" style="color: #fff">포토북 랭킹</p>
+          </div>
+          <div class="box" style="gap: 10px">
+            <div>
+              <img src="../../../resources/img/img196_12p.png" alt="" />
+            </div>
+            <P class="subtitle mt10" style="font-size: 19px"
+              >현재 {{ stdCount }}명 중
+              <em class="red">{{ photo_rank }}등</em>입니다.</P
+            >
+          </div>
+        </div>
+        <div
+          class="textbook"
+          style="background-color: white; width: 19%; border: #b5dbcc solid 6px"
+        >
+          <div class="text" style="background-color: #b5dbcc">
+            <p class="title1" style="color: #fff">진도율 랭킹</p>
+          </div>
+          <div class="box" style="gap: 10px">
+            <div>
+              <img src="../../../resources/img/img196_12p.png" alt="" />
+            </div>
+            <P class="subtitle mt10" style="font-size: 19px"
+              >현재 {{ stdCount }}명 중
+              <em class="yellow">{{ problem_rank }}등</em>입니다.</P
+            >
+          </div>
+        </div>
+        <div
+          class="textbook book-blue"
+          style="background-color: white; width: 19%; border: #bcd3eb solid 6px"
+        >
+          <div class="text" style="background-color: #bcd3eb">
+            <p class="title1" style="color: #fff">점수 랭킹</p>
+          </div>
+          <div class="box" style="gap: 10px">
+            <div>
+              <img src="../../../resources/img/img196_12p.png" alt="" />
+            </div>
+            <P class="subtitle mt10" style="font-size: 19px"
+              >현재 {{ stdCount }}명 중
+              <em class="blue">{{ score_rank }}등</em>입니다.</P
+            >
+          </div>
+        </div>
+        <div
+          class="textbook book-navy"
+          style="background-color: white; width: 19%; border: #f9c894 solid 6px"
+        >
+          <div class="text" style="background-color: #f9c894">
+            <p class="title1" style="color: #fff">학습시간 랭킹</p>
+          </div>
+          <div class="box" style="gap: 10px">
+            <div>
+              <img src="../../../resources/img/img196_12p.png" alt="" />
+            </div>
+            <P class="subtitle mt10" style="font-size: 19px"
+              >현재 {{ stdCount }}명 중
+              <em class="navy">{{ time_rank }}등</em>입니다.</P
+            >
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
 </template>
 
 <script>
-import SvgIcon from '@jamescoyle/vue-icon';
-import { mdiMagnify, } from '@mdi/js';
-import { mdilArrowRight } from '@mdi/light-js';
-import ProgressBar from '../../component/ProgressBar.vue';
+import SvgIcon from "@jamescoyle/vue-icon";
+import { mdiMagnify } from "@mdi/js";
+import { mdilArrowRight } from "@mdi/light-js";
+import ProgressBar from "../../component/ProgressBar.vue";
 import axios from "axios";
 
-
 export default {
-    data() {
-        return {
-            stdCount: 0,
-            photo_rank: 0,
-            problem_rank: 0,
-            score_rank: 0,
-            time_rank: 0,
-            mdiMagnify: mdiMagnify,
-            mdilArrowRight: mdilArrowRight,
-            timer: "00:00",
-            progress: 20,
-            studentInfo: {
-                studentName: "",
-                institutionName: "",
-                grade: "",
-                className: "",
-                studentQuestion: "",
-                history: [],
-            },
-        }
+  data() {
+    return {
+      stdCount: 0,
+      photo_rank: 0,
+      problem_rank: 0,
+      score_rank: 0,
+      time_rank: 0,
+      mdiMagnify: mdiMagnify,
+      mdilArrowRight: mdilArrowRight,
+      timer: "00:00",
+      progress: 20,
+      studentInfo: {
+        studentName: "",
+        institutionName: "",
+        grade: "",
+        className: "",
+        studentQuestion: "",
+        history: [],
+      },
+    };
+  },
+  methods: {
+    classStdCount: function () {
+      const vm = this;
+      axios({
+        url: "/userclass/classStdCountByUserId.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
+        },
+        data: {
+          userId: "USID_000000000000002", // 로그인한 학생의 userId
+        },
+      })
+        .then(function (response) {
+          console.log("classStdCount - response : ", response.data);
+          vm.stdCount = response.data;
+        })
+        .catch(function (error) {
+          console.log("classStdCount - error : ", error);
+          alert("반 학생 수 조회에 오류가 발생했습니다.");
+        });
     },
-    methods: {
-        classStdCount: function () {
-            const vm = this;
-            axios({
-                url: "/userclass/classStdCountByUserId.json",
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json; charset=UTF-8",
-                },
-                data: {
-                    userId: "USID_000000000000002"   // 로그인한 학생의 userId
-                }
-            })
-                .then(function (response) {
-                    console.log("classStdCount - response : ", response.data);
-                    vm.stdCount = response.data;
-                })
-                .catch(function (error) {
-                    console.log("classStdCount - error : ", error);
-                    alert("반 학생 수 조회에 오류가 발생했습니다.");
-                });
+    fetchStudentInfo() {
+      const vm = this;
+      axios({
+        url: "/studentInfo/getInfo.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
         },
-        fetchStudentInfo() {
-            const vm = this;
-            axios({
-                url: "/studentInfo/getInfo.json",
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json; charset=UTF-8",
-                },
-                data: {
-                    userId: "USID_000000000000002" // 로그인한 학생의 userId
-                }
-            })
-                .then((response) => {
-                console.log(response.data);
-                this.studentInfo = response.data;
-                })
-                .catch((error) => {
-                console.error("학생 정보 가져오기 실패:", error);
-                });
+        data: {
+          userId: "USID_000000000000002", // 로그인한 학생의 userId
         },
-        photoRankByLikeData: function () {
-            const vm = this;
-            axios({
-                url: "/photo/photoRankByLikeData.json",
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json; charset=UTF-8",
-                },
-                data: {
-                    sclsId: "1",
-                    stdId: "1"
-                }
-            })
-                .then(function (response) {
-                    console.log("Photo Rank - response : ", response.data);
-                    vm.photo_rank = response.data;
-                })
-                .catch(function (error) {
-                    console.log("Photo Rank - error : ", error);
-                    alert("학생 사진 랭킹 조회에 오류가 발생했습니다.");
-                });
+      })
+        .then((response) => {
+          console.log(response.data);
+          this.studentInfo = response.data;
+        })
+        .catch((error) => {
+          console.error("학생 정보 가져오기 실패:", error);
+        });
+    },
+    photoRankByLikeData: function () {
+      const vm = this;
+      axios({
+        url: "/photo/photoRankByLikeData.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
         },
-        getUserRankByScore: function () {
-            const vm = this;
-            axios({
-                url: "/userclass/getUserRankByScore.json",
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json; charset=UTF-8",
-                },
-                data: {
-                    userId: "USID_000000000000002"   // 로그인한 학생의 userId
-                }
-            })
-                .then(function (response) {
-                    console.log("User Rank - response : ", response.data);
-                    vm.score_rank = response.data; 
-                })
-                .catch(function (error) {
-                    console.log("User Rank - error : ", error);
-                    alert("점수 랭킹 조회에 오류가 발생했습니다.");
-                });
+        data: {
+          sclsId: "1",
+          stdId: "1",
         },
-        getUserRankByStudyTime: function () {
-            const vm = this;
-            axios({
-                url: "/userclass/getUserRankByStudyTime.json",
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json; charset=UTF-8",
-                },
-                data: {
-                    userId: "1"   // 로그인한 학생의 userId
-                }
-            })
-                .then(function (response) {
-                    console.log("User Rank - response : ", response.data);
-                    vm.time_rank = response.data; 
-                })
-                .catch(function (error) {
-                    console.log("User Rank - error : ", error);
-                    alert("학습시간 랭킹 조회에 오류가 발생했습니다.");
-                });
+      })
+        .then(function (response) {
+          console.log("Photo Rank - response : ", response.data);
+          vm.photo_rank = response.data;
+        })
+        .catch(function (error) {
+          console.log("Photo Rank - error : ", error);
+          alert("학생 사진 랭킹 조회에 오류가 발생했습니다.");
+        });
+    },
+    getUserRankByScore: function () {
+      const vm = this;
+      axios({
+        url: "/userclass/getUserRankByScore.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
         },
-        problemRankByProblemData: function () {
-            const vm = this;
-            axios({
-                url: "/problemLog/problemRankByProblemData.json",
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json; charset=UTF-8",
-                },
-                data: {
-                    sclsId: "1",
-                    stdId: "2"
-                }
-            })
-                .then(function (response) {
-                    console.log("Problem Rank - response : ", response.data);
-                    vm.problem_rank = response.data;
-                })
-                .catch(function (error) {
-                    console.log("Problem Rank - error : ", error);
-                    alert("학생 문제 랭킹 조회에 오류가 발생했습니다.");
-                });
+        data: {
+          userId: "USID_000000000000002", // 로그인한 학생의 userId
         },
-        goToPage(page) {
-            this.$router.push({ name: page });
+      })
+        .then(function (response) {
+          console.log("User Rank - response : ", response.data);
+          vm.score_rank = response.data;
+        })
+        .catch(function (error) {
+          console.log("User Rank - error : ", error);
+          alert("점수 랭킹 조회에 오류가 발생했습니다.");
+        });
+    },
+    getUserRankByStudyTime: function () {
+      const vm = this;
+      axios({
+        url: "/userclass/getUserRankByStudyTime.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
         },
-        increaseProgress() {
-            if (this.progress < 100) {
-                this.progress += 10;
-            }
+        data: {
+          userId: "1", // 로그인한 학생의 userId
         },
-        showConfirm(type) {
-            let message = '';
-            if (type === 'cancel') {
-                message = '삭제하시겠습니까?';
-            } else if (type === 'reset') {
-                message = '초기화하시겠습니까?';
-            } else if (type === 'save') {
-                message = '등록하시겠습니까?';
-            }
+      })
+        .then(function (response) {
+          console.log("User Rank - response : ", response.data);
+          vm.time_rank = response.data;
+        })
+        .catch(function (error) {
+          console.log("User Rank - error : ", error);
+          alert("학습시간 랭킹 조회에 오류가 발생했습니다.");
+        });
+    },
+    problemRankByProblemData: function () {
+      const vm = this;
+      axios({
+        url: "/problemLog/problemRankByProblemData.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
+        },
+        data: {
+          sclsId: "1",
+          stdId: "2",
+        },
+      })
+        .then(function (response) {
+          console.log("Problem Rank - response : ", response.data);
+          vm.problem_rank = response.data;
+        })
+        .catch(function (error) {
+          console.log("Problem Rank - error : ", error);
+          alert("학생 문제 랭킹 조회에 오류가 발생했습니다.");
+        });
+    },
+    goToPage(page) {
+      this.$router.push({ name: page });
+    },
+    increaseProgress() {
+      if (this.progress < 100) {
+        this.progress += 10;
+      }
+    },
+    showConfirm(type) {
+      let message = "";
+      if (type === "cancel") {
+        message = "삭제하시겠습니까?";
+      } else if (type === "reset") {
+        message = "초기화하시겠습니까?";
+      } else if (type === "save") {
+        message = "등록하시겠습니까?";
+      }
 
-            if (confirm(message)) {
-                this.goBack();
-            }
-        },
+      if (confirm(message)) {
+        this.goBack();
+      }
     },
-    watch: {
-
-    },
-    computed: {
-
-    },
-    components: {
-        SvgIcon,
-        ProgressBar
-    },
-    mounted() {
-        console.log('Main2 mounted');
-        this.fetchStudentInfo();
-        this.classStdCount();
-        this.photoRankByLikeData();
-        this.getUserRankByScore();
-        this.problemRankByProblemData();
-        this.getUserRankByStudyTime();
-    }
-}
+  },
+  watch: {},
+  computed: {},
+  components: {
+    SvgIcon,
+    ProgressBar,
+  },
+  mounted() {
+    console.log("Main2 mounted");
+    this.fetchStudentInfo();
+    this.classStdCount();
+    this.photoRankByLikeData();
+    this.getUserRankByScore();
+    this.problemRankByProblemData();
+    this.getUserRankByStudyTime();
+  },
+};
 </script>
 <style scoped>
 .mypage .textbook {
-    width: 22%;
+  width: 22%;
 }
-</style>
(파일 끝에 줄바꿈 문자 없음)
+</style>
client/views/pages/main/MyPlan.vue
--- client/views/pages/main/MyPlan.vue
+++ client/views/pages/main/MyPlan.vue
@@ -6,7 +6,7 @@
                 <div class="text">
                     <p class="title1" style="color: #fff;">스케줄</p>
                 </div>
-                <div class="purple-scroll" style="overflow: auto; height: 85%;">
+                <div class="purple-scroll" style="overflow: auto; height: 85%; margin: 5px">
                     <div style="padding: 10px 20px;">
                         <p style="text-align: right;cursor: pointer;text-decoration: underline;padding-bottom: 5px;"
                             class="title2" @click="goToPage2('MyPlan2')">학습 일정 변경하기</p>
@@ -135,7 +135,7 @@
                         <div class="text">
                             <p class="title1" style="color: #fff;">오늘의 뉴스</p>
                         </div>
-                        <div class="green-scroll" style="overflow: auto; height: 75%;">
+                        <div class="green-scroll" style="overflow: auto; height: 73%; margin: 5px;">
                             <div style=" padding: 10px;">
                                 <div v-for="(news, index) in schedules" :key="index">
                                     <div style="display: flex;">
client/views/pages/main/PhotoBook.vue
--- client/views/pages/main/PhotoBook.vue
+++ client/views/pages/main/PhotoBook.vue
@@ -5,48 +5,95 @@
   <div class="myphoto mb30">
     <div>
       <div class="title-box flex justify-end mb40">
+        <p class="class-p">반</p>
         <select @change="handleClassChange">
-          <option v-for="classItem in classList" :key="classItem.sclsId" :value="classItem.sclsId">
+          <option
+            v-for="classItem in classList"
+            :key="classItem.sclsId"
+            :value="classItem.sclsId"
+          >
             {{ classItem.sclsNm }}
           </option>
         </select>
       </div>
       <div class="btnGroup" style="display: flex; flex-direction: column">
-        <button v-for="n in totalPages" :key="n" @click="changePage(n)" type="button" title="페이지 버튼" class="tab-btn">
-          <img v-if="currentPage !== n" src="../../../resources/img/btn49_15s_normal.png" alt="" />
-          <img v-else src="../../../resources/img/btn49_15s_click.png" alt="" />
+        <button
+          v-for="n in totalPages"
+          :key="n"
+          @click="changePage(n)"
+          type="button"
+          title="페이지 버튼"
+          class="tab-btn"
+        >
+          <img
+            v-if="currentPage !== n"
+            src="../../../resources/img/new_img/photobook/page.png"
+            alt=""
+          />
+          <img
+            v-else
+            src="../../../resources/img/new_img/photobook/page_click.png"
+            alt=""
+          />
           <p :class="{ 'custom-style': currentPage === n }">{{ n }}</p>
         </button>
       </div>
       <div v-if="selectedTab === 'tab1'" class="tab-box">
-        <div class="flex justify-between">
-          <div v-for="(photo, index) in (photoList?.result || []).slice(0, 3)" :key="index" class="photo"
-            :style="{ transform: getRotation(index) }" @click="buttonSearch(photo)">
-            <div class="class">
-              <div class="box">
-                <div class="photo-container">
-                  <img :src="fetchImage(photo.fileRpath)" alt="" />
+        <div
+          class="flex justify-between"
+          style="margin-right: -82px; margin-left: -47px"
+        >
+          <!-- 왼쪽에 4개의 사진 -->
+          <div class="left-side">
+            <div
+              v-for="(photo, index) in (photoList?.result || []).slice(0, 4)"
+              :key="index"
+              class="photo"
+              :style="{ transform: getRotation(index) }"
+              @click="buttonSearch(photo)"
+            >
+              <div class="class">
+                <div class="box">
+                  <div class="photo-container">
+                    <img
+                      :src="fetchImage(photo.fileRpath)"
+                      alt=""
+                      style="width: 150px"
+                    />
+                  </div>
                 </div>
-              </div>
-              <div class="photo-text mt10 ml10">
-                <div class="member ml30">{{ photo.likeData }}</div>
-                <div class="title2">{{ photo.unitName }}</div>
+                <div class="photo-text mt20 ml30">
+                  <div class="member ml30">{{ photo.likeData }}</div>
+                  <div class="title2-photo">{{ photo.unitName }}</div>
+                </div>
               </div>
             </div>
           </div>
-        </div>
-        <div class="flex justify-between mt20">
-          <div v-for="(photo, index) in (photoList?.result || []).slice(3, 6)" :key="index + 3" class="photo"
-            :style="{ transform: getRotation(index + 3) }" @click="buttonSearch(photo)">
-            <div class="class">
-              <div class="box">
-                <div class="photo-container">
-                  <img :src="fetchImage(photo.fileRpath)" alt="" style="width: 150px" />
+
+          <!-- 오른쪽에 4개의 사진 -->
+          <div class="right-side">
+            <div
+              v-for="(photo, index) in (photoList?.result || []).slice(4, 8)"
+              :key="index + 4"
+              class="photo"
+              :style="{ transform: getRotation(index + 4) }"
+              style="width: fit-content"
+              @click="buttonSearch(photo)"
+            >
+              <div class="class" style="width: 24rem; height: 21rem">
+                <div class="box">
+                  <div class="photo-container">
+                    <img
+                      :src="fetchImage(photo.fileRpath)"
+                      alt=""
+                      style="width: 150px"
+                    />
+                  </div>
                 </div>
-              </div>
-              <div class="photo-text mt10 ml10">
-                <div class="member ml30">{{ photo.likeData }}</div>
-                <div class="title2">{{ photo.unitName }}</div>
+                <div class="photo-text mt20 ml30">
+                  <div class="member ml30">{{ photo.likeData }}</div>
+                  <div class="title2-photo">{{ photo.unitName }}</div>
+                </div>
               </div>
             </div>
           </div>
@@ -57,20 +104,32 @@
           <div class="flex mb10 justify-between">
             <p class="popup-title">알림</p>
             <button type="button" class="popup-close-btn" @click="closeBtn">
-              <svg-icon type="mdi" :path="mdiWindowClose" class="close-btn"></svg-icon>
+              <svg-icon
+                type="mdi"
+                :path="mdiWindowClose"
+                class="close-btn"
+              ></svg-icon>
             </button>
           </div>
 
-          <div class="photo-modal flex justify-between mt20" v-if="photoData.length > 0">
+          <div
+            class="photo-modal flex justify-between mt20"
+            v-if="photoData.length > 0"
+          >
             <div class="box">
               <div>
-                <img :src="fetchImage(photoData[0].fileRpath)" alt="" style="width: 640px; height: 480px" />
+                <img
+                  :src="fetchImage(photoData[0].fileRpath)"
+                  alt=""
+                  style="width: 640px; height: 480px"
+                />
               </div>
             </div>
             <div class="photo-title-container">
               <div class="title1">
                 {{ photoData[0].unitName }}을 마친
-                <em class="yellow">{{ photoData[0].stdName }}</em>친구
+                <em class="yellow">{{ photoData[0].stdName }}</em
+                >친구
               </div>
               <p class="title2 date">{{ photoData[0].photoDate }}</p>
             </div>
@@ -101,7 +160,7 @@
       photoData: [],
 
       currentPage: 1,
-      pageSize: 6,
+      pageSize: 8,
       totalPages: 1,
 
       mdiWindowClose: mdiWindowClose,
@@ -133,9 +192,8 @@
           console.log("classList - response : ", response.data);
           vm.classList = response.data.data;
           vm.currentPage = 1;
-          vm.selectedSclsId= vm.classList[0].sclsId;
+          vm.selectedSclsId = vm.classList[0].sclsId;
           vm.stdPhotoSelectList();
-
         })
         .catch(function (error) {
           console.log("classList - error : ", error);
@@ -144,35 +202,35 @@
     },
 
     handleClassChange(event) {
-    this.selectedSclsId = event.target.value; // 선택된 sclsId 가져오기
-    this.currentPage = 1; // 페이지 초기화
-    this.stdPhotoSelectList(); // 함수 호출
-  },
-  stdPhotoSelectList: function (scsId) {
-    const vm = this;
-    axios({
-      url: "/photo/stdPhotoList.json",
-      method: "post",
-      headers: {
-        "Content-Type": "application/json; charset=UTF-8",
-      },
-      data: {
-        stdId: "1",
-        sclsId: vm.selectedSclsId, // 여기에 sclsId 들어가야 함
-        page: vm.currentPage,
-        pageSize: vm.pageSize,
-      },
-    })
-      .then(function (response) {
-        console.log("photoList - response : ", response.data);
-        vm.photoList = response.data;
-        vm.totalPages = Math.ceil(response.data.photoCount / vm.pageSize);
+      this.selectedSclsId = event.target.value; // 선택된 sclsId 가져오기
+      this.currentPage = 1; // 페이지 초기화
+      this.stdPhotoSelectList(); // 함수 호출
+    },
+    stdPhotoSelectList: function (scsId) {
+      const vm = this;
+      axios({
+        url: "/photo/stdPhotoList.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
+        },
+        data: {
+          stdId: "1",
+          sclsId: vm.selectedSclsId, // 여기에 sclsId 들어가야 함
+          page: vm.currentPage,
+          pageSize: vm.pageSize,
+        },
       })
-      .catch(function (error) {
-        console.log("photoList - error : ", error);
-        alert("반별 내 사진 조회에 오류가 발생했습니다.");
-      });
-  },
+        .then(function (response) {
+          console.log("photoList - response : ", response.data);
+          vm.photoList = response.data;
+          vm.totalPages = Math.ceil(response.data.photoCount / vm.pageSize);
+        })
+        .catch(function (error) {
+          console.log("photoList - error : ", error);
+          alert("반별 내 사진 조회에 오류가 발생했습니다.");
+        });
+    },
     getRotation(index) {
       const rotations = [2, -1, 1, -2, 1, -1];
       return `rotate(${rotations[index]}deg)`;
@@ -305,6 +363,7 @@
 .class {
   width: 260px;
   height: 200px;
+  background-repeat: no-repeat;
 }
 
 .photo-container {
@@ -314,6 +373,9 @@
 .photo-container img {
   width: 150px;
   height: 110px;
+  height: 105px;
+  position: relative;
+  top: 23px;
 }
 
 .photo-text {
@@ -335,4 +397,36 @@
   justify-content: space-between;
   margin-top: 20px;
 }
+
+select {
+  border-radius: 16px;
+  position: absolute;
+  top: 42px;
+  right: 33px;
+}
+
+.class-p {
+  font-size: 23px;
+  position: absolute;
+  top: 52px;
+  right: 218px;
+}
+
+.left-side,
+.right-side {
+  width: 48%; /* 좌우로 나눔 */
+  display: flex;
+  flex-wrap: wrap;
+  align-content: flex-start;
+}
+
+.title2-photo {
+  font-size: 15px;
+  font-weight: bold;
+  font-family: "ONEMobileOTF-Regular";
+  max-width: 175px;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
 </style>
Add a comment
List