jichoi / lms_front star
이은진 이은진 2024-08-22
240822 이은진 chapter2_5
@73dd6b06ca1e185697c2894da8df856569607961
client/views/pages/main/Chapter/Chapter2_5.vue
--- client/views/pages/main/Chapter/Chapter2_5.vue
+++ client/views/pages/main/Chapter/Chapter2_5.vue
@@ -17,7 +17,7 @@
       <button class="completeBtn" @click="complete"> 학습 종료 </button>
     </div>
     <div class="flex justify-between align-center">
-      <div class="pre-btn" @click="goToPage('Chapter2_7')">
+      <div class="pre-btn" @click="previousProblem()">
         <img src="../../../../resources/img/left.png" alt="" />
       </div>
       <div class="content title-box">
@@ -38,7 +38,7 @@
           <!-- <p class="title1 mb40" style="color: #464749;">The sun rises in the east and sets in the west. It is very hot during summer.</p>
               <img src="../../../../resources/img/img65_37s.png" alt=""> -->
 
-          <img class="exampleImg" :src="imgSrc" alt="example img" />
+          <img class="exampleImg" :src="imgUrl" reloadable="true" alt="example img" />
 
           <!-- 정답 칸 -->
           <div class="dropGroup flex align-center justify-center mt30">
@@ -70,7 +70,7 @@
           </div>
         </div>
       </div>
-      <div class="next-btn" @click="goToPage('Chapter2_6')">
+      <div class="next-btn" @click="nextProblem()">
         <img src="../../../../resources/img/right.png" alt="" />
       </div>
     </div>
@@ -78,25 +78,27 @@
 </template>
 
 <script>
+import axios from "axios";
 export default {
   data() {
     return {
       imgSrc: "client/resources/img/jumpingRabbit.gif",
-      example: "a rabbit is/?/a guitar",
+      example: "",
       beforeQuestion: "",
       afterQuestion: "",
-      choice: "ygnpali",
-      answer: "playing",
+      choice: "",
+      answer: "",
       answerLength: 0, // 초기화 시 0으로 설정
 
       userAnswer: [], // 초기화 시 빈 배열로 설정
       draggedChar: null, // 드래그한 문자를 임시로 저장
+
+      prblm_id: [],
+      unit_id: null,
+      dataList: [],
     };
   },
   computed: {
-    choiceCharacters() {
-      return this.choice.split("");
-    },
   },
   methods: {
     complete() {
@@ -122,6 +124,7 @@
       if (this.userAnswer[index] === "") {
         this.userAnswer.splice(index, 1, this.draggedChar);
         const charIndex = this.choiceCharacters.indexOf(this.draggedChar);
+        console.log(charIndex)
         if (charIndex > -1) {
           this.choiceCharacters.splice(charIndex, 1); // 드래그한 문자를 choice에서 제거
         }
@@ -148,10 +151,155 @@
     returnPage() {
       window.location.reload();
     },
+    async getProblem() {
+      const prblmId = this.currentLearningId.prblm_id;
+
+      try {
+        const res = await axios.post("problem/problemInfo.json", {
+          prblmId: prblmId,
+        }, {
+          headers: {
+            "Content-Type": "application/json; charset=UTF-8",
+          },
+        });
+
+        console.log("problem - response : ", res.data);
+        this.dataList = res.data.problem;
+        this.problemDetail = res.data.problemDetail[0];
+        this.example = this.dataList.prblmExpln;
+        this.answer = this.problemDetail.prblmDtlExpln;
+        this.choice = this.answer ? this.shuffleString(this.answer) : '';
+        this.splitExample();
+        this.initializeUserAnswer();
+        this.choiceCharacters = this.choice.split("");
+
+        const fileInfo = await this.findFile(this.dataList.fileMngId);
+        if (fileInfo) {
+          this.imgUrl = "http://localhost:9080/" + fileInfo.fileRpath;
+          console.log(this.imgUrl);
+        } else {
+          console.warn("No file found for the given fileMngId.");
+        }
+      } catch (error) {
+        console.log("problem - error : ", error);
+      }
+    },
+    shuffleString(string) {
+      const array = string.split('');
+      for (let i = array.length - 1; i > 0; i--) {
+        const j = Math.floor(Math.random() * (i + 1));
+        [array[i], array[j]] = [array[j], array[i]];
+      }
+      return array.join('');
+    },
+    async findFile(file_mng_id) {
+      try {
+        const res = await axios.post("/file/find.json", {
+          file_mng_id: file_mng_id,
+        }, {
+          headers: {
+            "Content-Type": "application/json; charset=UTF-8",
+          },
+        });
+        return res.data.list[0];
+      } catch (error) {
+        console.log("result - error : ", error);
+        return null;
+      }
+    },
+    nextProblem() {
+      if (this.currentProblemIndex < this.$store.state.currentLearningIds.length - 1) {
+        this.$store.dispatch('goToNextProblem');
+        this.handleProblemDetail(this.currentLearningId);
+        this.goToPage(this.problemType);
+      } else {
+        // 마지막 문제면 이동
+        this.goToPage("Chapter4")
+      }
+    },
+    previousProblem() {
+      if (this.currentProblemIndex > 0) {
+        this.$store.dispatch('goToPreviousProblem');
+        this.handleProblemDetail(this.currentLearningId);
+        this.goToPage(this.problemType);
+      }
+    },
+
+    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";
+      }
+    },
+  },
+  computed: {
+    currentLearningId() {
+      return this.$store.getters.currentLearningId;
+    },
+    currentLabel() {
+      return this.$store.getters.currentLabel;
+    },
+    currentProblemIndex() {
+      return this.$store.getters.currentProblemIndex;
+    },
+    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);
+
+    // Fetch or process the current problem based on `currentLearningId`
   },
   mounted() {
-    this.splitExample();
-    this.initializeUserAnswer(); // 컴포넌트가 마운트될 때 userAnswer 초기화
+    this.getProblem()
   },
 };
 </script>
Add a comment
List