
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/logo2.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("정답입니다!");
} 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>