刘湘琪 2 éve%!(EXTRA string=óta)
szülő
commit
da41f68501

BIN
src/assets/images/icon_pass.png


BIN
src/assets/images/icon_refuse.png


+ 30 - 0
src/utils/validate.js

@@ -1,3 +1,6 @@
+import {
+  validateIdcard
+} from './validate_idcard'
 /**
  * @param {string} path
  * @returns {Boolean}
@@ -81,3 +84,30 @@ export function isArray(arg) {
   }
   return Array.isArray(arg)
 }
+
+// 身份证
+export function validIDcard(rule, value, cb) {
+  if (value) {
+    if (!validateIdcard(value)) {
+      cb(new Error('身份证号格式错误'))
+    } else {
+      cb()
+    }
+  } else {
+    cb()
+  }
+}
+/**
+ * 金额
+ * @param {*} s
+ */
+export function isAmount(s) {
+  return /^\d{1,12}(\.\d{1,2})?$/.test(s)
+}
+export function validAmount(rule, value, cb) {
+  if (!isAmount(value)) {
+    cb(new Error('仅可以输入数字和小数点,保留小数点后两位'))
+  } else {
+    cb()
+  }
+}

+ 73 - 0
src/utils/validate_idcard.js

@@ -0,0 +1,73 @@
+// see: http://www.cnblogs.com/lzrabbit/archive/2011/10/23/2221643.html
+/*
+根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
+    地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
+    出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。
+    顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。
+    校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
+
+出生日期计算方法。
+    15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19或18,这样就包含了所有1800-1999年出生的人;
+    2000年后出生的肯定都是18位的了没有这个烦恼,至于1800年前出生的,那啥那时应该还没身份证号这个东东,⊙﹏⊙b汗...
+下面是正则表达式:
+ 出生日期1800-2099  (18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])
+ 身份证正则表达式 /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i
+ 15位校验规则 6位地址编码+6位出生日期+3位顺序号
+ 18位校验规则 6位地址编码+8位出生日期+3位顺序号+1位校验位
+
+ 校验位规则     公式:∑(ai×Wi)(mod 11)……………………………………(1)
+                公式(1)中:
+                i----表示号码字符从由至左包括校验码在内的位置序号;
+                ai----表示第i位置上的号码字符值;
+                Wi----示第i位置上的加权因子,其数值依据公式Wi=2^(n-1)(mod 11)计算得出。
+                i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
+                Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
+
+*/
+//身份证号合法性验证
+//支持15位和18位身份证号
+//支持地址编码、出生日期、校验位验证
+
+export function validateIdcard(code) {
+    var 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:"国外 "};
+    var tip = "";
+    var pass= true;
+
+    if(!code){
+        tip = "请填写身份证号";
+        pass = false;
+    }
+
+    if(!/^\d{17}[\dx]$/i.test(code)){
+        tip = "身份证号格式错误";
+        pass = false;
+    } else if(!city[code.substr(0,2)]){
+        tip = "地址编码错误";
+        pass = false;
+    } else{
+        //18位身份证需要验证最后一位校验位
+        if(code.length == 18){
+            code = code.split('');
+            //∑(ai×Wi)(mod 11)
+            //加权因子
+            var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
+            //校验位
+            var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
+            var sum = 0;
+            var ai = 0;
+            var wi = 0;
+            for (var 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]) {
+                tip = "校验位错误";
+                pass =false;
+            }
+        }
+    }
+    return pass;
+}
+

+ 25 - 1
src/views/common/registerFirst.vue

@@ -359,6 +359,7 @@ import {getProvinceDataApi,getRegionChildrenApi} from "@/api/common/common"
 import { regTypeOptions,mainProductsOptions,yesOrNoOptions } from "@/utils/dataFormat"
 import FileUpload from '@/components/FileUpload'
 import ImageUpload from '@/components/ImageUpload'
+import { validIDcard,validAmount} from '@/utils/validate'
 
 export default {
   name: "First",
@@ -443,16 +444,19 @@ export default {
           }
         ],
         email: [
-          { type: "email",required: true, trigger: ["blur", "change"], message: "请输入邮箱" },
+          { required: true, trigger: ["blur", "change"], message: "请输入邮箱",type: "email", },
         ],
         entName: [
           { required: true, trigger: "blur", message: "请输入企业名称" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         license: [
           { required: true, trigger: "blur", message: "请输入统一社会信用代码" },
+          {min: 18,max: 18, message: '请输入正确的统一社会信用代码格式', trigger: 'blur' }
         ],
         regCapital: [
           { required: true, trigger: "blur", message: "请输入注册资金" },
+          { validator: validAmount, trigger: 'blur'}
         ],
         regDate: [
           { required: true, trigger: "change", message: "请选择工商注册时间" },
@@ -465,9 +469,11 @@ export default {
         ],
         address: [
           { required: true, trigger: "blur", message: "请输入通信地址" },
+          {max: 50, message: '最多输入50个字符', trigger: 'blur' }
         ],
         zipCode: [
           { required: true, trigger: "blur", message: "请输入邮政编码" },
+          {max: 6, message: '最多输入6个字母', trigger: 'blur' }
         ],
         provinceId: [
           { required: true, trigger: "change", message: "请选择省份" },
@@ -480,42 +486,60 @@ export default {
         ],
         taxOffice: [
           { required: true, trigger: "blur", message: "企业所得税主管税务机关" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         legalName: [
           { required: true, trigger: "blur", message: "请输入姓名" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         legalIdCard: [
           { required: true, trigger: "blur", message: "请输入身份证号码" },
+          { validator: validIDcard, trigger: 'blur'}
         ],
         legalMobile: [
           { required: true, trigger: "blur", message: "请输入手机号码" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
         ],
         linkName: [
           { required: true, trigger: "blur", message: "请输入姓名" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         linkIdCard: [
           { required: true, trigger: "blur", message: "请输入身份证号码" },
+          { validator: validIDcard, trigger: 'blur'}
         ],
         linkMobile: [
           { required: true, trigger: "blur", message: "请输入手机号码" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
         ],
         listedFlag: [
           { required: true, trigger: "change", message: "请选择企业是否上市" },
         ],
         listingCode: [
           { required: true, trigger: "blur", message: "请输入企业上市代码" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         investFlag: [
           { required: true, trigger: "change", message: "请选择是否引入风险投资" },
         ],
         investCapital: [
           { required: true, trigger: "blur", message: "请输入风险投资金额" },
+          { validator: validAmount, trigger: 'blur'}
         ],
         techFlag: [
           { required: true, trigger: "change", message: "请选择是否为高新企业" },
         ],
         techCode: [
           { required: true, trigger: "blur", message: "请输入高新企业编号" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         deductionFlag: [
           { required: true, trigger: "change", message: "请选择是否做加计扣除" },

+ 31 - 2
src/views/enterprise/ent/edit.vue

@@ -379,6 +379,7 @@ import ImageUpload from '@/components/ImageUpload'
 import {getEnclosureApi} from "@/api/enterprise/project/project"
 import UploadEnclosure from "./components/UploadEnclosure"
 import {deleteEnclosureApi} from '@/api/enterprise/project/project'
+import { validIDcard,validAmount} from '@/utils/validate'
 
 export default {
   name: "First",
@@ -467,21 +468,30 @@ export default {
         ],
         nickName: [
           { required: true, trigger: "blur", message: "请输入姓名" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         phonenumber: [
           { required: true, trigger: "blur", message: "请输入手机号" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
         ],
         email: [
-          { required: true, trigger: "blur", message: "请输入邮箱" },
+          { required: true, trigger: ["blur", "change"], message: "请输入邮箱",type: "email", },
         ],
         entName: [
           { required: true, trigger: "blur", message: "请输入企业名称" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         license: [
           { required: true, trigger: "blur", message: "请输入统一社会信用代码" },
+          {min: 18,max: 18, message: '请输入正确的统一社会信用代码格式', trigger: 'blur' }
         ],
         regCapital: [
           { required: true, trigger: "blur", message: "请输入注册资金" },
+          { validator: validAmount, trigger: 'blur'}
         ],
         regDate: [
           { required: true, trigger: "change", message: "请选择工商注册时间" },
@@ -494,9 +504,11 @@ export default {
         ],
         address: [
           { required: true, trigger: "blur", message: "请输入通信地址" },
+          {max: 50, message: '最多输入50个字符', trigger: 'blur' }
         ],
         zipCode: [
           { required: true, trigger: "blur", message: "请输入邮政编码" },
+          {max: 6, message: '最多输入6个字母', trigger: 'blur' }
         ],
         provinceId: [
           { required: true, trigger: "change", message: "请选择省份" },
@@ -509,42 +521,60 @@ export default {
         ],
         taxOffice: [
           { required: true, trigger: "blur", message: "企业所得税主管税务机关" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         legalName: [
           { required: true, trigger: "blur", message: "请输入姓名" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         legalIdCard: [
           { required: true, trigger: "blur", message: "请输入身份证号码" },
+          { validator: validIDcard, trigger: 'blur'}
         ],
         legalMobile: [
           { required: true, trigger: "blur", message: "请输入手机号码" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
         ],
         linkName: [
           { required: true, trigger: "blur", message: "请输入姓名" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         linkIdCard: [
           { required: true, trigger: "blur", message: "请输入身份证号码" },
+          { validator: validIDcard, trigger: 'blur'}
         ],
         linkMobile: [
           { required: true, trigger: "blur", message: "请输入手机号码" },
+          {
+            pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
+            message: "请输入正确的手机号码",
+            trigger: "blur"
+          }
         ],
         listedFlag: [
           { required: true, trigger: "change", message: "请选择企业是否上市" },
         ],
         listingCode: [
           { required: true, trigger: "blur", message: "请输入企业上市代码" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         investFlag: [
           { required: true, trigger: "change", message: "请选择是否引入风险投资" },
         ],
         investCapital: [
           { required: true, trigger: "blur", message: "请输入风险投资金额" },
+          { validator: validAmount, trigger: 'blur'}
         ],
         techFlag: [
           { required: true, trigger: "change", message: "请选择是否为高新企业" },
         ],
         techCode: [
           { required: true, trigger: "blur", message: "请输入高新企业编号" },
+          {max: 30, message: '最多输入30个字符', trigger: 'blur' }
         ],
         deductionFlag: [
           { required: true, trigger: "change", message: "请选择是否做加计扣除" },
@@ -706,7 +736,6 @@ export default {
       }else {
          window.open(fileUrl)
       }
-
     },
     cancel() {
       this.$store.dispatch("tagsView/delView", this.$route);