fix: add UI state transition and error handling for finish stocktake action

This commit is contained in:
DXC
2026-03-13 11:01:22 +08:00
parent 332f928c78
commit 72d5a594cf

View File

@ -503,11 +503,11 @@ onMounted(async () => {
const checkServerDraft = async () => { const checkServerDraft = async () => {
try { try {
// 获取未完成的草稿数量 // 获取草稿数量(后端已移除 is_finished 字段,直接返回所有记录)
const res: any = await request({ const res: any = await request({
url: '/v1/inbound/stock/draft/list', url: '/v1/inbound/stock/draft/list',
method: 'get', method: 'get',
params: { is_finished: 'false' } params: {}
}) })
serverDraftCount.value = (res && res.length) || 0 serverDraftCount.value = (res && res.length) || 0
} catch (e) {} } catch (e) {}
@ -538,11 +538,11 @@ const startNewSession = async () => {
const resumeSession = async () => { const resumeSession = async () => {
btnLoading.value = true btnLoading.value = true
try { try {
// 获取最新的未完成会话 // 获取最新的会话(后端已移除 is_finished 字段)
const drafts: any = await request({ const drafts: any = await request({
url: '/v1/inbound/stock/draft/list', url: '/v1/inbound/stock/draft/list',
method: 'get', method: 'get',
params: { is_finished: 'false' } params: {}
}) })
if (!drafts || drafts.length === 0) { if (!drafts || drafts.length === 0) {
@ -856,23 +856,32 @@ const finishStocktake = async () => {
printing.value = true printing.value = true
// ★ 修改: 调用结束盘点 API,不再删除草稿 // 调用结束盘点 API
const res: any = await api.finishStocktake() const res: any = await api.finishStocktake()
// 结束会话 // 结束会话
scannedMap.value.clear() scannedMap.value.clear()
isSessionActive.value = false isSessionActive.value = false
showFinishDialog.value = false showFinishDialog.value = false
checkServerDraft() // 刷新服务器草稿计数
await checkServerDraft()
ElMessage.success('盘点已结束,请查看差异报告进行审核') ElMessage.success('盘点已结束,请查看差异报告进行审核')
// ★ 新增: 自动打开差异审核对话框 // 自动打开差异审核对话框
await openVarianceDialog() await openVarianceDialog()
} catch (e: any) { } catch (e: any) {
if (e !== 'cancel') ElMessage.error(e?.message || '操作失败') // ElMessageBox.cancel 是字符串 'cancel',需要正确判断
} finally { printing.value = false } if (e === 'cancel' || e === 'cancel' as any) {
return // 用户取消,不做任何提示
}
// 其他错误需要提示用户
console.error('结束盘点失败:', e)
ElMessage.error(e?.message || e?.data?.message || '结束盘点失败,请重试')
} finally {
printing.value = false
}
} }
// ★ 新增: 打开差异审核对话框 // ★ 新增: 打开差异审核对话框