From 4f6cdee3d3a9967b6955aacc354bf557430c0643 Mon Sep 17 00:00:00 2001 From: zhouwx <1175765986@qq.com> Date: 星期一, 05 八月 2024 17:05:16 +0800 Subject: [PATCH] 批改 --- src/views/onlineEducation/groupExams/components/examDialog.vue | 150 ++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 132 insertions(+), 18 deletions(-) diff --git a/src/views/onlineEducation/groupExams/components/examDialog.vue b/src/views/onlineEducation/groupExams/components/examDialog.vue index 6f12c6d..96a6fb0 100644 --- a/src/views/onlineEducation/groupExams/components/examDialog.vue +++ b/src/views/onlineEducation/groupExams/components/examDialog.vue @@ -5,6 +5,8 @@ width="800px" :before-close="handleClose" destroy-on-close + :close-on-press-escape="false" + :close-on-click-modal="false" > <el-form :model="state.form" size="default" ref="busRef" :rules="state.formRules" label-width="150px" > <span style="font-size: 20px;font-weight: 800;margin-left: 20px">考试配置</span> @@ -60,8 +62,11 @@ </el-select> <el-radio-group v-model="state.form.singleMethod" > <el-radio :label="1" style="max-width: 30px">随机</el-radio> - <el-radio :label="2">顺序</el-radio> - </el-radio-group> + <el-radio :label="2" style="max-width: 30px">顺序</el-radio> + </el-radio-group > + <el-radio-group v-model="state.form.singleRebuild" style="margin-left: 30px" > + <el-radio :label="1" v-if="title === '编辑'" style="max-width: 30px">重新出题</el-radio> + </el-radio-group> </div> </div> <div style="display: flex"> @@ -98,7 +103,10 @@ </el-select> <el-radio-group v-model="state.form.multiMethod" > <el-radio :label="1" style="max-width: 30px">随机</el-radio> - <el-radio :label="2">顺序</el-radio> + <el-radio :label="2" style="max-width: 30px">顺序</el-radio> + </el-radio-group> + <el-radio-group v-model="state.form.multiRebuild" style="margin-left: 30px" > + <el-radio :label="1" v-if="title === '编辑'" style="max-width: 30px">重新出题</el-radio> </el-radio-group> </div> </div> @@ -136,12 +144,56 @@ </el-select> <el-radio-group v-model="state.form.judgeMethod" > <el-radio :label="1" style="max-width: 30px">随机</el-radio> - <el-radio :label="2">顺序</el-radio> + <el-radio :label="2" style="max-width: 30px">顺序</el-radio> + </el-radio-group> + <el-radio-group v-model="state.form.judgeRebuild" style="margin-left: 30px" > + <el-radio :label="1" v-if="title === '编辑'" style="max-width: 30px">重新出题</el-radio> + </el-radio-group> + </div> + </div> + <div style="display: flex"> + <div class="group"> + <div> + 简答:<el-input style="max-width: 40px" v-model="state.form.easyNum"></el-input> 题 + </div> + <div style="margin-left: 20px"> + 每题:<el-input style="max-width: 40px" v-model="state.form.easyScore"></el-input> 分 + </div> + </div> + <div class="group" > + <div> + 共 + <span style="max-width: 30px" v-show="state.form.easyNum && state.form.easyScore">{{state.form.easyNum * state.form.easyScore}}</span> + <!-- <span v-else></span>--> + 分 + </div> + <el-select + clearable + v-model="state.form.easyBankId" + style="width: 160px;margin: 0 20px" + v-loadMoreNew:[reselectSingle]="handleScroll" + :popper-class="reselectSingle.name" + class="item-width" + placeholder="请选择简答题题库" + > + <el-option + v-for="item in state.bankListSingle" + :key="item.id" + :label="item.name" + :value="item.id" + /> + </el-select> + <el-radio-group v-model="state.form.easyMethod" > + <el-radio :label="1" style="max-width: 30px">随机</el-radio> + <el-radio :label="2" style="max-width: 30px">顺序</el-radio> + </el-radio-group> + <el-radio-group v-model="state.form.easyRebuild" style="margin-left: 30px" > + <el-radio :label="1" v-if="title === '编辑'" style="max-width: 30px">重新出题</el-radio> </el-radio-group> </div> </div> <span class="group" style="margin-bottom: 20px">共计: - {{state.form.judgeNum * state.form.judgeScore+state.form.multiNum * state.form.multiScore+state.form.singleNum * state.form.singleScore}} + {{state.form.judgeNum * state.form.judgeScore+state.form.multiNum * state.form.multiScore+state.form.singleNum * state.form.singleScore+state.form.easyNum * state.form.easyScore}} 分</span> <div style="display: flex;justify-content: space-between;align-items: center"> <el-form-item label="合格分数:" prop="passScore"> @@ -151,15 +203,28 @@ <el-input v-model="state.form.limitTime" style="max-width: 200px" :disabled="state.form.limited === 0"> <template #append>分钟</template> </el-input> + </el-form-item> </div> - <el-form-item label="是否限制考试时长:" prop="limited" style="margin-left: 60px"> - <el-radio-group v-model="state.form.limited" @change="changeLimit" > - <el-radio :label="0" style="max-width: 30px">否</el-radio> - <el-radio :label="1">是</el-radio> - </el-radio-group> - </el-form-item> + <div style="display: flex;justify-content: space-between;align-items: center"> + <el-form-item label="是否限制考试时长:" prop="limited" style="margin-left: 60px"> + <el-radio-group v-model="state.form.limited" @change="changeLimit" > + <el-radio :label="0" style="max-width: 30px">否</el-radio> + <el-radio :label="1">是</el-radio> + </el-radio-group> + </el-form-item> + <el-form-item label="考试截止时间:" prop="deadline" style="margin-left: 60px"> + <el-date-picker + v-model="state.form.deadline" + type="date" + placeholder="请选择截止时间" + format="YYYY-MM-DD" + value-format="YYYY-MM-DD 23:59:59" + /> + </el-form-item> + </div> + </el-form> <template #footer> <span class="dialog-footer"> @@ -188,6 +253,7 @@ getQuestionBank } from "@/api/onlineEducation/questionBank"; import {addExam, checkExamName, editExam} from "@/api/onlineEducation/exam"; +import Student from "@/views/onlineEducation/groupExams/components/student.vue"; const dialogVisible = ref(false); const title = ref(""); @@ -247,15 +313,25 @@ singleScore: null, limited: 1, limitTime: null, - passScore: null + passScore: null, + judgeRebuild: null, + multiRebuild: null, + singleRebuild: null, + easyRebuild: null, + deadline: '', + easyNum: null, + easyScore: null, + easyBankId: null, + easyMethod: 1, }, formRules: { name: [{required: true, trigger: "blur", validator: validateName}], categoryId: [{required: true, message: '请选择课程分类', trigger: 'blur'}], - limited: [{required: true, message: '请选择课程分类', trigger: 'blur'}], - limitTime: [{required: true, message: '请选择课程分类', trigger: 'blur'}], - passScore: [{required: true, message: '请选择课程分类', trigger: 'blur'}] + limited: [{required: true, message: '请选择是否限制考试时长', trigger: 'blur'}], + limitTime: [{required: true, message: '请输入考试限制时长', trigger: 'blur'}], + passScore: [{required: true, message: '请输入合格分数', trigger: 'blur'}], + deadline: [{required: true, message: '请选择考试截止时间', trigger: 'blur'}] }, classifyList: [], isAdmin: false, @@ -285,6 +361,14 @@ title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ; if(type === 'edit') { state.form = value + state.form.easyNum = state.form.easyNum ? state.form.easyNum: null + state.form.easyScore = state.form.easyScore ? state.form.easyScore: null + state.form.singleNum = state.form.singleNum ? state.form.singleNum: null + state.form.singleScore = state.form.singleScore ? state.form.singleScore: null + state.form.multiNum = state.form.multiNum ? state.form.multiNum: null + state.form.multiScore = state.form.multiScore ? state.form.multiScore: null + state.form.judgeNum = state.form.judgeNum ? state.form.judgeNum: null + state.form.judgeScore = state.form.judgeScore ? state.form.judgeScore: null startUsername.value = value.name; }else if(type === 'add' && value ){ state.form.parentId = value.id @@ -299,6 +383,21 @@ // message: '管理员暂无权限' // }); // return; + // } + const total = state.form.judgeNum * state.form.judgeScore+state.form.multiNum * state.form.multiScore+state.form.singleNum * state.form.singleScore+state.form.easyNum * state.form.easyScore + if(state.form.passScore > total){ + ElMessage({ + type: 'warning', + message: '合格分数不能大于总分' + }); + return; + } + // if(!(state.form.judgeBankId || state.form.multiBankId || state.form.singleBankId)){ + // ElMessage({ + // type: 'warning', + // message: '请选择题库' + // }); + // return; // } const valid = await busRef.value.validate(); if(valid){ @@ -368,6 +467,9 @@ console.log("label====",classifyRef.value.getCheckedNodes()[0].value) state.form.categoryId = classifyRef.value.getCheckedNodes()[0].value // 我这里只是打印了一下label的值哦,需要赋值的话自己去赋值哦 + if (classifyRef.value.popperVisible) { + classifyRef.value.togglePopperVisible() + } } const handleClose = () => { @@ -396,10 +498,22 @@ singleMethod: 1, singleNum: null, singleScore: null, - limited: 0, + limited: 1, limitTime: null, - passScore: null + passScore: null, + judgeRebuild: null, + multiRebuild: null, + singleRebuild: null, + easyRebuild: null, + easyNum: null, + easyScore: null, + easyBankId: null, + easyMethod: 1, + deadline: '' } + state.bankListSingle = []; + state.bankSinglePageNum = 1; + state.bankSinglePageSize = 10; } const handleScroll = () => { if(state.bankSinglePageNum >= state.hasMoreItemsSingle) return @@ -451,7 +565,7 @@ align-items:center; font-size: 15px; font-weight: 700; - margin: 20px 0 0 70px; + margin: 20px 0 0 35px; } } -- Gitblit v1.9.2