jichoi / lms_front star
dajeong 2024-08-19
240819 정다정 Chapter3~3_6 제출하기 버튼 추가
@27845f7d3d296e685f4d4c293f11ba086deec8cf
client/views/pages/main/Chapter/Chapter3.vue
--- client/views/pages/main/Chapter/Chapter3.vue
+++ client/views/pages/main/Chapter/Chapter3.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/logo2.png" alt="" />
+                </div>
             </router-link>
         </div>
         <div class="title-box mb25 flex align-center mt40" style="justify-content: space-between">
@@ -17,17 +19,16 @@
                 <img src="../../../../resources/img/left.png" alt="" />
             </div>
             <div class="content title-box">
+                ,,,
                 <p class="title mt25 title-bg">step3.</p>
-                <div class="flex align-center mb30">
+                <div class="flex align-center mb30" style="justify-content: space-between">
                     <p class="subtitle2 mr20">알맞은 것을 고르세요.</p>
                 </div>
 
-                <div class="mt80 flex align-center justify-center" style="gap: 113px">
-                    <div class="imgGroup">
-                        <div class="flex" style="gap: 60px">
-                            <img src="../../../../resources/img/img106_48s.png" alt="" />
-                        </div>
-                        <div class="time-bg">
+                <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">
                             <div>
                                 <div class="time">
                                     <p class="second">{{ timer }}</p>
@@ -36,38 +37,42 @@
                             </div>
                         </div>
                     </div>
-                    <div class="pickGroup">
-                        <div>
-                            <article class="flex justify-center mb50" style="gap: 60px">
-                                <div class="flex">
-                                    <button>
-                                        <img src="../../../../resources/img/img136_71s.png" alt="" />
-                                        <p>1</p>
-                                    </button>
-                                    <p>a</p>
-                                </div>
-                            </article>
-                            <article class="flex justify-center mb50" style="gap: 60px">
-                                <div class="flex">
-                                    <button>
-                                        <img src="../../../../resources/img/img136_71s.png" alt="" />
-                                        <p>2</p>
-                                    </button>
-                                    <p>a</p>
-                                </div>
-                            </article>
-                            <article class="flex justify-center" style="gap: 60px">
-                                <div class="flex">
-                                    <button>
-                                        <img src="../../../../resources/img/img136_71s.png" alt="" />
-                                        <p>3</p>
-                                    </button>
-                                    <p>a</p>
-                                </div>
-                            </article>
+                    <div class="imgGroup">
+                        <div class="flex" style="gap: 60px">
+                            <img src="../../../../resources/img/img106_48s.png" alt="" />
                         </div>
                     </div>
+                    <div class="pickGroup">
+                        <article class="flex justify-center mb50" style="gap: 60px">
+                            <div class="flex" @click="handleClick(1)">
+                                <button>
+                                    <img src="../../../../resources/img/img136_71s.png" alt="" />
+                                    <p :class="{ active: selectedButton === 1 }">1</p>
+                                </button>
+                                <p>guitar</p>
+                            </div>
+                        </article>
+                        <article class="flex justify-center mb50" style="gap: 60px">
+                            <div class="flex" @click="handleClick(2)">
+                                <button>
+                                    <img src="../../../../resources/img/img136_71s.png" alt="" />
+                                    <p :class="{ active: selectedButton === 2 }">2</p>
+                                </button>
+                                <p>violin</p>
+                            </div>
+                        </article>
+                        <article class="flex justify-center" style="gap: 60px">
+                            <div class="flex" @click="handleClick(3)">
+                                <button>
+                                    <img src="../../../../resources/img/img136_71s.png" alt="" />
+                                    <p :class="{ active: selectedButton === 3 }">3</p>
+                                </button>
+                                <p>piano</p>
+                            </div>
+                        </article>
+                    </div>
                 </div>
+                <button class="submit-button" @click="handleSubmit()">제출하기</button>
             </div>
             <div class="next-btn" @click="goToPage('Chapter3_1')">
                 <img src="../../../../resources/img/right.png" alt="" />
@@ -80,12 +85,13 @@
 export default {
     data() {
         return {
-            timer: '00',
+            timer: "00",
+            selectedButton: null, // 선택한 버튼
         };
     },
     methods: {
         complete() {
-            this.$router.push({ name: 'Dashboard', query: { value: 8 } });
+            this.$router.push({ name: "Dashboard", query: { value: 8 } });
         },
         goToPage(page) {
             this.$router.push({ name: page });
@@ -102,6 +108,13 @@
                     clearInterval(this.intervalId);
                 }
             }, 1000);
+        },
+        handleClick(number) {
+            this.selectedButton = number;
+        },
+        // 제출하기 버튼
+        handleSubmit() {
+            console.log("선택된 번호 : ", this.selectedButton);
         },
     },
     watch: {},
@@ -130,7 +143,13 @@
     border-radius: 5px;
     padding: 10px;
     font-size: 48px;
-    font-family: 'ONEMobilePOP';
+    font-family: "ONEMobilePOP";
+}
+
+.pickGroup {
+    display: flex;
+    flex-direction: column;
+    align-items: flex-start;
 }
 
 .pickGroup button {
@@ -153,12 +172,29 @@
 .pickGroup article > div > p {
     font-size: 64px;
 }
+
+.pickGroup button p.active {
+    color: #000;
+    /* 선택된 버튼의 숫자 색을 더 진하게 */
+}
+
 .completeBtn {
     margin-right: 100px;
     background-color: #ffba08;
     padding: 10px 30px;
     border-radius: 10px;
     font-size: 28px;
-    font-family: 'ONEMobilePOPOTF';
+    font-family: "ONEMobilePOPOTF";
+}
+
+.submit-button {
+    position: absolute;
+    background-color: #ffba08;
+    padding: 10px 30px;
+    border-radius: 10px;
+    font-size: 28px;
+    font-family: "ONEMobilePOPOTF";
+    right: 5rem;
+    bottom: 3rem;
 }
 </style>
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,7 @@
   <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/logo2.png" alt="" /></div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,47 +10,46 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="goToPage('Chapter3')"><img src="../../../../resources/img/left.png" alt=""></div>
+      <div class="pre-btn" @click="goToPage('Chapter3')"><img src="../../../../resources/img/left.png" alt="" /></div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
           <p class="subtitle2 mr20">1. see the picture</p>
-          <button><img src="../../../../resources/img/btn10_s.png" alt="">
-          </button>
+          <button><img src="../../../../resources/img/btn10_s.png" alt="" /></button>
         </div>
 
-        <div class="flex align-center justify-center" style="gap: 113px;">
-         <div class="time-hint">
-          <button class="hint-btn">HINT</button>
+        <div class="flex align-center justify-center" style="gap: 113px">
+          <div class="time-hint">
+            <button class="hint-btn">HINT</button>
             <div class="time-bg mt20">
-                <div>
-                  <div class="time">
-                    <p class="second">{{ timer }}</p>
-                    <p class="text">sec</p>
-                  </div>
+              <div>
+                <div class="time">
+                  <p class="second">{{ timer }}</p>
+                  <p class="text">sec</p>
                 </div>
               </div>
-         </div>
-          <div class="pickGroup ">
-            <div class="flex" style="gap: 250px;">
-              <article  class="text-ct">
-                  <div class="mb30"><img src="../../../../resources/img/img107_50s.png" alt=""></div>
-                  <button class="popTxt"><img src="../../../../resources/img/img136_71s.png" alt="">
-                    <img style="display: none;" src="../../../../resources/img/img137_71s.png" alt="">
-                  </button>
+            </div>
+          </div>
+          <div class="pickGroup">
+            <div class="flex" style="gap: 250px">
+              <article class="text-ct" @click="handleClick(1)">
+                <div class="mb30"><img src="../../../../resources/img/img107_50s.png" alt="" /></div>
+                <button class="popTxt">
+                  <img :src="selectedButton === 1 ? selectedbuttonImg : buttonImg" alt="" />
+                </button>
               </article>
-              <article  class="text-ct" >
-                  <div class="mb30"><img src="../../../../resources/img/img108_50s.png" alt=""></div>
-                  <button class="popTxt"><img src="../../../../resources/img/img136_71s.png" alt="">
-                    <img style="display: none;" src="../../../../resources/img/img137_71s.png" alt="">
-                  </button>
+              <article class="text-ct" @click="handleClick(2)">
+                <div class="mb30"><img src="../../../../resources/img/img108_50s.png" alt="" /></div>
+                <button class="popTxt">
+                  <img :src="selectedButton === 2 ? selectedbuttonImg : buttonImg" alt="" />
+                </button>
               </article>
             </div>
-
           </div>
         </div>
+        <button class="submit-button" @click="handleSubmit()">제출하기</button>
       </div>
-      <div class="next-btn" @click="goToPage('Chapter3_2')"><img src="../../../../resources/img/right.png" alt=""></div>
+      <div class="next-btn" @click="goToPage('Chapter3_2')"><img src="../../../../resources/img/right.png" alt="" /></div>
     </div>
   </div>
 </template>
@@ -59,42 +58,47 @@
 export default {
   data() {
     return {
-      timer:'00'
-    }
+      timer: "00",
+      selectedButton: null,
+      buttonImg: "client/resources/img/img136_71s.png",
+      selectedbuttonImg: "client/resources/img/img137_71s.png",
+    };
   },
   methods: {
     goToPage(page) {
       this.$router.push({ name: page });
     },
     startTimer() {
-    if (this.intervalId) {
-      clearInterval(this.intervalId);
-    }
-    this.timer = 5;
-    this.intervalId = setInterval(() => {
-      if (this.timer > 0) {
-        this.timer--;
-      } else {
+      if (this.intervalId) {
         clearInterval(this.intervalId);
       }
-    }, 1000);
-  }
+      this.timer = 5;
+      this.intervalId = setInterval(() => {
+        if (this.timer > 0) {
+          this.timer--;
+        } else {
+          clearInterval(this.intervalId);
+        }
+      }, 1000);
+    },
+    handleClick(number) {
+      this.selectedButton = number;
+    },
+    // 제출하기 버튼
+    handleSubmit() {
+      console.log("선택된 번호 : ", this.selectedButton);
+    },
   },
-  watch: {
-
-  },
-  computed: {
-
-  },
-  components: {
-  },
-  mounted() {
-
-  }
-}
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {},
+};
 </script>
 <style scoped>
-.imgGroup{width: fit-content;}
+.imgGroup {
+  width: fit-content;
+}
 .imgGroup button {
   position: relative;
 }
@@ -111,7 +115,7 @@
   border-radius: 5px;
   padding: 10px;
   font-size: 48px;
-  font-family: 'ONEMobilePOP';
+  font-family: "ONEMobilePOP";
 }
 
 .pickGroup button {
@@ -126,4 +130,15 @@
   left: 50%;
   transform: translate(-50%, -50%);
 }
-</style>
(No newline at end of file)
+
+.submit-button {
+  position: absolute;
+  background-color: #ffba08;
+  padding: 10px 30px;
+  border-radius: 10px;
+  font-size: 28px;
+  font-family: "ONEMobilePOPOTF";
+  right: 5rem;
+  bottom: 3rem;
+}
+</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
@@ -1,143 +1,168 @@
 <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('Chapter3_1')">
-                <img src="../../../../resources/img/left.png" alt="" />
-            </div>
-            <div class="content title-box">
-                <p class="title mt25 title-bg">step3.</p>
-                <div class="flex align-center mb30">
-                    <p class="subtitle2 mr20">1. see the picture</p>
-                    <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
-          </button> -->
-                </div>
-
-                <div class="text-ct">
-                    <div class="time-hint">
-                        <button class="hint-btn">HINT</button>
-                        <div class="time-bg mt20">
-                            <div>
-                                <div class="time">
-                                    <p class="second">{{ timer }}</p>
-                                    <p class="text">sec</p>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="imgGroup">
-                        <img src="../../../../resources/img/img109_51s.png" alt="" />
-                    </div>
-                    <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">
-                        <p>i</p>
-                        <article style="gap: 60px; bottom: 159px; left: 242px">
-                            <button>
-                                <img src="../../../../resources/img/img136_71s.png" alt="" />
-                                <p>1</p>
-                            </button>
-                        </article>
-                        <p>to</p>
-                        <article style="gap: 60px; bottom: 159px; right: 559px">
-                            <button>
-                                <img src="../../../../resources/img/img136_71s.png" alt="" />
-                                <p>2</p>
-                            </button>
-                        </article>
-                        <p>bed</p>
-                    </div>
-                </div>
-            </div>
-            <div class="next-btn" @click="complete()"><img src="../../../../resources/img/right.png" alt="" /></div>
-        </div>
+  <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('Chapter3_1')">
+        <img src="../../../../resources/img/left.png" alt="" />
+      </div>
+      <div class="content title-box">
+        <p class="title mt25 title-bg">step3.</p>
+        <div class="flex align-center mb30">
+          <p class="subtitle2 mr20">1. see the picture</p>
+          <!-- <button><img src="../../../../resources/img/btn10_s.png" alt="">
+          </button> -->
+        </div>
+
+        <div class="text-ct">
+          <div class="time-hint">
+            <button class="hint-btn">HINT</button>
+            <div class="time-bg mt20">
+              <div>
+                <div class="time">
+                  <p class="second">{{ timer }}</p>
+                  <p class="text">sec</p>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="imgGroup">
+            <img src="../../../../resources/img/img109_51s.png" alt="" />
+          </div>
+          <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">
+            <p>i</p>
+            <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)">
+              <button>
+                <img src="../../../../resources/img/img136_71s.png" alt="" />
+                <p :class="{ active: selectedButton === 2 }">2</p>
+              </button>
+            </article>
+            <p>bed</p>
+          </div>
+        </div>
+        <button class="submit-button" @click="handleSubmit()">제출하기</button>
+      </div>
+      <div class="next-btn" @click="complete()"><img src="../../../../resources/img/right.png" alt="" /></div>
+    </div>
+  </div>
 </template>
 
 <script>
 export default {
-    data() {
-        return {
-            timer: '00',
-        };
+  data() {
+    return {
+      timer: "00",
+      selectedButton: null,
+    };
+  },
+  methods: {
+    complete() {
+      this.$router.push({ name: "Dashboard", query: { value: 8 } });
     },
-    methods: {
-        complete() {
-            this.$router.push({ name: 'Dashboard', query: { value: 8 } });
-        },
-        goToPage(page) {
-            this.$router.push({ name: page });
-        },
-        startTimer() {
-            if (this.intervalId) {
-                clearInterval(this.intervalId);
-            }
-            this.timer = 5;
-            this.intervalId = setInterval(() => {
-                if (this.timer > 0) {
-                    this.timer--;
-                } else {
-                    clearInterval(this.intervalId);
-                }
-            }, 1000);
-        },
+    goToPage(page) {
+      this.$router.push({ name: page });
     },
-    watch: {},
-    computed: {},
-    components: {},
-    mounted() {},
+    startTimer() {
+      if (this.intervalId) {
+        clearInterval(this.intervalId);
+      }
+      this.timer = 5;
+      this.intervalId = setInterval(() => {
+        if (this.timer > 0) {
+          this.timer--;
+        } else {
+          clearInterval(this.intervalId);
+        }
+      }, 1000);
+    },
+    handleClick(number) {
+      this.selectedButton = number;
+    },
+    // 제출하기 버튼
+    handleSubmit() {
+      console.log("선택된 번호 : ", this.selectedButton);
+    },
+  },
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {},
 };
 </script>
 <style scoped>
 .inputbox {
-    font-size: 38px;
-    font-family: 'Pretendard-ExtraBold';
+  font-size: 38px;
+  font-family: "Pretendard-ExtraBold";
 }
 
 .imgGroup button {
-    position: relative;
+  position: relative;
 }
 
 .imgGroup button p,
 .textbox p {
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    width: fit-content;
-    height: fit-content;
-    background: #ffffffb8;
-    border-radius: 5px;
-    padding: 10px;
-    font-size: 48px;
-    font-family: 'ONEMobilePOP';
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: fit-content;
+  height: fit-content;
+  background: #ffffffb8;
+  border-radius: 5px;
+  padding: 10px;
+  font-size: 48px;
+  font-family: "ONEMobilePOP";
 }
 
 .pickGroup p {
-    font-size: 34px;
-    font-weight: bold;
+  font-size: 34px;
+  font-weight: bold;
 }
 
 .pickGroup button {
-    position: relative;
-    margin-right: 30px;
+  position: relative;
+  margin-right: 30px;
 }
 
 .pickGroup button p {
-    font-size: 34px;
-    color: #c6c6c6;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    transform: translate(-50%, -50%);
+  font-size: 34px;
+  color: #c6c6c6;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+}
+
+.pickGroup button p.active {
+  color: #000;
+  /* 선택된 버튼의 숫자 색을 더 진하게 */
+}
+
+.submit-button {
+  position: absolute;
+  background-color: #ffba08;
+  padding: 10px 30px;
+  border-radius: 10px;
+  font-size: 28px;
+  font-family: "ONEMobilePOPOTF";
+  right: 5rem;
+  bottom: 3rem;
 }
 </style>
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,15 +2,15 @@
   <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/logo2.png" alt="" /></div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
-      <span class="title mr40">{{ unitData.unit_nm || '(단원 이름 데이터 없음)' }}</span>
+      <span class="title mr40">{{ unitData.unit_nm || "(단원 이름 데이터 없음)" }}</span>
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="goToPage('Chapter3_2')"><img src="../../../../resources/img/left.png" alt=""></div>
+      <div class="pre-btn" @click="goToPage('Chapter3_2')"><img src="../../../../resources/img/left.png" alt="" /></div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
@@ -19,31 +19,31 @@
 
         <div class="text-ct">
           <div class="time-hint">
-          <button class="hint-btn">HINT</button>
+            <button class="hint-btn">HINT</button>
             <div class="time-bg mt20">
-                <div>
-                  <div class="time">
-                    <p class="second">{{ timer }}</p>
-                    <p class="text">sec</p>
-                  </div>
+              <div>
+                <div class="time">
+                  <p class="second">{{ timer }}</p>
+                  <p class="text">sec</p>
                 </div>
               </div>
-         </div>
-          <div class="pickGroup mt60 flex align-center justify-center" style="gap: 100px; margin-top: 7%;">
-
-            <article v-for="(detail, index) in problemDetail" :key="index" style="gap: 60px;">
-              <div class="flex align-center">
-                <button><img src="../../../../resources/img/img136_71s.png" alt="">
-                  <p>{{ index + 1 }}</p>
+            </div>
+          </div>
+          <div class="pickGroup mt60 flex align-center justify-center" style="gap: 100px; margin-top: 7%">
+            <article v-for="(detail, index) in problemDetail" :key="index" style="gap: 60px">
+              <div class="flex align-center" @click="handleClick(index + 1)">
+                <button>
+                  <img src="../../../../resources/img/img136_71s.png" alt="" />
+                  <p :class="{ active: selectedButton === index + 1 }">{{ index + 1 }}</p>
                 </button>
                 <p>{{ detail.prblmDtlExpln }}</p>
               </div>
             </article>
-
           </div>
         </div>
+        <button class="submit-button" @click="handleSubmit()">제출하기</button>
       </div>
-      <div class="next-btn" @click="goToPage('Chapter3_3_1')"><img src="../../../../resources/img/right.png" alt=""></div>
+      <div class="next-btn" @click="goToPage('Chapter3_3_1')"><img src="../../../../resources/img/right.png" alt="" /></div>
     </div>
   </div>
 </template>
@@ -54,16 +54,16 @@
 export default {
   data() {
     return {
-      timer: '00',
+      timer: "00",
       prblmId: "",
       problemDetail: [],
       dataList: [],
       prblmExpln: null,
       unitData: {}, // 단원 정보 데이터
-    }
+      selectedButton: null,
+    };
   },
   methods: {
-
     goToPage(page) {
       this.$router.push({ name: page });
     },
@@ -84,68 +84,70 @@
 
     // 단원 정보를 불러오는 API 호출
     fetchUnitDetail(unitId) {
-        axios.post('/unit/unitDetail.json', {
-            unitId: unitId
+      axios
+        .post("/unit/unitDetail.json", {
+          unitId: unitId,
         })
-        .then(response => {
-            console.log(response.data[0]);
-            if (response.data.length > 0) {
-                this.unitData = response.data[0];
-            }
+        .then((response) => {
+          console.log(response.data[0]);
+          if (response.data.length > 0) {
+            this.unitData = response.data[0];
+          }
         })
-        .catch(error => {
-            console.error('단원 정보를 불러오는 중 오류 발생:', error);
-        })
+        .catch((error) => {
+          console.error("단원 정보를 불러오는 중 오류 발생:", error);
+        });
     },
 
     problemSearch() {
-        const vm = this;
-        vm.prblmId = JSON.parse(sessionStorage.getItem("prblmId"));
-        axios({
-            url: "problem/problemInfo.json",
-            method: "post",
-            headers: {
-                "Content-Type": "application/json; charset=UTF-8",
-            },
-            data: {
-                prblmId: vm.prblmId,
-            },
+      const vm = this;
+      vm.prblmId = JSON.parse(sessionStorage.getItem("prblmId"));
+      axios({
+        url: "problem/problemInfo.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
+        },
+        data: {
+          prblmId: vm.prblmId,
+        },
+      })
+        .then(function (res) {
+          console.log("problem - response : ", res.data);
+          vm.dataList = res.data.problem;
+          vm.problemDetail = res.data.problemDetail;
+
+          // 문제 정보가 성공적으로 받아와진 후, unitId를 이용해 단원 정보를 가져옴
+          if (vm.dataList.unitId) {
+            vm.fetchUnitDetail(vm.dataList.unitId);
+          } else {
+            console.error("단원 ID가 없습니다.");
+          }
         })
-            .then(function (res) {
-                console.log("problem - response : ", res.data);
-                vm.dataList = res.data.problem;
-                vm.problemDetail = res.data.problemDetail;
-
-                // 문제 정보가 성공적으로 받아와진 후, unitId를 이용해 단원 정보를 가져옴
-                if (vm.dataList.unitId) {
-                  vm.fetchUnitDetail(vm.dataList.unitId);
-                } else {
-                  console.error("단원 ID가 없습니다.");
-                }
-            })
-            .catch(function (error) {
-                console.log("problem - error : ", error);
-            });
+        .catch(function (error) {
+          console.log("problem - error : ", error);
+        });
     },
-
+    handleClick(number) {
+      this.selectedButton = number;
+    },
+    // 제출하기 버튼
+    handleSubmit() {
+      console.log("선택된 번호 : ", this.selectedButton);
+    },
   },
-  watch: {
-
-  },
-  computed: {
-
-  },
-  components: {
-  },
+  watch: {},
+  computed: {},
+  components: {},
   mounted() {
     this.problemSearch();
-  }
-}
+  },
+};
 </script>
 <style scoped>
 .inputbox {
   font-size: 38px;
-  font-family: 'Pretendard-ExtraBold';
+  font-family: "Pretendard-ExtraBold";
 }
 
 .imgGroup button {
@@ -164,7 +166,7 @@
   border-radius: 5px;
   padding: 10px;
   font-size: 48px;
-  font-family: 'ONEMobilePOP';
+  font-family: "ONEMobilePOP";
 }
 
 .pickGroup p {
@@ -185,4 +187,20 @@
   left: 50%;
   transform: translate(-50%, -50%);
 }
-</style>
(No newline at end of file)
+
+.pickGroup button p.active {
+  color: #000;
+  /* 선택된 버튼의 숫자 색을 더 진하게 */
+}
+
+.submit-button {
+  position: absolute;
+  background-color: #ffba08;
+  padding: 10px 30px;
+  border-radius: 10px;
+  font-size: 28px;
+  font-family: "ONEMobilePOPOTF";
+  right: 5rem;
+  bottom: 3rem;
+}
+</style>
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,7 @@
   <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/logo2.png" alt="" /></div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,63 +10,63 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="goToPage('Chapter3_3')"><img src="../../../../resources/img/left.png" alt=""></div>
+      <div class="pre-btn" @click="goToPage('Chapter3_3')"><img src="../../../../resources/img/left.png" alt="" /></div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
           <p class="subtitle2 mr20">1. see the picture</p>
-          <button><img src="../../../../resources/img/btn10_s.png" alt="">
-          </button>
+          <button><img src="../../../../resources/img/btn10_s.png" alt="" /></button>
         </div>
 
         <div class="text-ct">
           <div class="time-hint">
-          <button class="hint-btn">HINT</button>
+            <button class="hint-btn">HINT</button>
             <div class="time-bg mt20">
-                <div>
-                  <div class="time">
-                    <p class="second">{{ timer }}</p>
-                    <p class="text">sec</p>
-                  </div>
+              <div>
+                <div class="time">
+                  <p class="second">{{ timer }}</p>
+                  <p class="text">sec</p>
                 </div>
               </div>
-         </div>
-          <div class="imgGroup ">
-            <img src="../../../../resources/img/img109_51s.png" alt="">  
+            </div>
           </div>
-          
-          <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">
-                <button><img src="../../../../resources/img/img136_71s.png" alt="">
-                  <p>1</p>
+          <div class="imgGroup">
+            <img src="../../../../resources/img/img109_51s.png" alt="" />
+          </div>
+
+          <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>
+                  <img src="../../../../resources/img/img136_71s.png" alt="" />
+                  <p :class="{ active: selectedButton === 1 }">1</p>
                 </button>
-                <img src="../../../../resources/img/img122_62s.png" alt="">
+                <img src="../../../../resources/img/img122_62s.png" alt="" />
               </div>
             </article>
-            <article style="gap: 60px; bottom: 159px;
-    right: 559px;">
-             <div class="flex align-center">
-                <button><img src="../../../../resources/img/img136_71s.png" alt="">
-                  <p>2</p>
+            <article style="gap: 60px; bottom: 159px; right: 559px">
+              <div class="flex align-center" @click="handleClick(2)">
+                <button>
+                  <img src="../../../../resources/img/img136_71s.png" alt="" />
+                  <p :class="{ active: selectedButton === 2 }">2</p>
                 </button>
-                <img src="../../../../resources/img/img123_62s.png" alt="">
-             </div>
+                <img src="../../../../resources/img/img123_62s.png" alt="" />
+              </div>
             </article>
-            <article style="gap: 60px; bottom: 159px;
-    right: 559px;">
-             <div class="flex align-center">
-                <button><img src="../../../../resources/img/img136_71s.png" alt="">
-                  <p>3</p>
+            <article style="gap: 60px; bottom: 159px; right: 559px">
+              <div class="flex align-center" @click="handleClick(3)">
+                <button>
+                  <img src="../../../../resources/img/img136_71s.png" alt="" />
+                  <p :class="{ active: selectedButton === 3 }">3</p>
                 </button>
-                <img src="../../../../resources/img/img121_62s.png" alt="">
-             </div>
+                <img src="../../../../resources/img/img121_62s.png" alt="" />
+              </div>
             </article>
           </div>
         </div>
+        <button class="submit-button" @click="handleSubmit()">제출하기</button>
       </div>
-      <div class="next-btn" @click="goToPage('Chapter3_4')"><img src="../../../../resources/img/right.png" alt=""></div>
+      <div class="next-btn" @click="goToPage('Chapter3_4')"><img src="../../../../resources/img/right.png" alt="" /></div>
     </div>
   </div>
 </template>
@@ -75,8 +75,9 @@
 export default {
   data() {
     return {
-      timer: '00'
-    }
+      timer: "00",
+      selectedButton: null,
+    };
   },
   methods: {
     goToPage(page) {
@@ -94,25 +95,25 @@
           clearInterval(this.intervalId);
         }
       }, 1000);
-    }
+    },
+    handleClick(number) {
+      this.selectedButton = number;
+    },
+    // 제출하기 버튼
+    handleSubmit() {
+      console.log("선택된 번호 : ", this.selectedButton);
+    },
   },
-  watch: {
-
-  },
-  computed: {
-
-  },
-  components: {
-  },
-  mounted() {
-
-  }
-}
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {},
+};
 </script>
 <style scoped>
 .inputbox {
   font-size: 38px;
-  font-family: 'Pretendard-ExtraBold';
+  font-family: "Pretendard-ExtraBold";
 }
 
 .imgGroup button {
@@ -131,7 +132,7 @@
   border-radius: 5px;
   padding: 10px;
   font-size: 48px;
-  font-family: 'ONEMobilePOP';
+  font-family: "ONEMobilePOP";
 }
 
 .pickGroup p {
@@ -152,4 +153,20 @@
   left: 50%;
   transform: translate(-50%, -50%);
 }
-</style>
(No newline at end of file)
+
+.pickGroup button p.active {
+  color: #000;
+  /* 선택된 버튼의 숫자 색을 더 진하게 */
+}
+
+.submit-button {
+  position: absolute;
+  background-color: #ffba08;
+  padding: 10px 30px;
+  border-radius: 10px;
+  font-size: 28px;
+  font-family: "ONEMobilePOPOTF";
+  right: 5rem;
+  bottom: 3rem;
+}
+</style>
client/views/pages/main/Chapter/Chapter3_4.vue
--- client/views/pages/main/Chapter/Chapter3_4.vue
+++ client/views/pages/main/Chapter/Chapter3_4.vue
@@ -1,87 +1,59 @@
 <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/logo2.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('Chapter3_3_1')">
+        <img src="../../../../resources/img/left.png" alt="" />
+      </div>
+      <div class="content title-box">
+        <p class="title mt25 title-bg">step3.</p>
+        <div class="flex align-center mb30">
+          <p class="subtitle2 mr20">{{ 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>
+          </button>
         </div>
-        <div class="flex justify-between align-center">
-            <div class="pre-btn" @click="goToPage('Chapter3_3_1')">
-                <img src="../../../../resources/img/left.png" alt="" />
-            </div>
-            <div class="content title-box">
-                <p class="title mt25 title-bg">step3.</p>
-                <div class="flex align-center mb30">
-                    <p class="subtitle2 mr20">{{ 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>
-                    </button>
-                </div>
 
-                <div class="text-ct">
-                    <div class="time-hint">
-                        <button class="hint-btn">HINT</button>
-                        <div class="time-bg mt20">
-                            <div>
-                                <div class="time">
-                                    <p class="second">{{ timer }}</p>
-                                    <p class="text">sec</p>
-                                </div>
-                            </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="flex align-center">
-                                <button @click="submitAnswer(item)">
-                                    <img
-                                        src="../../../../resources/img/img136_71s.png"
-                                        alt=""
-                                    />
-                                    <p
-                                        :class="{
-                                            active:
-                                                answer === item.prblmDtlExpln,
-                                        }"
-                                    >
-                                        {{ index + 1 }}
-                                    </p>
-                                </button>
-                                <p>{{ item.prblmDtlExpln }}</p>
-                            </div>
-                        </article>
-                        <!-- <article style="gap: 60px; bottom: 159px; right: 559px">
+        <div class="text-ct">
+          <div class="time-hint">
+            <button class="hint-btn">HINT</button>
+            <div class="time-bg mt20">
+              <div>
+                <div class="time">
+                  <p class="second">{{ timer }}</p>
+                  <p class="text">sec</p>
+                </div>
+              </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="flex align-center">
+                <button @click="submitAnswer(item)">
+                  <img src="../../../../resources/img/img136_71s.png" alt="" />
+                  <p
+                    :class="{
+                      active: answer === item.prblmDtlExpln,
+                    }"
+                  >
+                    {{ index + 1 }}
+                  </p>
+                </button>
+                <p>{{ item.prblmDtlExpln }}</p>
+              </div>
+            </article>
+            <!-- <article style="gap: 60px; bottom: 159px; right: 559px">
                             <div class="flex align-center">
                                 <button>
                                     <img
@@ -105,169 +77,183 @@
                                 <p>c</p>
                             </div>
                         </article> -->
-                    </div>
-                </div>
-            </div>
-            <div
-                class="next-btn"
-                @click="
-                    [
-                        goToPage('Chapter3_5'),
-                        // handleSubmitAnswer()
-                    ]
-                "
-            >
-                <img src="../../../../resources/img/right.png" alt="" />
-            </div>
+          </div>
         </div>
+        <button class="submit-button" @click="handleSubmit()">제출하기</button>
+      </div>
+      <div
+        class="next-btn"
+        @click="
+          [
+            goToPage('Chapter3_5'),
+            // handleSubmitAnswer()
+          ]
+        "
+      >
+        <img src="../../../../resources/img/right.png" alt="" />
+      </div>
     </div>
+  </div>
 </template>
 
 <script>
 import axios from "axios";
 export default {
-    data() {
-        return {
-            timer: "00",
-            prblmId: "101",
-            problemDetail: [],
-            dataList: [],
-            prblmExpln: null,
-            accessTime: null,
-            answer: null,
-        };
+  data() {
+    return {
+      timer: "00",
+      prblmId: "101",
+      problemDetail: [],
+      dataList: [],
+      prblmExpln: null,
+      accessTime: null,
+      answer: null,
+    };
+  },
+  methods: {
+    goToPage(page) {
+      this.$router.push({ name: page });
     },
-    methods: {
-        goToPage(page) {
-            this.$router.push({ name: page });
-        },
-        startTimer() {
-            if (this.intervalId) {
-                clearInterval(this.intervalId);
-            }
-            this.timer = 5;
-            this.intervalId = setInterval(() => {
-                if (this.timer > 0) {
-                    this.timer--;
-                } else {
-                    clearInterval(this.intervalId);
-                }
-            }, 1000);
-        },
+    startTimer() {
+      if (this.intervalId) {
+        clearInterval(this.intervalId);
+      }
+      this.timer = 5;
+      this.intervalId = setInterval(() => {
+        if (this.timer > 0) {
+          this.timer--;
+        } else {
+          clearInterval(this.intervalId);
+        }
+      }, 1000);
+    },
 
-        problemSearch() {
-            const vm = this;
-            sessionStorage.setItem("prblmId", JSON.stringify(vm.prblmId));
-            // vm.prblmId = JSON.parse(sessionStorage.getItem("prblmId"));
-            axios({
-                url: "problem/problemInfo.json",
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json; charset=UTF-8",
-                },
-                data: {
-                    prblmId: vm.prblmId,
-                },
-            })
-                .then(function (res) {
-                    console.log("problem - response : ", res.data);
-                    vm.dataList = res.data.problem;
-                    vm.problemDetail = res.data.problemDetail;
-                })
-                .catch(function (error) {
-                    console.log("problem - error : ", error);
-                });
+    problemSearch() {
+      const vm = this;
+      sessionStorage.setItem("prblmId", JSON.stringify(vm.prblmId));
+      // vm.prblmId = JSON.parse(sessionStorage.getItem("prblmId"));
+      axios({
+        url: "problem/problemInfo.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
         },
-        submitAnswer(item) {
-            console.log(item.prblmDtlExpln);
-            this.answer = item.prblmDtlExpln;
+        data: {
+          prblmId: vm.prblmId,
         },
+      })
+        .then(function (res) {
+          console.log("problem - response : ", res.data);
+          vm.dataList = res.data.problem;
+          vm.problemDetail = res.data.problemDetail;
+        })
+        .catch(function (error) {
+          console.log("problem - error : ", error);
+        });
+    },
+    submitAnswer(item) {
+      console.log(item.prblmDtlExpln);
+      this.answer = item.prblmDtlExpln;
+    },
 
-        // 문제 풀이 전송
-        handleSubmitAnswer() {
-            const vm = this;
-            // const accessTime = new Date();
-            // const formattedTime =
-            //     this.formatToTimestampWithoutTimeZone(accessTime);
-            axios({
-                url: "problemLog/insertProblemLog.json",
-                method: "post",
-                headers: {
-                    "Content-Type": "application/json; charset=UTF-8",
-                },
-                data: {
-                    prblmAns: vm.answer,
-                    prblmLogAnsCnt: 0,
-                    stdId: "2",
-                    // prblmStrtTm: formattedTime,
-                    prblmId: vm.prblmId,
-                },
-            })
-                .then(function (res) {
-                    console.log("answer submit - response : ", res.data);
-                })
-                .catch(function (error) {
-                    console.log("answer submit - error : ", error);
-                });
+    // 문제 풀이 전송
+    handleSubmitAnswer() {
+      const vm = this;
+      // const accessTime = new Date();
+      // const formattedTime =
+      //     this.formatToTimestampWithoutTimeZone(accessTime);
+      axios({
+        url: "problemLog/insertProblemLog.json",
+        method: "post",
+        headers: {
+          "Content-Type": "application/json; charset=UTF-8",
         },
-        playAudio() {
-            const audio = document.getElementById("audio-player");
-            audio.play();
-            console.log("playing");
+        data: {
+          prblmAns: vm.answer,
+          prblmLogAnsCnt: 0,
+          stdId: "2",
+          // prblmStrtTm: formattedTime,
+          prblmId: vm.prblmId,
         },
+      })
+        .then(function (res) {
+          console.log("answer submit - response : ", res.data);
+        })
+        .catch(function (error) {
+          console.log("answer submit - error : ", error);
+        });
     },
-    watch: {},
-    computed: {},
-    components: {},
-    mounted() {
-        this.problemSearch();
+    playAudio() {
+      const audio = document.getElementById("audio-player");
+      audio.play();
+      console.log("playing");
     },
+    handleSubmit() {
+      console.log("정답 : ", this.answer);
+    },
+  },
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {
+    this.problemSearch();
+  },
 };
 </script>
 <style scoped>
 .inputbox {
-    font-size: 38px;
-    font-family: "Pretendard-ExtraBold";
+  font-size: 38px;
+  font-family: "Pretendard-ExtraBold";
 }
 
 .imgGroup button {
-    position: relative;
+  position: relative;
 }
 
 .imgGroup button p,
 .textbox p {
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    transform: translate(-50%, -50%);
-    width: fit-content;
-    height: fit-content;
-    background: #ffffffb8;
-    border-radius: 5px;
-    padding: 10px;
-    font-size: 48px;
-    font-family: "ONEMobilePOP";
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
+  width: fit-content;
+  height: fit-content;
+  background: #ffffffb8;
+  border-radius: 5px;
+  padding: 10px;
+  font-size: 48px;
+  font-family: "ONEMobilePOP";
 }
 
 .pickGroup p {
-    font-size: 34px;
-    font-weight: bold;
+  font-size: 34px;
+  font-weight: bold;
 }
 
 .pickGroup button {
-    position: relative;
-    margin-right: 30px;
+  position: relative;
+  margin-right: 30px;
 }
 
 .pickGroup button p {
-    font-size: 34px;
-    color: #c6c6c6;
-    position: absolute;
-    top: 50%;
-    left: 50%;
-    transform: translate(-50%, -50%);
+  font-size: 34px;
+  color: #c6c6c6;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%, -50%);
 }
 .pickGroup button p.active {
-    color: #000000;
+  color: #000000;
+}
+.submit-button {
+  position: absolute;
+  background-color: #ffba08;
+  padding: 10px 30px;
+  border-radius: 10px;
+  font-size: 28px;
+  font-family: "ONEMobilePOPOTF";
+  right: 5rem;
+  bottom: 3rem;
 }
 </style>
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,7 @@
   <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/logo2.png" alt="" /></div>
       </router-link>
     </div>
     <div class="title-box mb25 flex align-center mt40">
@@ -10,7 +10,7 @@
       <span class="subtitle">my name is dd</span>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="goToPage('Chapter3_4')"><img src="../../../../resources/img/left.png" alt=""></div>
+      <div class="pre-btn" @click="goToPage('Chapter3_4')"><img src="../../../../resources/img/left.png" alt="" /></div>
       <div class="content title-box">
         <p class="title mt25 title-bg">step3.</p>
         <div class="flex align-center mb30">
@@ -19,53 +19,54 @@
           </button> -->
         </div>
 
-        <div class=" text-ct">
+        <div class="text-ct">
           <div class="time-hint">
-          <button class="hint-btn">HINT</button>
+            <button class="hint-btn">HINT</button>
             <div class="time-bg mt20">
-                <div>
-                  <div class="time">
-                    <p class="second">{{ timer }}</p>
-                    <p class="text">sec</p>
-                  </div>
+              <div>
+                <div class="time">
+                  <p class="second">{{ timer }}</p>
+                  <p class="text">sec</p>
                 </div>
               </div>
-         </div>
-          <div class="imgGroup ">
-            <img src="../../../../resources/img/img125_64s.png" alt="">  
+            </div>
+          </div>
+          <div class="imgGroup">
+            <img src="../../../../resources/img/img125_64s.png" alt="" />
           </div>
           <!-- <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>
             <p>&#40;</p>
-            <article style="gap: 60px; bottom: 159px;
-    left: 242px;">
-              <div class="flex align-center">
-                <button><img src="../../../../resources/img/img136_71s.png" alt="">
-                  <p>1</p>
+            <article style="gap: 60px; bottom: 159px; left: 242px">
+              <div class="flex align-center" @click="handleClick(1)">
+                <button>
+                  <img src="../../../../resources/img/img136_71s.png" alt="" />
+                  <p :class="{ active: selectedButton === 1 }">1</p>
                 </button>
                 <p>a</p>
               </div>
             </article>
-            <article style="gap: 60px; bottom: 159px;
-    right: 559px;">
-             <div class="flex align-center">
-                <button><img src="../../../../resources/img/img136_71s.png" alt="">
-                  <p>2</p>
+            <article style="gap: 60px; bottom: 159px; right: 559px">
+              <div class="flex align-center" @click="handleClick(2)">
+                <button>
+                  <img src="../../../../resources/img/img136_71s.png" alt="" />
+                  <p :class="{ active: selectedButton === 2 }">2</p>
                 </button>
                 <p>b</p>
-             </div>
+              </div>
             </article>
             <p>&#41;</p>
             <p>bed</p>
           </div>
         </div>
+        <button class="submit-button" @click="handleSubmit()">제출하기</button>
       </div>
-      <div class="next-btn" @click="goToPage('Chapter3_6')"><img src="../../../../resources/img/right.png" alt=""></div>
+      <div class="next-btn" @click="goToPage('Chapter3_6')"><img src="../../../../resources/img/right.png" alt="" /></div>
     </div>
   </div>
 </template>
@@ -74,8 +75,9 @@
 export default {
   data() {
     return {
-      timer: '00'
-    }
+      timer: "00",
+      selectedButton: null,
+    };
   },
   methods: {
     goToPage(page) {
@@ -93,25 +95,25 @@
           clearInterval(this.intervalId);
         }
       }, 1000);
-    }
+    },
+    handleClick(number) {
+      this.selectedButton = number;
+    },
+    // 제출하기 버튼
+    handleSubmit() {
+      console.log("선택된 번호 : ", this.selectedButton);
+    },
   },
-  watch: {
-
-  },
-  computed: {
-
-  },
-  components: {
-  },
-  mounted() {
-
-  }
-}
+  watch: {},
+  computed: {},
+  components: {},
+  mounted() {},
+};
 </script>
 <style scoped>
 .inputbox {
   font-size: 38px;
-  font-family: 'Pretendard-ExtraBold';
+  font-family: "Pretendard-ExtraBold";
 }
 
 .imgGroup button {
@@ -130,7 +132,7 @@
   border-radius: 5px;
   padding: 10px;
   font-size: 48px;
-  font-family: 'ONEMobilePOP';
+  font-family: "ONEMobilePOP";
 }
 
 .pickGroup p {
@@ -151,4 +153,18 @@
   left: 50%;
   transform: translate(-50%, -50%);
 }
-</style>
(No newline at end of file)
+
+.pickGroup button p.active {
+  color: #000000;
+}
+.submit-button {
+  position: absolute;
+  background-color: #ffba08;
+  padding: 10px 30px;
+  border-radius: 10px;
+  font-size: 28px;
+  font-family: "ONEMobilePOPOTF";
+  right: 5rem;
+  bottom: 3rem;
+}
+</style>
client/views/pages/main/Chapter/Chapter3_6.vue
--- client/views/pages/main/Chapter/Chapter3_6.vue
+++ client/views/pages/main/Chapter/Chapter3_6.vue
@@ -1,106 +1,122 @@
 <template>
-   <div id="Chapter2_2" class="content-wrap">
-      <div style="margin: 30px 0px 50px; width: 20%">
+  <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/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('Chapter3_5')"><img src="../../../../resources/img/left.png" alt="">
-         </div>
-         <div class="content title-box">
-            <p class="title mt25 title-bg">step3.</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="time-hint">
+    <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_5')"><img src="../../../../resources/img/left.png" alt="" /></div>
+      <div class="content title-box">
+        <p class="title mt25 title-bg">step3.</p>
+        <div class="flex align-center mb30">
+          <p class="subtitle2 mr20">듣고 알맞은 것을 고르세요.</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>
-            <div class="time-bg mt20">
-                <div>
-                  <div class="time">
-                    <p class="second">{{ timer }}</p>
-                    <p class="text">sec</p>
-                  </div>
-                </div>
+          <div class="time-bg mt20">
+            <div>
+              <div class="time">
+                <p class="second">{{ timer }}</p>
+                <p class="text">sec</p>
               </div>
-         </div>
-            
-            <div class="imgGroup">
-               <img src="../../../../resources/img/img114_57s.png" alt="">
             </div>
+          </div>
+        </div>
 
-            <div class="flex justify-center">
-               <div class="btnGroup mt50 flex justify-between">
-                  <button class="popTxt" v-for="(item, index) in items" :key="index" @click="updateContent(index)"
-                     :class="{ active: selectedIndex === index }">
-                     <img :src="item.imgSrc1">
-                     <img :src="item.imgSrc2" v-if="selectedIndex === index" style="display: block;">
-                  </button>
-               </div>
-            </div>
-         </div>
-         <div class="next-btn" @click="goToPage('Chapter3_7')"><img src="../../../../resources/img/right.png" alt="">
-         </div>
+        <div class="imgGroup">
+          <img src="../../../../resources/img/img114_57s.png" alt="" />
+        </div>
+
+        <div class="flex justify-center">
+          <div class="btnGroup mt50 flex justify-between">
+            <button class="popTxt" v-for="(item, index) in items" :key="index" @click="updateContent(index)" :class="{ active: selectedIndex === index }">
+              <img :src="item.imgSrc1" />
+              <img :src="item.imgSrc2" v-if="selectedIndex === index" style="display: block" />
+            </button>
+          </div>
+        </div>
+        <button class="submit-button" @click="handleSubmit()">제출하기</button>
       </div>
-   </div>
+      <div class="next-btn" @click="goToPage('Chapter3_7')"><img src="../../../../resources/img/right.png" alt="" /></div>
+    </div>
+  </div>
 </template>
 
 <script>
 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',  }
-         ],
-         selectedIndex: null,
-         timer: "00",
-         intervalId: null,
-      };
-   },
-   methods: {
-      goToPage(page) {
-         this.$router.push({ name: page });
-      },
-      updateContent(index) {
-         this.selectedIndex = index;
-         this.currentCon = this.items[index].con;
-      },
-      startTimer() {
-         if (this.intervalId) {
-            clearInterval(this.intervalId);
-         }
-         this.timer = 5;
-         this.intervalId = setInterval(() => {
-            if (this.timer > 0) {
-               this.timer--;
-            } else {
-               clearInterval(this.intervalId);
-            }
-         }, 1000);
-      }
-   },
-   beforeDestroy() {
+  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" },
+      ],
+      selectedIndex: null,
+      timer: "00",
+      intervalId: null,
+    };
+  },
+  methods: {
+    goToPage(page) {
+      this.$router.push({ name: page });
+    },
+    updateContent(index) {
+      this.selectedIndex = index;
+      this.currentCon = this.items[index].con;
+    },
+    startTimer() {
       if (this.intervalId) {
-         clearInterval(this.intervalId);
+        clearInterval(this.intervalId);
       }
-   }
-}
+      this.timer = 5;
+      this.intervalId = setInterval(() => {
+        if (this.timer > 0) {
+          this.timer--;
+        } else {
+          clearInterval(this.intervalId);
+        }
+      }, 1000);
+    },
+    handleSubmit() {
+      console.log("정답 : ", this.selectedIndex + 1);
+    },
+    playAudio() {
+      const audio = document.getElementById("audio-player");
+      audio.play();
+      console.log("playing");
+    },
+  },
+  beforeDestroy() {
+    if (this.intervalId) {
+      clearInterval(this.intervalId);
+    }
+  },
+};
 </script>
 
 <style scoped>
 .popTxt img {
-   position: absolute;
-   top: 0;
-   left: 0;
+  position: absolute;
+  top: 0;
+  left: 0;
+}
+
+.submit-button {
+  position: absolute;
+  background-color: #ffba08;
+  padding: 10px 30px;
+  border-radius: 10px;
+  font-size: 28px;
+  font-family: "ONEMobilePOPOTF";
+  right: 5rem;
+  bottom: 3rem;
 }
 </style>
Add a comment
List