diff --git a/app/pages/bonus-system/index.vue b/app/pages/bonus-system/index.vue index b7240a7..c24d872 100644 --- a/app/pages/bonus-system/index.vue +++ b/app/pages/bonus-system/index.vue @@ -2,8 +2,10 @@ import { useQuery } from '@vue/apollo-composable'; import { ManagerBonusBalancesDocument, + ManagerReferralLinksDocument, ManagerWithdrawalRequestsDocument, type ManagerBonusBalancesQuery, + type ManagerReferralLinksQuery, type ManagerWithdrawalRequestsQuery, } from '~/composables/graphql/generated'; @@ -12,12 +14,14 @@ definePageMeta({ }); type BalanceItem = ManagerBonusBalancesQuery['managerBonusBalances'][number]; +type ReferralLinkItem = ManagerReferralLinksQuery['managerReferralLinks'][number]; type WithdrawalItem = ManagerWithdrawalRequestsQuery['managerWithdrawalRequests'][number]; const route = useRoute(); const router = useRouter(); const search = ref(''); const balancesQuery = useQuery(ManagerBonusBalancesDocument); +const referralLinksQuery = useQuery(ManagerReferralLinksDocument); const withdrawalsQuery = useQuery(ManagerWithdrawalRequestsDocument, { status: 'PENDING', }); @@ -36,13 +40,28 @@ function setTab(tab: 'balances' | 'withdrawals') { } const balances = computed(() => balancesQuery.result.value?.managerBonusBalances ?? []); +const referralLinks = computed(() => referralLinksQuery.result.value?.managerReferralLinks ?? []); const withdrawals = computed(() => withdrawalsQuery.result.value?.managerWithdrawalRequests ?? []); +const referralLinksByReferrer = computed(() => { + const grouped = new Map(); + + for (const link of referralLinks.value) { + const existing = grouped.get(link.referrerId) ?? []; + existing.push(link); + grouped.set(link.referrerId, existing); + } + + return grouped; +}); + const filteredBalances = computed(() => { const query = search.value.trim().toLowerCase(); return balances.value.filter((item) => { - if (item.balance <= 0) { + const links = referralLinksByReferrer.value.get(item.userId); + + if (!links?.length) { return false; } @@ -55,6 +74,12 @@ const filteredBalances = computed(() => { item.email, item.companyName || '', String(item.balance), + ...links.flatMap((link) => [ + link.refereeName, + link.refereeEmail, + link.refereeCompanyName || '', + String(link.bonusPercent), + ]), ] .join(' ') .toLowerCase() @@ -90,7 +115,7 @@ const filteredWithdrawals = computed(() => {