Parcourir la source

20250227 考试追加删除学员,上下级

贾小兵 il y a 2 mois
Parent
commit
5b6a8d3565

+ 1 - 0
application/admin/controller/department/Admin.php

@@ -686,6 +686,7 @@ class Admin extends Backend
                 }
             }
             $v->department_admin_count = Db::name('admin')->where(['depart_id'=>$v['id']])->count();
+            $v->alluser = Db::name('admin')->where(['depart_id'=>$v['id']])->select();
         }
         unset($v);
         $result = ['total' => $list->total(), 'rows' => $list->items()];

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

@@ -624,6 +624,7 @@ class Collection extends Backend
                         if(empty($isreplace)){
                             $add = [
                                 'exam_id'=>$ids,
+                                'sim_type'=>$this->exam_model->where('exam_id',$ids)->value('sim_type'),
                                 'fault_id'=>$item['fault_id'],
                                 'request_status'=>1,
                                 'fault_name'=>Db::name('fault')->where('fault_id',$item['fault_id'])->value('replace_name'),

+ 11 - 7
application/admin/controller/teacher/Collection.php

@@ -195,22 +195,26 @@ class Collection extends Backend
         }
         $params = $this->preExcludeFields($params);
         $depart_id = $params['depart_id'];
-        unset($params['depart_id']);
 
-        //判断是否有已经开始考试的人员
-        $isset_exam = $this->exam_model->where(['user_id'=>['in',$depart_id],'exam_collection_id'=>$ids,'exam_status'=>4])->find();
-        if(!empty($isset_exam)){
-            $this->error('删除的人员已再考试中,请重新选择');
+        //比较两者的不同,然后在删除
+        $array_diff = array_diff($user_ids,explode(',',$depart_id));
+
+        if(!empty($depart_id)){ 
+            //判断是否有已经开始考试的人员
+            $isset_exam = $this->exam_model->where(['user_id'=>['in',$array_diff],'exam_collection_id'=>$ids,'exam_status'=>4])->find();
+            if(!empty($isset_exam)){
+                $this->error('删除的人员已再考试中,请重新选择');
+            }
         }
-        $depart_count = count(explode(',', $depart_id));
         $result = false;
         Db::startTrans();
         try {
             if(!empty($depart_id)){ 
+                $depart_count = count($array_diff);
                 $params['xueyuan_count'] = $row->xueyuan_count-$depart_count??0;
                 $result = $row->allowField(true)->save($params);
 
-                foreach(explode(',',$depart_id) as $item){
+                foreach($array_diff as $item){
                     if(!empty($item)){
                         $exam =  $this->exam_model->where(['exam_collection_id'=>$ids,'user_id'=>$item])->find();
                         //删除real_exam 的人员

+ 13 - 2
application/admin/controller/teacher/Exams.php

@@ -297,13 +297,20 @@ class Exams extends Backend
         $list = Db::name('seat')->select();
         foreach ($list as $key => $value) {
             $sim = Db::name('sim')->where('seat_id',$value['seat_id'])->where('sim_type',$sim_type)->find();
+            if($sim_type=='0001'){
+                $sim_type_text = 'FZD04B';
+            }else if($sim_type=='0002'){
+                $sim_type_text = 'FZB006';
+            }else if($sim_type=='0003'){
+                $sim_type_text = '防化兵型';
+            }
             if(!empty($sim['sim_state'])){
                 switch ($sim['sim_state']) {
                     case '1':
-                        $sim_state = '在线';
+                        $sim_state = $sim_type_text.'在线';
                         break;
                     case '2':
-                        $sim_state = '离线';
+                        $sim_state = $sim_type_text.'离线';
                         break;
                     default:
                         $sim_state = '';
@@ -319,6 +326,7 @@ class Exams extends Backend
             $total_score = 0;
             $fault_names = '';
             $exam_id = 0;
+            $simtype = '';
             if(!empty($exam)){
                 $user_username = $exam['user_username']??'';
                 $user_nickname = $exam['user_nickname']??'';
@@ -332,6 +340,7 @@ class Exams extends Backend
                 $total_score = $exam['total_score']??'';
                 $fault_names = $exam['fault_names']??'';
                 $exam_id = $exam['exam_id']??0;
+                $simtype = $exam['sim_type']??'';
             }
             $list[$key]['user_username'] = $user_username;
             $list[$key]['user_nickname'] = $user_nickname;
@@ -340,6 +349,7 @@ class Exams extends Backend
             $list[$key]['fault_names'] = $fault_names;
             $list[$key]['exam_id'] = $exam_id;
             $list[$key]['sim_state'] = $sim_state;
+            $list[$key]['sim_type'] = $simtype;
         }
         $result = ['total' => count($list), 'rows' => $list];
         return json($result);
@@ -368,6 +378,7 @@ class Exams extends Backend
                 $v->seat_id = $exam['seat_id'];
                 $v->user_username = $exam['user_username'];
                 $v->user_nickname = $exam['user_nickname'];
+                $v->sim_type = $exam['sim_type'];
             }
         }
         unset($v);

+ 1 - 2
application/admin/view/teacher/collection/edituser.html

@@ -1,7 +1,7 @@
 <form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
     <div class="panel panel-default panel-intro">
         <div class="panel-body">
-            <input class="form-control depart_id" name="row[depart_id]" type="hidden" value="">
+            <input class="form-control depart_ids" name="row[depart_id]" type="hidden" value="">
 
             <div class="tableTitle success" style="font-size: 16px;margin: 10px 0">情况说明</div>
             <div class="panel-danger">
@@ -27,7 +27,6 @@
             </div>
         </div>
     </div>
-
     <div class="form-group layer-footer">
         <label class="control-label col-xs-12 col-sm-2"></label>
         <div class="col-xs-12 col-sm-8">

+ 56 - 109
public/assets/js/backend/teacher/collection.js

@@ -324,7 +324,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             Controller.api.bindevent2();
         },
         edituser: function () {
-            Controller.api.bindevent();
+            Controller.api.bindevent2();
         },
         edit: function () {
             Controller.api.bindevent1();
@@ -333,17 +333,56 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
             bindevent1: function () {
                 Form.api.bindevent($("form[role=form]"));
             },
+            initSubTable: function (index, row, $detail,parent_table) {
+                var admin_id = row.id;
+                var cur_table = $detail.html('<table id="sub_'+ admin_id +'" style="background-color:#d7d1d147"></table>').find('table');
+                var sub_table = $(cur_table);
+                sub_table.bootstrapTable({
+                    // url: 'area/index',
+                    toolbar: false,
+                    showColumns: false,
+                    showToggle: false,
+                    showExport: false,
+                    search: false,
+                    pagination:false,
+                    commonSearch: false,
+                    sortOrder: 'ASC',
+                    checkboxHeader: false,
+                    columns: [
+                        {checkbox: true,
+                            formatter: function(value,row,index){
+                                if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
+                                    return true;
+                                }else{
+                                    return {disabled : true}
+                                }
+                            }
+                        },
+                        // {field: 'id', title: 'ID'},
+                        {field: 'username', title: __('学号')},
+                        {field: 'nickname', title: __('姓名')},
+                    ],
+                    data: row.alluser
+                });
+                Table.api.bindevent(sub_table);
+                sub_table.on("check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table post-body.bs.table", function (e) {
+                    var selectedIds = Table.api.selectedids(sub_table);
+                    console.log(selectedIds);
+                    $(".depart_ids").val(selectedIds.join());
+                })
+            },
             bindevent2: function () {
                 var rel_Ids = [];
                 var qudui_total = 0;
                 var xueyuan_total = 0;
                 Table.api.init({
                     extend: {
-                        // index_url: 'department/admin/departadmintotal' + location.search,
-                        index_url: 'auth/admin/admintotal' + location.search,
+                        index_url: 'department/admin/departadmintotal' + location.search,
+                        // index_url: 'auth/admin/admintotal' + location.search,
                     }
                 });
                 var table = $("#table1");
+                // var oInit = new Object();
                 // 初始化表格
                 table.bootstrapTable({
                     url: $.fn.bootstrapTable.defaults.extend.index_url,
@@ -353,53 +392,28 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     fixedRightNumber: 1,
                     searchFormVisible:false,
                     // pagination:false,
+                    detailView: true,//父子表
                     Search:false,
                     columns: [
                         [
-                            {checkbox: true,
-                                formatter: function(value,row,index){
-                                    if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
-                                        rel_Ids.push(row.id);
-                                        return true;
-                                    }
-                                    return false;
-                                }
-                            },
-                            {field: 'department_text', title: __('区队名称'), operate: false,width: '400px', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
-                            {field: 'nickname', title: __('姓名'),operate: false},
+                            {checkbox: true},
+                            {field: 'department_name', title: __('区队名称'), operate: false,width: '400px', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
+                            {field: 'department_admin_count', title: __('人员数量'),operate: false},
                         ]
                     ],
-                    onLoadSuccess: function(data) {
-                        $.each(data.rows, function(index, row) {
-                            if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
-                                xueyuan_total = xueyuan_total+1;
-                            }
-
-                        });
-                        $(".xueyuan_total").html(xueyuan_total);
-                        $(".xueyuan_input").val(xueyuan_total);
+                    onExpandRow: function (index, row, $detail) {
+                        Controller.api.initSubTable(index, row, $detail);
                     },
-                    // 点击每一个单选框时触发的操作
-                    onCheck:function(row){
-                        rel_Ids.push(row.id);
-                        xueyuan_total = xueyuan_total+1;
+                    onCheck: function (row, $element) {
+                        $('.btn-disabled').addClass('disabled');
+                        var id = row.id;
+                        $("#sub_" + id).bootstrapTable("checkAll");
 
-                        $(".depart_ids").val(rel_Ids.join());
-                        $(".xueyuan_total").html(xueyuan_total);
-                        $(".xueyuan_input").val(xueyuan_total);
                     },
-                    // 取消每一个单选框时对应的操作;
-                    onUncheck:function(row){
-                        var index = rel_Ids.indexOf(row.id);
-                        if(index > -1) {
-                            rel_Ids.splice(index, 1);
-                        }
-                        xueyuan_total = xueyuan_total-1;
-
-                        $(".depart_ids").val(rel_Ids.join());
-                        $(".xueyuan_total").html(xueyuan_total);
-                        $(".xueyuan_input").val(xueyuan_total);
-                    }
+                    onUncheck: function (row) {
+                        var id = row.id;
+                        $("#sub_" + id).bootstrapTable("uncheckAll");
+                    },
                 });
 
                 // 为表格绑定事件
@@ -480,73 +494,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                 $("input[name='btSelectAll']").css('display','none');
                 Form.api.bindevent($("form[role=form]"));
             },
-            bindevent: function () {
-                var rel_Ids = [];
-                Table.api.init({
-                    extend: {
-                        // index_url: 'department/admin/departadmintotal' + location.search,
-                        index_url: 'auth/admin/admintotal' + location.search,
-                    }
-                });
-                var table = $("#table1");
-
-                // 初始化表格
-                table.bootstrapTable({
-                    url: $.fn.bootstrapTable.defaults.extend.index_url,
-                    pk: 'id',
-                    sortName: 'id',
-                    fixedColumns: true,
-                    fixedRightNumber: 1,
-                    searchFormVisible:false,
-                    // pagination:false,
-                    Search:false,
-                    columns: [
-                        [
-                            {checkbox: true,
-                                formatter: function(value,row,index){
-                                    if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
-                                        // rel_Ids.push(row.id);
-                                        return true;
-                                    }else{
-                                        return {disabled : true}
-                                    }
-                                }
-                            },
-                            // {field: 'id', title: __('ID'),operate: false},
-                            {field: 'department_text', title: __('区队名称'), operate: false,width: '400px', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
-                            {field: 'nickname', title: __('姓名'),operate: false},
-                        ]
-                    ],
-                    onLoadSuccess: function(data) {
-                        // $.each(data.rows, function(index, row) {
-                        //     if(Config.user_ids != undefined && Config.user_ids.indexOf(row.id)>-1){
-                        //         xueyuan_total = xueyuan_total+1;
-                        //     }
-                        // });
-                    },
-                    // 点击每一个单选框时触发的操作
-                    onCheck:function(row){
-                        var index = rel_Ids.indexOf(row.id);
-                        if(index > -1) {
-                            rel_Ids.splice(index, 1);
-                        };
-                        $(".depart_id").val(rel_Ids.join());
-                    },
-                    // 取消每一个单选框时对应的操作;
-                    onUncheck:function(row){
-                        rel_Ids.push(row.id);
-                        $(".depart_id").val(rel_Ids.join());
-                    }
-                });
-
-                // 为表格绑定事件
-                Table.api.bindevent(table);
-
-                $("button[name=commonSearch]").css('display','none');
-                $("input[name='btSelectAll']").css('display','none');
-                Form.api.bindevent($("form[role=form]"));
-            }
-
         }
     };
     return Controller;

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

@@ -162,6 +162,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
                 columns: [
                     [
                         // {checkbox: true},
+                        {field: 'sim_type', title: __('Sim_type'),searchList:{"0001":"FZD04B型侦毒器","0002":"FZB006型毒剂报警器","0003":"防化兵用毒剂报警器"},formatter: Table.api.formatter.simtype},
                         {field: 'fault_name', title: __('更换件')},
                         {field: 'create_by', title: __('学员姓名')},
                         {field: 'request_status', title: __('状态'),
@@ -242,6 +243,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
                     [
                         // {checkbox: true},
                         {field: 'seat_id', title: __('座号')},
+                        {field: 'sim_type', title: __('Sim_type'),searchList:{"0001":"FZD04B型侦毒器","0002":"FZB006型毒剂报警器","0003":"防化兵用毒剂报警器"},formatter: Table.api.formatter.simtype},
                         {field: 'sim_state', title: __('模拟器状态'),
                             formatter: function(value, row,index) {
                                 if(value=='在线'){
@@ -322,6 +324,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
                     [
                         // {checkbox: true},
                         {field: 'seat_id', title: __('座号')},
+                        {field: 'sim_type', title: __('Sim_type'),searchList:{"0001":"FZD04B型侦毒器","0002":"FZB006型毒剂报警器","0003":"防化兵用毒剂报警器"},formatter: Table.api.formatter.simtype},
                         {field: 'user_username', title: __('学员学号')},
                         {field: 'user_nickname', title: __('学员姓名')},
                         {field: 'total', title: __('考试成绩')},