datepicker 时间快捷键、禁用日期

一、封装方法 

/*** 默认开始和结束时间* @type {string[]}*/
import dayjs from 'dayjs'
export const defaultTime = ['00:00:00', '23:59:59']
/*** 设置日期组件 快捷方式* @type {({onClick(*): void, text: string}|{onClick(*): void, text: string}|{onClick(*): void, text: string}|{onClick(*): void, text: string})[]}*/
export const shortcuts = [{text: '明天',onClick(picker) {const date = new Date()date.setTime(date.getTime() + 3600 * 1000 * 24)picker.$emit('pick', date)},},{text: '今天',onClick(picker) {picker.$emit('pick', new Date())},},{text: '昨天',onClick(picker) {const date = new Date()date.setTime(date.getTime() - 3600 * 1000 * 24)picker.$emit('pick', date)},},{text: '一周前',onClick(picker) {const date = new Date()date.setTime(date.getTime() - 3600 * 1000 * 24 * 7)picker.$emit('pick', date)},},
]/*** 日期 区间组件 快捷方式* @type {{shortcuts: [{onClick(*): void, text: string}, {onClick(*): void, text: string}, {onClick(*): void, text: string}]}}*/
export const shortcutsRange = [{text: '今天',onClick(picker) {let dayStart = new Date(new Date(new Date().toLocaleDateString()).getTime())let dayEnd = new Date(new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 -1)picker.$emit('pick', [dayStart, dayEnd])},},{text: '昨天',onClick(picker) {let dayStart = new Date(new Date(new Date().toLocaleDateString()).getTime() - 1 * 86400000)let dayEnd = new Date(new Date(new Date().toLocaleDateString()).getTime() - 1)picker.$emit('pick', [dayStart, dayEnd])},},{text: '本周',onClick(picker) {const dataValue = new Date()const year = dataValue.getFullYear()const month = dataValue.getMonth() + 1const day = dataValue.getDate()var thisWeekStart //本周周一的时间if (dataValue.getDay() == 0) {//周天的情况;thisWeekStart =new Date(year + '/' + month + '/' + day).getTime() -(dataValue.getDay() + 6) * 86400000} else {thisWeekStart =new Date(year + '/' + month + '/' + day).getTime() -(dataValue.getDay() - 1) * 86400000}const prevWeekStart = thisWeekStart //本周周一的时间const prevWeekEnd = thisWeekStart + 7 * 86400000 - 1 //本周周日的时间const start = new Date(prevWeekStart) //开始时间const end = new Date(prevWeekEnd) //结束时间picker.$emit('pick', [start, end])},},{text: '上周',onClick(picker) {const dataValue = new Date()const year = dataValue.getFullYear()const month = dataValue.getMonth() + 1const day = dataValue.getDate()var thisWeekStart //本周周一的时间if (dataValue.getDay() == 0) {//周天的情况;thisWeekStart =new Date(year + '/' + month + '/' + day).getTime() -(dataValue.getDay() + 6) * 86400000} else {thisWeekStart =new Date(year + '/' + month + '/' + day).getTime() -(dataValue.getDay() - 1) * 86400000}const prevWeekStart = thisWeekStart - 7 * 86400000 //上周周一的时间const prevWeekEnd = thisWeekStart - 1 //上周周日的时间const start = new Date(prevWeekStart) //开始时间const end = new Date(prevWeekEnd) //结束时间picker.$emit('pick', [start, end])},},{text: '本月',onClick(picker) {const end = getCurrentMonthLast()const start = getCurrentMonthFirst()picker.$emit('pick', [start, end])function getCurrentMonthFirst() {let date = new Date(new Date(new Date().toLocaleDateString()).getTime() - 1 * 86400000)date.setDate(1)return date}// 获取当前月的最后一天function getCurrentMonthLast() {var date = new Date()var currentMonth = date.getMonth()var nextMonth = ++currentMonthvar nextMonthFirstDay = new Date(date.getFullYear(), nextMonth, 1)return new Date(nextMonthFirstDay - 1)}},},{text: '上月',onClick(picker) {const end = gettimeEnd()const start = gettimeStart()picker.$emit('pick', [start, end])function gettimeStart() {const nowdays = new Date()let year = nowdays.getFullYear()let month = nowdays.getMonth()if (month === 0) {month = 12year = year - 1}if (month < 10) {month = '0' + month}let firstDayOfPreMonth = year + '-' + month + '-' + '01' + ' 00:00:00'firstDayOfPreMonth = firstDayOfPreMonth.toString()return new Date(firstDayOfPreMonth)}function gettimeEnd() {const nowdays = new Date()let year = nowdays.getFullYear()let month = nowdays.getMonth()if (month === 0) {month = 12year = year - 1}if (month < 10) {month = '0' + month}const lastDay = new Date(year, month, 0)let lastDayOfPreMonth =year + '-' + month + '-' + lastDay.getDate() + ' 23:59:59'lastDayOfPreMonth = lastDayOfPreMonth.toString()return new Date(lastDayOfPreMonth)}},},{text: '最近7天',onClick(picker) {const end = new Date()const start = new Date()start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)picker.$emit('pick', [start, end])},},{text: '最近一个月',onClick(picker) {const end = new Date()const start = new Date()start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)picker.$emit('pick', [start, end])},},{text: '最近三个月',onClick(picker) {const end = new Date()const start = new Date()start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)picker.$emit('pick', [start, end])},},{text: '最近半年',onClick(picker) {const end = new Date()const start = new Date()start.setMonth(start.getMonth() - 6)picker.$emit('pick', [start, end])},},{text: '最近一年',onClick(picker) {const end = new Date()const start = new Date()start.setFullYear(start.getFullYear() - 1)picker.$emit('pick', [start, end])},},
]/*** 日期 区间组件 快捷方式* @type {{shortcuts: [{onClick(*): void, text: string}, {onClick(*): void, text: string}, {onClick(*): void, text: string}]}}*/
export const shortcutsMonthRange = [{text: '本月',onClick(picker) {const end = new Date()const start = new Date()picker.$emit('pick', [start, end])},},{text: '今年至今',onClick(picker) {const end = new Date()const start = new Date(new Date().getFullYear(), 0)picker.$emit('pick', [start, end])},},{text: '最近六个月',onClick(picker) {const end = new Date()const start = new Date()start.setMonth(start.getMonth() - 6)picker.$emit('pick', [start, end])},},
]/*** 控制 只显示 今天之前的日期* @param time* @returns {boolean}*/
export const disabledTomorrowAfter = (time) => {return (time.getTime() >=new Date(new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 -1).getTime())
}export const disabledBeforeMonth = function (time) {return dayjs().subtract(3, 'month') >= time || time >= dayjs()
}
export const disabledBefore12Month = function (time) {return dayjs().subtract(12, 'month') >= time || time >= dayjs()
}export const disabledTodayBefore = (time) => {return (time.getTime() <=new Date(new Date(new Date().toLocaleDateString()).getTime() +24 * 60 * 60 * 1000 -1).getTime())
}export const disabledMonthAfter = (time) => {return (time.getFullYear() > new Date().getFullYear() ||(time.getFullYear() === new Date().getFullYear() &&time.getMonth() > new Date().getMonth()))
}export const getLastDayOfMonth = (time) => {return time.get
}// 禁用今天及今天以后的日期
export const disabledTodayAfter = (time) => {return time.getTime() > Date.now() - 24 * 3600 * 1000
}// 禁用本月以及本月以后的月份
export const disabledMonthAndAfter = (time) => {return time.getTime() > Date.now() - dayjs().daysInMonth() * 24 * 3600 * 1000
}// 只显示今天以及今天以前一周的日期
export const displayTodayBeforeWeek = (time) => {// 当前时间是否在8点前,默认昨天,8点后,默认今天let isBeforeEight = dayjs(dayjs().format('YYYY-MM-DD HH:mm:ss')).isBefore(dayjs().format('YYYY-MM-DD 08:00:00'))let lessThanEight =time.getTime() > Date.now() ||time.getTime() < Date.now() - 7 * 24 * 3600 * 1000let moreThanEight =time.getTime() > Date.now() - 24 * 3600 * 1000 ||time.getTime() < Date.now() - 8 * 24 * 3600 * 1000return isBeforeEight ? moreThanEight : lessThanEight
}

二、使用

<template>       <el-date-pickersize="small"v-model="date2"type="daterange"format="yyyy-MM-dd"value-format="yyyy-MM-dd"range-separator="至"start-placeholder="开始日期"end-placeholder="结束日期":clearable="false":picker-options="datepickerOptions"@change="date2Change"></el-date-picker>
</template><script>
import { displayTodayBeforeWeek,shortcuts } from '@/utilbiz/datepicker.js'export default {data() {return {datepickerOptions: {// 禁用日期disabledDate(time) {return displayTodayBeforeWeek(time)// 时间快捷键shortcuts:shortcuts},},}}
}
</script>

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

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

相关文章

JavaWeb后端基础知识(1)包括(SpringBoot,HTTP,Web 服务器,请求,响应,分层解耦)

JavaWeb后端基础知识&#xff08;1&#xff09; 包括&#xff08;SpringBoot&#xff0c;HTTP&#xff0c;Web 服务器&#xff0c;请求&#xff0c;响应&#xff0c;分层解耦&#xff09; 目录 JavaWeb后端基础知识&#xff08;1&#xff09; 一.SpringBoot 1.SpringBogtWe…

verilog基础语法之表达式

verilog基础语法之表达式 1、操作数2、操作符3、示例 在Verilog中&#xff0c;表达式是由操作数和操作符组成的组合&#xff0c;包括&#xff1a;算术操作符、关系操作符、等价操作符、逻辑操作符、按位操作符、归约操作符、移位操作符、拼接操作符和条件操作符&#xff0c;它们…

学习java第六十六天

Spring 中的 bean 的作用域有哪些? singleton : 唯一 bean 实例&#xff0c;Spring 中的 bean 默认都是单例的。 prototype : 每次请求都会创建一个新的 bean 实例。 request : 每一次HTTP请求都会产生一个新的bean&#xff0c;该bean仅在当前HTTP request内有效。 sessio…

GT2505HS-VTBD 三菱触摸屏手持式5.7寸型

GT2505HS-VTBD 三菱触摸屏手持式5.7寸型 GT2505HS-VTBD参数,GT2505HS-VTBD用户手册,GT2505HS-VTBD使用手册GT2505HS-VTBD参数说明&#xff1a;手持式5.7吋型&#xff0c;VGA 640*480&#xff0c;TFT彩色液晶屏,65536色,内存32MB&#xff0c;DC24V,内置以太网接口。 GT2505HS-VT…

agiletc部署

数据库创建及运行 启动命令 cd /AgileTC/case-server&& nohup mvn spring-boot:run &查看是否启动成功 http://192.168.101.:8094/case/caseList/1需要安装java javac等 一、安装java 1 安装java11 sudo yum install java-11-openjdk-devel -y2 切换到java11 …

【零基础】system generator①设置卡解析

1.在matlab中我们输入的是双精度浮点型数据&#xff0c;经过gateway后变成定点型。十六位十四个小数位&#xff0c;整个数据有十六位&#xff0c;其中十四位给了小数 2.fixed-point定点型&#xff1b;signed有符号&#xff1b;2’s comp补码 3.量化误差 truncate&#xff0c;舍…

同时安装多个nodejs版本可切换使用,或者用nvm管理、切换nodejs版本(两个详细方法)

目录 一.使用nvm的方法&#xff1a; 1.卸载nodejs 2.前往官网下载nvm 3.安装nvm 4.查看安装是否完成 5.配置路径和淘宝镜像 6.查看和安装各个版本的nodejs 7.nvm的常用命令 二.不使用nvm&#xff0c;安装多个版本&#xff1a; 1.安装不同版本的nodejs 2.解压到你想放…

Ubuntu 22.04 下,VS Code 配置 C++ 编译及 CMake

一、VS Code 安装以及 C 编译环境配置 1. 在 Ubuntu 中安装 VS Code 笔者直接在 Ubuntu Software 中心安装 VS Code。也可以从VS Code官网下载 deb&#xff0c;解压 dpkg -i 安装。 2. VS Code 中配置 g/gcc 1) 安装 C/C 扩展 &#xff08;CtrlShiftX&#xff09; 2&#x…

差速机器人模型LQR 控制仿真(c++ opencv显示)

1 差速机器人状态方程构建 1.1差速机器人运动学模型 1.2模型线性化 1.3模型离散化 2离散LQR迭代计算 注意1&#xff1a;P值的初值为Q。见链接中的&#xff1a; 注意2&#xff1a;Q, R参数调节 注意3&#xff1a;LQR一般只做横向控制&#xff0c;不做纵向控制。LQR输出的速度…

辅助阅读代码

辅助代码工具&#xff1a; 1、sourcetrail 2、valgrind &#xff0c; qcachegrind sourcetrail&#xff0c;可以生成类图&#xff0c;以及类之间&#xff0c;函数之间的调用关系 1、安装 2、使用该工具需要使用cmake 编译一次 cmake -DCMAKE_EXPORT_COMPILE_COMMANDSON 其他…

手机同步与数据安全:让手机和电脑完美结合!

在当今这个高度信息化的社会&#xff0c;手机和电脑不仅为我们提供了丰富的信息资源&#xff0c;让我们能够随时随地获取所需的信息&#xff0c;还为我们的生活带来了极大的便利。无论是工作、学习还是娱乐&#xff0c;手机和电脑都发挥着至关重要的作用。 然而&#xff0c;随…

XMLHttpRequest与Axios详解

XMLHttpRequest发送请求 在JavaScript中&#xff0c;使用XMLHttpRequest()发送多个参数通常涉及到设置HTTP请求的Content-Type头部&#xff0c;并且将参数作为请求体的一部分发送。以下是一个示例&#xff0c;展示了如何发送包含多个参数的POST请求&#xff1a; var xhr new X…

Paddle 实现DCGAN

传统GAN 传统的GAN可以看我的这篇文章&#xff1a;Paddle 基于ANN&#xff08;全连接神经网络&#xff09;的GAN&#xff08;生成对抗网络&#xff09;实现-CSDN博客 DCGAN DCGAN是适用于图像生成的GAN&#xff0c;它的特点是&#xff1a; 只采用卷积层和转置卷积层&#x…

nvm切换node版本命令

nvm切换node版本命令 使用 nvm 切换 Node.js 版本的命令如下&#xff1a;12 查看 nvm 支持安装的 Node 版本。进入命令行界面&#xff0c;输入 nvm list available&#xff0c;这会显示可以安装的 Node.js 版本。安装指定版本的 Node.js。输入 nvm install <版本号>&…

优先队列——大小堆—— priority_queue

本人博客主页 本篇博客相关博客 二叉树--讲解 文章目录 目录 文章目录 前言 一、priority_queue是什么&#xff1f; 二、priority_queue的使用 1、相关函数 2、代码使用 3、堆的插入删除 三、模拟实现 1、大框架 2、仿函数 3、向下调整 4、向下调整 总结 前言 在我们学习二叉…

免费SSL证书怎么签发

大家都知道SSL证书好&#xff0c;作用大&#xff0c;安全性高&#xff0c;能加权重&#xff0c;等保必须的参考值。但是如何选择合适且正确的证书也是至关重要的&#xff0c;网站更适合单域名证书、多域名证书、泛域名证书、还是多域名通配符证书。 首先大家要清楚&#xff0c…

网站访问提示不安全怎么办??

当网站访问时提示“不安全”&#xff0c;这通常与网站的SSL证书有关&#xff0c;或者是网站本身存在一些安全风险。以下是一些解决步骤和建议&#xff1a; 1、检查URL前缀&#xff1a;首先&#xff0c;检查URL是否以https://开头。如果仍然是http://&#xff0c;则网站没有使用…

python 新特性

文章目录 formatted字符串字面值formatted字符串支持 字符串新方法变量类型标注二进制表示中数字为1的数量统计字典的三个方法新增mapping属性函数zip()新增strict参数dataclass字典合并match 语法 formatted字符串字面值 formatted字符串是带有’f’字符前缀的字符串&#xf…

HashMap在JDK1.8的优化

目录 数据结构上的优化 Hash碰撞问题解决方案的优化 Hash值算法的优化

我必须要吹一波MATLAB 2024a,太牛逼了!|福利:附安装教程及下载地址

最近逛MATLAB官网&#xff0c;发现MATLAB 2024a版本已经Pre-release了&#xff0c;翻了下release note&#xff0c;不得不感叹&#xff0c;实在是太强了&#xff01; 这次重点更新了四个工具箱&#xff1a; Computer Vision Toolbox Deep Learning Toolbox Instrument Contro…