You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
369 lines
9.9 KiB
369 lines
9.9 KiB
import {sandBox} from './sandBox';
|
|
import config from './config';
|
|
// #ifdef H5
|
|
import wechat from './wechat';
|
|
// #endif
|
|
|
|
|
|
|
|
export const is = {
|
|
env() {
|
|
return process.env.NODE_ENV
|
|
},
|
|
has(val) {
|
|
return !!val;
|
|
},
|
|
isNum(val){
|
|
return val && /^[0-9]$/.test(val);
|
|
},
|
|
not(val) {
|
|
return !val;
|
|
},
|
|
empty(val) {
|
|
return val === '';
|
|
},
|
|
age(val){
|
|
return val && /^[0-9]{1,2}$/.test(val);
|
|
},
|
|
equal(v1, v2) {
|
|
return v1 === v2;
|
|
},
|
|
qq(val) {
|
|
return val && /^[1-9]\d{4,12}$/.test(val);
|
|
},
|
|
name(val) {
|
|
return val && /^[A-Za-z0-9\u4E00-\u9FA5_]{2,10}$/.test(val);
|
|
},
|
|
mobile(val) {
|
|
return val && /^(?:\+?86)?1(?:3\d{3}|5[^4\D]\d{2}|8\d{3}|7(?:[01356789]\d{2}|4(?:0\d|1[0-2]|9\d))|9[01356789]\d{2}|6[2567]\d{2}|4[579]\d{2})\d{6}$/.test(val);
|
|
},
|
|
fifteen(val) {
|
|
return val && /^[\d\-_\+]{2,15}$/.test(val);
|
|
},
|
|
email(val) {
|
|
return val && /^[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(val);
|
|
},
|
|
password(val) {
|
|
return val && val.length && val.length > 5 && !/^\d+$/.test(val);
|
|
},
|
|
bank(val) {
|
|
if (!val) return false;
|
|
val = String(val);
|
|
|
|
|
|
var lastNum=val.substr(val.length-1,1); //取出最后一位(与luhm进行比较)
|
|
var first15Num=val.substr(0,val.length-1); //前15或18位
|
|
var newArr=[];
|
|
for(var i=first15Num.length-1;i>-1;i--){ //前15或18位倒序存进数组
|
|
newArr.push(first15Num.substr(i,1));
|
|
}
|
|
var arrJiShu=[]; //奇数位*2的积 <9
|
|
var arrJiShu2=[]; //奇数位*2的积 >9
|
|
|
|
var arrOuShu=[]; //偶数位数组
|
|
for(var j=0;j<newArr.length;j++){
|
|
if((j+1)%2==1){//奇数位
|
|
if(parseInt(newArr[j])*2<9) {
|
|
arrJiShu.push(parseInt(newArr[j])*2);
|
|
} else {
|
|
arrJiShu2.push(parseInt(newArr[j])*2);
|
|
}
|
|
} else {
|
|
//偶数位
|
|
arrOuShu.push(newArr[j]);
|
|
}
|
|
}
|
|
|
|
var jishu_child1=[];//奇数位*2 >9 的分割之后的数组个位数
|
|
var jishu_child2=[];//奇数位*2 >9 的分割之后的数组十位数
|
|
for(var h=0;h<arrJiShu2.length;h++){
|
|
jishu_child1.push(parseInt(arrJiShu2[h])%10);
|
|
jishu_child2.push(parseInt(arrJiShu2[h])/10);
|
|
}
|
|
|
|
var sumJiShu=0; //奇数位*2 < 9 的数组之和
|
|
var sumOuShu=0; //偶数位数组之和
|
|
var sumJiShuChild1=0; //奇数位*2 >9 的分割之后的数组个位数之和
|
|
var sumJiShuChild2=0; //奇数位*2 >9 的分割之后的数组十位数之和
|
|
var sumTotal;
|
|
for(var m=0;m<arrJiShu.length;m++){
|
|
sumJiShu=sumJiShu+parseInt(arrJiShu[m]);
|
|
}
|
|
|
|
for(var n=0;n<arrOuShu.length;n++){
|
|
sumOuShu=sumOuShu+parseInt(arrOuShu[n]);
|
|
}
|
|
|
|
for(var p=0;p<jishu_child1.length;p++){
|
|
sumJiShuChild1=sumJiShuChild1+parseInt(jishu_child1[p]);
|
|
sumJiShuChild2=sumJiShuChild2+parseInt(jishu_child2[p]);
|
|
}
|
|
//计算总和
|
|
sumTotal=parseInt(sumJiShu)+parseInt(sumOuShu)+parseInt(sumJiShuChild1)+parseInt(sumJiShuChild2);
|
|
|
|
//计算Luhm值
|
|
var k= parseInt(sumTotal)%10==0?10:parseInt(sumTotal)%10;
|
|
var luhm= 10-k;
|
|
|
|
return lastNum == luhm;
|
|
}
|
|
};
|
|
/*获取当前页带参数的url*/
|
|
function getCurrentPageUrlWithArgs(){
|
|
var pages = getCurrentPages() //获取加载的页面
|
|
var currentPage = pages[pages.length-1] //获取当前页面的对象
|
|
var url = currentPage.route //当前页面url
|
|
var options = currentPage.options //如果要获取url中所带的参数可以查看options
|
|
|
|
//拼接url的参数
|
|
var urlWithArgs = url + '?'
|
|
for(var key in options){
|
|
var value = options[key]
|
|
urlWithArgs += key + '=' + value + '&'
|
|
}
|
|
urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length-1)
|
|
|
|
return encodeURIComponent(urlWithArgs)
|
|
};
|
|
|
|
// 解析Url
|
|
function parseUrl(url) {
|
|
var url = url.replace(/^\?/, '');
|
|
|
|
url=getCaption('?');
|
|
|
|
console.log(url);console.log(333);
|
|
var params = {};
|
|
if (url) {
|
|
url.split('&').forEach(function (part) {
|
|
var parts = part.split('=');
|
|
var name = parts.shift();
|
|
var value = parts.join('&');
|
|
|
|
if (/\[]$/.test(name)) {
|
|
name = name.replace(/\[]$/, '');
|
|
params[name] = params[name] || [];
|
|
params[name].push(value);
|
|
} else {
|
|
params[name] = value;
|
|
}
|
|
})
|
|
}
|
|
|
|
return params;
|
|
};
|
|
|
|
function GetUrl(url) {
|
|
var jsons = {},
|
|
jsond = {}
|
|
var url =url?url:window.location.href;
|
|
if(url.indexOf('?') > 0) {
|
|
var url = url.split("?")[1];
|
|
|
|
function countInstances(mainStr, subStr) {
|
|
var count = 0;
|
|
var offset = 0;
|
|
do {
|
|
offset = mainStr.indexOf(subStr, offset);
|
|
if(offset != -1) {
|
|
count++;
|
|
offset += subStr.length;
|
|
}
|
|
} while (offset != -1)
|
|
return count;
|
|
}
|
|
|
|
var num = countInstances(url, '&')
|
|
|
|
if(num == 0) {
|
|
var a = url.split('&')
|
|
k = '', v = ''
|
|
k = url.substr(0, url.indexOf('='))
|
|
v = url.substr(url.indexOf('=') + 1)
|
|
jsons[k] = v
|
|
} else {
|
|
var a = url.split('&')
|
|
var jsons = {},
|
|
jsond = {},
|
|
k, v
|
|
for(var i = 0; i < a.length; i++) {
|
|
k = '', v = ''
|
|
k = a[i].substr(0, a[i].indexOf('='))
|
|
v = a[i].substr(a[i].indexOf('=') + 1)
|
|
jsons[k] = v
|
|
}
|
|
}
|
|
return jsons
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Url赋值
|
|
|
|
// 时间戳
|
|
const timeMap={
|
|
y: 31536000000,
|
|
m: 2592000000,
|
|
d: 86400000,
|
|
h: 3600000,
|
|
n: 60000,
|
|
s: 1000
|
|
};
|
|
var version = config.VERSION || '1.0.1';
|
|
|
|
//缓存模块 时间可以是1y 1m 1d.. 还有毫秒数
|
|
export const cookieStorage={
|
|
set:function(key,value,time){
|
|
let data={};
|
|
data.data=value;
|
|
let timestamp="";
|
|
time+="";
|
|
// 缓存时间设置
|
|
if(time){
|
|
var last=time.charAt(time.length-1);
|
|
if(!is.isNum(last)){
|
|
timestamp=(time.slice(0,time.length-1))*(timeMap[last])+new Date().getTime();
|
|
}
|
|
else {
|
|
timestamp=time*1+new Date().getTime();
|
|
}
|
|
}
|
|
else{
|
|
timestamp=null;
|
|
}
|
|
data.expire=timestamp;
|
|
data.version = version;
|
|
wx.setStorageSync(key,data);
|
|
},
|
|
get:function(key){
|
|
if(!wx.getStorageSync(key)){
|
|
return null;
|
|
}
|
|
let data=wx.getStorageSync(key),
|
|
expireTime=data.expire;
|
|
if (!data.version || data.version != version) {
|
|
this.clear(key);
|
|
return null
|
|
} else if(expireTime){
|
|
if(expireTime>new Date().getTime()){
|
|
return data.data;
|
|
}else{
|
|
this.clear(key);
|
|
return null;
|
|
}
|
|
} else{
|
|
return data.data;
|
|
}
|
|
},
|
|
clear:function(key){
|
|
wx.removeStorageSync(key);
|
|
}
|
|
};
|
|
// 页面登陆
|
|
function pageLogin(url,callback){
|
|
var token=cookieStorage.get('user_token');
|
|
if(!token){
|
|
wx.redirectTo({
|
|
url: '/pages/user/register/register?url=' + url
|
|
})
|
|
} else {
|
|
callback && callback(token);
|
|
}
|
|
}
|
|
|
|
|
|
//判断生日有礼
|
|
function isBirthday(){
|
|
let isLogin =!!cookieStorage.get("user_token");
|
|
let birthdayCache=cookieStorage.get("birthday_gift") || {};
|
|
let app = getApp();
|
|
return new Promise((reslove,reject)=>{
|
|
if( isLogin && !birthdayCache.flag){
|
|
let oauth=cookieStorage.get("user_token");
|
|
sandBox.post({
|
|
api:"api/home/gift_birthday",
|
|
header:{
|
|
Authorization:oauth
|
|
},
|
|
data:{}
|
|
}).then(res =>{
|
|
res=res.data;
|
|
if(res.status && res.data){
|
|
var data={};
|
|
data.flag=false;
|
|
data.data=res.data;
|
|
cookieStorage.set("birthday_gift",data);
|
|
reslove();
|
|
}
|
|
else{
|
|
reject();
|
|
}
|
|
})
|
|
}
|
|
else{
|
|
reject();
|
|
}
|
|
});
|
|
}
|
|
//自动登陆
|
|
function autoLogin(code,agent_code) {
|
|
return new Promise((resolve, reject) => {
|
|
sandBox.post({
|
|
api: 'api/oauth/miniprogram/login',
|
|
data: {
|
|
code: code,
|
|
open_type:'miniprogram',
|
|
shop_id: cookieStorage.get('shop_id') || '',
|
|
agent_code: agent_code || '',
|
|
clerk_id: cookieStorage.get('clerk_id') || '',
|
|
agent_code_time: cookieStorage.get('agent_code_time') || '',
|
|
shop_id_time: cookieStorage.get('shop_id_time') || '',
|
|
},
|
|
}).then(res => {
|
|
res = res.data;
|
|
if (res.status) {
|
|
if (res.data.access_token) {
|
|
var access_token = res.data.token_type + ' ' + res.data.access_token;
|
|
var expires_in = res.data.expires_in || 315360000;
|
|
cookieStorage.set("user_token", access_token, expires_in);
|
|
}
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
})
|
|
}
|
|
resolve(res)
|
|
}).catch(rej => {
|
|
reject()
|
|
wx.showModal({
|
|
content:'请求失败,请重试',
|
|
showCancel: false,
|
|
})
|
|
})
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = {
|
|
getUrl: getCurrentPageUrlWithArgs,
|
|
pageLogin:pageLogin,
|
|
isBirthday:isBirthday,
|
|
is:is,
|
|
config:config,
|
|
cookieStorage:cookieStorage,
|
|
// #ifdef H5
|
|
wechat:wechat,
|
|
// #endif
|
|
GetUrl:GetUrl,
|
|
|
|
// #ifdef MP-WEIXIN
|
|
autoLogin:autoLogin
|
|
// #endif
|
|
}
|