<template> <view class="content"> <view class="box padding-b-30"> <view class="titlebox"> <view class="titlename padding-l-30"> 兑换文票 </view> </view> <view class="row-box"> <view class="title">兑入云票</view> <view class="row flex"> <view class="flex name-box"> <image class="nametip" src="../../static/icon/quick2.png" mode="scaleToFill"></image> <text class="padding-l-10 name">文票</text> </view> <input class="input margin-l-10" type="number" v-model="ticketnum" placeholder="请输入整数" placeholder-class="placeholder" /> </view> </view> <view class="flex-center"> <image class="tabquick" src="../../static/icon/quick0.png" mode="scaleToFill"></image> </view> <view class="row-box"> <view class="title">兑出趣豆<text class="font-size-sm">(余额:{{userInfo.integral}})</text></view> <view class="row flex"> <view class="flex name-box"> <image class="nametip" src="../../static/icon/quick1.png" mode="scaleToFill"></image> <text class="padding-l-10 name">趣豆</text> </view> <view class="input margin-l-10" type="number" placeholder="0.00" placeholder-class="placeholder"> {{ticketnum*ratio}} </view> </view> </view> <view class="row-box"> <view class="title">输入账号</view> <view class="row flex"> <view class="flex name-box"> <image class="nametip" src="../../static/icon/quick3.png" mode="scaleToFill"></image> <text class="padding-l-10 name">文交所账号</text> </view> <input class="input margin-l-10" type="number" v-model="card" placeholder="请输入文交所账号" placeholder-class="placeholder" /> </view> </view> <button class="add-btn up" :class="{ action: loding }" @click="!loding ? confirm() : ''">确认兑换</button> </view> <navigator url="./quickList"> <view class="box margin-t-30"> <view class="titlebox flex"> <view class="flex-start"> <image class="nametip" src="../../static/icon/quick4.png" mode="scaleToFill"></image> <text class="padding-l-10">兑换记录</text> </view> <image class="nextTip" src="../../static/img/back.png" mode="scaleToFill"></image> </view> </view> </navigator> <view class="echart-box"><l-echart ref="chart" @finished="init"></l-echart></view> </view> </template> <script> import { getUserInfo, admintrade, trade } from '@/api/user.js'; import { getTicket, getExchange } from '@/api/quick.js'; import { mapMutations, mapState } from 'vuex'; export default { data() { return { ticketnum: '', //兑换文票数 integral: '', //兑换所需要的积分数 card: '', //转账卡号 ratio: 1, //兑换比例 loding: false, type: '1' }; }, onLoad(options) { // this.dataUp(); // 加载文票比例 this.getTicket(); }, computed: { ...mapState('user', ['userInfo']) }, methods: { ...mapMutations('user', ['setUserInfo', 'login']), // 更新数据 dataUp() { let obj = this; getUserInfo({}) .then(e => { obj.login(); // 保存返回用户数据 obj.setUserInfo(e.data); }) .catch(e => { console.log(e); }); }, getTicket() { getTicket().then( (res) => { console.log(res); if (res.data.v.CurPrice != 0 && res.data.integral_price != 0) { this.ratio = +(res.data.v.CurPrice / res.data.integral_price).toFixed(2); } else { this.loding = true; uni.showModal({ title: '提示', content: '当前兑换暂未开放', showCancel: false, }); } } ).catch( (res) => { console.log(res); } ) }, // 提交 confirm() { let obj = this; obj.loding = true; if (!this.ticketnum) { uni.showToast({ title: '请输入兑换数量', icon: 'error' }); return } if (this.ticketnum.indexOf('.') > -1) { uni.showToast({ title: '请输入整数', icon: 'error' }); return } // if(this.ticketnum*this.ratio>this.userInfo.integral){ // uni.showToast({ // title: '趣豆不足无法兑换', // icon:'error' // }); // return // } if (!this.card) { uni.showToast({ title: '请输入社交账号', icon: 'error' }); return } let data = { account: obj.card, //账号 extract_ticket: obj.ticketnum, //数量 }; uni.showModal({ title: '提示', content: `本人委托王伟将本人所持有的 53年18K一分券送至中藏仓储有限公司进行鉴定托管,在整个鉴定托管过程中,该委托人的一切行为,均代表我本人,与本人的行为具有同等法律效力,我本人将承担该委托人行为的全部法律后果和责任。`, cancelText: '不同意', confirmText: '我同意', success: res => { if (res.confirm) { getExchange(data) .then(e => { // 允许按钮点击 obj.loding = false; // 初始化提现金额 obj.ticketnum = ''; uni.showToast({ title: e.msg, duration: 2000, position: 'top' }); obj.dataUp(); }) .catch(e => { obj.$api.msg(e.msg); obj.loding = false; }); } }, fail: (err) => { console.log(err); } }); } } }; </script> <style lang="scss"> page { height: 100%; } .content { padding-top: 30rpx; .box { background-color: #FFF; line-height: 1; .titlebox { padding: 30rpx; font-weight: bold; font-size: $font-lg; border-bottom: 1px solid $border-color-base; .titlename { border-left: 2px solid $color-red ; } .nextTip { width: 20rpx; height: 40rpx; } } .tabquick { width: 70rpx; height: 70rpx; } .nametip { width: 40rpx; height: 40rpx; } .row-box { padding: 30rpx; .title { font-size: $font-sm; color: $font-color-light; padding-bottom: 20rpx; } .row { position: relative; .name-box { font-weight: bold; font-size: $font-base; width: 220rpx; .name { flex-grow: 1; border-right: 2px solid $font-color-disabled; margin-right: 10rpx; } } .input { flex: 1; font-size: 30rpx; height: 60rpx; line-height: 60rpx; color: $font-color-dark; border-bottom: 1px solid $border-color-light; } } } } } .add-btn { height: 80rpx; border-radius: 10rpx; margin: 0 50rpx; margin-top: 30rpx; color: #FFF; background-color: $uni-color-error ; &.action { background-color: $border-color-light ; } } </style>