首页 > 其他分享 >elemenui datePicker 日期组件之快捷键的自定义,本周,本月,本季度,上周,上月,上季度

elemenui datePicker 日期组件之快捷键的自定义,本周,本月,本季度,上周,上月,上季度

时间:2023-09-04 09:23:53浏览次数:32  
标签:datePicker picker const 自定义 快捷键 Date new nowMonth nowYear

1,先定义一个日期工具类,或者写在其他的方法中都行。定义工具类可重复使用

 1  export function getDateRang(val) {
 2   const now = new Date(); // 当前日期
 3   const nowDayOfWeek = now.getDay(); // 今天是本周的第几天
 4   const nowDay = now.getDate(); // 当日
 5   const nowMonth = now.getMonth(); // 当月
 6   const nowYear = now.getFullYear(); // 当年
 7   const qt = Math.ceil((nowMonth + 1) / 3);
 8   let startTime;
 9   let endTime;
10   let customTime = [];
11   switch (val) {
12     case 'week': // 本周
13       startTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek + 1);
14       endTime = new Date(nowYear, nowMonth, nowDay + 7 - nowDayOfWeek);
15       break;
16     case 'month': // 本月
17       startTime = new Date(nowYear, nowMonth, 1);
18       endTime = new Date(nowYear, nowMonth + 1, 0);
19       break;
20     case 'quarter': // 本季度
21       startTime = new Date(nowYear, (qt - 1) * 3, 1);
22       endTime = new Date(nowYear, qt * 3, 0);
23       break;
24     case 'lastWeek': // 上周
25       startTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek - 6);
26       endTime = new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);
27       break;
28     case 'lastMonth': // 上月
29       startTime = new Date(nowYear, nowMonth-1, 1);
30       endTime = new Date(nowYear, nowMonth, 0);
31       break;
32     case 'lastQuarter': // 上季度
33       startTime = new Date(nowYear, qt, 1);
34       endTime = new Date(nowYear, qt + 3, 0);
35       break;
36     default: // 自定义时间
37       customTime = val.split(' - ');
38       break;
39     case 'yesterday': // 昨日
40       startTime = new Date(nowYear, nowMonth, nowDay - 1);
41       endTime = new Date(nowYear, nowMonth, nowDay - 1);
42       break;
43     case 'pastWeek': // 近 7 日
44       startTime = new Date(nowYear, nowMonth, nowDay - 6);
45       endTime = new Date(nowYear, nowMonth, nowDay);
46       break;
47     case 'pastMonth': // 近 31 日
48       startTime = new Date(nowYear, nowMonth, nowDay - 30);
49       endTime = new Date(nowYear, nowMonth, nowDay);
50       break;
51     case 'year': // 今年
52       startTime = new Date(nowYear, 0, 1);
53       endTime = new Date(nowYear, 11, 31);
54       break;
55   }
56   return customTime.length ? customTime : [startTime, endTime];
57 }

2,标签使用  :picker-options="pickerOptions",在渲染页面引入上面的方法

 1         <el-form-item label="日期选择" prop="date">
 2           <el-date-picker
 3             v-model="date"
 4             type="daterange"
 5             value-format="yyyy-MM-dd"
 6             style="width: 280px"
 7             align="left"
 8             unlink-panels
 9             range-separator="至"
10             start-placeholder="开始日期"
11             end-placeholder="结束日期"
12             :picker-options="pickerOptions">
13           </el-date-picker>

3,js部分,在data中设置方法

 1 pickerOptions: {
 2         shortcuts: [{
 3           text: '本周',
 4           onClick(picker) {
 5             const start = getDateRang('week')[0]
 6             const end = new Date()
 7             picker.$emit('pick', [start, end]);
 8           }
 9         }, {
10           text: '本月',
11           onClick(picker) {
12             const start = getDateRang('month')[0]
13             const end = new Date();
14             picker.$emit('pick', [start, end]);
15           }
16         }, {
17           text: '本季度',
18           onClick(picker) {
19             const start = getDateRang('quarter')[0]
20             const end = new Date();
21             picker.$emit('pick', [start, end]);
22           }
23         },{
24           text: '上周',
25           onClick(picker) {
26             const start = getDateRang('lastWeek')[0]
27             const end = getDateRang('lastWeek')[1]
28             picker.$emit('pick', [start, end]);
29           }
30         }, {
31           text: '上月',
32           onClick(picker) {
33             const start = getDateRang('lastMonth')[0]
34             const end = getDateRang('lastMonth')[1]
35             picker.$emit('pick', [start, end]);
36           }
37         }, {
38           text: '上季度',
39           onClick(picker) {
40             const start = getDateRang('lastQuarter')[0]
41             const end = getDateRang('lastQuarter')[1]
42             picker.$emit('pick', [start, end]);
43           }
44         }]
45       },

 

标签:datePicker,picker,const,自定义,快捷键,Date,new,nowMonth,nowYear
From: https://www.cnblogs.com/ghc520/p/17676052.html

相关文章

  • 如何正确实现一个自定义 Exception
    最近在公司的项目中,编写了几个自定义的Exception类。提交PR的时候,sonarqube提示这几个自定义异常不符合ISerializablepatten.花了点时间稍微研究了一下,把这个问题解了。今天在此记录一下,可能大家都会帮助到大家。自定义异常编写一个自定义的异常,继承自Exception,其中定......
  • springboot自动配置的原理和如何自定义starter
    一、springboot自动配置的原理使用springboot时的一大优点就是当需要引入一些第三方的框架时只需要引入一个对应的starter后springboot就会自动的完成配置,例如在springboot中使用mybatis只需要引入mybatis提供的starter.那么这种便捷的配置方式是如何实现的呢,要了解其中的原理......
  • uniapp项目实践总结(八)自定义加载组件
    有时候一个页面请求接口需要加载很长时间,这时候就需要一个加载页面来告知用户内容正在请求加载中,下面就写一个简单的自定义加载组件。目录准备工作逻辑思路实战演练效果预览准备工作在之前的全局组件目录components下新建一个组件文件夹,命名为q-loading,组件为q-loading......
  • asp.net restful ef core sqlite 自定义包的位置
    MagicVilla_VillaAPI/MagicVilla_VillaAPI.csproj<ProjectSdk="Microsoft.NET.Sdk.Web"><PropertyGroup><TargetFramework>net7.0</TargetFramework><Nullable>enable</Nullable><ImplicitUsings>e......
  • vue自定义事件用法及$emit
    子组件<template><button@click="handle">自定义事件</button></template><script>exportdefault{data(){return{message:"我子组件"}},methods:{handle(){......
  • 自定义CUDA实现PyTorch算子的四种简单方法
    背景在探索新的深度学习算法的时候,我们可能会遇到PyTorch提供的算子不能满足需求的情况,这时候就需要自定义PyTorch算子,将我们的算法集成到PyTorch的工作流中。同时,为了提高运算效率,算子往往都需要使用CUDA实现。所幸,PyTorch及很多其他Python库都提供了简化这一过程的方法,完全不需......
  • 删除鼠标右击的JetBrains系列软件[Open Folder as Pycharm]与其它相同情况快捷键
    删除鼠标右击的JetBrains系列软件与其它相同情况快捷键删除方法1首先通过Win+R,输入regedit,进入注册表2按照以下路径访问HKEY_CLASSES_ROOT\Directory\Background\shell\PyCharm3找到PyCharmCommunityEdition文件夹,删除即可具体操作方法如下1查看鼠标右键快捷键,......
  • 电脑键盘上的快捷键
    电脑键盘上的快捷键ctrl+c:复制ctrl+v:粘贴ctrl+A:全选ctrl+x:剪切ctrl+Z:撤销ctrl+S:保存Alt+F4:关闭窗口cmd打开cmd的方式开始+系统+命令提示符Win键+R输入cmd打开控制台(推荐使用)在任意的文件夹下面,摁住shift键+鼠标右键点击,在此处打开命令窗口......
  • VS和IDEA快捷键对比
    快速查找文件IDEA:Shift+ShfitVS:Ctrl+T注释 取消注释IDEA:Ctrl+/    Ctrl+/VS:组合键Ctrl+K,C组合键Ctrl+K,U最近开发文件IDEA:Ctrl+EVS:Ctrl+Tab格式化代码IDEA:Ctrl+Alt+lVS:组合键Ctrl+K,D智能提示IDEA:Ctrl+SpaceVS:Ctrl+J调试IDEA:F......
  • dotnet SemanticKernel 入门 自定义变量和技能
    本文将告诉大家如何在SemanticKernel框架内定义自定义的变量和如何开发自定义的技能本文属于SemanticKernel入门系列博客,更多博客内容请参阅我的博客导航自定义变量是一个非常有用的技能,自定义变量可以让炼丹师和程序员进行并行工作。由炼丹师对AI模型进行训练,从而找到对......