diff --git a/Laravel/app/Http/Controllers/API/mH5/PersonController.php b/Laravel/app/Http/Controllers/API/mH5/PersonController.php index 62badad..0c429bc 100644 --- a/Laravel/app/Http/Controllers/API/mH5/PersonController.php +++ b/Laravel/app/Http/Controllers/API/mH5/PersonController.php @@ -30,6 +30,8 @@ class PersonController extends Controller public function GetPersonReportDetail(){ $sfz =request('sfz'); $type =request('type'); + $orig_sfz=$sfz; + $tijian_count=0;//最近体检的总数 //HSM加密 $HSM_sfz =\App\Lib\HSM::HsmEncrypt($sfz); if($HSM_sfz['status']!=true){ @@ -41,11 +43,15 @@ class PersonController extends Controller $info=$info->where('type',$type); } $info=$info ->orderBy('id', 'desc')->first(); - if($info){ + $sixin_info=false; + if(!!$info){ + $tijian_count++; $info->pdfs=count(json_decode($info->pdfs, true)); + $info->biao='examination_records'; $item=DB::table('report_result_item') ->where(['examination_id'=>$info->id]) ->select(['item_name','item_result','flag'])->get(); + $info->items=$item; if(strlen($info->id_card_num)>30){ //HSM解密 @@ -63,8 +69,89 @@ class PersonController extends Controller } $info->tel=$HSM_tel['data']; } + $sixin_info=$info; + + } + $pingTaiOrgList=['北京市大兴区西红门镇社区卫生服务中心']; + $pingTaiInfo=false; + $pingTai=DB::table('health_certificate_push') + ->select('*','identifierValue as id_card_num','examDate as tijian_time','healthExaminationId as tijian_num') + ->where(['identifierValue'=>$orig_sfz]) + ->whereIn('hospitalName',$pingTaiOrgList) + ->orderBy('id', 'desc') + ->first(); + if(!!$pingTai && $type==1){ + $pingTai->biao='health_certificate_push'; + $tijian_count++; + $fieldsMap = [ + 'hasBacterialDysentery' => '细菌性痢疾', + 'hasTyphoid' => '伤寒和副伤寒', + 'hasViralHepatitis' => '病毒性肝炎(甲型、戊型)', + 'hasActiveTB' => '活动性肺结核', + 'hasSkinDiseases' => '化脓性或渗出性皮肤病', + 'hasHandFungal' => '手部真菌感染性疾病(如手癣、指甲癣等)', + 'hasCholera' => '霍乱', + 'hasAmebicDysentery' => '阿米巴性痢疾', + 'hasHandEczema' => '手部湿疹', + 'hasHandPsoriasis' => '手部的银屑病或者鳞屑', + ]; + $pingTaiInfo=$pingTai; + $pingTaiInfo->type=1; + $item = []; + foreach ($fieldsMap as $field => $name) { + $value = $pingTaiInfo->$field ?? null; + + // 根据字段值判断状态 + switch ($value) { + case 1: + $status = '有'; + break; + case 2: + $status = '无'; + break; + case -1: + $status = '未检查'; + break; + case null: + $status = '未填写'; + break; + default: + $status = '未填写'; + } + $d=[ + 'field' => $field, + 'item_name' => $name, + 'value' => $value, // 原始值(可选,用于前端判断或回显) + 'item_result' => $status, // 中文状态 + 'flag'=>null, + ]; + if($status<>'无'){ + $d=[ + 'field' => $field, + 'item_name' => $name, + 'value' => $value, // 原始值(可选,用于前端判断或回显) + 'item_result' => $status, // 中文状态 + 'flag'=>'异常', + ]; + } + + + $item[] = $d; + } + $pingTaiInfo->items=$item; + $pdf=DB::table('health_certificate_push_pdf') + ->where([ 'hospitalCode' => $pingTaiInfo->hospitalCode,'healthExaminationId' => $pingTaiInfo->healthExaminationId]) + ->orderBy('id', 'desc') + ->first(); + $pingTaiInfo->pdfs=0; + if(!!$pdf){ + $pingTaiInfo->pdfs=1; + } - return \Yz::Return(true,'',['info'=>$info]); + } + if($sixin_info || $pingTaiInfo){ + $list=[$sixin_info,$pingTaiInfo]; + return \Yz::Return(true,'',['list'=>$list,'tijian_count'=>$tijian_count]); }else{ return \Yz::echoError1('未找到相关体检信息'); } @@ -75,10 +162,27 @@ class PersonController extends Controller { $recordid =request('recordid'); $pdf_num =request('pdf_num'); - $query=DB::table('examination_records')->where(['id'=>$recordid])->first(); + $biao =request('biao'); + if($biao=='examination_records'){ + $query=DB::table('examination_records')->where(['id'=>$recordid])->first(); + } + if($biao=='health_certificate_push'){ + $query=DB::table('health_certificate_push')->where(['id'=>$recordid])->first(); + $pdf=DB::table('health_certificate_push_pdf') + ->where([ 'hospitalCode' => $query->hospitalCode,'healthExaminationId' => $query->healthExaminationId]) + ->orderBy('id', 'desc') + ->first(); + + $query->pdfs=json_encode([$pdf->pdf_url],JSON_UNESCAPED_UNICODE); + + } + if(!$query) return \Yz::echoError1('未找到对应体检记录'); + $pdfs=json_decode($query->pdfs, true); + $pdfurl=$pdfs[$pdf_num]; + // 使用 GuzzleHttp 获取第三方 PDF 地址的内容 $client = new Client(); $response = $client->get($pdfurl); diff --git a/mH5/src/views/AppLogin.vue b/mH5/src/views/AppLogin.vue index a211e9f..5b1451e 100644 --- a/mH5/src/views/AppLogin.vue +++ b/mH5/src/views/AppLogin.vue @@ -296,6 +296,7 @@ // 待解密的密文 let encryptedText = "AmAYzZaAwbOMPUptaxWQeE1WSE85wt7TxejYjxRXua5%2BAPGSiw8dPM5LMW1ti2ex11"; console.log('55555555',encryptedText) + // console.log('jiami',sm4Util.encryptData_ECB('userid=13062619850808587X')); let hash1 = window.location.hash; encryptedText= hash1.split('?')[1]; try { @@ -310,7 +311,7 @@ console.log("解密结果:", openid); sessionStorage.setItem('openid', openid); AppGetUserinfoAction() - //tiaoGuoAppYanzheng(); + tiaoGuoAppYanzheng(); GetConfigInArrayFunc(); } catch (e) { console.error("解密失败:", e); @@ -326,8 +327,8 @@ }) //测试 跳过大兴app验证 const tiaoGuoAppYanzheng = () => { - sessionStorage.setItem('sfz', "130302194510011112"); - //sessionStorage.setItem('sfz', "110224195909090061"); + //sessionStorage.setItem('sfz', "130302194510011112"); + sessionStorage.setItem('sfz', "110224195909090061"); sessionStorage.setItem('name', '测试'); sessionStorage.setItem('tel', "13333356789"); sessionStorage.setItem('sex', 1); diff --git a/mH5/src/views/PreviewReport.vue b/mH5/src/views/PreviewReport.vue index 0a25c59..00ec9ce 100644 --- a/mH5/src/views/PreviewReport.vue +++ b/mH5/src/views/PreviewReport.vue @@ -32,7 +32,7 @@ let loading = ref(false); let pdf_num = route.query.pdf_num //获取到pdf array的key let recordid = route.query.recordid - + let biao = route.query.biao let pdfData = ref(null); @@ -43,7 +43,8 @@ loading.value = true GetPersonPdfDetailByLink({ recordid: recordid, - pdf_num: pdf_num + pdf_num: pdf_num, + biao:biao }).then(res => { loading.value = false diff --git a/mH5/src/views/ShowReport.vue b/mH5/src/views/ShowReport.vue index 48affd3..44ca932 100644 --- a/mH5/src/views/ShowReport.vue +++ b/mH5/src/views/ShowReport.vue @@ -48,6 +48,18 @@ +
+
+
请选择要查看的报告
+ + {{item.tijian_time.substring(0,10)}} 报告 + +
+ 查 看 +
+ +
+