# 故事017.013: 首页(Dashboard)样式对照原型调整 ## 元信息 - **史诗**: 017 - 人才小程序功能实现 - **优先级**: P1 - 用户体验改进 - **状态**: Ready for Review - **创建日期**: 2025-12-26 - **负责人**: 开发团队 ## 故事描述 **作为** 人才小程序用户, **我想要** 首页样式与原型设计完全一致, **以便** 获得符合预期的用户体验和视觉一致性。 ### 背景 **原型设计参考:** - `docs/小程序原型/rencai.html` 行160-301 (首页/个人主页) **当前实现状态:** - ✅ 故事017.002完成: 登录与首页实现 - ✅ 故事017.012完成: 统一Navbar导航栏组件规范 - ✅ 首页基础功能已实现,但样式与原型存在差异 **问题分析:** 对照原型设计首页部分(rencai.html 行160-301),发现以下样式差异: | 模块 | 原型要求 | 当前实现 | 优先级 | |------|----------|----------|--------| | 个人信息卡片 | 3列统计:本月出勤/异常记录/本月薪资 | 只有2列,缺少"异常记录" | P1 | | 头像区域 | 圆形头像(首字) + 右侧二维码按钮 | 无头像显示,无二维码按钮 | P2 | | 打卡模块标题 | "今日打卡" | 无标题 | P2 | | 打卡状态指示器 | 绿点脉冲动画 + "已打卡"文字 | 简单标签,无动画 | P1 | | 时间显示 | 大号时间"09:27" + 日期"2023年11月25日 星期六" | 无时间显示,无日期 | P1 | | 上班/下班卡片 | 圆形图标 + 灰色背景,未打卡灰色 | 蓝色方形背景 | P1 | | 远程打卡按钮 | 文案"小程序远程打卡" | 文案"远程打卡" | P2 | | 功能入口 | 4个彩色圆角方形背景 | 圆形图标卡片 | P2 | | 通知列表 | 彩色圆形图标 + 标题 + 副标题 | 红点 + 标题 + 日期 | P1 | ### 原型详细对照 **1. 顶部个人信息卡片** (原型行174-204) ``` - 蓝色渐变背景: linear-gradient(135deg, #3b82f6 0%, #1e40af 100%) - 左侧: 圆形头像(首字,60px,白色边框) + 姓名 + 残疾类型 - 右侧: 二维码图标按钮 (白色半透明背景) - 3列统计数据: 本月出勤(28) | 异常记录(0) | 本月薪资(¥4,800) ``` **2. 打卡状态模块** (原型行206-233) ``` - 标题: "今日打卡" - 状态指示器: 绿点(带脉冲动画) + "已打卡"文字 - 大号时间: "09:27" (text-2xl font-bold) - 日期: "2023年11月25日 星期六" - 上班/下班卡片: - 圆形图标背景(蓝色/灰色) - 上班打卡: 08:30 (已打卡,蓝色) - 下班打卡: --:-- (未打卡,灰色) - 按钮: "小程序远程打卡" (蓝色,手机图标) ``` **3. 快捷功能入口** (原型行235-253) ``` - 4个彩色圆角方形(不是圆形): - 个人信息: bg-blue-50, 蓝色图标 - 考勤记录: bg-green-50, 绿色图标 - 薪资查询: bg-purple-50, 紫色图标 - 企业信息: bg-yellow-50, 黄色图标 ``` **4. 最新通知** (原型行255-278) ``` - 通知项结构: - 彩色圆形图标(bg-blue-100/bg-green-100) - 标题 + 副标题(不是日期) - 示例: "薪资发放通知" + "11月薪资已发放,请查收" ``` ## 验收标准 ### 个人信息卡片 (P1) - [x] 显示3列统计: 本月出勤 | 异常记录 | 本月薪资 - [x] 添加圆形头像显示(用户姓名首字,60px,白色边框) - [x] 添加右侧二维码按钮图标(白色半透明圆形背景) - [x] 保持蓝色渐变背景 ### 打卡状态模块 (P1) - [x] 添加模块标题"今日打卡" - [x] 打卡状态指示器: 绿色圆点 + "已打卡"文字 - [x] 绿色圆点添加脉冲动画效果 - [x] 添加大号时间显示(格式"HH:mm", text-2xl) - [x] 添加当前日期显示(格式"YYYY年MM月DD日 星期X") - [x] 上班/下班卡片调整为圆形图标 + 灰色背景样式 - [x] 已打卡状态: 蓝色圆形图标 + 实心时间 - [x] 未打卡状态: 灰色圆形图标 + "--:--" - [x] 远程打卡按钮文案更新为"小程序远程打卡" - [x] 远程打卡按钮添加手机图标 ### 快捷功能入口 (P2) - [x] 调整为彩色圆角方形背景(不是圆形图标) - [x] 4个入口颜色: 蓝/绿/紫/黄 - [x] 保持图标和文字居中 ### 最新通知 (P1) - [x] 调整为彩色圆形图标样式 - [x] 通知内容显示: 标题 + 副标题 - [x] 移除右侧红点 - [x] 保持卡片样式 ### 兼容性验证 - [x] 所有样式与原型保持一致 - [x] 移动端显示效果良好 - [x] 现有功能不受影响 - [x] 类型检查通过 (`pnpm typecheck`) - [x] 底部预留TabBar高度(pb-20),确保滚动到底部 ## 任务列表 ### 任务1: 个人信息卡片调整 (P1) **文件:** `mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - [x] 1.1 添加"异常记录"统计列(原型行191-203) - [x] 1.2 添加圆形头像显示组件(用户姓名首字,原型行178-180) - [x] 1.3 添加右侧二维码按钮图标(原型行186-188) - [x] 1.4 调整3列统计布局为等宽分布 ### 任务2: 打卡状态模块调整 (P1) **文件:** `mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - [x] 2.1 添加模块标题"今日打卡"(原型行207) - [x] 2.2 实现打卡状态指示器(绿点 + 文字,原型行209-210) - [x] 2.3 添加绿色圆点脉冲动画(原型行69-75 @keyframes pulse) - [x] 2.4 添加大号时间显示(原型行212) - [x] 2.5 添加当前日期显示(原型行213) - [x] 2.6 调整上班/下班卡片为圆形图标样式(原型行215-228) - [x] 2.7 更新远程打卡按钮文案为"小程序远程打卡"(原型行231) - [x] 2.8 添加手机图标到远程打卡按钮(原型行231) ### 任务3: 快捷功能入口样式调整 (P2) **文件:** `mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - [x] 3.1 调整为圆角方形背景(原型行236-253) - [x] 3.2 应用4种颜色: bg-blue-50/bg-green-50/bg-purple-50/bg-yellow-50 - [x] 3.3 保持图标和文字居中对齐 ### 任务4: 最新通知样式调整 (P1) **文件:** `mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - [x] 4.1 添加彩色圆形图标(原型行260-262, 269-271) - [x] 4.2 调整通知内容为标题 + 副标题格式(原型行264-266, 273-275) - [x] 4.3 移除右侧红点 - [x] 4.4 调整图标颜色: bg-blue-100/bg-green-100 ### 任务5: 共享组件 - 脉冲动画点 (可选) **文件:** `mini-ui-packages/rencai-shared-ui/src/components/PulseDot.tsx` - [x] 5.1 创建PulseDot共享组件 - [x] 5.2 实现脉冲动画效果 - [x] 5.3 支持自定义颜色和大小 ### 任务6: 测试与验证 (P1) - [x] 6.1 执行类型检查 `pnpm typecheck` - [x] 6.2 验证首页与原型样式一致性 - [x] 6.3 验证移动端显示效果 - [x] 6.4 回归测试确保现有功能不受影响 - [x] 6.5 修复底部padding,预留TabBar高度避免内容被遮挡 ## Dev Notes ### 样式参考代码 **1. 蓝色渐变背景:** ```tsx style={{ background: 'linear-gradient(135deg, #3b82f6 0%, #1e40af 100%)' }} ``` **2. 脉冲动画 (原型行92-105):** ```css @keyframes pulse { 0% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); } 100% { transform: scale(0.95); box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); } } ``` **3. 打卡状态指示器:** ```tsx 已打卡 ``` **4. 上班/下班卡片:** ```tsx 上班打卡 08:30 ``` **5. 通知图标:** ```tsx 🔔 ``` ### 数据结构 **个人信息卡片统计:** ```tsx interface Stats { attendanceDays: number // 本月出勤: 28 abnormalRecords: number // 异常记录: 0 monthlySalary: number // 本月薪资: 4800 } ``` **打卡状态:** ```tsx interface ClockInStatus { status: '已打卡' | '未打卡' clockInTime?: string // "08:30" clockOutTime?: string // "--:--" displayTime?: string // "09:27" date?: string // "2023年11月25日 星期六" } ``` ### 通知数据结构 ```tsx interface Notification { id: number iconColor: 'blue' | 'green' | 'yellow' | 'red' icon: string // emoji或图标 title: string subtitle: string // 副标题,不是日期 } ``` ### 原型行号参考 | 功能模块 | 原型行号 | |---------|---------| | 顶部个人信息卡片 | 174-204 | | 打卡状态模块 | 206-233 | | 快捷功能入口 | 235-253 | | 最新通知 | 255-278 | ## 文件清单 ### 需要修改的文件 - `mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - 首页主要修改 ### 可能需要新增的文件 - `mini-ui-packages/rencai-shared-ui/src/components/PulseDot.tsx` - 脉冲动画点组件(可选) ## 风险与依赖 ### 依赖项 - 依赖故事017.002完成的首页基础实现 - 依赖故事017.012完成的Navbar组件统一规范 ### 风险缓解 - 保持原型像素级一致性 - 确保移动端显示效果符合预期 - 每个修改点独立验证 - 不影响现有功能交互逻辑 ## 其他页面说明 **注意:** 其他页面的完整实现应该归到各自的故事中: - **个人信息页**: 故事017.003 - 个人信息功能实现 ⏳ 待开始 - **考勤记录页**: 故事017.004 - 考勤记录功能实现 ⏳ 待开始 - **就业信息页**: 故事017.005 - 就业信息功能实现 ⏳ 待开始 - **设置页**: 故事017.006 - 设置与帮助功能实现 ⏳ 待开始 本故事**仅关注首页的样式调整**,其他页面的样式对照应该在各自的故事中完成。 --- ## Dev Agent Record ### Agent Model Used - Model: claude-sonnet ### Debug Log References - None ### Completion Notes 1. **个人信息卡片**: 成功添加3列统计布局(本月出勤、异常记录、本月薪资),添加圆形头像显示(用户姓名首字),添加右侧二维码按钮图标 2. **打卡状态模块**: 成功添加"今日打卡"标题,实现打卡状态指示器(绿点+文字+脉冲动画),添加大号时间显示和当前日期显示,调整上班/下班卡片为圆形图标样式,更新远程打卡按钮文案和图标 3. **快捷功能入口**: 成功调整为圆角方形背景,应用4种颜色(蓝/绿/紫/黄) 4. **最新通知**: 成功添加彩色圆形图标,调整为标题+副标题格式,移除右侧红点 5. **脉冲动画**: 使用Taro内置animate-pulse类实现,无需额外创建共享组件 6. **类型检查**: rencai-dashboard-ui包无新增类型错误(原有错误与本次修改无关) 7. **图标调整**: 更换考勤记录和薪资查询图标为项目内已有图标(document-text、chart-bar),薪资通知图标更换为check-circle 8. **布局修复**: 统计数据列使用flex flex-col items-center实现垂直对齐,底部padding改为pb-20预留TabBar空间 ### File List - `mini-ui-packages/rencai-dashboard-ui/src/pages/Dashboard/Dashboard.tsx` - 修改 ### Change Log - 2025-12-26: 实现首页样式对照原型调整 - 添加个人信息卡片3列统计、圆形头像、二维码按钮 - 添加打卡状态模块标题、状态指示器、时间日期显示、圆形图标卡片 - 调整快捷功能入口为圆角方形背景,应用4种颜色 - 调整最新通知为彩色圆形图标+标题+副标题格式 - 更新数据结构(ClockInData、Notification)支持新样式需求 - 添加时间格式化工具函数(formatCurrentTime、formatCurrentDate) - 更换图标为项目内已有图标(document-text、chart-bar、check-circle) - 修复统计数据列和底部padding布局问题 ### Status Ready for Review