diff --git a/backend/src/routes/roster.routes.ts b/backend/src/routes/roster.routes.ts index 4a88aa5..982d098 100644 --- a/backend/src/routes/roster.routes.ts +++ b/backend/src/routes/roster.routes.ts @@ -1467,7 +1467,11 @@ router.post('/:id/salary-change', authMiddleware, async (req: AuthRequest, res, }) // 同步 Employee 便捷字段(含工资结构) - const updateData: any = { monthlySalary: encrypt(String(newSalary)) } + // 如果同时传了 baseSalary 和 performanceSalary,自动计算 monthlySalary = base + perf + const finalSalary = (baseSalary !== undefined && performanceSalary !== undefined) + ? (Number(baseSalary) || 0) + (Number(performanceSalary) || 0) + : newSalary + const updateData: any = { monthlySalary: encrypt(String(finalSalary)) } if (baseSalary !== undefined) updateData.baseSalary = encrypt(String(Number(baseSalary) || 0)) if (performanceSalary !== undefined) updateData.performanceSalary = encrypt(String(Number(performanceSalary) || 0)) await prisma.employee.update({ diff --git a/backend/src/services/contract.service.ts b/backend/src/services/contract.service.ts index 73069f1..ae9210e 100644 --- a/backend/src/services/contract.service.ts +++ b/backend/src/services/contract.service.ts @@ -690,8 +690,11 @@ export async function updateEmployee(orgId: string, id: string, data: any) { if (data.hireDate !== undefined) updateData.hireDate = new Date(data.hireDate) if (data.monthlySalary !== undefined) { const oldSalary = Number(decrypt(employee.monthlySalary)) || 0 - const newSalary = Number(data.monthlySalary) || 0 - updateData.monthlySalary = encrypt(data.monthlySalary) + // 如果同时传了 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) + updateData.monthlySalary = encrypt(String(newSalary)) // 同步更新工资结构 if (data.baseSalary !== undefined) { updateData.baseSalary = encrypt(String(Number(data.baseSalary) || 0))