OL-LearnPlatform/LEARNING_PROGRESS_COMPONENT.md

218 lines
4.9 KiB
Markdown
Raw Normal View History

2025-08-04 02:13:12 +08:00
# 学习进度统计组件实现说明
## 🎯 概述
根据提供的设计图,实现了一个完整的学习进度统计组件 `LearningProgressStats.vue`,包含三个圆形进度图表(课程、作业、考试)和一个总体学习进度条。
## 📁 文件位置
```
src/
├── components/
│ └── common/
│ └── LearningProgressStats.vue # 学习进度统计组件
└── views/
└── CourseDetailEnrolled.vue # 课程详情页面(已报名状态)
```
## 🎨 设计特点
### 1. 圆形进度图表
- **数量**: 3个课程、作业、考试
- **样式**: 粗边框圆环stroke-width: 12px
- **颜色**: 蓝色主题 (#1890ff)
- **动画**: 平滑的进度动画效果
- **阴影**: 立体阴影效果
### 2. 总体进度条
- **样式**: 粗进度条height: 12px
- **背景**: 渐变背景效果
- **边框**: 加粗边框设计
- **阴影**: 进度条阴影效果
### 3. 字体样式
- **百分比**: 24px, 粗体 (font-weight: 700)
- **标签**: 16px, 中等粗体 (font-weight: 600)
- **进度文字**: 18px, 粗体
- **数字**: 22-24px, 超粗体
## 🔧 组件Props
```typescript
interface Props {
courseProgress?: number // 课程进度百分比
homeworkProgress?: number // 作业进度百分比
examProgress?: number // 考试进度百分比
completedItems?: number // 已完成项目数
totalItems?: number // 总项目数
}
```
## 📊 默认数据
```typescript
// 默认值(与设计图一致)
courseProgress: 31.7%
homeworkProgress: 22.5%
examProgress: 9.6%
completedItems: 13
totalItems: 54
```
## 🎮 使用方法
### 基本用法
```vue
<template>
<LearningProgressStats
:course-progress="31.7"
:homework-progress="22.5"
:exam-progress="9.6"
:completed-items="13"
:total-items="54"
/>
</template>
<script setup>
import LearningProgressStats from '@/components/common/LearningProgressStats.vue'
</script>
```
### 动态数据
```vue
<template>
<LearningProgressStats
:course-progress="courseProgress"
:homework-progress="homeworkProgress"
:exam-progress="examProgress"
:completed-items="completedItems"
:total-items="totalItems"
/>
</template>
<script setup>
import { ref } from 'vue'
import LearningProgressStats from '@/components/common/LearningProgressStats.vue'
const courseProgress = ref(31.7)
const homeworkProgress = ref(22.5)
const examProgress = ref(9.6)
const completedItems = ref(13)
const totalItems = ref(54)
</script>
```
## 🎨 样式特性
### 1. 圆形进度环
```css
/* 背景圆环 */
stroke: #e8f4fd
stroke-width: 12px
opacity: 0.4
/* 进度圆环 */
stroke: #1890ff
stroke-width: 12px
stroke-linecap: round
```
### 2. 容器样式
```css
/* 主容器 */
background: #ffffff
border-radius: 16px
padding: 32px
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12)
border: 3px solid #e8f4fd
/* 进度条容器 */
background: linear-gradient(135deg, #f8fcff 0%, #e8f4fd 100%)
border-radius: 12px
border-top: 3px solid #e8f4fd
```
### 3. 进度条样式
```css
/* 进度条背景 */
height: 12px
background: #e8f4fd
border-radius: 6px
border: 2px solid #d9ecff
/* 进度条填充 */
background: linear-gradient(90deg, #1890ff 0%, #40a9ff 100%)
box-shadow: 0 2px 4px rgba(24, 144, 255, 0.3)
```
## 📱 响应式设计
### 桌面端 (>768px)
- 圆形进度图: 120px × 120px
- 字体大小: 24px (百分比)
- 间距: 正常间距
### 平板端 (≤768px)
- 圆形进度图: 100px × 100px
- 字体大小: 16px (百分比)
- 间距: 紧凑间距
### 移动端 (≤480px)
- 布局: 垂直排列
- 圆形进度图: 居中显示
- 最大宽度: 200px
## 🔮 图标占位符
当前使用emoji作为图标占位符
- 📚 课程
- 📝 作业
- 📋 考试
**等待您提供具体的图标文件后可以替换为实际的SVG图标。**
## 🚀 实际应用
学习进度统计组件已集成到课程详情页面(已报名状态):
### 访问路径
- 课程详情页面: `/course/1/enrolled`
- 位置: 右侧边栏的学习进度区域
### 显示内容
- 三个圆形进度图表(课程、作业、考试)
- 总体学习进度条
- 完成项目数统计 (13/54)
- 实时进度数据更新
## 🎯 设计图匹配度
**完全匹配的特性**:
- 三个圆形进度图表布局
- 粗边框圆环设计
- 蓝色主题色彩
- 百分比数字显示
- 底部总体进度条
- 进度数字显示 (13/54)
- 整体卡片样式
🔄 **待完善的特性**:
- 等待提供具体的图标文件
- 可能需要微调颜色深浅
- 可能需要调整具体的间距
## 📝 下一步计划
1. **图标替换**: 等待您提供三个中心点的图标文件
2. **颜色调整**: 根据实际需求微调颜色
3. **动画优化**: 可以添加更多动画效果
4. **数据集成**: 与实际的学习数据API集成
## 🔗 相关文件
- 组件文件: `src/components/common/LearningProgressStats.vue`
- 应用页面: `src/views/CourseDetailEnrolled.vue`
- 查看地址: http://localhost:3001/course/1/enrolled