From 8b2a9dcd9ada7a5fd40f8aa0993f6afef67493d3 Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期三, 12 六月 2024 17:58:26 +0800
Subject: [PATCH] feat:科目、题目

---
 src/views/exam/question/edit/single-choice.vue   |   10 -
 src/views/exam/question/edit/true-false.vue      |   10 -
 src/views/exam/question/list.vue                 |  122 ++++++++++-------
 src/api/question.js                              |    3 
 src/api/subject.js                               |   10 
 src/views/exam/question/edit/multiple-choice.vue |   12 -
 src/views/exam/question/edit/short-answer.vue    |   10 -
 src/views/education/subject/list.vue             |  169 +++++++++++++++++++----
 src/views/exam/question/edit/gap-filling.vue     |   13 -
 src/views/exam/question/components/Show.vue      |    5 
 10 files changed, 228 insertions(+), 136 deletions(-)

diff --git a/src/api/question.js b/src/api/question.js
index f28d6ce..ca143bb 100644
--- a/src/api/question.js
+++ b/src/api/question.js
@@ -4,5 +4,6 @@
   pageList: query => post('/api/admin/question/page', query),
   edit: query => post('/api/admin/question/edit', query),
   select: id => post('/api/admin/question/select/' + id),
-  deleteQuestion: id => post('/api/admin/question/delete/' + id)
+  deleteQuestion: id => post('/api/admin/question/delete/' + id),
+  updateStatus: query => post('/api/admin/question/status', query)
 }
diff --git a/src/api/subject.js b/src/api/subject.js
index f040209..2c7d2c4 100644
--- a/src/api/subject.js
+++ b/src/api/subject.js
@@ -1,9 +1,11 @@
-import { post } from '@/utils/request'
+import { get, post } from '@/utils/request'
 
 export default {
   list: query => post('/api/admin/subject/list'),
   pageList: query => post('/api/admin/subject/page', query),
-  edit: query => post('/api/admin/education/subject/edit', query),
-  select: id => post('/api/admin/education/subject/select/' + id),
-  deleteSubject: id => post('/api/admin/education/subject/delete/' + id)
+  edit: query => post('/api/admin/subject/edit', query),
+  select: id => post('/api/admin/subject/select/' + id),
+  deleteSubject: id => post('/api/admin/subject/delete/' + id),
+  updateStatus: query => post('/api/admin/subject/status', query),
+  getItemOrder: id => get('/api/admin/subject/getItemOrder')
 }
diff --git a/src/views/education/subject/list.vue b/src/views/education/subject/list.vue
index 3a4e0c9..08bc47c 100644
--- a/src/views/education/subject/list.vue
+++ b/src/views/education/subject/list.vue
@@ -1,34 +1,63 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParam" ref="queryForm" :inline="true">
-      <el-form-item label="骞寸骇锛�">
-        <el-select v-model="queryParam.level" placeholder="骞寸骇" clearable="">
-          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
+      <el-form-item>
+        <el-input v-model="queryParam.name" placeholder="璇疯緭鍏ュ悕绉�" clearable></el-input>
+      </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>
       <el-form-item>
-        <el-button type="primary" @click="submitForm">鏌ヨ</el-button>
-        <router-link :to="{path:'/education/subject/edit'}" class="link-left">
-          <el-button type="primary">娣诲姞</el-button>
-        </router-link>
+        <el-button type="primary" @click="search">鏌ヨ</el-button>
+        <el-button type="primary" @click="edit()">娣诲姞</el-button>
       </el-form-item>
     </el-form>
 
     <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
-      <el-table-column prop="id" label="Id" />
-      <el-table-column prop="name" label="瀛︾"/>
-      <el-table-column prop="levelName" label="骞寸骇" />
-      <el-table-column width="220px" label="鎿嶄綔" align="center">
+      <el-table-column align="center" prop="name" label="鍚嶇О" show-overflow-tooltip />
+      <el-table-column align="center" prop="itemOrder" label="鎺掑簭" />
+      <el-table-column align="center" prop="createTime" label="鍒涘缓鏃堕棿" />
+      <el-table-column align="center" prop="status" label="鐘舵��">
         <template slot-scope="{row}">
-          <router-link :to="{path:'/education/subject/edit', query:{id:row.id}}" class="link-left">
-            <el-button size="mini">缂栬緫</el-button>
-          </router-link>
-          <el-button   size="mini" type="danger" @click="delSubject(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">
+        <template slot-scope="{row}">
+          <el-button size="mini" @click="edit(row)">缂栬緫</el-button>
+          <el-button size="mini" type="primary" @click="status(row)">
+            {{ row.status === "绂佺敤" ? "鍚敤" : "绂佺敤" }}
+          </el-button>
+          <el-popconfirm title="纭鍒犻櫎鍚�" @confirm="deleteSubject(row)">
+            <el-button slot="reference" size="mini" type="danger" class="link-left">鍒犻櫎</el-button>
+          </el-popconfirm>
         </template>
       </el-table-column>
     </el-table>
-    <pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
-                @pagination="search"/>
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
+      @pagination="search" />
+
+    <el-dialog :visible.sync="visible" width="400px">
+      <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
+        <el-form-item label="鍚嶇О锛�" prop="name" required>
+          <el-input v-model="form.name" maxlength="10" show-word-limit />
+        </el-form-item>
+        <el-form-item label="鎺掑簭锛�" prop="itemOrder" required>
+          <el-input-number v-model="form.itemOrder" type="number" :min="1" :max="100" />
+        </el-form-item>
+        <el-form-item>
+          <el-button type="primary" @click="submitForm">鎻愪氦</el-button>
+          <el-button @click="resetForm">閲嶇疆</el-button>
+        </el-form-item>
+      </el-form>
+    </el-dialog>
+
+
   </div>
 </template>
 
@@ -39,37 +68,84 @@
 
 export default {
   components: { Pagination },
-  data () {
+  data() {
     return {
+      listLoading: true,
       queryParam: {
-        level: null,
+        name: '',
         pageIndex: 1,
         pageSize: 10
       },
-      listLoading: true,
+      formLoading: false,
+      total: 0,
       tableData: [],
-      total: 0
-    }
+      form: {
+        id: '',
+        name: '',
+        itemOrder: ''
+      },
+      visible: false,
+      rules: {
+        name: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: 'blur' }
+        ],
+        itemOrder: [
+          { required: true, message: '璇疯緭鍏ユ帓搴�', trigger: 'blur', type: 'number' }
+        ]
+      },
+    };
   },
-  created () {
+  created() {
     this.search()
   },
   methods: {
-    search () {
+    // 鑾峰彇鎺掑簭
+    getItemOrder() {
+      subjectApi.getItemOrder().then(re => {
+        this.form.itemOrder = re.data
+      })
+    },
+    // 鑾峰彇鍒楄〃
+    search() {
       this.listLoading = true
-      subjectApi.pageList(this.queryParam).then(data => {
-        const re = data.data
-        this.tableData = re.list
-        this.total = re.total
-        this.queryParam.pageIndex = re.pageNum
+      subjectApi.pageList(this.queryParam).then(re => {
+        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
       })
     },
-    submitForm () {
-      this.queryParam.pageIndex = 1
-      this.search()
+    edit(row) {
+      if (row) {
+        subjectApi.select(row.id).then(re => {
+          if (re.code === 1) {
+            this.form = re.data;
+            this.visible = true;
+          } else {
+            this.$message.error(re.message)
+          }
+        })
+      } else {
+        this.getItemOrder();
+        this.visible = true;
+      }
     },
-    delSubject (row) {
+    status(row) {
+      let question = {
+        id: row.id,
+        status: row.status === '绂佺敤' ? '鍚敤' : '绂佺敤'
+      }
+      subjectApi.updateStatus(question).then(re => {
+        if (re.code === 1) {
+          this.$message.success(re.message)
+          this.search()
+        } else {
+          this.$message.error(re.message)
+        }
+      })
+    },
+    deleteSubject(row) {
       let _this = this
       subjectApi.deleteSubject(row.id).then(re => {
         if (re.code === 1) {
@@ -79,7 +155,32 @@
           _this.$message.error(re.message)
         }
       })
-    }
+    },
+    submitForm() {
+      let _this = this
+      this.$refs.form.validate((valid) => {
+        if (valid) {
+          this.formLoading = true
+          subjectApi.edit(this.form).then(re => {
+            if (re.code === 1) {
+              _this.$message.success(re.message)
+              _this.search()
+              _this.formLoading = false
+              _this.visible = false
+            } else {
+              _this.$message.error(re.message)
+              _this.formLoading = false
+              _this.visible = false
+            }
+          })
+        }
+      })
+    },
+    resetForm() {
+      let lastId = this.form.id
+      this.$refs['form'].resetFields()
+      this.form.id = lastId
+    },
   },
   computed: {
     ...mapGetters('enumItem', [
diff --git a/src/views/exam/question/components/Show.vue b/src/views/exam/question/components/Show.vue
index 2b7e9c9..b1f3757 100644
--- a/src/views/exam/question/components/Show.vue
+++ b/src/views/exam/question/components/Show.vue
@@ -60,3 +60,8 @@
   methods: {}
 }
 </script>
+<style scoped>
+  /deep/ td {
+    background-color: #f0f0f0;
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/exam/question/edit/gap-filling.vue b/src/views/exam/question/edit/gap-filling.vue
index 29e98b5..88e94c2 100644
--- a/src/views/exam/question/edit/gap-filling.vue
+++ b/src/views/exam/question/edit/gap-filling.vue
@@ -1,14 +1,9 @@
 <template>
   <div class="app-container">
     <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading"  :rules="rules">
-      <el-form-item label="骞寸骇锛�" prop="gradeLevel" required>
-        <el-select v-model="form.gradeLevel" placeholder="骞寸骇" @change="levelChange">
-          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
-        </el-select>
-      </el-form-item>
       <el-form-item label="瀛︾锛�" prop="subjectId" required>
         <el-select v-model="form.subjectId" placeholder="瀛︾" >
-          <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option>
+          <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 label="棰樺共锛�" prop="title" required>
@@ -17,14 +12,10 @@
       <el-form-item label="濉┖绛旀锛�" required>
         <el-form-item :label="item.prefix" :key="item.prefix"  v-for="item in form.items"  label-width="50px" class="question-item-label">
           <el-input v-model="item.content"   @focus="inputClick(item,'content')"  class="question-item-content-input"  style="width: 80%"/>
-          <span class="question-item-span">鍒嗘暟锛�</span><el-input-number v-model="item.score" :precision="1" :step="1" :max="100"  ></el-input-number>
         </el-form-item>
       </el-form-item>
       <el-form-item label="瑙f瀽锛�" prop="analyze" required>
         <el-input v-model="form.analyze"  @focus="inputClick(form,'analyze')" />
-      </el-form-item>
-      <el-form-item label="鍒嗘暟锛�" prop="score" required>
-        <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number>
       </el-form-item>
       <el-form-item label="闅惧害锛�" required>
         <el-rate v-model="form.difficult" class="question-item-rate"></el-rate>
@@ -115,7 +106,7 @@
     if (id && parseInt(id) !== 0) {
       _this.formLoading = true
       questionApi.select(id).then(re => {
-        _this.form = re.response
+        _this.form = re.data
         _this.formLoading = false
       })
     }
diff --git a/src/views/exam/question/edit/multiple-choice.vue b/src/views/exam/question/edit/multiple-choice.vue
index 8ed8651..15677d8 100644
--- a/src/views/exam/question/edit/multiple-choice.vue
+++ b/src/views/exam/question/edit/multiple-choice.vue
@@ -1,14 +1,9 @@
 <template>
   <div class="app-container">
     <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading"  :rules="rules">
-      <el-form-item label="骞寸骇锛�" prop="gradeLevel" required>
-        <el-select v-model="form.gradeLevel" placeholder="骞寸骇"  @change="levelChange">
-          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
-        </el-select>
-      </el-form-item>
       <el-form-item label="瀛︾锛�" prop="subjectId" required>
         <el-select v-model="form.subjectId" placeholder="瀛︾" >
-          <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option>
+          <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 label="棰樺共锛�" prop="title" required>
@@ -23,9 +18,6 @@
       </el-form-item>
       <el-form-item label="瑙f瀽锛�" prop="analyze" required>
         <el-input v-model="form.analyze"  @focus="inputClick(form,'analyze')" />
-      </el-form-item>
-      <el-form-item label="鍒嗘暟锛�" prop="score" required>
-        <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number>
       </el-form-item>
       <el-form-item label="闅惧害锛�" required>
         <el-rate v-model="form.difficult" class="question-item-rate"></el-rate>
@@ -130,7 +122,7 @@
     if (id && parseInt(id) !== 0) {
       _this.formLoading = true
       questionApi.select(id).then(re => {
-        _this.form = re.response
+        _this.form = re.data
         _this.formLoading = false
       })
     }
diff --git a/src/views/exam/question/edit/short-answer.vue b/src/views/exam/question/edit/short-answer.vue
index d00367f..9758de1 100644
--- a/src/views/exam/question/edit/short-answer.vue
+++ b/src/views/exam/question/edit/short-answer.vue
@@ -1,14 +1,9 @@
 <template>
   <div class="app-container">
     <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
-      <el-form-item label="骞寸骇锛�" prop="gradeLevel" required>
-        <el-select v-model="form.gradeLevel"   placeholder="骞寸骇"  @change="levelChange">
-          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
-        </el-select>
-      </el-form-item>
       <el-form-item label="瀛︾锛�" prop="subjectId" required>
         <el-select v-model="form.subjectId" placeholder="瀛︾" >
-          <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option>
+          <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 label="棰樺共锛�" prop="title" required>
@@ -19,9 +14,6 @@
       </el-form-item>
       <el-form-item label="瑙f瀽锛�" prop="analyze" required>
         <el-input v-model="form.analyze"  @focus="inputClick(form,'analyze')" />
-      </el-form-item>
-      <el-form-item label="鍒嗘暟锛�" prop="score" required>
-        <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number>
       </el-form-item>
       <el-form-item label="闅惧害锛�" required>
         <el-rate v-model="form.difficult" class="question-item-rate"></el-rate>
diff --git a/src/views/exam/question/edit/single-choice.vue b/src/views/exam/question/edit/single-choice.vue
index c090bb8..2c05773 100644
--- a/src/views/exam/question/edit/single-choice.vue
+++ b/src/views/exam/question/edit/single-choice.vue
@@ -1,14 +1,9 @@
 <template>
   <div class="app-container">
     <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading" :rules="rules">
-      <el-form-item label="骞寸骇锛�" prop="gradeLevel" required>
-        <el-select v-model="form.gradeLevel" placeholder="骞寸骇"  @change="levelChange" clearable>
-          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
-        </el-select>
-      </el-form-item>
       <el-form-item label="瀛︾锛�" prop="subjectId" required>
         <el-select v-model="form.subjectId" placeholder="瀛︾" >
-          <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option>
+          <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 label="棰樺共锛�" prop="title" required>
@@ -23,9 +18,6 @@
       </el-form-item>
       <el-form-item label="瑙f瀽锛�" prop="analyze" required>
         <el-input v-model="form.analyze"  @focus="inputClick(form,'analyze')" />
-      </el-form-item>
-      <el-form-item label="鍒嗘暟锛�" prop="score" required>
-        <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number>
       </el-form-item>
       <el-form-item label="闅惧害锛�" required>
         <el-rate v-model="form.difficult" class="question-item-rate"></el-rate>
diff --git a/src/views/exam/question/edit/true-false.vue b/src/views/exam/question/edit/true-false.vue
index 9f3d150..65fd456 100644
--- a/src/views/exam/question/edit/true-false.vue
+++ b/src/views/exam/question/edit/true-false.vue
@@ -1,14 +1,9 @@
 <template>
   <div class="app-container">
     <el-form :model="form" ref="form" label-width="100px" v-loading="formLoading"  :rules="rules">
-      <el-form-item label="骞寸骇锛�" prop="gradeLevel" required>
-        <el-select v-model="form.gradeLevel" placeholder="骞寸骇"  @change="levelChange">
-          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
-        </el-select>
-      </el-form-item>
       <el-form-item label="瀛︾锛�" prop="subjectId" required>
         <el-select v-model="form.subjectId" placeholder="瀛︾" >
-          <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id" :label="item.name+' ( '+item.levelName+' )'"></el-option>
+          <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 label="棰樺共锛�" prop="title" required>
@@ -22,9 +17,6 @@
       </el-form-item>
       <el-form-item label="瑙f瀽锛�" prop="analyze" required>
         <el-input v-model="form.analyze"  @focus="inputClick(form,'analyze')" />
-      </el-form-item>
-      <el-form-item label="鍒嗘暟锛�" prop="score" required>
-        <el-input-number v-model="form.score" :precision="1" :step="1" :max="100"></el-input-number>
       </el-form-item>
       <el-form-item label="闅惧害锛�" required>
         <el-rate v-model="form.difficult" class="question-item-rate"></el-rate>
diff --git a/src/views/exam/question/list.vue b/src/views/exam/question/list.vue
index 1a0f8ec..26eac15 100644
--- a/src/views/exam/question/list.vue
+++ b/src/views/exam/question/list.vue
@@ -1,59 +1,68 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParam" ref="queryForm" :inline="true">
-      <el-form-item label="棰樼洰ID锛�">
-        <el-input v-model="queryParam.id" clearable></el-input>
+      <el-form-item>
+        <el-input v-model="queryParam.content" placeholder="璇疯緭鍏ラ鐩�" clearable></el-input>
       </el-form-item>
-      <el-form-item label="棰樼洰鍐呭锛�">
-        <el-input v-model="queryParam.content" clearable></el-input>
-      </el-form-item>
-
-      <el-form-item label="骞寸骇锛�">
-        <el-select v-model="queryParam.level" placeholder="骞寸骇"  @change="levelChange" clearable>
-          <el-option v-for="item in levelEnum" :key="item.key" :value="item.key" :label="item.value"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="瀛︾锛�">
-        <el-select v-model="queryParam.subjectId" clearable>
-          <el-option v-for="item in subjectFilter" :key="item.id" :value="item.id"
-                     :label="item.name+' ( '+item.levelName+' )'"></el-option>
-        </el-select>
-      </el-form-item>
-      <el-form-item label="棰樺瀷锛�">
-        <el-select v-model="queryParam.questionType" clearable>
-          <el-option v-for="item in questionType" :key="item.key" :value="item.key" :label="item.value"></el-option>
+      <el-form-item>
+        <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-button type="primary" @click="submitForm">鏌ヨ</el-button>
+        <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>
+      <el-form-item>
+        <el-button type="primary" @click="search">鏌ヨ</el-button>
         <el-popover placement="bottom" trigger="click">
           <el-button type="warning" size="mini" v-for="item in editUrlEnum" :key="item.key"
-                     @click="$router.push({path:item.value})">{{item.name}}
+            @click="$router.push({ path: item.value })">{{ item.name }}
           </el-button>
           <el-button slot="reference" type="primary" class="link-left">娣诲姞</el-button>
         </el-popover>
       </el-form-item>
     </el-form>
     <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row style="width: 100%">
-      <el-table-column prop="id" label="Id" width="90px"/>
-      <el-table-column prop="subjectId" label="瀛︾" :formatter="subjectFormatter" width="120px"/>
-      <el-table-column prop="questionType" label="棰樺瀷" :formatter="questionTypeFormatter" width="70px"/>
-      <el-table-column prop="shortTitle" label="棰樺共" show-overflow-tooltip/>
-      <el-table-column prop="score" label="鍒嗘暟" width="60px"/>
-      <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="shortTitle" label="棰樼洰" show-overflow-tooltip>
+      </el-table-column>
+      <el-table-column align="center" prop="subjectName" label="绉戠洰" width="150px">
+      </el-table-column>
+      <el-table-column align="center" prop="questionTypeName" label="棰樺瀷" width="100px">
+      </el-table-column>
+      <el-table-column align="center" prop="difficult" label="闅惧害" width="100px" />
+      <el-table-column align="center" prop="createTime" label="鍒涘缓鏃堕棿" width="160px" />
+      <el-table-column align="center" prop="status" label="鐘舵��" width="100px">
         <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>
-    <pagination v-show="total>0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
-                @pagination="search"/>
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize"
+      @pagination="search" />
     <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>
@@ -66,7 +75,7 @@
 
 export default {
   components: { Pagination, QuestionShow },
-  data () {
+  data() {
     return {
       queryParam: {
         id: null,
@@ -88,16 +97,30 @@
       }
     }
   },
-  created () {
+  created() {
     this.initSubject()
     this.search()
   },
   methods: {
-    submitForm () {
+    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)
+        }
+      })
+    },
+    submitForm() {
       this.queryParam.pageIndex = 1
       this.search()
     },
-    search () {
+    search() {
       this.listLoading = true
       questionApi.pageList(this.queryParam).then(data => {
         const re = data.data
@@ -107,28 +130,28 @@
         this.listLoading = false
       })
     },
-    levelChange () {
+    levelChange() {
       this.queryParam.subjectId = null
       this.subjectFilter = this.subjects.filter(data => data.level === this.queryParam.level)
     },
-    addQuestion () {
+    addQuestion() {
       this.$router.push('/exam/question/edit/singleChoice')
     },
-    showQuestion (row) {
+    showQuestion(row) {
       let _this = this
       this.questionShow.dialog = true
       this.questionShow.loading = true
       questionApi.select(row.id).then(re => {
-        _this.questionShow.qType = re.response.questionType
-        _this.questionShow.question = re.response
+        _this.questionShow.qType = re.data.questionType
+        _this.questionShow.question = re.data
         _this.questionShow.loading = false
       })
     },
-    editQuestion (row) {
+    editQuestion(row) {
       let url = this.enumFormat(this.editUrlEnum, row.questionType)
       this.$router.push({ path: url, query: { id: row.id } })
     },
-    deleteQuestion (row) {
+    deleteQuestion(row) {
       let _this = this
       questionApi.deleteQuestion(row.id).then(re => {
         if (re.code === 1) {
@@ -139,10 +162,10 @@
         }
       })
     },
-    questionTypeFormatter (row, column, cellValue, index) {
+    questionTypeFormatter(row, column, cellValue, index) {
       return this.enumFormat(this.questionType, cellValue)
     },
-    subjectFormatter (row, column, cellValue, index) {
+    subjectFormatter(row, column, cellValue, index) {
       return this.subjectEnumFormat(cellValue)
     },
     ...mapActions('exam', { initSubject: 'initSubject' })
@@ -150,6 +173,7 @@
   computed: {
     ...mapGetters('enumItem', ['enumFormat']),
     ...mapState('enumItem', {
+      questionTypeEnum: state => state.exam.question.typeEnum,
       questionType: state => state.exam.question.typeEnum,
       editUrlEnum: state => state.exam.question.editUrlEnum,
       levelEnum: state => state.user.levelEnum

--
Gitblit v1.8.0