src/router.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/answer/info.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/exam/exam/ExamManage.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/exam/exam/MarkPaper.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/exam/exam/MarkPaperDetail.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/exam/exam/monitor.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/views/meet/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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') }, } ] }, 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 { 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 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() } 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, 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 src/views/meet/index.vue
@@ -34,6 +34,7 @@ jitsiApi.addListener('readyToClose', () => { window.close() }) } }