Jelajahi Sumber

20250618 修改

贾小兵 4 hari lalu
induk
melakukan
d5866becff

+ 122 - 42
application/admin/controller/department/Admin.php

@@ -745,7 +745,12 @@ class Admin extends Backend
 
         $fieldArr['学号'] = 'username';
         $fieldArr['姓名'] = 'nickname';
+        $fieldArr['层次'] = 'cengci';
+        $fieldArr['专业'] = 'zhuanye';
+        $fieldArr['年级'] = 'nianji';
+        $fieldArr['队'] = 'dui';
         $fieldArr['区队'] = 'depart_id';
+
         //加载文件
         $insert = [];
         try {
@@ -757,13 +762,13 @@ class Admin extends Backend
             $allRow = $currentSheet->getHighestRow(); //取得一共有多少行
             $maxColumnNumber = Coordinate::columnIndexFromString($allColumn);
             $fields = [];
-            for ($currentRow = 1; $currentRow <= 1; $currentRow++) {
+            for ($currentRow = 2; $currentRow <= 2; $currentRow++) {
                 for ($currentColumn = 1; $currentColumn <= $maxColumnNumber; $currentColumn++) {
                     $val = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
                     $fields[] = $val;
                 }
             }
-            for ($currentRow = 2; $currentRow <= $allRow; $currentRow++) {
+            for ($currentRow = 3; $currentRow <= $allRow; $currentRow++) {
                 $values = [];
                 for ($currentColumn = 1; $currentColumn <= $maxColumnNumber; $currentColumn++) {
                     $val = $currentSheet->getCellByColumnAndRow($currentColumn, $currentRow)->getValue();
@@ -787,49 +792,124 @@ class Admin extends Backend
         if (!$insert) {
             $this->error(__('No rows were updated'));
         }
-        foreach ($insert as $key => $v)
-        {          
-            $admin_info = Db::name('admin')->where('username',$v['username'])->find();
-            if(empty($admin_info)){
-                $salt = Random::alnum(); 
-                $depart_id = Db::name('department')->where('name',$v['depart_id'])->value('id');
-                $data = [
-                    'username'=>$v['username'],
-                    'nickname'=>$v['nickname'],
-                    'salt'=>$salt,
-                    'password'=>$this->auth->getEncryptPassword('123456', $salt),
-                    'avatar'=>'/assets/img/avatar.png',
-                    'loginfailure'=>0,
-                    'email'=>$v['username'].'@163.com',
-                    'status'=>'normal',
-                    'createtime'=>time(),
-                    'updatetime'=>time(),
-                    'depart_id'=>$depart_id??0,
-                ];
-                $adminId = Db::name('admin')->insertGetId($data);
-                
-                $add = [
-                    'department_id'=>$depart_id??0,
-                    'admin_id'=>$adminId,
-                    'create_time'=>time(),
-                    'update_time'=>time(),
-                ];
-                $departmentId = Db::name('department_admin')->insertGetId($add);
-
-
-                $group_info = Db::name('auth_group_access')->where('uid',$adminId)->find();
-                if(empty($group_info)){
-                    $arr = [
-                        'uid'=>$adminId,
-                        'group_id'=>8
-                    ];
-                    Db::name('auth_group_access')->insertGetId($arr);
+        $idcard_str = '';
+        $insert_data = [];
+
+        try {
+            foreach ($insert as $key => $v)
+            {
+                if(!empty($v['username'])){
+                    if(empty($v['cengci'])){
+                        $idcard_str.= $v['nickname'].":层次不能为空<br/>";
+                        continue;
+                    }
+                    if(empty($v['zhuanye'])){
+                        $idcard_str.= $v['nickname'].":专业不能为空<br/>";
+                        continue;
+                    }
+                    if(empty($v['nianji'])){
+                        $idcard_str.= $v['nickname'].":年级不能为空<br/>";
+                        continue;
+                    }
+                    if(empty($v['dui'])){
+                        $idcard_str.= $v['nickname'].":队不能为空<br/>";
+                        continue;
+                    }
+                    if(empty($v['depart_id'])){
+                        $idcard_str.= $v['nickname'].":区队不能为空<br/>";
+                        continue;
+                    }
+                    //层次
+                    $cengci = Db::name('department')->where('name',$v['cengci'])->where('parent_id',0)->value('id');
+                    if(empty($cengci)){
+                        $idcard_str.= $v['nickname'].":层次有误,请核实是否存在<br/>";
+                        continue;
+                    }else{
+                        //专业
+                        $zhuanye = Db::name('department')->where('name',$v['zhuanye'])->where('parent_id',$cengci)->value('id');
+                        if(empty($zhuanye)){
+                            $idcard_str.= $v['nickname'].":专业有误,请核实是否存在或是否为层次下级<br/>";
+                            continue;
+                        }else{
+                            //年级
+                            $nianji = Db::name('department')->where('name',$v['nianji'])->where('parent_id',$zhuanye)->value('id');
+                            if(empty($nianji)){
+                                $idcard_str.= $v['nickname'].":年级有误,请核实是否存在或是否为专业下级<br/>";
+                                continue;
+                            }else{
+                                //队
+                                $dui = Db::name('department')->where('name',$v['dui'])->where('parent_id',$nianji)->value('id');
+                                if(empty($dui)){
+                                    $idcard_str.= $v['nickname'].":队有误,请核实是否存在或是否为年级下级<br/>";
+                                    continue;
+                                }else{
+                                    //区队
+                                    $depart_id = Db::name('department')->where('name',$v['depart_id'])->where('parent_id',$dui)->value('id');
+                                    if(empty($depart_id)){
+                                        $idcard_str.= $v['nickname'].":区队有误,请核实是否存在或是否为队下级<br/>";
+                                        continue;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                    $admin_info = Db::name('admin')->where('username',$v['username'])->find();
+                    if(empty($admin_info)){
+                        $salt = Random::alnum();
+                        $insert = [
+                            'username'=>$v['username'],
+                            'nickname'=>$v['nickname'],
+                            'salt'=>$salt,
+                            'password'=>$this->auth->getEncryptPassword('123456', $salt),
+                            'avatar'=>'/assets/img/avatar.png',
+                            'loginfailure'=>0,
+                            'email'=>$v['username'].'@163.com',
+                            'status'=>'normal',
+                            'createtime'=>time(),
+                            'updatetime'=>time(),
+                            'depart_id'=>$depart_id??0,
+                        ];
+                        $adminId = Db::name('admin')->insertGetId($insert);
+                        $add = [
+                            'department_id'=>$depart_id??0,
+                            'admin_id'=>$adminId,
+                            'create_time'=>time(),
+                            'update_time'=>time(),
+                        ];
+                        $departmentId = Db::name('department_admin')->insertGetId($add);
+                        $group_info = Db::name('auth_group_access')->where('uid',$adminId)->find();
+                        if(empty($group_info)){
+                            $arr = [
+                                'uid'=>$adminId,
+                                'group_id'=>8
+                            ];
+                            Db::name('auth_group_access')->insertGetId($arr);
+                        }
+                    }else{
+                        //已存在更新
+                        Db::name('admin')->where('id',$admin_info['id'])->update(['depart_id'=>$depart_id]);
+                        Db::name('department_admin')->where('admin_id',$admin_info['id'])->update(['department_id'=>$depart_id]);
+                    }
                 }
             }
+        } catch (PDOException $exception) {
+            $msg = $exception->getMessage();
+            if (preg_match("/.+Integrity constraint violation: 1062 Duplicate entry '(.+)' for key '(.+)'/is", $msg, $matches)) {
+                $msg = "导入失败,包含【{$matches[1]}】的记录已存在";
+            };
+            $this->error($msg);
+        } catch (Exception $e) {
+            $this->error($e->getMessage());
+        }
+        if(!empty($idcard_str) ){
+            $msg = '导入成功,';
+            if (!empty($idcard_str)) {
+                $msg .= '以下数据不合理:<br />' . $idcard_str;
+            }
+            $this->success($msg,'',[],15);
+        }else{
+            $this->success('导入成功');
         }
-        
-        $this->success('导入成功');
-
     }
 
 

+ 8 - 8
application/admin/controller/teacher/Collection.php

@@ -195,6 +195,7 @@ class Collection extends Backend
         }
         //获取当前考试的全部用户id
         $user_ids = $this->exam_model->where(['exam_collection_id'=>$ids])->column('user_id');
+
         if (false === $this->request->isPost()) {
             $this->view->assign('row', $row);
             $this->view->assign('user_ids',implode(',', $user_ids));
@@ -207,26 +208,25 @@ class Collection extends Backend
         }
         $params = $this->preExcludeFields($params);
         $depart_id = $params['depart_id'];
-
         //比较两者的不同,然后在删除
-        $array_diff = array_diff($user_ids,explode(',',$depart_id));
-
-        if(!empty($array_diff)){
+//        $array_diff = array_diff($user_ids,dexplode(',',$depart_i));
+        if(!empty($depart_id)){
             //判断是否有已经开始考试的人员
-            $isset_exam = $this->exam_model->where(['user_id'=>['in',$array_diff],'exam_collection_id'=>$ids,'exam_status'=>4])->find();
+            $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('删除的人员已进行考试,请重新选择');
             }
         }
+        $depart_ids = explode(',',$depart_id);
         $result = false;
         Db::startTrans();
         try {
-            if(!empty($array_diff)){
-                $depart_count = count($array_diff);
+            if(!empty($depart_id)){
+                $depart_count = count($depart_ids);
                 $params['xueyuan_count'] = $row->xueyuan_count-$depart_count??0;
                 $result = $row->allowField(true)->save($params);
 
-                foreach($array_diff as $item){
+                foreach($depart_ids as $item){
                     if(!empty($item)){
                         $exam =  $this->exam_model->where(['exam_collection_id'=>$ids,'user_id'=>$item])->find();
                         //删除real_exam 的人员

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

@@ -225,24 +225,25 @@ class Practice extends Backend
         $depart_id = $params['depart_id'];
 
         //比较两者的不同,然后在删除
-        $array_diff = array_diff($user_ids,explode(',',$depart_id));
-        if(!empty($array_diff)){
+//        $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();
+            $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('删除的人员已进行考试,请重新选择');
             }
         }
+        $depart_ids = explode(',',$depart_id);
         $result = false;
         Db::startTrans();
         try {
             
-            if(!empty($array_diff)){
-                $depart_count = count($array_diff);
+            if(!empty($depart_id)){
+                $depart_count = count($depart_ids);
                 $params['xueyuan_count'] = $row->xueyuan_count-$depart_count??0;
                 $result = $row->allowField(true)->save($params);
 
-                foreach($array_diff as $item){
+                foreach($depart_ids as $item){
                     if(!empty($item)){
                         $exam =  $this->exam_model->where(['exam_collection_id'=>$ids,'user_id'=>$item])->find();
                         //删除real_exam 的人员

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

@@ -1,11 +1,12 @@
 <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_ids" name="row[depart_id]" type="hidden" value="{$user_ids}">
+            <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">
-                <span class="text text-danger">将需要删除的学员直接去掉选中,这里仅支持删除学员</span><br/>
+                <span class="text text-danger">学员展示背景突出的表示已添加的学员,可删除</span><br/>
+                <span class="text text-danger">将需要删除的学员直接选中,仅支持删除学员</span><br/>
                 <span class="text text-danger"></span>
             </div>
             <div class="panel-success">

+ 4 - 2
application/admin/view/teacher/collection/faults.html

@@ -7,8 +7,7 @@
                 <div class="widget-body no-padding">
                     <div id="toolbar" class="toolbar">
                         <a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
-                        <a href="javascript:;" class="btn btn-danger btn-choose-multi" title="{:__('Refresh')}" ><i class="fa fa-check"></i> 选择</a>
-
+<!--                        <a href="javascript:;" class="btn btn-danger btn-choose-multi" title="{:__('Refresh')}" ><i class="fa fa-check"></i> 选择</a>-->
                     </div>
                     <table id="table" class="table table-striped table-bordered table-hover table-nowrap"
                            data-operate-edit="{:$auth->check('teacher/collection/edit')}"
@@ -16,6 +15,9 @@
                            width="100%">
                     </table>
                 </div>
+                <div style="margin-top: 15px;margin-left: 2px">
+                    <a href="javascript:;" class="btn btn-danger btn-choose-multi" title="{:__('Refresh')}" ><i class="fa fa-check"></i> 选择</a>
+                </div>
             </div>
 
         </div>

+ 7 - 2
application/admin/view/teacher/practice/edituser.html

@@ -1,9 +1,14 @@
 <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_ids" name="row[depart_id]" type="hidden" value="{$user_ids}">
+            <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="tableTitle success" style="font-size: 16px;margin: 10px 0">情况说明</div>
+            <div class="panel-danger">
+                <span class="text text-danger">学员展示背景突出的表示已添加的学员,可删除</span><br/>
+                <span class="text text-danger">将需要删除的学员直接选中,仅支持删除学员</span><br/>
+                <span class="text text-danger"></span>
+            </div>
             <div class="panel-success">
                 <div>计划参加训练学员数量:<span class="xueyuan_total">{$row.xueyuan_count}</span></div>
             </div>

+ 2 - 1
public/assets/css/backend.css

@@ -972,7 +972,8 @@ form.form-horizontal .control-label {
   border: none !important;
 }
 .fixed-table-container tbody .selected td {
-  background-color: rgba(216, 224, 230, 0.5);
+  /*background-color: rgba(216, 224, 230, 0.5);*/
+  background-color: #9fefdd;
 }
 .fixed-table-container .bs-checkbox {
   min-width: 36px;

+ 8 - 0
public/assets/js/backend/teacher/collection.js

@@ -386,6 +386,14 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
                     commonSearch: false,
                     sortOrder: 'ASC',
                     checkboxHeader: false,
+                    // rowStyle:function(row,index){
+                    //     console.log(Config.user_ids)
+                    //     console.log('Config.user_ids')
+                    //     console.log(Config.user_ids.length)
+                    //     if (Config.user_ids.length>0 && Config.user_ids.indexOf(row.id)>-1){
+                    //         return {css:{"background-color":"#9fefdd"}}
+                    //     }
+                    // },
                     columns: [
                         {checkbox: true,
                             formatter: function(value,rows,index){

+ 1 - 1
public/assets/js/backend/teacher/exams.js

@@ -71,7 +71,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form','editable'], function
             //在普通搜索渲染后
             table.on('post-common-search.bs.table', function (event, table) {
                 var form = $("form", table.$commonsearch);
-                $("input[name='exam_collection_name']", form).addClass("selectpage").data("source", "teacher/collection/selectpage").data('params',{'custom[exam_collection_type]':3}).data("primaryKey", "exam_collection_name").data("field", "exam_collection_name").data("orderBy", "createtime asc");
+                $("input[name='exam_collection_name']", form).addClass("selectpage").data("source", "teacher/collection/selectpage").data('params',{'custom[exam_collection_type]':3}).data("primaryKey", "exam_collection_name").data("field", "exam_collection_name").data("orderBy", "createtime desc");
                 Form.events.cxselect(form);
                 Form.events.selectpage(form);
             });

TEMPAT SAMPAH
public/demo.xlsx