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

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

上级 f2fe6965
...@@ -173,9 +173,8 @@ export function getChapterHomeworkOtherAll(semesterId, courseId, chapterId, para ...@@ -173,9 +173,8 @@ export function getChapterHomeworkOtherAll(semesterId, courseId, chapterId, para
} }
/** /**
* 获取课程考试结果 * 提交作业互评
* @param {string} examId 试题ID
*/ */
export function addChapterHomeworkComment(examId, params) { export function addChapterHomeworkComment(data) {
return httpRequest.post(`/api/lms/v2/education/homeworks/comment/${examId}`, params) return httpRequest.post('/api/lms/v2/education/homeworks/comment', data)
} }
<template> <template>
<container :title="$t('viewerWork.commentTitle')"> <container :title="$t('viewerWork.commentTitle')">
<chapter-work-comment-item <template v-for="(item, index) in list">
v-for="(item, index) in list" <el-form :disabled="disabled" :key="item.id" ref="form" :model="item" :rules="rules">
:data="item" <el-form-item :label="$t('viewerWork.commentMyTitle')" prop="comment">
:key="item.id" <chapter-work-comment-item :data="item" :key="item.id" :index="index" :endDate="endDate" /> </el-form-item
:index="index" ></el-form>
v-bind="$attrs" </template>
@update="getList" <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"> <div class="more">
<router-link :to="`${$route.path}/answers`" target="_blank"> <router-link :to="`${$route.path}/answers`" target="_blank">
<el-button round>{{ $t('viewerWork.answerMoreButtonText') }}</el-button> <el-button round>{{ $t('viewerWork.answerMoreButtonText') }}</el-button>
...@@ -25,9 +30,13 @@ import ChapterWorkCommentItem from './chapterWorkCommentItem.vue' ...@@ -25,9 +30,13 @@ import ChapterWorkCommentItem from './chapterWorkCommentItem.vue'
export default { export default {
components: { Container, ChapterWorkCommentItem }, components: { Container, ChapterWorkCommentItem },
props: { endDate: { type: String } },
data() { data() {
return { return {
list: [] list: [],
rules: {
comment: [{ required: true, message: '请输入评价内容', trigger: 'blur' }]
}
} }
}, },
computed: { computed: {
...@@ -42,6 +51,16 @@ export default { ...@@ -42,6 +51,16 @@ export default {
// 当前页面的ID // 当前页面的ID
pid() { pid() {
return this.$route.params.id 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: { methods: {
...@@ -49,6 +68,43 @@ export default { ...@@ -49,6 +68,43 @@ export default {
api.getChapterHomeworkOther(this.sid, this.cid, this.pid).then(response => { api.getChapterHomeworkOther(this.sid, this.cid, this.pid).then(response => {
this.list = 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() { beforeMount() {
...@@ -62,4 +118,11 @@ export default { ...@@ -62,4 +118,11 @@ export default {
text-align: center; text-align: center;
padding-top: 40px; padding-top: 40px;
} }
.button {
display: flex;
align-items: center;
p {
padding-left: 20px;
}
}
</style> </style>
<template> <template>
<chapter-work-answer-item :data="data" :key="data.id" v-bind="$attrs"> <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"> <v-editor v-model="data.comment" :disabled="disabled"></v-editor>
<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>
</chapter-work-answer-item> </chapter-work-answer-item>
</template> </template>
<script> <script>
// api
import * as api from '../../api'
// componets // componets
import ChapterWorkAnswerItem from './chapterWorkAnswerItem.vue' import ChapterWorkAnswerItem from './chapterWorkAnswerItem.vue'
import VEditor from '@/components/ckeditor' import VEditor from '@/components/ckeditor'
export default { export default {
props: { endDate: { type: String }, data: { type: Object, default: () => ({}) } }, props: { endDate: { type: String }, data: { type: Object, default: () => ({}) }, disabled: { type: Boolean } },
components: { ChapterWorkAnswerItem, VEditor }, components: { ChapterWorkAnswerItem, VEditor },
data() { data() {
return { 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')
})
}
} }
} }
</script> </script>
<style lang="scss" scoped>
.button {
display: flex;
align-items: center;
p {
padding-left: 20px;
}
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论