From c3c7cfadb48b162f6cc00b4c218f0984fe31c7c3 Mon Sep 17 00:00:00 2001 From: xs Date: Fri, 19 Dec 2025 11:22:28 +0800 Subject: [PATCH] =?UTF-8?q?1.0.50=E5=89=8D=E7=AB=AF=EF=BC=9A=20=20=20=20fe?= =?UTF-8?q?at(budget):=E5=AE=8C=E6=88=90=E7=A0=94=E5=8F=91=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E9=A2=84=E7=AE=97=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/oa/erp/budgetInfo/edit.vue | 52 +++++++++++++++++-- src/views/oa/erp/budgetInfo/index.vue | 20 +++++-- .../budgetInfo/market/InstallationCost.vue | 4 +- .../oa/erp/budgetInfo/rd/LaborService.vue | 7 ++- .../oa/erp/budgetInfo/rd/MaterialCost.vue | 38 +++++++++++--- .../budgetInfo/rd/TravelMeetingExchange.vue | 4 +- 6 files changed, 105 insertions(+), 20 deletions(-) diff --git a/src/views/oa/erp/budgetInfo/edit.vue b/src/views/oa/erp/budgetInfo/edit.vue index b83c201..dd6291b 100644 --- a/src/views/oa/erp/budgetInfo/edit.vue +++ b/src/views/oa/erp/budgetInfo/edit.vue @@ -26,6 +26,21 @@ + + + + + + + + + + + + + + + @@ -307,7 +322,9 @@ const searchForm = reactive({ projectName: '', projectCode: '', projectCategory: '', - flowStatus: '' + flowStatus: '', + budgetVersion: 1, + remark: '' }); // 监听项目类别变化,更新默认标签页 @@ -645,6 +662,8 @@ const handleSave = async (status: string, mode: boolean) => { ElMessage.warning('不支持的预算类型'); return; } + budgetForm.budgetVersion = searchForm.budgetVersion; + budgetForm.remark = searchForm.remark; console.log('----'); console.log(budgetForm); @@ -776,7 +795,21 @@ const processRdCostData = (budgetForm: budgetInfoForm) => { // 材料成本 if (assignIfChanged([], rdMaterialCostRef.value?.allMaterialData, oriRdBudgetMaterialCostList.value).length) { - budgetForm.erpRdBudgetMaterialCostList = rdMaterialCostRef.value?.allMaterialData || []; + budgetForm.erpRdBudgetMaterialCostList = (rdMaterialCostRef.value?.allMaterialData || []).map(item => { + const newItem = { ...item }; + + // 如果 是其他材料费,需要将万元转为元 + if (newItem.materialType === 2 || newItem.materialType === '2') { + if (newItem.price !== null && newItem.price !== undefined) { + const priceValue = parseFloat(newItem.price); + if (!isNaN(priceValue)) { + // 乘以10000 + newItem.price = priceValue * 10000; + } + } + } + return newItem; + }); } // 差旅、会议、交流成本 @@ -937,6 +970,8 @@ async function loadBudgetData() { routeParams.value = route.query; budgetId.value = routeParams.value.id as string | number; + await getUsers(); + if (!budgetId.value || !['update', 'view', 'approval'].includes(routeParams.value.type as string)) { handleAddMode(); return; @@ -958,8 +993,8 @@ async function handleLoadMode() { Object.assign(searchForm, res.data); if (routeParams.value.changeFlag === '1') { searchForm.flowStatus = 'draft'; + searchForm.budgetVersion = (searchForm.budgetVersion || 0) + 1; } - await getUsers(); if (isRdOrPreProductionCategory()) { await handleRdOrPreProductionData(res.data); @@ -989,6 +1024,17 @@ async function handleRdOrPreProductionData(data: any) { // 分组数据 const groupedMaterialData = groupByField(data.erpRdBudgetMaterialCostList, 'materialType'); + groupedMaterialData[MATERIAL_TYPE.OTHER] = groupedMaterialData[MATERIAL_TYPE.OTHER].map(item => { + return { + ...item, + unitPrice: undefined, + amount: undefined, + unitId: undefined, + // 转换为万元显示 + price: item.price ? (item.price / 10000).toFixed(2) : '' + }; + }); + const groupedTechData = groupByField(data.erpRdBudgetTechCostList, 'techType'); const groupedLaborData = groupByField(data.erpRdBudgetLaborCostList, 'laborType'); const groupedLiteratureData = groupByField(data.erpRdBudgetLiteratureCostList, 'literatureType'); diff --git a/src/views/oa/erp/budgetInfo/index.vue b/src/views/oa/erp/budgetInfo/index.vue index a4f9f19..7749340 100644 --- a/src/views/oa/erp/budgetInfo/index.vue +++ b/src/views/oa/erp/budgetInfo/index.vue @@ -18,6 +18,16 @@ + + + @@ -64,7 +74,7 @@ - + - + @@ -120,8 +142,8 @@