aos-element
Version:
A Component Library for Vue.js.
332 lines (331 loc) • 8.51 kB
JavaScript
/* eslint-disable */
let idCard = (value,callback) => {
let cityCodeList = ["11", "12", "13", "14", "15", "21", "22","23", "31", "32", "33", "34", "35", "36", "37", "41", "42", "43","44", "45", "46", "50", "51", "52", "53", "54", "61", "62", "63","64", "65", "71", "81", "82", "91" ];
let reg = /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9X]$/;
let idCardLength = 0;
if(!value){
callback(true);
} else {
idCardLength = value.length;
}
if(idCardLength === 15){
if(!firstIdCard(value)){
callback("身份证校验错误")
}
} else if(idCardLength === 18){
if(!secondIdCard(value)){
callback("身份证校验错误")
}
}else {
callback("身份证位数错误")
}
function firstIdCard(idCard){
let reg = /^[1-9]\d{7}((0[1-9])|(1[0-2]))((0[1-9])|([1-2][0-9])|(3[0-1]))\d{3}$/;
if(reg.test(idCard)){
return true;
}
return false;
};
function secondIdCard(idCard){
let cityCode = idCard.substring(0,2);
let birthDate = idCard.substring(6,14);
if(!reg.test(value)){
return false;
}
if(!(cityCodeList.indexOf(cityCode) >= 0)){
return false;
}
if(!checkDate(birthDate)){
return false;
}
if(!checkCode(idCard)){
return false;
}
return true;
};
function translateFirstToSecond(idCard){
let secondCard;
return secondCard;
};
function checkDate(value){
let reg = /^(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)$/;
if(reg.test(value)){
let year = value.substring(0, 4);
let month = value.substring(4, 6);
let date = value.substring(6, 8);
let date2 = new Date(year+"-" + month+"-" + date);
if(date2 && date2.getMonth() == (parseInt(month) - 1)) {
return true;
}
}
return false;
};
function checkCode(idCard){
let factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
let parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
let code = idCard.substring(17);
let sum = 0;
for(let i=0;i<17;i++) {
sum += idCard[i]*factor[i];
}
if(parity[sum % 11] == code.toUpperCase()) {
return true;
}
return false;
}
callback(true);
};
let email = (value,callback) => {
let reg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
if(!value){
callback('邮箱格式错误')
} else if(!reg.test(value)){
callback('邮箱格式错误')
} else {
callback(true)
}
};
let cellPhone = (value,callback) => {
let reg = /^[1][3456789][0-9]{9}$/;
if(!value){
callback('手机格式错误')
} else if(!reg.test(value)){
callback('手机格式错误')
} else {
callback(true)
}
};
let phoneNoRequired = (value,callback) => {
let phone = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
let cellPhone = /^[1][3456789][0-9]{9}$/;
if(!value){
callback(true);
} else if(!phone.test(value) && !cellPhone.test(value)){
callback('电话或手机格式错误')
} else {
callback(true);
}
};
let phone = (value,callback) => {
let phone = /^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/;
let cellPhone = /^[1][3456789][0-9]{9}$/;
if(!value){
callback('电话或手机不能为空')
} else if(!phone.test(value) && !cellPhone.test(value)){
callback('电话或手机格式错误')
} else {
callback(true);
}
};
let number = (value,callback) => {
let numberReg = /^\-?[0-9]*$/;
if(!numberReg.test(value)){
callback('请输入数字类型')
} else {
callback(true);
}
};
let numberDecimal = (value,callback) => {
let numberReg = /^\-?[0-9\.]*$/;
if(value){
if(typeof value === 'number'){
value += ''
}
if(!numberReg.test(value)){
callback('请输入正确的数字类型')
} else if(value.indexOf('.') === 0){
callback('请输入正确的数字类型')
} else if(value.split('.').length > 2){
callback('请输入正确的数字类型')
} else {
callback(true);
}
} else {
callback(true);
}
};
let nameType = (value,callback) => {
let numberReg = /^[\u4e00-\u9fa5\·]+$/;
if(!numberReg.test(value)){
callback('请输入正确的姓名')
}else if(value.substring(0,1) === '·' || value.substring(value.length - 1) === '·'){
callback('请输入正确的姓名')
} else if(value.length > 20){
callback('姓名长度不能大于20个字符')
} else {
callback(true);
}
};
let vin = (value,callback) => {
if(value.length !== 17){
callback("车架号位数错误")
} else if(value.indexOf('I') > -1 || value.indexOf('O') > -1 || value.indexOf('Q') > -1){
callback("车架号校验错误")
} else if(!checkCode(value)){
callback("车架号校验错误")
} else {
callback(true)
}
function checkCode(value){
let factor = ['8','7','6','5','4','3','2','10','0','9','8','7','6','5','4','3','2'];
let vinMap = {
'0': 0,
'1': 1,
'2': 2,
'3': 3,
'4': 4,
'5': 5,
'6': 6,
'7': 7,
'8': 8,
'9': 9,
'A': 1,
'B': 2,
'C': 3,
'D': 4,
'E': 5,
'F': 6,
'G': 7,
'H': 8,
'J': 1,
'K': 2,
'L': 3,
'M': 4,
'N': 5,
'P': 7,
'R': 9,
'S': 2,
'T': 3,
'U': 4,
'V': 5,
'W': 6,
'X': 7,
'Y': 8,
'Z': 9
};
let valueList = [];
let totalNumber = 0;
let checkCode;
if(value){
valueList = value.split('');
}
valueList.forEach((item,index) => {
totalNumber += vinMap[item] * factor[index]
});
checkCode = totalNumber%11;
if(checkCode === 10){
checkCode = 'X'
} else {
checkCode += '';
}
if(checkCode === valueList[8]){
return true;
} else {
return false;
}
}
};
let businessLicence = (value,callback) => {
let reg = /[IOZSV]/;
if(typeof value === 'number'){
value += '';
}
if(value.length !== 15 && value.length !== 18){
callback(new Error('营业执照号码位数错误'))
} else if(reg.test(value)){
callback(new Error('营业执照号码错误'))
} else {
if(value.length === 15){
let regNum = /^[0-9A-Z]{15}$/;
if(!regNum.test(value)){
callback(new Error('营业执照号码错误'))
} else if(!check15(value)){
callback(new Error('营业执照号码错误'))
} else {
callback(true);
}
} else if(value.length === 18){
let regNum = /^[0-9A-Z]{18}$/;
if(!regNum.test(value)){
callback(new Error('营业执照号码错误'))
} else if(!check18(value)){
callback(new Error('营业执照号码错误'))
} else {
callback(true);
}
}
}
function check15(value){
let valList = value.substring(0,14).split('');
let result = 10;
let tmp = void 0;
valList.forEach((item,index) => {
item = parseInt(item);
tmp = (item + result)%10
if(tmp === 0){
tmp = 10
}
result = (tmp*2)%11;
})
if(!((result + parseInt(value.substring(14)))%10 === 1)){
return false;
} else {
return true;
}
};
function check18(value){
let parity = [1,3,9,27,19,26,16,17,20,29,25,13,8,24,10,30,28];
let resultList = [0,1,2,3,4,5,6,7,8,9,'A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','T','U','W','X','Y'];
if(typeof value === 'string'){
let valList = value.substring(0,17).split('');
let total = 0;
let result = 0;
valList.forEach((item,index) => {
total += item*parity[index];
});
result = 31 - total%31;
if (result === 31) result = 0
if(value.substring(17) == resultList[result]){
return true;
} else {
return false;
}
} else {
return false
}
};
};
let postalCode = (value,callback) => {
let reg = /^[0-9]\d{5}$/;
if(!value){
callback('邮政编码格式错误')
} else if(!reg.test(value)){
callback('邮政编码格式错误')
} else {
callback(true)
}
};
let money = (value,callback) => {
let reg = /(^(([1-9]([0-9]+)?)|(0{1}))(\.[0-9]{1,2})?$)/;
if(!value){
callback('金额格式错误')
} else if(!reg.test(value)){
callback('金额格式错误')
} else {
callback(true)
}
}
export {
idCard,
email,
cellPhone,
phoneNoRequired,
phone,
number,
numberDecimal,
vin,
businessLicence,
nameType,
postalCode,
money
}