- 后端新增 /borrow/request/check-approval 与 /outbound/request/check-approval 预检接口 - 申请弹窗默认隐藏审批人;提交前预检:命中需审批→显示审批人并红字列物料、未选拦截;未命中→隐藏并直接提交(approver=null) - 申请 items 补传 base_id 供后端 ID 精确判定
222 lines
5.3 KiB
TypeScript
222 lines
5.3 KiB
TypeScript
import request from '@/utils/request'
|
||
|
||
// 购物车商品项接口
|
||
export interface CartItem {
|
||
id: number
|
||
sku: string
|
||
name: string
|
||
spec_model: string
|
||
source_table: string
|
||
stock_quantity: number
|
||
available_quantity: number
|
||
barcode: string
|
||
price: number // 单价
|
||
out_quantity: number // 本次出库数量
|
||
}
|
||
|
||
// 提交出库单的数据结构
|
||
export interface OutboundSubmitData {
|
||
items: Array<{
|
||
sku: string
|
||
source_table: string
|
||
stock_id: number
|
||
barcode: string
|
||
quantity: number
|
||
price: number
|
||
}>
|
||
outbound_type: string
|
||
consumer_name: string
|
||
operator_name: string
|
||
signature_path: string // 上传后返回的图片路径
|
||
remark?: string
|
||
}
|
||
|
||
export interface ScanResult {
|
||
id: number
|
||
sku: string
|
||
name: string
|
||
spec_model: string
|
||
source_table: string // 'stock_buy' | 'stock_product' ...
|
||
stock_quantity: number
|
||
available_quantity: number
|
||
batch_number?: string
|
||
warehouse_location?: string
|
||
barcode?: string
|
||
price?: number // 扫描返回的价格
|
||
}
|
||
|
||
/**
|
||
* 根据条码获取库存物品详情
|
||
* @param barcode 扫描到的条码
|
||
*/
|
||
export function getStockByBarcode(barcode: string) {
|
||
return request<any, ScanResult>({
|
||
url: '/v1/outbound/scan',
|
||
method: 'get',
|
||
params: { barcode }
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 提交出库单 (批量)
|
||
*/
|
||
export function submitOutbound(data: OutboundSubmitData) {
|
||
return request({
|
||
url: '/v1/outbound',
|
||
method: 'post',
|
||
data
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取出库记录列表
|
||
*/
|
||
export function getOutboundList(params: any) {
|
||
return request({
|
||
url: '/v1/outbound',
|
||
method: 'get',
|
||
params
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 提交出库申请单(申请人 → 审批流)
|
||
*/
|
||
export function submitOutboundRequest(data: {
|
||
items: Array<{
|
||
material_type?: string
|
||
name: string
|
||
spec_model: string
|
||
warehouse_location?: string
|
||
quantity: number
|
||
}>
|
||
remark: string
|
||
}) {
|
||
return request({
|
||
url: '/v1/outbound/request',
|
||
method: 'post',
|
||
data
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取出库审批申请单列表
|
||
* @param params 支持 status, page, limit
|
||
*/
|
||
export function getApprovalRequestList(params: { status?: number | ''; page?: number; limit?: number }) {
|
||
return request({
|
||
url: '/v1/outbound/request',
|
||
method: 'get',
|
||
params
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 审批(通过 / 驳回)出库申请单
|
||
* @param id 审批单ID
|
||
* @param data action: 'approve' | 'reject',reject 时需传 reject_reason
|
||
*/
|
||
export function approveRequest(id: number, data: { action: 'approve' | 'reject'; reject_reason?: string }) {
|
||
return request({
|
||
url: `/v1/outbound/request/${id}/approve`,
|
||
method: 'patch',
|
||
data
|
||
})
|
||
}
|
||
|
||
// ==============================================================================
|
||
// 借库审批流 API
|
||
// ==============================================================================
|
||
|
||
/**
|
||
* 提交借库申请单(申请人 → 审批流)
|
||
*/
|
||
export function submitBorrowRequest(data: {
|
||
items: Array<{
|
||
name: string
|
||
spec_model: string
|
||
warehouse_location?: string
|
||
quantity: number
|
||
}>
|
||
remark?: string
|
||
allowed_approvers?: Array<{ type: string; value: string }>
|
||
approver_id?: number
|
||
}) {
|
||
return request({
|
||
url: '/v1/transactions/borrow/request',
|
||
method: 'post',
|
||
data
|
||
})
|
||
}
|
||
|
||
// 借库申请预检:判断所选物料是否需审批
|
||
export function checkBorrowApproval(data: { items: Array<{ name?: string; spec_model?: string }> }) {
|
||
return request({
|
||
url: '/v1/transactions/borrow/request/check-approval',
|
||
method: 'post',
|
||
data
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 获取借库审批申请单列表
|
||
* @param params 支持 status, page, limit
|
||
*/
|
||
export function getBorrowApprovalList(params: { status?: number | ''; page?: number; limit?: number }) {
|
||
return request({
|
||
url: '/v1/transactions/borrow/request',
|
||
method: 'get',
|
||
params
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 审批(通过 / 驳回)借库申请单
|
||
* @param id 审批单ID
|
||
* @param data action: 'approve' | 'reject',reject 时需传 reject_reason
|
||
*/
|
||
export function approveBorrowRequest(id: number, data: { action: 'approve' | 'reject'; reject_reason?: string }) {
|
||
return request({
|
||
url: `/v1/transactions/borrow/request/${id}/approve`,
|
||
method: 'patch',
|
||
data
|
||
})
|
||
}
|
||
|
||
// 手动完结已通过的借库审批单(status 1 → 3)
|
||
export function closeBorrowRequest(id: number) {
|
||
return request({
|
||
url: `/v1/transactions/borrow/request/${id}/close`,
|
||
method: 'post'
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 借库选单专用库存列表(独立权限 op_borrow_apply)
|
||
*/
|
||
export function getBorrowStockList(params: { page?: number; pageSize?: number; keyword?: string }) {
|
||
return request({
|
||
url: '/v1/transactions/borrow/stock-list',
|
||
method: 'get',
|
||
params
|
||
})
|
||
}
|
||
|
||
/**
|
||
* 执行借库扣减(审批通过后调用)
|
||
* @param data approval_id + 扫码选中的物品 + 借用人信息 + 签名
|
||
*/
|
||
export function dispatchBorrow(data: {
|
||
approval_id: number
|
||
items: Array<any>
|
||
borrower_name: string
|
||
signature_path: string
|
||
remark?: string
|
||
expected_return_time?: string | null
|
||
}) {
|
||
return request({
|
||
url: '/v1/transactions/borrow/dispatch',
|
||
method: 'post',
|
||
data
|
||
})
|
||
} |