2026-08-12-profile-ecommerce-style-design.md 4.9 KB

我的页面电商风格改造设计

日期:2026-08-12 状态:已批准(用户确认五宫格 + 不保留待完成任务)

背景

"我的"页面(pages/profile-main/profile.vue)当前布局偏家庭教育工具风。用户希望将其改造成类似电商小程序"我的"页面的常见结构:订单状态宫格 + 购物车 + 收货地址 + 设置菜单。

当前结构

  1. 身份卡(保留)
  2. 家庭成员速览(保留)
  3. 个人成就统计(保留)
  4. 待办提醒区(reminder-section,条件显示:待完成任务/待付款/待收货/售后)
  5. 功能入口网格(menu-grid-section:家庭成员/家庭挑战/成长记录/健康报告/测评预约/设置)
  6. 退出登录(保留)

目标结构

  1. 身份卡(不变)
  2. 家庭成员速览(不变)
  3. 个人成就统计(不变)
  4. "我的订单"五宫格区块(常驻显示,替代原待办提醒区)
  5. 设置菜单项(替代原功能入口网格中的设置,放在退出登录上方)
  6. 退出登录(不变)

改动明细

① 待办提醒区 → "我的订单"电商区块(常驻)

┌─────────────────────────────┐
│ 我的订单             全部订单 › │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ 💳   │ │ 📦   │ │ 🚚   │ │ 🔧   │ │ 📋   │ │
│ │ 待付款 │ │ 待发货 │ │ 待收货 │ │ 售后  │ │ 全部  │ │
│ │ (N)  │ │ (N)  │ │ (N)  │ │ (N)  │ │ (N)  │ │
│ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ │
│ ┌───────────┐ ┌───────────┐                │
│ │ 🛒 购物车(N) │ │ 📍 收货地址  │                │
│ └───────────┘ └───────────┘                │
└─────────────────────────────┘
  • 五宫格:待付款 / 待发货 / 待收货 / 售后 / 全部订单
    • 前四格带数量角标(对应订单状态数),点击跳 /pages/shop/order-list/order-list?status=<value> 定位对应 tab
    • 第五格"全部订单"不带角标,点击跳 /pages/shop/order-list/order-list
  • 下方一行两个入口:
    • 购物车(带数量角标)→ /pages/shop/cart/cart
    • 收货地址 → /pages/shop/address/address
  • 原"待完成任务"提醒不保留(用户确认)
  • 原 hasReminders 条件显示逻辑移除,该区块常驻

② 功能入口网格 → 整个删除

menu-grid-section(家庭成员/家庭挑战/成长记录/健康报告/测评预约)全部移除。原网格中的"设置"移至下方菜单区。

③ 设置 → 菜单项形式(退出登录上方)

┌─────────────────────────────┐
│ ⚙️ 设置                    › │  ← 复用现有 goToSettings()(ActionSheet)
├─────────────────────────────┤
│ 🚪 退出登录                  │  ← 不变
└─────────────────────────────┘
  • 设置项复用现有 goToSettings() 逻辑(ActionSheet:完善信息/家庭成员/邀请加入/设置密码/隐私设置/关于浠艾福)

④ 附带修正

  1. 订单字段映射修正:loadOrderCounts() 现有映射把 paid 放到"待付款",错误。后端返回 pending/paid/shipped/refunding,修正为:
    • 待付款 = pending
    • 待发货 = paid
    • 待收货 = shipped
    • 售后 = refunding
    • 全部 = total
  2. 购物车角标加载:loadCartCount() 方法已存在但 loadAllData() 未调用,补上调用。
  3. order-list 支持 status 参数:pages/shop/order-list/order-list.vue 的 onLoad() 目前不读取 query 参数,改为 onLoad(options) 读取 options.status 并设置 currentStatus,实现宫格定位。

数据流

  • onShow → loadAllData() → loadOrderCounts()(订单角标)+ loadCartCount()(购物车角标)
  • 点击宫格/购物车/收货地址 → uni.navigateTo 对应页面

错误处理

  • 订单/购物车接口失败:沿用现有 .catch(function() {}) 静默处理,角标显示 0
  • 后端接口 404(如 profile-stats 未部署):静默失败,不影响页面渲染

验证

  • node --check 提取的 script 块语法检查
  • 微信开发者工具人工验证:五宫格显示、角标数字、各入口跳转、设置菜单、退出登录
  • 需 HBuilderX 重新打包生效

范围外

  • 不改动 pages/profile/index.vue(分包旧入口,使用 ProfileMenu 组件)
  • 不改动 components/ProfileMenu.vue
  • 不改动个人成就统计区数据加载逻辑