From a57f1cab5efbbd118759b77568ffe0b5369d8599 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期二, 04 六月 2024 12:00:37 +0800
Subject: [PATCH] feat:题目查询、新增

---
 src/components/PopUp/multiple-choice.vue    |    4 -
 src/views/Manage/TestPaper/QuestionBank.vue |   96 ++++++++++++++++++++++++++++++++++++------------
 src/components/PopUp/gap-filling.vue        |    4 -
 src/components/PopUp/single-choice.vue      |    4 -
 src/components/PopUp/true-false.vue         |    4 -
 src/components/PopUp/short-answer.vue       |    4 -
 6 files changed, 77 insertions(+), 39 deletions(-)

diff --git a/src/components/PopUp/gap-filling.vue b/src/components/PopUp/gap-filling.vue
index 4deb149..46992d7 100644
--- a/src/components/PopUp/gap-filling.vue
+++ b/src/components/PopUp/gap-filling.vue
@@ -186,9 +186,7 @@
           questionApi.edit(this.form).then(re => {
             if (re.code === 1) {
               _this.$message.success(re.message)
-              _this.delCurrentView(_this).then(() => {
-                _this.$router.push('/exam/question/list')
-              })
+              this.$emit('callback')
             } else {
               _this.$message.error(re.message)
               this.formLoading = false
diff --git a/src/components/PopUp/multiple-choice.vue b/src/components/PopUp/multiple-choice.vue
index cd1effc..4ee4d6c 100644
--- a/src/components/PopUp/multiple-choice.vue
+++ b/src/components/PopUp/multiple-choice.vue
@@ -175,9 +175,7 @@
           questionApi.edit(this.form).then(re => {
             if (re.code === 1) {
               _this.$message.success(re.message)
-              _this.delCurrentView(_this).then(() => {
-                _this.$router.push('/exam/question/list')
-              })
+              this.$emit('callback')
             } else {
               _this.$message.error(re.message)
               this.formLoading = false
diff --git a/src/components/PopUp/short-answer.vue b/src/components/PopUp/short-answer.vue
index 4f2994f..d5fc6ff 100644
--- a/src/components/PopUp/short-answer.vue
+++ b/src/components/PopUp/short-answer.vue
@@ -146,9 +146,7 @@
           questionApi.edit(this.form).then(re => {
             if (re.code === 1) {
               _this.$message.success(re.message)
-              _this.delCurrentView(_this).then(() => {
-                _this.$router.push('/exam/question/list')
-              })
+              this.$emit('callback')
             } else {
               _this.$message.error(re.message)
               this.formLoading = false
diff --git a/src/components/PopUp/single-choice.vue b/src/components/PopUp/single-choice.vue
index ad7e191..80338ba 100644
--- a/src/components/PopUp/single-choice.vue
+++ b/src/components/PopUp/single-choice.vue
@@ -175,9 +175,7 @@
           questionApi.edit(this.form).then(re => {
             if (re.code === 1) {
               _this.$message.success(re.message)
-              _this.delCurrentView(_this).then(() => {
-                _this.$router.push('/exam/question/list')
-              })
+              this.$emit('callback')
             } else {
               _this.$message.error(re.message)
               this.formLoading = false
diff --git a/src/components/PopUp/true-false.vue b/src/components/PopUp/true-false.vue
index 1b49929..45f1865 100644
--- a/src/components/PopUp/true-false.vue
+++ b/src/components/PopUp/true-false.vue
@@ -157,9 +157,7 @@
           questionApi.edit(this.form).then(re => {
             if (re.code === 1) {
               _this.$message.success(re.message)
-              _this.delCurrentView(_this).then(() => {
-                _this.$router.push('/exam/question/list')
-              })
+              this.$emit('callback')
             } else {
               _this.$message.error(re.message)
               this.formLoading = false
diff --git a/src/views/Manage/TestPaper/QuestionBank.vue b/src/views/Manage/TestPaper/QuestionBank.vue
index e7b4c3e..aeb052a 100644
--- a/src/views/Manage/TestPaper/QuestionBank.vue
+++ b/src/views/Manage/TestPaper/QuestionBank.vue
@@ -17,12 +17,12 @@
           </div>
           <!-- 鎼滅储 -->
           <div>
-            <el-form :inline="true" :model="formLabelAlign" class="demo-form-inline" label-width="80px">
+            <el-form :inline="true" :model="queryParam" class="demo-form-inline" label-width="80px">
               <el-form-item>
-                <el-input v-model="formLabelAlign.type" placeholder="棰樼洰鍚�"></el-input>
+                <el-input v-model="queryParam.content" placeholder="棰樼洰鍚�"></el-input>
               </el-form-item>
               <el-form-item>
-                <el-select v-model="formLabelAlign.region" placeholder="鍏ㄩ儴绉戠洰">
+                <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>
@@ -30,7 +30,7 @@
                 </el-select>
               </el-form-item>
               <el-form-item>
-                <el-select v-model="formLabelAlign.region" placeholder="閫夋嫨棰�">
+                <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>
@@ -44,17 +44,22 @@
           </div>
           <!-- 琛ㄦ牸 -->
           <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 align="center" prop="shortTitle" label="棰樼洰鍚�">
             </el-table-column>
-            <el-table-column align="center" prop="subject" label="绉戠洰">
+            <el-table-column align="center" prop="subjectName" label="绉戠洰">
             </el-table-column>
-            <el-table-column align="center" prop="type" label="棰樼洰绫诲瀷">
+            <el-table-column align="center" prop="questionTypeName" 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-button type="text">缂栬緫</el-button>
-              <el-button type="text">鍒犻櫎</el-button>
+            <el-table-column prop="difficult" label="闅惧害" width="60px"/>
+            <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="160px"/>
+            <el-table-column label="鎿嶄綔" align="center" width="220px">
+              <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>
+              </template>
             </el-table-column>
           </el-table>
           <div class="block" style="display: flex; margin-top: 40px;">
@@ -67,23 +72,27 @@
     </div>
     <!-- 濉┖ -->
     <el-dialog :visible.sync="gapVisible" :close-on-click-modal="false">
-      <gap ref="gap" @children="parentGoods" />
+      <gap ref="gap" @children="parentGoods" @callback="callback" />
     </el-dialog>
     <!-- 澶氶�� -->
     <el-dialog :visible.sync="multipleVisible" :close-on-click-modal="false">
-      <multiple ref="multiple" @children="parentGoods" />
+      <multiple ref="multiple" @children="parentGoods" @callback="callback" />
     </el-dialog>
     <!-- 绠�绛� -->
     <el-dialog :visible.sync="shortVisible" :close-on-click-modal="false">
-      <short ref="short" @children="parentGoods" />
+      <short ref="short" @children="parentGoods" @callback="callback" />
     </el-dialog>
     <!-- 鍗曢�� -->
     <el-dialog :visible.sync="singleVisible" :close-on-click-modal="false">
-      <single ref="single" @children="parentGoods" />
+      <single ref="single" @children="parentGoods" @callback="callback" />
     </el-dialog>
     <!-- 鍒ゆ柇 -->
     <el-dialog :visible.sync="truesVisible" :close-on-click-modal="false">
-      <trues ref="trues" @children="parentGoods" />
+      <trues ref="trues" @children="parentGoods" @callback="callback" />
+    </el-dialog>
+
+    <el-dialog :visible.sync="questionShow.dialog" style="width: 100%;height: 100%">
+      <QuestionShow :qType="questionShow.qType" :question="questionShow.question" :qLoading="questionShow.loading"/>
     </el-dialog>
   </div>
 </template>
@@ -96,6 +105,7 @@
 import trues from "@/components/PopUp/true-false.vue";
 import { mapGetters, mapState } from 'vuex'
 import questionApi from '@/api/question'
+import QuestionShow from '@/components/PopUp/question/Show'
 
 export default {
   // 娉ㄥ唽
@@ -105,13 +115,21 @@
     short,
     single,
     trues,
+    QuestionShow
   },
   data() {
     return {
+      questionShow: {
+        qType: 0,
+        dialog: false,
+        question: null,
+        loading: false
+      },
       listLoading: true,
       queryParam: {
         questionType: null,
         subjectId: null,
+        content: null,
         pageIndex: 1,
         pageSize: 10
       },
@@ -121,11 +139,6 @@
       shortVisible: false,
       singleVisible: false,
       truesVisible: false,
-      formLabelAlign: {
-        type: "",
-        user: "",
-        region: "",
-      },
       tableData: [],
     };
   },
@@ -133,13 +146,22 @@
     this.search()
   },
   methods: {
+    callback() {
+      this.gapVisible = false;
+      this.multipleVisible = false;
+      this.shortVisible = false;
+      this.singleVisible = false;
+      this.truesVisible = false;
+      this.search()
+    },
     // 鑾峰彇鍒楄〃
     search() {
       this.listLoading = true
       questionApi.pageList(this.queryParam).then(re => {
-        this.tableData = re.data
-        this.total = re.total
-        this.queryParam.pageIndex = re.pageNum
+        this.tableData = re.data.list
+        this.total = re.data.total
+        this.queryParam.pageSize = re.data.pageSize
+        this.queryParam.pageIndex = re.data.pageNum
         this.listLoading = false
       })
     },
@@ -184,6 +206,31 @@
     parentGoods(obj) {
       console.log(obj, "寮圭獥缁勪欢鐨勮〃鍗曞��");
     },
+    showQuestion (row) {
+      let _this = this
+      this.questionShow.dialog = true
+      this.questionShow.loading = true
+      questionApi.select(row.id).then(re => {
+        _this.questionShow.qType = re.data.questionType
+        _this.questionShow.question = re.data
+        _this.questionShow.loading = false
+      })
+    },
+    editQuestion (row) {
+      let url = this.enumFormat(this.editUrlEnum, row.questionType)
+      this.$router.push({ path: url, query: { id: row.id } })
+    },
+    deleteQuestion (row) {
+      let _this = this
+      questionApi.deleteQuestion(row.id).then(re => {
+        if (re.code === 1) {
+          _this.search()
+          _this.$message.success(re.message)
+        } else {
+          _this.$message.error(re.message)
+        }
+      })
+    },
   },
   computed: {
     ...mapGetters('enumItem', ['enumFormat']),
@@ -191,6 +238,7 @@
       questionTypeEnum: state => state.exam.question.typeEnum,
       editUrlEnum: state => state.exam.question.editUrlEnum
     }),
+    ...mapGetters('exam', ['subjectEnumFormat']),
     ...mapState('exam', { subjects: state => state.subjects })
   }
 };

--
Gitblit v1.8.0