cqp 11 月之前
父節點
當前提交
34fe26200a

+ 13 - 0
app/Http/Controllers/Api/EmployeeController.php

@@ -86,6 +86,19 @@ class EmployeeController extends BaseController
         }
     }
 
+    public function employeeListQx(Request $request)
+    {
+        $service = new EmployeeService();
+        $user = $request->userData->toArray();
+        list($status,$data) = $service->employeeListQx($request->all(),$user);
+
+        if($status){
+            return $this->json_return(200,'',$data);
+        }else{
+            return $this->json_return(201,$data);
+        }
+    }
+
     public function employeeList(Request $request)
     {
         $service = new EmployeeService();

+ 1 - 1
app/Model/Employee.php

@@ -9,7 +9,7 @@ use Illuminate\Database\Eloquent\Model;
  * Class Unit
  * @package App\Models
  */
-class Employee extends Model
+class Employee extends UseScopeBaseModel
 {
     protected $guarded = [];
     protected $table = "employee"; //指定表

+ 22 - 0
app/Model/UseScopeBaseModel.php

@@ -38,6 +38,28 @@ class UseScopeBaseModel extends Model
         }
     }
 
+    public function scopeManClear($query, $user, $search)
+    {
+        //权限范围内的人
+        $man_range = $user['man_range'] ?? [];
+        $man_number = array_unique(array_column($man_range,'number'));
+
+        //个人部门所有
+        $auth_type = $this->getQx($search,$user);
+
+        if($auth_type <= 0){
+            //不需要分个人部门所有的数据
+            if($auth_type == 0) $query->where('number', $user['number']);
+        }else{
+            if($auth_type == 1) { //我的
+                $query->where('number',$user['number']);
+            }elseif ($auth_type == 2 || $auth_type == 3){
+                //自己权限范围内的部门 或 所有
+                $query->whereIn('number', $man_number);
+            }
+        }
+    }
+
     public function getQx($data, $user){
         if(empty($data['menu_authority_id'])) return 0;
         if($user['id'] == Employee::SPECIAL_ADMIN) return -1;

+ 46 - 0
app/Service/EmployeeService.php

@@ -301,6 +301,52 @@ class EmployeeService extends Service
         return [true,'删除成功'];
     }
 
+    /**
+     * 用户列表
+     * @param $data
+     * @param $user
+     * @return array
+     */
+    public function employeeListQx($data,$user){
+        $model = Employee::ManClear($user, $data);
+        $model = $model->where('del_time',0)
+            ->select('number','mobile','emp_name','id','entry_time','leave_time','is_admin','state','is_device','sex','birth_date','pic','card_no','account')
+            ->orderBy('number','asc');
+
+        if(! empty($data['depart'])) {
+            $depart = Depart::where('del_time',0)
+                ->select('id','parent_id')
+                ->get()->toArray();
+            $result = array_merge($this->getAllDescendants($depart,$data['depart']),[$data['depart']]);
+            $employee_id = DB::table('employee_depart_permission')
+                ->whereIn("depart_id", $result)
+                ->select("employee_id")
+                ->get()->toArray();
+            $employee_id = array_column($employee_id,'employee_id');
+            $model->whereIn("id", $employee_id);
+        }
+
+        if(! empty($data['card_no'])) $model->where('card_no', 'LIKE', '%'.$data['card_no'].'%');
+        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']);
+        if(! empty($data['mobile'])) $model->where('mobile', 'LIKE', '%'.$data['mobile'].'%');
+        if(! isset($data['all_emp'])) $model->where('id','<>',Employee::SPECIAL_ADMIN);
+        if(! empty($data['role'])) {
+            $emp = EmployeeRole::where('role_id',$data['role'])
+                ->where('del_time',0)
+                ->select('employee_id')->get()->toArray();
+            $model->whereIn('id',array_column($emp,'employee_id'));
+        }
+
+        $list = $this->limit($model,'',$data);
+
+        //组织数据
+        $list = $this->organizationEmployeeData($list);
+
+        return [true , $list];
+    }
+
     /**
      * 用户列表
      * @param $data

+ 1 - 0
routes/api.php

@@ -54,6 +54,7 @@ Route::group(['middleware'=> ['checkLogin']],function ($route){
     $route->any('employeeEditOther', 'Api\EmployeeController@employeeEditOther');
     $route->any('employeeDel', 'Api\EmployeeController@employeeDel');
     $route->any('employeeList', 'Api\EmployeeController@employeeList');
+    $route->any('employeeListQx', 'Api\EmployeeController@employeeListQx');
     $route->any('employeeEditImg', 'Api\EmployeeController@employeeEditImg')->middleware('OssFileDeal');
     $route->any('getEmployeeImg', 'Api\EmployeeController@getEmployeeImg');