From 05524c988aa3a0a96055550683edbb991e4c3068 Mon Sep 17 00:00:00 2001 From: yueli Date: Thu, 17 Sep 2026 12:01:12 +0800 Subject: [PATCH] =?UTF-8?q?feat(outbound):=20=E9=80=80=E5=9B=9E=E5=BC=B9?= =?UTF-8?q?=E7=AA=97=E5=A2=9E=E5=8A=A0=E3=80=8C=E8=A1=A5=E5=8F=91=E7=BB=99?= =?UTF-8?q?=E8=B0=81=E3=80=8D=E9=80=89=E6=8B=A9=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit · 勾选「需要补发」后出现「补发给谁」下拉(filterable + clearable), 并自动带上补发数量。 · 预填策略:按原领用人 consumer_name **唯一命中**才预选;重名一律留空让现场 自己选 —— 与借用人回填同口径,宁可多一步也不猜错人(补发单会挂到错的人名下)。 · 留空时后端回退为当前操作人,文案已写明。 · 人员名单**勾选补发时才加载**(多数退回不需要补,避免无谓请求),加载后缓存。 · 新增 api/common/users.ts 的 getActiveUsers():走中性的 /v1/common/active-users,而不是复用借库专用路径。 --- inventory-web/src/api/common/users.ts | 20 ++++++++ inventory-web/src/api/inbound/return.ts | 9 ++-- inventory-web/src/views/outbound/index.vue | 56 ++++++++++++++++++++-- 3 files changed, 79 insertions(+), 6 deletions(-) create mode 100644 inventory-web/src/api/common/users.ts diff --git a/inventory-web/src/api/common/users.ts b/inventory-web/src/api/common/users.ts new file mode 100644 index 0000000..56077c3 --- /dev/null +++ b/inventory-web/src/api/common/users.ts @@ -0,0 +1,20 @@ +import request from '@/utils/request' + +/** + * 在职人员名单(id + 姓名)—— 「选择某人」类下拉框的共用数据源。 + * + * 使用场景:借出/转交/归还的借用人选择、出库退回补发的「补发给谁」等。 + * + * ★ 为什么不复用 transaction.ts 里的 getBorrowUsers: + * 那条路径(/transactions/borrow/users)在语义上属于借库模块,出库补发直接 + * 复用会让后人困惑「出库为什么在调借库的接口」。后端两者共用同一份实现, + * 前端各走各的中性/专用入口。 + * + * ★ 公司隔离与服务端同口径;只返回 id 与姓名,不含邮箱/角色/部门。 + */ +export function getActiveUsers() { + return request({ + url: '/v1/common/active-users', + method: 'get' + }) +} diff --git a/inventory-web/src/api/inbound/return.ts b/inventory-web/src/api/inbound/return.ts index 54678f7..81a511c 100644 --- a/inventory-web/src/api/inbound/return.ts +++ b/inventory-web/src/api/inbound/return.ts @@ -20,11 +20,13 @@ import request from '@/utils/request' * reason: string 可选,退回原因 * need_reissue: boolean 可选,退回后是否自动生成补发单(默认 false) * reissue_qty: number 可选,补发数量,默认 = return_qty + * reissue_applicant_id: number 可选,**补发给谁**;不传则回退为当前操作人 * } * - * ★ 补发(need_reissue=true):后端直接生成一张**免审批**出库单并关联回本笔退回, - * 申请人取**当前操作人**(trans_outbound 没有申请人字段,也无指回原审批单的 - * 关联,无法可靠判定原申请人;原领用人写入备注)。 + * ★ 补发(need_reissue=true):后端直接生成一张**免审批**出库单并关联回本笔退回。 + * 申请人优先取 reissue_applicant_id(前端选择的「补发给谁」),未传则回退为 + * 当前操作人 —— trans_outbound 没有申请人字段,也无指回原审批单的关联, + * 无法可靠推断原申请人(按姓名反查会重名错绑),故把选择权交给现场。 * ★ 补发库存不足时**整笔退回一并回滚**并返回明确提示 —— 取消勾选即可只做退回过账。 * * @returns data.reissue 为 { id, request_no, quantity } 或 null @@ -36,6 +38,7 @@ export function returnFromOutbound(data: { reason?: string need_reissue?: boolean reissue_qty?: number + reissue_applicant_id?: number }) { return request({ url: '/inbound/stock/return-from-outbound', diff --git a/inventory-web/src/views/outbound/index.vue b/inventory-web/src/views/outbound/index.vue index b19ef36..cf20a93 100644 --- a/inventory-web/src/views/outbound/index.vue +++ b/inventory-web/src/views/outbound/index.vue @@ -295,6 +295,21 @@ style="width: 200px" /> + + + + + +
+ 补发单会挂在此人名下,出现在他的「我的申请」里。留空则挂当前操作人。 +
+