1 |
- var t="";for(let e=3e3;e<3400;e++)t+=e.toString()+",";function xe(e,t){return(e=Math.round(e*10**t)/10**t).toFixed(t)}var t=t.slice(0,t.length-1),be=0,Ce=0,s={},ve={},$e={},Ie,datSe,curSe,a;function prevFile(){Ce=(Ce-1+be)%be,u()}function nextFile(){Ce=(Ce+1)%be,u()}function we(){$(".chart").hide(300),$("#fileOutput").html(""),$("#name").html("")}function getFiles(e){s[be]=e.target.files[0],Ce=be,be++,$("#controls").removeClass("disabled"),$("#lbtn").removeClass("disabled"),$("#rbtn").removeClass("disabled"),u(1)}document.onkeydown=function(e){var t=e||window.event||arguments.callee.caller.arguments[0];t&&("ArrowLeft"==t.key?prevFile():"ArrowRight"==t.key&&nextFile())};const o=CryptoJS.enc.Utf8.parse("abcdefgabcdefg12");function Oe(e){e=CryptoJS.lib.CipherParams.create({ciphertext:CryptoJS.enc.Hex.parse(e)});return CryptoJS.AES.decrypt(e,o,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)}function n(e){return CryptoJS.AES.encrypt(e,o,{mode:CryptoJS.mode.ECB,padding:CryptoJS.pad.Pkcs7}).ciphertext.toString()}function e(t){var s,a=new Array,o=t.length;for(let e=0;e<o;e++)65536<=(s=t.charCodeAt(e))&&s<=1114111?(a.push(s>>18&7|240),a.push(s>>12&63|128),a.push(s>>6&63|128),a.push(63&s|128)):2048<=s&&s<=65535?(a.push(s>>12&15|224),a.push(s>>6&63|128),a.push(63&s|128)):128<=s&&s<=2047?(a.push(s>>6&31|192),a.push(63&s|128)):a.push(255&s);return a}function r(e){e=n('{"meId":'+$("#Id").val()+',"seIds":"'+t+'","schoolId":19707,"studentId":"'+e+'"}');fetch("http://36.112.23.77/analysis/api/student/exam/getStudentReportMEVO",{method:"POST",headers:{"Content-type":"application/json"},body:e}).then(e=>{e.text().then(e=>{s[be]=new Blob([e],{type:"text/plain"}),Ce=be,be++,$("#controls").removeClass("disabled"),$("#lbtn").removeClass("disabled"),$("#rbtn").removeClass("disabled"),u(1)})})}function check(){var s=prompt("验证身份\n我的数字校园号是:");fetch("/js/e.json",{method:"GET",headers:{"Content-type":"application/json"}}).then(e=>{e.json().then(e=>{var e=e.data.filter(function(e){return e.no==s}),t=e[0].organization;"11班"==t.slice(t.length-3)?(Ie=e[0].name,$(".fetch").toggle(1e3)):alert("no")})})}function fetchMe(t){parseInt(t)?r(t):fetch("/js/e.json",{method:"GET",headers:{"Content-type":"application/json"}}).then(e=>{e.json().then(e=>{r(e.data.filter(function(e){return e.name==t})[0].no)})})}function imageLoaded(t){var e=$("img")[t],s=e.width/e.naturalWidth;1==s&&(s=($(".tab-content")[0].clientWidth-12)/e.naturalWidth),$(".cover"+t).empty();for(var a=0;a<datSe.displayIndexDetails.length;a++){var o=datSe.displayIndexDetails[a],n=o.eqAnswerIpxywh.split("#");for(let e=0;e<n.length;e++){var r,l=n[e].split(",");6==l.length?parseInt(l[1])-1==t&&(r=$('<span class="minus" style="transform:translate('+(l[2]*s).toFixed(6)+"px,"+(l[3]*s).toFixed(6)+'px)">'+(o.eqScore==o.eqFullScore?o.eqFullScore.toString():0==o.eqScore?(o.eqScore-o.eqFullScore).toString():o.eqScore.toString()+"/"+o.eqFullScore.toString())+"</span>").appendTo(".cover"+t),o.eqScore==o.eqFullScore?r.addClass("full"):c(r)):0==t&&(r=$('<span class="sp" style="transform:translate('+(l[1]*s).toFixed(6)+"px,"+(l[2]*s).toFixed(6)+"px);width:"+(l[3]*s).toFixed(6)+"px;height:"+(l[4]*s).toFixed(6)+'px"></span>').appendTo(".cover"+t),0==e&&o.eqFullScore!=o.eqScore&&c($('<span class="minus" style="transform:translate('+(l[1]*s-20).toFixed(6)+"px,"+(l[2]*s-5).toFixed(6)+'px)">'+(o.eqScore-o.eqFullScore).toString()+"</span>").appendTo(".cover"+t)),o.eqCorrectAnswer.match("ABCD"[e])?r.addClass("cor"):o.eqAnswer.match("ABCD"[e])&&r.addClass("err"))}}}function getSe(e,t,s){!t&&!$(".nav-tabs>li")[2].classList[0]||!s&&e==curSe&&a||(a=1,curSe=e,fontSize=14,ve[Ce]||(ve[Ce]=prompt("数字校园号?")),$e[Ce]||($e[Ce]=prompt("考试编号?(心意答点击考试标题后,切换考试的列表里可见)")),t=n(t='{"schoolId":19707,"seId":'+e+',"studentId":"'+ve[Ce]+'"}'),fetch("http://36.112.23.77/analysis/api/student/exam/getStudentReportSEVO",{method:"POST",headers:{"Content-type":"application/json"},body:t}).then(e=>{e.json().then(()=>{})}),t=n(t='{"schoolId":19707,"meId":'+$e[Ce]+',"seId":'+e+',"studentId":"'+ve[Ce]+'"}'),fetch("http://36.112.23.77/analysis/api/student/exam/getStuExamDetailInfo",{method:"POST",headers:{"Content-type":"application/json"},body:t}).then(e=>{e.json().then(e=>{$("#singleDat").empty();var t=JSON.parse(Oe(e.data));for(let e=1;e<=t.pageCount;e++)$("#singleDat").append('<br><span class="cover'+(e-1)+'"></span><img src="http://36.112.23.77'+t.examUrl+"page_"+e+'.jpg" onload="imageLoaded('+(e-1)+')">'),$("img")[e-1].style.width="100%";t.pageCount||$("#singleDat").append("<p>无答题卡数据</p>"),datSe=t})}))}var l=[],i,fontSize;function d(){for(let e=0;e<l.length;e++)clearInterval(l[e]);l=[]}function c(e){var t,s=0;l.push(setInterval(function(){t=100*Math.random()-50,$(e).css("transform",$(e).css("transform").split("rotate")[0]+"rotate("+(t-s)+"deg)"),s=t},600*Math.random()+300))}function Ae(e){return 90<=e?"success":75<=e?"info":60<=e?"warning":"danger"}function resizeChart(){clearTimeout(i),i=setTimeout(function(){if(d(),"active"==$(".nav-tabs>li")[0].classList[0])console.log("reload chart"),cc.resize(),sc1.resize(),sc2.resize(),oc1.resize(),oc2.resize(),oc3.resize(),oc4.resize(),"0px"==$("#score1>div").css("width")?$("#resizeBtn").show():$("#resizeBtn").hide(300);else if("active"==$(".nav-tabs>li")[2].classList[0]){console.log("reload image");for(let e=0;e<datSe.pageCount;e++)imageLoaded(e);$(".minus").css("font-size",fontSize)}},300)}function ze(){return 1044==$e[Ce]||1028==$e[Ce]||1021==$e[Ce]||972==$e[Ce]||957==$e[Ce]||951==$e[Ce]?"15":970==$e[Ce]?"13":"?"}var p=document.createElement("a"),m;function h(){p.href=m,p.setAttribute("download","data.txt"),p.click()}var Ee=[],Te=[];const Me=["#5bc0de","#5a7ddd","#795add","#ba5add","#dd5abf","#dd5a7d","#dd795a","#ddba5a","#bfdd5a","#7ddd5a","#5add79","#5addba","#2aa9cf","#20809d","#cf512a","#9d3d20"];function u(Se=0){console.log("Start processing No. "+Ce);var e=s[Ce],ge=(m=window.URL.createObjectURL(e),$("#message")[0]),ye='<table class="table table-responsive" style="table-layout: fixed;"><tr><td>平均分</td><td>最高分</td><td>75%</td><td>中位数</td><td>25%</td><td>最低分</td></tr>',t=(ge.innerHTML=Ce+1+"/"+be+" - "+e.name+" - "+e.size+" 字节 - "+e.type+" - 正在读取...<br>>",$("#upbtn").removeClass("btn-danger"),$("#upbtn").addClass("btn-info"),$("#upicon").removeClass("glyphicon-exclamation-sign"),$("#upicon").addClass("glyphicon-open"),new FileReader);t.onload=function(j){try{var H=$("#fileOutput")[0],J=$("#fileInfo")[0],N=$("#name")[0],D=eval("("+j.target.result+")"),t="",s="",a=($("#single").empty(),eval("("+Oe(D.data).toString()+")")),o=($e[Ce]=a.meId.toString(),ve[Ce]=a.studentId,J.innerHTML="<h3>"+a.multiExam.meName+"</h3>",[]),B=[],e=a.multiExamStudentScore,n=a.multiExamClassScores,r=e.singleExamStudentScores,l=a.singleExamClassScores,i=a.singleExamClassYsScores,d=a.multiExam.singleExams,o=a.seIds,c=o.length;for(let t=0;t<c;t++)for(let e=0;e<c;e++)d[t].seId==o[e]&&(B[e]=d[t].seCourseName);var p={};for(let e=0;e<c;e++)p[o[e]]=B[e];p[0]="总分";for(let e=0;e<i.length;e++)p[i[e].seId+"Ys"]=p[i[e].seId]+" "+i[e].ysClassId;var m={},G={},Q={};for(let t=0;t<c;t++)for(let e=0;e<c;e++)r[e]&&r[e].seId==o[t]&&(Q[t]=!0,m[e]=t);for(let e=1;e<c;e++)Q[e]||(o[e]=-1);for(let e=0;e<c;e++)G[m[e]]=e;var u={},h={},f={},S={},g={},y={},x={},b={},C={},v={},P={},Y={},R={},I={},w;for(let e=0;e<c;e++){r[e]&&(w=r[e].seId,u[w]=r[e].essScore,h[w]=l[e].secsAvgScore,f[w]=l[e].secsMinScore,S[w]=l[e].secsQuarterScore,g[w]=l[e].secsHalfScore,y[w]=l[e].secs3quatrerScore,x[w]=l[e].secsMaxScore,b[w]=d[m[e]].seFullScore,C[w]=r[e].essClassOrder,P[w]=r[e].essGradeOrder,Y[w]=xe(1-r[e].essClassOrder/l[e].secsStudentCount,3),I[w]=xe(1-r[e].essGradeOrder/d[m[e]].seStudentCount,3))}Y[0]=xe(1-e.messClassOrder/n[0].mecsStudentCount,3),I[0]=xe(1-e.messGradeOrder/a.multiExamSchoolScore.mecsStudentCount,3),C[0]=e.messClassOrder,P[0]=e.messGradeOrder;for(let t=0;t<i.length;t++)for(let e=0;e<c;e++)r[e]&&i[t].seId==r[e].seId&&(R[i[t].seId+"Ys"]=xe(1-r[e].essYsClassOrder/i[t].secsStudentCount,3),v[i[t].seId+"Ys"]=r[e].essYsClassOrder);var U=ze();for(let e=0;e<c;e++){var O=G[e];if(r[O]){$("#single").append('<button class="btn btn-'+Ae(xe(100*I[o[e]],1))+' btn-how" onclick="getSe('+o[e]+");$('.btn-how').removeClass('active');$(this).addClass('active')\">"+p[r[O].seId]+"</button>"),t+="<h3 class='bg-"+Ae(xe(100*I[o[e]],1))+" text-"+Ae(xe(100*I[o[e]],1))+"'>"+p[r[O].seId]+" <small>"+r[O].essScore+"</small></h3><h4>"+a.examStudents[0].classId+" 班内 <small>"+r[O].essClassOrder+" / "+l[O].secsStudentCount+"</small></h4>"+ye+"<tr><td>"+l[O].secsAvgScore+"</td><td>"+l[O].secsMaxScore+"</td><td>"+l[O].secs3quatrerScore+"</td><td>"+l[O].secsHalfScore+"</td><td>"+l[O].secsQuarterScore+"</td><td>"+l[O].secsMinScore+"</td></tr></table>",s=","+a.examStudents[0].classId+" 班 "+l[O].secsClassOrder+" / "+U;for(let e=0;e<i.length;e++)i[e].seId==r[O].seId&&(t+="<h4>"+i[e].ysClassId+" 层内 <small>"+r[O].essYsClassOrder+" / "+i[e].secsStudentCount+"</small></h4>"+ye+"<tr><td>"+i[e].secsAvgScore+"</td><td>"+i[e].secsMaxScore+"</td><td>"+i[e].secs3quatrerScore+"</td><td>"+i[e].secsHalfScore+"</td><td>"+i[e].secsQuarterScore+"</td><td>"+i[e].secsMinScore+"</td></tr></table>",s+=","+i[e].ysClassId+" 层 "+i[e].secsClassOrder+" / ?");t+="<h4>年级 <small>"+r[O].essGradeOrder+" / "+d[m[O]].seStudentCount+s+"</small></h4>"+ye+"<tr><td>"+d[m[O]].seAvgScore+"</td><td>"+d[m[O]].seMaxScore+"</td><td>"+d[m[O]].se3QuarterScore+"</td><td>"+d[m[O]].seHalfScore+"</td><td>"+d[m[O]].seQuarterScore+"</td><td>"+d[m[O]].seMinScore+"</td></tr></table>"}}curSe=curSe||o[0],getSe(curSe,0,1)}catch(e){return console.log(e),we(),ge.innerHTML+="读取失败!",$("#upbtn").removeClass("btn-info"),$("#upbtn").addClass("btn-danger"),$("#upicon").removeClass("glyphicon-open"),void $("#upicon").addClass("glyphicon-exclamation-sign")}var V,_=($("#single").append("<button class=\"btn btn-default btn-how\" onclick=\"fontSize+=3;$('.minus').css('font-size',fontSize+'px');for (let i=0;i<datSe.pageCount;i++)$('img')[i].style.width=parseInt($('img')[i].style.width)+20+'%';resizeChart()\"><span class=\"glyphicon glyphicon-zoom-in\"></span></button>"),$("#single").append("<button class=\"btn btn-default btn-how\" onclick=\"fontSize-=3;$('.minus').css('font-size',fontSize+'px');for (let i=0;i<datSe.pageCount;i++)$('img')[i].style.width=parseInt($('img')[i].style.width)-20+'%';resizeChart()\"><span class=\"glyphicon glyphicon-zoom-out\"></span></button>"),$("#single").append('<span id="singleDat" style="word-wrap: break-word; white-space: normal"></span><br><br><br>'),Se&&(V=JSON.stringify({content:Ie+" fetched "+ve[Ce]+" ("+parseInt(a.examStudents[0].classId)+" "+e.studentName+") "+$e[Ce]+' ("'+a.multiExam.meName+'")'}),fetch("/score/log",{method:"POST",headers:{"Content-type":"application/json"},body:V})),ge.innerHTML+="读取成功!<br>",N.innerHTML="姓名:"+e.studentName,J.innerHTML="<h3>"+a.multiExam.meName+" <small>"+a.examStudents[0].classId+"班 "+e.studentName+"</small></h3>",H.innerHTML=1<c?"<h3>总分 <small>"+e.messScore+"</small></h3><h4>"+a.examStudents[0].classId+" 班内 <small>"+e.messClassOrder+" / "+n[0].mecsStudentCount+"</small></h4>"+ye+"<tr><td>"+n[0].mecsAvgScore+"</td><td>"+n[0].mecsMaxScore+"</td><td>"+n[0].mecs3quatrerScore+"</td><td>"+n[0].mecsHalfScore+"</td><td>"+n[0].mecsQuarterScore+"</td><td>"+n[0].mecsMinScore+"</td></tr></table><h4>年级 <small>"+e.messGradeOrder+" / "+a.multiExamSchoolScore.mecsStudentCount+","+a.examStudents[0].classId+"班 "+n[0].mecsClassOrder+" / "+U+"</small></h4>"+ye+"<tr><td>"+a.multiExam.meAvgScore+"</td><td>"+a.multiExam.meMaxScore+"</td><td>"+a.multiExam.me3QuatrerScore+"</td><td>"+a.multiExam.meHalfScore+"</td><td>"+a.multiExam.meQuarterScore+"</td><td>"+a.multiExam.meMinScore+"</td></tr></table>"+t:t,$("#fileOutput table").css("display","inline-table"),$("#fileOutput table").css("margin-bottom","0px"),$(".chart").show(),be<=1?$("#comp").hide():($("#comp").show(),cc.resize()),cc=echarts.init($("#comp")[0]),sc1=echarts.init($("#score1")[0]),sc2=echarts.init($("#score2")[0]),oc1=echarts.init($("#order1")[0]),oc2=echarts.init($("#order2")[0]),oc3=echarts.init($("#order3")[0]),oc4=echarts.init($("#order4")[0]),[]),K=[],X={},Z=[],ee=[],te=[],se=[],ae=[],oe=[],ne=[],re=[],le=[],ie=[],de=[],ce=[],pe=(o[c]=0,[]),me=[],A;for(let e=0;e<c;e++){var O=o[e];-1!=O&&(X[p[O]]=u[O],"总分"!=p[O].substr(0,2))&&(_.push(p[O].substr(0,2)),K.push(u[O]),Z.push(h[O]),ee.push(b[O]),pe.push({value:[f[O],S[O],g[O],y[O],x[O]]}),te.push(xe(u[O]/b[O]*100,1)),se.push(xe(h[O]/b[O]*100,1)),me.push({value:[xe(f[O]/b[O]*100,1),xe(S[O]/b[O]*100,1),xe(g[O]/b[O]*100,1),xe(y[O]/b[O]*100,1),xe(x[O]/b[O]*100,1)]}))}for(let e=0;e<=c;e++){var O=o[e];-1==O||"总分"==p[O].substr(0,2)&&1==c||(ae.push(p[O].substr(0,2)),oe.push(C[O]),ne.push(P[O]),re.push(xe(100*Y[O],1)),le.push(xe(100*I[O],1)))}for(A in v)ie.push(p[A]),de.push(v[A]),ce.push(xe(100*R[A],1));Ee[Ce]=X,Te[Ce]=e.studentName,console.log(Ee);var z={textStyle:{fontFamily:"Noto Serif SC"},tooltip:{trigger:"axis"},toolbox:{show:!0,feature:{saveAsImage:{show:!0},dataView:{show:!0,readOnly:!1}},orient:"vertical"},emphasis:{focus:"series"},calculable:!0},E={...z},T={...z},M={...z},q={...z},L={...z},k={...z},F={...z},W=[],ue=[],he=[];for(let e=0;e<be;e++)for(var fe in Ee[e])console.log(fe),-1==W.indexOf(fe)&&W.push(fe);console.log(W);for(let t=0;t<be;t++)if(ue.push([]),Ee[t]){for(let e=0;e<W.length;e++)ue[t].push(Ee[t][W[e]]);he.push({name:Te[t],type:"line",data:ue[t],color:Me[t]})}console.log(he),E.title={text:"比一比",textStyle:{fontSize:14,fontStyle:"normal",fontWeight:"bold"}},E.legend={data:Te},E.xAxis=[{axisTick:{alignWithLabel:!0},type:"category",data:W,name:"科目",position:"left"}],E.yAxis=[{type:"value",name:"分数",position:"left"}],E.series=he,T.title={text:"分数",textStyle:{fontSize:14,fontStyle:"normal",fontWeight:"bold"}},T.legend={data:["四分位","满分","平均分","我的分数"]},T.xAxis=[{axisTick:{alignWithLabel:!0},type:"category",data:_,name:"科目",position:"left"}],T.yAxis=[{type:"value",name:"分数",position:"left"}],T.series=[{name:"四分位",type:"boxplot",data:pe,color:"#5bc0de",itemStyle:{color:"transparent"}},{name:"满分",type:"scatter",data:ee,color:"#b6b6b6"},{name:"平均分",type:"line",data:Z,color:"#337ab7"},{name:"我的分数",type:"line",data:K,color:"#e2041b"}],M.title={text:"得分率",textStyle:{fontSize:14,fontStyle:"normal",fontWeight:"bold"}},M.legend={data:["四分位","平均得分率","我的得分率"]},M.xAxis=[{axisTick:{alignWithLabel:!0},type:"category",data:_,name:"科目",position:"left"}],M.yAxis=[{type:"value",name:"得分率(%)",position:"left"}],M.series=[{name:"四分位",type:"boxplot",data:me,color:"#5bc0de",itemStyle:{color:"transparent"}},{name:"平均得分率",type:"line",data:se,color:"#337ab7"},{name:"我的得分率",type:"line",data:te,color:"#d9534f"}],q.title={text:"行政排名位次",textStyle:{fontSize:14,fontStyle:"normal",fontWeight:"bold"}},q.legend={data:["班级排名","年级排名"]},q.xAxis=[{axisTick:{alignWithLabel:!0},type:"category",data:ae,name:"科目",position:"left"}],q.yAxis=[{type:"value",name:"排名",position:"left"}],q.series=[{name:"班级排名",type:"bar",data:oe,color:"#5bc0de"},{name:"年级排名",type:"bar",data:ne,color:"#337ab7"}],L.title={text:"行政排名比例",textStyle:{fontSize:14,fontStyle:"normal",fontWeight:"bold"}},L.legend={data:["班级排名(%)","年级排名(%)"]},L.xAxis=[{axisTick:{alignWithLabel:!0},type:"category",data:ae,name:"科目",position:"left"}],L.yAxis=[{type:"value",name:"排名(%)",position:"left",max:100}],L.series=[{name:"班级排名(%)",type:"bar",data:re,color:"#5bc0de"},{name:"年级排名(%)",type:"bar",data:le,color:"#337ab7"}],k.title={text:"分班排名位次",textStyle:{fontSize:14,fontStyle:"normal",fontWeight:"bold"}},k.legend={data:["分班排名"]},k.xAxis=[{axisTick:{alignWithLabel:!0},type:"category",data:ie,name:"科目",position:"left"}],k.yAxis=[{type:"value",name:"排名",position:"left"}],k.series=[{name:"分班排名",type:"bar",data:de,color:"#5cb85c"}],F.title={text:"分班排名比例",textStyle:{fontSize:14,fontStyle:"normal",fontWeight:"bold"}},F.legend={data:["分班排名(%)"]},F.xAxis=[{axisTick:{alignWithLabel:!0},type:"category",data:ie,name:"科目",position:"left"}],F.yAxis=[{type:"value",name:"排名(%)",position:"left",max:100}],F.series=[{name:"分班排名(%)",type:"bar",data:ce,color:"#5cb85c"}],cc.setOption(E),sc1.setOption(T),sc2.setOption(M),oc1.setOption(q),oc2.setOption(L),oc3.setOption(k),oc4.setOption(F),window.onresize=resizeChart},t.readAsText(e)}$().ready(function(){$(".chart").hide(),$(function(){$("[data-toggle='tooltip']").tooltip()}),$("#Input").keydown(function(e){13==e.keyCode&&$("#fetchBtn")[0].click()})});
|