微步下班倒计时

下班

当前为 2023-08-17 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         微步下班倒计时
// @namespace    http://tampermonkey.net/
// @version      2023年8月17日09点25分
// @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]/div[1]';
        var xpath = '//*[@id="app"]/div[1]/div[1]/div[2]/div[6]/div[2]/div[1]/ul[7]'
        var element = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
        var 自定义div = document.createElement('div');

        ///////////////自定义参数区域-开始//////////////////////////////////////////////////////////////////////////////////

        let 下班时间 = new Date();
        // 夜班同事设置下班时间为第二天9点,并取消注释
        // 下班时间.setDate(下班时间.getDate() + 1);
        // 下班时间.setHours(9, 0, 0, 0);

        //白班同事设置下班时间,作者晚上10点下班,夜班同事注释此句
        下班时间.setHours(22, 0, 0, 0);

        //设置上班时间,当前设置为当天8点30分
        let 上班时间 = new Date();
        上班时间.setHours(8, 30, 0, 0);


        //日薪设置请修改此参数
        let 当日工资 = 10000

        ///////////////自定义参数区域-结束//////////////////////////////////////////////////////////////////////////////////



        let 摸鱼开始时间 = new Date();

        let 结束时间 = new Date();
        结束时间.setFullYear(2023, 7, 23);
        结束时间.setHours(21, 0, 0, 0);




        if (element) {
            自定义div.innerHTML = '<div id="自定义divid"    style="transition: all .4s linear; border-radius:25px; padding: 5px;  transform: translateX(0);    background: linear-gradient(136deg, #ff4d3d, #ff5e3d .01%, #db1212);background-repeat: no-repeat; background-attachment: fixed;    color: #fff;    font-size: 14px;    font-weight: 700;    word-wrap: break-word;    line-height: 24px;  text-align: center;">    <div style=" display: flex; justify-content: center;"> <span style="font-size: 20px;">🎇 结束倒计时</span> </div>    <div style=" display: flex; justify-content: center;">        <div style=" display: flex; font-size: 10px; flex-direction: column; width: 25%; justify-content: center;">            <h1 id="活动结束天数id" style=" margin-bottom: 0;margin: 0 auto;">0</h1> <small                style=" margin: 0 auto;">Days</small>        </div>        <div            style=" display: flex; font-size: 10px; flex-direction: column; margin: 0 10px;width: 25%; justify-content: center;">            <h1 id="活动结束小时id" style=" margin-bottom: 0;margin: 0 auto;">00</h1> <small                style=" margin: 0 auto;">Hours</small>        </div>        <div x            style=" display: flex; font-size: 10px; flex-direction: column; margin: 0 10px;width: 25%; justify-content: center;">            <h1 id="活动结束分钟id" style=" margin-bottom: 0;margin: 0 auto;">00</h1> <small                style=" margin: 0 auto;">Mins</small>        </div>        <div            style="display: flex; font-size: 10px; flex-direction: column; margin: 0 10px;width: 25%; justify-content: center;">            <h1 id="活动结束秒id" style=" margin-bottom: 0;margin: 0 auto;">00</h1> <small                style=" margin: 0 auto;">Sec</small>        </div>    </div>    <div style=" display: flex; justify-content: center;"> <span style="font-size: 20px;">😂 今日数据</span> </div>    <div id="已经工作divid">🕢已搬砖:__<span id="已经工作小时id">00</span>__时__<span id="已经工作分钟id">00</span>__分__<span            id="已经工作秒id">00</span>__秒</div>    <div id="距离下班divid">🕙离躺平:__<span id="距离下班小时id">00</span>__时__<span id="距离下班分钟id">00</span>__分__<span            id="距离下班秒id">00</span>__秒</div>    <div id="进度条" style="display: flex;">        <div id="进度条divid"            style="margin-top: 2px;display:inline;float:left;width: 100%;height: 10px;border: 1px solid #565656; background: white; position: relative;">            <div id="实时进度条divid"                style="position: absolute;    line-height: initial; z-index: 2; height: 10px; width: 100%;  clip: rect(0px, 0, 10px, 0px);background: linear-gradient(90deg, rgb(187 255 168), rgb(81, 214, 14), rgb(15, 108, 18));text-align: center;font-size: 5px;    color: black;">            </div>            <div id="进度条数值divid"                style="position: absolute;line-height: initial;z-index: 2;height: 10px;width: 100%;text-align: center;font-size: 5px;color: black;margin-top: -2px;">                0% </div>        </div>    </div>    <div id="今日收入divid">💰今收入(越南盾):<span id="今日已收入id">0</span>/<span id="今日总收入id">0</span></div>    <div id="摸鱼计时divid">🐟已摸鱼:__<span id="摸鱼计时小时id">00</span>__时__<span id="摸鱼计时分钟id">00</span>__分__<span            id="摸鱼计时秒id">00</span>__秒<br><span id="摸鱼提醒id"></span></div></div>';
            element.insertAdjacentElement('afterend', 自定义div);


            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");
            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 摸鱼计时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");
            今日总收入id.textContent = 当日工资;

            setInterval(function () {

                let 当前时间 = new Date();

                let 摸鱼时间间隔 = 当前时间 - 摸鱼开始时间;
                // let 摸鱼计时天数 = Math.floor(摸鱼时间间隔 / (1000 * 60 * 60 * 24));
                let 摸鱼计时小时 = Math.floor((摸鱼时间间隔 % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
                let 摸鱼计时分钟 = Math.floor((摸鱼时间间隔 % (1000 * 60 * 60)) / (1000 * 60));
                let 摸鱼计时秒 = Math.floor((摸鱼时间间隔 % (1000 * 60)) / 1000);
                // 摸鱼计时天数id.textContent = 摸鱼计时天数;
                摸鱼计时小时id.textContent = 摸鱼计时小时.toString().padStart(2, '0');
                摸鱼计时分钟id.textContent = 摸鱼计时分钟.toString().padStart(2, '0');
                摸鱼计时秒id.textContent = 摸鱼计时秒.toString().padStart(2, '0');

                if (摸鱼计时分钟 > 5) {
                    摸鱼提醒id.textContent = "摸鱼超过5分钟了,该去看看态势感知平台啦!";
                } else {
                    摸鱼提醒id.textContent = "";
                }

                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.toString().padStart(2, '0');
                已经工作分钟id.textContent = minutes.toString().padStart(2, '0');
                已经工作秒id.textContent = seconds.toString().padStart(2, '0');

                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);
                    let 距离下班小时 = days * 24 + hours
                    距离下班小时id.textContent = 距离下班小时.toString().padStart(2, '0');;
                    距离下班分钟id.textContent = minutes.toString().padStart(2, '0');;
                    距离下班秒id.textContent = seconds.toString().padStart(2, '0');;
                }

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



                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 = days.toString().padStart(2, '0');
                    活动结束小时id.textContent = hours.toString().padStart(2, '0');
                    活动结束分钟id.textContent = minutes.toString().padStart(2, '0');
                    活动结束秒id.textContent = seconds.toString().padStart(2, '0');
                }


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

    function 进度条更新(进度条divid, 实时进度条divid, 进度条数值divid, 当前进度) {
        // 获取总进度条的宽度
        var allWidth = parseInt(getStyle(进度条divid, 'width'));
        // 设定内层两个div的文字内容一样
        进度条数值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];
            }
        }
    }
})();