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

日历组件 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"><templateslot="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-popoverplacement="bottom"width="540"max-width="540"trigger="clickv-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.hqwc.cn/news/413962.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】安装 Nacos容器并根据Nginx实现负载均衡

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《Docker实战》。&#x1f3af;&#x1f3af; &…

Zookeeper简介

系列文章目录 Zookeeper安装教程 目录 一、Zookeeper简介 二、Zookeeper的数据结构 三、CPA理论 四、BASE 理论 五、ZooKeeper的特性 前言 这是我的学习笔记&#xff0c;以便后面翻阅。 一、Zookeeper简介 ZooKeeper是一个分布式的、开放源码的分布式应用程序协调服务&a…

JavaScript 入门手册

准备好快速学习 JavaScript了吗&#xff1f; 如果是&#xff0c;那么你需要这份 JavaScript 小抄。它以清晰、简洁和初学者友好的方式介绍了 JavaScript 的基础知识。 将它作为提高 JavaScript 技能的参考或指南。 让我们深入学习。 什么是 JavaScript&#xff1f; JavaSc…

Debian 11.8.0 安装图解

引导和开始安装 这里直接回车确认即可&#xff0c;选择图形化安装方式。 选择语言 这里要区分一下&#xff0c;当前选中的语言作为安装过程中安装器所使用的语言&#xff0c;这里我们选择中文简体。不过细心的同学可能发现&#xff0c;当你选择安装器语言之后&#xff0c;后续安…

应对日益增多的 OAuth SaaS 攻击的 3 种方法

OAuth 攻击呈上升趋势。去年12 月&#xff0c;微软威胁情报团队观察到威胁参与者滥用 OAuth 应用程序来接管云服务器并挖掘加密货币&#xff0c;在商业电子邮件泄露后建立持久性&#xff0c;并使用目标组织的资源和域名发起垃圾邮件活动。 什么是 OAuth&#xff08;开放授权&a…

Django初创shop应用

创建项目和应用 启动一个名为mysite的新项目&#xff0c;其中包含一个名为shop的应用程序。 打开shell并运行以下命令&#xff1a;django-admin startproject mysite cd myshop/ django-admin startapp shop 将shop应用程序添加到INSTALLED_APPS 编辑项目的settings.py文件&am…

QT quick基础:组件gridview

组件gridview与android中gridview布局效果相同。 一、下面记录qt quick该组件的使用方法。 方法一&#xff1a; // ContactModel.qml import QtQuick 2.0ListModel {ListElement {name: "1"portrait: "icons/ic_find.png"}ListElement {name: "2&quo…

十一、常用API——正则表达式

目录 练习1&#xff1a; 正则表达式的作用 正则表达式 字符类&#xff08;只匹配一个字符&#xff09; 预定义字符&#xff08;只匹配一个字符&#xff09; 数量词 类 Pattern 正则表达式的构造摘要 反斜线、转义和引用 字符类 行结束符 组和捕获 Unicode 支持 与…

CSS笔记II

CSS第二天笔记 复合选择器后代选择器子选择器并集选择器交集选择器伪类选择器 三大特性继承性层叠性优先级优先级-叠加计算规则 Emmet写法 背景属性背景图平铺方式位置缩放固定复合属性 显示模式转换显示模式 复合选择器 定义&#xff1a;由两个或多个基础选择器&#xff0c;通…

最终Docker6:nacos集群部署

目录 mysql容器构建 1.进入soft 文件夹&#xff0c;创建mysql文件夹 2.进入conf文件夹 放入my.conf 配置文件 3.运行mysql容器 4.进入script文件夹 导入 sql文件 5.进入mysql 容器 并登录 6.创建nacos 数据库并使用&#xff0c;运行nacos.sql文件 7.授予用户所有权限 部…

基于Prism框架的WPF前端框架开发《知产代理数字化解决方案》

最近新开发了一套WPF前端界面框架&#xff0c;叫《知产代理数字化解决方案》&#xff0c;采用了时下流行的Prism框架作为整个系统的基础架构&#xff0c;演示了Prism中的IRegionManager区域管理器、IDialogAware对话框、IDialogService对话框服务、IContainerExtension容器等用…

gitgud.io+Sapphire注册账号教程

gitgud.io是一个仓库&#xff0c;地址 https://gitgud.io/&#xff0c;点进去之后会看到注册页面。 意思是需要通过注册这个Sapphire账户来登录。点击右边的Sapphire&#xff0c;就跳转到Sapphire的登陆页面&#xff0c;点击创建新账号&#xff0c;就进入注册页面。&#xff0…