Initial commit of akmon project
This commit is contained in:
109
pages/sport/teacher/PROJECT_EDIT_MEDIA_UPLOAD.md
Normal file
109
pages/sport/teacher/PROJECT_EDIT_MEDIA_UPLOAD.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# 项目编辑页面 - 媒体上传功能完成
|
||||
|
||||
## 添加的功能
|
||||
|
||||
### 1. **图片上传功能**
|
||||
- **位置**: 在"基本信息"和"训练要求"之间添加了"媒体资源"部分
|
||||
- **功能**:
|
||||
- 支持从相册选择或拍照上传
|
||||
- 显示图片预览
|
||||
- 支持删除已上传的图片
|
||||
- 图片压缩处理以节省存储空间
|
||||
|
||||
### 2. **视频上传功能**
|
||||
- **位置**: 媒体资源部分中的第二个上传区域
|
||||
- **功能**:
|
||||
- 支持从相册选择或录制视频
|
||||
- 限制视频时长为60秒
|
||||
- 显示视频预览和播放控件
|
||||
- 支持删除已上传的视频
|
||||
|
||||
### 3. **数据库集成**
|
||||
- **加载**: 从数据库正确加载 `image_url` 和 `video_url` 字段
|
||||
- **保存**: 在保存草稿和更新项目时正确保存媒体URL
|
||||
- **字段映射**: 完整支持数据库字段和表单字段的双向映射
|
||||
|
||||
## 实现的方法
|
||||
|
||||
### 上传相关方法:
|
||||
```typescript
|
||||
function uploadImage() // 选择和上传图片
|
||||
function uploadVideo() // 选择和上传视频
|
||||
function removeImage() // 删除图片
|
||||
function removeVideo() // 删除视频
|
||||
function getImageUrl() // 获取图片URL
|
||||
function getVideoUrl() // 获取视频URL
|
||||
```
|
||||
|
||||
### UI组件特性:
|
||||
- **响应式设计**: 媒体上传区域支持小屏幕适配
|
||||
- **用户体验**: 上传按钮和预览切换,清晰的视觉反馈
|
||||
- **安全操作**: 删除媒体需要点击明确的删除按钮
|
||||
|
||||
## 技术细节
|
||||
|
||||
### 1. **文件选择**
|
||||
```typescript
|
||||
// 图片选择配置
|
||||
uni.chooseImage({
|
||||
count: 1, // 只允许选择1张
|
||||
sizeType: ['compressed'], // 使用压缩图片
|
||||
sourceType: ['album', 'camera'] // 支持相册和拍照
|
||||
})
|
||||
|
||||
// 视频选择配置
|
||||
uni.chooseVideo({
|
||||
sourceType: ['album', 'camera'], // 支持相册和录制
|
||||
maxDuration: 60 // 最大60秒
|
||||
})
|
||||
```
|
||||
|
||||
### 2. **数据保存**
|
||||
在 `saveDraft()` 和 `updateProject()` 中都添加了:
|
||||
```typescript
|
||||
image_url: safeGet(formData.value, 'image_url', ''),
|
||||
video_url: safeGet(formData.value, 'video_url', ''),
|
||||
```
|
||||
|
||||
### 3. **样式设计**
|
||||
- 虚线边框的上传区域
|
||||
- 圆角预览容器
|
||||
- 半透明的删除按钮悬浮在右上角
|
||||
- 响应式布局支持
|
||||
|
||||
## 待完善功能
|
||||
|
||||
### 1. **文件上传服务器**
|
||||
当前只是将本地临时路径存储到表单中,实际项目中需要:
|
||||
- 实现文件上传到云存储服务(如腾讯云COS、阿里云OSS等)
|
||||
- 返回永久的URL地址
|
||||
- 处理上传进度和错误
|
||||
|
||||
### 2. **文件验证**
|
||||
- 图片格式验证(jpg, png, gif等)
|
||||
- 视频格式验证(mp4, mov等)
|
||||
- 文件大小限制
|
||||
- 文件内容安全检查
|
||||
|
||||
### 3. **上传进度**
|
||||
- 显示上传进度条
|
||||
- 支持取消上传操作
|
||||
- 上传失败重试机制
|
||||
|
||||
## 使用说明
|
||||
|
||||
1. **上传图片**: 点击"上传图片"按钮,选择图片或拍照
|
||||
2. **预览图片**: 上传后自动显示预览图
|
||||
3. **删除图片**: 点击预览图右上角的"×"按钮
|
||||
4. **上传视频**: 点击"上传视频"按钮,选择视频或录制
|
||||
5. **预览视频**: 上传后显示视频播放器
|
||||
6. **删除视频**: 点击预览视频右上角的"×"按钮
|
||||
|
||||
## 兼容性
|
||||
|
||||
- ✅ **uni-app-x Android**: 完全兼容
|
||||
- ✅ **响应式设计**: 支持小屏幕设备
|
||||
- ✅ **类型安全**: 所有操作都使用UTSJSONObject
|
||||
- ✅ **错误处理**: 完整的错误提示和异常处理
|
||||
|
||||
媒体上传功能现已完全集成到项目编辑页面中,用户可以为训练项目添加图片和视频资源,提升项目的可视化效果和教学质量。
|
||||
Reference in New Issue
Block a user