当前位置: 首页 > article >正文

elementUI中2个日期组件实现开始时间、结束时间(禁用日期面板、控制开始时间不能超过结束时间的时分秒)实现方案

没有使用selectableRange 禁用时分秒,是因为他会禁止每天的时分秒。 我们需要解决的是当开始时间、结束时间是同一天时, 开始时间不能超过结束时间。 如果直接清空,用户体验不好。所以用watch监听赋值,当前操作谁,它不满足条件,就改变它本身。

<el-col :span="8">
            <el-form-item label="开始时间" prop="startDate" :rules="globalRules.requiredBlurOrChange">
              <el-date-picker
                v-model="formNew.startDate"
                type="datetime"
                format="yyyy-MM-dd HH:mm:ss"
                value-format="yyyy-MM-dd HH:mm:ss"
                :picker-options="{...editStartOptions}"
                placeholder="选择日期"
                @change="changeDate"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="完成时间" prop="endDate" :rules="globalRules.requiredBlurOrChange">
              <el-date-picker
                v-model="formNew.endDate"
                type="datetime"
                format="yyyy-MM-dd HH:mm:ss"
                value-format="yyyy-MM-dd HH:mm:ss"
                :picker-options="{...editStopOptions}"
                placeholder="选择日期"
                @change="changeDate"
              >
              </el-date-picker>
            </el-form-item>
          </el-col>

 data() {
    return {
    	 editStartOptions: {
        disabledDate: time => {
          if (!this.formNew.endDate) {
            return time.getTime() < new Date(1970 - 1 - 1).getTime();   //禁止选择1970年以前的日期
          } else {
            return time.getTime() > new Date(this.formNew.endDate);
          }
        },
      },
      editStopOptions: {
        disabledDate: time => {
          //开始时间可以和结束时间相同增加
          let startDate= new Date(this.formNew.startDate);
          startDate.setDate(startDate.getDate() - 1);
          return (
            time.getTime() < startDate || time.getTime() < new Date(1970 - 1 - 1).getTime()    //禁止选择1970年以前的日期
          );
        },
      },
    }
}


watch: {
    'formNew.startDate': {
      handler(newVal) {
        if (newVal && this.formNew.endDate && new Date(newVal).getTime() > new Date(this.formNew.endDate).getTime()) {
          this.formNew.startDate = this.formNew.endDate
          console.log(newVal, 'newVal')
        }
      }
    },
    'formNew.endDate': {
      handler(newVal) {
        if (newVal && this.formNew.startDate && new Date(newVal).getTime() < new Date(this.formNew.startDate).getTime()) {
          // this.formNew.startDate = newVal;
          this.formNew.endDate = this.formNew.startDate
        }
      }
    },
  },

http://www.kler.cn/a/390631.html

相关文章:

  • 使用kalibr_calibration标定相机(realsense)和imu(h7min)
  • 小面馆叫号取餐流程 佳易王面馆米线店点餐叫号管理系统操作教程
  • 带你掌握springboot集成SpringSecurity安全框架
  • 机器学习——损失函数、代价函数、KL散度
  • MySQ怎么使用语法介绍(详细)
  • 【机器学习】平均绝对误差(MAE:Mean Absolute Error)
  • PaddleOCR安装教程
  • 【架构论文-1】面向服务架构(SOA)
  • springboot yml配置信息书写与获取
  • 大数据数据存储层MemSQL, HBase与HDFS
  • SQL相关常见的面试题
  • css的z-index图层使用有什么要求
  • Python小游戏25——黄金矿工
  • Odoo:免费开源的钢铁冶金行业ERP管理系统
  • 国产AI图片工具,全部免费亲测实用!
  • LeetCode【0007】整数反转
  • 野指针和悬空指针详解
  • linux,1.正则表达式, 2.sed工具, 3.awk
  • 华为数通HCIA系列第4次考试-小测-子网划分相关解析
  • 36.Redis核心设计原理
  • MySql-8.0.40安装详细教程
  • Oracle 聚集因子factor clustering
  • NPM镜像源
  • echarts-gl 3D柱状图配置
  • 工位管理优化:Spring Boot企业级系统
  • 零基础上手WebGIS+智慧校园实例(1)【html by js】