新增:充值弹窗展示并校验最小到账金额,读取后台系统参数配置。
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
1c64d3a834
commit
19e4322abd
@ -199,3 +199,24 @@ export async function getWithdrawConfig(
|
||||
return get<WithdrawConfigResponse>('/pmset/getWithdrawConfig', undefined, config)
|
||||
}
|
||||
|
||||
/** 充值配置(GET /pmset/getDepositConfig) */
|
||||
export interface DepositConfig {
|
||||
/** 最小到账金额,最小精度整数(1U=1e6;系统参数配置口径 1=1U,默认 10) */
|
||||
minDepositAmount: number
|
||||
}
|
||||
|
||||
export interface DepositConfigResponse extends ApiResponse<DepositConfig> {
|
||||
code: number
|
||||
data?: DepositConfig
|
||||
msg: string
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /pmset/getDepositConfig
|
||||
* 获取最小到账金额(系统参数 minDepositAmount,配置 1=1U,默认 10;缺失自动插入)
|
||||
*/
|
||||
export async function getDepositConfig(
|
||||
config?: { headers?: Record<string, string> },
|
||||
): Promise<DepositConfigResponse> {
|
||||
return get<DepositConfigResponse>('/pmset/getDepositConfig', undefined, config)
|
||||
}
|
||||
|
||||
@ -126,6 +126,7 @@
|
||||
@update:model-value="onDepositNetworkChange"
|
||||
/>
|
||||
<p class="crypto-support-tip">{{ t('deposit.supportedTip') }}</p>
|
||||
<p class="crypto-min-amount-tip">{{ t('deposit.minArrivalAmount', { amount: minDepositDisplay }) }}</p>
|
||||
<div class="crypto-addr-head">
|
||||
<span class="crypto-addr-title">{{ t('deposit.depositAddress') }}</span>
|
||||
<v-btn color="primary" variant="text" class="crypto-copy-btn" :disabled="!depositAddress" @click="copyAddress">
|
||||
@ -214,6 +215,7 @@
|
||||
@update:model-value="onDepositNetworkChange"
|
||||
/>
|
||||
<p class="crypto-support-tip exchange-mm-hint">{{ t('deposit.metamaskSendHint') }}</p>
|
||||
<p class="crypto-min-amount-tip">{{ t('deposit.minArrivalAmount', { amount: minDepositDisplay }) }}</p>
|
||||
<v-text-field
|
||||
v-model="depositAmountStr"
|
||||
:label="t('deposit.amountUsdc')"
|
||||
@ -317,7 +319,7 @@ import { getDepositAddress, collectDeposit } from '@/api/wallet'
|
||||
import { useUserStore } from '@/stores/user'
|
||||
import { useToastStore } from '@/stores/toast'
|
||||
import { ethers } from 'ethers'
|
||||
import { USDC_ADDRESS_BY_CHAIN } from '@/api/pmset'
|
||||
import { USDC_ADDRESS_BY_CHAIN, getDepositConfig, amountToUsdcDisplay } from '@/api/pmset'
|
||||
import {
|
||||
WALLET_PRIMARY_NETWORK_ID,
|
||||
useWalletNetworkGuard,
|
||||
@ -353,6 +355,23 @@ const connecting = ref(false)
|
||||
const depositAmountStr = ref('')
|
||||
const metamaskSendLoading = ref(false)
|
||||
const metamaskSendError = ref('')
|
||||
/** 最小到账金额(最小精度,默认 10U = 10_000_000) */
|
||||
const minDepositRaw = ref(10_000_000)
|
||||
const minDepositDisplay = computed(() => amountToUsdcDisplay(minDepositRaw.value))
|
||||
|
||||
async function loadDepositConfig() {
|
||||
try {
|
||||
const res = await getDepositConfig()
|
||||
if (res.code === 0 || res.code === 200) {
|
||||
const raw = Number(res.data?.minDepositAmount ?? 0)
|
||||
minDepositRaw.value = Number.isFinite(raw) && raw > 0 ? raw : 10_000_000
|
||||
return
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('[loadDepositConfig]', e)
|
||||
}
|
||||
minDepositRaw.value = 10_000_000
|
||||
}
|
||||
|
||||
const depositFooterWalletBtnRef = ref<ComponentPublicInstance | null>(null)
|
||||
const depositFooterCollectBtnRef = ref<ComponentPublicInstance | null>(null)
|
||||
@ -926,6 +945,10 @@ async function sendUsdcViaMetaMask() {
|
||||
metamaskSendError.value = t('deposit.invalidAmount')
|
||||
return
|
||||
}
|
||||
if (amountWei < BigInt(minDepositRaw.value)) {
|
||||
metamaskSendError.value = t('deposit.belowMinArrivalAmount', { amount: minDepositDisplay.value })
|
||||
return
|
||||
}
|
||||
if (!USDC_ADDRESS_BY_CHAIN[selectedNetwork.value]) {
|
||||
metamaskSendError.value = t('deposit.networkConfigError')
|
||||
return
|
||||
@ -1005,6 +1028,7 @@ watch(
|
||||
metamaskSendError.value = ''
|
||||
stopDepositCheck()
|
||||
} else {
|
||||
void loadDepositConfig()
|
||||
if (step.value === 'crypto') fetchAddress()
|
||||
}
|
||||
},
|
||||
@ -1127,6 +1151,13 @@ onUnmounted(() => {
|
||||
padding-bottom: 0;
|
||||
align-items: center;
|
||||
}
|
||||
.crypto-min-amount-tip {
|
||||
margin: 0 0 12px;
|
||||
font-size: 0.8125rem;
|
||||
font-weight: 500;
|
||||
color: #374151;
|
||||
line-height: 1.4;
|
||||
}
|
||||
.crypto-support-tip {
|
||||
font-size: 0.75rem;
|
||||
font-weight: 500;
|
||||
|
||||
@ -494,7 +494,9 @@
|
||||
"txConfirmTimeout": "Transaction was submitted but not confirmed in time. Check it in your wallet or a block explorer.",
|
||||
"walletRpcIncomplete": "Your wallet returned incomplete transaction data. If issues persist, update MetaMask or change the RPC.",
|
||||
"depositHistory": "Deposit History",
|
||||
"depositStatusAll": "All"
|
||||
"depositStatusAll": "All",
|
||||
"minArrivalAmount": "Minimum credit amount: {amount} USDC",
|
||||
"belowMinArrivalAmount": "Deposit amount must be at least {amount} USDC"
|
||||
},
|
||||
"withdraw": {
|
||||
"title": "Withdraw",
|
||||
@ -548,4 +550,4 @@
|
||||
"ja": "日本語",
|
||||
"ko": "한국어"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -494,7 +494,9 @@
|
||||
"txConfirmTimeout": "トランザクションは送信されましたが、一定時間内に確認されませんでした。ウォレットまたはブロックエクスプローラーでご確認ください。",
|
||||
"walletRpcIncomplete": "ウォレットから返ったトランザクション情報が不完全です。MetaMask の更新や RPC の変更をお試しください。",
|
||||
"depositHistory": "入金履歴",
|
||||
"depositStatusAll": "すべて"
|
||||
"depositStatusAll": "すべて",
|
||||
"minArrivalAmount": "最小着金金額:{amount} USDC",
|
||||
"belowMinArrivalAmount": "入金額は {amount} USDC 以上である必要があります"
|
||||
},
|
||||
"withdraw": {
|
||||
"title": "出金",
|
||||
@ -548,4 +550,4 @@
|
||||
"ja": "日本語",
|
||||
"ko": "한국어"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -494,7 +494,9 @@
|
||||
"txConfirmTimeout": "거래는 제출되었지만 제한 시간 안에 확인되지 않았습니다. 지갑이나 블록 탐색기에서 확인해 주세요.",
|
||||
"walletRpcIncomplete": "지갑에서 반환된 거래 데이터가 불완전합니다. MetaMask를 업데이트하거나 RPC를 변경해 보세요.",
|
||||
"depositHistory": "입금 내역",
|
||||
"depositStatusAll": "전체"
|
||||
"depositStatusAll": "전체",
|
||||
"minArrivalAmount": "최소 입금 금액: {amount} USDC",
|
||||
"belowMinArrivalAmount": "입금 금액은 최소 {amount} USDC 이상이어야 합니다"
|
||||
},
|
||||
"withdraw": {
|
||||
"title": "출금",
|
||||
@ -548,4 +550,4 @@
|
||||
"ja": "日本語",
|
||||
"ko": "한국어"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -494,7 +494,9 @@
|
||||
"txConfirmTimeout": "交易已提交,但长时间未在链上确认,请在浏览器钱包或区块浏览器中查看该笔交易。",
|
||||
"walletRpcIncomplete": "钱包返回的交易数据不完整。已改为直连接口发交易;若仍失败请更新 MetaMask 或更换 RPC。",
|
||||
"depositHistory": "充值历史",
|
||||
"depositStatusAll": "全部"
|
||||
"depositStatusAll": "全部",
|
||||
"minArrivalAmount": "最小到账金额:{amount} USDC",
|
||||
"belowMinArrivalAmount": "充值金额不能低于 {amount} USDC"
|
||||
},
|
||||
"withdraw": {
|
||||
"title": "提现",
|
||||
@ -561,4 +563,4 @@
|
||||
"ja": "日本語",
|
||||
"ko": "한국어"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -494,7 +494,9 @@
|
||||
"txConfirmTimeout": "交易已提交,但長時間未在鏈上確認,請在瀏覽器錢包或區塊瀏覽器中查看該筆交易。",
|
||||
"walletRpcIncomplete": "錢包回傳的交易資料不完整。已改為直接介面發送;若仍失敗請更新 MetaMask 或更換 RPC。",
|
||||
"depositHistory": "充值歷史",
|
||||
"depositStatusAll": "全部"
|
||||
"depositStatusAll": "全部",
|
||||
"minArrivalAmount": "最小到帳金額:{amount} USDC",
|
||||
"belowMinArrivalAmount": "充值金額不能低於 {amount} USDC"
|
||||
},
|
||||
"withdraw": {
|
||||
"title": "提現",
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user