index.html 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <head>
  2. <meta charset="UTF-8">
  3. <script type="text/javascript" src="../js/jquery.min.js" crossorigin="anonymous"></script>
  4. <link rel="stylesheet" href="../css/bootstrap.min.css" crossorigin="anonymous">
  5. <script type="text/javascript" src="../js/bootstrap.min.js" crossorigin="anonymous"></script>
  6. <script src="https://cdn.jsdelivr.net/npm/echarts@4.3.0/dist/echarts.min.js"></script>
  7. <script src="../js/av-min.js"></script>
  8. <script src="../js/aes.js"></script>
  9. <script src="../js/pad-pkcs7.js"></script>
  10. <script src="../js/mode-ecb.js"></script>
  11. <link rel="preconnect" href="https://fonts.gstatic.com">
  12. <link href="https://fonts.loli.net/css2?family=Anonymous+Pro:ital,wght@0,400;0,700;1,400;1,700
  13. &family=Noto+Serif+SC:wght@300;400;500;600;700&display=swap" rel="stylesheet">
  14. <link rel="stylesheet" href="../css/style.css">
  15. <!-- <link rel="stylesheet" href="/css/style.css"> -->
  16. <script type="text/javascript" src="../js/score.js"></script>
  17. <style>
  18. #controls {
  19. position: fixed;
  20. bottom: 20px;
  21. right: 20px;
  22. padding: 5px;
  23. border: 5px solid rgba(15, 15, 15, 0.1);
  24. border-radius: 15px;
  25. background-color: rgba(15, 15, 15, 0.1);
  26. backdrop-filter: blur(5px);
  27. z-index: -1;
  28. }
  29. #name {
  30. background-color: rgba(215, 215, 215, 0.7);
  31. border-radius: 5px;
  32. padding-right: 3px;
  33. }
  34. #controls:not(.disabled) {
  35. z-index: 1;
  36. }
  37. .well {
  38. border-top-left-radius: 0;
  39. border-top-right-radius: 0;
  40. border-bottom-left-radius: 30px;
  41. border-bottom-right-radius: 30px;
  42. -webkit-box-shadow: inset 0 3px 3px rgb(0 0 0 / 5%);
  43. box-shadow: inset 0 3px 3px rgb(0 0 0 / 5%);
  44. }
  45. .btn.btn-how{
  46. border-bottom: none;
  47. border-bottom-left-radius: 0;
  48. border-bottom-right-radius: 0;
  49. }
  50. </style>
  51. <title>
  52. 实验中学成绩整理
  53. </title>
  54. </head>
  55. <body>
  56. <a class="btn btn-info" href="/" style="text-shadow: rgb(85, 85, 85) 3px 2px 4px;"><span
  57. class="glyphicon glyphicon-home" aria-hidden="true"></span>&nbsp;返回</a>
  58. <a tabindex="0" class="btn btn-warning hidable toggleHide" onclick="toggleHide();"
  59. style="text-shadow: rgb(85, 85, 85) 3px 2px 4px;display:none;">
  60. <span class="glyphicon glyphicon-eye-close" aria-hidden="true"></span>
  61. </a>
  62. <div class="hidable fetch">
  63. <div class="page-header">
  64. <h1>
  65. 实验中学成绩整理
  66. <small>基于心意答查分页面提供的数据整理汇总考试成绩</small>
  67. </h1>
  68. </div>
  69. <h3>如何获取数据</h3>
  70. <p>尽量使用 Google Chrome 浏览器,不保证其他浏览器操作相同。</p>
  71. <p>1. 进入心意答查分页面;</p>
  72. <p>2. 按下 F12 打开控制台,若无反应,尝试 Fn+F12;</p>
  73. <p>3. 控制台顶栏分页中找到“<b>网络</b>”或“<b>Network</b>”(可能需要从下拉框里面找);</p>
  74. <p>4. 刷新页面(用 F5 刷新),此时应看到控制台中出现一批文件,点击其中的“<b>getStudentReportMEVO</b>”;</p>
  75. <p>5. 在新出现的小页面的顶栏分页中找到“<b>预览</b>”或“<b>Preview</b>”;</p>
  76. <p>6. 此时应看到“{data: {,...”等数据,一定在数据第一行右键(或在其最后一行下方空白处右键),随后“<b>复制物体</b>”或“<b>Copy Object</b>”;</p>
  77. <p>7. 新建文本文档(格式为 txt,不可用 Word 文档),将所复制的内容粘贴并保存,于下方按钮打开。</p>
  78. <p style="font-size: 12px;font-style: italic;">
  79. 注:图表整理均在本地进行,你的成绩不会上传到网络(上传与否,已经不重要了)。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把所有人的成绩信息完整地公布在接口上,心意答我真服了你!
  80. </p>
  81. <h3>操作指南</h3>
  82. <p>1. 加载多个文件后,使用方向键或右下角控件可在文件间快速切换,方便比较;</p>
  83. <p>2. 点击图例可隐藏部分内容;</p>
  84. <p>3. 一览表中 "0%" 代表最低分,"100%" 代表最高分,以此类推。</p>
  85. <br>
  86. </div>
  87. <div class="fetch" style="display:none">(暴露优质接口-无安全意识、实在愚蠢;)</div>
  88. <div class="input-group fetch" style="display:none">
  89. <span class="input-group-addon">考试编号</span>
  90. <input id="Id" type="text" class="form-control" autocomplete="off" placeholder="972" value="972">
  91. </div>
  92. <div class="input-group fetch" style="display:none">
  93. <span class="input-group-addon"><a href="/js/e.json" onclick="setWeigh2()" data-toggle="tooltip"
  94. data-placement="bottom" title="仅限2025届高考部">姓名</a>或数字校园号</span>
  95. <input id="Input" type="text" class="form-control" autocomplete="off" placeholder="20222001 或 小明">
  96. <span class="input-group-btn">
  97. <button type="button" class="btn btn-default" onclick="fetchMe($('#Input').val())"
  98. id="fetchBtn">FETCH</button>
  99. </span>
  100. </div>
  101. <div style="text-align: center;" class="hidable">
  102. <div class="btn-group">
  103. <a tabindex="0" class="btn btn-default" href="tutor/"
  104. style="text-shadow: rgb(185, 185, 185) 3px 2px 4px;display:inline-block;">
  105. <span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span>&nbsp;<b>查看示例截图</b>
  106. </a>
  107. <a id="upbtn" tabindex="0" class="btn btn-info" onclick="document.getElementById('fileInput').click();"
  108. style="text-shadow: rgb(85, 85, 85) 3px 2px 4px;display:inline-block;">
  109. <span id="upicon" class="glyphicon glyphicon-open" aria-hidden="true"></span> <b>打开文件</b><input
  110. style="display: none;" id="fileInput" type="file" onchange="getFiles(event)">
  111. </a>
  112. <a id="upbtn" tabindex="0" class="btn btn-danger"
  113. onclick="var a=aesEncrypt(prompt('我的班级')),b=aesEncrypt(prompt('我的学号'));if(a=='1170185235a2b833f24d4cf0e7d3f1c1'&&b=='b1b384c7b1e81d67482a132f60b3456e')$('.fetch').toggle(1000);else alert('你非我')"
  114. style="text-shadow: rgb(85, 85, 85) 3px 2px 4px;display:inline-block;">
  115. <b>?!</b>
  116. </a>
  117. <!-- If you must... -->
  118. </div>
  119. <a tabindex="0" class="btn btn-warning toggleHide fetch" onclick="toggleHide();"
  120. style="text-shadow: rgb(85, 85, 85) 3px 2px 4px;display:inline-block;">
  121. <span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>
  122. </a>
  123. </div>
  124. <div id="controls" class="disabled" style="text-align: center;">
  125. <div id="name"></div>
  126. <div class="btn-group">
  127. <a id="lbtn" tabindex="0" class="btn btn-default btn-lg disabled" onclick="prevFile();">
  128. <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
  129. </a>
  130. <a id="rbtn" tabindex="0" class="btn btn-default btn-lg disabled" onclick="nextFile();">
  131. <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
  132. </a>
  133. </div>
  134. </div>
  135. <div id="message" class="hidable"></div>
  136. <div id="fileInfo" class="hideble"></div>
  137. <div class="chart">
  138. <ul class="nav nav-tabs">
  139. <li class="active"><a href="#chart" data-toggle="tab">图表</a></li>
  140. <li><a href="#data" data-toggle="tab">数据</a></li>
  141. <li><a href="#single" data-toggle="tab">单科</a></li>
  142. </ul>
  143. <div class="tab-content well well-sm">
  144. <div class="tab-pane fade in active" id="chart">
  145. <br>
  146. <h4>班内一览表</h4>
  147. <div id="score1" class="chart"></div>
  148. <div id="score2" class="chart"></div>
  149. <h4>排名</h4>
  150. <div id="order1" class="chart"></div>
  151. <div id="order2" class="chart"></div>
  152. <div id="order3" class="chart"></div>
  153. <div id="order4" class="chart"></div>
  154. </div>
  155. <div class="tab-pane fade" id="data">
  156. <div id="fileOutput"></div>
  157. </div>
  158. <div class="tab-pane fade" id="single">
  159. </div>
  160. </div>
  161. </div>
  162. </body>