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