刷连记录的迟到检测---Table表格增加一列值
公司OA新增加了 刷脸记录 ,用于查看自己是否迟到,但是没有什么提醒,于是乎自己写了一个脚本
刷连记录 类似于这样的:

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

擦,我本月已经迟到了 3次了。。。。
拖拽 刷脸记录-迟到检测 到Chrome标签栏,点击就可以执行脚本了
脚本内容为:
/*******************
* FileName : js_刷脸记录 整理.js
* Description: 在OA网页 刷脸记录中,执行后可显示 是否迟到。
********************/
// JS 压缩工具:
//http://tool.oschina.net/jscompress //===============================================
// 1 加载jQuery
//===============================================
//http://www.cnblogs.com/BearsTaR/archive/2010/08/05/js_include.html
//http://segmentfault.com/q/1010000000469374
//http://stackoverflow.com/questions/950087/include-a-javascript-file-in-another-javascript-file //http://www.huoduan.com/jquery-cdn.html
//http://www.bootcdn.cn/jquery/ function include(jsurl) {
if (jsurl == null || typeof(jsurl) != 'string') return;
var script = document.createElement('script');
script.type = 'text/javascript';
script.charset = 'utf-8';
script.src = jsurl;
/*script.setAttribute("src",jsurl);*/
document.head.appendChild(script);
}
include("http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js");
//===============================================
//2 分析表格
//=============================================== //$("table.shualian").innerHTML=""; function IsAmPm(d){
var hour=d.getHours();
//早上 6点到12点 算是上班
if(hour>=0 && hour <=12){
return 1;
}
//中午12点到晚上24点之间 算是下班时间
if(hour >12 && hour <24){
return 2;
}
return 2;
} //将秒数 转化为人类可读的字符串
function HumanReadSeconds(mililsSeconds){
mililsSeconds=mililsSeconds/1000;
mililsSeconds=parseInt(mililsSeconds);
//typeof(mililsSeconds)=="number"||typeof(mililsSeconds)=="string"
/*
1.丢弃小数部分,保留整数部分
js:parseInt(7/2) 2.向上取整,有小数就整数部分加1
js: Math.ceil(7/2) 3,四舍五入.
js: Math.round(7/2) 4,向下取整
js: Math.floor(7/2)
*/
var isFushu=mililsSeconds>0?1:-1;
mililsSeconds=Math.abs(mililsSeconds);
var day=0,hour=0,minute=0,second=0;
day=mililsSeconds/86400;
day=parseInt(day);
hour=(mililsSeconds-day*86400)/3600;
hour=parseInt(hour);
minute=(mililsSeconds-day*86400-3600*hour)/60;
minute=parseInt(minute);
second=mililsSeconds-day*86400-3600*hour-minute*60;
second=parseInt(second);
//
var ret="";
if(day>0)
ret=day+"天";
if(hour>0||day>0)
ret+=hour+"小时";
if(minute>0||hour>0||hour>0){
ret+=minute+"分";
}
ret+=second+"秒";
return ret+(isFushu>0?"":"[以前]");
}
//当前时间 打卡算是迟到 或 早退吗
function IsLate(nowDate){
//上午 是 9点01分之前 ;下午是18:00之后
var date2;//当日 迟到时间
console.log("当前时间为:"+nowDate.toLocaleString());
if(IsAmPm(nowDate)==1){
date2=new Date(nowDate.getYear()+1900,
nowDate.getMonth(),/*范围0-11 代表1-12月*/
nowDate.getDate(),
9,
01,
00);
console.log("当日 不迟到时间为:"+date2.toLocaleString());
console.log("nowDate="+nowDate.valueOf()+"; date2="+date2.valueOf()+"; date2-nowDate="+(date2-nowDate));
if( nowDate<date2){
return "";
}else{
return "迟到了"+HumanReadSeconds(nowDate-date2);
}
}else{
date2=new Date(nowDate.getYear()+1900,
nowDate.getMonth(),/*范围0-11 代表1-12月*/
nowDate.getDate(),
18,
00,
00); console.log("当日 不早退时间为:"+date2.toLocaleString());
console.log("nowDate="+nowDate.valueOf()+"; date2="+date2.valueOf()+"; nowDate-date2="+(nowDate-date2));
if( nowDate>date2){
return "";
}else{
return "早退了"+HumanReadSeconds(date2-nowDate);
}
}
} function AddChiDaoColor(isLate,td,row){
if(isLate.length!=0){
//迟到提醒记录 红色 加粗字体
td.innerText+=isLate;
td.style="color:red;"
td.style.color="red";
td.style.fontWeight="bold";
td.style.backgroundColor="yellow"; row.appendChild(td);
}else{
//无迟到描述空
td.innerText+="没有迟到";
row.appendChild(td);
} } for(var i=0;i<document.getElementsByTagName("frame").length;i++)
{
if(document.getElementsByTagName("frame")[i].name==="main"){
var f=window.top.document.getElementsByTagName("frame")[2];
var content=f.contentDocument.getElementsByTagName("table")[2];
//var c=$(f.contentDocument.getElementsByTagName("table")[2]);
//第一行 是姓名 刷连时间,添加 是否迟到 var row0=content.rows[0];
var td = document.createElement('td');
td.innerText="是否迟到";
td.align="center"
td.width="10%"
row0.appendChild(td) //第二行 到最后一行 分别执行 判断迟到操作
var j=0;
var lastAmPM=1;//1是上班时间 2是下班时间
var lastDay=undefined;
while(++j<content.rows.length){
var row=content.rows[j];
//"刷脸时间"这一列 转化为 时间
var theDay = new Date(Date.parse(row.cells[1].innerText.replace(/-/g, "/")));
console.log("lastDay="+lastDay);
var td = document.createElement('td');
td.align="center"
td.width="10%" if(lastDay===undefined){
//这是第一条记录c
lastDay=theDay;
lastAmPM=IsAmPm(lastDay);//=1 am =2 pm
//console.log("lastDay="+lastDay.toLocaleString());
//console.log("lastAmPM="+lastAmPM);
var isLate=IsLate(lastDay);
AddChiDaoColor(isLate,td,row);
}else{ do{
//与前一次是同一天的记录
if(lastDay.getDate()==theDay.getDate()){
//前面的记录是当日上午的,忽略本次
if(lastAmPM==IsAmPm(theDay)){
if(lastAmPM==1){
td.innerText="已经刷过脸了";
row.appendChild(td);
break;
}else{
//同日下午 刷脸,按最后一次进行记录
}
}
//同日下午刷脸 按最后一次进行记录
var isLate=IsLate(theDay);
AddChiDaoColor(isLate,td,row);
}else{
//本次刷脸时间与前一次不是同一天
if(lastDay.getDay()!=5){
//如果有某一日没有刷卡
var passedDay=parseInt((theDay-lastDay)/1000/86400);
console.log("lastDay.getDate()="+lastDay.getDate());
console.log("theDay.getDate()="+theDay.getDate());
if( passedDay>1 ){
//昨天一天都没来 迟到了不!!
td.innerText="今天是星期"+theDay.getDay()+" ;距离上一次刷脸记录超过"+passedDay+"天了!";
/*
JS实现向表格中动态添加行的方法 function insRow()
{
var x=document.getElementById('myTable').insertRow(0);
var y=x.insertCell(0);
var z=x.insertCell(1);
y.innerHTML="NEW CELL1";
z.innerHTML="NEW CELL2";
} var tr=document.createElement("tr");
tr.insertBefore(td,tr[0]);
var td2=td.cloneNode(true);
td=td2;
content.insertBefore(tr,row);j++;
*/
}
}else{
//上次是周五
var passedDay=parseInt((theDay-lastDay)/1000/86400);
console.log("lastDay.getDate()="+lastDay.getDate());
console.log("theDay.getDate()="+theDay.getDate());
if( passedDay>3 ){
td.innerText="上周五以后 到星期一该上班了 怎么不上班???";
}
} var isLate=IsLate(theDay);
AddChiDaoColor(isLate,td,row); } //最后设置
if(lastDay!=theDay)lastDay=theDay;
if(lastAmPM!=IsAmPm(theDay))lastAmPM=IsAmPm(theDay);
}while(0); } }//遍历每一行 刷脸记录
}//if frame.name="main"
}
刷连记录的迟到检测---Table表格增加一列值的更多相关文章
- jQuery遍历Table表格的行和列
遍历Table表格的行和列,在开发中比较常用的功能,特别是前端开发人员,不多说,直接上代码,下面代码只是弹出第一列字段,请各位自己根据需求修改和扩展! <!DOCTYPE html PUBLIC ...
- bootstrap table表格属性、列属性、事件、方法
留存一份,原文地址http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/ 表格参数 表格的参数定义在 jQuery.fn.bootst ...
- 使用js方法将table表格中指定列指定行中相同内容的单元格进行合并操作。
前言 使用js方法对html中的table表格进行单元格的行列合并操作. 网上执行此操作的实例方法有很多,但根据实际业务的区别,大多不适用. 所以在网上各位大神写的方法的基础上进行了部分修改以适合自己 ...
- JS获取table表格任意单元格值
jsp页面表格布局 <body onload="show()"> <center> <input type="text" valu ...
- asp.net table表格表头及列固定实现
http://blog.csdn.net/zdw_wym/article/details/48630337 在开发中常会遇到table表格中列特别多,下拉后,表头就看不见了,水平滚动后,第1.2列就看 ...
- excel转化为table(去掉所有列值都为空的值一行,即返回有效值的DataTable)
/// <summary> /// 去掉所有列值都为空的值一行,即返回有效值的DataTable /// </summary> /// <param name=" ...
- layui中table表格的操作列(删除,编辑)等按钮的操作
暂停和中止按钮功能 if (obj.event === 'del') { layer.confirm('确认中止么', function (index) { $.ajax({ type: " ...
- [转]CSS如何设置html table表格边框样式
原文地址:http://www.divcss5.com/wenji/w503.shtml 对table设置css样式边框,分为几种情况: 1.只对table设置边框 2.对td设置边框 3.对tabl ...
- 在table表格中实现圆角效果
在table中设置border-radius发现不起作用,网上查找了一番,原因是border-collapse:collapse和border-radius不兼容. 设计图效果 代码实现效果: < ...
随机推荐
- 問題排查:F5啟動偵錯後所提示的錯誤 (2)
原始專案版本:Visual Studio 2005 開發環境:Visual Studio 2013 偵錯運行環境:IIS Express 啟動偵錯後,錯誤提示內容如下: HTTP 错误 403.14 ...
- mongodb+pycharm使用报错,无法往mongodb存文件
1 mongodb必须在启用状态下,启用如下 C:/mongodb/bin>mongod --dbpath C:\mongodb\data\db 不能关闭cmd 2 其他问题,貌似在Connec ...
- c# 程序检测日志输出的类
public class LogWrite { public LogWrite() { // // TODO: ...
- JS调用BHO
// BHO 中添加下面的函数,设置UIHandler// BHO 包含如下成员变量: // CDocDispatch m_docDispatch;// CComPtr<IDocHostUIHa ...
- LeetCode OJ-- Word Ladder II ***@
https://oj.leetcode.com/problems/word-ladder-ii/ 啊,终于过了 class Solution { public: vector<vector< ...
- webview 实现滑动前进后退功能
实现该功能大家一定会想到在OnTouchListener里实现 webview.setOnTouchListener(new OnTouchListener() { @Override public ...
- over分析函数
select empno,ename,job,sal,sum(sal) over (order by empno) 累计 from emp ;
- Myeclipse/eclipse的Web project改写成Maven项目
1.导入或建立web项目时加上maven的设置 2.加入如下代码:<dependencies>标签下加入红色部分 <dependencies> <dependency&g ...
- link,unlink,remove, rename函数
link函数:创建一个指向现有文件的链接的方法是使用 个人理解为cp命令 #include <unistd.h> int link( const char *existingpath, c ...
- React与ES6(三)ES6类和方法绑定
React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...