diff --git a/inventory-web/src/views/stock/stocktake/index.vue b/inventory-web/src/views/stock/stocktake/index.vue index 3b98987..dddd2dc 100644 --- a/inventory-web/src/views/stock/stocktake/index.vue +++ b/inventory-web/src/views/stock/stocktake/index.vue @@ -1651,6 +1651,18 @@ const handleListLimitChange = (limit: number) => { // ★ 新增: 更新实盘数量(手动修改) const handleQuantityChange = async (row: any, val: number) => { + row.quantity = val + + // ★ 本地实时联动「差异」列。 + // 盲盘保护:后端在 blind 模式下把 stock_qty 置为 null(绝不下发账面数), + // 此时**不做任何减法**,保持 diff_qty 原状(null → 渲染为「—」), + // 否则用 null 参与运算会算出错误的差异,等于绕过了盲盘限制。 + if (row.stock_qty !== null && row.stock_qty !== undefined) { + // 与后端一致保留 4 位小数,避免浮点尾差显示成 4.999999999 + const diff = Number(val || 0) - Number(row.stock_qty || 0) + row.diff_qty = Math.round(diff * 10000) / 10000 + } + try { await updateStocktakeQuantity({ stock_id: row.stock_id,