潘的第一次 commit

This commit is contained in:
panchengyong
2026-02-27 23:50:25 +08:00
commit 10b6d0099a
117 changed files with 32547 additions and 0 deletions

View 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: '取消' }
]