element日历插件获取显示的第一天和最后一天

2023-09-22 11:10:05

和重置日期内容显示

需求是要传入当前显示的第一天和最后一天来获取范围,再判断某个日期是否有内容标记

已知星期排版是固定的,第一天是星期天,最后一天是星期六。通过当月1号和最后一天再往前推算需要展示上个月几天,和下个月几天。

// 获取日历显示时间范围
const getRange = (date) => {
	// 日历第一天
	let firstDay = '';
	// 日历最后一天
	let lastDay = '';
	// 今天
	const today = date ? date : new Date()
	// 上月
	const m = today.getMonth()
	// 本月
	const cm = m + 1
	// 下月
	const lm = m + 2 > 12 ? 1 : m + 2
	// 要显示的本月
	const currentMonth = cm < 10 ? '0' + cm : cm
	// 要显示的本本年
	const currentYear = today.getFullYear()
	// 要显示的上个月的年份,m = 0 则当前1月,上月则是去年12月
	const prevYear = m == 0 ? currentYear - 1 : currentYear
	const prevMonth = m == 0 ? 12 : m < 10 ? '0' + m : m
	// 上个月天数
	const pmd = new Date(prevYear, m, 0).getDate()
	// 下个月的年份,当前12月,则需要加一年
	const lastYear = cm + 1 > 12 ? currentYear + 1 : currentYear
	const lastMonth = lm < 10 ? '0' + lm : lm
	// 1号是周几
	const firstWeek = new Date(today.setDate(1)).getDay()
	// 如果是周日,则不需要显示上个月
	if (firstWeek == 0) {
		firstDay = `${currentYear}-${currentMonth}-01`
	}
	// 其他周几,对应用上个月的天数往前推算
	else {
		firstDay = `${prevYear}-${prevMonth}-${pmd - (firstWeek - 1)}`
	}
	// 这个月天数
	const currentMonthDate = new Date(currentYear, cm, 0).getDate()
	// 最后一天是周几
	const lastWeek = new Date(today.setDate(currentMonthDate)).getDay()
	// 周六显示当月最后一天
	if (lastWeek == 6) {
		lastDay = `${currentYear}-${currentMonth}-${currentMonthDate}`
	}
	// 其他周几,对应往后推算
	else {
		const day = ['06', '05', '04', '03', '02', '01']
		lastDay = `${lastYear}-${lastMonth}-${day[lastWeek]}`
	}
	console.log('第一天', firstDay)
	console.log('最后一天', lastDay)
}

这个日历插件右上角的按钮上个月下个月事件,切换后默认是那月1号,传入这个时间就可以重新获得切换后的月份的时间范围,用v-model绑定切换后的数据

<el-calendar v-model="calendar">
	<template #date-cell="{ data }">
		<el-popover v-if="list[data.day]" placement="top-start" :width="200" trigger="hover" :content="list[data.day].workCalendar.content">
			<template #reference>
				<div class="date-cont" @click="handleOpen(data), list[data.day]">
					{{ data.day.split('-')[2] }}
				    <el-icon>
						<Star />
				    </el-icon>
				</div>
			</template>
		</el-popover>
		<p v-else class="date-cont" @click="handleOpen(data)">
			{{ data.day.split('-')[2] }}
		</p>
	</template>
</el-calendar>

watch监听变动来做事件

// 获取当前点击上下月按钮后的变化
watch(calendar, (n, o) => {
	getRange(n)
});

更多推荐

es6新语法特性+vue2的学习笔记

1.es6ECMA的第6版,15年发布,规定新的语法特性2.let声明变量varlet声明的变量会越狱声明的变量有严格的作用域可以声明多次只能声明一次会变量提升==(未声明的变量不会报错)==不会变量提升代码案例:<script>//{//vara=1;//letb=2;//}//console.log(a);////

2023/9/21 -- C++/QT

一、QT连接OpenCV库完成人脸识别1.1相关的配置1>该项目所用环境:qt-opensource-windows-x86-mingw491_opengl-5.4.02>配置opencv库路径:1、在D盘下创建一个opencv的文件夹,用于存放所需材料2、在opencv的文件夹下创建一个名为:opencv3.4-qt

【Java】泛型 之 什么是泛型

什么是泛型泛型是一种“代码模板”,可以用一套代码套用各种类型。在讲解什么是泛型之前,我们先观察Java标准库提供的ArrayList,它可以看作“可变长度”的数组,因为用起来比数组更方便。实际上ArrayList内部就是一个Object[]数组,配合存储一个当前分配的长度,就可以充当“可变数组”:publicclass

HT for Web (Hightopo) 使用心得(7)- 3D场景环境配置(阴影,灯光,环境光)

在文章《Graph3dView环境配置-天空球,雾化,辉光,景深》中,我们介绍了在3D场景中的一些环境配置,包括天空球,雾化,辉光,景深等。本篇文章我们继续补充其他的环境参数:阴影灯光环境光由于本人缺乏艺术细胞,文章中配置的环境参数仅为了说明效果及如何实现。如果由专业的设计师相信会调配出更加赏心悦目的效果。阴影:阴影即

[C++] Reference

C++中引用(Reference)引用是C++中的一个重要概念,它允许您使用一个已存在的变量名来引用另一个变量的值,而无需创建新的变量。以下是有关C++引用的一些关键点:**1.声明引用:**引用通过`&`符号声明,例如:`int&ref=x;`,其中`ref`是一个对整数`x`的引用。**2.别名:**引用可以被看作

走进JVM的内存模型

1、概述:我们在用Java语言进行编程时,并没有像C/C++程序这样为每一个new操作去写对应的delete/free操作。这得益于Java程序把内存控制权利交给JVM虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。2、JVM内存模型:JVM虚拟机在执行

基于AR增强现实模拟离心泵结构拆装与运行

通过AR模拟,学生可以虚拟地观察离心泵的结构和部件,进行拆装、安装和调试的操作,而无需实际接触物理设备。这极大地降低了学生操作过程中的风险。AR模拟离心泵的拆装过程可以分为几个步骤。首先,学生选择相应的模拟程序,然后通过平板/手机所显示的虚拟画面来观察离心泵的结构和部件。在模拟拆装过程中,学生可以用手势操作来选择需要拆

Mixin 混入

Mixin混入混入(mixin)提供了一种非常灵活的方式,来分发Vue组件中的可复用功能。一个混入对象可以包含任意组件选项。当组件使用混入对象时,所有混入对象的选项将被“混合”进入该组件本身的选项。怎么理解呢,就是每一个组件都会有一些选项data、computed、methods…对吧,假设我有10个组件,每一个组件内

RabbitMQ及各种模式

目录一、MQ的基本概念1.1MQ概述1.2MQ的优势和劣势1.3MQ的优势1.应用解耦2.异步提速3.削峰填谷1.4MQ的劣势小结1.5常见的MQ产品1.6RabbitMQ简介1.7JMS小结二、RabbitMQ管控台三、HelloWorld简单模式​编辑1、生产者​编辑2、消费者​编辑四、Workqueues工作队列

CRM软件系统维护客户的主要方法

客户的重要性,相信每一个做企业的人都非常清楚。为了维护好客户,很多企业都使用CRM客户管理系统,建立“以客户为中心”的经营理念,提高企业客户服务水平,进而在提高客户满意度的同时提高企业的盈利。那么,企业如何通过CRM系统维护客户?1、客户信息管理CRM作为客户管理系统,它的主要功能就是对客户信息的收集和管理。CRM系统

超全面的前端工程化配置指南

前端工程化配置指南本文讲解如何构建一个工程化的前端库,并结合GithubActions,自动发布到Github和NPM的整个详细流程。示例我们经常看到像Vue、React这些流行的开源项目有很多配置文件,他们是干什么用的?他们的Commit、Release记录都那么规范,是否基于某种约定?废话少说,先上图!上图标红就是

热文推荐