fix: 月工资=基本+绩效 数据一致性

- contract.service.ts updateEmployee: 当同时传 baseSalary 和 performanceSalary 时,自动计算 monthlySalary = base + perf
- roster.routes.ts 调薪接口: 同样确保 monthlySalary = base + perf
- 修复前端编辑保存后月工资与基本+绩效不一致的问题
This commit is contained in:
freedakgmail
2026-08-19 07:13:32 +08:00
parent 1c5fde0b03
commit 4906fc7397
2 changed files with 10 additions and 3 deletions
+5 -1
View File
@@ -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({
+5 -2
View File
@@ -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))