fix(api): update-stocktake-quantity 按 session_id 隔离更新,防止跨会话误改

后端 update_stocktake_quantity 原只按 stock_id+source_table 查草稿,
不同盘点会话会相互覆盖实盘数。后端增加 session_id 过滤,
前端 handleQuantityChange 配套传入当前会话ID,API 类型同步补全。
This commit is contained in:
yueli
2026-08-31 16:00:20 +08:00
parent eb017d881c
commit 893e7250db
3 changed files with 12 additions and 7 deletions

View File

@ -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

View File

@ -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',

View File

@ -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) {