改约,调整创建订单逻辑

wenjuan
yanzai 1 year ago
parent 2d701ba1bd
commit 85d79b567d

@ -27,7 +27,7 @@ class OrderController extends Controller
->orWhere(function($query) use ($persons_sfz) {
$query->WhereIn('id_number', $persons_sfz)
->where('person_id', 0);
})->get();
})->orderBy('id','desc')->get();
$WaitingPaymentTime = config('app.globals.WaitingPaymentTime');//支付等待時間
foreach ($OrderList as $key => $list) {
if ($list->status == 1) {
@ -49,6 +49,9 @@ class OrderController extends Controller
{
$id = request('id');
$order_info = DB::table('orders')->where(['id' => $id])->first();
if(!!$order_info){
$order_info->buy_info=json_decode($order_info->buy_info,true);
}
return \Yz::Return(true, '获取成功', [
'info' => $order_info
]);
@ -96,14 +99,17 @@ class OrderController extends Controller
'group' => [
'id' => '',
],
'nmr_list'=>[]
];
//如果是套餐
$TJ_Leixing_id=1;//存储用体检类型
$checkup_type_id = false; //体检类型id
if (isset($combo_id) and $combo_id <> 0) {
$combo_info = DB::table('combos')->where(['combo_id' => $combo_id, 'status' => 1])->first();
if (!$combo_info) return \Yz::echoError1("套餐不存在");
if (!isset($combo_info->checkup_type_id)) return \Yz::echoError1("套餐未关联体检类型");
$checkup_type_id = $combo_info->checkup_type_id;
$TJ_Leixing_id=$checkup_type_id;
$price += $combo_info->price;
$title = $combo_info->name;
$buy_info['combo'] = [
@ -111,6 +117,16 @@ class OrderController extends Controller
'name' => $combo_info->name,
'price' => $combo_info->price,
];
//如果有影像科则存储在nmr_list字段
$comboItem=DB::table('combo_items')->where(['combo_id' => $combo_id, 'status' => 1,'keshi_name'=>'影像科'])->get();
if(count($comboItem)>0){
foreach ($comboItem as $item){
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
}
//如果有自选项目
@ -126,6 +142,13 @@ class OrderController extends Controller
'name' => $item->name,
'price' => $item->price
];
//如果有影像科则存储在nmr_list字段
if($item->keshi_name=='影像科'){
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
$missingIds = array_diff($item_ids, $existingIds);
if (count($missingIds) > 0) return \Yz::echoError1("部分自选项目不可用Id:" . implode(', ', $missingIds));
@ -150,12 +173,28 @@ class OrderController extends Controller
'items' => $group_info['items'],
'group_id' => $group_info['group_id'],
];
$TJ_Leixing_id=$group_info['checkup_type_id'];
$title = "单位团检" . $group_info['combo_name'];
$price = $price + $group_info['sixi_zong_ji_jin_e'];
$need_pay = ($price - $group_info['tongshou_xiane']) > 0 ? $price - $group_info['tongshou_xiane'] : 0;
//团检订单金额为减去统收后的金的
$price = $need_pay;
$true_price = $need_pay;
//如果有影像科则存储在nmr_list字段
$all_items = DB::table('items')->where(['status' => 1,'keshi_name'=>'影像科'])->get();
foreach ($group_info[0]['items'] as $item) {
foreach ($all_items as $it) {
if ($it->item_id == $item['id']) {
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
}
}
//调用思信接口判断各个项目是否可用
@ -228,6 +267,7 @@ class OrderController extends Controller
'title' => $title,
'type' => $type,
'web_user_id' => $user->id,
'checkup_type_id'=>$TJ_Leixing_id,
'person_id' => $person->id,
'name' => $person->name,
'id_number' => $person->id_number,

@ -19,7 +19,7 @@ class PlanController extends Controller
$use_type=request('use_type');//使用类型 1个检 2团检
$checkup_type_id=request('checkup_type_id');//体检类型表对应id
$amount=request('amount');//总金额
if(!isset($checkup_type_id)) return \Yz::echoError1("体检类型不能为空");
$first_day_timestamp = strtotime($month . '-01');
$first_day = date('Y-m-d', $first_day_timestamp); //当月第一天
$last_day_timestamp = strtotime($month . '-01 +1 month -1 day');
@ -89,7 +89,7 @@ class PlanController extends Controller
$use_type=request('use_type');//使用类型 1个检 2团检
$checkup_type_id=(string)request('checkup_type_id');//体检类型表对应id
$amount=request('amount');//总金额
if(!isset($checkup_type_id)) return \Yz::echoError1("体检类型不能为空");
$list=DB::table('plans')
->where('date',$date)->whereIn('status',[1,2])
->whereRaw('JSON_CONTAINS(checkup_type_id, ?, "$")', [$checkup_type_id])

@ -49,14 +49,17 @@ class OrderController extends Controller
'group' => [
'id' => '',
],
'nmr_list'=>[]
];
//如果是套餐
$TJ_Leixing_id=1;//存储用体检类型
$checkup_type_id = false; //体检类型id
if (isset($combo_id) and $combo_id <> 0) {
$combo_info = DB::table('combos')->where(['combo_id' => $combo_id, 'status' => 1])->first();
if (!$combo_info) return \Yz::echoError1("套餐不存在");
if (!isset($combo_info->checkup_type_id)) return \Yz::echoError1("套餐未关联体检类型");
$checkup_type_id = $combo_info->checkup_type_id;
$TJ_Leixing_id=$checkup_type_id;
$price += $combo_info->price;
$title = $combo_info->name;
$buy_info['combo'] = [
@ -64,6 +67,16 @@ class OrderController extends Controller
'name' => $combo_info->name,
'price' => $combo_info->price,
];
//如果有影像科则存储在nmr_list字段
$comboItem=DB::table('combo_items')->where(['combo_id' => $combo_id, 'status' => 1,'keshi_name'=>'影像科'])->get();
if(count($comboItem)>0){
foreach ($comboItem as $item){
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
}
//如果有自选项目
@ -79,6 +92,13 @@ class OrderController extends Controller
'name' => $item->name,
'price' => $item->price
];
//如果有影像科则存储在nmr_list字段
if($item->keshi_name=='影像科'){
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
$missingIds = array_diff($item_ids, $existingIds);
if (count($missingIds) > 0) return \Yz::echoError1("部分自选项目不可用Id:" . implode(', ', $missingIds));
@ -103,12 +123,27 @@ class OrderController extends Controller
'items' => $group_info['items'],
'group_id' => $group_info['group_id'],
];
$TJ_Leixing_id=$group_info['checkup_type_id'];
$title = "单位团检" . $group_info['combo_name'];
$price = $price + $group_info['sixi_zong_ji_jin_e'];
$need_pay = ($price - $group_info['tongshou_xiane']) > 0 ? $price - $group_info['tongshou_xiane'] : 0;
//团检订单金额为减去统收后的金的
$price = $need_pay;
$true_price = $need_pay;
//如果有影像科则存储在nmr_list字段
$all_items = DB::table('items')->where(['status' => 1,'keshi_name'=>'影像科'])->get();
foreach ($group_info[0]['items'] as $item) {
foreach ($all_items as $it) {
if ($it->item_id == $item['id']) {
$buy_info['nmr_list'][]=[
'item_id' => $item->item_id,
'name' => $item->name,
];
}
}
}
}
//调用思信接口判断各个项目是否可用
@ -155,6 +190,7 @@ class OrderController extends Controller
'type' => $type,
'source' => 'web',
'web_user_id' =>0,
'checkup_type_id'=>$TJ_Leixing_id,
'person_id' => 0,
'name' => $person['name'],
'id_number' => $person['id_number'],

@ -30,11 +30,11 @@ Route::get('/wxGetCode', 'App\Http\Controllers\API\mH5\LoginController@wxGetCode
Route::get('/test', 'App\Http\Controllers\TestController@DBtest');
Route::any('/payNotify', 'App\Http\Controllers\API\H5\PayController@Notify')->middleware('log');//支付回调
Route::group(['prefix' => 'api/H5'], function () {
Route::group(['middleware' => ['log'],'prefix' => 'api/H5'], function () {
Route::post('/CheckUpTypeGetList', 'App\Http\Controllers\API\H5\CheckUpTypeController@GetList');//获取体检类型分类
Route::post('/GetComboSort', 'App\Http\Controllers\API\H5\ComboController@GetComboSort');// //获取套餐类型、适用人群
Route::post('/ComboCompare', 'App\Http\Controllers\API\H5\ComboController@ComboCompare');// //套餐对比
Route::post('/BuyInfo', 'App\Http\Controllers\API\H5\ComboController@BuyInfo')->middleware('log');//获取购买详情内容(详情页信息)
Route::post('/BuyInfo', 'App\Http\Controllers\API\H5\ComboController@BuyInfo');//获取购买详情内容(详情页信息)
Route::post('/GetAllItems', 'App\Http\Controllers\API\H5\ItemController@GetItems');//获取所有自选项目
Route::post('/GetReadme', 'App\Http\Controllers\API\H5\HospitalExtraController@GetReadme');//获取注意事项
Route::post('/GetMonthPlanCount', 'App\Http\Controllers\API\H5\PlanController@GetMonthPlanCount');//获取本月每日剩余号源数量

@ -1,29 +1,49 @@
<template>
<view>
<view style="background-color: #fff;">
<view class="zhou">
<view class="day" v-for="(item,index) in 7">
<view class="day_top">
<view>08/03</view>
<view class="zhou_title">周六</view>
</view>
<view class="yu">余20</view>
<view class="day" v-for="(item,index) in dataInfo.weeklist">
<view :class="index==3?'day_top selected':'day_top'" @click="selectDate(item.date)">
<view>{{item.date.split('-').slice(1).join('/')}}</view>
<view class="zhou_title">{{ item.xingqi.replace('星期', '周').replace('日', '天')}}</view>
</view>
<view class="yu">{{item.count}}</view>
</view>
<view class="xian_k">
<view class="xian"></view>
</view>
<view class="rili_icon">
<uni-icons type="calendar" size="30" color="#239EA3"></uni-icons>
<uni-icons type="calendar" style="font-size: 50rpx;" color="#239EA3"></uni-icons>
<text>更多</text>
</view>
</view>
<view class="hengxian"></view>
<view class="timelist">
<view v-for="(item,index) in 24" class="time">07:33</view>
<view v-for="(item,index) in dataInfo.list" @click="timeClick(item)" :class="item.time==selectedTime?'time selected':'time'">{{item.time.substring(0, 5)}}</view>
</view>
</view>
</template>
<script>
<script setup>
import { defineEmits } from 'vue';
const emit = defineEmits();
const props = defineProps({
dataInfo: {
type: Object,
required: true
},
selectedTime: {
type: String,
required: true
}
});
const selectDate = (date) => {
emit('selectDate', date);
};
const timeClick=(timeInfo)=>{
emit('selectTime', timeInfo);
}
</script>
<style scoped>
@ -47,14 +67,14 @@
display: flex;
flex-direction: column;
align-items: center;
margin-top: 10rpx;
padding: 10rpx;
border-radius: 16rpx;
}
.selected {
background-color: #239EA3;
color: #fff;
color: #fff !important;
}
.zhou_title {
@ -84,7 +104,7 @@
}
.rili_icon {
font-size: 26rpx;
font-size: 24rpx;
font-weight: 500;
display: flex;
flex-direction: column;

@ -1,14 +1,113 @@
<template>
<view>
<WeeklyCalendar/>
<view class="ctime_main">
<view class="zhouli">
<WeeklyCalendar v-if="weekList" :dataInfo="weekList" :selectedTime="selectedTime"
@selectDate="selectDateFunc" @selectTime="selectTimeFunc" />
</view>
<view class="dateitem" v-if="orderInfo">
<view
style="background-color: #f7f7f7; padding: 20rpx; font-size: 30rpx; border-radius: 20rpx;color: #333;">
<view>{{orderInfo.name}}</view>
<view
style="background-color: #f1f1f1;padding: 20rpx 30rpx; margin-top: 10rpx;border-radius: 14rpx;font-size: 28rpx;">
<view v-if=" orderInfo.buy_info.nmr_list && orderInfo.buy_info.nmr_list.length>0">
<view v-for="(item1,index1) in orderInfo.buy_info.nmr_list">
{{item1.name}}
</view>
</view>
<view style="margin-top: 10rpx;">体检日期</view>
</view>
</view>
</view>
<view class="pb-100rpx">
<view
class="text-#fff text-32rpx rounded-45rpx bg-#239EA3 mt-40rpx ma w-520rpx h-90rpx flex flex-items-center flex-justify-center">
确定
</view>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue';
import WeeklyCalendar from '@/common/WeeklyCalendar.vue';
import {
ref
} from 'vue';
import {
$image,
$api,
$response
} from "@/api";
import {
onShow
} from "@dcloudio/uni-app";
import WeeklyCalendar from '@/common/WeeklyCalendar.vue';
let weekList = ref(null);
const GetDayPlanListFunc = async () => {
uni.showLoading();
let data = {
hospital: orderInfo.value.hospital_id,
person_id: orderInfo.value.person_id,
date: selectedDate.value,
use_type: orderInfo.value.type,
checkup_type_id: orderInfo.value.checkup_type_id,
amount: orderInfo.value.true_price,
}
const response = await $api("GetDayPlanList", data);
uni.hideLoading();
$response(response, () => {
weekList.value = response.data
});
};
let selectedTime = ref(null);
let orderInfo = ref(null)
const GetOrderInfo = async () => {
uni.showLoading();
const response = await $api("GetOrderDetail", {
id: 38
});
uni.hideLoading();
$response(response, () => {
orderInfo.value = response.data.info
selectedTime.value = orderInfo.value.appointment_time
selectedDate.value = orderInfo.value.appointment_date
GetDayPlanListFunc()
});
}
//weekly
let selectedDate = ref(null);
const selectDateFunc = (date) => {
selectedDate.value = date
GetDayPlanListFunc();
}
//weekly
let SelectedPlanId = ref(null)
const selectTimeFunc = (timeinfo) => {
selectedTime.value = timeinfo.time
SelectedPlanId.value = timeinfo.id
}
onShow(() => {
GetOrderInfo()
});
</script>
<style>
<style scoped>
.ctime_main {
padding: 20rpx;
}
.zhouli {
padding: 20rpx;
background-color: #fff;
border-radius: 20rpx;
}
.dateitem {
padding: 20rpx;
background-color: #fff;
border-radius: 20rpx;
margin-top: 20rpx;
}
</style>
Loading…
Cancel
Save