Compare commits
2 Commits
6dc1d69d7d
...
368298a29d
| Author | SHA1 | Date | |
|---|---|---|---|
| 368298a29d | |||
| 403bbe281f |
@ -314,8 +314,21 @@ const bomSets = ref(1)
|
|||||||
const currentTime = ref('')
|
const currentTime = ref('')
|
||||||
|
|
||||||
// --- 计算属性 ---
|
// --- 计算属性 ---
|
||||||
|
// ★ 优化:按库位排序,空库位排最后
|
||||||
const validSelectedItems = computed(() => {
|
const validSelectedItems = computed(() => {
|
||||||
return selectedItems.value.filter(item => item.export_quantity > 0)
|
const filtered = selectedItems.value.filter(item => item.export_quantity > 0)
|
||||||
|
return [...filtered].sort((a, b) => {
|
||||||
|
const locA = a.warehouse_location || a.warehouse_loc || '';
|
||||||
|
const locB = b.warehouse_location || b.warehouse_loc || '';
|
||||||
|
|
||||||
|
// 空库位沉底
|
||||||
|
if (!locA && locB) return 1;
|
||||||
|
if (locA && !locB) return -1;
|
||||||
|
if (!locA && !locB) return 0;
|
||||||
|
|
||||||
|
// 自然排序(支持 A-10 排在 A-2 后面)
|
||||||
|
return locA.localeCompare(locB, 'zh-CN', { numeric: true });
|
||||||
|
});
|
||||||
})
|
})
|
||||||
|
|
||||||
const totalExportCount = computed(() => {
|
const totalExportCount = computed(() => {
|
||||||
|
|||||||
@ -519,6 +519,8 @@ const startNewSession = async () => {
|
|||||||
scannedMap.value.clear()
|
scannedMap.value.clear()
|
||||||
await loadData()
|
await loadData()
|
||||||
isSessionActive.value = true
|
isSessionActive.value = true
|
||||||
|
// ★ 标记当前阶段为 scanning(扫码中)
|
||||||
|
localStorage.setItem('stocktake_phase', 'scanning')
|
||||||
ElMessage.success('新盘点会话已开始')
|
ElMessage.success('新盘点会话已开始')
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (e !== 'cancel') {
|
if (e !== 'cancel') {
|
||||||
@ -558,10 +560,18 @@ const resumeSession = async () => {
|
|||||||
|
|
||||||
// 加载完整库存数据
|
// 加载完整库存数据
|
||||||
await loadData()
|
await loadData()
|
||||||
|
|
||||||
// ★ 恢复扫码作业
|
// ★ 智能路由:根据本地记忆的阶段决定下一步
|
||||||
isSessionActive.value = true
|
const phase = localStorage.getItem('stocktake_phase')
|
||||||
ElMessage.success('已恢复扫码,继续盘点')
|
if (phase === 'review') {
|
||||||
|
// 如果记忆中已经是核对阶段,直接打开差异弹窗
|
||||||
|
await openVarianceDialog()
|
||||||
|
ElMessage.info('已恢复差异审核')
|
||||||
|
} else {
|
||||||
|
// 默认打开扫码镜头
|
||||||
|
isSessionActive.value = true
|
||||||
|
ElMessage.success('已恢复扫码,继续盘点')
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
ElMessage.error('恢复失败')
|
ElMessage.error('恢复失败')
|
||||||
} finally { btnLoading.value = false }
|
} finally { btnLoading.value = false }
|
||||||
@ -577,6 +587,8 @@ const pauseSession = () => {
|
|||||||
const returnToScan = () => {
|
const returnToScan = () => {
|
||||||
showVarianceDialog.value = false
|
showVarianceDialog.value = false
|
||||||
isSessionActive.value = true
|
isSessionActive.value = true
|
||||||
|
// ★ 标记当前阶段为 scanning(扫码中)
|
||||||
|
localStorage.setItem('stocktake_phase', 'scanning')
|
||||||
ElMessage.info('继续扫码,发现漏扫的物料')
|
ElMessage.info('继续扫码,发现漏扫的物料')
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -884,6 +896,9 @@ const finishStocktake = async () => {
|
|||||||
ElMessage.success('盘点扫描结束,请核对差异')
|
ElMessage.success('盘点扫描结束,请核对差异')
|
||||||
await openVarianceDialog() // 自动弹出差异审核列表
|
await openVarianceDialog() // 自动弹出差异审核列表
|
||||||
|
|
||||||
|
// ★ 标记当前阶段为 review(差异审核)
|
||||||
|
localStorage.setItem('stocktake_phase', 'review')
|
||||||
|
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
if (e === 'cancel' || e === 'close' || String(e).includes('cancel')) {
|
if (e === 'cancel' || e === 'close' || String(e).includes('cancel')) {
|
||||||
// 用户取消,停留在扫码界面继续盘点
|
// 用户取消,停留在扫码界面继续盘点
|
||||||
|
|||||||
Reference in New Issue
Block a user