|
|
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
}
|