Browse Source

员工档案-表单验证

jbb 1 year ago
parent
commit
07dfb46fed
1 changed files with 68 additions and 4 deletions
  1. 68 4
      src/views/system/modules/NewUserModal.vue

+ 68 - 4
src/views/system/modules/NewUserModal.vue

@@ -108,12 +108,12 @@
           </a-col>
           <a-col :span="8  ">
             <a-form-item label="合同起始日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <j-date placeholder="请选择合同起始日期" v-decorator="[ 'contractStart', validatorRules.contractStart]" :trigger-change="true" style="width: 100%"/>
+              <j-date placeholder="请选择合同起始日期"  @change="changeStartTime" v-decorator="[ 'contractStart', validatorRules.contractStart]" :trigger-change="true" style="width: 100%"/>
             </a-form-item>
           </a-col>
           <a-col :span="8  ">
             <a-form-item label="合同结束日期" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <j-date placeholder="请选择合同结束日期" v-decorator="[ 'contractEnd', validatorRules.contractEnd]" :trigger-change="true" style="width: 100%"/>
+              <j-date placeholder="请选择合同结束日期" @change="changeEndTime" v-decorator="[ 'contractEnd', validatorRules.contractEnd]" :trigger-change="true" style="width: 100%"/>
             </a-form-item>
           </a-col>
           <a-col :span="8  ">
@@ -248,7 +248,7 @@
             {required: true, message: '请输入证件类型!'},
           ]},
           idNo: {rules: [
-            {required: true, message: '请输入证件号码!'},
+            {required: true, message: '请输入证件号码!'},{validator: this.validateIdCard}
           ]},
           birthday: {rules: [
             {required: true, message: '请输入生日!'},
@@ -272,8 +272,10 @@
             {required: true, message: '请输入部门!'},
           ]},
           mobile: {rules: [
+            { validator: this.validatePhone }
           ]},
           phone: {rules: [
+            { pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '请输入正确的座机号码' }
           ]},
           address: {rules: [
           ]},
@@ -439,6 +441,39 @@
         let values = this.tableKeys.map(key => getRefPromise(this, key))
         return Promise.all(values)
       },
+      validateIdCard(rule, value, callback) {
+        if (!value || new RegExp(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/).test(value)) {
+          callback();
+        } else {
+          callback("您的身份证号码格式不正确!");
+        }
+      },
+      validatePhone (rule, value, callback) {
+            if (!value) {
+                callback()
+            } else {
+                // update-begin--Author:kangxiaolin  Date:20190826 for:[05] 手机号不支持199号码段--------------------
+                if (new RegExp(/^1[3|4|5|7|8|9][0-9]\d{8}$/).test(value)) {
+                    // update-end--Author:kangxiaolin  Date:20190826 for:[05] 手机号不支持199号码段--------------------
+
+                    var params = {
+                        tableName: 'sys_user',
+                        fieldName: 'phone',
+                        fieldVal: value,
+                        dataId: this.userId
+                    }
+                    duplicateCheck(params).then(res => {
+                        if (res.success) {
+                            callback()
+                        } else {
+                            callback('手机号已存在!')
+                        }
+                    })
+                } else {
+                    callback('请输入正确格式的手机号码!')
+                }
+            }
+        },
       /** 调用完edit()方法之后会自动调用此方法 */
       editAfter() {
         let fieldval = pick(this.model,'operator','operatorDept','operateDate','realname','username','sex','idType','idNo','birthday','joinDate','post','postLevel','education','positionType','departIds','mobile','phone','address','probationEnd','contractStart','contractEnd','remark','identity','signature','attachment')
@@ -470,10 +505,39 @@
      popupCallback(row){
        this.form.setFieldsValue(pick(row,'operator','operatorDept','operateDate','realname','username','sex','idType','idNo','birthday','joinDate','post','postLevel','education','positionType','departIds','mobile','phone','address','probationEnd','contractStart','contractEnd','remark','identity','signature','attachment'))
      },
+     changeStartTime(data){   
+      var end = new Date((this.form.getFieldValue('contractEnd')).replace(/\-/g, "\/"));
+      var start = new Date(data.replace(/\-/g, "\/"));
+      if(this.form.getFieldValue('contractEnd')!=""&&data!=""&&start >=end)  
+       {  
+        this.$nextTick(() => {
+          this.form.setFieldsValue({contractStart: '' })
+           this.$forceUpdate()
+         })
+        this.$message.error("合同开始时间不能大于合同结束时间!")     
+        return false;  
+        }
+     },
+     changeEndTime(data){
+      var start = new Date((this.form.getFieldValue('contractStart')).replace(/\-/g, "\/"));
+      var end = new Date(data.replace(/\-/g, "\/"));
+      if(this.form.getFieldValue('contractStart')!=""&&data!=""&&start >=end)  
+       {  
+        this.$nextTick(() => {
+          this.form.setFieldsValue({contractEnd: '' })
+           this.$forceUpdate()
+         })
+        this.$message.error("合同开始时间不能大于合同结束时间!")     
+        return false;  
+        }
+     }
 
     }
   }
 </script>
 
-<style scoped>
+<style scoped lang="less">
+/deep/ .ant-form-item-control {
+      height: 40px;
+} 
 </style>