hbjs质量技术网络学习试卷选择助手

答题进度提示,答案备份和恢复

当前为 2023-06-02 提交的版本,查看 最新版本

// ==UserScript==
// @name         hbjs质量技术网络学习试卷选择助手
// @namespace    x_jianp
// @version      1.0.9
// @description  答题进度提示,答案备份和恢复
// @author       x_jianp
// @match        http://mis.hebjs.com.cn/*
// @grant        unsafewindow
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_listValues
// @grant        GM_deleteValue
// @require      http://code.jquery.com/jquery-latest.js
// ==/UserScript==
// 本脚本发布地址在 https://gf.qytechs.cn/zh-CN/scripts/435675

//1.0.6更新:答题统计年限增加2023年,
//1.0.5更新:答题统计年度显示图片改为竖向,15x24p,精简显示效果。更正部分试卷没有统计到答案的bug。

//图片版本更正:
//2023 <img src="https://img1.imgtp.com/2023/02/13/CeB1pI4o.png" alt="V2023.png" title="V2023.png" />
//2022 <img src="https://img1.imgtp.com/2023/02/13/qDkns9Hy.svg" alt="v2022.svg" title="v2022.svg" />
//2021 <img src="https://img1.imgtp.com/2023/02/13/06CyEfBW.svg" alt="v2021.svg" title="v2021.svg" />
// 2021 https://imgloc.com/i/cglio 02/13, 保存1年
// 2022 https://imgloc.com/i/cg0SA
// 2023 https://imgloc.com/i/cgwbN

// 成绩查询==================================

(function() {
    'use strict';

    //成绩进度查询
    //
    //在"/Technic/Exam/AnswerNotes/ListAsJson?UnitId=1&&rows=200"文件中有全部答题记录。
    //1.读取JSON,处理数据
    //2.便历页面中的试卷名称,添加年度标识图标,实现鼠标on事件,显示成绩。


    //在规范答题的时候刷新成绩,不再做存储。
    let myJson = new Object;
    let yanzheng = null;
    try {
        yanzheng = document.querySelector("#formMain > table > tbody > tr:nth-child(1) > td > h3");
    } finally {}
    if (yanzheng != null) {
        if (yanzheng.innerText = '请选择规范开始答题'){
            // alert("新成绩读入开始工作");
            console.log("成绩读取开始");
            //let keys = GM_listValues();
            //for (let key of keys){ GM_deleteValue(key);}
            var xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                    //GM_setValue('chengji',this.responseText);
                    myJson = JSON.parse(this.responseText).rows;
                    //chengji = myJson.rows;
                    //console.log(myJson);
                    for (let j=0 ; j<6;j++ ){
                        let tiku = document.querySelector("#formMain > table > tbody > tr:nth-child("+String(j*2+3)+") > td");
                        let tishu = tiku.children.length;
                        for (let i=0;i<tishu;i++){
                            //innerText 将取回文字中的两个空格,精简成了一个。造成部分试卷成绩查询失败。原因是innerText是基于浏览器显示的,会基于CSS,性能比不上textContent。
                            //                            let tiname = tiku.children[i].querySelector("span > span.l-btn-text").innerText;
                            let tiname = tiku.children[i].querySelector("span > span.l-btn-text").textContent;
                            //筛选数据.
                            let chengji = myJson.filter(function(e){ return e.BankName.value==tiname});
                            //console.log(chengji);
                            let years = {};
                            if (chengji.length != 0) {
                                for (let k=0; k<chengji.length;k++){
                                    var year = chengji[k].CreatedDate.split("-")[0];
                                    years[year]=year;
                                    //console.log(years);
                                }
                                for (var key in years){

                                    var imgy = document.createElement("img");

                                    switch(key) {
                                        case "2020":
                                            imgy.src = "https://img1.imgtp.com/2022/08/23/lMc5hns8.svg";
                                            break;
                                        case '2021':
                                            imgy.src = "https://i.imgloc.com/2023/02/13/cglio.png" ;
                                            break;
                                        case '2022':
                                            imgy.src = "https://i.imgloc.com/2023/02/13/cg0SA.png" ;
                                            break;
                                        case '2023':
                                            imgy.src = "https://i.imgloc.com/2023/02/13/cgwbN.png";
                                            break;
                                        default:
                                            var btn = document.createElement("button");
                                            var btt1 = document.createTextNode(years[key]);
                                            btn.appendChild(btt1);
                                            tiku.children[i].appendChild(btn);
                                    }
                                    tiku.children[i].appendChild(imgy);
                                }
                            } else {
                                console.log(tiname+"没成绩");
                            }
                        }
                    }
                }
            };
            xmlhttp.open("GET", "/Technic/Exam/AnswerNotes/ListAsJson?UnitId=1&&rows=200", true);
            xmlhttp.send();


        }
    }

})();
//成绩查询结束===========================================

/* let time = "2019-08-01 18:56:38";
let dateTime = new Date(time.replace(/-/g, "/"));  // replace方法将 - 转为 /

let dateNow = new Date();  // 获取当前时间
let timeDiff = dateNow.getTime() - dateTime.getTime();  // 时间差的毫秒数
// timeDiff = 时间戳差值

let days = Math.floor(timeDiff / (24 * 3600 * 1000)); // 计算出天数
let leavel1 = timeDiff % (24 * 3600 * 1000); // 计算天数后剩余的时间
let hours = Math.floor(leavel1 / (3600 * 1000)); // 计算天数后剩余的小时数
let leavel2 = timeDiff % (3600 * 1000); // 计算剩余小时后剩余的毫秒数
let minutes = Math.floor(leavel2 / (60 * 1000)); // 计算剩余的分钟数
console.log(`${days}天${hours}时${minutes}分`) */

//答题辅助================================================
(function() {
    'use strict';
    //答题助手
    jQuery(function () {
    });

    try { var myFormDoc = document.getElementById("formMain").children[11].children[0]; //页面结构变了的时候,注意这里
        } catch(e){} finally{}
    if (myFormDoc != null) {
        var qnum = (myFormDoc.children.length-3)/2;
        var butt = $('<a/>',{
            'id': 'upAnswer',
            'href':'javascript:void(0)',
            'onclick':'up_myanswer()'
        }).text('答案恢复');
        var dbutt = $('<a/>',{
            'id': 'downAnswer',
            'href':'javascript:void(0)',
            'onclick':'down_myanswer()'
        }).text('      答案导出');


        unsafeWindow.up_myanswer = function up_myanswer() {
            alert("该插件仅用于答题暂停时,答案备份和恢复,请正规使用。规范学习");
            console.log("btn_ok");
            //var timeDiff = 0;
            var dateNow = new Date();
            let timerp=GM_getValue('timer');
            if (timerp == undefined){var dataTime = new Date("1984-1-1");} else { dataTime = new Date(timerp)};
            var timeDiff=dateNow.getTime() - dataTime.getTime();
            if (timeDiff > 20*60*1000) {
                GM_setValue("timer",dateNow.toUTCString());
                var mytxt = document.getElementById("myinputAnswer").value.split("\n");
                if (mytxt.length != 0){
                    try {  for (var i=0;i<mytxt.length;i++){
                        document.getElementById(String(i)+"_MyAnswer").value=mytxt[i];
                        var iqus = mytxt[i].split(';');
                        var qusid = document.getElementById(String(i)+"_QuestionId").value; //更正题库答案的时候会影响QUSID的数值,不再是连续的,所以每次都需要读取ID来继续分步。这意味着以前的答案可能拿不了满分
                        for (var j=0;j<iqus.length;j++){
                            try {document.getElementsByName(String(i)+"_MyAnswerItem_"+String(qusid))[j].value=iqus[j];
                                } catch(e) {} finally {}
                            //console.log(String(i)+"_MyAnswerItem_"+String(qstarnum + i));
                            //console.log(document.getElementById(String(i)+"_MyAnswerItem_"+String(qstarnum + i)));
                        }
                        //document.getElementById(String(i)+"_MyAnswer").type=""; //显示答案统计信息
                    }
                        }catch(e) {} finally {}
                }
            } else { alert("两次答题时间间隔未满20分钟,请保持克制~!!");};
        }


        unsafeWindow.down_myanswer = function down_myanswer(){
            var mytxt = ""
            for (var i=0;i<qnum;i++){
                mytxt += document.getElementById(String(i)+"_MyAnswer").value + "\n";
            }
            document.getElementById("myinputAnswer").value=mytxt;
        }

        $("#formMain").append(butt);
        $('#formMain').append(dbutt);
        $('#formMain').append('<textarea id="myinputAnswer"></textarea>');
    }
    //$('#formMain').append('<button id="upanswer_btn">上传答案</button>');
    /*
    for (var i=0;i<qnum;i++)
    {
        document.getElementById(String(i)+"_MyAnswer").type="text";
    }
*/
    //document.getElementById("formMain").appendChild(btn);
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址