diff --git a/inventory-backend/app/api/v1/inbound/stock.py b/inventory-backend/app/api/v1/inbound/stock.py index 68da294..52c69f2 100644 --- a/inventory-backend/app/api/v1/inbound/stock.py +++ b/inventory-backend/app/api/v1/inbound/stock.py @@ -1741,16 +1741,20 @@ def update_stocktake_quantity(): data = request.json stock_id = data.get('stock_id') source_table = data.get('source_table') + session_id = data.get('session_id') # ★ 修复:按会话隔离,防止跨会话误改 quantity = float(data.get('quantity', 0)) - + if not stock_id or not source_table: return jsonify({'code': 400, 'msg': '缺少必要参数'}), 400 - - # 查找对应的盘点记录 - draft = StocktakeDraft.query.filter_by( + + # 查找对应的盘点记录(★ 修复:限定 session_id,避免不同盘点会话相互覆盖) + query = StocktakeDraft.query.filter_by( stock_id=stock_id, source_table=source_table - ).first() + ) + if session_id: + query = query.filter_by(session_id=session_id) + draft = query.first() if not draft: return jsonify({'code': 404, 'msg': '未找到盘点记录'}), 404 diff --git a/inventory-web/src/api/inbound/stock.ts b/inventory-web/src/api/inbound/stock.ts index 798bbbd..de5370f 100644 --- a/inventory-web/src/api/inbound/stock.ts +++ b/inventory-web/src/api/inbound/stock.ts @@ -107,7 +107,7 @@ export function getAllStocktakeItems(params?: { keyword?: string; session_id?: s } // 更新盘点实盘数(手动修改) -export function updateStocktakeQuantity(data: { stock_id: number; source_table: string; quantity: number }) { +export function updateStocktakeQuantity(data: { stock_id: number; source_table: string; quantity: number; session_id?: string }) { return request({ url: '/v1/inbound/stock/stocktake/update-quantity', method: 'post', diff --git a/inventory-web/src/views/stock/stocktake/index.vue b/inventory-web/src/views/stock/stocktake/index.vue index d3705fb..c0ba2cb 100644 --- a/inventory-web/src/views/stock/stocktake/index.vue +++ b/inventory-web/src/views/stock/stocktake/index.vue @@ -1102,7 +1102,8 @@ const handleQuantityChange = async (row: any, val: number) => { await updateStocktakeQuantity({ stock_id: row.stock_id, source_table: row.source_table, - quantity: val + quantity: val, + session_id: currentSessionId.value // ★ 传入会话ID,后端按会话隔离更新 }) ElMessage.success('实盘数已更新') } catch (e) {