From cb9209dbdd95d90d19768e000193112bec818f3a Mon Sep 17 00:00:00 2001 From: selfrelease Date: Sat, 1 Aug 2026 14:23:04 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=A3=8E=E9=99=A9=E4=B8=AD=E5=BF=83?= =?UTF-8?q?=E4=B8=8E=E5=B7=A5=E4=BD=9C=E5=8F=B0=E6=95=B0=E9=87=8F=E4=B8=8D?= =?UTF-8?q?=E4=B8=80=E8=87=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 风险中心改用 getDashboardData 的 todos 数据源(已按员工+类别去重),确保与工作台待办数量完全一致 --- backend/src/routes/dashboard.routes.ts | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/backend/src/routes/dashboard.routes.ts b/backend/src/routes/dashboard.routes.ts index f6d9cd6..8b601e2 100644 --- a/backend/src/routes/dashboard.routes.ts +++ b/backend/src/routes/dashboard.routes.ts @@ -489,14 +489,23 @@ router.get('/performance-stats', authMiddleware, async (req: AuthRequest, res: R } }) -// 风险中心 — 获取所有待处理风险项 +// 风险中心 — 获取所有待处理风险项(与工作台同口径,使用去重后的 todos) router.get('/risks', authMiddleware, async (req: AuthRequest, res: Response, next: NextFunction) => { try { - const risks = await prisma.riskItem.findMany({ - where: { orgId: req.user!.orgId, status: 'PENDING' }, - include: { employee: { select: { name: true, department: true } } }, - orderBy: [{ level: 'desc' }, { createdAt: 'desc' }], - }) + const data = await getDashboardData(req.user!.orgId) + // todos 已按员工+类别去重,与工作台待办数量一致 + const risks = (data.todos || []).map((t: any) => ({ + id: t.id, + type: t.type, + level: t.level.toUpperCase(), + status: 'PENDING', + title: t.title, + description: t.description || '', + actionUrl: t.actionUrl || '', + estimatedLoss: t.estimatedLoss || 0, + deadline: t.deadline || null, + employee: t.employeeName ? { name: t.employeeName, department: t.employeeDepartment || '' } : null, + })) res.json({ success: true, data: risks }) } catch (err) { next(err)