投屏pc端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

397 lines
11 KiB

<template>
<div class="global-width">
<div class="container">
<!--当前位置-->
<div class="hc-breadcrumb">
<span class="hc-color4" @click="goBack">{{$route.params.type == 1 ? $t('币币账户') : $t('法币账户')}}</span>
<i class="hc-breadcrumb-icon"></i>
<span class="margin0">{{$t('划转')}}</span>
</div>
<div class="hc-breadcrumb second-position">
<span class="hc-color1">
<img src="../../assets/images/icon-money.png" />{{transferCoin}} {{$t('划转')}}
</span>
</div>
<div class="recharge-warp">
<div class="withdrawmoney-box">
<div class="form-box">
<div class="form-group">
<label class="form-label">{{$t('选择划转币种')}}</label>
<div class="form-control">
<div class="hc-form-warp" @click="showCoin = !showCoin" v-if="transferCoin">
<img class="hc-select-img" :src="'data:img/jpg;base64,' + transferCoinImg" v-if="transferCoinImg">
<span class="hc-select-span1">{{transferCoin}}</span>
<span class="hc-form-down-icon">
<i class="fa-caret-down"></i>
</span>
</div>
<div class="hc-form-warp" @click="showCoin = !showCoin" v-else>
<span class="hc-select-span1">{{$t('选择划转币种')}}</span>
<span class="hc-form-down-icon">
<i class="fa-caret-down"></i>
</span>
</div>
<!-- 选择币种弹框 -->
<div class="choose-currencies" v-if="showCoin">
<div class="hc-select-options" v-for="item of allCoinList" :key="item.id" @click="chooseCoin(item)">
<img class="hc-select-img" :src="'data:img/jpg;base64,' + item.image" v-if="item.image">
<span class="hc-select-span1">{{item.id}}</span>
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="form-label">
{{$t('划转方向')}}
</label>
<div class="address-form-div2">
<div class="form-control">
<el-input class="text-input" v-model="transferFrom" type="text" readonly>
</el-input>
</div>
</div>
<div class="address-form-div4" @click="changeType">
<img src="../../assets/images/trade/icon-equal.png">
</div>
<div class="address-form-div2">
<div class="form-control">
<el-input class="text-input" v-model="transferTo" type="text" readonly>
</el-input>
</div>
</div>
</div>
<div class="form-group">
<label class="form-label">
{{$t('划转数量')}}
<span class="hc-color3">( {{$t('可用')}}:{{account}} )</span>
</label>
<div class="form-control">
<el-input class="text-input" :placeholder="$t('请输入划转数量')" v-model="amount" type="text" clearable autocomplete="off" @keyup.enter.native="submit">
</el-input>
</div>
</div>
<div class="form-group">
<div class="address-form-div2">
<label class="form-label">{{$t('到账数量')}}</label>
<div class="form-control">
<input type="text" class="text-input" :value="summary" readonly>
</div>
</div>
<div class="address-form-div3">
<label class="form-label">{{$t('支付密码')}}</label>
<div class="form-control">
<el-input class="text-input" :placeholder="$t('请输入支付密码')" v-model="password" type="password" clearable autocomplete="off" @keyup.enter.native="submit">
</el-input>
</div>
</div>
</div>
<div class="form-group">
<el-button class="form-submit-btn" type="primary" :loading="true" v-if="loading">{{$t('提交中...')}}</el-button>
<el-button class="form-submit-btn" type="primary" @click="submit" v-else>{{$t('确认划转')}}</el-button>
</div>
</div>
</div>
<div class="address-line"></div>
<div class="recharge-reminder">
<div class="recharge-r-top">
<i class="fa-exclamation"></i>
<span>{{$t('温馨提示')}}</span>
</div>
<p>{{$t('1. 最小划转数量为:')}}{{minVolumn}}{{transferCoin}}{{$t(',最大划转数量为:')}}{{maxVolumn}}{{transferCoin}}</p>
<p>{{$t('2. 请务必确认电脑及浏览器安全,防止信息被篡改或泄露。')}}</p>
</div>
<div class="address-line"></div>
<div class="address-bot">
<div class="address-div1">
<div class="address-div2">{{$t('划转记录')}}</div>
<!-- <span class="hc-breadcrumb-r">{{$t('查看更多')}}</span> -->
</div>
<table class="table">
<thead>
<tr>
<th>
<div class="cell">{{$t('时间')}}</div>
</th>
<th>
<div class="cell">{{$t('币种')}}</div>
</th>
<th>
<div class="cell">{{$t('数量')}}</div>
</th>
<th>
<div class="cell">{{$t('类型')}}</div>
</th>
<th>
<div class="cell">{{$t('备注')}}</div>
</th>
</tr>
</thead>
<tbody>
<tr v-for="item of recordsList" :key="item.id">
<td>
<div class="cell">{{item.createDatetime | dateFormat('YYYY-MM-DD hh:mm:ss')}}</div>
</td>
<td>
<div class="cell">{{item.coinId}}</div>
</td>
<td>
<div class="cell">{{item.amount}}</div>
</td>
<td>
<div class="cell">{{$t('划转')}}</div>
</td>
<td>
<div class="cell">{{item.remark}}</div>
</td>
</tr>
</tbody>
</table>
<no-content :isText="$t('暂无数据')" :isContent="isContent"></no-content>
<el-pagination class="list-pages" background layout="prev, pager, next" v-show="!isContent" :page-count="pageTotal" :current-page="currentPage" @next-click="pagesChange" @prev-click="pagesChange" @current-change="pagesChange"></el-pagination>
</div>
</div>
</div>
</div>
</template>
<script>
import { mapState } from 'vuex'
import noContent from '@/components/no_content'
export default {
name: 'withdraw',
components: {
noContent,
},
data() {
return {
transferCoin: '', //划转币种
showCoin: false, //选择币种弹窗
assetsCaseCode: 'COIN_TO_COIN', //划转转出
targetAssetsCaseCode: 'F_COIN', //划转转入
amount: '', //划转数量
password: '', //支付密码
account: 0, //余额
fee: 0, //提币手续费
minFee: 0, //最低手续费
minVolumn: 0, //最小提币数量
maxVolumn: 0, //最大提币数量
loading: false,
recordsList: [], //划转记录
isContent: false,
pageTotal: 0, //总页数
currentPage: 1, //默认当前页
}
},
computed: {
...mapState('trend', ['allCoinList']),
transferCoinImg() { //币种的图片
let img;
this.allCoinList.forEach(item => {
if (item.id == this.transferCoin) {
img = item.image;
}
})
return img;
},
transferFrom() {
let text;
text = this.assetsCaseCode == 'COIN_TO_COIN' ? this.$t('币币账户') : this.$t('法币账户');
return text;
},
transferTo() {
let text;
text = this.targetAssetsCaseCode == 'COIN_TO_COIN' ? this.$t('币币账户') : this.$t('法币账户');
return text;
},
summary() { //实际扣除数量
let value = 0;
let remainder = this.common.accAdd(1, this.fee);
if(this.amount > 0) {
if(this.common.accMul(this.fee, this.amount) < this.minFee) { //最低手续费
value = this.common.accAdd(this.amount, this.minFee).toFixed(8);
} else {
value = this.common.accMul(this.amount, remainder).toFixed(8);
}
}
return value;
}
},
methods: {
getTransferInfo() { //获取提币信息
this.getAxios('/api/user/coin/list')
.then(data => {
data.data.forEach(item => {
if(item.id == this.transferCoin) {
this.fee = item.changeCaseFee;
this.minFee = item.changeCaseMinFee;
this.minVolumn = item.changeCaseMinLimit;
this.maxVolumn = item.changeCaseMaxLimit;
}
})
})
},
getBalance() { //获取余额
this.getAxios('/api/user/assets/list?type=' + this.assetsCaseCode)
.then(data => {
let list = data.data;
list.forEach(item => {
if(item.coinId == this.transferCoin) {
this.account = item.normalAmount;
}
})
})
},
getRecords(pages) { //获取提币记录
let params = {
data: {
assetsType: 'A_I_T_NORMAL',
dealCode: 'assets_transfer',
//caseCode: this.listType == 1 ? 'COIN_TO_COIN' : 'F_COIN',
},
limit: 10,
page: pages
}
this.currentPage = pages;
this.postAxios('/api/user/assets/flow/page', params)
.then(data => {
this.pageTotal = data.data.pages;
if (data.data.total == 0) {
this.isContent = true;
} else {
this.isContent = false;
}
this.recordsList = [];
data.data.records.forEach(item => {
this.recordsList.push(item);
})
})
},
pagesChange(pages) {
this.getRecords(pages);
},
chooseCoin(item) { //选择币种
this.transferCoin = item.id;
this.showCoin = false;
this.getTransferInfo();
this.getBalance();
this.getRecords(1);
},
changeType() { //账户切换
if(this.assetsCaseCode == 'COIN_TO_COIN') {
this.assetsCaseCode = 'F_COIN';
this.targetAssetsCaseCode = 'COIN_TO_COIN';
} else {
this.assetsCaseCode = 'COIN_TO_COIN';
this.targetAssetsCaseCode = 'F_COIN';
}
this.getBalance();
},
submit() {
if(this.loading) {
return;
}
if(!this.amount) {
this.$message.error(this.$t('请输入划转数量!'));
return;
}
// if(this.amount < this.minVolumn) {
// this.$message.error(this.$t('划转数量不能小于最小划转数量') + this.minVolumn + this.transferCoin);
// return;
// }
// if(this.amount > this.maxVolumn) {
// this.$message.error(this.$t('划转数量不能大于最大划转数量') + this.maxVolumn + this.transferCoin);
// return;
// }
if(!this.password) {
this.$message.error(this.$t('请输入支付密码!'));
return;
}
this.loading = true;
let params = {
coinId: this.transferCoin,
amount: this.amount,
assetsCaseCode: this.assetsCaseCode,
targetAssetsCaseCode: this.targetAssetsCaseCode,
payPassword: this.password
}
this.putAxios('/api/user/assets/transfer', params)
.then(() => {
this.$message.success(this.$t('划转提交成功!'));
this.loading = false;
this.getRecords(1);
this.getBalance();
this.clearData();
})
.catch(() => {
this.loading = false;
})
},
clearData() {
this.amount = '';
this.password = '';
},
goBack() {
if(this.$route.params.type == 1) {
this.$router.push('/assets/coincoin');
} else {
this.$router.push('/assets/currency');
}
},
},
created() {
this.transferCoin = this.$route.params.id;
if(this.$route.params.type == 2) {
this.assetsCaseCode = 'F_COIN';
this.targetAssetsCaseCode = 'COIN_TO_COIN';
}
this.getTransferInfo();
this.getBalance();
this.getRecords(1);
}
}
</script>
<style scoped>
.address-form-div4 {
width: 32px;
display: inline-block;
margin: 0 9px;
}
</style>