1.data
//基础规范
rules: {
idcard: [
{ required: true, message: "身份证号不能为空", trigger: "blur" },
{ validator: this.validID, trigger: ["blur", "change"] }
]
},
2.1 methods
/* 身份证验证 */
async validID(rule, value, callback) {
// 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X
let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
if (reg.test(value)) {
let info = await this.go(value.length);
console.log(info);
await this.setInfo(info);
} else {
this.gender = "";
this.birthday = "";
callback(new Error("身份证号码不正确"));
}
},
2.2 methods
/* 设置属性 */
setInfo(info) {
var that = this;
that.birthday = info[1];
that.gender = info[0];
},
2.3 methods
// 实现自动生成生日,性别,年龄
go(val) {
let iden = this.person.idcard;
let sex = null;
let birth = null;
let myDate = new Date();
let month = myDate.getMonth() + 1;
let day = myDate.getDate();
let age = 0;
if (val === 18) {
sex = iden.substring(16, 17);
birth =
iden.substring(6, 10) +
"-" +
iden.substring(10, 12) +
"-" +
iden.substring(12, 14);
if (
iden.substring(10, 12) < month ||
(iden.substring(10, 12) == month && iden.substring(12, 14) <= day)
)
age++;
}
if (val === 15) {
sex = iden.substring(13, 14);
birth =
"19" +
iden.substring(6, 8) +
"-" +
iden.substring(8, 10) +
"-" +
iden.substring(10, 12);
if (
iden.substring(8, 10) < month ||
(iden.substring(8, 10) == month && iden.substring(10, 12) <= day)
)
age++;
}
if (sex % 2 === 0) sex = "0";
else sex = "1";
let info = [];
info.push(sex, birth);
return info;
},