Files
coinbus/yq/src/views/Withdrawal/index.js

321 lines
7.1 KiB
JavaScript
Raw Normal View History

2026-01-16 10:32:27 +08:00
import { Apply ,getEmailCode} from "../../api/pay"
import { GetUserAccount } from "../../api/help"
export default {
data() {
return {
params: {
coin: 'USDT',
chain: '',
amount: '',
address: "",
emailCode: "",
},
value: "",
options: [{
value: '10',
label: '10'
}, {
value: '20',
label: '20'
}, {
value: '50',
label: '50'
}, {
value: '100',
label: '100'
}, {
value: '200',
label: '200'
}, {
value: '500',
label: '500'
}, {
value: '1000',
label: '1000'
}],
coinOptions: [{
value: 'USDT',
label: 'USDT'
}, {
value: 'USDC',
label: 'USDC'
}, {
value: 'BUSD',
label: 'BUSD'
}],
chainOptions: [{
value: 'TRX',
label: 'TRX-TRC20',
disabled: false
}, {
value: 'ETH',
label: 'ETH-ERC20',
disabled: false
}, {
value: 'BSC',
label: 'BSC-BEP20',
disabled: true
}],
outerVisible: false,
innerVisible: false,
transactionData: {
orderId: "",
address: ""
},
WithdrawalLoading: false,
ConfirmationLoading: false,
CloseTransferLoading: false,
ProblemLoading: false,
dialogVisibleSuccess: false,
codeBtn: {
btnStatus: false,
btnText: "login.getCode",
btnType: "primary",
},
balances: {
total: "",
usdc: "",
usdt: "",
userId: "",
userName: ""
},
outTimer: "",
codeTimer: null,
}
},
mounted() {
this.fetchUserAccount()//请求当前余额
},
methods: {
//请求邮箱验证码
async fetchCode(params) {
const { data } = await getEmailCode(params)
if (data.code === 200) {//提现成功
this.$message({
type: 'success',
message:this.$t(`pay.mailbox`),
duration: 3000,
showClose: true,
});
} else {
//获取验证码失败清除按钮倒计时
clearTimeout(this.outTimer);
clearInterval(this.codeTimer);
//取消按钮禁用
this.codeBtn.btnStatus = false;
//按钮文字改成获取验证码
this.codeBtn.btnText = "login.getCode";
}
},
//请求申请提现
async fetchWithdrawal(params) {
this.WithdrawalLoading = true
const { data } = await Apply(params)
if (data.code === 200) {//提现成功
this.$message({
type: 'success',
message: data.msg,
duration: 3000,
showClose: true,
});
this.$router.push(`/personal`)
}
this.WithdrawalLoading = false
},
//请求当前余额
async fetchUserAccount(params) {
const { data } = await GetUserAccount(params)
this.balances = data.data
this.params.amount = this.balances.usdt
},
//点击确认提交提现
handelWithdrawal() {
let pattern = /^\d+(\.\d+)?$/; //金额只能是数字正则表达
if (!pattern.test(this.params.amount)) {
this.$message({
message: this.$t(`pay.rechargeAmount`),
type: "error",
});
return
}
if (this.params.amount <= 0) {
this.$message({
message: this.$t(`pay.paymentAmount`),
type: "error",
});
return
}
for (const key in this.params) { //判空
if (this.params[key] == "") {
switch (key) {
case "coin":
this.$message({
message: this.$t(`pay.paymentCurrency`),
type: "error",
});
break;
case "chain":
this.$message({
message: this.$t(`pay.paymentNetwork`),
type: "error",
});
break;
case "address":
this.$message({
message: this.$t(`pay.paymentAddress`),
type: "error",
});
break;
case "emailCode":
this.$message({
message: this.$t(`pay.paymentCode`),
type: "error",
});
break;
case "amount":
this.$message({
message: this.$t(`pay.paymentAmount`),
type: "error",
});
break;
default:
break;
}
return
}
}
// 判断总金额是否足够
switch (this.params.coin) {
case "USDT":
if (this.balances.usdt - this.params.amount < 0) {
this.$message({
type: 'error',
message:this.$t(`pay.Insufficient`)
});
return
}
break;
case "USDC":
if (this.balances.usdc - this.params.amount < 0) {
this.$message({
type: 'error',
message:this.$t(`pay.Insufficient`)
});
return
}
break;
case "BUSD":
if (this.balances.busd - this.params.amount < 0) {
this.$message({
type: 'error',
message:this.$t(`pay.Insufficient`)
});
return
}
break;
default:
break;
}
this.fetchWithdrawal(this.params)
},
//选择币种 金额随之变化
handelCoin(value) {
// 币种变化 金额随之变化
// switch (this.params.coin) {
// case "USDT":
// this.params.amount = this.balances.usdt
// break;
// case "USDC":
// this.params.amount = this.balances.usdc
// break;
// case "BUSD":
// this.params.amount = this.balances.busd
// break;
// default:
// break;
// }
},
//获取邮箱验证
handelCodeBtn(){
this.fetchCode()
// 获取验证码后禁用按钮
this.codeBtn.btnStatus = true;
// 按钮倒计时
this.outTimer = setTimeout(() => {
this.countDown(60);
}, 5);
},
//验证码倒计时
countDown(val) {
//判断定时器是否存在
if (this.codeTimer) {
clearInterval(this.codeTimer);
}
//按钮文字改成发送中
this.codeBtn.btnText = "login.sending";
this.codeBtn.btnStatus = false;
//setTiemOut 执行一次
// setInterval 不断执行,需要条件才会停止
let tim = val;
this.codeTimer = setInterval(() => {
tim--;
if (tim === 0) {
clearInterval(this.codeTimer);
this.codeBtn.btnStatus = false;
//按钮文字改成获取验证码
this.codeBtn.btnText = "login.getCode";
} else {
this.codeBtn.btnStatus = true;
this.codeBtn.btnText = tim;
}
}, 1000);
},
}
}