原实现是前端把「账面数」「差异」两列用 HTML 注释藏掉 —— 数据仍在 HTTP 响应里明文下发,抓包或用改过的客户端即可看到,等于没有屏蔽。 【后端】/draft/merged-list 先查该 session_id 的 StocktakeSession.mode: - blind:stock_qty 与 diff_qty 一律置 None,真实账面数不出现在响应中 - open :正常下发 差异必须一并置空 —— diff_qty 由账面数算出,下发差异等于变相泄漏账面数。 响应新增 data.mode 供前端提示。 Fail-Safe:查不到会话行时按盲盘处理。宁可界面少显示两列,也不能因为 会话记录缺失就把账面数泄漏出去。 【前端】删除屏蔽用的 HTML 注释,恢复两列正常渲染,不再承担数据屏蔽职责。 但 null 必须渲染为「—」而非 0:原 差异 模板用 `row.diff_qty || 0`, 会把「未下发」显示成「无差异」,工人会误以为账实相符。 另在抽屉表头加模式标签,便于核对。 实测: 盲盘 → 账面数=None 差异=None mode=blind 明盘 → 账面数=1.0 差异=-1.0 mode=open 未知 session_id → 同盲盘(Fail-Safe 生效)
Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 <script setup> SFCs, check out the script setup docs to learn more.
Learn more about the recommended Project Setup and IDE Support in the Vue Docs TypeScript Guide.