增加老年人65手机端预约

main
yanzai 1 year ago
parent a2b9199ee5
commit d6b0a4fa3c

@ -33,7 +33,14 @@ class OrganizationController extends Controller
}
$s=app()->make(OrganizationService::class);
$type=1;//1 健康证体检 2老年人体检
if($subinfo['yuyue_type']=='laonianren_mf'){
$type=2;//1 健康证体检 2老年人体检
}
if($subinfo['yuyue_type']=='jiankangzheng_mf'){
$type=1;//1 健康证体检 2老年人体检
}
if(!isset($type)) return \Yz::echoError1("体检类型不能为空");
return $s->StartYuYue(['openid'=>$openid,'group'=>$group,'info'=>$subinfo],$type);
}else{
return \Yz::echoError1("参数不完整");

@ -4,6 +4,7 @@ namespace App\Http\Controllers\API\mH5;
use App\Http\Controllers\Controller;
use App\Lib\HSM;
use App\Services\Admin\YeWu\AppointmentService;
use App\Services\mH5\PersonService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
@ -205,5 +206,11 @@ class PersonController extends Controller
}
public function isAgeOver65()
{
$sfz =request('sfz');
if(!isset($sfz)) return \Yz::echoError1("身份证不能为空");
$s= new AppointmentService();
return \Yz::Return(true,"查询完成",$s->isOver65($sfz));
}
}

@ -177,8 +177,9 @@ class AppointmentService
return $result;
}
function isOver65($idCard) {
public function isOver65($idCard) {
// 从身份证号中提取出生日期
if(strlen($idCard)<>18) return false;
$birthYear = substr($idCard, 6, 4);
$birthMonth = substr($idCard, 10, 2);
$birthDay = substr($idCard, 12, 2);

@ -1,5 +1,6 @@
<?php
namespace App\Services\mH5;
use App\Services\Admin\YeWu\AppointmentService;
use Illuminate\Support\Facades\DB;
use App\Services\mH5\PersonService;
class OrganizationService
@ -18,6 +19,9 @@ class OrganizationService
if($arr['yuyue_type']=='jiankangzheng_mf'){
$list= $list->where(['enable_yuyue'=>1,'enable_jiankangzheng_mf'=>1]);
}
if($arr['yuyue_type']=='laonianren_mf'){
$list= $list->where(['enable_yuyue'=>1,'enable_laonianren_mf'=>1]);
}
$list= $list->get();
if(count($list)>0){
$result['status']=true;
@ -112,44 +116,72 @@ class OrganizationService
return \Yz::echoError1('身份证解密失败');
}
$sfz_mingwen=$sfz_HSM['data'];
$data=[];
if($type==1){
$data= [
'type'=>$type,
'calendar_id' => $info['calendar_id'],
'name' => $cha_info[0]->name,
'id_card_num' => $cha_info[0]->id_card_num,
'sex'=>$cha_info[0]->sex,
'age'=>\App\Lib\Tools::calculateAgeFromID($sfz_mingwen,$nowtime),
'birthday'=>\App\Lib\Tools::getBirthdayFromIDCard($sfz_mingwen),
'person_id'=>$cha_info[0]->id,
'openid'=>$openid,
'date'=>$q_date[0]->date,
'time'=>$q_date[0]->time,
'fee_type'=>0,
'doc_type_id'=>$info['doc_id'],
'doc_type_name'=>$info['doc_name'],
'org_id'=>$info['org_id'],
'org_code'=>$jgINfo->sn,
'status'=>1,
'hmac'=>$Hmac['data'],
];
}
if($type==2){ //如果是65老年人免费体检
//判断年龄
$s=new AppointmentService();
if(!$s->isOver65($sfz_mingwen)) return \Yz::echoError1("用户年龄不满足条件,不可预约");
$data= [
'type'=>$type,
'calendar_id' => $info['calendar_id'],
'name' => $cha_info[0]->name,
'id_card_num' => $cha_info[0]->id_card_num,
'sex'=>$cha_info[0]->sex,
'age'=>\App\Lib\Tools::calculateAgeFromID($sfz_mingwen,$nowtime),
'birthday'=>\App\Lib\Tools::getBirthdayFromIDCard($sfz_mingwen),
'person_id'=>$cha_info[0]->id,
'openid'=>$openid,
'date'=>$q_date[0]->date,
'time'=>$q_date[0]->time,
'fee_type'=>0,
'org_id'=>$info['org_id'],
'org_code'=>$jgINfo->sn,
'status'=>1,
'hmac'=>$Hmac['data'],
];
}
//如果都通过则继续
DB::beginTransaction();
try {
$idd=DB::table('appointment_record')->insertGetId(
[
'type'=>$type,
'calendar_id' => $info['calendar_id'],
'name' => $cha_info[0]->name,
'id_card_num' => $cha_info[0]->id_card_num,
'sex'=>$cha_info[0]->sex,
'age'=>\App\Lib\Tools::calculateAgeFromID($sfz_mingwen,$nowtime),
'birthday'=>\App\Lib\Tools::getBirthdayFromIDCard($sfz_mingwen),
'person_id'=>$cha_info[0]->id,
'openid'=>$openid,
'date'=>$q_date[0]->date,
'time'=>$q_date[0]->time,
'fee_type'=>0,
'doc_type_id'=>$info['doc_id'],
'doc_type_name'=>$info['doc_name'],
'org_id'=>$info['org_id'],
'org_code'=>$jgINfo->sn,
'status'=>1,
'hmac'=>$Hmac['data'],
]
);
$file=array();
foreach ($info['upfileList'] as $key=> $fvalue) {
foreach ($fvalue as $key2=> $fvalue2) {
$file[]=[
'type' =>$key,
'appointment_record_id' =>$idd,
'imgurl' =>$fvalue2,
];
$idd=DB::table('appointment_record')->insertGetId($data);
if($type==1){
$file=array();
foreach ($info['upfileList'] as $key=> $fvalue) {
foreach ($fvalue as $key2=> $fvalue2) {
$file[]=[
'type' =>$key,
'appointment_record_id' =>$idd,
'imgurl' =>$fvalue2,
];
}
}
$i_img=DB::table('appointment_img')->insert($file);
}
$i_img=DB::table('appointment_img')->insert($file);
if($i_img){
if($idd){
DB::commit();
return \Yz::Return(true,'预约完成');
}else{

@ -70,6 +70,7 @@ Route::post('GetConfigInArray','App\Http\Controllers\API\Admin\YeWu\ConfigsContr
Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1/mH5'],function () { //手机H5路由分组
Route::post('Register','App\Http\Controllers\API\mH5\PersonController@Register'); //手机H5端用户注册
Route::post('GetPersonRecode','App\Http\Controllers\API\mH5\PersonController@GetPersonRecode'); //查询用户本年度体检记录
Route::post('isAgeOver65','App\Http\Controllers\API\mH5\PersonController@isAgeOver65'); //判断是否过65
Route::post('GetOrgEnableList','App\Http\Controllers\API\mH5\OrganizationController@GetEnableList'); //获取可用体检机构
Route::post('GetEnableCalendar','App\Http\Controllers\API\mH5\OrganizationController@GetEnableCalendar'); //获取可用体检机构日历
Route::post('StartYuYue','App\Http\Controllers\API\mH5\OrganizationController@StartYuYue'); //开始预约

@ -70,4 +70,8 @@ export const GetConfigInArray = (data) => {
//获取自己的预约记录
export const H5GetAppointmentRecord = (data) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/mH5/H5GetAppointmentRecord',data:data})
}
//判断是否过65
export const isAgeOver65 = (data) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/mH5/isAgeOver65',data:data})
}

@ -1,14 +1,18 @@
<template>
<div class="LoginMain">
<LoadingD :status="dloading"></LoadingD>
<div class="top" style="margin-top: -90px;">
<div style="display: flex;justify-content: space-between;width: 100%;padding: 8px;margin-top: 10px;">
<div></div>
<div v-if="username" style="font-size: 16px;font-weight: 700; color: #277d7b;"><van-icon name="manager" size="18" style="margin-right: 4px;" />{{username}}</div>
</div>
<div class="top">
<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 class="button_new" v-if="LaoNianRenEnable==1" @click="gotoLaoNianRen()">
<div> 65岁以上老年人</div>
<div style="font-size: 12px;color: #277d7b;">老年人体检预约</div>
</div>
@ -50,7 +54,8 @@
AppLogin,
AppGetUserInfo,
mH5Register,
GetConfigInArray
GetConfigInArray,
isAgeOver65
} from "@/api/api.js";
import {
ref,
@ -67,6 +72,7 @@
const route = useRoute()
const router = useRouter();
let openid = ''
let username=ref('');
const login = () => {
if (!sessionStorage.getItem('sfz')) {
showToast('查询用户信息出错!');
@ -111,11 +117,34 @@
return false;
}
if (sessionStorage.getItem('sfz')) {
sessionStorage.setItem('yuyueType','jiankangzheng_mf')
router.push('/selectOrganization')
} else {
showToast('查询用户信息出错!');
}
}
const gotoLaoNianRen=()=>{
if (LaoNianRenEnable.value != 1) {
showToast('暂未65岁老年人预约');
return false;
}
if(sessionStorage.getItem('sfz')){
isAgeOver65({
sfz: sessionStorage.getItem('sfz')
}).then(res => {
if(res.status){
if(!res.data){
showToast('当前用户年龄不符合要求');
}else{
sessionStorage.setItem('yuyueType','laonianren_mf')
router.push('/selectOrganization')
}
}else{
showToast('年龄校验失败');
}
})
}
}
const gotoReport = (type) => {
let p = '?type=' + type
if (sessionStorage.getItem('sfz')) {
@ -139,6 +168,7 @@
sessionStorage.setItem('name', info[0].xm);
sessionStorage.setItem('tel', info[0].sj);
sessionStorage.setItem('sex', info[0].xb);
username.value=info[0].xm
login()
} else {
showToast('查询用户信息出错!');
@ -238,11 +268,12 @@
})
// app
const tiaoGuoAppYanzheng = () => {
sessionStorage.setItem('sfz', "130302199910011112");
sessionStorage.setItem('sfz', "130302194510011112");
//sessionStorage.setItem('sfz', "110224195909090061");
sessionStorage.setItem('name', '测试');
sessionStorage.setItem('tel', "13333356789");
sessionStorage.setItem('sex', 1);
username.value= '测试'
login()
}
</script>
@ -251,7 +282,7 @@
.LoginMain {
display: flex;
align-items: center;
justify-content: center;
justify-content: ;
flex-direction: column;
height: 100vh;
/* background-image: url('../assets/image/login.jpg'); */

@ -1,5 +1,9 @@
<template>
<div class="SelectDate1">
<div style="display: flex;justify-content: space-between;width: 100%;padding: 8px;">
<div v-if="orgname" style="font-size: 14px; color: #277d7b;"><van-icon name="label" size="14" />{{orgname}}</div>
<div v-if="username" style="font-size: 16px;font-weight: 700; color: #277d7b;"><van-icon name="manager" size="18" style="margin-right: 4px;" />{{username}}</div>
</div>
<van-steps active="1" active-icon="checked" active-color="#33cdc9">
<van-step>类型选择</van-step>
<van-step>选择日期</van-step>
@ -146,7 +150,11 @@
}
})
}
let username=ref('');
let orgname=ref('');
onMounted(() => {
username.value=sessionStorage.getItem('name')
orgname.value=pinia.yuyue_info.org_name
GetEnableCalendar({
org_id: pinia.yuyue_info.org_id
}).then(res => {

@ -1,5 +1,9 @@
<template>
<div class="DocumentSubmit">
<div style="display: flex;justify-content: space-between;width: 100%;padding: 8px;">
<div v-if="orgname" style="font-size: 14px; color: #277d7b;"><van-icon name="label" size="14" />{{orgname}}</div>
<div v-if="username" style="font-size: 16px;font-weight: 700; color: #277d7b;"><van-icon name="manager" size="18" style="margin-right: 4px;" />{{username}}</div>
</div>
<van-steps active="0" active-icon="checked" active-color="#33cdc9">
<van-step>类型选择</van-step>
<van-step>选择日期</van-step>
@ -54,14 +58,15 @@
const pinia = usePiniaStore()
const router = useRouter();
console.log(pinia.yuyue_info)
let username=ref('');
let orgname=ref('');
let type = ref('')
let DocInfo = ref([])
let BaseUrl = import.meta.env.VITE_APP_FILE_URL
let info = pinia.yuyue_info
const check = (id, label,index) => {
info.doc_id = id
info.doc_name = label
pinia.ChangeYuYueInfo(info)
@ -85,6 +90,8 @@
router.push('/uploadFiles')
}
onMounted(() => {
username.value=sessionStorage.getItem('name')
orgname.value=pinia.yuyue_info.org_name
loading.value = true
GetIndustryList({
institution_id:info.org_id

@ -1,22 +1,34 @@
<template>
<div class="SelectOrganization">
<LoadingD :status="loading"></LoadingD>
<div v-if="orgList.length>0">
<div style="display: flex;justify-content: space-between;width: 100%;padding: 8px;">
<div></div>
<div v-if="username" style="font-size: 16px;font-weight: 700; color: #277d7b;"><van-icon name="manager"
size="18" style="margin-right: 4px;" />{{username}}</div>
</div>
<div>
<div class="title">请选择预约体检机构</div>
<div class="title2">请就近选择体检机构</div>
<van-radio-group v-model="organization" >
<div v-for=" item in orgList" class="item" :key="item.id" :class="organization==item.id?'active':''"
@click="organization=item.id">
<div class="logo"><img src="../assets/image/map.png" /></div>
<div class="name">
{{item.org_name}}
<van-radio checked-color="#33cdc9" :name="item.id" style="margin-left: 10px;"></van-radio>
<div style="display: flex;justify-content: space-between;">
<div class="title2">请就近选择体检机构</div>
<div style="text-align: right;"><input type="text" v-model="searchInfo" class="orginput"></div>
</div>
<div v-if="orgList.length>0">
<van-radio-group v-model="organization">
<div v-for=" item in orgList" class="item" :key="item.id" :class="organization==item.id?'active':''"
@click="organization=item.id">
<div class="logo"><img src="../assets/image/map.png" /></div>
<div class="name">
{{item.org_name}}
<van-radio checked-color="#33cdc9" :name="item.id" style="margin-left: 10px;"></van-radio>
</div>
</div>
</div>
</van-radio-group>
<van-button v-if="organization" type="primary" class="button" round @click="to(url)"></van-button>
</van-radio-group>
<van-button v-if="organization" type="primary" class="button" round @click="to(url)"></van-button>
</div>
<van-empty v-else description="暂无信息" />
</div>
<van-empty v-else description="暂无信息" />
</div>
</template>
@ -24,7 +36,8 @@
<script setup>
import {
ref,
onMounted
onMounted,
watch
} from 'vue';
import {
useRouter
@ -43,9 +56,11 @@
const pinia = usePiniaStore()
//import Loading from '@/components/Loading.vue'
const router = useRouter();
let username = ref('');
let loading = ref(false)
let organization = ref('')
let orgList = ref([])
let searchInfo = ref('');
const CheckRecord = () => { //
loading.value = true
GetPersonRecode().then(res => {
@ -71,12 +86,16 @@
}
})
}
let allList = ref([]);
const getList = () => {
loading.value = true
GetOrgEnableList({yuyue_type:'jiankangzheng_mf'}).then(res => {
GetOrgEnableList({
yuyue_type: sessionStorage.getItem('yuyueType')
}).then(res => {
loading.value = false
if (res.status) {
orgList.value = res.list
allList.value = res.list
} else {
showToast(res.msg);
}
@ -86,11 +105,35 @@
const to = (url) => {
let info = pinia.yuyue_info
info.org_id = organization.value
info.yuyue_type=sessionStorage.getItem("yuyueType")
orgList.value.forEach((v, i) => {
if (v.id == organization.value) {
info.org_name = v.org_name
}
})
pinia.ChangeYuYueInfo(info)
router.push('/documentSubmit')
if(sessionStorage.getItem('yuyueType')=='jiankangzheng_mf'){
router.push('/documentSubmit')
}else{
router.push('/selectDate')
}
}
watch(searchInfo, (newValue, oldValue) => {
orgList.value = [];
if (newValue == '' || newValue == null) {
orgList.value = allList.value
return false;
}
allList.value.forEach((v, i) => {
if ((v.jianpin != null && v.jianpin.includes(newValue)) || v.org_name.includes(newValue)) {
orgList.value.push(v)
}
})
});
onMounted(() => {
CheckRecord()
username.value = sessionStorage.getItem('name')
})
</script>
@ -154,9 +197,15 @@
border: 0px;
/* position: fixed; */
bottom: 20px;
margin-top: 50px;
}
.orginput {
border: 1px solid #90d4ec;
height: 30px;
border-radius: 15px;
padding-left: 18px;
}
</style>

@ -1,6 +1,10 @@
<template>
<div class="uploadfiles">
<LoadingD :status="loading"></LoadingD>
<div style="display: flex;justify-content: space-between;width: 100%;padding: 8px;">
<div v-if="orgname" style="font-size: 14px; color: #277d7b;"><van-icon name="label" size="14" />{{orgname}}</div>
<div v-if="username" style="font-size: 16px;font-weight: 700; color: #277d7b;"><van-icon name="manager" size="18" style="margin-right: 4px;" />{{username}}</div>
</div>
<van-steps active="0" active-icon="checked" active-color="#33cdc9">
<van-step>类型选择(上传)</van-step>
<van-step>选择日期</van-step>
@ -156,7 +160,12 @@
}
let loading = ref(false)
let needinfo = ref([]) //
let username=ref('');
let orgname=ref('');
onMounted(() => {
username.value=sessionStorage.getItem('name')
orgname.value=pinia.yuyue_info.org_name
zhuce()
if (pinia.yuyue_info.doc_id) {
needinfo.value = pinia.hangyeInfo[pinia.yuyue_info.doc_id - 1]

Loading…
Cancel
Save