fix: 非列表页面姓名显示处也加上身份证号
后端: - employee.routes.ts: checkPhone 返回 idCardNumber - risk.service.ts: 风险项查询加上 idCardNumber 并解密 - dashboard.routes.ts: 风险中心返回 employeeIdCardNumber 前端: - Termination.tsx: 离职管理所有姓名显示处加上身份证号(员工概况、通知书、PDF导出、下拉选项) - Roster.tsx: 弹窗标题加上身份证号,signChoice 传递 idCardNumber - SignMethodChoice.tsx: 签署方式弹窗显示身份证号 - Contracts.tsx: 手机查重提示加上身份证号 - RiskCenter.tsx: 风险卡片员工姓名后显示身份证号
This commit is contained in:
@@ -546,7 +546,7 @@ router.get('/risks', authMiddleware, async (req: AuthRequest, res: Response, nex
|
||||
actionUrl: t.actionUrl || '',
|
||||
estimatedLoss: t.estimatedLoss || 0,
|
||||
deadline: t.deadline || null,
|
||||
employee: t.employeeName ? { name: t.employeeName, department: t.employeeDepartment || '' } : null,
|
||||
employee: t.employeeName ? { name: t.employeeName, department: t.employeeDepartment || '', idCardNumber: t.employeeIdCardNumber || null } : null,
|
||||
}))
|
||||
res.json({ success: true, data: risks })
|
||||
} catch (err) {
|
||||
|
||||
@@ -141,12 +141,12 @@ router.get('/check-phone', authMiddleware, async (req: AuthRequest, res, next) =
|
||||
// 手机号加密存储,需遍历匹配(量小可接受)
|
||||
const employees = await prisma.employee.findMany({
|
||||
where: { orgId: req.user!.orgId },
|
||||
select: { id: true, name: true, department: true, status: true, phone: true },
|
||||
select: { id: true, name: true, department: true, status: true, phone: true, idCardNumber: true },
|
||||
})
|
||||
const matched = employees.find(e => {
|
||||
try { return e.phone ? decrypt(e.phone) === phone : false } catch { return false }
|
||||
})
|
||||
res.json({ success: true, data: { exists: !!matched, employee: matched ? { id: matched.id, name: matched.name, department: matched.department, status: matched.status } : undefined } })
|
||||
res.json({ success: true, data: { exists: !!matched, employee: matched ? { id: matched.id, name: matched.name, department: matched.department, status: matched.status, idCardNumber: (() => { try { return matched.idCardNumber ? (matched.idCardNumber.includes(':') ? decrypt(matched.idCardNumber) : matched.idCardNumber) : null } catch { return null } })() } : undefined } })
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
|
||||
@@ -699,7 +699,7 @@ export async function getDashboardData(orgId: string) {
|
||||
prisma.riskItem.count({ where: { orgId, status: 'PENDING' } }),
|
||||
prisma.riskItem.findMany({
|
||||
where: { orgId, status: 'PENDING' },
|
||||
include: { employee: { select: { id: true, name: true, department: true, idCardHash: true } } },
|
||||
include: { employee: { select: { id: true, name: true, department: true, idCardHash: true, idCardNumber: true } } },
|
||||
orderBy: [{ level: 'asc' }, { estimatedLoss: 'desc' }],
|
||||
}),
|
||||
prisma.riskItem.findMany({
|
||||
@@ -930,6 +930,7 @@ export async function getDashboardData(orgId: string) {
|
||||
employeeName: r.employee?.name || null,
|
||||
employeeDepartment: r.employee?.department || null,
|
||||
employeeIdCardHash: r.employee?.idCardHash || null,
|
||||
employeeIdCardNumber: r.employee?.idCardNumber ? (() => { try { return r.employee.idCardNumber.includes(':') ? decrypt(r.employee.idCardNumber) : r.employee.idCardNumber } catch { return null } })() : null,
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user