薪酬管理系统增强插件

获取全年数据统计

// ==UserScript==
// @name         薪酬管理系统增强插件
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  获取全年数据统计
// @author       luc
// @match        http://maxvision.eicp.net:8088/salary/*
// @icon         http://maxvision.eicp.net:52800/maxhome/ui/images/pmi.png
// @grant        GM_xmlhttpRequest
// @grant        GM_setValue
// @grant        GM_getValue
// @run-at       document-idle
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    const today = new Date();
    const currentYear = today.getFullYear();
    let currentMonth = today.getMonth() + 1;

    if (today.getDate() < 20) {
        currentMonth -= 1;
    }

    let totalSalarySum = 0;
    let realSalarySum = 0;
    let gsStrSum = 0;

    async function fetchDataForMonths() {
        for (let month = 1; month <= currentMonth; month++) {
            const monthStr = `${currentYear}-${month < 10 ? '0' : ''}${month}`;

            const url = `http://maxvision.eicp.net:8088/salary/sa/salaryGrant/selectByMonthId?month=${monthStr}`;

            await new Promise((resolve, reject) => {
                GM_xmlhttpRequest({
                    method: 'GET',
                    url: url,
                    onload: function(response) {
                        try {
                            const data = JSON.parse(response.responseText);
                            totalSalarySum += parseFloat(data.totalSalary || 0);
                            realSalarySum += parseFloat(data.realSalary || 0);
                            gsStrSum += parseFloat(data.gsStr || 0);
                        } catch (error) {
                        } finally {
                            resolve();
                        }
                    },
                    onerror: function() {
                        resolve();
                    }
                });
            });
        }


        // 获取目标父元素
        const parentElement = document.querySelector('.kt-portlet.gz-cont');

        // 你要插入的HTML元素
        const newHtml = `
<div class="kt-portlet gz-cont">
    <div class="kt-portlet__body" style="padding:20px;position: relative;">
        <p class="xz-title">全年工资累计</p>
        <div class="persalary-poas">
        </div>
        <form class="layui-form chakan-modal persalary-list" action="" id="addUser">
            <input type="hidden" id="id2" name="id" value="">
            <div class="layui-tab" style="margin-bottom:0;">
                <div class="layui-tab-content">
                    <div class="table-text-tile" style="margin-top: 10px;">截至目前(${currentYear}/01~${currentYear}/${currentMonth-1 < 10 ? '0' : ''}${currentMonth-1}):</div>
                    <div class="layui-tab-item layui-show">
                        <div class="persalary-ul">
                            <ul>
                                <li>
                                    <span>累计薪酬:</span>
                                    <span class="lispan">${totalSalarySum.toFixed(2)}</span>
                                </li>
                                <li>
                                    <span>累计实发薪资:</span>
                                    <span class="lispan">${realSalarySum.toFixed(2)}</span>
                                </li>
                                <li>
                                    <span>累计缴纳个税:</span>
                                    <span class="lispan">${gsStrSum.toFixed(2)}</span>
                                </li>
                            </ul>
                        </div>
                    </div>
                </div>
            </div>
        </form>
    </div>
</div>
`;

        if (parentElement) {
            parentElement.insertAdjacentHTML('afterend', newHtml);
        } else {
            console.log('目标元素未找到');
        }
    }

    fetchDataForMonths();
})();