From c6b7d277ca7f0449155d544d5bfdf57b5ec0fa7e Mon Sep 17 00:00:00 2001 From: 龚焕茏 <2842157468@qq.com> Date: 星期四, 11 七月 2024 14:55:36 +0800 Subject: [PATCH] feat:答卷次数列表 --- src/views/answer/info.vue | 16 ++++++-- src/views/answer/user.vue | 75 +++++++++++++++++++++++++++++++++++++ src/views/answer/list.vue | 4 +- src/api/examPaperAnswer.js | 1 src/router.js | 10 ++++- 5 files changed, 98 insertions(+), 8 deletions(-) diff --git a/src/api/examPaperAnswer.js b/src/api/examPaperAnswer.js index d5dad9c..0a02a80 100644 --- a/src/api/examPaperAnswer.js +++ b/src/api/examPaperAnswer.js @@ -3,5 +3,6 @@ export default { page: query => post('/api/admin/examPaperAnswer/page', query), pageExamPaper: query => post('/api/admin/examPaperAnswer/pageExamPaper', query), + pageUser: query => post('/api/admin/examPaperAnswer/pageUser', query), read: id => post('/api/admin/examPaperAnswer/read/' + id) } diff --git a/src/router.js b/src/router.js index 0391f7c..41f3fee 100644 --- a/src/router.js +++ b/src/router.js @@ -305,13 +305,13 @@ alwaysShow: true, children: [ { - path: 'list', + path: 'answer-list', component: () => import('@/views/answer/list'), name: 'AnswerPageList', meta: { title: '绛斿嵎鍒楄〃', noCache: true } }, { - path: 'answer-list', + path: 'answer-info', component: () => import('@/views/answer/info'), name: 'answerList', meta: { title: '绛斿嵎淇℃伅', noCache: true }, @@ -323,6 +323,12 @@ name: 'answerDetail', meta: { title: '绛斿嵎璇︽儏', noCache: true }, hidden: true + }, + { + path: 'answer-user', + component: () => import('@/views/answer/user'), + name: 'AnswerPageList', + meta: { title: '绛斿嵎娆℃暟', noCache: true } } ] }, diff --git a/src/views/answer/info.vue b/src/views/answer/info.vue index 9ee90b1..d9de560 100644 --- a/src/views/answer/info.vue +++ b/src/views/answer/info.vue @@ -10,6 +10,9 @@ <div> <el-form :inline="true" :model="queryParam" class="demo-form-inline" label-width="80px"> <el-form-item> + <el-input v-model="queryParam.examName" placeholder="璇疯緭鍏ヨ�冭瘯鍚嶇О" clearable></el-input> + </el-form-item> + <el-form-item> <el-input v-model="queryParam.userName" placeholder="璇疯緭鍏ョ敤鎴峰悕绉�" clearable></el-input> </el-form-item> <el-form-item> @@ -69,6 +72,7 @@ listLoading: true, queryParam: { examId: '', + userId: '', userName: '', pageIndex: 1, pageSize: 10 @@ -81,8 +85,9 @@ }; }, created() { - this.queryParam.examId = this.$route.query.id - this.search() + this.queryParam.examId = this.$route.query.id; + this.queryParam.userId = this.$route.query.userId; + this.search(); }, methods: { // 鑾峰彇鍒楄〃 @@ -101,7 +106,9 @@ }, handleExport() { let that = this - let url = '/api/admin/examPaperAnswer/exportExcel?examId=' + this.queryParam.examId + '&userName=' + this.queryParam.userName + 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"; @@ -109,7 +116,8 @@ var url = window.URL.createObjectURL(x.response); var a = document.createElement("a"); a.href = url; - a.download = that.tableData[0].examName + '.xlsx'; + 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(); diff --git a/src/views/answer/list.vue b/src/views/answer/list.vue index dd8f1a9..4dd621c 100644 --- a/src/views/answer/list.vue +++ b/src/views/answer/list.vue @@ -20,7 +20,7 @@ <el-table v-loading="listLoading" :data="tableData" border style="width: 100%;"> <el-table-column align="center" prop="examName" label="鑰冭瘯鍚嶇О" /> <el-table-column align="center" prop="paperName" label="璇曞嵎鍚嶇О" /> - <el-table-column align="center" prop="subjectName" label="绉戠洰" /> + <!-- <el-table-column align="center" prop="subjectName" label="绉戠洰" /> --> <el-table-column align="center" prop="paperType" label="璇曞嵎绫诲瀷" width="150px"> <template slot-scope="{row}"> <span v-if="row.paperType === 1">鍥哄畾璇曞嵎</span> @@ -87,7 +87,7 @@ }) }, view(row) { - this.$router.push({ path: '/answer/answer-list', query: { id: row.id } }); + this.$router.push({ path: '/answer/answer-info', query: { id: row.id } }); }, ...mapActions('exam', { initSubject: 'initSubject' }) }, diff --git a/src/views/answer/user.vue b/src/views/answer/user.vue new file mode 100644 index 0000000..14b6daf --- /dev/null +++ b/src/views/answer/user.vue @@ -0,0 +1,75 @@ +<template> + <div class="app-container"> + <el-form :inline="true" :model="queryParam" class="demo-form-inline" label-width="80px"> + <el-form-item> + <el-input v-model="queryParam.name" placeholder="璇疯緭鍏ュ鍚�" clearable></el-input> + </el-form-item> + <el-form-item> + <el-button style="width:100px;" type="primary" size="small" @click="search()">鏌ヨ</el-button> + </el-form-item> + </el-form> + + <el-table v-loading="listLoading" :data="tableData" border style="width: 100%;"> + <el-table-column align="center" prop="userName" label="濮撳悕" /> + <el-table-column align="center" prop="examCount" label="鑰冭瘯娆℃暟" /> + <el-table-column label="鎿嶄綔" align="center"> + <template slot-scope="{row}"> + <el-button size="mini" @click="view(row)">鏌ョ湅</el-button> + </template> + </el-table-column> + </el-table> + <pagination v-show="total > 0" :total="total" :page.sync="queryParam.pageIndex" + :limit.sync="queryParam.pageSize" @pagination="search" /> + </div> +</template> + +<script> + +import { mapGetters, mapState, mapActions } from 'vuex' +import Pagination from '@/components/Pagination' +import examPaperAnswerApi from '@/api/examPaperAnswer' + +export default { + components: { Pagination }, + data () { + return { + listLoading: true, + queryParam: { + name: '', + pageIndex: 1, + pageSize: 10 + }, + formLoading: false, + total: 0, + tableData: [], + visible: false + }; + }, + created () { + this.initSubject() + this.search() + }, + methods: { + // 鑾峰彇鍒楄〃 + search() { + this.listLoading = true + examPaperAnswerApi.pageUser(this.queryParam).then(re => { + this.tableData = re.data.list + this.total = re.data.total + this.queryParam.pageSize = re.data.pageSize + this.queryParam.pageIndex = re.data.pageNum + this.listLoading = false + }) + }, + view(row) { + this.$router.push({ path: '/answer/answer-info', query: { userId: row.id } }); + }, + ...mapActions('exam', { initSubject: 'initSubject' }) + }, + computed: { + ...mapGetters('enumItem', ['enumFormat']), + ...mapGetters('exam', ['subjectEnumFormat']), + ...mapState('exam', { subjects: state => state.subjects }) + } +} +</script> -- Gitblit v1.8.0