fix: AI风险预测员工下拉框显示完整身份证号区分同名员工
- 后端 /employees/list 接口返回解密后的完整身份证号 - 前端 AI风险预测通用模式和结构化模式员工下拉框显示 姓名(身份证号)
This commit is contained in:
@@ -82,10 +82,23 @@ router.get('/list', authMiddleware, async (req: AuthRequest, res, next) => {
|
||||
status: { in: status },
|
||||
...(department && { department }),
|
||||
},
|
||||
select: { id: true, name: true, department: true, position: true, phone: true, gender: true, status: true },
|
||||
select: { id: true, name: true, department: true, position: true, phone: true, gender: true, status: true, idCardNumber: true },
|
||||
orderBy: { name: 'asc' },
|
||||
})
|
||||
res.json({ success: true, data: employees })
|
||||
// 解密身份证号,返回完整明文用于前端下拉框区分同名员工
|
||||
const employeesWithIdCard = employees.map((e: any) => {
|
||||
let idCardNo = ''
|
||||
if (e.idCardNumber) {
|
||||
try {
|
||||
const plain = decrypt(e.idCardNumber)
|
||||
if (plain) idCardNo = plain
|
||||
} catch {}
|
||||
}
|
||||
delete e.idCardNumber
|
||||
e.idCardNo = idCardNo
|
||||
return e
|
||||
})
|
||||
res.json({ success: true, data: employeesWithIdCard })
|
||||
} catch (err) {
|
||||
next(err)
|
||||
}
|
||||
|
||||
@@ -48,6 +48,7 @@ export interface EmployeeOption {
|
||||
phone?: string
|
||||
gender?: string
|
||||
status?: string
|
||||
idCardNo?: string
|
||||
}
|
||||
|
||||
export const employeeApi = {
|
||||
|
||||
@@ -557,7 +557,7 @@ export function PredictTab() {
|
||||
<Label className="whitespace-nowrap">员工</Label>
|
||||
<Select value={employeeId} onChange={(e) => setEmployeeId(e.target.value)}>
|
||||
<option value="">选择员工</option>
|
||||
{(employees || []).map((e: any) => <option key={e.id} value={e.id}>{e.name}</option>)}
|
||||
{(employees || []).map((e: any) => <option key={e.id} value={e.id}>{e.name}({e.idCardNo || e.department})</option>)}
|
||||
</Select>
|
||||
</div>
|
||||
)}
|
||||
@@ -621,7 +621,7 @@ export function PredictTab() {
|
||||
<Label>涉及员工</Label>
|
||||
<Select value={structEmployeeName} onChange={(e) => handleStructEmployeeChange(e.target.value)}>
|
||||
<option value="">选择员工(可选)</option>
|
||||
{(employees || []).map((e: any) => <option key={e.id} value={e.name}>{e.name}({e.department})</option>)}
|
||||
{(employees || []).map((e: any) => <option key={e.id} value={e.name}>{e.name}({e.idCardNo || e.department})</option>)}
|
||||
</Select>
|
||||
{employeeSpecialStatus && (
|
||||
<div className="mt-1 flex items-center gap-1 text-xs text-amber-700 bg-amber-50 border border-amber-200 px-2 py-1 rounded">
|
||||
|
||||
Reference in New Issue
Block a user