feat: 更新钱包管理功能,添加银行账户和余额的初始化逻辑,优化API请求和响应处理

This commit is contained in:
2025-12-17 02:09:07 +07:00
parent d375d12583
commit 2f1881cc81
8 changed files with 89 additions and 22 deletions

View File

@@ -11,10 +11,15 @@ import { client, safeClient } from "@/api";
const { t } = useI18n();
const router = useRouter();
const { updateBankAccounts } = useWalletStore();
const { data, refresh } = await safeClient(() => client.api.bank_account.get());
const { data, refresh, onFetchResponse } = await safeClient(() => client.api.bank_account.get());
const bankCards = computed(() => data.value?.data || []);
onFetchResponse((data) => {
data?.data && updateBankAccounts(data.data);
});
function handleAddCard() {
router.push("/trade-settings/bank-management/add");
}

View File

@@ -3,7 +3,8 @@ import RechargeChannel from "./recharge-channel.vue";
const { t } = useI18n();
const router = useRouter();
const { state } = useWalletStore();
const walletStore = useWalletStore();
const { balances } = storeToRefs(walletStore);
const rechargeInstance = ref<ModalInstance>();
function onCloseModal() {
@@ -12,12 +13,16 @@ function onCloseModal() {
function handleWithdraw() {
router.push("/withdraw/index");
}
onUpdated(() => {
walletStore.updateBalances();
});
</script>
<template>
<div class="mt-5 shadow-md rounded-lg overflow-hidden">
<div class="grid grid-cols-1 gap-5 p-5 bg-(--ion-card-background)">
<div v-for="item in state.balances" :key="item.assetCode" class="flex flex-col gap-1">
<div v-for="item in balances" :key="item.assetCode" class="flex flex-col gap-1">
<div class="uppercase text-xs text-text-400 font-medium tracking-[0.4px]">
{{ item.assetCode }}
</div>

View File

@@ -1,6 +1,5 @@
<script lang='ts' setup>
import type { WithdrawBody } from "@/api/types";
import { toastController } from "@ionic/vue";
import { client, safeClient } from "@/api";
import { AssetCodeEnum, ChainEnum, WithdrawMethodEnum } from "@/api/enum";
@@ -15,9 +14,10 @@ const [form, resetForm] = useResetRef<WithdrawBody>({
bankAccountId: "",
chain: "BEP20",
});
const { state } = useWalletStore();
const walletStore = useWalletStore();
const { balances } = storeToRefs(walletStore);
const maxAmount = computed(() => {
const balance = state.balances?.find(item => item.assetCode === form.value.assetCode);
const balance = balances.value?.find(item => item.assetCode === form.value.assetCode);
return balance ? balance.available : "0";
});