fix: 全部员工显示改为姓名+完整身份证号,不再脱敏
- 花名册列表显示完整身份证号 - 社保公积金月度办理列表姓名下显示身份证号 - 员工详情页显示完整身份证号 - 商业保险列表显示完整身份证号 - 后端去掉 idCardMasked 脱敏逻辑
This commit is contained in:
@@ -2,6 +2,7 @@ import { Router, Response, NextFunction } from 'express'
|
||||
import { z } from 'zod'
|
||||
import prisma from '../lib/prisma'
|
||||
import { authMiddleware, AuthRequest } from '../middleware/auth'
|
||||
import { decrypt } from '../lib/crypto'
|
||||
|
||||
const router = Router()
|
||||
router.use(authMiddleware)
|
||||
@@ -45,7 +46,7 @@ router.get('/plans/:planId/enrollments', async (req: AuthRequest, res: Response,
|
||||
employeeId: e.employeeId,
|
||||
name: e.employee.name,
|
||||
department: e.employee.department,
|
||||
idCardMasked: e.employee.idCardNumber ? e.employee.idCardNumber.slice(0, 3) + '****' + e.employee.idCardNumber.slice(-4) : null,
|
||||
idCardNumber: e.employee.idCardNumber ? (() => { try { return e.employee.idCardNumber.includes(':') ? decrypt(e.employee.idCardNumber) : e.employee.idCardNumber } catch { return null } })() : null,
|
||||
premium: e.premium,
|
||||
effectiveFrom: e.effectiveFrom,
|
||||
effectiveTo: e.effectiveTo,
|
||||
|
||||
@@ -190,18 +190,6 @@ router.get('/', authMiddleware, async (req: AuthRequest, res, next) => {
|
||||
const isResigned = e.terminations.some((t) => t.status === 'COMPLETED' && t.terminationDate <= today)
|
||||
const isPreHire = !isResigned && e.hireDate > todayEnd
|
||||
const dynamicStatus = isResigned ? 'RESIGNED' : (isPreHire ? 'PRE_HIRE' : 'ACTIVE')
|
||||
// 证件号码脱敏显示
|
||||
let idCardMasked: string | null = null
|
||||
if (e.idCardNumber) {
|
||||
try {
|
||||
const idCard = decrypt(e.idCardNumber)
|
||||
if (idCard.length >= 11) {
|
||||
idCardMasked = idCard.slice(0, 3) + '****' + idCard.slice(-4)
|
||||
} else {
|
||||
idCardMasked = '****'
|
||||
}
|
||||
} catch {}
|
||||
}
|
||||
return {
|
||||
id: e.id,
|
||||
name: e.name,
|
||||
@@ -217,7 +205,6 @@ router.get('/', authMiddleware, async (req: AuthRequest, res, next) => {
|
||||
hireDate: e.hireDate,
|
||||
gender: e.gender,
|
||||
phone: e.phone,
|
||||
idCardMasked,
|
||||
idCardNumber: safeDecryptStr(e.idCardNumber),
|
||||
monthlySalary: safeDecrypt(e.monthlySalary),
|
||||
baseSalary: e.baseSalary ? safeDecrypt(e.baseSalary) : null,
|
||||
|
||||
@@ -5,6 +5,14 @@ import { decrypt } from '../lib/crypto'
|
||||
import { z } from 'zod'
|
||||
import OpenAI from 'openai'
|
||||
|
||||
function decryptIdCard(encrypted: string | null): string | null {
|
||||
if (!encrypted) return null
|
||||
try {
|
||||
if (!encrypted.includes(':')) return encrypted
|
||||
return decrypt(encrypted)
|
||||
} catch { return null }
|
||||
}
|
||||
|
||||
const router = Router()
|
||||
router.use(authMiddleware)
|
||||
|
||||
@@ -1305,6 +1313,7 @@ router.get('/monthly-changes', async (req: AuthRequest, res: Response, next: Nex
|
||||
recordId: r.id,
|
||||
employeeId: r.employeeId,
|
||||
name: r.employee.name,
|
||||
idCardNumber: decryptIdCard(r.employee.idCardNumber),
|
||||
department: r.employee.department,
|
||||
city: r.city,
|
||||
base: r.base,
|
||||
@@ -1376,6 +1385,7 @@ router.get('/housing/monthly-changes', async (req: AuthRequest, res: Response, n
|
||||
recordId: r.id,
|
||||
employeeId: r.employeeId,
|
||||
name: r.employee.name,
|
||||
idCardNumber: decryptIdCard(r.employee.idCardNumber),
|
||||
department: r.employee.department,
|
||||
city: r.city,
|
||||
base: r.base,
|
||||
@@ -1442,7 +1452,8 @@ router.get('/active-declaration', async (req: AuthRequest, res: Response, next:
|
||||
recordId: r.id,
|
||||
employeeId: r.employeeId,
|
||||
name: r.employee.name,
|
||||
department: r.employee.department,
|
||||
idCardNumber: decryptIdCard((r as any).employee.idCardNumber),
|
||||
department: (r as any).employee.department,
|
||||
city: r.city,
|
||||
base: r.base,
|
||||
startMonth: r.startMonth,
|
||||
@@ -1505,7 +1516,8 @@ router.get('/housing/active-declaration', async (req: AuthRequest, res: Response
|
||||
recordId: r.id,
|
||||
employeeId: r.employeeId,
|
||||
name: r.employee.name,
|
||||
department: r.employee.department,
|
||||
idCardNumber: decryptIdCard((r as any).employee.idCardNumber),
|
||||
department: (r as any).employee.department,
|
||||
city: r.city,
|
||||
base: r.base,
|
||||
startMonth: r.startMonth,
|
||||
|
||||
Reference in New Issue
Block a user