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.

977 lines
29 KiB

(function(owner) {
//c2c微服务访问url前缀
owner.C2CUrl = "http://zhixinchains.com/otc/";
//币币微服务
owner.CCTUrl = "http://zhixinchains.com/cct/";
//user微服务访问url前缀
owner.walletFileUrl = "http://file.zhixinchains.com/";
owner.confBaseUrl = "http://zhixinchains.com/sysconf/";
owner.currencyBaseUrl = "http://zhixinchains.com/currency/";
// 本地user地址
owner.UserUrl = "http://zhixinchains.com/user/";
owner.walletBaseUrl = "http://zhixinchains.com/user/";
// 本地登录地址
owner.loginBaseUrl = "http://zhixinchains.com/user/";
// ########钱包模块的服务器#######
owner.btcBaseUrl = "http://zhixinchains.com/btc/";
owner.ethBaseUrl = "http://zhixinchains.com/eth/";
owner.eosBaseUrl = "http://zhixinchains.com/eos/";
// 本地user地址
// 极光聊天本地地址
owner.Host_jm = "http://zhixinchains.com/imjg/"
// 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);
} else {
owner.openw = null;
}
}, 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.setC2CCoinWalletInfoLocalStorage = function(values) {
values = values || [];
localStorage.setItem("ethC2CWalletInfo", JSON.stringify(values));
}
/**
* 获取本地存储的托管用户数据
* @param {String} key : 数据标识
*/
owner.getC2CCoinWalletInfoLocalStorage = function() {
var settingsText = localStorage.getItem("ethC2CWalletInfo") || "[]";
return JSON.parse(settingsText);
}
/**
* 根据key值删除托管用户存储数据
* @param {Object} key
*/
owner.removeC2CCoinWalletInfoLocalStorage = function() {
localStorage.removeItem("ethC2CWalletInfo");
}
/**
* 存储国际化标识
* @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") || "USD";
}
/**
* 存储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.000000';
var val = parseFloat(value);
if(val < 0) {
val = -val;
}
if(val < 0.0001) {
val = compute.Mul(val, 1e8, 8);
val = compute.Div(val, 1e8, 8);
val = val.toFixed(8);
} else if(val < 0.1) {
val = compute.Mul(val, 1e6, 6);
val = compute.Div(val, 1e6, 6);
val = val.toFixed(6);
} else if(val < 10) {
val = compute.Mul(val, 1e4, 4);
val = compute.Div(val, 1e4, 4);
val = val.toFixed(4);
} else {
val = compute.Mul(val, 1e2, 2);
val = compute.Div(val, 1e2, 2);
val = val.toFixed(2);
console.log(val);
}
return val;
}
/***
* 格式化数据值 - 通过字符串截取方式
* @param value
* @param decimal 小数最大长度
*/
owner.formatValueStr = function (value, decimal) {
//默认长度为8
if (decimal == null || decimal == '') {
decimal = 8;
}
//防止NaN
if (isNaN(value)) {
return Number(0);
}
value = value.toString();
//小数点索引
var valueIndex = value.indexOf('.');
//存在小数的情况
if (valueIndex != -1) {
//小数位数据
var valueFloat = value.substring(valueIndex + 1);
//判断格式化数据大小,保留小数
value = parseFloat(value);
if (value < 0.0001) {
decimal = 8;
} else if (value < 0.1) {
decimal = 6;
} else if (value < 10) {
decimal = 4;
} else {
decimal = 2;
}
//小数位长度大于格式化长度
if (valueFloat.length > decimal) {
//需要保留的小数位 + 1
var floatNum = parseFloat(value).toFixed(Number(decimal) + 1);
//截取数据,保留小数并不用四舍五入
value = floatNum.substring(0, floatNum.length - 1);
}
}
return parseFloat(value);
}
/***
* 简单的小函数只做了+ - * /四则运算第一二个参数为参与运算的两个数第三个参数为运算符(+ - * /)
* 思路是运算前用字符串处理拿掉 '.' 运算结束后还原倍数
* https://www.cnblogs.com/superjsman/p/10049528.html
* @param {Object} one
* @param {Object} two
* @param {Object} str
*/
owner.floatPoint = function(one, two, str) {
//转化为字符串
one = '' + one
two = '' + two
//切割成整数部分和小数部分
var oneStr = one.split('.')
var twoStr = two.split('.')
// 处理参数一或二为整数的情况
if(!oneStr[1]) {
oneStr[1] = ''
}
if(!twoStr[1]) {
twoStr[1] = ''
}
var length = null
//比较小数部分的长度,以确定剥离小数点后放大的倍数
var oneFloatLength = oneStr[1].length
var TwoFloatLength = twoStr[1].length
if(oneFloatLength > TwoFloatLength) {
length = oneFloatLength
twoStr[1] = twoStr[1].padEnd(length, '0')
} else if(TwoFloatLength > oneFloatLength) {
length = TwoFloatLength
twoStr[1] = oneStr[1].padEnd(length, '0')
} else {
length = TwoFloatLength
}
// 拼接成处理后的数字
var oneBig = oneStr[0] + oneStr[1]
var twoBig = twoStr[0] + twoStr[1]
//根据运算符决定运算后缩小的倍数
var result = null
switch(str) {
case '+':
;
case '-':
result = eval(oneBig + str + twoBig) / (10 * length)
break;
case '*':
result = eval(oneBig + str + twoBig) / (10 * (length * 2))
break;
case '/':
result = eval(oneBig + str + twoBig)
}
return result
}
/***
* 数组排序
* @param data 数据源
* @param sort 排序规则 ASC升序 | DESC倒序
* @param field 排序字段
* @returns {sortData} 排序后的数据
*/
owner.sortArray = function(data, sort, field) {
//数据源是否为空
if(data == null) {
throw new Error('数据源为空!');
}
//排序字段是否为空
if(field == null || field == '') {
throw new Error('排序字段为空!');
}
//默认排序为升序
if(sort == null || sort == '') {
sort = 'ASC'
}
//排序逻辑函数
var sortFun = null;
//升序排序逻辑函数
if(sort == 'ASC' || sort == 'asc') {
sortFun = function(a, b) {
return a[field] - b[field];
}
}
//倒序排序逻辑函数
if(sort == 'DESC' || sort == 'desc') {
sortFun = function(a, b) {
return b[field] - a[field];
}
}
//如果逻辑函数为空
if(sortFun == null) {
throw new Error('排序参数异常!');
}
//返回排序数据
return data.sort(sortFun);
}
}(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;
}
}
/**
* splitValue 获取当前时间
* @param value
* @returns {array}
*/
function formatDate(date, fmt) {
if (/(y+)/.test(fmt)) {
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
}
var o = {
'M+': date.getMonth() + 1,
'd+': date.getDate(),
'h+': date.getHours(),
'm+': date.getMinutes(),
's+': date.getSeconds()
};
for (var k in o) {
if (new RegExp("(".concat(k, ")")).test(fmt)) {
var str = o[k] + '';
fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? str : ('00' + str).substr(str.length));
}
}
return fmt;
}
var compute = {
/*
函数加法函数用来得到精确的加法结果
说明javascript的加法结果会有误差在两个浮点数相加的时候会比较明显这个函数返回较为精确的加法结果
参数arg1第一个加数arg2第二个加数d要保留的小数位数可以不传此参数如果不传则不处理小数位数
调用Calc.Add(arg1,arg2,d)
返回值两数相加的结果
*/
Add: function(arg1, arg2, d) {
arg1 = arg1.toString(), arg2 = arg2.toString();
var arg1Arr = arg1.split("."),
arg2Arr = arg2.split("."),
d1 = arg1Arr.length == 2 ? arg1Arr[1] : "",
d2 = arg2Arr.length == 2 ? arg2Arr[1] : "";
var maxLen = Math.max(d1.length, d2.length);
var m = Math.pow(10, maxLen);
var result = Number(((arg1 * m + arg2 * m) / m).toFixed(maxLen));
var d = arguments[2];
return typeof d === "number" ? Number((result).toFixed(d)) : result;
},
/*
函数减法函数用来得到精确的减法结果
说明函数返回较为精确的减法结果
参数arg1第一个加数arg2第二个加数d要保留的小数位数可以不传此参数如果不传则不处理小数位数
调用Calc.Sub(arg1,arg2)
返回值两数相减的结果
*/
Sub: function(arg1, arg2, d) {
return this.Add(arg1, -Number(arg2), arguments[2]);
},
/*
函数乘法函数用来得到精确的乘法结果
说明函数返回较为精确的乘法结果
参数arg1第一个乘数arg2第二个乘数d要保留的小数位数可以不传此参数如果不传则不处理小数位数)
调用Calc.Mul(arg1,arg2)
返回值两数相乘的结果
*/
Mul: function(arg1, arg2, d) {
var r1 = arg1.toString(),
r2 = arg2.toString(),
m, resultVal, d = arguments[2];
m = (r1.split(".")[1] ? r1.split(".")[1].length : 0) + (r2.split(".")[1] ? r2.split(".")[1].length : 0);
resultVal = Number(r1.replace(".", "")) * Number(r2.replace(".", "")) / Math.pow(10, m);
if(typeof d !== "number") {
return Number(resultVal)
} else {
var beiTen = Math.pow(10, parseInt(d));
resultVal = (parseInt(resultVal * beiTen) / beiTen).toFixed(parseInt(d));
return Number(resultVal);
}
},
/*
函数除法函数用来得到精确的除法结果
说明函数返回较为精确的除法结果
参数arg1除数arg2被除数d要保留的小数位数可以不传此参数如果不传则不处理小数位数)
调用Calc.Div(arg1,arg2)
返回值arg1除于arg2的结果
*/
Div: function(arg1, arg2, d) {
var r1 = arg1.toString(),
r2 = arg2.toString(),
m, resultVal, d = arguments[2];
m = (r2.split(".")[1] ? r2.split(".")[1].length : 0) - (r1.split(".")[1] ? r1.split(".")[1].length : 0);
resultVal = Number(r1.replace(".", "")) / Number(r2.replace(".", "")) * Math.pow(10, m);
if(typeof d !== "number") {
return Number(resultVal)
} else {
var beiTen = Math.pow(10, parseInt(d));
resultVal = (parseInt(resultVal * beiTen) / beiTen).toFixed(parseInt(d));
return Number(resultVal);
}
}
5 years ago
};