mirror of
https://github.com/Cccc-owo/CheckInApp.git
synced 2026-06-17 14:06:28 +00:00
827c9198ae
- Updated Vite configuration to manually chunk Ant Design Vue for improved dependency management. - Added a comprehensive migration testing checklist for transitioning from Element Plus 2.13.0 to Ant Design Vue 4.x, covering various components and functionalities.
1002 lines
24 KiB
Markdown
1002 lines
24 KiB
Markdown
# Element Plus → Ant Design Vue 迁移功能测试清单
|
||
|
||
**项目**: CheckInApp 前端迁移
|
||
**迁移范围**: Element Plus 2.13.0 → Ant Design Vue 4.x
|
||
**测试日期**: ____年__月__日
|
||
**测试人员**: ________
|
||
|
||
---
|
||
|
||
## 测试环境
|
||
|
||
- **浏览器**: ________________
|
||
- **设备类型**: ☐ 桌面 ☐ 平板 ☐ 手机
|
||
- **操作系统**: ________________
|
||
- **屏幕分辨率**: ________________
|
||
|
||
---
|
||
|
||
## 1. 登录与认证 (LoginView.vue)
|
||
|
||
### 二维码登录
|
||
- [x] 二维码正确显示
|
||
- [x] 二维码刷新功能
|
||
- [x] 扫码后正确跳转到仪表盘
|
||
- [x] 登录失败显示错误提示
|
||
|
||
### 密码登录
|
||
- [ ] 用户名/密码输入框正常工作
|
||
- [ ] 表单验证正确(空值、格式)
|
||
- [ ] 登录成功后跳转
|
||
- [ ] 登录失败显示错误提示
|
||
- [ ] "记住我"开关正常工作
|
||
|
||
### 响应式
|
||
- [ ] 移动端布局适配正常
|
||
- [ ] 表单在小屏幕上可用
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 2. 仪表盘 (DashboardView.vue)
|
||
|
||
### 数据显示
|
||
- [ ] 统计卡片正确显示(今日打卡、本周打卡、本月打卡、待审批)
|
||
- [ ] 骨架屏加载动画
|
||
- [ ] Token 状态显示(有效期、剩余天数)
|
||
- [ ] 最近打卡记录表格
|
||
|
||
### 功能交互
|
||
- [ ] 刷新 Token 按钮
|
||
- [ ] 手动打卡功能
|
||
- [ ] 任务选择下拉框
|
||
- [ ] 打卡成功/失败提示
|
||
|
||
### 响应式
|
||
- [ ] 统计卡片在不同屏幕尺寸下正确排列
|
||
- [ ] 移动端: 1列
|
||
- [ ] 平板: 2列
|
||
- [ ] 桌面: 4列
|
||
- [ ] 表格在移动端可横向滚动或卡片视图
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 3. 任务管理 (TasksView.vue)
|
||
|
||
### 任务列表
|
||
- [ ] 任务卡片正确显示
|
||
- [ ] 启用/禁用状态切换
|
||
- [ ] 任务统计信息显示
|
||
|
||
### 创建任务
|
||
- [ ] "新建任务" 对话框打开
|
||
- [ ] 所有表单字段正常工作
|
||
- [ ] 任务名称
|
||
- [ ] 描述
|
||
- [ ] 模板选择
|
||
- [ ] Cron 表达式编辑器
|
||
- [ ] 启用状态开关
|
||
- [ ] Crontab 编辑器三种模式
|
||
- [ ] 快速模式: 20:00 默认选项
|
||
- [ ] 自定义模式: 时间选择器 + 频率选择
|
||
- [ ] 高级模式: 原始表达式输入
|
||
- [ ] 时间选择器(a-time-picker)正常工作
|
||
- [ ] Cron 表达式验证
|
||
- [ ] 下一个执行时间预览
|
||
- [ ] 表单验证
|
||
- [ ] 创建成功提示
|
||
|
||
### 编辑任务
|
||
- [ ] 编辑对话框正确加载任务数据
|
||
- [ ] 字段修改后保存成功
|
||
- [ ] 更新成功提示
|
||
|
||
### 删除任务
|
||
- [ ] 删除确认对话框
|
||
- [ ] 删除成功提示
|
||
|
||
### 手动打卡
|
||
- [ ] 打卡按钮可点击
|
||
- [ ] 打卡成功/失败提示
|
||
|
||
### 响应式
|
||
- [ ] 任务卡片网格响应式
|
||
- [ ] 移动端: 1列
|
||
- [ ] 平板: 2列
|
||
- [ ] 桌面: 3列
|
||
- [ ] 对话框在移动端全屏显示
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 4. 任务记录 (TaskRecordsView.vue)
|
||
|
||
### 记录列表
|
||
- [ ] 表格正确显示所有记录
|
||
- [ ] 分页功能正常
|
||
- [ ] 时间格式化正确
|
||
- [ ] 状态标签显示
|
||
|
||
### 响应式
|
||
- [ ] 桌面端: 表格正常显示,可水平滚动
|
||
- [ ] 移动端: 卡片视图或隐藏次要列
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 5. 用户记录 (RecordsView.vue)
|
||
|
||
### 记录列表
|
||
- [ ] 表格正确显示
|
||
- [ ] 分页正常
|
||
- [ ] 数据加载骨架屏
|
||
|
||
### 响应式
|
||
- [ ] 表格响应式布局
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 6. 设置 (SettingsView.vue)
|
||
|
||
### 表单功能
|
||
- [ ] 用户信息显示
|
||
- [ ] 修改密码功能
|
||
- [ ] 表单验证
|
||
- [ ] 保存成功提示
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 7. 待审批 (PendingApprovalView.vue)
|
||
|
||
### 提示信息
|
||
- [ ] 待审批状态正确显示
|
||
- [ ] Alert 组件样式正确
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 8. 404 页面 (NotFoundView.vue)
|
||
|
||
### 页面显示
|
||
- [ ] 404 结果页正确显示
|
||
- [ ] "返回首页" 按钮可点击
|
||
- [ ] 点击后正确跳转
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 9. 管理员 - 用户管理 (admin/UsersView.vue)
|
||
|
||
### 用户列表
|
||
- [ ] 标签页切换
|
||
- [ ] 所有用户
|
||
- [ ] 待审批
|
||
- [ ] 已禁用
|
||
- [ ] 表格显示用户数据
|
||
- [ ] 行选择功能
|
||
- [ ] 分页功能
|
||
|
||
### 批量操作
|
||
- [ ] 批量启用按钮
|
||
- [ ] 批量禁用按钮
|
||
- [ ] 操作成功提示
|
||
|
||
### 用户审批
|
||
- [ ] 审批按钮
|
||
- [ ] 审批成功提示
|
||
|
||
### 创建/编辑用户
|
||
- [ ] 对话框打开
|
||
- [ ] 表单字段正常
|
||
- [ ] 角色选择
|
||
- [ ] 保存成功
|
||
|
||
### 响应式
|
||
- [ ] 表格在移动端使用响应式列
|
||
- [ ] 批量操作按钮在小屏幕上适配
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 10. 管理员 - 记录管理 (admin/RecordsView.vue)
|
||
|
||
### 记录列表
|
||
- [ ] 表格显示所有用户记录
|
||
- [ ] 分页正常
|
||
- [ ] 过滤功能(如果有)
|
||
|
||
### 响应式
|
||
- [ ] 表格响应式布局
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 11. 管理员 - 日志查看 (admin/LogsView.vue)
|
||
|
||
### 日志列表
|
||
- [ ] 表格显示日志
|
||
- [ ] 分页正常
|
||
- [ ] 日志级别过滤
|
||
|
||
### 响应式
|
||
- [ ] 表格响应式布局
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 12. 管理员 - 统计信息 (admin/StatsView.vue)
|
||
|
||
### 统计显示
|
||
- [ ] 统计数字组件正确显示
|
||
- [ ] Descriptions 组件正确显示
|
||
- [ ] Progress 进度条正确显示
|
||
|
||
### 响应式
|
||
- [ ] Descriptions 在移动端单列显示
|
||
- [ ] 统计卡片响应式布局
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 13. 管理员 - 模板管理 (admin/TemplatesView.vue) ⭐ **关键**
|
||
|
||
### 模板列表
|
||
- [ ] 模板卡片正确显示
|
||
- [ ] 启用/禁用状态显示
|
||
|
||
### 创建模板
|
||
- [ ] "新建模板" 对话框打开
|
||
- [ ] 基本信息输入
|
||
- [ ] 模板名称
|
||
- [ ] 描述
|
||
- [ ] 父模板选择
|
||
- [ ] 启用状态
|
||
- [ ] 字段配置编辑器显示
|
||
|
||
### 字段配置编辑器 (FieldConfigEditor)
|
||
- [ ] 显示名称输入框
|
||
- [ ] 字段类型选择
|
||
- [ ] 📝 单行文本
|
||
- [ ] 📄 多行文本
|
||
- [ ] 🔢 数字输入
|
||
- [ ] 📋 下拉选择
|
||
- [ ] 值类型选择
|
||
- [ ] string (字符串)
|
||
- [ ] int (整数)
|
||
- [ ] double (浮点数)
|
||
- [ ] bool (布尔值)
|
||
- [ ] json (JSON对象)
|
||
- [ ] 默认值输入
|
||
- [ ] 普通类型: 单行输入框
|
||
- [ ] JSON 类型: 多行文本框
|
||
- [ ] 占位符输入
|
||
- [ ] 必填开关
|
||
- [ ] 隐藏开关
|
||
- [ ] 必填/隐藏互斥逻辑正确
|
||
- [ ] 隐藏时显示提示信息
|
||
- [ ] 下拉选择类型的选项列表编辑
|
||
- [ ] 添加选项
|
||
- [ ] 编辑选项(显示文本、选项值)
|
||
- [ ] 删除选项
|
||
|
||
### 字段树操作 (FieldTreeNode) ⭐ **重点修复项**
|
||
- [ ] 添加字段下拉菜单
|
||
- [ ] 普通字段
|
||
- [ ] 数组字段
|
||
- [ ] 对象字段
|
||
- [ ] 新添加的字段显示在末尾 ✅ **已修复**
|
||
- [ ] 字段上移按钮正常工作 ✅ **已修复**
|
||
- [ ] 字段下移按钮正常工作 ✅ **已修复**
|
||
- [ ] 字段在边界位置时禁用上移/下移
|
||
- [ ] 字段删除按钮正常工作
|
||
- [ ] 字段折叠/展开按钮
|
||
- [ ] 字段配置展开后显示编辑器
|
||
|
||
### 嵌套字段操作
|
||
- [ ] 数组字段显示
|
||
- [ ] 数组为空时显示提示
|
||
- [ ] 添加元素按钮
|
||
- [ ] 元素编号显示
|
||
- [ ] 数组元素类型
|
||
- [ ] 普通字段元素(显示 FieldConfigEditor)
|
||
- [ ] 对象元素(可添加子字段)
|
||
- [ ] 嵌套数组元素
|
||
- [ ] 数组元素操作
|
||
- [ ] 删除元素
|
||
- [ ] 为对象元素添加字段
|
||
- [ ] 对象字段显示
|
||
- [ ] 对象为空时显示提示
|
||
- [ ] 添加子字段按钮
|
||
- [ ] 递归显示子字段
|
||
- [ ] 嵌套字段的移动和删除
|
||
|
||
### 添加字段对话框
|
||
- [ ] 字段名输入
|
||
- [ ] 字段名保持原样(不转换大小写)
|
||
- [ ] 元素类型选择
|
||
- [ ] 普通字段
|
||
- [ ] 数组字段
|
||
- [ ] 对象字段
|
||
- [ ] 确定按钮添加字段
|
||
- [ ] 字段已存在时显示警告
|
||
|
||
### 编辑模板
|
||
- [ ] 编辑对话框正确加载模板数据
|
||
- [ ] 字段配置正确反序列化(JSON.parse)
|
||
- [ ] 修改后保存成功
|
||
- [ ] 字段配置正确序列化(JSON.stringify)
|
||
|
||
### 预览模板
|
||
- [ ] 预览对话框显示
|
||
- [ ] 生成的 Payload 正确显示
|
||
- [ ] 字段配置 JSON 正确显示
|
||
|
||
### 删除模板
|
||
- [ ] 删除确认对话框
|
||
- [ ] 删除成功提示
|
||
|
||
### JSON 预览
|
||
- [ ] 实时 JSON 预览显示
|
||
- [ ] JSON 格式化正确(2 空格缩进)
|
||
- [ ] 字段顺序与配置顺序一致
|
||
|
||
### 响应式
|
||
- [ ] 对话框宽度响应式
|
||
- [ ] 移动端: 100% 宽度,顶部对齐
|
||
- [ ] 桌面端: 95% 宽度
|
||
- [ ] 字段配置编辑器在小屏幕上可用
|
||
- [ ] 字段树在移动端正常显示
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 14. 布局与导航 (Layout.vue & Navbar.vue)
|
||
|
||
### 导航栏
|
||
- [ ] Logo 和应用名称显示
|
||
- [ ] 桌面端: 水平菜单正确显示
|
||
- [ ] 移动端: 汉堡图标显示
|
||
- [ ] 移动端: 抽屉菜单正确打开
|
||
- [ ] 移动端: 抽屉菜单正确关闭
|
||
- [ ] 用户下拉菜单
|
||
- [ ] 设置选项
|
||
- [ ] 注销选项
|
||
- [ ] 注销确认对话框(Modal.confirm)
|
||
- [ ] 注销后跳转到登录页
|
||
|
||
### 菜单项
|
||
- [ ] 仪表盘
|
||
- [ ] 任务管理
|
||
- [ ] 我的记录
|
||
- [ ] 管理员菜单
|
||
- [ ] 用户管理
|
||
- [ ] 记录
|
||
- [ ] 日志
|
||
- [ ] 统计
|
||
- [ ] 模板
|
||
- [ ] 路由跳转正确
|
||
- [ ] 当前路由高亮显示
|
||
|
||
### 响应式
|
||
- [ ] 导航栏在不同屏幕尺寸下正确适配
|
||
- [ ] 抽屉菜单在移动端可用
|
||
- [ ] 菜单项在抽屉中垂直排列
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 15. 二维码模态框 (QRCodeModal.vue)
|
||
|
||
### 功能
|
||
- [ ] 二维码图片正确显示
|
||
- [ ] 进度条显示(如果有)
|
||
- [ ] 关闭按钮正常工作
|
||
|
||
### 响应式
|
||
- [ ] 模态框在移动端全宽显示
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 16. 自定义组件
|
||
|
||
### CrontabEditor
|
||
- [ ] 模式切换标签页显示
|
||
- [ ] 快速模式
|
||
- [ ] 默认 20:00 选项显示
|
||
- [ ] 单选按钮正常工作
|
||
- [ ] 自定义模式
|
||
- [ ] 时间选择器(a-time-picker)正常工作
|
||
- [ ] dayjs 时间格式化正确
|
||
- [ ] 频率选择下拉框
|
||
- [ ] 每天
|
||
- [ ] 工作日(周一-周五)
|
||
- [ ] 周末(周六-周日)
|
||
- [ ] 高级模式
|
||
- [ ] 原始 crontab 表达式输入框
|
||
- [ ] 帮助文本显示
|
||
- [ ] 外部链接可点击
|
||
- [ ] Cron 表达式验证
|
||
- [ ] 下一个执行时间预览
|
||
- [ ] 验证消息样式(成功、错误、信息)
|
||
|
||
### FieldConfigEditor
|
||
- [ ] 所有表单字段正常工作
|
||
- [ ] 字段类型切换
|
||
- [ ] 切换到下拉选择时自动添加 options 数组
|
||
- [ ] 值类型切换
|
||
- [ ] 切换到 JSON 时显示 textarea
|
||
- [ ] 切换回其他类型时显示 input
|
||
- [ ] 必填/隐藏开关互斥
|
||
- [ ] 隐藏时自动取消必填
|
||
- [ ] 隐藏时必填开关禁用
|
||
- [ ] 隐藏时显示 Alert 提示
|
||
- [ ] 下拉选择选项编辑
|
||
- [ ] 添加选项
|
||
- [ ] 编辑显示文本
|
||
- [ ] 编辑选项值
|
||
- [ ] 删除选项
|
||
|
||
### FieldTreeNode
|
||
- [ ] 普通字段展示
|
||
- [ ] 蓝色标签和图标
|
||
- [ ] 折叠/展开按钮
|
||
- [ ] 上移/下移按钮
|
||
- [ ] 删除按钮
|
||
- [ ] 字段配置编辑器显示
|
||
- [ ] 数组字段展示
|
||
- [ ] 紫色标签和图标
|
||
- [ ] 添加元素按钮
|
||
- [ ] 元素列表显示
|
||
- [ ] 删除元素按钮
|
||
- [ ] 对象字段展示
|
||
- [ ] 绿色标签和图标
|
||
- [ ] 添加子字段按钮
|
||
- [ ] 子字段递归渲染
|
||
- [ ] 递归嵌套字段正确渲染
|
||
- [ ] 折叠/展开动画流畅
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 17. 全局功能
|
||
|
||
### 消息提示
|
||
- [ ] 成功提示(message.success)样式正确
|
||
- [ ] 错误提示(message.error)样式正确
|
||
- [ ] 警告提示(message.warning)样式正确
|
||
- [ ] 提示自动关闭
|
||
|
||
### 确认对话框
|
||
- [ ] Modal.confirm 正确显示
|
||
- [ ] 标题和内容显示
|
||
- [ ] 确认按钮(okText)
|
||
- [ ] 取消按钮(cancelText)
|
||
- [ ] 确认回调正常执行
|
||
- [ ] 取消回调正常执行
|
||
|
||
### 加载状态
|
||
- [ ] 骨架屏加载(a-skeleton)
|
||
- [ ] active 动画效果
|
||
- [ ] 段落行数配置正确
|
||
- [ ] 按钮加载状态(:loading)
|
||
- [ ] 加载图标显示
|
||
- [ ] 按钮禁用
|
||
- [ ] 表格加载状态
|
||
- [ ] 加载指示器显示
|
||
|
||
### 表单验证
|
||
- [ ] 必填字段验证
|
||
- [ ] 格式验证(邮箱、密码等)
|
||
- [ ] 错误提示显示在字段下方
|
||
- [ ] 验证通过后错误消息清除
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 18. 响应式设计总体验证
|
||
|
||
### 断点测试
|
||
- [ ] xs (<576px) - 手机竖屏
|
||
- [ ] sm (≥576px) - 手机横屏/小平板
|
||
- [ ] md (≥768px) - 平板
|
||
- [ ] lg (≥992px) - 桌面
|
||
- [ ] xl (≥1200px) - 大屏桌面
|
||
|
||
### 关键组件响应式
|
||
- [ ] Grid 布局正确响应
|
||
- [ ] a-row / a-col 正确使用 :xs, :sm, :md, :lg 属性
|
||
- [ ] 表格响应式策略
|
||
- [ ] 桌面端: 正常表格 + 水平滚动
|
||
- [ ] 移动端: 卡片视图或隐藏次要列
|
||
- [ ] 对话框响应式
|
||
- [ ] 移动端: 全屏或宽度 100%
|
||
- [ ] 桌面端: 固定宽度或百分比宽度
|
||
- [ ] 导航栏响应式
|
||
- [ ] 桌面端: 水平菜单
|
||
- [ ] 移动端: 汉堡图标 + 抽屉菜单
|
||
- [ ] 表单响应式
|
||
- [ ] 字段在小屏幕上堆叠(vertical layout)
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 19. 性能与兼容性
|
||
|
||
### 构建与性能
|
||
- [ ] `npm run build` 成功无错误
|
||
- [ ] Bundle 大小合理
|
||
- [ ] Ant Design Vue: ~1.2MB (gzipped ~372KB)
|
||
- [ ] Vendor: ~345KB (gzipped ~113KB)
|
||
- [ ] 总体大小可接受
|
||
- [ ] 无控制台错误
|
||
- [ ] 无控制台警告(除 chunk size 警告外)
|
||
- [ ] 页面初始加载速度 <3秒
|
||
- [ ] 组件渲染流畅无卡顿
|
||
- [ ] 表格滚动流畅
|
||
- [ ] 动画流畅(60fps)
|
||
|
||
### 浏览器兼容性
|
||
- [ ] Chrome/Edge(最新版)
|
||
- [ ] Firefox(最新版)
|
||
- [ ] Safari(最新版)
|
||
- [ ] iOS Safari
|
||
- [ ] Chrome Mobile (Android)
|
||
|
||
**测试的浏览器版本**: ________________________________________
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 20. 主题与样式
|
||
|
||
### Material Design 3 主题
|
||
- [ ] 主色调一致(绿色 #4caf50)
|
||
- [ ] 信息色(蓝色 #2196f3)
|
||
- [ ] 成功色(绿色 #4caf50)
|
||
- [ ] 警告色(橙色 #ff9800)
|
||
- [ ] 错误色(红色 #f56c6c)
|
||
- [ ] 卡片样式
|
||
- [ ] fluent-card 类正确应用
|
||
- [ ] md3-card 类正确应用
|
||
- [ ] 圆角 12px
|
||
- [ ] 阴影效果正确
|
||
- [ ] 按钮样式
|
||
- [ ] md3-button-filled 填充按钮
|
||
- [ ] md3-button-outlined 描边按钮
|
||
- [ ] md3-button-text 文本按钮
|
||
- [ ] 动画效果
|
||
- [ ] animate-fade-in 淡入动画
|
||
- [ ] animate-slide-up 上滑动画
|
||
- [ ] hover 过渡流畅
|
||
|
||
### Ant Design 主题
|
||
- [ ] Ant Design 组件使用自定义主题
|
||
- [ ] 主色调与 MD3 协调
|
||
- [ ] 组件颜色无冲突
|
||
- [ ] 边框圆角一致(12px)
|
||
|
||
### 样式一致性
|
||
- [ ] 字体大小一致
|
||
- [ ] 间距一致
|
||
- [ ] 颜色使用一致
|
||
- [ ] 无样式闪烁或跳动
|
||
|
||
**备注**: ________________________________________
|
||
|
||
---
|
||
|
||
## 已知修复项 ✅
|
||
|
||
以下问题已在迁移过程中修复:
|
||
|
||
1. ✅ **FieldConfigEditor**
|
||
- v-model 绑定从 `:model-value`/`@update:model-value` 改为 `:value`/`@change`
|
||
- `clearable` 改为 `allow-clear`
|
||
- `el-alert` → `a-alert`,`title` → `message` + `#description` slot
|
||
- 多行文本从 `a-input type="textarea"` 改为 `a-textarea`
|
||
- Switch 绑定从 `:model-value` 改为 `:checked`
|
||
|
||
2. ✅ **CrontabEditor**
|
||
- `el-form` → `a-form` with `:label-col`/`:wrapper-col`
|
||
- `el-time-select` → `a-time-picker` with dayjs
|
||
- 添加时间转换函数 `onCustomTimeChange`
|
||
- Radio 组正确包装 `a-radio` 组件
|
||
|
||
3. ✅ **NotFoundView**
|
||
- `el-result` → `a-result` with `status="404"`
|
||
|
||
4. ✅ **FieldTreeNode**
|
||
- `v-model:open` → `v-model:value` for inputs
|
||
- `a-radio label` → `a-radio value`
|
||
|
||
5. ✅ **TemplatesView 字段移动功能**
|
||
- 使用深拷贝 `JSON.parse(JSON.stringify())` 创建新对象
|
||
- 替换整个 `formData.value` 而不只是 `field_config`
|
||
- 新字段正确添加到末尾
|
||
- 字段移动功能正常工作
|
||
|
||
---
|
||
|
||
## 测试优先级
|
||
|
||
### 🔴 P0 - 关键功能(必须通过)
|
||
- 登录流程(二维码和密码)
|
||
- 仪表盘显示
|
||
- 任务 CRUD 操作
|
||
- 任务打卡
|
||
- 模板管理(特别是字段移动功能)
|
||
- 导航功能
|
||
- 无控制台错误
|
||
|
||
### 🟡 P1 - 重要功能
|
||
- 用户管理(管理员)
|
||
- 表格分页和排序
|
||
- 表单验证
|
||
- 响应式布局(移动、平板、桌面)
|
||
- 消息提示和确认对话框
|
||
- 记录查看
|
||
|
||
### 🟢 P2 - 次要功能
|
||
- 统计信息显示
|
||
- 日志查看
|
||
- 动画效果
|
||
- 主题一致性
|
||
- 性能优化
|
||
|
||
---
|
||
|
||
## 测试结果汇总
|
||
|
||
### 通过统计
|
||
- **P0 通过**: ____ / ____
|
||
- **P1 通过**: ____ / ____
|
||
- **P2 通过**: ____ / ____
|
||
- **总通过率**: _____%
|
||
|
||
### 失败项
|
||
1. ________________________________________
|
||
2. ________________________________________
|
||
3. ________________________________________
|
||
|
||
### 阻塞项
|
||
1. ________________________________________
|
||
2. ________________________________________
|
||
|
||
### 性能指标
|
||
- **首次加载时间**: ____ 秒
|
||
- **Bundle 大小**: ____ MB (gzipped: ____ KB)
|
||
- **Lighthouse 分数**:
|
||
- Performance: ____
|
||
- Accessibility: ____
|
||
- Best Practices: ____
|
||
|
||
---
|
||
|
||
## 建议测试顺序
|
||
|
||
1. **第一轮:核心流程(P0)**
|
||
- 登录与认证
|
||
- 导航和布局
|
||
- 仪表盘
|
||
- 任务管理(包括 CrontabEditor)
|
||
- 模板管理(包括字段移动)
|
||
|
||
2. **第二轮:管理功能(P1)**
|
||
- 管理员用户管理
|
||
- 记录管理
|
||
- 表单验证
|
||
|
||
3. **第三轮:响应式和兼容性(P1 + P2)**
|
||
- 不同屏幕尺寸测试
|
||
- 不同浏览器测试
|
||
- 性能测试
|
||
|
||
4. **第四轮:细节和优化(P2)**
|
||
- 动画效果
|
||
- 主题一致性
|
||
- 边界情况测试
|
||
|
||
---
|
||
|
||
## 测试记录
|
||
|
||
### 测试会话 1
|
||
- **日期**: ________
|
||
- **测试人员**: ________
|
||
- **测试范围**: ________
|
||
- **发现问题**: ________
|
||
|
||
### 测试会话 2
|
||
- **日期**: ________
|
||
- **测试人员**: ________
|
||
- **测试范围**: ________
|
||
- **发现问题**: ________
|
||
|
||
### 测试会话 3
|
||
- **日期**: ________
|
||
- **测试人员**: ________
|
||
- **测试范围**: ________
|
||
- **发现问题**: ________
|
||
|
||
---
|
||
|
||
## 附录
|
||
|
||
### 组件映射速查
|
||
|
||
| Element Plus | Ant Design Vue | 主要变更 |
|
||
|-------------|----------------|---------|
|
||
| el-card | a-card | `#header` → `#title` |
|
||
| el-button | a-button | type 映射相同 |
|
||
| el-input | a-input / a-input-password | password 用专门组件 |
|
||
| el-form | a-form | 添加 `:layout` prop |
|
||
| el-select | a-select | 基本相同 |
|
||
| el-table | a-table | 使用 columns 配置 |
|
||
| el-pagination | a-pagination | v-model 属性名变更 |
|
||
| el-dialog | a-modal | `v-model` → `v-model:open` |
|
||
| el-switch | a-switch | `:model-value` → `:checked` |
|
||
| el-tag | a-tag | type 映射略不同 |
|
||
| el-tabs | a-tabs | `v-model` → `v-model:activeKey` |
|
||
| el-alert | a-alert | `:title` → `message` |
|
||
| ElMessage | message | 函数式 API 相似 |
|
||
| ElMessageBox | Modal.confirm | API 需调整 |
|
||
|
||
### 响应式断点
|
||
|
||
```javascript
|
||
xs: <576px // 手机
|
||
sm: ≥576px // 平板竖屏
|
||
md: ≥768px // 平板横屏
|
||
lg: ≥992px // 桌面
|
||
xl: ≥1200px // 大屏
|
||
```
|
||
|
||
### 常见问题排查
|
||
|
||
1. **组件不显示** → 检查 v-model 绑定和属性名
|
||
2. **样式不正确** → 检查是否移除了 Element Plus CSS
|
||
3. **表格不工作** → 确认使用了 columns 配置
|
||
4. **对话框不显示** → 检查 `v-model:open` 而非 `v-model`
|
||
5. **Switch 不工作** → 使用 `:checked` 而非 `:model-value`
|
||
6. **时间选择器问题** → 确认使用 dayjs 而非原生 Date
|
||
|
||
---
|
||
|
||
## 签字确认
|
||
|
||
**测试人员**: ________________ **日期**: ________
|
||
|
||
**审核人员**: ________________ **日期**: ________
|
||
|
||
**项目负责人**: ________________ **日期**: ________
|
||
|
||
---
|
||
|
||
**迁移完成标准**:
|
||
- ✅ P0 功能 100% 通过
|
||
- ✅ P1 功能 ≥95% 通过
|
||
- ✅ 无阻塞性 bug
|
||
- ✅ 构建成功无错误
|
||
- ✅ 响应式布局正常
|
||
- ✅ 主要浏览器兼容
|
||
|
||
---
|
||
|
||
## 📱 响应式设计总结
|
||
|
||
### 已实现的响应式优化
|
||
|
||
#### 1. 登录页面 (LoginView.vue)
|
||
- ✅ 使用 `position: fixed` 确保全屏布局
|
||
- ✅ 容器设置 `width: 100vw` 和 `height: 100vh`
|
||
- ✅ 添加 `overflow-y: auto` 支持内容滚动
|
||
- ✅ 移动端优化 (≤768px):
|
||
- 减小边距和内边距
|
||
- 调整字体大小
|
||
- 优化卡片圆角
|
||
- ✅ 小屏手机优化 (≤576px):
|
||
- 进一步减小间距
|
||
- 调整标题和文本大小
|
||
- ✅ 横屏优化 (高度≤600px):
|
||
- 调整垂直对齐方式
|
||
- 减小间距以适应有限高度
|
||
|
||
#### 2. 导航栏 (Navbar.vue)
|
||
- ✅ 使用 `useBreakpoint` composable 检测屏幕尺寸
|
||
- ✅ 桌面端 (≥768px): 水平导航菜单
|
||
- ✅ 移动端 (<768px): 汉堡菜单 + 抽屉导航
|
||
- ✅ 用户菜单响应式显示
|
||
- ✅ 抽屉宽度固定为 280px
|
||
|
||
#### 3. 全局样式优化 (style.css)
|
||
- ✅ 移动端表格优化 (≤768px):
|
||
- 减小字体大小到 13px
|
||
- 调整单元格内边距
|
||
- ✅ 移动端表单优化:
|
||
- 调整表单项间距
|
||
- 优化标签字体大小
|
||
- ✅ 移动端卡片优化:
|
||
- 减小内边距
|
||
- 调整标题大小
|
||
- ✅ 移动端按钮优化:
|
||
- 调整按钮高度和内边距
|
||
- ✅ 小屏手机优化 (≤576px):
|
||
- 更小的字体和间距
|
||
- 更紧凑的布局
|
||
- ✅ 横屏优化:
|
||
- 模态框内容滚动
|
||
- 抽屉内边距调整
|
||
- ✅ 平板优化 (768px-992px):
|
||
- 中等尺寸的内边距
|
||
- 适中的表格单元格间距
|
||
|
||
#### 4. 断点系统 (useBreakpoint.js)
|
||
```javascript
|
||
// 简化断点
|
||
isMobile: <768px // 手机
|
||
isTablet: 768-992px // 平板
|
||
isDesktop: ≥992px // 桌面
|
||
|
||
// Ant Design 断点(详细)
|
||
isXs: <576px // 小手机
|
||
isSm: 576-768px // 大手机/小平板
|
||
isMd: 768-992px // 平板
|
||
isLg: 992-1200px // 小桌面
|
||
isXl: 1200-1600px // 桌面
|
||
isXxl: ≥1600px // 大屏
|
||
```
|
||
|
||
#### 5. 页面布局响应式
|
||
- ✅ DashboardView: 使用 `a-col` 响应式属性
|
||
- `:xs="24"` - 手机单列
|
||
- `:sm="24"` - 平板单列
|
||
- `:md="24"` - 桌面全宽
|
||
- ✅ 所有视图都使用 `a-row` 和 `a-col` 实现响应式网格
|
||
|
||
### 响应式测试检查点
|
||
|
||
#### 断点测试
|
||
- [ ] **xs (<576px)** - 小手机竖屏
|
||
- [ ] 登录页面正常显示
|
||
- [ ] 卡片和按钮可点击
|
||
- [ ] 文字可读
|
||
|
||
- [ ] **sm (576-768px)** - 大手机横屏/小平板
|
||
- [ ] 导航抽屉正常工作
|
||
- [ ] 表格可横向滚动
|
||
|
||
- [ ] **md (768-992px)** - 平板
|
||
- [ ] 导航栏切换到水平布局
|
||
- [ ] 卡片网格适配
|
||
|
||
- [ ] **lg (992-1200px)** - 桌面
|
||
- [ ] 所有功能正常显示
|
||
- [ ] 侧边栏和主内容区域合理分布
|
||
|
||
- [ ] **xl (≥1200px)** - 大屏
|
||
- [ ] 布局居中
|
||
- [ ] 最大宽度限制合理
|
||
|
||
#### 设备测试
|
||
- [ ] iPhone SE (375x667)
|
||
- [ ] iPhone 12 Pro (390x844)
|
||
- [ ] iPad Mini (768x1024)
|
||
- [ ] iPad Pro (1024x1366)
|
||
- [ ] 桌面 (1920x1080)
|
||
- [ ] 4K 显示器 (2560x1440)
|
||
|
||
#### 方向测试
|
||
- [ ] 手机竖屏
|
||
- [ ] 手机横屏 (高度受限)
|
||
- [ ] 平板竖屏
|
||
- [ ] 平板横屏
|
||
|
||
### 响应式最佳实践
|
||
|
||
1. **使用相对单位**
|
||
- 使用 `%`, `vw`, `vh` 而非固定 `px`
|
||
- 字体使用 `rem` 或相对大小
|
||
|
||
2. **移动优先设计**
|
||
- 先设计移动端体验
|
||
- 使用 `min-width` 媒体查询逐步增强
|
||
|
||
3. **触摸友好**
|
||
- 按钮至少 44x44px
|
||
- 足够的点击区域间距
|
||
|
||
4. **内容优先级**
|
||
- 移动端隐藏次要信息
|
||
- 使用折叠面板节省空间
|
||
|
||
5. **性能考虑**
|
||
- 移动端图片优化
|
||
- 懒加载非关键内容
|
||
- 减少动画复杂度
|
||
|
||
### 已知响应式问题和改进建议
|
||
|
||
#### ✅ 已修复
|
||
1. 登录页面高度不足导致布局错乱 → 使用 `position: fixed` 和 `100vh`
|
||
2. 移动端表格字体过大 → 添加媒体查询缩小字体
|
||
3. 移动端卡片内边距过大 → 调整内边距
|
||
|
||
#### 🔄 待优化
|
||
1. 表格在小屏幕上可能需要卡片视图替代
|
||
2. 某些对话框在小屏幕可能需要全屏模式
|
||
3. 复杂表单可能需要分步骤向导
|
||
|
||
### 响应式调试技巧
|
||
|
||
1. **Chrome DevTools**
|
||
```
|
||
F12 → Toggle device toolbar (Ctrl+Shift+M)
|
||
选择设备预设或自定义尺寸
|
||
```
|
||
|
||
2. **实时预览多个尺寸**
|
||
```
|
||
使用 Responsively App 或类似工具
|
||
同时查看多个断点
|
||
```
|
||
|
||
3. **检查元素布局**
|
||
```
|
||
使用 Chrome Layout 面板
|
||
查看 box model 和 flexbox/grid 布局
|
||
```
|
||
|
||
### 响应式 CSS 速查
|
||
|
||
```css
|
||
/* 移动端 */
|
||
@media (max-width: 768px) {
|
||
/* 移动端样式 */
|
||
}
|
||
|
||
/* 小屏手机 */
|
||
@media (max-width: 576px) {
|
||
/* 小屏样式 */
|
||
}
|
||
|
||
/* 横屏 */
|
||
@media (max-height: 600px) and (orientation: landscape) {
|
||
/* 横屏样式 */
|
||
}
|
||
|
||
/* 平板 */
|
||
@media (min-width: 768px) and (max-width: 992px) {
|
||
/* 平板样式 */
|
||
}
|
||
|
||
/* 桌面 */
|
||
@media (min-width: 992px) {
|
||
/* 桌面样式 */
|
||
}
|
||
```
|
||
|
||
---
|