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