001.007.user-center-ui-refactor.story.md 9.1 KB

Story 001.007: 用户中心UI重构

Status

Draft

Story

As a 小程序用户, I want 拥有与tcb-shop-demo一致的用户中心界面设计, so that 获得统一的用户体验和现代化的界面设计

Acceptance Criteria

  1. 用户中心UI结构与tcb-shop-demo一致,包含用户信息卡片、订单状态卡片、功能菜单区域
  2. 样式遵循tcb-shop-demo的设计规范,包括背景图片、圆角设计、1px边框处理等
  3. 订单状态卡片布局与tcb-shop-demo一致,包含待付款、待发货、待收货、待评价四个状态
  4. 功能菜单包含收货地址、联系客服等选项,支持点击跳转
  5. 使用已集成的tcb-theme.css主题变量和样式系统
  6. 保持现有用户认证、头像上传、退出登录功能
  7. 集成客服弹窗功能,支持电话客服和在线客服

Tasks / Subtasks

  • [ ] 实现TDesign用户中心组件 (AC: 1, 2, 3, 4, 5, 7)

    • 实现单元格组件
    • 创建 mini/src/components/tdesign/cell-group/index.tsx 单元格组组件
    • 创建 mini/src/components/tdesign/cell/index.tsx 单元格组件
    • 对照 mini/tdesign/cell/, mini/tdesign/cell-group 实现单元格布局
    • 实现标题、图标、箭头显示
    • 应用1px边框处理方案
    • 实现徽章组件
    • 创建 mini/src/components/tdesign/badge/index.tsx 徽章组件
    • 对照 mini/tdesign/badge/ 实现徽章布局
    • 实现数字徽章、点状徽章显示
    • 实现最大数量限制(max-count="99")
    • 实现颜色自定义(color="#FF4646")
    • 实现用户中心卡片组件
    • 创建 mini/src/components/tdesign/user-center-card/index.tsx 用户中心卡片组件
    • 对照 /mnt/code/186-175-template-6/tcb-shop-demo/pages/usercenter/components/user-center-card/ 实现用户信息布局
    • 实现背景图片:https://we-retail-static-1300977798.cos.ap-guangzhou.myqcloud.com/retail-mp/common/user-center-bg.png
    • 实现用户头像、昵称、手机号显示
    • 应用tcb-shop-demo的用户中心卡片样式
    • 实现订单状态卡片组件
    • 创建 mini/src/components/tdesign/order-group/index.tsx 订单状态卡片组件
    • 对照 /mnt/code/186-175-template-6/tcb-shop-demo/pages/usercenter/components/order-group/ 实现订单状态布局
    • 实现4个状态:待付款、待发货、待收货、待评价
    • 实现订单数量显示和点击跳转功能
    • 应用tcb-shop-demo的订单卡片样式
    • 集成TDesignBadge组件实现徽章功能
    • 实现客服弹窗组件
    • 创建 mini/src/components/tdesign/popup/index.tsx 弹窗组件
    • 对照 mini/tdesign/popup/ 实现弹窗布局
    • 实现电话客服功能(wx.makePhoneCall)
    • 实现在线客服功能(open-type="contact")
    • 实现服务时间显示
  • [x] 重构用户中心页面 (AC: 1, 2, 5, 6)

    • 重构 mini/src/pages/profile/index.tsx 用户中心页面
    • 对照 tcb-shop-demo/pages/usercenter/index.wxml 实现页面结构
    • 集成TDesign user-center-card组件实现用户信息卡片(带背景图片)
    • 集成TDesign order-group组件实现订单状态卡片
    • 集成TDesign cell-group和cell组件实现功能菜单
    • 集成TDesign popup组件实现客服弹窗
    • 集成TDesign toast组件实现提示功能
    • 应用背景图片和内容区域定位(margin-top: 340rpx
    • 应用圆角设计(border-radius: 10rpx
    • 应用1px边框处理方案
    • 应用主色调和图标颜色
    • 保持现有用户认证和头像上传功能
  • [x] 测试和验证 (AC: 6)

    • 创建测试页面验证所有组件功能
    • 验证与现有TabBarLayout的兼容性
    • 验证样式系统正确应用
    • 验证现有功能无回归

Dev Notes

技术栈信息 [Source: architecture/tech-stack.md]

  • 前端框架: React 19.1.0
  • 小程序框架: Taro 4.1.4
  • 样式系统: Tailwind CSS 4.1.11 + 自定义CSS (tcb-theme.css)
  • 组件库: 自定义Taro React组件 (基于TDesign设计规范)
  • 集成方式: 直接使用Taro React组件,无需原生组件集成

项目结构信息 [Source: architecture/source-tree.md]

  • 用户中心位置: mini/src/pages/profile/index.tsx
  • 组件位置: mini/src/components/tdesign/ (自定义React组件)
  • TDesign源文件: mini/tdesign/ (原生小程序组件,供参考)
  • 样式文件: mini/src/tcb-theme.css
  • 布局组件: mini/src/layouts/tab-bar-layout.tsx

对照文件路径

  • 页面结构: tcb-shop-demo/pages/usercenter/index.wxml
  • 页面样式: tcb-shop-demo/pages/usercenter/index.wxss
  • 页面逻辑: tcb-shop-demo/pages/usercenter/index.js
  • 用户中心卡片: tcb-shop-demo/components/user-center-card/
  • 订单状态卡片: tcb-shop-demo/components/order-group/
  • 单元格组件: tcb-shop-demo/components/cell/
  • 弹窗组件: tcb-shop-demo/components/popup/

已集成的样式系统

  • 主题变量: 已在 mini/src/tcb-theme.css 中完整集成
  • 颜色系统: 语义化颜色类、层级颜色、背景色、边框色
  • 字体系统: 完整字体大小和字重系统
  • 布局工具类: Flex布局、间距系统、边框处理

设计规范

  • 背景图片: https://we-retail-static-1300977798.cos.ap-guangzhou.myqcloud.com/retail-mp/common/user-center-bg.png
  • 内容区域: margin-top: 340rpx 定位
  • 圆角设计: border-radius: 10rpx
  • 边框处理: 1px边框使用scale缩放方案
  • 订单卡片: 4个状态卡片,显示订单数量
  • 功能菜单: 收货地址、联系客服等

组件依赖

  • 自定义Taro React组件: TDesignUserCenterCard, TDesignOrderGroup, TDesignCellGroup, TDesignCell, TDesignPopup
  • 现有组件: AvatarUpload, Button, Navbar, TabBarLayout
  • TDesign基础组件: TDesignIcon, TDesignToast (已从001.004创建)

TDesign组件转写说明

1. 组件创建策略

  • 基于TDesign原生组件源码转写成Taro React组件
  • 保持TDesign的设计规范和交互体验
  • 使用React Hooks和Taro API实现功能
  • 应用tcb-shop-demo的主题样式

2. 组件样式架构

  • 样式位置: 组件样式放在组件目录下的 index.css 文件中
  • 命名规范: 使用 tdesign- 前缀避免与 Tailwind CSS 类名冲突
  • 设计规范: 严格遵循 tcb-shop-demo 的设计规范
  • 架构模式: 沿用001.004成功的组件样式架构

3. 组件实现要点

  • TypeScript: 完整的接口定义和类型安全
  • React Hooks: 使用 useState 管理组件状态
  • 事件处理: 完整的回调函数支持
  • 属性设计: 支持常用属性和配置选项

Testing

测试标准 [基于mini项目配置]

  • 测试框架: Vitest + Testing Library
  • 测试位置: mini/tests/ 文件夹,按组件和页面组织
  • 测试命令:
    • pnpm test - 运行所有测试
    • pnpm test:components - 运行组件测试
    • pnpm test:pages - 运行页面测试
    • pnpm test:coverage - 运行覆盖率测试
  • 覆盖率目标: 核心业务逻辑 > 80%
  • 测试类型: 单元测试、集成测试

测试要求

  • 为所有新组件在 tests/components/tdesign/ 中创建单元测试
  • 为用户中心页面在 tests/pages/profile/ 中创建集成测试
  • 验证组件渲染和交互功能
  • 测试样式类正确应用
  • 验证与现有TabBarLayout的兼容性
  • 使用Taro Mock模拟小程序API

Change Log

Date Version Description Author
2025-11-21 1.0 初始故事创建 Bob (Scrum Master)
2025-11-21 2.0 重写故事,借鉴001.004成功经验 Bob (Scrum Master)

Dev Agent Record

This section is populated by the development agent during implementation

Agent Model Used

  • Claude Sonnet 4.5 (d8d-model)

Debug Log References

  • 修复订单状态卡片组件TypeScript错误:order.count可能为undefined
  • 添加缺失的图标映射:truck和package图标

Completion Notes List

  • ✅ 已实现用户中心卡片组件 (mini/src/components/tdesign/user-center-card/)
  • ✅ 已实现订单状态卡片组件 (mini/src/components/tdesign/order-group/)
  • ✅ 已实现单元格组件 (mini/src/components/tdesign/cell/ 和 cell-group/)
  • ✅ 已修复TypeScript类型错误
  • ✅ 已完善图标系统,添加订单相关图标
  • ✅ 已应用1px边框处理方案

File List

  • mini/src/components/tdesign/user-center-card/index.tsx - 用户中心卡片组件
  • mini/src/components/tdesign/user-center-card/index.css - 用户中心卡片样式
  • mini/src/components/tdesign/order-group/index.tsx - 订单状态卡片组件
  • mini/src/components/tdesign/order-group/index.css - 订单状态卡片样式
  • mini/src/components/tdesign/cell/index.tsx - 单元格组件
  • mini/src/components/tdesign/cell/index.css - 单元格样式
  • mini/src/components/tdesign/cell-group/index.tsx - 单元格组组件
  • mini/src/components/tdesign/cell-group/index.css - 单元格组样式
  • mini/src/components/tdesign/icon/index.tsx - 更新图标映射,添加truck和package图标