feat: add generate-missing logic to identify unscanned stock as inventory loss

This commit is contained in:
DXC
2026-03-19 15:34:54 +08:00
parent 6cc3d1b6e0
commit b37049a4d7
2 changed files with 138 additions and 1 deletions

View File

@ -107,6 +107,11 @@
结束盘点
</el-button>
</el-col>
<el-col :span="12">
<el-button v-if="userStore.hasPermission('inventory_stocktake:operation')" type="warning" size="large" class="w-100 action-btn" @click="handleGenerateMissing" :icon="Warning">
结束盘点 (计算漏盘)
</el-button>
</el-col>
</el-row>
</div>
</el-card>
@ -993,6 +998,46 @@ const openFinishDialog = () => {
finishStocktake()
}
// ★ 新增:结束盘点(计算漏盘)- 将未扫描的库存标记为全额盘亏
const handleGenerateMissing = async () => {
if (stats.value.total === 0) {
ElMessage.warning('暂无盘点数据')
return
}
try {
await ElMessageBox.confirm(
'确认结束当前盘点吗?系统将自动把所有未扫描到的库存标记为全额盘亏!',
'提示',
{
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}
)
btnLoading.value = true
const res = await request({
url: '/v1/inbound/stocktake/generate-missing',
method: 'post'
})
if (res.code === 200) {
ElMessage.success(`成功生成 ${res.data.count} 条漏盘记录`)
// 刷新差异列表
await checkServerDraft()
} else {
ElMessage.error(res.msg || '生成漏盘数据失败')
}
} catch (e) {
if (e !== 'cancel') {
ElMessage.error('生成漏盘数据失败')
}
} finally {
btnLoading.value = false
}
}
// ★ 重写: 结束盘点 - 纯前端状态流转,不再调用后端
const finishStocktake = async () => {
try {