From 1ea9066edc59ff1dbdc335519fe7ca6d46bb6199 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期五, 09 八月 2024 08:48:34 +0800
Subject: [PATCH] bug修改

---
 src/views/onlineEducation/groupExams/components/examDialog.vue |  255 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 214 insertions(+), 41 deletions(-)

diff --git a/src/views/onlineEducation/groupExams/components/examDialog.vue b/src/views/onlineEducation/groupExams/components/examDialog.vue
index 96a6fb0..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>
@@ -169,20 +226,39 @@
             </div>
             <el-select
                 clearable
-                v-model="state.form.easyBankId"
+                v-model="state.form.easyBankName"
+                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="selectEasyValue"
             >
               <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.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>
@@ -252,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);
@@ -323,6 +399,10 @@
     easyScore: null,
     easyBankId: null,
     easyMethod: 1,
+    easyBankName: '',
+    singleBankName:'',
+    multiBankName: '',
+    judgeBankName: ''
 
   },
   formRules: {
@@ -342,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){
@@ -360,16 +444,26 @@
   }
   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;
+    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
   }
@@ -509,7 +603,12 @@
     easyScore: null,
     easyBankId: null,
     easyMethod: 1,
-    deadline: ''
+    deadline: '',
+    easyBankName: '',
+    singleBankName:'',
+    multiBankName: '',
+    judgeBankName: ''
+
   }
   state.bankListSingle = [];
   state.bankSinglePageNum = 1;
@@ -537,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