218 lines
4.9 KiB
Markdown
218 lines
4.9 KiB
Markdown
# 学习进度统计组件实现说明
|
||
|
||
## 🎯 概述
|
||
|
||
根据提供的设计图,实现了一个完整的学习进度统计组件 `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
|