feat(borrow): 全局提醒支持双向 —— 发起方也能收到「转交被拒绝」
提醒组件从单向(待我接收)扩展为双向,一次轮询同时取回两类: ① 转交被拒绝 —— 我发起、对方拒收,物品责任仍在我手上 ② 待我接收 —— 别人转给我、等我确认 弹窗(沿用中央 Modal + 遮罩,不进则已、进则打断): 标题「转交被拒绝」,列出被拒物品(物料名 + 单号 + 接收人,超过 5 笔折叠计数), 按钮【去处理】(跳借还记录) /【知道了】。 ★ 优先级:拒绝提醒优先于待接收提醒,且**一次只弹一个弹窗**。 前者是「责任已回到你手上」的状态变更,后者是「等你确认」的待办; 本次弹了拒绝就直接 return,待接收那条留给下一轮(此时拒绝已 ack), 避免两个 Modal 叠加打扰。 ★ 两条退出路径都算「已知悉」并 ack —— 否则每次登录都会再弹同一条, 从提醒退化成骚扰。ack 失败不阻断,下一轮还会再提醒(宁可多提醒一次, 也不能漏)。 防叠加沿用上一轮的模块标志 + DOM 探测,标题白名单扩为两个。 顺带:流转明细时间线为转交节点补状态标签(已拒绝/待接收),被拒的转交 不再与成功的长得一模一样。 验证(node 复刻判定链) 既有拒绝、又有 2 件待接收 → 弹[转交被拒绝];确认后 ack; 下一轮 → 弹[待办通知] count=2;再轮询 → 不弹(未变)。 拒绝优先、不叠加、ack 后待接收提醒正常补上。
This commit is contained in:
@ -309,9 +309,14 @@ export function rejectBorrowTransfer(transferId: number, reason?: string) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 待我接收的转交数量 —— 全局待办强提醒用(初始化 + 轮询)。
|
||||
* 极轻量,只做一次 count。
|
||||
* @returns { count }
|
||||
* 全局待办强提醒的轮询数据源(初始化 + 轮询)。
|
||||
*
|
||||
* ★ 一次请求返回两类信息,避免前端多打一个请求:
|
||||
* count —— 待**我接收**的转交数量
|
||||
* rejects —— **我发起、被对方拒绝、尚未告知我**的转交
|
||||
* (被拒时物品责任仍在我手上,不告知就会误以为已交接出去)
|
||||
*
|
||||
* @returns { count, rejects: [{ id, borrow_no, sku, material_name, to_user_name, remark, ... }] }
|
||||
*/
|
||||
export function getPendingTransferCount() {
|
||||
return request({
|
||||
@ -320,6 +325,18 @@ export function getPendingTransferCount() {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 确认已知悉「转交被拒绝」—— 写 reject_seen_at,之后不再提醒。
|
||||
* @param ids 留空表示该用户全部待告知的拒绝
|
||||
*/
|
||||
export function ackTransferRejects(ids?: number[]) {
|
||||
return request({
|
||||
url: '/v1/transactions/borrow/transfer/reject-ack',
|
||||
method: 'post',
|
||||
data: { ids }
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 整单流转时间线(**borrow_no** 维度):借出 → 转交(可多次) → 归还 → 报废
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user