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.
311 lines
10 KiB
311 lines
10 KiB
<!doctype html> |
|
<html> |
|
|
|
<head> |
|
<meta charset="UTF-8"> |
|
<title>钱包</title> |
|
<meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"> |
|
<link href="../../../lib/css/mui.min.css" rel="stylesheet" /> |
|
<!--引入公共样式--> |
|
<link href="../../../lib/css/basic.css" rel="stylesheet" /> |
|
<link href="../../../lib/css/swiper.min.css" rel="stylesheet" /> |
|
<link href="../css/wallet.css" rel="stylesheet" /> |
|
<script type="text/javascript" src="../../../lib/js/vue.min.js"></script> |
|
<script src="../../../lib/js/rem-layout.js"></script> |
|
<script type="text/javascript" src="../../../lib/js/mui.min.js"></script> |
|
<script type="text/javascript" src="../../../lib/js/app.js"></script> |
|
<script src="../../../lib/js/require2.1.11.js"></script> |
|
<script type="text/javascript" src="../js/base.config.js"></script> |
|
</head> |
|
<style> |
|
[v-cloak] { |
|
display: none; |
|
} |
|
</style> |
|
|
|
<body> |
|
<div id="js-data-info" v-cloak> |
|
<header class="mui-bar mui-bar-nav"> |
|
<h1 class="mui-title">{{langue.title}}</h1> |
|
</header> |
|
<div class="mui-content"> |
|
<div class="swiper-container"> |
|
<div class="swiper-wrapper"> |
|
<div class="swiper-slide" v-for="(row,index) in wallets" :id="'item' + index"> |
|
<div class="top-bg"> |
|
<div class="valuation"> |
|
<div class="account">{{row | filetWalletType}}</div> |
|
<span class="valuation-txt">{{langue.valuation}}({{valuation[row].baseCoin}})</span> |
|
<span class="valuation-price">{{valuation[row].countCoin}}</span> |
|
<span class="valuation-rate">≈{{valuation[row].countAmount}} {{valuation[row].moneyKey}}</span> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
<div class="coin"> |
|
<ul class="coin-ul"> |
|
<!--币币账户--> |
|
<li class="coin-item-list" v-for="(coin,index) in coins[wallets[0]]" v-if="coinStatus && coin.tokenSymbol != 'PC'" :data-index="index" :data-type="wallets[0]"> |
|
<div class="coin-kind" > |
|
<div class="coin-kind-img"><img :src="coin.src" /></div> |
|
<span class="coin-kind-txt">{{coin.tokenSymbol}}</span> |
|
</div> |
|
<div class="coin-situation"> |
|
<span class="coin-remain">{{langue.free}}:{{coin.freeBalance}}</span> |
|
<span class="coin-reeze">{{langue.freeze}}:{{coin.freezeBalance}}</span> |
|
</div> |
|
</li> |
|
<!--法币账户--> |
|
<li class="coin-item-list" v-for="(coin,index) in coins[wallets[1]]" v-if="!coinStatus && coin.tokenSymbol != 'PC'" :data-index="index" :data-type="wallets[1]"> |
|
<div class="coin-kind"> |
|
<div class="coin-kind-img"><img :src="coin.src" /></div> |
|
<span class="coin-kind-txt">{{coin.tokenSymbol}}</span> |
|
</div> |
|
<div class="coin-situation"> |
|
<span class="coin-remain">{{langue.free}}:{{coin.freeBalance}}</span> |
|
<span class="coin-reeze">{{langue.freeze}}:{{coin.freezeBalance}}</span> |
|
</div> |
|
</li> |
|
</ul> |
|
</div> |
|
</div> |
|
</div> |
|
</body> |
|
<script type="text/javascript"> |
|
define('langues', { |
|
zh_CN: { |
|
title: "钱包", |
|
valuation: "估值", |
|
addCredit: "充值", |
|
withdrawCoin: "提现", |
|
free: "可用", |
|
freeze: "冻结", |
|
walletTypeC2C: "法币交易", |
|
walletTypeCCT: "币币交易", |
|
coinWallet: "币币钱包", |
|
currencyWallet: "法币钱包" |
|
}, |
|
zh_HK: { |
|
title: "錢包", |
|
valuation: "估值", |
|
addCredit: "充值", |
|
withdrawCoin: "提現", |
|
free: "可用", |
|
freeze: "凍結", |
|
coinWallet: "幣幣錢包", |
|
currencyWallet: "法幣錢包", |
|
}, |
|
en_US: { |
|
title: "Wallet", |
|
valuation: "Valuation", |
|
addCredit: "Recharge", |
|
withdrawCoin: "Withdraw", |
|
free: "Free", |
|
freeze: "Freeze", |
|
coinWallet: "CCT", |
|
currencyWallet: "OTC" |
|
} |
|
|
|
}) |
|
</script> |
|
<script type="text/javascript"> |
|
mui.init({ |
|
swipeBack: false |
|
}); |
|
|
|
var dataInfo = new Vue({ |
|
el: "#js-data-info", |
|
data: { |
|
langue: {}, |
|
wallets: ["CCT", "C2C"], |
|
currentWallets: "CCT", |
|
coinStatus: true, //切换账户的状态 |
|
coins: { |
|
CCT: app.getCoinWalletInfoLocalStorage(), |
|
C2C: app.getC2CCoinWalletInfoLocalStorage() |
|
}, |
|
valuation: { |
|
CCT: { |
|
countCoin: "0.00000000", // 估值 |
|
countAmount: "0.00", //估值多少币种 |
|
moneyKey: app.getExchangeRateLocalStorage(), |
|
baseCoin: "USDT" |
|
}, |
|
C2C: { |
|
countCoin: "0.00000000", // 估值 |
|
countAmount: "0.00", //估值多少币种 |
|
moneyKey: app.getExchangeRateLocalStorage(), |
|
baseCoin: "USDT" |
|
} |
|
}, |
|
marketData: {}, |
|
marketList: {} |
|
}, |
|
filters: { |
|
filetWalletType:function(val) { |
|
if(Object.is("CCT", val)) { |
|
return dataInfo.langue.coinWallet; |
|
} |
|
if(Object.is("C2C", val)) { |
|
return dataInfo.langue.currencyWallet; |
|
} |
|
} |
|
} |
|
}) |
|
require(['walletApi', 'langues', 'Swiper', 'muiPullToRefresh', 'muiPullToRefreshMaterial'], function(walletApi, langues, Swiper) { |
|
dataInfo.langue = langues[app.getLanguageLocalStorage()]; |
|
dataInfo.$nextTick(function() { |
|
mui.init(); |
|
var swiper = new Swiper('.swiper-container', { |
|
grabCursor: true, |
|
centeredSlides: true, |
|
slidesPerView: 'auto', |
|
on: { |
|
transitionEnd: function() { |
|
//根据切换卡片的activeIndex索引来显示不同账户的币种 |
|
if(this.activeIndex === 0) { |
|
dataInfo.coinStatus = true; |
|
} else { |
|
dataInfo.coinStatus = false; |
|
} |
|
} |
|
}, |
|
}); |
|
var deceleration = mui.os.ios ? 0.003 : 0.0009; // 阻尼系数 |
|
mui('.mui-scroll-wrapper').scroll({ |
|
bounce: false, |
|
indicators: true, //是否显示滚动条 |
|
deceleration: deceleration |
|
}); |
|
mui('.mui-content').pullToRefresh({ |
|
down: { |
|
callback: function() { |
|
var self = this; |
|
walletApi.voidServieWalletPass(); |
|
// 发送用户信息查询请求 |
|
saveWallet(); |
|
setTimeout(function() { |
|
// 关闭下拉加载圈 |
|
self.endPullDownToRefresh(); |
|
}, 3000); |
|
} |
|
} |
|
}); |
|
//代币资产页面监听 |
|
mui(".coin-ul").on("tap", "li", function() { |
|
var index = this.getAttribute('data-index'); |
|
var type = this.getAttribute('data-type'); |
|
app.openWin('assets.html', 'assets.html', {}, { |
|
coin: dataInfo.coins[type][index], |
|
type: type |
|
}); |
|
}); |
|
|
|
saveWallet(); |
|
|
|
function saveWallet() { |
|
walletApi.getCCTWallets(function(data) { |
|
dataInfo.coins.CCT = data; |
|
console.log(JSON.stringify(dataInfo.coins.CCT)); |
|
coinsEvenPush(data); |
|
valuationFun(dataInfo.marketList, walletApi.walletType.CCT); |
|
}) |
|
walletApi.getC2CWallets(function(data) { |
|
dataInfo.coins.C2C = data; |
|
valuationFun(dataInfo.marketList, walletApi.walletType.C2C); |
|
}) |
|
} |
|
walletApi.voidServieWalletPass(); |
|
// 国际化统一方法 |
|
window.addEventListener('switchLangueData', function(e) { |
|
dataInfo.langue = langues[e.detail]; |
|
}); |
|
/** |
|
* 监听获取行情列表 |
|
*/ |
|
window.addEventListener("marketList", function(event) { |
|
var marketList = event.detail; |
|
valuationFun(marketList, walletApi.walletType.CCT); |
|
valuationFun(marketList, walletApi.walletType.C2C); |
|
}); |
|
|
|
// 钱包数据更新的监听 |
|
window.addEventListener('walletSaveEvent', function(e) { |
|
walletApi.voidServieWalletPass(); |
|
walletApi.getCCTWallets(function(data) { |
|
dataInfo.coins.CCT = data; |
|
coinsEvenPush(data); |
|
valuationFun(dataInfo.marketList, walletApi.walletType.CCT); |
|
}) |
|
walletApi.getC2CWallets(function(data) { |
|
dataInfo.coins.C2C = data; |
|
otcCoinsEvenPush(data); |
|
valuationFun(dataInfo.marketList, walletApi.walletType.C2C); |
|
}) |
|
}); |
|
|
|
function valuationFun(data, type) { |
|
if(data == null) return; |
|
var coinKey = dataInfo.valuation[type].baseCoin; // 当前兑换币种 |
|
var money = app.getExchangeRateLocalStorage(); |
|
var moneyKey = app.getExchangeRateLocalStorage().toLowerCase() + "Amount"; // 获取系统币种Key值; |
|
var marketData = data[coinKey]; // 获取行情数据 |
|
if(marketData == null) return; |
|
var coins = dataInfo.coins[type]; |
|
var countCoin = 0; |
|
var countAmount = 0; |
|
var moneyExchange = 0; // 汇率 |
|
var isMoneyV = true; |
|
for(var i = 0; i < coins.length; i++) { |
|
var coinName = coins[i].tokenSymbol; |
|
if(coinName in marketData) { |
|
if(isMoneyV) { |
|
marketData[coinKey] = {}; |
|
marketData[coinKey].basecoin = marketData[coinName].basecoin; |
|
marketData[coinKey].marketObj = JSON.parse(JSON.stringify(marketData[coinName].marketObj)); |
|
marketData[coinKey].marketObj.amount = 1; |
|
moneyExchange = parseFloat(marketData[coinName].marketObj[moneyKey]); |
|
isMoneyV = false; |
|
} |
|
countCoin += parseFloat(coins[i].balance) * parseFloat(marketData[coinName].marketObj.amount); |
|
} else if(coinKey == coinName) { |
|
countCoin += parseFloat(coins[i].balance); |
|
} |
|
} |
|
countAmount = app.formatValue(parseFloat(countCoin) * moneyExchange); |
|
dataInfo.valuation[type].countAmount = countAmount; |
|
dataInfo.valuation[type].countCoin = app.formatValue(countCoin); |
|
dataInfo.valuation[type].moneyKey = app.getExchangeRateLocalStorage(); |
|
dataInfo.marketData = marketData; |
|
dataInfo.marketList = data; |
|
} |
|
/** |
|
* 币币币种信息推送 |
|
* @param {Array} coins |
|
*/ |
|
function coinsEvenPush(coins) { |
|
if(coins == null || coins.length == 0) return; |
|
var coinMap = {}; |
|
for(var i = 0; i < coins.length; i++) { |
|
coinMap[coins[i].tokenSymbol] = coins[i]; |
|
} |
|
mui.fire(plus.webview.getWebviewById("html/cct/html/cct_index.html"), "saveCoinsEven", coinMap); |
|
} |
|
/** |
|
* 法币币种信息推送 |
|
* @param {Array} coins |
|
*/ |
|
function otcCoinsEvenPush(coins) { |
|
if(coins == null || coins.length == 0) return; |
|
var coinMap = {}; |
|
for(var i = 0; i < coins.length; i++) { |
|
coinMap[coins[i].tokenSymbol] = coins[i]; |
|
} |
|
mui.fire(plus.webview.getWebviewById("merchant.html"), "saveCoinsEven", coinMap); |
|
} |
|
}) |
|
}) |
|
</script> |
|
|
|
</html> |