2025-04-19 15:38:48 +08:00
|
|
|
|
<template>
|
|
|
|
|
<view class="container">
|
|
|
|
|
<web-view style="visibility: hidden; height: 1px; width: 100%;" :webview-styles="webviewStyles" src="/static/web3/transfer-web.html" @message="handleWebViewMessage"
|
|
|
|
|
:fullscreen="false" :update-title="false"></web-view>
|
|
|
|
|
<view style="margin-bottom: 30rpx;">
|
|
|
|
|
<u-notice-bar bgColor="#fff" color="black" :text="text1"></u-notice-bar>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 餘額 -->
|
|
|
|
|
<view class="cards">
|
|
|
|
|
<template v-if="balabces">
|
|
|
|
|
<cardVue @nowCoinType="getNowCoin" @recharge="showUpgradeModal1" @changeMoney="toChangeTransfer" @blanceInfos="toBlanceDetail" :balabces="balabces"
|
|
|
|
|
:incomes="allsettlefee"/>
|
|
|
|
|
</template>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 投資機會 -->
|
|
|
|
|
<view class="invest">
|
|
|
|
|
<view class="uni-flex uni-row"
|
|
|
|
|
style="border-bottom: 1rpx solid #E7E7E7;font-size: 28rpx; padding-bottom: 8px;">
|
|
|
|
|
<view class="uni-flex-item">
|
|
|
|
|
<u-tabs :current="currentTab" inactiveStyle="{color: rgba(142, 142, 147, 1)}"
|
|
|
|
|
:list="[{name:'投資機會'},{name:'我的投資'}]" @click="switchTab"></u-tabs>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="uni-flex-item" style="text-align: end; font-size: 24rpx; line-height: 44px;" @click="more">
|
|
|
|
|
查看全部</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view style="height: calc(100vh - 360px); overflow-y: scroll;">
|
|
|
|
|
<view v-if="list.length === 0" class="nodata">暫無數據</view>
|
|
|
|
|
<view v-for="item in list" :key="item.id">
|
|
|
|
|
<item :detail="item" />
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
|
|
|
|
|
</view>
|
|
|
|
|
<u-popup :show="modalintMoney" mode="bottom" @close="modalintMoney = false" round="10" :closeable="false">
|
|
|
|
|
<view class="uni-flex uni-column" style="text-align: center; padding: 24px;">
|
|
|
|
|
<view class="uni-flex-item">
|
|
|
|
|
<canvas canvas-id="qrcodes"
|
|
|
|
|
:style="{width: `${qrcodeSize}px`, height: `${qrcodeSize}px`, margin:'0px auto'}" />
|
|
|
|
|
</view>
|
|
|
|
|
<view class="uni-flex-item" style="font-size: 12px; padding: 12px; color: #333;">掃一掃進行充值</view>
|
|
|
|
|
<!-- <view class="uni-flex-item" style="font-size: 16px; padding: 12px;text-align: start;">請選擇需要充值的貨幣</view>
|
|
|
|
|
<view class="uni-flex uni-row" style="justify-content: space-around;">
|
|
|
|
|
<view @click="checkCoin = coin" class="coinTag" :class="{'checked':checkCoin === coin}"
|
|
|
|
|
v-for="coin in coinType" :key="coin">{{coin}}</view>
|
|
|
|
|
<view @click="checkCoin = 'USDT'" class="coinTag" :class="{'checked':checkCoin === 'USDT'}">USDT
|
|
|
|
|
</view>
|
|
|
|
|
</view> -->
|
|
|
|
|
<view class="uni-flex-item"
|
|
|
|
|
style="background-color: #E7E7E7;padding: 12px 0; margin-top: 12px; border-radius: 8px;"
|
|
|
|
|
@tap="copyAdress(userLoacalAddress)">
|
|
|
|
|
錢包地址:<text style="flex: 1;">️{{userMoneyAdressOptions1(userLoacalAddress)}}</text>
|
|
|
|
|
<image src="/static/copy.png" style="width: 28rpx;height: 28rpx; margin-left: 18px;"></image>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</u-popup>
|
|
|
|
|
<!-- 密碼彈窗 -->
|
|
|
|
|
<view class="modal-transfer" v-if="modalName">
|
|
|
|
|
<view class="modal-content-transfer">
|
|
|
|
|
<view class="modal-header-transfer">
|
|
|
|
|
<u-tabs :current="moneyTab" inactiveStyle="{color: rgba(142, 142, 147, 1)}"
|
|
|
|
|
:list="[{name:'劃轉到量化交易'},{name:'劃轉到錢包'}]" @click="switchMoneytab"></u-tabs>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="modal-body-transfer">
|
|
|
|
|
<view class="modal-item-transfer zf_mod_item-transfer">
|
|
|
|
|
<text class="modal-label-transfer">郵箱:</text>
|
|
|
|
|
<view class="">{{userInfos.email}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="modal-item-transfer zf_mod_item-transfer">
|
|
|
|
|
<text class="modal-label-transfer">轉換金額:</text>
|
|
|
|
|
<u--input color="#fff" style="width: 70%;" v-model="transferIcon"
|
|
|
|
|
border="none"></u--input>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="modal-item-transfer zf_mod_item-transfer">
|
|
|
|
|
<text class="modal-label-transfer">轉換類型:</text>
|
|
|
|
|
<picker mode="selector" :range="biTypes" @change="onPickerChange" style="width: 70%;">
|
|
|
|
|
<view>{{selectedOption ? selectedOption : '請選擇'}}</view>
|
|
|
|
|
</picker>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="modal-item-transfer zf_mod_item-transfer">
|
|
|
|
|
<text class="modal-label-transfer">支付密碼:</text>
|
|
|
|
|
<u--input color="#fff" style="width: 70%;" :value="zhifuMima" :password="showPassword"
|
|
|
|
|
border="none" @input="handleInput"></u--input>
|
|
|
|
|
<img :src="!showPassword ? showpwdImg : hidepwdImg" @tap="showPassword = !showPassword"
|
|
|
|
|
style="width: 50rpx;height: 50rpx;"></img>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="modal-item-transfer zf_mod_item-transfer">
|
|
|
|
|
<text class="modal-label-transfer">郵箱驗證碼:</text>
|
|
|
|
|
<u--input color="#fff" style="width: 70%;" v-model="emailCode" border="none"></u--input>
|
|
|
|
|
<view class="sendcode" @click="tosendemail">{{emaiTip}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="modal-item-transfer zf_mod_item-transfer">
|
|
|
|
|
<text class="modal-label-transfer">谷歌驗證碼:</text>
|
|
|
|
|
<u--input color="#fff" style="width: 70%;" v-model="googleCode" border="none"></u--input>
|
|
|
|
|
<view class="sendcode-transfer" @click="googleemail">{{googleTip}}</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="modal-footer-transfer">
|
|
|
|
|
<button class="modal-button-transfer cancel" @tap="modalName = false">取消</button>
|
|
|
|
|
<button class="modal-button-transfer confirm" @tap="modalBtn">確定</button>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="guide" v-if="guide">
|
|
|
|
|
<view class="huadong">左右滑動,切換查看賬戶</view>
|
|
|
|
|
<view @click="noTis" class="but">確 定</view>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import uQRCode from '@/common/uqrcode.js'
|
|
|
|
|
import item from '@/components/smarttrading/item.vue';
|
|
|
|
|
import {
|
|
|
|
|
_invest
|
|
|
|
|
} from "@/request/aiInvestApi.js"
|
|
|
|
|
import {
|
|
|
|
|
_userInfos,
|
|
|
|
|
_balances,
|
|
|
|
|
_myIncome,
|
|
|
|
|
_getstatics,
|
|
|
|
|
_getcharge,
|
|
|
|
|
_emailSend,
|
|
|
|
|
_walletinfo,
|
|
|
|
|
_pushorder,
|
|
|
|
|
_moneyRedeem
|
|
|
|
|
} from "@/request/api.js"
|
|
|
|
|
import cardVue from '@/components/smarttrading/coinCard/card.vue';
|
|
|
|
|
import {
|
|
|
|
|
publicjiemi
|
|
|
|
|
} from "@/common/jiemi.js";
|
|
|
|
|
import MD5 from "blueimp-md5";
|
|
|
|
|
export default {
|
|
|
|
|
components: {
|
|
|
|
|
item,
|
|
|
|
|
cardVue
|
|
|
|
|
},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
|
moneyTab: 0,
|
|
|
|
|
nowGasFee:"",
|
|
|
|
|
guide:false,
|
|
|
|
|
biTypes:['USDT',"BNB","ETH","BTC"],
|
|
|
|
|
selectedOption:"",
|
|
|
|
|
transferIcon:"",
|
|
|
|
|
userInfos:{},
|
|
|
|
|
userLoacalAddress:"",
|
|
|
|
|
otherContractAddress: "",
|
|
|
|
|
zhifuMima: "",
|
|
|
|
|
emailCode: "",
|
|
|
|
|
googleCode: "",
|
|
|
|
|
emaiTip: "發送",
|
|
|
|
|
googleTip: "發送",
|
|
|
|
|
showPassword: true,
|
|
|
|
|
showpwdImg: "static/icon/eye_on.png",
|
|
|
|
|
hidepwdImg: "static/icon/eye_off.png",
|
|
|
|
|
modalName: false,
|
|
|
|
|
txhash: "",
|
|
|
|
|
txTime:"",
|
|
|
|
|
webviewInstance: null,
|
|
|
|
|
webviewStyles: {
|
|
|
|
|
progress: false,
|
|
|
|
|
width: "0px",
|
|
|
|
|
height: "0px"
|
|
|
|
|
},
|
|
|
|
|
userMoneyAdress: '0xa13b07154de9fe1e73bc09f84d14a789295b03de',
|
|
|
|
|
qrcodeSize: 200,
|
|
|
|
|
modalintMoney: false,
|
|
|
|
|
currentTab: 0,
|
|
|
|
|
text1: '1、投資有風險,交易需謹慎 2、每天下午四點前購買的產品,結算時間為:T+0。每天下午四點後購買的產品,結算時間為:T+1',
|
|
|
|
|
invests: [], //投資列表
|
|
|
|
|
incomes: [], //收益列表
|
|
|
|
|
list: [],
|
|
|
|
|
checkCoin: 'USDT',
|
|
|
|
|
coinType: ['BNB', 'ETH', 'BTC'],
|
|
|
|
|
coinIndex: 0,
|
|
|
|
|
balabces: null,
|
|
|
|
|
allsettlefee: {},
|
|
|
|
|
investSearch: {
|
|
|
|
|
page_size: 3,
|
|
|
|
|
page_index: 1,
|
|
|
|
|
totalPage: 0,
|
|
|
|
|
invest_coin: 'BNB',
|
|
|
|
|
option_type: 'CALL'
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
onReady() {
|
|
|
|
|
|
|
|
|
|
// #ifdef APP
|
|
|
|
|
// 獲取當前頁面
|
|
|
|
|
const currentWebview = this.$scope.$getAppWebview();
|
|
|
|
|
// 獲取web-view組件對象
|
|
|
|
|
this.webviewInstance = currentWebview.children()[0];
|
|
|
|
|
this.txhash = "";
|
|
|
|
|
this.txTime = "";
|
|
|
|
|
// #endif
|
|
|
|
|
},
|
|
|
|
|
onShow() {
|
|
|
|
|
this.getUserInfos();
|
|
|
|
|
this.guide = typeof uni.getStorageSync('guide') !== 'boolean'
|
|
|
|
|
},
|
|
|
|
|
mounted() {
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
mask: true
|
|
|
|
|
})
|
|
|
|
|
this.getNowCoin(0);
|
|
|
|
|
Promise.all([
|
|
|
|
|
this.loadData(this.coinType[0]),
|
|
|
|
|
this.loadData(this.coinType[1]),
|
|
|
|
|
this.loadData(this.coinType[2]),
|
|
|
|
|
]).then((res) => {
|
|
|
|
|
res.map(arr => {
|
|
|
|
|
if (arr.status === 200) {
|
|
|
|
|
this.invests = this.invests.concat(arr.data.list)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
this.list = this.invests.sort((a, b) => b.purchaseEndTime - a.purchaseEndTime)
|
2025-04-29 09:50:23 +08:00
|
|
|
|
this.list.sort((a, b) => b.apr - a.apr)
|
2025-04-19 15:38:48 +08:00
|
|
|
|
}).finally(err => {
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
getNowCoin(e){
|
|
|
|
|
_getstatics({ cointype: this.coinType[e] }).then(res => {
|
|
|
|
|
console.log(res,'收益')
|
|
|
|
|
res.code === 1 && (this.allsettlefee = res.data)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
onPickerChange(event){
|
|
|
|
|
const index = event.detail.value; // 獲取選擇的索引
|
|
|
|
|
this.selectedOption = this.biTypes[index];
|
|
|
|
|
},
|
|
|
|
|
handleInput(event) {
|
|
|
|
|
this.zhifuMima = event;
|
|
|
|
|
},
|
|
|
|
|
async modalBtn() {
|
|
|
|
|
console.log(this.moneyTab,'狀態');
|
|
|
|
|
if (!this.zhifuMima || !this.emailCode || !this.googleCode || !this.selectedOption || !this.transferIcon) return uni.showToast({
|
|
|
|
|
title: '請填寫完整資訊',
|
|
|
|
|
icon: 'none'
|
|
|
|
|
})
|
|
|
|
|
const params = {
|
|
|
|
|
code: this.emailCode,
|
|
|
|
|
googlecode: this.googleCode,
|
|
|
|
|
paykey: MD5(this.zhifuMima + (Math.floor(Date.now() / 1000))),
|
|
|
|
|
timestamp: Math.floor(Date.now() / 1000),
|
|
|
|
|
}
|
|
|
|
|
let res = await _walletinfo(params);
|
|
|
|
|
if (res.code === 1) {
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title:"轉換中..."
|
|
|
|
|
})
|
|
|
|
|
this.modalName = false;
|
|
|
|
|
if(this.moneyTab == 0){
|
|
|
|
|
let userSiyao = await publicjiemi(2, this.zhifuMima, this.userInfos.wallet.address);
|
|
|
|
|
this.toTransfer(userSiyao);
|
|
|
|
|
}else{
|
|
|
|
|
this.toRedeem();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: res.msg,
|
|
|
|
|
icon: 'none'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
async toRedeem(){
|
|
|
|
|
const params = {
|
|
|
|
|
cointype: this.selectedOption,
|
|
|
|
|
amount: this.transferIcon
|
|
|
|
|
};
|
|
|
|
|
let res = await _moneyRedeem(params);
|
|
|
|
|
console.log(res,'提現詳細');
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
if(res.code === 1){
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "轉換申請成功!",
|
|
|
|
|
icon: 'none'
|
|
|
|
|
})
|
|
|
|
|
this.getUserInfos();
|
|
|
|
|
this.emailCode = "";
|
|
|
|
|
this.googleCode = "";
|
|
|
|
|
this.zhifuMima = "";
|
|
|
|
|
this.emaiTip = "發送";
|
|
|
|
|
this.googleTip = "發送";
|
|
|
|
|
this.selectedOption = "";
|
|
|
|
|
this.transferIcon = "";
|
|
|
|
|
}else{
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: res.msg,
|
|
|
|
|
icon: 'none'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
toTransfer(privateKey) {
|
|
|
|
|
switch (this.selectedOption){
|
|
|
|
|
case 'USDT':
|
|
|
|
|
this.otherContractAddress = "0x55d398326f99059ff775485246999027b3197955";
|
|
|
|
|
break;
|
|
|
|
|
case 'ETH':
|
|
|
|
|
this.otherContractAddress = "0x2170ed0880ac9a755fd29b2688956bd959f933f8";
|
|
|
|
|
break;
|
|
|
|
|
case 'BTCB':
|
|
|
|
|
this.otherContractAddress = "0x7130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
const params = {
|
|
|
|
|
type:this.selectedOption,
|
|
|
|
|
fromAdress: this.userInfos.wallet.address,
|
|
|
|
|
toAdress: this.userMoneyAdress ,
|
|
|
|
|
coin:this.transferIcon,
|
|
|
|
|
privateKey,
|
|
|
|
|
otherContractAddress:this.otherContractAddress
|
|
|
|
|
};
|
|
|
|
|
if (this.selectedOption == "BNB") {
|
|
|
|
|
if (this.webviewInstance) {
|
|
|
|
|
this.webviewInstance.evalJS(`
|
|
|
|
|
bnbTransfer(${JSON.stringify(params)});
|
|
|
|
|
`);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (this.webviewInstance) {
|
|
|
|
|
this.webviewInstance.evalJS(`
|
|
|
|
|
otherTransfer(${JSON.stringify(params)});
|
|
|
|
|
`);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
async tosendemail() {
|
|
|
|
|
if (this.emaiTip == "發送") {
|
|
|
|
|
let num = 60;
|
|
|
|
|
let emaiTimer = setInterval(() => {
|
|
|
|
|
this.emaiTip = num + 's';
|
|
|
|
|
num--;
|
|
|
|
|
if (num < 0) {
|
|
|
|
|
this.emaiTip = "發送";
|
|
|
|
|
clearInterval(emaiTimer)
|
|
|
|
|
}
|
|
|
|
|
}, 1000)
|
|
|
|
|
let res = await _emailSend({
|
|
|
|
|
email: this.userInfos.email,
|
|
|
|
|
event: "check"
|
|
|
|
|
});
|
|
|
|
|
if (res.code === 1) {
|
|
|
|
|
console.log('發送成功')
|
|
|
|
|
} else {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: res.msg,
|
|
|
|
|
icon: 'none'
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
googleemail() {
|
|
|
|
|
let num = 60;
|
|
|
|
|
let googleTimer = setInterval(() => {
|
|
|
|
|
this.googleTip = num + 's';
|
|
|
|
|
num--;
|
|
|
|
|
if (num < 0) {
|
|
|
|
|
this.googleTip = "發送";
|
|
|
|
|
clearInterval(googleTimer)
|
|
|
|
|
}
|
|
|
|
|
}, 1000)
|
|
|
|
|
},
|
|
|
|
|
// 接收WebView消息
|
|
|
|
|
handleWebViewMessage(event) {
|
|
|
|
|
let obj = event.detail.data;
|
|
|
|
|
console.log('收到WebView消息:', obj);
|
|
|
|
|
if (obj.length > 0) {
|
|
|
|
|
if(obj[0].type != "gasFee"){
|
|
|
|
|
uni.hideLoading();
|
|
|
|
|
if (obj[0].status == "success") {
|
|
|
|
|
this.txhash = obj[0].hash;
|
|
|
|
|
this.txTime = obj[0].time;
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "轉換成功!",
|
|
|
|
|
icon: 'success'
|
|
|
|
|
})
|
|
|
|
|
this.pushOrderInfos();
|
|
|
|
|
}
|
|
|
|
|
if (obj[0].status == "error") {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "轉賬失敗!",
|
|
|
|
|
icon: 'error'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
this.emailCode = "";
|
|
|
|
|
this.googleCode = "";
|
|
|
|
|
this.zhifuMima = "";
|
|
|
|
|
this.emaiTip = "發送";
|
|
|
|
|
this.googleTip = "發送";
|
|
|
|
|
this.selectedOption = "";
|
|
|
|
|
this.transferIcon = "";
|
|
|
|
|
}
|
|
|
|
|
if(obj[0].type == "gasFee"){
|
|
|
|
|
this.nowGasFee = `${obj[0].nowGwei} Gwei(${obj[0].gasInBNB} BNB)`;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
async pushOrderInfos() {
|
|
|
|
|
const params = {
|
|
|
|
|
address: "0xa13b07154de9fe1e73bc09f84d14a789295b03de",
|
|
|
|
|
addressTag: "",
|
|
|
|
|
amount: this.transferIcon,
|
|
|
|
|
coin: this.selectedOption,
|
|
|
|
|
completeTime: this.txTime,
|
|
|
|
|
confirmTimes: "15/15",
|
|
|
|
|
id: this.txTime,
|
|
|
|
|
insertTime: this.txTime,
|
|
|
|
|
network: "BSC",
|
|
|
|
|
status: 1,
|
|
|
|
|
transferType: 0,
|
|
|
|
|
txId: this.txhash,
|
|
|
|
|
unlockConfirm: 0,
|
|
|
|
|
walletType: 0,
|
|
|
|
|
fromAddress: this.userInfos.wallet.address
|
|
|
|
|
};
|
|
|
|
|
const res = await _pushorder(params);
|
|
|
|
|
console.log(res, '推送信息')
|
|
|
|
|
if(res.code === 1){
|
|
|
|
|
this.getUserInfos();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
toChangeTransfer() {
|
|
|
|
|
// if (this.webviewInstance) {
|
|
|
|
|
// this.webviewInstance.evalJS(`
|
|
|
|
|
// searchGasFee();
|
|
|
|
|
// `);
|
|
|
|
|
// }
|
|
|
|
|
this.modalName = true;
|
|
|
|
|
},
|
|
|
|
|
toBlanceDetail(){
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: '/pages/smarttrading/blanceDetail'
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
async showUpgradeModal1() {
|
|
|
|
|
this.modalintMoney = true;
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: '二維碼生成中',
|
|
|
|
|
mask: true
|
|
|
|
|
})
|
|
|
|
|
let qrcodeUrl = this.userLoacalAddress
|
|
|
|
|
await uQRCode.make({
|
|
|
|
|
canvasId: 'qrcodes',
|
|
|
|
|
text: qrcodeUrl,
|
|
|
|
|
size: this.qrcodeSize,
|
|
|
|
|
margin: 10,
|
|
|
|
|
success: res => {
|
|
|
|
|
this.erweimapath = res
|
|
|
|
|
},
|
|
|
|
|
complete: () => {
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
copyAdress(address) {
|
|
|
|
|
uni.setClipboardData({
|
|
|
|
|
data: address,
|
|
|
|
|
success: () => {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '複製成功',
|
|
|
|
|
icon: 'success'
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
async getUserInfos() {
|
|
|
|
|
let res = await _userInfos();
|
|
|
|
|
if (res.code === 1) {
|
|
|
|
|
this.userInfos = res.data.userinfo;
|
|
|
|
|
this.userLoacalAddress = this.userInfos.wallet.address;
|
|
|
|
|
uni.setStorageSync('infos', JSON.stringify(this.userInfos))
|
|
|
|
|
const Money = await _getcharge()
|
|
|
|
|
console.log(Money, 7777)
|
|
|
|
|
// this.userMoneyAdress = this.userInfos.wallet.address;
|
|
|
|
|
// const Money = await _balances(this.userInfos.wallet.address)
|
|
|
|
|
this.balabces = {
|
|
|
|
|
'BNB': '0.00',
|
|
|
|
|
'ETH': '0.00',
|
|
|
|
|
'BTC': '0.00',
|
|
|
|
|
'USDT': '0.00'
|
|
|
|
|
}
|
|
|
|
|
Money.data.map(item => {
|
|
|
|
|
this.balabces[item.coin] = item.amount
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
uni.setStorageSync('balabces', JSON.stringify(this.balabces))
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
userMoneyAdressOptions1(data) {
|
|
|
|
|
let start = data.substring(0, 14);
|
|
|
|
|
let end = data.substring(data.length - 4);
|
|
|
|
|
let middle = "…";
|
|
|
|
|
let finalString = start + middle + end;
|
|
|
|
|
return finalString
|
|
|
|
|
},
|
|
|
|
|
async switchTab(item) {
|
|
|
|
|
this.list = []
|
|
|
|
|
this.currentTab = item.index
|
|
|
|
|
if (this.incomes.length === 0) {
|
|
|
|
|
await this.loadIncome()
|
|
|
|
|
}
|
|
|
|
|
this.list = this.invests
|
|
|
|
|
if(item.index == 1){
|
|
|
|
|
let arr = this.incomes.map(item => {
|
2025-04-30 14:58:59 +08:00
|
|
|
|
const info ={...item.info,money:item.money,}
|
|
|
|
|
return info
|
2025-04-19 15:38:48 +08:00
|
|
|
|
})
|
|
|
|
|
this.list = arr.sort((a, b) => b.createTimes - a.createTimes)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
switchMoneytab(item){
|
|
|
|
|
this.moneyTab = item.index
|
|
|
|
|
},
|
|
|
|
|
async loadIncome() { // 獲取我的收益列表數據
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
mask: true
|
|
|
|
|
})
|
|
|
|
|
const res = await _myIncome()
|
|
|
|
|
if (res.code === 1) {
|
|
|
|
|
this.incomes = [...res.data.data]
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
// 獲取投資列表數據
|
|
|
|
|
loadData(type) {
|
|
|
|
|
return new Promise(async (resolve) => {
|
|
|
|
|
let search = {
|
|
|
|
|
...this.investSearch
|
|
|
|
|
}
|
|
|
|
|
search.invest_coin = type
|
|
|
|
|
delete search.totalPage
|
|
|
|
|
let params = ''
|
|
|
|
|
Object.keys(search).map(item => {
|
|
|
|
|
params += `${item}=${search[item]}&`
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
params = params.slice(0, -1)
|
|
|
|
|
const res = await _invest(params)
|
|
|
|
|
resolve(res)
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
more() {
|
|
|
|
|
const url = this.currentTab === 0 ? 'recommend' : 'incomes'
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: `/pages/smarttrading/${url}?type=1`
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
tobuy() {
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
url: '/pages/smarttrading/buy'
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
noTis(){
|
|
|
|
|
uni.setStorageSync('guide',false)
|
|
|
|
|
this.guide = false
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
|
.container {
|
|
|
|
|
position: relative;
|
|
|
|
|
min-height: 100vh;
|
|
|
|
|
.nodata {
|
|
|
|
|
height: 64px;
|
|
|
|
|
line-height: 64px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
color: #A4A4A4;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
border-top: 1px solid dimgrey;
|
|
|
|
|
width: 100vw;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
padding: 18px 18px 0px;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
background: linear-gradient(to bottom, #000033, #51599b);
|
|
|
|
|
|
|
|
|
|
.mybal {
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #A4A4A4;
|
|
|
|
|
margin-bottom: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.cards {
|
|
|
|
|
position: relative;
|
|
|
|
|
margin-bottom: 24px;
|
|
|
|
|
min-height: 196px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.invest {
|
|
|
|
|
margin-top: 30rpx;
|
|
|
|
|
background-color: #fff;
|
|
|
|
|
padding: 0px 24rpx 24rpx;
|
|
|
|
|
border-radius: 30rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal1 {
|
|
|
|
|
width: 80vw;
|
|
|
|
|
height: 50vh;
|
|
|
|
|
position: fixed;
|
|
|
|
|
top: 62.7%;
|
|
|
|
|
left: 50%;
|
|
|
|
|
transform: translate(-50%, -50%);
|
|
|
|
|
background-color: rgba(0, 0, 0, 0.9);
|
|
|
|
|
z-index: 999;
|
|
|
|
|
|
|
|
|
|
.modal1-content {
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
position: relative;
|
|
|
|
|
padding: 20rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
|
|
|
|
|
.modal1-header {
|
|
|
|
|
height: 10%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: right;
|
|
|
|
|
color: #fff;
|
|
|
|
|
font-size: 50rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal1-txt {
|
|
|
|
|
height: 75%;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal1-footer {
|
|
|
|
|
width: 100%;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
height: 15%;
|
|
|
|
|
color: #fff;
|
|
|
|
|
font-size: 15px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.coinTag {
|
|
|
|
|
padding: 4px 12px;
|
|
|
|
|
border-radius: 24px;
|
|
|
|
|
border: 1rpx solid #4F5AD7;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #4F5AD7;
|
|
|
|
|
|
|
|
|
|
&.checked {
|
|
|
|
|
background-color: #4F5AD7;
|
|
|
|
|
color: #fff;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
.modal-transfer {
|
|
|
|
|
position: fixed;
|
|
|
|
|
left: 0;
|
|
|
|
|
right: 0;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
top: 0;
|
|
|
|
|
background-color: rgba(0, 0, 0, 0.6);
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: flex-end;
|
|
|
|
|
z-index: 999;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-content-transfer {
|
|
|
|
|
background-color: #b6b5c8;
|
|
|
|
|
border-radius: 20px 20px 0 0;
|
|
|
|
|
padding: 10px 20px 20px;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
width: 100%;
|
|
|
|
|
animation: slideUp 0.3s ease-out;
|
|
|
|
|
box-shadow: 0 -4px 10px rgba(0, 0, 0, 0.1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes slideUp {
|
|
|
|
|
from {
|
|
|
|
|
transform: translateY(100%);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
to {
|
|
|
|
|
transform: translateY(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-header-transfer {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-bottom: 10px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-body-transfer {
|
|
|
|
|
margin-bottom: 20px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-item-transfer {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-bottom: 15px;
|
|
|
|
|
padding-bottom: 10px;
|
|
|
|
|
border-bottom: 1px solid #f0f0f0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.zf_mod_item-transfer {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-label-transfer {
|
|
|
|
|
color: #666;
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
margin-right: 20rpx;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-footer-transfer {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-button-transfer {
|
|
|
|
|
width: 48%;
|
|
|
|
|
height: 44px;
|
|
|
|
|
border-radius: 22px;
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
border: none;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-button-transfer.cancel {
|
|
|
|
|
background-color: #f0f0f0;
|
|
|
|
|
color: #333;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-button-transfer.cancel:hover {
|
|
|
|
|
background-color: #e0e0e0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-button-transfer.confirm {
|
|
|
|
|
background-color: #4CAF50;
|
|
|
|
|
color: white;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.modal-button-transfer.confirm:hover {
|
|
|
|
|
background-color: #45a049;
|
|
|
|
|
}
|
|
|
|
|
.guide{
|
|
|
|
|
background-color: rgba(0, 0, 0, .2);
|
|
|
|
|
position: fixed;
|
|
|
|
|
left:0;
|
|
|
|
|
top:0;
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
z-index: 999;
|
|
|
|
|
.huadong{
|
|
|
|
|
background-color: rgba(0, 0, 0, .4);
|
|
|
|
|
position: absolute;
|
|
|
|
|
top:64px;
|
|
|
|
|
left: 18px;
|
|
|
|
|
width: calc(100% - 36px);
|
|
|
|
|
height: 192px;
|
|
|
|
|
line-height: 192px;
|
|
|
|
|
border-radius: 8px;
|
|
|
|
|
color: #fff;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
|
|
|
|
.but{
|
|
|
|
|
position: absolute;
|
|
|
|
|
bottom:80px;
|
|
|
|
|
left: calc(50% - 50px);
|
|
|
|
|
width: 100px;
|
|
|
|
|
line-height: 42px;
|
|
|
|
|
text-align: center;
|
|
|
|
|
background-color: rgba(0, 0, 0, .8);
|
|
|
|
|
color: #fff;
|
|
|
|
|
border-radius: 24px;
|
|
|
|
|
height:42px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</style>
|