asd/asd-wx/common/utils/common.js
愉快的大福 340a467ba1 init
2024-11-21 11:32:11 +08:00

319 lines
8.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.封装switchTabswitchTab不能有参数
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.onLaunchApp.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);
}
})
},
}