testing new payouts
This commit is contained in:
parent
2b6a9f7c5a
commit
03f8f1b2e1
@ -16,7 +16,7 @@ function defaultDataResponseProcessor(data) {
|
||||
export const API_PATH_MAIN = "https://hostapay.trade/api/v1/";
|
||||
export const API_PATH_TEST = "https://test.0x000f.ru/api/v1/";
|
||||
|
||||
let BasicURLValue = API_PATH_MAIN;
|
||||
let BasicURLValue = API_PATH_TEST;
|
||||
|
||||
async function makePost(url, data, options = undefined,
|
||||
responseProcessor = defaultResponseProcessor,
|
||||
|
@ -1,7 +1,7 @@
|
||||
<script>
|
||||
import { SvelteToast } from "@zerodevx/svelte-toast";
|
||||
import { onMount } from "svelte";
|
||||
import "../app.css";
|
||||
import "../../app.css";
|
||||
import Navbar from "$lib/ui-components/navbar.svelte";
|
||||
import { checkAuth, checkAuthSync } from "$lib/auth/Auth";
|
||||
import { redirect } from "$lib/tools/url/URLTools";
|
@ -1,6 +1,10 @@
|
||||
<script>
|
||||
import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth";
|
||||
import { API_PATH_TEST, API_PATH_MAIN, makePost } from "$lib/tools/requests/requests";
|
||||
import {
|
||||
API_PATH_TEST,
|
||||
API_PATH_MAIN,
|
||||
makePost,
|
||||
} from "$lib/tools/requests/requests";
|
||||
import { sayError, sayInfo } from "$lib/tools/toaster/Toaster";
|
||||
import Pagination from "$lib/ui-components/pagination.svelte";
|
||||
import { redirect } from "$lib/tools/url/URLTools";
|
||||
@ -11,7 +15,7 @@
|
||||
"5": "На проверке у трейдера",
|
||||
"6": "Принят",
|
||||
"7": "Отклонён",
|
||||
"8": "Чек на проверке"
|
||||
"8": "Чек на проверке",
|
||||
};
|
||||
|
||||
const disputesStatusMapColors = {
|
||||
@ -35,7 +39,7 @@
|
||||
"admin/getDisputes",
|
||||
{
|
||||
page: currentPageDisputes,
|
||||
filter: currentDisputesFilter
|
||||
filter: currentDisputesFilter,
|
||||
},
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a)
|
||||
);
|
||||
@ -76,7 +80,7 @@
|
||||
new_amount: "",
|
||||
creation_time: "",
|
||||
out_code: "",
|
||||
in_code: ""
|
||||
in_code: "",
|
||||
};
|
||||
let showFullInfo = false;
|
||||
|
||||
@ -85,9 +89,9 @@
|
||||
const result = await makePost(
|
||||
"admin/changeDispute",
|
||||
{
|
||||
action: selectedDispute.order_status === "8" ? 3:1,
|
||||
action: selectedDispute.order_status === "8" ? 3 : 1,
|
||||
order_id: selectedDispute.order_id,
|
||||
dispute_uuid: selectedDispute.dispute_uuid
|
||||
dispute_uuid: selectedDispute.dispute_uuid,
|
||||
},
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a)
|
||||
);
|
||||
@ -112,9 +116,9 @@
|
||||
const result = await makePost(
|
||||
"admin/changeDispute",
|
||||
{
|
||||
action: selectedDispute.order_status === "8" ? 4:2,
|
||||
action: selectedDispute.order_status === "8" ? 4 : 2,
|
||||
order_id: selectedDispute.order_id,
|
||||
dispute_uuid: selectedDispute.dispute_uuid
|
||||
dispute_uuid: selectedDispute.dispute_uuid,
|
||||
},
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a)
|
||||
);
|
||||
@ -159,11 +163,9 @@
|
||||
showDisputeReceiptImage = false;
|
||||
showLoadingReceiptShowing = true;
|
||||
try {
|
||||
|
||||
const response = await axios.get(
|
||||
API_PATH_MAIN + "loadFile?dispute=" +
|
||||
selectedDispute["order_id"],
|
||||
// "17731",
|
||||
API_PATH_TEST + "loadFile?dispute=" + selectedDispute["order_id"],
|
||||
// "17731",
|
||||
{
|
||||
responseType: "blob",
|
||||
headers: makeAuthHeaderForAxios(getAuthInfo()?.a).headers,
|
||||
@ -192,7 +194,6 @@
|
||||
//console.log(error);
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<div class="w-full flex flex-col gap-8">
|
||||
@ -203,10 +204,10 @@
|
||||
<div class="w-full flex flex-col bg-base-300 p-4 rounded-box">
|
||||
<div class="flex p-4">
|
||||
<select
|
||||
on:change={(e)=>{
|
||||
currentDisputesFilter = Number(e.target.value);
|
||||
getDisputes();
|
||||
}}
|
||||
on:change={(e) => {
|
||||
currentDisputesFilter = Number(e.target.value);
|
||||
getDisputes();
|
||||
}}
|
||||
class="select select-bordered w-full text-base"
|
||||
>
|
||||
<option selected value="-1">Показать все споры</option>
|
||||
@ -286,7 +287,7 @@
|
||||
class="fixed inset-0 flex justify-center items-center md:p-32 p-8 pt-[68px] bg-black bg-opacity-50"
|
||||
>
|
||||
<div class="flex flex-col w-full max-w-[600px] p-4 rounded-box bg-base-300">
|
||||
<p class="self-center opacity-60">ID: {selectedDispute['order_id']}</p>
|
||||
<p class="self-center opacity-60">ID: {selectedDispute["order_id"]}</p>
|
||||
<p
|
||||
class={"self-center text-3xl " +
|
||||
disputesStatusMapColors[selectedDispute["order_status"]]}
|
||||
@ -306,13 +307,20 @@
|
||||
<div class="rounded-box flex flex-col bg-base-100 p-4 gap-1 mt-4">
|
||||
<p class="text-lg font-bold">Сумма в споре</p>
|
||||
<p>
|
||||
{Number(selectedDispute.new_amount)} {selectedDispute.out_code} ({(Number(selectedDispute.new_amount) / Number(selectedDispute.order_rate)).toFixed(2)} USDT)
|
||||
{Number(selectedDispute.new_amount)}
|
||||
{selectedDispute.out_code} ({(
|
||||
Number(selectedDispute.new_amount) /
|
||||
Number(selectedDispute.order_rate)
|
||||
).toFixed(2)} USDT)
|
||||
</p>
|
||||
</div>
|
||||
<div class="rounded-box flex flex-col bg-base-100 p-4 gap-1 mt-4">
|
||||
<p class="text-lg font-bold">Сумма в заявке</p>
|
||||
<p>
|
||||
{Number(selectedDispute.amount)} {selectedDispute.out_code} ({(Number(selectedDispute.amount) / Number(selectedDispute.order_rate)).toFixed(2)} USDT)
|
||||
{Number(selectedDispute.amount)}
|
||||
{selectedDispute.out_code} ({(
|
||||
Number(selectedDispute.amount) / Number(selectedDispute.order_rate)
|
||||
).toFixed(2)} USDT)
|
||||
</p>
|
||||
</div>
|
||||
{#if selectedDispute["order_status"] === "4" || selectedDispute["order_status"] === "8"}
|
||||
@ -338,7 +346,8 @@
|
||||
on:click={() => {
|
||||
axios
|
||||
.get(
|
||||
API_PATH_MAIN + "loadFile?dispute=" +
|
||||
API_PATH_TEST +
|
||||
"loadFile?dispute=" +
|
||||
selectedDispute["order_id"],
|
||||
{
|
||||
responseType: "blob",
|
||||
@ -397,10 +406,21 @@
|
||||
{/if}
|
||||
|
||||
{#if showDisputeReceiptImage}
|
||||
<div class="fixed inset-0 p-4 md:p-8 flex flex-col items-center bg-base-300 z-[100]">
|
||||
<div
|
||||
class="fixed inset-0 p-4 md:p-8 flex flex-col items-center bg-base-300 z-[100]"
|
||||
>
|
||||
<div class="w-[90%] h-[90%] flex">
|
||||
<img src={receiptImage} alt="receipt" class="w-full h-full object-scale-down">
|
||||
<img
|
||||
src={receiptImage}
|
||||
alt="receipt"
|
||||
class="w-full h-full object-scale-down"
|
||||
/>
|
||||
</div>
|
||||
<button on:click={()=>{showDisputeReceiptImage = false;}} class="btn btn-info w-full mt-auto">Закрыть</button>
|
||||
<button
|
||||
on:click={() => {
|
||||
showDisputeReceiptImage = false;
|
||||
}}
|
||||
class="btn btn-info w-full mt-auto">Закрыть</button
|
||||
>
|
||||
</div>
|
||||
{/if}
|
@ -2,18 +2,23 @@
|
||||
// @ts-nocheck
|
||||
|
||||
import { getAuthInfo, makeAuthHeaderForAxios } from "$lib/auth/Auth";
|
||||
import { API_PATH_TEST, API_PATH_MAIN, makePost } from "$lib/tools/requests/requests";
|
||||
import {
|
||||
API_PATH_TEST,
|
||||
API_PATH_MAIN,
|
||||
makePost,
|
||||
} from "$lib/tools/requests/requests";
|
||||
import { sayError, sayInfo } from "$lib/tools/toaster/Toaster";
|
||||
import Pagination from "$lib/ui-components/pagination.svelte";
|
||||
import { redirect } from "$lib/tools/url/URLTools";
|
||||
import axios from "axios";
|
||||
import { isStringEmptyOrSpaces } from "$lib/tools/strings/Strings";
|
||||
import { isStringEmptyOrSpaces } from "$lib/tools/strings/Strings";
|
||||
|
||||
const payoutsStatusMap = {
|
||||
"0": "Открыта",
|
||||
"1": "Ожидает оплаты",
|
||||
"2": "Оплачена",
|
||||
"3": "Отказано",
|
||||
"4": "Требует проверки",
|
||||
};
|
||||
|
||||
const payoutsStatusMapColors = {
|
||||
@ -21,6 +26,7 @@
|
||||
"1": "text-warning",
|
||||
"2": "text-success",
|
||||
"3": "text-error",
|
||||
"4": "text-warning",
|
||||
};
|
||||
|
||||
//admin/getDisputes
|
||||
@ -29,7 +35,7 @@
|
||||
let numOfPagesPayouts = 1;
|
||||
let currentPagePayouts = 1;
|
||||
let disablePagesPayouts = false;
|
||||
let currentPayoutsFilter = 0;
|
||||
let currentPayoutsFilter = -1;
|
||||
|
||||
async function getPayouts() {
|
||||
disablePagesPayouts = true;
|
||||
@ -41,7 +47,7 @@
|
||||
filter: currentPayoutsFilter,
|
||||
},
|
||||
// @ts-ignore
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a),
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a)
|
||||
);
|
||||
console.log(result);
|
||||
if (result.status === 401) {
|
||||
@ -59,7 +65,7 @@
|
||||
}
|
||||
payouts = result.data.payouts;
|
||||
console.log(payouts);
|
||||
numOfPagesPayouts = result.data.pages === 0 ? 1:result.data?.pages;
|
||||
numOfPagesPayouts = result.data.pages === 0 ? 1 : result.data?.pages;
|
||||
disablePagesPayouts = false;
|
||||
}
|
||||
getPayouts();
|
||||
@ -154,20 +160,21 @@
|
||||
}
|
||||
|
||||
function checkFields() {
|
||||
if(!isStringEmptyOrSpaces(newPayoutTraderUUID) && newPayoutTraderUUID.length > 10)
|
||||
{
|
||||
if (
|
||||
!isStringEmptyOrSpaces(newPayoutTraderUUID) &&
|
||||
newPayoutTraderUUID.length > 10
|
||||
) {
|
||||
allowToSave = true;
|
||||
return;
|
||||
}
|
||||
if(newPayoutStatus !== selectedPayout.status)
|
||||
{
|
||||
if (newPayoutStatus !== selectedPayout.status) {
|
||||
allowToSave = true;
|
||||
return;
|
||||
}
|
||||
allowToSave = false;
|
||||
}
|
||||
|
||||
let newPayoutTraderUUID= "";
|
||||
let newPayoutTraderUUID = "";
|
||||
let newPayoutStatus = selectedPayout.status;
|
||||
let allowToSave = false;
|
||||
// $: selectedPayout, newPayoutStatus = selectedPayout.status;
|
||||
@ -181,11 +188,15 @@
|
||||
{
|
||||
type: 1,
|
||||
uuid: selectedPayout.uuid,
|
||||
trader_uuid: (isStringEmptyOrSpaces(newPayoutTraderUUID) || newPayoutTraderUUID.length < 10) ? selectedPayout.trader_uuid:newPayoutTraderUUID,
|
||||
status: Number(newPayoutStatus)
|
||||
trader_uuid:
|
||||
isStringEmptyOrSpaces(newPayoutTraderUUID) ||
|
||||
newPayoutTraderUUID.length < 10
|
||||
? selectedPayout.trader_uuid
|
||||
: newPayoutTraderUUID,
|
||||
status: Number(newPayoutStatus),
|
||||
},
|
||||
// @ts-ignore
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a),
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a)
|
||||
);
|
||||
console.log(result);
|
||||
if (result.status === 401) {
|
||||
@ -215,10 +226,10 @@
|
||||
const result = await makePost(
|
||||
"admin/payouts",
|
||||
{
|
||||
type: 3
|
||||
type: 3,
|
||||
},
|
||||
// @ts-ignore
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a),
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a)
|
||||
);
|
||||
console.log(result);
|
||||
if (result.status === 401) {
|
||||
@ -245,7 +256,6 @@
|
||||
}
|
||||
getStats();
|
||||
|
||||
|
||||
let awaitChangingNull = false;
|
||||
async function nullificatePayout() {
|
||||
awaitChangingNull = true;
|
||||
@ -258,7 +268,7 @@
|
||||
// status: Number(newPayoutStatus)
|
||||
},
|
||||
// @ts-ignore
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a),
|
||||
makeAuthHeaderForAxios(getAuthInfo()?.a)
|
||||
);
|
||||
console.log(result);
|
||||
if (result.status === 401) {
|
||||
@ -325,7 +335,7 @@
|
||||
}}
|
||||
class="select select-bordered w-full text-base"
|
||||
>
|
||||
<option selected value="0">Показать все выплаты</option>
|
||||
<option selected value="-1">Показать все выплаты</option>
|
||||
<option value="2">Оплаченные</option>
|
||||
<option value="3">Отклонённые</option>
|
||||
<option value="1">Принятые</option>
|
||||
@ -356,7 +366,7 @@
|
||||
<th>Статус</th>
|
||||
<th>Сумма</th>
|
||||
<th>Карта</th>
|
||||
<th>Курс</th>
|
||||
<!-- <th>Курс</th> -->
|
||||
<th>Время создания</th>
|
||||
<th>Опции</th>
|
||||
<!-- <th></th> -->
|
||||
@ -372,7 +382,7 @@
|
||||
<!-- <td>{payout["is_sbp"] === "t" ? "да" : "нет"}</td> -->
|
||||
<td>{payout["amount"]} {payout["code"]}</td>
|
||||
<td>{payout["pan"]}</td>
|
||||
<td>{payout["rate"]} {payout["code"]}</td>
|
||||
<!-- <td>{payout["rate"]} {payout["code"]}</td> -->
|
||||
<!-- <td>{payout["amount"]}</td> -->
|
||||
<td>{payout["creation_time"]}</td>
|
||||
<td
|
||||
@ -413,55 +423,64 @@
|
||||
<!-- <p class="text-lg font-bold">{selectedPayout.name}</p> -->
|
||||
<p class="">IP заказчика: {selectedPayout.customer_ip}</p>
|
||||
<p class="">Карта: {selectedPayout.pan}</p>
|
||||
<p class="">ID трейдера: {selectedPayout.trader_uuid === "" ? "---":selectedPayout.trader_uuid}</p>
|
||||
<p class="">
|
||||
ID трейдера: {selectedPayout.trader_uuid === ""
|
||||
? "---"
|
||||
: selectedPayout.trader_uuid}
|
||||
</p>
|
||||
</div>
|
||||
<div class="rounded-box flex flex-col bg-base-100 p-4 gap-1 mt-4">
|
||||
<p class="text-lg font-bold">Сумма</p>
|
||||
<p>
|
||||
{selectedPayout.amount}
|
||||
{selectedPayout.code} ({(
|
||||
Number(selectedPayout.amount) /
|
||||
Number(selectedPayout.rate)
|
||||
).toFixed(2)} USDT)
|
||||
{selectedPayout.code}
|
||||
</p>
|
||||
</div>
|
||||
<div class="rounded-box flex flex-col bg-base-100 p-4 gap-1 mt-4">
|
||||
<!-- <div class="rounded-box flex flex-col bg-base-100 p-4 gap-1 mt-4">
|
||||
<p class="text-lg font-bold">Курс</p>
|
||||
<p>{selectedPayout.rate} {selectedPayout.code}</p>
|
||||
</div>
|
||||
</div> -->
|
||||
<div class="rounded-box flex flex-col bg-base-100 p-4 gap-1 mt-4">
|
||||
<p class="text-lg font-bold">ID нового трейдера:</p>
|
||||
<p class="text-sm opacity-50">Оставьте пустым, чтобы оставить прежнего трейдера</p>
|
||||
<input bind:value={newPayoutTraderUUID} type="text" placeholder="ID" class="input input-bordered w-full max-w-xs" />
|
||||
<p class="text-sm opacity-50">
|
||||
Оставьте пустым, чтобы оставить прежнего трейдера
|
||||
</p>
|
||||
<input
|
||||
bind:value={newPayoutTraderUUID}
|
||||
type="text"
|
||||
placeholder="ID"
|
||||
class="input input-bordered w-full max-w-xs"
|
||||
/>
|
||||
</div>
|
||||
<div class="rounded-box flex flex-col bg-base-100 p-4 gap-1 mt-4">
|
||||
<p class="text-lg font-bold">Изменить статус:</p>
|
||||
<select
|
||||
bind:value={newPayoutStatus}
|
||||
class="select select-bordered w-full text-base"
|
||||
>
|
||||
<option value="0">Открыта</option>
|
||||
<option value="2">Оплачена</option>
|
||||
<option value="3">Отклонена</option>
|
||||
<option value="1">Принята</option>
|
||||
</select>
|
||||
bind:value={newPayoutStatus}
|
||||
class="select select-bordered w-full text-base"
|
||||
>
|
||||
<option value="0">Открыта</option>
|
||||
<option value="2">Оплачена</option>
|
||||
<option value="3">Отклонена</option>
|
||||
<option value="1">Принята</option>
|
||||
</select>
|
||||
</div>
|
||||
{#if selectedPayout["status"] === "2"}
|
||||
<button
|
||||
on:click={() => {
|
||||
axios
|
||||
.get(
|
||||
API_PATH_MAIN + "loadFile?dispute=" +
|
||||
API_PATH_TEST +
|
||||
"loadFile?dispute=" +
|
||||
selectedPayout["order_id"],
|
||||
{
|
||||
responseType: "blob",
|
||||
headers: makeAuthHeaderForAxios(getAuthInfo()?.a).headers,
|
||||
},
|
||||
}
|
||||
)
|
||||
.then(function (response) {
|
||||
// Создаем ссылку для скачивания
|
||||
const url = window.URL.createObjectURL(
|
||||
new Blob([response.data]),
|
||||
new Blob([response.data])
|
||||
);
|
||||
const contentType = response?.data?.type; // Извлекаем MIME-тип из Blob
|
||||
let extension = mimeToExtension(contentType); // Получаем расширение из функции
|
||||
@ -495,7 +514,7 @@
|
||||
>
|
||||
Сорханить
|
||||
{#if awaitChanging}
|
||||
<span class="loading loading-spinner loading-md"></span>
|
||||
<span class="loading loading-spinner loading-md"></span>
|
||||
{/if}
|
||||
</button>
|
||||
<button
|
||||
@ -506,7 +525,7 @@
|
||||
>
|
||||
Обнулить выплату
|
||||
{#if awaitChangingNull}
|
||||
<span class="loading loading-spinner loading-md"></span>
|
||||
<span class="loading loading-spinner loading-md"></span>
|
||||
{/if}
|
||||
</button>
|
||||
<button
|
@ -20,21 +20,21 @@ const config = {
|
||||
prerender: {
|
||||
// default: true,
|
||||
entries: [
|
||||
"/user/change/sampleToken",
|
||||
"/user/edit/req/sampleToken/sampleReqID",
|
||||
"/user/neworder/sampleToken",
|
||||
"/user/profile/sampleToken",
|
||||
"/",
|
||||
"/login",
|
||||
"/newuser",
|
||||
"/userslist",
|
||||
"/disputes",
|
||||
"/payouts",
|
||||
"/merchants",
|
||||
"/orders",
|
||||
"/currencies",
|
||||
"/sms",
|
||||
"/withdrawals"
|
||||
"/admin/user/change/sampleToken",
|
||||
"/admin/user/edit/req/sampleToken/sampleReqID",
|
||||
"/admin/user/neworder/sampleToken",
|
||||
"/admin/user/profile/sampleToken",
|
||||
"/admin/",
|
||||
"/admin/login",
|
||||
"/admin/newuser",
|
||||
"/admin/userslist",
|
||||
"/admin/disputes",
|
||||
"/admin/payouts",
|
||||
"/admin/merchants",
|
||||
"/admin/orders",
|
||||
"/admin/currencies",
|
||||
"/admin/sms",
|
||||
"/admin/withdrawals"
|
||||
],
|
||||
},
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user