增加老年人65手机端预约

main
yanzai 1 year ago
parent a2b9199ee5
commit d6b0a4fa3c

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

@ -4,6 +4,7 @@ namespace App\Http\Controllers\API\mH5;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Lib\HSM; use App\Lib\HSM;
use App\Services\Admin\YeWu\AppointmentService;
use App\Services\mH5\PersonService; use App\Services\mH5\PersonService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB; 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; return $result;
} }
function isOver65($idCard) { public function isOver65($idCard) {
// 从身份证号中提取出生日期 // 从身份证号中提取出生日期
if(strlen($idCard)<>18) return false;
$birthYear = substr($idCard, 6, 4); $birthYear = substr($idCard, 6, 4);
$birthMonth = substr($idCard, 10, 2); $birthMonth = substr($idCard, 10, 2);
$birthDay = substr($idCard, 12, 2); $birthDay = substr($idCard, 12, 2);

@ -1,5 +1,6 @@
<?php <?php
namespace App\Services\mH5; namespace App\Services\mH5;
use App\Services\Admin\YeWu\AppointmentService;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use App\Services\mH5\PersonService; use App\Services\mH5\PersonService;
class OrganizationService class OrganizationService
@ -18,6 +19,9 @@ class OrganizationService
if($arr['yuyue_type']=='jiankangzheng_mf'){ if($arr['yuyue_type']=='jiankangzheng_mf'){
$list= $list->where(['enable_yuyue'=>1,'enable_jiankangzheng_mf'=>1]); $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(); $list= $list->get();
if(count($list)>0){ if(count($list)>0){
$result['status']=true; $result['status']=true;
@ -112,11 +116,9 @@ class OrganizationService
return \Yz::echoError1('身份证解密失败'); return \Yz::echoError1('身份证解密失败');
} }
$sfz_mingwen=$sfz_HSM['data']; $sfz_mingwen=$sfz_HSM['data'];
//如果都通过则继续 $data=[];
DB::beginTransaction(); if($type==1){
try { $data= [
$idd=DB::table('appointment_record')->insertGetId(
[
'type'=>$type, 'type'=>$type,
'calendar_id' => $info['calendar_id'], 'calendar_id' => $info['calendar_id'],
'name' => $cha_info[0]->name, 'name' => $cha_info[0]->name,
@ -135,8 +137,36 @@ class OrganizationService
'org_code'=>$jgINfo->sn, 'org_code'=>$jgINfo->sn,
'status'=>1, 'status'=>1,
'hmac'=>$Hmac['data'], '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($data);
if($type==1){
$file=array(); $file=array();
foreach ($info['upfileList'] as $key=> $fvalue) { foreach ($info['upfileList'] as $key=> $fvalue) {
foreach ($fvalue as $key2=> $fvalue2) { foreach ($fvalue as $key2=> $fvalue2) {
@ -149,7 +179,9 @@ class OrganizationService
} }
$i_img=DB::table('appointment_img')->insert($file); $i_img=DB::table('appointment_img')->insert($file);
if($i_img){ }
if($idd){
DB::commit(); DB::commit();
return \Yz::Return(true,'预约完成'); return \Yz::Return(true,'预约完成');
}else{ }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::group(['middleware'=>['checktoken','log'],'prefix'=>'v1/mH5'],function () { //手机H5路由分组
Route::post('Register','App\Http\Controllers\API\mH5\PersonController@Register'); //手机H5端用户注册 Route::post('Register','App\Http\Controllers\API\mH5\PersonController@Register'); //手机H5端用户注册
Route::post('GetPersonRecode','App\Http\Controllers\API\mH5\PersonController@GetPersonRecode'); //查询用户本年度体检记录 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('GetOrgEnableList','App\Http\Controllers\API\mH5\OrganizationController@GetEnableList'); //获取可用体检机构
Route::post('GetEnableCalendar','App\Http\Controllers\API\mH5\OrganizationController@GetEnableCalendar'); //获取可用体检机构日历 Route::post('GetEnableCalendar','App\Http\Controllers\API\mH5\OrganizationController@GetEnableCalendar'); //获取可用体检机构日历
Route::post('StartYuYue','App\Http\Controllers\API\mH5\OrganizationController@StartYuYue'); //开始预约 Route::post('StartYuYue','App\Http\Controllers\API\mH5\OrganizationController@StartYuYue'); //开始预约

@ -71,3 +71,7 @@ export const GetConfigInArray = (data) => {
export const H5GetAppointmentRecord = (data) => { export const H5GetAppointmentRecord = (data) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/mH5/H5GetAppointmentRecord',data: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> <template>
<div class="LoginMain"> <div class="LoginMain">
<LoadingD :status="dloading"></LoadingD> <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="biaoti"><van-icon name="todo-list-o" size="22" />体检预约</div>
<div class="button_group"> <div class="button_group">
<div class="button_new" @click="gotoYuyue" v-if="JianKangZhengEnable==1"> <div class="button_new" @click="gotoYuyue" v-if="JianKangZhengEnable==1">
<div>健康证明</div> <div>健康证明</div>
<div style="font-size: 12px;color: #277d7b;">预约健康证体检</div> <div style="font-size: 12px;color: #277d7b;">预约健康证体检</div>
</div> </div>
<div class="button_new" v-if="LaoNianRenEnable==1"> <div class="button_new" v-if="LaoNianRenEnable==1" @click="gotoLaoNianRen()">
<div> 65岁以上老年人</div> <div> 65岁以上老年人</div>
<div style="font-size: 12px;color: #277d7b;">老年人体检预约</div> <div style="font-size: 12px;color: #277d7b;">老年人体检预约</div>
</div> </div>
@ -50,7 +54,8 @@
AppLogin, AppLogin,
AppGetUserInfo, AppGetUserInfo,
mH5Register, mH5Register,
GetConfigInArray GetConfigInArray,
isAgeOver65
} from "@/api/api.js"; } from "@/api/api.js";
import { import {
ref, ref,
@ -67,6 +72,7 @@
const route = useRoute() const route = useRoute()
const router = useRouter(); const router = useRouter();
let openid = '' let openid = ''
let username=ref('');
const login = () => { const login = () => {
if (!sessionStorage.getItem('sfz')) { if (!sessionStorage.getItem('sfz')) {
showToast('查询用户信息出错!'); showToast('查询用户信息出错!');
@ -111,11 +117,34 @@
return false; return false;
} }
if (sessionStorage.getItem('sfz')) { if (sessionStorage.getItem('sfz')) {
sessionStorage.setItem('yuyueType','jiankangzheng_mf')
router.push('/selectOrganization') router.push('/selectOrganization')
} else { } else {
showToast('查询用户信息出错!'); 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) => { const gotoReport = (type) => {
let p = '?type=' + type let p = '?type=' + type
if (sessionStorage.getItem('sfz')) { if (sessionStorage.getItem('sfz')) {
@ -139,6 +168,7 @@
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);
username.value=info[0].xm
login() login()
} else { } else {
showToast('查询用户信息出错!'); showToast('查询用户信息出错!');
@ -238,11 +268,12 @@
}) })
// app // app
const tiaoGuoAppYanzheng = () => { const tiaoGuoAppYanzheng = () => {
sessionStorage.setItem('sfz', "130302199910011112"); sessionStorage.setItem('sfz', "130302194510011112");
//sessionStorage.setItem('sfz', "110224195909090061"); //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);
username.value= '测试'
login() login()
} }
</script> </script>
@ -251,7 +282,7 @@
.LoginMain { .LoginMain {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: ;
flex-direction: column; flex-direction: column;
height: 100vh; height: 100vh;
/* background-image: url('../assets/image/login.jpg'); */ /* background-image: url('../assets/image/login.jpg'); */

@ -1,5 +1,9 @@
<template> <template>
<div class="SelectDate1"> <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-steps active="1" active-icon="checked" active-color="#33cdc9">
<van-step>类型选择</van-step> <van-step>类型选择</van-step>
<van-step>选择日期</van-step> <van-step>选择日期</van-step>
@ -146,7 +150,11 @@
} }
}) })
} }
let username=ref('');
let orgname=ref('');
onMounted(() => { onMounted(() => {
username.value=sessionStorage.getItem('name')
orgname.value=pinia.yuyue_info.org_name
GetEnableCalendar({ GetEnableCalendar({
org_id: pinia.yuyue_info.org_id org_id: pinia.yuyue_info.org_id
}).then(res => { }).then(res => {

@ -1,5 +1,9 @@
<template> <template>
<div class="DocumentSubmit"> <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-steps active="0" active-icon="checked" active-color="#33cdc9">
<van-step>类型选择</van-step> <van-step>类型选择</van-step>
<van-step>选择日期</van-step> <van-step>选择日期</van-step>
@ -54,7 +58,8 @@
const pinia = usePiniaStore() const pinia = usePiniaStore()
const router = useRouter(); const router = useRouter();
console.log(pinia.yuyue_info) console.log(pinia.yuyue_info)
let username=ref('');
let orgname=ref('');
let type = ref('') let type = ref('')
let DocInfo = ref([]) let DocInfo = ref([])
let BaseUrl = import.meta.env.VITE_APP_FILE_URL let BaseUrl = import.meta.env.VITE_APP_FILE_URL
@ -85,6 +90,8 @@
router.push('/uploadFiles') router.push('/uploadFiles')
} }
onMounted(() => { onMounted(() => {
username.value=sessionStorage.getItem('name')
orgname.value=pinia.yuyue_info.org_name
loading.value = true loading.value = true
GetIndustryList({ GetIndustryList({
institution_id:info.org_id institution_id:info.org_id

@ -1,9 +1,18 @@
<template> <template>
<div class="SelectOrganization"> <div class="SelectOrganization">
<LoadingD :status="loading"></LoadingD> <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="title">请选择预约体检机构</div>
<div style="display: flex;justify-content: space-between;">
<div class="title2">请就近选择体检机构</div> <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"> <van-radio-group v-model="organization">
<div v-for=" item in orgList" class="item" :key="item.id" :class="organization==item.id?'active':''" <div v-for=" item in orgList" class="item" :key="item.id" :class="organization==item.id?'active':''"
@click="organization=item.id"> @click="organization=item.id">
@ -15,8 +24,11 @@
</div> </div>
</van-radio-group> </van-radio-group>
<van-button v-if="organization" type="primary" class="button" round @click="to(url)"></van-button> <van-button v-if="organization" type="primary" class="button" round @click="to(url)"></van-button>
</div> </div>
<van-empty v-else description="暂无信息" /> <van-empty v-else description="暂无信息" />
</div>
</div> </div>
</template> </template>
@ -24,7 +36,8 @@
<script setup> <script setup>
import { import {
ref, ref,
onMounted onMounted,
watch
} from 'vue'; } from 'vue';
import { import {
useRouter useRouter
@ -43,9 +56,11 @@
const pinia = usePiniaStore() const pinia = usePiniaStore()
//import Loading from '@/components/Loading.vue' //import Loading from '@/components/Loading.vue'
const router = useRouter(); const router = useRouter();
let username = ref('');
let loading = ref(false) let loading = ref(false)
let organization = ref('') let organization = ref('')
let orgList = ref([]) let orgList = ref([])
let searchInfo = ref('');
const CheckRecord = () => { // const CheckRecord = () => { //
loading.value = true loading.value = true
GetPersonRecode().then(res => { GetPersonRecode().then(res => {
@ -71,12 +86,16 @@
} }
}) })
} }
let allList = ref([]);
const getList = () => { const getList = () => {
loading.value = true loading.value = true
GetOrgEnableList({yuyue_type:'jiankangzheng_mf'}).then(res => { GetOrgEnableList({
yuyue_type: sessionStorage.getItem('yuyueType')
}).then(res => {
loading.value = false loading.value = false
if (res.status) { if (res.status) {
orgList.value = res.list orgList.value = res.list
allList.value = res.list
} else { } else {
showToast(res.msg); showToast(res.msg);
} }
@ -86,11 +105,35 @@
const to = (url) => { const to = (url) => {
let info = pinia.yuyue_info let info = pinia.yuyue_info
info.org_id = organization.value 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) pinia.ChangeYuYueInfo(info)
if(sessionStorage.getItem('yuyueType')=='jiankangzheng_mf'){
router.push('/documentSubmit') 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(() => { onMounted(() => {
CheckRecord() CheckRecord()
username.value = sessionStorage.getItem('name')
}) })
</script> </script>
@ -159,4 +202,10 @@
margin-top: 50px; margin-top: 50px;
} }
.orginput {
border: 1px solid #90d4ec;
height: 30px;
border-radius: 15px;
padding-left: 18px;
}
</style> </style>

@ -1,6 +1,10 @@
<template> <template>
<div class="uploadfiles"> <div class="uploadfiles">
<LoadingD :status="loading"></LoadingD> <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-steps active="0" active-icon="checked" active-color="#33cdc9">
<van-step>类型选择(上传)</van-step> <van-step>类型选择(上传)</van-step>
<van-step>选择日期</van-step> <van-step>选择日期</van-step>
@ -156,7 +160,12 @@
} }
let loading = ref(false) let loading = ref(false)
let needinfo = ref([]) // let needinfo = ref([]) //
let username=ref('');
let orgname=ref('');
onMounted(() => { onMounted(() => {
username.value=sessionStorage.getItem('name')
orgname.value=pinia.yuyue_info.org_name
zhuce() zhuce()
if (pinia.yuyue_info.doc_id) { if (pinia.yuyue_info.doc_id) {
needinfo.value = pinia.hangyeInfo[pinia.yuyue_info.doc_id - 1] needinfo.value = pinia.hangyeInfo[pinia.yuyue_info.doc_id - 1]

Loading…
Cancel
Save