提交 84c2bed1 authored 作者: 王鹏飞's avatar 王鹏飞

bug fixes

上级 9d49811d
...@@ -8,61 +8,69 @@ ...@@ -8,61 +8,69 @@
:hasCollect="false" :hasCollect="false"
:hasMark="false" :hasMark="false"
:data="data" :data="data"
:disabled="false"
@submit="submitExam"
@back="handleBack" @back="handleBack"
@page-change="handlePageChange"
ref="exam" ref="exam"
v-if="Object.keys(data).length" v-if="Object.keys(data).length"
> >
<template v-slot:question-item="{ item, data }"> <template v-slot:question-item="{ item, data }">
<div class="review-box"> <div class="review-box">
<div class="review-btn"> <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>
<div ref='reviewCard' :scorenum="item.score" :questionid="item.id" :itemid="data.question_item_id"></div> <div class="review-card" v-if="item.comment_visible || item.checked_flag">
<div class="review-card" v-if="visible">
<el-card class="box-card"> <el-card class="box-card">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>本题{{ item.score }}</span> <span>本题{{ item.score }}</span>
<div class="score"> <div class="score">
<span>学生得分:</span> <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> </div>
<div class="textarea"> <div class="textarea">
<el-input <el-input
:disabled="isReviewFlag" :disabled="item.checked_flag"
type="textarea" type="textarea"
:rows="5" :rows="5"
placeholder="请输入本题点评" placeholder="请输入本题点评"
max="2" max="2"
resize="none" resize="none"
v-model="textarea"> v-model="item.comment"
>
</el-input> </el-input>
</div> </div>
<div class="submit-btn"> <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> </div>
</el-card> </el-card>
</div> </div>
</div> </div>
</template> </template>
<template v-slot:students="{ data }"> <template v-slot:students>
<div class="stu-list"> <div class="stu-list">
<div class="title"> <div class="title">
<span>学生列表</span> <span>学生列表</span>
<el-select @change="change" v-model="selectValue" placeholder="请选择"> <el-select @change="change" v-model="selectValue" placeholder="请选择">
<el-option <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select> </el-select>
</div> </div>
<ul> <ul>
<li @click="selectStudent(item)" :class="item.sheet_id === (sheetIds || $route.query.sheet_id) ? 'active' : ''" v-for="(item, index) in studentList" :key="index">{{ item.name }}</li> <li
:class="item.sheet_id === (sheetIds || $route.query.sheet_id) ? 'active' : ''"
v-for="(item, index) in studentList"
:key="index"
@click="selectStudent(item)"
>
{{ item.name }}
</li>
</ul> </ul>
</div> </div>
</template> </template>
...@@ -76,29 +84,14 @@ export default { ...@@ -76,29 +84,14 @@ export default {
components: { ExamCard }, components: { ExamCard },
data() { data() {
return { return {
scoreNum: '', data: {},
textarea: '',
data: {
cacheAnswerTime: null // 缓存题计时器
},
isReviewFlag: false,
visible: false,
selectValue: 0, selectValue: 0,
sheetIds: 0, sheetIds: '',
studentList: [], studentList: [],
options: [ options: [
{ { value: 0, label: '全部' },
value: 0, { value: 1, label: '未批阅' },
label: '全部' { value: 2, label: '已批阅' }
},
{
value: 1,
label: '未批阅'
},
{
value: 2,
label: '已批阅'
}
] ]
} }
}, },
...@@ -113,17 +106,12 @@ export default { ...@@ -113,17 +106,12 @@ export default {
}, },
mounted() { mounted() {
this.studentList = JSON.parse(window.localStorage.testStudentsList) this.studentList = JSON.parse(window.localStorage.testStudentsList)
setTimeout(() => {
this.handlePageChange()
}, 1000)
},
beforeDestroy() {
clearInterval(this.cacheAnswerTime) // 停止缓存
}, },
methods: { methods: {
selectStudent(item) { selectStudent(item) {
this.sheetIds = item.sheet_id this.sheetIds = item.sheet_id
this.getTopic(item.sheet_id) this.getTopic(item.sheet_id)
this.$refs.exam.reset()
}, },
change() { change() {
this.studentList = JSON.parse(window.localStorage.testStudentsList) this.studentList = JSON.parse(window.localStorage.testStudentsList)
...@@ -142,25 +130,26 @@ export default { ...@@ -142,25 +130,26 @@ export default {
this.$router.push('/teacher/test') this.$router.push('/teacher/test')
}, },
// 提交批阅 // 提交批阅
submitExam() { submitComment(item, data) {
const refReview = this.$refs.reviewCard if (item.comment === '') {
if (!refReview) { this.$message('请输入点评内容')
return false return false
} }
if (this.textarea === '' || this.scoreNum === '') { if (item.user_score === '') {
this.$message('请填写') this.$message('请输入分数')
return false return false
} }
if (parseInt(this.scoreNum) > parseInt(refReview.getAttribute('scorenum'))) { if (parseInt(item.user_score) > item.score) {
this.$message('请填写正确分值') this.$message('请填写正确分值')
return false return false
} }
const param = { const param = {
type: 'chapter',
sheet_id: this.$route.query.sheet_id, sheet_id: this.$route.query.sheet_id,
question_item_id: refReview.getAttribute('itemid'), question_item_id: data.question_item_id,
question_id: refReview.getAttribute('questionid'), question_id: item.id,
comment: this.textarea, comment: item.comment,
score: this.scoreNum score: item.user_score
} }
this.$confirm('确认评价后将不得再次修改', '请确认', { this.$confirm('确认评价后将不得再次修改', '请确认', {
confirmButtonText: '点评', confirmButtonText: '点评',
...@@ -168,79 +157,49 @@ export default { ...@@ -168,79 +157,49 @@ export default {
type: 'warning' type: 'warning'
}).then(() => { }).then(() => {
api.submitReviewDetails(param).then(response => { api.submitReviewDetails(param).then(response => {
this.isReviewFlag = true item.checked_flag = true
this.$message('批阅成功') this.$message('批阅成功')
}) })
}).catch(() => {
}) })
},
handlePageChange() {
setTimeout(() => {
const refReview = this.$refs.reviewCard
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)
} }
} }
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.review-btn{ .review-btn {
display: flex; display: flex;
justify-content: right; justify-content: right;
padding: 20px 0; padding: 20px 0;
} }
.score{ .score {
float: right; float: right;
display: flex; display: flex;
input{ align-items: center;
width: 90px;
height: 100%;
outline: none;
}
} }
.submit-btn{ .submit-btn {
display: flex; display: flex;
justify-content: center; justify-content: center;
padding-top: 20px; padding-top: 20px;
} }
.review-box{
// max-width: 500px; .stu-list {
} .title {
.stu-list{
.title{
// text-align: center; // text-align: center;
margin-bottom: 10px; margin-bottom: 10px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
::v-deep{ ::v-deep {
.el-select{ .el-select {
width: 120px; width: 120px;
} }
} }
} }
ul{ ul {
padding-bottom: 80px; padding-bottom: 80px;
li{ li {
padding: 3px 0; padding: 3px 0;
&.active{ &.active {
color: #c01540; color: #c01540;
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论