提交 a6cadadb authored 作者: pengxiaohui's avatar pengxiaohui

优化批阅试卷接口

上级 a3edb6df
<template> <template>
<el-card class="container"> <el-card class="container">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>{{options.question_item_title}}</span> <span>{{questionItem.question_item_title}}</span>
</div> </div>
<div class="content"> <div class="content">
<template v-for="item in options.question_list"> <template v-for="item in questionItem.question_list">
<div class="sub-content" v-if="item.group_id" :key="item.id"> <div class="sub-content" v-if="item.group_id" :key="item.id">
<div class="title" v-html="item.common_content"></div> <div class="title" v-html="item.common_content"></div>
<div class="sub-container"> <div class="sub-container">
<question-item v-for="subItem in item.list" :key="subItem.id" :question="{item: subItem, question_item_id, questionType}" :question_item_id="question_item_id" /> <question-item v-for="subItem in item.list" :key="subItem.id" :question="{item: subItem, question_item_id, questionType, sheet_id}" :question_item_id="question_item_id" />
</div> </div>
</div> </div>
<question-item v-else :question="{item, question_item_id, questionType}" :question_item_id="question_item_id" :key="item.id" /> <question-item v-else :question="{item, question_item_id, questionType, sheet_id}" :question_item_id="question_item_id" :key="item.id" />
</template> </template>
</div> </div>
</el-card> </el-card>
...@@ -35,8 +35,14 @@ export default { ...@@ -35,8 +35,14 @@ export default {
return {} return {}
}, },
computed: { computed: {
questionItem() {
return this.options.item
},
sheet_id() {
return this.options.sheet_id
},
questionType() { questionType() {
return this.options.question_item_type return this.options.item.question_item_type
}, },
// 选项类型 // 选项类型
questionTypeText() { questionTypeText() {
......
...@@ -24,12 +24,12 @@ ...@@ -24,12 +24,12 @@
<div class="comment-top"> <div class="comment-top">
<p>本题{{questionData.score}}</p> <p>本题{{questionData.score}}</p>
<div class="get-score"> <div class="get-score">
学生得分:<el-input-number v-model="questionData.get_score" controls-position="right" :min="0" :max="questionData.score" size="mini"></el-input-number> 学生得分:<el-input-number :disabled="questionData.checked_flag" v-model="questionData.get_score" controls-position="right" :min="0" :max="questionData.score" size="mini"></el-input-number>
</div> </div>
</div> </div>
<el-input type="textarea" placeholder="请输入评语" v-model="comment" rows="3"/> <el-input type="textarea" placeholder="请输入评语" v-model="questionData.comment" rows="3" :disabled="questionData.checked_flag" />
<div style="text-align:center;padding-top:10px;"> <div style="text-align:center;padding-top:10px;">
<el-button type="primary" size="mini" @click="handleComment">提交点评</el-button> <el-button type="primary" size="mini" @click="fetchComment" :disabled="questionData.checked_flag" >提交点评</el-button>
</div> </div>
</div> </div>
</template> </template>
...@@ -63,8 +63,8 @@ export default { ...@@ -63,8 +63,8 @@ export default {
const type = this.questionData.type || this.question.questionType || 1 const type = this.questionData.type || this.question.questionType || 1
return parseInt(type) return parseInt(type)
}, },
eid() { sheet_id() {
return this.$route.query.eid return this.question.sheet_id
} }
// // 选项类型 // // 选项类型
// questionTypeText() { // questionTypeText() {
...@@ -74,24 +74,24 @@ export default { ...@@ -74,24 +74,24 @@ export default {
}, },
created() { created() {
this.questionData = JSON.parse(JSON.stringify(this.question.item)) this.questionData = JSON.parse(JSON.stringify(this.question.item))
console.log(this.question) // if (this.questionType === 3) console.log(this.questionData)
}, },
methods: { methods: {
handleComment() { handleComment() {
console.log(this.question_item_id) // console.log(this.question_item_id)
console.log(this.questionData) // console.log(this.questionData)
this.fetchComment() this.fetchComment()
}, },
fetchComment() { fetchComment() {
const params = { const params = {
sheet_id: this.eid, sheet_id: this.sheet_id,
question_item_id: this.question_item_id, question_item_id: this.question_item_id,
question_id: this.questionData.id, question_id: this.questionData.id,
score: this.questionData.get_score, score: this.questionData.get_score,
comment: this.comment comment: this.questionData.comment
} }
submitPaper(params).then(res => { submitPaper(params).then(res => {
if (res.code === 0) { if (res.success) {
this.$message.success('提交点评成功') this.$message.success('提交点评成功')
} else { } else {
this.$message.success('提交点评失败') this.$message.success('提交点评失败')
......
<template> <template>
<div> <div>
<template v-for="item in questionList"> <template v-for="item in questionList">
<paper-question :options="item" :question_item_id="item.question_item_id" :key="item.question_item_id" /> <paper-question :options="{ item, sheet_id: questionData.sheet_id, question_item_id: item.question_item_id }" :question_item_id="item.question_item_id" :key="item.question_item_id" />
</template> </template>
</div> </div>
</template> </template>
...@@ -319,7 +319,7 @@ export default { ...@@ -319,7 +319,7 @@ export default {
getDetail() { getDetail() {
getPaperDetails({ exam_id: this.eid, student_id: this.sid }).then(res => { getPaperDetails({ exam_id: this.eid, student_id: this.sid }).then(res => {
if (res.code === 0) { if (res.code === 0) {
console.log(res.data) // console.log(res.data)
this.questionData = res.data.sheet this.questionData = res.data.sheet
this.assembleData() this.assembleData()
} }
...@@ -333,16 +333,18 @@ export default { ...@@ -333,16 +333,18 @@ export default {
if (subItem.group_id) { if (subItem.group_id) {
subItem.list.forEach(it => { subItem.list.forEach(it => {
const obj = score[it.id] const obj = score[it.id]
it.get_score = 0 it.get_score = obj.score || 0
it.get_score = obj.score it.checked_flag = obj.checked_flag || false
if (it.answer) it.answer = JSON.parse(it.answer) if (obj.comment) it.comment = obj.comment
// if (it.answer) it.answer = JSON.parse(it.answer)
if (it.options) it.options = JSON.parse(it.options) if (it.options) it.options = JSON.parse(it.options)
}) })
} else { } else {
const obj = score[subItem.id] const obj = score[subItem.id]
subItem.get_score = 0 subItem.get_score = obj.score || 0
subItem.get_score = obj.score subItem.checked_flag = obj.checked_flag || false
if (subItem.answer) subItem.answer = JSON.parse(subItem.answer) if (obj.comment) subItem.comment = obj.comment
// if (subItem.answer) subItem.answer = JSON.parse(subItem.answer)
if (subItem.options) subItem.options = JSON.parse(subItem.options) if (subItem.options) subItem.options = JSON.parse(subItem.options)
} }
}) })
......
...@@ -53,6 +53,10 @@ httpRequest.interceptors.response.use( ...@@ -53,6 +53,10 @@ httpRequest.interceptors.response.use(
if (data.code === 0 || data.type === 'application/vnd.ms-excel') { if (data.code === 0 || data.type === 'application/vnd.ms-excel') {
return data return data
} }
// 批阅试卷接口
if (data.success && data.message === 'ok') {
return data
}
// 未登录 // 未登录
if (data.code === 4001) { if (data.code === 4001) {
window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(window.location.href)}` window.location.href = `${import.meta.env.VITE_LOGIN_URL}?rd=${encodeURIComponent(window.location.href)}`
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论