From 51d32283921983508bebffee2ecd5cb4c4948e6a Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 05 六月 2024 16:04:23 +0800
Subject: [PATCH] feat:题目表移除分数字段、新增题目状态、条件多选

---
 src/views/Manage/TestPaper/QuestionBank.vue |  145 ++++++++++++++++++++++++++++-------------------
 1 files changed, 86 insertions(+), 59 deletions(-)

diff --git a/src/views/Manage/TestPaper/QuestionBank.vue b/src/views/Manage/TestPaper/QuestionBank.vue
index aeb052a..473b0c4 100644
--- a/src/views/Manage/TestPaper/QuestionBank.vue
+++ b/src/views/Manage/TestPaper/QuestionBank.vue
@@ -19,21 +19,23 @@
           <div>
             <el-form :inline="true" :model="queryParam" class="demo-form-inline" label-width="80px">
               <el-form-item>
-                <el-input v-model="queryParam.content" placeholder="棰樼洰鍚�"></el-input>
+                <el-input v-model="queryParam.content" placeholder="璇疯緭鍏ラ鐩�" clearable></el-input>
               </el-form-item>
               <el-form-item>
-                <el-select v-model="queryParam.subjectId" placeholder="鍏ㄩ儴绉戠洰">
-                  <el-option label="鍏ㄩ儴绉戠洰" value="shanghai"></el-option>
-                  <el-option label="璇枃" value="beijing"></el-option>
-                  <el-option label="鏁板" value="beijing"></el-option>
-                  <el-option label="鑻辫" value="beijing"></el-option>
+                <el-select v-model="queryParam.subjectId" placeholder="璇烽�夋嫨绉戠洰" clearable multiple @change="search">
+                  <el-option v-for="item in subjects" :key="item.id" :value="item.id" :label="item.name"></el-option>
                 </el-select>
               </el-form-item>
               <el-form-item>
-                <el-select v-model="queryParam.questionType" placeholder="閫夋嫨棰�">
-                  <el-option label="閫夋嫨棰�" value="shanghai"></el-option>
-                  <el-option label="闂瓟棰�" value="beijing"></el-option>
-                  <el-option label="鍒ゆ柇棰�" value="beijing"></el-option>
+                <el-select v-model="queryParam.questionType" placeholder="璇烽�夋嫨棰樺瀷" clearable multiple @change="search">
+                  <el-option v-for="item in questionTypeEnum" :key="item.key" :value="item.key"
+                    :label="item.value"></el-option>
+                </el-select>
+              </el-form-item>
+              <el-form-item>
+                <el-select v-model="queryParam.status" placeholder="璇烽�夋嫨鐘舵��" clearable @change="search">
+                  <el-option value="1" label="鍚敤"></el-option>
+                  <el-option value="2" label="绂佺敤"></el-option>
                 </el-select>
               </el-form-item>
 
@@ -43,56 +45,66 @@
             </el-form>
           </div>
           <!-- 琛ㄦ牸 -->
-          <el-table v-loading="listLoading" :header-cell-style="getRowClass" :data="tableData" border style="width: 100%;">
-            <el-table-column align="center" prop="shortTitle" label="棰樼洰鍚�">
+          <el-table v-loading="listLoading" :header-cell-style="getRowClass" :data="tableData" border
+            style="width: 100%;">
+            <el-table-column align="center" prop="shortTitle" label="棰樼洰鍚�" show-overflow-tooltip>
             </el-table-column>
-            <el-table-column align="center" prop="subjectName" label="绉戠洰">
+            <el-table-column align="center" prop="subjectName" label="绉戠洰" width="150px">
             </el-table-column>
-            <el-table-column align="center" prop="questionTypeName" label="棰樺瀷">
+            <el-table-column align="center" prop="questionTypeName" label="棰樺瀷" width="100px">
             </el-table-column>
-            <el-table-column align="center" prop="score" label="鍒嗘暟">
-            </el-table-column>
-            <el-table-column prop="difficult" label="闅惧害" width="60px"/>
-            <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="160px"/>
-            <el-table-column label="鎿嶄綔" align="center" width="220px">
+            <!-- <el-table-column align="center" prop="score" label="鍒嗘暟">
+            </el-table-column> -->
+            <el-table-column align="center" prop="difficult" label="闅惧害" width="60px" />
+            <el-table-column align="center" prop="createTime" label="鍒涘缓鏃堕棿" width="160px" />
+            <el-table-column label="鐘舵��" prop="status" width="70px">
               <template slot-scope="{row}">
-                <el-button size="mini"   @click="showQuestion(row)">棰勮</el-button>
-                <el-button size="mini"  @click="editQuestion(row)">缂栬緫</el-button>
-                <el-button size="mini"  type="danger" @click="deleteQuestion(row)" class="link-left">鍒犻櫎</el-button>
+                <el-tag :type="row.status === '绂佺敤' ? 'danger' : 'success'">
+                  {{ row.status ? row.status : '鍚敤' }}
+                </el-tag>
+              </template>
+            </el-table-column>
+            <el-table-column label="鎿嶄綔" align="center" width="300px">
+              <template slot-scope="{row}">
+                <el-button size="mini" @click="showQuestion(row)">棰勮</el-button>
+                <el-button size="mini" @click="editQuestion(row)">缂栬緫</el-button>
+                <el-button size="mini" type="primary" @click="statusQuestion(row)">{{ row.status === "绂佺敤" ? "鍚敤" : "绂佺敤"
+                  }}</el-button>
+                <el-popconfirm title="纭鍒犻櫎鍚�" @confirm="deleteQuestion(row)">
+                  <el-button slot="reference" size="mini" type="danger" class="link-left">鍒犻櫎</el-button>
+                </el-popconfirm>
               </template>
             </el-table-column>
           </el-table>
-          <div class="block" style="display: flex; margin-top: 40px;">
-            <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex"
-              :limit.sync="queryParam.pageSize" @pagination="search" />
-          </div>
+          <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex"
+            :limit.sync="queryParam.pageSize" @pagination="search" />
         </div>
       </div>
 
     </div>
     <!-- 濉┖ -->
-    <el-dialog :visible.sync="gapVisible" :close-on-click-modal="false">
-      <gap ref="gap" @children="parentGoods" @callback="callback" />
+    <el-dialog :visible.sync="gapVisible" :close-on-click-modal="false" v-if="gapVisible">
+      <gap ref="gap" @children="parentGoods" @callback="callback" :id="updateId" />
     </el-dialog>
     <!-- 澶氶�� -->
-    <el-dialog :visible.sync="multipleVisible" :close-on-click-modal="false">
-      <multiple ref="multiple" @children="parentGoods" @callback="callback" />
+    <el-dialog :visible.sync="multipleVisible" :close-on-click-modal="false" v-if="multipleVisible">
+      <multiple ref="multiple" @children="parentGoods" @callback="callback" :id="updateId" />
     </el-dialog>
     <!-- 绠�绛� -->
-    <el-dialog :visible.sync="shortVisible" :close-on-click-modal="false">
-      <short ref="short" @children="parentGoods" @callback="callback" />
+    <el-dialog :visible.sync="shortVisible" :close-on-click-modal="false" v-if="shortVisible">
+      <short ref="short" @children="parentGoods" @callback="callback" :id="updateId" />
     </el-dialog>
     <!-- 鍗曢�� -->
-    <el-dialog :visible.sync="singleVisible" :close-on-click-modal="false">
-      <single ref="single" @children="parentGoods" @callback="callback" />
+    <el-dialog :visible.sync="singleVisible" :close-on-click-modal="false" v-if="singleVisible">
+      <single ref="single" @children="parentGoods" @callback="callback" :id="updateId" />
     </el-dialog>
     <!-- 鍒ゆ柇 -->
-    <el-dialog :visible.sync="truesVisible" :close-on-click-modal="false">
-      <trues ref="trues" @children="parentGoods" @callback="callback" />
+    <el-dialog :visible.sync="truesVisible" :close-on-click-modal="false" v-if="truesVisible">
+      <trues ref="trues" @children="parentGoods" @callback="callback" :id="updateId" />
     </el-dialog>
 
     <el-dialog :visible.sync="questionShow.dialog" style="width: 100%;height: 100%">
-      <QuestionShow :qType="questionShow.qType" :question="questionShow.question" :qLoading="questionShow.loading"/>
+      <QuestionShow :qType="questionShow.qType" :question="questionShow.question" :qLoading="questionShow.loading" />
     </el-dialog>
   </div>
 </template>
@@ -106,6 +118,8 @@
 import { mapGetters, mapState } from 'vuex'
 import questionApi from '@/api/question'
 import QuestionShow from '@/components/PopUp/question/Show'
+import subjectApi from '@/api/subject'
+import Pagination from '@/components/Pagination'
 
 export default {
   // 娉ㄥ唽
@@ -115,10 +129,12 @@
     short,
     single,
     trues,
-    QuestionShow
+    QuestionShow,
+    Pagination
   },
   data() {
     return {
+      updateId: '',
       questionShow: {
         qType: 0,
         dialog: false,
@@ -127,9 +143,10 @@
       },
       listLoading: true,
       queryParam: {
-        questionType: null,
-        subjectId: null,
-        content: null,
+        questionType: [],
+        subjectId: [],
+        content: '',
+        status: '',
         pageIndex: 1,
         pageSize: 10
       },
@@ -140,12 +157,20 @@
       singleVisible: false,
       truesVisible: false,
       tableData: [],
+      subjects: []
     };
   },
   created() {
     this.search()
+    this.getSubjects();
   },
   methods: {
+    // 鑾峰彇绉戠洰
+    getSubjects() {
+      subjectApi.list().then(re => {
+        this.subjects = re.data
+      })
+    },
     callback() {
       this.gapVisible = false;
       this.multipleVisible = false;
@@ -165,21 +190,9 @@
         this.listLoading = false
       })
     },
-    // 杩斿洖涓婁竴涓〉闈�
-    goBack() {
-      this.$router.back();
-    },
     // 淇敼琛ㄥ崟澶撮儴鐨勯鑹�
     getRowClass() {
       return "background:#d2d3d6";
-    },
-    // 鐢熸垚璇曞嵎
-    getCreate() {
-      // 璺宠浆鍒扮敓鎴愰〉闈�
-      //璺宠浆鍒板搴旂殑绠$悊椤甸潰
-      this.$router.push({
-        path: "/manage/test-paper-generation",
-      });
     },
     // 鐐瑰嚮鍚庤皟鐢ㄥ脊绐楃粍浠剁殑鏂规硶,寮�鍚脊绐�
     getDialogFormVisible(value) {
@@ -200,13 +213,14 @@
           this.truesVisible = true;
           break;
       }
+      this.updateId = '';
     },
     // 寮圭獥
     // 鎺ユ敹寮圭獥缁勪欢杩斿洖鐨勮〃鍗曞��
     parentGoods(obj) {
       console.log(obj, "寮圭獥缁勪欢鐨勮〃鍗曞��");
     },
-    showQuestion (row) {
+    showQuestion(row) {
       let _this = this
       this.questionShow.dialog = true
       this.questionShow.loading = true
@@ -216,11 +230,25 @@
         _this.questionShow.loading = false
       })
     },
-    editQuestion (row) {
-      let url = this.enumFormat(this.editUrlEnum, row.questionType)
-      this.$router.push({ path: url, query: { id: row.id } })
+    editQuestion(row) {
+      this.getDialogFormVisible(row.questionTypeName);
+      this.updateId = row.id;
     },
-    deleteQuestion (row) {
+    statusQuestion(row) {
+      let question = {
+        id: row.id,
+        status: row.status === '绂佺敤' ? '鍚敤' : '绂佺敤'
+      }
+      questionApi.updateStatus(question).then(re => {
+        if (re.code === 1) {
+          this.$message.success(re.message)
+          this.search()
+        } else {
+          this.$message.error(re.message)
+        }
+      })
+    },
+    deleteQuestion(row) {
       let _this = this
       questionApi.deleteQuestion(row.id).then(re => {
         if (re.code === 1) {
@@ -239,7 +267,6 @@
       editUrlEnum: state => state.exam.question.editUrlEnum
     }),
     ...mapGetters('exam', ['subjectEnumFormat']),
-    ...mapState('exam', { subjects: state => state.subjects })
   }
 };
 </script>

--
Gitblit v1.8.0