提交 3e3a5712 authored 作者: 王鹏飞's avatar 王鹏飞

bug fixes

上级 b0b6c0f4
......@@ -244,7 +244,7 @@ export default {
}
const isSubmited = ['1', '2'].includes(data.status)
this.disabled = isSubmited
this.hasResult = isSubmited
this.hasResult = isSubmited && this.status !== 3
this.genQuestions(data)
this.currentGroupCount = this.questionGroups.length
if (this.$route.query.id) {
......@@ -284,6 +284,7 @@ export default {
if (bigQuestionScore) {
// 小题分数
scoreItem = bigQuestionScore[item.id] || {}
scoreItem.user_score = scoreItem.score
if (userAnswers.length) {
scoreItem.answer = scoreItem.is_right ? 1 : 2
} else {
......@@ -291,7 +292,7 @@ export default {
}
}
}
return { ...scoreItem, ...item, user_answer: userAnswers, sign }
return { ...{ comment_visible: false }, ...scoreItem, ...item, user_answer: userAnswers, sign }
})
result.push(Object.assign({}, question, { question_list: list }))
})
......
<template>
<app-container title="模拟考试">
<ul class="exam-list">
<li v-for="item in examList" :key="item.id" class="exam-item" @click="startExam(item)">
<el-card shadow="hover">
<div class="exam-list">
<template v-for="item in examList">
<el-card shadow="hover" class="exam-item" :key="item.id" @click.native="startExam(item)">
<h3>{{ item.paper_title }}</h3>
<p v-if="[1, 2].includes(item.status)">已完成</p>
<p v-if="[0, 3].includes(item.status)">待完成</p>
<!-- <p>重新考试</p> -->
</el-card>
</li>
</ul>
</template>
</div>
<!-- <template #footer>
<div class="app-container-ft"><el-button type="primary" @click="getExamStatus">开始考试</el-button></div>
</template> -->
......@@ -69,8 +69,11 @@ export default {
}
</script>
<style lang="scss" scoped>
.exam-list {
display: flex;
flex-wrap: wrap;
}
.exam-item {
display: inline-block;
width: 300px;
margin: 0 20px 20px 0;
text-align: center;
......
......@@ -8,42 +8,47 @@
:hasCollect="false"
:hasMark="false"
:data="data"
:disabled="false"
@submit="submitExam"
@back="handleBack"
@page-change="handlePageChange"
ref="exam"
v-if="Object.keys(data).length"
>
<template v-slot:question-item="{ item, data }">
<div ref="reviewCards" :scorenum="item.score" :questionid="item.id" :itemid="data.question_item_id"></div>
<div class="review-box">
<div class="review-btn">
<el-button type="primary" @click="visible = true">点评</el-button>
<el-button type="primary" @click="item.comment_visible = true">点评</el-button>
</div>
<div class="review-card" v-if="visible">
<div class="review-card" v-if="item.comment_visible || item.checked_flag">
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>本题{{ item.score }}</span>
<div class="score">
<span>学生得分:</span>
<input type="number" :disabled="isReviewFlag" v-model="scoreNum" placeholder="请输入分数" />
<el-input
type="number"
:disabled="item.checked_flag"
v-model="item.user_score"
placeholder="请输入分数"
size="mini"
style="width:80px"
></el-input>
</div>
</div>
<div class="textarea">
<el-input
:disabled="isReviewFlag"
:disabled="item.checked_flag"
type="textarea"
:rows="5"
placeholder="请输入本题点评"
max="2"
resize="none"
v-model="textarea"
v-model="item.comment"
>
</el-input>
</div>
<div class="submit-btn">
<el-button type="primary" @click="submitExam" v-if="!isReviewFlag">提交点评</el-button>
<el-button type="primary" @click="submitComment(item, data)" v-if="!item.checked_flag">
提交点评
</el-button>
</div>
</el-card>
</div>
......@@ -79,29 +84,14 @@ export default {
components: { ExamCard },
data() {
return {
scoreNum: '',
textarea: '',
data: {
cacheAnswerTime: null // 缓存题计时器
},
isReviewFlag: false,
visible: false,
data: {},
selectValue: 0,
studentList: [],
sheetIds: 0,
sheetIds: '',
options: [
{
value: 0,
label: '全部'
},
{
value: 1,
label: '未批阅'
},
{
value: 2,
label: '已批阅'
}
{ value: 0, label: '全部' },
{ value: 1, label: '未批阅' },
{ value: 2, label: '已批阅' }
]
}
},
......@@ -116,17 +106,12 @@ export default {
},
mounted() {
this.studentList = JSON.parse(window.localStorage.examStudentsList)
setTimeout(() => {
this.handlePageChange()
}, 1000)
},
beforeDestroy() {
clearInterval(this.cacheAnswerTime) // 停止缓存
},
methods: {
selectStudent(item) {
this.sheetIds = item.sheet_id
this.getTopic(item.sheet_id)
this.$refs.exam.reset()
},
change() {
this.studentList = JSON.parse(window.localStorage.examStudentsList)
......@@ -145,61 +130,36 @@ export default {
this.$router.push('/teacher/exam')
},
// 提交批阅
submitExam() {
const refReview = this.$refs.reviewCards
if (!refReview) {
submitComment(item, data) {
if (item.comment === '') {
this.$message('请输入点评内容')
return false
}
if (this.textarea === '' || this.scoreNum === '') {
this.$message('请填写')
if (item.user_score === '') {
this.$message('请输入分数')
return false
}
if (parseInt(this.scoreNum) > parseInt(refReview.getAttribute('scorenum'))) {
if (parseInt(item.user_score) > item.score) {
this.$message('请填写正确分值')
return false
}
const param = {
sheet_id: this.$route.query.sheet_id,
question_item_id: refReview.getAttribute('itemid'),
question_id: refReview.getAttribute('questionid'),
comment: this.textarea,
score: this.scoreNum
question_item_id: data.question_item_id,
question_id: item.id,
comment: item.comment,
score: item.user_score
}
this.$confirm('确认评价后将不得再次修改', '请确认', {
confirmButtonText: '点评',
cancelButtonText: '取消',
type: 'warning'
})
.then(() => {
api.submitReviewDetails(param).then(response => {
this.isReviewFlag = true
this.$message('批阅成功')
})
}).then(() => {
api.submitReviewDetails(param).then(response => {
item.checked_flag = true
this.$message('批阅成功')
})
.catch(() => {})
},
handlePageChange(index, group, groupList) {
setTimeout(() => {
const refReview = this.$refs.reviewCards
if (!refReview) {
return false
}
const itemId = refReview.getAttribute('itemid')
const questionId = refReview.getAttribute('questionid')
this.visible = false
const isReview = this.data.score_items[itemId][questionId]
if (isReview.checked_flag) {
this.scoreNum = isReview.score
this.textarea = isReview.comment
this.isReviewFlag = true
this.visible = true
} else {
this.scoreNum = ''
this.textarea = ''
this.isReviewFlag = false
this.visible = false
}
}, 500)
})
}
}
}
......@@ -213,20 +173,14 @@ export default {
.score {
float: right;
display: flex;
input {
width: 90px;
height: 100%;
outline: none;
}
align-items: center;
}
.submit-btn {
display: flex;
justify-content: center;
padding-top: 20px;
}
.review-box {
// max-width: 500px;
}
.stu-list {
.title {
// text-align: center;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论