From 4f6cdee3d3a9967b6955aacc354bf557430c0643 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: Mon, 05 Aug 2024 17:05:16 +0800
Subject: [PATCH] 批改
---
src/views/onlineEducation/groupExams/components/examDialog.vue | 145 ++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 127 insertions(+), 18 deletions(-)
diff --git a/src/views/onlineEducation/groupExams/components/examDialog.vue b/src/views/onlineEducation/groupExams/components/examDialog.vue
index 6a49a22..96a6fb0 100644
--- a/src/views/onlineEducation/groupExams/components/examDialog.vue
+++ b/src/views/onlineEducation/groupExams/components/examDialog.vue
@@ -62,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">
@@ -100,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>
@@ -138,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">
@@ -153,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">
@@ -190,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("");
@@ -249,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,
@@ -287,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
@@ -301,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){
@@ -401,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
@@ -456,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