|
|
@@ -1,29 +1,33 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <template v-if="quizDetail.state === QuizState.closed">
|
|
|
- <template v-if="!isEmpty(result.score) && !isEmpty(result.submitAt)">
|
|
|
- <div class="quiz-info-standout">测试得分:{{result.score}} 分</div>
|
|
|
- <div class="quiz-info-standout">最后提交时间:{{momentFromNow(result.submitAt)}}</div>
|
|
|
+ <div class="info">
|
|
|
+ <template v-if="quizDetail.state === QuizState.closed">
|
|
|
+ <template v-if="!isEmpty(score) || !isEmpty(submitAt)">
|
|
|
+ <div class="quiz-info-standout">测试得分:{{score}} 分</div>
|
|
|
+ <div class="quiz-info-standout">最后提交时间:{{momentFromNow(submitAt)}}</div>
|
|
|
+ </template>
|
|
|
</template>
|
|
|
- <template v-else>
|
|
|
- <div class="no-content-warning">您未提交过答案</div>
|
|
|
- </template>
|
|
|
- </template>
|
|
|
- <div class="quiz-info-standout">测试时间:{{ QuizTypeNaming[quizDetail.type] }}</div>
|
|
|
- <div class="quiz-info-standout">测试状态:{{ QuizStateNaming[quizDetail.state] }}</div>
|
|
|
- <div class="quiz-info">所属课件:{{ quizDetail.slideName }}</div>
|
|
|
- <div class="quiz-info">提交次数限制:{{ quizDetail.maxSubmitTime }}</div>
|
|
|
- <div class="quiz-info">发布时间:{{ momentFromNow(quizDetail.createAt) }}</div>
|
|
|
+ <div class="quiz-info-standout">测试时间:{{ QuizTypeNaming[quizDetail.type] }}</div>
|
|
|
+ <div class="quiz-info-standout">测试状态:{{ QuizStateNaming[quizDetail.state] }}</div>
|
|
|
+ <div class="quiz-info">所属课件:{{ quizDetail.slideName }}</div>
|
|
|
+ <div class="quiz-info">提交次数限制:{{ quizDetail.maxSubmitTime }}</div>
|
|
|
+ <div class="quiz-info">发布时间:{{ momentFromNow(quizDetail.createAt) }}</div>
|
|
|
+ </div>
|
|
|
<div v-if="questions===null" class="no-content-warning">加载中...</div>
|
|
|
- <div v-else class="mt-32 mb-32" :key="item.id" v-for="(item, index) in questions">
|
|
|
+ <div v-else class="mt-32 mb-32" :key="question.id" v-for="(question, index) in questions">
|
|
|
<div class="index">题号:{{ index + 1 }}
|
|
|
- <c-icon v-if="!isEmpty(answers[item.id])" bold :size="20" :left="16" :right="12"
|
|
|
- :theme="item.answer.match(answers[item.id]) ? 'green' : 'red'">
|
|
|
- {{ item.answer.match(answers[item.id]) ? 'check' : 'close' }}
|
|
|
- </c-icon>
|
|
|
- 你的回答:{{answers[item.id]}}
|
|
|
+ <template v-if="answers">
|
|
|
+ <c-icon v-if="!isEmpty(answers[question.id])" bold :size="20" :left="16"
|
|
|
+ :right="12"
|
|
|
+ :theme="question.answer.match(answers[question.id]) ? 'green' : 'red'">
|
|
|
+ {{ question.answer.match(answers[question.id]) ? 'check' : 'close' }}
|
|
|
+ </c-icon>
|
|
|
+ <div v-if="answers[question.id]">
|
|
|
+ {{answers[question.id]}}
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</div>
|
|
|
- <question-detail-factory :question="item"/>
|
|
|
+ <question-detail-factory :question="question"/>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
|
@@ -34,11 +38,10 @@ import QuestionKind from '@/server/enums/question-kind'
|
|
|
import { QuizStateNaming, QuizState } from '@/server/enums/quiz-state'
|
|
|
import QuestionDetailFactory from '@/views/quiz/components/QuestionDetailFactory'
|
|
|
import { isEmpty } from '@/utils/types'
|
|
|
-import CIcon from '@/components/Basic/CIcon'
|
|
|
import { QuizTypeNaming } from '@/server/enums/quiz-type'
|
|
|
import momentFromNow from '@/utils/moment-from-now'
|
|
|
import { getQuestionsOfQuiz } from '@/server/question'
|
|
|
-import { getOneQuizStudentAnswer } from '@/server/quiz'
|
|
|
+import CIcon from '@/components/Basic/CIcon'
|
|
|
|
|
|
export default {
|
|
|
components: { CIcon, QuestionDetailFactory },
|
|
|
@@ -46,14 +49,14 @@ export default {
|
|
|
quizDetail: {
|
|
|
type: Object,
|
|
|
default: createDefaultQuiz
|
|
|
- }
|
|
|
+ },
|
|
|
+ score: [Number, String],
|
|
|
+ submitAt: String,
|
|
|
+ answers: [Object, Array]
|
|
|
},
|
|
|
data () {
|
|
|
return {
|
|
|
questions: null,
|
|
|
- answers: {},
|
|
|
- result: {},
|
|
|
-
|
|
|
QuizTypeNaming,
|
|
|
QuestionKind,
|
|
|
QuizState,
|
|
|
@@ -73,10 +76,6 @@ export default {
|
|
|
getQuestionsOfQuiz({ quizId }).then(res => {
|
|
|
this.questions = res
|
|
|
}).catch(err => { this.$setErrorMessage(err.response.data.msg) })
|
|
|
- getOneQuizStudentAnswer({ quizId }).then(res => {
|
|
|
- this.answers = res ? res.answers ? res.answers : {} : {}
|
|
|
- this.result = res || {}
|
|
|
- }).catch(err => { this.$setErrorMessage(err.response.data.msg) })
|
|
|
},
|
|
|
methods: {
|
|
|
isEmpty,
|
|
|
@@ -97,6 +96,12 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+.info {
|
|
|
+ background: #f7f7f7;
|
|
|
+ padding: 8px;
|
|
|
+ margin: 0 -8px;
|
|
|
+}
|
|
|
+
|
|
|
.index {
|
|
|
display: flex;
|
|
|
align-items: center;
|