// ==UserScript== // @name HSK主监考人数统计 // @namespace http://www.hanyu123.cn/ // @version 1.2.3 // @description 统计HSK、HSKK各场所需的主监考人数,并顺带汇总报名费(分成数 及 总数)。2025-02-25编辑。 // @author 微信公众号@汉语教学技术研究 // @match https://admin.chinesetest.cn/manager/* // @icon https://www.chinesetest.cn/image/zh/favicon.ico // @grant GM_addStyle // ==/UserScript== (function() { 'use strict'; // Your code here... // 取消jQuery引用,避免版本冲突 // var jquery = document.createElement('script'); // jquery.src = "https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js";//若调试页面是https的这里也修改为https. // document.getElementsByTagName('head')[0].appendChild(jquery); // jQuery.noConflict() let div_info = document.createElement("div"); div_info.innnerHTML ='统计结果'; var dropBox = document.createElement('div'); // dropBox.style.display = 'none'; // dropBox.style.width = '400px'; // dropBox.style.height = '200px'; // dropBox.style.fontSize = '14px'; // dropBox.style.color = '#888'; dropBox.setAttribute('id', 'dropbox'); dropBox.setAttribute('class', 'myClass'); GM_addStyle('#dropbox{display:none; width:400px;height:200px;padding:8px; }'); let btn=document.createElement("button"); btn.innerHTML="统计主监考人数"; //innerText也可以,区别是innerText不会解析html btn.onclick=function(){ //code //alert("开始统计"); //修改计划: //1、读取并统计所有日期 //2、七-九级 与 其他级别分开 //3、HSK初中高分开 function count_teacher(count){ var teacher = 0; if(count==1) { teacher =1; } else if(count>=2 && count <=30) { teacher =2; } else if(count>30) { var addition= count-30; var more_teacher = Math.ceil(addition / 10);//向上取整 teacher =2 + more_teacher; } return teacher; }; //--函数部分结束 //读取HSK考试列表 var table = $("#kmtj13_content table"); //读取HSKK考试列表 var table_hskk = $("#kmtj16_content table"); //用于保存全部考试日期 var exam_date_list = new Array(); //遍历HSK考试列表 //var date = table.find("tr").eq(1).children().eq(1).text(); //$("#userTable").find("tr").find("td:eq(0)") var date = table.find("tr").find("td:eq(1)"); var date_list_hsk = new Array();//保存考试日期 var count =0; for (var i = 0;i < date.length;i++) { //alert(date.eq(i).text()); count = count+1; exam_date_list.push(date.eq(i).text()); } //遍历HSKK考试列表 //var date = table.find("tr").eq(1).children().eq(1).text(); //$("#userTable").find("tr").find("td:eq(0)") var date_hsk = table_hskk.find("tr").find("td:eq(1)"); var date_list_hskk = new Array();//保存考试日期 var count =0; for (var i = 0;i < date_hsk.length;i++) { //alert(date.eq(i).text()); count = count+1; exam_date_list.push(date_hsk.eq(i).text()); } //去重 exam_date_list = Array.from(new Set(exam_date_list)) // alert(date_list_hsk.length); // 3 // for (var i = 0;i < date_list_hsk.length;i++) { // alert(date_list_hsk[i]) // } //分日期统计 //分日期显示统计 var message = ''; for (var i = 0;i < exam_date_list.length;i++) { var cur_date = exam_date_list[i];//当前统计的日期 var total_fee = 0;//同一日期的考试的总报名费 var tr_list_hsk = table.find("tr:contains(" + cur_date +")"); var tr_list_hskk = table_hskk.find("tr:contains(" + cur_date +")"); var morning_hsk=0,afternoon_hsk=0,hsk789=0;//HSK各级人数初始化 var hskk_basic=0,hskk_intermediate=0,hskk_advanced=0;//HSKK各级人数初始化 var total = 0, total_hsk = 0, total_hskk = 0; //统计总人次 //统计该日期的HSK各场考试人数 tr_list_hsk.each(function(){ var tdArr = $(this).children(); //alert(tdArr.size()); var grade = tdArr.eq(0).text(), count = Number(tdArr.eq(4).text()); if(grade== 'HSK二级' || grade== 'HSK四级'||grade== 'HSK六级') { morning_hsk = morning_hsk + count; } else if(grade== 'HSK一级' || grade== 'HSK三级'||grade== 'HSK五级') { afternoon_hsk = afternoon_hsk + count; } else if(grade== 'HSK(七—九级)') { hsk789 = hsk789 + count; //alert(afternoon_hsk); } }); total_hsk = morning_hsk + afternoon_hsk + hsk789; //统计HSK各场考试报名费 tr_list_hsk.each(function(){ var tdArr = $(this).children(); //alert(tdArr.size()); var grade = tdArr.eq(0).text(), count = Number(tdArr.eq(4).text()); switch (grade) { case 'HSK一级': total_fee += 150 * count; break; case 'HSK二级': total_fee += 250 * count; break; case 'HSK三级': total_fee += 350 * count; break; case 'HSK四级': total_fee += 450 * count; break; case 'HSK五级': total_fee += 550 * count; break; case 'HSK六级': total_fee += 650 * count; break; case 'HSK(七—九级)': total_fee += 1050 * count;//HSK(七—九级)的费用,相当于 HSK六级 + HSKK高级,即650+400 break; default: ; } }); //统计该日期的HSKK各场考试人数 tr_list_hskk.each(function(){ var tdArr = $(this).children(); //alert(tdArr.size()); var grade = tdArr.eq(0).text(), count = Number(tdArr.eq(4).text()); if(grade== 'HSKK(初级)') { hskk_basic = hskk_basic + count; } else if(grade== 'HSKK(中级)' ) { hskk_intermediate = hskk_intermediate + count; } else if(grade== 'HSKK(高级)') { hskk_advanced = hskk_advanced + count; //alert(afternoon_hsk); } }); total_hskk = hskk_basic + hskk_intermediate + hskk_advanced; total = total_hsk + total_hskk; //统计该日期的HSKK各场考试报名费 tr_list_hskk.each(function(){ var tdArr = $(this).children(); //alert(tdArr.size()); var grade = tdArr.eq(0).text(), count = Number(tdArr.eq(4).text()); if(grade== 'HSKK(初级)') { total_fee += 200 * count; } else if(grade== 'HSKK(中级)' ) { total_fee += 300 * count;; } else if(grade== 'HSKK(高级)') { total_fee += 400 * count;; //alert(afternoon_hsk); } }); if(morning_hsk > 0){ message += '\r\n' + cur_date + '上午(二四六级)共有' + morning_hsk + '名考生,' +(count_teacher(morning_hsk) == '请报汉考国际审批' ? '请报汉考国际审批' : '至少需要主监考' + count_teacher(morning_hsk) + '人'); } if(afternoon_hsk > 0){ message += '\r\n' + cur_date + '下午(一三五级)共有' + afternoon_hsk + '名考生,' +(count_teacher(afternoon_hsk) == '请报汉考国际审批' ? '请报汉考国际审批' : '至少需要主监考' + count_teacher(afternoon_hsk) + '人'); } if(hsk789 > 0){ message += '\r\n' + cur_date + '中午至下午(七-九级)共有' + hsk789 + '名考生,' +(count_teacher(hsk789) == '请报汉考国际审批' ? '请报汉考国际审批' : '至少需要主监考' + count_teacher(hsk789) + '人'); } if(hskk_intermediate > 0){ message += '\r\n' + cur_date + '上午(HSKK中级)共有' + hskk_intermediate + '名考生,' +(count_teacher(hskk_intermediate) == '请报汉考国际审批' ? '请报汉考国际审批' : '至少需要主监考' + count_teacher(hskk_intermediate) + '人'); } if(hskk_basic > 0){ message += '\r\n' + cur_date + '下午(HSKK初级)共有' + hskk_basic + '名考生,' +(count_teacher(hskk_basic) == '请报汉考国际审批' ? '请报汉考国际审批' : '至少需要主监考' + count_teacher(hskk_basic) + '人'); } if(hskk_advanced > 0){ message += '\r\n' + cur_date + '上午(HSKK高级)共有' + hskk_advanced + '名考生,' +(count_teacher(hskk_advanced) == '请报汉考国际审批' ? '请报汉考国际审批' : '至少需要主监考' + count_teacher(hskk_advanced) + '人'); } message += '\r\n' + cur_date + '\r\n' + 'HSK(一到六级 + 七-九级)共有'+ total_hsk + '名考生,' + 'HSKK(初、中、高)共有'+ total_hskk + '名考生。' + '\r\n' + '合计'+ total + '人次参加考试。' message += '\r\n' + cur_date + ' 报名费统计:' + '\r\n' + total_fee*0.4 + "(" + total_fee + ")"; } alert(' HSK考试统计:\r\n' + message + '\r\n\r\n'); //也输出到log,方便复制内容 $("#dropbox").html(' HSK考试统计:\r\n' + message.replace(/(\n|\r|\r\n|↵)/g, '
'));; //$("#dropbox").show(); console.log(' HSK考试统计:\r\n' + message); } //添加到页面 document.body.append(dropBox); $("#dropbox").html('统计信息111'); //$("#siteNotice").after(div_info) // let btn1=document.createElement("button"); // btn1.innerHTML="统计主监考人数"; $("#siteNotice").after(btn); })();