From 4a800a8fc83c6bd1f86a8e847b079a51a7532c09 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期三, 20 七月 2022 15:05:58 +0800
Subject: [PATCH] 修复国标配置的bug

---
 src/scripts/validate.ts |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/scripts/validate.ts b/src/scripts/validate.ts
index 4f077e0..9a0dca2 100644
--- a/src/scripts/validate.ts
+++ b/src/scripts/validate.ts
@@ -57,6 +57,34 @@
   return callback(new Error('杈撳叆鐨勬墜鏈哄彿閿欒'))
 }
 
+export function isIDCard(rule, idcode, callback) {
+  if (idcode==""||idcode===undefined) {
+    return callback()
+  }
+  var weight_factor = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
+  var check_code = ['1', '0', 'X' , '9', '8', '7', '6', '5', '4', '3', '2'];
+
+  var code = idcode + "";
+  var last = idcode[17];//鏈�鍚庝竴浣�
+
+  var seventeen = code.substring(0,17);
+
+  var arr = seventeen.split("");
+  var len = arr.length;
+  var num = 0;
+  for(var i = 0; i < len; i++){
+      num = num + +arr[i] * weight_factor[i];
+  }
+  
+  var resisue = num%11;
+  var last_no = check_code[resisue];
+
+  var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
+
+  var format = idcard_patter.test(idcode);
+  return last === last_no && format ? callback() : callback(new Error('韬唤璇佸彿鏍煎紡閿欒'));
+}
+
 export function isIPv4(rule, value, callback) {
   if (!value) {
     return callback(new Error('杈撳叆涓嶅彲浠ヤ负绌�'));
@@ -92,4 +120,16 @@
 export function vaildHost(str) {
   let re = /^(?=^.{3,255}$)(http(s)?:\/\/)?(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+\.\w+)*$/
   return re.test(str)
+}
+
+//鏍¢獙鑷劧鏁�(闈炶礋鏁存暟)
+export function isNonnegativeInteger(rule, value, callback) {
+  if(!value){
+    return callback(new Error('杈撳叆涓嶈兘涓虹┖'));
+  }
+  const reg = /^\d+$/;
+  if(!reg.test(value)){
+    return callback(new Error('璇疯緭鍏ラ潪璐熸暣鏁�'));
+  }
+  return callback()
 }
\ No newline at end of file

--
Gitblit v1.8.0