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

element-时间选择器单独写两个时间选择器并按照规则进行置灰选择,精确到时分秒

项目场景:

在这里插入图片描述
要求:

  • 开始时间和结束时间可以分开搜索,所以组件自带的时间范围选择器不适用
  • 开始时间和结束时间超过当前时间置灰不可选择
  • 开始时间不可选择结束时间之后的时间
  • 结束时间不可选择开始时间之前的时间

代码实例

 <el-form-item><div class="theme-date"><div class="theme-date-prepend">任务开始/结束时间</div><el-date-pickertype="datetime"placeholder="选择任务开始日期":picker-options="pickerOptions"value-format="yyyy-MM-dd HH:mm:ss"v-model="form.startTime"></el-date-picker><span style="padding: 0 2px"></span><el-date-pickertype="datetime"placeholder="选择任务结束日期":picker-options="pickerOptions1"value-format="yyyy-MM-dd HH:mm:ss"v-model="form.endTime"></el-date-picker></div></el-form-item>
data中声明两个参数
startTimeSelectableRange: "00:00:00-23:59:59",
endTimeSelectableRange: "00:00:00-23:59:59",
computed: {pickerOptions() {const that = this;return {disabledDate(time) {if (that.form.endTime && that.form.endTime !== "") {return (time.getTime() > new Date(that.form.endTime).getTime() ||time.getTime() > new Date());}return time.getTime() > new Date();},selectableRange: that.startTimeSelectableRange,};},pickerOptions1() {const that = this;return {disabledDate(time) {if (that.form.startTime && that.form.startTime !== "") {return (time.getTime() + 3600 * 1000 * 24 <new Date(that.form.startTime).getTime());}},selectableRange: that.endTimeSelectableRange,};},},

重要的是要对开始时间和结束时间进行监听

 watch: {"form.startTime": {handler(newVal) {// 判断是不是选择的当天,去置灰当天当时当秒之后的置灰操作if (newVal &&new Date(newVal).getFullYear() === new Date().getFullYear() &&new Date(newVal).getMonth() === new Date().getMonth() &&new Date(newVal).getDate() === new Date().getDate()) {this.startTimeSelectableRange = `00:00:00 - ${new Date().getHours()}:${new Date().getMinutes()}:${new Date().getSeconds()}`;}// 判断是不是选择的结束时间的当天,如果是,那就要将选择的结束时间后的时间进行置灰不可选择if (this.form.endTime &&new Date(newVal).getFullYear() ===new Date(this.form.endTime).getFullYear() &&new Date(newVal).getMonth() ===new Date(this.form.endTime).getMonth() &&new Date(newVal).getDate() === new Date(this.form.endTime).getDate()) {this.startTimeSelectableRange = `00:00:00 - ${new Date(this.form.endTime).getHours()}:${new Date(this.form.endTime).getMinutes()}:${new Date(this.form.endTime).getSeconds()}`;}},},"form.endTime": {handler(newVal) {// 判断是不是选择的当天,去置灰当天当时当秒之后的置灰操作if (newVal &&new Date(newVal).getFullYear() === new Date().getFullYear() &&new Date(newVal).getMonth() === new Date().getMonth() &&new Date(newVal).getDate() === new Date().getDate()) {this.endTimeSelectableRange = `00:00:00 - ${new Date().getHours()}:${new Date().getMinutes()}:${new Date().getSeconds()}`;}// 判断是不是选择的开始时间的当天,如果是,那就要将选择的结束时间前的时间进行置灰不可选择if (this.form.startTime &&new Date(newVal).getFullYear() ===new Date(this.form.startTime).getFullYear() &&new Date(newVal).getMonth() ===new Date(this.form.startTime).getMonth() &&new Date(newVal).getDate() === new Date(this.form.startTime).getDate()) {this.endTimeSelectableRange = `${new Date(this.form.startTime).getHours()}:${new Date(this.form.startTime).getMinutes()}:${new Date(this.form.startTime).getSeconds()} - 23:59:59`;}},},},

http://www.mrgr.cn/news/56004.html

相关文章:

  • 传统企业营销新起点:百科词条构建基础策略!
  • Go 1.19.4 命令调用、日志、包管理、反射-Day 17
  • HCIP-HarmonyOS Application Developer 习题(十五)
  • C++加密解密问题解惑答疑
  • 深度学习-模型部署
  • 代码训练营 day41|LeetCode 1049,LeetCode 494,LeetCode 474
  • 阿里云的 ALB (Application Load Balancer) 然后到 nginx 和具体服务时,如果超过 60 秒请求失败
  • 电子仪表计量检测产生误差的原因有哪些?数据误差原因分析
  • 【小白学机器学习19】统计基础:什么是定量分析,量化的4个层级,因果关系分类等
  • set笔记
  • HTTP错误代码解决详解
  • 雅迪控股营收、净利润和毛利下滑:销量大幅减少,屡屡抽查不合格
  • 如何成功报考PMP:5个必备步骤
  • 小型内衣裤洗衣机哪个牌子好?揭晓五款巅峰热门机型,精心挑选
  • 双十一有哪些值得买的东西?2024年最全双十一好物推荐榜单来了!
  • 宠物用品电商网站:SpringBoot框架设计与开发
  • 基于SpringBoot+Vue的网上超市系统的设计与实现(带文档)
  • 计算机保研/考研资料分享
  • 右上角的钩自存elemntui样式
  • MedSAM微调版,自动生成 Prompt 嵌入实现图像分割!
  • 集成平台,互联互通平台,企业大数据平台建设方案,技术方案(Word原件 )
  • 最优化理论-最优化1
  • 启发式搜索(直观命名+详细注释版)
  • 300元内头戴式耳机哪个品牌音质好?四款高音质表现头戴品牌推荐!
  • 【C++】基于红黑树的 Map 和 Set 封装及实现过程详述
  • 电商API:定义、功能、特点及广泛应用场景解析