计算总学分

此脚本用来计算江西科技师范大学教务管理系统“学生学业情况查询”页面已经获得的学分;

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         计算总学分
// @namespace    http://tampermonkey.net/
// @version      0.10
// @description  此脚本用来计算江西科技师范大学教务管理系统“学生学业情况查询”页面已经获得的学分;
// @author       MoMingLog
// @include      *//jwglxt.jxstnu.edu.cn/jwglxt/xsxy/xsxyqk_cxXsxyqkIndex.html*
// @include      *//172-18-4-223.vpn.jxstnu.edu.cn:8118/jwglxt/xsxy/xsxyqk_cxXsxyqkIndex.html*
// @icon         https://s4.ax1x.com/2021/12/07/o6DNOH.png
// @grant        none
// @license      GNU GPLv3
// ==/UserScript==

(function () {
    'use strict';
    function expand() {
        /**
        * 一键展开
        */
        var expandList = document.querySelectorAll(".expandable-hitarea");
        for (var i = 0; i < expandList.length; i++) {
            var xf = expandList[i].click();
        }
    }
    function expandAll() {
        /**
        * 一键展开(全部)
        */
        expand();
        expandAndCollapMore();
    }
    function collap() {
        /**
        * 一键收拢
        */
        var collapList = document.querySelectorAll(".collapsable-hitarea");
        for (var i = 0; i < collapList.length; i++) {
            var xf = collapList[i].click();
        }

    }

    function expandAndCollapMore() {
        /**
        * 展开/收拢下拉列表
        */
        var moreList = document.querySelectorAll(".more");
        for (var i = 0; i < moreList.length; i++) {
            moreList[i].click();
        }
    }

    collap();
    function getRealScore() {
        /**
         * 获取实际学分
         */
        // 获取当前网页的域名
        var domain = window.location.host;
        var gnmkdm = $("#gnmkdmKey").attr("value");
        var su = $("#sessionUserKey").attr("value");
        var url = "http://" + domain + "/jwglxt/xsxy/xsxyqk_cxKczxAllIndex.html?doType=query&gnmkdm=" + gnmkdm + "&su=" + su + "&sf_request_type=ajax";
        var data = {
            "_search": false,
            "nd": new Date().getTime(),
            "queryModel.showCount": 15,
            "queryModel.currentPage": 1,
            "queryModel.sortName": "",
            "queryModel.sortOrder": "asc",
            "time": 0
        };
        var sum = 0;
        $.ajax({
            url: url,
            type: "POST",
            data: data,
            async: false,
            success: function (data) {
                var realScore = data.items;
                realScore.forEach(element => {
                    var hdxf = parseFloat(element.hdxf);
                    sum += hdxf;
                });
            },
            error: function (data) {
            }
        });
        return sum;

    }
    var majorCategories = document.querySelectorAll('ul.treeview>li>ul>li>div.title>p.title1');
    var reg = /\s获得学分:([\.\d+]*)/;

    var majorScoreSum = 0;

    for (var i = 0; i < majorCategories.length; i++) {
        var majorCategorieStr = majorCategories[i].innerText;
        var majorScore = majorCategorieStr.match(reg)[1];
        majorScoreSum += parseFloat(majorScore);
    }

    var otherScoreTrs = document.querySelectorAll('#tbodyqtkcxfyq tr td[name="xf"]');

    var otherScoreSum = 0;

    for (var i2 = 0; i2 < otherScoreTrs.length; i2++) {
        var otherScore = otherScoreTrs[i2].innerText;
        otherScoreSum += parseFloat(otherScore);
    }

    var sumScore = majorScoreSum + otherScoreSum;
    var realScore = getRealScore();
    var alertBox = document.querySelector("#alertBox");
    var innerHtmlStr = `
 <div style="position: fixed; top:200px; right: 200px; z-index:999;" id="change">
    <table  cellspacing="1" cellpadding="4" border="0" align="center" >
            <tr>
                <td align="center" colspan="2" height="30px" style="font-size:18px"><b>学分情况</b></td>
            </tr>
            <tr style="background:#288ace55; color:white;border-radius: 60px; " height="30px">
                <th align="center" style="padding:15px 10px 15px 50px">主修课程学分</th>
                <td align="center">` + majorScoreSum + `</td>
            </tr>
            <tr style="background:#5500ff55;color:white" >
                <th align="center" style="padding:15px 10px 15px 50px">其他课程学分</th>
                <td align="center">` + otherScoreSum + `</td>
            </tr>
            <tr style="background:#ffea0055;color: black">
                <th align="center" style="padding:15px 10px 15px 50px">综合学分总和</th>
                <td align="center" style="color:red"><b>` + sumScore + `</b></td>
            </tr>
             <tr style="background:#ff0000;color: white">
                <th class="cat" align="center" style="padding:15px 10px 15px 50px">实际学分</th>
                <td class="cat" align="center" style="color:white"><b>` + realScore + `</b></td>
            </tr>
            <tr>
                <td >
                    <a id="expand_" style="display:block;padding:15px 10px 15px 50px; cursor:pointer" >一键展开</a>
                </td>
                <td >
                    <a id="expandAll_" style="display:block;padding:15px 10px 15px 50px; cursor:pointer;">一键展开(全部)</a>
                </td>
            </tr>
            <tr>
                <td>
                    <a id="expandAndCollapMore_" style="display:block;padding:15px 10px 15px 50px; cursor:pointer">下拉/上收</a>
                </td>
                <td>
                    <a id="collap_" style="display:block;padding:15px 10px 15px 50px; cursor:pointer">一键收拢(全部)</a>
                </td>
            </tr>
        </table>
 </div>
`;
    alertBox.innerHTML += innerHtmlStr;

    var expand_ = document.querySelector("#expand_");
    if (expand_) {
        expand_.addEventListener("click", expand, false);
    }

    var expandAll_ = document.querySelector("#expandAll_");
    if (expandAll_) {
        expandAll_.addEventListener("click", expandAll, false);
    }

    var expandAndCollapMore_ = document.querySelector("#expandAndCollapMore_");
    if (expandAndCollapMore_) {
        expandAndCollapMore_.addEventListener("click", expandAndCollapMore, false);
    }

    var collap_ = document.querySelector("#collap_");
    if (collap_) {
        collap_.addEventListener("click", collap, false);
    }

    // 设置cat的监听事件
    var cat = $(".cat");
    // 设置鼠标样式
    cat.css("cursor", "pointer");
    //  设置title
    cat.attr("title", "点击查看实际学分");
    cat.click(function () {
        var clj = $(".clj");
        clj.click();
    });

})();