This commit is contained in:
2026-06-15 17:20:40 +08:00
parent 27c1c02dcf
commit 6d3a6f4358
5 changed files with 102 additions and 21 deletions

View File

@ -129,6 +129,10 @@ export default {
bankAddressPlaceholder: 'Please enter bank address',
bankAccount: 'Bank Account',
bankAccountPlaceholder: 'Please enter bank account',
beneficiaryEnname: 'Beneficiary English Name',
beneficiaryEnnamePlaceholder: 'Please enter beneficiary English name',
bankTipsTitle: 'Warm Reminder',
bankTipsContent: 'It is recommended to use large commercial banks such as ICBC, BOC, CCB, CMB, PSBC, or BOCOM. Rural commercial banks may not be able to receive the transfer. Only single-currency UnionPay cards are supported. A single-currency UnionPay card is a debit card with only UnionPay logo. Cards with both UnionPay and VISA or MasterCard logos cannot receive transfers. To ensure normal withdrawal, please use your own bank card.',
nextStep: 'Next Step',
confirmWithdraw: 'Confirm Withdraw',
submitSuccess: 'Withdraw application submitted',

View File

@ -129,6 +129,10 @@ export default {
bankAddressPlaceholder: '请输入银行地址',
bankAccount: '银行账号',
bankAccountPlaceholder: '请输入银行账号',
beneficiaryEnname: '收款人英文名字',
beneficiaryEnnamePlaceholder: '请输入收款人英文名字',
bankTipsTitle: '温馨提示',
bankTipsContent: '建议使用工商银行、中国银行、建设银行、招商银行、邮政储蓄银行、交通银行等大型商业银行村镇商业银行等可能无法到账。仅支持单币种银联卡。单币种银联卡是指卡标识只有银联的借记卡如果有银联加VISA或MasterCard一起标识的无法到账同时为保证取款正常请使用本人银行卡。',
nextStep: '下一步',
confirmWithdraw: '确认取款',
submitSuccess: '取款申请已提交',

View File

@ -92,28 +92,31 @@
</div>
</div>
<!-- 钱包地址 -->
<el-form-item :label="t('withdraw.dialog.walletAddress')" prop="withdraw_address">
<!-- 银行提示 BANK 渠道显示 -->
<div v-if="isBankChannel" class="bank-tips">
<div class="tips-title">{{ t('withdraw.dialog.bankTipsTitle') }}</div>
<div class="tips-content">{{ t('withdraw.dialog.bankTipsContent') }}</div>
</div>
<!-- 钱包地址TRC/ERC 渠道 -->
<el-form-item v-if="isCryptoChannel" :label="t('withdraw.dialog.walletAddress')" prop="withdraw_address">
<el-input v-model="formData.withdraw_address" :placeholder="t('withdraw.dialog.walletAddressPlaceholder')" />
</el-form-item>
<!-- 用户取款额外字段 (role_id >= 5) -->
<template v-if="!isAgent">
<!-- 银行信息BANK 渠道 -->
<template v-if="isBankChannel && !isAgent">
<el-form-item :label="t('withdraw.dialog.beneficiaryName')" prop="beneficiary_name">
<el-input v-model="formData.beneficiary_name"
:placeholder="t('withdraw.dialog.beneficiaryNamePlaceholder')" />
</el-form-item>
<el-form-item :label="t('withdraw.dialog.beneficiaryEnname')" prop="beneficiary_enname">
<el-input v-model="formData.beneficiary_enname"
:placeholder="t('withdraw.dialog.beneficiaryEnnamePlaceholder')" />
</el-form-item>
<el-form-item :label="t('withdraw.dialog.bankName')" prop="beneficiary_bank_name">
<el-input v-model="formData.beneficiary_bank_name"
:placeholder="t('withdraw.dialog.bankNamePlaceholder')" />
</el-form-item>
<el-form-item :label="t('withdraw.dialog.swiftCode')" prop="swift_bic_code">
<el-input v-model="formData.swift_bic_code" :placeholder="t('withdraw.dialog.swiftCodePlaceholder')" />
</el-form-item>
<el-form-item :label="t('withdraw.dialog.bankAddress')" prop="beneficiary_bank_address">
<el-input v-model="formData.beneficiary_bank_address"
:placeholder="t('withdraw.dialog.bankAddressPlaceholder')" />
</el-form-item>
<el-form-item :label="t('withdraw.dialog.bankAccount')" prop="beneficiary_bank_account">
<el-input v-model="formData.beneficiary_bank_account"
:placeholder="t('withdraw.dialog.bankAccountPlaceholder')" />
@ -144,9 +147,11 @@ const { t } = useI18n()
interface Props {
visible: boolean
channelId?: number
channelCode?: string
channelInfo?: {
id: number
symbol?: string
channel_code?: string
currency?: {
symbol: string
@ -363,6 +368,21 @@ const totalDeducted = computed(() => {
//
const quickAmounts = ['100', '500', '1000', '5000']
// props channelInfo
const currentChannelCode = computed(() => {
return props.channelCode || props.channelInfo?.channel_code || ''
})
// TRC/ERC
const isCryptoChannel = computed(() => {
return ['TRC', 'ERC', "ADJUST"].includes(currentChannelCode.value)
})
// BANK
const isBankChannel = computed(() => {
return currentChannelCode.value === 'BANK'
})
//
const formRef = ref<FormInstance>()
const formData = ref({
@ -377,6 +397,7 @@ const formData = ref({
withdraw_blance: '', // 使
//
beneficiary_name: '',
beneficiary_enname: '',
beneficiary_bank_name: '',
swift_bic_code: '',
beneficiary_bank_address: '',
@ -387,9 +408,8 @@ const formData = ref({
const formRules: FormRules = {
withdraw_address: [{ required: true, message: '请输入钱包地址', trigger: 'blur' }],
beneficiary_name: [{ required: true, message: '请输入收款人姓名', trigger: 'blur' }],
beneficiary_enname: [{ required: true, message: '请输入收款人英文名字', trigger: 'blur' }],
beneficiary_bank_name: [{ required: true, message: '请输入银行名称', trigger: 'blur' }],
swift_bic_code: [{ required: true, message: '请输入SWIFT代码', trigger: 'blur' }],
beneficiary_bank_address: [{ required: true, message: '请输入银行地址', trigger: 'blur' }],
beneficiary_bank_account: [{ required: true, message: '请输入银行账号', trigger: 'blur' }],
}
@ -441,13 +461,19 @@ const initData = async () => {
channelList.value = res.map((item: any) => ({
id: item.id,
name: item.name,
channel_code: item.channel_code || '',
}))
} else if (res?.data) {
channelList.value = res.data.map((item: any) => ({
id: item.id,
name: item.name,
channel_code: item.channel_code || '',
}))
}
//
if (channelList.value.length > 0) {
currentChannelCode.value = channelList.value[0].channel_code || ''
}
} catch (error) {
console.error('获取渠道列表失败', error)
}
@ -610,16 +636,39 @@ const handleSubmit = async () => {
}
if (isAgent.value) {
//
// -
if (isCryptoChannel.value) {
// - --
params.beneficiary_name = '--'
params.beneficiary_enname = '--'
params.beneficiary_bank_name = '--'
params.beneficiary_bank_account = '--'
} else if (isBankChannel.value) {
// -
params.beneficiary_name = formData.value.beneficiary_name
params.beneficiary_enname = formData.value.beneficiary_enname
params.beneficiary_bank_name = formData.value.beneficiary_bank_name
params.swift_bic_code = formData.value.swift_bic_code
params.beneficiary_bank_address = formData.value.beneficiary_bank_address
params.beneficiary_bank_account = formData.value.beneficiary_bank_account
//
params.withdraw_address = '--'
}
// --
params.swift_bic_code = '--'
params.beneficiary_bank_address = '--'
await withdraw(params)
} else {
//
// - --
if (isBankChannel.value) {
params.withdraw_address = '--'
}
params.beneficiary_name = '--'
params.beneficiary_enname = '--'
params.beneficiary_bank_name = '--'
params.beneficiary_bank_account = '--'
params.swift_bic_code = '--'
params.beneficiary_bank_address = '--'
await agentWithdraw(params)
}
@ -853,5 +902,26 @@ const handleSubmit = async () => {
}
}
}
.bank-tips {
margin-bottom: 20px;
padding: 12px 16px;
background: #fffbe6;
border: 1px solid #ffe58f;
border-radius: 4px;
.tips-title {
margin-bottom: 8px;
font-size: 14px;
font-weight: 500;
color: #d48806;
}
.tips-content {
font-size: 13px;
color: #8c8c8c;
line-height: 1.6;
}
}
}
</style>

View File

@ -45,6 +45,7 @@ defineOptions({
interface TableRow {
id: number
name: string
channel_code?: string
channel_fee: string
api_url: string
api_appid: string
@ -77,6 +78,7 @@ const getList = async () => {
if (res) {
tableData.value = res.map((item: any) => ({
...item,
symbol:item.currency.symbol,
statusStr: item.status === 1 ? '正常' : '禁用',
}))
total.value = res.length
@ -99,6 +101,7 @@ const handleWithdraw = (row: TableRow) => {
currentChannelInfo.value = {
id: row.id,
name: row.name,
channel_code: row.channel_code,
currency: row.currency || 'USD'
}
withdrawDialogVisible.value = true

View File

@ -8,7 +8,7 @@ export const tableColumns = [
{ label: '渠道费用', prop: 'channel_fee', isNumber: true },
{
label: '出金货币',
prop: 'currency.symbol',
prop: 'symbol',
type: 'select',
placeholder: '请选择入金货币',
},