import {
|
log
|
} from 'mathjs';
|
import JSEncrypt from './jsencrypt';
|
import {
|
ACCESSTOKEN,
|
config
|
} from '@/common/config.js'
|
|
let publicKey =
|
'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTREknOkrusbeH7kBe3mSw4AwVT438IWmX/jKmcvYxaAWRrBJiMl7gk37L78HBG/ZstLLcdKBYYdj/5cvVWDQfv+uxbv/piZhOmQej98jWIXEA8aFEk724nFRJ7nfcEhHSWfzbTfgZw0KDO1mWdjWHnHIx/MtD0HIFFIyzg3aO7wIDAQAB';
|
|
//校验银行卡号
|
export function verifyBankCard(str) {
|
//银行卡号长度在16到19之间
|
if (str.length < 16 || str.length > 19) {
|
return false;
|
}
|
var num = /^\d*$/;
|
if (!num.exec(str)) {
|
//银行卡号必须全为数字;
|
return false;
|
}
|
//开头6位
|
var strBin =
|
"10,18,30,35,37,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,58,60,62,65,68,69,84,87,88,94,95,98,99";
|
if (strBin.indexOf(str.substring(0, 2)) == -1) { //银行卡号开头6位不符合规范
|
return false;
|
}
|
var lastNum = str.substr(str.length - 1, 1); //取出最后一位(与luhm进行比较)
|
var first15Num = str.substr(0, str.length - 1); //前15或18位
|
var newArr = new Array();
|
for (var i = first15Num.length - 1; i > -1; i--) { //前15或18位倒序存进数组
|
newArr.push(first15Num.substr(i, 1));
|
}
|
var arrJiShu = new Array(); //奇数位*2的积 <9
|
var arrJiShu2 = new Array(); //奇数位*2的积 >9
|
|
var arrOuShu = new Array(); //偶数位数组
|
for (var j = 0; j < newArr.length; j++) {
|
if ((j + 1) % 2 == 1) { //奇数位
|
if (parseInt(newArr[j]) * 2 < 9)
|
arrJiShu.push(parseInt(newArr[j]) * 2);
|
else
|
arrJiShu2.push(parseInt(newArr[j]) * 2);
|
} else //偶数位
|
arrOuShu.push(newArr[j]);
|
}
|
|
var jishu_child1 = new Array(); //奇数位*2 >9 的分割之后的数组个位数
|
var jishu_child2 = new Array(); //奇数位*2 >9 的分割之后的数组十位数
|
for (var h = 0; h < arrJiShu2.length; h++) {
|
jishu_child1.push(parseInt(arrJiShu2[h]) % 10);
|
jishu_child2.push(parseInt(arrJiShu2[h]) / 10);
|
}
|
|
var sumJiShu = 0; //奇数位*2 < 9 的数组之和
|
var sumOuShu = 0; //偶数位数组之和
|
var sumJiShuChild1 = 0; //奇数位*2 >9 的分割之后的数组个位数之和
|
var sumJiShuChild2 = 0; //奇数位*2 >9 的分割之后的数组十位数之和
|
var sumTotal = 0;
|
for (var m = 0; m < arrJiShu.length; m++) {
|
sumJiShu = sumJiShu + parseInt(arrJiShu[m]);
|
}
|
|
for (var n = 0; n < arrOuShu.length; n++) {
|
sumOuShu = sumOuShu + parseInt(arrOuShu[n]);
|
}
|
|
for (var p = 0; p < jishu_child1.length; p++) {
|
sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p]);
|
sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p]);
|
}
|
//计算总和
|
sumTotal = parseInt(sumJiShu) + parseInt(sumOuShu) + parseInt(sumJiShuChild1) + parseInt(sumJiShuChild2);
|
|
//计算Luhm值
|
var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10;
|
var luhm = 10 - k;
|
|
if (lastNum == luhm) {
|
return true;
|
} else {
|
return false;
|
}
|
}
|
|
/**
|
* 加密
|
* @param {Object} pas
|
*/
|
export function RSAencrypt(pas) {
|
//实例化jsEncrypt对象
|
let jse = new JSEncrypt();
|
//设置公钥
|
jse.setPublicKey(publicKey);
|
return jse.encrypt(pas);
|
}
|
|
/**
|
* 拼接ftp图片路径
|
* @param {Object} item
|
* @param {Object} src
|
*/
|
export function getImgPath(item, src) {
|
if (isBlank(item)) {
|
return src
|
}
|
var ftp = config.sftpURL
|
if (typeof item === 'string') {
|
const arr = JSON.parse(item)
|
return ftp + arr[0].path
|
} else if (typeof item === 'object') {
|
return ftp + item.path
|
} else {
|
return ftp + item
|
}
|
}
|
|
/**
|
* 判断字符串空
|
* @param {Object} str
|
*/
|
export function isBlank(str) {
|
if (str === undefined || str === null || str === '' || str === 'null' || str.length == 0) {
|
return true
|
} else {
|
return false
|
}
|
}
|
|
/**
|
* 判断非空
|
* @param {Object} str
|
*/
|
export function isNotBlank(str) {
|
return !isBlank(str)
|
}
|
|
/**
|
* 判断token是否存在
|
*/
|
export function getToken() {
|
return uni.getStorageSync(ACCESSTOKEN);
|
}
|
|
/**
|
* 判断token是否存在
|
*/
|
export function hasToken() {
|
return !isBlank(getToken());
|
}
|
|
/**
|
* 获取用户信息
|
*/
|
export function getUserInfo() {
|
return JSON.parse(uni.getStorageSync('userInfo'))
|
}
|
|
/**
|
* 判断两个数组的内容是否相同
|
*/
|
export function arrEquals(arr1, arr2) {
|
// if the other arr2 is a falsy value, return
|
if (!arr2)
|
return false;
|
|
// compare lengths - can save a lot of time
|
if (arr1.length != arr2.length)
|
return false;
|
|
for (var i = 0, l = arr1.length; i < l; i++) {
|
// Check if we have nested arr2s
|
if (arr1[i] instanceof Array && arr2[i] instanceof Array) {
|
// recurse into the nested arr2s
|
if (!arr1[i].equals(arr2[i]))
|
return false;
|
} else if (arr1[i] != arr2[i]) {
|
// Warning - two different object instances will never be equal: {x:20} != {x:20}
|
return false;
|
}
|
}
|
return true;
|
}
|
|
/**
|
* 获取当前时间
|
*/
|
export function getDate(type) {
|
const date = new Date();
|
let year = date.getFullYear();
|
let month = date.getMonth() + 1;
|
let day = date.getDate();
|
|
if (type === 'start') {
|
year = year - 60;
|
} else if (type === 'end') {
|
year = year + 2;
|
}
|
month = month > 9 ? month : '0' + month;;
|
day = day > 9 ? day : '0' + day;
|
return `${year}-${month}-${day}`;
|
}
|
|
/**
|
* 判断是否为整数,为整数则拼接'.0'
|
*/
|
export function rateMark(num) {
|
if (Number.isInteger(num)) {
|
return num + '.0'
|
} else {
|
return num
|
}
|
}
|
|
/**
|
* 秒转分钟
|
* @param {Object} value
|
*/
|
export function formatSeconds(value) {
|
var secondTime = parseInt(value); // 秒
|
var minuteTime = 0; // 分
|
var hourTime = 0; // 小时
|
if (secondTime > 60) { //如果秒数大于60,将秒数转换成整数
|
//获取分钟,除以60取整数,得到整数分钟
|
minuteTime = parseInt(secondTime / 60);
|
//获取秒数,秒数取佘,得到整数秒数
|
secondTime = parseInt(secondTime % 60);
|
//如果分钟大于60,将分钟转换成小时
|
if (minuteTime > 60) {
|
//获取小时,获取分钟除以60,得到整数小时
|
hourTime = parseInt(minuteTime / 60);
|
//获取小时后取佘的分,获取分钟除以60取佘的分
|
minuteTime = parseInt(minuteTime % 60);
|
}
|
}
|
var result = "" + parseInt(secondTime) + "秒";
|
|
if (minuteTime > 0) {
|
result = "" + parseInt(minuteTime) + "分" + result;
|
}
|
if (hourTime > 0) {
|
result = "" + parseInt(hourTime) + "小时" + result;
|
}
|
return result;
|
}
|
|
/**
|
* 日期格式化
|
* @param {Object} date
|
* @param {Object} fmt
|
*/
|
export function dateFormat(date, fmt) {
|
if (!date) {
|
return
|
}
|
if (!fmt) {
|
fmt = 'yyyy-MM-dd hh:mm'
|
}
|
if (!(date instanceof Date)) {
|
date = new Date(date.replace(/-/g, '/'))
|
}
|
|
if (/(y+)/.test(fmt)) {
|
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
|
}
|
|
let o = {
|
'M+': date.getMonth() + 1,
|
'd+': date.getDate(),
|
'h+': date.getHours(),
|
'm+': date.getMinutes(),
|
's+': date.getSeconds()
|
};
|
|
for (let k in o) {
|
if (new RegExp(`(${k})`).test(fmt)) {
|
let str = o[k] + '';
|
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : ('00' + str).substr(str.length));
|
}
|
}
|
return fmt;
|
}
|
|
|
/**
|
* 传入时间格式的时间,以当前时间为标准,返回距离当前时间之前
|
*/
|
export function timeago(date) { //dateTimeStamp是一个时间毫秒,注意时间戳是秒的形式,在这个毫秒的基础上除以1000,就是十位数的时间戳。13位数的都是时间毫秒。
|
if (!date) {
|
return
|
}
|
if (!(date instanceof Date)) {
|
date = new Date(date.replace(/-/g, '/'))
|
}
|
|
var dateTimeStamp = date.getTime()
|
|
var minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
|
var hour = minute * 60;
|
var day = hour * 24;
|
var week = day * 7;
|
var halfamonth = day * 15;
|
var month = day * 30;
|
var now = new Date().getTime(); //获取当前时间毫秒
|
var diffValue = now - dateTimeStamp; //时间差
|
|
if (diffValue < 0) {
|
return;
|
}
|
var minC = diffValue / minute; //计算时间差的分,时,天,周,月
|
var hourC = diffValue / hour;
|
var dayC = diffValue / day;
|
var weekC = diffValue / week;
|
var monthC = diffValue / month;
|
var result = '';
|
if (monthC >= 1 && monthC <= 3) {
|
result = " " + parseInt(monthC) + "月前"
|
} else if (weekC >= 1 && weekC <= 3) {
|
result = " " + parseInt(weekC) + "周前"
|
} else if (dayC >= 1 && dayC <= 6) {
|
result = " " + parseInt(dayC) + "天前"
|
} else if (hourC >= 1 && hourC <= 23) {
|
result = " " + parseInt(hourC) + "小时前"
|
} else if (minC >= 1 && minC <= 59) {
|
result = " " + parseInt(minC) + "分钟前"
|
} else if (diffValue >= 0 && diffValue <= minute) {
|
result = "刚刚"
|
} else {
|
var datetime = new Date();
|
datetime.setTime(dateTimeStamp);
|
var Nyear = datetime.getFullYear();
|
var Nmonth = datetime.getMonth() + 1 < 10 ? "0" + (datetime.getMonth() + 1) : datetime.getMonth() + 1;
|
var Ndate = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
|
var Nhour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
|
var Nminute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
|
var Nsecond = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
|
result = Nyear + "-" + Nmonth + "-" + Ndate
|
}
|
return result;
|
}
|
|
/**
|
* 数组截取
|
* @param {Object} data
|
* @param {Object} index
|
* @param {Object} num
|
*/
|
export function subArray(data, index, num) {
|
return data.slice(index * num, (index * num) + num)
|
}
|
|
// 根据索引替换字符串中的元素,常用语字符串加密
|
export function stringReplace(content, start, num, str) {
|
var content = content.split("");
|
content.splice(start, num, str)
|
return content.join("");
|
}
|
|
export function getByteLength(str) {
|
//先把中文替换成两个字节的英文,在计算长度
|
var aa = str.replace(/[\u0391-\uFFE5]/g, "@@")
|
return aa.length;
|
}
|
|
export function getDiffDay(date_1, date_2) {
|
// 计算两个日期之间的差值
|
let totalDays, diffDate
|
let myDate_1 = new Date(date_1.replace(/-/g, '/'))
|
let myDate_2 = new Date(date_2.replace(/-/g, '/'))
|
// 将两个日期都转换为毫秒格式,然后做差
|
diffDate = Math.abs(myDate_1 - myDate_2) // 取相差毫秒数的绝对值
|
|
totalDays = Math.floor(diffDate / (1000 * 3600 * 24)) // 向下取整
|
// console.log(totalDays)
|
|
return totalDays // 相差的天数
|
}
|
|
/**
|
* 获取两个日期相差的月日时分
|
* @param {Object} start
|
* @param {Object} end
|
* @param {Object} cha
|
* @param {Object} flag
|
*/
|
export function timeFn(start, end, cha, flag) {
|
if (!!!cha) {
|
cha = 0
|
}
|
if (!(start instanceof Date)) {
|
start = new Date(start.replace(/-/g, '/'))
|
}
|
start.setSeconds(start.getSeconds() - 1)
|
|
if (!(end instanceof Date)) {
|
end = new Date(end.replace(/-/g, '/'))
|
}
|
|
var dateDiff = end.getTime() - start + cha; //时间差的毫秒数
|
if (dateDiff == 0) {
|
return null
|
}
|
var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000)); //计算出相差天数
|
var leave1 = dateDiff % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
|
var hours = Math.floor(leave1 / (3600 * 1000)) //计算出小时数
|
//计算相差分钟数
|
var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
|
var minutes = Math.floor(leave2 / (60 * 1000)) //计算相差分钟数
|
//计算相差秒数
|
var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
|
var seconds = Math.round(leave3 / 1000)
|
|
var leave4 = leave3 % (60 * 1000) //计算分钟数后剩余的毫秒数
|
var minseconds = Math.round(leave4 / 1000)
|
if (seconds * 1 < 10) {
|
seconds = '0' + seconds
|
}
|
if (minutes * 1 < 10) {
|
minutes = '0' + minutes
|
}
|
if (hours * 1 < 10) {
|
hours = '0' + hours
|
}
|
if (flag) {
|
var timeFn = (dayDiff ? dayDiff + "天" : '') + hours + "时" + minutes + "分" + seconds + "秒";
|
return timeFn;
|
}
|
var timeFn = (dayDiff ? dayDiff + "天" : '') + hours + ":" + minutes + ":" + seconds;
|
return timeFn;
|
}
|
|
|
/**
|
* 简单的uuid
|
*/
|
export function guid() {
|
return 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
var r = Math.random() * 16 | 0,
|
v = c == 'x' ? r : (r & 0x3 | 0x8);
|
return v.toString(16);
|
});
|
}
|
|
/**
|
* 获取long型数据
|
*/
|
export function glong() {
|
return 'xxxxxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
|
var r = Math.floor((Math.random() * 10)) | 0,
|
v = c == 'x' ? r : (r & 0x3);
|
return v.toString();
|
});
|
}
|
|
/**
|
* 页面跳转
|
* @param {Object} url
|
* @param {Object} param
|
*/
|
export function go(url, param) {
|
var pm = '';
|
if (param != undefined) {
|
if (typeof param === 'string') {
|
param = JSON.parse(param)
|
}
|
for (var p in param) {
|
//遍历json对象的每个key/value对,p为key
|
pm += '&' + p + '=' + param[p];
|
}
|
}
|
pm = pm.substr(1);
|
uni.navigateTo({
|
url: url + '?' + pm
|
});
|
}
|
|
/**
|
* 页面跳转
|
* @param {Object} url
|
* @param {Object} param
|
*/
|
export function redirect(url, param) {
|
var pm = '';
|
if (param != undefined) {
|
if (typeof param === 'string') {
|
param = JSON.parse(param)
|
}
|
for (var p in param) {
|
//遍历json对象的每个key/value对,p为key
|
pm += '&' + p + '=' + param[p];
|
}
|
}
|
pm = pm.substr(1);
|
uni.redirectTo({
|
url: url + '?' + pm
|
});
|
}
|
|
/**
|
* 跳转首页
|
*/
|
export function goIndex() {
|
uni.reLaunch({
|
url: '/pages/index/index'
|
});
|
}
|
|
/**
|
* 跳转登录页
|
*/
|
export function goLogin(callbackUrl) {
|
if (callbackUrl) {
|
uni.redirectTo({
|
url: `/pages/user/login/index?callbackUrl=/${callbackUrl}`
|
});
|
} else {
|
uni.redirectTo({
|
url: `/pages/user/login/index`
|
});
|
}
|
|
}
|
|
/**
|
* 返回
|
*/
|
export function goBack() {
|
uni.navigateBack()
|
}
|
|
/**
|
* 颜色16进制转RGB方法
|
* @param {Object} c
|
*/
|
export function colorRgb(c) {
|
var sColor = c.toLowerCase();
|
//十六进制颜色值的正则表达式
|
var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
|
// 如果是16进制颜色
|
if (sColor && reg.test(sColor)) {
|
if (sColor.length === 4) {
|
var sColorNew = "#";
|
for (var i = 1; i < 4; i += 1) {
|
sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1));
|
}
|
sColor = sColorNew;
|
}
|
//处理六位的颜色值
|
var sColorChange = [];
|
for (var i = 1; i < 7; i += 2) {
|
sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2)));
|
}
|
return "(" + sColorChange.join(",") + ",.08)";
|
}
|
return sColor;
|
};
|
|
/**
|
* 验证手机号
|
* @param {Object} mobile
|
*/
|
export function checkMobile(mobile) {
|
return /^1[3456789]\d{9}$/.test(mobile);
|
}
|
|
/**
|
* 验证身份证号
|
* @param {Object} cardNo
|
*/
|
export function checkCardNo(cardNo) {
|
return /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/
|
.test(cardNo);
|
}
|
|
/**
|
* 验证邮箱
|
* @param {Object} email
|
*/
|
export function checkEmail(email) {
|
return /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(email);
|
}
|
|
/**
|
* 阿拉伯数字转中文数字
|
* @param {Object} num
|
*/
|
export function NoToChinese(num) {
|
var AA = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九");
|
var BB = new Array("", "十", "百", "千", "万", "亿", "点", "");
|
var a = ("" + num).replace(/(^0*)/g, "").split("."),
|
k = 0,
|
re = "";
|
for (var i = a[0].length - 1; i >= 0; i--) {
|
switch (k) {
|
case 0:
|
re = BB[7] + re;
|
break;
|
case 4:
|
if (!new RegExp("0{4}\\d{" + (a[0].length - i - 1) + "}$").test(a[0]))
|
re = BB[4] + re;
|
break;
|
case 8:
|
re = BB[5] + re;
|
BB[7] = BB[5];
|
k = 0;
|
break;
|
}
|
if (k % 4 == 2 && a[0].charAt(i + 2) != 0 && a[0].charAt(i + 1) == 0) re = AA[0] + re;
|
if (a[0].charAt(i) != 0) re = AA[a[0].charAt(i)] + BB[k % 4] + re;
|
k++;
|
}
|
if (a.length > 1) //加上小数部分(如果有小数部分)
|
{
|
re += BB[6];
|
for (var i = 0; i < a[1].length; i++) re += AA[a[1].charAt(i)];
|
}
|
return re;
|
};
|
|
/**
|
* 合并对象相同属性
|
* chenlong
|
* @param obj1 目标对象
|
* @param obj2 源对象
|
*/
|
export function mergeObj(obj1, obj2) {
|
const res = {}
|
Object.keys(obj2).map(key => {
|
if (key in obj1) {
|
res[key] = obj2[key]
|
}
|
})
|
return res
|
}
|
|
/**
|
* 获取返回值
|
* @param {Object} res
|
* @param {Object} fun
|
*/
|
export function getContent(res, fun) {
|
if (res.code === 10000) {
|
fun(res.data)
|
} else {
|
uni.showToast({
|
title: res.msg,
|
duration: 1500,
|
icon: 'none'
|
});
|
}
|
}
|
|
/* 正整数 */
|
export function isInteger(number) {
|
const reg = /^[1-9]\d*$/
|
if (reg.test(number)) {
|
return true
|
} else {
|
return false
|
}
|
}
|
|
/* 判断是否为空 */
|
export function isEmpty(item) {
|
if (item === undefined || item === null || item === '') {
|
return true
|
}
|
return false
|
}
|
|
/* 校验价格,最多两位小数点 */
|
export function isPrice(price) {
|
const reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/
|
if (reg.test(price)) {
|
return true
|
} else {
|
return false
|
}
|
}
|
|
/**
|
* 将元转换为分(如果可以转换,否则原值返回)
|
* @param val
|
* @returns {number|*}
|
*/
|
export function formatYuanToFen(val) {
|
if (isEmpty(val) || !isPrice(val)) {
|
return val
|
}
|
return parseFloat(val) * 100
|
}
|
|
/**
|
* 将分转换为元(如果可以转换,否则原值返回)
|
* @param val
|
* @returns {number|*}
|
*/
|
export function formatFenToYuan(val) {
|
if (isEmpty(val) || !isInteger(val)) {
|
return val
|
}
|
return parseFloat(val) / 100
|
}
|
|
|
/**
|
* 提示错误信息
|
*/
|
export function showErrorMsg(msg) {
|
uni.showToast({
|
title: msg,
|
icon: 'none'
|
});
|
return false;
|
}
|
|
/**
|
* 提示成功信息
|
*/
|
export function showSuccessMsg(msg) {
|
uni.showToast({
|
title: msg,
|
icon: 'none'
|
});
|
}
|
|
|
/**
|
* 计算时间差
|
*/
|
export function timeDiff(startTime, endTime) {
|
// 计算相差的时间
|
const timeDiff = endTime.getTime() - startTime.getTime();
|
if (timeDiff <= 0) return false;
|
|
const totalSeconds = Math.floor(timeDiff / 1000);
|
const hours = Math.floor(totalSeconds / 60 / 60);
|
const minutes = Math.floor((totalSeconds - hours * 60 * 60) / 60);
|
const seconds = Math.floor(totalSeconds - hours * 60 * 60 - minutes * 60);
|
const timeDiffArray = [hours, minutes, seconds].map(e => {
|
return e < 10 ? '0' + e : e;
|
});
|
return timeDiffArray;
|
}
|
|
/**
|
* 两数相加 arg1 + arg2
|
* @param arg1
|
* @param arg2
|
* @returns {number}
|
*/
|
export function add(arg1, arg2) {
|
var t = 0
|
arg1 = arg1 ? arg1.toString() : '0'
|
arg2 = arg2 ? arg2.toString() : '0'
|
if (arg1.includes('.')) {
|
t = arg1.split('.')[1].length
|
}
|
if (arg2.includes('.')) {
|
t = Math.max(arg2.split('.')[1].length, t)
|
}
|
var m = Math.pow(10, t)
|
return Number(((this.mul(arg1, m) + this.mul(arg2, m)) / m))
|
}
|
|
/**
|
* 两数相减 arg1 - arg2
|
* @param arg1
|
* @param arg2
|
* @returns {number}
|
*/
|
export function sub(arg1, arg2) {
|
var t = 0
|
arg1 = arg1 ? arg1.toString() : '0'
|
arg2 = arg2 ? arg2.toString() : '0'
|
if (arg1.includes('.')) {
|
t = arg1.split('.')[1].length
|
}
|
if (arg2.includes('.')) {
|
t = Math.max(arg2.split('.')[1].length, t)
|
}
|
var m = Math.pow(10, t)
|
return Number(((this.mul(arg1, m) - this.mul(arg2, m)) / m))
|
}
|
|
/**
|
* 两数相乘 arg1 * arg2
|
* @param arg1
|
* @param arg2
|
* @returns {number}
|
*/
|
export function mul(arg1, arg2) {
|
var t = 0
|
arg1 = arg1 ? arg1.toString() : '0'
|
arg2 = arg2 ? arg2.toString() : '0'
|
if (arg1.includes('.')) {
|
t += arg1.split('.')[1].length
|
}
|
if (arg2.includes('.')) {
|
t += arg2.split('.')[1].length
|
}
|
var r1 = Number(arg1.replace('.', ''))
|
var r2 = Number(arg2.replace('.', ''))
|
return (r1 * r2) / Math.pow(10, t)
|
}
|
|
/**
|
* 两数相除 arg1 / arg2
|
* @param arg1
|
* @param arg2
|
* @returns {number}
|
*/
|
export function abs(arg1, arg2) {
|
var t = 0
|
arg1 = arg1 ? arg1.toString() : '0'
|
arg2 = arg2 ? arg2.toString() : '0'
|
if (arg2.includes('.')) {
|
t = arg2.split('.')[1].length
|
}
|
if (arg1.includes('.')) {
|
t -= arg1.split('.')[1].length
|
}
|
var r1 = Number(arg1.replace('.', ''))
|
var r2 = Number(arg2.replace('.', ''))
|
return this.mul((r1 / r2), Math.pow(10, t))
|
}
|
|
/**
|
* arg1*100/(arg1+arg2)
|
* @param {Object} arg2
|
* @param {Object} arg1
|
*/
|
export function percentage(arg1, arg2) {
|
var add = this.add(arg1, arg2)
|
return this.mul(this.abs(arg1, add), 100)
|
}
|
|
/**
|
* 查看网络状态
|
* false 没有网络 true 有网络
|
*/
|
export function getNetworkStatus() {
|
var result = ''
|
uni.getNetworkType({
|
success: (res) => {
|
if (res.networkType == 'none') {
|
// this.$u.toast("没有网络");
|
result = false
|
} else {
|
// this.$u.toast("有网络");
|
result = true
|
}
|
}
|
})
|
return result
|
}
|
|
/**
|
* @param {Object} key 缓存的key
|
* @param {Object} param 要缓存的对象
|
* 将param push到缓存数组中
|
*/
|
export function setArrayStorageSync(key, param) {
|
const data = uni.getStorageSync(key) || []
|
data.push(param)
|
uni.setStorageSync(key, data)
|
}
|
|
// 获取轮播图列表
|
export function getBannerImg(val, state) {
|
let list = []
|
if (!isBlank(val) && state === '2') {
|
let arr = JSON.parse(val)
|
arr.map(x => {
|
list.push(config.sftpURL + x.path)
|
})
|
} else {
|
list = [config.imgUrl + 'no-book.png']
|
}
|
return list
|
}
|
|
// 商品图片路径
|
export function getGoodsImg(val, state) {
|
let headImg = ""
|
if (!isBlank(val) && state === '2') {
|
headImg = config.sftpURL + JSON.parse(val)[0].path
|
} else {
|
headImg = config.imgUrl + 'no-book.png'
|
}
|
return headImg
|
}
|
|
// 图片路径
|
export function GoodsImg(val) {
|
let headImg = ""
|
if (!isBlank(val)) {
|
headImg = config.sftpURL + val
|
} else {
|
headImg = config.imgUrl + 'no-book.png'
|
}
|
return headImg
|
}
|
|
// 保留三位小数 末尾超过向上进1
|
export function getDiscountPrice(price, discount) {
|
let newPrice = ""
|
let a = Number(price) * Number(discount) / 100
|
let b = a.toFixed(4)
|
let c = b[b.length - 1]
|
newPrice = c != 0 ? Number(b) + 0.01 : b.slice(0, -1)
|
return newPrice
|
}
|
|
// 判断微信、支付宝 2微信 5支付宝 15云闪付 3其他
|
export function getPlat() {
|
// #ifdef H5
|
var ua = window.navigator.userAgent.toLowerCase();
|
//判断是不是微信
|
if (ua.match(/MicroMessenger/i) == 'micromessenger') {
|
return 2;
|
}
|
//判断是不是支付宝
|
if (ua.match(/AlipayClient/i) == 'alipayclient') {
|
return 5;
|
}
|
//判断是不是云闪付
|
if (ua.indexOf('unionpay/1.0') !== -1) {
|
return 15;
|
}
|
// #endif
|
// #ifdef MP-WEIXIN
|
return 2;
|
// #endif
|
// #ifdef MP-ALIPAY
|
return 5;
|
// #endif
|
return 3;
|
}
|