cqpCow 1 год назад
Родитель
Сommit
8ef1b79e22
1 измененных файлов с 20 добавлено и 11 удалено
  1. 20 11
      app/Service/EmployeeService.php

+ 20 - 11
app/Service/EmployeeService.php

@@ -182,14 +182,6 @@ class EmployeeService extends Service
             ->select('number','mobile','emp_name','id','entry_time','leave_time','is_admin','state')
             ->orderBy('id','desc');
 
-        if($user['id'] != Employee::SPECIAL_ADMIN && ! $user['is_all_depart']){
-            $depart_id = $this->getDepartIdList($user);
-            $employee_id = EmployeeDepartPermission::whereIn('depart_id',$depart_id)
-                ->select("employee_id")
-                ->get()->toArray();
-            $model->whereIn('id',array_unique(array_column($employee_id,'employee_id')));
-        }
-
         if(! empty($data['depart'])) {
             $employee_id = DB::table('employee_depart_permission')
                 ->where("depart_id", $data['depart'])
@@ -197,7 +189,11 @@ class EmployeeService extends Service
                 ->get()->toArray();
             $employee_id = array_column($employee_id,'employee_id');
             $model->whereIn("id", $employee_id);
+        }else{
+            $employee_id = $this->getEmployee($user);
+            $model->whereIn('id',$employee_id);
         }
+
         if(! empty($data['number'])) $model->where('number', 'LIKE', '%'.$data['number'].'%');
         if(! empty($data['emp_name'])) $model->where('emp_name', 'LIKE', '%'.$data['emp_name'].'%');
         if(! empty($data['state'])) $model->where('state',$data['state']);
@@ -209,7 +205,7 @@ class EmployeeService extends Service
                 ->select('employee_id')->get()->toArray();
             $model->whereIn('id',array_column($emp,'employee_id'));
         }
-        if(! $user['is_all_depart']) $model->where('is_manager',0);
+        if($user['id'] != Employee::SPECIAL_ADMIN) $model->where('is_manager',0);
 
         $list = $this->limit($model,'',$data);
 
@@ -269,6 +265,20 @@ class EmployeeService extends Service
         return $data;
     }
 
+    //获取当前顶级部门下人员id
+    public function getEmployee($user){
+        $top_depart_id = $user['depart_top'][0] ?? [];
+        $top_depart_id = $top_depart_id['depart_id'] ?? 0;
+        $list = Depart::where('del_time',0)->select('id','parent_id')->get()->toArray();
+        // 查找所有子级id
+        $childIds = $this->findChildIds($top_depart_id, $list);
+        $childIds[] = $top_depart_id;
+        $employee_id = EmployeeDepartPermission::whereIn('depart_id',$childIds)
+            ->select("employee_id")
+            ->get()->toArray();
+        return array_unique(array_column($employee_id,'employee_id'));
+    }
+
     /**
      * 用户参数规则
      * @param $data
@@ -701,7 +711,6 @@ class EmployeeService extends Service
 
         $count = 0;
         foreach ($data['data'] as $value){
-            if(empty($user['is_all_depart']) && empty($value['parent_id'])) return [false,'上级部门必须选择'];
             if(empty($value['parent_id']) && ! empty($value['is_main'])) $count ++;
         }
         if($count > 1) return [false,'顶级总社只允许存在一个!'];
@@ -719,12 +728,12 @@ class EmployeeService extends Service
 
         foreach ($data['data'] as $key => $value){
             if(empty($value['parent_id'])) $data['data'][$key]['parent_id'] = 0;
-            if(empty($value['grade'])) $data['data'][$key]['grade'] = 0;
 
             $data['data'][$key]['upd_time'] = time();
 
             //Depart::whereRaw("(binary code = '{$value['code']}' OR title = '{$value['title']}')")
             if($is_check){
+                if(empty($user['is_all_depart']) && empty($value['parent_id'])) return [false,'上级部门必须选择'];
                 $data['data'][$key]['crt_time'] = time();
                 $bool = Depart::whereRaw("binary code = '{$value['code']}'")
                     ->where('del_time',0)