Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
P
pica.cloud.web-education-admin
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
成员
成员
收起侧边栏
Close sidebar
动态
分支图
统计图
提交
打开侧边栏
com.pica.cloud.education.frontend
pica.cloud.web-education-admin
提交
b1cf4234
提交
b1cf4234
编写于
6月 11, 2019
作者:
yi.li
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
身份校验规则修改
上级
298d7ec8
变更
3
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
159 行增加
和
33 行删除
+159
-33
checkCardNum.js
src/utils/followup/followupUtils/checkCardNum.js
+90
-24
checkCardNum.js
src/utils/patients/checkCardNum.js
+57
-0
edit-information.vue
...atients/mypatients-manage/components/edit-information.vue
+12
-9
未找到文件。
src/utils/followup/followupUtils/checkCardNum.js
浏览文件 @
b1cf4234
...
...
@@ -100,34 +100,100 @@ function changeFivteenToEighteen(card){
}
return
card
;
}
export
const
checkCardNum
=
(
rule
,
value
,
callback
)
=>
{
var
vcity
=
{
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
:
"国外"
};
//是否为空
if
(
value
===
''
){
callback
(
new
Error
(
'请输入正确的身份证'
))
//最新的身份证校验规则
function
validateIdCard
(
num
)
{
num
=
num
.
toUpperCase
();
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if
(
!
(
/
(
^
\d{15}
$
)
|
(
^
\d{17}([
0-9
]
|X
)
$
)
/
.
test
(
num
)))
{
return
false
;
}
//校验长度,类型
if
(
isCardNo
(
value
)
===
false
){
callback
(
new
Error
(
'请输入正确的身份证'
))
//验证前2位,城市符合
var
aCity
=
{
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
:
"国外"
};
if
(
aCity
[
parseInt
(
num
.
substr
(
0
,
2
))]
==
null
){
return
false
;
}
//检查省份
if
(
checkProvince
(
value
,
vcity
)
===
false
){
callback
(
new
Error
(
'请输入正确的身份证'
))
//下面分别分析出生日期和校验位
var
len
,
re
;
len
=
num
.
length
;
if
(
len
==
15
)
{
re
=
new
RegExp
(
/^
(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})
$/
);
var
arrSplit
=
num
.
match
(
re
);
//检查生日日期是否正确
var
dtmBirth
=
new
Date
(
'19'
+
arrSplit
[
2
]
+
'/'
+
arrSplit
[
3
]
+
'/'
+
arrSplit
[
4
]);
var
bGoodDay
;
bGoodDay
=
(
dtmBirth
.
getYear
()
==
Number
(
arrSplit
[
2
]))
&&
((
dtmBirth
.
getMonth
()
+
1
)
==
Number
(
arrSplit
[
3
]))
&&
(
dtmBirth
.
getDate
()
==
Number
(
arrSplit
[
4
]));
if
(
!
bGoodDay
)
{
// 身份证号的出生日期不对
return
false
;
}
else
{
//将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var
arrInt
=
new
Array
(
7
,
9
,
10
,
5
,
8
,
4
,
2
,
1
,
6
,
3
,
7
,
9
,
10
,
5
,
8
,
4
,
2
);
var
arrCh
=
new
Array
(
'1'
,
'0'
,
'X'
,
'9'
,
'8'
,
'7'
,
'6'
,
'5'
,
'4'
,
'3'
,
'2'
);
var
nTemp
=
0
,
i
;
num
=
num
.
substr
(
0
,
6
)
+
'19'
+
num
.
substr
(
6
,
num
.
length
-
6
);
for
(
i
=
0
;
i
<
17
;
i
++
)
{
nTemp
+=
num
.
substr
(
i
,
1
)
*
arrInt
[
i
];
}
num
+=
arrCh
[
nTemp
%
11
];
return
true
;
}
}
//校验生日
if
(
checkBirthday
(
value
)
===
false
){
callback
(
new
Error
(
'请输入正确的身份证'
))
if
(
len
==
18
)
{
re
=
new
RegExp
(
/^
(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([
0-9
]
|X
)
$/
);
var
arrSplit
=
num
.
match
(
re
);
//检查生日日期是否正确
var
dtmBirth
=
new
Date
(
arrSplit
[
2
]
+
"/"
+
arrSplit
[
3
]
+
"/"
+
arrSplit
[
4
]);
var
bGoodDay
;
bGoodDay
=
(
dtmBirth
.
getFullYear
()
==
Number
(
arrSplit
[
2
]))
&&
((
dtmBirth
.
getMonth
()
+
1
)
==
Number
(
arrSplit
[
3
]))
&&
(
dtmBirth
.
getDate
()
==
Number
(
arrSplit
[
4
]));
if
(
!
bGoodDay
)
{
// 身份证号的出生日期不对
return
false
;
}
else
{
//检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var
valnum
;
var
arrInt
=
new
Array
(
7
,
9
,
10
,
5
,
8
,
4
,
2
,
1
,
6
,
3
,
7
,
9
,
10
,
5
,
8
,
4
,
2
);
var
arrCh
=
new
Array
(
'1'
,
'0'
,
'X'
,
'9'
,
'8'
,
'7'
,
'6'
,
'5'
,
'4'
,
'3'
,
'2'
);
var
nTemp
=
0
,
i
;
for
(
i
=
0
;
i
<
17
;
i
++
)
{
nTemp
+=
num
.
substr
(
i
,
1
)
*
arrInt
[
i
];
}
valnum
=
arrCh
[
nTemp
%
11
];
if
(
valnum
!=
num
.
substr
(
17
,
1
))
{
// 18位身份证号的校验码不正确
return
false
;
}
return
true
;
}
}
//检验位的检测
if
(
checkParity
(
value
)
===
false
){
return
false
;
}
export
const
checkCardNum
=
(
rule
,
value
,
callback
)
=>
{
// var vcity={ 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:"国外"
// };
// //是否为空
// if(value === ''){
// callback(new Error('请输入正确的身份证'))
// }
// //校验长度,类型
// if(isCardNo(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //检查省份
// if(checkProvince(value,vcity) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //校验生日
// if(checkBirthday(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// //检验位的检测
// if(checkParity(value) === false){
// callback(new Error('请输入正确的身份证'))
// }
// callback()
if
(
value
===
''
){
callback
(
new
Error
(
'请输入正确的身份证'
))
}
else
{
if
(
validateIdCard
(
value
))
{
callback
()
}
else
{
callback
(
new
Error
(
'请输入正确的身份证'
))
}
}
callback
()
}
src/utils/patients/checkCardNum.js
浏览文件 @
b1cf4234
...
...
@@ -101,6 +101,63 @@ function changeFivteenToEighteen(card){
}
return
card
;
}
export
const
validateIdCard
=
(
num
)
=>
{
num
=
num
.
toUpperCase
();
//身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。
if
(
!
(
/
(
^
\d{15}
$
)
|
(
^
\d{17}([
0-9
]
|X
)
$
)
/
.
test
(
num
)))
{
return
false
;
}
//验证前2位,城市符合
var
aCity
=
{
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
:
"国外"
};
if
(
aCity
[
parseInt
(
num
.
substr
(
0
,
2
))]
==
null
){
return
false
;
}
//下面分别分析出生日期和校验位
var
len
,
re
;
len
=
num
.
length
;
if
(
len
==
15
)
{
re
=
new
RegExp
(
/^
(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})
$/
);
var
arrSplit
=
num
.
match
(
re
);
//检查生日日期是否正确
var
dtmBirth
=
new
Date
(
'19'
+
arrSplit
[
2
]
+
'/'
+
arrSplit
[
3
]
+
'/'
+
arrSplit
[
4
]);
var
bGoodDay
;
bGoodDay
=
(
dtmBirth
.
getYear
()
==
Number
(
arrSplit
[
2
]))
&&
((
dtmBirth
.
getMonth
()
+
1
)
==
Number
(
arrSplit
[
3
]))
&&
(
dtmBirth
.
getDate
()
==
Number
(
arrSplit
[
4
]));
if
(
!
bGoodDay
)
{
// 身份证号的出生日期不对
return
false
;
}
else
{
//将15位身份证转成18位 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var
arrInt
=
new
Array
(
7
,
9
,
10
,
5
,
8
,
4
,
2
,
1
,
6
,
3
,
7
,
9
,
10
,
5
,
8
,
4
,
2
);
var
arrCh
=
new
Array
(
'1'
,
'0'
,
'X'
,
'9'
,
'8'
,
'7'
,
'6'
,
'5'
,
'4'
,
'3'
,
'2'
);
var
nTemp
=
0
,
i
;
num
=
num
.
substr
(
0
,
6
)
+
'19'
+
num
.
substr
(
6
,
num
.
length
-
6
);
for
(
i
=
0
;
i
<
17
;
i
++
)
{
nTemp
+=
num
.
substr
(
i
,
1
)
*
arrInt
[
i
];
}
num
+=
arrCh
[
nTemp
%
11
];
return
true
;
}
}
if
(
len
==
18
)
{
re
=
new
RegExp
(
/^
(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([
0-9
]
|X
)
$/
);
var
arrSplit
=
num
.
match
(
re
);
//检查生日日期是否正确
var
dtmBirth
=
new
Date
(
arrSplit
[
2
]
+
"/"
+
arrSplit
[
3
]
+
"/"
+
arrSplit
[
4
]);
var
bGoodDay
;
bGoodDay
=
(
dtmBirth
.
getFullYear
()
==
Number
(
arrSplit
[
2
]))
&&
((
dtmBirth
.
getMonth
()
+
1
)
==
Number
(
arrSplit
[
3
]))
&&
(
dtmBirth
.
getDate
()
==
Number
(
arrSplit
[
4
]));
if
(
!
bGoodDay
)
{
// 身份证号的出生日期不对
return
false
;
}
else
{
//检验18位身份证的校验码是否正确。 //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。
var
valnum
;
var
arrInt
=
new
Array
(
7
,
9
,
10
,
5
,
8
,
4
,
2
,
1
,
6
,
3
,
7
,
9
,
10
,
5
,
8
,
4
,
2
);
var
arrCh
=
new
Array
(
'1'
,
'0'
,
'X'
,
'9'
,
'8'
,
'7'
,
'6'
,
'5'
,
'4'
,
'3'
,
'2'
);
var
nTemp
=
0
,
i
;
for
(
i
=
0
;
i
<
17
;
i
++
)
{
nTemp
+=
num
.
substr
(
i
,
1
)
*
arrInt
[
i
];
}
valnum
=
arrCh
[
nTemp
%
11
];
if
(
valnum
!=
num
.
substr
(
17
,
1
))
{
// 18位身份证号的校验码不正确
return
false
;
}
return
true
;
}
}
return
false
;
}
// export const checkCardNum = (rule, value, callback) => {
// var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",
...
...
src/views/patients/mypatients-manage/components/edit-information.vue
浏览文件 @
b1cf4234
...
...
@@ -239,7 +239,7 @@
<
script
>
import
{
mapGetters
}
from
'vuex'
;
import
{
checkMobile
}
from
'@/utils/patients/checkValid'
;
import
{
isCardNo
,
checkProvince
,
checkBirthday
,
checkParity
}
from
'@/utils/patients/checkCardNum'
;
import
{
isCardNo
,
checkProvince
,
checkBirthday
,
checkParity
,
validateIdCard
}
from
'@/utils/patients/checkCardNum'
;
import
{
getDiseasesList
,
getLabelList
,
...
...
@@ -269,21 +269,24 @@
}
}
;
let
checkCardNum
=
(
rule
,
value
,
callback
)
=>
{
let
vcity
=
{
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 vcity=
{
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:"国外"
//
}
;
if
(
value
)
{
if
(
isCardNo
(
value
)
&&
checkProvince
(
value
,
vcity
)
&&
checkBirthday
(
value
)
&&
checkParity
(
value
))
{
// if(isCardNo(value) && checkProvince(value,vcity) && checkBirthday(value) && checkParity(value))
{
if
(
validateIdCard
(
value
))
{
this
.
isTrue
=
true
;
callback
()
}
else
{
this
.
isTrue
=
false
;
callback
(
new
Error
(
'请输入正确的身份证'
))
}
}
else
{
this
.
isTrue
=
false
;
callback
()
}
}
;
...
...
写
预览
Markdown
格式
0%
请重试
or
附加一个文件
附加文件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录