| | |
| | | } |
| | | } |
| | | |
| | | /** 采购申请导入结果 */ |
| | | export interface ImportResult { |
| | | /** 创建成功的采购申请单号 */ |
| | | createList?: string[]; |
| | | /** 更新成功的采购申请单号 */ |
| | | updateList?: string[]; |
| | | /** 导入失败集合,key 为采购申请单号或行号,value 为失败原因 */ |
| | | failureList?: Record<string, string>; |
| | | } |
| | | |
| | | /** 创建采购申请 */ |
| | | export function createPurchaseRequest(data: ErpPurchaseRequestApi.PurchaseRequest) { |
| | | return requestClient.post('/erp/purchase-request/create', data); |
| | |
| | | /** 提交采购申请审批 */ |
| | | export function submitPurchaseRequest(id: number, processDefinitionKey: string) { |
| | | return requestClient.put('/erp/purchase-request/submit', null, { params: { id, processDefinitionKey } }); |
| | | } |
| | | |
| | | /** 重置被驳回的采购申请为草稿状态 */ |
| | | export function resetPurchaseRequestStatus(id: number) { |
| | | return requestClient.put('/erp/purchase-request/reset-status', null, { params: { id } }); |
| | | } |
| | | |
| | | /** 生成采购订单 */ |
| | |
| | | export function getApproveProcessList(id: number) { |
| | | return requestClient.get(`/erp/purchase-request/approve-process-list`, { params: { id } }); |
| | | } |
| | | |
| | | /** BPM 流程实例状态 → 业务状态映射 */ |
| | | export const BPM_STATUS_TO_BIZ: Record<number, number> = { |
| | | 1: 10, // RUNNING → 审批中 |
| | | 2: 20, // APPROVE → 审核通过 |
| | | 3: 30, // REJECT → 审核不通过 |
| | | 4: 40, // CANCEL → 已取消 |
| | | }; |
| | | |
| | | /** |
| | | * 同步采购申请的业务状态(根据 BPM 流程实例实际状态) |
| | | * 用于修复后端监听器未正确回写导致的业务状态不一致问题 |
| | | */ |
| | | export async function syncPurchaseRequestStatus(items: ErpPurchaseRequestApi.PurchaseRequest[]) { |
| | | const processingItems = items.filter( |
| | | (item) => item.status === 10 && item.processInstanceId, |
| | | ); |
| | | if (processingItems.length === 0) return; |
| | | |
| | | const { getApprovalDetail } = await import('#/api/bpm/processInstance'); |
| | | for (const item of processingItems) { |
| | | try { |
| | | const detail = await getApprovalDetail({ |
| | | processInstanceId: item.processInstanceId, |
| | | }); |
| | | const bizStatus = BPM_STATUS_TO_BIZ[detail.processInstance?.status]; |
| | | if (bizStatus && bizStatus !== 10) { |
| | | item.status = bizStatus; |
| | | } |
| | | } catch { |
| | | // 查询失败时保持原有状态 |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** 下载采购申请导入模板 */ |
| | | export function importPurchaseRequestTemplate() { |
| | | return requestClient.download('/erp/purchase-request/get-import-template'); |
| | | } |
| | | |
| | | /** 导入采购申请 */ |
| | | export function importPurchaseRequest(file: File) { |
| | | return requestClient.upload<ImportResult>('/erp/purchase-request/import', { file }); |
| | | } |