main
yanzai 1 year ago
parent 74193c2c82
commit 4b071b33b9

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

@ -28,13 +28,18 @@ class PersonController extends Controller
//获取用户体检详情和pdf
public function GetPersonReportDetail(){
$sfz =request('sfz');
$type =request('type');
//HSM加密
$HSM_sfz =\App\Lib\HSM::HsmEncrypt($sfz);
if($HSM_sfz['status']!=true){
return \Yz::echoError1('调用HSM加密失败');
}
$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){
$info->pdfs=count(json_decode($info->pdfs, true));
$item=DB::table('report_result_item')
@ -50,7 +55,6 @@ class PersonController extends Controller
$info->id_card_num=$HSM_sfz['data'];
}
return \Yz::Return(true,'',['info'=>$info]);
}else{
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']);
$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);
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('GetIndustryList','App\Http\Controllers\API\mH5\IndustryController@GetIndustry');
Route::post('GetPersonPdfDetailByLink','App\Http\Controllers\API\mH5\PersonController@GetPersonPdfDetailByLink');//根据链接获取体检那边的pdf
Route::post('H5GetAppointmentRecord','App\Http\Controllers\API\mH5\PersonController@H5GetAppointmentRecord'); //获取自己的预约记录
});

@ -67,3 +67,7 @@ export const GetPersonPdfDetailByLink = (data) => {
export const GetConfigInArray = (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>
<div v-if="status==true" class="c_loading">
<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>
</div>
@ -9,7 +9,6 @@
</template>
<script setup>
import { defineProps } from 'vue';
defineProps({status:false});
console.log(status)
</script>

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

@ -1,24 +1,69 @@
<template>
<div class="LoginMain">
<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>
-->
</div>
</template>
<script setup>
import {
AppLogin,AppGetUserInfo,mH5Register,GetConfigInArray
AppLogin,
AppGetUserInfo,
mH5Register,
GetConfigInArray
} from "@/api/api.js";
import {
ref,
onMounted,onActivated
onMounted,
onActivated
} from 'vue';
import {
useRoute,
useRouter
} from "vue-router"
import { showToast } from 'vant';
import {
showToast
} from 'vant';
const route = useRoute()
const router = useRouter();
let openid = ''
@ -71,9 +116,10 @@
showToast('查询用户信息出错!');
}
}
const gotoReport=()=>{
const gotoReport = (type) => {
let p = '?type=' + type
if (sessionStorage.getItem('sfz')) {
router.push('/showReport')
router.push('/showReport' + p)
} else {
showToast('查询用户信息出错!');
}
@ -133,10 +179,14 @@
let configInfo = ref(null);
let LaoNianRenEnable = 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 = () => {
GetConfigInArray({
labels: ['是否开启H5老年人','是否开启H5健康证']
labels: ['是否开启H5老年人', '是否开启H5健康证', '是否开启H5健康体检', '是否开启H5老年人报告查询', '是否开启H5健康证明查询', '是否开启H5健康体检报告查询']
}).then(res => {
loading.value = false
if (res.status) {
@ -152,6 +202,27 @@
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 {
showToast(res.msg);
@ -167,7 +238,8 @@
})
// app
const tiaoGuoAppYanzheng = () => {
sessionStorage.setItem('sfz', "13030219880808587X");
//sessionStorage.setItem('sfz', "130302199910001112");
sessionStorage.setItem('sfz', "110224195909090061");
sessionStorage.setItem('name', '测试');
sessionStorage.setItem('tel', "13333356789");
sessionStorage.setItem('sex', 1);
@ -182,14 +254,60 @@
justify-content: center;
flex-direction: column;
height: 100vh;
background-image: url('../assets/image/login.jpg');
/* background-image: url('../assets/image/login.jpg'); */
background-size: 100%;
background-repeat: no-repeat;
background-color: #afeefd;
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 {
width: 60%;
margin-top: 50%;
@ -197,6 +315,7 @@
color: #fff;
border: 3px solid #e6f5fd;
}
.button2 {
width: 60%;
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>

@ -18,21 +18,23 @@
</van-row>
<van-row class="button">
<!-- <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>
<div class="title1">北京市从业人员体检结果</div>
<div class="title1">{{title}}</div>
</div>
<div class="bottom">
<div class="bottom" v-if="reportinfo.items.length>0">
<van-row style="margin-top: 20px;color: #9e9e9e;">
<van-col span="4"></van-col>
<van-col span="16">项目</van-col>
<van-col span="4">结果</van-col>
</van-row>
<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"
color="#4dde79" size="20px" /></van-col>
<van-col v-else span="4"><van-icon name="warning" color="#de554d" size="20px" /></van-col>
<van-col span="16">{{ item.item_name }}</van-col>
<van-col v-if="item.flag == '' || item.flag == null" span="4"><span style="color: #ccc;"></span></van-col>
<van-col v-if="item.flag == '' || item.flag == null" span="4"><span
style="color: #ccc;"></span></van-col>
<van-col v-else span="4">{{item.item_result}}</van-col>
</van-row>
@ -40,26 +42,33 @@
</div>
<van-popup v-model:show="showPicker" round position="bottom">
<van-picker
:columns="columns"
@cancel="showPicker = false"
@confirm="selectPDF"
/>
<van-picker :columns="columns" @cancel="showPicker = false" @confirm="selectPDF" />
</van-popup>
</div>
</template>
<script setup>
import { ref, onMounted } from 'vue';
import { RouterLink ,useRouter} from 'vue-router';
import { GetPersonReportDetail} from "@/api/api.js";
import {
ref,
onMounted
} from 'vue';
import {
RouterLink,
useRouter,
useRoute,
} from 'vue-router';
import {
GetPersonReportDetail
} from "@/api/api.js";
import {
showToast,
showDialog
} from 'vant';
const route = useRoute()
const router = useRouter();
let type=route.query.type
let loading = ref(false)
let list = [
{
let title=ref("");
let list = [{
name: "细菌性痢疾",
value: "无"
}, {
@ -97,15 +106,27 @@ let reportinfo=ref('')
const getDetail = () => {
let sfz = sessionStorage.getItem('sfz');
loading.value = true
GetPersonReportDetail({sfz:sfz}).then(res => {
GetPersonReportDetail({
sfz: sfz,
type:type
}).then(res => {
loading.value = false
if (res.status) {
reportinfo.value = res.data.info
if(reportinfo.value.type==1){
title.value="北京市从业人员体检结果"
}
if(reportinfo.value.type==2){
title.value="老年人体检报告查询"
}
for (var i = 0; i < reportinfo.value.pdfs; i++) {
let ii = 0;
ii = i + 1;
console.log(999)
columns.value.push({text:'报告'+ii,value:i});
columns.value.push({
text: '报告' + ii,
value: i
});
}
console.log(columns.value);
@ -158,7 +179,9 @@ const gotoHealthCertificate=()=>{
}
let showPicker = ref(false);
let columns = ref([])
const selectPDF=({ selectedOptions })=>{
const selectPDF = ({
selectedOptions
}) => {
showPicker.value = false;
console.log(selectedOptions[0].value);
@ -198,6 +221,7 @@ onMounted(()=>{
}
.top .button {
margin-top: 10px;
}
@ -232,6 +256,7 @@ onMounted(()=>{
}
.bottom .list {
margin-top: 10px;
padding-bottom: 10px;

Loading…
Cancel
Save