From 338af5eee931412a4e59e82842b8e525417ac2cc Mon Sep 17 00:00:00 2001 From: selfrelease Date: Tue, 4 Aug 2026 18:56:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=8A=B1=E5=90=8D=E5=86=8C=E8=BA=AB?= =?UTF-8?q?=E4=BB=BD=E8=AF=81=E6=90=9C=E7=B4=A2bug=E4=BF=AE=E5=A4=8D=20+?= =?UTF-8?q?=20Header=E4=BC=81=E4=B8=9A=E5=90=8D=E7=A7=B0=20+=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=96=87=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复Roster.tsx前端二次过滤清空身份证搜索结果的问题 - TopNav增加企业名称显示(复用settingsApi.org()) - 新增docs/20260804-优化.md(23项反馈全面审查) - 更新20260803-优化.md状态(问题5已完成) --- 20260803-优化.md | 33 +- docs/20260804-优化.md | 375 ++++++++++++++++++++++ frontend/src/components/layout/TopNav.tsx | 13 +- frontend/src/pages/Roster.tsx | 2 +- 4 files changed, 418 insertions(+), 5 deletions(-) create mode 100644 docs/20260804-优化.md diff --git a/20260803-优化.md b/20260803-优化.md index f6e1b17..c9c77d7 100644 --- a/20260803-优化.md +++ b/20260803-优化.md @@ -1,4 +1,4 @@ -# 20260803 优化清单 +# 20260803 优化清单(更新于 20260804) ## 一、验收测试清单(问题 1-3) @@ -96,7 +96,7 @@ 2. 增加折叠/展开功能 3. 调整信息密度,次要信息收起 - **优先级**:P2 中 -- **状态**:✅ 已完成 — 已拆分为 5 个 Tab(概览/风险提醒/月度任务/人力成本/人员分析),支持 Tab 级别和区域级别的显示设置 +- **状态**:✅ 已完成(20260803)— 已拆分为 5 个 Tab(概览/风险提醒/月度任务/人力成本/人员分析),支持 Tab 级别和区域级别的显示设置 ## 七、离职操作(问题 12-13) @@ -128,7 +128,34 @@ | 优先级 | 问题 | 原因 | 状态 | |--------|------|------|------| -| P0 紧急 | 5、13 | 功能性 bug,影响业务正确性 | 待修复 | +| P0 紧急 | 5、13 | 功能性 bug,影响业务正确性 | 问题5已完成,问题13待修复 | | P1 高 | 1、2、3、4、6、11、12 | 用户体验差或操作不完整 | 待修复 | | P2 中 | 7、9、10、14 | 功能增强和优化 | 问题10已完成 | | P3 规划 | 8 | 新功能开发,需单独规划 | 待规划 | + +--- + +## 20260804 新增修复记录 + +### 已完成项 + +| 编号 | 修复内容 | 涉及文件 | +|------|----------|----------| +| 花名册搜索 | 身份证号搜索结果被前端二次过滤清空,增加 `idCardMasked` 匹配 | `frontend/src/pages/Roster.tsx:267` | +| Header 企业名称 | TopNav 增加企业名称显示,复用 `settingsApi.org()` 查询 | `frontend/src/components/layout/TopNav.tsx` | +| 问题5 | WorkProcess 表单字段英文 key 已增加中文标签映射 | `frontend/src/pages/WorkProcess.tsx` | + +### 新增优化清单(详见 docs/20260804-优化.md) + +基于用户反馈的 23 项问题全面审查,已生成独立文档:`docs/20260804-优化.md` + +**P0 紧急(待修复)**: +- 发薪按钮无效(`window.location.hash` 跳转不兼容 BrowserRouter) +- 用工办理需姓名检索替代 UUID 输入 +- 填写界面增加直接提交按钮 +- 风险中心跳转后不自动筛选 + +**已确认无需修改**: +- 身份证号搜索(后端已实现,前端 bug 已修复) +- 多附件上传(已支持) +- 休假审批流程(已有完整模块) diff --git a/docs/20260804-优化.md b/docs/20260804-优化.md new file mode 100644 index 0000000..d53e8e7 --- /dev/null +++ b/docs/20260804-优化.md @@ -0,0 +1,375 @@ +# TurboHR 系统优化清单(20260804) + +> 基于用户反馈的 23 项问题,逐条对照系统代码进行检查,记录现状、问题及优化方案。 + +--- + +## 一、花名册模块 + +### 1.1 搜索功能(反馈 #7:无身份证号搜索) + +**现状**:后端 `roster.routes.ts:58` 已支持身份证后N位搜索(`isIdCardSearch` 逻辑:输入 ≥2 位数字时按身份证尾号匹配),前端搜索框 placeholder 已提示"搜索姓名、部门或身份证后4位"。 + +**结论**:✅ 已实现,无需修改。 + +### 1.2 身份证号显示(反馈 #5:身份证号隐藏,不便于复制) + +**现状**:`Roster.tsx:466` 显示 `e.idCardMasked`(脱敏格式 `110****1234`),完整身份证号需点进员工详情才能查看。 + +**问题**:用户需要复制完整身份证号到其他模块(如开具离职证明),操作不便。 + +**优化方案**: +- 花名册列表中身份证号列增加「点击复制」功能:点击脱敏号码自动复制完整身份证号到剪贴板,toast 提示"已复制" +- 员工详情页 BasicInfo 中身份证号也增加复制按钮 + +**涉及文件**:`frontend/src/pages/Roster.tsx:466`、`frontend/src/pages/roster/BasicInfo.tsx` + +### 1.3 显示字段不足(反馈 #6、#20:显示信息太少,缺少合同起止时间、社保状态) + +**现状**:`Roster.tsx:431-559` 表格列包含姓名、身份证号(脱敏)、部门、状态、月薪、合同类型、合同状态,但合同到期日期列(`th` 和 `td`)使用了 `hidden` CSS 类未显示。入职日期、离职日期同样隐藏。社保缴纳状态未展示。 + +**问题**:用户需点进员工详情才能看到合同起止时间和社保信息。 + +**优化方案**: +- 取消隐藏「合同到期」列,直接在花名册表格中展示合同到期日期(已有渲染逻辑,只需移除 `hidden` 类) +- 新增「社保状态」列:显示"已缴纳/未缴纳/待办理"(需后端 roster API 返回社保缴纳状态摘要) +- 取消隐藏「入职日期」列 + +**涉及文件**:`frontend/src/pages/Roster.tsx:441-446`(表头)、`540-558`(合同到期单元格)、`486`(入职日期) + +### 1.4 附件上传(反馈 #15:多条上传附件) + +**现状**:`AttachmentInfo.tsx` 和 `BasicInfo.tsx` 已支持多附件上传,类型包括身份证、银行卡、学历证书、其他,支持 PDF/JPG/PNG 等格式,最大 10MB。 + +**问题**:附件类型选项较少,缺少"职业资格证书"、"毕业证"等常见类型。 + +**优化方案**: +- 扩展附件类型:增加 `CERTIFICATE`(职业资格证书)、`CONTRACT`(合同扫描件)、`PHOTO`(员工照片)等选项 + +**涉及文件**:`frontend/src/pages/roster/AttachmentInfo.tsx:13,52`、`frontend/src/pages/roster/BasicInfo.tsx:16,49` + +### 1.5 发薪按钮无效(反馈 #11:发薪功能点击无反应) + +**现状**:`Roster.tsx:590-593` 发薪按钮使用 `window.location.hash = '#/money'` 进行跳转,这种 hash 路由方式可能与 React Router 的 BrowserRouter 不兼容,导致跳转失败。 + +**优化方案**: +- 改用 `useNavigate` hook 进行路由跳转:`navigate('/money')` +- 或直接使用 `` 组件 + +**涉及文件**:`frontend/src/pages/Roster.tsx:592` + +--- + +## 二、用工办理模块 + +### 2.1 姓名检索替代 ID 检索(反馈 #1:用员工ID和合同ID检索不便) + +**现状**:`WorkProcess.tsx:53-141` 的 `FORM_FIELDS` 中,ONBOARD/CONFIRM/CHANGE/RENEW/SUSPEND/TERMINATE/RESCIND 等流程类型使用 `employeeId`(文本输入)和 `contractId`(文本输入)作为字段,用户需要手动输入 UUID。 + +**问题**:操作人员不知道员工ID和合同ID,使用不便。 + +**优化方案**: +- 将 `employeeId` 字段类型改为 `employee-select`(自定义组件):输入姓名时模糊搜索员工列表,选择后自动填入 ID +- 将 `contractId` 字段类型改为 `contract-select`:根据选中员工自动列出其合同供选择 +- 利用已有的 `/api/v1/employees/list` 接口(返回 id/name/department)实现搜索下拉 + +**涉及文件**:`frontend/src/pages/WorkProcess.tsx:53-141`(FORM_FIELDS 配置)、新增 `EmployeeSelect` 组件 + +### 2.2 填写界面增加提交按钮(反馈 #12:只能存草稿后再提交) + +**现状**:`WorkProcess.tsx:400-404` 创建弹窗底部只有"存草稿"按钮,用户必须先存草稿,再在详情中点击"提交办理"。 + +**优化方案**: +- 在填写信息界面增加"直接提交"按钮,调用 `createMutation` 创建后立即调用 `submitMutation` 提交 +- 保持"存草稿"按钮供用户选择 + +**涉及文件**:`frontend/src/pages/WorkProcess.tsx:400-408` + +### 2.3 查看已生成文书(反馈 #12:已提交的证明类业务无法查看生成文书) + +**现状**:`WorkProcess.tsx:489-501` 详情弹窗中显示已生成文书列表(`data.documents`),但仅展示文件名,无下载/预览链接。`previewContent` 仅在 DRAFT 状态下可预览。 + +**问题**:已提交/已完成的业务无法查看和下载生成的文书。 + +**优化方案**: +- 在文书列表中每项增加"查看"和"下载"按钮 +- 调用后端 `workProcessApi.preview(id)` 获取文书内容展示 +- 增加文书下载功能(PDF/Word 格式) + +**涉及文件**:`frontend/src/pages/WorkProcess.tsx:488-501` + +### 2.4 收入证明后续处理指引(反馈 #2:提交后找不到后续需要处理的事情) + +**现状**:收入证明提交后在"办理记录"列表中显示,但用户不清楚下一步去哪里查看文书或跟进。 + +**优化方案**: +- 提交成功后 toast 提示中增加跳转链接:"已提交,点击查看办理详情" +- 在办理记录列表中,已完成的业务增加"查看文书"快捷按钮 +- 在首页工作台待办列表中自动汇总"待查看文书的办理项" + +**涉及文件**:`frontend/src/pages/WorkProcess.tsx:176-183`(createMutation onSuccess) + +### 2.5 整体逻辑与模块关联性(反馈 #3:不知道下一步做什么) + +**现状**:各模块相对独立,缺少流程引导。 + +**优化方案**: +- 在关键操作完成后增加"下一步"引导提示(如:入职登记完成 → 提示"前往签订劳动合同") +- 首页工作台待办列表已有跨模块汇总,可强化提示 +- 各模块顶部 `PageGuide` 中增加关联模块说明 + +**涉及文件**:各模块页面 + +--- + +## 三、离职管理模块 + +### 3.1 离职证明下载(反馈 #4:离职员工无法下载离职证明、交接清单) + +**现状**:`Termination.tsx` 解聘补偿模块有 5 步向导(选择员工→解聘方式→合规检查→费用结算→工作交接→确认提交),工作交接步骤有交接清单勾选项(`DEFAULT_HANDOVER_ITEMS`),但无文书生成和下载功能。`WorkProcess.tsx` 中有 `LEAVING_CERT` 流程类型,但与解聘补偿模块未打通。 + +**问题**:离职流程完成后,无法生成和下载《解除劳动合同证明书》和《工作交接清单》。 + +**优化方案**: +- 在 Termination.tsx 第 5 步(确认提交)完成后,自动跳转到 WorkProcess 的 `LEAVING_CERT` 流程,预填员工信息 +- 或在 Termination 详情页增加"生成离职证明"和"生成交接清单"按钮 +- 交接清单支持导出 PDF(已有 jsPDF 依赖) + +**涉及文件**:`frontend/src/pages/Termination.tsx:135-142`(交接项)、提交成功后的跳转逻辑 + +### 3.2 员工端辞职申请(反馈 #23:员工端提交辞职申请并附件辞职信照片) + +**现状**:员工门户 `portal/MyLeave.tsx` 有休假申请功能,但无辞职申请入口。辞职目前只能由 HR 在花名册中发起。 + +**优化方案**: +- 在员工门户增加"辞职申请"入口 +- 表单包含:辞职原因、预计离职日期、辞职信照片上传(多张) +- 提交后 HR 端花名册自动收到通知,创建离职草稿 +- HR 确认纸质辞职信后进入正式离职流程 + +**涉及文件**:新增 `frontend/src/pages/portal/MyResignation.tsx`,修改员工门户路由 + +--- + +## 四、风险中心模块 + +### 4.1 跳转后不自动筛选(反馈 #13:点击风险提示跳转后需手动搜索) + +**现状**:`RiskCenter.tsx:27` 风险类型配置中 `CONTRACT` 类型 link 为 `/roster`,无查询参数。点击后跳转到花名册首页,不携带任何筛选条件。`Roster.tsx:74-85` 支持从 URL 参数 `employee` 自动选中员工,但风险中心未使用此机制。 + +**问题**:用户点击风险提示后需手动搜索员工,体验不如首页工作台。 + +**优化方案**: +- 风险列表项的 Link 增加查询参数:`/roster?employee=员工名&contractStatus=expired` +- 或增加 `riskType` 参数,Roster 页面读取后自动设置对应筛选条件 +- 对标 Dashboard.tsx 中工作台的风险处理逻辑(直接选择人员处理) + +**涉及文件**:`frontend/src/pages/compliance/RiskCenter.tsx:26-33,183-206` + +### 4.2 与工作台对比(反馈 #13:风险中心不如工作台便捷) + +**现状**:`Dashboard.tsx` 工作台的风险待办列表可直接勾选员工并处理(批量续签/解聘),而 `RiskCenter.tsx` 只能查看和跳转。 + +**优化方案**: +- 风险中心列表项增加快捷操作按钮(如:合同到期→"续签"/"办理离职") +- 增加批量选择和处理功能,与工作台体验对齐 +- 风险中心作为独立模块应比工作台更强大,而非更弱 + +**涉及文件**:`frontend/src/pages/compliance/RiskCenter.tsx:177-206` + +--- + +## 五、日历模块 + +### 5.1 合同到期点击进入员工(反馈 #14:点击进入员工) + +**现状**:`Calendar.tsx:238-246` 日历事件仅显示标题,点击日期格子触发 `handleDayClick` 创建新事件,无点击事件跳转到对应员工的功能。 + +**优化方案**: +- 事件项增加点击事件:`onClick` 阻止冒泡,跳转到 `/roster?employee=员工名` +- 合同到期事件点击后跳转到花名册并自动筛选该员工 + +**涉及文件**:`frontend/src/pages/Calendar.tsx:238-246` + +### 5.2 按紧急程度分类(反馈 #14:7天紧急/15天预警/35天提醒) + +**现状**:`Calendar.tsx` 事件列表按日期排列,无紧急程度分类。`PRIORITY_DOT` 有 high/medium/low 颜色点但未按时间窗口分组。 + +**优化方案**: +- 事件列表增加分组:🔴 7天内紧急、🟡 15天预警、🔵 35天提醒、⚫ 已逾期 +- 日历格子中事件按优先级排序展示 + +**涉及文件**:`frontend/src/pages/Calendar.tsx:260-279`(事件列表区域) + +### 5.3 逾期天数统计(反馈 #14:新增逾期天数统计) + +**现状**:无逾期统计展示。 + +**优化方案**: +- 日历顶部增加统计卡片:本月到期 X 项、已逾期 Y 项、逾期总天数 Z 天 +- 逾期事件在列表中红色高亮并显示"逾期 N 天" + +**涉及文件**:`frontend/src/pages/Calendar.tsx:161-189`(顶部工具栏区域) + +--- + +## 六、社保模块 + +### 6.1 各项保险比例显示(反馈 #8:未显示各项保险比例) + +**现状**:`SocialInsurance.tsx:500-526` 社保配置 Tab 已显示各项比例(养老企业/个人、医疗企业/个人、失业企业/个人、工伤企业、生育企业)。但月度办理 Tab 中仅显示变更明细,未显示各项保险的具体比例和金额分解。 + +**问题**:用户在月度办理时看不到每项保险的缴费比例和金额明细。 + +**优化方案**: +- 月度办理结果中每条记录增加"明细展开"功能,显示养老/医疗/失业/工伤/生育各项的企业和个人缴费金额及比例 +- 利用已有的 `socialInsuranceApi.calculate(base, city)` 接口获取明细 + +**涉及文件**:`frontend/src/pages/SocialInsurance.tsx` 月度办理 Tab 区域、`frontend/src/pages/social-insurance/MonthlyRows.tsx` + +--- + +## 七、休假审批流程 + +### 7.1 审批流程可发现性(反馈 #9:没有找到休假的审批流程) + +**现状**:系统已有完整的休假审批流程: +- HR 端:`LeaveApproval.tsx` 休假审批页面,支持批准/驳回/撤回 +- 员工端:`portal/MyLeave.tsx` 员工提交休假申请 + +**问题**:用户找不到休假审批入口,可能是因为导航菜单中未明显展示。 + +**优化方案**: +- 确认侧边栏菜单中是否包含"休假审批"入口 +- 在考勤管理页面的"休假记录"Tab 中增加"前往审批"链接 +- 在首页工作台待办中自动汇总"待审批休假申请" + +**涉及文件**:导航配置、`frontend/src/pages/Attendance.tsx`(休假记录 Tab) + +--- + +## 八、考勤管理 + +### 8.1 在职人员直接编辑(反馈 #10:无法直接编辑在职人员考勤) + +**现状**:`Attendance.tsx` ConfirmTab 有批量导入和批量确认功能,但无单条记录编辑功能。`singleConfirmMutation` 仅支持确认操作。 + +**优化方案**: +- 考勤列表增加"编辑"按钮,支持修改单条考勤记录(出勤天数、加班时长、请假天数等) +- 保留批量导入功能,同时支持导入后逐条修改 + +**涉及文件**:`frontend/src/pages/Attendance.tsx` ConfirmTab + +### 8.2 按月按人导出考勤(反馈 #22) + +**现状**:无考勤导出功能。 + +**优化方案**: +- 考勤确认 Tab 增加"导出"按钮,支持按月份导出全部员工考勤表(Excel) +- 支持按单个员工导出月度考勤明细 +- 利用已有的 `exceljs` 依赖生成 Excel 文件 + +**涉及文件**:`frontend/src/pages/Attendance.tsx` ConfirmTab、后端增加导出接口 + +--- + +## 九、工资条模块 + +### 9.1 状态标记与签收跟踪(反馈 #18:增加已发送/未查看/已查看状态) + +**现状**:`PayslipTab.tsx:64-65,142-149` 仅有"已确认/未确认"两种状态,无发送和查看状态跟踪。 + +**优化方案**: +- 工资条状态扩展为:`未发送` → `已发送` → `已查看` → `已确认` +- 列表增加状态列,用不同颜色标签区分 +- 后端 Payslip 模型增加 `sentAt`、`viewedAt` 字段 +- 员工端查看工资条时自动更新 `viewedAt` + +**涉及文件**:`frontend/src/pages/money/PayslipTab.tsx`、后端 payslip 模型和路由 + +### 9.2 导出工资流水和工资表(反馈 #21) + +**现状**:`PayslipTab.tsx` 无导出功能。 + +**优化方案**: +- 增加"导出工资表"按钮:按月份导出全部工资条为 Excel +- 增加"导出工资流水"按钮:按员工导出多月工资明细(用于银行流水证明) +- 利用 `exceljs` 生成 Excel 文件 + +**涉及文件**:`frontend/src/pages/money/PayslipTab.tsx`、后端增加导出接口 + +--- + +## 十、其他建议 + +### 10.1 通讯录(反馈 #16) + +**现状**:系统无通讯录页面。 + +**优化方案**: +- 新增通讯录页面,按部门分组展示所有在职员工姓名、职务、手机号、地址 +- 支持搜索和按部门筛选 +- 支持导出通讯录 Excel + +**涉及文件**:新增 `frontend/src/pages/Directory.tsx` + +### 10.2 批量开具证明(反馈 #17) + +**现状**:`WorkProcess.tsx` 仅支持单个办理,无批量开具证明功能。 + +**优化方案**: +- 在用工办理页面增加"批量开具证明"入口 +- 选择多人和证明类型(收入证明/离职证明等) +- 批量生成文书,支持批量下载(ZIP 打包) + +**涉及文件**:`frontend/src/pages/WorkProcess.tsx` + +### 10.3 人效成本分部门(反馈 #19) + +**现状**:`Dashboard.tsx` 有"人效成本"Tab(`activeTab === 'cost'`),但具体实现需进一步检查是否支持分部门展示。 + +**优化方案**: +- 人效成本 Tab 增加部门维度筛选和对比 +- 按部门展示人数、总薪资成本、人均成本、同比变化 + +**涉及文件**:`frontend/src/pages/Dashboard.tsx` cost Tab + +--- + +## 优先级排序 + +| 优先级 | 编号 | 问题 | 影响范围 | +|--------|------|------|----------| +| P0 | 1.5 | 发薪按钮无效 | 功能不可用 | +| P0 | 2.1 | 用工办理需姓名检索 | 严重影响操作效率 | +| P0 | 2.2 | 填写界面增加提交按钮 | 操作流程繁琐 | +| P0 | 4.1 | 风险中心跳转不筛选 | 用户体验差 | +| P1 | 1.2 | 身份证号复制 | 操作不便 | +| P1 | 1.3 | 花名册显示字段不足 | 信息不充分 | +| P1 | 2.3 | 查看已生成文书 | 功能缺失 | +| P1 | 3.1 | 离职证明下载 | 功能缺失 | +| P1 | 9.1 | 工资条状态标记 | 跟踪不足 | +| P1 | 9.2 | 导出工资表 | 功能缺失 | +| P2 | 1.4 | 附件类型扩展 | 体验优化 | +| P2 | 2.4 | 收入证明后续指引 | 引导不足 | +| P2 | 2.5 | 模块关联性引导 | 体验优化 | +| P2 | 3.2 | 员工端辞职申请 | 新功能 | +| P2 | 4.2 | 风险中心快捷操作 | 体验优化 | +| P2 | 5.1-5.3 | 日历优化 | 体验优化 | +| P2 | 6.1 | 社保比例明细 | 信息不充分 | +| P2 | 7.1 | 休假审批可发现性 | 导航问题 | +| P2 | 8.1 | 考勤直接编辑 | 操作不便 | +| P2 | 8.2 | 考勤导出 | 功能缺失 | +| P3 | 10.1 | 通讯录 | 新功能 | +| P3 | 10.2 | 批量开具证明 | 新功能 | +| P3 | 10.3 | 人效成本分部门 | 体验优化 | + +--- + +## 已确认无需修改 + +| 编号 | 问题 | 原因 | +|------|------|------| +| #7 | 花名册无身份证号搜索 | 后端已实现 `isIdCardSearch` 逻辑,前端 placeholder 已提示 | +| #15 | 花名册多条上传附件 | `AttachmentInfo.tsx` 已支持多附件上传 | +| #9 | 休假审批流程 | 系统已有 `LeaveApproval.tsx` 和 `MyLeave.tsx`,需确认导航入口 | diff --git a/frontend/src/components/layout/TopNav.tsx b/frontend/src/components/layout/TopNav.tsx index 63deeb9..b643047 100644 --- a/frontend/src/components/layout/TopNav.tsx +++ b/frontend/src/components/layout/TopNav.tsx @@ -3,7 +3,7 @@ import { ChevronDown, Settings as SettingsIcon, Bell, Menu, HelpCircle, Smartpho import { useState } from 'react' import { useQuery } from '@tanstack/react-query' import { useAuthStore } from '../../store/authStore' -import { dashboardApi } from '../../lib/api-services' +import { dashboardApi, settingsApi } from '../../lib/api-services' import Breadcrumb from './Breadcrumb' import HelpModal from '../HelpModal' import PortalQRModal from '../PortalQRModal' @@ -22,6 +22,11 @@ export default function TopNav({ onMenuClick }: { onMenuClick?: () => void }) { queryFn: () => dashboardApi.data(), refetchInterval: 60000, }) + const { data: orgData } = useQuery({ + queryKey: ['org-settings'], + queryFn: () => settingsApi.org(), + staleTime: 300000, + }) const riskCount = dashboardData?.riskSummary?.pending || 0 return ( @@ -36,6 +41,12 @@ export default function TopNav({ onMenuClick }: { onMenuClick?: () => void }) { > + {orgData?.name && ( + + {orgData.name} + + )} + {orgData?.name && |} diff --git a/frontend/src/pages/Roster.tsx b/frontend/src/pages/Roster.tsx index bf7bcd1..90a843f 100644 --- a/frontend/src/pages/Roster.tsx +++ b/frontend/src/pages/Roster.tsx @@ -265,7 +265,7 @@ export default function Roster() { }) const filtered = employees?.filter((e: any) => - !search || e.name.includes(search) || e.department.includes(search) + !search || e.name.includes(search) || e.department.includes(search) || (e.idCardMasked && e.idCardMasked.includes(search)) ) || [] if (selectedId) {