|
|
@@ -33,7 +33,7 @@
|
|
|
<el-radio :label="3">C</el-radio>
|
|
|
<el-radio :label="4">D</el-radio>
|
|
|
</el-radio-group>
|
|
|
- <el-row v-if="status !== 2">
|
|
|
+ <el-row v-if="paperInfo.viewType !== 2">
|
|
|
<el-divider />
|
|
|
<el-row>
|
|
|
<span style="color: red">正确答案</span>
|
|
|
@@ -41,6 +41,19 @@
|
|
|
<el-row v-for="(item2, index2) in userAnswerMap[item1.questionId].correctAnswer" :key="index2">
|
|
|
{{ item2 }}
|
|
|
</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType >= 3">
|
|
|
+ <el-divider />
|
|
|
+ <el-row>
|
|
|
+ <el-row style="color: red">批改试卷</el-row>
|
|
|
+ <el-row>本题分数: {{ userAnswerMap[item1.questionId].correctScore }}</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType === 3">
|
|
|
+ 批改分数: <el-input-number v-model="userAnswerMap[item1.questionId].submitScore" :min="0" :max="20" style="margin-left: 5px" />
|
|
|
+ </el-row>
|
|
|
+ <el-row v-else>
|
|
|
+ 我的得分: {{ userAnswerMap[item1.questionId].submitScore }}
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
@@ -67,7 +80,7 @@
|
|
|
<el-checkbox label="3">C</el-checkbox>
|
|
|
<el-checkbox label="4">D</el-checkbox>
|
|
|
</el-checkbox-group>
|
|
|
- <el-row v-if="status !== 2">
|
|
|
+ <el-row v-if="paperInfo.viewType !== 2">
|
|
|
<el-divider />
|
|
|
<el-row>
|
|
|
<span style="color: red">正确答案</span>
|
|
|
@@ -75,6 +88,19 @@
|
|
|
<el-row v-for="(item2, index2) in userAnswerMap[item1.questionId].correctAnswer" :key="index2">
|
|
|
{{ item2 }}
|
|
|
</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType >= 3">
|
|
|
+ <el-divider />
|
|
|
+ <el-row>
|
|
|
+ <el-row style="color: red">批改试卷</el-row>
|
|
|
+ <el-row>本题分数: {{ userAnswerMap[item1.questionId].correctScore }}</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType === 3">
|
|
|
+ 批改分数: <el-input-number v-model="userAnswerMap[item1.questionId].submitScore" :min="0" :max="20" style="margin-left: 5px" />
|
|
|
+ </el-row>
|
|
|
+ <el-row v-else>
|
|
|
+ 我的得分: {{ userAnswerMap[item1.questionId].submitScore }}
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
@@ -96,7 +122,7 @@
|
|
|
<el-radio :label="1">正确</el-radio>
|
|
|
<el-radio :label="2">错误</el-radio>
|
|
|
</el-radio-group>
|
|
|
- <el-row v-if="status !== 2">
|
|
|
+ <el-row v-if="paperInfo.viewType !== 2">
|
|
|
<el-divider />
|
|
|
<el-row>
|
|
|
<span style="color: red">正确答案</span>
|
|
|
@@ -104,6 +130,19 @@
|
|
|
<el-row>
|
|
|
{{ userAnswerMap[item1.questionId].correctAnswer[0] }}
|
|
|
</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType >= 3">
|
|
|
+ <el-divider />
|
|
|
+ <el-row>
|
|
|
+ <el-row style="color: red">批改试卷</el-row>
|
|
|
+ <el-row>本题分数: {{ userAnswerMap[item1.questionId].correctScore }}</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType === 3">
|
|
|
+ 批改分数: <el-input-number v-model="userAnswerMap[item1.questionId].submitScore" :min="0" :max="20" style="margin-left: 5px" />
|
|
|
+ </el-row>
|
|
|
+ <el-row v-else>
|
|
|
+ 我的得分: {{ userAnswerMap[item1.questionId].submitScore }}
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
@@ -128,7 +167,7 @@
|
|
|
}"
|
|
|
/>
|
|
|
</div>
|
|
|
- <el-row v-if="status !== 2">
|
|
|
+ <el-row v-if="paperInfo.viewType !== 2">
|
|
|
<el-divider />
|
|
|
<el-row>
|
|
|
<span style="color: red">正确答案</span>
|
|
|
@@ -136,6 +175,19 @@
|
|
|
<el-row>
|
|
|
{{ userAnswerMap[item1.questionId].correctAnswer[0] }}
|
|
|
</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType >= 3">
|
|
|
+ <el-divider />
|
|
|
+ <el-row>
|
|
|
+ <el-row style="color: red">批改试卷</el-row>
|
|
|
+ <el-row>本题分数: {{ userAnswerMap[item1.questionId].correctScore }}</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType === 3">
|
|
|
+ 批改分数: <el-input-number v-model="userAnswerMap[item1.questionId].submitScore" :min="0" :max="20" style="margin-left: 5px" />
|
|
|
+ </el-row>
|
|
|
+ <el-row v-else>
|
|
|
+ 我的得分: {{ userAnswerMap[item1.questionId].submitScore }}
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
@@ -154,7 +206,7 @@
|
|
|
:init="init"
|
|
|
style="width: 50%"
|
|
|
/>
|
|
|
- <el-row v-if="status !== 2">
|
|
|
+ <el-row v-if="paperInfo.viewType !== 2">
|
|
|
<el-divider />
|
|
|
<el-row>
|
|
|
<span style="color: red">正确答案</span>
|
|
|
@@ -162,6 +214,19 @@
|
|
|
<el-row>
|
|
|
{{ userAnswerMap[item1.questionId].correctAnswer[0] }}
|
|
|
</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType >= 3">
|
|
|
+ <el-divider />
|
|
|
+ <el-row>
|
|
|
+ <el-row style="color: red">批改试卷</el-row>
|
|
|
+ <el-row>本题分数: {{ userAnswerMap[item1.questionId].correctScore }}</el-row>
|
|
|
+ <el-row v-if="paperInfo.viewType === 3">
|
|
|
+ 批改分数: <el-input-number v-model="userAnswerMap[item1.questionId].submitScore" :min="0" :max="20" style="margin-left: 5px" />
|
|
|
+ </el-row>
|
|
|
+ <el-row v-else>
|
|
|
+ 我的得分: {{ userAnswerMap[item1.questionId].submitScore }}
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
+ </el-row>
|
|
|
</el-row>
|
|
|
</div>
|
|
|
</el-card>
|
|
|
@@ -195,9 +260,26 @@
|
|
|
</el-main>
|
|
|
<el-footer height="220">
|
|
|
<el-row style="margin-top: 10px">
|
|
|
- <el-button type="primary" icon="el-icon-upload" style="float: right; padding: 3px 0" plain @click="onSubmitPaper">
|
|
|
+ <el-button
|
|
|
+ v-if="paperInfo.viewType === 2"
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-upload"
|
|
|
+ style="float: right; padding: 3px 0"
|
|
|
+ plain
|
|
|
+ @click="onSubmitPaper"
|
|
|
+ >
|
|
|
提交试卷
|
|
|
</el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="paperInfo.viewType === 3"
|
|
|
+ type="primary"
|
|
|
+ icon="el-icon-upload"
|
|
|
+ style="float: right; padding: 3px 0"
|
|
|
+ plain
|
|
|
+ @click="onSubmitMarkPaper"
|
|
|
+ >
|
|
|
+ 提交批改结果
|
|
|
+ </el-button>
|
|
|
</el-row>
|
|
|
</el-footer>
|
|
|
</el-container>
|
|
|
@@ -213,7 +295,7 @@ import 'tinymce/themes/silver/theme.min.js'
|
|
|
import 'tinymce/icons/default/icons'
|
|
|
import Editor from '@tinymce/tinymce-vue'
|
|
|
|
|
|
-import { cacheUserAnswer, getPaper, submitExam } from '@/api/exam'
|
|
|
+import { cacheUserAnswer, getPaper, submitExam, submitExamMark } from '@/api/exam'
|
|
|
|
|
|
export default {
|
|
|
name: 'ExamQuestionCard',
|
|
|
@@ -272,10 +354,10 @@ export default {
|
|
|
}
|
|
|
],
|
|
|
userAnswerMap: null,
|
|
|
- paperId: 0,
|
|
|
- status: 0,
|
|
|
paperInfo: {
|
|
|
+ paperId: 0,
|
|
|
name: '',
|
|
|
+ viewType: 0,
|
|
|
status: 0,
|
|
|
duration: 0,
|
|
|
totalScore: 0
|
|
|
@@ -287,15 +369,15 @@ export default {
|
|
|
},
|
|
|
created() {
|
|
|
document.title = '试卷详情'
|
|
|
- this.paperId = this.$route.params.paperId
|
|
|
- const statusStr = this.$route.query.status
|
|
|
- this.status = parseInt(statusStr)
|
|
|
- if (this.status === 1) {
|
|
|
+ this.paperInfo.paperId = this.$route.params.paperId
|
|
|
+ const viewTypeStr = this.$route.query.viewType
|
|
|
+ this.paperInfo.viewType = parseInt(viewTypeStr)
|
|
|
+ if (this.paperInfo.viewType === 1) {
|
|
|
document.title = '试卷预览'
|
|
|
- } else if (this.status === 2) {
|
|
|
- } else if (this.status === 3) {
|
|
|
+ } else if (this.paperInfo.viewType === 2) {
|
|
|
+ } else if (this.paperInfo.viewType === 3) {
|
|
|
document.title = '试卷批改'
|
|
|
- } else if (this.status === 4) {
|
|
|
+ } else if (this.paperInfo.viewType === 4) {
|
|
|
document.title = '试卷结果'
|
|
|
}
|
|
|
|
|
|
@@ -313,7 +395,7 @@ export default {
|
|
|
})
|
|
|
},
|
|
|
getPaperDetail() {
|
|
|
- getPaper(this.paperId, this.status).then((resp) => {
|
|
|
+ getPaper(this.paperInfo.paperId, this.paperInfo.viewType).then((resp) => {
|
|
|
if (resp.code === 0) {
|
|
|
const respData = resp.data
|
|
|
this.paperInfo.name = respData.name
|
|
|
@@ -351,8 +433,8 @@ export default {
|
|
|
}
|
|
|
|
|
|
var userResult = {}
|
|
|
- userResult.paperId = this.paperId
|
|
|
- userResult.userAnswers = userAnswers
|
|
|
+ userResult.paperId = this.paperInfo.paperId
|
|
|
+ userResult.submitUserAnswers = userAnswers
|
|
|
submitExam(userResult).then(resp => {
|
|
|
if (resp.code === 0) {
|
|
|
this.$notify({
|
|
|
@@ -385,15 +467,12 @@ export default {
|
|
|
this.cacheAnswer()
|
|
|
},
|
|
|
onCheckboxChange(val, item) {
|
|
|
- // this.$message.info('change event: ' + val + ' -> ' + item.questionId)
|
|
|
this.cacheAnswer()
|
|
|
},
|
|
|
onInputBlur(val, item) {
|
|
|
- // this.$message.info('blur event: ' + val + ' -> ' + item.questionId)
|
|
|
this.cacheAnswer()
|
|
|
},
|
|
|
onEditorBlur(val) {
|
|
|
- // this.$message.info('editor blur -> ' + this.editorContent)
|
|
|
this.cacheAnswer()
|
|
|
},
|
|
|
cacheAnswer() {
|
|
|
@@ -406,8 +485,8 @@ export default {
|
|
|
}
|
|
|
|
|
|
var userResult = {}
|
|
|
- userResult.paperId = this.paperId
|
|
|
- userResult.userAnswers = userAnswers
|
|
|
+ userResult.paperId = this.paperInfo.paperId
|
|
|
+ userResult.submitUserAnswers = userAnswers
|
|
|
cacheUserAnswer(userResult).then(resp => {
|
|
|
if (resp.code !== 0) {
|
|
|
console.log(resp.msg)
|
|
|
@@ -415,6 +494,50 @@ export default {
|
|
|
}).catch((e) => {
|
|
|
console.log(e)
|
|
|
})
|
|
|
+ },
|
|
|
+ onSubmitMarkPaper() {
|
|
|
+ this.$confirm('当前试题暂未做完, 是否继续提交o(╥﹏╥)o ?', 'Tips', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ }).then(() => {
|
|
|
+ var userAnswers = []
|
|
|
+ for (const key in this.userAnswerMap) {
|
|
|
+ const userAnswer = {}
|
|
|
+ userAnswer.questionId = key
|
|
|
+ userAnswer.answers = this.userAnswerMap[key]
|
|
|
+ userAnswers.push(this.userAnswerMap[key])
|
|
|
+ }
|
|
|
+
|
|
|
+ var userResult = {}
|
|
|
+ userResult.paperId = this.paperInfo.paperId
|
|
|
+ userResult.submitUserAnswers = userAnswers
|
|
|
+ submitExamMark(userResult).then(resp => {
|
|
|
+ if (resp.code === 0) {
|
|
|
+ this.$notify({
|
|
|
+ title: 'Tips',
|
|
|
+ message: '阅卷结果已提交',
|
|
|
+ type: 'success',
|
|
|
+ duration: 2000
|
|
|
+ })
|
|
|
+ this.$router.push('/exam/mark')
|
|
|
+ }
|
|
|
+ }).catch((error) => {
|
|
|
+ this.$notify({
|
|
|
+ title: 'Tips',
|
|
|
+ message: error.message,
|
|
|
+ type: 'error',
|
|
|
+ duration: 2000
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }).catch(() => {
|
|
|
+ this.$notify({
|
|
|
+ title: 'Tips',
|
|
|
+ message: '提交已取消',
|
|
|
+ type: 'info',
|
|
|
+ duration: 2000
|
|
|
+ })
|
|
|
+ })
|
|
|
}
|
|
|
}
|
|
|
}
|