| | |
| | | <template> |
| | | <div id="cryptos"> |
| | | <div class="withdrawl-page font-28"> |
| | | <assets-head title=""> |
| | | <img src="../../../assets/image/assets-center/exchange.png" alt="exchange-img" class="w-44 h-38" |
| | | @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')" /> |
| | | </assets-head> |
| | | <div class="px-32 pb-48"> |
| | | <!--<h1 class="font-52 pt-40 textColor">{{ $t('提币') }} USDT</h1>--> |
| | | <h1 class="font-52 pt-40 textColor">{{ $t('提币 ') + value }} </h1> |
| | | <!--<p class="text-grey font-30 mt-26">{{ $t('提币 USDT 到数字币地址') }}</p>--> |
| | | <p class="text-grey font-30 mt-26">{{ $t('提币 ') + value + $t(' 到数字币地址') }}</p> |
| | | <div @click="showSymbol = true" |
| | | class="flex border-grey items-center items-center justify-between rounded-lg mt-42 inputBackground textColor"> |
| | | <input disabled v-model="value" class="flex-1 h-100 border-none px-16 inputBackground textColor" /> |
| | | <p class="flex items-center"> |
| | | <span>{{ $t('选择币种') }}</span> |
| | | <img src="@/assets/image/icon-left_arrow.png" alt="logo" class="w-20 h-33 ml-30 mr-40" |
| | | style="transform: rotate(-90deg)" /> |
| | | </p> |
| | | <div id="cryptos" class="withdraw-wrap"> |
| | | <assets-head :title="$t('提取')" :show-left="true" :back-func="goBack"> |
| | | <img src="../../../assets/image/assets-center/exchange.png" alt="" class="withdraw-head-icon" |
| | | @click="goRouter('/cryptos/assetsCenter/rechargeWithdrawRecord')" /> |
| | | </assets-head> |
| | | |
| | | <!-- 第一部分:转账网络 + 选择币种 --> |
| | | <div class="withdraw-part withdraw-part-1"> |
| | | <div class="withdraw-row" @click="showNetworkSheet = true"> |
| | | <span class="withdraw-label">{{ $t('转账网络') }}</span> |
| | | <div class="withdraw-row-right"> |
| | | <span class="withdraw-value">{{ blockName || '–' }}</span> |
| | | <van-icon name="arrow" class="withdraw-arrow" /> |
| | | </div> |
| | | <p class="font-35 mt-44 textColor">{{ $t('区块链网络') }}</p> |
| | | <ul class="flex mt-22 flex-wrap"> |
| | | <li class="w-210 h-96 mb-20 mr-40 rounded rounded-lg border border-solid flex justify-center items-center textColor" |
| | | :class="blockchainIndex == index ? 'active' : ''" v-for="(item, index) in blockList" |
| | | :key="item.id" @click="changeBlockchain(item, index)">{{ item.blockchain_name }}</li> |
| | | </ul> |
| | | <p class="font-35 mt-22 textColor">{{ $t('地址') }}</p> |
| | | <div class="inputBackground flex items-center justify-between h-96 rounded mt-22"> |
| | | <input :placeholder="$t('长按粘贴')" class="h-full flex-1 border-none bg-none px-16 textColor" |
| | | v-model="address" /> |
| | | <div class="flex items-center"> |
| | | <span class="colorMain" @click="pastCont">{{ $t('粘贴') }}</span> |
| | | <div> |
| | | <img @click="clickCode()" src="@/assets/image/public/scan.png" alt="logo" |
| | | class="w-65 h-65 ml-20 mr-30" /> |
| | | </div> |
| | | </div> |
| | | <div class="withdraw-row" @click="showSymbol = true"> |
| | | <span class="withdraw-label">{{ $t('选择币种') }}</span> |
| | | <div class="withdraw-row-right"> |
| | | <span class="withdraw-value">{{ value }}</span> |
| | | <van-icon name="arrow" class="withdraw-arrow" /> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- 第二部分:地址 + 数量 --> |
| | | <div class="withdraw-part withdraw-part-2"> |
| | | <div class="withdraw-block"> |
| | | <div class="withdraw-label">{{ $t('地址') }}</div> |
| | | <div class="withdraw-input-row"> |
| | | <input v-model="address" type="text" class="withdraw-input" :placeholder="$t('长按粘贴')" /> |
| | | <span class="withdraw-paste" @click="pastCont">{{ $t('粘贴') }}</span> |
| | | <img src="@/assets/image/public/scan.png" alt="scan" class="withdraw-scan" @click="clickCode" /> |
| | | </div> |
| | | </div> |
| | | <div class="withdraw-block"> |
| | | <div class="withdraw-label">{{ $t('数量') }}</div> |
| | | <div class="withdraw-input-row withdraw-quantity-row"> |
| | | <input v-model="amount" type="number" class="withdraw-input" :placeholder="$t('请输入提币数量')" |
| | | maxlength="10" @input="changeInput" /> |
| | | <span class="withdraw-unit">{{ value }}</span> |
| | | <span class="withdraw-all" @click="allBtn">{{ $t('全部') }}</span> |
| | | </div> |
| | | <div class="withdraw-fee-balance"> |
| | | <span class="withdraw-fee">{{ $t('提现费用') }}: {{ fee || '0' }} {{ value }}</span> |
| | | <div class="withdraw-balance-col"> |
| | | <span>{{ $t('可用') }}: {{ getwei(usdtBalance * 1, numLenth) || '0' }} {{ value }}</span> |
| | | <span>Locked: 0 {{ value }}</span> |
| | | <span>{{ $t('可提现') }}: ≈{{ getwei(usdtBalance * 1, numLenth) || '0' }} {{ value }}</span> |
| | | </div> |
| | | </div> |
| | | <p class="font-35 mt-44 textColor">{{ $t('数量') }}</p> |
| | | <div class="inputBackground flex items-center justify-between h-96 rounded mt-22"> |
| | | <input :placeholder="$t('请输入提币数量')" maxlength="10" |
| | | class="h-full flex-1 border-none bg-none px-16 font-22 textColor" type="number" v-model="amount" |
| | | @input="changeInput" /> |
| | | <p class="flex items-center"> |
| | | <!--<span class="text-grey">USDT</span>--> |
| | | <span class="text-grey">{{ value }}</span> |
| | | <span class="colorMain ml-20 mr-30" @click="allBtn">{{ $t('全部') }}</span> |
| | | </p> |
| | | </div> |
| | | <p class="flex justify-between text-grey mt-22 font-28"> |
| | | <span>{{ $t('可用') }}</span> |
| | | <!--<span>{{ usdtBalance }} USDT</span>--> |
| | | <span>{{ getwei(usdtBalance * 1, numLenth) }} {{ value }}</span> |
| | | </p> |
| | | <p class="text-grey mt-64 font-28">{{ $t('可到账数量') }}</p> |
| | | <div class="font-40 mt-20 fon-bold "> |
| | | <span class="font-40 font-700 textColor"> {{ volume_last || '0.00' }}</span> |
| | | <!--<span class="font-32 ml-5 text-grey">USDT</span>--> |
| | | <span class="font-32 ml-5 text-grey">{{ value }}</span> |
| | | </div> |
| | | <p class="text-grey mt-22 font-28">{{ $t('提现费用') }}:{{ fee || '0.00' }} {{ value }}</p> |
| | | <p class="text-grey mt-10 textColor font-28">{{ $t('提币说明') }}: |
| | | </p> |
| | | <div class="text-grey mt-20 font-28" v-html="tip"></div> |
| | | |
| | | <p class="font-35 mt-2 textColor">{{ $t('fundsPassword') }}</p> |
| | | <div class="inputBackground flex items-center justify-between h-96 rounded mt-22"> |
| | | <input :placeholder="$t('fundsPasswordContTips')" maxlength="6" |
| | | class="h-full flex-1 border-none bg-none px-16 font-22 textColor" v-model="safeword" /> |
| | | </div> |
| | | |
| | | <van-button |
| | | class="w-768 h-100 rounded flex justify-center items-center mt-56 text-white btnMain border-none" |
| | | @click="showDetail"> |
| | | {{ $t('提现') }}</van-button> |
| | | |
| | | </div> |
| | | <van-popup v-model:show="show" position="bottom"> |
| | | <div class="pop-box relative font-28"> |
| | | <img src="@/assets/image/icon-close.png" class="w-38 h-38 absolute right-20 top-20" |
| | | @click="show = false" /> |
| | | <p class="font-38 text-center pt-60 textColor">{{ $t('确认订单') }}</p> |
| | | <p class="font-35 mt-49 text-grey text-center">{{ $t('实际到账') }}</p> |
| | | <p class="font-50 mt-23 text-center textColor">{{ volume_last }} <span class="text-grey font-35"> |
| | | {{ value }}</span></p> |
| | | <ul class="border-b-color px-32 pb-34"> |
| | | <li class="flex justify-between font-32 mt-25 items-center"> |
| | | <span class="textColor">{{ $t('提币地址') }}</span> |
| | | <span class="text-grey font-26">{{ address }}</span> |
| | | </li> |
| | | <li class="flex justify-between font-32 mt-25"> |
| | | <span class="textColor">{{ $t('主网络') }}</span> |
| | | <span class="text-grey">{{ blockName }}</span> |
| | | </li> |
| | | <li class="flex justify-between font-32 mt-25"> |
| | | <span class="textColor">{{ $t('提现来源账户') }}</span> |
| | | <span class="text-grey">{{ $t('钱包账户') }}</span> |
| | | </li> |
| | | </ul> |
| | | <ul class="px-32 mt-32"> |
| | | <li class="flex justify-between font-32 mt-25"> |
| | | <span class="textColor">{{ $t('币种') }}</span> |
| | | <span class="text-grey">{{ value }}</span> |
| | | </li> |
| | | <li class="flex justify-between font-32 mt-25"> |
| | | <span class="textColor">{{ $t('金额') }}</span> |
| | | <span class="text-grey">{{ amount }} {{ value }}</span> |
| | | </li> |
| | | <li class="flex justify-between font-32 mt-25"> |
| | | <span class="textColor">{{ $t('网络手续费') }}</span> |
| | | <span class="text-grey">{{ fee }} {{ value }}</span> |
| | | </li> |
| | | </ul> |
| | | <p class="px-32 mt-49 font-30 textColor"> |
| | | 1. {{ $t('请确保您输入了正确的提币地址并且您选择的转账网络与地址相匹配') }} |
| | | </p> |
| | | <p class="px-32 mt-40 font-30 textColor">2. {{ $t('提币订单创建后不可取消。') }}</p> |
| | | <p class="w-768 h-100 rounded flex justify-center items-center mt-56 mb-48 btnMain text-white ml-32" |
| | | @click="onConfirm"> |
| | | {{ $t('确定') }} |
| | | </p> |
| | | </div> |
| | | </van-popup> |
| | | <!-- 币种 --> |
| | | <van-action-sheet v-model:show="showSymbol" :actions="actions.filter(item => item.name !== value)" |
| | | @select="onSelect" /> |
| | | <bar-scan v-if="scancode" @ok="getResult"></bar-scan> |
| | | </div> |
| | | |
| | | <div class="withdraw-body-footer"> |
| | | <van-button class="withdraw-submit-btn" @click="onMainSubmit"> |
| | | {{ $t('提交') }} |
| | | </van-button> |
| | | </div> |
| | | |
| | | <!-- Network 选择 --> |
| | | <van-action-sheet v-model:show="showNetworkSheet" :actions="networkActions" @select="onSelectNetwork" /> |
| | | |
| | | <!-- Currency 选择 --> |
| | | <van-action-sheet v-model:show="showSymbol" :actions="actions.filter(item => item.name !== value)" @select="onSelect" /> |
| | | |
| | | <!-- Payment Password 弹框 (图二) --> |
| | | <van-popup v-model:show="showPasswordPopup" position="bottom" round class="withdraw-password-popup"> |
| | | <div class="withdraw-password-box"> |
| | | <div class="withdraw-password-head"> |
| | | <span class="withdraw-password-title">{{ $t('fundsPassword') }}</span> |
| | | <van-icon name="cross" class="withdraw-password-close" @click="showPasswordPopup = false" /> |
| | | </div> |
| | | <input v-model="safeword" type="password" class="withdraw-password-input" |
| | | :placeholder="$t('fundsPasswordContTips')" maxlength="6" /> |
| | | <div class="withdraw-password-forgot-wrap"> |
| | | <span class="withdraw-password-forgot" @click="onForgotPassword">{{ $t('忘记资金密码?') }}</span> |
| | | </div> |
| | | <van-button class="withdraw-password-submit" @click="onConfirm"> |
| | | {{ $t('提交') }} |
| | | </van-button> |
| | | </div> |
| | | </van-popup> |
| | | |
| | | <bar-scan v-if="scancode" @ok="getResult"></bar-scan> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | Popup, |
| | | ActionSheet, |
| | | showToast |
| | | } from "vant" |
| | | import Axios from "@/service/recharge.js" |
| | | import { |
| | | _withdrawFee, |
| | | _withdrawApply |
| | | } from "@/service/withdraw.api.js" |
| | | import { Popup, ActionSheet, showToast } from "vant"; |
| | | import Axios from "@/service/recharge.js"; |
| | | import { _widtGetSessionToken, _withdrawFee, _withdrawApply } from "@/service/withdraw.api.js"; |
| | | import assetsHead from "@/components/Transform/assets-head/index.vue"; |
| | | import BarScan from '@/components/Transform/scan/scan.vue'; |
| | | import { |
| | | _getAllWallet |
| | | } from "@/service/fund.api"; |
| | | import { _getAllWallet } from "@/service/fund.api"; |
| | | import { throttle } from "@/utils/index.js"; |
| | | |
| | | export default { |
| | | name: "withdrawPage", |
| | | components: { |
| | |
| | | data() { |
| | | return { |
| | | tip: '', |
| | | value: 'USDT', //选中的币种 |
| | | show: false, |
| | | value: 'USDT', |
| | | showSymbol: false, |
| | | actions: [{ |
| | | name: 'USDT' |
| | | }, { |
| | | name: 'BTC' |
| | | }, { |
| | | name: 'ETH' |
| | | }, { |
| | | name: 'USDC' |
| | | }], |
| | | showNetworkSheet: false, |
| | | showPasswordPopup: false, |
| | | actions: [{ name: 'USDT' }, { name: 'BTC' }, { name: 'ETH' }, { name: 'USDC' }], |
| | | blockList: [], |
| | | blockchainIndex: "", |
| | | usdtBalance: "", //余额 |
| | | amount: "", //提现金额 |
| | | fee: "", //手续费 |
| | | volume_last: "", //到账金额 |
| | | blockName: "", //当前链名称 |
| | | address: "", // 二维码扫描结果 |
| | | scancode: false, //控制是否使用扫一扫功能 |
| | | blockchainIndex: 0, |
| | | usdtBalance: "", |
| | | amount: "", |
| | | fee: "", |
| | | volume_last: "", |
| | | blockName: "", |
| | | address: "", |
| | | scancode: false, |
| | | withdraw_fee_type: '', |
| | | percent: 0, |
| | | numLenth: 3, |
| | | safeword: '' //资金密码 |
| | | safeword: '', |
| | | sessionToken: '' |
| | | }; |
| | | }, |
| | | computed: { |
| | | networkActions() { |
| | | return (this.blockList || []).map((item, index) => ({ |
| | | name: item.blockchain_name, |
| | | index |
| | | })); |
| | | } |
| | | }, |
| | | created() { |
| | | _widtGetSessionToken().then((res) => { |
| | | this.sessionToken = (res && res.session_token) ? res.session_token : ''; |
| | | }).catch(() => {}); |
| | | this.getBlock(this.value); |
| | | this.getAvailable(this.actions[0].name); |
| | | |
| | | |
| | | Axios.getRechargeTips({ |
| | | language: this.$i18n.locale, |
| | | token: this.$store.state.user.userInfo.token, |
| | | content_code: '003', |
| | | }).then(res => { |
| | | this.tip = res.content |
| | | }).catch(err => { |
| | | if (err.code === 'ECONNABORTED') { |
| | | showToast(this.$t('网络超时!')); |
| | | } else if (err.msg !== undefined) { |
| | | showToast(this.$t(err.msg)); |
| | | } |
| | | }) |
| | | _withdrawFee({ |
| | | amount: 1, |
| | | channel: this.value + '_' + this.blockName |
| | | }).then((res) => { |
| | | this.withdraw_fee_type = res.withdraw_fee_type |
| | | if (this.withdraw_fee_type == 'rate') { |
| | | this.percent = res.fee |
| | | } else { |
| | | this.fee = res.fee; |
| | | } |
| | | }); |
| | | this.tip = res.content; |
| | | }).catch(() => {}); |
| | | this.fetchFee(); |
| | | }, |
| | | methods: { |
| | | getwei(value, numLenth) { |
| | | console.log(numLenth) |
| | | let str = value.toString(); |
| | | let strIndex = str.indexOf('.'); |
| | | if (strIndex === -1) return str; |
| | | str = str.substring(0, strIndex + numLenth); |
| | | console.log(str, numLenth) |
| | | return str; |
| | | goBack() { |
| | | this.$router.push('/quotes/index?tabActive=1'); |
| | | }, |
| | | // 打开相机 |
| | | fetchFee() { |
| | | _withdrawFee({ |
| | | amount: 1, |
| | | channel: this.value + '_' + (this.blockName || (this.blockList[0] && this.blockList[0].blockchain_name)) |
| | | }).then((res) => { |
| | | this.withdraw_fee_type = res.withdraw_fee_type; |
| | | if (this.withdraw_fee_type === 'rate') { |
| | | this.percent = res.fee; |
| | | } else { |
| | | this.fee = res.fee; |
| | | } |
| | | }).catch(() => {}); |
| | | }, |
| | | getwei(value, numLenth) { |
| | | let str = (value || 0).toString(); |
| | | const strIndex = str.indexOf('.'); |
| | | if (strIndex === -1) return str; |
| | | return str.substring(0, strIndex + numLenth); |
| | | }, |
| | | clickCode() { |
| | | this.scancode = true; |
| | | }, |
| | | //返回扫描结果并关闭摄像头 |
| | | getResult(result) { |
| | | this.address = result; |
| | | if (result !== "") { |
| | | this.scancode = false; |
| | | } |
| | | this.address = result || ''; |
| | | if (result !== "") this.scancode = false; |
| | | }, |
| | | showDetail() { |
| | | if (this.address.length > 63 || this.address.length == 0) { |
| | | showToast(this.$t('提现地址格式错误')) |
| | | return |
| | | onMainSubmit() { |
| | | if (!this.address || this.address.length > 63) { |
| | | showToast(this.$t('提现地址格式错误')); |
| | | return; |
| | | } |
| | | if (!this.amount) { |
| | | showToast(this.$t('请输入正确数量')) |
| | | return |
| | | showToast(this.$t('请输入正确数量')); |
| | | return; |
| | | } |
| | | if (this.amount / 1 > this.usdtBalance / 1) { |
| | | showToast(this.$t('金额不足')) |
| | | return |
| | | showToast(this.$t('金额不足')); |
| | | return; |
| | | } |
| | | this.show = true; |
| | | this.showPasswordPopup = true; |
| | | }, |
| | | onSelectNetwork(item) { |
| | | this.blockchainIndex = item.index; |
| | | this.blockName = item.name; |
| | | this.showNetworkSheet = false; |
| | | this.fetchFee(); |
| | | }, |
| | | goRouter(params) { |
| | | this.$router.push({ |
| | | path: params, |
| | | query: { |
| | | type: '2', |
| | | back: "1" |
| | | } |
| | | }); |
| | | this.$router.push({ path: params, query: { type: '2', back: "1" } }); |
| | | }, |
| | | // onConfirm() { |
| | | // this.$router.push('/withdraw/withdrawSumbit') |
| | | // }, |
| | | //选中币种 |
| | | onSelect(item) { |
| | | this.amount = '' |
| | | this.volume_last = '' |
| | | this.fee = '' |
| | | this.amount = ''; |
| | | this.volume_last = ''; |
| | | this.fee = ''; |
| | | this.showSymbol = false; |
| | | this.value = item.name; |
| | | this.withdraw_fee_type = '' |
| | | this.withdraw_fee_type = ''; |
| | | this.getBlock(item.name); |
| | | this.getAvailable(item.name) |
| | | if (item.name == 'BTC' || item.name == 'ETH') { |
| | | this.numLenth = 7 |
| | | this.getAvailable(item.name); |
| | | if (item.name === 'BTC' || item.name === 'ETH') { |
| | | this.numLenth = 7; |
| | | _withdrawFee({ |
| | | amount: 1, |
| | | channel: this.value + '_' + this.blockName |
| | | }).then((res) => { |
| | | this.withdraw_fee_type = res.withdraw_fee_type |
| | | if (this.withdraw_fee_type == 'fixed') { |
| | | this.fee = res.fee; |
| | | } else { |
| | | this.percent = res.fee |
| | | } |
| | | this.withdraw_fee_type = res.withdraw_fee_type; |
| | | if (this.withdraw_fee_type === 'fixed') this.fee = res.fee; |
| | | else this.percent = res.fee; |
| | | }); |
| | | } else { |
| | | this.numLenth = 3 |
| | | this.numLenth = 3; |
| | | } |
| | | }, |
| | | //根据币种获取链地址 |
| | | getBlock(symbol) { |
| | | Axios.getBlock({ |
| | | coin: symbol |
| | | }).then((res) => { |
| | | this.blockList = res; |
| | | this.blockName = res[0].blockchain_name; |
| | | Axios.getBlock({ coin: symbol }).then((res) => { |
| | | this.blockList = res || []; |
| | | this.blockName = this.blockList[0] ? this.blockList[0].blockchain_name : ''; |
| | | this.blockchainIndex = 0; |
| | | this.fetchFee(); |
| | | }); |
| | | }, |
| | | //选中链名称 |
| | | changeBlockchain(item, index) { |
| | | this.blockchainIndex = index; |
| | | this.blockName = item.blockchain_name; |
| | | }, |
| | | //获取钱包余额 |
| | | getAvailable(symbol) { |
| | | _getAllWallet().then((res) => { |
| | | let walletList = res.extends; |
| | | let initObj = walletList.find(item => { |
| | | return item.symbol_data.toLowerCase() == symbol.toLowerCase() |
| | | }) |
| | | this.usdtBalance = initObj.volume |
| | | const walletList = (res.extends || []); |
| | | const initObj = walletList.find(item => (item.symbol_data || '').toLowerCase() === (symbol || '').toLowerCase()); |
| | | this.usdtBalance = initObj ? initObj.volume : ''; |
| | | }); |
| | | }, |
| | | //点全部 |
| | | allBtn() { |
| | | this.amount = this.getwei(this.usdtBalance, this.numLenth); |
| | | this.changeInput() |
| | | this.changeInput(); |
| | | }, |
| | | //输入改变 |
| | | changeInput() { |
| | | if (this.amount === '') { |
| | | this.volume_last = '0.00' |
| | | return |
| | | this.volume_last = '0.00'; |
| | | return; |
| | | } |
| | | if (this.amount.length > 11) { |
| | | this.amount = this.amount.slice(0, 11) |
| | | } |
| | | |
| | | if (this.withdraw_fee_type == 'part') { |
| | | if (this.amount.length > 11) this.amount = this.amount.slice(0, 11); |
| | | if (this.withdraw_fee_type === 'part') { |
| | | _withdrawFee({ |
| | | amount: this.amount, |
| | | channel: this.value + '_' + this.blockName |
| | | }).then((res) => { |
| | | console.log(res) |
| | | this.fee = res.fee; |
| | | this.volume_last = res.volume_last; |
| | | }); |
| | | } else if (this.withdraw_fee_type == 'rate') { |
| | | if (this.amount == '') { |
| | | this.volume_last = 0 |
| | | } else { |
| | | this.fee = this.getwei(this.percent * this.amount, this.numLenth) |
| | | this.volume_last = this.getwei(this.amount * 1 - this.percent * this.amount, this.numLenth) |
| | | } |
| | | } else if (this.withdraw_fee_type === 'rate') { |
| | | this.fee = this.amount ? this.getwei(this.percent * this.amount, this.numLenth) : '0'; |
| | | this.volume_last = this.amount ? this.getwei(this.amount * 1 - this.percent * this.amount, this.numLenth) : '0'; |
| | | } else { |
| | | if (this.amount * 1 < this.fee * 1) { |
| | | console.log('a') |
| | | this.volume_last = 0 |
| | | } else { |
| | | this.volume_last = this.getwei(this.amount * 1 - this.fee * 1, this.numLenth) |
| | | } |
| | | this.volume_last = (this.amount * 1 < this.fee * 1) ? '0' : this.getwei(this.amount * 1 - this.fee * 1, this.numLenth); |
| | | } |
| | | |
| | | }, |
| | | //提币提交 |
| | | onForgotPassword() { |
| | | this.showPasswordPopup = false; |
| | | // 可跳转忘记资金密码页 |
| | | }, |
| | | onConfirm: throttle(function () { |
| | | if (!this.amount) { |
| | | showToast(this.$t('请输入数量')); |
| | | return; |
| | | } |
| | | |
| | | let numReg = /^[0-9]+([.]{1}[0-9]+){0,1}$/; |
| | | const numReg = /^[0-9]+([.]{1}[0-9]+){0,1}$/; |
| | | if (!numReg.test(this.amount)) { |
| | | showToast(this.$t('请输入数字')); |
| | | return; |
| | | } |
| | | |
| | | if (!this.address) { |
| | | showToast(this.$t('请输入提现地址')); |
| | | return; |
| | | } |
| | | |
| | | if (!this.safeword) { |
| | | showToast(this.$t('fundsPasswordContTips')); |
| | | return; |
| | | } |
| | | |
| | | if (this.amount && this.address) { |
| | | // this.$router.push({ |
| | | // path: '/cryptos/withdraw/securityVerification', |
| | | // query: { |
| | | // amount: this.amount, |
| | | // from: this.address, |
| | | // channel: this.value + '_' + this.blockName |
| | | // } |
| | | // }) |
| | | // _withdrawApply({ |
| | | // session_token:this.sessionToken, |
| | | // amount:this.amount, |
| | | // from:this.address, |
| | | // channel:this.value+'_'+ this.blockName |
| | | // }).then((res)=> { |
| | | // if(res.code==0) { |
| | | // this.$router.push({ |
| | | // path:"/withdraw/withdrawSumbit" |
| | | // }); |
| | | // }else{ |
| | | // showToast(this.$t(res.msg)); |
| | | // } |
| | | // }); |
| | | _withdrawApply({ |
| | | session_token: this.sessionToken, |
| | | amount: this.amount, |
| | | safeword: this.safeword, |
| | | from: this.address, |
| | | channel: this.value + '_' + this.blockName |
| | | }).then((res) => { |
| | | |
| | | this.$router.push({ |
| | | path: "/cryptos/withdraw/withdrawSumbit" |
| | | }); |
| | | |
| | | }).catch(err => { |
| | | //console.log(err) |
| | | if (err.code == 105) { |
| | | showToast(this.$t('当前还需交易%s,才可提币', { |
| | | 'MONEY': err.msg |
| | | })); |
| | | } else if (err.code === 'ECONNABORTED') { |
| | | showToast(this.$t('网络超时!')) |
| | | } else if (err.msg !== undefined) { |
| | | showToast(this.$t(err.msg)) |
| | | } |
| | | // this.getToken() |
| | | }) |
| | | } else { |
| | | showToast(this.$t('请输入提币数量')); |
| | | } |
| | | _withdrawApply({ |
| | | session_token: this.sessionToken, |
| | | amount: this.amount, |
| | | safeword: this.safeword, |
| | | from: this.address, |
| | | channel: this.value + '_' + this.blockName |
| | | }).then(() => { |
| | | this.showPasswordPopup = false; |
| | | this.$router.push({ path: "/cryptos/withdraw/withdrawSumbit" }); |
| | | }).catch(err => { |
| | | if (err.code == 105) { |
| | | showToast(this.$t('当前还需交易%s,才可提币', { 'MONEY': err.msg })); |
| | | } else if (err.code === 'ECONNABORTED') { |
| | | showToast(this.$t('网络超时!')); |
| | | } else if (err.msg !== undefined) { |
| | | showToast(this.$t(err.msg)); |
| | | } |
| | | }); |
| | | }, 1000), |
| | | async pastCont() { |
| | | this.address = await navigator.clipboard.readText(); |
| | | try { |
| | | if (navigator.clipboard && navigator.clipboard.readText) { |
| | | this.address = await navigator.clipboard.readText(); |
| | | } |
| | | } catch (e) {} |
| | | } |
| | | } |
| | | } |
| | | }; |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |
| | | @import "@/assets/init.scss"; |
| | | |
| | | #cryptos { |
| | | .withdrawl-page { |
| | | width: 100%; |
| | | box-sizing: border-box; |
| | | font-size: 26px; |
| | | } |
| | | |
| | | .van-popup.van-popup--bottom { |
| | | border-top-left-radius: 30px; |
| | | border-top-right-radius: 30px; |
| | | } |
| | | |
| | | .pop-box { |
| | | border-top-left-radius: 30px; |
| | | border-top-right-radius: 30px; |
| | | } |
| | | |
| | | .color-blue { |
| | | color: $btn_main; |
| | | } |
| | | |
| | | .bg-grey-light { |
| | | background: $light-grey; |
| | | } |
| | | |
| | | li { |
| | | &.active { |
| | | border-color: $color_main; |
| | | color: $color_main; |
| | | } |
| | | } |
| | | |
| | | .van-button--default { |
| | | color: $text_color; |
| | | } |
| | | |
| | | .btnMain { |
| | | background: $btn_main; |
| | | } |
| | | .withdraw-wrap { |
| | | min-height: 100vh; |
| | | background: #f5f5f5; |
| | | padding-bottom: 2rem; |
| | | } |
| | | </style> |
| | | .withdraw-head-icon { |
| | | width: 1.375rem; |
| | | height: 1.1875rem; |
| | | } |
| | | /* 两个独立 div:上下边距各 20px */ |
| | | .withdraw-part { |
| | | margin: 20px 1rem; |
| | | padding: 0 1.5rem; |
| | | background: #fff; |
| | | border-radius: 0.5rem; |
| | | overflow: hidden; |
| | | } |
| | | .withdraw-body-footer { |
| | | margin: 20px 1rem 2rem; |
| | | padding: 20px 0; |
| | | } |
| | | /* 字体加大 */ |
| | | .withdraw-row { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | min-height: 4rem; |
| | | padding: 40px 0; |
| | | font-size: 34px; |
| | | } |
| | | .withdraw-label { |
| | | color: #333; |
| | | font-weight: 600; |
| | | } |
| | | .withdraw-row-right { |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | gap: 0.25rem; |
| | | } |
| | | .withdraw-value { |
| | | color: #333; |
| | | text-align: right; |
| | | } |
| | | .withdraw-arrow { |
| | | color: #999; |
| | | font-size: 34px; |
| | | flex-shrink: 0; |
| | | } |
| | | .withdraw-block { |
| | | padding: 1rem 0; |
| | | } |
| | | .withdraw-block .withdraw-label { |
| | | display: block; |
| | | margin-bottom: 0.75rem; |
| | | font-size: 34px; |
| | | color: #333; |
| | | } |
| | | .withdraw-input-row { |
| | | display: flex; |
| | | align-items: center; |
| | | background: transparent; |
| | | border-radius: 0.5rem; |
| | | padding: 0 1rem; |
| | | height: 4rem; |
| | | } |
| | | .withdraw-input { |
| | | flex: 1; |
| | | border: none; |
| | | background: transparent; |
| | | font-size: 34px; |
| | | color: #333; |
| | | outline: none; |
| | | } |
| | | .withdraw-input::placeholder { |
| | | color: #9b9b9b; |
| | | } |
| | | .withdraw-paste { |
| | | font-size: 32px; |
| | | color: #5e2bc8; |
| | | margin-left: 0.5rem; |
| | | cursor: pointer; |
| | | } |
| | | .withdraw-scan { |
| | | width: 2.25rem; |
| | | height: 2.25rem; |
| | | margin-left: 0.75rem; |
| | | cursor: pointer; |
| | | } |
| | | .withdraw-quantity-row .withdraw-unit { |
| | | font-size: 28px; |
| | | color: #9b9b9b; |
| | | margin-left: 0.5rem; |
| | | } |
| | | .withdraw-all { |
| | | font-size: 32px; |
| | | color: #5e2bc8; |
| | | margin-left: 0.75rem; |
| | | cursor: pointer; |
| | | } |
| | | .withdraw-fee-balance { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: flex-start; |
| | | margin-top: 0.75rem; |
| | | font-size: 28px; |
| | | color: #9b9b9b; |
| | | font-weight: normal; |
| | | } |
| | | .withdraw-balance-col { |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: flex-end; |
| | | font-weight: normal; |
| | | } |
| | | .withdraw-balance-col span { |
| | | line-height: 1.5; |
| | | } |
| | | .withdraw-submit-btn { |
| | | width: 100%; |
| | | margin: 20px 0; |
| | | padding: 20px 0; |
| | | border: none; |
| | | border-radius: 0.5rem; |
| | | background: linear-gradient(90deg, #a443cf, #5e2bc8); |
| | | color: #fff !important; |
| | | font-size: 38px; |
| | | font-weight: 600; |
| | | } |
| | | :deep(.withdraw-submit-btn .van-button__text) { |
| | | color: #fff !important; |
| | | } |
| | | |
| | | /* Payment Password 弹框 - 字体加大 */ |
| | | .withdraw-password-popup { |
| | | border-radius: 1rem 1rem 0 0; |
| | | } |
| | | .withdraw-password-box { |
| | | padding: 2rem 1.5rem 3rem; |
| | | background: #fff; |
| | | } |
| | | .withdraw-password-head { |
| | | position: relative; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | margin-bottom: 2.5rem; |
| | | } |
| | | .withdraw-password-title { |
| | | font-size: 42px; |
| | | font-weight: 600; |
| | | color: #333; |
| | | text-align: center; |
| | | } |
| | | .withdraw-password-close { |
| | | position: absolute; |
| | | right: 0; |
| | | top: 50%; |
| | | transform: translateY(-50%); |
| | | font-size: 38px; |
| | | color: #999; |
| | | cursor: pointer; |
| | | } |
| | | .withdraw-password-input { |
| | | width: 100%; |
| | | padding: 2rem 1rem; |
| | | background: #f6f6f6; |
| | | border: none; |
| | | border-radius: 0.5rem; |
| | | font-size: 34px; |
| | | color: #333; |
| | | box-sizing: border-box; |
| | | outline: none; |
| | | } |
| | | .withdraw-password-input::placeholder { |
| | | color: #9b9b9b; |
| | | } |
| | | .withdraw-password-forgot-wrap { |
| | | text-align: right; |
| | | margin-top: 0.75rem; |
| | | margin-bottom: 1.5rem; |
| | | } |
| | | .withdraw-password-forgot { |
| | | font-size: 32px; |
| | | color: #666; |
| | | cursor: pointer; |
| | | } |
| | | .withdraw-password-submit { |
| | | width: 100%; |
| | | border: none; |
| | | border-radius: 0.5rem; |
| | | background: linear-gradient(90deg, #a443cf, #5e2bc8); |
| | | color: #fff !important; |
| | | font-size: 38px; |
| | | font-weight: 600; |
| | | margin-bottom: 40px; |
| | | } |
| | | :deep(.withdraw-password-submit .van-button__text) { |
| | | color: #fff !important; |
| | | } |
| | | </style> |