import requst from './requst'; const tools = { /** * @description 课程详情 */ goDetail(id) { uni.navigateTo({ url:`/pagesB/course-detail/course-detail?id=${id}` }) }, /** * @description 页面跳转 */ goPage(path) { uni.navigateTo({ url:path }) }, /** * @description 获取字符串中的数字 */ obtainCount(str) { return parseInt(str.replace(/[^0-9]/ig,"")) }, /** * @description 获取微信扫码后的结果,并解析 */ unescapeEv(op) { let str = unescape(op.q); return str; }, /** * @description 手机号验证 */ isPhone:function(phone){ // 手机号正则表达式 let reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/; return !reg_tel.test(phone); }, /** * @description 手机号中间四位用"****"带替 */ hideMPhone(phone){ return `${phone.substr(0, 3)}****${phone.substr(7)}` }, /** * @description 手机号中间加字符 */ phoneAddChat(phone,startNum=3,endNum=7,character=' '){ let phoneStr = phone; phoneStr = phoneStr.replace(/\s*/g, ""); var phoneArr = []; for(var i = 0; i < phoneStr.length; i++){ if (i==startNum||i==endNum){ phoneArr.push(`${character}` + phoneStr.charAt(i)); } else { phoneArr.push(phoneStr.charAt(i)); } } phone = phoneArr.join(""); return phone; }, /** * @description 整数添加.00,小数就不添加 */ addXiaoShu(num){ // console.log(num,'添加小数点后两位小数'); let str = num.toString(); str = str*1; str = str.toFixed(2); str = str+''; return str.includes('.') ? str : str = num + '.00'; }, // type:+加、-减、*乘、/除 // len:小数后保留几位 /** * @description 数字换算解决失精度问题 */ operationEv(num1,num2,type,len=0){ // 将数字转化成字符串 num1 = num1.toString(); num2 = num2.toString(); // 获取小数点的位置 var index1 = num1.indexOf("."); var index2 = num2.indexOf("."); // 如果小数点存在,那么就再获取各自的小数位数 var ws1 = 0; var ws2 = 0; if(index1 != -1){ ws1 = num1.split(".")[1].length; } if(index2 != -1){ ws2 = num2.split(".")[1].length; } // 看谁的小数位数大,谁的小数位数小 var bigger = (ws1 > ws2) ? ws1 : ws2; var smaller = (ws1 < ws2) ? ws1 : ws2; // 计算得到需要补齐的0的个数 var zerosCount = bigger - smaller; // 好了,现在不管三七二十,全部去除小数点 num1 = num1.replace(".",""); num2 = num2.replace(".",""); // 比较num1和num2谁大,比较方法就是看谁是smaller,是smaller的一方就补0 if(ws1 == smaller){ for (var i = 0; i < zerosCount; i++) { num1 += "0"; } } else { for (var i = 0; i < zerosCount; i++) { num2 += "0"; } } // 开始计算 var sum = ""; if(type=="+"){ // 加 sum = parseInt(num1) + parseInt(num2); } if(type=="-"){ // 减 sum = parseInt(num1) - parseInt(num2); } if(type=="*"){ // 乘 sum = parseInt(num1) * parseInt(num2); } if(type=="/"){ // 除 sum = parseInt(num1) / parseInt(num2); } // 根据较大的小数位数计算倍数 var beishu = 1; for (var i = 0; i < bigger; i++) { beishu = beishu*10; } sum = sum/beishu; if(type=="*"){ switch (bigger){ case 1: sum = sum / 10; break; case 2: sum = sum / 100; break; case 3: sum = sum / 1000; break; } } if(type=="/"){ switch (bigger){ case 1: sum = sum * 10; break; case 2: sum = sum * 100; break; case 3: sum = sum * 1000; break; } } len!=0 ? sum = sum.toFixed(len) : ''; return sum; }, /** * @description 文本提示 */ showToast: function(msg, icon='none',time) { // 弹框显示时间:默认2秒 var newTime = 2000 if (time) {newTime = time;} return uni.showToast({ title: msg, icon: icon, duration:newTime }) }, /** * @description 富文本处理 */ escape2Html(str) { var arrEntities = { 'lt': '<', 'gt': '>', 'nbsp': ' ', 'amp': '&', 'quot': '"' }; return str.replace(/&(lt|gt|nbsp|amp|quot|src);/ig, function (all, t) { return arrEntities[t]; }) .replace(']*src=['"]([^'"]+)[^>]*>/gi, (match, p1) => { return ` -1 ? p1 : 'https://oss.hmzfyy.cn' + p1}' />` }) }, /** * @description 检查网络状态 */ networkStatus(){ uni.getNetworkType({ success: (res)=> { console.log('当前网络状态:',res.networkType);//none:当前无网络连接 if(res.networkType=='none'){ uni.setStorageSync('isNet',false) } else { uni.setStorageSync('isNet',true); // 微信小程序原生API性能优化 // #ifdef MP-WEIXIN // 连网下,检测小程序是否有更新 this.checkUpdate(); // #endif } } }); }, /** * @description app、小程序的检测版本并更新 */ checkUpdate(){ // 检测app // #ifdef APP-PLUS // #endif //检测小程序 // #ifdef MP-WEIXIN var self = this; // 获取小程序更新机制兼容 if (wx.canIUse('getUpdateManager')) { const updateManager = wx.getUpdateManager();//1. 检查小程序是否有新版本发布 updateManager.onCheckForUpdate(function(res) {// 请求完新版本信息的回调 if (res.hasUpdate) { //检测到新版本,需要更新,给出提示 wx.showModal({ title: '更新提示', content: '检测到新版本,是否下载新版本并重启小程序?', success: function(res) { if (res.confirm) { //2. 用户确定下载更新小程序,小程序下载及更新静默进行 self.downLoadAndUpdate(updateManager) // 清除所有缓存 uni.clearStorage(); uni.clearStorageSync(); } else if (res.cancel) { //用户点击取消按钮的处理,如果需要强制更新,则给出二次弹窗,如果不需要,则这里的代码都可以删掉了 wx.showModal({ title: '温馨提示~', content: '本次版本更新涉及到新的功能添加,旧版本无法正常访问的哦~', showCancel:false,//隐藏取消按钮 confirmText:"确定更新",//只保留确定更新按钮 success: function(res) { if (res.confirm) { //下载新版本,并重新应用 self.downLoadAndUpdate(updateManager) } } }) } } }) } }) } else { // 如果希望用户在最新版本的客户端上体验您的小程序,可以这样子提示 wx.showModal({ title: '提示', content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。' }) } // #endif }, // 下载小程序新版本并重启应用 downLoadAndUpdate(updateManager){ var self = this; wx.showLoading(); //静默下载更新小程序新版本 updateManager.onUpdateReady(function () { wx.hideLoading(); //新的版本已经下载好,调用 applyUpdate 应用新版本并重启 updateManager.applyUpdate(); // 清除缓存 uni.clearStorageSync(); uni.clearStorage(); }) updateManager.onUpdateFailed(function () { // 新的版本下载失败 wx.showModal({ title: '已经有新版本了哟~', content: '新版本已经上线啦~,请您删除当前小程序,重新搜索打开哟~', }) }) }, /** * @description 文本复制 */ clickCopy(data){ uni.setClipboardData({ data: data, success: ()=> { uni.showToast({title: '复制成功',duration: 2000,icon: 'none'}); } }); }, authTimer:null, /** * @description 判断是否授权,没授权,前往登录页面授权 */ judgeAuth(){ let auth = false; clearTimeout(this.authTimer); // if(uni.getStorageSync('is_active')!=1) { if(!uni.getStorageSync('token')) { this.showToast('请登录'); this.authTimer = setTimeout(()=>{ uni.navigateTo({url:'/pages/login/login'}); },2000) } else { auth = true; } return auth; }, /** * @description 判断当前环境:清空日志输出 */ currentContext(){ // #ifdef APP-PLUS if(uni.getSystemInfoSync().platform != "devtools"){//devtools:开发版 值域为:ios、android、mac(3.1.10+)、windows(3.1.10+)、linux(3.1.10+) // console.log = () =>{} } // #endif // 微信小程序原生API性能优化 // #ifdef MP-WEIXIN let hInfo = wx.getAccountInfoSync(); // console.log(hInfo.envVersion);//develop:开发版 trial:体验版 release:正式版 if(hInfo.miniProgram.envVersion == "release"){ // 清除所有输出日志 console.log = () =>{}; } // #endif }, /** * @description 获取当前页面完整url */ obtainPagePath(){ let pages = getCurrentPages(); // 获取纯页面路径 let route = pages[pages.length - 1].route; uni.setStorageSync('url',route); // 获取当前页面url,带参数 let routeParam = pages[pages.length - 1].$page.fullPath; // console.log(routeParam.options,'获取当前url参数'); uni.setStorageSync('page-path-options',routeParam); console.log(uni.getStorageSync('page-path-options'),'当前页面完整路径'); }, /** * @description 打开小程序获取用户信息权限 */ wxOpenSet() { // #ifdef MP-WEIXIN // 用户信息 uni.authorize({ scope:'scope.userInfo', success: (res) => {}, fail: (res) => { uni.showModal({ content:'检测到您没打开获取信息功能权限,是否去设置打开?', confirmText: "确认", cancelText:'取消', success: (res) => { if(res.confirm){ uni.openSetting({ success: (res) => { console.log(res); } }) }else{ console.log('取消'); } } }) } }) // #endif }, /** * @description 小程序二维码解析 */ analysis(val) { // #ifdef MP-WEIXIN let str = unescape(val); str = str.split('invite_code=')[1]; uni.setStorageSync('invite_code',str); // uni.login({ // provider: 'weixin', // success: (res)=> { // var params = { // code:res.code, // invite_code:str,//用户邀请码 // } // requst.post('/api/user/login',params).then(res => {},error => {}) // }, // }); // #endif }, timeToken:null, // 开启一个半小时刷新token refreshToken(){ clearInterval(this.timeToken); // 调用登录事件 this.loginEv(); this.timeToken = setInterval(()=>{ // 调用登录事件 this.loginEv(); },600000*9) }, // 登录事件 loginEv(){ uni.login({ provider: 'weixin', success: (res)=> { var params = {code:res.code} uni.request({ url: `${getApp().globalData.hostapi}/api/user/login`, method: 'post', data: params, success: result => { if(result.data.data.token!=''){ console.log('刷新了token'); uni.setStorageSync('token',result.data.data.token); // 缓存token uni.setStorageSync('openid',result.data.data.openid)//缓存openid uni.setStorageSync('expire',result.data.data.expire); // 缓存失效时间(时间戳格式) uni.setStorageSync('phone_active',result.data.data.phone_active); // 是否绑定手机号 uni.setStorageSync('is_active',result.data.data.is_active)//是否第一次授权 uni.setStorageSync('invite_code',result.data.data.invite_code)//缓存用户邀请码 } } }) }, }); }, } export default { tools }