feat(approval): 三端审批页「撤回」入口,明确告知会释放库存
后端已支持撤回时释放预占(见上一提交),前端同步:
一、文案与语义
按钮 完结 → 撤回,颜色 danger → warning(语义从「危险操作」变为
「可逆的库存释放」)。确认弹窗明确告知会释放多少项库存:
确定撤回申请单【APR-OUT-...】吗?
撤回后该单将被作废,其预占的 5 项物料库存会立即释放,
可供其它申请使用。此操作不可恢复。
用户看到的「1 件货」背后其实是一批被锁定的库存,不写清楚会让人
以为撤回只是「关掉一张单」。
二、报废新增撤回入口
报废审批页原先只有「执行报废」,没有撤回。补上按钮 + handleWithdraw(),
并新增 API 封装 withdrawScrapRequest()。
状态映射同步补充 4: '已撤回'(statusText / statusTagType)。
三、成功提示改为透传后端消息
后端会返回「申请单已撤回,释放 N 项预占库存」,比前端写死的文案
更有信息量,故改为 res?.msg 优先、前端文案兜底。
按钮可见性沿用 row.status === 1(已通过但未执行),与后端的执行守卫
(执行成功后 status 置 3)一致,故已执行或已撤回的单不会出现该按钮。
This commit is contained in:
@ -176,17 +176,17 @@
|
||||
驳回
|
||||
</el-button>
|
||||
</template>
|
||||
<!-- ★ 已通过的申请单:库管/主管可手动完结 -->
|
||||
<!-- ★ 已通过但未执行的申请单:可撤回(会释放预占库存) -->
|
||||
<template v-else-if="row.status === 1">
|
||||
<el-button
|
||||
v-if="canCompleteRequest"
|
||||
type="danger"
|
||||
type="warning"
|
||||
plain
|
||||
size="small"
|
||||
:loading="row._closing"
|
||||
@click="handleComplete(row)"
|
||||
>
|
||||
完结
|
||||
撤回
|
||||
</el-button>
|
||||
</template>
|
||||
<span v-else style="color: #c0c4cc;">-</span>
|
||||
@ -251,21 +251,27 @@ const canCompleteRequest = computed(() =>
|
||||
userStore.username === 'IRIS'
|
||||
)
|
||||
|
||||
// ★ 手动完结已通过的借库审批单(status 1 → 3,仿出库审批)
|
||||
// ★ 撤回已通过但尚未执行的借库审批单(status 1 → 4)
|
||||
//
|
||||
// 撤回会把申请阶段预占的库存全部还回可用池(后端 release_reserved),
|
||||
// 因此确认文案需明确告知 —— 用户看到的「1 件货」背后是一批被锁定的库存。
|
||||
const handleComplete = (row: any) => {
|
||||
const itemCount = row.items?.length || 0
|
||||
ElMessageBox.confirm(
|
||||
`确定强制完结审批单【${row.request_no}】吗?\n\n完结后该单标记为「已完成」,不可再扫码借出。`,
|
||||
'⚠️ 强制完结确认',
|
||||
{ confirmButtonText: '确认完结', cancelButtonText: '取消', type: 'warning' }
|
||||
`确定撤回借库申请单【${row.request_no}】吗?\n\n` +
|
||||
`撤回后该单将作废,其预占的 ${itemCount} 项物料库存会立即释放,` +
|
||||
`可供其它申请使用。\n此操作不可恢复。`,
|
||||
'⚠️ 撤回确认',
|
||||
{ confirmButtonText: '确认撤回', cancelButtonText: '取消', type: 'warning' }
|
||||
)
|
||||
.then(async () => {
|
||||
row._closing = true
|
||||
try {
|
||||
await closeBorrowRequest(row.id)
|
||||
ElMessage.success('审批单已完结')
|
||||
const res: any = await closeBorrowRequest(row.id)
|
||||
ElMessage.success(res?.msg || `申请单 ${row.request_no} 已撤回`)
|
||||
fetchData()
|
||||
} catch (e: any) {
|
||||
ElMessage.error(e?.response?.data?.msg || e?.msg || e?.message || '完结失败')
|
||||
ElMessage.error(e?.response?.data?.msg || e?.msg || e?.message || '撤回失败')
|
||||
} finally {
|
||||
row._closing = false
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user