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