金诚优选前端代码
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

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
}