From cce9b105726750f1b76eef2fa250680ebf36d06c Mon Sep 17 00:00:00 2001 From: luohairen <3399054449@qq.com> Date: 星期五, 08 十一月 2024 09:54:45 +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..971bb16 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