From 6e66897c999bc28a66bbbb865b87b9f0ca72c958 Mon Sep 17 00:00:00 2001
From: liuyg <376836862@qq.com>
Date: Mon, 25 Oct 2021 17:10:36 +0800
Subject: [PATCH] 保安员身份证年份验证精确到日

---
 src/views/securityGuard/securityGuard.vue |   38 +++++++++++++++++++++++++++++++++-----
 1 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/src/views/securityGuard/securityGuard.vue b/src/views/securityGuard/securityGuard.vue
index 43a6590..f08b135 100644
--- a/src/views/securityGuard/securityGuard.vue
+++ b/src/views/securityGuard/securityGuard.vue
@@ -337,21 +337,49 @@
     // };
     var date = new Date();
     let year = date.getFullYear(),
-      oldyear;
+      mouth = date.getMonth() + 1,
+      day = date.getDate(),
+      oldy,
+      oldm,
+      oldd,
+      ok = false;
 
     const validatePassCardid = (rule, value, callback) => {
+      // console.log(oldy, oldm, oldd, year - oldy, mouth, day);
       var test =
         /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[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 (!test.test(value)) {
         callback(new Error("请输入正确身份证号码"));
       } else {
         //加入校验18岁到60岁的
-        oldyear = +value.slice(6, 10);
-        if (year - oldyear < 18 || year - oldyear > 60) {
+        oldy = +value.slice(6, 10);
+        oldm = +value.slice(10, 12);
+        oldd = +value.slice(12, 14);
+        ok =
+          year - oldy < 18 || year - oldy > 60
+            ? false
+            : year - oldy == 18
+            ? mouth < oldm
+              ? false
+              : mouth > oldm
+              ? true
+              : day < oldd
+              ? false
+              : true
+            : year - oldy == 60
+            ? mouth < oldm
+              ? true
+              : mouth > oldm
+              ? false
+              : day <= oldd
+              ? false
+              : true
+            : true;
+        if (ok) {
+          callback();
+        } else {
           // callback(new Error("根据国家要求,需在18岁至60岁"));
           callback(new Error("年龄不符"));
-        } else {
-          callback();
         }
       }
     };

--
Gitblit v1.9.3