diff --git a/src/views/oa/erp/erpProjectChange/edit.vue b/src/views/oa/erp/erpProjectChange/edit.vue index be6cb07..79dd883 100644 --- a/src/views/oa/erp/erpProjectChange/edit.vue +++ b/src/views/oa/erp/erpProjectChange/edit.vue @@ -101,21 +101,19 @@ - - - 添加预算行 - - + @@ -138,13 +136,6 @@ - - - 进度变更(项目里程碑/关键节点) @@ -238,7 +229,7 @@ import { } from '@/api/oa/erp/erpProjectChange'; import { ElMessage } from 'element-plus'; import { useUserStore } from '@/store/modules/user'; -import type { ErpProjectChangeBudget, ErpProjectChangeForm } from '@/api/oa/erp/erpProjectChange/types'; +import type { ErpProjectChangeForm } from '@/api/oa/erp/erpProjectChange/types'; // import approvalButton from '@/components/Workflow/approvalButton.vue'; // import SubmitVerify from '@/components/Workflow/SubmitVerify.vue'; // import ApprovalRecord from '@/components/Workflow/ApprovalRecord.vue'; @@ -369,16 +360,26 @@ const handleProjectChange = async (projectId: string | number) => { const res = await prepareProjectChangeWithInfo(projectId); if (res.code === 200) { // 保留已填写的变更信息,只更新项目相关信息 + // 注意:budgetList 和 progressList 应从后端获取,不应保留前端空数组 const changeData = { changeType: form.value.changeType, currentStatus: form.value.currentStatus, changeReason: form.value.changeReason, - followUpWork: form.value.followUpWork, - budgetList: form.value.budgetList, - progressList: form.value.progressList + followUpWork: form.value.followUpWork }; Object.assign(form.value, res.data, changeData); + // 确保使用后端返回的预算和进度列表,并转换数字类型字段 + form.value.budgetList = (res.data.budgetList ?? []).map((item: any) => ({ + ...item, + budgetBefore: Number(item.budgetBefore || 0), + budgetAfter: Number(item.budgetAfter || 0), + amountUsed: Number(item.amountUsed || 0) + })); + form.value.progressList = (res.data.progressList ?? []).map((item: any) => ({ + ...item, + completionDegree: Number(item.completionDegree || 0) + })); // 处理变更类型(多选) if (form.value.changeType) { @@ -415,8 +416,17 @@ const loadProjectDataByProjectId = async (projectId: string | number) => { Object.assign(form.value, res.data); const dateOnly = toDateOnly(form.value.applyChangeDate); form.value.applyChangeDate = dateOnly ?? formatToday(); - form.value.budgetList = res.data.budgetList ?? []; - form.value.progressList = res.data.progressList ?? []; + // 转换数字类型字段,确保el-input-number组件正常工作 + form.value.budgetList = (res.data.budgetList ?? []).map((item: any) => ({ + ...item, + budgetBefore: Number(item.budgetBefore || 0), + budgetAfter: Number(item.budgetAfter || 0), + amountUsed: Number(item.amountUsed || 0) + })); + form.value.progressList = (res.data.progressList ?? []).map((item: any) => ({ + ...item, + completionDegree: Number(item.completionDegree || 0) + })); // 处理变更类型多选 if (form.value.changeType) { changeTypeList.value = form.value.changeType.split(','); @@ -428,23 +438,8 @@ const loadProjectDataByProjectId = async (projectId: string | number) => { } }; -const handleAddBudget = () => { - const list = form.value.budgetList ?? (form.value.budgetList = []); - const budget: ErpProjectChangeBudget = { - subjectName: '', - budgetBefore: 0, - budgetAfter: 0, - amountUsed: 0, - adjustmentReason: '', - sortOrder: list.length + 1, - remark: '' - }; - list.push(budget); -}; - -const handleDeleteBudget = (index: number) => { - form.value.budgetList.splice(index, 1); -}; +// 预算行不允许新增删除,数据从项目预算中自动带出 +// handleAddBudget 和 handleDeleteBudget 方法已移除 /** 提交按钮(与项目信息保持一致的处理方式) */ const submitForm = (status: string, mode: boolean) => { @@ -477,7 +472,8 @@ const submitForm = (status: string, mode: boolean) => { projectCode: form.value.projectCode, projectManagerId: form.value.projectManagerId, deptHeadId: form.value.deptHeadId, - changeType: form.value.changeType + changeType: form.value.changeType, + projectChangeCode: form.value.projectChangeCode }; // 流程实例业务扩展字段 form.value.bizExt = {