main
yanzai 1 year ago
parent 74193c2c82
commit 4b071b33b9

@ -127,7 +127,7 @@ class HealthCheckupController extends Controller
"type"=>$type, "type"=>$type,
"institution_id"=>$org_id->id, "institution_id"=>$org_id->id,
"tijian_num"=>$tijian_num, "tijian_num"=>$tijian_num,
"pdfs"=>isset($pdfs)?json_encode($pdfs):'', "pdfs"=>isset($pdfs)?json_encode($pdfs,JSON_UNESCAPED_UNICODE):'',
'hmac'=>$Hmac['data'], 'hmac'=>$Hmac['data'],
]); ]);
if($i){ if($i){

@ -28,13 +28,18 @@ class PersonController extends Controller
//获取用户体检详情和pdf //获取用户体检详情和pdf
public function GetPersonReportDetail(){ public function GetPersonReportDetail(){
$sfz =request('sfz'); $sfz =request('sfz');
$type =request('type');
//HSM加密 //HSM加密
$HSM_sfz =\App\Lib\HSM::HsmEncrypt($sfz); $HSM_sfz =\App\Lib\HSM::HsmEncrypt($sfz);
if($HSM_sfz['status']!=true){ if($HSM_sfz['status']!=true){
return \Yz::echoError1('调用HSM加密失败'); return \Yz::echoError1('调用HSM加密失败');
} }
$sfz=$HSM_sfz['data']; $sfz=$HSM_sfz['data'];
$info=DB::table('examination_records')->where(['id_card_num'=>$sfz,'is_del'=>0]) ->orderBy('id', 'desc')->first(); $info=DB::table('examination_records')->where(['id_card_num'=>$sfz,'is_del'=>0]);
if(isset($type)){
$info=$info->where('type',$type);
}
$info=$info ->orderBy('id', 'desc')->first();
if($info){ if($info){
$info->pdfs=count(json_decode($info->pdfs, true)); $info->pdfs=count(json_decode($info->pdfs, true));
$item=DB::table('report_result_item') $item=DB::table('report_result_item')
@ -50,7 +55,6 @@ class PersonController extends Controller
$info->id_card_num=$HSM_sfz['data']; $info->id_card_num=$HSM_sfz['data'];
} }
return \Yz::Return(true,'',['info'=>$info]); return \Yz::Return(true,'',['info'=>$info]);
}else{ }else{
return \Yz::echoError1('未找到相关体检信息'); return \Yz::echoError1('未找到相关体检信息');
@ -161,4 +165,37 @@ class PersonController extends Controller
} }
//H5用户获取自己的 本年度 预约记录详情 2024-07-18 23:35
//获取从h5自助预约的信息
public function H5GetAppointmentRecord(Request $request)
{
date_default_timezone_set('PRC');
$currentYear = date('Y');
$firstDay = date('Y-01-01', strtotime($currentYear));
$lastDay = date('Y-12-31', strtotime($currentYear));
$openid = $request->get('userid');//中间件产生的参数
$sfz =request('sfz');
$HSM=\App\Lib\HSM::HsmEncrypt($sfz);
if($HSM['status']!=true){
return \Yz::echoError1('调用HSM加密失败');
}
$sfz=$HSM['data'];
if(isset($sfz)){
$info=DB::table('appointment_record as a')
->select('a.name','a.id_card_num','a.date','a.time','a.type','a.doc_type_name','a.created_at','b.org_name')
->join('medical_institution as b','a.org_code','=','b.sn')
->where(['a.id_card_num'=>$sfz,'a.is_del'=>0])->whereNull('a.source')
->whereBetween('a.created_at',[$firstDay,$lastDay])->orderBy('a.id','desc')->first();
if(!!$info){
$info->id_card_num=request('sfz');
}
return \Yz::Return(true,'查完完成',$info);
}
}
} }

@ -179,6 +179,9 @@ class HealthCheckupService
} }
array_push($canshu,($arr['page']-1)*$arr['pageSize'],$arr['pageSize']); array_push($canshu,($arr['page']-1)*$arr['pageSize'],$arr['pageSize']);
$query=DB::select("select a.*,b.org_name from examination_records as a LEFT JOIN medical_institution as b on a.institution_id=b.id ".$sql." order by a.id desc limit ?,?",$canshu); $query=DB::select("select a.*,b.org_name from examination_records as a LEFT JOIN medical_institution as b on a.institution_id=b.id ".$sql." order by a.id desc limit ?,?",$canshu);
foreach ($query as $key=>$item){
$item->psfds=json_decode($item->pdfs,true);
}
$count=DB::select("select count(*) as c from examination_records as a ".$sql,$canshu); $count=DB::select("select count(*) as c from examination_records as a ".$sql,$canshu);
return \Yz::Return(true,'',['list'=>$query,'count'=>$count[0]->c]); return \Yz::Return(true,'',['list'=>$query,'count'=>$count[0]->c]);

@ -78,7 +78,7 @@ Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1/mH5'],function ()
Route::post('GetPersonReportDetail','App\Http\Controllers\API\mH5\PersonController@GetPersonReportDetail');//获取用户pdf Route::post('GetPersonReportDetail','App\Http\Controllers\API\mH5\PersonController@GetPersonReportDetail');//获取用户pdf
Route::post('GetIndustryList','App\Http\Controllers\API\mH5\IndustryController@GetIndustry'); Route::post('GetIndustryList','App\Http\Controllers\API\mH5\IndustryController@GetIndustry');
Route::post('GetPersonPdfDetailByLink','App\Http\Controllers\API\mH5\PersonController@GetPersonPdfDetailByLink');//根据链接获取体检那边的pdf Route::post('GetPersonPdfDetailByLink','App\Http\Controllers\API\mH5\PersonController@GetPersonPdfDetailByLink');//根据链接获取体检那边的pdf
Route::post('H5GetAppointmentRecord','App\Http\Controllers\API\mH5\PersonController@H5GetAppointmentRecord'); //获取自己的预约记录
}); });

@ -66,4 +66,8 @@ export const GetPersonPdfDetailByLink = (data) => {
//获取config配置信息 //获取config配置信息
export const GetConfigInArray = (data) => { export const GetConfigInArray = (data) => {
return axios({url:import.meta.env.VITE_APP_API+'GetConfigInArray',data:data}) return axios({url:import.meta.env.VITE_APP_API+'GetConfigInArray',data:data})
}
//获取自己的预约记录
export const H5GetAppointmentRecord = (data) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/mH5/H5GetAppointmentRecord',data:data})
} }

@ -1,7 +1,7 @@
<template> <template>
<div v-if="status==true" class="c_loading"> <div v-if="status==true" class="c_loading">
<van-row class="loading" v-if="status==true"> <van-row class="loading" v-if="status==true">
<van-col span="24" style="text-align: center;"><van-loading color="#33cdc9" >加载中...</van-loading></van-col> <van-col span="24" style="text-align: center;"><van-loading color="#238f8b" size="64px" >加载中...</van-loading></van-col>
</van-row> </van-row>
</div> </div>
@ -9,7 +9,6 @@
</template> </template>
<script setup> <script setup>
import { defineProps } from 'vue';
defineProps({status:false}); defineProps({status:false});
console.log(status) console.log(status)
</script> </script>

@ -68,6 +68,10 @@ const router = createRouter({
path: '/personReportLogin', path: '/personReportLogin',
name: 'PersonReportLogin', name: 'PersonReportLogin',
component: () => import('../views/PersonReportLogin.vue') component: () => import('../views/PersonReportLogin.vue')
},{
path: '/myappointment',
name: 'MyAppointment',
component: () => import('../views/MyAppointment.vue')
}] }]
}) })

@ -1,34 +1,79 @@
<template> <template>
<div class="LoginMain"> <div class="LoginMain">
<LoadingD :status="dloading"></LoadingD> <LoadingD :status="dloading"></LoadingD>
<van-button class="button" round type="default" icon="todo-list-o" :loading="loading" @click="gotoYuyue">{{buttonText}}</van-button> <div class="top" style="margin-top: -90px;">
<div class="biaoti"><van-icon name="todo-list-o" size="22" />体检预约</div>
<div class="button_group">
<div class="button_new" @click="gotoYuyue" v-if="JianKangZhengEnable==1">
<div>健康证明</div>
<div style="font-size: 12px;color: #277d7b;">预约健康证体检</div>
</div>
<div class="button_new" v-if="LaoNianRenEnable==1">
<div> 65岁以上老年人</div>
<div style="font-size: 12px;color: #277d7b;">老年人体检预约</div>
</div>
<div class="button_new" v-if="JianKangTiJianEnable==1">
<div>健康体检</div>
<div style="font-size: 12px;color: #277d7b;">健康体检预约</div>
</div>
<div class="button_new" style="background-color: #277d7b;" @click=" router.push('/myappointment')">
<div><van-icon name="todo-list-o" size="16" style="margin-right: 4px;" />预约记录</div>
<div style="font-size: 12px;color: #7dbfbe;"> 预约登记记录</div>
</div>
</div>
</div>
<div class="top">
<div class="biaoti"><van-icon name="newspaper-o" size="22" />报告查询</div>
<div class="button_group">
<div class="button_new2" @click="gotoReport(1)" v-if="JianKangZhengEnable_baogao==1">
<div>健康证明查询</div>
<div style="font-size: 12px;color: #c3805f;">健康证明查询</div>
</div>
<div class="button_new2" @click="gotoReport(2)" v-if="LaoNianRenEnable_baogao==1">
<div> 65岁以上老年人体检报告</div>
<div style="font-size: 12px;color: #c3805f;">老年人体检报告查询</div>
</div>
<div class="button_new2" v-if="JianKangTiJianEnable_baogao==1">
<div>健康体检报告</div>
<div style="font-size: 12px;color: #c3805f;">健康体检报告查询</div>
</div>
</div>
</div>
<!-- <van-button class="button" round type="default" icon="todo-list-o" :loading="loading" @click="gotoYuyue">{{buttonText}}</van-button>
<van-button class="button2" round type="warning" icon="newspaper-o" :loading="loading" @click="gotoReport"></van-button> <van-button class="button2" round type="warning" icon="newspaper-o" :loading="loading" @click="gotoReport"></van-button>
-->
</div> </div>
</template> </template>
<script setup> <script setup>
import { import {
AppLogin,AppGetUserInfo,mH5Register,GetConfigInArray AppLogin,
AppGetUserInfo,
mH5Register,
GetConfigInArray
} from "@/api/api.js"; } from "@/api/api.js";
import { import {
ref, ref,
onMounted,onActivated onMounted,
onActivated
} from 'vue'; } from 'vue';
import { import {
useRoute, useRoute,
useRouter useRouter
} from "vue-router" } from "vue-router"
import { showToast } from 'vant'; import {
showToast
} from 'vant';
const route = useRoute() const route = useRoute()
const router = useRouter(); const router = useRouter();
let openid ='' let openid = ''
const login = () => { const login = () => {
if( !sessionStorage.getItem('sfz')) { if (!sessionStorage.getItem('sfz')) {
showToast('查询用户信息出错!'); showToast('查询用户信息出错!');
return false return false
} }
loading.value = true loading.value = true
AppLogin({ AppLogin({
openid: openid openid: openid
}).then(res => { }).then(res => {
@ -37,85 +82,86 @@
sessionStorage.setItem('token', res.token); sessionStorage.setItem('token', res.token);
sessionStorage.setItem('refreshToken', res.refresh_token); sessionStorage.setItem('refreshToken', res.refresh_token);
var token = sessionStorage.getItem('token'); var token = sessionStorage.getItem('token');
if (token == res.token){ if (token == res.token) {
if(res.isRegister){ if (res.isRegister) {
// //
// router.push('/selectOrganization') // router.push('/selectOrganization')
}else{ } else {
// //
Reg() Reg()
} }
}else{ } else {
showToast('查询存储信息失败'); showToast('查询存储信息失败');
} }
}else{ } else {
showToast(res.msg); showToast(res.msg);
} }
}) })
} }
let loading = ref(false) let loading = ref(false)
let buttonText = ref('开始预约') let buttonText = ref('开始预约')
const gotoYuyue=()=>{
if(JianKangZhengEnable.value !=1){ const gotoYuyue = () => {
if (JianKangZhengEnable.value != 1) {
showToast('暂未开放健康证预约'); showToast('暂未开放健康证预约');
return false; return false;
} }
if( sessionStorage.getItem('sfz')){ if (sessionStorage.getItem('sfz')) {
router.push('/selectOrganization') router.push('/selectOrganization')
}else{ } else {
showToast('查询用户信息出错!'); showToast('查询用户信息出错!');
} }
} }
const gotoReport=()=>{ const gotoReport = (type) => {
if( sessionStorage.getItem('sfz')){ let p = '?type=' + type
router.push('/showReport') if (sessionStorage.getItem('sfz')) {
}else{ router.push('/showReport' + p)
} else {
showToast('查询用户信息出错!'); showToast('查询用户信息出错!');
} }
} }
let dloading=ref(false) let dloading = ref(false)
const AppGetUserinfoAction=()=>{ //APP const AppGetUserinfoAction = () => { //APP
dloading.value=true dloading.value = true
AppGetUserInfo({ AppGetUserInfo({
userId: openid userId: openid
}).then(res => { }).then(res => {
dloading.value=false dloading.value = false
console.log(res) console.log(res)
if (res.status) { if (res.status) {
let info=res.data let info = res.data
if(info[0] !=undefined){ if (info[0] != undefined) {
sessionStorage.setItem('sfz', info[0].idcardno); sessionStorage.setItem('sfz', info[0].idcardno);
sessionStorage.setItem('name', info[0].xm); sessionStorage.setItem('name', info[0].xm);
sessionStorage.setItem('tel', info[0].sj); sessionStorage.setItem('tel', info[0].sj);
sessionStorage.setItem('sex', info[0].xb); sessionStorage.setItem('sex', info[0].xb);
login() login()
}else{ } else {
showToast('查询用户信息出错!'); showToast('查询用户信息出错!');
} }
}else{ } else {
showToast(res.msg); showToast(res.msg);
} }
}) })
} }
// //
const Reg = () => { const Reg = () => {
let info={ let info = {
name: sessionStorage.getItem('name'), name: sessionStorage.getItem('name'),
sex: sessionStorage.getItem('sex'), sex: sessionStorage.getItem('sex'),
tel: sessionStorage.getItem('tel'), tel: sessionStorage.getItem('tel'),
sfz: sessionStorage.getItem('sfz'), sfz: sessionStorage.getItem('sfz'),
} }
loading.value=true loading.value = true
mH5Register({ mH5Register({
info: info info: info
}).then(res => { }).then(res => {
loading.value=false loading.value = false
if (res.status == true) { if (res.status == true) {
// showDialog({ // showDialog({
// title: '', // title: '',
@ -124,34 +170,59 @@
// // // //
// router.replace('/selectOrganization') // router.replace('/selectOrganization')
// }); // });
showToast('注册成功!'); showToast('注册成功!');
} else { } else {
showToast(res.msg); showToast(res.msg);
} }
}) })
} }
let configInfo=ref(null); let configInfo = ref(null);
let LaoNianRenEnable=ref(0); let LaoNianRenEnable = ref(0);
let JianKangZhengEnable=ref(0); let JianKangZhengEnable = ref(0);
let JianKangTiJianEnable = ref(0);
let LaoNianRenEnable_baogao = ref(0);
let JianKangZhengEnable_baogao = ref(0);
let JianKangTiJianEnable_baogao = ref(0);
// //
const GetConfigInArrayFunc=()=>{ const GetConfigInArrayFunc = () => {
GetConfigInArray({ GetConfigInArray({
labels: ['是否开启H5老年人','是否开启H5健康证'] labels: ['是否开启H5老年人', '是否开启H5健康证', '是否开启H5健康体检', '是否开启H5老年人报告查询', '是否开启H5健康证明查询', '是否开启H5健康体检报告查询']
}).then(res => { }).then(res => {
loading.value=false loading.value = false
if (res.status) { if (res.status) {
configInfo.value=res.data configInfo.value = res.data
configInfo.value.forEach(function(v,i){ configInfo.value.forEach(function(v, i) {
if(v.label=='是否开启H5老年人'){ if (v.label == '是否开启H5老年人') {
if(v.value==1){ if (v.value == 1) {
LaoNianRenEnable.value=1 LaoNianRenEnable.value = 1
} }
} }
if(v.label=='是否开启H5健康证'){ if (v.label == '是否开启H5健康证') {
if(v.value==1){ if (v.value == 1) {
JianKangZhengEnable.value=1 JianKangZhengEnable.value = 1
} }
} }
if (v.label == '是否开启H5健康体检') {
if (v.value == 1) {
JianKangTiJianEnable.value = 1
}
}
if (v.label == '是否开启H5老年人报告查询') {
if (v.value == 1) {
LaoNianRenEnable_baogao.value = 1
}
}
if (v.label == '是否开启H5健康证明查询') {
if (v.value == 1) {
JianKangZhengEnable_baogao.value = 1
}
}
if (v.label == '是否开启H5健康体检报告查询') {
if (v.value == 1) {
JianKangTiJianEnable_baogao.value = 1
}
}
}) })
} else { } else {
showToast(res.msg); showToast(res.msg);
@ -159,15 +230,16 @@
}) })
} }
onMounted(() => { onMounted(() => {
openid= route.query.userId openid = route.query.userId
//AppGetUserinfoAction() //AppGetUserinfoAction()
tiaoGuoAppYanzheng(); tiaoGuoAppYanzheng();
GetConfigInArrayFunc(); GetConfigInArrayFunc();
console.log(openid); console.log(openid);
}) })
// app // app
const tiaoGuoAppYanzheng=()=>{ const tiaoGuoAppYanzheng = () => {
sessionStorage.setItem('sfz', "13030219880808587X"); //sessionStorage.setItem('sfz', "130302199910001112");
sessionStorage.setItem('sfz', "110224195909090061");
sessionStorage.setItem('name', '测试'); sessionStorage.setItem('name', '测试');
sessionStorage.setItem('tel', "13333356789"); sessionStorage.setItem('tel', "13333356789");
sessionStorage.setItem('sex', 1); sessionStorage.setItem('sex', 1);
@ -182,12 +254,58 @@
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
height: 100vh; height: 100vh;
background-image: url('../assets/image/login.jpg'); /* background-image: url('../assets/image/login.jpg'); */
background-size: 100%; background-size: 100%;
background-repeat: no-repeat; background-repeat: no-repeat;
background-color: #afeefd; background-color: #afeefd;
background-position: top center; background-position: top center;
padding: 10px;
}
.top {
width: 100%;
padding: 20px;
background-color: rgba(255, 255, 255, 0.5);
margin-top: 10px;
border-radius: 10px;
}
.biaoti {
font-size: 18px;
margin-bottom: 10px;
color: #43ae9c;
font-weight: 700;
}
.button_group {
display: flex;
width: 100%;
justify-content: space-between;
flex-wrap: wrap;
}
.button_new {
background-color: #33cdc9;
border: 3px solid #fff;
padding: 10px;
font-size: 16px;
border-radius: 10px;
width: 48%;
margin-bottom: 20px;
color: #fff;
}
.button_new2 {
background-color: #ffaa7f;
border: 3px solid #fff;
padding: 10px;
font-size: 16px;
border-radius: 10px;
width: 48%;
margin-bottom: 20px;
color: #fff;
} }
.button { .button {
@ -197,6 +315,7 @@
color: #fff; color: #fff;
border: 3px solid #e6f5fd; border: 3px solid #e6f5fd;
} }
.button2 { .button2 {
width: 60%; width: 60%;
margin-top: 20px; margin-top: 20px;

@ -0,0 +1,120 @@
<template>
<div class="Myappointment">
<div class="info">
<div style="font-size: 18px; font-weight: 700;margin-bottom: 10px;margin-top: 10px; color:#33cdc9">我的预约记录
</div>
<table v-if="Info">
<tr>
<td>姓名</td>
<td>{{Info.name}}</td>
</tr>
<tr>
<td>身份证</td>
<td>{{Info.id_card_num}}</td>
</tr>
<tr>
<td>预约类型</td>
<td><span v-if="Info.type==1"></span><span v-if="Info.type==2">65</span></td>
</tr>
<tr>
<td>预约机构</td>
<td>{{Info.org_name}}</td>
</tr>
<tr>
<td>预约时间</td>
<td>{{Info.date.substr(0,10)}} {{Info.time}}</td>
</tr>
<tr>
<td>记录时间</td>
<td>{{Info.created_at}}</td>
</tr>
</table>
<van-empty v-else description="暂无记录" />
<van-button class="button" round type="default" icon="todo-list-o" @click="router.go(-1)"></van-button>
</div>
</div>
</template>
<script setup>
import {
ref,
onMounted
} from 'vue';
import {
useRoute,
useRouter
} from "vue-router"
import {
H5GetAppointmentRecord
} from "@/api/api.js";
import {
showToast
} from 'vant';
const route = useRoute()
const router = useRouter();
let loading = ref(false)
let Info =ref('');
const GetInfo=()=>{
let sfz = sessionStorage.getItem('sfz');
H5GetAppointmentRecord({sfz:sfz}).then(res => {
if(res.status){
Info.value=res.data
}
})
}
onMounted(()=>{
GetInfo()
})
</script>
<style scoped>
.Myappointment {
background-color: #afeefd;
height: 100vh;
padding: 8px;
}
.info {
position: relative;
/* border: 1px solid red; */
border-radius: 10px;
background-color: #fff;
padding: 20px 20px;
}
table {
border: 1px solid #ddd;
border-collapse: collapse;
width: 100%;
}
td {
border: 1px solid #ddd;
padding: 8px;
}
tr td:first-child {
width: 40%;
font-weight: 700;
padding-left: 30px;
}
tr td:last-child {
width: 60%;
}
.button {
width: 100%;
margin-top: 40px;
background-color: #33cdc9;
color: #fff;
border: 3px solid #e6f5fd;
}
</style>

@ -1,240 +1,265 @@
<template> <template>
<div > <div>
<LoadingD :status="loading"></LoadingD> <LoadingD :status="loading"></LoadingD>
<div class="showreport" v-if="reportinfo !=''"> <div class="showreport" v-if="reportinfo !=''">
<div class="top" > <div class="top">
<van-row class="title"> <van-row class="title">
<van-col span="6">姓名</van-col> <van-col span="6">姓名</van-col>
<van-col span="18">{{reportinfo.name}}</van-col> <van-col span="18">{{reportinfo.name}}</van-col>
</van-row> </van-row>
<van-row class="title"> <van-row class="title">
<van-col span="6">性别</van-col> <van-col span="6">性别</van-col>
<van-col span="18" v-if="reportinfo.sex==0"></van-col> <van-col span="18" v-if="reportinfo.sex==0"></van-col>
<van-col span="18" v-if="reportinfo.sex==1"></van-col> <van-col span="18" v-if="reportinfo.sex==1"></van-col>
</van-row> </van-row>
<van-row class="title"> <van-row class="title">
<van-col span="6">身份证</van-col> <van-col span="6">身份证</van-col>
<van-col span="18">{{reportinfo.id_card_num}}</van-col> <van-col span="18">{{reportinfo.id_card_num}}</van-col>
</van-row> </van-row>
<van-row class="button"> <van-row class="button">
<!-- <van-col span="12"><van-button @click="gotoHealthCertificate" size="small" plain>查看健康证</van-button></van-col> --> <!-- <van-col span="12"><van-button @click="gotoHealthCertificate" size="small" plain>查看健康证</van-button></van-col> -->
<van-col span="24"><van-button size="small" @click="previewReport" plain>查看报告</van-button></van-col> <van-col span="24"><van-button @click="previewReport" plain>查看报告</van-button></van-col>
</van-row> </van-row>
<div class="title1">北京市从业人员体检结果</div> <div class="title1">{{title}}</div>
</div> </div>
<div class="bottom"> <div class="bottom" v-if="reportinfo.items.length>0">
<van-row style="margin-top: 20px;color: #9e9e9e;"> <van-row style="margin-top: 20px;color: #9e9e9e;">
<van-col span="4"></van-col> <van-col span="4"></van-col>
<van-col span="16">项目</van-col> <van-col span="16">项目</van-col>
<van-col span="4">结果</van-col> <van-col span="4">结果</van-col>
</van-row> </van-row>
<van-row v-for="(item, index) in reportinfo.items" :key="index" class="list"> <van-row v-for="(item, index) in reportinfo.items" :key="index" class="list">
<van-col v-if="item.flag == '' || item.flag == null" span="4"><van-icon name="checked" color="#4dde79" size="20px" /></van-col> <van-col v-if="item.flag == '' || item.flag == null" span="4"><van-icon name="checked"
<van-col v-else span="4"><van-icon name="warning" color="#de554d" size="20px" /></van-col> color="#4dde79" size="20px" /></van-col>
<van-col span="16">{{ item.item_name }}</van-col> <van-col v-else span="4"><van-icon name="warning" color="#de554d" size="20px" /></van-col>
<van-col v-if="item.flag == '' || item.flag == null" span="4"><span style="color: #ccc;"></span></van-col> <van-col span="16">{{ item.item_name }}</van-col>
<van-col v-else span="4">{{item.item_result}}</van-col> <van-col v-if="item.flag == '' || item.flag == null" span="4"><span
</van-row> style="color: #ccc;"></span></van-col>
<van-col v-else span="4">{{item.item_result}}</van-col>
</van-row>
</div> </div>
</div> </div>
<van-popup v-model:show="showPicker" round position="bottom"> <van-popup v-model:show="showPicker" round position="bottom">
<van-picker <van-picker :columns="columns" @cancel="showPicker = false" @confirm="selectPDF" />
:columns="columns"
@cancel="showPicker = false"
@confirm="selectPDF"
/>
</van-popup> </van-popup>
</div> </div>
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from 'vue'; import {
import { RouterLink ,useRouter} from 'vue-router'; ref,
import { GetPersonReportDetail} from "@/api/api.js"; onMounted
} from 'vue';
import {
RouterLink,
useRouter,
useRoute,
} from 'vue-router';
import {
GetPersonReportDetail
} from "@/api/api.js";
import { import {
showToast, showToast,
showDialog showDialog
} from 'vant'; } from 'vant';
const router = useRouter(); const route = useRoute()
let loading=ref(false) const router = useRouter();
let list = [ let type=route.query.type
{ let loading = ref(false)
name: "细菌性痢疾", let title=ref("");
value: "无" let list = [{
}, { name: "细菌性痢疾",
name: "伤寒和副伤赛", value: "无"
value: "无" }, {
}, { name: "伤寒和副伤赛",
name: "病毒性肝炎(甲型、戌型)", value: "无"
value: "无" }, {
}, { name: "病毒性肝炎(甲型、戌型)",
name: "活动性肺结核", value: "无"
value: "无" }, {
}, name: "活动性肺结核",
{ value: "无"
name: "化脓性或渗出性皮肤病", },
value: "无" {
}, { name: "化脓性或渗出性皮肤病",
name: "手部真菌感染性疾病(如手癣、指甲癣等)", value: "无"
value: "无" }, {
}, { name: "手部真菌感染性疾病(如手癣、指甲癣等)",
name: "霍乱", value: "无"
value: "无" }, {
}, { name: "霍乱",
name: "阿米巴性痢疾", value: "无"
value: "无" }, {
}, { name: "阿米巴性痢疾",
name: "手部湿疹", value: "无"
value: "无" }, {
}, { name: "手部湿疹",
name: "手部的银屑病或者鳞屑", value: "无"
value: "无" }, {
}, name: "手部的银屑病或者鳞屑",
] value: "无"
document.title='报告查询' },
let reportinfo=ref('') ]
const getDetail=()=>{ document.title = '报告查询'
let sfz=sessionStorage.getItem('sfz'); let reportinfo = ref('')
loading.value=true const getDetail = () => {
GetPersonReportDetail({sfz:sfz}).then(res => { let sfz = sessionStorage.getItem('sfz');
loading.value=false loading.value = true
GetPersonReportDetail({
sfz: sfz,
type:type
}).then(res => {
loading.value = false
if (res.status) { if (res.status) {
reportinfo.value=res.data.info reportinfo.value = res.data.info
for(var i=0;i<reportinfo.value.pdfs;i++){ if(reportinfo.value.type==1){
let ii=0; title.value="北京市从业人员体检结果"
ii=i+1; }
console.log(999) if(reportinfo.value.type==2){
columns.value.push({text:'报告'+ii,value:i}); title.value="老年人体检报告查询"
} }
for (var i = 0; i < reportinfo.value.pdfs; i++) {
console.log(columns.value); let ii = 0;
ii = i + 1;
console.log(999)
columns.value.push({
text: '报告' + ii,
value: i
});
}
console.log(columns.value);
} else { } else {
showToast(res.msg); showToast(res.msg);
} }
}) })
}
//
const previewReport=()=>{
// if(reportinfo.value.report_file !=undefined && reportinfo.value.report_file.length>2){
// //router.push('/previewReport?tijian_num='+reportinfo.value.report_file)
// window.location.href=import.meta.env.VITE_APP_FILE_URL+ reportinfo.value.report_file
// }else{
// showDialog({
// title: '',
// message: "",
// messageAlign: 'left',
// confirmButtonText: '',
// theme: 'round-button',
// confirmButtonColor: "#33cdc9"
// }).then(() => {
// });
// }
if(reportinfo.value.pdfs>0){
showPicker.value=true;
}else{
showDialog({
title: '通知',
message: "暂无报告可查询",
messageAlign: 'left',
confirmButtonText: '好的',
theme: 'round-button',
confirmButtonColor: "#33cdc9"
}).then(() => {
});
} }
} //
const gotoHealthCertificate=()=>{ const previewReport = () => {
if(reportinfo.value.result_status==1){ // if(reportinfo.value.report_file !=undefined && reportinfo.value.report_file.length>2){
router.push('/healthCertificate') // //router.push('/previewReport?tijian_num='+reportinfo.value.report_file)
}else{ // window.location.href=import.meta.env.VITE_APP_FILE_URL+ reportinfo.value.report_file
showToast('暂无对应此次体检结果的健康证'); // }else{
// showDialog({
// title: '',
// message: "",
// messageAlign: 'left',
// confirmButtonText: '',
// theme: 'round-button',
// confirmButtonColor: "#33cdc9"
// }).then(() => {
// });
// }
if (reportinfo.value.pdfs > 0) {
showPicker.value = true;
} else {
showDialog({
title: '通知',
message: "暂无报告可查询",
messageAlign: 'left',
confirmButtonText: '好的',
theme: 'round-button',
confirmButtonColor: "#33cdc9"
}).then(() => {
});
}
}
const gotoHealthCertificate = () => {
if (reportinfo.value.result_status == 1) {
router.push('/healthCertificate')
} else {
showToast('暂无对应此次体检结果的健康证');
}
}
let showPicker = ref(false);
let columns = ref([])
const selectPDF = ({
selectedOptions
}) => {
showPicker.value = false;
console.log(selectedOptions[0].value);
router.push('/previewReport?recordid=' + reportinfo.value.id + '&pdf_num=' + selectedOptions[0].value)
} }
} onMounted(() => {
let showPicker=ref(false); getDetail()
let columns = ref([]) })
const selectPDF=({ selectedOptions })=>{
showPicker.value = false;
console.log(selectedOptions[0].value) ;
router.push('/previewReport?recordid='+reportinfo.value.id+'&pdf_num='+selectedOptions[0].value)
}
onMounted(()=>{
getDetail()
})
</script> </script>
<style scoped > <style scoped>
.showreport { .showreport {
height: 100vh; height: 100vh;
background: radial-gradient(circle at top center, #33cdc9 30%, #e3e3e3, transparent 2%); background: radial-gradient(circle at top center, #33cdc9 30%, #e3e3e3, transparent 2%);
padding-top: 20px; padding-top: 20px;
} }
.title1 { .title1 {
text-align: center; text-align: center;
font-size: 18px; font-size: 18px;
background-color: #fff; background-color: #fff;
padding: 10px 40px; padding: 10px 40px;
border-radius: 20px; border-radius: 20px;
box-shadow: 0px 5px 5px #add2d1; box-shadow: 0px 5px 5px #add2d1;
color: #333; color: #333;
transform: translateY(20px); transform: translateY(20px);
white-space: nowrap; white-space: nowrap;
} }
.top { .top {
color: #ffffff; color: #ffffff;
background-color: #33cdc9; background-color: #33cdc9;
border: 1px solid #fff; border: 1px solid #fff;
margin: auto 10px; margin: auto 10px;
border-radius: 20px; border-radius: 20px;
padding: 20px 20px 0px 20px; padding: 20px 20px 0px 20px;
} }
.top .button {
margin-top: 10px; .top .button {
} margin-top: 10px;
}
.top .button .van-col {
padding-left: 10px; .top .button .van-col {
padding-right: 10px; padding-left: 10px;
} padding-right: 10px;
}
.top .button .van-button {
width: 100%; .top .button .van-button {
} width: 100%;
}
.top .title {
text-align: center; .top .title {
font-size: 18px; text-align: center;
font-weight: 900; font-size: 18px;
text-align: right; font-weight: 900;
margin-top: 10px; text-align: right;
margin-top: 10px;
}
}
.top .title .van-col:last-child {
text-align: left; .top .title .van-col:last-child {
padding-left: 10px; text-align: left;
padding-left: 10px;
}
}
.bottom {
background-color: #fff; .bottom {
padding: 20px; background-color: #fff;
padding: 20px;
}
.bottom .list { }
margin-top: 10px;
padding-bottom: 10px; .bottom .list {
border-bottom: 1px dotted #ddd; margin-top: 10px;
} padding-bottom: 10px;
border-bottom: 1px dotted #ddd;
}
</style> </style>
Loading…
Cancel
Save