【油猴脚本】天津工业大学URP教务系统查看本学期详细成绩V2.0(平时、期中、期末、实验等详细分)

此方法仅限电脑端,2024年1月14日已失效

快捷安装地址(需浏览器已安装油猴脚本):

https://greasyfork.org/zh-CN/scripts/484461

使用效果:

V1旧版效果图V1旧版效果图

V2新版效果图V2新版效果图

适用范围:

“本学期成绩”页面
https://jwxs.tiangong.edu.cn/student/integratedQuery/scoreQuery/thisTermScores/index

新建脚本方法:

1.在Chrome或Edge浏览器内安装油猴Tampermonkey插件(具体方法可以百度/哔哩哔哩寻找)
2.找到脚本图标,点击“管理面板”,如下图

点击脚本图标后页面点击脚本图标后页面

3.右上方区域找到“+”的图标,点击,如下图
示意图示意图

4.将下方代码覆盖掉原有内容,按下Ctrl+S快捷键保存
5.打开“本学期成绩”页面

油猴脚本代码(安装油猴脚本方法略):

// ==UserScript==
// @name         强制开启详细分数查询
// @author       Drzad
// @match        https://jwxs.tiangong.edu.cn/student/integratedQuery/*
// @description  适用于天津工业大学URP高校教学管理与服务平台“本学期成绩查询列表”页面,能够自动显示详细分数和分数代码
// @grant        none
// @version      2.1
// ==/UserScript==

(function() {
    'use strict';
    $("#showScoreDetail").val("1");

    // 成绩类别映射
    const scoreCategoryMapping = {
        "001-1": "课堂成绩(平时)",
        "001-2": "课堂成绩(期中)",
        "001-3": "课堂成绩(期末)",
        "002-1": "实验成绩(平时)",
        "002-2": "实验成绩(期中)",
        "002-3": "实验成绩(期末)",
        "003-1": "实践成绩(平时)",
        "003-2": "实践成绩(期中)",
        "003-3": "实践成绩(期末)"
    };

    // 创建一个观察者对象
    let observer = new MutationObserver((mutations, obs) => {
        let table = $('#scoretbody tr');
        if (table.length) {
            // 表格存在,执行脚本
            modifyTableAndRunAjax();
            // 停止观察
            obs.disconnect();
        }
    });

    // 配置观察者选项:仅监视子元素的变动
    let config = { childList: true, subtree: true };

    // 选择需要观察变动的节点
    let targetNode = document.body;

    // 启动观察者
    observer.observe(targetNode, config);

    // 修改表格并运行AJAX的函数
    function modifyTableAndRunAjax() {
        // 向表头添加新列
        $('table.table thead tr').append('<th>成绩明细</th>');

        // 向每个表格行添加新数据列
        $('table.table tbody tr').append('<td class="score-details"></td>');

        // 对<tbody>内的每个<tr>元素进行遍历
        let rows = $('table.table tbody tr');
        rows.each(function() {
            let row = $(this);
            let onclickElement = row.find('[onclick]');
            if (onclickElement.length) {
                let onclickArgs = onclickElement.attr('onclick');
                let argsMatch = onclickArgs.match(/\((.*?)\)/);

                if (argsMatch && argsMatch[1]) {
                    let args = argsMatch[1].split(',').map(arg => arg.trim().replace(/"/g, ''));
                    if (args.length >= 4) {
                        let zxjxjhh = args[0];
                        let kch = args[1];
                        let kxh = args[2];
                        let kssj = args[3];

                        // 发送Ajax请求
                        $.ajax({
                            url: "/student/integratedQuery/scoreQuery/subitemScore/look",
                            type: "post",
                            data: `zxjxjhh=${zxjxjhh}&kch=${kch}&kxh=${kxh}&kssj=${kssj}&param=1`,
                            dataType: "json",
                            success: function (response) {
                                if (response.scoreDetailList && response.scoreDetailList.length > 0) {
                                    let scoreDetails = response.scoreDetailList.map(detail => {
                                        let scoreCategory = scoreCategoryMapping[detail.id.scoreSubItemCode] || detail.id.scoreSubItemCode;
                                        return `${scoreCategory}: ${detail.subItemScore}`;
                                    }).join('<br>');

                                    // 在新添加的单元格中显示成绩明细
                                    row.find('.score-details').html(scoreDetails);
                                }
                            },
                            error: function (error) {
                                console.log('请求失败: ', error);
                            }
                        });
                    }
                }
            } else {
                // 修复未定成绩时候的多余格
                row.find('td:empty:first').remove();
            }
        });
    }

})();

注:此方法仅供学习交流使用,免费分享,脚本开源,不可用于任何形式的销售。

已有 13 条评论

  1. Filet de poisson Filet de poisson

    大佬,这个代码好像不太行了

  2. 2023年12月发现该方法已失效,原因是URP系统更新了对详细成绩的业务代码。测试发现,仍然存在开放接口能够查询,具体方法比较麻烦,正在寻找方便快捷的方法,我会尽快更新。

  3. zz zz

    大佬请问麻烦的方法查看平时成绩怎么看呀,可以出个教程吗,自己看源程序还是有课程明细的程序在的,但是不知道怎么改TT

    1. 更新后那些原来的课程明细的接口都被关闭了,前台也不调用了,调用的也没返回结果

  4. tgu tgu

    坐等大佬更新

  5. LMZ LMZ

    求大佬更新

  6. LMZ LMZ

    求大佬更新

  7. WYY WYY

    求大佬更新

  8. aaa aaa

    求大佬更新

  9. Reggie Reggie

    好像还是失效

  10. xdong xdong

    大佬,现在这个又看不了了

    1. 离谱,发出来第4天,又把接口给我封了,真就网络攻防了

添加新评论