This commit is contained in:
FIRST_NAME LAST_NAME 2025-07-15 01:17:28 +03:00
parent 3b7cfd7df3
commit 7015bbbe7f
3 changed files with 129 additions and 9 deletions

View File

@ -22,7 +22,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/";
export const API_PATH_VALUE = API_PATH_TEST;
export const API_PATH_VALUE = API_PATH_MAIN;
async function makePost(
url,

View File

@ -47,6 +47,7 @@
}
showMerchants = true;
selectedMerchant = "";
newSettleMerchantId = "";
}
let selectedMerchant = "";
@ -95,6 +96,9 @@
makeAuthHeaderForAxios(getAuthInfo()?.a)
);
merchantsGeos = res.data.data;
if (!Array.isArray(merchantsGeos)) {
merchantsGeos = [];
}
console.log("geos", merchantsGeos);
showStats = true;
@ -175,8 +179,17 @@
let selectedSettleNewSum = 0;
let selectedSettleNewHash = "";
let selectedSettleId = "";
let selectedSettleRate = "";
let showLoadingChangeSettle = false;
let showCreateSettleWindow = false;
let newSettleCode = "";
let newSettleMerchantId = "";
let newSettleAmount = "";
let newSettleAddress = "";
let newSettleRate = "";
let showLoadingCreateSettle = false;
async function changeSettle(id) {
showLoadingChangeSettle = true;
const res = await makePost(
@ -185,6 +198,7 @@
id,
amount: selectedSettleNewSum.toString(),
tx_hash: selectedSettleNewHash,
rate: selectedSettleRate,
},
makeAuthHeaderForAxios(getAuthInfo()?.a)
);
@ -200,6 +214,32 @@
showLoadingChangeSettle = false;
getMerchantSettles();
}
async function createSettle() {
showLoadingCreateSettle = true;
const res = await makePost(
"admin/settle/create",
{
code: newSettleCode,
merchant_id: newSettleMerchantId,
amount: newSettleAmount,
settle_address: newSettleAddress,
rate: newSettleRate,
},
makeAuthHeaderForAxios(getAuthInfo()?.a)
);
if (res.error) {
sayError("Не удалось изменить сеттл");
showLoadingCreateSettle = false;
return;
}
sayInfo("Сеттл создан");
showCreateSettleWindow = false;
showLoadingCreateSettle = false;
getMerchantSettles();
}
</script>
<div class="w-full flex flex-col gap-8">
@ -248,6 +288,7 @@
on:click={() => {
if (selectedMerchant !== merch["id"]) {
selectedMerchant = merch["id"];
newSettleMerchantId = merch["id"];
getStatistics();
console.log(selectedMerchant);
}
@ -371,14 +412,24 @@
</button> -->
</div>
<p class="text-2xl font-bold mt-4">Сеттлы</p>
<div class="flex w-full justify-between items-center gap-4">
<button
class="btn btn-success"
on:click={() => {
showCreateSettleWindow = true;
}}
>
Создать сеттл
</button>
<select
bind:value={settlesFilter}
class="select select-bordered max-w-[320px] self-center my-2"
class="select select-bordered w-full self-center my-2"
>
<option value="-1">Все сеттлы</option>
<option value="0">Открытые</option>
<option value="1">Закрытые</option>
</select>
</div>
{#if showSettlesLoading}
<span class="loading loading-lg self-center mt-2" />
{:else}
@ -408,6 +459,7 @@
selectedSettleNewSum = Number(settle["amount"]);
selectedSettleNewHash = settle["tx_hash"];
selectedSettleId = settle["id"];
selectedSettleRate = settle["rate"];
showChangeSettleWindow = true;
}}
class="btn btn-info">Изменить</button
@ -517,6 +569,12 @@
type="text"
class="input input-bordered"
/>
<p class="mt-4 text-sm">Новый курс</p>
<input
bind:value={selectedSettleRate}
type="text"
class="input input-bordered"
/>
<button
on:click={() => {
changeSettle(selectedSettleId);
@ -538,3 +596,61 @@
</div>
</div>
{/if}
{#if showCreateSettleWindow}
<div
class="fixed z-[100] inset-0 flex justify-center items-center bg-base-300 bg-opacity-90"
>
<div class="flex flex-col p-4 rounded-md bg-base-300 min-w-[300px]">
<p class="text-center text-lg font-semibold">Создание сеттла</p>
<p class="text-sm mt-4">Код региона</p>
<select class="select" bind:value={newSettleCode}>
{#each merchantsGeos as merch}
<option value={merch["code"]}>{merch["code"]}</option>
{/each}
</select>
<p class="mt-2 text-sm">ID Мерчанта</p>
<input
bind:value={newSettleMerchantId}
type="text"
class="input input-bordered"
/>
<p class="mt-2 text-sm">Сумма</p>
<input
bind:value={newSettleAmount}
type="text"
class="input input-bordered"
/>
<p class="mt-2 text-sm">Адрес</p>
<input
bind:value={newSettleAddress}
type="text"
class="input input-bordered"
/>
<p class="mt-2 text-sm">Курс</p>
<input
bind:value={newSettleRate}
type="text"
class="input input-bordered"
/>
<button
on:click={() => {
createSettle();
}}
class="btn btn-success mt-2"
>
{#if showLoadingChangeSettle}
<span class="loading loading-xs" />
{:else}
{"Создать сеттл"}
{/if}
</button>
<button
on:click={() => {
showCreateSettleWindow = false;
}}
class="btn btn-outline mt-1">Отмена</button
>
</div>
</div>
{/if}

View File

@ -256,6 +256,10 @@
{/if}
<p class="text-sm mt-3">Время создания</p>
<p>{foundedDispute["creationtime"]}</p>
{#if foundedDispute["closetime"] && foundedDispute["closetime"] !== ""}
<p class="text-sm mt-3">Время закрытия</p>
<p>{foundedDispute["closetime"]}</p>
{/if}
<!-- <p>{foundedDispute["closetime"]}</p> -->
<button
on:click={() => {