(function(owner) { //c2c微服务访问url前缀 owner.C2CUrl = "http://192.168.105.108:8901/"; //币币微服务 owner.CCTUrl = "http://47.74.158.47/cct/"; //user微服务访问url前缀 owner.walletFileUrl = "http://192.168.105.108/file/"; owner.confBaseUrl = "http://47.74.158.47/sysconf/"; owner.currencyBaseUrl = "http://47.74.158.47/currency/"; // 本地user地址 owner.UserUrl = "http://47.74.158.47/user/"; owner.walletBaseUrl = "http://47.74.158.47/user/"; // 本地登录地址 owner.loginBaseUrl = "http://47.74.158.47/user/"; // ########钱包模块的服务器####### owner.btcBaseUrl = "http://47.74.158.47/btc/"; owner.ethBaseUrl = "http://47.74.158.47/eth/"; owner.eosBaseUrl = "http://47.74.158.47/eos/"; // 本地user地址 // owner.UserUrl = "http://192.168.105.82:10121/"; // // 本地登录地址 // owner.loginBaseUrl = "http://192.168.105.52:8101/"; // // ########钱包模块的服务器####### // owner.btcBaseUrl = "http://192.168.105.52:8301/"; // owner.ethBaseUrl = "http://192.168.105.52:8201/"; // owner.eosBaseUrl = "http://192.168.105.52:8401/"; //自选行情 owner.marketChoiceKey = "$market-choice"; //默认打开页面方式 owner.aniShow = "pop-in"; //已经预加载的页面 owner.preate = {}; //预加载页面过期时间(ms) owner.preateTimeout = 1000 * 60 * 5; // //预加载倒计时列表 // owner.timeouts = {}; //避免快速点击打开多个页面 owner.openw = null; /** * 存储数据到本地 * @param {String} key : 数据标识 * @param {Object} values : 数据 */ owner.setLocalStorage = function(key, values) { values = values || {}; if(typeof values == 'object') { localStorage.setItem(key, JSON.stringify(values)); } else { localStorage.setItem(key, values); } } /** * 获取本地存储数据 * @param {String} key : 数据标识 */ owner.getLocalStorage = function(key) { var settingsText = localStorage.getItem(key) || "{}"; return JSON.parse(settingsText); } /** * 根据key值删除存储数据 * @param {Object} key */ owner.removeLocalStorage = function(key) { localStorage.removeItem(key); } /** * 不合法数据格式化 * @param {String} val */ owner.escapeString = function(val) { if(val) { val = val.replace(/\\/g, "\\\\"); val = val.replace(/\"/g, "\\\""); val = val.replace(/\?/g, "?"); val = val.replace(/\n|\r|\t/g, function() { var a = arguments[0]; return(a == '\n') ? '\\n' : (a == '\r') ? '\\r' : (a == '\t') ? '\\t' : "" }); } return val; } /** * 不合法数据格式化 * @param {String} val */ owner.escapeValue = function(val) { if(val) { if($.isArray(val)) { // 数组类型 for(var i = 0, len = val.length; i < len; i++) { var value = val[i]; if(typeof value == 'string') { val[i] = owner.escapeString(value); // 设置新值 } } } else if(typeof val == 'string') { // 字符类型 val = owner.escapeString(val); // 设置新值 } // 其他不处理 } return val; } /** * form表单序列化 * @param {Document} formDcument : 表单dcument对象 */ owner.serialize = function(formDcument) { var valueList = []; //保存待处理的值,结构为: name , value var data = {}; //返回结果的json数组 //唯一值的 var queryCSS = "input[type='color'][name]" + ",input[type='date'][name]" + ",input[type='datetime'][name]" + ",input[type='datetime-local'][name]" + ",input[type='email'][name]" + ",input[type='hidden'][name]" + ",input[type='month'][name]" + ",input[type='number'][name]" + ",input[type='password'][name]" + ",input[type='range'][name]" + ",input[type='search'][name]" + ",input[type='tel'][name]" + ",input[type='text'][name]" + ",input[type='time'][name]" + ",input[type='url'][name]" + ",input[type='week'][name]" + ",input[type='radio'][name]:checked" + ",textarea[name]"; var onlyValList = formDcument.querySelectorAll(queryCSS); for(var i = 0; i < onlyValList.length; i++) { var dom = onlyValList[i]; var name = dom.getAttribute("name"); //键名 var value = owner.escapeString(dom.value); //值 data[name] = value; } //checkbox var checkboxList = formDcument.querySelectorAll("input[type='checkbox'][name]:checked"); var existCheckbox = {}; //已处理过的checkbox for(var i = 0; i < checkboxList.length; i++) { var name = checkboxList[i].getAttribute("name"); //判断是否已处理 if(existCheckbox[name]) { continue; } var value = new Array(); //获取相同的checkbox var doms = formDcument.querySelectorAll("input[type='checkbox'][name='" + name + "']:checked"); for(var j = 0; j < doms.length; j++) { var val = owner.escapeString(doms[j].value); value.push(val); } data[name] = value; existCheckbox[name] = true; } //select var selectList = formDcument.querySelectorAll("select[name]"); for(var i = 0; i < selectList.length; i++) { var dom = selectList[i]; var name = dom.getAttribute("name"); //键名 //多选select if(dom.getAttribute("multiple")) { var value = new Array(); for(j = 0; j < dom.length; j++) { if(dom.options[j].selected) { var val = owner.escapeString(dom[j].value); value.push(val); } } data[name] = value; } else { var index = dom.selectedIndex; var value = owner.escapeString(dom.options[index].value); data[name] = value; } } return data; } /** * * @param {Object} formDcument : form表单 * @param {Object} data : JS对象 */ owner.formFilling = function(formDcument, data) { //输入值的 var queryCSS = "input[type='color'][fillName]" + ",input[type='date'][fillName]" + ",input[type='datetime'][fillName]" + ",input[type='datetime-local'][fillName]" + ",input[type='email'][fillName]" + ",input[type='hidden'][fillName]" + ",input[type='month'][fillName]" + ",input[type='number'][fillName]" + ",input[type='password'][fillName]" + ",input[type='range'][fillName]" + ",input[type='search'][fillName]" + ",input[type='tel'][fillName]" + ",input[type='text'][fillName]" + ",input[type='time'][fillName]" + ",input[type='url'][fillName]" + ",input[type='week'][fillName]" + ",textarea[fillName]"; var fillOne = formDcument.querySelectorAll(queryCSS); for(var i = 0; i < fillOne.length; i++) { var dom = fillOne[i]; var fillName = dom.getAttribute("fillName"); //键名 var value = data[fillName]; //值 if(value) { //若有此值则填充数据 dom.value = data[fillName]; } } //radio,checkbox var fillTwo = formDcument.querySelectorAll("input[type='radio'][fillName],input[type='checkbox'][fillName]"); var existFillTwo = {}; //已处理过的 for(var i = 0; i < fillTwo.length; i++) { var dom = fillTwo[i]; var fillName = dom.getAttribute("fillName"); //键名 //判断是否已处理 if(existFillTwo[fillName]) { continue; } var value = data[fillName]; //值 if(value) { //若有此值 //判断是否是数组 if(typeof value === 'object' && Array == value.constructor) { for(var j = 0; j < value.length; j++) { var val = value[j]; //获取相同的radio,checkbox var domsCSS = "input[type='radio'][fillName='" + fillName + "'][value='" + val + "']" + ",input[type='checkbox'][fillName='" + fillName + "'][value='" + val + "']" var doms = formDcument.querySelectorAll(domsCSS); for(var k = 0; k < doms.length; k++) { //选中 doms[j].checked = true; } } } else { //获取相同的radio,checkbox var domsCSS = "input[type='radio'][fillName='" + fillName + "'][value='" + value + "']" + ",input[type='checkbox'][fillName='" + fillName + "'][value='" + value + "']" var doms = formDcument.querySelectorAll(domsCSS); for(var j = 0; j < doms.length; j++) { //选中 doms[j].checked = true; } } } existFillTwo[fillName] = true; } //select var selectList = formDcument.querySelectorAll("select[fillName]"); for(var i = 0; i < selectList.length; i++) { var dom = selectList[i]; var fillName = dom.getAttribute("fillName"); //键名 var value = data[fillName]; //值 if(value) { //若有此值 //判断是否是数组 if(typeof value === 'object' && Array == value.constructor) { for(j = 0; j < value.length; j++) { for(k = 0; k < dom.length; k++) { var opt = dom.options[k]; if(opt.value == value[j]) { opt.selected = true; } } } } else { for(j = 0; j < dom.length; j++) { var opt = dom.options[j]; if(opt.value == value) { opt.selected = true; break; } } } } } } /** * * @param {String} url : 页面地址 * @param {String} id :窗口标识 * @param {Object} styles : 窗口样式 * @param {Object} extras : 传递参数 * @param {String} aniShow : 显示方式 * @param {String} isHide : 是否显示 */ owner.openWin = function(url, id, styles, extras, aniShow, isHide) { //避免快速点击打开多个页面 if(owner.openw) { return null; } owner.openw = id; //默认是右进显示 aniShow || (aniShow = owner.aniShow); styles || (styles = {}); extras || (extras = {}); var page = plus.webview.create(url, id, styles, extras); page.addEventListener("loaded", function() { if(!isHide) { var data2 = new Date(); page.show(aniShow); } }, false); page.addEventListener("hide", function() { owner.openw = null; }, false); page.addEventListener("close", function() { owner.openw = null; }, false); return page; } /** * * @param {String} url : 页面地址 * @param {String} id :窗口标识 * @param {Object} styles : 窗口样式 * @param {Object} extras : 传递参数 * @param {String} aniShow : 显示方式 * @param {String} isHide : 是否显示 */ owner.preloadWin = function(url, id, styles, extras, aniShow, isHide) { //避免快速点击打开多个页面 if(owner.openw) { return null; } owner.openw = id; //默认是右进显示 aniShow || (aniShow = owner.aniShow); styles || (styles = {}); extras || (extras = {}); var page = owner.preate[id]; //若此页面已在预加载列表中 if(page) { page.show(aniShow); // delete owner.timeouts[id]; // clearTimeout(owner.timeouts[id]); return page; } else { styles.scrollIndicator = 'none'; //隐藏滚动条 styles.scalable = false; //窗口不可缩放 styles.popGesture = 'hide'; //右划隐藏 //预加载页面 page = mui.preload({ url: url, id: id, styles: styles, extras: extras }); page.addEventListener("loaded", function() { if(!isHide) { page.show(aniShow); } }, false); owner.preate[id] = page; //页面隐藏监听, page.addEventListener("hide", function() { owner.openw = null; //默认页面隐藏过了一定时间后没有再次打开则关闭 // var timeout = setTimeout(function() { // page.close(); // }, owner.preateTimeout); // owner.timeouts[id] = timeout; }, false); //页面关闭监听 page.addEventListener("close", function() { owner.openw == id ? owner.openw = null : ""; delete owner.preate[id]; }, false); } return page; } owner.formatDate = function(time) { var date = new Date(time); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); return year + "-" + (month < 10 ? ('0' + month) : month) + "-" + (day < 10 ? ('0' + day) : day) + " " + (hours < 10 ? ('0' + hours) : hours) + ":" + (minutes < 10 ? ('0' + minutes) : minutes) + ":" + (seconds < 10 ? ('0' + seconds) : seconds); } /** * 格式化eth显示 * @param {Object} eth */ owner.formatEth = function(eth) { if(eth == '0') { return eth; } var index = eth.indexOf('.'); if(index != -1) { var point = eth.substring(index + 1); if(point.length > 6) { eth = eth.substring(0, index + 7); eth = parseFloat(eth) + ''; } } return eth; } /** * 格式化cny显示 * @param {Object} cny */ owner.formatCny = function(cny) { if(cny == 0) { return cny; } cny += ""; var index = cny.indexOf('.'); if(index != -1) { var point = cny.substring(index + 1); if(cny.length > 2) { cny = cny.substring(0, index + 3); } } else { cny += '.00'; } return cny; } /** * 存储用户数据到本地 * @param {Object} values : 用户数据 */ owner.setUserLocalStorage = function(values) { values = values || {}; localStorage.setItem("userInfo", JSON.stringify(values)); } /** * 获取本地存储的用户数据 * @param {String} key : 数据标识 */ owner.getUserLocalStorage = function() { var settingsText = localStorage.getItem("userInfo") || "{}"; return JSON.parse(settingsText); } /** * 根据key值删除存储数据 * @param {Object} key */ owner.removeUserLocalStorage = function(key) { localStorage.removeItem("userInfo"); } /** * 存储Token * @param {Object} values : 用户数据 */ owner.setTokenStorage = function(values) { values = values || ''; localStorage.setItem("user_token", values); } /** * 获取Token * @param {String} key : 数据标识 */ owner.getTokenStorage = function() { return localStorage.getItem("user_token"); } /** * 删除Token * @param {Object} key */ owner.removeTokenStorage = function(key) { localStorage.removeItem("user_token"); } /** * 存储托管用户资金密码是否设置的标识 * @param {Object} values : 用户数据 */ owner.setIsWalletPassLocalStorage = function(values) { values = values || false; localStorage.setItem("isWalletPass", values); } /** * 获取托管用户资金密码是否设置的标识 * @param {String} key : 数据标识 */ owner.getIsWalletPassLocalStorage = function() { var isStatus = (localStorage.getItem("isWalletPass") == null || localStorage.getItem("isWalletPass") == 'false'); return isStatus ? false : true; } /** * 根据key值删除托用户资金密码是否设置的标识 * @param {Object} key */ owner.removeIsWalletPassLocalStorage = function() { localStorage.removeItem("isWalletPass"); } /** * 存储托管用户数据到本地 * @param {Object} values : 用户数据 */ owner.setCoinWalletInfoLocalStorage = function(values) { values = values || []; localStorage.setItem("ethWalletInfo", JSON.stringify(values)); } /** * 获取本地存储的托管用户数据 * @param {String} key : 数据标识 */ owner.getCoinWalletInfoLocalStorage = function() { var settingsText = localStorage.getItem("ethWalletInfo") || "[]"; return JSON.parse(settingsText); } /** * 根据key值删除托管用户存储数据 * @param {Object} key */ owner.removeCoinWalletInfoLocalStorage = function() { localStorage.removeItem("ethWalletInfo"); } /** * 存储托管用户数据到本地 * @param {Object} values : 用户数据 */ owner.setEthWalletTokenListLocalStorage = function(values) { values = values || []; localStorage.setItem("ethWalletTokenList", JSON.stringify(values)); } /** * 获取本地存储的托管用户数据 * @param {String} key : 数据标识 */ owner.getEthWalletTokenListLocalStorage = function() { var settingsText = localStorage.getItem("ethWalletTokenList") || "[]"; return JSON.parse(settingsText); } /** * 根据key值删除托管用户存储数据 * @param {Object} key */ owner.removeEthWalletTokenListLocalStorage = function() { localStorage.removeItem("ethWalletTokenList"); } /** * 存储用户数据到本地 * @param {Object} values : 用户数据 */ owner.setC2cUserLocalStorage = function(values) { values = values || {}; localStorage.setItem("c2cUserInfo", JSON.stringify(values)); } /** * 获取本地存储的用户数据 * @param {String} key : 数据标识 */ owner.getC2cUserLocalStorage = function() { var settingsText = localStorage.getItem("c2cUserInfo") || "{}"; return JSON.parse(settingsText); } /** * 根据key值删除存储数据 * @param {Object} key */ owner.removeC2cUserLocalStorage = function(key) { localStorage.removeItem("c2cUserInfo"); } /** * 存储国际化标识 * @param {Object} values : 用户数据 */ owner.setLanguageLocalStorage = function(values) { values = values || "zh_CN"; localStorage.setItem("language", values); } /** * 获取国际化标识 * @param {String} key : 数据标识 */ owner.getLanguageLocalStorage = function() { var settingsText = localStorage.getItem("language") || "zh_CN"; return settingsText; } /** * 删除国际化标识缓存 * @param {Object} key */ owner.removeLanguageLocalStorage = function(key) { localStorage.removeItem("language"); } /** * 存储app汇率 * @param {Object} values : app最新版本 */ owner.setExchangeRateLocalStorage = function(values) { values = values || "CNY"; localStorage.setItem("$exchangeRate", values); } /** * app汇率 */ owner.getExchangeRateLocalStorage = function() { return localStorage.getItem("$exchangeRate") || "CNY"; } /** * 存储app最新版本 * @param {Object} values : app最新版本 */ owner.setVersionLocalStorage = function(values) { values = values || ""; localStorage.setItem("$version", values); } /** * app最新版本 */ owner.getVersionLocalStorage = function() { return localStorage.getItem("$version") || ""; } /** * mui.toast重写 */ owner.toast = function(msg) { plus.nativeUI.toast(msg, { verticalAlign: 'center' }); } /** * 格式化数据值 * @param {Object} value */ owner.formatValue = function(value) { if(value == 0) return '0.00'; var val = parseFloat(value); if(val < 0) { val = -val; } if(val < 0.1) { value = (parseInt(value * 1e6) / 1e6).toFixed(6); } else if(val < 10) { value = (parseInt(value * 1e4) / 1e4).toFixed(4); } else if(val >= 10) { value = (parseInt(value * 1e2) / 1e2).toFixed(2); } else { value = (parseInt(value * 1e8) / 1e8).toFixed(8); } return value; } }(window.app = {})); window.addEventListener("resize", function() { if(document.activeElement.tagName == "INPUT" || document.activeElement.tagName == "TEXTAREA") { document.activeElement.scrollIntoViewIfNeeded(); } }); /** * @method js控制input框只能输入数字和一位小数点和小数点后面n位小数 * * @param {Object} obj 文本框对象 * @param {Object} _decimals 小数点位数 */ function formatNumber(obj, _decimals) { obj.value = obj.value.replace(/[^\d\.]/g, ""); //清除“数字”和“.”以外的字符 if(/\d+\.\d*\./.test(obj.value)) { var secondPonitIndex = obj.value.indexOf(".", obj.value.indexOf(".") + 1); obj.value = obj.value.substring(0, secondPonitIndex); //只保留第一个. 清除多余的 } //obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的 var reg = new RegExp("^(\\d+)\\.(\\d{" + _decimals + "}).*$"); obj.value = obj.value.replace(reg, '$1.$2'); //只能输入n个小数 if(obj.value.indexOf(".") < 0 && obj.value != "") { //以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额 obj.value = parseFloat(obj.value); } if(obj.value.indexOf(".") == 0) { //如果输入类似.123 变为0.123 obj.value = "0" + obj.value; } }