|
|
|
|
@ -398,45 +398,45 @@ export default { |
|
|
|
|
message: '请输入身份证号码', |
|
|
|
|
trigger: 'blur', |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, |
|
|
|
|
message: '请输入正确的身份证号码格式', |
|
|
|
|
trigger: 'blur', |
|
|
|
|
validator: (rule, value, callback) => { |
|
|
|
|
if (!value) { |
|
|
|
|
return callback(new Error('请输入身份证号码')); |
|
|
|
|
} |
|
|
|
|
// 15位身份证验证 |
|
|
|
|
if (value.length === 15) { |
|
|
|
|
const pattern = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; |
|
|
|
|
if (!pattern.test(value)) { |
|
|
|
|
return callback(new Error('请输入有效的15位身份证号码')); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
// 18位身份证验证 |
|
|
|
|
else if (value.length === 18) { |
|
|
|
|
const pattern = |
|
|
|
|
/^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; |
|
|
|
|
if (!pattern.test(value)) { |
|
|
|
|
return callback(new Error('请输入有效的18位身份证号码')); |
|
|
|
|
} |
|
|
|
|
// 校验码验证 |
|
|
|
|
const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; |
|
|
|
|
const codes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; |
|
|
|
|
let sum = 0; |
|
|
|
|
for (let i = 0; i < 17; i++) { |
|
|
|
|
sum += parseInt(value.charAt(i)) * weights[i]; |
|
|
|
|
} |
|
|
|
|
const lastCode = codes[sum % 11]; |
|
|
|
|
if (value.toUpperCase().charAt(17) !== lastCode) { |
|
|
|
|
return callback(new Error('身份证号码校验码不正确,请核对')); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
return callback(new Error('身份证号码长度不正确,应为15位或18位')); |
|
|
|
|
} |
|
|
|
|
callback(); |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
// { |
|
|
|
|
// pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, |
|
|
|
|
// message: '请输入正确的身份证号码格式', |
|
|
|
|
// trigger: 'blur', |
|
|
|
|
// validator: (rule, value, callback) => { |
|
|
|
|
// if (!value) { |
|
|
|
|
// return callback(new Error('请输入身份证号码')); |
|
|
|
|
// } |
|
|
|
|
// // 15位身份证验证 |
|
|
|
|
// if (value.length === 15) { |
|
|
|
|
// const pattern = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/; |
|
|
|
|
// if (!pattern.test(value)) { |
|
|
|
|
// return callback(new Error('请输入有效的15位身份证号码')); |
|
|
|
|
// } |
|
|
|
|
// } |
|
|
|
|
// // 18位身份证验证 |
|
|
|
|
// else if (value.length === 18) { |
|
|
|
|
// const pattern = |
|
|
|
|
// /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/; |
|
|
|
|
// if (!pattern.test(value)) { |
|
|
|
|
// return callback(new Error('请输入有效的18位身份证号码')); |
|
|
|
|
// } |
|
|
|
|
// // 校验码验证 |
|
|
|
|
// const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; |
|
|
|
|
// const codes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; |
|
|
|
|
// let sum = 0; |
|
|
|
|
// for (let i = 0; i < 17; i++) { |
|
|
|
|
// sum += parseInt(value.charAt(i)) * weights[i]; |
|
|
|
|
// } |
|
|
|
|
// const lastCode = codes[sum % 11]; |
|
|
|
|
// if (value.toUpperCase().charAt(17) !== lastCode) { |
|
|
|
|
// return callback(new Error('身份证号码校验码不正确,请核对')); |
|
|
|
|
// } |
|
|
|
|
// } else { |
|
|
|
|
// return callback(new Error('身份证号码长度不正确,应为15位或18位')); |
|
|
|
|
// } |
|
|
|
|
// callback(); |
|
|
|
|
// }, |
|
|
|
|
// }, |
|
|
|
|
], |
|
|
|
|
}, |
|
|
|
|
{ |
|
|
|
|
|