// ==UserScript== // @name scnu教务系统优化 // @namespace https://jkey104.gitee.io/ // @version 2.0 // @description 华南师范大学新教务系统优化 // @author Jkey // @match https://jwxt.scnu.edu.cn/xtgl/index_initMenu.html // @match https://jwxt.scnu.edu.cn/xtgl/index_initMenu.html?jsdm=* // @match https://jwxt.scnu.edu.cn/cjcx* // @match https://jwxt.scnu.edu.cn/cdjy* // @grant none // @license GPL // @downloadURL none // ==/UserScript== (function () { 'use strict'; var localAddress = location.href; // 登录界面跳过5秒 if (localAddress.indexOf("initMenu") > -1) { if (document.getElementById('btn_yd')) { $("#btn_yd").removeAttr("disabled"); document.getElementById("btn_yd").className = "btn btn-default btn-primary"; $("#badge_text").remove(); $("#btn_yd").click(function () { window.location.href = _path + '/xtgl/login_loginIndex.html'; }); } } // 预约教室页面跳过5秒等待 else if (localAddress.indexOf("cdjy") > -1 && document.getElementById('btn_yd')) { $("#btn_yd").removeAttr("disabled"); document.getElementById("btn_yd").className = "btn btn-default btn-primary"; $("#badge_text").remove(); $("#btn_yd").click(function () { //全局文档添加参数 $(document).data("offDetails", "1"); //加载功能主页:且添加不再进入提示信息页面的标记字段 onClickMenu.call(this, '/cdjy/cdjy_cxCdjyIndex.html?doType=details', 'N211205', { "offDetails": "1" }); }); } // 成绩查询界面加入自动计算绩点 else if (localAddress.indexOf("cjcx") > -1) { // 添加绩点span var newTextNode = document.createElement("span"); newTextNode.innerText = "平均绩点:加载中"; newTextNode.id = "avgGPA"; $("#yhgnPage").append(newTextNode); // 首次进入 let observer = new MutationObserver(function () { console.log("发生了改变"); if (document.getElementById("load_tabGrid").style.display === "none") { setGPA(); observer.disconnect(); } }); observer.observe(document.getElementById("load_tabGrid"), { attributes: true, attributeFilter: ['style'] }); // 监听查询按钮 document.getElementById("search_go").onclick = function () { console.log("点击"); $("span#avgGPA").text('平均绩点:加载中'); let observer = new MutationObserver(function () { console.log("发生了改变"); if (document.getElementById("load_tabGrid").style.display === "none") { setGPA(); observer.disconnect(); } }); observer.observe(document.getElementById("load_tabGrid"), { attributes: true, attributeFilter: ['style'] }); } } function setGPA() { if (Number($('span#sp_1_pager').text()) === 1) { var sumCredit = 0, GPA = 0; var credits_grades = document.querySelectorAll("td[aria-describedby='tabGrid_xfjd']"); var credits = document.querySelectorAll("td[aria-describedby='tabGrid_xf']"); for (let i = 0; i < credits.length; i++) { sumCredit += Number(credits[i].innerText); GPA += Number(credits_grades[i].innerText); } GPA /= sumCredit; $("span#avgGPA").text('平均绩点:' + GPA.toFixed(2)); return; } var gnmkdm = $('input#gnmkdmKey').val(); var user = $('input#sessionUserKey').val(); var nd = new Date().getTime(); var xqm = document.getElementById("xqm"); var xqm_val = xqm[xqm.selectedIndex].value; var xnm = document.getElementById("xnm"); var xnm_val = xnm[xnm.selectedIndex].value; // 发送请求 fetch("https://jwxt.scnu.edu.cn/cjcx/cjcx_cxDgXscj.html?doType=query&gnmkdm=" + gnmkdm + "&su=" + user, { "headers": { "content-type": "application/x-www-form-urlencoded;charset=UTF-8" }, "body": "xnm=" + xnm_val + "&xqm=" + xqm_val + "&_search=false&nd=" + nd + "&queryModel.showCount=100&queryModel.currentPage=1&queryModel.sortName=&queryModel.sortOrder=asc", "method": "POST" }).then(response => response.json()).then(data => { var sumCredit = 0, GPA = 0; // console.log(data) for (let i = 0; i < data.items.length; i++) { sumCredit += Number(data.items[i].xf); GPA += Number(data.items[i].xfjd); } GPA /= sumCredit; $("span#avgGPA").text('平均绩点:' + GPA.toFixed(2)); }); } })();