feat(borrow): 前端适配整单转交与双向握手

· 转交弹窗由「选择明细」改为**整单**:列出该单全部未还物品(只读),
  明确告知「发起后对方确认,责任才转移」。原先让用户挑一行,挑中就只转
  那一行 —— 正是单内撕裂的入口,现从 UI 上根除。
· 操作栏新增【接收转交】【拒绝】:仅对 pending_transfer.is_mine 的行显示,
  即「待我接收」的转交。已有 PENDING 时不再显示【转交】,避免重复发起。
· 状态列新增「转交待确认」:此时主表 current_holder 未变(东西还在原持有人
  手上),必须用状态列把「责任正在转移中」显式表达出来,否则界面上看不出
  任何变化。
· 新增 acceptBorrowTransfer / rejectBorrowTransfer API;
  拒绝时用 prompt 收集可选原因,写入转交流水备注。

错误提示仍交由 request 拦截器统一 toast,不在本地重复弹出。
This commit is contained in:
yueli
2026-09-17 10:04:16 +08:00
parent 1a8e3e3dc0
commit 263f7ba3a1
2 changed files with 149 additions and 42 deletions

View File

@ -283,6 +283,31 @@ export function getBorrowHistory(borrowId: number) {
})
}
/**
* 确认接收转交(双向握手第二步)—— 责任正式转移到接收人名下。
*
* ★ 仅该转交的 to_user_id 本人可调用(后端强校验,非库管权限)。
* ★ 副作用:该单**全部未归还明细**的当前持有人一并变更。
*/
export function acceptBorrowTransfer(transferId: number) {
return request({
url: `/v1/transactions/borrow/transfer/${transferId}/accept`,
method: 'post'
})
}
/**
* 拒绝转交 —— 主表不动,责任仍在原持有人。权限同上。
* @param reason 可选拒绝原因,写入转交流水备注
*/
export function rejectBorrowTransfer(transferId: number, reason?: string) {
return request({
url: `/v1/transactions/borrow/transfer/${transferId}/reject`,
method: 'post',
data: { reason }
})
}
/**
* 整单流转时间线(**borrow_no** 维度):借出 → 转交(可多次) → 归还 → 报废
*