fix: 月工资=基本+绩效 数据一致性
- contract.service.ts updateEmployee: 当同时传 baseSalary 和 performanceSalary 时,自动计算 monthlySalary = base + perf - roster.routes.ts 调薪接口: 同样确保 monthlySalary = base + perf - 修复前端编辑保存后月工资与基本+绩效不一致的问题
This commit is contained in:
@@ -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({
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user