ZhangXianQiang
2024-07-04 3075f9a9b48f02ec427940797bea03ded3e45cd0
feat:成绩列表
3个文件已修改
1个文件已添加
77 ■■■■ 已修改文件
components.d.ts 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/modules/grade.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/grade-list/data-list/index.vue 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/grade-list/index.vue 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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']
src/api/modules/grade.js
New file
@@ -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);
}
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');
}
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>