This commit is contained in:
parent
27c1c02dcf
commit
6d3a6f4358
|
|
@ -129,6 +129,10 @@ export default {
|
||||||
bankAddressPlaceholder: 'Please enter bank address',
|
bankAddressPlaceholder: 'Please enter bank address',
|
||||||
bankAccount: 'Bank Account',
|
bankAccount: 'Bank Account',
|
||||||
bankAccountPlaceholder: 'Please enter 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',
|
nextStep: 'Next Step',
|
||||||
confirmWithdraw: 'Confirm Withdraw',
|
confirmWithdraw: 'Confirm Withdraw',
|
||||||
submitSuccess: 'Withdraw application submitted',
|
submitSuccess: 'Withdraw application submitted',
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,10 @@ export default {
|
||||||
bankAddressPlaceholder: '请输入银行地址',
|
bankAddressPlaceholder: '请输入银行地址',
|
||||||
bankAccount: '银行账号',
|
bankAccount: '银行账号',
|
||||||
bankAccountPlaceholder: '请输入银行账号',
|
bankAccountPlaceholder: '请输入银行账号',
|
||||||
|
beneficiaryEnname: '收款人英文名字',
|
||||||
|
beneficiaryEnnamePlaceholder: '请输入收款人英文名字',
|
||||||
|
bankTipsTitle: '温馨提示',
|
||||||
|
bankTipsContent: '建议使用工商银行、中国银行、建设银行、招商银行、邮政储蓄银行、交通银行等大型商业银行,村镇商业银行等可能无法到账。仅支持单币种银联卡。单币种银联卡是指卡标识只有银联的借记卡,如果有银联加VISA或MasterCard一起标识的无法到账,同时为保证取款正常,请使用本人银行卡。',
|
||||||
nextStep: '下一步',
|
nextStep: '下一步',
|
||||||
confirmWithdraw: '确认取款',
|
confirmWithdraw: '确认取款',
|
||||||
submitSuccess: '取款申请已提交',
|
submitSuccess: '取款申请已提交',
|
||||||
|
|
|
||||||
|
|
@ -92,28 +92,31 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 钱包地址 -->
|
<!-- 银行提示(仅 BANK 渠道显示) -->
|
||||||
<el-form-item :label="t('withdraw.dialog.walletAddress')" prop="withdraw_address">
|
<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-input v-model="formData.withdraw_address" :placeholder="t('withdraw.dialog.walletAddressPlaceholder')" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<!-- 用户取款额外字段 (role_id >= 5) -->
|
<!-- 银行信息(BANK 渠道) -->
|
||||||
<template v-if="!isAgent">
|
<template v-if="isBankChannel && !isAgent">
|
||||||
<el-form-item :label="t('withdraw.dialog.beneficiaryName')" prop="beneficiary_name">
|
<el-form-item :label="t('withdraw.dialog.beneficiaryName')" prop="beneficiary_name">
|
||||||
<el-input v-model="formData.beneficiary_name"
|
<el-input v-model="formData.beneficiary_name"
|
||||||
:placeholder="t('withdraw.dialog.beneficiaryNamePlaceholder')" />
|
:placeholder="t('withdraw.dialog.beneficiaryNamePlaceholder')" />
|
||||||
</el-form-item>
|
</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-form-item :label="t('withdraw.dialog.bankName')" prop="beneficiary_bank_name">
|
||||||
<el-input v-model="formData.beneficiary_bank_name"
|
<el-input v-model="formData.beneficiary_bank_name"
|
||||||
:placeholder="t('withdraw.dialog.bankNamePlaceholder')" />
|
:placeholder="t('withdraw.dialog.bankNamePlaceholder')" />
|
||||||
</el-form-item>
|
</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-form-item :label="t('withdraw.dialog.bankAccount')" prop="beneficiary_bank_account">
|
||||||
<el-input v-model="formData.beneficiary_bank_account"
|
<el-input v-model="formData.beneficiary_bank_account"
|
||||||
:placeholder="t('withdraw.dialog.bankAccountPlaceholder')" />
|
:placeholder="t('withdraw.dialog.bankAccountPlaceholder')" />
|
||||||
|
|
@ -144,9 +147,11 @@ const { t } = useI18n()
|
||||||
interface Props {
|
interface Props {
|
||||||
visible: boolean
|
visible: boolean
|
||||||
channelId?: number
|
channelId?: number
|
||||||
|
channelCode?: string
|
||||||
channelInfo?: {
|
channelInfo?: {
|
||||||
id: number
|
id: number
|
||||||
symbol?: string
|
symbol?: string
|
||||||
|
channel_code?: string
|
||||||
currency?: {
|
currency?: {
|
||||||
symbol: string
|
symbol: string
|
||||||
|
|
||||||
|
|
@ -363,6 +368,21 @@ const totalDeducted = computed(() => {
|
||||||
// 快捷金额
|
// 快捷金额
|
||||||
const quickAmounts = ['100', '500', '1000', '5000']
|
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 formRef = ref<FormInstance>()
|
||||||
const formData = ref({
|
const formData = ref({
|
||||||
|
|
@ -377,6 +397,7 @@ const formData = ref({
|
||||||
withdraw_blance: '', // 可用余额使用量
|
withdraw_blance: '', // 可用余额使用量
|
||||||
// 用户取款额外字段
|
// 用户取款额外字段
|
||||||
beneficiary_name: '',
|
beneficiary_name: '',
|
||||||
|
beneficiary_enname: '',
|
||||||
beneficiary_bank_name: '',
|
beneficiary_bank_name: '',
|
||||||
swift_bic_code: '',
|
swift_bic_code: '',
|
||||||
beneficiary_bank_address: '',
|
beneficiary_bank_address: '',
|
||||||
|
|
@ -387,9 +408,8 @@ const formData = ref({
|
||||||
const formRules: FormRules = {
|
const formRules: FormRules = {
|
||||||
withdraw_address: [{ required: true, message: '请输入钱包地址', trigger: 'blur' }],
|
withdraw_address: [{ required: true, message: '请输入钱包地址', trigger: 'blur' }],
|
||||||
beneficiary_name: [{ 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' }],
|
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' }],
|
beneficiary_bank_account: [{ required: true, message: '请输入银行账号', trigger: 'blur' }],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -441,13 +461,19 @@ const initData = async () => {
|
||||||
channelList.value = res.map((item: any) => ({
|
channelList.value = res.map((item: any) => ({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
name: item.name,
|
name: item.name,
|
||||||
|
channel_code: item.channel_code || '',
|
||||||
}))
|
}))
|
||||||
} else if (res?.data) {
|
} else if (res?.data) {
|
||||||
channelList.value = res.data.map((item: any) => ({
|
channelList.value = res.data.map((item: any) => ({
|
||||||
id: item.id,
|
id: item.id,
|
||||||
name: item.name,
|
name: item.name,
|
||||||
|
channel_code: item.channel_code || '',
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
// 如果有默认渠道,设置当前渠道编码
|
||||||
|
if (channelList.value.length > 0) {
|
||||||
|
currentChannelCode.value = channelList.value[0].channel_code || ''
|
||||||
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('获取渠道列表失败', error)
|
console.error('获取渠道列表失败', error)
|
||||||
}
|
}
|
||||||
|
|
@ -610,16 +636,39 @@ const handleSubmit = async () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isAgent.value) {
|
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_name = formData.value.beneficiary_name
|
||||||
|
params.beneficiary_enname = formData.value.beneficiary_enname
|
||||||
params.beneficiary_bank_name = formData.value.beneficiary_bank_name
|
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.beneficiary_bank_account = formData.value.beneficiary_bank_account
|
||||||
|
// 银行渠道不需要钱包地址
|
||||||
|
params.withdraw_address = '--'
|
||||||
|
}
|
||||||
|
// 统一默认 -- 的字段
|
||||||
|
params.swift_bic_code = '--'
|
||||||
|
params.beneficiary_bank_address = '--'
|
||||||
|
|
||||||
await withdraw(params)
|
await withdraw(params)
|
||||||
} else {
|
} 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)
|
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>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,7 @@ defineOptions({
|
||||||
interface TableRow {
|
interface TableRow {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
|
channel_code?: string
|
||||||
channel_fee: string
|
channel_fee: string
|
||||||
api_url: string
|
api_url: string
|
||||||
api_appid: string
|
api_appid: string
|
||||||
|
|
@ -77,6 +78,7 @@ const getList = async () => {
|
||||||
if (res) {
|
if (res) {
|
||||||
tableData.value = res.map((item: any) => ({
|
tableData.value = res.map((item: any) => ({
|
||||||
...item,
|
...item,
|
||||||
|
symbol:item.currency.symbol,
|
||||||
statusStr: item.status === 1 ? '正常' : '禁用',
|
statusStr: item.status === 1 ? '正常' : '禁用',
|
||||||
}))
|
}))
|
||||||
total.value = res.length
|
total.value = res.length
|
||||||
|
|
@ -99,6 +101,7 @@ const handleWithdraw = (row: TableRow) => {
|
||||||
currentChannelInfo.value = {
|
currentChannelInfo.value = {
|
||||||
id: row.id,
|
id: row.id,
|
||||||
name: row.name,
|
name: row.name,
|
||||||
|
channel_code: row.channel_code,
|
||||||
currency: row.currency || 'USD'
|
currency: row.currency || 'USD'
|
||||||
}
|
}
|
||||||
withdrawDialogVisible.value = true
|
withdrawDialogVisible.value = true
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ export const tableColumns = [
|
||||||
{ label: '渠道费用', prop: 'channel_fee', isNumber: true },
|
{ label: '渠道费用', prop: 'channel_fee', isNumber: true },
|
||||||
{
|
{
|
||||||
label: '出金货币',
|
label: '出金货币',
|
||||||
prop: 'currency.symbol',
|
prop: 'symbol',
|
||||||
type: 'select',
|
type: 'select',
|
||||||
placeholder: '请选择入金货币',
|
placeholder: '请选择入金货币',
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue