Vue中的日历组件 Calendar 实现 考勤打卡记录

news2024/9/24 9:26:30

日历组件 Calendar 可以自定义在页面添加内容。

实现效果图
在这里插入图片描述
在这里插入图片描述

1.由于Calendar没有右上角月份切换的API事件,可以给组件源码添加自定义添加一个事件
在这里插入图片描述
在这里插入图片描述
2.也可以通过自带的input事件来获取日历
在这里插入图片描述
3.vue页面完整代码
注释:this.$m(this.beginTime).format(‘YYYY-MM-DD HH:mm’),是分装的标准时间转化年月日,使用者可通过多种方法自定义处理。

<template>
	<div>
		<!-- 日历组件 -->
		<el-calendar
			:events="tableData"
			:date-format="'yyyy-MM-dd'"
			:time-format="true"
			:time-区间步长="30"
			@date-change="getDateChange"
			style="height:95%;overflow:scroll"
		>
			<template
				slot="dateCell"
				slot-scope="{date, data}"
				>
				<p :class="dateFormatter(date)">
					{{ data.day.split('-').slice(1).join('-') }}
				</p>
				<div v-if="result[$m(date).format('YYYY-MM-DD')] " class="chockIn">
					<p v-if="result[$m(date).format('YYYY-MM-DD')].length >= 2">上班:{{ result[$m(date).format('YYYY-MM-DD')][result[$m(date).format('YYYY-MM-DD')].length-1].checkInTime }}</p> 
					<p v-if="result[$m(date).format('YYYY-MM-DD')].length >= 2" style="margin-top:5px;">下班:{{ result[$m(date).format('YYYY-MM-DD')][0].checkInTime }}</p> 
					<el-popover
						placement="bottom"
						width="540"
						max-width="540"
						trigger="click
						v-if="result[$m(date).format('YYYY-MM-DD')].length > 2"
					>
						<el-table :data="result[$m(date).format('YYYY-MM-DD')]">
							<el-table-column align="center" type="index" width="60" label="序号"></el-table-column>
							<el-table-column prop="clockTime" align="left" label="打卡时间" width="180">
								<template slot-scope="scope">
									{{ $m(scope.row.clockTime).format('YYYY-MM-DD HH:mm') }}
								</template>
							</el-table-column>
							<el-table-column width="300" property="site" label="地址" show-overflow-tooltip></el-table-column>
						</el-table>
						<p class="navMore"  slot="reference">展示更多</p> 
					</el-popover>
				</div>
				<p class="absenceFromDuty" v-if="($m(new Date()).format('YYYY-MM-DD') >= $m(date).format('YYYY-MM-DD'))">
					<span v-if="!result[$m(date).format('YYYY-MM-DD')] || result[$m(date).format('YYYY-MM-DD')].length < 2">{{dateFormatterText(date)}}</span>
				</p> 
			</template> 
		</el-calendar>
  	</div>
</template>

<script>

export default {
	data() {
		return {
			beginTime: '',
            endTime: '',
			newDate:'',
			nowDate:'',
			result:{},
			value: new Date(), // 当前日期
		}
	},
	created(){
		// 获取当前月第一天
		this.beginTime = this.$m().firstDay();
		this.beginTime = this.$m(this.beginTime).format('YYYY-MM-DD HH:mm')
		// 获取当前月最后一天
		this.endTime = this.$m().lastDay();
		this.endTime = this.$m(this.begiendTimenTime).format('YYYY-MM-DD 23:59')
    },
  	methods: {
		// 检查日期是否是周末
		dateFormatterText(date) {
			const dayOfWeek = date.getDay();
			if (dayOfWeek === 0 || dayOfWeek === 6) { // 0 是星期日,6 是星期六
				return ''; 
			}
			return '缺勤';
		},
		// 获取日历数据
		getDateChange(val){
			let date = val.split("-");
			date = date[0] + '-' + date[1];
			//打卡的年月
			if(date){
				// 开始时间
				let firstDay = this.$m(date).firstDay();
				this.beginTime = this.$m(firstDay).format('YYYY-MM-DD HH:mm')
				// 结束时间
				let lastDay = this.$m(date).lastDay();
				this.endTime = this.$m(lastDay).format('YYYY-MM-DD 23:59')
				// 获取每个月发月份下的打卡记录
				this.getClockLogList();
			}
		},
        // 获取打卡记录
		getClockLogList(){
		    // ...调用接口获取每个月的考勤打卡数据,赋值给 this.tableData
            // this.tableData = val;
		},
	}
}
</script>
<style lang="scss" scoped>
	.chockIn{
		margin-top:10px;
	}
	.absenceFromDuty{
		color: #c06817;
		margin-top:10px;
	}
	.navMore{
		margin-top:3px;
		color: #3370ff;
	}
    .weekend-highlight {
        color: #eb3333;
	}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux C语言socket函数recv

recv 函数是在 Linux C 语言网络编程中用于从已连接的套接字接收数据的函数。它通常与 TCP 连接一起使用&#xff0c;但也可以用于 UDP&#xff08;尽管对于 UDP&#xff0c;更常使用 recvfrom&#xff0c;因为它还可以接收发送方的地址信息&#xff09;。 函数原型 recv 函数…

【漏洞复现】Hikvision SPON IP网络对讲广播系统命令执行漏洞(CVE-2023-6895)

文章目录 前言声明一、系统简介二、漏洞描述三、影响版本四、漏洞复现五、修复建议 前言 Hikvision Intercom Broadcasting System是中国海康威视&#xff08;Hikvision&#xff09;公司的一个对讲广播系统。 声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播…

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter

在 wsl-ubuntu 里通过 docker 启动 gpu-jupyter 0. 背景1. 安装 docker-ce2. 安装 NVIDIA Container Toolkit3. 使用 nvidia-ctk 命令配置容器运行4. 通过 docker 运行 nvidia-smi5. 运行 gpu-jupyter6. 访问 gpu-jupyter7. 测试 gpu-jupyter 是否可以访问 cuda 0. 背景 今天突…

每日OJ题_算法_滑动窗口⑤_力扣904水果成篮

目录 力扣904. 水果成篮 解析及代码1&#xff08;使用容器&#xff09; 解析及代码2&#xff08;开数组&#xff09; 力扣904. 水果成篮 904. 水果成篮 - 力扣&#xff08;LeetCode&#xff09; 难度 中等 你正在探访一家农场&#xff0c;农场从左到右种植了一排果树。这…

stable-diffusion-webui 安装与运行

大家好&#xff0c;我是水滴~~ 本文主要介绍在各种显卡环境中&#xff0c;如何安装和运行 stable-diffusion-webui&#xff0c;包括&#xff1a;在 NVIDIA 显卡环境上安装、在 AMD 显卡环境上安装、在集显或小于 4G 显卡环境上安装。 文章目录 在 NVIDIA 显卡环境上安装下载配…

如何在业务代码中优雅使用责任链模式

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;为请求创建了一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中&#xff0c;通常每个接收者都包含对另一个接收者…

LLM:RoPE位置编码

论文&#xff1a;https://arxiv.org/pdf/2104.09864.pdf 代码&#xff1a;https://github.com/ZhuiyiTechnology/roformer 发表&#xff1a;2021 绝对位置编码&#xff1a;其常规做法是将位置信息直接加入到输入中&#xff08;在x中注入绝对位置信息&#xff09;。即在计算 q…

mysql原理--锁

1.解决并发事务带来问题的两种基本方式 上一章唠叨了事务并发执行时可能带来的各种问题&#xff0c;并发事务访问相同记录的情况大致可以划分为3种&#xff1a; (1). 读-读 情况&#xff1a;即并发事务相继读取相同的记录。 读取操作本身不会对记录有一毛钱影响&#xff0c;并不…

爬虫笔记(一):实战登录古诗文网站

需求&#xff1a;登录古诗文网站&#xff0c;账号&#xff0b;密码&#xff0b;图形验证码 第一&#xff1a;自己注册一个账号&#xff0b;密码哈 第二&#xff1a;图形验证码&#xff0c;需要一个打码平台&#xff08;充钱&#xff0c;超能力power&#xff01;&#xff09;或…

“GPC爬虫池有用吗?

作为光算科技的独有技术&#xff0c;在深入研究谷歌爬虫推出的一种吸引谷歌爬虫的手段 要知道GPC爬虫池是否有用&#xff0c;就要知道谷歌爬虫这一概念&#xff0c;谷歌作为一个搜索引擎&#xff0c;里面有成百上千亿个网站&#xff0c;对于里面的网站内容&#xff0c;自然不可…

网络爬虫采集工具

在当今数字化的时代&#xff0c;获取海量数据对于企业、学术界和个人都至关重要。网络爬虫成为一种强大的工具&#xff0c;能够从互联网上抓取并提取所需的信息。本文将专心分享关于网络爬虫采集数据的全面指南&#xff0c;深入探讨其原理、应用场景以及使用过程中可能遇到的挑…

php array_diff 比较两个数组bug避坑 深入了解

今天实用array_diff出现的异常问题&#xff0c;预想的结果应该是返回 "integral_initiate">"0"&#xff0c;实际没有 先看测试代码&#xff1a; $a ["user_name">"测","see_num">0,"integral_initiate&quo…

leetCode-42.接雨水

&#x1f4d1;前言 本文主要是【算法】——算法模拟的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句&#xff…

Go语言基础快速上手

1、Go语言关键字 2、Go数据类型 3、特殊的操作 3.1、iota关键字 Go中没有明确意思上的enum&#xff08;枚举&#xff09;定义&#xff0c;不过可以借用iota标识符实现一组自增常亮值来实现枚举类型。 const (a iota // 0b // 1c 100 // 100d // 100 (与上一…

H - Least Common Multiple H - 最小公倍数

题目 The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105. 一组正整数的最小公倍数 &#xff08;LCM&#xff09; 是最小的正整…

rabbitmq的介绍、使用、案例

1.介绍 rabbitmq简单来说就是个消息中间件&#xff0c;可以让不同的应用程序之间进行异步的通信&#xff0c;通过消息传递来实现解耦和分布式处理。 消息队列&#xff1a;允许将消息发到队列&#xff0c;然后进行取出、处理等操作&#xff0c;使得生产者和消费者之间能够解耦&…

使用 Kali Linux Hydra 工具进行攻击测试和警报生成

一、Hydra 工具和 Kali Linux 简介 在网络安全领域中&#xff0c;渗透测试是评估系统密码强度的重要组成部分。Hydra 是一款由黑客组织“The Hackers Choice”开发的开源登录破解工具&#xff0c;支持50多种协议。本教程将探索如何将 Hydra 与 Kali Linux 结合使用&#xff0c…

快快销ShopMatrix 分销商城多端uniapp可编译5端 - 升级申请(可自定义申请表单)

在企业或组织中&#xff0c;升级申请通常涉及到员工职位、权限、设备或者其他资源的提升或更新。创建一个可自定义的升级申请表单可以帮助更高效地收集和处理这类申请信息。以下是一个基本的步骤&#xff1a; 确定表单字段&#xff1a; 申请人信息&#xff1a;姓名、部门、职位…

【Spring Boot 3】【Redis】基本数据类型操作

【Spring Boot 3】【Redis】基本数据类型操作 背景介绍开发环境开发步骤及源码工程目录结构 背景 软件开发是一门实践性科学&#xff0c;对大多数人来说&#xff0c;学习一种新技术不是一开始就去深究其原理&#xff0c;而是先从做出一个可工作的DEMO入手。但在我个人学习和工…

priority_queue的使用与模拟实现(容器适配器+stack与queue的模拟实现源码)

priority_queue的使用与模拟实现 引言&#xff08;容器适配器&#xff09;priority_queue的介绍与使用priority_queue介绍接口使用默认成员函数 size与emptytoppush与pop priority_queue的模拟实现构造函数size与emptytoppush与pop向上调整建堆与向下调整建堆向上调整建堆向下调…