实际项目应用案例:

         <el-form-item label="开始日期:" prop="StartDate">
<el-date-picker
v-model="temp.StartDate"
:clearable="false"
:picker-options="pickerOptions0"
type="date"
style="width:50%"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="请选择日期"/>
</el-form-item> <el-form-item label="计划结束日期:" prop="EndDate">
<el-date-picker
v-model="temp.EndDate"
:clearable="false"
:picker-options="pickerOptions1"
type="date"
style="width:50%"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"/>
</el-form-item> <el-form-item v-if="temp.HasSubmitted" label="实际结束日期:" prop="RealEndDate">
<el-date-picker
v-model="temp.RealEndDate"
:picker-options="realEndDatePickerOptions"
type="date"
format="yyyy-MM-dd"
value-format="yyyy-MM-dd"
placeholder="选择日期"/>
</el-form-item> data() {
return {
formFilter: {
StartDate: null, // 数据库返回时间格式为: YYYY-MM-dd ,2018-11-11
EndDate: null, }, realEndDatePickerOptions: {
disabledDate: (time) => {
if (this.beginDate) {
return time.getTime() > Date.now() || time.getTime() < this.beginDate
}
}
}, pickerOptions0: {
disabledDate: (time) => {
if (this.beginDate && this.endDate) {
return time.getTime() < this.beginDate || time.getTime() >= this.endDate
}
}
},
pickerOptions1: {
disabledDate: (time) => {
if (this.beginDate && this.endDate) {
return time.getTime() >= this.endDate || time.getTime() < this.beginDate
}
}
}
}
}, computed: {
beginDate() {
return new Date(this.formFilter.StartDate).getTime() - 24 * 3600 * 1000
},
endDate() {
return new Date(this.formFilter.EndDate).getTime()
}
},

一、前提条件:数据库返回时间格式为: YYYY-MM-dd ,例如:2018-11-11

二、重点:

1通过Date(“YYYY-MM-dd ”).getTime() 转换为时间戳格式,然后比较大小。

2找到date-picker时间组件的方法:disabledDate

3 时间戳格式,减去一日就是减去一日对应的毫秒数:24 * 3600 * 1000

三、缺点:date-picker时间组件通过遍历disabledDate方法来控制日期可选和不可选,有一定的性能损失,不过测试可以接受。建议将需要计算的步骤转移到计算属性computed中进行,保持disabledDate最简化。

四、可能的性能替代方案: onchange事件中判断范围,弹出提示信息,但这种提示不够智能、友好。

提示语句案例:

this.$notify({
  title: '提示',
  message: '日期超出计划开始和结束范围!',
  type: 'warning',
  duration: 3000
})

五、element文档:http://element-cn.eleme.io/#/zh-CN/component/date-picker

六:可能的错误:

报错:disabledDate (time) {}

改为:disabledDate: (time) =>{}

错误  return time.getTime() >= this.endDate || time.getTime() < this.beginDate

改为:if (this.beginDate && this.endDate) {  return time.getTime() >= this.endDate || time.getTime() < this.beginDate }

//必须加if条件,建议将容易返回true的判断条件放在前面,减少判断时间。

----------------------------------------------------------------------------------------------------------------------------

参考过的文档:https://blog.csdn.net/qq_25386583/article/details/77044179

Element-UI 日期范围 date-picke的更多相关文章

  1. 使用element ui 日期选择器获取值后的格式问题

    一般情况下,我们需要给后台的时间格式是: "yyyy-MM-dd" 但是使用Element ui日期选择器获取的值是这样的: Fri Sep :: GMT+ (中国标准时间) 在官 ...

  2. Element ui 日期限制范围

    时间限定范围: <el-date-picker type="date" placeholder="选择日期" v-model="addForm. ...

  3. element ui 日期控件范围时间限制记录、以及计算两个日期之间的天数

    日期的筛选经常会有最小的日期选择,例如:当前日期 :clearable="false" :picker-options="pickerOptions0" val ...

  4. element ui 时间控件 多个日期

    前言:工作中用到 vue+element ui 的前端框架,需要使用时间控件来选择多个日期,已月日的形式,且有默认值,所以记录一下.转载请注明出处:https://www.cnblogs.com/yu ...

  5. 14: element ui 使用

    1.1 element ui 基本使用 参考网址: http://element.eleme.io/#/zh-CN/component/button 1.初始一个vue项目并安装element ui ...

  6. 【Element UI】使用问题记录

    [Element UI]使用问题记录 转载:https://www.cnblogs.com/yangchongxing/p/10750994.html 下载地址: https://unpkg.com/ ...

  7. 普通element ui table组件的使用

    1.使用基础的element ui 的table的基础使用 首先,使用前要先引用element库到项目中,可以直接引入element的js和css或者在vue项目下按需加载不同的组件 废话不多说,直接 ...

  8. VUE -- 对 Element UI table中数据进行二次处理

    时间——日期 后台经常给我们返回的是 时间戳 (例如:1535620671) 这时候我们页面展现的时候需要将时间戳转换为我们要的格式 例如 (YYYY-MM-DD HH:mm:ss) 如果是在Elem ...

  9. Element ui结合springboot的简单实战

    Eelment UI简单实战 前端开发 1 创建项目,导入element ui(略) 2 大致设计出想要的效果,如下 3 创建包 根据设计的大致模样在项目的components中创建对应的包,方便以后 ...

  10. Element Ui使用技巧——Form表单的校验规则rules详细说明

    Element UI中对Form表单验证的使用介绍: Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item的 prop 属性设置为需校验的字段名 ...

随机推荐

  1. centos7.2安装图文详解

    centos镜像下载地址  https://www.centos.org/download/ Install CentOS 7 ----直接安装Test this media & instal ...

  2. 10-Mock模拟接口返回数据

    1.安装mock 方法一:pip安装 命令行直接输入:pip install mock 方法二:官网下载mock安装包安装 下载安装包后,解压,命令行进入解压目录,执行python setup.py ...

  3. 4-Django开发post、get接口

    一.创建django应用程序 方法一:创建django项目时直接创建应用程序 方法二:命令行创建 1.进入manage.py所在目录 2.执行常见命令:python manage.py startap ...

  4. java基础0615

    1. 1)2)   1)输出:Base  2)编译成功,但没有输出. 2. 编译成功,但没有输出. 3. 只有12行的话,不会新建文件.需要create~~ 4. public static void ...

  5. JavaScript自定义鼠标右键菜单

    下面为JavaScript代码 window.onload = function () { //好友列表 var f = 0; //判断指定id的元素在页面中是否存在 if (document.get ...

  6. Visual Studio 常见的快捷键

    “Ctrl + -”               回到上一个光标位置 “Ctrl + Shift + -”                前进到下一个光标位置 “Ctrl + C”           ...

  7. 微信APP支付,支付宝APP支付demo

    最近公司新开发的APP中,需要集成微信支付和支付宝支付,2个平台申请的都是APP支付.这是个人第一次单独的,完整的做完2个平台的支付. 这里我主要用到了2个接口:支付接口,订单查询接口,虽然2个平台的 ...

  8. Kubernetes 笔记 03 扫清概念

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...

  9. 浅谈HTTP Keep-Alive

    背景是一次线上故障 项目类型vue ssr 与server的数据交互用的http内网域名方案 在5月发生了一次线上CPU100%的问题,直接导致了NodeServer 500. 最终解决办法是: 1. ...

  10. 为什么推荐前端使用Vue.js

    MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...