File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
<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/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>
<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: hiddenState ? 'hidden' : 'visible' }"
@click="previousProblem()"
>
<img src="../../../../resources/img/left.png" alt="" />
</div>
<div class="content title-box">
<div style="display: flex; justify-content: space-between">
<p class="title mt25 title-bg">step3-놀면서 배우는 영어</p>
<button id="returnButton" @click="returnPage" style="margin: 4rem">
<img src="../../../../resources/img/btn_return_50x50.png" alt="" />
<p>되돌리기</p>
</button>
</div>
<div class="flex align-center mb30 questionBox">
<p class="subtitle2 mr20">문제를 맞춰 폭탄을 제거해줘!</p>
<div style="height: 130px">
<div>
<div>
<p class="second"></p>
<p class="text"></p>
</div>
</div>
</div>
</div>
<div class="text-ct">
<div class="imgGroup flex align-center justify-center">
<div class="flex" style="gap: 20px; position: relative">
<img
src="../../../../resources/img/img105_46s.png"
alt=""
style="width: 90%"
/>
<div class="textbox">
<p class="little-title">{{ problem }}</p>
<div class="pickGroup">
<article class="flex mb10" style="gap: 60px">
<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 class="red">{{ choice[0] }}</p>
</div>
</article>
<article class="flex mb10" style="gap: 60px">
<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 class="orange">{{ choice[1] }}</p>
</div>
</article>
<article class="flex mb10" style="gap: 60px">
<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>
<p class="blue">{{ choice[2] }}</p>
</div>
</article>
<article class="flex" style="gap: 60px">
<div class="flex align-center" @click="handleClick(4)">
<button>
<img
src="../../../../resources/img/img136_71s.png"
alt=""
/>
<p :class="{ active: selectedButton === 4 }">4</p>
</button>
<p class="green">{{ choice[3] }}</p>
</div>
</article>
</div>
</div>
<!-- 오답일 경우 아래의 이미지가 보여야함 -->
<div
v-if="correct"
class="flex justify-center wrong-anwser"
style="gap: 20px"
>
<img src="../../../../resources/img/img165_46s.png" alt="" />
</div>
</div>
</div>
</div>
<div class="answerBox">
<button class="answerButton" @click="confirmAnswer">정답 확인</button>
</div>
</div>
<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 {
timer: "00",
problem: "",
choice: [],
answer: "",
selectedButton: null,
correct: false,
prblm_id: [],
problemData: [],
// problemArr: [],
answerArr: [],
seq: this.$store.getters.seqNum,
hiddenState: 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 });
},
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(buttonNumber) {
this.selectedButton = buttonNumber; // 선택된 버튼 번호 저장
},
confirmAnswer() {
if (this.selectedButton === null) {
alert("정답을 선택해주세요.");
return;
}
if (this.selectedButton === this.answer) {
alert("정답입니다!");
this.nextProblem();
} else {
this.correct = true;
}
this.selectedButton = null;
},
returnPage() {
window.location.reload();
},
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");
alert("문제 학습 완료");
this.complete();
}
},
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";
}
},
fetchProblemData() {
axios({
url: "/problem/problemInfo.json",
method: "post",
headers: {
"Content-Type": "application/json; charset=UTF-8",
},
data: {
prblmId: this.prblm_id.prblm_id,
},
})
.then((response) => {
this.problemData = response.data;
console.log("problemData", this.problemData);
this.sortingProblem();
})
.catch((error) => {
this.state = "noProblem";
console.error("Error fetching problemData:", error);
});
},
sortingProblem() {
this.problem = this.problemData.problem.prblmExpln;
for (let i = 0; i < this.problemData.problemDetail.length; i++) {
// this.answerArr[i].prblmDtlExpln =
// this.problemData.problemDetail[i].prblmDtlExpln;
// this.answerArr[i].prblmYn = this.problemData.problemDetail[i].prblmYn;
this.answerArr[i] = this.problemData.problemDetail[i];
this.choice[i] = this.problemData.problemDetail[i].prblmDtlExpln;
}
console.log("answerArr", this.answerArr);
for (let i = 0; i < this.answerArr.length; i++) {
if (this.answerArr[i].prblmYn == "Y") {
this.answer = i + 1;
break;
}
}
},
},
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);
this.prblm_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.fetchProblemData();
if (this.currentProblemIndex == 0) {
this.hiddenState = true;
}
},
};
</script>
<style scoped>
.wrong-anwser {
position: absolute;
top: 51%;
left: 45%;
transform: translate(-50%, -50%);
}
.textbox {
position: absolute;
top: 140px;
left: 45px;
}
.time-bg {
margin-right: 40px;
top: 136px;
right: 124px;
}
.pickGroup {
margin: 40px 0 0 180px;
}
.pickGroup button {
position: relative;
margin-right: 30px;
}
.pickGroup button img {
width: 33px;
height: 33px;
}
.pickGroup button p {
font-size: 20px;
color: #c6c6c6;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.pickGroup article {
cursor: pointer;
}
.pickGroup article > div > p {
font-size: 24px;
}
.pickGroup button p.active {
color: #000;
/* 선택된 버튼의 숫자 색을 더 진하게 */
}
.little-title {
text-align: start;
font-size: 24px;
font-weight: bold;
}
.questionBox {
justify-content: space-between;
align-items: flex-start;
}
.imgGroup {
position: absolute;
top: 150px;
left: 30%;
width: fit-content;
}
.answerBox {
margin-top: 295px;
text-align: right;
}
.answerButton {
background-color: #ffc107;
border-radius: 30px;
padding: 20px 50px;
margin: 40px;
font-family: "ONEMobileOTF-Regular";
font-weight: bold;
font-size: 24px;
}
.completeBtn {
margin-right: 100px;
background-color: #ffba08;
padding: 10px 30px;
border-radius: 10px;
font-size: 28px;
font-family: "ONEMobilePOPOTF";
}
</style>