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_MAIN = "https://hostapay.trade/api/v1/";
export const API_PATH_TEST = "https://test.0x000f.ru/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( async function makePost(
url, url,

View File

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