From 3fdb38dd19c8a61d91d789c83074a7e8a3c10897 Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期四, 31 十月 2024 13:32:12 +0800
Subject: [PATCH] 优化
---
src/views/exam/exam/monitor.vue | 134 +++++++++++++++++++++++++++++++++-----------
1 files changed, 99 insertions(+), 35 deletions(-)
diff --git a/src/views/exam/exam/monitor.vue b/src/views/exam/exam/monitor.vue
index bbcee56..50b1c55 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" size="small" 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-form-item label="鍚嶇О锛�" prop="name">
+ <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 label="鎺掑簭锛�" prop="itemOrder">
+ <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,59 @@
{ 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('寮哄埗浜ゅ嵎鎴愬姛')
+ this.search()
+ })
+ },
+ 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 +174,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 +198,7 @@
}
})
},
- deletecheat(row) {
+ deletecheat (row) {
let _this = this
cheatApi.deletecheat(row.id).then(re => {
if (re.code === 1) {
@@ -145,7 +209,7 @@
}
})
},
- submitForm() {
+ submitForm () {
let _this = this
this.$refs.form.validate((valid) => {
if (valid) {
@@ -165,7 +229,7 @@
}
})
},
- resetForm() {
+ resetForm () {
let lastId = this.form.id
this.$refs['form'].resetFields()
this.form.id = lastId
--
Gitblit v1.8.0