Files
manager-frontend/app/pages/referrals.vue
2026-03-30 21:41:28 +07:00

51 lines
2.3 KiB
Vue

<script setup lang="ts">
import { useMutation } from '@vue/apollo-composable';
import { AddBonusTransactionDocument, CreateReferralDocument } from '~/composables/graphql/generated';
const refereeUserId = ref('');
const referralCreated = ref('');
const bonusUserId = ref('');
const bonusAmount = ref(100);
const bonusReason = ref('Реферальный бонус');
const bonusResult = ref('');
const createReferral = useMutation(CreateReferralDocument);
const addBonus = useMutation(AddBonusTransactionDocument);
async function submitReferral() {
const result = await createReferral.mutate({ input: { refereeUserId: refereeUserId.value } });
referralCreated.value = result?.data?.createReferral.id ?? '';
}
async function submitBonus() {
const result = await addBonus.mutate({ input: { userId: bonusUserId.value, amount: Number(bonusAmount.value), reason: bonusReason.value } });
bonusResult.value = result?.data?.addBonusTransaction.id ?? '';
}
</script>
<template>
<section class="space-y-6 max-w-2xl">
<h1 class="text-2xl font-bold">Реферальная программа</h1>
<div class="card bg-base-100 border border-base-300">
<div class="card-body space-y-3">
<h2 class="card-title">Создать реферальную связь</h2>
<input v-model="refereeUserId" class="input input-bordered" placeholder="ID приглашенного пользователя" />
<button class="btn btn-primary" @click="submitReferral">Создать</button>
<p v-if="referralCreated" class="text-sm">Создано: {{ referralCreated }}</p>
</div>
</div>
<div class="card bg-base-100 border border-base-300">
<div class="card-body space-y-3">
<h2 class="card-title">Начислить бонус</h2>
<input v-model="bonusUserId" class="input input-bordered" placeholder="ID пользователя" />
<input v-model="bonusAmount" type="number" class="input input-bordered" placeholder="Сумма" />
<input v-model="bonusReason" class="input input-bordered" placeholder="Причина" />
<button class="btn btn-secondary" @click="submitBonus">Начислить</button>
<p v-if="bonusResult" class="text-sm">Транзакция: {{ bonusResult }}</p>
</div>
</div>
</section>
</template>