diff --git a/src/api/oa/erp/contractOrder/index.ts b/src/api/oa/erp/contractOrder/index.ts index 3b404b3..e178fdf 100644 --- a/src/api/oa/erp/contractOrder/index.ts +++ b/src/api/oa/erp/contractOrder/index.ts @@ -77,12 +77,12 @@ export const getContractOrder = (projectId: string | number): AxiosPromise => { +export const getContractOrderPurchaseMaterialList = (contractId: string | number): AxiosPromise => { return request({ - url: '/oa/erp/contractOrder/purchaseMaterialList/' + projectId, + url: '/oa/erp/contractOrder/purchaseMaterialList/' + contractId, method: 'get' }); }; diff --git a/src/views/oa/erp/orderLedger/index.vue b/src/views/oa/erp/orderLedger/index.vue index 2f90dfd..9959e03 100644 --- a/src/views/oa/erp/orderLedger/index.vue +++ b/src/views/oa/erp/orderLedger/index.vue @@ -762,7 +762,14 @@ const loadOrderAndContract = async () => { }; /** - * 采购/采购物料清单按 erp_project_purchase.project_id(实施项目)查询。 + * 解析台账当前关联的合同ID(订单信息优先,合同详情兜底)。 + */ +const resolveContractId = (): string | number | undefined => { + return orderInfo.value?.contractId ?? contractInfo.value?.contractId; +}; + +/** + * 采购单按 erp_project_purchase.project_id(实施项目)查询。 * 台账路由参数为合同订单行时,需解析到关联的实施项目 ID,不能直接用路由上的合同订单 project_id。 */ const resolvePurchaseBizProjectId = async (): Promise => { @@ -797,26 +804,30 @@ const loadPurchaseList = async () => { purchaseMaterialList.value = []; return; } - const bizProjectId = await resolvePurchaseBizProjectId(); - if (bizProjectId == null || bizProjectId === '') { - purchaseList.value = []; - purchaseTotal.value = 0; - purchaseMaterialList.value = []; - return; - } - purchaseQuery.projectId = bizProjectId; - purchaseQuery.relationId = undefined; + + const contractId = resolveContractId(); loadingPurchase.value = true; try { - const [purchaseRes, materialRes] = await Promise.all([ - listProjectPurchase({ + const bizProjectId = await resolvePurchaseBizProjectId(); + if (bizProjectId != null && bizProjectId !== '') { + purchaseQuery.projectId = bizProjectId; + purchaseQuery.relationId = undefined; + const purchaseRes = await listProjectPurchase({ ...purchaseQuery - }), - getContractOrderPurchaseMaterialList(bizProjectId) - ]); - purchaseList.value = purchaseRes.rows || []; - purchaseTotal.value = purchaseRes.total || 0; - purchaseMaterialList.value = materialRes.data || []; + }); + purchaseList.value = purchaseRes.rows || []; + purchaseTotal.value = purchaseRes.total || 0; + } else { + purchaseList.value = []; + purchaseTotal.value = 0; + } + + if (contractId != null && contractId !== '') { + const materialRes = await getContractOrderPurchaseMaterialList(contractId); + purchaseMaterialList.value = materialRes.data || []; + } else { + purchaseMaterialList.value = []; + } } finally { loadingPurchase.value = false; }