|
@@ -12,12 +12,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="info-section">
|
|
<div class="info-section">
|
|
|
<h2>{{ studentInfo.name }} <span class="grade-tag">{{ studentInfo.grade }}</span></h2>
|
|
<h2>{{ studentInfo.name }} <span class="grade-tag">{{ studentInfo.grade }}</span></h2>
|
|
|
- <p class="student-id"><i class="el-icon-user"></i> 学号: {{ studentInfo.studentId }}</p>
|
|
|
|
|
- <p class="enrollment-date"><i class="el-icon-date"></i> 入学时间: {{ studentInfo.enrollmentDate }}</p>
|
|
|
|
|
- <div class="progress-ring">
|
|
|
|
|
- <el-progress type="circle" :percentage="75" :width="70" :stroke-width="8" color="#5b8cff"></el-progress>
|
|
|
|
|
- <span class="progress-label">学习进度</span>
|
|
|
|
|
- </div>
|
|
|
|
|
|
|
+ <p class="student-id"><i class="el-icon-user"></i> 联系方式: {{ studentInfo.studentId }}</p>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="stats-section">
|
|
<div class="stats-section">
|
|
|
<div class="stat-item">
|
|
<div class="stat-item">
|
|
@@ -49,16 +44,16 @@
|
|
|
<div class="reminder-content">
|
|
<div class="reminder-content">
|
|
|
<div class="reminder-item">
|
|
<div class="reminder-item">
|
|
|
<i class="el-icon-warning-outline reminder-icon"></i>
|
|
<i class="el-icon-warning-outline reminder-icon"></i>
|
|
|
- <span>数学作业截止日期:明天</span>
|
|
|
|
|
|
|
+ <span>实现一个基于二叉树的表达式求值器</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="reminder-item">
|
|
<div class="reminder-item">
|
|
|
<i class="el-icon-warning-outline reminder-icon"></i>
|
|
<i class="el-icon-warning-outline reminder-icon"></i>
|
|
|
- <span>英语测试:本周五</span>
|
|
|
|
|
|
|
+ <span>在一个n*n的二维迷宫中,求从出口到入口的最短路径</span>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="reminder-item">
|
|
|
|
|
|
|
+ <!-- <div class="reminder-item">
|
|
|
<i class="el-icon-warning-outline reminder-icon"></i>
|
|
<i class="el-icon-warning-outline reminder-icon"></i>
|
|
|
<span>物理实验报告:下周一</span>
|
|
<span>物理实验报告:下周一</span>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</div>
|
|
</div>
|
|
|
</el-card>
|
|
</el-card>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -70,7 +65,7 @@
|
|
|
<span><i class="el-icon-data-analysis"></i> 本周学习概览</span>
|
|
<span><i class="el-icon-data-analysis"></i> 本周学习概览</span>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="quick-stats-content">
|
|
<div class="quick-stats-content">
|
|
|
- <div class="stat-row">
|
|
|
|
|
|
|
+ <!-- <div class="stat-row">
|
|
|
<div class="stat-icon-wrapper">
|
|
<div class="stat-icon-wrapper">
|
|
|
<i class="el-icon-sunny"></i>
|
|
<i class="el-icon-sunny"></i>
|
|
|
</div>
|
|
</div>
|
|
@@ -78,7 +73,7 @@
|
|
|
<span class="stat-title">今日学习时长</span>
|
|
<span class="stat-title">今日学习时长</span>
|
|
|
<span class="stat-value highlight">{{ weeklyStats.today }}小时</span>
|
|
<span class="stat-value highlight">{{ weeklyStats.today }}小时</span>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
<div class="stat-row">
|
|
<div class="stat-row">
|
|
|
<div class="stat-icon-wrapper">
|
|
<div class="stat-icon-wrapper">
|
|
|
<i class="el-icon-timer"></i>
|
|
<i class="el-icon-timer"></i>
|
|
@@ -88,7 +83,7 @@
|
|
|
<span class="stat-value">{{ weeklyStats.week }}小时</span>
|
|
<span class="stat-value">{{ weeklyStats.week }}小时</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="stat-row">
|
|
|
|
|
|
|
+ <!-- <div class="stat-row">
|
|
|
<div class="stat-icon-wrapper">
|
|
<div class="stat-icon-wrapper">
|
|
|
<i class="el-icon-refresh"></i>
|
|
<i class="el-icon-refresh"></i>
|
|
|
</div>
|
|
</div>
|
|
@@ -96,7 +91,7 @@
|
|
|
<span class="stat-title">学习连续天数</span>
|
|
<span class="stat-title">学习连续天数</span>
|
|
|
<span class="stat-value">{{ weeklyStats.streak }}天</span>
|
|
<span class="stat-value">{{ weeklyStats.streak }}天</span>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
<div class="stat-row">
|
|
<div class="stat-row">
|
|
|
<div class="stat-icon-wrapper">
|
|
<div class="stat-icon-wrapper">
|
|
|
<i class="el-icon-flag"></i>
|
|
<i class="el-icon-flag"></i>
|
|
@@ -119,7 +114,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="stat-text">
|
|
<div class="stat-text">
|
|
|
<span class="stat-title">本周平均效率</span>
|
|
<span class="stat-title">本周平均效率</span>
|
|
|
- <span class="stat-value">78%</span>
|
|
|
|
|
|
|
+ <span class="stat-value">82%</span>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
@@ -133,7 +128,7 @@
|
|
|
<el-card class="study-records-card" shadow="hover">
|
|
<el-card class="study-records-card" shadow="hover">
|
|
|
<div slot="header" class="clearfix">
|
|
<div slot="header" class="clearfix">
|
|
|
<span><i class="el-icon-notebook-2"></i> 学习记录</span>
|
|
<span><i class="el-icon-notebook-2"></i> 学习记录</span>
|
|
|
- <div style="float: right;">
|
|
|
|
|
|
|
+ <!-- <div style="float: right;">
|
|
|
<el-button type="primary" size="mini" @click="showLearningChart" plain>
|
|
<el-button type="primary" size="mini" @click="showLearningChart" plain>
|
|
|
<i class="el-icon-data-line"></i> 学习趋势
|
|
<i class="el-icon-data-line"></i> 学习趋势
|
|
|
</el-button>
|
|
</el-button>
|
|
@@ -143,11 +138,11 @@
|
|
|
<el-button type="warning" size="mini" @click="exportRecords" plain>
|
|
<el-button type="warning" size="mini" @click="exportRecords" plain>
|
|
|
<i class="el-icon-download"></i> 导出记录
|
|
<i class="el-icon-download"></i> 导出记录
|
|
|
</el-button>
|
|
</el-button>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<!-- 新增:筛选条件 -->
|
|
<!-- 新增:筛选条件 -->
|
|
|
- <div class="filter-section">
|
|
|
|
|
|
|
+ <!-- <div class="filter-section">
|
|
|
<el-row :gutter="15">
|
|
<el-row :gutter="15">
|
|
|
<el-col :span="6">
|
|
<el-col :span="6">
|
|
|
<el-select v-model="filterSubject" placeholder="选择科目" size="small" clearable>
|
|
<el-select v-model="filterSubject" placeholder="选择科目" size="small" clearable>
|
|
@@ -175,7 +170,7 @@
|
|
|
<el-button size="small" @click="resetFilter">重置</el-button>
|
|
<el-button size="small" @click="resetFilter">重置</el-button>
|
|
|
</el-col>
|
|
</el-col>
|
|
|
</el-row>
|
|
</el-row>
|
|
|
- </div>
|
|
|
|
|
|
|
+ </div> -->
|
|
|
|
|
|
|
|
<el-table
|
|
<el-table
|
|
|
:data="learningRecords"
|
|
:data="learningRecords"
|
|
@@ -197,10 +192,11 @@
|
|
|
<el-tag size="medium" type="primary" effect="dark">{{ scope.row.duration }}</el-tag>
|
|
<el-tag size="medium" type="primary" effect="dark">{{ scope.row.duration }}</el-tag>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column prop="subject" label="科目" width="120" align="center">
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <el-table-column prop="subject" label="知识点" width="120" align="center">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
- <el-tag :type="getSubjectTagType(scope.row.subject)" effect="light" class="subject-tag">
|
|
|
|
|
- {{ scope.row.subject }}
|
|
|
|
|
|
|
+ <el-tag v-for="(val,index) in scope.row.subject" :key="`c_${index}`" effect="light" class="subject-tag">
|
|
|
|
|
+ {{ val }}
|
|
|
</el-tag>
|
|
</el-tag>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
@@ -214,16 +210,16 @@
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</el-table-column>
|
|
</el-table-column>
|
|
|
- <el-table-column label="操作" width="100" align="center">
|
|
|
|
|
|
|
+ <!-- <el-table-column label="操作" width="100" align="center">
|
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
|
<el-button size="mini" @click="viewDetail(scope.row)" type="text">
|
|
<el-button size="mini" @click="viewDetail(scope.row)" type="text">
|
|
|
<i class="el-icon-view"></i> 详情
|
|
<i class="el-icon-view"></i> 详情
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</template>
|
|
</template>
|
|
|
- </el-table-column>
|
|
|
|
|
|
|
+ </el-table-column> -->
|
|
|
</el-table>
|
|
</el-table>
|
|
|
|
|
|
|
|
- <el-pagination
|
|
|
|
|
|
|
+ <!-- <el-pagination
|
|
|
background
|
|
background
|
|
|
@current-change="handleCurrentChange"
|
|
@current-change="handleCurrentChange"
|
|
|
:current-page="currentPage"
|
|
:current-page="currentPage"
|
|
@@ -231,7 +227,7 @@
|
|
|
:total="totalRecords"
|
|
:total="totalRecords"
|
|
|
layout="total, prev, pager, next, jumper"
|
|
layout="total, prev, pager, next, jumper"
|
|
|
class="pagination">
|
|
class="pagination">
|
|
|
- </el-pagination>
|
|
|
|
|
|
|
+ </el-pagination> -->
|
|
|
|
|
|
|
|
<!-- 新增:学习总结 -->
|
|
<!-- 新增:学习总结 -->
|
|
|
<div class="summary-section">
|
|
<div class="summary-section">
|
|
@@ -243,7 +239,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="summary-content">
|
|
<div class="summary-content">
|
|
|
<div class="summary-title">本月总时长</div>
|
|
<div class="summary-title">本月总时长</div>
|
|
|
- <div class="summary-value">86.5 小时</div>
|
|
|
|
|
|
|
+ <div class="summary-value">2.5 小时</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -254,7 +250,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="summary-content">
|
|
<div class="summary-content">
|
|
|
<div class="summary-title">平均效率</div>
|
|
<div class="summary-title">平均效率</div>
|
|
|
- <div class="summary-value">76%</div>
|
|
|
|
|
|
|
+ <div class="summary-value">77.7%</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -265,7 +261,7 @@
|
|
|
</div>
|
|
</div>
|
|
|
<div class="summary-content">
|
|
<div class="summary-content">
|
|
|
<div class="summary-title">最佳科目</div>
|
|
<div class="summary-title">最佳科目</div>
|
|
|
- <div class="summary-value">数学</div>
|
|
|
|
|
|
|
+ <div class="summary-value">数据结构与算法</div>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|
|
|
</el-col>
|
|
</el-col>
|
|
@@ -388,66 +384,55 @@
|
|
|
<script>
|
|
<script>
|
|
|
import * as echarts from 'echarts'
|
|
import * as echarts from 'echarts'
|
|
|
|
|
|
|
|
|
|
+import store from '@/store'
|
|
|
|
|
+
|
|
|
export default {
|
|
export default {
|
|
|
name: 'learningProfile',
|
|
name: 'learningProfile',
|
|
|
|
|
+ mounted(){
|
|
|
|
|
+ console.log(store)
|
|
|
|
|
+ },
|
|
|
data() {
|
|
data() {
|
|
|
return {
|
|
return {
|
|
|
studentInfo: {
|
|
studentInfo: {
|
|
|
- name: '张小明',
|
|
|
|
|
- studentId: '2021050678',
|
|
|
|
|
- grade: '高三',
|
|
|
|
|
|
|
+ name: store.state.user.userInfo.name,
|
|
|
|
|
+ studentId: store.state.user.userInfo.mobile,
|
|
|
|
|
+ grade: store.state.user.userInfo.gradeInfoName,
|
|
|
enrollmentDate: '2021-09-01',
|
|
enrollmentDate: '2021-09-01',
|
|
|
avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
|
|
avatar: 'https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png',
|
|
|
- totalStudyHours: 126.5,
|
|
|
|
|
- studyDays: 42
|
|
|
|
|
|
|
+ totalStudyHours: 2.5,
|
|
|
|
|
+ studyDays: 3
|
|
|
},
|
|
},
|
|
|
weeklyStats: {
|
|
weeklyStats: {
|
|
|
- today: 3.5,
|
|
|
|
|
- week: 18.2,
|
|
|
|
|
|
|
+ today: 1.5,
|
|
|
|
|
+ week: 1.25,
|
|
|
streak: 5,
|
|
streak: 5,
|
|
|
goalCompletion: 85
|
|
goalCompletion: 85
|
|
|
},
|
|
},
|
|
|
chartPeriod: 'week',
|
|
chartPeriod: 'week',
|
|
|
- learningRecords: [
|
|
|
|
|
|
|
+ learningRecords: [
|
|
|
{
|
|
{
|
|
|
- date: '2023-10-15',
|
|
|
|
|
- startTime: '19:30',
|
|
|
|
|
- duration: '2小时30分钟',
|
|
|
|
|
- subject: '数学',
|
|
|
|
|
- content: '函数与导数专题练习',
|
|
|
|
|
- efficiency: 88
|
|
|
|
|
|
|
+ date: '2025-08-11',
|
|
|
|
|
+ startTime: '09:12',
|
|
|
|
|
+ duration: '1小时15分钟',
|
|
|
|
|
+ subject: ['链表'],
|
|
|
|
|
+ content: '实现一个基于数组的队列',
|
|
|
|
|
+ efficiency: 82
|
|
|
|
|
+ } ,
|
|
|
|
|
+ {
|
|
|
|
|
+ date: '2025-08-07',
|
|
|
|
|
+ startTime: '10:05',
|
|
|
|
|
+ duration: '30分钟',
|
|
|
|
|
+ subject: ['栈','链表'],
|
|
|
|
|
+ content: '实现一个基于链表的栈结构,支持基本操作如入栈(push)、出栈(pop)和查看栈顶元素(peek)。',
|
|
|
|
|
+ efficiency: 75
|
|
|
},
|
|
},
|
|
|
{
|
|
{
|
|
|
- date: '2023-10-14',
|
|
|
|
|
|
|
+ date: '2025-08-08',
|
|
|
startTime: '20:00',
|
|
startTime: '20:00',
|
|
|
- duration: '1小时45分钟',
|
|
|
|
|
- subject: '英语',
|
|
|
|
|
- content: '阅读理解专项训练',
|
|
|
|
|
|
|
+ duration: '45分钟',
|
|
|
|
|
+ subject: ['链表'],
|
|
|
|
|
+ content: '实现一个基于链表的栈结构',
|
|
|
efficiency: 76
|
|
efficiency: 76
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- date: '2023-10-13',
|
|
|
|
|
- startTime: '19:00',
|
|
|
|
|
- duration: '3小时15分钟',
|
|
|
|
|
- subject: '物理',
|
|
|
|
|
- content: '电磁学复习及习题',
|
|
|
|
|
- efficiency: 92
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- date: '2023-10-12',
|
|
|
|
|
- startTime: '18:30',
|
|
|
|
|
- duration: '2小时00分钟',
|
|
|
|
|
- subject: '化学',
|
|
|
|
|
- content: '有机化学知识点梳理',
|
|
|
|
|
- efficiency: 65
|
|
|
|
|
- },
|
|
|
|
|
- {
|
|
|
|
|
- date: '2023-10-11',
|
|
|
|
|
- startTime: '20:15',
|
|
|
|
|
- duration: '1小时30分钟',
|
|
|
|
|
- subject: '语文',
|
|
|
|
|
- content: '古诗词背诵与鉴赏',
|
|
|
|
|
- efficiency: 58
|
|
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
dailyStudyData: [
|
|
dailyStudyData: [
|
|
@@ -460,11 +445,7 @@ export default {
|
|
|
{ date: '10-15', hours: 2.5 }
|
|
{ date: '10-15', hours: 2.5 }
|
|
|
],
|
|
],
|
|
|
subjectStats: [
|
|
subjectStats: [
|
|
|
- { name: '数学', hours: 42.5, percentage: 90 },
|
|
|
|
|
- { name: '英语', hours: 35.2, percentage: 75 },
|
|
|
|
|
- { name: '物理', hours: 28.8, percentage: 60 },
|
|
|
|
|
- { name: '化学', hours: 15.3, percentage: 40 },
|
|
|
|
|
- { name: '语文', hours: 12.7, percentage: 30 }
|
|
|
|
|
|
|
+ { name: '数据结构与算法', hours: 56.5, percentage: 76 },
|
|
|
],
|
|
],
|
|
|
learningChartVisible: false,
|
|
learningChartVisible: false,
|
|
|
subjectsChartVisible: false,
|
|
subjectsChartVisible: false,
|
|
@@ -479,16 +460,16 @@ export default {
|
|
|
},
|
|
},
|
|
|
methods: {
|
|
methods: {
|
|
|
showLearningChart() {
|
|
showLearningChart() {
|
|
|
- this.learningChartVisible = true
|
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
|
- this.initLearningChart()
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ // this.learningChartVisible = true
|
|
|
|
|
+ // this.$nextTick(() => {
|
|
|
|
|
+ // this.initLearningChart()
|
|
|
|
|
+ // })
|
|
|
},
|
|
},
|
|
|
showSubjectsChart() {
|
|
showSubjectsChart() {
|
|
|
- this.subjectsChartVisible = true
|
|
|
|
|
- this.$nextTick(() => {
|
|
|
|
|
- this.initSubjectsChart()
|
|
|
|
|
- })
|
|
|
|
|
|
|
+ // this.subjectsChartVisible = true
|
|
|
|
|
+ // this.$nextTick(() => {
|
|
|
|
|
+ // this.initSubjectsChart()
|
|
|
|
|
+ // })
|
|
|
},
|
|
},
|
|
|
initLearningChart() {
|
|
initLearningChart() {
|
|
|
if (this.learningChartInstance) {
|
|
if (this.learningChartInstance) {
|
|
@@ -682,11 +663,7 @@ export default {
|
|
|
},
|
|
},
|
|
|
getSubjectTagType(subject) {
|
|
getSubjectTagType(subject) {
|
|
|
const types = {
|
|
const types = {
|
|
|
- '数学': 'primary',
|
|
|
|
|
- '英语': 'success',
|
|
|
|
|
- '物理': 'warning',
|
|
|
|
|
- '化学': 'danger',
|
|
|
|
|
- '语文': 'info'
|
|
|
|
|
|
|
+ '数据结构与算法': 'primary',
|
|
|
}
|
|
}
|
|
|
return types[subject] || ''
|
|
return types[subject] || ''
|
|
|
},
|
|
},
|
|
@@ -696,7 +673,7 @@ export default {
|
|
|
},
|
|
},
|
|
|
handleCurrentChange(val) {
|
|
handleCurrentChange(val) {
|
|
|
this.currentPage = val
|
|
this.currentPage = val
|
|
|
- this.$message.info(`当前页: ${val}`)
|
|
|
|
|
|
|
+ // this.$message.info(`当前页: ${val}`)
|
|
|
},
|
|
},
|
|
|
handleChartClose(done) {
|
|
handleChartClose(done) {
|
|
|
this.learningChartVisible = false
|
|
this.learningChartVisible = false
|