From bcc67be745fd4b1b9a57e0e8cd7c13cab8dfd2fd Mon Sep 17 00:00:00 2001
From: lohir <3399054449@qq.com>
Date: 星期四, 17 十月 2024 19:07:37 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/exam/exam/ExamManage.vue |  130 +++++++++++++++++++++++++++++++++----------
 1 files changed, 100 insertions(+), 30 deletions(-)

diff --git a/src/views/exam/exam/ExamManage.vue b/src/views/exam/exam/ExamManage.vue
index 472322f..5853fb9 100644
--- a/src/views/exam/exam/ExamManage.vue
+++ b/src/views/exam/exam/ExamManage.vue
@@ -7,11 +7,11 @@
       <div>
         <el-form :inline="true" :model="searchForm" class="demo-form-inline">
           <el-form-item label="鑰冭瘯鍚嶇О">
-            <el-input v-model="searchForm.examName" @input="page" clearable size="small" clearable @clear="page"
+            <el-input v-model="searchForm.examName" @input="page" clearable size="small" @clear="page"
                       placeholder="鐝骇鍚嶇О"></el-input>
           </el-form-item>
           <el-form-item label="鍙傝�冪彮绾�">
-            <el-select v-model="searchForm.classesId" @change="page" clearable @clear="page">
+            <el-select v-model="searchForm.classesId" @change="page" clearable size="small" @clear="page">
               <el-option v-for="classes in classesList" :key="classes.id" :value="classes.id"
                          :label="classes.className"/>
             </el-select>
@@ -22,26 +22,30 @@
         </el-form>
       </div>
     </div>
-    <el-table :data="tableData" border>
+    <el-table :data="tableData" border style="width: 100%">
       <el-table-column
         label="鑰冭瘯鍚嶇О"
+        width="150px"
         prop="examName"
       ></el-table-column>
       <el-table-column
         label="鑰冭瘯璇曞嵎"
         prop="examPaperName"
+        width="200px"
       ></el-table-column>
       <el-table-column
         label="鍙傝�冪彮绾�"
+        width="200px"
         prop="className"
       ></el-table-column>
-      <el-table-column
-        label="鐝骇浜烘暟"
-        prop="studentNum"
-      ></el-table-column>
+      <!--      <el-table-column-->
+      <!--        label="鐝骇浜烘暟"-->
+      <!--        prop="studentNum"-->
+      <!--      ></el-table-column>-->
       <el-table-column
         label="鑰冭瘯鍦扮偣"
         prop="examPlace"
+        width="150px"
       ></el-table-column>
       <el-table-column
         label="鑰冭瘯鐘舵��"
@@ -61,19 +65,53 @@
       </el-table-column>
       <el-table-column
         label="鍒涘缓鏃堕棿"
-        width="150px"
+        width="160px"
         prop="createTime"
       ></el-table-column>
-      <el-table-column label="鎿嶄綔" fiexd="right" width="210px">
+      <el-table-column label="鎿嶄綔" fixed="right" width="220px">
         <template slot-scope="scope">
           <el-button
             type="primary"
             size="small"
             @click="handlerEdit(scope.row)"
+            v-if="scope.row.status === 'not_start'"
+            v-show="scope.row.status !== 'cancel'"
           >淇敼
           </el-button>
-          <el-button type="danger" size="small" @click="deleteExam(scope.row.id)">鍒犻櫎</el-button>
-          <el-button type="success" size="small" @click="markPaper(scope.row)">闃呭嵎</el-button>
+          <el-popconfirm
+            v-if="scope.row.status === 'not_start'"
+            v-show="scope.row.status !== 'cancel'"
+            style="margin: 0 5px"
+            title="纭畾瑕佸垹闄よ鑰冭瘯鍚楋紵"
+            @confirm="deleteExam(scope.row.id)"
+          >
+            <el-button slot="reference" type="danger" size="small" v-show="scope.row.status !== 'cancel'">鍒犻櫎</el-button>
+          </el-popconfirm>
+
+          <el-button v-if="scope.row.status === 'finished'" type="success" size="small" @click="markPaper(scope.row)" v-show="scope.row.status !== 'cancel'">
+            闃呭嵎
+          </el-button>
+          <el-button v-if="scope.row.status === 'ing'" type="warning" size="small" @click="monitor(scope.row)" v-show="scope.row.status !== 'cancel'">鐩戞帶</el-button>
+          <el-popconfirm
+            class="confirm"
+            style="margin: 0 5px"
+            title="纭畾瑕佷綔搴熻鑰冭瘯璁板綍鍚楋紵"
+            @confirm="cancel(scope.row.id)"
+          >
+            <el-button slot="reference" v-show="scope.row.status !== 'cancel'" type="danger"
+                       size="small"
+                       v-if="scope.row.status !== 'ing'">浣滃簾
+            </el-button>
+          </el-popconfirm>
+          <el-popconfirm
+            class="confirm"
+            title="纭畾瑕佹仮澶嶈鑰冭瘯璁板綍鍚楋紵"
+            @confirm="recover(scope.row.id)"
+          >
+            <el-button slot="reference" v-show="scope.row.status === 'cancel'" type="success"
+                       size="small">鎭㈠姝e父
+            </el-button>
+          </el-popconfirm>
         </template>
       </el-table-column>
     </el-table>
@@ -81,7 +119,7 @@
       class="flex"
       style="justify-content:center;margin-top:20px;"
     >
-      <pagination v-show="total>0" :total="total" :page.sync="searchForm.pageIndex" :limit.sync="searchForm.pageSize"
+      <pagination v-show="total>0" :total="total" :page.sync="searchForm.currentPage" :limit.sync="searchForm.pageSize"
                   @pagination="page"/>
     </div>
     <el-dialog width="500px" :title="title" @close="closeHandler" :visible.sync="open" :destroy-on-close="true"
@@ -111,10 +149,13 @@
         <el-form-item label="寮�濮嬫椂闂�" :label-width="formLabelWidth" prop="time">
           <el-date-picker
             v-model="examForm.time"
-            type="daterange"
+            type="datetimerange"
+            format="yyyy-MM-dd HH:mm:ss"
+            value-format="yyyy-MM-dd HH:mm:ss"
             range-separator="鑷�"
             start-placeholder="寮�濮嬫棩鏈�"
-            end-placeholder="缁撴潫鏃ユ湡">
+            end-placeholder="缁撴潫鏃ユ湡"
+          >
           </el-date-picker>
         </el-form-item>
         <el-form-item label="鑰冭瘯鍦扮偣" :label-width="formLabelWidth" prop="examPlace">
@@ -131,7 +172,7 @@
 
 <script>
 import Pagination from '@/components/Pagination'
-import { getExams, addExam, editExam, deleteExamById } from '@/api/exam'
+import { getExams, addExam, editExam, deleteExamById, cancel, recover } from '@/api/exam'
 import { myClasses } from '@/api/classes'
 import examPaperAPI from '@/api/examPaper'
 
@@ -150,9 +191,9 @@
         examPaperType: null,
         examPlace: '',
         status: '',
-        startTime: '',
-        endTime: '',
-        time: [],
+        startTime: null,
+        endTime: null,
+        time: []
       },
       examRules: {
         examName: [
@@ -172,7 +213,7 @@
         ],
         time: [
           { required: true, message: '璇烽�夋嫨鑰冭瘯鏃堕棿', trigger: 'change' }
-        ],
+        ]
       },
       total: 0,
       title: '瀹夋帓鑰冭瘯',
@@ -180,10 +221,10 @@
       searchForm: {
         examName: '',
         subject: null,
-        pageIndex: 1,
+        currentPage: 1,
         pageSize: 10
       },
-      tableData: [],
+      tableData: []
     }
   },
   mounted () {
@@ -192,6 +233,24 @@
     this.MyExamPaperList()
   },
   methods: {
+    // 浣滃簾鑰冭瘯
+    cancel (id) {
+      cancel(id).then(res => {
+        this.$message.success(res.data.message)
+        this.page()
+      })
+    },
+    // 鎭㈠鑰冭瘯
+    recover (id) {
+      recover(id).then(res => {
+        this.$message.success(res.data.message)
+        this.page()
+      })
+    },
+    // 鑰冭瘯鐩戞帶鍒楄〃
+    monitor (row) {
+      this.$router.push({ path: '/exam/monitor', query: { examId: row.id } })
+    },
     markPaper (row) {
       // 璺宠浆闃呭嵎椤甸潰
       this.$router.push({ path: '/exam/mark/paper', query: { examName: row.examName, examId: row.id } })
@@ -206,6 +265,8 @@
         return '鏈紑濮�'
       } else if (row.status === 'finished') {
         return '宸茬粨鏉�'
+      } else if (row.status === 'cancel') {
+        return '宸蹭綔搴�'
       }
     },
     MyExamPaperList () {
@@ -228,15 +289,23 @@
         this.classesList = res.data.data
       })
     },
-    deleteExam (id) {
-      deleteExamById(id).then(res => {
-        this.$message.success('鍒犻櫎鎴愬姛')
-        this.page()
+    deleteExam (row) {
+      this.$confirm('纭鏄惁鍒犻櫎' + row.examName + '?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        deleteExamById(row.id).then(res => {
+          this.$message.success('鍒犻櫎鎴愬姛')
+          this.page()
+        })
       })
     },
     handlerEdit (row) {
-      this.examForm = row
-      this.examForm.time = [row.startTime, row.endTime]
+      this.examForm = {
+        ...row,
+        time: [row.startTime, row.endTime]
+      }
       this.title = '淇敼鑰冭瘯'
       this.open = true
     },
@@ -272,8 +341,9 @@
         examPaperType: '',
         examPlace: '',
         status: '',
-        startTime: '',
-        endTime: '',
+        startTime: null,
+        endTime: null,
+        time: []
       }
     },
     closeHandler () {
@@ -295,7 +365,7 @@
     routerTo (url) {
       this.$router.push(url)
     },
-  },
+  }
 }
 </script>
 

--
Gitblit v1.8.0