您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
计算加班时长
// ==UserScript== // @name 工时计算 // @namespace http://tampermonkey.net/ // @version 0.3 // @description 计算加班时长 // @author 秦大哥 // @match http://oa.innovatech.net.cn:8000/com/yj/ScheduleRecord.jsp // @icon https://www.google.com/s2/favicons?sz=64&domain=innovatech.net.cn // @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js // @license MIT // @grant none // ==/UserScript== (function() { 'use strict'; console.log('加载成功') $("tr:contains('人力资源'):last").append(` <td style="display:" id="icuLabel" class="fieldName" colspan="1">加班时长</td> <td style="display:" id="" name="" _samepair="" class="field" colspan="1"> <span id="icuTotalValue"></span> </td> `) let trList = $("#reportList tr") let workList = [] for(let i = 0;i<trList.length;i++){ let tr = trList[i] if(i == 0){ $(tr).append(` <td width="60px" nowrap="">周末</td> <td width="60px" nowrap="">非工作日</td> <td width="60px" nowrap="">加班时长(小时)</td> `) }else { //日期 let dateStr = $($(tr).children()[2]).text() let date = new Date(dateStr) let currentDay = date.getDay() let isWeekend = currentDay === 6 || currentDay === 0 let isHoliday = isWeekend console.log("before = "+ isHoliday) let storedValue = localStorage.getItem(dateStr) if(storedValue != null){ isHoliday = storedValue == "true" console.log("after = "+ isHoliday) } $(tr).append(`<td width="60px" nowrap="">${isWeekend?"是":"否"}</td>`) let checkBox = $("<input/>").attr("type","checkbox").prop({"checked":isHoliday}).change(() =>{ let checked = checkBox.prop("checked") localStorage.setItem(dateStr,checked) workList[i - 1].isHoliday = checked let newIcuValue = reCalRow(i - 1) $($(tr).find("#icuValue")).html(newIcuValue) let totalIcuValue = reCalTotalIcu() $("#icuTotalValue").html(`${totalIcuValue}小时`) }) let tdHoliday =$(`<td width="60px" nowrap=""></td>`).append(checkBox) $(tr).append(tdHoliday) console.log(`date=${date} ${isWeekend?'周末':'不是周末'}`) //上班时间 let onWorkDateStr = $($(tr).children()[3]).text() let onWorkDate = new Date(`${dateStr} ${onWorkDateStr}`) //下班时间 let offWorkDateStr = $($(tr).children()[4]).text() let offWorkDate = new Date(`${dateStr} ${offWorkDateStr}`) //加班时长 let icuValue = 0 if(!isHoliday && offWorkDateStr != "00:00"){ console.log("in icu") let icuStartDate = new Date(`${dateStr} 18:30:00`) icuValue = (parseInt(offWorkDate - icuStartDate)/1000.0/60/60).toFixed(2) }else if(onWorkDateStr != "00:00" && offWorkDateStr != "00:00") { console.log("in icu") icuValue = (parseInt(offWorkDate - onWorkDate)/1000.0/60/60).toFixed(2) } if(icuValue < 0){ icuValue = 0 } $(`<td width="60px" id="icuValue" nowrap="">${icuValue}</td>`).appendTo(tr) workList.push({ date:date, dateStr:dateStr, onWorkDate:onWorkDate, onWorkDateStr:onWorkDateStr, offWorkDate:offWorkDate, offWorkDateStr:offWorkDateStr, isHoliday:isHoliday, icuValue:icuValue }) } let totalIcuValue = reCalTotalIcu() $("#icuTotalValue").html(`${totalIcuValue}小时`) } //重新计算单行加班时间 function reCalRow(index){ let work = workList[index] let icuValue = 0 if(!work.isHoliday && work.offWorkDateStr != "00:00"){ console.log("in icu") let icuStartDate = new Date(`${work.dateStr} 18:30:00`) icuValue = (parseInt(work.offWorkDate - icuStartDate)/1000.0/60/60).toFixed(2) }else if(work.onWorkDateStr != "00:00" && work.offWorkDateStr != "00:00") { console.log("in icu") icuValue = (parseInt(work.offWorkDate - work.onWorkDate)/1000.0/60/60).toFixed(2) } if(icuValue < 0){ icuValue = 0 } work.icuValue = icuValue return icuValue } //重新计算总时长 function reCalTotalIcu(){ let totalIcu = 0 workList.forEach((item,index) =>{ totalIcu += parseFloat(item.icuValue) }) return totalIcu.toFixed(2) } })();