• 刷连记录的迟到检测---Table表格增加一列值


    公司OA新增加了 刷脸记录 ,用于查看自己是否迟到,但是没有什么提醒,于是乎自己写了一个脚本

    刷连记录 类似于这样的:

    运行脚本后,是这个样子的:

    擦,我本月已经迟到了 3次了。。。。

    拖拽 刷脸记录-迟到检测 到Chrome标签栏,点击就可以执行脚本了

    脚本内容为:

      1 /*******************
      2 * FileName   : js_刷脸记录 整理.js
      3 * Description: 在OA网页 刷脸记录中,执行后可显示 是否迟到。
      4 ********************/
      5 // JS 压缩工具:
      6 //http://tool.oschina.net/jscompress
      7 
      8 //===============================================
      9 // 1 加载jQuery
     10 //===============================================
     11 //http://www.cnblogs.com/BearsTaR/archive/2010/08/05/js_include.html
     12 //http://segmentfault.com/q/1010000000469374
     13 //http://stackoverflow.com/questions/950087/include-a-javascript-file-in-another-javascript-file
     14 
     15 //http://www.huoduan.com/jquery-cdn.html
     16 //http://www.bootcdn.cn/jquery/
     17 
     18 function include(jsurl) {
     19     if (jsurl == null || typeof(jsurl) != 'string') return;
     20     var script = document.createElement('script');
     21     script.type = 'text/javascript';
     22     script.charset = 'utf-8';
     23     script.src = jsurl;
     24     /*script.setAttribute("src",jsurl);*/
     25     document.head.appendChild(script);
     26 }
     27 include("http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js");
     28 //===============================================
     29 //2 分析表格
     30 //===============================================
     31 
     32 //$("table.shualian").innerHTML="";
     33 
     34 function IsAmPm(d){
     35     var hour=d.getHours();
     36     //早上 6点到12点 算是上班
     37     if(hour>=0 && hour <=12){
     38         return 1;
     39     }
     40     //中午12点到晚上24点之间 算是下班时间
     41     if(hour >12 && hour <24){
     42         return 2;
     43     }
     44     return 2;
     45 }
     46 
     47 //将秒数 转化为人类可读的字符串
     48 function HumanReadSeconds(mililsSeconds){
     49     mililsSeconds=mililsSeconds/1000;
     50     mililsSeconds=parseInt(mililsSeconds);
     51     //typeof(mililsSeconds)=="number"||typeof(mililsSeconds)=="string"
     52 /*
     53 1.丢弃小数部分,保留整数部分 
     54 js:parseInt(7/2) 
     55 
     56 2.向上取整,有小数就整数部分加1 
     57 js: Math.ceil(7/2) 
     58 
     59 3,四舍五入. 
     60 js: Math.round(7/2) 
     61 
     62 4,向下取整 
     63 js: Math.floor(7/2)
     64 */
     65     var isFushu=mililsSeconds>0?1:-1;
     66     mililsSeconds=Math.abs(mililsSeconds);
     67     var day=0,hour=0,minute=0,second=0;
     68     day=mililsSeconds/86400;
     69     day=parseInt(day);
     70     hour=(mililsSeconds-day*86400)/3600;
     71     hour=parseInt(hour);
     72     minute=(mililsSeconds-day*86400-3600*hour)/60;
     73     minute=parseInt(minute);
     74     second=mililsSeconds-day*86400-3600*hour-minute*60;
     75     second=parseInt(second);
     76     //
     77     var ret="";
     78     if(day>0)
     79         ret=day+"天";
     80     if(hour>0||day>0)
     81         ret+=hour+"小时";
     82     if(minute>0||hour>0||hour>0){
     83         ret+=minute+"分";
     84     }
     85     ret+=second+"秒";
     86     return ret+(isFushu>0?"":"[以前]");
     87 }
     88 //当前时间 打卡算是迟到 或 早退吗
     89 function IsLate(nowDate){
     90     //上午 是 9点01分之前 ;下午是18:00之后
     91     var date2;//当日 迟到时间
     92     console.log("当前时间为:"+nowDate.toLocaleString());
     93     if(IsAmPm(nowDate)==1){
     94         date2=new Date(nowDate.getYear()+1900,
     95             nowDate.getMonth(),/*范围0-11 代表1-12月*/
     96             nowDate.getDate(),
     97             9,
     98             01,
     99             00);
    100         console.log("当日 不迟到时间为:"+date2.toLocaleString());
    101         console.log("nowDate="+nowDate.valueOf()+"; date2="+date2.valueOf()+"; date2-nowDate="+(date2-nowDate));
    102         if( nowDate<date2){
    103             return "";
    104         }else{
    105             return "迟到了"+HumanReadSeconds(nowDate-date2);
    106         }
    107     }else{
    108         date2=new Date(nowDate.getYear()+1900,
    109             nowDate.getMonth(),/*范围0-11 代表1-12月*/
    110             nowDate.getDate(),
    111             18,
    112             00,
    113             00);
    114             
    115         console.log("当日 不早退时间为:"+date2.toLocaleString());
    116         console.log("nowDate="+nowDate.valueOf()+"; date2="+date2.valueOf()+"; nowDate-date2="+(nowDate-date2));
    117         if( nowDate>date2){
    118             return "";
    119         }else{
    120             return "早退了"+HumanReadSeconds(date2-nowDate);
    121         }
    122     }
    123 }
    124 
    125 function AddChiDaoColor(isLate,td,row){
    126     if(isLate.length!=0){
    127         //迟到提醒记录 红色 加粗字体
    128         td.innerText+=isLate;
    129         td.style="color:red;"
    130         td.style.color="red";
    131         td.style.fontWeight="bold";
    132         td.style.backgroundColor="yellow";
    133         
    134         row.appendChild(td);
    135     }else{
    136         //无迟到描述空
    137         td.innerText+="没有迟到";
    138         row.appendChild(td);
    139     }
    140     
    141 }
    142 
    143 for(var i=0;i<document.getElementsByTagName("frame").length;i++)
    144 {
    145     if(document.getElementsByTagName("frame")[i].name==="main"){
    146         var f=window.top.document.getElementsByTagName("frame")[2];
    147         var content=f.contentDocument.getElementsByTagName("table")[2];
    148         //var c=$(f.contentDocument.getElementsByTagName("table")[2]);
    149         //第一行 是姓名 刷连时间,添加 是否迟到
    150         
    151         var row0=content.rows[0];
    152         var td = document.createElement('td');
    153         td.innerText="是否迟到";
    154         td.align="center"
    155         td.width="10%"
    156         row0.appendChild(td)
    157         
    158         //第二行 到最后一行 分别执行 判断迟到操作
    159         var j=0;
    160         var lastAmPM=1;//1是上班时间 2是下班时间
    161         var lastDay=undefined;
    162         while(++j<content.rows.length){
    163             var row=content.rows[j];
    164             //"刷脸时间"这一列 转化为 时间
    165             var theDay = new Date(Date.parse(row.cells[1].innerText.replace(/-/g, "/"))); 
    166             console.log("lastDay="+lastDay);
    167             var td = document.createElement('td');
    168             td.align="center"
    169             td.width="10%"
    170             
    171             if(lastDay===undefined){
    172                 //这是第一条记录c
    173                 lastDay=theDay;
    174                 lastAmPM=IsAmPm(lastDay);//=1 am =2 pm
    175                 //console.log("lastDay="+lastDay.toLocaleString());
    176                 //console.log("lastAmPM="+lastAmPM);
    177                 var isLate=IsLate(lastDay);
    178                 AddChiDaoColor(isLate,td,row);
    179             }else{
    180                 
    181                 do{
    182                     //与前一次是同一天的记录
    183                     if(lastDay.getDate()==theDay.getDate()){
    184                         //前面的记录是当日上午的,忽略本次
    185                         if(lastAmPM==IsAmPm(theDay)){
    186                             if(lastAmPM==1){
    187                                 td.innerText="已经刷过脸了";
    188                                 row.appendChild(td);
    189                                 break;
    190                             }else{
    191                                 //同日下午 刷脸,按最后一次进行记录
    192                             }
    193                         }
    194                         //同日下午刷脸 按最后一次进行记录
    195                         var isLate=IsLate(theDay);
    196                         AddChiDaoColor(isLate,td,row);
    197                     }else{
    198                         //本次刷脸时间与前一次不是同一天
    199                         if(lastDay.getDay()!=5){
    200                             //如果有某一日没有刷卡
    201                             var passedDay=parseInt((theDay-lastDay)/1000/86400);
    202                             console.log("lastDay.getDate()="+lastDay.getDate());
    203                             console.log("theDay.getDate()="+theDay.getDate());
    204                             if( passedDay>1 ){
    205                                 //昨天一天都没来 迟到了不!!
    206                                 td.innerText="今天是星期"+theDay.getDay()+" ;距离上一次刷脸记录超过"+passedDay+"天了!";
    207                                 /*
    208                                 JS实现向表格中动态添加行的方法
    209                                 
    210                                 function insRow()
    211                                 {
    212                                 var x=document.getElementById('myTable').insertRow(0);
    213                                 var y=x.insertCell(0);
    214                                 var z=x.insertCell(1);
    215                                 y.innerHTML="NEW CELL1";
    216                                 z.innerHTML="NEW CELL2";
    217                                 }
    218 
    219                                 var tr=document.createElement("tr");
    220                                 tr.insertBefore(td,tr[0]);
    221                                 var td2=td.cloneNode(true);
    222                                 td=td2;
    223                                 content.insertBefore(tr,row);j++;
    224                                 */
    225                             }
    226                         }else{
    227                             //上次是周五
    228                             var passedDay=parseInt((theDay-lastDay)/1000/86400);
    229                             console.log("lastDay.getDate()="+lastDay.getDate());
    230                             console.log("theDay.getDate()="+theDay.getDate());
    231                             if( passedDay>3 ){
    232                                 td.innerText="上周五以后 到星期一该上班了 怎么不上班???";
    233                             }
    234                         }
    235                         
    236                         var isLate=IsLate(theDay);
    237                         AddChiDaoColor(isLate,td,row);
    238                         
    239                     }
    240                     
    241                     //最后设置
    242                     if(lastDay!=theDay)lastDay=theDay;
    243                     if(lastAmPM!=IsAmPm(theDay))lastAmPM=IsAmPm(theDay);
    244                 }while(0);
    245                 
    246             }
    247             
    248             
    249         }//遍历每一行 刷脸记录
    250     }//if frame.name="main"
    251 }
    View Code
  • 相关阅读:
    1-6.webpack对字体图标和图片的处理
    1-5.Webpack对Html模板处理
    1-4.Webpack对样式的处理
    1-3.Webpack对脚本的处理
    1-2.Webpack初始化
    1-1.mmall电商项目搭建
    Java 随心笔记11
    Java 随心笔记10
    Java 随心笔记9
    Java 随心笔记8
  • 原文地址:https://www.cnblogs.com/ayanmw/p/5025641.html
Copyright © 2020-2023  润新知