diff --git a/package-lock.json b/package-lock.json index 14d289b..f72d521 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,8 @@ "axios": "^1.7.2", "date-fns": "^3.6.0", "jwt-decode": "^4.0.0", - "serialize-error": "^11.0.3" + "serialize-error": "^11.0.3", + "svelte-feather-icons": "^4.1.0" }, "devDependencies": { "@fontsource/fira-mono": "^4.5.10", @@ -3000,6 +3001,24 @@ "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" } }, + "node_modules/svelte-feather-icons": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/svelte-feather-icons/-/svelte-feather-icons-4.1.0.tgz", + "integrity": "sha512-fcTL4VzEN4BoccQJjKiui0b9DWEsmO6zGpI0tQTJbthRtNrYheoU487zyA1BD8rj9kj6jbKGmGVo7zbSdRvMvA==", + "license": "MIT", + "dependencies": { + "svelte": "^3.38.2" + } + }, + "node_modules/svelte-feather-icons/node_modules/svelte": { + "version": "3.59.2", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.59.2.tgz", + "integrity": "sha512-vzSyuGr3eEoAtT/A6bmajosJZIUWySzY2CzB3w2pgPvnkUjGqlDnsNnA0PMO+mMAhuyMul6C2uuZzY6ELSkzyA==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/svelte-hmr": { "version": "0.16.0", "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.16.0.tgz", diff --git a/package.json b/package.json index a44bbc3..f00650b 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "axios": "^1.7.2", "date-fns": "^3.6.0", "jwt-decode": "^4.0.0", - "serialize-error": "^11.0.3" + "serialize-error": "^11.0.3", + "svelte-feather-icons": "^4.1.0" } } diff --git a/src/routes/merchants/+page.svelte b/src/routes/merchants/+page.svelte index 06c3b81..4aa0abd 100644 --- a/src/routes/merchants/+page.svelte +++ b/src/routes/merchants/+page.svelte @@ -8,6 +8,12 @@ import { redirect } from "$lib/tools/url/URLTools"; import axios from "axios"; import { isStringEmptyOrSpaces } from "$lib/tools/strings/Strings"; + import { + ChevronLeftIcon, + ChevronRightIcon, + CopyIcon, + } from "svelte-feather-icons"; + import { se } from "date-fns/locale"; let merchants = []; let value_merchantsFilter = "true"; @@ -39,13 +45,11 @@ let value_endTime = "0"; function checkTime() { - if (isStringEmptyOrSpaces(value_endTime) || value_endTime === "0") - { + if (isStringEmptyOrSpaces(value_endTime) || value_endTime === "0") { // showStats = true; return; } - if (isStringEmptyOrSpaces(value_startTime) || value_startTime === "0") - { + if (isStringEmptyOrSpaces(value_startTime) || value_startTime === "0") { // showStats = true; return; } @@ -77,16 +81,21 @@ } async function payToMerchant() { - if(value_sumMerchant <= 0) {return;} + if (value_sumMerchant <= 0) { + return; + } showPaySpin = true; disablePayButton = true; - let res = await makePost("admin/decreaseMerchantBalance", { - id: selectedMerchant, - amount: value_sumMerchant+"" - }, makeAuthHeaderForAxios(getAuthInfo()?.a)); + let res = await makePost( + "admin/decreaseMerchantBalance", + { + id: selectedMerchant, + amount: value_sumMerchant + "", + }, + makeAuthHeaderForAxios(getAuthInfo()?.a), + ); // console.log(res); - if(res.error) - { + if (res.error) { sayError("Что-то пошло не так"); showPaySpin = false; disablePayButton = false; @@ -97,6 +106,79 @@ disablePayButton = false; getMerchants(); } + + const settlesStatusMap = { + "0": "Открыт", + "1": "Закрыт", + }; + + let settles = []; + let showSettlesLoading = false; + let settlesFilter = "-1"; + let settlesCurrentPage = 1; + let maxPages = 1; + + $: if (selectedMerchant !== "") { + settlesCurrentPage = 1; + getMerchantSettles(); + } + + $: if (settlesFilter.length > 0) { + settlesCurrentPage = 1; + getMerchantSettles(); + } + + async function getMerchantSettles() { + showSettlesLoading = true; + const res = await makePost( + "admin/loadSettles", + { + page: settlesCurrentPage, + status: settlesFilter === "-1" ? undefined : settlesFilter, + }, + makeAuthHeaderForAxios(getAuthInfo()?.a), + ); + + if (res.error) { + showSettlesLoading = false; + sayError("Не удалось полуть сеттлы мерча"); + return; + } + + showSettlesLoading = false; + settles = res.data["data"] ?? []; + maxPages = Number(res.data["pages"]) ? Number(res.data["pages"]) : 1; + } + + let showChangeSettleWindow = false; + let selectedSettleNewSum = 0; + let selectedSettleNewHash = ""; + let selectedSettleId = ""; + let showLoadingChangeSettle = false; + + async function changeSettle(id) { + showLoadingChangeSettle = true; + const res = await makePost( + "admin/updateSettle", + { + id, + amount: selectedSettleNewSum.toString(), + tx_hash: selectedSettleNewHash, + }, + makeAuthHeaderForAxios(getAuthInfo()?.a), + ); + + if (res.error) { + sayError("Не удалось изменить сеттл"); + showLoadingChangeSettle = false; + return; + } + + sayInfo("Сеттл изменён!"); + showChangeSettleWindow = false; + showLoadingChangeSettle = false; + getMerchantSettles(); + }
Сеттлы
+ + {#if showSettlesLoading} + + {:else} +Опции | +ID | +Статус | +Регион | +Сумма | +Адрес кошелька | +Хэш транзакции | +Время создания | +Время закрытия | +
---|---|---|---|---|---|---|---|---|
+ |
+ + {settle["id"]} + | ++ {settlesStatusMap[settle["status"]]} + | ++ {settle["code"]} + | ++ {settle["amount"]} USDT + | +
+ {settle["settle_address"]} + {#if settle["settle_address"].length > 2} + |
+
+ {settle["tx_hash"]} + {#if settle["tx_hash"].length > 2} + |
+ + {settle["creationtime"]} + | ++ {settle["closetime"]} + | +
Всего страниц: {maxPages}
{/if} + +{#if showChangeSettleWindow} +ID: {selectedSettleId}
+Новая сумма (USDT)
+ +Новый хэш
+ +