为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…

PWA(Progressive Web App,渐进式网络应用)

PWA(Progressive Web App,渐进式网络应用)是一种结合了 Web 和原生应用程序最佳特性的现代 Web 应用程序开发方法。PWA 旨在提供类似原生应用的用户体验,同时保持 Web 应用的灵活性和可访问性。 PWA 的主要特性: 渐进…

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

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

ES6+ 特性,箭头函数、解构赋值、模块导入

1. 箭头函数(Arrow Functions) 箭头函数是 ES6 引入的一种简洁的函数定义方式。它的语法更简洁,并且不会绑定自己的 this 值。箭头函数通常用于简化函数表达式。 基本语法: const add (a, b) > a b;特点: 简洁…

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

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

关系的规范化与范式详解

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

Android Manifest 权限描述大全对照表

115工具网(115工具网-一个提供高效、实用、方便的在线工具集合网站)提供Android Manifest 权限描述大全对照表,可以方便andriod开发者查看安卓权限描述功能 权限名称描述android.permission.ACCESS_CHECKIN_PROPERTIES访问登记属性读取或写入…

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

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

微知-BIOS中的XHCI模式是什么意思?(usb3.0的扩展控制器影响usb3.0速率等选项)

XHCI “eXtensible Host Controller Interface” “可扩展主机控制器接口”。 英特尔公司开发的一个USB主机控制器接口,主要面向USB 3.0,同时也支持USB 2.0及以下版本的设备。 是usb3.0的核心部分。 有他表示主机支持usb3.0 三种模式:Smart …

B: 小球反弹

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

Spring Boot项目中怎么构建多模块的应用

在大型项目开发中,将项目分解为多个模块不仅可以增强代码的可维护性,还能提高开发效率。Spring Boot 提供了对多模块项目的良好支持,使得我们可以轻松地构建复杂的企业级应用程序。在这篇文章中,我们将深入探讨如何在Spring Boot项…

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误 enum Number {Zero,One,Two, }enum Number1 {Zero 0,One,Two, }// C语言风格的枚举定义 enum Number2 {Zero 0.0,One 1.0,Two 2.0, }fn main() {// 通过 as 可以将枚举值强转…

使用FFmpeg的AVFilter转换YUV到RGB

AVFilter 是 FFmpeg 库 libavfilter 的核心组件,提供了一套强大的音视频处理框架,用于对音视频流进行复杂的过滤、转换和效果处理。通过 AVFilter,开发者可以构建自定义的滤镜图(filter graph),实现各种音视…

(每日一问)操作系统:常见的 Linux 指令详解

(每日一问)操作系统:常见的 Linux 指令详解 Linux 系统作为一种开源的操作系统,以其高效、稳定和安全的特性,广泛应用于服务器、开发环境和嵌入式系统等领域。日常使用 Linux,掌握常见的基本指令至关重要&a…

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

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

EP1 banner海报swiper轮播器

文件路径&#xff1a; E:/homework/uniappv3tswallpaper/pages/index/index.vue <template><view class"homeLayout"><view class"banner"><swiper :indicator-dots"true" :autoplay"true" :interval"3000…

变量数据类型 Day3

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

script中的src

<script src"http://www.somewhere.com/afile.js"></script> 浏览器在解析这个资源时&#xff0c;会向 src 属性指定的路径发送一个 GET 请求&#xff0c;以取得相应资源&#xff0c;假定 是一个 JavaScript 文件。这个初始的请求不受浏览器同源策略限…