From 75a6149e2db4fd0ead705c431ff04ea6d9ffc3d2 Mon Sep 17 00:00:00 2001 From: Fringg Date: Mon, 2 Mar 2026 01:09:55 +0300 Subject: [PATCH] feat: display per-campaign stats on partner detail page - Add registrations_count, referrals_count, earnings_kopeks to campaign type - Show per-campaign stats grid (registrations, referrals, earnings) under each campaign card - Use conditional coloring for zero earnings (neutral instead of green) --- src/api/partners.ts | 10 +++- src/pages/AdminPartnerDetail.tsx | 98 +++++++++++++++++++++----------- 2 files changed, 73 insertions(+), 35 deletions(-) diff --git a/src/api/partners.ts b/src/api/partners.ts index 9cfa82b..d91634b 100644 --- a/src/api/partners.ts +++ b/src/api/partners.ts @@ -105,7 +105,15 @@ export interface AdminPartnerDetailResponse { earnings_week: number; earnings_month: number; conversion_to_paid: number; - campaigns: { id: number; name: string; start_parameter: string; is_active: boolean }[]; + campaigns: { + id: number; + name: string; + start_parameter: string; + is_active: boolean; + registrations_count: number; + referrals_count: number; + earnings_kopeks: number; + }[]; created_at: string; } diff --git a/src/pages/AdminPartnerDetail.tsx b/src/pages/AdminPartnerDetail.tsx index 9d52949..cfa4292 100644 --- a/src/pages/AdminPartnerDetail.tsx +++ b/src/pages/AdminPartnerDetail.tsx @@ -232,46 +232,76 @@ export default function AdminPartnerDetail() { {partner.campaigns.map((campaign) => (
-
-
{campaign.name}
-
- ?start={campaign.start_parameter} +
+
+
{campaign.name}
+
+ ?start={campaign.start_parameter} +
+
+
+ {campaign.is_active ? ( + + {t('admin.partnerDetail.campaigns.active')} + + ) : ( + + {t('admin.partnerDetail.campaigns.inactive')} + + )} +
-
- {campaign.is_active ? ( - - {t('admin.partnerDetail.campaigns.active')} - - ) : ( - - {t('admin.partnerDetail.campaigns.inactive')} - - )} - + {formatWithCurrency(campaign.earnings_kopeks / 100)} +
+
+ {t('admin.partnerDetail.campaigns.earnings', 'Доход')} +
+
))}