Последняя версия с сервера прошлого разработчика

This commit is contained in:
2025-07-10 04:35:51 +00:00
commit c731570032
1174 changed files with 134314 additions and 0 deletions

View File

@@ -0,0 +1,198 @@
<template>
<meta-head title="Выплаты"></meta-head>
<div class="xl:container xl:mx-auto px-2 md:px-3">
<div class="mt-16 shadow-classic rounded-md bg-indigo-200">
<div class="flex flex-col md:grid grid-cols-6 lg:grid-cols-5">
<settings-menu />
<div class="col-span-4">
<div class="border-b border-indigo-300">
<div v-if="isVerified" class="py-5 px-4 2xl:px-28">
<div class="flex">
<input v-model="amount" type="number"
placeholder="Введите сумму"
class="w-full focus:ring-4 focus:ring-offset-1 focus:ring-orange focus:ring-opacity-20 focus:ring-offset-orange focus:border-transparent text-gray border border-indigo-300 bg-indigo-200 rounded-md placeholder-gray-light"
/>
<button class="ml-5 transition shadow-none hover:shadow-classic2 inline-flex items-center px-8 py-3 justify-center text-base rounded-md text-white bg-pink focus:outline-none" @click="pay">
Вывести
</button>
</div>
</div>
<div v-else class="py-5 px-4 2xl:px-28">
<div class="text-white text-lg">
Заполните номер телефона в <inertia-link :href="route('setting.index')" class="underline">
профиле
</inertia-link> и пройдите <inertia-link :href="route('setting.verification')" class="underline">
верификацию
</inertia-link>
</div>
</div>
<!-- <div class="py-5 px-4 2xl:px-28">
<div class="flex">
<input v-model="bank_info.number" type="number"
placeholder="Введите номер карты"
class="w-full focus:ring-4 focus:ring-offset-1 focus:ring-orange focus:ring-opacity-20 focus:ring-offset-orange focus:border-transparent text-gray border border-indigo-300 bg-indigo-200 rounded-md placeholder-gray-light" label="Фамилия"
/>
<button class="ml-5 transition shadow-none hover:shadow-classic2 inline-flex items-center px-8 py-3 justify-center text-base rounded-md text-white bg-pink focus:outline-none" @click="updateRequisites">
{{ bank_info?.id ? 'Обновить' : 'Создать' }}
</button>
</div>
<div class="text-red text-sm">
Банковские реквизиты
</div>
</div> -->
<div class="flex justify-between px-4 2xl:px-28 my-4 lg:my-8">
<div class="flex flex-col text-white">
<span class="text-lg">Баланс:</span>
<span class="text-3xl">{{ $page.props.balance }}</span>
</div>
</div>
</div>
<div v-if="withdrawalsLists.length" class="my-4 lg:my-8">
<div class="py-4 px-4 2xl:px-28 md:text-lg text-white">
История операций:
</div>
<div class="divide-y divide-indigo-300 ">
<InfinityScroll :node-element="lastNodeLement" :next-cursor="nextCursor"
@fromPagination="putFromPagination"
>
<div v-for="withdrawal in withdrawalsLists" :key="withdrawal.id"
:ref="el => { if (el && withdrawal.id === lastElementID) lastNodeLement = el }"
class="py-4 px-4 2xl:px-28 lg:items-center flex flex-col lg:grid gap-2 lg:gap-5 grid-cols-12"
>
<div class="col-span-4 flex items-center">
<div class="flex-shrink-0 mr-3 lg:mr-8">
<svg class="transform w-8 h-8 rotate-90" :class="{
'text-gray-light': withdrawal.status === 'pending',
'text-green': withdrawal.status === 'success',
'text-red': withdrawal.status === 'cancel',
}"
>
<use xlink:href="#arrow-up-circle"></use>
</svg>
</div>
<div class="flex flex-col">
<p class="truncate text-base lg:text-lg font-semibold text-gray">
{{ withdrawal.datePart }}
</p>
<p class="truncate lg:mt-1 text-base text-gray-light">
{{ withdrawal.timePart }}
</p>
</div>
</div>
<div class="col-span-2 text-left lg:text-center text-white xl:text-xl font-semibold">
{{ withdrawal.amount }}
</div>
<div class="col-span-6 text-left lg:text-right text-gray-light xl:text-lg flex flex-col">
<span v-html="withdrawal.history_payment_details"></span>
<span class="mt-2 text-orange">{{ withdrawal.meta }}</span>
<span v-show="withdrawal.description" class="mt-2">{{ withdrawal.description }}</span>
</div>
</div>
</InfinityScroll>
</div>
</div>
<div v-else class="py-4 px-4 2xl:px-28 md:text-lg text-gray-light">
Нет данных
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import { Inertia } from '@inertiajs/inertia'
import { ref } from 'vue'
import Layout from '@/Shared/Layout.vue'
import SettingsMenu from '@/Shared/LayoutParts/SettingsMenu.vue'
import MetaHead from '@/Shared/MetaHead.vue'
import InfinityScroll from '@/Shared/Misc/InfinityScroll.vue'
export default {
components: {
MetaHead,
SettingsMenu,
InfinityScroll,
},
layout: Layout,
props: {
nextCursor: {
type: String,
default: ''
},
isVerified: {
type: Boolean,
default: false
},
withdrawals: {
type: Array,
default: () => []
},
// requisites: {
// type: Object,
// default: () => {}
// }
},
setup() {
const containerRef = ref(null)
return {
lastNodeLement: containerRef,
}
},
data() {
return {
withdrawalsLists: [],
bank_info: {},
amount: null,
}
},
computed: {
lastElementID() {
return this.withdrawalsLists[this.withdrawalsLists.length - 1]?.id
},
},
watch: {
withdrawals(withdrawals){
this.withdrawalsLists = withdrawals
}
},
mounted() {
this.withdrawalsLists = this.withdrawals
// this.bank_info = this.requisites
},
methods: {
// updateRequisites() {
// if(!this.bank_info?.number) return
// Inertia.post(route('requisites.bank'), {
// number: this.bank_info.number,
// })
// },
pay() {
if(!this.amount) return
const that = this
Inertia.post(route('payouts.start'), {
amount: that.amount,
}, {
onSuccess: () => {
that.amount = null
}
})
},
putFromPagination(lists) {
for (let list of lists) {
this.withdrawalsLists.push(list)
}
},
},
}
</script>