Kaynağa Gözat

20250113 调整

贾小兵 3 ay önce
ebeveyn
işleme
1791516d1b

+ 2 - 2
application/admin/controller/student/Collection.php

@@ -148,7 +148,7 @@ class Collection extends Backend
             echo "<script>location.href='/ZQOtIMLKud.php/student/collection/examing/ids/".$info['exam_id']."'</script>";
             die();
         }
-        if ($this->request->isPost()) {
+//        if ($this->request->isPost()) {
 //            $exam_collection_id = $this->request->post('exam_collection_id');
 //            if(empty($info->starttime)){
 //                $info->start_time = date('Y-m-d H:i:s');
@@ -157,7 +157,7 @@ class Collection extends Backend
 //            $info->exam_status = 4;
 //            $info->save();
 //            $this->success('开始成功','/ZQOtIMLKud.php/student/collection/examing/ids/'.$info['exam_id']);
-        }
+//        }
         $this->view->assign('info', $info);
         $this->view->assign('row', $row);
         $this->assignConfig('exam_id', $info['exam_id']);

+ 320 - 28
application/admin/controller/student/Practice.php

@@ -2,9 +2,15 @@
 
 namespace app\admin\controller\student;
 
+use app\admin\model\department\Department;
+use app\admin\model\Fault;
 use app\admin\model\Report;
 use app\common\controller\Backend;
 use app\common\model\Config as ConfigModel;
+use think\Db;
+use think\Env;
+use think\exception\PDOException;
+use think\exception\ValidateException;
 
 /**
  * sim-练习集合管理
@@ -46,16 +52,17 @@ class Practice extends Backend
     {
         $isset = $this->model->alias('z')
             ->join('real_exam r','z.exam_collection_id=r.exam_collection_id','left')
-            ->where('z.exam_collection_type=1 and z.exam_collection_state=2 and r.endtime=0 and r.user_id='.$this->auth->id)->find();
-        
+            ->where('z.exam_collection_type=1 and z.exam_collection_state=2  and r.endtime=0 and r.user_id='.$this->auth->id)->find();
+
         if(empty($isset)){
             //提示页面,没有开始的考试
             return $this->view->fetch('tishi');
         }else{
-//             $this->redirect('/ZQOtIMLKud.php/student/collection/examing/ids/'.$isset['exam_id'].'?ref=addtabs');
-            echo "<script>location.href='/ZQOtIMLKud.php/student/practice/examing/ids/".$isset['exam_id']."';</script>";
-            //$this->redirect('/hotelmanage/room/displayindex/ids/1');
-            exit();
+////             $this->redirect('/ZQOtIMLKud.php/student/collection/examing/ids/'.$isset['exam_id'].'?ref=addtabs');
+//            echo "<script>location.href='/ZQOtIMLKud.php/student/collection/examing/ids/".$isset['exam_id']."';</script>";
+//            //$this->redirect('/hotelmanage/room/displayindex/ids/1');
+//            exit();
+            echo "<script>location.href='/ZQOtIMLKud.php/student/practice/into/ids/".$isset['exam_collection_id']."'</script>";
         }
         die();
 
@@ -109,16 +116,24 @@ class Practice extends Backend
             ];
             $this->exam_model->save($arr);
         }
-        if ($this->request->isPost()) {
-            $exam_collection_id = $this->request->post('exam_collection_id');
-            if(empty($info->starttime)){
-                $info->start_time = date('Y-m-d H:i:s');
-                $info->starttime = time();
-            }
-            $info->exam_status = 4;
-            $info->save();
-            $this->success('开始成功','/ZQOtIMLKud.php/student/practice/examing/ids/'.$info['exam_id']);
+        if(!empty($info['starttime']))
+        {
+            echo "<script>location.href='/ZQOtIMLKud.php/student/practice/examing/ids/".$info['exam_id']."'</script>";
+            die();
         }
+//        if ($this->request->isPost()) {
+//            $exam_collection_id = $this->request->post('exam_collection_id');
+//            if(empty($info->starttime)){
+//                $info->start_time = date('Y-m-d H:i:s');
+//                $info->starttime = time();
+//            }
+//            $info->exam_status = 4;
+//            $info->save();
+//            $this->success('开始成功','/ZQOtIMLKud.php/student/practice/examing/ids/'.$info['exam_id']);
+//        }
+        $this->assignConfig('exam_id', $info['exam_id']);
+        $this->assignConfig('url_type', config('site.url_type'));
+        $this->assignConfig('is_fault', Env::get('app.is_fault'));
         $this->view->assign('row', $row);
         return $this->view->fetch();
     }
@@ -129,35 +144,312 @@ class Practice extends Backend
         if(!$row){
             $this->error('未找到记录');
         }
-        $this->assignConfig('timer', 60*$this->model->where(['exam_collection_id'=>$row['exam_collection_id']])->value('limit_duration'));
-        $this->view->assign('row', $row);
-
-        $departmentdata = [];
-        $departmentdata = Report::where(['level'=>4,'is_replace'=>1])->select();
         if ($this->request->isPost()) {
+            //先请求接口判断,再进行处理
+            if(Env::get('app.is_fault')){
+                $url = config('site.url_type').'/sim/real-exam/student/exam/submit/'.$ids;
+                // /dev-api/sim/real-exam/student/exam/submit/{examId}
+                $ret = json_decode(send_get($url),true);
+                // halt($ret);
+                if($ret['code']!=200){
+                    $this->error($ret['msg']);
+                }
+            }
+
+            //计算分数,保存记录
             $params = $this->request->post('row/a');
-            $row->end_time = date('Y-m-d H:i:s');
-            $row->endtime = time();
-            $row->exam_status = 5;
-            $row->save();
+
+            $result = false;
+            $score = 100;
+            $fault_one_score = 25;
+            $fault_two_score = 25;
+            $fault_three_score = 25;
+
+            $xianxian_score = 0;
+            $yuanyin_socre= 0;
+            $buwei_score= 0;
+            $fangfa_score= 0;
+
+            $xianxian_arr = [];
+            $yuanyin_arr = [];
+            $buwei_arr = [];
+            $fangfa_arr = [];
+            $jielun_score = 0;
+
+
+            Db::startTrans();
+            try {
+
+                //更新考试结束时间
+                $row->end_time = date('Y-m-d H:i:s');
+                $row->endtime = time();
+                $row->exam_status = 5;
+                $row->other_report = $params['other_report'];
+                $result = $row->save();
+
+                $info = $this->exam_model->where(['exam_id'=>$ids])->find();
+
+                //更新故障是否正确
+                $fault_list = Db::name('real_exam_fault')->where(['exam_id'=>$ids,'flag'=>1])->select();
+                if(!empty($fault_list)){
+                    foreach ($fault_list as $k =>$t){
+                        $answer_right = 0;
+                        if(!empty($t['sim_fault_question_value']) && !empty($t['sim_fault_answer_value'])){
+                            if($t['sim_fault_question_value']!=$t['sim_fault_answer_value']){
+                                $answer_right=1;
+                            }else{
+                                $answer_right=2;
+                            }
+                        }
+                        Db::name('real_exam_fault')->where(['ref_id'=>$t['ref_id']])->update(['answer_right'=>$answer_right]);
+                    }
+                }
+
+
+                //计算得分,故障是否有扣分  扣分制
+                $fault_right_list = Db::name('real_exam_fault')->where(['exam_id'=>$ids,'flag'=>1,'answer_right'=>['>',0]])->select();
+                if(!empty($fault_right_list)){
+                    if($fault_right_list[0]['answer_right']==1){
+                        $fault_one_score = 0;
+                    }
+                    if($fault_right_list[1]['answer_right']==1){
+                        $fault_two_score = 0;
+                    }
+                    if($fault_right_list[2]['answer_right']==1){
+                        $fault_three_score = 0;
+                    }
+
+                    //根据故障部位,查找故障现象
+                    $fault_arr = [$fault_right_list[0]['fault_id'],$fault_right_list[1]['fault_id'],$fault_right_list[2]['fault_id']];
+                    $partent_fault_id = Fault::where(['fault_id'=>['in',$fault_arr]])->column('parent_fault_id');
+
+                    //故障保存的是部位,需要查找故障现象
+                    $other_report = json_decode($params['other_report'],true);
+                    if(count($other_report)<3){
+                        $xianxian_score = 15-5*count($other_report)+$xianxian_score;
+                        $buwei_score = 3-1*count($other_report)+$buwei_score;
+                        $yuanyin_socre = 3-1*count($other_report)+$yuanyin_socre;
+                        $fangfa_score = 3-1*count($other_report)+$fangfa_score;
+                    }
+
+                    foreach ($other_report as $key => $em){
+                        //故障现象
+                        if(!in_array($em['xx_id'],$partent_fault_id)){
+                            $xianxian_score = 5+$xianxian_score;
+                            $xianxian_arr[] = $em['xx_id'];
+                        }
+
+                        //故障部位
+                        if(!empty($em['bw_id'])){
+                            $report_xx_id = Report::where(['bw_id'=>['in',$em['bw_id']]])->column('xx_id');
+                            if(!in_array($em['xx_id'],$report_xx_id)){ //现象不对,直接扣分
+                                $buwei_score = 1+$buwei_score;
+                                $buwei_arr[] = $em['bw_id'];
+                            }else{
+                                //现象正确,判断是不是正确的选项
+                                foreach (explode(',',$em['bw_id']) as $s => $bs){
+                                    if(!in_array($bs,$fault_arr)){
+                                        $buwei_score = 1+$buwei_score;
+                                        $buwei_arr[] = $bs;
+                                    }
+                                }
+                            }
+                        }else{
+                            //部位为空 +1
+                            $buwei_score = 1+ $buwei_score;
+                        }
+
+
+                        //可能原因
+                        if(!empty($em['yy_id'])){
+                            $report_bw_id = Report::where(['yy_id'=>['in',$em['yy_id']]])->column('bw_id');
+                            if(!in_array($em['bw_id'],$report_bw_id)){ //现象不对,直接扣分
+                                $yuanyin_socre = 1+$yuanyin_socre;
+                                $yuanyin_arr[] = $em['yy_id'];
+                            }else{
+
+                            }
+                        }else{
+                            //部位为空 +1
+                            $yuanyin_socre = 1+$yuanyin_socre;
+                        }
+
+                        //排除方法
+                        if(!empty($em['pc_id'])){
+                            $report_pc_id = Report::where(['pc_id'=>['in',$em['pc_id']]])->column('bw_id');
+                            if(!in_array($em['bw_id'],$report_pc_id)){ //现象不对,直接扣分
+                                $fangfa_score = 1+$fangfa_score;
+                                $fangfa_arr[] = $em['pc_id'];
+                            }else{
+
+                            }
+                        }else{
+                            $fangfa_score = 1+$fangfa_score;
+                        }
+                    }
+                }
+//                echo "<pre>";
+//                print_r($buwei_arr);
+//                echo '原因:'.$yuanyin_socre.'<br/>';
+//                echo '部位:'.$buwei_score.'<br/>';
+//                echo '现象:'.$xianxian_score;
+//                die();
+                $weixiu_score = $xianxian_score+$yuanyin_socre+$buwei_score+$fangfa_score;
+                if($weixiu_score>15){
+                    $weixiu_score = 15;
+                }
+//                $xianxian_score = rand(1,3);
+//                $yuanyin_socre= rand(1,3);
+//                $buwei_score= rand(1,3);
+//                $fangfa_score= rand(1,3);
+//                if(empty($params['other_jielun'])){
+//                    $jielun_score = rand(1,3);
+//                }
+                //是否超时
+                $overtime_fen = intval((time()-$info['endtime']) / 60);
+                if($overtime_fen>=10){
+                    $overtime_score = 10;
+                }else if($overtime_fen>0 && $overtime_fen<10){
+                    $overtime_score = $overtime_fen ;
+                }else{
+                    $overtime_score =0;
+                }
+                $fault_score = $score-$fault_one_score-$fault_two_score-$fault_three_score-$weixiu_score-$overtime_score;
+
+                //更新考试结果表
+                $params['exam_id'] = $ids;
+                $params['total'] = $fault_score;//得分;
+                $params['fault_one_score'] = $fault_one_score;//得分;
+                $params['fault_two_score'] = $fault_two_score;//得分;
+                $params['fault_three_score'] = $fault_three_score;//得分;
+
+                $params['xianxian_score'] = $xianxian_score;//得分;
+                $params['xianxian_content'] = !empty($xianxian_arr) ? json_encode($xianxian_arr):'';//错题;
+                $params['yuanyin_socre'] = $yuanyin_socre;//得分;
+                $params['yuanyin_content'] = !empty($yuanyin_arr) ? json_encode($yuanyin_arr) : '';//错题;
+                $params['buwei_score'] = $buwei_score;//得分;
+                $params['buwei_content'] = !empty($buwei_arr) ? json_encode($buwei_arr) :'';//错题;
+                $params['fangfa_score'] = $fangfa_score;//得分;
+                $params['fangfa_content'] = !empty($fangfa_arr) ? json_encode($fangfa_arr):'';//错题;
+//                $params['jielun_score'] = $jielun_score;//得分;
+                $params['overtime_score'] = $overtime_score;//得分;
+                Db::name('real_exam_score')->insert($params);
+
+                $this->exam_model->where(['exam_id'=>$ids])->update(['total_score'=>$fault_score]);
+
+                Db::commit();
+            } catch (ValidateException|PDOException|Exception $e) {
+                Db::rollback();
+                $this->error($e->getMessage());
+            }
+            if ($result === false) {
+                $this->error(__('No rows were inserted'));
+            }
+
             $this->success('交卷成功','/ZQOtIMLKud.php/student/practice/analysis/ids/'.$row['exam_id']);
         }
+
+
+        if(empty($row->starttime)){
+            $row->start_time = date('Y-m-d H:i:s');
+            $row->starttime = time();
+            $row->exam_status = 4;
+            $row->save();
+        }
+        $isloading =1;
+        if(empty($row->other_replace)){
+            $isloading = 0;
+            $row->other_replace = '[{"fault_id":"","request_status":"0"}]';
+        }
+        if(empty($row->other_report)){
+            $row->other_report = '[{"xx_id":"","yy_id":"","bw_id":"","pc_id":""}]';
+        }
+
+        //还未开始练习
+        $row->limit_duration = $this->model->where(['exam_collection_id'=>$row['exam_collection_id']])->value('limit_duration');
+        if(empty($row->starttime)){
+            $timer = 60*$row->limit_duration;
+        }else{
+            $timer = $row->limit_duration*60 - abs(time() - $row->starttime);
+        }
+
+        $departmentdata = [];
+        $departmentdata = Fault::where(['replace_part'=>1,'sim_type'=>$row->sim_type])->order('fault_id asc')->select();
         $this->view->assign('departmentdata', $departmentdata);
+
+
+        //故障现象
+        $xianxiang = Fault::where(['fault_type'=>1,'sim_type'=>$row->sim_type])->select();
+        $this->view->assign('xianxiang', $xianxiang);
+
+
+        $row->replace_list =Db::name('real_exam_comp_request')->where(['exam_id'=>$ids])->select();
+        $this->assignConfig('ids',$ids);
+        $this->assignConfig('timer',$timer);
+        $this->assignConfig('isloading',$isloading);
+        $this->view->assign('row', $row);
         return $this->view->fetch();
     }
 
 
     public function analysis($ids = null)
     {
-        $row = $this->exam_model->get($ids);
-        if(!$row){
-            $this->error('未找到记录');
-        }
         if ($this->request->isPost()) {
             $params = $this->request->post('row/a');
             //计算总分到学员考试表
             $this->success('操作成功','/ZQOtIMLKud.php/student/practice/index');
         }
+        $row = Db::name('real_exam_score')->where('exam_id', $ids)->find();
+        if (!$row) {
+            $this->error(__('No Results were found'));
+        }
+        $rows = $this->exam_model->get($ids);
+        $row['seat_id'] = $rows->seat_id;
+        $row['user_nickname'] = $rows->user_nickname;
+        $row['user_username'] = $rows->user_username;
+        $row['user_depart_id'] = $rows->user_depart_id;
+        $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;
+
+
+        $fault_list = Db::name('real_exam_fault')->where(['exam_id'=>$ids,'flag'=>1])->select();
+        $row['fault_name_one'] = !empty($fault_list[0]['fault_id']) ? Fault::where('fault_id',$fault_list[0]['fault_id'])->value('name'):'';
+        $row['fault_name_two'] = !empty($fault_list[1]['fault_id']) ? Fault::where('fault_id',$fault_list[1]['fault_id'])->value('name'):'';
+        $row['fault_name_three'] = !empty($fault_list[2]['fault_id']) ? Fault::where('fault_id',$fault_list[2]['fault_id'])->value('name'):'';
+
+        if($row['xianxian_score']>0 && empty($row['xianxian_content']))
+        {
+            $row['xianxian_content_name'] = '未选择';
+        }else{
+            $xianxian = Report::where(['xx_id'=>['in',json_decode($row['xianxian_content'],true)]])->column('xx_name');
+            $row['xianxian_content_name'] = !empty($xianxian) ? implode(',',$xianxian) :'不存在或未选择';
+        }
+        if($row['yuanyin_socre']>0 && empty($row['yuanyin_content']))
+        {
+            $row['yuanyin_content_name'] = '未选择';
+        }else{
+            $yuanyin = Report::where(['yy_id'=>['in',json_decode($row['yuanyin_content'],true)]])->column('yy_name');
+            $row['yuanyin_content_name'] = !empty($yuanyin) ? implode(',',$yuanyin) :'不存在或未选择';
+        }
+
+        if($row['buwei_score']>0 &&empty($row['buwei_content']))
+        {
+            $row['buwei_content_name'] = '未选择';
+        }else{
+            $buwei = Report::where(['bw_id'=>['in',json_decode($row['buwei_content'],true)]])->column('bw_name');
+            $row['buwei_content_name'] = !empty($buwei) ? implode(',',$buwei) :'不存在或未选择';
+        }
+        if($row['fangfa_score']>0 && empty($row['fangfa_content']))
+        {
+            $row['fangfa_content_name'] = '未选择';
+        }else{
+            $fangfa = Report::where(['pc_id'=>['in',json_decode($row['fangfa_content'],true)]])->column('pc_name');
+            $row['fangfa_content_name'] = !empty($fangfa) ? implode(',',$fangfa) :'不存在或未选择';
+        }
+
+
+        $this->view->assign('row', $row);
         return $this->view->fetch();
     }
 

+ 1 - 0
application/admin/controller/teacher/Collection.php

@@ -101,6 +101,7 @@ class Collection extends Backend
                     'user_username' => $it['username'],
                     'user_nickname' => $it['nickname'],
                     'user_id' => $it['id'],
+                    'sim_id' => Db::name('sim')->where('sim_type',$params['sim_type'])->value('sim_id'),
                     'user_depart_id' => $it['depart_id'],
                     'create_time'=>date('Y-m-d H:i:s'),
                     'update_time' => date('Y-m-d H:i:s'),

+ 1 - 0
application/admin/controller/teacher/Practice.php

@@ -105,6 +105,7 @@ class Practice extends Backend
                     'user_username' => $it['username'],
                     'user_nickname' => $it['nickname'],
                     'user_id' => $it['id'],
+                    'sim_id' => Db::name('sim')->where('sim_type',$params['sim_type'])->value('sim_id'),
                     'user_depart_id' => $it['depart_id'],
                     'create_time'=>date('Y-m-d H:i:s'),
                     'update_time' => date('Y-m-d H:i:s'),

+ 50 - 50
application/admin/view/student/practice/analysis.html

@@ -47,18 +47,18 @@
 </style>
 
 <div class="row">
-    <div class="djs">得分成绩/满分成绩: <span class="df">55</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">
             <div class="tab-pane tab_log1" style="display: block">
                 <table class="new_table">
                     <tr>
-                        <td style="width:15%">序号</td>
-                        <td style="width:20%">评分标准</td>
-                        <td style="width:15%">扣分</td>
-                        <td style="width:15%">维修情况</td>
-                        <td>题目</td>
+                        <td style="width:5%">序号</td>
+                        <td style="width:25%">评分标准</td>
+                        <td style="width:10%">扣分</td>
+                        <td style="width:10%">维修情况</td>
+                        <td style="width:45%">题目</td>
                     </tr>
                     <tr>
                         <td colspan="5" style="text-align: left;padding-left: 1%">一.故障排除(75分)</td>
@@ -66,30 +66,30 @@
                     <tr>
                         <td>1</td>
                         <td>故障一未排除扣25分</td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
+                        <td>{$row.fault_one_score|htmlentities}</td>
+                        <td>{if $row.fault_one_score eq 0 }<span class="text-success">已排除</span> {else} <span class="text-danger">未排除</span>{/if}</td>
+                        <td>{$row.fault_name_one|htmlentities}</td>
                     </tr>
                     <tr>
                         <td>2</td>
                         <td>故障二未排除扣25分</td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
+                        <td>{$row.fault_two_score|htmlentities}</td>
+                        <td>{if $row.fault_two_score eq 0 }<span class="text-success">已排除</span> {else} <span class="text-danger">未排除</span>{/if}</td>
+                        <td>{$row.fault_name_two|htmlentities}</td>
                     </tr>
                     <tr>
                         <td>2</td>
                         <td>故障三未排除扣25分</td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
+                        <td>{$row.fault_three_score|htmlentities}</td>
+                        <td>{if $row.fault_three_score eq 0 }<span class="text-success">已排除</span> {else} <span class="text-danger">未排除</span>{/if}</td>
+                        <td>{$row.fault_name_three|htmlentities}</td>
                     </tr>
                     <tr>
-                        <td style="width:15%">序号</td>
-                        <td style="width:20%">评分标准</td>
-                        <td style="width:15%">扣分</td>
-                        <td style="width:15%">报告情况</td>
-                        <td>题目</td>
+                        <td style="width:5%">序号</td>
+                        <td style="width:25%">评分标准</td>
+                        <td style="width:10%">扣分</td>
+                        <td style="width:10%">报告情况</td>
+                        <td style="width:45%">扣分原因</td>
                     </tr>
                     <tr>
                         <td colspan="5" style="text-align: left;padding-left: 1%">二.修理报告表(15分)</td>
@@ -97,57 +97,57 @@
                     <tr>
                         <td>1</td>
                         <td>故障现象少写或错写1条扣1分</td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
+                        <td>{$row.xianxian_score|htmlentities}</td>
+                        <td>{if $row.xianxian_score eq 0 }<span class="text-success">已排除</span> {else} <span class="text-danger">未排除</span>{/if}</td>
+                        <td>{$row.xianxian_content_name|htmlentities}</td>
                     </tr>
                     <tr>
                         <td>2</td>
                         <td>可能原因少写或错写1条扣1分</td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
+                        <td>{$row.yuanyin_socre|htmlentities}</td>
+                        <td>{if $row.yuanyin_socre eq 0 }<span class="text-success">已排除</span> {else} <span class="text-danger">未排除</span>{/if}</td>
+                        <td>{$row.yuanyin_content_name|htmlentities}</td>
                     </tr>
                     <tr>
                         <td>3</td>
                         <td>故障部位少写或错写1条扣1分</td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
+                        <td>{$row.buwei_score|htmlentities}</td>
+                        <td>{if $row.buwei_score eq 0 }<span class="text-success">已排除</span> {else} <span class="text-danger">未排除</span>{/if}</td>
+                        <td>{$row.buwei_content_name|htmlentities}</td>
                     </tr>
                     <tr>
                         <td>4</td>
                         <td>排除方法少写或错写1条扣1分</td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                    </tr>
-                    <tr>
-                        <td>5</td>
-                        <td>修复结论错扣2分</td>
-                        <td></td>
-                        <td></td>
-                        <td></td>
-                    </tr>
+                        <td>{$row.fangfa_score|htmlentities}</td>
+                        <td>{if $row.fangfa_score eq 0 }<span class="text-success">已排除</span> {else} <span class="text-danger">未排除</span>{/if}</td>
+                        <td>{$row.fangfa_content_name|htmlentities}</td>
+                    </tr>
+<!--                    <tr>-->
+<!--                        <td>5</td>-->
+<!--                        <td>修复结论错扣2分</td>-->
+<!--                        <td></td>-->
+<!--                        <td></td>-->
+<!--                        <td></td>-->
+<!--                    </tr>-->
                     <tr>
                         <td colspan="5" style="text-align: left;padding-left: 1%">三.维修时间(10分)</td>
                     </tr>
                     <tr>
                         <td colspan="2">按没超过1分钟扣1分的比例扣分</td>
-                        <td colspan="3"></td>
-                    </tr>
-                    <tr>
-                        <td colspan="2">扣分小计</td>
-                        <td colspan="3">超时</td>
+                        <td colspan="3">{$row.overtime_score|htmlentities}</td>
                     </tr>
+<!--                    <tr>-->
+<!--                        <td colspan="2">扣分小计</td>-->
+<!--                        <td colspan="3">超时</td>-->
+<!--                    </tr>-->
                     <tr>
                         <td colspan="2">五.成绩</td>
-                        <td colspan="3"></td>
-                    </tr>
-                    <tr>
-                        <td colspan="2">说明</td>
-                        <td colspan="3"></td>
+                        <td colspan="3">{$row.total|htmlentities}</td>
                     </tr>
+<!--                    <tr>-->
+<!--                        <td colspan="2">说明</td>-->
+<!--                        <td colspan="3"></td>-->
+<!--                    </tr>-->
                 </table>
             </div>
 

+ 41 - 61
application/admin/view/student/practice/examing.html

@@ -104,105 +104,85 @@
 <div class="row animated fadeInRight">
     <div class="col-md-12">
         <div class="box box-primary">
-
             <div class="panel-body">
-                <form id="update-form" role="form" data-toggle="validator" method="POST" action="">
-                    {:token()}
-                    <div class="panel-heading">
-                        <div class="readme">正在练习中,考试时间 50 分钟</div>
-                        <div class="djs">距离练习结束还有 <span id="timer"></span> </div>
-                    </div>
-                    <div class="box-body box-profile">
-                        <div class="col-xs-12 col-sm-12">
+                <div class="panel-heading">
+                    <div class="readme">正在练习中,考试时间 {$row.limit_duration} 分钟</div>
+                    <div class="djs">距离练习结束还有 <span id="timer"></span> </div>
+                </div>
+                <div class="box-body box-profile">
+                    <form id="update-form" role="form" data-toggle="validator" method="POST" action="">
+                        <div class="col-xs-12 col-sm-12" style="text-align: center">
                             <div class="form-group">
-                                <label  style=" width: 10%;" class="control-label col-xs-3 col-sm-3 addRedStar">{:__('更换件列表')}:</label>
+                                <label  style=" width: 10%;" class="control-label col-xs-3 col-sm-3">{:__('申请更换件')}:</label>
                                 <div class="col-xs-9 col-sm-9">
-                                    <dl class="fieldlist" data-name="row[other_supplier]" data-template="other_suppliertpl">
+                                    <dl class="fieldlist" data-name="row[other_replace]" data-template="other_suppliertpl">
                                         <dd>
-                                            <ins style="width: 450px;">更换件类型</ins>
-                                            <ins style="width: 300px;">状态</ins>
+                                            <ins style="width: 550px;">更换件类型</ins>
+                                            <ins style="width: 430px;">状态</ins>
                                         </dd>
-                                        <dd>
+                                        <dd style="margin-right: 87%">
                                             <a href="javascript:;" class="btn btn-sm btn-info btn-append"><i class="fa fa-plus"></i> 追加</a>
                                         </dd>
-                                        <textarea name="row[other_supplier]" class="form-control hide" cols="30" rows="5" data-rule="required"></textarea>
+                                        <textarea name="row[other_replace]" class="form-control hide other_replace" cols="30" rows="5">{$row.other_replace}</textarea>
                                     </dl>
                                     <!--定义模板,模板语法使用Art-Template模板语法-->
                                     <script type="text/html" id="other_suppliertpl">
                                         <dd class="form-inline">
-<!--                                            <input type="text" name="unwin[<%=index%>][name]"-->
-<!--                                                   class="form-control" value="<%=row['name']%>" style="width: 450px;" >-->
-                                            <select class="form-control" name="unwin[<%=index%>][name]" style="width: 550px;">
+                                            <select class="form-control" name="unwin[<%=index%>][fault_id]" style="width: 550px;">
+                                                <option value="" >请选择</option>
                                                 {foreach name="departmentdata" item="vo"}
-                                                <option value="{$vo.report_id}" >{$vo.name}</option>
+                                                <option value="{$vo.fault_id}" <%if(row.fault_id =='{$vo.fault_id}'){%> selected <% }%> >{$vo.replace_name}</option>
                                                 {/foreach}
                                             </select>
-                                            <select class="form-control" name="unwin[<%=index%>][states]" style="width: 420px;">
-                                                <option value="0">未送</option>
-                                                <option value="0">已送</option>
-                                            </select>
-<!--                                            <input type="text" name="unwin[<%=index%>][price]"-->
-<!--                                                   style="width: 300px;"-->
-<!--                                                   class="form-control" value="<%=row['price']%>" >-->
+                                            <input type="text" class="form-control" readonly name="unwin[<%=index%>][request_status]" value="<%if(row["request_status"]==1){%>已申请<%}else if(row["request_status"]==2){ %>已送达<%}else if(row["request_status"]==3){%>驳回<%}else{%>未申请<%}%>" style="width: 430px;">
                                             <span class="btn btn-sm btn-danger btn-remove" title="移除"><i class="fa fa-times"></i></span>
-                                            <span class="btn btn-sm btn-success btn-save" title="保存"><i class="fa fa-check"></i></span>
+                                            <span class="btn btn-sm btn-success btn-replace" title="保存"><i class="fa fa-check"></i></span>
                                         </dd>
                                     </script>
                                 </div>
                             </div>
                         </div>
-
-                        <div class="col-xs-12 col-sm-12">
+                        <div class="col-xs-12 col-sm-12" style="text-align: center">
                             <div class="form-group">
-                                <label  style=" width: 10%;" class="control-label col-xs-3 col-sm-3 addRedStar">{:__('更换件列表')}:</label>
+                                <label  style=" width: 10%;" class="control-label col-xs-3 col-sm-3">{:__('维修报告列表')}:</label>
+
                                 <div class="col-xs-9 col-sm-9">
-                                    <dl class="fieldlist" data-name="row[other_supplier1]" data-template="other_suppliertpl1">
-                                        <dd>
+                                    <dl class="fieldlist" data-name="row[other_report]" data-template="other_suppliertpl1" id="second-fieldlist">
+                                        <dd >
                                             <ins style="width: 250px;">故障现象</ins>
                                             <ins style="width: 250px;">可能原因</ins>
                                             <ins style="width: 250px;">故障部位</ins>
                                             <ins style="width: 250px;">排除方法</ins>
-
                                         </dd>
-                                        <dd>
+                                        <dd style="margin-right: 87%">
                                             <a href="javascript:;" class="btn btn-sm btn-info btn-append"><i class="fa fa-plus"></i> 追加</a>
                                         </dd>
-                                        <textarea name="row[other_supplier1]" class="form-control hide" cols="30" rows="5" data-rule="required"></textarea>
+                                        <!--                                        hide-->
+                                        <textarea name="row[other_report]" class="form-control hide other_report" cols="30" rows="5">{$row.other_report}</textarea>
                                     </dl>
-                                    <!--定义模板,模板语法使用Art-Template模板语法-->
                                     <script type="text/html" id="other_suppliertpl1">
                                         <dd class="form-inline">
-                                            <input type="text" name="unwin[<%=index%>][name]"
-                                                   class="form-control" value="<%=row['name']%>" style="width: 250px;" >
-                                            <input type="text" name="unwin[<%=index%>][price]"
-                                                   style="width: 250px;"
-                                                   class="form-control" value="<%=row['price']%>" >
-                                            <input type="text" name="unwin[<%=index%>][price]"
-                                                   style="width: 250px;"
-                                                   class="form-control" value="<%=row['price']%>" >
-                                            <input type="text" name="unwin[<%=index%>][price]"
-                                                   style="width: 250px;"
-                                                   class="form-control" value="<%=row['price']%>" >
+                                            <select class="form-control" name="unwin[<%=index%>][xx_id]" style="width: 260px;">
+                                                <option value="" >请选择</option>
+                                                {foreach name="xianxiang" item="vo"}
+                                                <option value="{$vo.fault_id}" <%if(row.xx_id =='{$vo.fault_id}'){%> selected <% }%> >{$vo.name}</option>
+                                                {/foreach}
+                                            </select>
+                                            <input style="width: 250px;" type="text" name="<%=unwin%>[<%=index%>][yy_id]" class="form-control selectpage" data-source="fault/selectpage" data-multiple="true" data-primary-key="fault_id"  data-field="name" data-params='{"custom[fault_type]":"2","custom[sim_type]":"{$row.sim_type}"}' value="<%=row.yy_id%>"/>
+                                            <input style="width: 250px;" type="text" name="<%=unwin%>[<%=index%>][bw_id]" class="form-control selectpage" data-source="fault/selectpage" data-multiple="true" data-primary-key="fault_id"  data-field="name" data-params='{"custom[fault_type]":"3","custom[sim_type]":"{$row.sim_type}"}' value="<%=row.bw_id%>"/>
+                                            <input style="width: 250px;" type="text" name="<%=unwin%>[<%=index%>][pc_id]" class="form-control selectpage" data-source="fault/selectpage" data-multiple="true" data-primary-key="fault_id"  data-field="name" data-params='{"custom[fault_type]":"4","custom[sim_type]":"{$row.sim_type}"}' value="<%=row.pc_id%>"/>
+
                                             <span class="btn btn-sm btn-danger btn-remove"><i class="fa fa-times"></i></span>
                                         </dd>
                                     </script>
                                 </div>
                             </div>
                         </div>
-
-<!--                        <div class="col-xs-12 col-sm-12">-->
-<!--                            <div class="form-group">-->
-<!--                                <label  style=" width: 10%;" class="control-label col-xs-3 col-sm-3 addRedStar">{:__('修复结论')}:</label>-->
-<!--                                <div class="col-xs-9 col-sm-9">-->
-<!--                                    <textarea class="form-control" data-rule="required" name="row[jielun]" style="width: 91%"></textarea>-->
-<!--                                </div>-->
-<!--                            </div>-->
-<!--                        </div>-->
-                    </div>
-                    <div class="form-group" style="text-align: center;">
-                        <button type="submit" class="btn btn-info" style="text-align: center;width: 10%">{:__('交卷')}</button>
-                    </div>
-                </form>
+                        <div class="form-group" style="text-align: center">
+                            <button type="submit" class="btn btn-info" style="text-align: center;width: 10%;margin-top: 5%">{:__('交卷')}</button>
+                        </div>
+                    </form>
+                </div>
             </div>
         </div>
     </div>

+ 2 - 1
application/admin/view/student/practice/into.html

@@ -79,9 +79,10 @@
                     <div class="box-body box-profile">
                         <div style="color: rgb(192, 74, 84)">1.遵守考场纪律‌</div>
                         <div style="color: rgb(192, 74, 84)">2.合理安排时间</div>
+                        <div style="color: rgb(192, 74, 84)">3.超时10分钟不交卷自动结束</div>
                     </div>
                     <div class="form-group" style="text-align: center">
-                        <button type="submit" class="btn btn-info">{:__('开始练习')}</button>
+                        <button type="button" class="btn btn-info btn-startexam">{:__('开始练习')}</button>
                         <!--                            <button type="reset" class="btn btn-default">{:__('Reset')}</button>-->
                     </div>
                 </form>

+ 1 - 0
application/admin/view/student/practice/tishi.html

@@ -66,6 +66,7 @@
                     <div class="box-body box-profile">
                         <div style="color: rgb(192, 74, 84)">1.遵守考场纪律‌</div>
                         <div style="color: rgb(192, 74, 84)">2.合理安排时间</div>
+                        <div style="color: rgb(192, 74, 84)">3.超时10分钟不交卷自动结束</div>
                     </div>
                     <div class="form-group" style="text-align: center">
                         <button type="button" class="btn btn-warning">{:__('暂无开启的练习,请耐心等待...')}</button>

+ 5 - 6
public/assets/js/backend/student/collection.js

@@ -131,11 +131,11 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 }, 1000);
 
                 //五秒刷新,同步更换件列表数据
-                // if(Config.isloading==1 && countdownTime>0){
-                //     setInterval(function() {
-                //         window.location.reload();
-                //     }, 30000);
-                // }
+                if(Config.isloading==1 && countdownTime>0){
+                    setInterval(function() {
+                        window.location.reload();
+                    }, 30000);
+                }
 
             });
 
@@ -174,7 +174,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     Backend.api.addtabs( ret.url);
                 }
             });
-
         },
         analysis: function () {
             Form.api.bindevent($("form[role=form]"), function(data, ret) {

+ 72 - 6
public/assets/js/backend/student/practice.js

@@ -84,9 +84,28 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
         },
         into: function () {
             // Controller.api.bindevent();
-            Form.api.bindevent($("form[role=form]"), function(data, ret) {
-                if(ret.code==1){
-                    Backend.api.addtabs( ret.url,'正在练习');
+            // Form.api.bindevent($("form[role=form]"), function(data, ret) {
+            //     if(ret.code==1){
+            //         Backend.api.addtabs( ret.url,'正在练习');
+            //     }
+            // });
+            $(document).on('click', '.btn-startexam', function () {
+                if(Config.is_fault){
+                    // $.ajax({
+                    //     url: Config.url_type+"/sim/real-exam/student/exam/start/"+Config.exam_id,
+                    //     type: 'get',
+                    //     success: function (data) {
+                    //         console.log(data);
+                    //         if(data.code==200){
+                    //             window.location.href = '/ZQOtIMLKud.php/student/collection/examing/ids/'+Config.exam_id;
+                    //         }else{
+                    //             Layer.alert(data.msg);
+                    //             return;
+                    //         }
+                    //     }
+                    // });
+                }else{
+                    window.location.href = '/ZQOtIMLKud.php/student/practice/examing/ids/'+Config.exam_id;
                 }
             });
         },
@@ -94,7 +113,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             $(document).ready(function() {
                 var countdownTime = Config.timer; // 倒计时时间,单位为秒
                 var display = $('#timer');
-
+                var fenzhong = 0;
                 var timer = setInterval(function() {
                     var minutes = parseInt(countdownTime / 60, 10);
                     var seconds = parseInt(countdownTime % 60, 10);
@@ -104,12 +123,59 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
 
                     display.text(minutes + "分" + seconds+'秒');
 
+                    // console.log(minutes.replace("0-",''));
+                    // console.log(parseInt(minutes.replace("0-",'')));
                     if (--countdownTime < 0) {
-                        clearInterval(timer);
-                        display.text("时间到!");
+                        // clearInterval(timer);
+                        $(".djs").html('已到练习结束时间,10分钟内系统自动交卷。')
+                        // display.text("时间到!");
+                    }
+                    if(minutes<1){
+                        fenzhong = parseInt(minutes.replace("0-",''));
+                        console.log(fenzhong);
+                        if(fenzhong==7){
+                            $('#update-form').submit();
+                            clearInterval(timer);
+                        }
                     }
+
                 }, 1000);
+
+                //五秒刷新,同步更换件列表数据
+                if(Config.isloading==1 && countdownTime>0){
+                    setInterval(function() {
+                        window.location.reload();
+                    }, 30000);
+                }
+
             });
+
+            $(document).on('click', '.btn-replace', function () {
+                console.log($(".other_replace").val());
+                $.ajax({
+                    url: "student/collection/replace/ids/"+Config.ids,
+                    type: 'post',
+                    data: {
+                        other_replace: $(".other_replace").val(),
+                        other_report: $(".other_report").val(),
+                    },
+                    success: function (data) {
+                        if(data.code==1){
+                            window.location.reload();
+                        }
+                        if(data.code==0){
+                            Layer.alert(data.msg);
+                        }
+                    }
+                });
+            });
+
+            $(document).on("fa.event.appendfieldlist", "#second-fieldlist .btn-append", function (e, obj) {
+                //绑定动态下拉组件
+                Form.events.selectpage(obj);
+
+            });
+
             Form.api.bindevent($("form[role=form]"), function(data, ret) {
                 if(ret.code==1){
                     Backend.api.addtabs( ret.url,'得分分析');