From 926fd4d1b89e7e5e6338d8f292edc4f728049856 Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期五, 02 八月 2024 17:33:05 +0800
Subject: [PATCH] 试卷批改

---
 src/views/onlineEducation/questionBankManagement/questionManage/components/questionDialog.vue |  142 +++++++++++++++++++++++++++++++++++------------
 1 files changed, 105 insertions(+), 37 deletions(-)

diff --git a/src/views/onlineEducation/questionBankManagement/questionManage/components/questionDialog.vue b/src/views/onlineEducation/questionBankManagement/questionManage/components/questionDialog.vue
index 96c48aa..941c5cc 100644
--- a/src/views/onlineEducation/questionBankManagement/questionManage/components/questionDialog.vue
+++ b/src/views/onlineEducation/questionBankManagement/questionManage/components/questionDialog.vue
@@ -3,7 +3,7 @@
     <el-dialog
         v-model="dialogVisible"
         :title="title"
-        width="50%"
+        width="750px"
         :before-close="handleClose"
         :close-on-press-escape="false"
         :close-on-click-modal="false"
@@ -22,13 +22,16 @@
         </el-form-item>
         <el-form-item label="归属题库:" prop="bankName">
           <el-select
+              clearable
               v-model="state.form.bankName"
+              filterable
+              remote
+              reserve-keyword
+              placeholder="请输入题库名称"
+              remote-show-suffix
+              :remote-method="getBankList"
               style="width: 100%"
-              v-loadMoreNew:[reselect]="handleScroll"
-              :popper-class="reselect.name"
               @change="selectValue"
-              class="item-width"
-              placeholder="请选择题库"
           >
             <el-option
                 v-for="item in state.bankList"
@@ -37,13 +40,29 @@
                 :value="item.name"
             />
           </el-select>
+<!--          <el-select-->
+<!--              v-model="state.form.bankName"-->
+<!--              style="width: 100%"-->
+<!--              v-loadMoreNew:[reselect]="handleScroll"-->
+<!--              :popper-class="reselect.name"-->
+<!--              @change="selectValue"-->
+<!--              class="item-width"-->
+<!--              placeholder="请选择题库"-->
+<!--          >-->
+<!--            <el-option-->
+<!--                v-for="item in state.bankList"-->
+<!--                :key="item.id"-->
+<!--                :label="item.name"-->
+<!--                :value="item.name"-->
+<!--            />-->
+<!--          </el-select>-->
         </el-form-item>
         <el-form-item label="题目内容:" prop="title">
           <el-input v-model.trim="state.form.title" type="textarea" placeholder="请输入题目内容"></el-input>
         </el-form-item>
-        <el-form-item label="选项:" prop="content">
+        <el-form-item label="选项:" prop="content" v-if="state.form.questionType != 4">
           <div style="display: flex;flex-direction: column;width: 100%">
-            <el-button :disabled="state.form.questionType ===3" type="primary"  @click="addOption" size="default" style="width: 65px;margin-bottom: 15px">添加</el-button>
+            <el-button :disabled="state.form.questionType ===3 || state.form.questionType==null " type="primary"  @click="addOption" size="default" style="width: 65px;margin-bottom: 15px">添加</el-button>
             <div v-for="(item,index) in state.optionItem.items" :key="index" style="width: 100%">
               <div style="display: flex;align-items: center">
                 <span>{{String.fromCharCode(index + 65)}}</span>
@@ -53,9 +72,7 @@
             </div>
           </div>
         </el-form-item>
-        <el-form-item label="解析:" >
-          <el-input type="textarea" v-model="state.optionItem.analyze" placeholder="请输入题目解析" style="width: 100%;margin-bottom: 10px"></el-input>
-        </el-form-item>
+
         <el-form-item label="正确答案:" prop="answer">
           <el-radio-group v-model="state.form.answer" v-if="state.form.questionType === 1 || state.form.questionType === 3">
             <div v-for="(item,index) in state.optionItem.items">
@@ -67,6 +84,10 @@
               <el-checkbox :label="String.fromCharCode(index + 65)" style="margin-left: 20px;">{{String.fromCharCode(index + 65)}}</el-checkbox>
             </div>
           </el-checkbox-group>
+          <el-input v-if="state.form.questionType === 4" v-model="state.form.answer" type="textarea" placeholder="请输入正确答案"></el-input>
+        </el-form-item>
+        <el-form-item label="解析:" >
+          <el-input type="textarea" v-model="state.optionItem.analyze" placeholder="请输入题目解析" style="width: 100%;margin-bottom: 10px"></el-input>
         </el-form-item>
       </el-form>
       <template #footer>
@@ -138,6 +159,10 @@
     {
       id: 3,
       name: '判断题'
+    },
+    {
+      id: 4,
+      name: '简答题'
     }
   ],
   optionItem: {
@@ -177,7 +202,7 @@
   console.log(" state.optionItem.items.", state.optionItem.items)
 }
 const openDialog = async (type, value) => {
-  await loadMoreBankData();
+  await getBankList('');
   const userInfo = JSON.parse(Cookies.get('userInfo'))
   console.log("userInfo",userInfo)
   if(userInfo.userType === 0){
@@ -203,6 +228,32 @@
     }
   }
   dialogVisible.value = true;
+}
+
+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 handleScroll = () => {
@@ -232,20 +283,26 @@
   if(valid){
     if(title.value === '新增'){
       const {id,bankName, ...data} = JSON.parse(JSON.stringify(state.form))
-      data.answer = data.questionType === 1 || data.questionType === 3 ? data.answer : state.checkList.join(',')
-      // data.content = data.questionType === 1 ? JSON.stringify(state.singleQuestion) : data.questionType === 2 ? JSON.stringify(state.multiQuestion) : JSON.stringify(state.judgeQuestion)
-      const options = state.optionItem.items.map((op,index) => {
-        return {
-          prefix: String.fromCharCode(index + 65),
-          content: op.content,
-        }
-      })
-      data.content = JSON.stringify(
-          {
-            analyze: state.optionItem.analyze,
-            items: options
+      data.answer = data.questionType === 1 || data.questionType === 3 || data.questionType === 4? data.answer : state.checkList.join(',')
+      if(data.questionType !== 4){
+        const options = state.optionItem.items.map((op,index) => {
+          return {
+            prefix: String.fromCharCode(index + 65),
+            content: op.content,
           }
-      )
+        })
+        data.content = JSON.stringify(
+            {
+              analyze: state.optionItem.analyze,
+              items: options
+            }
+        )
+      }else {
+        data.content = JSON.stringify(
+            {
+              analyze: state.optionItem.analyze,
+            })
+      }
       console.log('state.form',data)
       const res = await addQuestion(data)
       if(res.code === 200){
@@ -262,20 +319,26 @@
       dialogVisible.value = false;
     }else if(title.value === '编辑'){
       const {bankName,...data} = JSON.parse(JSON.stringify(state.form))
-      data.answer = data.questionType === 1 || data.questionType === 3 ? data.answer : state.checkList.join(',')
-      // data.content = data.questionType === 1 ? JSON.stringify(state.singleQuestion) : data.questionType === 2 ? JSON.stringify(state.multiQuestion) : JSON.stringify(state.judgeQuestion)
-      const options = state.optionItem.items.map((op,index) => {
-        return {
-          prefix: String.fromCharCode(index + 65),
-          content: op.content,
-        }
-      })
-      data.content = JSON.stringify(
-          {
-            analyze: state.optionItem.analyze,
-            items: options
+      data.answer = data.questionType === 1 || data.questionType === 3 || data.questionType === 4 ? data.answer : state.checkList.join(',')
+      if(data.questionType !== 4){
+        const options = state.optionItem.items.map((op,index) => {
+          return {
+            prefix: String.fromCharCode(index + 65),
+            content: op.content,
           }
-      )
+        })
+        data.content = JSON.stringify(
+            {
+              analyze: state.optionItem.analyze,
+              items: options
+            }
+        )
+      }else {
+        data.content = JSON.stringify(
+            {
+              analyze: state.optionItem.analyze,
+            })
+      }
       const res = await editQuestion(data)
       if(res.code === 200){
         ElMessage({
@@ -293,6 +356,10 @@
   }
 }
 const changeType = () => {
+  state.optionItem = {
+    analyze: '',
+    items: []
+  }
   if(state.form.questionType === 3) {
     state.optionItem.items = [
       {
@@ -307,6 +374,7 @@
     ]
   }
 
+
 }
 const handleClose = () => {
   busRef.value.clearValidate();

--
Gitblit v1.9.2