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

和重置日期内容显示

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

已知星期排版是固定的,第一天是星期天,最后一天是星期六。通过当月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) => {
	if (n.getFullYear() !== o.getFullYear() || n.getMonth() !== o.getMonth()) {
		getRange(n)
	}
});

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在Element UI中使用日历组件和表格组件来显示考勤信息。具体步骤如下: 1. 在页面中引入Element UI的日历组件和表格组件。 ```html <template> <div> <el-calendar v-model="date" :range="range" @change="handleChange"></el-calendar> <el-table :data="attendanceList" style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="date" label="日期"></el-table-column> <el-table-column prop="status" label="考勤状态"></el-table-column> </el-table> </div> </template> <script> import { Calendar, Table, TableColumn } from 'element-ui'; export default { components: { 'el-calendar': Calendar, 'el-table': Table, 'el-table-column': TableColumn }, data() { return { date: null, range: false, attendanceList: [ { name: '张三', date: '2021-05-01', status: '正常' }, { name: '李四', date: '2021-05-01', status: '迟到' }, { name: '王五', date: '2021-05-02', status: '旷工' }, { name: '赵六', date: '2021-05-02', status: '请假' }, ] }; }, methods: { handleChange() { // 根据日期筛选考勤信息并更新表格数据 // ... } } } </script> ``` 2. 使用日历组件和表格组件分别显示考勤日期和考勤状态。 在上面的示例中,我们通过`attendanceList`数组来存储考勤信息,包括姓名、日期和考勤状态。在页面中,我们使用日历组件来显示考勤日期,使用表格组件来显示考勤状态。当用户选择一个日期时,我们可以通过`handleChange`方法根据选择的日期来筛选考勤信息并更新表格数据。 3. 根据实际需求定制样式和功能。 以上示例只是一个简单的示例,可以根据实际需求来定制样式和功能。例如,可以在表格中显示考勤时间、迟到/早退时间、加班时间等详细的考勤信息,也可以添加搜索、排序、分页等功能来方便用户查找和管理考勤信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值