From 8269775d78f974a266c848ea15e73a85dafec2a5 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 11 七月 2024 16:51:17 +0800 Subject: [PATCH] 监控展示还没开始做题的学生 --- src/views/exam/exam/monitor.vue | 57 ++++++++++--------- src/views/answer/info.vue | 72 +++++++++++++---------- src/views/meet/index.vue | 1 src/views/exam/exam/MarkPaper.vue | 1 src/router.js | 4 src/views/exam/exam/ExamManage.vue | 30 ++++++--- src/views/exam/exam/MarkPaperDetail.vue | 3 + 7 files changed, 96 insertions(+), 72 deletions(-) diff --git a/src/router.js b/src/router.js index 41f3fee..8d90ad3 100644 --- a/src/router.js +++ b/src/router.js @@ -291,7 +291,7 @@ component: () => import('@/views/education/cheat/list'), name: 'EducationCheatPage', meta: { title: '浣滃紛璁板綍', noCache: true } - }, + } ] }, { @@ -345,7 +345,7 @@ affix: true }, component: () => import('@/views/sys/SysSetting') - }, + } ] }, diff --git a/src/views/answer/info.vue b/src/views/answer/info.vue index d9de560..05db274 100644 --- a/src/views/answer/info.vue +++ b/src/views/answer/info.vue @@ -4,7 +4,7 @@ <div class="bg"> <div class="main"> <!-- 寰呰繑鍥炵殑鏍囬 --> - <TitleIndex title="绛斿嵎绠$悊" /> + <TitleIndex title="绛斿嵎绠$悊"/> <div class="content"> <!-- 鎼滅储 --> <div> @@ -23,9 +23,9 @@ </div> <!-- 琛ㄦ牸 --> <el-table v-loading="listLoading" :data="tableData" border fit highlight-current-row> - <el-table-column prop="examName" label="鑰冭瘯鍚嶇О" align="center" /> - <el-table-column prop="paperName" label="璇曞嵎鍚嶇О" align="center" /> - <el-table-column prop="userName" width="150" label="鍙傝�冧汉" align="center" /> + <el-table-column prop="examName" label="鑰冭瘯鍚嶇О" align="center"/> + <el-table-column prop="paperName" label="璇曞嵎鍚嶇О" align="center"/> + <el-table-column prop="userName" width="150" label="鍙傝�冧汉" align="center"/> <el-table-column label="寰楀垎" width="150px" align="center"> <template slot-scope="{row}"> {{ row.score }} / {{ row.totalScore }} @@ -36,7 +36,11 @@ {{ row.questionCorrect }} / {{ row.questionCount }} </template> </el-table-column> - <el-table-column prop="doTime" label="鑰楁椂" width="80px" align="center" /> + <el-table-column prop="doTime" label="鑰楁椂" width="100px" align="center"> + <template slot-scope="{row}"> + {{ formattedDoTime(row) }} + </template> + </el-table-column> <el-table-column prop="submitTime" label="鎻愪氦鏃堕棿" width="240px" align="center"> <template slot-scope="{row}"> <span :style="row.status === 0 ? '' : 'color: red'"> @@ -51,7 +55,7 @@ </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" - :limit.sync="queryParam.pageSize" @pagination="search" /> + :limit.sync="queryParam.pageSize" @pagination="search"/> </div> </div> </div> @@ -67,7 +71,7 @@ components: { Pagination }, - data() { + data () { return { listLoading: true, queryParam: { @@ -82,16 +86,22 @@ tableData: [], visible: false, subjects: [] - }; + } }, - created() { - this.queryParam.examId = this.$route.query.id; - this.queryParam.userId = this.$route.query.userId; - this.search(); + created () { + this.queryParam.examId = this.$route.query.id + this.queryParam.userId = this.$route.query.userId + this.search() }, methods: { + formattedDoTime (row) { + const totalSeconds = row.doTime + const minutes = Math.floor(totalSeconds / 60) + const seconds = totalSeconds % 60 + return `${minutes}鍒�${seconds < 10 ? '0' + seconds : seconds}绉抈 + }, // 鑾峰彇鍒楄〃 - search() { + search () { this.listLoading = true examPaperAnswerApi.page(this.queryParam).then(re => { this.tableData = re.data.list @@ -101,29 +111,29 @@ this.listLoading = false }) }, - view(row) { - this.$router.push({ path: '/answer/answer-detail', query: { id: row.id } }); + view (row) { + this.$router.push({ path: '/answer/answer-detail', query: { id: row.id } }) }, - handleExport() { + handleExport () { let that = this - let url = '/api/admin/examPaperAnswer/exportExcel?userName=' + this.queryParam.userName; - if (this.queryParam.userId) url += '&userId=' + this.queryParam.userId; - if (this.queryParam.examId) url += '&examId=' + this.queryParam.examId; - var x = new XMLHttpRequest(); - x.open("POST", url, true); - x.responseType = "blob"; + let url = '/api/admin/examPaperAnswer/exportExcel?userName=' + this.queryParam.userName + if (this.queryParam.userId) url += '&userId=' + this.queryParam.userId + if (this.queryParam.examId) url += '&examId=' + this.queryParam.examId + var x = new XMLHttpRequest() + x.open('POST', url, true) + x.responseType = 'blob' x.onload = function () { - var url = window.URL.createObjectURL(x.response); - var a = document.createElement("a"); - a.href = url; - if (that.queryParam.examId) a.download = that.tableData[0].examName + '.xlsx'; - if (that.queryParam.userId) a.download = that.tableData[0].userName + '.xlsx'; - a.click(); - }; - x.send(); + var url = window.URL.createObjectURL(x.response) + var a = document.createElement('a') + a.href = url + if (that.queryParam.examId) a.download = that.tableData[0].examName + '.xlsx' + if (that.queryParam.userId) a.download = that.tableData[0].userName + '.xlsx' + a.click() + } + x.send() } } -}; +} </script> <style scoped lang="scss"> .flex { diff --git a/src/views/exam/exam/ExamManage.vue b/src/views/exam/exam/ExamManage.vue index 742481a..e4c5765 100644 --- a/src/views/exam/exam/ExamManage.vue +++ b/src/views/exam/exam/ExamManage.vue @@ -35,10 +35,10 @@ label="鍙傝�冪彮绾�" 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" @@ -81,8 +81,10 @@ <el-button slot="reference" type="danger" size="small">鍒犻櫎</el-button> </el-popconfirm> - <el-button v-if="scope.row.status === 'finished'" type="success" size="small" @click="markPaper(scope.row)">闃呭嵎</el-button> - <el-button type="danger" size="small" @click="deleteExam(scope.row.id)">鍒犻櫎</el-button> + <el-button v-if="scope.row.status === 'finished'" type="success" size="small" @click="markPaper(scope.row)"> + 闃呭嵎 + </el-button> + <el-button type="danger" size="small" @click="deleteExam(scope.row)">鍒犻櫎</el-button> <el-button type="warning" size="small" @click="monitor(scope.row)">鐩戞帶</el-button> </template> </el-table-column> @@ -245,16 +247,22 @@ 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, - time: [row.startTime, row.endTime] + time: [row.startTime, row.endTime] } this.title = '淇敼鑰冭瘯' this.open = true diff --git a/src/views/exam/exam/MarkPaper.vue b/src/views/exam/exam/MarkPaper.vue index 3586dfd..77dca0d 100644 --- a/src/views/exam/exam/MarkPaper.vue +++ b/src/views/exam/exam/MarkPaper.vue @@ -91,7 +91,6 @@ mounted () { this.examInfo.examName = this.$route.query.examName this.examInfo.examId = this.$route.query.examId - console.log('------->' + this.examInfo.examName + '------->' + this.examInfo.examId) if (this.examInfo.examId) { this.getExamInfo() } diff --git a/src/views/exam/exam/MarkPaperDetail.vue b/src/views/exam/exam/MarkPaperDetail.vue index ef466f7..70319d6 100644 --- a/src/views/exam/exam/MarkPaperDetail.vue +++ b/src/views/exam/exam/MarkPaperDetail.vue @@ -56,6 +56,7 @@ </el-row> </el-form> </div> + <el-empty v-if="empty" style="width:1200px;height:500px;"></el-empty> </div> </template> @@ -71,11 +72,13 @@ getStudentExam(this.$route.query.examId, this.$route.query.userId).then(re => { this.formLoading = true this.form = re.data.data + if (!this.form.titleItems) this.empty = true; this.formLoading = false }) }, data () { return { + empty: false, paperQuestionList: [], form: {}, formLoading: false, diff --git a/src/views/exam/exam/monitor.vue b/src/views/exam/exam/monitor.vue index e43fad8..90695bb 100644 --- a/src/views/exam/exam/monitor.vue +++ b/src/views/exam/exam/monitor.vue @@ -10,11 +10,11 @@ </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-popover @@ -23,7 +23,7 @@ trigger="click"> <el-form :model="addTimeForm" ref="addTimeForm" :rules="addTimeRule"> <el-form-item label="瀛﹀憳"> - <div>{{row.userName}}</div> + <div>{{ row.userName }}</div> </el-form-item> <el-form-item label="鍔犲灏戝垎閽�"> <el-input v-model="addTimeForm.addTimeM" type="number" size="small"/> @@ -45,15 +45,15 @@ </el-table-column> </el-table> <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" :limit.sync="queryParam.pageSize" - @pagination="search" /> + @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> @@ -74,7 +74,7 @@ export default { components: { Pagination }, - data() { + data () { return { listLoading: true, queryParam: { @@ -117,18 +117,19 @@ { required: true, message: '璇疯緭鍏ュ姞鏃舵椂闂�', trigger: 'blur' } ] }, - }; + } }, - created() { - this.queryParam.examId = this.$route.query.examId; + created () { + this.queryParam.examId = this.$route.query.examId this.search() }, methods: { // 澶勭悊鍔犳椂 - handlerAddTime() { + 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('鍔犳椂鎴愬姛') }) @@ -136,28 +137,30 @@ }) }, // 寮哄埗浜ゅ嵎 - handlerForceSubmit(userId) { + 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 }; + handleNullify (row) { + let cheatObj = { examId: row.examId, cheatUser: row.userId } cheatApi.edit(cheatObj).then(res => { - this.$message.success(res.message); + this.$message.success(res.message) }) }, - statusFormatter(row) { + 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 @@ -168,17 +171,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 === '绂佺敤' ? '鍚敤' : '绂佺敤' @@ -192,7 +195,7 @@ } }) }, - deletecheat(row) { + deletecheat (row) { let _this = this cheatApi.deletecheat(row.id).then(re => { if (re.code === 1) { @@ -203,7 +206,7 @@ } }) }, - submitForm() { + submitForm () { let _this = this this.$refs.form.validate((valid) => { if (valid) { @@ -223,7 +226,7 @@ } }) }, - resetForm() { + resetForm () { let lastId = this.form.id this.$refs['form'].resetFields() this.form.id = lastId diff --git a/src/views/meet/index.vue b/src/views/meet/index.vue index 3586391..d186859 100644 --- a/src/views/meet/index.vue +++ b/src/views/meet/index.vue @@ -34,6 +34,7 @@ jitsiApi.addListener('readyToClose', () => { window.close() }) + } } -- Gitblit v1.8.0