基于Element组件库,实现任意年份十二月份日历平铺
成果展示
01 年份选择
利用年份选择器获得相应年份的日历
02 十二个月份平铺
03 点击事件
点击日历中的任意一天,可以下载该日的报告
实现代码
01 calendar 插件实现
01 日历
HTML
利用 v-model 来给日历绑定相应的年月,例如:父组件中传送的value值 :value=“new Date(year.getFullYear(),0)” ,其中year.getFullYear()指的是年份选择器传送回来的值中的年份,假如这个值是2022,new Date(2022,0)表示的是得到2022年一月的时间;:first-day-of-week=7 表示将周日指定为一周最开始的一天
<template >
<div id="calendar">
<div class="wrapper my-calendar">
<div class="title" >{
{
month}} {
{
year}} </div>
<el-calendar
v-model="value"
:first-day-of-week=7
style="width:22.5vw;position:relative;border:1px solid rgba(20,20,20,.3) ;border-radius: 1%;"
>
<template v-slot:dateCell="{ data }" >
<div class="date-cell" @click.stop="click(data)" >
<!-- 不要修改div.date-cell的样式,样式已在style.css定义 -->
<!-- 修改显示日期单元格的样式,请修改div.content的样式 -->
<!-- 单元格点击事件请定义在div.date-cell上,防止点击事件向上传播触发组件默认事件(切换月份) -->
<div class="content" > {
{
data.day.split('-').slice(2)[0] }}</div>
</div>
<!-- <span>{
{
date}}</span> -->
</template>
</el-calendar>
</div>
JavaScript
父组件需要向日历插件中传递以下四个值
props:{
value:String,
year:Number,
month:String,
num:Number,
},
CSS
在 Eelement 组件库中,Calendar 日历组件,还有其他的默认样式,比如切换月份等,在本例中是不需要的,需要禁用;同时调整日历中的样式。
/* 不显示上个月/今天/下个月按钮 */
.my-calendar .el-calendar .el-button.el-button--plain.el-