diff --git a/Laravel/app/Http/Controllers/API/ApiMapController.php b/Laravel/app/Http/Controllers/API/ApiMapController.php index e08b6d4..0b48cb0 100644 --- a/Laravel/app/Http/Controllers/API/ApiMapController.php +++ b/Laravel/app/Http/Controllers/API/ApiMapController.php @@ -88,6 +88,7 @@ class ApiMapController extends Controller 'CheckEnableNmrTime' => $base_url . '/api/H5/CheckEnableNmrTime', // 查询是否有可用核磁号源 'BaseInfo' => $base_url . '/api/H5/BaseInfo', // 基础信息 'CreateNewOrder' => $base_url . '/api/H5/CreateNewOrder', // 创建订单(新) + 'StartYuYue' => $base_url . '/api/H5/StartYuYue', // 创建订单(新) ]; } diff --git a/Laravel/app/Http/Controllers/API/H5/OrderNewController.php b/Laravel/app/Http/Controllers/API/H5/OrderNewController.php index ecf41b0..aa27c51 100644 --- a/Laravel/app/Http/Controllers/API/H5/OrderNewController.php +++ b/Laravel/app/Http/Controllers/API/H5/OrderNewController.php @@ -385,6 +385,36 @@ class OrderNewController extends Controller } } + //预约,用于用户先支付,后期再预约 + public function StartYuYue(){ + $plan_id = request('plan_id'); + $orderid = request('orderid'); + $doctor = request('doctor'); + $order = DB::table('orders')->where(['id' => $orderid])->first(); + if(!$order) return \Yz::echoError1("订单不存在"); + if($order->status!== 2) return \Yz::echoError1("订单不是已支付状态不能预约"); + if (!isset($plan_id)) return \Yz::echoError1('号源id不能为空'); + + //检查号源是否可用 + $plan = new PlanController(); + $plan_check = $plan->CheckPlan($plan_id, $order->hospital_id, $order->type, $order->sex, $order->price, $order->checkup_type_id); + if ($plan_check['status'] === false) return \Yz::echoError1($plan_check['msg']); + $plan = $plan_check['plan']; + $data=[ + 'appointment_date' => $plan->date, + 'appointment_time' => $plan->time, + 'plan_id' => $plan->id, + 'plan_number' => $plan->plan_number, + 'doctor' => $doctor, + 'updated_at' => date('Y-m-d H:i:s') + ]; + $u = DB::table('orders')->where(['id' => $orderid])->update($data); + if(!$u) return \Yz::echoError1("预约失败"); + $Finish = new OrderController();//预约体检 + $yuyue= $Finish->Finish($order->order_number); + return \Yz::Return($yuyue['status'], $yuyue['msg'], ['id' => $order->id]); + } + public function item_check($hospital, $data) { $peis = new PEISApiController(); diff --git a/Laravel/routes/web.php b/Laravel/routes/web.php index 148cfee..b69695a 100644 --- a/Laravel/routes/web.php +++ b/Laravel/routes/web.php @@ -79,6 +79,7 @@ Route::group(['middleware' => ['log'],'prefix' => 'api/H5'], function () { Route::post('/CheckEnableNmrTime', 'App\Http\Controllers\API\H5\NMRController@CheckEnableNmrTime');//查询是否有可用核磁号源 Route::post('/BaseInfo', 'App\Http\Controllers\API\H5\HomeController@BaseInfo');//基础信息 Route::post('/CreateNewOrder', 'App\Http\Controllers\API\H5\OrderNewController@CreateNewOrder');//创建新订单 + Route::post('/StartYuYue', 'App\Http\Controllers\API\H5\OrderNewController@StartYuYue');//预约 diff --git a/h5/pages/buy/done/done.vue b/h5/pages/buy/done/done.vue index 5d77f26..015ec57 100644 --- a/h5/pages/buy/done/done.vue +++ b/h5/pages/buy/done/done.vue @@ -82,7 +82,7 @@ } const toPlan=()=>{ uni.reLaunch({ - url: '/pages/main/yytjsj/yytjsj_new' + url: '/pages/main/yytjsj/yytjsj_new?id='+$props.id }) } diff --git a/h5/pages/main/tj/choose.vue b/h5/pages/main/tj/choose.vue index 202bcbc..590b8aa 100644 --- a/h5/pages/main/tj/choose.vue +++ b/h5/pages/main/tj/choose.vue @@ -39,12 +39,14 @@ const configRef = (e) => { }; const choosePersonClick = async (info) => { + uni.showLoading(); // 查询团检ID const response = await $api("GetGroupUnit", { hospital_id: $store.save.hospital, id_number: info.id_number, phone: info.phone, }); + uni.hideLoading(); $response(response, () => { unitList.value = response.data.unit; if (response.data.unit.length > 1) { diff --git a/h5/pages/main/tj/tjxq.vue b/h5/pages/main/tj/tjxq.vue index 98f1179..51426d9 100644 --- a/h5/pages/main/tj/tjxq.vue +++ b/h5/pages/main/tj/tjxq.vue @@ -313,7 +313,7 @@ }} - + 单位名称: @@ -335,7 +335,7 @@ - + 套餐项目 {{ comboInfo?.tags[0]?.text }} @@ -564,4 +564,9 @@ border-radius: 40rpx; margin: 20rpx auto 10rpx auto; } + .groupInfo{ + border: 1px solid #ccc; + padding: 20rpx; + border-radius: 20rpx; + } \ No newline at end of file diff --git a/h5/pages/main/tjyy/tjyy.vue b/h5/pages/main/tjyy/tjyy.vue index 26d986f..27e1dc2 100644 --- a/h5/pages/main/tjyy/tjyy.vue +++ b/h5/pages/main/tjyy/tjyy.vue @@ -265,7 +265,11 @@ const getnmrList = async () => { uni.hideLoading(); }); }; - +const toPlan=async ()=>{ + uni.navigateTo({ + url: '/pages/main/yytjsj/yytjsj_new' + }); +} const comfrimyy = async () => { let plan_id = ""; let plan_nmr_id = ""; @@ -684,7 +688,12 @@ const toRouter = (url, status, index) => { > 确认支付 - + diff --git a/h5/pages/main/yytjsj/yytjsj_new.vue b/h5/pages/main/yytjsj/yytjsj_new.vue index 2b0f52a..ad8fb39 100644 --- a/h5/pages/main/yytjsj/yytjsj_new.vue +++ b/h5/pages/main/yytjsj/yytjsj_new.vue @@ -1,21 +1,22 @@ @@ -70,12 +74,15 @@ } from "@/store"; const $store = useStore(); import { - onShow,onLoad + onShow, + onLoad } from "@dcloudio/uni-app"; import WeeklyCalendar from '@/common/WeeklyCalendar.vue'; let nmr_date = ref(null); let nmr_time = ref(null); let nmr_plan_id = ref(null); //核磁号源id + let buyInfo = ref({}); // 购买信息 + let yytjInfo = ref({}); // 预约信息 let tj_date = ref(null); let tj_time = ref(null); @@ -84,16 +91,24 @@ let weekList = ref(null); let doctor_name = ref(null); + + let hospital_id = ref(0); + let person_id = ref(0) + let use_type = ref(0) + let checkup_type_id = ref(0) + let amount = ref(0) + let person_name=ref('') + let combo_name=ref('') //查询体检号源 const GetDayPlanListFunc = async () => { uni.showLoading(); let data = { - hospital: orderInfo.value.hospital_id, - person_id: orderInfo.value.person_id, + hospital: hospital_id.value, + person_id: person_id.value, date: selectedDate.value, - use_type: orderInfo.value.type, - checkup_type_id: orderInfo.value.checkup_type_id, - amount: orderInfo.value.true_price, + use_type:use_type.value, + checkup_type_id: checkup_type_id.value, + amount: amount.value, } const response = await $api("GetDayPlanList", data); uni.hideLoading(); @@ -118,9 +133,9 @@ }; let selectedTime = ref(null); let orderInfo = ref(null) - let YuYueInfo=ref({ - TjInfo:{}, - NmrInfo:{} + let YuYueInfo = ref({ + TjInfo: {}, + NmrInfo: {} }) const GetOrderInfo = async () => { uni.showLoading(); @@ -131,39 +146,47 @@ $response(response, () => { orderInfo.value = response.data.info doctor_name.value = orderInfo.value.doctor - - itemSelected.value.type = 'tj' - selectedTime.value = orderInfo.value.appointment_time - selectedDate.value = orderInfo.value.appointment_date - GetDayPlanListFunc() - - + itemSelected.value.type = 'tj' + selectedTime.value = orderInfo.value.appointment_time + selectedDate.value = orderInfo.value.appointment_date + + GetDayPlanListFunc() + + tj_date.value = response.data.today tj_time.value = orderInfo.value.appointment_time - tj_plan_id.value=orderInfo.value.plan_id + tj_plan_id.value = orderInfo.value.plan_id + + hospital_id.value=orderInfo.value.hospital_id + person_id.value=orderInfo.value.person_id + use_type.value=orderInfo.value.type + checkup_type_id.value=orderInfo.value.checkup_type_id + amount.value=orderInfo.value.true_price + person_name.value=orderInfo.value.name + combo_name.value=orderInfo.value.title }); } //weekly子组件点击了日期 let selectedDate = ref(null); const selectDateFunc = (date) => { - if(doctor_name.value){ - uni.showModal({ - title: '提示', - content: '已选择医生,切换日期将重新选择医生,是否继续', - cancelText:'取消', - confirmText:'确定', - success: function (res) { - if (res.confirm) { - DateChange(date) - } else if (res.cancel) { - - } - } - }); - }else{ - DateChange(date) + if (doctor_name.value) { + uni.showModal({ + title: '提示', + content: '已选择医生,切换日期将重新选择医生,是否继续', + cancelText: '取消', + confirmText: '确定', + success: function(res) { + if (res.confirm) { + DateChange(date) + } else if (res.cancel) { + + } + } + }); + } else { + DateChange(date) } } //weekly子组件点击了时间 @@ -181,16 +204,16 @@ } } let itemSelected = ref({ - type:null, - item:{}, - index:0 + type: null, + item: {}, + index: 0 }); - const itemClick = (type,item,index) => { + const itemClick = (type, item, index) => { //weekList.value=null if (type == 'nmr') { //selectedTime.value = nmr_time.value - //selectedDate.value = nmr_date.value + //selectedDate.value = nmr_date.value selectedTime.value = YuYueInfo.value.NmrInfo[index].time selectedDate.value = YuYueInfo.value.NmrInfo[index].date NMRGetDayPlanListFunc() @@ -201,13 +224,13 @@ GetDayPlanListFunc() } itemSelected.value.type = type - itemSelected.value.item=item - itemSelected.value.index=index + itemSelected.value.item = item + itemSelected.value.index = index } - + let DoctorMonthCalendar = ref(null) const selectDoctor = () => { - + if (tj_date.value == null) { //如果没有选定体检日期,则打开日历 DoctorMonthCalendar.value.open(); } else { @@ -228,7 +251,7 @@ let MonthList = ref([]); //月历号源数据 let currentDate = ref(null); //月历当前日期 const monthSwitch = (e) => { //月历切换月份 - let ym=e.year+""+"-"+e.month+"" + let ym = e.year + "" + "-" + e.month + "" if (itemSelected.value.type == 'nmr') { NMRGetMonthPlanListFunc(ym) } @@ -237,38 +260,38 @@ } } const MonthConfirm = (e) => { //月历确认日期 - console.log(e.fulldate) - - if(doctor_name.value){ - uni.showModal({ - title: '提示', - content: '已选择医生,切换日期将重新选择医生,是否继续', - cancelText:'取消', - confirmText:'确定', - success: function (res) { - if (res.confirm) { - DateChange(e.fulldate) - } else if (res.cancel) { - - } - } - }); - }else{ - DateChange(e.fulldate) - } - - + console.log(e.fulldate) + + if (doctor_name.value) { + uni.showModal({ + title: '提示', + content: '已选择医生,切换日期将重新选择医生,是否继续', + cancelText: '取消', + confirmText: '确定', + success: function(res) { + if (res.confirm) { + DateChange(e.fulldate) + } else if (res.cancel) { + + } + } + }); + } else { + DateChange(e.fulldate) + } + + } //获取体检每月号源数量 - const GetMonthPlanListFunc = async (ym='') => { + const GetMonthPlanListFunc = async (ym = '') => { uni.showLoading(); let data = { - hospital: orderInfo.value.hospital_id, - person_id: orderInfo.value.person_id, - month: ym?ym:tj_date.value.substring(0, 7), - use_type: orderInfo.value.type, - checkup_type_id: orderInfo.value.checkup_type_id, - amount: orderInfo.value.true_price, + hospital: hospital_id.value, + person_id: person_id.value, + month: ym ? ym : tj_date.value.substring(0, 7), + use_type:use_type.value, + checkup_type_id: checkup_type_id.value, + amount: amount.value, } const response = await $api("GetMonthPlanCount", data); uni.hideLoading(); @@ -282,15 +305,15 @@ rlArr.push(o); }); MonthList.value = rlArr; - //MonthCalendar.value.open() + //MonthCalendar.value.open() }); }; //获取核磁每月号源数量 - const NMRGetMonthPlanListFunc = async (ym='') => { + const NMRGetMonthPlanListFunc = async (ym = '') => { uni.showLoading(); let data = { hospital: orderInfo.value.hospital_id, - month: ym?ym:YuYueInfo.value.NmrInfo[itemSelected.value.index].date.substring(0, 7), + month: ym ? ym : YuYueInfo.value.NmrInfo[itemSelected.value.index].date.substring(0, 7), } const response = await $api("NMRGetMonthPlanCount", data); uni.hideLoading(); @@ -308,9 +331,10 @@ }); }; //打开月历 - const openMonthFunc = async() => { + const openMonthFunc = async () => { + if (itemSelected.value.type == 'nmr') { - await NMRGetMonthPlanListFunc() + await NMRGetMonthPlanListFunc() } if (itemSelected.value.type == 'tj') { await GetMonthPlanListFunc() @@ -318,8 +342,76 @@ MonthCalendar.value.open() } //点击提交 - const StartYuYue = async() => { - if(tj_time.value==null){ + const StartYuYue = () => { + if(buyInfo.value.group_id){ + //如果是团检则创建订单 + comfrimyy() + }else{ + //先前已经创建订单,单纯进行预约 + OnlyYuYue() + } + } + //创建订单 + const comfrimyy = async () => { + yytjInfo.value = $store.getYytjInfo(); + let plan_id = ""; + let plan_nmr_id = ""; + uni.showLoading(); + console.log(yytjInfo.value?.nmr_list); + for (let i = 0; i < yytjInfo.value?.nmr_list?.length; i++) { + if (!yytjInfo.value?.nmr_list[i].id) { + uni.$lu.toast("请完善预约时间"); + uni.hideLoading(); + return; + } + } + + + if (yytjInfo.value?.nmr_list?.length > 1) { + plan_nmr_id = yytjInfo.value?.nmr_list[0]?.id; + } + if (yytjInfo.value?.nmr_list?.length > 0) { + plan_id = yytjInfo.value?.nmr_list[yytjInfo.value?.nmr_list.length - 1]?.id; + } + + + + let obj = { + person_id: buyInfo.value.person_id, + type: buyInfo.value.group_id ? 2 : 1, + hospital: buyInfo.value.hospital, + group_id: buyInfo.value.group_id, + combo_id:buyInfo.value.group_id?"":buyInfo.value?.combo_id, + item_ids: buyInfo.value.item_ids, + plan_id: plan_id, + plan_nmr_info:yytjInfo.value?.nmr_list || null, + doctor: yytjInfo.value?.doctor_name || "", + duo_xuan_yi: $store.getDuoXuanYi(), + jifen: Math.ceil(yytjInfo.value.pointsPrice?yytjInfo.value.pointsPrice:0), + yucunkuan: yytjInfo.value.prepaidPrice?yytjInfo.value.prepaidPrice:0, + coupon_id:yytjInfo.value?.couponId || null, + wj: buyInfo.value.wj, + erxian_info:erxianInfo.value, + peiou_info:$store.getPeiOuUser()//配偶信息 + }; + console.log(obj); + const response = await $api("OrderCreate", obj); + $response(response, () => { + if (response.status) { + if (response.data.action == "pay") { + StartPay(response.data.orderid); + } else { + uni.navigateTo({ + url: "/pages/buy/done/done?id=" + response.data.orderid, + }); + } + } + uni.hideLoading(); + }); + }; + //先前已经创建订单,单纯进行预约 + const OnlyYuYue=async()=>{ + if (tj_time.value == null) { uni.$lu.toast("请选择体检日期"); return false } @@ -327,75 +419,97 @@ uni.showLoading(); let data = { orderid: orderInfo.value.id, - planid: tj_plan_id.value, - nmr_info:YuYueInfo.value.NmrInfo, + plan_id: tj_plan_id.value, + nmr_info: YuYueInfo.value.NmrInfo, doctor: doctor_name.value } console.log(data); - const response = await $api("ChangeAppointment", data); + const response = await $api("StartYuYue", data); uni.hideLoading(); $response(response, () => { - if(response.status){ - uni.showToast({ - title: '改约完成' - }); - setTimeout(()=>{ - uni.redirectTo({ - url:'/pages/main/order/order' - }) - },1000) - - } + if (response.status) { + uni.showToast({ + title: '预约完成' + }); + setTimeout(() => { + uni.redirectTo({ + url: '/pages/main/order/order' + }) + }, 1000) + + } }); } -//改变日期 -const DateChange=(date)=>{ - selectedDate.value=date - selectedTime.value = null - if (itemSelected.value.type == 'nmr') { - YuYueInfo.value.NmrInfo[itemSelected.value.index].time = null - YuYueInfo.value.NmrInfo[itemSelected.value.index].date = date - - tj_time.value = null //如果切换核磁日期则清空体检选择的日期时间 - tj_date.value = null - doctor_name.value = null //清空体检医生 - NMRGetDayPlanListFunc() - } - if (itemSelected.value.type == 'tj') { - tj_time.value = null - tj_date.value = date - doctor_name.value = null //清空体检医生 - GetDayPlanListFunc() + //改变日期 + const DateChange = (date) => { + selectedDate.value = date + selectedTime.value = null + if (itemSelected.value.type == 'nmr') { + YuYueInfo.value.NmrInfo[itemSelected.value.index].time = null + YuYueInfo.value.NmrInfo[itemSelected.value.index].date = date + + tj_time.value = null //如果切换核磁日期则清空体检选择的日期时间 + tj_date.value = null + doctor_name.value = null //清空体检医生 + NMRGetDayPlanListFunc() + } + if (itemSelected.value.type == 'tj') { + tj_time.value = null + tj_date.value = date + doctor_name.value = null //清空体检医生 + GetDayPlanListFunc() + } } -} let temp = null onMounted(() => { + itemSelected.value.type='tj' + buyInfo.value = $store.getBuyInfo(); //清空一下缓存的医生,防止出问题 temp = $store.getYytjInfo() temp.doctor_name = "" $store.setYytjInfo(temp) + selectedDate.value = GetToday() + tj_date.value=GetToday() + if (OrderId.value) { + GetOrderInfo() + } else { + checkup_type_id.value= buyInfo.value.group_id ? + $store.getGroupInfo()?.checkup_type_id : $store.getCheckupTypeId()?.id, + hospital_id.value= buyInfo.value.hospital, + person_id.value= buyInfo.value.person_id, + use_type.value= buyInfo.value.group_id ? 2 : 1, + person_name.value=buyInfo.value.group_id ?$store.getGroupInfo()?.name : '', + combo_name.value=buyInfo.value.group_id ?$store.getGroupInfo()?.group_name : '', + GetDayPlanListFunc() + } - GetOrderInfo() }); - let OrderId=ref(0) - onLoad((e)=>{ - OrderId.value=e.id + let OrderId = ref(0) + onLoad((e) => { + OrderId.value = e.id }) onShow(() => { - + temp = $store.getYytjInfo() if (temp.doctor_name != null && temp.doctor_name != '') { doctor_name.value = temp.doctor_name } }) + const GetToday = () => { + const date = new Date(); + const year = date.getFullYear(); + const month = String(date.getMonth() + 1).padStart(2, '0'); + const day = String(date.getDate()).padStart(2, '0'); + return `${year}-${month}-${day}`; + } \ No newline at end of file