From 585d90f0e3194d6b988a424036291921794678ab Mon Sep 17 00:00:00 2001 From: 马宇豪 <978517621@qq.com> Date: 星期三, 18 十二月 2024 14:28:12 +0800 Subject: [PATCH] 修改首页 --- src/views/onlineEducation/groupExams/components/examDialog.vue | 316 +++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 274 insertions(+), 42 deletions(-) diff --git a/src/views/onlineEducation/groupExams/components/examDialog.vue b/src/views/onlineEducation/groupExams/components/examDialog.vue index ba9aa9c..8af519d 100644 --- a/src/views/onlineEducation/groupExams/components/examDialog.vue +++ b/src/views/onlineEducation/groupExams/components/examDialog.vue @@ -46,20 +46,39 @@ </div> <el-select clearable - v-model="state.form.singleBankId" + v-model="state.form.singleBankName" + filterable + remote + reserve-keyword + placeholder="请输入单选题库" + remote-show-suffix + :remote-method="getBankList" style="width: 160px;margin: 0 20px" - v-loadMoreNew:[reselectSingle]="handleScroll" - :popper-class="reselectSingle.name" - class="item-width" - placeholder="请选择单选题题库" + @change="selectSingleValue" > <el-option - v-for="item in state.bankListSingle" + v-for="item in state.bankList" :key="item.id" :label="item.name" - :value="item.id" + :value="item.name" /> </el-select> +<!-- <el-select--> +<!-- clearable--> +<!-- v-model="state.form.singleBankId"--> +<!-- 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.singleMethod" > <el-radio :label="1" style="max-width: 30px">随机</el-radio> <el-radio :label="2" style="max-width: 30px">顺序</el-radio> @@ -87,20 +106,39 @@ </div> <el-select clearable - v-model="state.form.multiBankId" + v-model="state.form.multiBankName" + filterable + remote + reserve-keyword + placeholder="请输入多选题库" + remote-show-suffix + :remote-method="getBankList" style="width: 160px;margin: 0 20px" - v-loadMoreNew:[reselectSingle]="handleScroll" - :popper-class="reselectSingle.name" - class="item-width" - placeholder="请选择多选题题库" + @change="selectMultiValue" > <el-option - v-for="item in state.bankListSingle" + v-for="item in state.bankList" :key="item.id" :label="item.name" - :value="item.id" + :value="item.name" /> </el-select> +<!-- <el-select--> +<!-- clearable--> +<!-- v-model="state.form.multiBankId"--> +<!-- 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.multiMethod" > <el-radio :label="1" style="max-width: 30px">随机</el-radio> <el-radio :label="2" style="max-width: 30px">顺序</el-radio> @@ -128,20 +166,39 @@ </div> <el-select clearable - v-model="state.form.judgeBankId" + v-model="state.form.judgeBankName" + filterable + remote + reserve-keyword + placeholder="请输入判断题库" + remote-show-suffix + :remote-method="getBankList" style="width: 160px;margin: 0 20px" - v-loadMoreNew:[reselectSingle]="handleScroll" - :popper-class="reselectSingle.name" - class="item-width" - placeholder="请选择判断题题库" + @change="selectJudgeValue" > <el-option - v-for="item in state.bankListSingle" + v-for="item in state.bankList" :key="item.id" :label="item.name" - :value="item.id" + :value="item.name" /> </el-select> +<!-- <el-select--> +<!-- clearable--> +<!-- v-model="state.form.judgeBankId"--> +<!-- 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.judgeMethod" > <el-radio :label="1" style="max-width: 30px">随机</el-radio> <el-radio :label="2" style="max-width: 30px">顺序</el-radio> @@ -151,8 +208,68 @@ </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.easyBankName" + filterable + remote + reserve-keyword + placeholder="请输入简答题库" + remote-show-suffix + :remote-method="getBankList" + style="width: 160px;margin: 0 20px" + @change="selectEasyValue" + > + <el-option + v-for="item in state.bankList" + :key="item.id" + :label="item.name" + :value="item.name" + /> + </el-select> +<!-- <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"> @@ -211,7 +328,7 @@ editQuestionBank, getQuestionBank } from "@/api/onlineEducation/questionBank"; -import {addExam, checkExamName, editExam} from "@/api/onlineEducation/exam"; +import {addExam, checkExamName, editExam, getExamStudent, getPaper} from "@/api/onlineEducation/exam"; import Student from "@/views/onlineEducation/groupExams/components/student.vue"; const dialogVisible = ref(false); @@ -273,10 +390,19 @@ limited: 1, limitTime: null, passScore: null, - judgeRebuild: 0, - multiRebuild: 0, - singleRebuild: 0, - deadline: '' + judgeRebuild: null, + multiRebuild: null, + singleRebuild: null, + easyRebuild: null, + deadline: '', + easyNum: null, + easyScore: null, + easyBankId: null, + easyMethod: 1, + easyBankName: '', + singleBankName:'', + multiBankName: '', + judgeBankName: '' }, formRules: { @@ -296,11 +422,15 @@ bankSinglePageNum: 1, // 当前页码 bankSinglePageSize: 10, // 每页显示的数量 hasMoreItemsSingle: null, // 是否还有更多选项 + initSingleBankName: '', + initMultiBankName: '', + initJudgeBankName: '', + initEasyBankName: '', }) const openDialog = async (type, value) => { await getClassifyList(); - await loadMoreBankData() + await getBankList(''); const userInfo = JSON.parse(Cookies.get('userInfo')) console.log("userInfo",userInfo) if(userInfo.userType === 0){ @@ -314,8 +444,26 @@ } title.value = type === 'addFirst' || type === 'add' ? '新增' : type ==='edit' ? '编辑' : '' ; if(type === 'edit') { - state.form = value - startUsername.value = value.name; + const res = await getPaper(value.id) + if(res.code == 200){ + state.form = res.data + 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; + state.initSingleBankName = state.form.singleBankName; + state.initMultiBankName= state.form.multiBankName; + state.initJudgeBankName= state.form.judgeBankName; + state.initEasyBankName= state.form.easyBankName; + }else{ + ElMessage.warning(res.message) + } + }else if(type === 'add' && value ){ state.form.parentId = value.id } @@ -330,7 +478,7 @@ // }); // return; // } - const total = state.form.judgeNum * state.form.judgeScore+state.form.multiNum * state.form.multiScore+state.form.singleNum * state.form.singleScore + 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', @@ -338,13 +486,13 @@ }); return; } - if(!(state.form.judgeBankId || state.form.multiBankId || state.form.singleBankId)){ - 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){ if(title.value === '新增'){ @@ -447,10 +595,20 @@ limited: 1, limitTime: null, passScore: null, - judgeRebuild: 0, - multiRebuild: 0, - singleRebuild: 0, - deadline: '' + judgeRebuild: null, + multiRebuild: null, + singleRebuild: null, + easyRebuild: null, + easyNum: null, + easyScore: null, + easyBankId: null, + easyMethod: 1, + deadline: '', + easyBankName: '', + singleBankName:'', + multiBankName: '', + judgeBankName: '' + } state.bankListSingle = []; state.bankSinglePageNum = 1; @@ -478,6 +636,80 @@ } } +const getBankList = async (val)=>{ + if(val != ""){ + const queryParams = { + name: val + } + const res = await getQuestionBank(queryParams) + if (res.code == 200) { + state.bankList = res.data.list + + } else { + ElMessage.warning(res.message) + } + }else { + const queryParams = { + pageNum: 1, + pageSize: 10 + } + const res = await getQuestionBank(queryParams) + if (res.code == 200) { + state.bankList = res.data.list + } else { + ElMessage.warning(res.message) + } + } +} +const selectSingleValue = (val) => { + if(val != state.initSingleBankName){ + state.form.singleRebuild = 1; + }else { + state.form.singleRebuild = 0; + } + state.bankList.forEach(item => { + if(item.name === val){ + state.form.singleBankId = item.id + } + }) +} +const selectMultiValue = (val) => { + if(val != state.initMultiBankName){ + state.form.multiRebuild = 1; + }else { + state.form.multiRebuild = 0; + } + state.bankList.forEach(item => { + if(item.name === val){ + state.form.multiBankId = item.id + } + }) +} +const selectJudgeValue = (val) => { + if(val != state.initJudgeBankName){ + state.form.judgeRebuild = 1; + }else { + state.form.judgeRebuild = 0; + } + state.bankList.forEach(item => { + if(item.name === val){ + state.form.judgeBankId = item.id + } + }) +} +const selectEasyValue = (val) => { + if(val != state.initEasyBankName){ + state.form.easyRebuild = 1; + }else { + state.form.easyRebuild = 0; + } + state.bankList.forEach(item => { + if(item.name === val){ + state.form.easyBankId = item.id + } + }) +} + const changeLimit = (val) => { state.form.limitTime = null if(val === 0) { -- Gitblit v1.9.2