微步下班倒计时

下班

目前为 2023-08-15 提交的版本。查看 最新版本

// ==UserScript==
// @name         微步下班倒计时
// @namespace    http://tampermonkey.net/
// @version      2023年8月15日12点26分
// @description  下班
// @author       wwsuixin
// @match        https://x.threatbook.com/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=threatbook.com
// @grant        none
// ==/UserScript==

(function () {

    window.onload = setTimeout(click_item, 500);
    function click_item() {
        var xpath = '//*[@id="app"]/div[1]/div[1]/div[2]/div[6]/div[2]';

        var element = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

        var 自定义div = document.createElement('div');

        if (element) {
            自定义div.innerHTML = '<hr><div id="自定义divid" style="color: red; font-size: 16px; font-weight: bold; font-family: 楷体;">    <div id="已经工作divid">🕢 已经工作:<span id="已经工作小时id">xx</span> 小时 <span id="已经工作分钟id">xx</span> 分钟 <span            id="已经工作秒id">xx</span> 秒</div>    <div id="距离下班divid">🕙 距离下班: <span id="距离下班小时id">xx</span> 小时 <span id="距离下班分钟id">xx</span> 分钟 <span            id="距离下班秒id">xx</span> 秒</div>    <div id="今日收入divid"> 💰 今日收入:<span id="今日已收入id">xx</span>/<span id="今日总收入id">xx</span> </div>    <div id="进度条">        <div id="进度条divid"            style="margin-top: 5px;display:inline;float:left;width: 76%;height: 10px;border: 1px solid #565656; background: white; position: relative;">            <div id="实时进度条divid"                style="position: absolute; left: 0; top: 0; z-index: 2; height: 10px; width: 100%; font-weight: bold; font-family: Georgia; clip: rect(0px, 0, 10px, 0px); background: #ff0000;">                0%</div>        </div>        <div style="display:inline;float:left;width: 2%;">  </div>        <div id="进度条数值divid" style="display:inline;float:left;width: 22%;">0%</div>    </div></div><hr>';
            element.appendChild(自定义div);

            // 执行上面的代码
            let 下班时间 = new Date();
            下班时间.setHours(22, 0, 0, 0);
            let 上班时间 = new Date();
            上班时间.setHours(8, 30, 0, 0);
            let 当日工资 = 10000

            let 进度条数值divid = document.getElementById("进度条数值divid");
            let 进度条divid = document.getElementById("进度条divid");
            let 实时进度条divid = document.getElementById("实时进度条divid");
            let 已经工作divid = document.getElementById("已经工作divid");
            let 距离下班divid = document.getElementById("距离下班divid");
            let 已经工作小时id = document.getElementById("已经工作小时id");
            let 已经工作分钟id = document.getElementById("已经工作分钟id");
            let 已经工作秒id = document.getElementById("已经工作秒id");
            let 距离下班小时id = document.getElementById("距离下班小时id");
            let 距离下班分钟id = document.getElementById("距离下班分钟id");
            let 距离下班秒id = document.getElementById("距离下班秒id");
            let 今日收入divid = document.getElementById("今日收入divid");
            let 今日已收入id = document.getElementById("今日已收入id");
            let 今日总收入id = document.getElementById("今日总收入id");
            今日总收入id.textContent = 当日工资;

            setInterval(function () {
                let 当前时间 = new Date();
                let 距离上班时间间隔 = 当前时间 - 上班时间;
                let days = Math.floor(距离上班时间间隔 / (1000 * 60 * 60 * 24));
                let hours = Math.floor((距离上班时间间隔 % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                let minutes = Math.floor((距离上班时间间隔 % (1000 * 60 * 60)) / (1000 * 60));
                let seconds = Math.floor((距离上班时间间隔 % (1000 * 60)) / 1000);
                已经工作小时id.textContent = hours;
                已经工作分钟id.textContent = minutes;
                已经工作秒id.textContent = seconds;

                let 距离下班时间间隔 = 下班时间 - 当前时间;
                let 提示信息 = "";

                if (距离下班时间间隔 < 0) {
                    距离下班divid.textContent = "🕙 警告:工作时间已经结束!";
                } else {
                    let days = Math.floor(距离下班时间间隔 / (1000 * 60 * 60 * 24));
                    let hours = Math.floor((距离下班时间间隔 % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                    let minutes = Math.floor((距离下班时间间隔 % (1000 * 60 * 60)) / (1000 * 60));
                    let seconds = Math.floor((距离下班时间间隔 % (1000 * 60)) / 1000);
                    距离下班小时id.textContent = hours.toString();
                    距离下班分钟id.textContent = minutes.toString();
                    距离下班秒id.textContent = seconds.toString();
                }

                let 已收入 = 0
                if (距离下班时间间隔 < 0) {
                    已收入 = 当日工资
                    今日收入divid.textContent = "💰 今日收入:" + 当日工资 + "/" + 当日工资 + "(加班也没钱)";
                } else {
                    const 需工作时间 = 下班时间 - 上班时间;
                    const 需工作秒数 = 需工作时间 / 1000;
                    const 每秒收入 = 当日工资 / 需工作秒数;
                    const 上班总秒数 = 距离上班时间间隔 / 1000
                    已收入 = (上班总秒数 * 每秒收入).toFixed(4)
                    今日已收入id.textContent = 已收入;
                }
                const 当前进度 = ((已收入 / 当日工资) * 100).toFixed(2)
                进度条更新(进度条divid, 实时进度条divid, 进度条数值divid, 当前进度)

            }, 1000);
        } else {
            setTimeout(click_item, 300) //300 毫秒
        }
    }

    function 进度条更新(进度条divid, 实时进度条divid, 进度条数值divid, 当前进度) {
        // 获取总进度条的宽度
        var allWidth = parseInt(getStyle(进度条divid, 'width'));
        // 设定内层两个div的文字内容一样
        console.log(当前进度)
        进度条数值divid.innerHTML = 当前进度 + '%';
        // 修改clip的的宽度值
        实时进度条divid.style.clip = 'rect(0px, ' + 当前进度 / 100 * allWidth + 'px, 10px, 0px)';

        // 获取当前元素的属性值
        function getStyle(obj, attr) {
            // 兼容IE
            if (obj.currentStyle) {
                return obj.currentStyle[attr];
            } else {
                // 第二个参数为false是通用的写法,目的是为了兼容老版本
                return getComputedStyle(obj, false)[attr];
            }
        }
    }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址