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() {