From cce9b105726750f1b76eef2fa250680ebf36d06c Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期五, 08 十一月 2024 09:54:45 +0800
Subject: [PATCH] 完成教师端,页面顶部展示

---
 src/views/dashboard/index.vue |  113 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 src/api/examPaperAnswer.js    |    3 +
 2 files changed, 109 insertions(+), 7 deletions(-)

diff --git a/src/api/examPaperAnswer.js b/src/api/examPaperAnswer.js
index 0a02a80..7a339f9 100644
--- a/src/api/examPaperAnswer.js
+++ b/src/api/examPaperAnswer.js
@@ -4,5 +4,6 @@
   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)
+  read: id => post('/api/admin/examPaperAnswer/read/' + id),
+  queryMaxAndMinScore: id => post('/api/admin/examPaperAnswer/queryMaxAndMinScore/' + id),
 }
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
index 5428283..53dfcae 100644
--- a/src/views/dashboard/index.vue
+++ b/src/views/dashboard/index.vue
@@ -1,9 +1,9 @@
 <template>
   <div class="dashboard-container">
     <el-row :gutter="40" class="panel-group">
-      <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
+      <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col" >
         <div class="card-panel">
-          <el-row class="panel-group">
+          <el-row class="panel-group" :gutter="20">
             <div class="card-panel-icon-wrapper icon-people">
               <svg-icon icon-class="list" class-name="card-panel-icon"/>
             </div>
@@ -18,12 +18,44 @@
             <el-button type="primary" size="small" @click="getExamList">鏌ヨ</el-button>
           </el-row>
           <el-row class="panel-group">
-            <el-table :data="examList" style="width: 100%;" height="430">
+            <el-table :data="examList" style="width: 100%;" height="430" @row-click="handleRowClick">
               <el-table-column label="鑰冭瘯鍚嶇О" prop="examName"></el-table-column>
               <el-table-column label="鑰冭瘯鐘舵��" prop="status"></el-table-column>
             </el-table>
           </el-row>
         </div>
+      </el-col>
+      <el-col :span="18">
+        <el-row>
+          <el-col :xs="12" :sm="12" :lg="6" class="card-panel-col">
+            <div class="nameClass">
+              <p class="examInfo-text">褰撳墠鑰冭瘯锛歿{examInfo.currentExamName}}</p>
+            </div>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="5" class="card-panel-col">
+            <div class="nameClass">
+              <p class="examInfo-text">搴旇�冧汉鏁帮細{{examInfo.toUserCount}}</p>
+            </div>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="5" class="card-panel-col">
+            <div class="nameClass">
+              <p class="examInfo-text">缂鸿�冧汉鏁帮細{{examInfo.missUserCount}}</p>
+            </div>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="4" class="card-panel-col">
+            <div class="nameClass">
+              <p class="examInfo-text">鏈�楂樺垎锛歿{examInfo.maxScore}}</p>
+            </div>
+          </el-col>
+          <el-col :xs="12" :sm="12" :lg="4" class="card-panel-col">
+            <div class="nameClass">
+              <p class="examInfo-text">鏈�浣庡垎锛歿{examInfo.minScore}}</p>
+            </div>
+          </el-col>
+        </el-row>
+        <el-row>
+
+        </el-row>
       </el-col>
     </el-row>
     <el-row class="echarts-line">
@@ -39,8 +71,11 @@
 import resize from './components/mixins/resize'
 import CountTo from 'vue-count-to'
 import dashboardApi from '@/api/dashboard'
-import {getExamList} from "@/api/exam";
-import exam from "@/store/modules/exam";
+import {getExamList} from "@/api/exam"
+import exam from "@/store/modules/exam"
+import examPaperAnswerApi from '@/api/examPaperAnswer'
+
+
 export default {
   mixins: [resize],
   components: {
@@ -53,6 +88,18 @@
       // 鑰冭瘯鏌ヨ鏉′欢
       query:{
         examName: '',
+      },
+      examInfo:{
+        // 鑰冭瘯鍚嶇О
+        currentExamName: '',
+        // 搴斿埌浜烘暟
+        toUserCount: 0,
+        // 缂鸿�冧汉鏁�
+        missUserCount: 0,
+        // 鏈�楂樺垎
+        maxScore: 0,
+        // 鏈�浣庡垎
+        minScore: 0,
       },
       examPaperCount: 0,
       questionCount: 0,
@@ -82,11 +129,34 @@
     })
   },
   methods: {
+    // 鑾峰彇鑰冭瘯鍒楄〃
     getExamList() {
       let _this = this
       getExamList(this.query).then(res => {
         let response = res.data
         _this.examList = response.data
+      })
+    },
+    // 鐐瑰嚮鑰冭瘯鍒楄〃鏇存柊鑰冭瘯鏁版嵁
+    handleRowClick(row){
+      // 鑾峰彇褰撳墠鑰冭瘯鍚嶇О
+      this.examInfo.currentExamName = row.examName
+      // 鑾峰彇搴斿埌瀹炲埌浜烘暟
+      examPaperAnswerApi.pageExamPaper({examId: row.id, pageIndex: 1, pageSize: 10}).then(res => {
+        let response = res.data.list[0]
+        this.examInfo.toUserCount = response.personTotalNum
+        this.examInfo.missUserCount = this.examInfo.toUserCount - response.personAnswerNum
+      })
+      // 鑾峰彇鏈満鑰冭瘯鐨勬渶楂樺垎鍜屾渶浣庡垎
+      examPaperAnswerApi.queryMaxAndMinScore(row.id).then(res => {
+        let data = res.data
+        if (!data || data.length === 0) {
+          this.examInfo.maxScore = 0
+          this.examInfo.minScore = 0
+        }else {
+          this.examInfo.maxScore = data[0].totalScore
+          this.examInfo.minScore = data[1].totalScore
+        }
       })
     },
     option (title, formatter, label, vaule) {
@@ -172,10 +242,24 @@
 }
 
 .panel-group {
-  margin-top: 8px;
+  margin-top: 0px;
 
   .card-panel-col {
+    padding: 10px;
     margin-bottom: 32px;
+  }
+
+  .card-panel2 {
+    height: 100px;
+    width: 100%;
+    cursor: pointer;
+    font-size: 12px;
+    position: relative;
+    overflow: hidden;
+    color: #666;
+    background: #fff;
+    box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
+    border-color: rgba(0, 0, 0, .05);
   }
 
   .card-panel {
@@ -284,4 +368,21 @@
   padding:16px 16px 0;
   margin-bottom:32px;
 }
+
+.examInfo-text {
+  line-height: 18px;
+  color: rgba(0, 0, 0, 0.45);
+  font-size: 16px;
+  margin-bottom: 12px;
+}
+
+.nameClass {
+  width: 100%;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  height: 70px;
+  background-color: white;
+}
 </style>

--
Gitblit v1.8.0