提交 342ee7fa authored 作者: 王鹏飞's avatar 王鹏飞

作业互评多条互评一起提交

上级 f2fe6965
......@@ -173,9 +173,8 @@ export function getChapterHomeworkOtherAll(semesterId, courseId, chapterId, para
}
/**
* 获取课程考试结果
* @param {string} examId 试题ID
* 提交作业互评
*/
export function addChapterHomeworkComment(examId, params) {
return httpRequest.post(`/api/lms/v2/education/homeworks/comment/${examId}`, params)
export function addChapterHomeworkComment(data) {
return httpRequest.post('/api/lms/v2/education/homeworks/comment', data)
}
<template>
<container :title="$t('viewerWork.commentTitle')">
<chapter-work-comment-item
v-for="(item, index) in list"
:data="item"
:key="item.id"
:index="index"
v-bind="$attrs"
@update="getList"
/>
<template v-for="(item, index) in list">
<el-form :disabled="disabled" :key="item.id" ref="form" :model="item" :rules="rules">
<el-form-item :label="$t('viewerWork.commentMyTitle')" prop="comment">
<chapter-work-comment-item :data="item" :key="item.id" :index="index" :endDate="endDate" /> </el-form-item
></el-form>
</template>
<div class="button">
<el-button type="primary" :disabled="disabled" @click="handleSubmit">{{
$t('viewerWork.commentSubmitText')
}}</el-button>
<p>{{ $t('viewerWork.commentSubmitTips', { date: endDate }) }}</p>
</div>
<div class="more">
<router-link :to="`${$route.path}/answers`" target="_blank">
<el-button round>{{ $t('viewerWork.answerMoreButtonText') }}</el-button>
......@@ -25,9 +30,13 @@ import ChapterWorkCommentItem from './chapterWorkCommentItem.vue'
export default {
components: { Container, ChapterWorkCommentItem },
props: { endDate: { type: String } },
data() {
return {
list: []
list: [],
rules: {
comment: [{ required: true, message: '请输入评价内容', trigger: 'blur' }]
}
}
},
computed: {
......@@ -42,6 +51,16 @@ export default {
// 当前页面的ID
pid() {
return this.$route.params.id
},
isSubmitTime() {
// 大于开始时间,小于结束时间
const endTime = +new Date(this.endDate)
const currentTime = new Date().getTime()
return currentTime < endTime
},
// 是否禁用
disabled() {
return !this.isSubmitTime
}
},
methods: {
......@@ -49,6 +68,43 @@ export default {
api.getChapterHomeworkOther(this.sid, this.cid, this.pid).then(response => {
this.list = response
})
},
// 提交校验
checkSubmit() {
let result = true
for (let i = 0; i < this.list.length; i++) {
this.$refs.form[i].validate(valid => {
if (!valid) {
result = valid
return result
}
})
}
return result
},
// 提交评价
handleSubmit() {
// 校验
if (!this.checkSubmit()) {
this.messageInstance && this.messageInstance.close()
this.messageInstance = this.$message.error(this.$t('viewerWork.examSubmitError'))
return
}
this.handleSubmitReqeuest()
},
handleSubmitReqeuest() {
const params = this.list.map(({ id, comment }) => {
return { id, comment }
})
api
.addChapterHomeworkComment(params)
.then(response => {
this.$message({ type: 'success', message: response.message })
this.getList()
})
.catch(error => {
this.$message({ type: 'error', message: error.message })
})
}
},
beforeMount() {
......@@ -62,4 +118,11 @@ export default {
text-align: center;
padding-top: 40px;
}
.button {
display: flex;
align-items: center;
p {
padding-left: 20px;
}
}
</style>
<template>
<chapter-work-answer-item :data="data" :key="data.id" v-bind="$attrs">
<el-form :model="ruleForm" :rules="rules" :hide-required-asterisk="true" label-position="top" ref="ruleForm">
<el-form-item :label="$t('viewerWork.commentMyTitle')" prop="comment">
<v-editor v-model="ruleForm.comment" :disabled="disabled"></v-editor>
</el-form-item>
<el-form-item>
<div class="button">
<el-button type="primary" :disabled="disabled" @click="handleSubmit">{{
$t('viewerWork.commentSubmitText')
}}</el-button>
<p>{{ $t('viewerWork.commentSubmitTips', { date: endDate }) }}</p>
</div>
</el-form-item>
</el-form>
<v-editor v-model="data.comment" :disabled="disabled"></v-editor>
</chapter-work-answer-item>
</template>
<script>
// api
import * as api from '../../api'
// componets
import ChapterWorkAnswerItem from './chapterWorkAnswerItem.vue'
import VEditor from '@/components/ckeditor'
export default {
props: { endDate: { type: String }, data: { type: Object, default: () => ({}) } },
props: { endDate: { type: String }, data: { type: Object, default: () => ({}) }, disabled: { type: Boolean } },
components: { ChapterWorkAnswerItem, VEditor },
data() {
return {
ruleForm: { comment: this.data.comment },
rules: {
comment: [
{ required: true, message: '请输入评价内容', trigger: 'blur' },
{ max: 1000, message: '最多输入1000个字符', trigger: 'blur' }
]
}
}
},
computed: {
isSubmitTime() {
// 大于开始时间,小于结束时间
const endTime = +new Date(this.endDate)
const currentTime = new Date().getTime()
return currentTime < endTime
},
// 是否禁用
disabled() {
return !this.isSubmitTime
// return false
}
},
methods: {
// 提交评价
handleSubmit() {
this.$refs.ruleForm.validate().then(this.handleSubmitReqeuest)
},
handleSubmitReqeuest() {
api.addChapterHomeworkComment(this.data.id, this.ruleForm).then(response => {
this.$message({ type: 'success', message: response.message })
this.$emit('update')
})
}
return {}
}
}
</script>
<style lang="scss" scoped>
.button {
display: flex;
align-items: center;
p {
padding-left: 20px;
}
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论