el-calendar制作考勤显示的一些心得

摘要:
用el-calendar来显示员工的考勤数据是再好不过的了,我们需要实现以下目标:1、可以正确显示员工每天的考勤2、全天打卡、半天打卡、迟到早退等需要在日历控件上以不同的颜色来表示3、点击el-calendar中的每一天时可以弹出当天打卡的详细时间网上找了很多资料,最后发现还是用遮罩层实现最方便最美观,CSS高手可以美化下遮罩层,让它上下左右居中,让它显示成一个圆形,我这显示的是个方块。

用el-calendar来显示员工的考勤数据是再好不过的了,我们需要实现以下目标:

1、可以正确显示员工每天的考勤

2、全天打卡、半天打卡、迟到早退等需要在日历控件上以不同的颜色来表示

3、点击el-calendar中的每一天时可以弹出当天打卡的详细时间

网上找了很多资料,最后发现还是用遮罩层实现最方便最美观,CSS高手可以美化下遮罩层,让它上下左右居中,让它显示成一个圆形,我这显示的是个方块。

后台查询某个员工时返回的考勤数据格式如下,

kaoqin:[{"":"01","日期":"2020-04-01 08:13:50;2020-04-01 18:09:11;","结果":"success"},{"":"02","日期":"2020-04-02 07:36:58;2020-04-02 18:06:56;","结果":"success"}]

一、日历控件的显示

1、第三行的CSS主要是让显示的day上下左右居中,以适应用户不同的缩放需求

2、第八行主要是为了让显示的tooltip提示数据换行,看上去更美观

3、10、11、12行是根据判断的条件来显示不同的遮罩层,主要是颜色不同。

1         <el-calendar v-model="value1"> 
2             <template slot="dateCell" slot-scope="{date, data}">
3                 <div style="position:relative;text-align:center;height:100%;align-items:center;display:flex;justify-content: center; ">
4                     {{data.day.split('-').slice(2)[0]}}
5                     <div v-for="(item,index) in kaoqin" :key="index+1">
6                         <div v-if="(item.天).indexOf(data.day)!=-1">
7                            <el-tooltip placement="top">
8                                 <div slot="content" v-html="ToHtml(item.日期)"></div>
9                                 <!-- <el-button :type="item.结果"  style="margin-top:5px;">{{ToJieGuo(item.结果)}}</el-button> -->
10                                 <div class="box-green" v-if="item.结果==='success'"></div>
11                                 <div class="box-yello" v-if="item.结果==='warning'"></div>
12                                 <div class="box-white" v-if="item.结果==='default'"></div>
13                            </el-tooltip>
14                         </div>
15                     </div>
16                 </div>
17             </template>
18         </el-calendar>
1 //把考勤结果转换成html格式的,实现多个数据的换行
2 ToHtml(v){
3             return v.split(';').join("<br/>");
4         },

二、遮罩层的实现,百度的,效果还是非常不错的,有兴趣的可以减化一下写法,我是直接复制了两份。

1 .box-green{
2 position:absolute;
3         top:0;
4         bottom:0;
5         left:0;
6         right:0;
7         background-color: #67C23A;
8         opacity:0.6;
9         padding: 0;
10         border-radius: 5%;
11 }
12 
13     .box-yello{
14 position:absolute;
15         top:0;
16         bottom:0;
17         left:0;
18         right:0;
19         background-color: #E6A23C;
20         opacity:0.6;
21         padding: 0;
22         border-radius: 5%;
23 }
24     .box-white{
25 position:absolute;
26         top:0;
27         bottom:0;
28         left:0;
29         right:0;
30         background-color: #FFFFFF;
31         opacity:0.6;
32         padding: 0;
33         border-radius: 5%;
34     }

三、不同尺寸下的显示效果(没有半天打卡,没有退到早退,都显示的绿色)

el-calendar制作考勤显示的一些心得第1张

el-calendar制作考勤显示的一些心得第2张

免责声明:文章转载自《el-calendar制作考勤显示的一些心得》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇判断SQLSERVER数据库表字段为空的问题win7下安装VS2019下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

点击按钮,弹出遮罩层,跳转页面播放视频

<!--提示框开始--><div id="mask"></div><!--遮罩层--><!--提示内容--><div id="mask_inter"> <span>是否观看视频?</span> <div id="yes">要看</d...

给首页添加遮罩层,添加提示框

最近给详情页面做了一个遮罩提示,用户第一次登录之后会提示,然后下次登录就不显示。 首先考虑用到的是cookie,这样用户第一次进入到详情页,通过js种下一个cookie,然后下次登录再进行判断即可。 /**设置Cookie */ functionSetCookie(cookieName, cookieValue, nDays) {...

C#实现Winform自定义半透明遮罩层

在网页中通过div+css实现半透明效果不难,今天我们看看一种在winfrom中实现的方法: 效果图如下,正常时: 显示遮罩层时: 自定义遮罩层控件的源码如下: View Code using System; using System.Drawing; using System.Windows.Forms; using System.Componen...

封装两个简单的Jquery组件

Jquery给我们提供了很大的方便,我们把他看成是一个公共库,以致在这个公共库上延伸出了很多Jquery插件;在项目过程中,有些插件总是不那么令人满意; 主要说两个项目用途: 1、 遮罩层,跟一般的遮罩层不一样,我需要实现的是对某一个元素进行局部遮罩; 2、 冒泡提示,网上有很多,我需要的只是一种在页面指定位置弹出来的一个静止定位的div而已;两个就自己了...

JS 点击按钮后弹出遮罩层,有关闭按钮

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>jQuery弹出层效果</title> <meta content="网页特效,特效代码,jQuery,css特效,Js代码,广告幻灯,图片切换...

[微信小程序]实现一个自定义遮罩层

正文: 先上效果图: 点击按钮Show显示遮罩层,再次点击屏幕任何地方隐藏遮罩层; <button bindtap="showview">Show</button> <view class="bg" bindtap='hideview' style='display:{{display}}'></view>...