From e7ea50917403199d7cfc25ba201b443f519db104 Mon Sep 17 00:00:00 2001 From: 17808 <1780814303@qq.com> Date: 星期二, 07 十一月 2023 17:45:28 +0800 Subject: [PATCH] 成绩统计前端 --- src/views/answer/achievementStatistics.vue | 81 ++++++++++++++++++++ src/views/exam/gradeDetails/list.vue | 85 +++++++++++++++++++++ src/api/AchievementStatistics.js | 6 + src/router.js | 13 +++ src/views/exam/paper/edit.vue | 4 5 files changed, 186 insertions(+), 3 deletions(-) diff --git a/src/api/AchievementStatistics.js b/src/api/AchievementStatistics.js new file mode 100644 index 0000000..7866cdb --- /dev/null +++ b/src/api/AchievementStatistics.js @@ -0,0 +1,6 @@ +import { post } from '@/utils/request' + +export default { + page: query => post('/api/admin/examPaperGrade/page', query), + gradeDetails: query => post('/api/admin/examPaperGrade/details', query) +} diff --git a/src/router.js b/src/router.js index 0d021b0..dd4ace5 100644 --- a/src/router.js +++ b/src/router.js @@ -247,6 +247,19 @@ component: () => import('@/views/answer/sheetStatistics.vue'), name: 'AnswerPageList', meta: { title: '绛斿嵎缁熻', noCache: true } + }, + { + path: 'achievementStatistics', + component: () => import('@/views/answer/achievementStatistics.vue'), + name: 'AnswerPageList', + meta: { title: '鎴愮哗缁熻', noCache: true } + }, + { + path: 'achievementStatistics/gradeDetails', + component: () => import('@/views/exam/gradeDetails/list.vue'), + name: 'AnswerPageList', + meta: { title: '鎴愮哗缁熻璇︽儏', noCache: true, activeMenu: '/exam/gradeDetails/list' }, + hidden: true } ] }, diff --git a/src/views/answer/achievementStatistics.vue b/src/views/answer/achievementStatistics.vue new file mode 100644 index 0000000..64e6fc0 --- /dev/null +++ b/src/views/answer/achievementStatistics.vue @@ -0,0 +1,81 @@ +<template> + <div class="app-container"> +<!-- <el-form :model="queryParam" ref="queryForm" :inline="true " style="display: flex">--> +<!-- <el-form-item label="瀛︾敓锛�" >--> +<!-- <el-input v-model="queryParam.userName"></el-input>--> +<!-- </el-form-item>--> +<!-- <el-form-item label="璇曞嵎棰樼洰锛�">--> +<!-- <el-input v-model="queryParam.paperName"></el-input>--> +<!-- </el-form-item>--> +<!-- <el-form-item>--> +<!-- <el-button type="primary" @click="submitForm">鏌ヨ</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 prop="userName" label="鑰冪敓鍚嶇О"/> + <el-table-column prop="counts" label="鑰冭瘯娆℃暟" width="160px"/> + <el-table-column label="鎿嶄綔" align="center" width="300px"> + <template slot-scope="{row}"> + <el-button size="mini" @click="$router.push({path:'/answer/achievementStatistics/gradeDetails',query:{id:row.id,userId:row.userId,createUser:row.createUser}})" >鏌ョ湅</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/examPaperAnwser' +import AchievementStatistics from "@/api/AchievementStatistics"; + +export default { + components: { Pagination }, + data () { + return { + avgSource:null, + queryParam: { + paperName:'', + userName:'', + subjectId: null, + pageIndex: 1, + pageSize: 10 + }, + listLoading: false, + tableData: [], + total: 0 + } + }, + created () { + this.initSubject() + this.search() + }, + methods: { + search () { + this.listLoading = true + AchievementStatistics.page(this.queryParam).then(data => { + const re = data.response + this.avgSource = re.list[0].avgSource + this.tableData = re.list + this.total = re.total + this.queryParam.pageIndex = re.pageNum + this.listLoading = false + }) + }, + submitForm () { + this.queryParam.pageIndex = 1 + this.search() + }, + ...mapActions('exam', { initSubject: 'initSubject' }) + }, + computed: { + ...mapGetters('enumItem', ['enumFormat']), + ...mapGetters('exam', ['subjectEnumFormat']), + ...mapState('exam', { subjects: state => state.subjects }) + } +} +</script> diff --git a/src/views/exam/gradeDetails/list.vue b/src/views/exam/gradeDetails/list.vue new file mode 100644 index 0000000..945de14 --- /dev/null +++ b/src/views/exam/gradeDetails/list.vue @@ -0,0 +1,85 @@ +<template> + <div class="app-container"> +<!-- <el-form :model="queryParam" ref="queryForm" :inline="true">--> +<!-- <el-form-item label="鐢ㄦ埛鍚嶏細">--> +<!-- <el-input v-model="queryParam.userName" clearable></el-input>--> +<!-- </el-form-item>--> +<!-- <el-form-item label="妯℃澘鍚嶏細">--> +<!-- <el-input v-model="queryParam.templatesName" clearable></el-input>--> +<!-- </el-form-item>--> +<!-- <el-form-item>--> +<!-- <el-button type="primary" @click="submitForm">鏌ヨ</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 prop="paperName" label="璇曞嵎鍚嶇О" /> + <el-table-column label="寰楀垎" width="100px" > + <template slot-scope="{row}"> + {{row.userScore}} / {{row.paperScore}} + </template> + </el-table-column> + <el-table-column label="棰樼洰瀵归敊" width="80px" > + <template slot-scope="{row}"> + {{row.questionCorrect}} / {{row.questionCount}} + </template> + </el-table-column> + <el-table-column prop="doTime" label="鑰楁椂" width="100px"/> + <el-table-column prop="formattedTime" label="鎻愪氦鏃堕棿" width="160px"/> + </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 examPaperApi from '@/api/examPaper' +import AchievementStatistics from "@/api/AchievementStatistics"; + +export default { + components: { Pagination }, + data () { + return { + queryParam: { + pageIndex: 1, + pageSize: 10, + id:'', + userId:'' + }, + subjectFilter: null, + listLoading: true, + tableData: [], + total: 0, + } + }, + created () { + + }, + mounted () { + this.queryParam.id=this.$route.query.id + this.queryParam.userId=this.$route.query.userId + this.queryParam.createUser=this.$route.query.createUser + this.search() + }, + methods: { + submitForm () { + this.queryParam.pageIndex = 1 + this.search() + }, + search () { + this.listLoading = true + AchievementStatistics.gradeDetails(this.queryParam).then(data => { + const re = data.response + this.tableData = re.list + this.total = re.total + this.queryParam.pageIndex = re.pageNum + this.listLoading = false + }) + }, + + }, + +} +</script> diff --git a/src/views/exam/paper/edit.vue b/src/views/exam/paper/edit.vue index c0fe145..fa3904a 100644 --- a/src/views/exam/paper/edit.vue +++ b/src/views/exam/paper/edit.vue @@ -135,7 +135,7 @@ components: { Pagination, QuestionShow }, data () { return { - props: { + props: { multiple: true // lazy: true, // lazyLoad (node, resolve) { @@ -296,8 +296,6 @@ }, submitForm () { let _this = this - console.log(this.subjectIdList) - console.log(this.form.subjectSource) this.$refs.form.validate((valid) => { if (valid) { this.formLoading = true; -- Gitblit v1.8.0