judge.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820
  1. app.controller('JudgeCtrl', ['$rootScope','$scope','$timeout',function($rootScope, $scope,$timeout) {
  2. $scope.currStep = 'LoginName';
  3. $scope.clientMac = '';
  4. $scope.isWillCheckPhoneCode = false;
  5. $scope.checkCodeForm = {
  6. phone_code : ""
  7. }
  8. $scope.sendPhoneCodeSuccess = "";
  9. $scope.showScorePanel = false;
  10. $scope.judge_scores = [];
  11. //document.title = "无纸化评分";
  12. //解决弹出输入框 ,tabbar上升遮盖的问题 也可用css响应式处理
  13. $scope.win_height = $(window).height();
  14. $(window).resize(function () {
  15. if(($scope.currStep != 'LoginName' && $scope.currStep != 'ConfrimJudge') ){
  16. if($(window).height() < $scope.win_height){
  17. $("#tabbar").hide();
  18. }else{
  19. $("#tabbar").show();
  20. }
  21. }
  22. });
  23. $scope.changeLoginName = function($event) {
  24. if ($event.target.value == '' || $event.target.value.length < 3)
  25. return;
  26. if ($event.keyCode == 13) {
  27. $scope.queryJudge($.trim($event.target.value));
  28. }
  29. }
  30. $scope.showLoginName = function() {
  31. $scope.group = undefined;
  32. $scope.room = undefined;
  33. $scope.judge = undefined;
  34. $scope.currStep = 'LoginName';
  35. $timeout(function() {
  36. $('#login_name').focus();
  37. }, 100);
  38. }
  39. //秘钥验证登陆
  40. $scope.queryJudge = function(login_name) {
  41. $rootScope.ajaxRequest({
  42. url : '../exam/judge/grade/info/loginname.htm',
  43. data : {
  44. login_name : login_name
  45. }
  46. }, function(response) {
  47. $scope.group = response.map.Room.group;
  48. $scope.room = response.map.Room;
  49. $scope.judge = response.map.Judge;
  50. // 单独评分 手机短信验证
  51. $scope.isWillCheckPhoneCode = (($scope.ParamMap['ExamJudgeGradeType'] !== undefined &&
  52. $scope.ParamMap['ExamJudgeGradeType'].param_value == 'Judge')?true:false);
  53. if(!$scope.isWillCheckPhoneCode)
  54. $scope.currStep = 'ConfrimJudge';
  55. })
  56. }
  57. $scope.showGroup = function() {
  58. $rootScope.ajaxRequest({
  59. url : '../exam/judge/grade/group/list.htm',
  60. data : {
  61. exam_date : '2020-02-12'
  62. }
  63. }, function(response) {
  64. $scope.groupArray = response.array;
  65. $scope.currStep = 'ChooseGroup';
  66. })
  67. }
  68. $scope.chooseGroup = function(group) {
  69. $scope.group = group;
  70. $rootScope.ajaxRequest({
  71. url : '../exam/judge/grade/room/list.htm',
  72. data : {
  73. exam_date : '2020-02-12',
  74. ly_group_id : group.ly_group_id
  75. }
  76. }, function(response) {
  77. $scope.roomArray = response.array;
  78. $scope.currStep = 'ChooseRoom';
  79. })
  80. }
  81. $scope.chooseRoom = function(room) {
  82. $scope.room = room;
  83. $rootScope.ajaxRequest({
  84. url : '../exam/judge/grade/judge/list.htm',
  85. data : {
  86. ly_room_id : room.ly_room_id
  87. }
  88. }, function(response) {
  89. $scope.judgeArray = response.array;
  90. $scope.currStep = 'ChooseJudge';
  91. })
  92. }
  93. $scope.chooseJudge = function(judge) {
  94. $scope.judge = judge;
  95. $scope.currStep = 'ConfrimJudge';
  96. }
  97. $scope.judgeLogin = function() {
  98. // 生成mac
  99. $rootScope.ajaxRequest({
  100. url : '../exam/judge/grade/login.htm',
  101. data : {
  102. ly_room_id : $scope.room.ly_room_id,
  103. judge_id : $scope.judge.judge_id,
  104. login_name : $scope.judge.login_name,
  105. client_mac : ($scope.judge.room_id + '_' + $scope.judge.judge_seq + "_" + $scope.judge.room_id+"_"+$scope.clientMac)
  106. }
  107. }, function(response) {
  108. $scope.ExamParamMap = response.map;
  109. var key = "";
  110. angular.forEach(response.map.Judge.des_type, function(k) {
  111. if (k == '1')
  112. key += response.map.Judge.judge_id;
  113. else if (k == '2')
  114. key += response.map.Judge.judge_seq;
  115. else if (k == '3')
  116. key += response.map.Judge.login_name;
  117. else if (k == '4')
  118. key += $scope.room.ly_room_id;
  119. else if (k == '5')
  120. key += $scope.room.room_key;
  121. else if (k == '6')
  122. key += $scope.room.ly_group_id;
  123. else if (k == '7')
  124. key += $scope.room.ly_agent_id;
  125. });
  126. // 444111
  127. if (key.length < 16) {
  128. var len = 16 - key.length;
  129. for (var i = 0; i < len; i++)
  130. key = "0" + key;
  131. }
  132. key = key.substring(0, 16);
  133. response.map.Judge.des_key = key;
  134. response.map.Judge.real_exam_seq = 0;
  135. $scope.judge = response.map.Judge;
  136. $scope.StdArray = [];
  137. $scope.nextExamSeq();
  138. $scope.currStep = 'Examing';
  139. $scope.scoreStdTotal = 0;
  140. setTimeout(function(){
  141. if($scope.pageHeight == 0){
  142. $scope.initPageHeight();
  143. }
  144. },1000);
  145. })
  146. }
  147. /*
  148. $scope.pageHeight = 0;
  149. $scope.initPageHeight = function() {
  150. $scope.pageHeight = window.innerHeight;
  151. }
  152. */
  153. /***************************************************************************
  154. * 评分相关函数
  155. */
  156. $scope.getParamValue = function(param_name, default_value) {
  157. if ($scope.ParamMap == undefined)
  158. return undefined;
  159. if ($scope.ParamMap[param_name] == undefined)
  160. return default_value;
  161. return $scope.ParamMap[param_name].param_value;
  162. }
  163. //保存考生分数:
  164. $scope.saveStdScore = function() {
  165. $scope.gradeScore();
  166. }
  167. //跳转考生列表
  168. $scope.goStdList = function() {
  169. $scope.showScorePanel = false;
  170. }
  171. /***************************************************************************
  172. * 查找下一个考生
  173. */
  174. $scope.nextExamSeq = function() {
  175. if ($scope.judge == undefined)
  176. return;
  177. if ($scope.group.judge_cache_num<=$scope.StdArray.length) {
  178. // 超出等待限制
  179. $timeout($scope.nextExamSeq, parseInt($scope.getParamValue('NextExamSeqTicketSeconds', '5000'), 10));
  180. return;
  181. }
  182. $scope.last_next_time = new Date();
  183. $rootScope.ajaxRequest({
  184. url : '../exam/judge/grade/std/next.htm',
  185. data : $scope.judge,
  186. error : function() {
  187. // 网络错误等情况,要考虑延迟的问题
  188. $timeout($scope.nextExamSeq, parseInt($scope.getParamValue('NextExamSeqTicketSeconds', '5000'), 10));
  189. }
  190. }, function(data) {
  191. $scope.lastRequestTime = data.map.QueryNextTime;
  192. $scope.jsonValue = angular.toJson(data);
  193. var std = data.map.ExamStd;
  194. if(data.map.ExVideo && data.map.ExVideo['video_file'])
  195. std['material_file'] = data.map.ExVideo['video_file'];
  196. if (data.map.RealExamSeq) {
  197. $scope.judge.real_exam_seq = data.map.RealExamSeq;
  198. console.log(data.map.RealExamSeq);
  199. }
  200. if (std && std.std_id) {
  201. // 是否是新考生
  202. var flag = true;
  203. for (var k = 0; k < $scope.StdArray.length; k++) {
  204. if ($scope.StdArray[k].std_id - std.std_id == 0) {
  205. flag = false;
  206. return;
  207. }
  208. }
  209. if (flag) {
  210. std.SubjectArray = data.map.SubjectArray;
  211. var avoid = false;
  212. angular.forEach(std.SubjectArray, function(sb) {
  213. if (sb.judge_avoid == 'Active') {
  214. avoid = true;
  215. } else {
  216. if (sb.judge_record_score != undefined && sb.judge_record_score != sb.judge_score) {
  217. sb.judge_score = sb.judge_record_score;
  218. }
  219. }
  220. });
  221. // 该考生被回避
  222. if (avoid) {
  223. angular.forEach(std.SubjectArray, function(sb) {
  224. sb.judge_avoid = 'Active';
  225. sb.judge_score = undefined;
  226. sb.judge_record_score = undefined;
  227. });
  228. std.avoid_flag = 'Active';
  229. } else {
  230. std.avoid_flag = undefined;
  231. }
  232. std.tracksArray = data.map.TracksArry;
  233. $scope.StdArray.push(std);
  234. // 如果当前考生不为空,判断是否焦点要自动下移
  235. if ($scope.currentStd != undefined) {
  236. // 判断是否给过分
  237. var score_flag = true;
  238. angular.forEach($scope.currentStd.SubjectArray, function(sb) {
  239. if (sb.judge_score == undefined && sb.judge_avoid != 'Active') {
  240. score_flag = false;
  241. }
  242. });
  243. if (score_flag) {
  244. // 所有科目已经给过分,光标下移
  245. $scope.chooseStd(std);
  246. }
  247. } else {
  248. $scope.chooseStd(std);
  249. }
  250. $scope.checkGradeTotol();
  251. }
  252. $scope.judge.real_exam_seq = std.real_exam_seq;
  253. // 有新考生,1秒轮询
  254. $timeout($scope.nextExamSeq, 1000);
  255. } else {
  256. // 没有新考生,按照规定的时间去轮询
  257. $timeout($scope.nextExamSeq, parseInt($scope.getParamValue('NextExamSeqTicketSeconds', '5000'), 10));
  258. }
  259. });
  260. }
  261. /***************************************************************************
  262. * 选择某个考生
  263. */
  264. $scope.chooseStd = function(std) {
  265. var avoid = false;
  266. angular.forEach(std.SubjectArray, function(sb) {
  267. if (sb.judge_avoid == 'Active') {
  268. avoid = true;
  269. } else {
  270. if (sb.judge_record_score != undefined && sb.judge_record_score != sb.judge_score) {
  271. sb.judge_score = sb.judge_record_score;
  272. }
  273. }
  274. });
  275. // 该考生被回避
  276. if (avoid) {
  277. angular.forEach(std.SubjectArray, function(sb) {
  278. sb.judge_avoid = 'Active';
  279. sb.judge_score = undefined;
  280. sb.judge_record_score = undefined;
  281. });
  282. std.avoid_flag = 'Active';
  283. } else {
  284. std.avoid_flag = undefined;
  285. }
  286. // 首次自动加载初始化视频
  287. if(!$scope.currentStd){
  288. $scope.currentStd = std;
  289. //$scope.showScorePanel == true;
  290. /*
  291. setTimeout(function(){
  292. var v = document.getElementById('video-player');
  293. if(v){
  294. $scope.showVideo();
  295. $scope.first_load = false;
  296. }
  297. },2000);
  298. */
  299. }
  300. // test
  301. // $scope.currentStd['material_file'] = 'http://player.alicdn.com/video/aliyunmedia.mp4' ;
  302. if (std.SubjectArray.length == 1) {
  303. $scope.chooseSubject(std.SubjectArray[0]);
  304. } else {
  305. $scope.scoreStep = 'subjectPanel';
  306. }
  307. }
  308. /***************************************************************************
  309. * 点击列表选择某个考生
  310. */
  311. $scope.clickChooseStd = function(std) {
  312. var avoid = false;
  313. angular.forEach(std.SubjectArray, function(sb) {
  314. if (sb.judge_avoid == 'Active') {
  315. avoid = true;
  316. } else {
  317. if (sb.judge_record_score != undefined && sb.judge_record_score != sb.judge_score) {
  318. sb.judge_score = sb.judge_record_score;
  319. }
  320. }
  321. });
  322. // 该考生被回避
  323. if (avoid) {
  324. angular.forEach(std.SubjectArray, function(sb) {
  325. sb.judge_avoid = 'Active';
  326. sb.judge_score = undefined;
  327. sb.judge_record_score = undefined;
  328. });
  329. std.avoid_flag = 'Active';
  330. } else {
  331. std.avoid_flag = undefined;
  332. }
  333. $scope.currentStd = std;
  334. $scope.showScorePanel = true;
  335. setTimeout(function(){
  336. var scoreDomArr = document.getElementsByName("judge_scores");
  337. for(var i=0;i<scoreDomArr.length;i++){
  338. var scoreDom = scoreDomArr[i];
  339. scoreDom.value = std.SubjectArray[i].judge_score;
  340. }
  341. },10);
  342. //$scope.changeVideoSource(std);
  343. // test
  344. // $scope.currentStd['material_file'] = 'http://player.alicdn.com/video/aliyunmedia.mp4' ;
  345. if (std.SubjectArray.length == 1) {
  346. $scope.chooseSubject(std.SubjectArray[0]);
  347. } else {
  348. $scope.scoreStep = 'subjectPanel';
  349. }
  350. }
  351. /***************************************************************************
  352. * 选择评分科目(多科目情况下)
  353. */
  354. $scope.chooseSubject = function(sb) {
  355. if ($scope.currentStd.avoid_flag == 'Active')
  356. return;
  357. $scope.currentSubject = sb;
  358. for (var i = 0; i < $scope.ExamParamMap['SubjectScore_' + sb.subject_id].length; i++) {
  359. var score = $scope.ExamParamMap['SubjectScore_' + sb.subject_id][i];
  360. if (score.master_flag == 'Active') {
  361. $scope.chooseScore(score)
  362. break;
  363. }
  364. }
  365. $scope.scoreStep = 'scorePanel';
  366. }
  367. /***************************************************************************
  368. * 选择评分区间
  369. */
  370. $scope.chooseScore = function(score) {
  371. var array = new Array();
  372. for (var value = score.score_max; value >= score.score_min; value = value - (score.score_tick)) {
  373. var score_value = value;
  374. if (value < score.score_min)
  375. score_value = score.score_min;
  376. array.push({
  377. score_value : score_value
  378. });
  379. }
  380. $scope.currentScore = score;
  381. $scope.scoreArray = array;
  382. }
  383. /***************************************************************************
  384. * 对某个科目进行评分(未提交)
  385. */
  386. $scope.gradeScore = function() {
  387. var scoreDomArr = document.getElementsByName("judge_scores");
  388. var score_Arr = [];
  389. var subject_id_Arr = [];
  390. for(var i=0;i<scoreDomArr.length;i++){
  391. var scoreDom = scoreDomArr[i];
  392. if(scoreDom.value == ""){
  393. // alert("请填写科目评分!");
  394. $.alert("请填写科目评分!");
  395. return;
  396. }
  397. score_Arr.push(scoreDom.value);
  398. }
  399. for(var i=0;i<$scope.currentStd.SubjectArray.length;i++){
  400. subject_id_Arr.push($scope.currentStd.SubjectArray[i].std_subject_id);
  401. }
  402. var obj = angular.extend({}, $scope.judge, {
  403. judge_scores : score_Arr.join(),
  404. std_subject_ids : subject_id_Arr.join()
  405. });
  406. $rootScope.ajaxRequest({
  407. url : '../exam/judge/grade/std/records.htm',
  408. data : obj
  409. }, function(response) {
  410. for(var i=0;i<$scope.currentStd.SubjectArray.length;i++){
  411. $scope.currentStd.SubjectArray[i].judge_score = score_Arr[i];
  412. $scope.currentStd.SubjectArray[i].judge_record_score = score_Arr[i];
  413. }
  414. $scope.checkGradeTotol();
  415. //$scope.showScorePanel = false;
  416. $scope.chooseNextStd();
  417. })
  418. }
  419. /***************************************************************************
  420. * 回避或者取消回避
  421. */
  422. $scope.avoidStd = function() {
  423. var obj = angular.extend({}, $scope.judge, {
  424. judge_avoid : $scope.currentStd.avoid_flag == 'Active' ? 'InActive' : 'Active',
  425. std_subject_id : $scope.currentStd.SubjectArray[0].std_subject_id
  426. });
  427. $rootScope.ajaxRequest({
  428. url : '../exam/judge/grade/std/avoid.htm',
  429. data : obj
  430. }, function(response) {
  431. $scope.currentStd.avoid_flag = ($scope.currentStd.avoid_flag == 'Active' ? undefined : 'Active');
  432. angular.forEach($scope.currentStd.SubjectArray, function(sb) {
  433. sb.judge_score = undefined;
  434. sb.judge_record_score = undefined;
  435. sb.judge_avoid = $scope.currentStd.avoid_flag;
  436. });
  437. $scope.checkGradeTotol();
  438. })
  439. }
  440. /***************************************************************************
  441. * 判断已经评分的数量
  442. */
  443. $scope.checkGradeTotol = function() {
  444. var total = 0;
  445. angular.forEach($scope.StdArray, function(std) {
  446. var flag = true;
  447. angular.forEach(std.SubjectArray, function(sb) {
  448. if (sb.judge_avoid != 'Active' && sb.judge_score == undefined)
  449. flag = false;
  450. });
  451. if (flag) {
  452. std.score_flag = true;
  453. total++;
  454. } else {
  455. std.score_flag = false;
  456. }
  457. });
  458. $scope.scoreStdTotal = total;
  459. }
  460. /***************************************************************************
  461. * 提交前确认
  462. */
  463. $scope.confirmScore = function() {
  464. var flag = new Array();
  465. for (var i = 0; i < $scope.StdArray.length; i++) {
  466. flag.push($scope.StdArray[i].score_flag);
  467. }
  468. var truePosition = flag.lastIndexOf(true);
  469. var falsePosition = flag.indexOf(false);
  470. // falsePosition = (falsePosition == -1) ? 0 : falsePosition
  471. if(truePosition > falsePosition && falsePosition != -1) {
  472. // alert('前面的考生未打分,请打分后在提交分数!');
  473. $.alert("前面的考生未打分,请打分后在提交分数!");
  474. $scope.currentStd = $scope.StdArray[falsePosition];
  475. return ;
  476. }
  477. var array = new Array();
  478. for (var i = 0; i < $scope.StdArray.length; i++) {
  479. if ($scope.StdArray[i].score_flag == true) {
  480. var confirm_score_value = "";
  481. for (var k = 0; k < $scope.StdArray[i].SubjectArray.length; k++) {
  482. var subject = $scope.StdArray[i].SubjectArray[k];
  483. confirm_score_value = confirm_score_value + (k > 0 ? "<br>" : "") + subject.subject_name + "【" + (subject.judge_avoid == 'Active' ? "回避" : subject.judge_score) + "】";
  484. }
  485. $scope.StdArray[i].confirm_score_value = confirm_score_value;
  486. array.push($scope.StdArray[i]);
  487. } else {
  488. break;
  489. }
  490. }
  491. if (array.length == 0)
  492. return;
  493. $scope.confirmStdArray = array;
  494. $scope.currStep = 'ConfirmScore';
  495. }
  496. /***************************************************************************
  497. * 查看分数
  498. */
  499. $scope.lookScore = function() {
  500. $rootScope.ajaxRequest({
  501. url : '../exam/judge/grade/judge/lookScore.htm',
  502. data : {
  503. room_id : $scope.room.ly_room_id,
  504. judge_id : $scope.judge.judge_id
  505. }
  506. }, function(response) {
  507. $scope.stdScoreArray = response.array;
  508. });
  509. $scope.currStep = 'LookScore';
  510. }
  511. // 选中上一个考生
  512. $scope.chooseLastStd = function(){
  513. // 当前选中考生
  514. var curStd = $scope.currentStd;
  515. if(!curStd) return;
  516. for (var k = 0; k < $scope.StdArray.length; k++) {
  517. var std = $scope.StdArray[k];
  518. if (std.std_id === curStd.std_id){
  519. if (k>0){
  520. $scope.currentStd = $scope.StdArray[k-1];
  521. //$scope.changeVideoSource($scope.currentStd);
  522. $scope.clickChooseStd($scope.currentStd);
  523. break;
  524. }else{
  525. // alert('已经是第一个考生!')
  526. $.alert("已经是第一个考生!");
  527. }
  528. }
  529. }
  530. }
  531. // 选中下一个考生
  532. $scope.chooseNextStd = function(){
  533. // 当前选中考生
  534. var curStd = $scope.currentStd;
  535. if(!curStd) return;
  536. for (var k = 0; k < $scope.StdArray.length; k++) {
  537. var std = $scope.StdArray[k];
  538. if (std.std_id === curStd.std_id){
  539. if ((k+1) < $scope.StdArray.length){
  540. $scope.currentStd = $scope.StdArray[k+1];
  541. //$scope.changeVideoSource($scope.currentStd);
  542. $scope.clickChooseStd($scope.currentStd);
  543. break;
  544. }else{
  545. // 无下一个考生 提示 TODO
  546. // alert('已经是最后一个考生!')
  547. $.alert('已经是最后一个考生!');
  548. }
  549. }
  550. }
  551. }
  552. // aes加密
  553. $scope.aesValue = function(value) {
  554. var key = CryptoJS.enc.Utf8.parse($scope.judge.des_key);
  555. var str = CryptoJS.enc.Utf8.parse(value);
  556. var base64 = CryptoJS.enc.Base64.stringify(str);
  557. var encrypted = CryptoJS.AES.encrypt(str, key, {
  558. mode : CryptoJS.mode.ECB,
  559. padding : CryptoJS.pad.Pkcs7
  560. });
  561. return encrypted.toString();
  562. }
  563. /***************************************************************************
  564. * 提交分数
  565. */
  566. $scope.submitScore = function() {
  567. var std = undefined;
  568. $scope.commitScoreFlag = true;
  569. for (var i = 0; i < $scope.confirmStdArray.length; i++) {
  570. if ($scope.confirmStdArray[i].commit_flag != true) {
  571. std = $scope.confirmStdArray[i];
  572. break;
  573. }
  574. }
  575. if (std == undefined) {
  576. $scope.commitScoreFlag = undefined;
  577. $scope.currentSubject = undefined;
  578. $scope.currentScore = undefined;
  579. $scope.currentStd = undefined;
  580. // 已经完成评分
  581. $scope.confirmStdArray = [];
  582. $scope.currStep = 'Examing';
  583. if ($scope.StdArray.length > 0) {
  584. $scope.chooseStd($scope.StdArray[0]);
  585. }
  586. return;
  587. }
  588. if ($scope.requestingStdId == undefined) {
  589. $scope.requestingStdId = std.std_id;
  590. $scope.submitStdScore(std);
  591. }
  592. // 1秒钟等待
  593. $timeout($scope.submitScore, 1000);
  594. }
  595. /***************************************************************************
  596. * 提交分数,单个考生
  597. */
  598. $scope.submitStdScore = function(std) {
  599. angular.forEach(std.SubjectArray, function(sb) {
  600. sb.room_id = $scope.room.ly_room_id;
  601. sb.agent_id = $scope.judge.agent_id;
  602. sb.judge_id = $scope.judge.judge_id;
  603. sb.judge_seq = $scope.judge.judge_seq;
  604. sb.real_exam_seq = std.real_exam_seq;
  605. if (sb.judge_avoid == 'Active')
  606. std.judge_avoid = 'Active';
  607. });
  608. var data = angular.extend({}, $scope.judge, {
  609. score_json : $scope.aesValue(angular.toJson(std.SubjectArray)),
  610. std_id : std.std_id,
  611. real_exam_seq : std.real_exam_seq,
  612. judge_avoid : std.judge_avoid,
  613. remark: std.remark
  614. });
  615. $rootScope.ajaxRequest({
  616. url : '../exam/judge/grade/std/score.htm',
  617. data : data,
  618. error : function() {
  619. //$scope.submitStdScore(std);
  620. //出现评分分差,跳转到打分界面
  621. $scope.confirmStdArray = [];
  622. $scope.requestingStdId = undefined;
  623. }
  624. }, function(response) {
  625. std.commit_flag = true;
  626. $scope.scoreStdTotal = $scope.scoreStdTotal - 1;
  627. // 移除队列
  628. for (var i = 0; i < $scope.StdArray.length; i++) {
  629. if ($scope.StdArray[i].std_id == std.std_id) {
  630. $scope.StdArray.splice(i, 1);
  631. break;
  632. }
  633. }
  634. $scope.requestingStdId = undefined;
  635. })
  636. }
  637. $scope.cancelConfirm = function() {
  638. $scope.currStep = 'Examing';
  639. $scope.showScorePanel = false;
  640. // setTimeout(function(){
  641. // var v = document.getElementById('video-player');
  642. // if(v){
  643. // $scope.showVideo();
  644. // $scope.first_load = false;
  645. // }
  646. //
  647. // },1000);
  648. }
  649. $scope.showJudge = function() {
  650. $scope.modifyJudge = angular.extend({}, $scope.judge, {});
  651. $scope.currStep = 'editJudge';
  652. }
  653. $scope.toExaming = function() {
  654. $scope.currStep = 'Examing';
  655. }
  656. $scope.changeJudge = function() {
  657. $rootScope.ajaxRequest({
  658. url : '../exam/judge/grade/judge/modify.htm',
  659. data : $scope.modifyJudge
  660. }, function(response) {
  661. $scope.judge = response.entity;
  662. $.toast("评委信息已修改", function() {
  663. console.log('close');
  664. });
  665. })
  666. }
  667. $scope.exitJudge = function() {
  668. $scope.judge = undefined;
  669. $scope.currentSubject = undefined;
  670. $scope.currentScore = undefined;
  671. $scope.currentStd = undefined;
  672. $scope.scoreStdTotal = 0;
  673. $scope.StdArray = [];
  674. $scope.confirmStdArray = undefined;
  675. $scope.requestingStdId == undefined;
  676. if ($scope.groupArray != undefined) {
  677. $scope.chooseRoom($scope.room);
  678. } else {
  679. $scope.currStep = 'LoginName';
  680. }
  681. }
  682. $scope.getBatchName = function(tracks) {
  683. var current_batch = 1;
  684. angular.forEach($scope.currentStd.tracksArray, function(t) {
  685. if (t.tracks_batch > current_batch)
  686. current_batch = t.tracks_batch;
  687. });
  688. if (current_batch == 1) {
  689. return '';
  690. }
  691. if (tracks.tracks_batch == 2)
  692. return '复试:'
  693. return '三试:'
  694. }
  695. $scope.getTracksClass = function(tracks) {
  696. var current_batch = 1;
  697. angular.forEach($scope.currentStd.tracksArray, function(t) {
  698. if (t.tracks_batch > current_batch)
  699. current_batch = t.tracks_batch;
  700. });
  701. if (current_batch == tracks.tracks_batch) {
  702. return 'text-success';
  703. }
  704. return '';
  705. }
  706. $scope.login = function() {
  707. var login_name = document.getElementById('login_name').value;
  708. if(!login_name) {
  709. $.alert("请输入评委登录账号!");
  710. // alert('请输入评委登录账号!');
  711. return;
  712. }
  713. $scope.queryJudge($.trim(login_name));
  714. }
  715. $rootScope.ajaxRequest({
  716. url : '../exam/judge/grade/param.htm'
  717. }, function(response) {
  718. var map = {};
  719. for (var i = 0; i < response.array.length; i++) {
  720. map[response.array[i].param_name] = response.array[i];
  721. }
  722. $scope.ParamMap = map;
  723. if($scope.getParamValue('JudgeLoginType','LoginName') == 'ChooseGroup') {
  724. $scope.showGroup();
  725. }
  726. });
  727. /***************************************************************************
  728. * 获取客户端的MAC地址
  729. */
  730. $rootScope.ajaxRequest({
  731. url:'../exam/judge/grade/judge/getMac.htm'
  732. }, function(response) {
  733. if(response) {
  734. $scope.clientMac = response.entity;
  735. }
  736. });
  737. $timeout(function() {
  738. $('#login_name').focus();
  739. }, 100);
  740. } ])