From 83bde4c4b6bfdbac8e5def7e1ab808902a6732c6 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期一, 03 六月 2024 17:47:12 +0800
Subject: [PATCH] feat:题目添加-前端界面

---
 src/views/Manage/TestPaper/QuestionBank.vue |  279 ++++++++++++++++++++++---------------------------------
 1 files changed, 114 insertions(+), 165 deletions(-)

diff --git a/src/views/Manage/TestPaper/QuestionBank.vue b/src/views/Manage/TestPaper/QuestionBank.vue
index b4f6d6b..e7b4c3e 100644
--- a/src/views/Manage/TestPaper/QuestionBank.vue
+++ b/src/views/Manage/TestPaper/QuestionBank.vue
@@ -8,213 +8,141 @@
         <div class="content">
           <!-- 璇曞嵎鐢熸垚鎸夐挳 -->
           <div style="padding-bottom:20px; border-bottom: 3px solid #409EFF;margin-bottom: 20px;">
-            <el-button
-              type="primary"
-              @click="getDialogFormVisible"
-            >褰曞叆棰樼洰</el-button>
+            <el-popover placement="bottom" trigger="click">
+              <el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key"
+                @click="getDialogFormVisible(item.name)">{{ item.name }}
+              </el-button>
+              <el-button slot="reference" type="primary" class="link-left">褰曞叆棰樼洰</el-button>
+            </el-popover>
           </div>
           <!-- 鎼滅储 -->
           <div>
-            <el-form
-              :inline="true"
-              :model="formLabelAlign"
-              class="demo-form-inline"
-              label-width="80px"
-            >
+            <el-form :inline="true" :model="formLabelAlign" class="demo-form-inline" label-width="80px">
               <el-form-item>
-                <el-input
-                  v-model="formLabelAlign.type"
-                  placeholder="棰樼洰鍚�"
-                ></el-input>
+                <el-input v-model="formLabelAlign.type" placeholder="棰樼洰鍚�"></el-input>
               </el-form-item>
               <el-form-item>
-                <el-select
-                  v-model="formLabelAlign.region"
-                  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="formLabelAlign.region" 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>
               </el-form-item>
               <el-form-item>
-                <el-select
-                  v-model="formLabelAlign.region"
-                  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="formLabelAlign.region" placeholder="閫夋嫨棰�">
+                  <el-option label="閫夋嫨棰�" value="shanghai"></el-option>
+                  <el-option label="闂瓟棰�" value="beijing"></el-option>
+                  <el-option label="鍒ゆ柇棰�" value="beijing"></el-option>
                 </el-select>
               </el-form-item>
 
               <el-form-item label="">
-                <el-button
-                  style="width:100px;"
-                  type="primary"
-                  size="small"
-                >鏌ヨ</el-button>
+                <el-button style="width:100px;" type="primary" size="small" @click="search()">鏌ヨ</el-button>
               </el-form-item>
             </el-form>
           </div>
           <!-- 琛ㄦ牸 -->
-          <el-table
-            :header-cell-style="getRowClass"
-            :data="tableData"
-            border
-            style="width: 100%;"
-          >
-            <el-table-column
-              align="center"
-              prop="title"
-              label="棰樼洰鍚�"
-            >
+          <el-table v-loading="listLoading" :header-cell-style="getRowClass" :data="tableData" border style="width: 100%;">
+            <el-table-column align="center" prop="title" label="棰樼洰鍚�">
             </el-table-column>
-            <el-table-column
-              align="center"
-              prop="subject"
-              label="绉戠洰"
-            >
+            <el-table-column align="center" prop="subject" label="绉戠洰">
             </el-table-column>
-            <el-table-column
-              align="center"
-              prop="type"
-              label="棰樼洰绫诲瀷"
-            >
+            <el-table-column align="center" prop="type" label="棰樼洰绫诲瀷">
             </el-table-column>
-            <el-table-column
-              align="center"
-              prop="score"
-              label="鍙傝�冪瓟妗�"
-            >
+            <el-table-column align="center" prop="score" label="鍙傝�冪瓟妗�">
             </el-table-column>
-            <el-table-column
-              label="鎿嶄綔"
-              align="center"
-            >
+            <el-table-column label="鎿嶄綔" align="center">
               <el-button type="text">缂栬緫</el-button>
               <el-button type="text">鍒犻櫎</el-button>
             </el-table-column>
           </el-table>
-          <div
-            class="block"
-            style="display: flex; margin-top: 40px;"
-          >
-            <el-pagination
-              style="margin:auto"
-              background
-              :page-size="10"
-              layout="prev, pager, next, jumper"
-              :total="100"
-            >
-            </el-pagination>
+          <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>
         </div>
       </div>
 
     </div>
-    <PopUp
-      ref="popUp"
-      @children="parentGoods"
-    />
+    <!-- 濉┖ -->
+    <el-dialog :visible.sync="gapVisible" :close-on-click-modal="false">
+      <gap ref="gap" @children="parentGoods" />
+    </el-dialog>
+    <!-- 澶氶�� -->
+    <el-dialog :visible.sync="multipleVisible" :close-on-click-modal="false">
+      <multiple ref="multiple" @children="parentGoods" />
+    </el-dialog>
+    <!-- 绠�绛� -->
+    <el-dialog :visible.sync="shortVisible" :close-on-click-modal="false">
+      <short ref="short" @children="parentGoods" />
+    </el-dialog>
+    <!-- 鍗曢�� -->
+    <el-dialog :visible.sync="singleVisible" :close-on-click-modal="false">
+      <single ref="single" @children="parentGoods" />
+    </el-dialog>
+    <!-- 鍒ゆ柇 -->
+    <el-dialog :visible.sync="truesVisible" :close-on-click-modal="false">
+      <trues ref="trues" @children="parentGoods" />
+    </el-dialog>
   </div>
 </template>
 <script>
 // 寮曞叆褰堝嚭绐楀彛绲勪欢
-import PopUp from "../../../components/PopUp/Question.vue";
+import gap from "@/components/PopUp/gap-filling.vue";
+import multiple from "@/components/PopUp/multiple-choice.vue";
+import short from "@/components/PopUp/short-answer.vue";
+import single from "@/components/PopUp/single-choice.vue";
+import trues from "@/components/PopUp/true-false.vue";
+import { mapGetters, mapState } from 'vuex'
+import questionApi from '@/api/question'
+
 export default {
   // 娉ㄥ唽
   components: {
-    PopUp,
+    gap,
+    multiple,
+    short,
+    single,
+    trues,
   },
   data() {
     return {
+      listLoading: true,
+      queryParam: {
+        questionType: null,
+        subjectId: null,
+        pageIndex: 1,
+        pageSize: 10
+      },
+      total: 0,
+      gapVisible: false,
+      multipleVisible: false,
+      shortVisible: false,
+      singleVisible: false,
+      truesVisible: false,
       formLabelAlign: {
         type: "",
         user: "",
         region: "",
       },
-      tableData: [
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A"],
-        },
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A"],
-        },
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A"],
-        },
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A", "B"],
-        },
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A"],
-        },
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A"],
-        },
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A"],
-        },
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A"],
-        },
-        {
-          title: "褰揂涓嶣涓�璧蜂慨璺�",
-          type: "閫夋嫨棰�",
-          subject: "璇枃",
-          score: ["A"],
-        },
-      ],
+      tableData: [],
     };
   },
+  created() {
+    this.search()
+  },
   methods: {
+    // 鑾峰彇鍒楄〃
+    search() {
+      this.listLoading = true
+      questionApi.pageList(this.queryParam).then(re => {
+        this.tableData = re.data
+        this.total = re.total
+        this.queryParam.pageIndex = re.pageNum
+        this.listLoading = false
+      })
+    },
     // 杩斿洖涓婁竴涓〉闈�
     goBack() {
       this.$router.back();
@@ -223,7 +151,6 @@
     getRowClass() {
       return "background:#d2d3d6";
     },
-
     // 鐢熸垚璇曞嵎
     getCreate() {
       // 璺宠浆鍒扮敓鎴愰〉闈�
@@ -232,10 +159,25 @@
         path: "/manage/test-paper-generation",
       });
     },
-
     // 鐐瑰嚮鍚庤皟鐢ㄥ脊绐楃粍浠剁殑鏂规硶,寮�鍚脊绐�
-    getDialogFormVisible() {
-      this.$refs.popUp.showDialog();
+    getDialogFormVisible(value) {
+      switch (value) {
+        case "濉┖棰�":
+          this.gapVisible = true;
+          break;
+        case "澶氶�夐":
+          this.multipleVisible = true;
+          break;
+        case "绠�绛旈":
+          this.shortVisible = true;
+          break;
+        case "鍗曢�夐":
+          this.singleVisible = true;
+          break;
+        case "鍒ゆ柇棰�":
+          this.truesVisible = true;
+          break;
+      }
     },
     // 寮圭獥
     // 鎺ユ敹寮圭獥缁勪欢杩斿洖鐨勮〃鍗曞��
@@ -243,12 +185,21 @@
       console.log(obj, "寮圭獥缁勪欢鐨勮〃鍗曞��");
     },
   },
+  computed: {
+    ...mapGetters('enumItem', ['enumFormat']),
+    ...mapState('enumItem', {
+      questionTypeEnum: state => state.exam.question.typeEnum,
+      editUrlEnum: state => state.exam.question.editUrlEnum
+    }),
+    ...mapState('exam', { subjects: state => state.subjects })
+  }
 };
 </script>
 <style scoped lang="scss">
 .flex {
   display: flex;
 }
+
 // 鍐呭
 .content {
   width: 1262px;
@@ -258,5 +209,3 @@
   border-radius: 10px;
 }
 </style>
-
-

--
Gitblit v1.8.0