From 3075f9a9b48f02ec427940797bea03ded3e45cd0 Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期四, 04 七月 2024 15:12:40 +0800
Subject: [PATCH] feat:成绩列表

---
 src/api/modules/grade.js                 |    6 +++
 src/views/grade-list/index.vue           |   23 ++++++++++-
 components.d.ts                          |   12 ------
 src/views/grade-list/data-list/index.vue |   36 ++++++++++++++---
 4 files changed, 55 insertions(+), 22 deletions(-)

diff --git a/components.d.ts b/components.d.ts
index 8770ace..e5ce19c 100644
--- a/components.d.ts
+++ b/components.d.ts
@@ -7,24 +7,15 @@
 /* prettier-ignore */
 declare module 'vue' {
   export interface GlobalComponents {
-    ElAvatar: typeof import('element-plus/es')['ElAvatar']
     ElButton: typeof import('element-plus/es')['ElButton']
     ElCard: typeof import('element-plus/es')['ElCard']
     ElCol: typeof import('element-plus/es')['ElCol']
-    ElCollapse: typeof import('element-plus/es')['ElCollapse']
-    ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']
-    ElCountdown: typeof import('element-plus/es')['ElCountdown']
-    ElDialog: typeof import('element-plus/es')['ElDialog']
-    ElForm: typeof import('element-plus/es')['ElForm']
-    ElFormItem: typeof import('element-plus/es')['ElFormItem']
     ElIcon: typeof import('element-plus/es')['ElIcon']
     ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
     ElInput: typeof import('element-plus/es')['ElInput']
     ElPagination: typeof import('element-plus/es')['ElPagination']
-    ElProgress: typeof import('element-plus/es')['ElProgress']
     ElRow: typeof import('element-plus/es')['ElRow']
     ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
-    ElSlider: typeof import('element-plus/es')['ElSlider']
     ElTable: typeof import('element-plus/es')['ElTable']
     ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
     ElTabPane: typeof import('element-plus/es')['ElTabPane']
@@ -33,9 +24,6 @@
     ExamAudio: typeof import('./src/components/ExamAudio/index.vue')['default']
     ExamInfo: typeof import('./src/components/ExamInfo/index.vue')['default']
     ExamInfoDialog: typeof import('./src/components/ExamInfoDialog/index.vue')['default']
-    Header: typeof import('./src/components/Header/index.vue')['default']
-    HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
-    ImageViewer: typeof import('./src/components/ImageViewer/index.vue')['default']
     NormalHeader: typeof import('./src/components/NormalHeader/index.vue')['default']
     PDFViewer: typeof import('./src/components/PDFViewer/index.vue')['default']
     PDFVIewer: typeof import('./src/components/PDFVIewer/index.vue')['default']
diff --git a/src/api/modules/grade.js b/src/api/modules/grade.js
new file mode 100644
index 0000000..584f81d
--- /dev/null
+++ b/src/api/modules/grade.js
@@ -0,0 +1,6 @@
+import service from "@/api";
+
+
+export const getGradeList = (postData = {examName: '', pageIndex: 1, pageSize: 10}) => {
+  return service.post('/api/student/exampaper/answer/pageList',postData);
+}
\ No newline at end of file
diff --git a/src/views/grade-list/data-list/index.vue b/src/views/grade-list/data-list/index.vue
index ce5c3bb..3a2ca5b 100644
--- a/src/views/grade-list/data-list/index.vue
+++ b/src/views/grade-list/data-list/index.vue
@@ -1,11 +1,11 @@
 <template>
   <div class="list-container w-full h-full">
     <el-scrollbar>
-      <el-card shadow="hover" class="mb-3">
+      <el-card shadow="hover" class="mb-3" v-for="item in props.dataList">
         <div class="item flex justify-between items-center">
           <div class="left-container flex flex-col justify-between">
             <div class="top-container flex items-center">
-              <div class="title mr-5 text-xl font-bold">娴嬭瘯娴嬭瘯娴嬭瘯娴嬭瘯娴嬭瘯</div>
+              <div class="title mr-5 text-xl font-bold">{{ item.examName }}</div>
               <div class="tag">
                 <el-tag type="primary" effect="light" round>
                   宸叉壒鏀�
@@ -20,19 +20,19 @@
             </div>
             <div class="bottom-container flex text-sm text-gray-400 mb-3">
               <div class="bottom-item">
-                鎬诲垎: 100
+                鎬诲垎: {{ item.totalScore }}
               </div>
               <div class="bottom-item">
-                棰樻暟: 20
+                棰樻暟: {{ item.questionCount}}
               </div>
               <div class="bottom-item">
-                绛旈鏃堕棿: 20鍒嗛挓
+                绛旈鏃堕棿: {{item.doTime / 60 }}鍒嗛挓
               </div>
             </div>
 
             <div class="grade-container flex items-center text-red-600">
               <div class="grade-label mr-1">鎴愮哗:</div>
-              <div class="grade-num text-lg font-bold">60</div>
+              <div class="grade-num text-lg font-bold">{{ item.score }}</div>
             </div>
           </div>
           <div class="right-container">
@@ -52,7 +52,29 @@
 import { Timer } from '@element-plus/icons-vue';
 import {useRouter} from 'vue-router';
 const router = useRouter();
-
+const props = defineProps({
+  dataList: {
+    type: Array,
+    default: () => []
+  }
+});
+const stateList = {
+  1: {
+    text: '鏈紑濮�',
+    type: 'primary',
+    disabled: true
+  },
+  'ing': {
+    text: '杩涜涓�',
+    type: 'success',
+    disabled: false
+  },
+  'finished': {
+    text: '宸茬粨鏉�',
+    type: 'info',
+    disabled: true
+  }
+};
 const checkExam = () => {
   router.push('/grade');
 }
diff --git a/src/views/grade-list/index.vue b/src/views/grade-list/index.vue
index ef07006..cbcff04 100644
--- a/src/views/grade-list/index.vue
+++ b/src/views/grade-list/index.vue
@@ -22,8 +22,8 @@
               </div>
 
               <div class="card-main flex-1 my-5 relative">
-                <div class="main-content absolute top-0 bottom-0 left-0 right-0">
-                  <DataList></DataList>
+                <div class="main-content absolute top-0 bottom-0 left-0 right-0" v-loading="loading">
+                  <DataList :dataList="dataList"></DataList>
                 </div>
               </div>
 
@@ -43,8 +43,26 @@
 import NormalHeader from '@/components/NormalHeader/index.vue';
 import DataList from './data-list/index.vue';
 import { Search } from '@element-plus/icons-vue';
+import { getGradeList } from '@/api/modules/grade.js';
+
 const activeName = ref('1');
 const searchText = ref('');
+const loading = ref(false);
+
+const dataList = ref([]);
+
+const getData = () => {
+  loading.value = true;
+  getGradeList().then(res => {
+    dataList.value = res.data.list;
+    loading.value = false;
+  }).catch(err => {
+    loading.value = false;
+  });
+};
+
+getData();
+
 const handleClick = (tab, event) => {
 };
 </script>
@@ -53,5 +71,4 @@
 :deep(.el-tabs__nav-wrap:after) {
   display: none;
 }
-
 </style>
\ No newline at end of file

--
Gitblit v1.8.0