From 9df8d2fc18719b8e013e272d0711d3b69b2d01d9 Mon Sep 17 00:00:00 2001 From: yanzai Date: Thu, 19 Jun 2025 21:47:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9pacs=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=EF=BC=8Ccas=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../API/CAS/CasLoginController.php | 68 +++++++++++++++++++ .../Controllers/API/Third/PacsController.php | 17 ++++- Laravel/routes/web.php | 3 +- YiJi-admin/.env.production | 4 +- YiJi-admin/src/router/index.js | 10 ++- YiJi-admin/src/views/AutoLogin.vue | 4 +- YiJi-admin/src/views/CasLogin.vue | 44 ++++++++++++ 8 files changed, 143 insertions(+), 8 deletions(-) create mode 100644 .gitignore create mode 100644 Laravel/app/Http/Controllers/API/CAS/CasLoginController.php create mode 100644 YiJi-admin/src/views/CasLogin.vue diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d22ed6b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/Laravel/public/admin diff --git a/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php b/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php new file mode 100644 index 0000000..64fa40f --- /dev/null +++ b/Laravel/app/Http/Controllers/API/CAS/CasLoginController.php @@ -0,0 +1,68 @@ +query('ticket'); + $url=env('APP_URL').'/casLogin'; + $response = Http::get(self::$CasUrl, [ + 'service' => $url, + 'ticket' => $ticket, + ]); + + if (!$response->successful()) { + return \Yz::JsonError("请求CAS失败"); + } + + $xml = simplexml_load_string($response->body()); + // 注册命名空间 + $namespaces = $xml->getNamespaces(true); + +// 获取 cas 命名空间下的元素 + $cas = $xml->children($namespaces['cas']); + + if ($cas === false) { + return \Yz::JsonError("解析CAS响应失败"); + } + + + if (isset($cas->authenticationFailure)) { + return \Yz::JsonError("认证失败"); + } + + $casResponse = $cas->authenticationSuccess; + + if (!$casResponse) { + return \Yz::JsonError("认证失败"); + } + + $res_user = (string)$casResponse->user; + + $user=DB::table('users')->where(['cas_code'=>$res_user,'status'=>1])->first(); + if(!!$user){ + $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); + DB::table('users')->where(['id'=>$user->id,'status'=>1])->update(['token'=>md5($refresh_token)]); + return redirect(env('APP_URL')."/admin/#/caslogin?access_token=".$access_token."&refresh_token=".$refresh_token); + }else{ + echo "登录失败,未授权或者已注销"; + } + + + + + } +} diff --git a/Laravel/app/Http/Controllers/API/Third/PacsController.php b/Laravel/app/Http/Controllers/API/Third/PacsController.php index 6828325..77cd695 100644 --- a/Laravel/app/Http/Controllers/API/Third/PacsController.php +++ b/Laravel/app/Http/Controllers/API/Third/PacsController.php @@ -49,9 +49,10 @@ class PacsController extends Controller "app_num", "medicalHistory", "diagnosisName", - "idCardNumber" + "idCardNumber", + "reservation_sources as reservation_sources_id", - ); + )->where(['is_del'=>0,'is_nullify'=>0]); if(isset($dateRange)){ if(!is_array($dateRange)) return \Yz::JsonError("日期范围必须是数组"); $entrust_list=$entrust_list->whereBetween('entrust_date',[$dateRange[0],$dateRange[1]]); @@ -69,6 +70,18 @@ class PacsController extends Controller $entrust_list=$entrust_list->where('idCardNumber',$idCardNumber); } $entrust_list=$entrust_list->get(); + foreach ($entrust_list as $entrust) { + $entrust->reservation_sources_name=null; + if(!empty($entrust->reservation_sources_id)){ + $source=DB::table('s_department_resources') + ->where('id',$entrust->reservation_sources_id) + ->first(); + if(!!$source){ + $entrust->reservation_sources_name=$source->department_resources_name; + } + + } + } return \Yz::JsonReturn(true,'查询完成',$entrust_list); } diff --git a/Laravel/routes/web.php b/Laravel/routes/web.php index 59f25d3..4b66ca8 100644 --- a/Laravel/routes/web.php +++ b/Laravel/routes/web.php @@ -34,6 +34,7 @@ Route::get('/yiji', function (Request $request) { return redirect("http://192.168.80.76/jq_page/appointment.html?".$queryString); }); - +//cas 登录 +Route::get('/casLogin', 'App\Http\Controllers\API\CAS\CasLoginController@login'); diff --git a/YiJi-admin/.env.production b/YiJi-admin/.env.production index 6073f96..3102f3d 100644 --- a/YiJi-admin/.env.production +++ b/YiJi-admin/.env.production @@ -2,5 +2,5 @@ ENV = 'production' VITE_APP_API = 'http://192.168.80.76/api/' VITE_APP_FILE = 'http://192.168.80.76/' -VITE_APP_API_66666666 = 'https://yiji.yuluo.online/Laravel/public/api/' -VITE_APP_FILE_666666666 = 'https://yiji.yuluo.online/Laravel/public/' +VITE_APP_API_66666666 = 'http://yiji-qhdzhongyiyuan/api/' +VITE_APP_FILE_66666666 = 'http://yiji-qhdzhongyiyuan/' diff --git a/YiJi-admin/src/router/index.js b/YiJi-admin/src/router/index.js index 825ba25..2acd2a2 100644 --- a/YiJi-admin/src/router/index.js +++ b/YiJi-admin/src/router/index.js @@ -40,7 +40,15 @@ const router = createRouter({ meta: { requiresAuth: false } - }, { + }, + { + path: '/caslogin', + name: 'CasLogin', + component: () => import('../views/CasLogin.vue'), + meta: { + requiresAuth: false + } + },{ path: '/index', name: 'Index', component: Index, diff --git a/YiJi-admin/src/views/AutoLogin.vue b/YiJi-admin/src/views/AutoLogin.vue index 7086544..c20a812 100644 --- a/YiJi-admin/src/views/AutoLogin.vue +++ b/YiJi-admin/src/views/AutoLogin.vue @@ -77,8 +77,8 @@ let login = () => { //登录 if (username.value == '' || pwd.value == '') return ElMessage.error('用户名和密码不能为空') let data = { //传参 - username: username.value, - password: hunxiao(pwd.value), + username: hunxiao(username.value), + password: hunxiao(pwd.value) , } loading.value=true //调用登录接口 diff --git a/YiJi-admin/src/views/CasLogin.vue b/YiJi-admin/src/views/CasLogin.vue new file mode 100644 index 0000000..d07d9d1 --- /dev/null +++ b/YiJi-admin/src/views/CasLogin.vue @@ -0,0 +1,44 @@ + + + + + \ No newline at end of file