2020-07-16 14:12:31 +08:00

128 lines
4.6 KiB
Vue

<template>
<div v-loading="qLoading" style="line-height:1.8">
<div v-if="qType==1||qType==2||qType==3||qType==4||qType==5">
<div v-if="qType==1" >
<div class="q-title" v-html="question.title"/>
<div class="q-content">
<el-radio-group v-model="answer.content">
<el-radio v-for="item in question.items" :key="item.prefix" :label="item.prefix" >
<span class="question-prefix">{{item.prefix}}.</span>
<span v-html="item.content" class="q-item-span-content"></span>
</el-radio>
</el-radio-group>
</div>
</div>
<div v-else-if="qType==2" >
<div class="q-title" v-html="question.title"/>
<div class="q-content">
<el-checkbox-group v-model="answer.contentArray" >
<el-checkbox v-for="item in question.items" :label="item.prefix" :key="item.prefix" >
<span class="question-prefix">{{item.prefix}}.</span>
<span v-html="item.content" class="q-item-span-content"></span>
</el-checkbox>
</el-checkbox-group>
</div>
</div>
<div v-else-if="qType==3" >
<div class="q-title" v-html="question.title" style="display: inline;margin-right: 10px"/>
<span style="padding-right: 10px;">(</span>
<el-radio-group v-model="answer.content">
<el-radio v-for="item in question.items" :key="item.prefix" :label="item.prefix">
<span v-html="item.content" class="q-item-span-content"></span>
</el-radio>
</el-radio-group>
<span style="padding-left: 10px;">)</span>
</div>
<div v-else-if="qType==4" >
<div class="q-title" v-html="question.title"/>
<div v-if="answer.contentArray!==null">
<el-form-item :label="item.prefix" :key="item.prefix" v-for="item in question.items" label-width="50px" style="margin-top: 10px;margin-bottom: 10px;">
<el-input v-model="answer.contentArray[item.prefix-1]" />
</el-form-item>
</div>
</div>
<div v-else-if="qType==5">
<div class="q-title" v-html="question.title"/>
<div>
<el-input v-model="answer.content" type="textarea" rows="5" ></el-input>
</div>
</div>
<div class="question-answer-show-item" style="margin-top: 15px">
<span class="question-show-item">结果:</span>
<el-tag :type="doRightTagFormatter(answer.doRight)">
{{ doRightTextFormatter(answer.doRight) }}
</el-tag>
</div>
<div class="question-answer-show-item">
<span class="question-show-item">分数:</span>
<span>{{question.score}}</span>
</div>
<div class="question-answer-show-item">
<span class="question-show-item">难度:</span>
<el-rate disabled v-model="question.difficult" class="question-show-item"></el-rate>
</div>
<br/>
<div class="question-answer-show-item" style="line-height: 1.8">
<span class="question-show-item">解析:</span>
<span v-html="question.analyze" class="q-item-span-content" />
</div>
<div class="question-answer-show-item">
<span class="question-show-item">正确答案:</span>
<span v-if="qType==1||qType==2 ||qType==5" v-html="question.correct" class="q-item-span-content"/>
<span v-if="qType==3" v-html="trueFalseFormatter(question)" class="q-item-span-content"/>
<span v-if="qType==4">{{question.correctArray}}</span>
</div>
</div>
<div v-else>
</div>
</div>
</template>
<script>
import { mapState, mapGetters } from 'vuex'
export default {
name: 'QuestionShow',
props: {
question: {
type: Object,
default: function () {
return {}
}
},
answer: {
type: Object,
default: function () {
return { id: null, content: '', contentArray: [], doRight: false }
}
},
qLoading: {
type: Boolean,
default: false
},
qType: {
type: Number,
default: 0
}
},
methods: {
trueFalseFormatter (question) {
return question.items.filter(d => d.prefix === question.correct)[0].content
},
doRightTagFormatter (status) {
return this.enumFormat(this.doRightTag, status)
},
doRightTextFormatter (status) {
return this.enumFormat(this.doRightEnum, status)
}
},
computed: {
...mapGetters('enumItem', ['enumFormat']),
...mapState('enumItem', {
doRightEnum: state => state.exam.question.answer.doRightEnum,
doRightTag: state => state.exam.question.answer.doRightTag
})
}
}
</script>