<ul class="detail">
<p style="font-size:17px;font-weight:200;">试卷:</p>
<li v-for="(item,index) in list" :key="item">
<div style="height:40px;">
<p style="width:80%;display:inline-block;">
<span v-text="index+1+'.'">1.</span>
<span v-text="item.question" style="margin-right:10px;">题目1</span>
<span v-text="'[分值:'+item.bankScore+']'" style="color:#999999;"></span>
</p>
<div
v-if="item.type===5||item.type===4"
style="float:right;margin-top:5px;margin-right:10px;"
>
<el-select
v-model="item.score"
placeholder="分数"
style="width:100px;"
@change="getTotalScore ()"
>
<el-option
v-for="item in selectList[index]"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</div>
</div>
<p style="line-height:25px;">
您的回答:
<span
v-text="optionAnswer(item,0)"
style="padding-right:10px;"
v-if="item.type===1||item.type===2"
>答案</span>
<span
v-text="judgeText(item,item.answer)"
style="padding-right:10px;"
v-else-if="item.type===3"
>答案</span>
<span v-text="item.answer" style="padding-right:10px;" v-else>答案</span>
<span v-if="item.type!==4&&item.type!==5">
<span v-if="item.answer===item.correctAnswer">
<i class="el-icon-check right"></i>
<span v-text="'(得分:'+item.bankScore+')'" style="color:#17b3a4;margin-left:5px;"></span>
</span>
<span v-else>
<i class="el-icon-close wrong"></i>
<span style="color:red;margin-left:5px;">(得分:0)</span>
</span>
</span>
<span v-else>
<span v-text="'(得分:'+item.score+')'" style="color:#17b3a4;margin-left:5px;"></span>
</span>
</p>
<p v-if="item.type!==5&&!(item.answer===item.correctAnswer)">
<span class="right" style="font-size:16px;">正确答案为:</span>
<span v-if="item.type===3" v-text="judgeText(item,item.correctAnswer)"></span>
<span v-else-if="item.type===4" v-text="item.correctAnswer"></span>
<span v-else-if="item.type===1||item.type===2" v-text="optionAnswer(item,1)"></span>
</p>
</li>
</ul>
循环题目列表分数,累加得出总分
// 获取总得分
getTotalScore () {
this.totalScore = 0
this.list.forEach((element, index) => {
if (element.type !== 5 && element.answer === element.correctAnswer) {
this.totalScore += element.bankScore
} else {
this.totalScore += element.score
}
})
}
根据单选题/多选题选项返回结果,flag=0:个人答案 flag=1:正确答案
// 返回单选多选题的显示格式
optionAnswer (obj, flag) {
let options = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N']
let str = ''
let result = ''
if (flag === 0) {
str = obj.answer
} else {
str = obj.correctAnswer
}
if (str.indexOf(',') !== 1) {
for (let index = 0; index < options.length; index++) {
if (str === options[index]) {
result = options[index] + '、' + obj.optionalList[index].option
}
}
} else {
let listIndex = str.split(',')
for (let index1 = 0; index1 < listIndex.length; index1++) {
for (let index2 = 0; index2 < options.length; index2++) {
if (listIndex[index1] === options[index2]) {
result +=
options[index2] + '、' + obj.optionalList[index2].option + ';'
}
}
}
}
return result
}
返回判断题显示格式
// 返回判断显示格式
judgeText (item, param) {
let result = ''
item.optionalList.forEach((element, index) => {
if (element.optionNo === param) {
result = param + ':' + element.option
}
})
return result
}
设置填空题、简答题各题评分分数范围
// 题目评分分数列表
setSelectList () {
this.selectList = Array(this.list.length).fill('')
this.list.forEach((element, index) => {
this.selectList[index] = Array(element.bankScore)
this.selectList[index] = []
for (let i = 0; i <= element.bankScore; i++) {
let obj = {}
obj.label = i
obj.value = i
this.selectList[index].push(obj)
}
})
}