Files
my-mom-system/erp-frontend-vue/src/api/mbom.ts

160 lines
3.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import request from './request'
export interface Mbom {
mbomId: number
mbomCode: string
mbomDate: string
status: string
businessType: string
issueStatus?: string
planId: number
planCode: string
salesOrderId?: number
salesOrderCode?: string
deliveryDate?: string
itemId: number
itemCode: string
itemName: string
unitName?: string
supplyType?: string
quantity: number
workshopId?: number
workshopName?: string
issueDate?: string
approverName?: string
approveDate?: string
remark?: string
createTime?: string
}
/** 物料清单明细行 */
export interface MbomLine {
lineId: number
mbomId: number
mbomCode?: string
lineNo?: number
bomLevel?: number
itemId: number
itemCode: string
itemName: string
specification?: string
unitName?: string
baseQty?: number
quantity: number
lossRate?: number
supplyType?: string
pickType?: string
remark?: string
}
/** 物料清单详情(表头 + 明细行) */
export interface MbomDetail extends Mbom {
lines?: MbomLine[]
}
export interface MbomQuery {
salesOrderCode?: string
mbomCode?: string
itemCode?: string
itemName?: string
beginDate?: string
endDate?: string
status?: string
supplyType?: string
pageNum?: number
pageSize?: number
}
export interface MbomListResponse {
rows: Mbom[]
total: number
}
// 获取物料清单列表
export function getMbomList(params: MbomQuery): Promise<MbomListResponse> {
return request.get('/erp/mp/mbom/list', { params }).then((res: any) => {
return {
rows: res.rows || [],
total: res.total || 0
}
})
}
// 获取物料清单详情(含明细行)
export function getMbomDetail(mbomId: number): Promise<MbomDetail> {
return request.get(`/erp/mp/mbom/${mbomId}`).then((res: any) => {
const data = res.data ?? res
return data as MbomDetail
})
}
// 获取物料清单明细列表
export function getMbomLines(mbomId: number): Promise<MbomLine[]> {
return request.get(`/erp/mp/mbomline/mbom/${mbomId}`).then((res: any) => {
const rows = res.rows ?? res.data ?? []
return rows as MbomLine[]
})
}
// 更新物料清单明细行
export function updateMbomLine(data: Partial<MbomLine>): Promise<void> {
return request.put('/erp/mp/mbomline', data)
}
// 新增物料清单
export function createMbom(data: Partial<Mbom>): Promise<void> {
return request.post('/erp/mp/mbom', data)
}
// 更新物料清单
export function updateMbom(data: Partial<Mbom>): Promise<void> {
return request.put('/erp/mp/mbom', data)
}
// 删除物料清单
export function deleteMbom(mbomIds: string): Promise<void> {
return request.delete(`/erp/mp/mbom/${mbomIds}`)
}
// 审核物料清单
export function approveMbom(mbomId: number): Promise<void> {
return request.put(`/erp/mp/mbom/approve/${mbomId}`)
}
// 反审核物料清单
export function unapproveMbom(mbomId: number): Promise<void> {
return request.put(`/erp/mp/mbom/unapprove/${mbomId}`)
}
// 下发车间
export function issueToWorkshop(mbomId: number, workshopId: number, workshopName: string): Promise<void> {
return request.put(`/erp/mp/mbom/issue/${mbomId}/${workshopId}/${workshopName}`)
}
// 撤销下发车间
export function revokeIssue(mbomId: number): Promise<void> {
return request.put(`/erp/mp/mbom/revoke-issue/${mbomId}`)
}
// BOM运算从生产计划
export function calcBom(planId: number): Promise<void> {
return request.put(`/erp/mp/plan/bom-calculate/${planId}`)
}
// 齐套检查:查询物料清单的子件库存情况
export interface StockCheckItem {
itemCode: string
itemName: string
unitName?: string
requiredQty: number
availableQty: number
shortage: number
isShortage: boolean
}
export function checkMbomStock(mbomId: number): Promise<StockCheckItem[]> {
return request.get(`/erp/mp/mbom/stock-check/${mbomId}`).then((res: any) => {
return res.data ?? res.rows ?? res ?? []
})
}