mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-11 18:10:49 +08:00
3.9 KiB
3.9 KiB
站点批量导入导出功能实现总结
功能概述
成功实现了站点批量导入和批量导出功能,在站点列表页面右上角添加了导入和导出操作按钮,方便用户快速备份和恢复站点配置。
实现的功能
1. 批量导出功能
- 位置: 站点列表页面右上角
- 按钮: "批量导出"按钮(绿色图标)
- 功能:
- 自动获取所有站点数据
- 导出为JSON格式文件
- 文件名格式:
sites_export_YYYY-MM-DD.json - 包含站点的所有配置信息(除ID外)
- 自动下载到用户本地
2. 批量导入功能
- 位置: 站点列表页面右上角
- 按钮: "批量导入"按钮(蓝色图标)
- 功能:
- 支持JSON格式文件导入
- 支持拖拽上传和文件选择
- 导入前数据预览和验证
- 实时导入进度显示
- 详细的导入结果反馈
技术实现
1. 前端组件
- SiteCardListView.vue: 主页面组件,添加了导入导出按钮
- SiteImportDialog.vue: 新建的导入对话框组件
- 导出功能: 直接在SiteCardListView中实现
2. 后端接口
- 导出: 使用现有的
GET /site/接口获取所有站点数据 - 导入: 使用现有的
POST /site/接口批量创建站点
3. 数据验证
- 验证必填字段:
name,domain,url - 自动移除ID字段避免冲突
- 显示数据预览和验证结果
4. 用户体验
- 拖拽上传支持
- 实时进度显示
- 详细的错误提示
- 多语言支持(中文、英文、繁体中文)
文件结构
src/
├── views/site/
│ └── SiteCardListView.vue # 主页面,添加了导入导出按钮
├── components/dialog/
│ └── SiteImportDialog.vue # 新建的导入对话框组件
├── locales/
│ ├── zh-CN.ts # 简体中文翻译
│ ├── en-US.ts # 英文翻译
│ └── zh-TW.ts # 繁体中文翻译
└── test_sites_export.json # 测试用的导出文件
国际化支持
中文(简体)
- 批量导入/导出
- 数据预览
- 错误提示
- 进度显示
英文
- Batch Import/Export
- Data Preview
- Error Messages
- Progress Display
繁体中文
- 批量導入/導出
- 數據預覽
- 錯誤提示
- 進度顯示
使用方法
导出站点配置
- 进入站点管理页面
- 点击右上角的"批量导出"按钮
- 浏览器自动下载JSON配置文件
导入站点配置
- 进入站点管理页面
- 点击右上角的"批量导入"按钮
- 选择或拖拽JSON文件
- 查看数据预览
- 点击"开始导入"
- 等待导入完成
文件格式
导出的JSON文件包含以下字段:
{
"name": "站点名称",
"domain": "站点域名",
"url": "站点地址",
"rss": "RSS地址",
"downloader": "下载器",
"cookie": "Cookie信息",
"apikey": "API密钥",
"token": "访问令牌",
"ua": "User-Agent",
"proxy": false,
"filter": "过滤规则",
"render": false,
"public": 0,
"note": "备注信息",
"timeout": 30,
"limit_interval": 0,
"limit_count": 0,
"limit_seconds": 0,
"is_active": true,
"pri": 1
}
错误处理
- 文件格式验证
- 数据完整性检查
- 网络错误处理
- 导入失败统计
- 用户友好的错误提示
测试
- 提供了
test_sites_export.json测试文件 - 支持各种边界情况测试
- 多语言界面测试
- 拖拽上传功能测试
构建状态
✅ 项目构建成功 ✅ 所有组件正常工作 ✅ 国际化完整 ✅ 错误处理完善 ✅ 用户体验良好
总结
成功实现了完整的站点批量导入导出功能,包括:
- 直观的用户界面
- 完善的数据验证
- 良好的错误处理
- 完整的多语言支持
- 优秀的用户体验
该功能可以帮助用户快速备份和恢复站点配置,提高工作效率。