refactor: optimize stocktake UI state machine and add confirmation dialogs
This commit is contained in:
@ -25,17 +25,6 @@
|
|||||||
>
|
>
|
||||||
继续上次盘点 <span class="sub-text">({{ serverDraftCount }}项)</span>
|
继续上次盘点 <span class="sub-text">({{ serverDraftCount }}项)</span>
|
||||||
</el-button>
|
</el-button>
|
||||||
|
|
||||||
<!-- ★ 新增: 查看差异报告按钮 -->
|
|
||||||
<el-button
|
|
||||||
type="info"
|
|
||||||
plain
|
|
||||||
size="large"
|
|
||||||
class="action-btn-full"
|
|
||||||
@click="goToVarianceReview"
|
|
||||||
>
|
|
||||||
📋 差异审核 <span class="sub-text">(查看历史差异)</span>
|
|
||||||
</el-button>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="safe-tip">
|
<div class="safe-tip">
|
||||||
@ -346,6 +335,10 @@
|
|||||||
|
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
|
<!-- ★ 新增: 补扫入口 -->
|
||||||
|
<el-button type="primary" plain @click="continueScanning">
|
||||||
|
📷 发现漏扫,继续扫码
|
||||||
|
</el-button>
|
||||||
<el-button @click="showVarianceDialog = false">关闭</el-button>
|
<el-button @click="showVarianceDialog = false">关闭</el-button>
|
||||||
<el-button type="success" @click="exportToExcel" :icon="Download">导出差异报告</el-button>
|
<el-button type="success" @click="exportToExcel" :icon="Download">导出差异报告</el-button>
|
||||||
</div>
|
</div>
|
||||||
@ -534,7 +527,7 @@ const startNewSession = async () => {
|
|||||||
} finally { btnLoading.value = false }
|
} finally { btnLoading.value = false }
|
||||||
}
|
}
|
||||||
|
|
||||||
// ★ 重写: 继续上次盘点
|
// ★ 重写: 继续上次盘点 - 直接打开差异列表查看
|
||||||
const resumeSession = async () => {
|
const resumeSession = async () => {
|
||||||
btnLoading.value = true
|
btnLoading.value = true
|
||||||
try {
|
try {
|
||||||
@ -554,17 +547,12 @@ const resumeSession = async () => {
|
|||||||
const sessionIds = [...new Set(drafts.map((d: any) => d.session_id))]
|
const sessionIds = [...new Set(drafts.map((d: any) => d.session_id))]
|
||||||
currentSessionId.value = sessionIds[0]
|
currentSessionId.value = sessionIds[0]
|
||||||
|
|
||||||
const map = new Map<string, number>()
|
// ★ 修改:直接打开差异列表,而不是继续扫码
|
||||||
drafts.forEach((d: any) => {
|
ElMessage.info('正在加载差异审核...')
|
||||||
if (d.session_id === currentSessionId.value) {
|
showVarianceDialog.value = true
|
||||||
map.set(d.uuid, d.quantity !== undefined ? parseFloat(d.quantity) : 1)
|
await checkServerDraft()
|
||||||
}
|
|
||||||
})
|
|
||||||
scannedMap.value = map
|
|
||||||
await loadData()
|
|
||||||
isSessionActive.value = true
|
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
ElMessage.error('恢复失败')
|
ElMessage.error('加载失败')
|
||||||
} finally { btnLoading.value = false }
|
} finally { btnLoading.value = false }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -574,6 +562,13 @@ const pauseSession = () => {
|
|||||||
ElMessage.success('进度已保存')
|
ElMessage.success('进度已保存')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ★ 新增: 补扫功能 - 从差异面板继续扫码
|
||||||
|
const continueScanning = () => {
|
||||||
|
showVarianceDialog.value = false
|
||||||
|
isSessionActive.value = true
|
||||||
|
ElMessage.info('继续扫码,发现漏扫的物料')
|
||||||
|
}
|
||||||
|
|
||||||
// ★★★ 核心修改:数据加载映射修复 ★★★
|
// ★★★ 核心修改:数据加载映射修复 ★★★
|
||||||
const loadData = async () => {
|
const loadData = async () => {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
@ -866,8 +861,13 @@ const finishStocktake = async () => {
|
|||||||
btnLoading.value = false
|
btnLoading.value = false
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// ★ 简化流程:用户已在按钮点击时确认过,直接执行结束
|
// ★ 二次确认:防止误触
|
||||||
console.log('--- [结束盘点] 2. 开始执行结束盘点 ---')
|
await ElMessageBox.confirm('确认结束当前扫码作业,开始进行差异审核吗?', '结束盘点确认', {
|
||||||
|
confirmButtonText: '确定结束',
|
||||||
|
cancelButtonText: '继续扫码',
|
||||||
|
type: 'warning'
|
||||||
|
})
|
||||||
|
console.log('--- [结束盘点] 2. 用户确认结束盘点 ---')
|
||||||
|
|
||||||
printing.value = true
|
printing.value = true
|
||||||
console.log('--- [结束盘点] 3. 开始调用 API, session_id:', currentSessionId.value)
|
console.log('--- [结束盘点] 3. 开始调用 API, session_id:', currentSessionId.value)
|
||||||
|
|||||||
Reference in New Issue
Block a user