Vue+iView身份证、统一社会信用编码校验

Vue+iView⾝份证、统⼀社会信⽤编码校验⾝份证校验
export default {
data() {
const IdCardNum= (rule, value, callback) => {
//⾮空校验
if(!value){
return callback(new Error('请输⼊⾝份证号!'));
}
//长度校验
if(value.length!=18){
return callback(new Error('输⼊有误,⾝份证号长度需为18位!'));
}
//格式和⽇期校验
let pattern = /^\d{6}(1[8-9]|[2-9][0-9])\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}(\d|X)$/;
if(!st(value)){过氧化氢碘化钾
return callback(new Error('输⼊有误,请检查⾝份证号格式!'));
}
//省份地址编码校验
var city = {
11 : "北京",
12 : "天津",
13 : "河北",
14 : "⼭西",
15 : "内蒙古",
21 : "辽宁",
22 : "吉林",
23 : "⿊龙江 ",
31 : "上海",
32 : "江苏",
33 : "浙江",
34 : "安徽",
35 : "福建",
36 : "江西",
37 : "⼭东",
41 : "河南",
42 : "湖北 ",
43 : "湖南",
44 : "⼴东",
45 : "⼴西",
46 : "海南",
50 : "重庆",
DML51 : "四川",
52 : "贵州",
53 : "云南",
54 : "西藏 ",
61 : "陕西",
62 : "⽢肃",
63 : "青海",
64 : "宁夏",
65 : "新疆",
71 : "台湾",
81 : "⾹港",
新奇小家电82 : "澳门",
91 : "国外 "
};
if(!city[value.substr(0,2)]){
return callback(new Error('输⼊有误,请检查⾝份证号地址编码是否正确!'));
return callback(new Error('输⼊有误,请检查⾝份证号地址编码是否正确!'));
}
//最后⼀位校验码校验
if (value.length == 18) {
value = value.split('');
//∑(ai×Wi)(mod 11)
//加权因⼦
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 sum = 0;
let ai = 0;
let wi = 0;
for (let i = 0; i < 17; i++) {
ai = value[i];
wi = factor[i];
sum += ai * wi;
}
let last = parity[sum % 11];
if (last != value[17]) {
return callback(new Error('校验失败,请输⼊正确的⾝份证号!'));
}
}
return callback();
};
IdCardNum: [
{ required: true, message: "法⼈⾝份证号不能为空.", trigger: "blur" },
{
type: "string",
max: 18,
min: 18,
pattern:/^\d{6}(1[8-9]|[2-9][0-9])\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/,                            message: "请输⼊正确的⾝份证号",
trigger: "blur"
},
{ validator: validIdCardNum, trigger: 'blur' }
],国家社科
统⼀社会信⽤编码校验
const validlegalbizLicNum= (rule, value, callback) => {
let Ancode;//统⼀社会信⽤代码的每⼀个值
let Ancodevalue;//统⼀社会信⽤代码每⼀个值的权重
let total = 0;
let weightedfactors = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];//加权因⼦
霍尔效应
//不⽤I、O、S、V、Z
let str = '0123456789ABCDEFGHJKLMNPQRTUWXY';
for (let i = 0; i < value.length - 1; i++) {
Ancode = value.substring(i, i + 1);
Ancodevalue = str.indexOf(Ancode);
total = total + Ancodevalue * weightedfactors[i];
//权重与加权因⼦相乘之和
}
let logiccheckcode = 31 - total % 31;
if (logiccheckcode == 31) {
logiccheckcode = 0;
}
let Str = "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";
let Array_Str = Str.split(',');
logiccheckcode = Array_Str[logiccheckcode];
let checkcode = value.substring(17, 18);
if (logiccheckcode != checkcode) {
return callback(new Error('校验失败,请输⼊正确的统⼀社会信⽤代码!'));;
}
return callback();
};
bizLicNum: [
{ required: true, message: "统⼀社会信⽤代码不能为空.", trigger: "blur" },
{
type: "string",唐园结
max: 18,
message: "输⼊有误,统⼀社会信⽤代码长度需为18位",
trigger: "change"
},
{
type: "string",
/*
统⼀社会信⽤代码由⼗⼋位的阿拉伯数字或⼤写英⽂字母(不使⽤I、O、Z、S、V)组成。
第1位:登记管理部门代码(共⼀位字符)登记管理部门代码:使⽤阿拉伯数字或⼤写英⽂字母表⽰。
第2位:机构类别代码(共⼀位字符)
第3位~第8位:登记管理机关⾏政区划码(共六位阿拉伯数字)
第9位~第17位:主体标识码(组织机构代码)(共九位字符)
第18位:校验码(共⼀位字符)
*/
/* pattern: /[^_IOZSVa-z\W]{2}\d{6}[^_IOZSVa-z\W]{10}/g,*/
pattern: /^([1,5,9][1,2,3,9]|[2,3,4,6,7,8,A,B,C,D,E,G,Y]1)\d{6}[0-9A-HJ-NPQRTUWXY]{10}$/,
message: "请输⼊正确的统⼀社会信⽤代码",
trigger: "blur"
},
{ validator: validlegalbizLicNum, trigger: 'blur' }
],

本文发布于:2024-09-23 02:20:13,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/396876.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:代码   校验   社会   编码   证号   管理
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议