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