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