# 尾款凭证上传功能(后端已完成,前端需实现) **日期**: 2026-03-23 **页面**: 订单详情页 **类型**: 新功能 --- ## 后端改了什么 定金模式订单,清单确认完成后,订单状态不再直接跳到 `PENDING_DEPARTURE`(待出行),而是先进入 **`PENDING_BALANCE`(待付尾款)**,上传凭证/记录尾款后才转为 `PENDING_DEPARTURE`。 状态流转变化: ``` 旧:CONFIRMED(READY) ──记录尾款──→ PENDING_DEPARTURE 新:CONFIRMED(READY) ──清单确认──→ PENDING_BALANCE ──记录尾款──→ PENDING_DEPARTURE ``` ## 前端需要实现 ### 1. 显示"上传尾款凭证"按钮 显示条件: ```js const showBalanceProofBtn = order.paymentType === 'DEPOSIT' && !order.balanceProofUrl && ['PENDING_BALANCE', 'PENDING_DEPARTURE', 'TRAVELLING'].includes(order.status); ``` 建议放在订单详情页**金额明细区域**的"尾款"行旁边,或作为顶部操作按钮。 ### 2. 点击按钮弹窗 弹窗内容: | UI元素 | 说明 | |--------|------| | 标题 | "记录尾款收取" | | 尾款金额(只读展示) | 从订单详情取 `balanceAmount` 字段,格式 ¥xxxx.xx | | 上传凭证(图片上传) | 调用文件上传接口获取 OSS URL,非必填 | | 备注(文本框) | 最多500字,非必填 | | 确认按钮 | 调用记录尾款接口 | ### 3. 已上传凭证展示 当 `order.balanceProofUrl` 有值时,在尾款金额旁显示凭证图片(可点击放大查看)。 ## 接口定义 ### 记录尾款 ``` PUT /admin/order/{orderId}/record-balance ``` 请求体(JSON): | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | proofUrl | String | 否 | 支付凭证图片URL(先通过文件上传接口上传到OSS,把返回的URL传这里) | | remark | String | 否 | 备注,最多500字 | 成功响应: ```json { "code": 200, "message": "success", "data": null } ``` 调用成功后刷新订单详情(状态会从 `PENDING_BALANCE` 变为 `PENDING_DEPARTURE`)。 ### 订单详情中相关字段 | 字段 | 类型 | 说明 | |------|------|------| | status | String | 订单状态,`PENDING_BALANCE` = 待付尾款 | | paymentType | String | 支付模式,`DEPOSIT` = 定金+尾款 | | balanceProofUrl | String | 尾款凭证URL,null表示未上传 | | balanceAmount | BigDecimal | 尾款金额(后端已计算好) | | balancePayMethod | String | 尾款支付方式:`ONLINE`=线上微信支付,`OFFLINE`=线下转账 | ## 状态中文标签 | status | 中文标签 | |--------|---------| | `PENDING_BALANCE` | 待付尾款 | | `PENDING_DEPARTURE` | 待出行 | | `TRAVELLING` | 出行中 |