自定义时间效验规则

108 阅读1分钟
          <el-form-item label="开始时间" label-width="80px" prop="beginTimeStr">
              <el-date-picker
                v-model="taskplan.beginTimeStr"
                type="datetime"
                format="yyyy-MM-dd HH:mm"
                value-format="yyyy-MM-dd HH:mm:ss"
                placeholder="选择开始时间"
                style="width: 300px"
              />
            </el-form-item>

            <el-form-item label="结束时间" label-width="80px" prop="endTimeStr">
              <el-date-picker
                v-model="taskplan.endTimeStr"
                type="datetime"
                format="yyyy-MM-dd HH:mm"
                value-format="yyyy-MM-dd HH:mm:ss"
                placeholder="选择结束时间"
                style="width: 300px"
              />
            </el-form-item>
            
        
        
         // 开始时间的正则效验
const validateStartTime = (rule, value, callback) => {
  if (value === undefined) {
    callback(new Error('开始时间不能为空'))
    new Date(this.taskplan.beginTimeStr).getTime() >=
      new Date(this.taskplan.endTimeStr).getTime()
  } else {
    if (
      new Date(this.taskplan.beginTimeStr).getTime() <= new Date().getTime()
    ) {
      callback(new Error('开始时间不能早于现在!'))
    } else if (new Date(this.taskplan.endTimeStr).getTime() <= new         Date(this.taskplan.beginTimeStr).getTime()) {
      callback(new Error('开始时间必须早于结束时间!'))
    } else {
      callback()
    }
  }
}
// 结束时间的正则效验
const validateEndTime = (rule, value, callback) => {
  if (value === undefined) {
    callback(new Error('结束时间不能为空'))
  } else {
    if (
      new Date(this.taskplan.beginTimeStr).getTime() >=
      new Date(this.taskplan.endTimeStr).getTime()
    ) {
      callback(new Error('截止时间必须大于开始时间!'))
    } else {
      callback()
    }
  }
}
            
            
  定义效验规则         
 rules: {
    beginTimeStr: [
      { required: true, validator: validateStartTime, trigger: 'blur' }
    ],
    endTimeStr: [
      { required: true, validator: validateEndTime, trigger: 'blur' }
    ]
  },