为elementui的el-date-picker时间选择器添加快捷选项

1、效果图

2、实现方法

直接在elementui的时间选择器上修改,添加shorcuts选项,但是样式要自己修改。

有几个注意点:

1)如图我是选中后有显示背景颜色的,也就意味着要给选中的选项添加类名,elementui没有这个功能,需要我们自己实现。

2)选中时间后,给对应的快捷选项也选中。比如我在时间选择器中选择了近7天,那么对应快捷选项也要选中。

3、代码

shortCuts:

 shortcuts: [{text: "今日",onClick(picker) {const [start, end] = getToday();picker.$emit("pick", [start, end]);},},{text: "昨日",onClick(picker) {const [start, end] = getYesterday();picker.$emit("pick", [start, end]);},},{text: "本周",onClick(picker) {const [start, end] = getWeek();picker.$emit("pick", [start, end]);},},{text: "上周",onClick(picker) {const [start, end] = getLastWeek();picker.$emit("pick", [start, end]);},},{text: "本月",onClick(picker) {const [start, end] = getMonth();picker.$emit("pick", [start, end]);},},{text: "上月",onClick(picker) {const [start, end] = getLastMonth();picker.$emit("pick", [start, end]);},},{text: "近7天",onClick(picker) {const [start, end] = getPassedSeven();picker.$emit("pick", [start, end]);},},{text: "近14天",onClick(picker) {const [start, end] = getPassedFourteen();picker.$emit("pick", [start, end]);},},{text: "近30天",onClick(picker) {const [start, end] = getPassedThirty();picker.$emit("pick", [start, end]);},},{text: "近60天",onClick(picker) {const [start, end] = getPassedSixty();picker.$emit("pick", [start, end]);},},{text: "近90天",onClick(picker) {const [start, end] = getPassedNinety();picker.$emit("pick", [start, end]);},},]

获取各个时间的函数:

export function getToday() {const start = new Date();start.setHours(0, 0, 0, 0);const end = new Date();end.setHours(23, 59, 59, 0);return [start, end];
}export function getYesterday() {const start = new Date();start.setDate(start.getDate() - 1);start.setHours(0, 0, 0, 0); const end = new Date();end.setDate(end.getDate() - 1);end.setHours(23, 59, 59, 0); return [start, end];
}export function getWeek() {const start = new Date();const end = new Date();end.setHours(23, 59, 59, 0);const dayOfWeek = start.getDay() || 7;start.setDate(start.getDate() - dayOfWeek + 1);start.setHours(0, 0, 0, 0);return [start, end];
}export function getLastWeek() {const start = new Date();start.setDate(start.getDate() - 6 - (start.getDay() || 7));start.setHours(0, 0, 0, 0);const end = new Date(start);end.setDate(start.getDate() + 6); // 获取本周的最后一天end.setHours(23, 59, 59, 0);return [start, end];
}export function getMonth() {const start = new Date();start.setDate(1); start.setHours(0, 0, 0, 0);const end = new Date(); end.setHours(23, 59, 59, 0); return [start, end];
}export function getPassedSeven() {const start = new Date();start.setTime(start.getTime() - 3600 * 1000 * 24 * 6);start.setHours(0, 0, 0, 0); const end = new Date();end.setHours(23, 59, 59, 0); return [start, end];
}export function getPassedFourteen() {const start = new Date();start.setHours(0, 0, 0, 0);const end = new Date();end.setHours(23, 59, 59, 0);start.setTime(start.getTime() - 3600 * 1000 * 24 * 13);return [start, end];
}export function getPassedThirty() {const end = new Date();end.setHours(23, 59, 59, 0);const start = new Date();start.setTime(start.getTime() - 3600 * 1000 * 24 * 29);start.setHours(0, 0, 0, 0); return [start, end];
}export function getPassedSixty() {const end = new Date();end.setHours(23, 59, 59, 0);const start = new Date();start.setTime(start.getTime() - 3600 * 1000 * 24 * 59);start.setHours(0, 0, 0, 0);return [start, end];
}export function getPassedNinety() {const end = new Date();end.setHours(23, 59, 59, 0); const start = new Date();start.setTime(start.getTime() - 3600 * 1000 * 24 * 89);start.setHours(0, 0, 0, 0);return [start, end];
}export function getLastMonth() {const today = new Date();const lastMonth = new Date(today.getFullYear(),today.getMonth() - 1,1);const firstDay = new Date(lastMonth.getFullYear(),lastMonth.getMonth(),1);const lastDay = new Date(lastMonth.getFullYear(),lastMonth.getMonth() + 1,0);firstDay.setHours(0, 0, 0, 0);lastDay.setHours(23, 59, 59, 0);return [firstDay, lastDay]
}

设置active的类名:

export function setShortCutsClass(text) {const data = document.getElementsByClassName('el-picker-panel__shortcut');for (let i of data) {if (i.innerText === '今日') {i.style.background = '#edf4fb';i.style.color = '#606266'}if (i.innerText === text) {i.classList.add('el-picker-panel__shortcut-active');} else {i.classList.remove('el-picker-panel__shortcut-active');}}
}

在时间选择器的change事件中选中时间后把对应的快捷选项设置为active:

setTimeShortClass(val) {Object.keys(this.timeMap).forEach((name) => {if (Date.parse(val[0]) === Date.parse(this.timeMap[name]()[0]) &&Date.parse(val[1]) === Date.parse(this.timeMap[name]()[1])) {setShortCutsClass(name);}});
},timeMap: {今日: getToday,昨日: getYesterday,本周: getWeek,上周: getLastWeek,本月: getMonth,上月: getLastMonth,近7天: getPassedSeven,近14天: getPassedFourteen,近30天: getPassedThirty,近60天: getPassedSixty,近90天: getPassedNinety,}

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

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

相关文章

一. 从Hive开始

1. 怎么理解Hive Hive不能理解成一个传统意义上的数据库,应该理解成一个解决方案。 是Hadoop在hdfs和mapreduce之后才出现的一个结构化数据处理的解决方案。 Hdfs解决了大数据的存储问题,mapreduce解决了数据的计算问题。 一切似乎很美好。 但是使用成本…

微信小程序页面制作——个人信息

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

探索fastFM:Python中的高效推荐系统库

文章目录 🚀 探索fastFM:Python中的高效推荐系统库背景:为何选择fastFM?快照:fastFM是什么?安装指南:如何将fastFM加入你的项目?快速入门:五个基础函数的使用实战演练&am…

【音视频】播放音视频时发生了什么? 视频的编解码 H264是什么? MP4是什么?

目录 ✨播放一个视频的流程✨为什么要编码(压缩)视频数据?✨如何编码(压缩)数据🎄简单的例子🎄音视频编码方式🎄视频编码格式H264编码是什么?发展历程?H.264基…

解锁 macOS 剪贴板历史记录,高效复制、粘贴技巧

在Mac上,我们经常需要在不同文档之间复制和粘贴内容。然而,macOS自带的剪贴板只能保存最后一个复制项,这大大限制了我们的工作效率。幸运的是,一些第三方应用程序可以帮助我们查看和管理剪贴板的历史记录,从而提升我们…

关系的规范化与范式详解

在数据库设计中,关系的规范化是确保数据结构合理性、减少冗余和异常的关键步骤。如果你是一个数据库设计的初学者,这篇文章将为你深入浅出地讲解 关系规范化 和 范式 的核心概念,并通过简洁的示例帮助你加深理解。 关系的规范化:…

飞机制造5G智能工厂数字孪生工业物联平台,推进制造业数字化转型

飞机制造行业作为高端制造业的典范,正积极探索数字化转型的新路径。飞机制造5G智能工厂数字孪生工业物联平台(以下简称“平台”)的兴起,不仅为飞机制造业注入了强劲动力,更为整个制造业的数字化转型树立了新的标杆。 …

B: 小球反弹

目录 一: 二: 三: 四: 一:问题描述 有一长方形,长为343720 单位长度,宽为233333 单位长度。在其内部左上角顶点有一小球(无视其体积),其初速度如图所示且…

Transformer预测 | 基于Transformer心率时间序列预测(tensorflow)

效果一览 基本介绍 Transformer预测 | 基于Transformer心率时间序列预测(tensorflow) 程序设计 import pandas as pd from pandas.plotting import lag_plot from statsmodels.graphics

变量数据类型 Day3

1. 变量 1.1 变量的概念 变量是计算机内存中的一块存储单元,是存储数据的基本单元变量的组成包括:数据类型、变量名、值,后文会具体描述变量的本质作用就是去记录数据的,比如说记录一个人的身高、体重、年龄,就需要去…

Verilog基础,原码,反码与补码的概念

Verilog模块初认识 1、Verilog模块(Module) Verilog中的module可以看成一个具有输入输出端口的黑盒子,该黑盒子有输入和输出接口(信号),通过把输入在盒子中执行某些操作来实现某项功能。(类似于C语言中的函数) 图1 模块示意图 1.1 模块描述 图1 所示的…

2024年【防爆电气】试题及解析及防爆电气模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 防爆电气试题及解析考前必练!安全生产模拟考试一点通每个月更新防爆电气模拟考试题库题目及答案!多做几遍,其实通过防爆电气复审模拟考试很简单。 1、【单选题】()利用输送爆炸危险…

Einsum(Einstein summation convention)

Einsum(Einstein summation convention) 笔记来源: Permute和Reshape嫌麻烦?einsum来帮忙! The Einstein summation convention is a notational shorthand used in tensor calculus, particularly in the fields of …

大美祖国之地名篇-探寻全国同名地名

目录 前言 一、地名数据库 1、数据库模型 2、数据表结构 二、实践之旅,发现同名地名 1、省、市同名 2、市、县同名 3、 区县、乡镇同名 4、乡镇和村委会同名 三、总结 前言 我们祖国地大物博,从北到南,从东到西。祖国位于亚洲东部&…

九,自定义转换器详细操作(附+详细源码解析)

九,自定义转换器详细操作(附详细源码解析) 文章目录 九,自定义转换器详细操作(附详细源码解析)1. 基本介绍2. 准备工作3. 自定义转换器操作4. 自定义转换器的注意事项和细节5. 总结:6. 最后&…

电脑怎么限制软件上网?推荐三个超详细的小妙招(软件上网权限管理)

想要控制电脑上哪些软件可以上网、哪些不能?不管是为了保护隐私、节省流量,还是提高工作效率,限制软件上网都是非常实用的小妙招! 今天给大家带来三个超详细的招数,帮助你轻松管理软件的上网权限。让那些不该上网的应…

云计算第四阶段----CLOUD 01-03

CLOUD Day01 一、虚拟化平台搭建 虚拟化技术产品介绍 #黄线标注的,都是比较主流且常用的虚拟化平台。 虚拟化与云计算的关系 虚拟化是一种技术,它允许在单个物理服务器上创建和运行多个虚拟机(VMs),每个虚拟机都有其…

python编程知识(实现数据加密和解密)

👨‍💻个人主页:开发者-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏&#xff1a…

JavaScript使用高德API显示地图

前言 在JavaScript中,使用Leaflet库显示地图是一种常见的做法。Leaflet是一个开源的JavaScript库,用于在Web应用程序中创建互动地图。它非常轻量级,易于使用,并且提供了多种功能,使开发者能够轻松地将地图集成到他们的…

银行结算业务

1.1 银行本票 银行本票是由银行签发的,承诺自己在见票时无条件支付票款给收款人或持票人的业务。银行本票按票面划分为定额本票和不定额本票,按币种划分为人民币银行本票和外币银行本票。人民币银行本票仅在同一交换区域内使用,资金清算利用当地人民银行组织的资金清算形式…