123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735 |
- /* eslint-disable */
- //常用方法集合
- export default {
- countDownClock(time) {
- let times = Math.floor(time / 1000);
- let secondNum = times % 60;
- let minuteNum = Math.floor((times / 60) % 60);
- let hourNum = Math.floor((times / (60 * 60)) % 24);
- let dayNum = Math.floor(times / (60 * 60 * 24));
- let str;
- if (dayNum > 0) {
- str = dayNum + '天 ' + (hourNum > 9 ? hourNum : '0' + hourNum) + ':' + (minuteNum > 9 ? minuteNum : '0' +
- minuteNum) + ':' + (secondNum > 9 ? secondNum : '0' + secondNum);
- // console.log(str,1)
- return str
- } else if (hourNum > 0) {
- str = (hourNum > 9 ? hourNum : '0' + hourNum) + ':' + (minuteNum > 9 ? minuteNum : '0' + minuteNum) + ':' +
- (secondNum > 9 ? secondNum : '0' + secondNum)
- // console.log(str,2)
- return str;
- } else if (minuteNum > 0) {
- str = '00:' + (minuteNum > 9 ? minuteNum : '0' + minuteNum) + ':' + (secondNum > 9 ? secondNum : '0' +
- secondNum);
- // console.log(minuteNum,str,3)
- return str
- } else if (secondNum > 0) {
- str = '00:00:' + (secondNum > 9 ? secondNum : '0' + secondNum);
- // console.log(secondNum,4)
- return str
- } else {
- return '00:00:00'
- }
- },
- formatRichText(html) {
- //控制小程序中图片大小
- if (!html) {
- return "";
- }
- let newContent = html.replace(/<img[^>]*>/gi, function(match, capture) {
- match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
- match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
- match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
- return match;
- });
- newContent = newContent.replace(/style="[^"]+"/gi, function(match, capture) {
- match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi,
- 'max-width:100%;');
- return match;
- });
- // newContent = newContent.replace(/<br[^>]*\/>/gi, '');
- newContent = newContent.replace(/\<img/gi,
- '<img style="max-width:100%;height:auto;display:block;margin-top:10rpx;font-size:0;"');
- return newContent;
- },
- /**
- * 时间处理
- */
- patTime(val) {
- var beginTime = new Date()
- var time = val - beginTime
- var days = Math.floor(time / (24 * 3600 * 1000))
- var leave1 = time % (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)
- if (days > 0) {
- return days + '天' + hours + ':' + minutes + ':' + seconds
- } else {
- if (hours > 0) {
- return hours + ':' + minutes + ':' + seconds
- } else {
- if (minutes > 0) {
- return minutes + ':' + seconds
- } else {
- if (seconds > 0) {
- return seconds + '秒'
- } else {
- return '00:00'
- }
- }
- }
- }
- },
- /**
- * 金额保留两位小数点后,大小
- */
- priceBigSmall(value = 0, boolean = true) {
- // let val = (Math.floor((value || 0) * 100) / 100).toFixed(2);
- let val = this.precisionTrue(value, 2)
- let splitPrice = val.split(".");
- let price =
- `<span style="font-size:11px;font-weight: normal;">¥</span>${splitPrice[0]}.<span style="font-size:11px;font-weight: normal;">${splitPrice[1]}</span>`;
- // 若boolean 为 false,则不带单位 ¥
- if (boolean == false) {
- price = price.replace(/¥/g, '')
- }
- return price
- },
- priceBigSmallTwo(value = 0) {
- // let val = (Math.floor((value || 0) * 100) / 100).toFixed(2);
- let val = this.precisionTrue(value, 2)
- let splitPrice = val.split(".");
- let price =
- `<span >¥</span>${splitPrice[0]}.<span style="font-size:11px;font-weight: normal;">${splitPrice[1]}</span>`;
- return price
- },
- // 进度正确
- precisionTrue(num, n) {
- if (n != undefined && (isNaN(n) || Number(n) > 17 || Number(n) < 0)) {
- throw new Error("输入正确的精度范围");
- }
- // 拆分小数点整数和小数
- // var num = this;
- var f = '';
- num = Number(num)
- if (Number(num) < 0) {
- num = -Number(num);
- f = '-';
- }
- var numList = num.toString().split(".");
- // 整数
- var iN = numList[0];
- // 小数
- var dN = numList[1];
- n = parseInt(n);
- if (isNaN(n) || Number(n) === 0) {
- // 0或者不填的时候,按0来处理
- if (dN === undefined) {
- return num + '';
- }
- var idN = Number(dN.toString().substr(0, 1));
- if (idN >= 5) {
- if (Number(iN) < 0) {
- iN = Number(iN) - 1
- } else {
- iN = Number(iN) + 1
- }
- }
- return iN + '';
- } else {
- var dNL = dN === undefined ? 0 : dN.length;
- if (dNL < n) {
- // 如果小数位不够的话,那就补全
- var oldN = num.toString().indexOf('.') > -1 ? num : num + '.';
- var a = Number(n) - dNL;
- while (a > 0) {
- oldN += '0';
- a--;
- }
- return oldN;
- }
- // 正常
- var olddN = dN.toString().substring(0, n);
- var dN1 = Number(dN.toString().substring(0, n));
- var dN2 = Number(dN.toString().substring(n, n + 1));
- if (dN2 >= 5) {
- dN1 += 1;
- if (olddN.length - dN1.toString().length > 0) {
- var olddNL = olddN.length - dN1.toString().length
- while (olddNL > 0) {
- dN1 = '0' + dN1
- olddNL--;
- }
- }
- if (dN1.toString().length > n) {
- if (Number(iN) < 0) {
- iN = Number(iN) - 1
- } else {
- iN = Number(iN) + 1
- }
- dN1 = '0';
- while (n > 1) {
- dN1 += '0'
- n--;
- }
- }
- } else {
- dN1 = olddN
- }
- return f + iN + '.' + dN1;
- }
- },
- priceBigSmallTherr(value) {
- let val = (Math.floor((value || 0) * 100) / 100).toFixed(2);
- let splitPrice = val.split(".");
- let price = `<span >¥</span>${splitPrice[0]}.<span>${splitPrice[1]}</span>`;
- return price
- },
- /**
- * 金额保留两位小数点
- */
- priceDecimals(value) {
- let val = (Math.floor((value || 0) * 100) / 100).toFixed(2);
- return val
- },
- /**
- * toast提示
- */
- toast(title, duration = 3000, mask = false, icon = 'none') {
- if (Boolean(title) === false) {
- return;
- }
- uni.showToast({
- title,
- duration,
- mask,
- icon
- });
- },
- getPrevPage() {
- var pages = getCurrentPages(); // 获取页面栈
- var prevPage = pages[pages.length - 2]; // 上一个页面
- return prevPage;
- },
- // 获取当前页面栈
- getCurrentPageFun(url) {
- let currentPage = getCurrentPages()
- uni.setStorageSync('toUrl', currentPage[currentPage.length - 1].route)
- uni.navigateTo({
- url: url
- })
- },
- // 清除当前页面栈路由缓存
- removeCurrenPage() {
- let currentPage = getCurrentPages()
- let toUrl = uni.getStorageSync('toUrl')
- let backNum = 0
- currentPage.map((item, index) => {
- if (item.route == toUrl) {
- backNum = index
- }
- })
- uni.navigateBack({
- delta: currentPage.length - backNum - 1
- })
- uni.removeStorageSync('toUrl')
- },
- /**
- * 开发环境全局打印日志
- * @param {Object} title
- */
- log(title) {
- if (process.env.NODE_ENV === 'development' && Boolean(title) === true) {
- console.log(JSON.stringify(title));
- }
- },
- /**
- * 异步获取设备信息
- */
- getInfoAsync() {
- return new Promise((resolve, reject) => {
- plus.device.getInfo({
- success(e) {
- resolve(e);
- },
- fail(e) {
- reject(e.message);
- }
- });
- });
- },
- /**
- * 安卓10不支持IMEI,则获取OAID
- */
- getOaidAsync() {
- return new Promise((resolve, reject) => {
- plus.device.getOAID({
- success(e) {
- resolve(e);
- },
- fail(e) {
- reject(e.message);
- }
- });
- });
- },
- /**
- * 获取一个随机数
- * @param {Object} min
- * @param {Object} max
- */
- random(min, max) {
- switch (arguments.length) {
- case 1:
- return parseInt(Math.random() * min + 1, 10);
- break;
- case 2:
- return parseInt(Math.random() * (max - min + 1) + min, 10);
- break;
- default:
- return 0;
- break;
- }
- },
- /**
- * 获取ios的IDFA
- */
- getIdfa() {
- let idfa = '';
- try {
- if ('iOS' == plus.os.name) {
- let manager = plus.ios.invoke('ASIdentifierManager', 'sharedManager');
- if (plus.ios.invoke(manager, 'isAdvertisingTrackingEnabled')) {
- let identifier = plus.ios.invoke(manager, 'advertisingIdentifier');
- idfa = plus.ios.invoke(identifier, 'UUIDString');
- plus.ios.deleteObject(identifier);
- }
- plus.ios.deleteObject(manager);
- }
- } catch (e) {
- console.error('获取idfa失败');
- }
- return idfa;
- },
- /*
- * obj 转 params字符串参数
- * 例子:{a:1,b:2} => a=1&b=2
- */
- objParseParam(obj) {
- let paramsStr = '';
- if (obj instanceof Array) return paramsStr;
- if (!(obj instanceof Object)) return paramsStr;
- for (let key in obj) {
- paramsStr += `${key}=${obj[key]}&`;
- }
- return paramsStr.substring(0, paramsStr.length - 1);
- },
- /*
- * obj 转 路由地址带参数
- * 例子:{a:1,b:2} => /pages/research/homepage/index?a=1&b=2
- */
- objParseUrlAndParam(path, obj) {
- let url = path || '/';
- let paramsStr = '';
- if (obj instanceof Array) return url;
- if (!(obj instanceof Object)) return url;
- paramsStr = this.objParseParam(obj);
- paramsStr && (url += '?');
- url += paramsStr;
- return url;
- },
- /*
- * 获取url字符串参数
- */
- getRequestParameters(locationhref) {
- let href = locationhref || '';
- let theRequest = new Object();
- let str = href.split('?')[1];
- if (str != undefined) {
- let strs = str.split('&');
- for (let i = 0; i < strs.length; i++) {
- theRequest[strs[i].split('=')[0]] = strs[i].split('=')[1];
- }
- }
- return theRequest;
- },
- /**
- * 加密字符串
- */
- strEncode(str) {
- const key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- let l = key.length;
- let a = key.split('');
- let s = '',
- b,
- b1,
- b2,
- b3;
- for (let i = 0; i < str.length; i++) {
- b = str.charCodeAt(i);
- b1 = b % l;
- b = (b - b1) / l;
- b2 = b % l;
- b = (b - b2) / l;
- b3 = b % l;
- s += a[b3] + a[b2] + a[b1];
- }
- return s;
- },
- /**
- * 解密字符串
- */
- strDecode(str) {
- const key = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- let l = key.length;
- let b,
- b1,
- b2,
- b3,
- d = 0,
- s;
- s = new Array(Math.floor(str.length / 3));
- b = s.length;
- for (let i = 0; i < b; i++) {
- b1 = key.indexOf(str.charAt(d));
- d++;
- b2 = key.indexOf(str.charAt(d));
- d++;
- b3 = key.indexOf(str.charAt(d));
- d++;
- s[i] = b1 * l * l + b2 * l + b3;
- }
- b = eval('String.fromCharCode(' + s.join(',') + ')');
- return b;
- },
- /**
- * 比较版本号
- */
- compareVersion(reqV, curV) {
- if (curV && reqV) {
- let arr1 = curV.split('.'),
- arr2 = reqV.split('.');
- let minLength = Math.min(arr1.length, arr2.length),
- position = 0,
- diff = 0;
- while (
- position < minLength &&
- (diff = parseInt(arr1[position]) - parseInt(arr2[position])) == 0
- ) {
- position++;
- }
- diff = diff != 0 ? diff : arr1.length - arr2.length;
- if (diff > 0) {
- if (position == minLength - 1) {
- return 1;
- } else {
- return 2;
- }
- } else {
- return 0;
- }
- } else {
- return 0;
- }
- },
- /**
- * H5复制
- */
- h5Copy(content) {
- let textarea = document.createElement('textarea');
- textarea.value = content;
- textarea.readOnly = 'readOnly';
- document.body.appendChild(textarea);
- textarea.select(); // 选择对象
- textarea.setSelectionRange(0, content.length); //核心
- let result = document.execCommand('Copy'); // 执行浏览器复制命令
- textarea.remove();
- const msg = result ? '复制成功' : '复制失败';
- this.toast(msg);
- },
- /**
- * app分享
- */
- handleAppShare(shareUrl, shareTitle, shareContent, shareImg) {
- let shareData = {
- shareUrl,
- shareTitle,
- shareContent,
- shareImg
- };
- appShare(shareData, res => {});
- },
- async handleWxH5Share(title, desc, link, imgUrl) {
- // #ifdef H5
- if ($mPayment.isWechat()) {
- if (uni.getSystemInfoSync().platform === 'android') {
- await $mPayment.wxConfigH5(link);
- }
- jweixin.ready(function() {
- // eslint-disable-next-line
- jweixin.updateAppMessageShareData({
- title, // 分享标题
- desc, // 分享描述
- link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
- imgUrl, // 分享图标
- success: function() {
- // 用户确认分享后执行的回调函数
- },
- cancel: function() {
- // 用户取消分享后执行的回调函数
- }
- });
- // eslint-disable-next-line
- jweixin.updateTimelineShareData({
- title, // 分享标题
- desc, // 分享描述
- link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
- imgUrl, // 分享图标
- success: function() {
- // 用户确认分享后执行的回调函数
- },
- cancel: function() {
- // 用户取消分享后执行的回调函数
- }
- });
- });
- }
- // #endif
- },
- //截取后四位数
- cutOut(value) {
- if (!value) {
- return '';
- }
- return value.substring(value.length - 4)
- },
- // 去掉字符串中的空格
- trim(str) {
- if (!str) {
- return '';
- }
- return str.replace(/\s*/g, '');
- },
- // 判断两个对象是否相同
- isObjectValueEqual(x, y) {
- // 指向同一内存时
- if (x === y) {
- return true;
- } else if (
- typeof x == 'object' &&
- x != null &&
- typeof y == 'object' && y != null
- ) {
- if (Object.keys(x).length != Object.keys(y).length) return false;
- for (var prop in x) {
- if (y.hasOwnProperty(prop)) {
- if (!this.isObjectValueEqual(x[prop], y[prop])) return false;
- } else return false;
- }
- return true;
- } else return false;
- },
- platformGroupFilter() {
- let platformGroup = 'tinyShop';
- // #ifdef H5
- if ($mPayment.isWechat()) {
- platformGroup = 'tinyShopWechat';
- } else {
- platformGroup = 'tinyShopH5';
- }
- // #endif
- // #ifdef MP-QQ
- platformGroup = 'tinyShopQqMp';
- // #endif
- // #ifdef MP-WEIXIN
- platformGroup = 'tinyShopWechatMp';
- // #endif
- // #ifdef MP-ALIPAY
- platformGroup = 'tinyShopAliMp';
- // #endif
- // #ifdef MP-QQ
- platformGroup = 'tinyShopQqMp';
- // #endif
- // #ifdef MP-BAIDU
- platformGroup = 'tinyShopBaiduMp';
- // #endif
- // #ifdef APP-PLUS
- switch (uni.getSystemInfoSync().platform) {
- case 'android':
- platformGroup = 'tinyShopAndroid';
- break;
- case 'ios':
- platformGroup = 'tinyShopIos';
- break;
- }
- // #endif
- return platformGroup;
- },
- countDown(ft, ct) {
- var ctime = ct || Math.floor(new Date().getTime())
- var time = ft * 1000 - ctime
- var days = Math.floor(time / (24 * 3600 * 1000))
- var leave1 = time % (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)
- console.log(days + ':' + hours + ':' + minutes + ':' + seconds)
- return days + ':' + hours + ':' + minutes + ':' + seconds
- // if(days >0){
- // return days+'天'+hours+':'+minutes+':'+seconds
- // }else{
- // if(hours >0){
- // return hours+':'+minutes+':'+seconds
- // }else{
- // if(minutes >0){
- // return minutes+':'+seconds
- // }else{
- // if(seconds>0){
- // return seconds+'秒'
- // }else{
- // return '00:00'
- // }
- // }
- // }
- // }
- },
- // 保留8位小数
- isToFixed(value, num) {
- if (value) {
- let val = this.precisionTrue(value, num)
- let splitPrice = val.split(".");
- let price =
- `<span style="font-size:16px;font-weight: bold;color:#FF6600">${splitPrice[0]}.</span><span style="font-size:11px;font-weight: normal;color:#FF6600">${splitPrice[1]}</span> 贡献值`;
- return price
- } else {
- return `<span style="font-size:16px;font-weight: bold;color:#FF6600">0.</span><span style="font-size:11px;font-weight: normal;color:#FF6600">00</span> 贡献值`;
- }
- },
- isToFixedNum(value, num) {
- if (value) {
- let val = this.precisionTrue(value, num)
- return val
- } else {
- return 0
- }
- },
- // 电话隐私保护
- phoneChange(tel) {
- if (tel) {
- let result = tel.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
- return result
- } else {
- return tel
- }
- },
- // 打电话
- callup(mobile) {
- uni.makePhoneCall({
- phoneNumber: mobile //仅为示例
- });
- },
- // 导航
- jumpLocation(latitude, longitude) {
- uni.getLocation({
- type: 'gcj02', //返回可以用于uni.openLocation的经纬度
- success: function(res) {
- uni.openLocation({
- latitude: Number(latitude),
- longitude: Number(longitude),
- success: function() {
- console.log('success');
- }
- });
- }
- });
- },
- // banner跳转
- imgLink(type, id, url, shopid) {
- if (type == "goods") {
- uni.navigateTo({
- url: "/pages/product/goods/goods?id=" + id + "&shopid=" + shopid,
- });
- } else if (type == "service") {
- // uni.navigateTo({
- // url: "/pages/product/goods/serviceGood?id=" + id
- // });
- } else if (type == "point_goods") {
- // uni.navigateTo({
- // url: "/pages/product/goods/IntegralGood?id=" + id
- // });
- } else if (type == "url") {
- if (/^http/.test(url)) {
- uni.navigateTo({
- url: "/pages/index/webView?linkUrl=" + url,
- });
- } else {
- uni.navigateTo({
- url
- });
- }
- } else if (type == 'inner_url') {
- uni.navigateTo({
- url
- });
- }
- },
- // 一行卡号脱敏
- bankAccount(value) {
- if (value) {
- let reg = /^(.{4})(?:\d+)(.{4})$/
- let str = value.replace(reg, "$1 **** **** $2")
- return str
- } else {
- return value
- }
- },
- // 列表分页
- pagination(total, currentPageNum, currentPageSize) {
- let totalPage = 0
- if (total / currentPageSize > parseInt(total / currentPageSize)) {
- totalPage = parseInt(total / currentPageSize) + 1
- } else {
- totalPage = parseInt(total / currentPageSize);
- }
- if (currentPageNum < totalPage) {
- return 'more'
- }
- return 'noMore'
- }
- };
|