From 7024cd0dd22702c5a289a84fa652d7c70cfe4920 Mon Sep 17 00:00:00 2001
From: lohir <3399054449@qq.com>
Date: 星期四, 17 十月 2024 17:52:58 +0800
Subject: [PATCH] bug

---
 src/views/exam/exam/monitor.vue |  129 ++++++++++++++++++++++++++++++++-----------
 1 files changed, 96 insertions(+), 33 deletions(-)

diff --git a/src/views/exam/exam/monitor.vue b/src/views/exam/exam/monitor.vue
index bbcee56..73204dc 100644
--- a/src/views/exam/exam/monitor.vue
+++ b/src/views/exam/exam/monitor.vue
@@ -2,37 +2,60 @@
   <div class="app-container">
     <el-form :model="queryParam" ref="queryForm" :inline="true">
       <el-form-item>
-        <el-input v-model="queryParam.keyword" placeholder="璇疯緭鍏ュ悕绉�" clearable></el-input>
+        <el-input v-model="queryParam.keyword" placeholder="璇疯緭鍏ュ悕绉�" @input="search" clearable></el-input>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" @click="search">鏌ヨ</el-button>
+        <el-button type="primary" @click="search" size="small">鏌ヨ</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 align="center" prop="examName" label="鑰冭瘯" />
-      <el-table-column align="center" prop="userName" label="濮撳悕" show-overflow-tooltip />
-      <el-table-column align="center" prop="createTime" label="寮�濮嬫椂闂�" />
-      <el-table-column align="center" prop="doTime" label="鑰楁椂锛堢锛�" />
-      <el-table-column align="center" prop="status" label="鐘舵��" :formatter="statusFormatter" />
+      <el-table-column align="center" prop="examName" label="鑰冭瘯"/>
+      <el-table-column align="center" prop="userName" label="濮撳悕" show-overflow-tooltip/>
+      <el-table-column align="center" prop="createTime" label="寮�濮嬫椂闂�"/>
+      <el-table-column align="center" prop="doTime" label="鑰楁椂锛堢锛�"/>
+      <el-table-column align="center" prop="status" label="鐘舵��" :formatter="statusFormatter"/>
       <el-table-column label="鎿嶄綔" align="center">
         <template slot-scope="{row}">
-          <el-button size="mini" type="danger" @click="handleNullify(row)">浣滃簾</el-button>
-          <el-button size="mini" type="primary" @click="edit(row)">鏀跺嵎</el-button>
-          <el-button size="mini" type="success" @click="edit(row)">鍔犳椂</el-button>
+          <el-popover
+            v-show="row.status === 'temp'"
+            placement="right"
+            width="400"
+            trigger="click">
+            <el-form :model="addTimeForm" ref="addTimeForm" :rules="addTimeRule">
+              <el-form-item label="瀛﹀憳">
+                <div>{{ row.userName }}</div>
+              </el-form-item>
+              <el-form-item label="鍔犲灏戝垎閽�">
+                <el-input v-model="addTimeForm.addTimeM" type="number" size="small"/>
+              </el-form-item>
+              <el-form-item>
+                <el-button size="mini" type="success" @click="handlerAddTime(row)">鍔犳椂</el-button>
+              </el-form-item>
+            </el-form>
+            <el-button size="mini" slot="reference">鍔犳椂</el-button>
+          </el-popover>
+          <el-button v-show="row.status === 'temp'" size="mini" type="danger" @click="handleNullify(row)">浣滃簾</el-button>
+          <el-popconfirm
+            v-show="row.status === 'temp'"
+            title="纭畾瑕佸己鍒舵彁浜よ瀛﹀憳鐨勮瘯鍗峰悧锛�"
+            @confirm="handlerForceSubmit(row.userId)"
+          >
+            <el-button size="mini" type="primary" slot="reference">鏀跺嵎</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.currentPage" :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-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-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>
@@ -48,17 +71,17 @@
 <script>
 import { mapGetters, mapState } from 'vuex'
 import Pagination from '@/components/Pagination'
-import { monitorList } from '@/api/exam'
+import { monitorList, addTime, forceSubmit } from '@/api/exam'
 import cheatApi from '@/api/cheat'
 
 export default {
   components: { Pagination },
-  data() {
+  data () {
     return {
       listLoading: true,
       queryParam: {
         examId: '',
-        pageIndex: 1,
+        currentPage: 1,
         pageSize: 10
       },
       formLoading: false,
@@ -69,6 +92,16 @@
         name: '',
         itemOrder: ''
       },
+      addTimeForm: {
+        examId: null,
+        userId: null,
+        userName: '',
+        addTimeM: 1  // 娣诲姞澶氬皯鍒嗛挓
+      },
+      forceSubmitForm: {
+        examId: null,
+        userId: null
+      },
       visible: false,
       rules: {
         name: [
@@ -78,28 +111,58 @@
           { required: true, message: '璇疯緭鍏ユ帓搴�', trigger: 'blur', type: 'number' }
         ]
       },
-    };
+      addTimeRule: {
+        userId: [
+          { required: true, message: '璇烽�夋嫨涓鸿皝鍔犳椂', trigger: 'blur' }
+        ],
+        addTimeSecond: [
+          { required: true, message: '璇疯緭鍏ュ姞鏃舵椂闂�', trigger: 'blur' }
+        ]
+      },
+    }
   },
-  created() {
-    this.queryParam.examId = this.$route.query.examId;
+  created () {
+    this.queryParam.examId = this.$route.query.examId
     this.search()
   },
   methods: {
-    handleNullify(row) {
-      let cheatObj = { examId: row.examId, cheatUser: row.userId };
-      cheatApi.edit(cheatObj).then(res => {
-        this.$message.success(res.message);
+    // 澶勭悊鍔犳椂
+    handlerAddTime (row) {
+      this.$refs['addTimeForm'].validate((valid) => {
+        if (valid) {
+          this.addTimeForm.examId = this.queryParam.examId
+          this.addTimeForm.userId = row.userId
+          addTime(this.addTimeForm).then(res => {
+            this.$message.success('鍔犳椂鎴愬姛')
+          })
+        }
       })
     },
-    statusFormatter(row) {
+    // 寮哄埗浜ゅ嵎
+    handlerForceSubmit (userId) {
+      this.forceSubmitForm.examId = this.queryParam.examId
+      this.forceSubmitForm.userId = userId
+      forceSubmit(this.forceSubmitForm).then(res => {
+        this.$message.success('寮哄埗浜ゅ嵎鎴愬姛')
+      })
+    },
+    handleNullify (row) {
+      let cheatObj = { examId: row.examId, cheatUser: row.userId }
+      cheatApi.edit(cheatObj).then(res => {
+        this.$message.success(res.message)
+      })
+    },
+    statusFormatter (row) {
       if (row.status === 'temp') {
         return '杩涜涓�'
       } else if (row.status === 'finish') {
         return '宸茬粨鏉�'
+      } else if (!row.status) {
+        return '鏈紑濮�'
       }
     },
     // 鑾峰彇鍒楄〃
-    search() {
+    search () {
       this.listLoading = true
       monitorList(this.queryParam).then(re => {
         re = re.data
@@ -110,17 +173,17 @@
         this.listLoading = false
       })
     },
-    edit(row) {
+    edit (row) {
       cheatApi.select(row.id).then(re => {
         if (re.code === 1) {
-          this.form = re.data;
-          this.visible = true;
+          this.form = re.data
+          this.visible = true
         } else {
           this.$message.error(re.message)
         }
       })
     },
-    status(row) {
+    status (row) {
       let question = {
         id: row.id,
         status: row.status === '绂佺敤' ? '鍚敤' : '绂佺敤'
@@ -134,7 +197,7 @@
         }
       })
     },
-    deletecheat(row) {
+    deletecheat (row) {
       let _this = this
       cheatApi.deletecheat(row.id).then(re => {
         if (re.code === 1) {
@@ -145,7 +208,7 @@
         }
       })
     },
-    submitForm() {
+    submitForm () {
       let _this = this
       this.$refs.form.validate((valid) => {
         if (valid) {
@@ -165,7 +228,7 @@
         }
       })
     },
-    resetForm() {
+    resetForm () {
       let lastId = this.form.id
       this.$refs['form'].resetFields()
       this.form.id = lastId

--
Gitblit v1.8.0