fix: monthlySalary 始终由 baseSalary + performanceSalary 计算
- updateEmployeeSchema 加上 baseSalary/performanceSalary 字段(Zod strip 问题) - updateEmployee: 只要传了 baseSalary 或 performanceSalary 就自动计算 monthlySalary - 不再依赖前端传 monthlySalary,后端自动用 base + perf 计算总额
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user