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

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.lryc.cn/news/438517.html

相关文章:

  • 如何 吧一个 一维数组 切分成相同等分,一维数组作为lstm的输入(三维数据)的数据预处理 collate_fn的应用
  • Remix 学习 - @remix-run/react 中主要的 hooks
  • STL之stack
  • 如何用3个月零基础入门网络安全?_网络安全零基础怎么学习
  • 适合学生党开学买的蓝牙耳机?分享开放式耳机排行榜前十名
  • 汽车租赁系统1.0版本
  • DockerDocker Compose安装(离线+在线)
  • 【泰克生物】酵母展示建库技术解析:构建高质量抗体文库的实用指南
  • QT Mode/View之View
  • URP 线性空间 ui资源制作规范
  • 如何精确统计Pytorch模型推理时间
  • Mybatis-plus-Generator 3.5.5 自定义模板支持 (DTO/VO 等) 配置
  • C#环境下MAC地址获取方法解析
  • (k8s)Kubernetes 从0到1容器编排之旅
  • Rust Web开发框架对比:Warp与Actix-web
  • F12抓包12:Performance(性能)前端性能分析
  • 数据结构(Day13)
  • 链表的快速排序(C/C++实现)
  • css总结(记录一下...)
  • SpringBoot 处理 @KafkaListener 消息
  • Spring Boot-API版本控制问题
  • Git 提取和拉取的区别在哪
  • 【数据结构与算法 | 每日一题 | 力扣篇】力扣2390, 2848
  • 破解信息架构实施的密码:常见挑战与最佳解决方案全指南
  • CodeChef Starters 151 (Div.2) A~D
  • Redis学习——数据不一致怎么办?更新缓存失败了又怎么办?
  • 跨境电商代购新纪元:一键解锁全球好物,系统流程全揭秘
  • Mac 上终端使用 MySql 记录
  • 461. 汉明距离
  • 开发指南061-nexus权限管理