| 状态码 | 含义 | 主按钮(列表) | 主按钮(详情) |
|---|---|---|---|
| 1 | 已完成 | 无 | (查看订单) |
| 2 | 等待补缴 | 立即补缴 / 未开放补缴(显示 toPayTime) | 立即补缴 |
| 3 | 等待付款 | 立即支付 + 倒计时 | 立即支付 + 倒计时 + 取消服务 |
| 4 | 已取消 | 删除服务 / 放回购物车(P0 新增) | 删除 / 放回购物车 |
| 5 | 支付成功 | 无 | (查看订单) |
| 6 | 支付成功 | 无 | (同 status 5) |
| 值 | 标签 | 说明 |
|---|---|---|
| 0 | 已缴 | 已支付完成的段次 |
| 1 | 现缴 | 当前需要支付的段次 |
| 2 | 待缴 | 后续待补缴的段次 |
| Tab | 筛选条件 | 卡片操作按钮 | 补充说明 |
|---|---|---|---|
| 待支付 | orderStatus=3 | "立即支付"橙色按钮 + 倒计时(mm:ss) | 倒计时到 0 自动 reload |
| 待补缴 | orderStatus=2 | "立即补缴"或"未开放补缴" | orderCanRePay===3 可补缴;===4 灰禁;否则显示 toPayTime 文案 |
| 已完成 | orderStatus=1/5/6 | 无主按钮(点卡片进详情) | P1 可考虑"再次购买"入口 |
| 已取消 | orderStatus=4 | "删除服务" + "放回购物车"橙色描边按钮 | 放回购物车调 batchAdd 接口 |
| 操作 | 行为 | 补充 |
|---|---|---|
| 立即支付 | 跳转 07 收银台(continuePay 接口) | 携带 orderId,倒计时从 orderCreateTime 算 30 分钟 |
| 立即补缴 | 跳转收银台 | 同立即支付,但走补缴流程 |
| 放回购物车(已取消卡片) | 调 cart.batchAdd({claIds}) → 成功 toast"已放回购物车" + 跳 07 购物车 | claIds 取订单中所有班级 ID |
| 删除服务 | 调 order.deleteOrder({orderId}) → 移除卡片 | 需二次确认弹窗 |
| 下拉刷新 | onRefresh 重新拉取列表 | — |
| 分页加载 | listMixin 提供,pageSize=10 | 滚动到底部自动加载下一页 |
| 点击订单卡片 | 跳转 /orderDetail?orderId= | 所有状态均可点击进入详情 |
| 场景 | 处理方式 |
|---|---|
| 空列表 | 各 tab 显示 empty 占位图 + "暂无订单" |
| batchAdd 5003(班级冲突) | 弹"班级冲突"弹窗,提示用户去购物车处理 |
| batchAdd 5005/5006(诊断分层冲突) | 弹"诊断分层冲突"弹窗,同 07 购物车错误码处理 |
| batchAdd 5011(其他业务冲突) | 弹冲突提示弹窗 |
| batchAdd 部分失败 | dialog 列出失败班级 + 已成功项保留 |
| 订单服务不可用 | 各 tab 显示"服务暂不可用,请稍后" |
| 接口 | 入参 | 用途 |
|---|---|---|
/v2/order/queryOrders | type, pageIndex, pageSize | 订单列表分页 |
/v2/order/queryOrderCount | type | 订单数量(用于角标) |
/v2/order/deleteOrder | orderId | 删除已取消订单 |
/v2/shoppingcart/batchAdd | claIds, ignoreTest | 已取消订单一键放回购物车 |
| 字段 | 代码字段 | 来源 | 规则 |
|---|---|---|---|
| 订单详情 | orderDetail | mine.getQueryOrderDetail({orderId}) | 包含 orderInfo + 商品列表 |
| 订单状态 | orderInfo.orderStatus | 同上 | 1/2/3/4/5/6 见 orderStatus 字典 |
| 支付倒计时 | cptCountDownTime | computed | 从 orderCreateTime 算 30 分钟 |
| 取消原因 | orderInfo.cancelReason | 接口返回 | 已取消时显示在 banner 文案 |
| 物流信息 | expressOrder | order.queryExpress({tmsOrderId}) | 有则显示"查看物流"按钮 |
| 退费状态 | item.regShowStatus | 接口 | 0~6 共 7 种态 |
| 服务总价 | orderInfo.orderPrice | 同上 | — |
| 优惠金额 | orderOtherCouponDis | 同上 | 优惠券折扣 |
| 电子券折扣 | orderEcouponDis | 同上 | — |
| 口令优惠 | orderNbygCouponDis | 同上 | — |
| 值 | 显示文案 | 颜色 |
|---|---|---|
| 0 | (不显示) | — |
| 1 | 申请退费 | 橙色 |
| 2 | 退费中 | 蓝色 |
| 3 | 退费成功 | 绿色 |
| 4 | 已退余额 | 绿色 |
| 5 | 已转班 | 灰色 |
| 6 | 退费失败 | 红色 |
| Banner 状态 | 背景色 | 图标 | 主文案 | 副文案 |
|---|---|---|---|---|
| 待支付(status=3) | 橙色 | 时钟 | 待支付 | 该服务将于 XX分XX秒后失效,请尽快支付 |
| 待补缴(status=2) | 橙色 | 补缴 | 待补缴 | X月X日 开放补缴 / 已开放补缴 |
| 已完成(status=1/5/6) | 蓝色 | 成功 | 已完成 | — |
| 已取消(status=4) | 灰色 | 失败 | 已取消 | 取消原因:{cancelReason} |
| 操作 | 行为 | 补充 |
|---|---|---|
| 立即支付 | 调 continuePay 接口 → 跳转 07 收银台 | 倒计时到 0 → 页面自动 reload |
| 取消服务 | 弹底部半屏取消订单弹窗(见模块三) | 仅待支付态可见 |
| 修改地址 | 跳转地址编辑页(modifyAddress 接口) | 若已发货则按钮文案改为"查看物流" |
| 查看物流 | 调 order.queryExpress → 展示物流信息 | expressOrder 有值时显示 |
| 删除服务 | 二次确认 → deleteOrder → 返回列表 | 仅已取消态可见 |
| 放回购物车 | 调 batchAdd({claIds}) → toast + 跳购物车 | 仅已取消态可见 |
| 接口 | 用途 |
|---|---|
/v2/order/queryOrderDetail | 订单详情 |
/v2/order/cancelOrder | 取消订单 |
/v2/order/deleteOrder | 删除已取消订单 |
/v2/order/modifyAddress | 修改收货地址 |
/v2/order/continuePay | 继续支付 |
/v2/logistics/express | 查看物流 |
/v2/shoppingcart/batchAdd | 放回购物车 |
order.cancelOrder({orderId, cancelReason})cart.batchAdd({claIds}) 把订单班级放回购物车cart.batchAdd({claIds})| 场景 | 处理方式 |
|---|---|
| batchAdd 全部成功 | toast"已放回 X 个班级" + 跳购物车 |
| batchAdd 部分失败 | dialog 列出失败班级名 + 已成功项保留(如"已结束/学位售罄") |
| batchAdd 全部失败 | toast 失败原因 |
| batchAdd 5003(班级冲突) | 弹"班级冲突"弹窗 |
| batchAdd 5005/5006(诊断分层冲突) | 弹"诊断分层冲突"弹窗 |
| batchAdd 5011 | 弹冲突提示弹窗 |
| cancelOrder 接口失败 | toast 错误信息,弹窗不关闭 |
| 防重复提交 | "确定"按钮 disabled + Loading |
| 配置项 | 维度 | 说明 |
|---|---|---|
| 取消原因列表 | 后台可配置 | 当前固定 5 个,后续可运营调整 |
| "放回购物车"开关默认值 | 全局 | ON 还是 OFF(待确认 M-02,影响转化挽留率) |
| "已取消"tab 红点判断 | 后端字段 | 近 7 天有新取消?有未处理的?(待确认 M-01,需后端字段支持) |
| 已取消订单是否需要二次确认 | 全局 | 列表页"放回购物车"是否弹确认 dialog(待确认 M-03) |
已完成/待补缴订单详情页复用模块二的整体结构,仅 banner 状态和操作按钮区域有差异。
| 订单状态 | Banner | 底部操作按钮 | 补充说明 |
|---|---|---|---|
| 已完成(status=1/5/6) | 蓝色"已完成" | 无主按钮 | P1 可考虑"再次购买"按钮 |
| 待补缴(status=2, orderCanRePay=3) | 橙色"待补缴 — 已开放补缴" | "立即补缴"橙色按钮 | 跳转收银台,走补缴流程 |
| 待补缴(status=2, orderCanRePay=4) | 橙色"待补缴" | "未开放补缴"灰色禁用 | — |
| 待补缴(status=2, 其他) | 橙色"待补缴" | 显示 toPayTime 文案 | 如"X月X日 开放补缴" |
| 操作 | 行为 | 补充 |
|---|---|---|
| 立即补缴 | 跳转 07 收银台 | 复用 continuePay 接口,走补缴结算 |
| 再次购买(P1) | 将订单中班级重新加入购物车 | 类似"放回购物车"但面向已完成订单 |
| 去评价(P1) | 跳转评价页 | 需与 06 课程详情的学员评价模块联动 |
| 退费申请 | 跳转退费流程页 | P1 后续迭代,本期仅保留路由入口 |
| 场景 | 处理方式 |
|---|---|
| 补缴开放但班级已下架 | toast"该服务已下架,无法补缴" |
| 补缴倒计时归零 | 页面自动 reload 刷新状态 |
| 订单详情加载失败 | 显示"加载失败,请重试"占位 + 重试按钮 |
| 类型 | 含义 | 展示方式 |
|---|---|---|
| 1 | 满减券 | 满 XX 减 XX |
| 2 | 折扣券 | X 折 |
| 3 | 代金券 | 直减 XX 元 |
| 4 | 无门槛券 | 减 XX 元(不限门槛) |
| 状态 | 判断条件 | Tab 归属 |
|---|---|---|
| 未使用 | unusedStatus=1 且未过期 | 未使用 tab |
| 已使用 | unusedStatus=2 | 已使用 tab |
| 已过期 | unusedStatus=1 且已过期 | 已过期 tab |
| 操作 | 行为 | 补充 |
|---|---|---|
| "去使用" | 跳转 03 首页 / 04 选课 | 根据券适用范围决定跳转目标 |
| 整卡点击 | 同"去使用"(整卡 click 热区扩大) | P0 改进:旧版点击区域小,新版整张券都是点击热区 |
| 下拉刷新 | onRefresh 重新拉取 | — |
| 使用指南 | 跳转 /couponUserGuide | 旧版已实现,本期保留 |
| 场景 | 处理方式 |
|---|---|
| 无优惠券 | 各 tab 显示 empty 占位图 + "暂无优惠券" |
| 优惠券服务不可用 | 显示"服务暂不可用,请稍后" |
| 配置项 | 说明 |
|---|---|
| 优惠券使用指南 URL | 路由 /couponUserGuide,旧版已实现 |
| 点击热区规则 | 整卡 click(hover/active 态视觉反馈,待确认 M-09) |
历史卡券是在确认订单页(07 购物车与下单)中调用的券切换 UI,非独立页面。
| 操作 | 行为 | 补充 |
|---|---|---|
| 选中一张券 | 单选高亮 + 自动计算优惠金额 | 切换选中时实时更新 |
| "不使用优惠券" | 取消选中所有券,按原价计算 | — |
| 点击"确定" | 回填选中券 → 关闭弹窗 → 确认订单页更新金额 | 若未选任何券则等价于"不使用" |
| 切换到"历史卡券"tab | 展示已使用/已过期券(只读) | 不可选中,仅供查看 |
| 场景 | 处理方式 |
|---|---|
| 无可用优惠券 | 未使用 tab 显示"暂无可用优惠券" + 引导查看历史卡券 |
| 券已过期但列表未刷新 | 选中时校验有效期,过期则 toast"该券已过期" + 刷新列表 |
| 多选互斥(同类型券) | 单选模式,选新自动取消旧选中 |
flowchart TD Start([我的 - 订单入口]) --> OrderList[订单列表页
4 Tab: 待付款/待补缴/已完成/已取消] OrderList -- 点击卡片 --> OrderDetail[订单详情页] OrderDetail -- status=3 待支付 --> PayAction{操作} PayAction -- 立即支付 --> Cashier[07 收银台
continuePay] PayAction -- 取消服务 --> CancelDialog[取消订单弹窗
5 原因 + 放回购物车开关] CancelDialog -- 确定 --> CancelOrder[/cancelOrder/] CancelOrder -- 开关 ON --> BatchAdd1[/batchAdd
放回购物车/] CancelOrder -- 开关 OFF --> RefreshDetail[刷新详情
status=4 已取消] BatchAdd1 --> RefreshDetail OrderDetail -- status=4 已取消 --> CancelAction{操作} CancelAction -- 放回购物车 --> BatchAdd2[/batchAdd/] CancelAction -- 删除服务 --> DeleteOrder[/deleteOrder/] BatchAdd2 -- 成功 --> JumpCart[toast + 跳 07 购物车] BatchAdd2 -- 5003/5005/5006/5011 --> ConflictDialog[弹冲突弹窗] OrderDetail -- status=2 待补缴 --> RepayAction{操作} RepayAction -- 立即补缴 --> Cashier RepayAction -- 未开放 --> Disabled[灰色禁用
显示 toPayTime] OrderDetail -- status=1/5/6 已完成 --> DoneAction[查看详情
P1: 再次购买/去评价] OrderList -- 已取消 tab 放回购物车 --> BatchAdd3[/batchAdd/] BatchAdd3 --> JumpCart subgraph 优惠券 CouponList[优惠券列表 3 Tab
未使用/已使用/已过期] CouponSwitch[确认订单 - 券切换
2 Tab: 未使用/历史卡券] end OrderList -- 优惠券入口 --> CouponList Cashier -.-> CouponSwitch
flowchart TD
Start([已取消订单]) --> Click{用户点击放回购物车}
Click -- 列表卡片按钮 --> CallBatch
Click -- 详情页底部按钮 --> CallBatch
CallBatch[/shoppingcart/batchAdd
入参 claIds=订单中的班级] --> Resp{响应 code}
Resp -- 200 全部成功 --> Success[toast 已放回购物车 + 跳购物车页]
Resp -- 部分失败 --> PartFail[dialog 列出失败班级
+ 已成功项保留]
Resp -- 全部失败 --> AllFail[toast 失败原因]
Resp -- 5003 --> Conflict[弹班级冲突弹窗]
Resp -- 5005/5006 --> DiagConflict[弹诊断分层冲突弹窗]
Resp -- 5011 --> BizConflict[弹业务冲突弹窗]
subgraph 取消订单时放回
CancelPreCancel([待支付订单点取消服务]) --> CancelPop[弹取消原因弹窗]
CancelPop --> ChooseReason[选 1/5 原因 + 切换放回购物车开关]
ChooseReason --> SubmitCancel[确定: cancelOrder + 可选 batchAdd]
SubmitCancel --> Resp
end
| 修订项 | 修订内容 | 期数 | 依据来源 | 日期 |
|---|---|---|---|---|
| 优惠券类型口径 | 明确当前业务仅有"立减""折扣"两种优惠券,无"满减";discountType 接口枚举保留,前端展示与测试以两种类型为准 | 一期 | 2026-07-26确认 | 2026-07-26 |