提交 e0fa7dab authored 作者: lihuihui's avatar lihuihui
......@@ -8,61 +8,69 @@
: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 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 ref='reviewCard' :scorenum="item.score" :questionid="item.id" :itemid="data.question_item_id"></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>
</div>
</template>
<template v-slot:students="{ data }">
<template v-slot:students>
<div class="stu-list">
<div class="title">
<span>学生列表</span>
<el-select @change="change" v-model="selectValue" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option>
</el-select>
</div>
<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>
</div>
</template>
......@@ -76,29 +84,14 @@ export default {
components: { ExamCard },
data() {
return {
scoreNum: '',
textarea: '',
data: {
cacheAnswerTime: null // 缓存题计时器
},
isReviewFlag: false,
visible: false,
data: {},
selectValue: 0,
sheetIds: 0,
sheetIds: '',
studentList: [],
options: [
{
value: 0,
label: '全部'
},
{
value: 1,
label: '未批阅'
},
{
value: 2,
label: '已批阅'
}
{ value: 0, label: '全部' },
{ value: 1, label: '未批阅' },
{ value: 2, label: '已批阅' }
]
}
},
......@@ -113,17 +106,12 @@ export default {
},
mounted() {
this.studentList = JSON.parse(window.localStorage.testStudentsList)
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.testStudentsList)
......@@ -142,25 +130,26 @@ export default {
this.$router.push('/teacher/test')
},
// 提交批阅
submitExam() {
const refReview = this.$refs.reviewCard
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 = {
type: 'chapter',
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: '点评',
......@@ -168,79 +157,49 @@ export default {
type: 'warning'
}).then(() => {
api.submitReviewDetails(param).then(response => {
this.isReviewFlag = true
item.checked_flag = true
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>
<style lang="scss" scoped>
.review-btn{
.review-btn {
display: flex;
justify-content: right;
padding: 20px 0;
}
.score{
.score {
float: right;
display: flex;
input{
width: 90px;
height: 100%;
outline: none;
}
align-items: center;
}
.submit-btn{
.submit-btn {
display: flex;
justify-content: center;
padding-top: 20px;
}
.review-box{
// max-width: 500px;
}
.stu-list{
.title{
.stu-list {
.title {
// text-align: center;
margin-bottom: 10px;
display: flex;
align-items: center;
justify-content: space-between;
::v-deep{
.el-select{
::v-deep {
.el-select {
width: 120px;
}
}
}
ul{
ul {
padding-bottom: 80px;
li{
li {
padding: 3px 0;
&.active{
&.active {
color: #c01540;
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论