|
@@ -90,7 +90,7 @@
|
|
if (!value) {
|
|
if (!value) {
|
|
return Promise.reject('请输入身份证');
|
|
return Promise.reject('请输入身份证');
|
|
}
|
|
}
|
|
- if (!regPos.test(value)) {
|
|
|
|
|
|
+ if (!visitCertCodetip(value)) {
|
|
/* eslint-disable-next-line */
|
|
/* eslint-disable-next-line */
|
|
return Promise.reject('请输入正确的身份证号码');
|
|
return Promise.reject('请输入正确的身份证号码');
|
|
}
|
|
}
|
|
@@ -191,7 +191,8 @@
|
|
createConfirm({
|
|
createConfirm({
|
|
iconType: 'warning',
|
|
iconType: 'warning',
|
|
okText: '复制',
|
|
okText: '复制',
|
|
- title: () => h('span', data.status == 1 ? '平台启用成功' : data.id ? '修改成功' : '平台创建成功'),
|
|
|
|
|
|
+ title: () =>
|
|
|
|
+ h('span', data.status == 1 ? '平台启用成功' : data.id ? '修改成功' : '平台创建成功'),
|
|
content: () =>
|
|
content: () =>
|
|
h('div', {}, [
|
|
h('div', {}, [
|
|
h('div', null, `平台名称:${res.platformName}`),
|
|
h('div', null, `平台名称:${res.platformName}`),
|
|
@@ -210,6 +211,80 @@
|
|
const { isSuccessRef } = useCopyToClipboard(url);
|
|
const { isSuccessRef } = useCopyToClipboard(url);
|
|
isSuccessRef && createMessage.success('复制成功');
|
|
isSuccessRef && createMessage.success('复制成功');
|
|
}
|
|
}
|
|
|
|
+ const visitCertCodetip = (code: any) => {
|
|
|
|
+ //身份证号前两位代表区域
|
|
|
|
+ const city = {
|
|
|
|
+ 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: '国外 ',
|
|
|
|
+ };
|
|
|
|
+ //身份证格式正则表达式
|
|
|
|
+ const idCardReg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i;
|
|
|
|
+ //如果身份证不满足格式正则表达式
|
|
|
|
+ if (!code || !idCardReg.test(code)) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //区域数组中不包含需验证的身份证前两位
|
|
|
|
+ else if (!city[code.substr(0, 2)]) {
|
|
|
|
+ return false;
|
|
|
|
+ } else {
|
|
|
|
+ //18位身份证需要验证最后一位校验位
|
|
|
|
+ if (code.length == 18) {
|
|
|
|
+ code = code.split('');
|
|
|
|
+ //∑(ai×Wi)(mod 11)
|
|
|
|
+ //加权因子
|
|
|
|
+ const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
|
|
|
|
+ //校验位
|
|
|
|
+ const 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 = code[i];
|
|
|
|
+ wi = factor[i];
|
|
|
|
+ sum += ai * wi;
|
|
|
|
+ }
|
|
|
|
+ // var last = parity[sum % 11];
|
|
|
|
+ if (parity[sum % 11] != code[17]) {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return true;
|
|
|
|
+ };
|
|
return {
|
|
return {
|
|
register,
|
|
register,
|
|
title,
|
|
title,
|