import * as API from './API'; let APP = getApp(); let FUNCTION_TEXT = 'function'; /*判断是否iphonex*/ function isIPhoneX() { let screenHeight = wx.getSystemInfoSync().screenHeight let bottom = wx.getSystemInfoSync().safeArea.bottom return screenHeight !== bottom } /*获取当前页url*/ function getCurrentPageUrl() { var pages = getCurrentPages() var currentPage = pages[pages.length - 1] var url = currentPage.route return url } /*获取当前页带参数的url*/ function getCurrentPageUrlWithArgs() { var pages = getCurrentPages() var currentPage = pages[pages.length - 1] var url = currentPage.route var options = currentPage.options var urlWithArgs = url + '?' for (var key in options) { var value = options[key] urlWithArgs += key + '=' + value + '&' } urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length - 1) return urlWithArgs } /** * 无图标,纯文本Toast提示 */ function showToastNoneIcon(title) { if (title == undefined || title == '') { title = ''; } return wx.showToast({ title: title, icon: 'none', duration:3000 }); } /** * 显示Modal弹框(无取消按钮,只显示) * @param {标题} title * @param {内容} content * @param {按钮文字,默认确定} confirmText */ function showModalNoneCancel(title, content, confirmText) { wx.showModal({ title: title, showCancel: false, content: content, confirmText: (typeof confirmText == 'undefined' || confirmText == '') ? '确定' : confirmText, success: function (e) { } }) } /** * 显示完整的Modal弹框提示 * @param {标题} title * @param {内容} content * @param {确认} confirmText * @param {取消} cancelText * @param {回调} param4 */ function showModalOnClick(title, content, confirmText, cancelText, { confirm, cancel }) { wx.showModal({ title: title, content: content, confirmText: (typeof confirmText == 'undefined' || confirmText == '') ? '确定' : confirmText, cancelText: (typeof cancelText == 'undefined' || cancelText == '') ? '取消' : cancelText, success: function (e) { if (e.confirm) { confirm(); } else if (e.cancel) { cancel(); } } }) } /** * 有背景图层的loading * * @param {内容} content */ function showLoadingHaveMask(content) { wx.showLoading({ title: (typeof content == "undefined" || content == '') ? '加载中...' : content, mask: true }) } /** * 隐藏loading */ function hideLoadingHaveMask() { wx.hideLoading(); } /** * 全局通用网络请求方法,默认post传输 */ function httpRequest(url, data, { success, fail, complete }) { wx.showNavigationBarLoading(); let finalData = {}; Object.assign(finalData, data); // wx.getStorageSync('dressCode') finalData.token = wx.getStorageSync('token'); wx.request({ url:wx.getStorageSync('dressCode')+url, data: finalData, method:data.method, timeout: 60000, header: { 'Authorization':'Bearer '+wx.getStorageSync('token') }, success: function (response) { if (response.data && response.data._code == API.INVALID_USER_TOKEN_CODE) { //微信登陆失效 showToastNoneIcon(API.MSG_INVALID_USER_TOKEN); wx.navigateTo({ url: API.USER_LOGIN_PAGE_PATH, }) } else if (typeof success === FUNCTION_TEXT) { success(response.data); } }, fail: function (response) { if (typeof fail === FUNCTION_TEXT) { fail(handleFail(response)); } else { showToastNoneIcon(API.MSG_FAIL_HTTP); } }, complete: function (response) { if (typeof complete === FUNCTION_TEXT) { if (response.data && response.data._code == API.SUCCESS_CODE) { complete(response.data); } else { complete(handleFail(response.data)); } } wx.hideNavigationBarLoading(); } }) } /** * 网络访问(无其他处理) * @param {地址} url * @param {参数} data * @param {方法 get or post} method * @param {回调} param3 */ function httpRequestNoneDetal(url, data, method, { success, fail, complete }) { wx.showNavigationBarLoading(); wx.request({ url:wx.getStorageSync('dressCode')+url, data: data, method: method, success: function (response) { if (typeof success === FUNCTION_TEXT) { success(response.data); } }, fail: function (response) { if (typeof fail === FUNCTION_TEXT) { fail(handleFail(response)); } else { showToastNoneIcon(API.MSG_FAIL_HTTP); } }, complete: function (response) { if (typeof complete === FUNCTION_TEXT) { if (response.data && response.data._code == API.SUCCESS_CODE) { complete(response.data); } else { complete(handleFail(response.data)); } } wx.hideNavigationBarLoading(); } }) } /** * 调用失败 */ function handleFail(data = '') { let { _msg = API.MSG_FAIL_HTTP, _code = 10001, _data = '', } = data; return { _code, _data, _msg } } /** * 微信授权 获取信息 */ // function initSQFromWX() { // let that = this; // wx.getSetting({ // success(res) { // // if (res.authSetting['scope.userInfo']) { // // console.log('个人信息:authSetting 已授权'); // // } else { // // console.log('个人信息:authSetting 未授权'); // // } // if (res.authSetting['scope.userLocation']) { // //定位已开启,暂不做功能处理 // console.log('定位:authSetting 已授权'); // getApp().globalData.setInfo.locationOpenIdWX = true; // } else { // //定位未开启,申请授权 // wx.authorize({ // scope: 'scope.userLocation', // success() { // //定位已开启,暂不做功能处理 // console.log('定位:wx.authorize success'); // getApp().globalData.setInfo.locationOpenIdWX = true; // } // , // fail() { // //如果之前已经拒绝过,直接返回fail 不弹窗 // console.log('定位:wx.authorize fail'); // getApp().globalData.setInfo.locationOpenIdWX = false; // wx.navigateTo({ // url: '/pages/wxAuth/wxAuth', // }) // } // }) // } // }, // fail(e) { // }, // complete() { // } // }); // } /** * 获取微信Code */ function getCOdeFromWX({ complate }) { showLoadingHaveMask('正在加载数据..'); wx.login({ success: function (data) { complate(data.code); hideLoadingHaveMask() }, fail: function (err) { hideLoadingHaveMask(); showModalNoneCancel("温馨提示", "登陆失败,建议请重新打开小程序") } }) } /** * ,获取到的微信用户信息(昵称、头像、省市 赋值给globalData.wxUserInfo) */ function getUserInfoFomWX() { wx.getUserProfile({ desc: '用于完善会员资料', success: res => { getApp().globalData.wxUserInfo.nickName = res.userInfo.nickName; getApp().globalData.wxUserInfo.avatarUrl = res.userInfo.avatarUrl; //不再返回 强制返回“” // getApp().globalData.wxUserInfo.province = res.userInfo.province; // getApp().globalData.wxUserInfo.city = res.userInfo.city; console.log("获取到个人信息:" + res.userInfo.nickName); success(res); }, complete: res => { } }) } /** * 获取地理位置 * @param {回调} param0 */ function getLocationFromWX() { // wx.getLocation({ // type: 'wgs84', // success(res) { // console.log(res); // getApp().globalData.setInfo.latitude = res.latitude; // getApp().globalData.setInfo.longitude = res.longitude; // } // , fail(res) { // showToastNoneIcon('获取地理信息失败'); // } // }) } function convert_length(length) { return Math.round(wx.getSystemInfoSync().windowWidth * length / 750); } /** * 比较版本号(参数'1.11.0', '1.9.9',返回1) * @param {*} v1 * @param {*} v2 */ function compareVersion(v1, v2) { v1 = v1.split('.') v2 = v2.split('.') const len = Math.max(v1.length, v2.length) while (v1.length < len) { v1.push('0') } while (v2.length < len) { v2.push('0') } for (let i = 0; i < len; i++) { const num1 = parseInt(v1[i]) const num2 = parseInt(v2[i]) if (num1 > num2) { return 1 } else if (num1 < num2) { return -1 } } return 0 } /** * 获取当前年-月-日 时:分:秒 */ function js_date_time(unixtime) { var date = new Date(unixtime); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? ('0' + m) : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; var h = date.getHours(); h = h < 10 ? ('0' + h) : h; var minute = date.getMinutes(); var second = date.getSeconds(); minute = minute < 10 ? ('0' + minute) : minute; second = second < 10 ? ('0' + second) : second; // return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;//年月日时分秒 return y + '-' + m + '-' + d + ' ' + h + ':' + minute; } /** * 获取当前年-月-日 */ function formatDate(unixtime) { var date = new Date(unixtime); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? ('0' + m) : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; var h = date.getHours(); h = h < 10 ? ('0' + h) : h; var minute = date.getMinutes(); var second = date.getSeconds(); minute = minute < 10 ? ('0' + minute) : minute; second = second < 10 ? ('0' + second) : second; // return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;//年月日时分秒 return y + '-' + m + '-' + d; } /** * 获取当前年-月-日 */ function formatDates(unixtime) { var date = new Date(unixtime); var y = date.getFullYear(); var m = date.getMonth() + 1; m = m < 10 ? ('0' + m) : m; var d = date.getDate(); d = d < 10 ? ('0' + d) : d; var h = date.getHours(); h = h < 10 ? ('0' + h) : h; var minute = date.getMinutes(); var second = date.getSeconds(); minute = minute < 10 ? ('0' + minute) : minute; second = second < 10 ? ('0' + second) : second; // return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;//年月日时分秒 return y + '-' + m; } /** * 将数字(整数)转为汉字 * @param num * @description 从零到一亿亿,需要小数的可自行截取小数点后面的数字直接替换对应arr1的读法就行了 */ function convertToChinaNum (num) { var arr1 = new Array('零', '一', '二', '三', '四', '五', '六', '七', '八', '九'); var arr2 = new Array('', '十', '百', '千', '万', '十', '百', '千', '亿', '十', '百', '千','万', '十', '百', '千','亿');//可继续追加更高位转换值 if(!num || isNaN(num)){ return "零"; } var english = num.toString().split("") var result = ""; for (var i = 0; i < english.length; i++) { var des_i = english.length - 1 - i;//倒序排列设值 result = arr2[i] + result; var arr1_index = english[des_i]; result = arr1[arr1_index] + result; } //将【零千、零百】换成【零】 【十零】换成【十】 result = result.replace(/零(千|百|十)/g, '零').replace(/十零/g, '十'); //合并中间多个零为一个零 result = result.replace(/零+/g, '零'); //将【零亿】换成【亿】【零万】换成【万】 result = result.replace(/零亿/g, '亿').replace(/零万/g, '万'); //将【亿万】换成【亿】 result = result.replace(/亿万/g, '亿'); //移除末尾的零 result = result.replace(/零+$/, '') //将【零一十】换成【零十】 //result = result.replace(/零一十/g, '零十');//貌似正规读法是零一十 //将【一十】换成【十】 result = result.replace(/^一十/g, '十'); return result; } function getTransform(dictValue,options){ var dictLabel2 = ""; options.map(item=>{ if(item.dictValue == dictValue){ dictLabel2 = item.dictLabel } }) return dictLabel2; } function ToChinese(n){       if (!/^(0|[1-9]\d*)(\.\d+)?$/.test(n)){         return "数据非法";  //判断数据是否大于0       }       let unit = "千百拾亿千百拾万千百拾元角分", str = "";       n += "00";       let indexpoint = n.indexOf('.');  // 如果是小数,截取小数点前面的位数       if (indexpoint >= 0){         n = n.substring(0, indexpoint) + n.substr(indexpoint+1, 2);   // 若为小数,截取需要使用的unit单位       }       unit = unit.substr(unit.length - n.length);  // 若为整数,截取需要使用的unit单位       for (let i=0; i < n.length; i++){         str += "零壹贰叁肆伍陆柒捌玖".charAt(n.charAt(i)) + unit.charAt(i);  //遍历转化为大写的数字       }       return str.replace(/零(千|百|拾|角)/g, "零").replace(/(零)+/g, "零").replace(/零(万|亿|元)/g, "$1").replace(/(亿)万|壹(拾)/g, "$1$2").replace(/^元零?|零分/g, "").replace(/元$/g, "元整"); // 替换掉数字里面的零字符,得到结果 } /* 加载动画相关 */ const showLoading = (tips = '加载中...') => { wx.showNavigationBarLoading() wx.showLoading({ title: tips, }) } const hideLoadings = () => { wx.hideLoading() wx.hideNavigationBarLoading() } const hideLoadingWithErrorTips = (err = '加载失败...') => { hideLoading() wx.showToast({ title: err, icon: 'error', duration: 2000 }) } /** * @author Rui.Zhang * @description 判断是否为银行卡号 * @param {String} str_cardNo 待校验的数据 * @returns {Boolean}, true:是银行卡号 **/ function isBankCard (str_cardNo) { str_cardNo = str_cardNo || String(this); if ("" == str_cardNo.trim() || undefined == str_cardNo) { return false; } var lastNum = str_cardNo.substr(str_cardNo.length - 1, 1);//取出最后一位(与luhm进行比较) var first15Num = str_cardNo.substr(0, str_cardNo.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;j9 的分割之后的数组个位数 var jishu_child2=new Array();//奇数位*2 >9 的分割之后的数组十位数 for(var h=0;h9 的分割之后的数组个位数之和 var sumJiShuChild2=0; //奇数位*2 >9 的分割之后的数组十位数之和 var sumTotal=0; for(var m=0;m