From 403bbe281f2943d72477f8f9f57a5d193e7c2a0d Mon Sep 17 00:00:00 2001 From: DXC Date: Fri, 13 Mar 2026 13:14:49 +0800 Subject: [PATCH] feat: persist stocktake phase in local storage for smart resumption routing --- .../src/views/stock/stocktake/index.vue | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/inventory-web/src/views/stock/stocktake/index.vue b/inventory-web/src/views/stock/stocktake/index.vue index 558f58b..6f89741 100644 --- a/inventory-web/src/views/stock/stocktake/index.vue +++ b/inventory-web/src/views/stock/stocktake/index.vue @@ -519,6 +519,8 @@ const startNewSession = async () => { scannedMap.value.clear() await loadData() isSessionActive.value = true + // ★ 标记当前阶段为 scanning(扫码中) + localStorage.setItem('stocktake_phase', 'scanning') ElMessage.success('新盘点会话已开始') } catch (e: any) { if (e !== 'cancel') { @@ -558,10 +560,18 @@ const resumeSession = async () => { // 加载完整库存数据 await loadData() - - // ★ 恢复扫码作业 - isSessionActive.value = true - ElMessage.success('已恢复扫码,继续盘点') + + // ★ 智能路由:根据本地记忆的阶段决定下一步 + const phase = localStorage.getItem('stocktake_phase') + if (phase === 'review') { + // 如果记忆中已经是核对阶段,直接打开差异弹窗 + await openVarianceDialog() + ElMessage.info('已恢复差异审核') + } else { + // 默认打开扫码镜头 + isSessionActive.value = true + ElMessage.success('已恢复扫码,继续盘点') + } } catch (e) { ElMessage.error('恢复失败') } finally { btnLoading.value = false } @@ -577,6 +587,8 @@ const pauseSession = () => { const returnToScan = () => { showVarianceDialog.value = false isSessionActive.value = true + // ★ 标记当前阶段为 scanning(扫码中) + localStorage.setItem('stocktake_phase', 'scanning') ElMessage.info('继续扫码,发现漏扫的物料') } @@ -884,6 +896,9 @@ const finishStocktake = async () => { ElMessage.success('盘点扫描结束,请核对差异') await openVarianceDialog() // 自动弹出差异审核列表 + // ★ 标记当前阶段为 review(差异审核) + localStorage.setItem('stocktake_phase', 'review') + } catch (e: any) { if (e === 'cancel' || e === 'close' || String(e).includes('cancel')) { // 用户取消,停留在扫码界面继续盘点