vue3使用<el-date-picker分别设置开始时间和结束时间时,设置开始时间晚于当前时间,开始时间早于结束时间,结束时间晚于开始时间

vue3使用<el-date-picker分别设置开始时间和结束时间时,设置开始时间晚于当前时间,开始时间早于结束时间,结束时间晚于开始时间

为避免出现填写结束事件后再次修改开始时间,导致开始时间晚于结束时间,添加 @change=“handleChangeStartTime”
进一步进行时间校验

<el-date-pickerv-else-if="item.type === 'datetimestart'"v-model="state.ruleForm[item.key]"type="datetime"format="YYYY-MM-DD HH:mm:ss"time-format="HH:mm:ss"value-format="YYYY-MM-DD HH:mm:ss"v-bind="pickerOptions"placeholder="选择日期时间"@change="handleChangeStartTime"
>
</el-date-picker>
<el-date-pickerv-else-if="item.type === 'datetimeend'"v-model="state.ruleForm[item.key]"type="datetime"format="YYYY-MM-DD HH:mm:ss"time-format="HH:mm:ss"value-format="YYYY-MM-DD HH:mm:ss"v-bind="pickerOptionsEnd"placeholder="选择日期时间"
>
</el-date-picker>
const handleChangeStartTime = () => {const startTime = convertToTimestamp(state.ruleForm.planStartTime);const endTime = convertToTimestamp(state.ruleForm.planEndTime);if (startTime > endTime) {ElMessage.warning('计划开始时间晚于计划结束时间,请重新添加计划开始时间或计划结束时间');}};/*** 生成一个数组* @param start* @param end*/const makeRange = (start: number, end: number) => {const result: number[] = [];for (let i = start; i <= end; i++) {result.push(i);}return result;};/*** 限制今天之前的时间不能选择(小时)*/const disabledHours = () => {let newVal = new Date(state.ruleForm.planStartTime);if (newVal &&newVal.getFullYear() == new Date().getFullYear() &&newVal.getMonth() == new Date().getMonth() &&newVal.getDate() == new Date().getDate()) {//如果为今天,则限制当前时间前的时间不能选择。return makeRange(0, new Date().getHours());}};/*** 限制今天之前的时间不能选择(分钟)* @param hour*/const disabledMinutes = () => {let newVal = new Date(state.ruleForm.planStartTime);if (newVal &&newVal.getFullYear() == new Date().getFullYear() &&newVal.getMonth() == new Date().getMonth() &&newVal.getDate() == new Date().getDate() &&newVal.getHours() == new Date().getHours()) {//如果为今天,则限制当前时间前的时间不能选择。return makeRange(0, new Date().getMinutes() - 1);}};/*** 限制今天之前的时间不能选择的配置*/const pickerOptions = computed(() => {return {// 限制今天之前的日期不能选择disabledDate(time: any) {return time.getTime() < Date.now() - 8.64e7;},// 限制今天之前的小时不能选择disabledHours,// 限制今天之前的分钟不能选择disabledMinutes,};});// 结束时间const pickerOptionsEnd = computed(() => {return {// 限制开始时间之前的日期不能选择disabledDate(time: any) {return time.getTime() < convertToTimestamp(state.ruleForm.planStartTime) - 8.64e7;},// 限制开始时间之前的小时不能选择disabledHours() {let newVal = new Date(state.ruleForm.planEndTime);const time = state.ruleForm.planStartTime;if (newVal &&newVal.getFullYear() == new Date(time).getFullYear() &&newVal.getMonth() == new Date(time).getMonth() &&newVal.getDate() == new Date(time).getDate()) {//限制开始时间前的时间不能选择。return makeRange(0, new Date(time).getHours() - 1);}},// 限制开始时间之前的分钟不能选择disabledMinutes() {let newVal = new Date(state.ruleForm.planEndTime);const time = state.ruleForm.planStartTime;if (newVal &&newVal.getFullYear() == new Date(time).getFullYear() &&newVal.getMonth() == new Date(time).getMonth() &&newVal.getDate() == new Date(time).getDate() &&newVal.getHours() == new Date(time).getHours()) {//限制开始时间前的时间不能选择。return makeRange(0, new Date(time).getMinutes() - 1);}},disabledSeconds() {let newVal = new Date(state.ruleForm.planEndTime);const time = state.ruleForm.planStartTime;if (newVal &&newVal.getFullYear() == new Date(time).getFullYear() &&newVal.getMonth() == new Date(time).getMonth() &&newVal.getDate() == new Date(time).getDate() &&newVal.getHours() == new Date(time).getHours() &&newVal.getMinutes() == new Date(time).getMinutes()) {//限制开始时间前的时间不能选择。return makeRange(0, new Date(time).getSeconds());}// return makeRange(0, new Date(time).getSeconds() - 1);},};});/*** 将某个时间转化成时间戳* 时间格式:2019-05-20 00:00:00 或 2019年5月1日 00:00:00* 返回值:1556640000000,13位时间戳*/// 示例日期字符串格式:"2023-05-15 14:30:00"function convertToTimestamp(dateString: string) {// 处理iOS兼容性问题(将短横线替换为斜杠)const formattedDate = dateString.replace(/-/g, '/');const dateObj = new Date(formattedDate);return dateObj.getTime(); // 返回13位时间戳(毫秒级)}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/79188.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/79188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习实操 第一部分 机器学习基础 第7章 集成学习与随机森林

机器学习实操 第一部分 机器学习基础 第7章 集成学习与随机森林 内容概要 第7章深入探讨了集成学习方法&#xff0c;这是一种结合多个预测模型&#xff08;如分类器或回归器&#xff09;以提高预测性能的技术。这些方法通过利用群体的智慧&#xff0c;可以比单个模型获得更好…

React Native 开发环境搭建:从零开始

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 &#x1f35a; 蓝桥云课签约作者、…

机器视觉橡胶制品检测的应用

橡胶制品在生产过程中易出现划痕、气泡、缺料、毛边、杂质嵌入等多种缺陷&#xff0c;这些缺陷往往微小且随机分布&#xff0c;人工检测不仅耗时&#xff0c;漏检率也居高不下。尤其在汽车密封件、医疗硅胶制品等高端领域&#xff0c;微米级的缺陷都可能导致产品失效&#xff0…

1295.统计位数为偶数的数字

记录 2025.4.30 题目&#xff1a; 思路&#xff1a; 1.数学观察&#xff1a;位数不断减去2&#xff0c;若最后位数为1则为奇数&#xff0c;反正为偶数。 2.库函数&#xff1a;String.valueOf(int)或Integer.toString(int)函数&#xff08;快速获得十进制的位数&#xff09;…

UniApp页面路由详解

一、路由系统概述 1.1 路由机制原理 UniApp基于Vue.js实现了一套跨平台的路由管理系统&#xff0c;其核心原理是通过维护页面栈来管理应用内不同页面之间的跳转关系。在小程序端&#xff0c;UniApp的路由系统会映射到对应平台的原生导航机制&#xff1b;在H5端则基于HTML5 Hi…

氢混合气配气系统在传感器检测中的重要应用

​ ​氢混合气配气系统是一种能够精确配制氢气与其他气体&#xff08;如氮气、空气等&#xff09;混合比例的设备&#xff0c;在传感器检测领域具有非常广泛的应用价值。随着氢能技术的快速发展&#xff0c;氢气传感器的需求不断增加&#xff0c;而氢混合气配气系统为传感器…

IdeaVim 配置与使用指南

一、什么是 IdeaVim&#xff1f; IdeaVim 是 JetBrains 系列 IDE&#xff08;如 IntelliJ IDEA, WebStorm, PyCharm 等&#xff09;中的一个插件&#xff0c;让你在 IDE 里使用 Vim 的按键习惯&#xff0c;大大提升效率。 安装方法&#xff1a; 在 IDE 中打开 设置(Settings) →…

JVM GC垃圾回收算法

垃圾回收算法&#xff08;GC Algorithms&#xff09; JVM 根据对象生命周期特性&#xff08;分代假设&#xff09;采用不同的回收算法&#xff0c;核心算法包括&#xff1a; 标记-清除&#xff08;Mark-Sweep&#xff09; 此算法执行分两阶段。第一阶段从引用根节点开始标记…

数智化招标采购系统针对供应商管理解决方案(采购如何管控供应商)

随着《优化营商环境条例》深化实施&#xff0c;采购领域正通过政策驱动和技术赋能&#xff0c;全面构建供应商全生命周期管理体系&#xff0c;以规范化、数智化推动采购生态向透明、高效、智能方向持续升级。 郑州信源数智化招标采购系统研发商&#xff0c;通过供应商管理子系…

Fiori学习专题二十五:Remote OData Service

之前我们都是使用本地JSON来显示发票清单。这节课我们将调用一个UI5公共的OData Service 1.由于本地开发访问OData服务https://services.odata.org/V2/Northwind/Northwind.svc/会产生跨域问题&#xff0c;所以这里我们需要使用代理 新建一个终端&#xff1a;执行&#xff1a;n…

文件读取操作

如果需要从文件读入数据&#xff0c;并把输出数据保存为文件&#xff0c;需要使用文件读取。 freopen为file reopen&#xff0c;意为文件重新打开&#xff0c;实现重定向标准输入输出第一个参数为文件名可以修改&#xff0c;输入文件为.in&#xff0c;输出文件为.out第二个参数…

[Linux网络_68] 转发 | 路由(Hop by Hop) | IP的分片和组装

目录 1.再谈网络转发 2.路由 举个例子 3.分片和组装 IP 层 [Linux#67][IP] 报头详解 | 网络划分 | CIDR无类别 | DHCP动态分配 | NAT转发 | 路由器 1.再谈网络转发 我们在上一篇文章中知道了路由器的功能有&#xff1a; 转发DHCP | 组建局域网NAT 组建局域网功能表现&…

如何使用C语言手搓斐波那契数列?

斐波那契数列&#xff0c;第0项为0&#xff0c;第1项为1&#xff0c;第2项开始每项等于前两之和。&#xff08;有些题目从第一项开始&#xff0c;第一项为1&#xff0c;第二项也为1&#xff09;。 运行时&#xff0c;输入的n代表的是项数&#xff0c;而输出则代表的是该项的值。…

java: 警告: 源发行版 21 需要目标发行版 21

解决这个问题看三个地方的SDK版本信息是否正确&#xff1a; 1&#xff0c;打开cmd命令&#xff0c;输入 java -version ,查看版本是否正确&#xff1b; 2&#xff0c;打开模块设置&#xff08;F4&#xff09;&#xff0c;查看项目的SDK 3&#xff0c;查看模块的SDK

一区思路!挑战5天一篇NHANES预测模型 DAY1-5

挑战5天一篇预测模型NHANES Day1! 近期美国关闭seer数据库的信息在互联网上广泛传播&#xff0c;大家都在担心数据库挖掘是否还能做。这个问题其实是有答案的&#xff0c;数据库挖掘肯定能做&#xff0c;做没被关的数据库即可&#xff0c;同时留意一些国产数据库&#xff5e;…

centos7安装NVIDIA显卡

装备工作 我的系统版本 cat /etc/centos-releaseCentOS Linux release 7.9.2009 (Core) 内核版本 rpm -q kernel或者 rpm -qa|grep kernelkernel-3.10.0-1160.el7.x86_64 注意以上输出内核版本&#xff0c;按照我下面的操作步骤&#xff0c;不会出问题。否则重装系统都有可…

Web应用开发指南

一、引言 随着互联网的迅猛发展&#xff0c;Web应用已深度融入日常生活的各个方面。为满足用户对性能、交互与可维护性的日益增长的需求&#xff0c;开发者需要一整套高效、系统化的解决方案。在此背景下&#xff0c;前端框架应运而生。不同于仅提供UI组件的工具库&#xff0c…

Java @Transactional事物隔离级别和默认值详解

在 Java 开发中&#xff0c;Transactional 注解是 Spring 框架中用于管理事务的重要工具。它提供了多种配置选项&#xff0c;其中事务隔离级别是一个关键属性。本文将深入探讨 Transactional 注解的隔离级别默认值&#xff0c;并通过具体代码示例帮助你更好地理解和应用事务隔离…

车辆检测新突破:VFM-Det 如何用大模型提升识别精度

目录 ​编辑 一、摘要 二、引言 三、相关工作 四、Coovally AI模型训练与应用平台 五、方法 概述 综述&#xff1a;基于区域建议的检测 基于VehicleMAE的感知器 六、实验分析 数据集与评估指标 实现细节 属性预测模块预训练 与SOTA检测器的对比实验 消融实验 V…

微格式:为Web内容赋予语义的力量

一、什么是微格式? 微格式是一种建立在已有 Web 标准基础上的简单、开放的数据格式。它的核心思想是通过在 HTML 标签中添加特定的属性和类名,为网页内容添加语义注解,从而兼顾 HTML 文档的人机可读性。 简单来说,微格式就是一套约定俗成的 HTML 标记方式,让我们能够在不…