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:
freedakgmail
2026-08-18 07:46:43 +08:00
parent a58cc3f6f9
commit 5c016914dd
8 changed files with 28 additions and 14 deletions
+1 -1
View File
@@ -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) {
+2 -2
View File
@@ -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)
}
+2 -1
View File
@@ -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,
}
})