贾小兵 1 mesiac pred
rodič
commit
ac4cd12532

+ 7 - 3
application/admin/controller/student/Collection.php

@@ -270,6 +270,7 @@ class Collection extends Backend
                 $info = $this->exam_model->where(['exam_id'=>$ids])->find();
 
                 //特殊判断结果 故障部位
+                //1型,09电池舱盖故障部位, 答题值为 00000002
                 // 002型  薄膜开关FPC排线 蜂鸣器出声口 检测剂 干燥管 维护管
                 // 003型  检测剂  干燥管 维护管
                 $question_arr = ['0002GZBW0001','0002GZBW0003','0002GZBW0005','0002GZBW0009','0002GZBW0010','0003GZBW0006','0003GZBW0007','0003GZBW0008'];
@@ -288,6 +289,10 @@ class Collection extends Backend
                                 if($t['sim_fault_question_value']!=$t['sim_fault_answer_value'] ){
                                     $answer_right=1;
                                 }
+                                //0001GZBW0009  电池舱盖 故障部位
+                                if($t['fault_id']=='0001GZBW0009' && $t['sim_fault_answer_value']=='00000002'){
+                                    $answer_right=1;
+                                }
                             }
                         }
                         Db::name('real_exam_fault')->where(['ref_id'=>$t['ref_id']])->update(['answer_right'=>$answer_right]);
@@ -319,13 +324,11 @@ class Collection extends Backend
 
                 //根据故障部位查找,匹配可能原因
                 $yy_arr= Fault::where(['parent_fault_id'=>['in',$partent_fault_id],'sim_type'=>$info['sim_type'],'fault_type'=>2])->column('fault_id');
-                
                 if(!empty($other_report)){
                     foreach ($other_report as $k => $v) {
                         if(!empty($v['xx_id'])){
                             if(in_array($v['xx_id'],$partent_fault_id)){
                                 //故障现象正确
-                                
                                 $kscore = 0;
                                 //故障部位 故障部位错误
                                 $buwei_id= '';
@@ -398,7 +401,8 @@ class Collection extends Backend
 
                                 //可能原因 错写
                                 foreach (explode(',',$v['yy_id']) as $key => $value) {
-                                    if(!in_array($value,$yy_id)){
+                                    //追加特殊情况  1型,【开机无响应】故障现象,允许填写可能原因【电池电量不足】作为正确答案
+                                    if(!in_array($value,$yy_id) && $v['xx_id']!='000100010000' && $value!='0001KNYY0031'){
                                         $yuanyin_socre = 1+$yuanyin_socre;
                                         $kscore = 1+$kscore;
                                         $content[] = [

+ 5 - 1
application/admin/controller/student/Exam.php

@@ -77,10 +77,14 @@ class Exam extends Backend
         $other_jielun = !empty($row['other_jielun']) ? json_decode($row['other_jielun'],true):[];
 
         $koufen = 0;
+        $dt_count = 0;
         foreach ($other_jielun as $key => $value) {
             if(!empty($value['cx_score'])){
                 $koufen = $koufen+abs($value['cx_score']);
             }
+            if($value['cx_type']=='未作答'){
+                $dt_count = $dt_count+1;
+            }
         }
         $report_score = 15-$koufen;
         $row['report_score'] = $report_score>0?$report_score:0;
@@ -91,7 +95,7 @@ class Exam extends Backend
 
         $row['total'] = $total;
         $this->view->assign('other_jielun', $other_jielun);
-
+        $this->view->assign('dt_count', $dt_count);
 
         $diffInSeconds = $rows['endtime'] - $rows['starttime']; // 两个时间戳之间的差异(秒)
         $minutes = floor($diffInSeconds / 60); // 计算分钟数

+ 11 - 1
application/admin/controller/student/Exercise.php

@@ -323,6 +323,10 @@ class Exercise extends Backend
                                 if($t['sim_fault_question_value']!=$t['sim_fault_answer_value'] ){
                                     $answer_right=1;
                                 }
+                                //0001GZBW0009  电池舱盖 故障部位
+                                if($t['fault_id']=='0001GZBW0009' && $t['sim_fault_answer_value']=='00000002'){
+                                    $answer_right=1;
+                                }
                             }
                         }
                         Db::name('real_exam_fault')->where(['ref_id'=>$t['ref_id']])->update(['answer_right'=>$answer_right]);
@@ -430,7 +434,8 @@ class Exercise extends Backend
 
                                 //可能原因 错写
                                 foreach (explode(',',$v['yy_id']) as $key => $value) {
-                                    if(!in_array($value,$yy_id)){
+                                    //追加特殊情况  1型,【开机无响应】故障现象,允许填写可能原因【电池电量不足】作为正确答案
+                                    if(!in_array($value,$yy_id) && $v['xx_id']!='000100010000' && $value!='0001KNYY0031'){
                                         $yuanyin_socre = 1+$yuanyin_socre;
                                         $kscore = 1+$kscore;
                                         $content[] = [
@@ -670,10 +675,14 @@ class Exercise extends Backend
 
 
         $koufen = 0;
+        $dt_count = 0;
         foreach ($other_jielun as $key => $value) {
             if(!empty($value['cx_score'])){
                 $koufen = $koufen+abs($value['cx_score']);
             }
+            if($value['cx_type']=='未作答'){
+                $dt_count = $dt_count+1;
+            }
         }
         $report_score = 15-$koufen;
         $row['report_score'] = $report_score>0?$report_score:0; 
@@ -687,6 +696,7 @@ class Exercise extends Backend
 
         
         $this->view->assign('other_jielun', $other_jielun);
+        $this->view->assign('dt_count', $dt_count);
         $this->view->assign('row', $row);
         return $this->view->fetch();
     }

+ 18 - 1
application/admin/controller/student/Practice.php

@@ -274,6 +274,10 @@ class Practice extends Backend
                                 if($t['sim_fault_question_value']!=$t['sim_fault_answer_value'] ){
                                     $answer_right=1;
                                 }
+                                //0001GZBW0009  电池舱盖 故障部位
+                                if($t['fault_id']=='0001GZBW0009' && $t['sim_fault_answer_value']=='00000002'){
+                                    $answer_right=1;
+                                }
                             }
                         }
                         Db::name('real_exam_fault')->where(['ref_id'=>$t['ref_id']])->update(['answer_right'=>$answer_right]);
@@ -390,7 +394,8 @@ class Practice extends Backend
 
                                 //可能原因 错写
                                 foreach (explode(',',$v['yy_id']) as $key => $value) {
-                                    if(!in_array($value,$yy_id)){
+                                    //追加特殊情况  1型,【开机无响应】故障现象,允许填写可能原因【电池电量不足】作为正确答案
+                                    if(!in_array($value,$yy_id) && $v['xx_id']!='000100010000' && $value!='0001KNYY0031'){
                                         $yuanyin_socre = 1+$yuanyin_socre;
                                         $kscore = 1+$kscore;
                                         $content[] = [
@@ -626,6 +631,7 @@ class Practice extends Backend
         $row['user_depart_name'] = Department::where('id',$rows->user_depart_id)->value('name');
         $row['start_time'] = $rows->start_time;
         $row['end_time'] = $rows->end_time;
+        $row['exam_collection_type'] = $rows->exam_collection_type;
 
 
         $fault_list = Db::name('real_exam_fault')->where(['exam_id'=>$ids,'flag'=>1])->select();
@@ -642,10 +648,19 @@ class Practice extends Backend
 
 
         $koufen = 0;
+        $dt_count = 0;
         foreach ($other_jielun as $key => $value) {
             if(!empty($value['cx_score'])){
                 $koufen = $koufen+abs($value['cx_score']);
             }
+            if($value['cx_type']=='未作答'){
+                $dt_count = $dt_count+1;
+            }
+        }
+        //训练,未作答。展示使用
+        $is_nowancheng = 0;
+        if($row['exam_collection_type']== 1 && $row['fault_total'] == $dt_count){
+            $is_nowancheng = 1;
         }
         $report_score = 15-$koufen;
         $row['report_score'] = $report_score>0?$report_score:0; 
@@ -658,6 +673,8 @@ class Practice extends Backend
         $row['total'] = $total;
 
         $this->view->assign('other_jielun', $other_jielun);
+        $this->view->assign('dt_count', $dt_count);
+        $this->view->assign('is_nowancheng', $is_nowancheng);
 
         $diffInSeconds = $rows['endtime'] - $rows['starttime']; // 两个时间戳之间的差异(秒)
         $minutes = floor($diffInSeconds / 60); // 计算分钟数

+ 35 - 2
application/admin/controller/teacher/Collection.php

@@ -29,7 +29,7 @@ class Collection extends Backend
     protected $exam_model = null;
     protected $whereExtend = null;
 
-    protected $noNeedRight = ['adduser','edituser', 'viewuser','selectpage'];
+    protected $noNeedRight = ['adduser','edituser', 'viewuser','deluser','selectpage'];
 
     public function _initialize()
     {
@@ -54,7 +54,9 @@ class Collection extends Backend
     public function adduser($ids = null)
     {
         if (false === $this->request->isPost()) {
-            $this->assignConfig('user_ids',[]);
+            $userids = $this->exam_model->where(['exam_collection_id'=>$ids])->column('user_id');
+            $this->assignConfig('user_ids',$userids);
+//            $this->assignConfig('userids',$userids);
             $this->assign('examid',$ids);
             return $this->view->fetch();
         }
@@ -248,6 +250,37 @@ class Collection extends Backend
         $this->success();
     }
 
+    public function deluser($ids = null)
+    {
+        $row = $this->exam_model->get($ids);
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+        $result = false;
+        Db::startTrans();
+        try {
+            //调整考试集合表的人员数量
+            $info = $this->model->where(['exam_collection_id'=>$row->exam_collection_id])->find();
+            $xueyuan_count = $info['xueyuan_count']-1??0;
+            $this->model->where(['exam_collection_id'=>$row->exam_collection_id])->update(['xueyuan_count'=>$xueyuan_count]);
+
+            //删除real_exam_fault 的故障内容
+            Db::name('real_exam_fault')->where(['exam_id'=>$ids])->delete();
+            //删除考试成员的数据
+            $this->exam_model->where(['exam_id'=>$ids])->delete();
+
+            $result = true;
+            Db::commit();
+        } catch (ValidateException|PDOException|Exception $e) {
+            Db::rollback();
+            $this->error($e->getMessage());
+        }
+        if (false === $result) {
+            $this->error(__('No rows were updated'));
+        }
+        $this->success();
+    }
+
     //查看学员
     public function viewuser($ids= null)
     {

+ 208 - 7
application/admin/controller/teacher/Exams.php

@@ -1,6 +1,7 @@
 <?php
 
 namespace app\admin\controller\teacher;
+use PhpOffice\PhpWord\PhpWord;
 
 use app\admin\model\department\Department;
 use app\common\controller\Backend;
@@ -17,6 +18,10 @@ use PhpOffice\PhpSpreadsheet\Spreadsheet;
 use PhpOffice\PhpSpreadsheet\Reader\Csv;
 use PhpOffice\PhpSpreadsheet\Reader\Xls;
 use PhpOffice\PhpSpreadsheet\Reader\Xlsx;
+
+
+
+
 /**
  * sim-考试表/成绩总分
  *
@@ -31,7 +36,7 @@ class Exams extends Backend
      */
     protected $model = null;
     protected $whereExtend = null;
-    protected $noNeedRight = ['export'];
+    protected $noNeedRight = ['export','examslog','report'];
     public function _initialize()
     {
         parent::_initialize();
@@ -181,8 +186,19 @@ class Exams extends Backend
         $minutes = floor($diffInSeconds / 60); // 计算分钟数
         $seconds = $diffInSeconds % 60; // 计算剩余的秒数
         $row['shijian'] = $minutes.'分'.$seconds.'秒';
-        
+
+        $koufen = 0;
+        if(!empty($other_jielun)){
+            foreach ($other_jielun as $key => $value) {
+                if(!empty($value['cx_score'])){
+                    $koufen = $koufen+abs($value['cx_score']);
+                }
+            }
+        }else{
+            $koufen = 15;
+        }
         if (false === $this->request->isPost()) {
+            $this->assignConfig('koufen', $koufen);
             $this->view->assign('other_jielun', $other_jielun);
             $this->view->assign('row', $row);
             return $this->view->fetch();
@@ -238,6 +254,7 @@ class Exams extends Backend
         $row['user_depart_name'] = Department::where('id',$rows->user_depart_id)->value('name');
         $row['start_time'] = $rows->start_time;
         $row['end_time'] = $rows->end_time;
+        $row['exam_collection_type'] = $rows->exam_collection_type;
 
 
         $fault_list = Db::name('real_exam_fault')->where(['exam_id'=>$ids,'flag'=>1])->select();
@@ -262,15 +279,24 @@ class Exams extends Backend
 
 
         $koufen = 0;
+        $dt_count = 0;
         if(!empty($other_jielun)){
             foreach ($other_jielun as $key => $value) {
                 if(!empty($value['cx_score'])){
                     $koufen = $koufen+abs($value['cx_score']);
                 }
+                if($value['cx_type']=='未作答'){
+                    $dt_count = $dt_count+1;
+                }
             }
         }else{
             $koufen = 15;
         }
+        //训练,未作答。展示使用
+        $is_nowancheng = 0;
+        if($row['exam_collection_type']== 1 && $row['fault_total'] == $dt_count){
+            $is_nowancheng = 1;
+        }
         $report_score = 15-$koufen;
         $row['report_score'] = $report_score>0?$report_score:0; 
 
@@ -282,7 +308,9 @@ class Exams extends Backend
         $row['total'] = $total;
 
         $this->view->assign('other_jielun', $other_jielun);
-        
+        $this->view->assign('dt_count', $dt_count);
+        $this->view->assign('is_nowancheng', $is_nowancheng);
+
         $diffInSeconds = $rows['endtime'] - $rows['starttime']; // 两个时间戳之间的差异(秒)
         $minutes = floor($diffInSeconds / 60); // 计算分钟数
         $seconds = $diffInSeconds % 60; // 计算剩余的秒数
@@ -321,6 +349,17 @@ class Exams extends Backend
         return json($result);
     }
 
+    //考试座次历史记录
+    public function examslog($ids = null)
+    {
+        $row = $this->model->get($ids);
+        if(!$row){
+            $this->error(__('No Results were found'));
+        }
+        $list = $this->model->where(['seat_id'=>$row->seat_id,'exam_collection_id'=>$row->exam_collection_id])->order('starttime asc')->select();
+        $this->view->assign('list', $list);
+        return $this->view->fetch();
+    }
 
     public function examing($ids = null)
     {
@@ -338,7 +377,7 @@ class Exams extends Backend
 
         $list = Db::name('seat')->select();
         foreach ($list as $key => $value) {
-            $exam = $this->model->where('exam_collection_id',$ids)->order('exam_id desc')->where('seat_id',$value['seat_num'])->find();
+            $exam = $this->model->where('exam_collection_id',$ids)->order('starttime desc')->where('seat_id',$value['seat_num'])->find();
             $user_username = '';
             $user_nickname = '';
             $exam_status = '未登录';
@@ -403,7 +442,7 @@ class Exams extends Backend
         }
         $exam_ids = $this->model->where('exam_collection_id',$ids)->column('exam_id');
         [$where, $sort, $order, $offset, $limit] = $this->buildparams();
-        $list = ExamsScore::where($where)->where('exam_id','in',$exam_ids)
+        $list = ExamsScore::where($where)->alias('s')->join('mx_real_exam e','s.exam_id=e.exam_id')->where('s.exam_id','in',$exam_ids)
             ->order($sort, $order)
             ->paginate($limit);
         foreach ($list as $k => $v){
@@ -500,6 +539,7 @@ class Exams extends Backend
         if ($this->request->request('keyField')) {
             return $this->selectpage();
         }
+        $exam_collection_id = $this->model->where($this->whereExtend)->order('exam_id desc')->value('exam_collection_id');
 
         $filter = $this->request->get("filter", '');
         $filter = (array)json_decode($filter, true);
@@ -507,13 +547,16 @@ class Exams extends Backend
         $op = (array)json_decode($op, true);
 
         if(isset($filter) &&!empty($filter['exam_collection_name'])){
-            $this->whereExtend['exam_collection_name'] = $filter['exam_collection_name'];
+            unset($this->whereExtend['exam_collection_id']);
             $this->request->get(['filter'=>json_encode($filter),'op'=>json_encode($op)]);
+        }else{
+            $this->whereExtend['exam_collection_id'] = $exam_collection_id;
         }
         [$where, $sort, $order, $offset, $limit] = $this->buildparams();
         $list = $this->model
             ->where($where)->where($this->whereExtend)
-            ->order($sort, $order)
+//            ->order($sort, $order)
+            ->order('user_username asc')
             ->paginate($limit);
 
         $depart_ids = [];
@@ -676,7 +719,165 @@ class Exams extends Backend
         die();
     }
 
+    /**
+     *
+     * @return void
+     */
+    public function report()
+    {
+        //如果发送的来源是 Selectpage,则转发到 Selectpage
+        if ($this->request->request('keyField')) {
+            return $this->selectpage();
+        }
+        $exam_collection_id = $this->model->where($this->whereExtend)->order('exam_id desc')->value('exam_collection_id');
+
+        $filter = $this->request->get("filter", '');
+        $filter = (array)json_decode($filter, true);
+        $op = $this->request->get("op", '');
+        $op = (array)json_decode($op, true);
+
+        $doc_name = '';
+        if(isset($filter) &&!empty($filter['exam_collection_name'])){
+            $doc_name = $filter['exam_collection_name'];
+            unset($this->whereExtend['exam_collection_id']);
+            $this->request->get(['filter'=>json_encode($filter),'op'=>json_encode($op)]);
+        }else{
+            $doc_name = $this->model->where('exam_collection_id',$exam_collection_id)->value('exam_collection_name');
+            $this->whereExtend['exam_collection_id'] = $exam_collection_id;
+        }
+        [$where, $sort, $order, $offset, $limit] = $this->buildparams();
+        $list = $this->model
+            ->where($where)->where($this->whereExtend)
+            ->order('user_username asc')
+            ->paginate($limit);
 
+        $languageEnGb = new \PhpOffice\PhpWord\Style\Language(\PhpOffice\PhpWord\Style\Language::ZH_CN);
+        $phpWord = new \PhpOffice\PhpWord\PhpWord();
+        $phpWord->getSettings()->setThemeFontLang($languageEnGb);
+
+        $fancyTableStyleName = 'Fancy Table';
+        $fancyTableStyle = array('borderSize' => 1, 'borderColor' => '#cad9ea', 'cellMargin' => 0, 'alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::CENTER, 'cellSpacing' => 0);
+        $fancyTableFirstRowStyle = array('borderBottomSize' => 0, 'borderBottomColor' => '#ffffff', 'bgColor' => '000000');
+        $fancyTableCellStyle = array('valign' => 'center');
+        $fancyTableFontStyle = array('bold' => true,'alignment' => \PhpOffice\PhpWord\SimpleType\JcTable::CENTER);
+        $phpWord-> addTableStyle($fancyTableStyleName, $fancyTableStyle, $fancyTableFirstRowStyle);
+
+        //中间学员的成绩信息  start
+        foreach ($list as $k=> $it) {
+            $section_string = 'section'.$k;
+            $section_string = $phpWord->addSection([
+                'pageSizeH' => \PhpOffice\PhpWord\Shared\Converter::inchToTwip(12.7),
+                'pageSizeW' => \PhpOffice\PhpWord\Shared\Converter::inchToTwip(8.3)
+            ]);
+            $section_string->addTextBreak(1);
+            $table = $section_string->addTable($fancyTableStyleName);
+            $section_string -> addText($it['user_nickname'].'考试详细',[
+                'size'    => 16,
+                'name'=>'黑体',
+            ],['alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER,
+                'spaceAfter'  => 500,                                                   //标题后部预留长度
+                'spaceBefore' => 0]);
+
+            $TableContentStyle1 = array('size'=>10,'name'=>'宋体','lineHeight'  => 1.5);
+
+            $table = $section_string->addTable($fancyTableStyleName);
+            $table->addRow();
+            $table->addCell(2000, $fancyTableCellStyle)->addText("学员账号",$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText($it['user_username'],$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText("学员姓名",$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText($it['user_nickname'],$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText("区队",$TableContentStyle1, $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText($it['user_nickname'],$TableContentStyle1, $fancyTableFontStyle);
+
+            $table->addRow();
+            $table->addCell(2000, $fancyTableCellStyle)->addText("考试开始时间",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText("详解",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText("考试结束时间",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText("详解",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText("成绩",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table->addCell(2000, $fancyTableCellStyle)->addText("详解",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+
+            $table2 = $section_string->addTable($fancyTableStyleName);
+            $table2->addRow();
+            $table2->addCell(2500, $fancyTableCellStyle)->addText("序号",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table2->addCell(2500, $fancyTableCellStyle)->addText("评分标准",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table2->addCell(2000, $fancyTableCellStyle)->addText("扣分",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table2->addCell(2500, $fancyTableCellStyle)->addText("维修情况",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table2->addCell(2500, $fancyTableCellStyle)->addText("题目",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+
+            $table3 = $section_string->addTable($fancyTableStyleName);
+            $table3->addRow();
+            $table3->addCell(12000, $fancyTableCellStyle)->addText("一.故障排除(75分)(本题得分:0)",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+
+            //4
+            $table4 = $section_string->addTable($fancyTableStyleName);
+            $table4->addRow();
+
+
+            $table5 = $section_string->addTable($fancyTableStyleName);
+            $table5->addRow();
+            $table5->addCell(12000, $fancyTableCellStyle)->addText("二.修理报告表(15分)(本题得分:0)",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table5->addRow();
+            $table5->addCell(12000, $fancyTableCellStyle)->addText("学员答作答情况",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+
+            $table6 = $section_string->addTable($fancyTableStyleName);
+            $table6->addRow();
+            $table6->addCell(600, $fancyTableCellStyle)->addText("序号",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table6->addCell(2000, $fancyTableCellStyle)->addText("故障现象",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table6->addCell(2000, $fancyTableCellStyle)->addText("可能原因",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table6->addCell(2000, $fancyTableCellStyle)->addText("故障部位",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table6->addCell(2000, $fancyTableCellStyle)->addText("排除方法",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table6->addCell(2000, $fancyTableCellStyle)->addText("扣分原因",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table6->addCell(1400, $fancyTableCellStyle)->addText("扣分情况",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+
+            //7
+            $table8 = $section_string->addTable($fancyTableStyleName);
+            $table8->addRow();
+            $table8->addCell(12000, $fancyTableCellStyle)->addText("故障现象少写或错写1条扣5分;可能原因少写或错写1条扣1分;故障部位少写或错写1条扣1分;排除方法少写或错写1条扣1分。",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table8->addRow();
+            $table8->addCell(12000, $fancyTableCellStyle)->addText("三.维修时间(10分)(本题得分:0)",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+
+
+            $table9 = $section_string->addTable($fancyTableStyleName);
+            $table9->addRow();
+            $table9->addCell(4500, $fancyTableCellStyle)->addText("按没超过1分钟扣1分的比例扣分",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table9->addCell(3000, $fancyTableCellStyle)->addText("考试时长:291分55秒",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table9->addCell(1500, $fancyTableCellStyle)->addText("扣分:10",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+
+
+            $table10 = $section_string->addTable($fancyTableStyleName);
+            $table10->addRow();
+            $table10->addCell(6000, $fancyTableCellStyle)->addText("五.成绩",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+            $table10->addCell(6000, $fancyTableCellStyle)->addText("",['name'=>'宋体','size'=>10], $fancyTableFontStyle);
+        }
+        //中间学员的成绩信息  end
+
+        $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
+
+        $file_name = $doc_name.'.docx';//''uploads/'.date('Ymd').'/'.$userInfo['grade'].'年级'.$userInfo['classed'].'班级'.$userInfo['nickname'].'.docx';
+
+        $tmpPath ='uploads/'.date('Ymd').'/';
+        if(!file_exists($tmpPath)){
+            mkdir($tmpPath, 0777, true);
+        }
+        $objWriter->save($file_name);
+        //以只读和二进制模式打开文件
+        $file = fopen ( $file_name, "rb" );
+
+        //告诉浏览器这是一个文件流格式的文件
+        Header ( "Content-type: application/octet-stream" );
+        //请求范围的度量单位
+        Header ( "Accept-Ranges: bytes" );
+        //Content-Length是指定包含于请求或响应中数据的字节长度
+        Header ( "Accept-Length: " . filesize ( $file_name ) );
+        //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
+        Header ( "Content-Disposition: attachment; filename=".$doc_name.'.docx' );
+
+        //读取文件内容并直接输出到浏览器
+        echo fread ( $file, filesize ( $file_name ) );
+        fclose ( $file );
+        exit ();
+    }
 
     public function multi($ids = null)
     {

+ 6 - 5
application/admin/controller/teacher/Practice.php

@@ -55,7 +55,8 @@ class Practice extends Backend
     public function adduser($ids = null)
     {
         if (false === $this->request->isPost()) {
-            $this->assignConfig('user_ids',[]);
+            $userids = $this->exam_model->where(['exam_collection_id'=>$ids])->column('user_id');
+            $this->assignConfig('user_ids',$userids);
             $this->assign('examid',$ids);
             return $this->view->fetch();
         }
@@ -288,9 +289,9 @@ class Practice extends Backend
         try {
             //删除考试集合  real_exam_collection
             foreach ($list as $item) {
-                if($item['yikao_count']>0){
-                    $this->error('已有学员参加考试,无法删除');
-                }
+//                if($item['yikao_count']>0){
+//                    $this->error('已有学员参加训练,无法删除');
+//                }
                 $count += $item->delete();
             }
             //删除学员考试 mx_real_exam
@@ -435,7 +436,7 @@ class Practice extends Backend
         // $sim_type = Db::name('real_exam_collection')->where('exam_collection_id',$ids)->value('sim_type');
         $list = Db::name('seat')->select();
         foreach ($list as $key => $value) {
-            $exam = $this->exam_model->where('exam_collection_id',$ids)->order('exam_id desc')->where('seat_id',$value['seat_num'])->find();
+            $exam = $this->exam_model->where('exam_collection_id',$ids)->order('starttime desc')->where('seat_id',$value['seat_num'])->find();
             $user_username = '';
             $user_nickname = '';
             $exam_status = '未登录';

+ 1 - 1
application/admin/view/common/header.html

@@ -73,7 +73,7 @@
                 <li class="dropdown user user-menu">
                     <a href="#" class="dropdown-toggle" data-toggle="dropdown">
                         <img src="{$admin.avatar|cdnurl|htmlentities}" class="user-image" alt="">
-                        <span class="hidden-xs">{$admin.nickname|htmlentities}</span>
+                        <span class="hidden-xs">{$admin.username|htmlentities}</span> / <span class="hidden-xs">{$admin.nickname|htmlentities}</span>
                     </a>
                     <ul class="dropdown-menu">
                         <!-- User image -->

+ 9 - 3
application/admin/view/student/exam/view.html

@@ -49,7 +49,7 @@
 </style>
 
 <div class="row">
-    <div class="djs">2025年装备维修评分标准</div>
+    <div class="djs">维修报告表</div>
     <div class="col-lg-12" style="margin: 10px 10px 0 10px">
         <table class="new_table">
             <tr>
@@ -66,7 +66,10 @@
                 <td>考试结束时间</td>
                 <td>{$row.end_time|htmlentities}</td>
                 <td>成绩</td>
-                <td>{$row.total|htmlentities}</td>
+                <td>
+                    {if $row.total<60} <span class="text-danger">{$row.total|htmlentities}</span>{/if}
+                    {if $row.total>59} <span class="text-success">{$row.total|htmlentities}</span>{/if}
+                </td>
             </tr>
         </table>
         <form id="update-form" role="form" data-toggle="validator" method="POST" action="">
@@ -171,7 +174,10 @@
                     </tr>
                     <tr>
                         <td colspan="2">五.成绩</td>
-                        <td colspan="3">{$row.total|htmlentities}</td>
+                        <td colspan="3">
+                            {if $row.total<60} <span class="text-danger">{$row.total|htmlentities}</span>{/if}
+                            {if $row.total>59} <span class="text-success">{$row.total|htmlentities}</span>{/if}
+                        </td>
                     </tr>
                 </table>
             </div>

+ 35 - 30
application/admin/view/student/exercise/analysis.html

@@ -58,7 +58,7 @@
 </style>
 
 <div class="row" style="background: #ffffff">
-    <div class="djs">得分成绩/满分成绩: <span class="df">{$row.total|htmlentities}</span>/100</div>
+<!--    <div class="djs">得分成绩/满分成绩: <span class="df">{$row.total|htmlentities}</span>/100</div>-->
     <div class="col-lg-12" style="margin: 10px 10px 0 10px">
         <form id="update-form" role="form" data-toggle="validator" method="POST" action="">
             <div class="tab-content" style="margin-top:5px;margin-right: 20px">
@@ -112,38 +112,43 @@
                             <td style="width:20%">扣分原因</td>  
 <!--                            <td>扣分情况</td> -->
                         </tr>
+                        {if $dt_count neq 3}
                         {volist name="other_jielun" id="vo2"}
-                        <tr style="height: 60px">    
-                            <td>{++$vo2.xh_id}</td>
-                            <td>
-                                {$vo2.xx_name|htmlentities}
-                            </td>
-                            <td>
-                                {$vo2.yy_name|htmlentities}
-                            </td>
-                            <td>
-                                {$vo2.bw_name|htmlentities}
-                            </td>
-                            <td>
-                                {$vo2.pc_name|htmlentities}
-                            </td>
-                            <td>
-                                {if !empty($vo2.cx_name)}
-                                {volist name="vo2.cx_name" id="vo22"}
-                                    {if $vo2.gzxz_id eq $vo22.gzxz_id}
-                                    <span class="text-danger">{$vo22.cx_type}:{$vo22.cx_name}</span><br/>
+                            {if !empty($vo2.gzxz_id) }
+                            <tr style="height: 60px">
+                                <td>{++$vo2.xh_id}</td>
+                                <td>
+                                    {$vo2.xx_name|htmlentities}
+                                </td>
+                                <td>
+                                    {$vo2.yy_name|htmlentities}
+                                </td>
+                                <td>
+                                    {$vo2.bw_name|htmlentities}
+                                </td>
+                                <td>
+                                    {$vo2.pc_name|htmlentities}
+                                </td>
+                                <td>
+                                    {if !empty($vo2.cx_name)}
+                                    {volist name="vo2.cx_name" id="vo22"}
+                                        {if $vo2.gzxz_id eq $vo22.gzxz_id}
+                                        <span class="text-danger">{$vo22.cx_type}:{$vo22.cx_name}</span><br/>
+                                        {/if}
+                                    {/volist}
+                                    <span class="text-danger">{$vo2.cx_type}</span><br/>
+                                    {else}
+                                    <span class="text-danger">{$vo2.cx_type}</span><br/>
                                     {/if}
-                                {/volist}
-                                <span class="text-danger">{$vo2.cx_type}</span><br/>
-                                {else}
-                                <span class="text-danger">{$vo2.cx_type}</span><br/>
-                                {/if}
-                            </td>
-<!--                            <td>-->
-<!--                                {$vo2.cx_score??''}<br/>-->
-<!--                            </td>-->
-                        </tr>
+                                </td>
+                            </tr>
+                            {/if}
                         {/volist}
+                        {else}
+                            <tr style="height: 60px">
+                                <td colspan="6"><span class="text-danger">没有任何作答</span></td>
+                            </tr>
+                        {/if}
                         <tr>
                             <td colspan="7" style="text-align:left;padding-left:1%;font-weight:600;">故障现象少写或错写1条扣5分;可能原因少写或错写1条扣1分;故障部位少写或错写1条扣1分;排除方法少写或错写1条扣1分。</td>
                         </tr>

+ 30 - 33
application/admin/view/student/practice/analysis.html

@@ -119,41 +119,38 @@
                             <td style="width:20%">扣分原因</td>  
 <!--                            <td>扣分情况</td> -->
                         </tr>
-                                                {volist name="other_jielun" id="vo2"}
-                        <tr style="height: 60px">    
-                            <td>{++$vo2.xh_id}</td>
-                            <td>
-                                {$vo2.xx_name|htmlentities}
-                            </td>
-                            <td>
-                                {$vo2.yy_name|htmlentities}
-                            </td>
-                            <td>
-                                {$vo2.bw_name|htmlentities}
-                            </td>
-                            <td>
-                                {$vo2.pc_name|htmlentities}
-                            </td>
-                            <td>
-                                {if !empty($vo2.cx_name)}
-                                {volist name="vo2.cx_name" id="vo22"}
-                                    {if $vo2.gzxz_id eq $vo22.gzxz_id}
-                                    <span class="text-danger">{$vo22.cx_type}:{$vo22.cx_name}</span><br/>
+                        {volist name="other_jielun" id="vo2"}
+                            {if !empty($vo2.gzxz_id) }
+                            <tr style="height: 60px">
+                                <td>{++$vo2.xh_id}</td>
+                                <td>
+                                    {$vo2.xx_name|htmlentities}
+                                </td>
+                                <td>
+                                    {$vo2.yy_name|htmlentities}
+                                </td>
+                                <td>
+                                    {$vo2.bw_name|htmlentities}
+                                </td>
+                                <td>
+                                    {$vo2.pc_name|htmlentities}
+                                </td>
+                                <td>
+                                    {if !empty($vo2.cx_name)}
+                                    {volist name="vo2.cx_name" id="vo22"}
+                                        {if $vo2.gzxz_id eq $vo22.gzxz_id}
+                                        <span class="text-danger">{$vo22.cx_type}:{$vo22.cx_name}</span><br/>
+                                        {/if}
+                                    {/volist}
+                                    <span class="text-danger">{$vo2.cx_type}</span><br/>
+                                    {else}
+                                    <span class="text-danger">{$vo2.cx_type}</span><br/>
                                     {/if}
-                                {/volist}
-                                <span class="text-danger">{$vo2.cx_type}</span><br/>
-                                {else}
-                                <span class="text-danger">{$vo2.cx_type}</span><br/>
-                                {/if}
-                            </td>
-<!--                            <td>-->
-<!--                                {$vo2.cx_score??''}<br/>-->
-<!--                            </td>-->
-                        </tr>
+                                </td>
+                            </tr>
+                            {/if}
                         {/volist}
-<!--                        <tr>-->
-<!--                            <td colspan="7" style="text-align:left;padding-left:1%;font-weight:600;">故障现象少写或错写1条扣5分;可能原因少写或错写1条扣1分;故障部位少写或错写1条扣1分;排除方法少写或错写1条扣1分。</td>-->
-<!--                        </tr>-->
+
                         </table>
                         <table class="new_table">
                         <tr>

+ 8 - 5
application/admin/view/teacher/exams/edit.html

@@ -87,17 +87,17 @@
                     </tr>
                     <tr>
                         <td>故障一未排除扣25分</td>
-                        <td><input type="text" name="row[fault_one_score]" value="{$row.fault_one_score|htmlentities}"></td>
+                        <td><input type="text" class="gz1" name="row[fault_one_score]" value="{$row.fault_one_score|htmlentities}"></td>
                         <td>{$row.fault_name_one|htmlentities}</td>
                     </tr>
                     <tr>
                         <td>故障二未排除扣25分</td>
-                        <td><input type="text" name="row[fault_two_score]" value="{$row.fault_two_score|htmlentities}"></td>
+                        <td><input type="text" class="gz2" name="row[fault_two_score]" value="{$row.fault_two_score|htmlentities}"></td>
                         <td>{$row.fault_name_two|htmlentities}</td>
                     </tr>
                     <tr>
                         <td>故障三未排除扣25分</td>
-                        <td><input type="text" name="row[fault_three_score]" value="{$row.fault_three_score|htmlentities}"></td>
+                        <td><input type="text" class="gz3" name="row[fault_three_score]" value="{$row.fault_three_score|htmlentities}"></td>
                         <td>{$row.fault_name_three|htmlentities}</td>
                     </tr>
                     <tr>
@@ -161,10 +161,13 @@
                     <tr>
                         <td colspan="1">按没超过1分钟扣1分的比例扣分</td>
                         <td colspan="1"><span class="text-danger">考试时长:{$row.shijian|htmlentities}</span></td>
-                        <td colspan="1">扣分:<input type="text" name="row[overtime_score]" value="{$row.overtime_score|htmlentities}"></td>
+                        <td colspan="1">扣分:<input type="text" class="overtime_score" name="row[overtime_score]" value="{$row.overtime_score|htmlentities}"></td>
                     </tr>
                     <tr>
-                        <td colspan="3" style="height: 3.5rem">总得分:{$row.total|htmlentities}</td>
+                        <td colspan="3" style="height: 3.5rem" class="total" total="{$row.total}">总得分:
+                            {if $row.total<60} <span class="text-danger">{$row.total|htmlentities}</span>{/if}
+                            {if $row.total>59} <span class="text-success">{$row.total|htmlentities}</span>{/if}
+                        </td>
                     </tr>
                     </tbody>
                 </table>

+ 197 - 0
application/admin/view/teacher/exams/examslog.html

@@ -0,0 +1,197 @@
+<style type="text/css">
+    .sm-st {
+        background: #fff;
+        padding: 20px;
+        -webkit-border-radius: 3px;
+        -moz-border-radius: 3px;
+        border-radius: 3px;
+        margin-bottom: 20px;
+        -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.05);
+        box-shadow: 0 1px 0px rgba(0, 0, 0, 0.05);
+    }
+
+    .sm-st-icon {
+        width: 60px;
+        height: 60px;
+        display: inline-block;
+        line-height: 60px;
+        text-align: center;
+        font-size: 30px;
+        background: #eee;
+        -webkit-border-radius: 5px;
+        -moz-border-radius: 5px;
+        border-radius: 5px;
+        float: left;
+        margin-right: 10px;
+        color: #fff;
+    }
+
+    .sm-st-info {
+        font-size: 12px;
+        padding-top: 2px;
+    }
+
+    .sm-st-info span {
+        display: block;
+        font-size: 24px;
+        font-weight: 600;
+    }
+
+    .orange {
+        background: #fa8564 !important;
+    }
+
+    .tar {
+        background: #45cf95 !important;
+    }
+
+    .sm-st .green {
+        background: #86ba41 !important;
+    }
+
+    .pink {
+        background: #AC75F0 !important;
+    }
+
+    .yellow-b {
+        background: #fdd752 !important;
+    }
+
+    .stat-elem {
+
+        background-color: #fff;
+        padding: 18px;
+        border-radius: 40px;
+
+    }
+
+    .stat-info {
+        text-align: center;
+        background-color: #fff;
+        border-radius: 5px;
+        margin-top: -5px;
+        padding: 8px;
+        -webkit-box-shadow: 0 1px 0px rgba(0, 0, 0, 0.05);
+        box-shadow: 0 1px 0px rgba(0, 0, 0, 0.05);
+        font-style: italic;
+    }
+
+    .stat-icon {
+        text-align: center;
+        margin-bottom: 5px;
+    }
+
+    .st-red {
+        background-color: #F05050;
+    }
+
+    .st-green {
+        background-color: #27C24C;
+    }
+
+    .st-violet {
+        background-color: #7266ba;
+    }
+
+    .st-blue {
+        background-color: #23b7e5;
+    }
+
+
+    .stats .stat-icon {
+        color: #28bb9c;
+        display: inline-block;
+        font-size: 26px;
+        text-align: center;
+        vertical-align: middle;
+        width: 50px;
+        float: left;
+    }
+
+    .stat {
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        display: inline-block;
+        margin-right: 10px;
+    }
+
+    .stat .value {
+        font-size: 20px;
+        line-height: 24px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        font-weight: 500;
+    }
+
+    .stat .name {
+        overflow: hidden;
+        text-overflow: ellipsis;
+    }
+
+    .stat.lg .value {
+        font-size: 26px;
+        line-height: 28px;
+    }
+
+    .stat.lg .name {
+        font-size: 16px;
+    }
+
+    .stat-col .progress {
+        height: 2px;
+    }
+
+    .stat-col .progress-bar {
+        line-height: 2px;
+        height: 2px;
+    }
+
+    .item {
+        padding: 30px 0;
+    }
+
+    .list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
+        z-index: 2;
+        color: #ffffff;
+        background-color: #1f8064;
+        border-color: #1f8064;
+    }
+    .centerstate{
+        text-align: center;
+    }
+</style>
+<div class="panel panel-default panel-intro">
+    <div class="panel-body">
+        <div id="myTabContent" class="tab-content">
+            <div class="row">
+                <div class="panel panel-success">
+                    <ul class="list-group">
+                        <li class="list-group-item active">
+                            <div class="row">
+                                <div class="col-xs-12 centerstate" style="width:20%">座次</div>
+                                <div class="col-xs-12 centerstate" style="width:20%">学员账号</div>
+                                <div class="col-xs-12 centerstate" style="width:20%">学员姓名</div>
+                                <div class="col-xs-12 centerstate" style="width:20%">开始考试时间</div>
+                                <div class="col-xs-12 centerstate" style="width:20%">结束考试时间</div>
+                            </div>
+                        </li>
+                        {volist name="list"  id="vo"}
+                        <li class="list-group-item " >
+                            <div class="row">
+                                <div class="col-xs-12 centerstate" style="width:20%">{$vo.seat_id}</div>
+                                <div class="col-xs-12 centerstate" style="width:20%">{$vo.user_username}</div>
+                                <div class="col-xs-12 centerstate " style="width:20%" >{$vo.user_nickname}</div>
+                                <div class="col-xs-12 centerstate " style="width:20%" >{$vo.start_time}</div>
+                                <div class="col-xs-12 centerstate " style="width:20%" >{$vo.end_time}</div>
+                            </div>
+                        </li>
+                        {/volist}
+                    </ul>
+                </div>
+            </div>
+        </div>
+    </div>
+</div>
+
+

+ 2 - 1
application/admin/view/teacher/exams/index.html

@@ -20,8 +20,9 @@
 
 <!--                        <a href="javascript:;" class="btn btn-chakan btn-info btn-view btn-disabled disabled {:$auth->check('teacher/exams/view')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-eye"></i> {:__('成绩详情')}</a>-->
                         <a href="javascript:;" class="btn btn-success btn-export" title="导出成绩" ><i class="fa fa-download"></i> 导出成绩</a>
-
                         <a href="javascript:;" class="btn btn-sure  btn-warning btn-multi btn-disabled disabled  " data-params="is_sure=1"><i class="fa fa-check"></i> 确认成绩</a>
+                        <a href="javascript:;" class="btn btn-info btn-report" title="导出报告表" ><i class="fa fa-download"></i> 导出报告表</a>
+
 
                     </div>
                     <table id="table" class="table table-striped table-bordered table-hover table-nowrap"

+ 9 - 3
application/admin/view/teacher/exams/view.html

@@ -48,7 +48,7 @@
 </style>
 
 <div class="row">
-    <div class="djs">2025年装备维修评分标准</div>
+    <div class="djs">维修报告表</div>
     <div class="col-lg-12" style="margin: 10px 10px 0 10px">
         <table class="new_table">
             <tr>
@@ -65,7 +65,10 @@
                 <td>考试结束时间</td>
                 <td>{$row.end_time|htmlentities}</td>
                 <td>成绩</td>
-                <td>{$row.total|htmlentities}</td>
+                <td>
+                    {if $row.total<60} <span class="text-danger">{$row.total|htmlentities}</span>{/if}
+                    {if $row.total>59} <span class="text-success">{$row.total|htmlentities}</span>{/if}
+                </td>
             </tr>
         </table>
         <form id="update-form" role="form" data-toggle="validator" method="POST" action="">
@@ -180,7 +183,10 @@
                     </tr>
                     <tr>
                         <td colspan="2">五.成绩</td>
-                        <td colspan="3">{$row.total|htmlentities}</td>
+                        <td colspan="3">
+                            {if $row.total<60} <span class="text-danger">{$row.total|htmlentities}</span>{/if}
+                            {if $row.total>59} <span class="text-success">{$row.total|htmlentities}</span>{/if}
+                        </td>
                     </tr>
                 </table>
             </div>

+ 7 - 1
application/admin/view/teacher/exams/view1.html

@@ -48,7 +48,7 @@
 </style>
 
 <div class="row">
-    <div class="djs">2025年装备维修评分标准</div>
+    <div class="djs">维修报告表</div>
     <div class="col-lg-12" style="margin: 10px 10px 0 10px">
         <table class="new_table">
             <tr>
@@ -130,6 +130,7 @@
                             <td style="width:20%">扣分原因</td>  
 <!--                            <td>扣分情况</td>  -->
                         </tr>
+                        {if $is_nowancheng neq 1}
                         {volist name="other_jielun" id="vo2"}
                         <tr style="height: 60px">    
                             <td>{++$vo2.xh_id}</td>
@@ -162,6 +163,11 @@
 <!--                            </td>-->
                         </tr>
                         {/volist}
+                        {else}
+                        <tr style="height: 60px">
+                            <td colspan="7"><span class="text-danger">没有任何作答</span></td>
+                        </tr>
+                        {/if}
                         <tr>
                             <td colspan="7" style="text-align:left;padding-left:1%;font-weight:600;">故障现象少写或错写1条扣5分;可能原因少写或错写1条扣1分;故障部位少写或错写1条扣1分;排除方法少写或错写1条扣1分。</td>
                         </tr>

+ 4 - 4
application/admin/view/teacher/task/edit.html

@@ -83,7 +83,7 @@
                                 if($key == 0){
                                     echo '<tr><td rowspan="10">FZD04B型侦毒器</td>';
                                 }
-                                if($key < 4){
+                                if($key < 3){
                                     echo '<td rowspan="2">'.$vo['name'].'</td>';
                                 }else{
                                     echo '<td rowspan="1">'.$vo['name'].'</td>';
@@ -145,11 +145,11 @@
                                 if($key == 0){
                                     echo '<tr><td rowspan="15">防化兵用毒剂报警器</td>';
                                 }
-                                if($key < 4){
+                                if($key < 5){
                                     echo '<td rowspan="2">'.$vo['name'].'</td>';
-                                }else if($key==4){
-                                    echo '<td rowspan="3">'.$vo['name'].'</td>';
                                 }else if($key==5){
+                                    echo '<td rowspan="1">'.$vo['name'].'</td>';
+                                }else if($key==6){
                                     echo '<td rowspan="2">'.$vo['name'].'</td>';
                                 }else{
                                     echo '<td rowspan="1">'.$vo['name'].'</td>';

+ 1 - 1
public/assets/js/backend/student/exercise.js

@@ -191,7 +191,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             
             Form.api.bindevent($("form[role=form]"), function(data, ret) {
                 if(ret.code==1){
-                    Backend.api.addtabs( ret.url,'得分分析');
+                    Backend.api.addtabs( ret.url,'答题分析');
                     Backend.api.closetabs('/admin/student/exercise/index');
                 }
             });

+ 1 - 1
public/assets/js/backend/student/practice.js

@@ -294,7 +294,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 
             Form.api.bindevent($("form[role=form]"), function(data, ret) {
                 if(ret.code==1){
-                    Backend.api.addtabs( ret.url,'得分分析');
+                    Backend.api.addtabs( ret.url,'答题分析');
                     Backend.api.closetabs('/admin/student/practice/index');
                 }
             });

+ 50 - 29
public/assets/js/backend/teacher/collection.js

@@ -100,28 +100,28 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                 },
                                 {
                                     name: 'dispatch',
-                                    text: '添加学员',
+                                    text: '考试设置',
                                     icon: 'fa fa-plus',
-                                    title: '添加学员',
+                                    title: '考试设置',
                                     classname: 'btn btn-success btn-xs btn-magic btn-dialog',
                                     extend: 'data-area=\'["85%","85%"]\'',
                                     url: 'teacher/collection/adduser',
                                 },
-                                {
-                                    name: 'dispatch',
-                                    text: '删除学员',
-                                    icon: 'fa fa-pencil',
-                                    title: '删除学员',
-                                    visible: function (rr) {
-                                        if(rr.user_count > 0){
-                                            return true;
-                                        }
-                                        return false;
-                                    },
-                                    classname: 'btn btn-info btn-xs btn-magic btn-dialog',
-                                    extend: 'data-area=\'["75%","75%"]\'',
-                                    url: 'teacher/collection/edituser',
-                                },
+                                // {
+                                //     name: 'dispatch',
+                                //     text: '删除学员',
+                                //     icon: 'fa fa-pencil',
+                                //     title: '删除学员',
+                                //     visible: function (rr) {
+                                //         if(rr.user_count > 0){
+                                //             return true;
+                                //         }
+                                //         return false;
+                                //     },
+                                //     classname: 'btn btn-info btn-xs btn-magic btn-dialog',
+                                //     extend: 'data-area=\'["75%","75%"]\'',
+                                //     url: 'teacher/collection/edituser',
+                                // },
                                 // {
                                 //     name: 'dispatch',
                                 //     text: '删除',
@@ -176,8 +176,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             // 初始化表格
             table.bootstrapTable({
                 url: $.fn.bootstrapTable.defaults.extend.index_url,
-                pk: 'task_id',
-                sortName: 'task_id',
+                pk: 'exam_id',
+                sortName: 'exam_id',
                 fixedColumns: true,
                 fixedRightNumber: 1,
                 singleSelect : true,
@@ -196,15 +196,35 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                         {field: 'question_setting_method', title: __('Question_setting_method'),searchList:{"1":"系统随机","2":"教员自选","3":"任务自选"},formatter: Table.api.formatter.simmethod},
                         {field: 'fault_names', title: __('故障内容'),formatter: Table.api.formatter.faultname,operate: false},
                         {field: 'createtime', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false,formatter: Table.api.formatter.datetime},
-                        // {
-                        //     field: 'operate', title: __('Operate'), width: 85, events: {
-                        //         'click .btn-chooseone': function (e, value, row, index) {
-                        //             Fast.api.close({url: row.url, multiple: multiple,task_id:row.task_id,task_name:row.name,fault_name:row.fault_name});
-                        //         },
-                        //     }, formatter: function () {
-                        //         return '<a href="javascript:;" class="btn btn-danger btn-chooseone btn-xs"><i class="fa fa-check"></i> ' + __('Choose') + '</a>';
-                        //     }
-                        // }
+                        {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate,
+                            // formatter: Table.api.formatter.operate
+                            formatter: Table.api.formatter.buttons,
+                            buttons: [
+                                {
+                                    name: 'dispatch',
+                                    text: '删除学员',
+                                    icon: 'fa fa-trash',
+                                    title: '删除学员',
+                                    visible: function (rr) {
+                                        if(rr.exam_status == 0){
+                                            return true;
+                                        }
+                                        return false;
+                                    },
+                                    classname: 'btn btn-danger btn-xs btn-magic btn-ajax',
+                                    confirm: '确定要删除该学员吗?',
+                                    success: function (data, ret) {
+                                        $(".btn-refresh").trigger("click");
+                                    },
+                                    error: function (data, ret) {
+                                        Layer.alert(ret.msg);
+                                        return false;
+                                    },
+                                    url: 'teacher/collection/deluser',
+                                },
+
+                            ],
+                        }
                     ]
                 ]
             });
@@ -405,8 +425,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                     return false;
                                 }else if(Config.user_ids.indexOf(rows.id)>-1){
                                     return true;
+                                    // return {disabled : true}
                                 }else{
-                                    return {disabled : true}
+                                    // return {disabled : true}
                                 }
                             }
                         },

+ 47 - 3
public/assets/js/backend/teacher/exams.js

@@ -82,7 +82,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
             table.bootstrapTable({
                 url: $.fn.bootstrapTable.defaults.extend.index_url,
                 pk: 'exam_id',
-                sortName: 'exam_id',
+                sortName: 'user_username',
+                sortOrder: 'asc',
                 fixedColumns: true,
                 fixedRightNumber: 1,
                 searchFormVisible:true,
@@ -210,6 +211,19 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
                     window.open(url+ '?filter='+JSON.stringify(filter)+'&op='+JSON.stringify(op));
                 }
             });
+            //导出成绩报告表
+            $(document).on("click", ".btn-report", function () {
+                var parenttable = table.closest('.bootstrap-table');
+                var options = table.bootstrapTable('getOptions');
+                var toolbar = $(options.toolbar, parenttable);
+                // 导出
+                var options = table.bootstrapTable('getOptions');
+                var search = options.queryParams({});
+                var filter = JSON.parse(search.filter);
+                var op = JSON.parse(search.op);
+                window.open('/admin/teacher/exams/report?filter='+JSON.stringify(filter)+'&op='+JSON.stringify(op));
+            });
+
 
         },
         persent: function () {
@@ -377,6 +391,21 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
                                         return false;
                                     },
                                     url: 'teacher/exams/view',
+                                },
+                                {
+                                    name: 'dispatch',
+                                    text: '考试历史记录',
+                                    icon: 'fa fa-clock-o',
+                                    title: '考试历史记录',
+                                    classname: 'btn btn-info btn-xs btn-magic btn-dialog',
+                                    extend: 'data-area=\'["75%","75%"]\'',
+                                    visible: function (row) {
+                                        if(row.total_score>0){
+                                            return true;
+                                        }
+                                        return false;
+                                    },
+                                    url: 'teacher/exams/examslog',
                                 }
                             ],
                         }
@@ -393,8 +422,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
             // 初始化表格
             table2.bootstrapTable({
                 url: $.fn.bootstrapTable.defaults.extend.score_url,
-                pk: 'exam_id',
-                sortName: 'exam_id',
+                pk: 'user_username',
+                sortName: 'user_username',
+                sortOrder: 'asc',
                 toolbar: '#toolbar2',
                 fixedColumns: true,
                 pageSize: 10,
@@ -491,6 +521,20 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
             Controller.api.bindevent();
         },
         edit: function () {
+            $(".gz1,.gz2,.gz3").blur(function(){
+                var gz1 = $(".gz1").val();
+                var gz2 = $(".gz2").val();
+                var gz3 = $(".gz3").val();
+                var overtime_score = $(".overtime_score").val();
+                console.log(gz1+'###'+gz2+'@@@@'+gz3)
+                var total = 100-gz1-gz2-gz3-overtime_score-Config.koufen;
+                if(total<60){
+                    var ht = '<span class="text-danger">'+total+'</span>';
+                }else{
+                    var ht = '<span class="text-success">'+total+'</span>';
+                }
+                $(".total").html('总得分:'+ht);
+            });
             Controller.api.bindevent();
         },
         api: {

+ 34 - 18
public/assets/js/backend/teacher/practice.js

@@ -102,28 +102,28 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
                                 },
                                 {
                                     name: 'dispatch',
-                                    text: '添加学员',
+                                    text: '训练设置',
                                     icon: 'fa fa-plus',
-                                    title: '添加学员',
+                                    title: '训练设置',
                                     classname: 'btn btn-success btn-xs btn-magic btn-dialog',
                                     extend: 'data-area=\'["85%","85%"]\'',
                                     url: 'teacher/practice/adduser',
                                 },
-                                {
-                                    name: 'dispatch',
-                                    text: '删除学员',
-                                    icon: 'fa fa-pencil',
-                                    title: '删除学员',
-                                    visible: function (rr) {
-                                        if(rr.user_count > 0){
-                                            return true;
-                                        }
-                                        return false;
-                                    },
-                                    classname: 'btn btn-info btn-xs btn-magic btn-dialog',
-                                    extend: 'data-area=\'["75%","75%"]\'',
-                                    url: 'teacher/practice/edituser',
-                                },
+                                // {
+                                //     name: 'dispatch',
+                                //     text: '删除学员',
+                                //     icon: 'fa fa-pencil',
+                                //     title: '删除学员',
+                                //     visible: function (rr) {
+                                //         if(rr.user_count > 0){
+                                //             return true;
+                                //         }
+                                //         return false;
+                                //     },
+                                //     classname: 'btn btn-info btn-xs btn-magic btn-dialog',
+                                //     extend: 'data-area=\'["75%","75%"]\'',
+                                //     url: 'teacher/practice/edituser',
+                                // },
                                 // {
                                 //     name: 'dispatch',
                                 //     text: '删除',
@@ -323,6 +323,21 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
                                         return false;
                                     },
                                     url: 'teacher/exams/view/type/1',
+                                },
+                                {
+                                    name: 'dispatch',
+                                    text: '训练历史记录',
+                                    icon: 'fa fa-clock-o',
+                                    title: '训练历史记录',
+                                    classname: 'btn btn-info btn-xs btn-magic btn-dialog',
+                                    extend: 'data-area=\'["75%","75%"]\'',
+                                    visible: function (row) {
+                                        if(row.total_score>0){
+                                            return true;
+                                        }
+                                        return false;
+                                    },
+                                    url: 'teacher/exams/examslog',
                                 }
                             ],
                         }
@@ -473,8 +488,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
                                     return false;
                                 }else if(Config.user_ids.indexOf(rows.id)>-1){
                                     return true;
+                                    // return {disabled : true}
                                 }else{
-                                    return {disabled : true}
+                                    // return {disabled : true}
                                 }
                             }
                         },

+ 4 - 4
public/assets/js/backend/teacher/task.js

@@ -124,7 +124,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                         if(i==0){
                                             task_tr += '    <td rowspan="11">'+xinghao+'</td>';
                                         }
-                                        if(i<4){
+                                        if(i<3){
                                             task_tr += '    <td rowspan="2">'+ret[i].name+'</td>';
                                         }else{
                                             task_tr += '    <td rowspan="1">'+ret[i].name+'</td>';
@@ -165,11 +165,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                                         if(i==0){
                                             task_tr += '    <td rowspan="15">'+xinghao+'</td>';
                                         }
-                                        if(i<4){
+                                        if(i<5){
                                             task_tr += '    <td rowspan="2">'+ret[i].name+'</td>';
-                                        }else if(i==4){
-                                            task_tr += '    <td rowspan="3">'+ret[i].name+'</td>';
                                         }else if(i==5){
+                                            task_tr += '    <td rowspan="1">'+ret[i].name+'</td>';
+                                        }else if(i==6){
                                             task_tr += '    <td rowspan="2">'+ret[i].name+'</td>';
                                         }else{
                                             task_tr += '    <td rowspan="1">'+ret[i].name+'</td>';