Exam.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. Ext.QuickTips.init();
  2. Ext.define('erp.controller.hr.emplmana.Exam', {
  3. extend: 'Ext.app.Controller',
  4. FormUtil: Ext.create('erp.util.FormUtil'),
  5. BaseUtil: Ext.create('erp.util.BaseUtil'),
  6. GridUtil: Ext.create('erp.util.GridUtil'),
  7. views:[
  8. 'hr.emplmana.Exam','core.form.Panel','core.form.FileField','core.form.MultiField','core.form.CheckBoxGroup','core.trigger.MultiDbfindTrigger',
  9. 'core.button.Save','core.button.Add','core.button.Submit','core.button.Print','core.button.Upload','core.button.ResAudit','hr.emplmana.StartExamForm',
  10. 'core.button.Audit','core.button.Close','core.button.Delete','core.button.Update','core.button.ResSubmit','core.grid.Panel2','hr.emplmana.AnswerForm',
  11. 'core.button.TurnCustomer','core.button.Flow','core.button.DownLoad','core.button.Scan','common.datalist.Toolbar','core.button.Confirm',
  12. 'core.trigger.DbfindTrigger','core.trigger.TextAreaTrigger','core.form.YnField','core.trigger.AutoCodeTrigger','core.trigger.AddDbfindTrigger'
  13. ],
  14. init:function(){
  15. var me = this;
  16. Ext.defer(function(){
  17. me.timer();
  18. }, 2000);
  19. this.control({
  20. 'erpSubmitButton': {
  21. click: function(btn){
  22. Ext.MessageBox.confirm('提示', '确认要交卷吗?', del);
  23. function del(btn){
  24. if(btn == 'yes'){
  25. me.getExamValues();
  26. }
  27. }
  28. }
  29. },
  30. 'erpDeleteButton':{
  31. beforerender:function(btn){
  32. btn.setText('退出');
  33. },
  34. click:function(btn){
  35. Ext.MessageBox.confirm('提示', '确认要退出吗?', del);
  36. function del(btn){
  37. if(btn == 'yes'){
  38. Ext.Ajax.request({
  39. url: basePath + 'hr/emplmana/logoutExam.action',
  40. params: {},
  41. method: 'POST',
  42. callback: function(opt, s, r) {
  43. if(s)
  44. window.location.href = basePath + 'exam/exam.action';
  45. }
  46. });
  47. }
  48. }
  49. }
  50. },
  51. 'radiogroup':{
  52. change:function(field){
  53. me.changeCss(field.id);
  54. }
  55. },
  56. 'checkboxgroup':{
  57. change:function(field){
  58. me.changeCss(field.id);
  59. }
  60. },
  61. 'textareafield':{
  62. change:function(field){
  63. me.changeCss(field.id);
  64. }
  65. },
  66. 'erpCloseButton': {
  67. click: function(btn){
  68. me.FormUtil.beforeClose(me);
  69. }
  70. }
  71. });
  72. },
  73. getForm: function(btn){
  74. return btn.ownerCt.ownerCt;
  75. },
  76. changeCss:function(qid){
  77. var o = document.getElementById('a_'+qid.split('_')[1]);
  78. if (o != null)
  79. {
  80. o.style.background="#5CABE6";
  81. o.style.color="#ffffff";
  82. }
  83. },
  84. timer:function(){
  85. var me1=this;
  86. var time=endtime.getTime()-(new Date()).getTime();
  87. if(time<1000*60*5&&!isShow){//剩余5分钟提示下
  88. isShow = true;
  89. document.getElementById("timer1").style.color="red";
  90. showMessage('提 示','距离考试结束只剩5分钟了!');
  91. }
  92. if(time<=0&&!isSubmit){//时间到了,自动交卷
  93. isSubmit = true;
  94. showMessage('提 示','考试结束,自动提交试卷!');
  95. me1.getExamValues();
  96. }
  97. var hh=parseInt(time / 1000 / 60 / 60 % 24, 10);
  98. var mm=parseInt(time / 1000 / 60 % 60, 10);
  99. var ss=parseInt(time / 1000 % 60, 10);
  100. if(hh<10)
  101. hh='0'+hh;
  102. if(mm<10)
  103. mm='0'+mm;
  104. if(ss<10)
  105. ss='0'+ss;
  106. document.getElementById("timer1").innerHTML = "剩余时间: " + hh + ":" + mm + ":"+ss;
  107. setTimeout(function(){
  108. me1.timer();
  109. },1000);
  110. },
  111. getExamValues:function(){
  112. var items=Ext.getCmp('form').items.items,values=new Array();
  113. Ext.each(items,function(name,index){
  114. if(items[index].xtype=="radiogroup"||items[index].xtype=="checkboxgroup"){
  115. var o=new Object();
  116. o.exd_id=items[index].exdid;
  117. var i=items[index].items.items;
  118. o.answer='';
  119. Ext.each(i,function(nam,inde){
  120. if(i[inde].checked){
  121. o.answer=o.answer+i[inde].anvalue;
  122. }
  123. });
  124. values.push(o);
  125. }else if(items[index].xtype=="textareafield"){
  126. var o=new Object();
  127. o.exd_id=items[index].exdid;
  128. o.answer=items[index].value;
  129. values.push(o);
  130. }
  131. });
  132. var v=Ext.JSON.encode(values)
  133. Ext.Ajax.request({//拿到form的items
  134. url : basePath + 'hr/emplmana/submitExam.action',
  135. params: {values:v},
  136. method : 'post',
  137. callback : function(options, success, response){
  138. if (!response) return;
  139. var res = new Ext.decode(response.responseText);
  140. if(res.exceptionInfo != null){
  141. showError(res.exceptionInfo);return;
  142. }
  143. window.location.href=basePath +'jsps/hr/emplmana/question/endExam.html';
  144. }
  145. });
  146. }
  147. });