vue elemnt-ui自定义时间日期选择

如图
在这里插入图片描述
先写个日期组件 DateRangePicker/index.vue

<script>
import { DatePicker, DatePickerOptions } from 'element-ui'
import { calendarShortcuts } from '@/utils/shortcuts'

export default {
  name: 'DateRangePicker',
  mixins: [DatePicker],
  props: {
    type: {
      type: String,
      default: 'datetimerange'
    },
    valueFormat: {
      type: String,
      default: 'yyyy-MM-dd HH:mm:ss'
    },
    defaultTime: {
      type: Array,
      default: _ => ['00:00:00', '23:59:59']
    },
    pickerOptions: {
      type: DatePickerOptions,
      default: _ => {
        return { shortcuts: calendarShortcuts }
      }
    },
    size: {
      type: String,
      default: 'small'
    },
    rangeSeparator: {
      type: String,
      default: ':'
    },
    startPlaceholder: {
      type: String,
      default: '开始日期'
    },
    endPlaceholder: {
      type: String,
      default: '结束日期'
    }
  }
}
</script>

核心代码 shortcuts.js

import Date from './datetime.js'

export const calendarBaseShortcuts = [{
  text: '今天',
  onClick(picker) {
    const startTime = new Date(new Date().setHours(0, 0, 0))
    const endTime = new Date(new Date().setHours(23, 59, 59))
    picker.$emit('pick', [startTime, endTime])
  }
}, {
  text: '昨天',
  onClick(picker) {
    const startTime = new Date(new Date().daysAgo(1).setHours(0, 0, 0))
    const endTime = new Date(new Date().daysAgo(1).setHours(23, 59, 59))
    picker.$emit('pick', [startTime, endTime])
  }
}, {
  text: '最近一周',
  onClick(picker) { 
    const startTime = new Date(new Date().daysAgo(7).setHours(0, 0, 0))
    const endTime = new Date(new Date().setHours(23, 59, 59))
    picker.$emit('pick', [startTime, endTime])
  }
}, {
  text: '最近30天',
  onClick(picker) {
    const startTime = new Date(new Date().daysAgo(30).setHours(0, 0, 0))
    const endTime = new Date(new Date().setHours(23, 59, 59))
    picker.$emit('pick', [startTime, endTime])
  }
}, {
  text: '这个月',
  onClick(picker) {
    const startTime = new Date(new Date().monthBegin().setHours(0, 0, 0))
    const endTime = new Date(new Date().setHours(23, 59, 59))
    picker.$emit('pick', [startTime, endTime])
  }
}, {
  text: '本季度',
  onClick(picker) {
    const startTime = new Date(new Date().quarterBegin().setHours(0, 0, 0))
    const endTime = new Date(new Date().setHours(23, 59, 59))
    picker.$emit('pick', [startTime, endTime])
  }
}]

export const calendarMoveShortcuts = [{
  text: '‹ 往前一天 ',
  onClick(picker) {
    let startTime = new Date(new Date().daysAgo(1).setHours(0, 0, 0))
    let endTime = new Date(new Date().daysAgo(1).setHours(23, 59, 59))
    if (!picker.value) {
      picker.value = [startTime, endTime]
    }
    startTime = picker.value[0].daysAgo(1)
    endTime = picker.value[1].daysAgo(1)
    picker.$emit('pick', [startTime, endTime])
  }
}, {
  text: ' 往后一天 ›',
  onClick(picker) {
    let startTime = new Date(new Date().setHours(0, 0, 0))
    let endTime = new Date(new Date().setHours(23, 59, 59))
    if (!picker.value) {
      picker.value = [startTime, endTime]
    }
    startTime = picker.value[0].daysAgo(-1)
    endTime = picker.value[1].daysAgo(-1)
    picker.$emit('pick', [startTime, endTime])
  }
}, {
  text: '« 往前一周 ',
  onClick(picker) {
    let startTime = new Date(new Date().setHours(0, 0, 0))
    let endTime = new Date(new Date().setHours(23, 59, 59))
    if (!picker.value) {
      picker.value = [startTime.daysAgo(new Date().getDay()),
        endTime.daysAgo(new Date().getDay() + 1)]
    } else {
      picker.value = [picker.value[0].daysAgo(picker.value[0].getDay()),
        picker.value[1].daysAgo(picker.value[1].getDay() + 1)]
    }
    startTime = picker.value[0].daysAgo(7)
    endTime = picker.value[1]
    picker.$emit('pick', [startTime, endTime])
  }
}, {
  text: ' 往后一周 »',
  onClick(picker) {
    let startTime = new Date(new Date().setHours(0, 0, 0))
    let endTime = new Date(new Date().setHours(23, 59, 59))
    if (!picker.value) {
      picker.value = [startTime.daysAgo(new Date().getDay() - 7),
        endTime.daysAgo(new Date().getDay() - 6)]
    } else {
      picker.value = [picker.value[0].daysAgo(picker.value[0].getDay() - 7),
        picker.value[1].daysAgo(picker.value[1].getDay() - 6)]
    }
    startTime = picker.value[0]
    endTime = picker.value[1].daysAgo(-7)
    picker.$emit('pick', [startTime, endTime])
  }
}]

export const calendarShortcuts = [
  ...calendarBaseShortcuts,
  ...calendarMoveShortcuts
]

组件的使用
main.js中引入

// 时间组件
import DateRangePicker from '@/components/DateRangePicker'

Vue.component('DateRangePicker', DateRangePicker)

<date-range-picker   v-model="acceptTime" :clearable="false" :pickerOptions="pickerOptions"  style="width: 350px !important;margin-right: 10px;" class="date-item" />

好了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

了解Node.js

Node.js是一个基于V8引擎的JavaScript运行时环境&#xff0c;它允许JavaScript代码在服务器端运行&#xff0c;从而实现后端开发。Node.js的出现&#xff0c;使得前端开发人员可以利用他们已经掌握的JavaScript技能&#xff0c;扩展技能树并成为全栈开发人员。本文将深入浅出地…

双系统解决开机提示security Policy Violation的方法

最近&#xff0c;Windows系统更新后&#xff0c;发现电脑开机无法进入桌面&#xff0c;显示“Verifiying shim SBAT data failed: security Policy Violation; So mething has gone seriously Wrong: SBAT self-check failed: Security Policy Violation”的英文错误信息。为了…

关于扫描模型 拓扑 和 传递贴图工作流笔记

关于MAYA拓扑和传递贴图的操作笔记 一、拓扑低模: 1、拓扑工作区位置: 1、准备出 目标 高模。 (高模的状态如上 ↑ )。 2、打开顶点吸附,和建模工具区,选择四边形绘制. 2、拓扑快捷键使…

工业 4G 路由器赋能远程医疗,守护生命线

在医疗领域&#xff0c;尤其是偏远地区的医疗救治场景中&#xff0c;工业 4G 路由器正发挥着无可替代的关键作用&#xff0c;宛如一条坚韧的 “生命线”&#xff0c;为守护患者健康持续赋能。 偏远地区医疗资源相对匮乏&#xff0c;常常面临着专业医生短缺、诊疗设备有限等困境…

MT6835天玑6100平台规格参数_MTK联发科安卓核心板方案定制开发

联发科MT6835平台集成了蓝牙、FM、WLAN 和 GPS 模块&#xff0c;是一个高度集成的基带平台。该芯片集成了两个 Arm Cortex-A76 内核&#xff08;运行频率高达 2.2GHz&#xff09;、六个 Arm Cortex-A55 内核&#xff08;运行频率高达 2.0 GHz&#xff09;和强大的多标准视频编解…

【Linux】Linux软件包管理

一、deb格式安装包 1.1 使用dpkg命令安装.deb安装包 deb格式的安装包通常用于Ubuntu操作系统&#xff0c;可以通过dpkg命令安装deb文件 我们当前目录下有一个QQ音乐的.deb安装包&#xff0c;我们通过dpkg命令安装一下 sudo dpkg -i qqmusic_88724.deb 安装完成后&#xff0…

使用Docker模拟PX4固件的无人机用于辅助地面站开发

前言 最近在制作鸿蒙无人机地面站&#xff0c;模仿的是QGroundControl&#xff0c;协议使用mavlink&#xff0c;记录一下本地模拟mavlink协议通过tcp/udp发送 废话不多说直接上命令 1.启动docker的桌面端 启动之后才能使用docker命令来创建容器 docker run --rm -it jonas…

Reinforcement Learning (李宏毅) 机器学习 2023 Spring HW12 (Boss Baseline)

1. Reinforcement Learning (强化学习)简介 1.1 什么是强化学习 强化学习是一种机器学习方法,它训练智能体在环境中采取行动,以最大化累积奖励。智能体通过试错与环境互动,学习哪些行动会带来奖励(正反馈),哪些行动会导致惩罚(负反馈)。通过不断地学习和调整策略,…

# Java 发送电子邮件示例

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…

滤波电路学习笔记(一)——速通低通、高通、带通、带阻等滤波电路的基本认知

前言 &#xff1a;原稿写了一大段&#xff0c;感觉车轱辘话太多了&#xff0c;还是速通一下吧&#xff0c;本文作为初学者笔记内容&#xff0c;供遗忘时查阅&#xff0c;有不足或侵权之处&#xff0c;敬请指出。 一、基本概念与作用 滤波电路&#xff1a;对于信号频率具有选择…

Unity打包+摄像机组件

转换场景 使用程序集&#xff1a;using UnityEngine.SceneManagement; 切换场景相关代码&#xff1a;SceneManager.LoadScene(1);//括号内可放入场景名称&#xff0c;场景索引等 //Application.LoadLevel(""); 老版本Unity加载场景方法 打包相关 Bundle Identi…

【游戏设计原理】58 - 主题

一、理解这里的游戏主题 1. 什么是游戏的主题呢&#xff1f;用一句话描述。 游戏主题是游戏所要传达的中心思想。 2. Theme 和 Message 的区别 特性主题&#xff08;Theme&#xff09;主旨&#xff08;Message&#xff09;定义是游戏围绕的上下文或背景&#xff0c;指游戏的…

26、【OS】【Nuttx】用cmake构建工程

背景 之前wiki 14、【OS】【Nuttx】Nsh中运行第一个程序 都是用 make 构建&#xff0c;准备切换 cmake 进行构建&#xff0c;方便后续扩展开发 Nuttx cmake 适配 nuttx项目路径下输入 make distclean&#xff0c;清除之前工程配置 adminpcadminpc:~/nuttx_pdt/nuttx$ make …

donet (MVC)webAPI 的接受json 的操作

直接用对象来进行接收&#xff0c;这个方法还不错的。 public class BangdingWeiguiJiluController : ApiController{/// <summary>/// Json数据录入错误信息/// </summary>/// <param name"WeiguiInfos"></param>/// <returns></r…

从预训练的BERT中提取Embedding

文章目录 背景前置准备思路利用Transformer 库实现 背景 假设要执行一项情感分析任务&#xff0c;样本数据如下 可以看到几个句子及其对应的标签&#xff0c;其中1表示正面情绪&#xff0c;0表示负面情绪。我们可以利用给定的数据集训练一个分类器&#xff0c;对句子所表达的…

Kafka 会丢消息吗?

目录 01 生产者(Producer) 02 消息代理(Broker) 03 消费者(Consumer) 来源:Kafka 会丢消息吗? Kafka 会丢失信息吗? 许多开发人员普遍认为,Kafka 的设计本身就能保证不会丢失消息。然而,Kafka 架构和配置的细微差别会导致消息的丢失。我们需要了解它如何以及何时…

RPM包安装Nginx部署Zr.Admin Vue2前端

0、确认node环境 安装node 参考Linux Red Hat安装包安装nodejs 设置 registry 执行 npm set registry https://registry.npmmirror.com/ 1、安装依赖 进入代码根目录 cd /lsp/code/zradmin/ZR.Vue 安装依赖 执行 npm install 最后生成node_modules文件夹 2、测试运行 …

【SpringBoot】入门

【SpringBoot】入门 一、前言1 什么是 Spring Boot ?2 特点与优势3 发展历程 二、项目构建【基于IDEA】1 创建 Spring Boot 项目2 项目结构3 运行 Spring Boot 项目 三、补充1 Maven操作2 项目打 jar 包在本地运行 一、前言 1 什么是 Spring Boot ? Spring Boot最开始基于S…

如何在本地部署大模型并实现接口访问( Llama3、Qwen、DeepSeek等)

如何在本地部署大模型并实现接口访问&#xff08; Llama3、Qwen、DeepSeek等&#xff09; 如何在本地部署大模型并实现接口访问&#xff08; Llama3、Qwen、DeepSeek等&#xff09;模型地址模型下载模型部署指定显卡运行app.py 运行环境requirements 调用接口代码调用 结语 如何…

vmware-ubuntu22.04配置虚拟机win10,重新上网成功

打开问题显示 Hardware配置 Options配置 最后的Advanced&#xff0c;第一次用了BIOS&#xff0c;然后启动中有更新&#xff0c;然后关闭&#xff0c;再用UEFI启动