切换科室 变更权限

main
岩仔88 3 weeks ago
parent 8628b78222
commit 26ce6b98a9

@ -2,11 +2,13 @@
namespace App\Http\Controllers\API\Admin; namespace App\Http\Controllers\API\Admin;
use App\Http\Controllers\API\His\HisController;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Services\Admin\MenuService; use App\Services\Admin\MenuService;
use App\Services\Admin\UserService; use App\Services\Admin\UserService;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use JWT;
class BaseInfoController extends Controller class BaseInfoController extends Controller
{ {
@ -42,15 +44,44 @@ class BaseInfoController extends Controller
{ {
$userid = $request->get('userid');//中间件产生的参数 $userid = $request->get('userid');//中间件产生的参数
$deptid = request('deptid'); $deptid = request('deptid');
$user=DB::table('users')->where(['id'=>$userid,'status'=>1])->first();
if(!$user) return \Yz::echoError1('无效用户');
if (!isset($deptid)) return \Yz::echoError1('请选择科室'); if (!isset($deptid)) return \Yz::echoError1('请选择科室');
$dept = DB::table('s_department')->where(['id' => $deptid])->first(); $dept = DB::table('s_department')->where(['id' => $deptid])->first();
if (!$dept) return \Yz::echoError1('科室不存在'); 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([ $u= DB::table('users')->where('id', $userid)->update([
'token'=>md5($refresh_token),
'department_id' => $deptid, 'department_id' => $deptid,
'group'=>$user_group,
'updated_at' => date("Y-m-d H:i:s") 'updated_at' => date("Y-m-d H:i:s")
]); ]);
if($u){ if($u){
return \Yz::Return(true,'切换成功',[]); return \Yz::Return(true,'切换成功',['token'=>$access_token,'refresh_token'=>$refresh_token]);
}else{ }else{
return \Yz::echoError1('切换失败'); return \Yz::echoError1('切换失败');
} }

@ -72,30 +72,42 @@ class CasLoginController extends Controller
$send_his_data=[ $send_his_data=[
'docCode'=>$res_user 'docCode'=>$res_user
]; ];
$His = new HisController(); $res = HisController::Get("查询医生有权限的科室", $send_his_data);
$res = $His::Get("查询医生有权限的科室", $send_his_data);
$dept_arr=[]; $dept_arr=[];
$deptIdsString='';
$user_group=$user->group;
if ($res['code'] == 200) { if ($res['code'] == 200) {
$res_data = $res['data']; $res_data = $res['data'];
if(is_array($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){ $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[] = [ $dept_arr[] = [
'deptName' => $v['deptName'], 'deptName' => $v['deptName'],
'deptId'=>$db_dept->id, '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(); $jwt= new JWT();
$accessTimeout = $jwt -> GetGetSecretTimeOut(); $accessTimeout = $jwt -> GetGetSecretTimeOut();
$refreshTimeout = $jwt -> GetRefreshTokenTimeOut(); $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); $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))); return redirect(env('APP_URL')."/admin/#/caslogin?access_token=".$access_token."&refresh_token=".$refresh_token."&dept_arr=".urlencode(json_encode($dept_arr)));
}else{ }else{
echo "登录失败,未授权或者已注销"; echo "登录失败,未授权或者已注销";

@ -10,31 +10,34 @@ class EntrustController extends Controller
{ {
public function GetList(Request $request) public function GetList(Request $request)
{ {
$searchInfo = request('searchInfo'); $searchInfo = request('searchInfo');
$userid = $request->get('(userid)'); // 中间件产生的参数
$userid = $request->get('userid');//中间件产生的参数
$list = DB::table('s_list') $list = DB::table('s_list')
->leftJoin('s_period', 's_list.reservation_time', '=', 's_period.id') ->leftJoin('s_period', 's_list.reservation_time', '=', 's_period.id')
->leftJoin('s_department_resources', 's_list.reservation_sources', '=', 's_department_resources.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') ->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.is_del' => 0, 's_list.is_nullify' => 0])
->where('s_list.reg_num', $userid); ->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];
$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 = $list->count(); // 注意:这里必须在分页/排序前获取 count
$count = $count->count();
$list = $list->orderBy('id', 'desc')->get(); $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) public function GetDetail(Request $request)

@ -43,6 +43,9 @@
deptid:SelectDeptId.value deptid:SelectDeptId.value
}).then(res => { }).then(res => {
if (res.status) { if (res.status) {
access_token.value=res.data.token
sessionStorage.setItem('token', access_token.value);
sessionStorage.setItem('refreshToken', res.data.refresh_token);
login() login()
}else{ }else{
ElMessage.error(res.msg) ElMessage.error(res.msg)
@ -53,7 +56,8 @@
var token = sessionStorage.getItem('token'); var token = sessionStorage.getItem('token');
console.log(token) console.log(token)
if (token!=null && token == access_token.value) { if (token!=null && token == access_token.value) {
window.location.href = "./#/yewu/mainList" //window.location.href = "./#/yewu/mainList"
window.location.href = "./#/dashboard"
}else{ }else{
ElMessage.error("登录失败") ElMessage.error("登录失败")
} }

@ -251,7 +251,11 @@
const DepartmentHandleCommand = (e) => { const DepartmentHandleCommand = (e) => {
ChangeDefaultDept({deptid:e}).then(res => { ChangeDefaultDept({deptid:e}).then(res => {
if (res.status) { if (res.status) {
sessionStorage.setItem('token', res.data.token);
sessionStorage.setItem('refreshToken', res.data.refresh_token);
location.reload(); location.reload();
}else{
ElMessage.error(res.msg)
} }
}) })
} }

Loading…
Cancel
Save