|
@@ -20,8 +20,8 @@
|
|
></beforeSubmitMask>
|
|
></beforeSubmitMask>
|
|
<submitMask v-if="submitVisible" :correctScore="correctScore"></submitMask>
|
|
<submitMask v-if="submitVisible" :correctScore="correctScore"></submitMask>
|
|
<correctAnswerMask
|
|
<correctAnswerMask
|
|
- :explainJq="list[listIndex].explainJq"
|
|
|
|
- :explainJs="list[listIndex].explainJs"
|
|
|
|
|
|
+ :question="wrongQuestion"
|
|
|
|
+ :no="wrongNo"
|
|
@close="
|
|
@close="
|
|
() => {
|
|
() => {
|
|
correctAnswer = false;
|
|
correctAnswer = false;
|
|
@@ -72,7 +72,16 @@
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="answer">
|
|
<div class="answer">
|
|
- <span class="answer-tip">您选择的答案:</span>
|
|
|
|
|
|
+ <text v-if="list[listIndex].questionType < 3" class="answer-tip"
|
|
|
|
+ >您选择的答案:{{
|
|
|
|
+ findAnswerLetter(list[listIndex].userAnswer)
|
|
|
|
+ }}</text
|
|
|
|
+ >
|
|
|
|
+ <text v-if="list[listIndex].questionType == 3" class="answer-tip"
|
|
|
|
+ >您选择的答案:{{
|
|
|
|
+ findAnswerLetter(list[listIndex].userAnswer)
|
|
|
|
+ }}</text
|
|
|
|
+ >
|
|
<div style="display: flex; align-items: center">
|
|
<div style="display: flex; align-items: center">
|
|
<span>选项:</span>
|
|
<span>选项:</span>
|
|
<div class="answer-list">
|
|
<div class="answer-list">
|
|
@@ -80,7 +89,7 @@
|
|
v-for="(item, index) in list[listIndex].optsArr"
|
|
v-for="(item, index) in list[listIndex].optsArr"
|
|
:key="index"
|
|
:key="index"
|
|
class="answer-list-item"
|
|
class="answer-list-item"
|
|
- @click="selectExamAnswer(item)"
|
|
|
|
|
|
+ @click="selectExamAnswer(item, index)"
|
|
:class="{
|
|
:class="{
|
|
answer_selected:
|
|
answer_selected:
|
|
list[listIndex].userAnswer.includes(item),
|
|
list[listIndex].userAnswer.includes(item),
|
|
@@ -194,11 +203,16 @@
|
|
@click="changeListIndex"
|
|
@click="changeListIndex"
|
|
>
|
|
>
|
|
<div
|
|
<div
|
|
|
|
+
|
|
style="white-space: nowrap"
|
|
style="white-space: nowrap"
|
|
:data-key="index * rowNum + _index + 1"
|
|
:data-key="index * rowNum + _index + 1"
|
|
class="coll-table-topic-item"
|
|
class="coll-table-topic-item"
|
|
|
|
+ :class="{
|
|
|
|
+ 'text-red': list[index * rowNum + _index].isError,
|
|
|
|
+ }"
|
|
>
|
|
>
|
|
- {{ index * rowNum + _index + 1 }}
|
|
|
|
|
|
+ {{ list[index * rowNum + _index].userAnswerLetter || "" }}
|
|
|
|
+ <!-- {{ index * rowNum + _index + 1 }} -->
|
|
</div>
|
|
</div>
|
|
</td>
|
|
</td>
|
|
</tr>
|
|
</tr>
|
|
@@ -247,6 +261,7 @@ export default {
|
|
headImage: "",
|
|
headImage: "",
|
|
carType: "",
|
|
carType: "",
|
|
listIndex: 0,
|
|
listIndex: 0,
|
|
|
|
+ wrongTopicIndex: 1,
|
|
letter: ["A", "B", "C", "D", "E", "F"],
|
|
letter: ["A", "B", "C", "D", "E", "F"],
|
|
list: [
|
|
list: [
|
|
{
|
|
{
|
|
@@ -710,6 +725,13 @@ export default {
|
|
userAnswer: "",
|
|
userAnswer: "",
|
|
},
|
|
},
|
|
],
|
|
],
|
|
|
|
+ wrongTopicIssue: "",
|
|
|
|
+ wrongNo: 1,
|
|
|
|
+ wrongQuestion: {},
|
|
|
|
+ wrongTopicOptsArr: [],
|
|
|
|
+ wrongTopicAnswer: [],
|
|
|
|
+ wrongTopicuserAnswer: [],
|
|
|
|
+ wrongImage: "",
|
|
beginTimeStrap: 1646988300000,
|
|
beginTimeStrap: 1646988300000,
|
|
endTimeStrap: 164698560000,
|
|
endTimeStrap: 164698560000,
|
|
correctScore: 0,
|
|
correctScore: 0,
|
|
@@ -743,7 +765,89 @@ export default {
|
|
return questionTypeName;
|
|
return questionTypeName;
|
|
},
|
|
},
|
|
},
|
|
},
|
|
|
|
+ watch: {
|
|
|
|
+ listIndex(newVal, oldVal) {
|
|
|
|
+ if (newVal !== oldVal) {
|
|
|
|
+ if (this.list[oldVal].questionType == 3) {
|
|
|
|
+ let userAnswerLetter = [];
|
|
|
|
+ if (
|
|
|
|
+ this.list[oldVal].userAnswer &&
|
|
|
|
+ this.list[oldVal].userAnswer.sort().toString() !==
|
|
|
|
+ this.list[oldVal].answer.split("-").sort().toString()
|
|
|
|
+ ) {
|
|
|
|
+ this.$set(this.list[oldVal], "isError", true);
|
|
|
|
+ this.list[oldVal].userAnswer.forEach((element) => {
|
|
|
|
+ userAnswerLetter.push(
|
|
|
|
+ this.letter[this.list[oldVal].optsArr.indexOf(element)]
|
|
|
|
+ );
|
|
|
|
+ });
|
|
|
|
+ this.$set(
|
|
|
|
+ this.list[oldVal],
|
|
|
|
+ "userAnswerLetter",
|
|
|
|
+ userAnswerLetter.sort().join("")
|
|
|
|
+ );
|
|
|
|
+ this.correctAnswer = true;
|
|
|
|
+ this.wrongQuestion = this.list[oldVal];
|
|
|
|
+ this.wrongNo = oldVal;
|
|
|
|
+ } else {
|
|
|
|
+ this.$set(
|
|
|
|
+ this.list[oldVal],
|
|
|
|
+ "userAnswerLetter",
|
|
|
|
+ userAnswerLetter.join("")
|
|
|
|
+ );
|
|
|
|
+ this.correctAnswer = false;
|
|
|
|
+ }
|
|
|
|
+ } else if (this.list[oldVal].questionType < 3) {
|
|
|
|
+ let userAnswerLetter = [];
|
|
|
|
+ if (
|
|
|
|
+ this.list[oldVal].userAnswer &&
|
|
|
|
+ this.list[oldVal].userAnswer !== this.list[oldVal].answer
|
|
|
|
+ ) {
|
|
|
|
+ this.$set(
|
|
|
|
+ this.list[oldVal],
|
|
|
|
+ "userAnswerLetter",
|
|
|
|
+ this.letter[
|
|
|
|
+ this.list[oldVal].optsArr.indexOf(this.list[oldVal].userAnswer)
|
|
|
|
+ ]
|
|
|
|
+ );
|
|
|
|
+ this.$set(this.list[oldVal], "isError", true);
|
|
|
|
+ this.correctAnswer = true;
|
|
|
|
+ this.wrongQuestion = this.list[oldVal];
|
|
|
|
+ this.wrongNo = oldVal;
|
|
|
|
+ } else {
|
|
|
|
+ this.$set(
|
|
|
|
+ this.list[oldVal],
|
|
|
|
+ "userAnswerLetter",
|
|
|
|
+ this.letter[
|
|
|
|
+ this.list[oldVal].optsArr.indexOf(this.list[oldVal].userAnswer)
|
|
|
|
+ ]
|
|
|
|
+ );
|
|
|
|
+ this.correctAnswer = false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ },
|
|
methods: {
|
|
methods: {
|
|
|
|
+ findAnswerLetter(userAnswer) {
|
|
|
|
+ if (!userAnswer) {
|
|
|
|
+ return "";
|
|
|
|
+ }
|
|
|
|
+ let letter = [];
|
|
|
|
+ if (Array.isArray(userAnswer)) {
|
|
|
|
+ userAnswer.forEach((item) => {
|
|
|
|
+ letter.push(
|
|
|
|
+ this.letter[this.list[this.listIndex].optsArr.indexOf(item)]
|
|
|
|
+ );
|
|
|
|
+ });
|
|
|
|
+ } else {
|
|
|
|
+ letter.push(
|
|
|
|
+ this.letter[this.list[this.listIndex].optsArr.indexOf(userAnswer)]
|
|
|
|
+ );
|
|
|
|
+ }
|
|
|
|
+ letter.sort();
|
|
|
|
+ return letter.join(" ");
|
|
|
|
+ },
|
|
getTimeStr(timeStrap) {
|
|
getTimeStr(timeStrap) {
|
|
let timer = new Date(timeStrap);
|
|
let timer = new Date(timeStrap);
|
|
let str = `${timer.getMinutes()}:${timer.getSeconds()}`;
|
|
let str = `${timer.getMinutes()}:${timer.getSeconds()}`;
|
|
@@ -768,12 +872,11 @@ export default {
|
|
}
|
|
}
|
|
this.listIndex = this.listIndex + 1;
|
|
this.listIndex = this.listIndex + 1;
|
|
},
|
|
},
|
|
- selectExamAnswer(item) {
|
|
|
|
|
|
+ selectExamAnswer(item, index) {
|
|
if (this.list[this.listIndex].isComplete) {
|
|
if (this.list[this.listIndex].isComplete) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
if (this.list[this.listIndex].questionType < 3) {
|
|
if (this.list[this.listIndex].questionType < 3) {
|
|
- this.correctAnswer = this.list[this.listIndex].answer !== item;
|
|
|
|
this.$set(this.list[this.listIndex], "isComplete", true);
|
|
this.$set(this.list[this.listIndex], "isComplete", true);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -821,6 +924,7 @@ export default {
|
|
correctAnswerMask,
|
|
correctAnswerMask,
|
|
},
|
|
},
|
|
onLoad(option) {
|
|
onLoad(option) {
|
|
|
|
+ let that = this;
|
|
this.nickName =
|
|
this.nickName =
|
|
uni.getStorageSync("userInfo") && uni.getStorageSync("userInfo").nickName;
|
|
uni.getStorageSync("userInfo") && uni.getStorageSync("userInfo").nickName;
|
|
this.headImage =
|
|
this.headImage =
|
|
@@ -854,7 +958,7 @@ export default {
|
|
this.countdownTime = this.getTimeStr(this.beginTimeStrap);
|
|
this.countdownTime = this.getTimeStr(this.beginTimeStrap);
|
|
if (this.beginTimeStrap == this.endTimeStrap) {
|
|
if (this.beginTimeStrap == this.endTimeStrap) {
|
|
this.submitScore();
|
|
this.submitScore();
|
|
- clearInterval(this.countdownTimer);
|
|
|
|
|
|
+ clearInterval(that.countdownTimer);
|
|
}
|
|
}
|
|
}, 1000);
|
|
}, 1000);
|
|
},
|
|
},
|
|
@@ -862,6 +966,9 @@ export default {
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
|
+.text-red {
|
|
|
|
+ color: red;
|
|
|
|
+}
|
|
.w-half {
|
|
.w-half {
|
|
width: 50%;
|
|
width: 50%;
|
|
}
|
|
}
|
|
@@ -1087,7 +1194,7 @@ export default {
|
|
|
|
|
|
div {
|
|
div {
|
|
font-size: 8rpx;
|
|
font-size: 8rpx;
|
|
-
|
|
|
|
|
|
+
|
|
height: 20rpx;
|
|
height: 20rpx;
|
|
line-height: 20rpx;
|
|
line-height: 20rpx;
|
|
text-align: center;
|
|
text-align: center;
|