|
@@ -181,6 +181,14 @@ 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'])
|
|
@@ -551,6 +559,11 @@ class EmployeeService extends Service
|
|
|
$model = Depart::where('del_time',0)
|
|
|
->select('title','id','code','parent_id','is_main','grade')
|
|
|
->orderby('code', 'asc');
|
|
|
+
|
|
|
+ if($user['id'] != Employee::SPECIAL_ADMIN && ! $user['is_all_depart']){
|
|
|
+ $depart_id = $this->getDepartIdList($user);
|
|
|
+ $model->whereIn('id',$depart_id);
|
|
|
+ }
|
|
|
if(! empty($data['title'])) $model->where('title', 'LIKE', '%'.$data['title'].'%');
|
|
|
if(! empty($data['code'])) $model->where('code', 'LIKE', '%'.$data['code'].'%');
|
|
|
|
|
@@ -582,6 +595,23 @@ class EmployeeService extends Service
|
|
|
return $list;
|
|
|
}
|
|
|
|
|
|
+ //获取可见的部门范围
|
|
|
+ public function getDepartIdList($user){
|
|
|
+ $list = Depart::where('del_time',0)->select('id','parent_id')->get()->toArray();
|
|
|
+ $result = [];
|
|
|
+ foreach ($user['depart_range'] as $v){
|
|
|
+ // 查找所有父级id
|
|
|
+ $parentIds = $this->findParentIds($v, $list);
|
|
|
+ // 查找所有子级id
|
|
|
+ $childIds = $this->findChildIds($v, $list);
|
|
|
+ // 合并父级和子级id
|
|
|
+ $tmp = array_merge($parentIds, $childIds, [$v]);
|
|
|
+ $result = array_merge($result,$tmp);
|
|
|
+ }
|
|
|
+
|
|
|
+ return array_unique($result);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 部门参数规则
|
|
|
* @param $data
|
|
@@ -1083,10 +1113,10 @@ class EmployeeService extends Service
|
|
|
* @return array|string[]
|
|
|
*/
|
|
|
public static function getLoginDepart($employee_id){
|
|
|
- if(empty($employee_id)) return ['', '','',''];
|
|
|
+ if(empty($employee_id)) return [];
|
|
|
|
|
|
//admin账号
|
|
|
- if($employee_id == Employee::SPECIAL_ADMIN) return [Depart::RULE_DEPART, '','',''];
|
|
|
+ if($employee_id == Employee::SPECIAL_ADMIN) return [];
|
|
|
|
|
|
//自己绑定的部门 启用的部门
|
|
|
$depart = EmployeeDepartPermission::from('employee_depart_permission as a')
|
|
@@ -1098,6 +1128,7 @@ class EmployeeService extends Service
|
|
|
->get()->toArray();
|
|
|
|
|
|
$top = $map = $rule = [];
|
|
|
+ $is_all_depart = 0;
|
|
|
if(! empty($depart)){
|
|
|
$list = Depart::where('del_time',0)->get()->toArray();
|
|
|
$depart_map = array_column($list,null,'id');
|
|
@@ -1107,6 +1138,7 @@ class EmployeeService extends Service
|
|
|
$tmp['is_main'] = $value['is_main'];
|
|
|
$top[] = $tmp;
|
|
|
$map[$value['depart_id']] = $value['depart_id'];
|
|
|
+ if(! empty($tmp['is_main']) && ! $is_all_depart) $is_all_depart = 1;
|
|
|
}else{
|
|
|
$t = self::getTopParentId($value['depart_id'],$list);
|
|
|
if($t && isset($depart_map[$t])) {
|
|
@@ -1114,6 +1146,7 @@ class EmployeeService extends Service
|
|
|
$tmp['is_main'] = $depart_map[$t]['is_main'];
|
|
|
$top[] = $tmp;
|
|
|
$map[$value['depart_id']] = $t;
|
|
|
+ if(! empty($tmp['is_main']) && $value['is_main'] &&! $is_all_depart) $is_all_depart = 1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -1148,7 +1181,7 @@ class EmployeeService extends Service
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return [$depart, $top, $map, array_unique($rule)];
|
|
|
+ return [$depart, $top, $map, array_unique($rule), $is_all_depart];
|
|
|
}
|
|
|
|
|
|
//判断是否总公司
|