<template>
|
<div>
|
<div class="subject-content">
|
<div class="subject-title">
|
{{ index }}
|
<span class="subject-title-content" v-html="subjectInfo.subjectName" />
|
<span class="subject-title-content titlesss">
|
( 多选题 <span
|
v-if="subjectInfo.score !== undefined && subjectInfo.score !== 0"
|
> {{ subjectInfo.score }}分 </span
|
>)
|
</span>
|
</div>
|
|
<ul class="subject-options" v-for="option in options" :key="option.id">
|
<li class="subject-option">
|
<input
|
class="toggle"
|
type="checkbox"
|
:checked="isChecked(option.optionName)"
|
:id="'option' + option.id"
|
@change="toggleOption($event, option)"
|
/>
|
<label :for="'option' + option.id">
|
<span class="subject-option-prefix"
|
>{{ option.optionName + "." }} </span
|
>
|
<span v-html="option.optionContent" class="subject-option-prefix" />
|
</label>
|
</li>
|
</ul>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
export default {
|
name: "MultipleChoices",
|
data() {
|
return {
|
subjectCount: 0,
|
subjectInfo: {
|
subjectName: "",
|
score: 0,
|
},
|
options: [],
|
userAnswer: [],
|
index: "",
|
};
|
},
|
watch: {},
|
methods: {
|
getAnswer() {
|
return this.userAnswer.join(",");
|
},
|
setAnswer(answer) {
|
// if (isNotEmpty(answer)) {
|
this.userAnswer = answer.split(",");
|
// }
|
},
|
setSubjectInfo(subject, subjectCount, index) {
|
this.subjectCount = subjectCount;
|
this.subjectInfo = subject;
|
if (subject.hasOwnProperty("examSubjectOptions")) {
|
this.options = subject.examSubjectOptions;
|
}
|
if (subject.hasOwnProperty("answer")) {
|
this.setAnswer(subject.answer);
|
}
|
this.index = index + ".";
|
},
|
getSubjectInfo() {
|
this.subjectInfo.options = this.options;
|
return this.subjectInfo;
|
},
|
// 选中选项
|
toggleOption($event, option) {
|
if ($event.target.checked) {
|
if (!this.userAnswer.includes(option.optionName)) {
|
this.userAnswer.push(option.optionName);
|
}
|
} else {
|
this.userAnswer.splice(
|
this.userAnswer.findIndex((item) => item === option.optionName),
|
1
|
);
|
}
|
},
|
isChecked(optionName) {
|
return this.userAnswer.includes(optionName);
|
},
|
},
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
@import "../../../assets/css/subject.scss";
|
.subject-options > li label {
|
line-height: 36px !important;
|
}
|
</style>
|