From 26ce6b98a9fc8a163f4b091939a4c2de0a125990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B2=A9=E4=BB=9488?= <> Date: Sat, 17 Jan 2026 15:46:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=A7=91=E5=AE=A4=20?= =?UTF-8?q?=E5=8F=98=E6=9B=B4=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../API/Admin/BaseInfoController.php | 33 +++++++++++++- .../API/CAS/CasLoginController.php | 34 ++++++++++----- .../Controllers/API/H5/EntrustController.php | 43 ++++++++++--------- YiJi-admin/src/views/CasLogin.vue | 6 ++- YiJi-admin/src/views/Index.vue | 4 ++ 5 files changed, 87 insertions(+), 33 deletions(-) diff --git a/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php b/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php index 07d62fb..5863025 100644 --- a/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php +++ b/Laravel/app/Http/Controllers/API/Admin/BaseInfoController.php @@ -2,11 +2,13 @@ namespace App\Http\Controllers\API\Admin; +use App\Http\Controllers\API\His\HisController; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\Services\Admin\MenuService; use App\Services\Admin\UserService; use Illuminate\Support\Facades\DB; +use JWT; class BaseInfoController extends Controller { @@ -42,15 +44,44 @@ class BaseInfoController extends Controller { $userid = $request->get('userid');//中间件产生的参数 $deptid = request('deptid'); + $user=DB::table('users')->where(['id'=>$userid,'status'=>1])->first(); + if(!$user) return \Yz::echoError1('无效用户'); if (!isset($deptid)) return \Yz::echoError1('请选择科室'); $dept = DB::table('s_department')->where(['id' => $deptid])->first(); if (!$dept) return \Yz::echoError1('科室不存在'); + $user_group=$user->group; + if($user_group!=1){ + $send_his_data=[ + 'docCode'=>$user->username + ]; + $res = HisController::Get("查询医生有权限的科室", $send_his_data); + if ($res['code'] == 200) { + $res_data = $res['data']; + if(is_array($res_data)){ + foreach ($res_data as $k=>$v){ + if($v['deptCode']==$dept->department_number and !empty($v['deptType']) and in_array($user_group,[2,3])){ + if($v['deptType']=="C") $user_group=3;//护士 + if($v['deptType']=="I") $user_group=2;//病区护士 + } + } + } + } + } + + $jwt= new JWT(); + $accessTimeout = $jwt -> GetGetSecretTimeOut(); + $refreshTimeout = $jwt -> GetRefreshTokenTimeOut(); + $access_token = $jwt->BuildJWT('yz','access',$user->id,$user_group,$accessTimeout); + $refresh_token = $jwt->BuildJWT('yz','refresh',$user->id,'',$refreshTimeout); + $u= DB::table('users')->where('id', $userid)->update([ + 'token'=>md5($refresh_token), 'department_id' => $deptid, + 'group'=>$user_group, 'updated_at' => date("Y-m-d H:i:s") ]); if($u){ - return \Yz::Return(true,'切换成功',[]); + return \Yz::Return(true,'切换成功',['token'=>$access_token,'refresh_token'=>$refresh_token]); }else{ return \Yz::echoError1('切换失败'); } diff --git a/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php b/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php index 37af98e..8c44b4d 100644 --- a/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php +++ b/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php @@ -72,30 +72,42 @@ class CasLoginController extends Controller $send_his_data=[ 'docCode'=>$res_user ]; - $His = new HisController(); - $res = $His::Get("查询医生有权限的科室", $send_his_data); + $res = HisController::Get("查询医生有权限的科室", $send_his_data); $dept_arr=[]; + $deptIdsString=''; + $user_group=$user->group; if ($res['code'] == 200) { $res_data = $res['data']; if(is_array($res_data)){ - foreach ($res_data as $k=>$v){ - $db_dept=DB::table('s_department')->where(['department_number'=>$v['deptCode'],'is_del'=>0])->first(); - if($db_dept){ - $dept_arr[]=[ - 'deptName'=>$v['deptName'], - 'deptId'=>$db_dept->id, + + + $deptCodes = array_column($res_data, 'deptCode'); + $dbDepts = DB::table('s_department') + ->whereIn('department_number', $deptCodes) + ->where('is_del', 0) + ->pluck('id', 'department_number'); // key: deptCode, value: id + + foreach ($res_data as $v) { + if (isset($dbDepts[$v['deptCode']])) { + $dept_arr[] = [ + 'deptName' => $v['deptName'], + 'deptId' => $dbDepts[$v['deptCode']], ]; } - + } + $deptIdsString = implode(',', array_column($dept_arr, 'deptId')); + if(count($deptCodes)==1 and !empty($res_data[0]['deptType']) and in_array($user_group,[2,3])){ + if($res_data[0]['deptType']=="C") $user_group=3;//护士 + if($res_data[0]['deptType']=="I") $user_group=2;//病区护士 } } } $jwt= new JWT(); $accessTimeout = $jwt -> GetGetSecretTimeOut(); $refreshTimeout = $jwt -> GetRefreshTokenTimeOut(); - $access_token = $jwt->BuildJWT('yz','access',$user->id,$user->group,$accessTimeout); + $access_token = $jwt->BuildJWT('yz','access',$user->id,$user_group,$accessTimeout); $refresh_token = $jwt->BuildJWT('yz','refresh',$user->id,'',$refreshTimeout); - DB::table('users')->where(['id'=>$user->id,'status'=>1])->update(['token'=>md5($refresh_token)]); + DB::table('users')->where(['id'=>$user->id,'status'=>1])->update(['token'=>md5($refresh_token),'group'=>$user_group,'department_ids'=>$deptIdsString]); return redirect(env('APP_URL')."/admin/#/caslogin?access_token=".$access_token."&refresh_token=".$refresh_token."&dept_arr=".urlencode(json_encode($dept_arr))); }else{ echo "登录失败,未授权或者已注销"; diff --git a/Laravel/app/Http/Controllers/API/H5/EntrustController.php b/Laravel/app/Http/Controllers/API/H5/EntrustController.php index 9b9a139..0f0acd3 100644 --- a/Laravel/app/Http/Controllers/API/H5/EntrustController.php +++ b/Laravel/app/Http/Controllers/API/H5/EntrustController.php @@ -10,32 +10,35 @@ class EntrustController extends Controller { public function GetList(Request $request) { - - - $searchInfo = request('searchInfo'); - - $userid = $request->get('userid');//中间件产生的参数 - - $list=DB::table('s_list') - ->leftJoin('s_period','s_list.reservation_time','=','s_period.id') - ->leftJoin('s_department_resources','s_list.reservation_sources','=','s_department_resources.id') - ->select('s_list.*','s_period.period_begin_time','s_period.period_end_time','s_department_resources.department_resources_name') - ->where(['s_list.is_del'=>0,'s_list.is_nullify'=>0]) + $userid = $request->get('(userid)'); // 中间件产生的参数 + + $list = DB::table('s_list') + ->leftJoin('s_period', 's_list.reservation_time', '=', 's_period.id') + ->leftJoin('s_department_resources', 's_list.reservation_sources', '=', 's_department_resources.id') + ->select( + 's_list.*', + 's_period.period_begin_time', + 's_period.period_end_time', + 's_department_resources.department_resources_name' + ) + ->where(['s_list.is_del' => 0, 's_list.is_nullify' => 0]) ->where('s_list.reg_num', $userid); - if ($searchInfo['dateRange']!=null and count($searchInfo['dateRange']) == 2) { - $list = $list->whereBetween('s_list.entrust_date', $searchInfo['dateRange']); - } - + if (!empty($searchInfo['dateRange']) && count($searchInfo['dateRange']) === 2) { + $startDate = $searchInfo['dateRange'][0]; + $endDate = $searchInfo['dateRange'][1]; - $count = $list; - $count = $count->count(); - $list=$list->orderBy('id', 'desc')->get(); - + $list = $list->where(function ($query) use ($startDate, $endDate) { + $query->whereBetween('s_list.entrust_date', [$startDate, $endDate]) + ->orWhereBetween('s_list.reservation_date', [$startDate, $endDate]); + }); + } + $count = $list->count(); // 注意:这里必须在分页/排序前获取 count + $list = $list->orderBy('id', 'desc')->get(); - return \Yz::Return(true,'查询完成',['list'=>$list,'count'=>$count]); + return \Yz::Return(true, '查询完成', ['list' => $list, 'count' => $count]); } public function GetDetail(Request $request) { diff --git a/YiJi-admin/src/views/CasLogin.vue b/YiJi-admin/src/views/CasLogin.vue index ca6a1ed..443e2ce 100644 --- a/YiJi-admin/src/views/CasLogin.vue +++ b/YiJi-admin/src/views/CasLogin.vue @@ -43,6 +43,9 @@ deptid:SelectDeptId.value }).then(res => { if (res.status) { + access_token.value=res.data.token + sessionStorage.setItem('token', access_token.value); + sessionStorage.setItem('refreshToken', res.data.refresh_token); login() }else{ ElMessage.error(res.msg) @@ -53,7 +56,8 @@ var token = sessionStorage.getItem('token'); console.log(token) if (token!=null && token == access_token.value) { - window.location.href = "./#/yewu/mainList" + //window.location.href = "./#/yewu/mainList" + window.location.href = "./#/dashboard" }else{ ElMessage.error("登录失败") } diff --git a/YiJi-admin/src/views/Index.vue b/YiJi-admin/src/views/Index.vue index 5b52948..9365fc5 100644 --- a/YiJi-admin/src/views/Index.vue +++ b/YiJi-admin/src/views/Index.vue @@ -251,7 +251,11 @@ const DepartmentHandleCommand = (e) => { ChangeDefaultDept({deptid:e}).then(res => { if (res.status) { + sessionStorage.setItem('token', res.data.token); + sessionStorage.setItem('refreshToken', res.data.refresh_token); location.reload(); + }else{ + ElMessage.error(res.msg) } }) }