diff --git a/backend/src/routes/platform.routes.ts b/backend/src/routes/platform.routes.ts index 31ef391..310aa28 100644 --- a/backend/src/routes/platform.routes.ts +++ b/backend/src/routes/platform.routes.ts @@ -20,11 +20,20 @@ router.use(authMiddleware, platformAdminMiddleware) */ router.get('/dashboard', async (_req: AuthRequest, res, next) => { try { - const [orgs, users, employees, contracts, payslips] = await Promise.all([ + const now = new Date() + const [orgs, users, employees, contracts, activeContracts, payslips] = await Promise.all([ prisma.organization.count(), prisma.user.count({ where: { role: { not: 'SUPER_ADMIN' } } }), prisma.employee.count(), prisma.laborContract.count(), + prisma.laborContract.count({ + where: { + OR: [ + { endDate: null }, + { endDate: { gte: now } }, + ], + }, + }), prisma.payslip.count(), ]) @@ -52,6 +61,7 @@ router.get('/dashboard', async (_req: AuthRequest, res, next) => { totalUsers: users, totalEmployees: employees, totalContracts: contracts, + activeContracts, totalPayslips: payslips, orgsByPlan: orgsByPlan.map((g: any) => ({ plan: g.plan, count: g._count })), recentOrgs: recentOrgs.map((o: any) => ({ diff --git a/frontend/src/pages/platform/PlatformDashboard.tsx b/frontend/src/pages/platform/PlatformDashboard.tsx index 6d42456..952a007 100644 --- a/frontend/src/pages/platform/PlatformDashboard.tsx +++ b/frontend/src/pages/platform/PlatformDashboard.tsx @@ -11,6 +11,7 @@ interface DashboardData { totalUsers: number totalEmployees: number totalContracts: number + activeContracts: number totalPayslips: number orgsByPlan: { plan: string; count: number }[] recentOrgs: { @@ -38,7 +39,7 @@ export default function PlatformDashboard() { { label: '企业总数', value: data.totalOrgs, icon: Building2, color: 'text-primary' }, { label: '用户总数', value: data.totalUsers, icon: Users, color: 'text-blue-600' }, { label: '员工总数', value: data.totalEmployees, icon: Users, color: 'text-emerald-600' }, - { label: '合同总数', value: data.totalContracts, icon: FileText, color: 'text-purple-600' }, + { label: '有效合同', value: data.activeContracts, sub: `共 ${data.totalContracts} 份`, icon: FileText, color: 'text-purple-600' }, { label: '工资条总数', value: data.totalPayslips, icon: Calculator, color: 'text-rose-600' }, ] @@ -60,6 +61,7 @@ export default function PlatformDashboard() {
{s.value.toLocaleString()}
+ {(s as any).sub &&
{(s as any).sub}
} ) })}