feat(scrap): 前端报废申请 / 报废审批页 + API(对齐出库版式)

- api/scrap.ts 新增 submitScrapRequest/checkScrapApproval/getScrapApprovals/approveScrapRequest/executeScrapByRequest
- apply: 选库存(带 source_table+stock_id)/报废数量/原因/按需审批人提交
- approval: 顶部审批状态筛选+刷新、展开明细、列名对齐出库、分页含 sizes、按单执行弹窗
- 路由挂载 /scrap/apply、/scrap/approval
This commit is contained in:
yueli
2026-09-10 09:47:02 +08:00
parent ffbb2199f0
commit da5357acb3
4 changed files with 643 additions and 0 deletions

View File

@ -26,3 +26,78 @@ export function getScrapRecords(params: any) {
params
})
}
// ==========================================
// 报废申请/审批/执行(新流程,镜像出/借库)
// ==========================================
// 4. 提交报废申请
export function submitScrapRequest(data: {
items: Array<{
source_table: string
stock_id: number
scrap_qty: number
name?: string
spec_model?: string
sku?: string
location?: string
batch_number?: string
}>
remark?: string
approver_id?: number | null
allowed_approvers?: Array<{ type: string; value: any }>
}) {
return request({
url: '/v1/scrap/request',
method: 'post',
data
})
}
// 5. 提交前预检:所选物料是否需要审批
export function checkScrapApproval(data: { items: Array<{ name?: string; spec_model?: string; base_id?: number }> }) {
return request({
url: '/v1/scrap/request/check-approval',
method: 'post',
data
})
}
// 6. 报废申请列表(scope: mine | pending | executable | all)
export function getScrapApprovals(params: {
scope?: 'mine' | 'pending' | 'executable' | 'all'
status?: number | ''
page?: number
limit?: number
}) {
return request({
url: '/v1/scrap/request',
method: 'get',
params
})
}
// 7. 报废申请详情
export function getScrapApprovalDetail(id: number) {
return request({
url: `/v1/scrap/request/${id}`,
method: 'get'
})
}
// 8. 审批(通过/驳回)
export function approveScrapRequest(id: number, data: { action: 'approve' | 'reject'; reject_reason?: string }) {
return request({
url: `/v1/scrap/request/${id}/approve`,
method: 'patch',
data
})
}
// 9. 按单报废执行(扣减库存)
export function executeScrapByRequest(id: number) {
return request({
url: `/v1/scrap/request/${id}/execute`,
method: 'post'
})
}