网报小程序 — 我的订单与优惠券 — 产品需求说明书

模块 08 版本 V1.1 更新 2026-07-26 涉及期数一期 C 端 · 订单管理 + 优惠券
模块一:订单列表页(4个Tab)/myOrder
已取消订单 tab + 一键放回购物车

界面结构

  1. 顶部导航:返回 ← + "我的订单" + 微信胶囊
  2. 4 个 Tab(本期 P0 新增"已取消"tab):
    • 待支付(activeName=3)
    • 待补缴(activeName=2)
    • 已完成(activeName=1)
    • 已取消(activeName=4,右上有红点 ● 表示"新")
  3. 订单卡片(白底圆角):
    • 顶部:下单时间 / 取消时间(灰色)
    • 班级商品卡:类型标签 + 班级名 + 地点/时间/课次/老师
    • 底部:服务总价 ¥XXX
    • 操作按钮区(按状态变化,见状态说明表)

数据规则

orderStatus 字典(完整)

状态码含义主按钮(列表)主按钮(详情)
1已完成(查看订单)
2等待补缴立即补缴 / 未开放补缴(显示 toPayTime)立即补缴
3等待付款立即支付 + 倒计时立即支付 + 倒计时 + 取消服务
4已取消删除服务 / 放回购物车(P0 新增)删除 / 放回购物车
5支付成功(查看订单)
6支付成功(同 status 5)

segmentLabelObj 段次标签

标签说明
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/queryOrderstype, pageIndex, pageSize订单列表分页
/v2/order/queryOrderCounttype订单数量(用于角标)
/v2/order/deleteOrderorderId删除已取消订单
/v2/shoppingcart/batchAddclaIds, ignoreTest已取消订单一键放回购物车
模块二:订单详情 — 待支付/orderDetail
订单详情-待支付

界面结构

  1. 沉浸式顶部 banner(背景图按状态切换):
    • 待支付 → 橙色背景 + 时钟图标 + "待支付" + "该服务将于 XX分XX秒后失效,请尽快支付"
    • 待补缴 → 橙色背景 + 补缴图标 + "待补缴" + "X月X日 开放补缴" / "已开放补缴"
    • 已完成 → 蓝色背景 + 成功图标 + "已完成"
    • 已取消 → 灰色背景 + 失败图标 + "已取消" + "取消原因:xxx"
  2. 收货地址区(若有):省市区 + 详细地址 / 收件人 + 手机号 / "修改"按钮(若已发货则改为"查看物流")
  3. 服务卡列表:每个班级一张
    • 顶部按状态显示:申请退费 / 退费中 / 退费成功 / 已退余额 / 已转班 / 退费失败(regShowStatus 0~6)
    • 班级信息卡(ClassInfoCard)+ 段次列表(已缴/现缴/待缴 标签)
    • 押金(若有)
  4. 服务明细:服务总价 / 优惠 / 优惠券 / 优惠口令 / 余额抵扣 / 合计
  5. 底部操作按钮
    • 待支付:"取消服务"(描边)+ "立即支付"(橙色)
    • 待补缴:"立即补缴"
    • 已完成:无主按钮(P1 可加"再次购买")
    • 已取消:"删除服务" / "放回购物车"

数据规则

字段代码字段来源规则
订单详情orderDetailmine.getQueryOrderDetail({orderId})包含 orderInfo + 商品列表
订单状态orderInfo.orderStatus同上1/2/3/4/5/6 见 orderStatus 字典
支付倒计时cptCountDownTimecomputed从 orderCreateTime 算 30 分钟
取消原因orderInfo.cancelReason接口返回已取消时显示在 banner 文案
物流信息expressOrderorder.queryExpress({tmsOrderId})有则显示"查看物流"按钮
退费状态item.regShowStatus接口0~6 共 7 种态
服务总价orderInfo.orderPrice同上
优惠金额orderOtherCouponDis同上优惠券折扣
电子券折扣orderEcouponDis同上
口令优惠orderNbygCouponDis同上

regShowStatus 退费状态字典

显示文案颜色
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放回购物车
模块三:取消订单弹窗 + 一键放回购物车P0 核心
取消订单弹窗
已取消订单一键放回购物车

界面结构

A. 取消订单弹窗(底部半屏)

  1. 标题:"取消原因" + 右上 ✕ 关闭
  2. 副标题:"请选择取消本次服务的原因"
  3. 5 个单选项(每行 ○ 圆形单选):
    1. 不想买了
    2. 服务选错,重新拍
    3. 有更优惠的购买方案
    4. 付款遇到问题
    5. 其他原因
  4. 底部:"提交后,将本单商品放回购物车中" + 切换开关(默认开启)— P0 新增"放回购物车"开关
  5. 确定按钮:橙色大按钮

B. 已取消订单卡片"放回购物车"按钮

  • 位置:已取消订单列表卡片右下角,橙色描边按钮
  • 功能:一键将订单中所有班级重新加入购物车
  • 红点提示:已取消 tab 右上红点 ●,用户点开过一次后红点消失

交互规则

取消订单流程(6 步)

  1. 用户在订单详情"待支付"态点击"取消服务"按钮
  2. 弹底部半屏"取消原因"弹窗
  3. 用户选择 1 个原因 + 决定"放回购物车"开关(默认 ON/OFF 待确认 M-02
  4. 点击"确定" → 调 order.cancelOrder({orderId, cancelReason})
  5. 若开关 ON → 紧接着调 cart.batchAdd({claIds}) 把订单班级放回购物车
  6. 关闭弹窗 + toast"取消成功 + 已放回购物车"(或仅"取消成功")→ 页面刷新:状态变 4 已取消,banner 变灰

已取消订单一键放回购物车流程

  1. 用户在已取消订单列表/详情点击"放回购物车"
  2. cart.batchAdd({claIds})
  3. 成功 → toast"已放回购物车" + 跳转 07 购物车页
  4. 失败 → 按错误码弹窗处理(见异常与兜底)

异常与兜底

场景处理方式
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
遗留问题: M-01 "已取消"tab 红点判断字段待后端; M-02 放回购物车开关默认值待产品确认; M-03 列表页放回购物车是否二次确认待产品确认; M-04 "其他原因"是否展开文本框待确认
模块四:订单详情 — 已完成/待补缴/orderDetail
订单详情参考(已完成态无独立稿)

界面结构

已完成/待补缴订单详情页复用模块二的整体结构,仅 banner 状态和操作按钮区域有差异。

  1. 沉浸式 banner:见模块二状态说明表(已完成=蓝色/已取消=灰色/待补缴=橙色)
  2. 收货地址区:同模块二
  3. 服务卡列表:同模块二,含退费状态标签
  4. 服务明细:同模块二
  5. 评价入口(P1 占位):已完成订单底部可展示"去评价"入口

状态说明

订单状态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 刷新状态
订单详情加载失败显示"加载失败,请重试"占位 + 重试按钮
模块五:优惠券列表(3个Tab)/coupon
优惠券切换样式

界面结构

  1. 顶部导航:返回 ← + "优惠券" + 微信胶囊
  2. 3 个 Tab
    • 未使用
    • 已使用
    • 已过期
  3. 券卡片(整卡可点击):
    • 左侧:面额(大字号 ¥XX)+ 使用条件(满XX可用 / 不限门槛)
    • 右侧:有效期(YYYY.MM.DD - YYYY.MM.DD)+ 适用范围说明
    • 未使用态:右下角"去使用"橙色按钮
    • 已使用态:灰色 + "已使用"水印
    • 已过期态:灰色 + "已过期"水印
  4. 优惠券使用指南入口:右上角"使用指南"文字链 → /couponUserGuide

数据规则

discountType 优惠类型

类型含义展示方式
1满减券满 XX 减 XX
2折扣券X 折
3代金券直减 XX 元
4无门槛券减 XX 元(不限门槛)
2026-07-26 确认:优惠券类型口径 一期:当前业务实际发放的优惠券仅有 "立减"(直减固定金额)"折扣" 两种,无"满减"券。上表 discountType 为接口历史枚举全集,前端展示与测试用例以"立减/折扣"两种为准。

券状态判断

状态判断条件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,非独立页面。

  1. 触发入口:确认订单页"优惠券"行 → 点击展开底部半屏弹窗
  2. 弹窗结构(2 个 Tab)
    • 未使用:当前可用优惠券列表(单选),与独立优惠券页的"未使用"tab 数据一致
    • 历史卡券:已使用 + 已过期的券列表(只读展示,不可选择)
  3. 未使用 tab 券卡片
    • 左侧:面额 + 使用条件
    • 右侧:有效期 + ○ 单选按钮
    • 底部:"不使用优惠券"选项
  4. 历史卡券 tab 券卡片
    • 已使用:灰色 + "已使用"水印
    • 已过期:灰色 + "已过期"水印
  5. 底部:"确定"按钮 → 回填选中的券到确认订单页

交互规则

操作行为补充
选中一张券单选高亮 + 自动计算优惠金额切换选中时实时更新
"不使用优惠券"取消选中所有券,按原价计算
点击"确定"回填选中券 → 关闭弹窗 → 确认订单页更新金额若未选任何券则等价于"不使用"
切换到"历史卡券"tab展示已使用/已过期券(只读)不可选中,仅供查看

异常与兜底

场景处理方式
无可用优惠券未使用 tab 显示"暂无可用优惠券" + 引导查看历史卡券
券已过期但列表未刷新选中时校验有效期,过期则 toast"该券已过期" + 刷新列表
多选互斥(同类型券)单选模式,选新自动取消旧选中
跨模块引用:本模块由 07 购物车与下单的确认订单页调用,详见 07 模块五:确认订单
模块七:数据流程图

订单管理全流程

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
模块八:修订记录(V1.1 / 2026-07-26)
修订项修订内容期数依据来源日期
优惠券类型口径明确当前业务仅有"立减""折扣"两种优惠券,无"满减";discountType 接口枚举保留,前端展示与测试以两种类型为准一期2026-07-26确认2026-07-26
期数徽标说明:一期 2026年9月版本实现;二期 后续版本;三期 规划中。仅本次修订涉及的内容打标,存量未变更内容不打标。