diff --git a/inventory-web/src/api/outbound.ts b/inventory-web/src/api/outbound.ts
index c20c83b..1ab1546 100644
--- a/inventory-web/src/api/outbound.ts
+++ b/inventory-web/src/api/outbound.ts
@@ -239,3 +239,55 @@ export function getMyRequests(params: {
params
})
}
+
+// ==========================================
+// 扫码草稿(出库/借库作业中途暂停用)
+// ==========================================
+
+export interface ScanDraftItem {
+ stock_id: number
+ source_table: string
+ sku?: string
+ quantity: number
+}
+
+/** 读取草稿:返回该用户在这张单上已扫的内容 */
+export function getScanDraft(bizType: 'outbound' | 'borrow', requestId: number) {
+ return request({
+ url: '/v1/scan-draft',
+ method: 'get',
+ params: { biz_type: bizType, request_id: requestId }
+ })
+}
+
+/** 保存草稿:全量覆盖(提交的 items 即当前完整清单) */
+export function saveScanDraft(
+ bizType: 'outbound' | 'borrow',
+ requestId: number,
+ items: ScanDraftItem[],
+ requestNo?: string
+) {
+ return request({
+ url: '/v1/scan-draft',
+ method: 'post',
+ data: { biz_type: bizType, request_id: requestId, request_no: requestNo || '', items }
+ })
+}
+
+/** 清除草稿:提交成功后调用 */
+export function clearScanDraft(bizType: 'outbound' | 'borrow', requestId: number) {
+ return request({
+ url: '/v1/scan-draft',
+ method: 'delete',
+ params: { biz_type: bizType, request_id: requestId }
+ })
+}
+
+/** 草稿概览:供单据下拉显示「已扫 N 项」进度徽标 */
+export function getScanDraftOverview(bizType: 'outbound' | 'borrow') {
+ return request({
+ url: '/v1/scan-draft/overview',
+ method: 'get',
+ params: { biz_type: bizType }
+ })
+}
diff --git a/inventory-web/src/views/outbound/create.vue b/inventory-web/src/views/outbound/create.vue
index 1509ccc..b690bdf 100644
--- a/inventory-web/src/views/outbound/create.vue
+++ b/inventory-web/src/views/outbound/create.vue
@@ -39,6 +39,10 @@
:label="req.request_no"
>
{{ req.request_no }}
+
+
+ 已扫 {{ draftProgress[req.id] }}
+
{{ req.applicant_name || '未知申请人' }}
@@ -372,10 +376,14 @@