319 lines
8.5 KiB
JavaScript
319 lines
8.5 KiB
JavaScript
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);
|
||
}
|
||
})
|
||
},
|
||
}
|