diff --git a/backend/src/services/contract.service.ts b/backend/src/services/contract.service.ts index ae9210e..a3ce120 100644 --- a/backend/src/services/contract.service.ts +++ b/backend/src/services/contract.service.ts @@ -688,20 +688,17 @@ export async function updateEmployee(orgId: string, id: string, data: any) { if (data.name !== undefined) updateData.name = data.name if (data.department !== undefined) updateData.department = data.department if (data.hireDate !== undefined) updateData.hireDate = new Date(data.hireDate) - if (data.monthlySalary !== undefined) { + if (data.baseSalary !== undefined || data.performanceSalary !== undefined) { const oldSalary = Number(decrypt(employee.monthlySalary)) || 0 - // 如果同时传了 baseSalary 和 performanceSalary,自动计算 monthlySalary = base + perf - const baseNum = data.baseSalary !== undefined ? Number(data.baseSalary) || 0 : null - const perfNum = data.performanceSalary !== undefined ? Number(data.performanceSalary) || 0 : null - const newSalary = (baseNum !== null && perfNum !== null) ? baseNum + perfNum : (Number(data.monthlySalary) || 0) + // monthlySalary 始终由 baseSalary + performanceSalary 计算 + const baseNum = data.baseSalary !== undefined ? Number(data.baseSalary) || 0 + : (employee.baseSalary ? Number(decrypt(employee.baseSalary)) || 0 : 0) + const perfNum = data.performanceSalary !== undefined ? Number(data.performanceSalary) || 0 + : (employee.performanceSalary ? Number(decrypt(employee.performanceSalary)) || 0 : 0) + const newSalary = baseNum + perfNum updateData.monthlySalary = encrypt(String(newSalary)) - // 同步更新工资结构 - if (data.baseSalary !== undefined) { - updateData.baseSalary = encrypt(String(Number(data.baseSalary) || 0)) - } - if (data.performanceSalary !== undefined) { - updateData.performanceSalary = encrypt(String(Number(data.performanceSalary) || 0)) - } + if (data.baseSalary !== undefined) updateData.baseSalary = encrypt(String(baseNum)) + if (data.performanceSalary !== undefined) updateData.performanceSalary = encrypt(String(perfNum)) // 记录薪资变更 if (oldSalary !== newSalary) { const now = new Date()