You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
<template>
|
|
|
|
|
|
<div class="test-report app-container">
|
|
|
|
|
|
<h2>实验报告</h2>
|
|
|
|
|
|
<el-row class="student-info"><el-col :span="6">姓名:{{ userInfo.name }}</el-col><el-col :span="6">学号:{{ userInfo.username }}</el-col><el-col :span="8">班级:{{ report.teachingClassName || userInfo.className }}</el-col></el-row>
|
|
|
|
|
|
<el-card><template #header><span>实训总成绩:{{ report.totalScore || 0 }} 分</span><span class="rank">班级排名:{{ report.rank || '-' }}</span></template>
|
|
|
|
|
|
<el-table :data="report.modules || []" border><el-table-column prop="moduleName" label="实训模块"/><el-table-column label="权重"><template #default="{row}">{{ percent(row.weight) }}</template></el-table-column><el-table-column prop="score" label="模块成绩"/><el-table-column label="任务完成"><template #default="{row}">{{ row.completedTaskCount }} / {{ row.totalTaskCount }}</template></el-table-column></el-table>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
<el-card class="tasks"><template #header>实训任务明细</template>
|
|
|
|
|
|
<el-table :data="report.tasks || []" border><el-table-column prop="taskName" label="任务名称"/><el-table-column prop="moduleName" label="所属模块"/><el-table-column prop="progressStatus" label="完成状态"/><el-table-column prop="aiAssessmentScore" label="AI 评分"><template #default="{row}">{{ row.aiAssessmentScore ?? '-' }}</template></el-table-column></el-table>
|
|
|
|
|
|
</el-card>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
|
|
|
import { getCurrentExperimentReport } from '@/api/index';
|
|
|
|
|
|
import useUserStore from '@/store/modules/user';
|
|
|
|
|
|
const userInfo=useUserStore().userInfo; const report=ref({modules:[],tasks:[]});
|
|
|
|
|
|
const percent=(weight)=>weight==null?'-':`${Number(weight)*100}%`;
|
|
|
|
|
|
onMounted(async()=>{const res=await getCurrentExperimentReport(); report.value=res?.data||{modules:[],tasks:[]};});
|
|
|
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>.student-info{margin:20px 0}.rank{margin-left:24px}.tasks{margin-top:20px}</style>
|