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

vue element时间选择不能超过今天 时间选中长度不能超过7天

背景:

使用elenmet plus 组件实现时间选择;且日期时间选择不能超过今天;连续选中时间的长度范围不能超过7天

效果展示:

 

 

实现思路:

一、使用element组件自带的属性和方法;

:disabled-date="disabledDate"

@calendar-change="calendarChange"

@blur="handleBlur" 

二、使用js方法判断,通过时间组件选择的时间范围value值是否符合条件。

一、element日期时间组价

布局代码:

//布局代码
<el-date-picker 
    v-model="data.valueTwoTimer" 
    type="datetimerange"
    value-format="YYYY-MM-DD HH:mm:ss" 
    range-separator="至" 
    start-placeholder="开始时间"
    end-placeholder="结束时间" 
    :unlink-panels="true" 
    :default-time="data.valueTwoTimer"
    :disabled-date="disabledDate" 
    @calendar-change="calendarChange"     
    @blur="handleBlur" 
/>

核心属性和方法:

:disabled-date="disabledDate" @calendar-change="calendarChange" @blur="handleBlur" 

//vue3的写法
<script setup>
import { onMounted, reactive } from "vue";
const calendarChange = (dates) => {
    let hasSelectDate = dates !== null && dates.length > 0;
    data.minTime = hasSelectDate ? dates[0] : null;
};
const disabledDate = (time) => {
    const timeRange = 1 * 24 * 60 * 60 * 1000; // 1天时间戳
    const tempTime = Date.now() - timeRange;
    //是否触发calendarChange() 
    if (data.minTime) {
        const minTime = new Date(data.minTime).getTime();
        const maxTime = new Date(data.minTime).getTime() + timeRange * 6;// 最大选择7天时间
        if (tempTime < maxTime) {
            return time.getTime() < minTime || time.getTime() > tempTime;
        }
        return time.getTime() < minTime || time.getTime() > maxTime;
    } else {
        return time.getTime() >= tempTime;//不能超过今天
    }
};
const handleBlur = () => {
    data.minTime = null;
};
</script>

二、自定义的js方法判断 

自定义一个判断最大选择7天时间的方法。调取接口时触发此方法、或者时间选择完毕后触发此方法等。

//最大7天
const timeLimite = () => {
      const minTime = timeToTimestamp(times[0]);
      const maxTime = timeToTimestamp(times[1]);
      const isOver7 = maxTime - minTime > timeRange * 7;
      if (isOver7) {
        ElMessage({
          type: "warning",
          message: `历史记录查询时间不能超过7天`,
        });
        return false;
      }
}
const timeRange = 1 * 24 * 60 * 60 * 1000; // 1天时间戳
const timeToTimestamp = (time) => {
  let timestamp = Date.parse(new Date(time).toString());
  return timestamp;
};

 


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

相关文章:

  • 【教学类-89-02】20250128新年篇02——姓名藏头对联(星火讯飞+Python,五言对联,有横批)
  • 软考信安27~Windows操作系统安全相关
  • 浅谈Linux的发展
  • 论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(三)
  • 滤波电路汇总
  • 神经网络|(四)概率论基础知识-古典概型
  • 动手学深度学习(pytorch土堆)-02TensorBoard的使用
  • 防患于未然,智能监控新视角:EasyCVR视频平台在高校安全防控中的关键角色
  • Azure OpenAI models being unable to correctly identify model
  • [001-03-007].第26节:分布式锁迭代3->优化基于setnx命令实现的分布式锁-防锁的误删
  • openharmony 应用支持常驻和自启动
  • Web安全之XSS跨站脚本攻击:如何预防及解决
  • 2024年最新版Ajax+Axios 学习【包含原理、Promise、报文、接口等...】
  • SVN下载安装使用方法
  • 蓝牙也会更新?新功能有这些便捷之处
  • 探索电商系统的新篇章:卷轴模式系统开发的创新与实践
  • 【C语言】选择排序及优化、冒泡排序、计数排序的实现
  • Python 工厂模式:构建灵活软件架构的秘密武器
  • HTML5中`<ul>`标签深入全面解析
  • JS面试真题 part3
  • 校园水电费管理|基于java的校园水电费管理小程序系统 (源码+数据库+文档)
  • 探索Oracle数据库的多租户特性:架构、优势与实践
  • pytorch torch.norm函数介绍
  • docker的镜像制作
  • Android audioRecord 获取实时音频可视化
  • k8s网络一文搞懂