import config from "@/common/utils/config.js" import store from "@/common/store/index.js" module.exports = { /** * 判断字符串是否为空 * @param {Object} string [判断字符] */ isEmptyString: function(string) { if (string == undefined || typeof string == "undefined" || !string || string == null || string == '' || /^\s+$/gi.test(string)) { return true; } else { return false; } }, initSetInfo: function(data) { store.commit("setPropName", { propName: 'userInfo', value: data.userInfo }); store.commit("setPropName", { propName: 'token', value: data.token }); uni.setStorageSync("TOKEN", data.token); uni.setStorageSync("USERINFO",data.userInfo); }, logout() { uni.removeTabBarBadge({ index: 2 }) //移除tabbar角标 //手动断开链接 store.commit("closeSocket") store.commit("setPropName", { propName: 'token', value: "" }); store.commit("setPropName", { propName: 'userInfo', value: "" }); store.commit("setPropName", { propName: 'reciver', value: null }); store.commit("setPropName", { propName: 'reciverId', value: "" }); store.commit("setPropName", { propName: 'readyReciver', value: null }); store.commit("setPropName", { propName: 'readyReciverId', value: "" }); store.commit("setPropName", { propName: 'allSessionList', value: [] }); uni.clearStorage(); }, isLogin() { return uni.getStorageSync("TOKEN") && uni.getStorageSync("sender") ? true : false; }, /** * 判断是否为手机号 * @param {Object} phone [手机号] */ isPoneAvailable: function(phone) { var myreg = /^[1][0-9]{10}$/; if (!myreg.test(phone)) { return false; } else { return true; } }, /** * 判断是否为身份证号 * @param {Object} sId [身份证] */ isCardID: function(sId) { var iSum = 0; var info = ""; if (!/^\d{17}(\d|X)$/i.test(sId)) return "你输入的身份证长度或格式错误"; sId = sId.replace(/X$/i, "a"); let sBirthday = sId.substr(6, 4) + "-" + Number(sId.substr(10, 2)) + "-" + Number(sId.substr(12, 2)); var d = new Date(sBirthday.replace(/-/g, "/")); if (sBirthday != (d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate())) return "您输入的身份证号非法"; for (var i = 17; i >= 0; i--) iSum += (Math.pow(2, i) % 11) * parseInt(sId.charAt(17 - i), 11); if (iSum % 11 != 1) return "您输入的身份证号非法"; return true; }, /** * 判断今天是否为本月最后一天 */ isLastDayOfMonth: function() { var flag = false; var date = new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; var today = 31; var new_year = year; //取当前的年份 var new_month = month++; //取下一个月的第一天,方便计算(最后一天不固定) if (month > 12) { //如果当前大于12月,则年份转到下一年 new_month -= 12; //月份减 new_year++; //年份增 } var new_date = new Date(new_year, new_month, 1); //取当年当月中的第一天 var month_last_day = (new Date(new_date.getTime() - 1000 * 60 * 60 * 24)).getDate(); if (today == month_last_day) { flag = true; } return flag; }, /** * 截取特定url参数 * @param {Object} name [参数名称] */ getQueryString: function(name) { var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i'); var r = window.location.search.substr(1).match(reg); if (r != null) { return unescape(r[2]); } return null; }, //提示窗 tipMsg: function(title, icon, time, mask) { title = title == undefined ? "系统繁忙" : title; icon = icon == undefined ? "none" : icon; time = time == undefined ? 1300 : time; mask = mask == undefined ? true : mask; uni.showToast({ title: title, icon: icon, mask: mask, duration: time }) }, /** * 1.function * @param {string} url 目标页面的路由 * @param {Object} param 传递给目标页面的参数 * @description 处理目标页面的参数,转成json字符串传递给param字段,在目标页面通过JSON.parse(options.param)接收 */ navigateTo(url, param = {}, flag) { if (store.state.isReadyLogin <= 0 && !flag) { this.loginTip(); } else { let part = ''; for (var item in param) { part += '&' + item + '=' + param[item]; } url = "/pages" + url + part.replace('&', '?'); uni.navigateTo({ url: url, fail: err => { this.tipMsg('暂未开放该功能!'); }, }) } }, /** * 2.function * @param {string} url 目标页面的路由 * @param {Object} param 传递给目标页面的参数,只有页面栈无目标页面调用navigateTo时,参数才会生效,单单返回不能设置参数 * @description 先取出页面栈,页面栈最多十层,判断目标页面是否在页面栈中,如果在,则通过目标页的位置,返回到目标页面,否则调用navigateTo方法跳转到目标页 */ navigateBack(url, param = {}) { if (store.state.isReadyLogin <= 0) { this.loginTip(); } else { let part = ''; for (var item in param) { part += '&' + item + '=' + param[item]; } url = "/pages" + url + part.replace('&', '?'); uni.navigateBack({ url: url, fail: err => { this.tipMsg('暂未开放该功能!'); }, }) } }, // 3.封装switchTab,switchTab不能有参数 switchTab(url) { uni.switchTab({ url: url }) }, // 4.封装redirectTo,和navigateTo没啥区别 redirectTo(url, param = {}, flag) { if (store.state.isReadyLogin <= 0 && !flag) { this.loginTip(); } else { let part = ''; for (var item in param) { part += '&' + item + '=' + param[item]; } url = "/pages" + url + part.replace('&', '?'); uni.redirectTo({ url: url, fail(err) { console.log('redirectTo跳转出错', err) }, }) } }, // 5.封装reLaunch,和navigateTo没啥区别 reLaunch(url, param = {}) { if (store.state.isReadyLogin <= 0) { this.loginTip(); } else { let part = ''; for (var item in param) { part += '&' + item + '=' + param[item]; } url = "/pages" + url + part.replace('&', '?'); uni.reLaunch({ url: url, fail(err) { console.log('reLaunch跳转出错', err) }, }) } }, /** * 6.function 打开另一个小程序,仅供小程序 * @param {String} appId 目标小程序ID * @param {String} path 目标小程序的页面路径 * @param {Object} extraData 传给目标小程序的数据 * @param {String} envVersion 目标小程序版本号 */ //appId 如果为空则打开首页(path 中 ? 后面的数据可以再小程序的 App.onLaunch、App.onShow 和 Page.onLoad 的回调函数当中获取到, // extraData(object) 需要传递给目标小程序的数据(目标小程序可在 App.onLaunch,App.onShow 中获取到传过来的数据), // envVersion 要打开的小程序版本。仅在当前小程序为开发版或体验版时此参数有效。如果当前小程序是正式版,则打开的小程序必定是正式版。 navigateToMiniProgram(appId, path, extraData, envVersion) { uni.navigateToMiniProgram({ appId: appId, path: path, extraData: extraData, envVersion: envVersion, fail(err) { console.log('打开另外小程序失败', err) } }) }, // 7.返回打开的上个小程序 //extraData(object) 需要返回给上一个小程序的数据,上一个小程序可在 App.onShow 中获取到这份数据。 navigateBackMiniProgram(extraData) { uni.navigateBackMiniProgram({ extraData: extraData, fail(err) { console.log('返回上个小程序失败', err) } }) }, //跳转到HTML页面 navigateToHtml(link, param = {}) { let part = ''; for (var item in param) { part += '&' + item + '=' + param[item]; } var url = "/pages/htmlShell/htmlShell?link=" + encodeURIComponent(link + part.replace('&', '?')); uni.navigateTo({ url: url, fail: err => { this.tipMsg('暂未开放该功能!'); }, }) }, //获取手机信息 getTelephoneInfo(){ return new Promise((resolve, reject) => { var data = uni.getStorageSync("telephoneInfo"); if(!data){ // 获取右上角胶囊的位置信息 //#ifndef H5 let btn = wx.getMenuButtonBoundingClientRect(); uni.getSystemInfo({ success: e => { let info = { screenHeight:e.screenHeight, statusBarHeight:e.statusBarHeight, windowWidth:e.windowWidth, top:btn.top } uni.setStorageSync("telephoneInfo",info); resolve(info); }, fail: (err) => { reject(err); } }) //#endif }else{ resolve(data); } }) }, }