适用于天津工业大学URP高校教学管理与服务平台“本学期成绩查询列表”页面,能够自动显示详细分数和分数代码
当前为
// ==UserScript==
// @name TGU教务强制开启详细分数查询
// @author Drzad
// @match https://jwxs.tiangong.edu.cn/student/integratedQuery/*
// @description 适用于天津工业大学URP高校教学管理与服务平台“本学期成绩查询列表”页面,能够自动显示详细分数和分数代码
// @grant none
// @version 2.0
// @namespace https://greasyfork.org/users/820213
// ==/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": "实践成绩(期末)"
};
function checkAndModifyTable() {
let table = $('#scoretbody tr');
if (table.length) {
// 表格存在,执行脚本
modifyTableAndRunAjax();
} else {
// 如果表格不存在,等待一段时间后再次检查
setTimeout(checkAndModifyTable, 500);
}
}
// 启动检查
checkAndModifyTable();
// 修改表格并运行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}¶m=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();
}
});
}
})();