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