潘的第一次 commit
This commit is contained in:
237
erp-frontend-vue/src/api/purchaseOrder.ts
Normal file
237
erp-frontend-vue/src/api/purchaseOrder.ts
Normal file
@@ -0,0 +1,237 @@
|
||||
import request from './request'
|
||||
|
||||
export interface PurchaseOrderLine {
|
||||
lineId: number
|
||||
orderId: number
|
||||
orderCode: string
|
||||
lineNo: number
|
||||
trackCode?: string
|
||||
planCode?: string
|
||||
itemId: number
|
||||
itemCode: string
|
||||
itemName: string
|
||||
specification?: string
|
||||
unitName?: string
|
||||
needDate?: string
|
||||
quantity: number
|
||||
unitPrice?: number
|
||||
amount?: number
|
||||
arrivedQuantity?: number
|
||||
remark?: string
|
||||
}
|
||||
|
||||
export interface PurchaseOrder {
|
||||
orderId: number
|
||||
orderCode: string
|
||||
orderDate: string
|
||||
status: string
|
||||
businessStatus?: string
|
||||
businessType: string
|
||||
orderType: string
|
||||
materialNeed: string
|
||||
supplierId?: number
|
||||
supplierCode?: string
|
||||
supplierName?: string
|
||||
deptId?: number
|
||||
deptName?: string
|
||||
userId?: number
|
||||
userName?: string
|
||||
deliveryDate?: string
|
||||
contractNo?: string
|
||||
contractFile?: string
|
||||
totalQuantity?: number
|
||||
totalAmount?: number
|
||||
arrivedQuantity?: number
|
||||
remark?: string
|
||||
operatorId?: number
|
||||
operatorName?: string
|
||||
approverId?: number
|
||||
approverName?: string
|
||||
approveDate?: string
|
||||
lines: PurchaseOrderLine[]
|
||||
createTime?: string
|
||||
// Detail-view join fields
|
||||
trackCode?: string
|
||||
planCode?: string
|
||||
itemCode?: string
|
||||
itemName?: string
|
||||
needDate?: string
|
||||
quantity?: number
|
||||
lineArrivedQuantity?: number
|
||||
}
|
||||
|
||||
/** 供应商(采购订单用,数据来源:md_vendor) */
|
||||
export interface PoSupplier {
|
||||
supplierId: number
|
||||
supplierCode?: string
|
||||
supplierName: string
|
||||
supplierNick?: string
|
||||
tel?: string
|
||||
contact1?: string
|
||||
contact1Tel?: string
|
||||
enableFlag?: string
|
||||
}
|
||||
|
||||
/** 引入弹窗行(采购计划明细) */
|
||||
export interface LeadInRow {
|
||||
purchaseId: number
|
||||
purchaseCode: string
|
||||
salesOrderCode?: string
|
||||
salesUserName?: string
|
||||
deliveryDate?: string
|
||||
itemId: number
|
||||
itemCode: string
|
||||
itemName: string
|
||||
specification?: string
|
||||
unitName?: string
|
||||
demandDate?: string
|
||||
purchaseQty: number
|
||||
orderedQty: number
|
||||
unpurchasedQty?: number
|
||||
}
|
||||
|
||||
export interface PurchaseOrderQuery {
|
||||
trackCode?: string
|
||||
orderCode?: string
|
||||
supplierName?: string
|
||||
itemCode?: string
|
||||
itemName?: string
|
||||
beginDate?: string
|
||||
endDate?: string
|
||||
status?: string
|
||||
pageNum?: number
|
||||
pageSize?: number
|
||||
}
|
||||
|
||||
export interface PurchaseOrderListResponse {
|
||||
rows: PurchaseOrder[]
|
||||
total: number
|
||||
}
|
||||
|
||||
// 获取采购订单列表
|
||||
export function getPurchaseOrderList(params: PurchaseOrderQuery): Promise<PurchaseOrderListResponse> {
|
||||
return request.get('/erp/po/order/list', { params }).then((res: any) => {
|
||||
return {
|
||||
rows: res.rows || [],
|
||||
total: res.total || 0
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 获取采购订单详情
|
||||
export function getPurchaseOrderDetail(orderId: number): Promise<PurchaseOrder> {
|
||||
return request.get(`/erp/po/order/${orderId}`).then((res: any) => {
|
||||
return res.data
|
||||
})
|
||||
}
|
||||
|
||||
// 新增采购订单
|
||||
export function createPurchaseOrder(data: Partial<PurchaseOrder>): Promise<void> {
|
||||
return request.post('/erp/po/order', data)
|
||||
}
|
||||
|
||||
// 更新采购订单
|
||||
export function updatePurchaseOrder(data: Partial<PurchaseOrder>): Promise<void> {
|
||||
return request.put('/erp/po/order', data)
|
||||
}
|
||||
|
||||
// 删除采购订单
|
||||
export function deletePurchaseOrder(orderIds: string): Promise<void> {
|
||||
return request.delete(`/erp/po/order/${orderIds}`)
|
||||
}
|
||||
|
||||
// 获取采购订单单据视图列表
|
||||
export function getPurchaseOrderDocList(params: PurchaseOrderQuery): Promise<PurchaseOrderListResponse> {
|
||||
return request.get('/erp/po/order/docList', { params }).then((res: any) => ({
|
||||
rows: res.rows || [],
|
||||
total: res.total || 0
|
||||
}))
|
||||
}
|
||||
|
||||
// 获取采购订单汇总
|
||||
export function getPurchaseOrderSummary(params: PurchaseOrderQuery): Promise<{ totalOrderQty: number; totalArrivedQty: number }> {
|
||||
return request.get('/erp/po/order/summary', { params }).then((res: any) => res.data || {})
|
||||
}
|
||||
|
||||
// 生成采购订单编码(后端返回的编码在 data 中,msg 为「操作成功」)
|
||||
export function genPurchaseOrderCode(): Promise<string> {
|
||||
return request.get('/erp/po/order/genCode').then((res: any) => res.data ?? res.msg ?? '')
|
||||
}
|
||||
|
||||
// 审核采购订单
|
||||
export function approvePurchaseOrder(orderIds: string): Promise<void> {
|
||||
return request.put(`/erp/po/order/approve/${orderIds}`)
|
||||
}
|
||||
|
||||
// 反审核采购订单
|
||||
export function unapprovePurchaseOrder(orderIds: string): Promise<void> {
|
||||
return request.put(`/erp/po/order/unapprove/${orderIds}`)
|
||||
}
|
||||
|
||||
// 导出采购订单
|
||||
export function exportPurchaseOrder(params: PurchaseOrderQuery): Promise<Blob> {
|
||||
return request.post('/erp/po/order/export', params, { responseType: 'blob' })
|
||||
}
|
||||
|
||||
// ============ 供应商 API(使用 MOM md_vendor,表 erp_po_supplier 在 my_mes 中未建) ============
|
||||
|
||||
export function getPoSupplierList(params?: { supplierName?: string; contact1?: string; pageNum?: number; pageSize?: number }): Promise<{ rows: PoSupplier[]; total: number }> {
|
||||
const { supplierName, contact1, pageNum = 1, pageSize = 200, ...rest } = params ?? {}
|
||||
return request.get('/mes/md/vendor/list', {
|
||||
params: { enableFlag: 'Y', pageNum, pageSize, vendorName: supplierName, contact1, ...rest }
|
||||
}).then((res: any) => {
|
||||
const rows = (res.rows ?? []).map((v: any) => ({
|
||||
supplierId: v.vendorId,
|
||||
supplierCode: v.vendorCode,
|
||||
supplierName: v.vendorName ?? '',
|
||||
supplierNick: v.vendorNick,
|
||||
tel: v.tel,
|
||||
contact1: v.contact1,
|
||||
contact1Tel: v.contact1Tel,
|
||||
enableFlag: v.enableFlag
|
||||
}))
|
||||
return { rows, total: res.total ?? 0 }
|
||||
})
|
||||
}
|
||||
|
||||
// ============ 引入采购计划单明细 API ============
|
||||
|
||||
export function getLeadInList(params?: { salesOrderCode?: string; itemCode?: string; itemName?: string; businessType?: string; pageNum?: number; pageSize?: number }): Promise<{ rows: LeadInRow[]; total: number }> {
|
||||
return request.get('/erp/po/order/leadIn', { params: { pageNum: 1, pageSize: 200, ...params } }).then((res: any) => {
|
||||
const rows = (res.rows ?? []).map((r: any) => ({
|
||||
...r,
|
||||
unpurchasedQty: (r.purchaseQty ?? 0) - (r.orderedQty ?? 0)
|
||||
}))
|
||||
return { rows, total: res.total ?? 0 }
|
||||
})
|
||||
}
|
||||
|
||||
// ============ 状态映射 ============
|
||||
|
||||
export const STATUS_MAP: Record<string, { label: string; type: string }> = {
|
||||
PREPARE: { label: '开立', type: 'info' },
|
||||
DRAFT: { label: '开立', type: 'info' },
|
||||
APPROVED: { label: '审核', type: 'success' },
|
||||
CLOSED: { label: '关闭', type: '' },
|
||||
REJECTED: { label: '退回', type: 'warning' }
|
||||
}
|
||||
|
||||
export const BUSINESS_STATUS_MAP: Record<string, string> = {
|
||||
NORMAL: '正常', COMPLETED: '完成', PAUSE: '暂停', CANCEL: '取消'
|
||||
}
|
||||
|
||||
export const BUSINESS_TYPE_OPTIONS = [
|
||||
{ value: '原材料', label: '原材料' },
|
||||
{ value: '零部件', label: '零部件' },
|
||||
{ value: '装配件', label: '装配件' },
|
||||
{ value: '成品', label: '成品' },
|
||||
{ value: '五金件', label: '五金件' },
|
||||
{ value: '包装物', label: '包装物' }
|
||||
]
|
||||
|
||||
export const BUSINESS_STATUS_OPTIONS = [
|
||||
{ value: 'NORMAL', label: '正常' },
|
||||
{ value: 'COMPLETED', label: '完成' },
|
||||
{ value: 'PAUSE', label: '暂停' },
|
||||
{ value: 'CANCEL', label: '取消' }
|
||||
]
|
||||
Reference in New Issue
Block a user