main
yanzai 10 months ago
parent 8d1f6190ae
commit bacf277042

@ -89,6 +89,9 @@ class ApiMapController extends Controller
'BaseInfo' => $base_url . '/api/H5/BaseInfo', // 基础信息
'CreateNewOrder' => $base_url . '/api/H5/CreateNewOrder', // 创建订单(新)
'StartYuYue' => $base_url . '/api/H5/StartYuYue', // 创建订单(新)
'CreateTransferCode' => $base_url . '/api/H5/CreateTransferCode', // 创建转赠码
'OrderZhuanZeng' => $base_url . '/api/H5/OrderZhuanZeng', // 订单转赠
'OrderReceiveZhuanZeng' => $base_url . '/api/H5/OrderReceiveZhuanZeng', // 接受订单转赠
];
}

@ -91,6 +91,8 @@ class ComboController extends Controller
if (isset($combo_type)) {
$sql = $sql . " and a.type_id=? ";
$canshu[] = $combo_type;
}else{
$sql = $sql. " and a.type_id<>19 ";
}
if (isset($combo_crowd)) {
$sql = $sql . " and a.crowd_id=? ";

@ -31,7 +31,7 @@ class OrderController extends Controller
$OrderList = DB::table('orders');
$OrderList=$OrderList
->select('id', 'title','buy_info','plan_id', 'checkup_type_id','hunjian_status','status', 'name','appointment_date as date', 'appointment_time as time', 'order_number as order','appointment_number',
->select('id', 'source','title','person_id','buy_info','plan_id', 'checkup_type_id','hunjian_status','status', 'name','appointment_date as date', 'appointment_time as time', 'order_number as order','appointment_number','transfer_type',
DB::raw("CASE WHEN type = 1 THEN '个检' WHEN type = 2 THEN '团检' ELSE 'unknown' END as type"),
'price', 'true_price', 'pay_time', 'refund_time', 'created_at');
if(isset($searchInfo['dateRange'])){
@ -84,6 +84,14 @@ class OrderController extends Controller
$order_info->buy_info = json_decode($order_info->buy_info, true);
$order_info->erxian_appointment_info = json_decode($order_info->erxian_appointment_info, true);
$order_info->appointment_back_info = json_decode($order_info->appointment_back_info, true);
if($order_info->transfer_type==2){
$transfer_code=DB::table('transfer_code')->where(['id'=>$order_info->transfer_link])->first();
$order_info->transfer_code=$transfer_code->code;
}
if($order_info->transfer_type==1){
$transfer_order=DB::table('orders')->where(['id'=>$order_info->transfer_link])->first();
$order_info->transfer_order=$transfer_order;
}
} else {
return \Yz::echoError1('未找到有效订单');
}

@ -417,19 +417,97 @@ class OrderNewController extends Controller
//转赠
public function ZhuanZeng()
{
$order_number = request('order_number');
$order_id = request('order_id');
$person_id = request('person_id');
$openid = request('openid');
$person=DB::table('web_user_person')->where(['id'=>$person_id,'is_del'=>0])->first();
if(!$person) return \Yz::echoError1('转赠用户不存在');
$user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first();
if (!$user) return \Yz::echoError1('用户不存在');
$order = DB::table('orders')
->where('order_number', '=', $order_number)
->where('id', '=', $order_id)
->where('status', '=', 2)
// 只有未预约的才能转赠
->where(function($query) {
$query->where('transfer_type', '=', '')
->orWhereNull('transfer_type');
})
->where(function($query) {
$query->where('plan_id', '=', '')
->orWhereNull('plan_id');
})->first();
if(!$order) return \Yz::echoError1('此订单无法转赠他人');
if($order->web_user_id<>$user->id) return \Yz::echoError1('无权操作此订单');
if($order->person_id==$person_id) return \Yz::echoError1('被转赠人不能和原用户相同');
//查询转赠码表是否生成了对应的转赠码
$transfer_code=DB::table('transfer_code')->where(['link_order_id'=>$order->id,'is_del'=>0])->first();
if(!!$transfer_code) return \Yz::echoError1('此订单已生成转赠码,无法再次转赠');
$peis = new PEISApiController();
$comboDetail = $peis::Post('套餐详情查询', $order->hospital_id, ['套餐Id' => $order->combo_id], false);
if ($comboDetail['code'] != 0) return \Yz::echoError1("套餐详情查询失败");
$comboDetail_sex = $comboDetail['data'][0]['性别限制'];
if($comboDetail_sex=='全部') $comboDetail_sex=0;
if($comboDetail_sex=='男') $comboDetail_sex=1;
if($comboDetail_sex=='女') $comboDetail_sex=2;
if($comboDetail_sex <> 0 and $comboDetail_sex <> $person->sex) return \Yz::echoError1('性别不符,此套餐不适合转赠给此用户');
DB::beginTransaction();
$now_datetime=date('Y-m-d H:i:s');
$data = [
'source'=>'转赠from'.$order->id,
'title' => $order->title,
'type' => $order->type,
'web_user_id' => 0,
'checkup_type_id' => $order->checkup_type_id,
'person_id' => 0,
'name' => $person->name,
'id_number' => $person->id_number,
'buy_info' => $order->buy_info,
'price' => $order->price,
'true_price' =>$order->true_price,
'order_number' => $this->generateOrderNumber(),
'status' => 2,
'erxian_appointment_info' => $order->erxian_appointment_info,
'combo_id' => $order->combo_id,
'hospital_id' => $order->hospital_id,
'phone' => $person->phone,
'sex' => $person->sex,
'birthday' => $person->birthday,
'married' => $person->married,
'created_at' => $now_datetime,
'paycheck_time' => $now_datetime
];
$i_order_id=DB::table('orders')->insertGetId($data);
$u=DB::table('orders')->where(['id'=>$order->id])->update(['transfer_type'=>1,'transfer_link'=>$i_order_id,'status'=>6]);
if($u and $i_order_id){
DB::commit();
return \Yz::Return(true,'操作成功',[]);
}else{
DB::rollBack();
return \Yz::echoError1('操作失败');
}
}
//接受转赠
public function ReceiveZhuanZeng(){
$order_id = request('order_id');
$openid = request('openid');
$user = DB::table('web_users')->where(['openid' => $openid, 'status' => 1, 'is_del' => 0])->first();
if (!$user) return \Yz::echoError1('用户不存在');
$order = DB::table('orders')->where(['id'=>$order_id,'status'=>2,'person_id'=>0])
->where(function($query) {
$query->where('transfer_type', '=', '')
->orWhereNull('transfer_type');
})
->first();
if(!$order) return \Yz::echoError1('接收失败');
$person=DB::table('web_user_person')->where(['user_id'=>$user->id,'id_number'=>$order->id_number,'is_del'=>0])->first();
if(!$person) return \Yz::echoError1('体检人不存在');
$u=DB::table('orders')->where(['id'=>$order_id])->update(['person_id'=>$person->id,'web_user_id'=>$user->id]);
if($u){
return \Yz::Return(true,'操作成功',[]);
}else{
return \Yz::echoError1('操作失败');
}
}
public function item_check($hospital, $data)

@ -0,0 +1,41 @@
<?php
namespace App\Http\Controllers\API\H5;
use App\Http\Controllers\Controller;
use App\Lib\Tools;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class TransferCodeController extends Controller
{
//生成转赠码
public function CreateTransferCode(){
$order_id = request('order_id');
$order=DB::table('orders')->where(['id'=>$order_id])->first();
if(!$order) return \Yz::echoError1("订单不存在");
if($order->status<>2) return \Yz::echoError1("订单状态不正确");
if(!empty($order->plan_id)) return \Yz::echoError1("该订单不可转赠");
if(!empty($order->transfer_type)) return \Yz::echoError1("该订单已经转赠,不可再转赠");
$order_code=DB::table('transfer_code')->where(['link_order_id'=>$order_id,'is_del'=>0])->first();
if(!!$order_code) return \Yz::echoError1("该订单已有转赠码,不可再转赠");
$code=Tools::RandomString(5).$order->id;
$c_code_id = DB::table('transfer_code')->insertGetId([
'code'=>$code,
'price'=>$order->true_price,
'combo_id'=>json_decode($order->buy_info,true)['combo']['id'],
'link_order_id'=>$order_id,
'status'=>1,
'is_del'=>0
]);
$u_order=DB::table('orders')->where(['id'=>$order_id])->update(['transfer_type'=>2,'transfer_link'=>$c_code_id,'status'=>6]);
if($u_order){
return \Yz::Return(true,"生成成功",['code'=>$code]);
}else{
return \Yz::echoError1("生成失败");
}
}
}

@ -14,7 +14,7 @@ class TransferCodeController extends Controller
$code_num = request('code_num');
$user_name = request('user_name');
$user_id_number = request('user_id_number');
$code=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>1])->first();
$code=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>1,'is_del'=>0])->first();
if(!$code) return \Yz::echoError1("此转赠码不可用");
$u=DB::table('transfer_code')->where(['code'=>$code_num])->update([
'user_name'=>$user_name,
@ -47,17 +47,18 @@ class TransferCodeController extends Controller
'status'=>2,
'tj_num'=>isset($tj_num)?$tj_num:null,
];
$u=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>1])->update($data);
$u=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>1,'is_del'=>0])->update($data);
}
if($type==2){
$data=[
'status'=>1,
'tj_num'=>null,
];
$u=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>2])->update($data);
$u=DB::table('transfer_code')->where(['code'=>$code_num,'status'=>2,'is_del'=>0])->update($data);
}
$cha=DB::table('transfer_code')->where(['code'=>$code_num])->first();
if($u){
return \Yz::Return(true,"操作成功",['code_num'=>$code_num]);
return \Yz::Return(true,"操作成功",['code_num'=>$code_num,'status'=>$cha->status]);
}else{
return \Yz::echoError1("操作失败");
}

@ -69,4 +69,15 @@ class Tools
// 返回年龄
return $interval->y;
}
//生成随机字符串
public static function RandomString($length = 6) {
$characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < $length; $i++) {
// 使用random_int确保随机性
$randomString .= $characters[random_int(0, $charactersLength - 1)];
}
return $randomString;
}
}

@ -81,6 +81,10 @@ Route::group(['middleware' => ['log'],'prefix' => 'api/H5'], function () {
Route::post('/CreateNewOrder', 'App\Http\Controllers\API\H5\OrderNewController@CreateNewOrder');//创建新订单
Route::post('/StartYuYue', 'App\Http\Controllers\API\H5\OrderNewController@StartYuYue');//预约
Route::post('/OrderZhuanZeng', 'App\Http\Controllers\API\H5\OrderNewController@ZhuanZeng');//订单转赠
Route::post('/OrderReceiveZhuanZeng', 'App\Http\Controllers\API\H5\OrderNewController@ReceiveZhuanZeng');//接受订单转赠
Route::post('/CreateTransferCode', 'App\Http\Controllers\API\H5\TransferCodeController@CreateTransferCode');//创建转赠码
//测试----------------------------

@ -62,7 +62,7 @@
let itemId = ref(""); // id
let comboId = ref(""); // id
let price_max_min=ref([]);
let zhuangjianType=ref(18);
let zhuangjianType=ref(19);
let TiShiPopupRef=ref(null);//
let SelectedComboInfo=ref(null);//
@ -82,6 +82,9 @@
sortIndex.value = 0;
delete screenObj.value.combo_sort;
sort_price_index.value = null;
delete screenObj.value.sort_price;
if (sort_salecount_index.value == index) {
sort_salecount_index.value = null;
delete screenObj.value.sort_sale_count;
@ -94,6 +97,9 @@
sortIndex.value = 0;
delete screenObj.value.combo_sort;
sort_salecount_index.value = null;
delete screenObj.value.sort_sale_count;
if (sort_price_index.value == index) {
sort_price_index.value = null;
delete screenObj.value.sort_price;

@ -40,7 +40,7 @@ import DraggableButton from "@/pages/components/goHome.vue";
let status_allow = []
switch (status_active.value) {
case '0':
status_allow = [1, 2, 3, 4, 5]
status_allow = [1, 2, 3, 4, 5,6]
break;
case '1':
status_allow = [1]
@ -52,7 +52,7 @@ import DraggableButton from "@/pages/components/goHome.vue";
status_allow = [3, 5]
break;
case '4':
status_allow = [4]
status_allow = [4,6]
break;
}
for (let i in order_list.value) {

@ -27,6 +27,7 @@
},
},
});
let TransferPopupRef=ref(null)
const order_info = ref(false);
@ -122,14 +123,62 @@
})
}
//
const ZhuanZeng=()=>{
alert('开发中');
const ZhuanZeng=async(id)=>{
// alert('')
// return false;
uni.showLoading();
const response = await $api("GetOrderDetail", {
id: id,
});
uni.hideLoading();
$response(response, () => {
if (response.status) {
OrderInfoDetail.value = response.data.info
TransferPopupRef.value.open()
}
})
}
const GaiYueClick = (id) => {
uni.navigateTo({
url: '/pages/main/ctime/ctime?id=' + id
})
}
//
const CreateTransferCode=async()=>{
uni.showLoading();
const response = await $api("CreateTransferCode", {
order_id: OrderInfoDetail.value.id,
});
uni.hideLoading();
$response(response, () => {
if (response.status) {
ZhuanZeng(OrderInfoDetail.value.id)
order_info.value.status=6
}
})
}
//
const ZhuanZengPerson=async()=>{
uni.navigateTo({
url: "/pages/user/choose/choose?do=transfer&orderid="+OrderInfoDetail.value.id
});
}
//
const ReceiveZhuanZeng=async()=>{
uni.showLoading();
const response = await $api("OrderReceiveZhuanZeng", {
order_id: order_info.value.id,
});
uni.hideLoading();
$response(response, () => {
if (response.status) {
uni.redirectTo({
url: "/pages/main/order/order"
});
}
})
}
let erweima_popup = ref(null);
let show_erweima_text = ref('');
const erweima_click = (text) => {
@ -157,6 +206,22 @@
</script>
<template>
<view>
<uni-popup ref="TransferPopupRef" style="z-index: 999;">
<view class="tishi_main">
<view v-if="OrderInfoDetail.transfer_type==null || OrderInfoDetail.transfer_type==''">
<view @click="ZhuanZengPerson()" class="tishi_button">指定转赠人</view>
<view @click="CreateTransferCode()" class="tishi_button">生成转赠码</view>
</view>
<view v-if="OrderInfoDetail.transfer_type==2">
<view>转赠码</view>
<view>{{OrderInfoDetail.transfer_code?OrderInfoDetail.transfer_code:''}}</view>
</view>
<view v-if="OrderInfoDetail.transfer_type==1">
<view>已转赠至</view>
<view>{{OrderInfoDetail.transfer_order?OrderInfoDetail.transfer_order.name:''}}</view>
</view>
</view>
</uni-popup>
<uni-popup ref="erweima_popup" type="center" :animation="false">
<view style="background-color: #fff;padding: 20rpx;border-radius: 10rpx;">
<view>扫码预约取号</view>
@ -222,6 +287,17 @@
<view class="row_value">{{OrderInfoDetail.created_at}}
</view>
</view>
<view >
<view class="OrderInfoRow" v-if="OrderInfoDetail.transfer_type==2">
<view class="row_label">转赠码:</view>
<view class="row_value" style="font-weight: 900;">{{OrderInfoDetail.transfer_code?OrderInfoDetail.transfer_code:''}}</view>
</view>
<view class="OrderInfoRow" v-if="OrderInfoDetail.transfer_type==1">
<view class="row_label">已转赠至:</view>
<view class="row_value">{{OrderInfoDetail.transfer_order?OrderInfoDetail.transfer_order.name:''}}</view>
</view>
</view>
</view>
</uni-popup>
<view v-if="!!order_info" class="order_wrapper">
@ -235,6 +311,7 @@
未预约 </view>
<view v-if="[3, 5].includes(order_info.status)"> </view>
<view v-if="[4].includes(order_info.status)"> </view>
<view v-if="[6].includes(order_info.status)"> </view>
</view>
<view class="combo_name_wrapper">{{ order_info.title }}</view>
<view class="order_info_wrapper">
@ -315,13 +392,15 @@
v-if="[2].includes(order_info.status) && order_info.appointment_number!=null && order_info.appointment_number!=''"
@click="GaiYueClick(order_info.id)" class="button_item_wrapper change_button_wrapper">
改约</view>
<view @click="ReceiveZhuanZeng()" v-if="order_info.source!=null && order_info.person_id ==0 && order_info.source.includes('转赠') && order_info.transfer_type==null " class="button_item_wrapper change_button_wrapper">
接受转赠
</view>
<view
v-if="[2].includes(order_info.status) && (order_info.plan_id=='' || order_info.plan_id==null) "
v-if="[2].includes(order_info.status) && (order_info.plan_id=='' || order_info.plan_id==null) && order_info.person_id !==0 "
@click="toPlan(order_info.id)" class="button_item_wrapper change_button_wrapper">
开始预约</view>
<view
v-if="[2].includes(order_info.status) && (order_info.plan_id=='' || order_info.plan_id==null) "
v-if="[2].includes(order_info.status) && (order_info.plan_id=='' || order_info.plan_id==null) && order_info.type=='个检' && order_info.title!='自选项目' && order_info.person_id !=0"
@click="ZhuanZeng(order_info.id)" class="button_item_wrapper change_button_wrapper">
转赠</view>
<!-- <view v-if="[4].includes(order_info.status) && order_info.report" class="button_item_wrapper report_button_wrapper">
@ -330,7 +409,7 @@
<view v-if="[4].includes(order_info.status) && order_info.report && !order_info.decode" class="button_item_wrapper decode_button_wrapper">
报告解读
</view> -->
<view v-if="[2].includes(order_info.status)" @click="Refound(order_info.id)"
<view v-if="[2].includes(order_info.status) && !order_info.source?.includes('')" @click="Refound(order_info.id)"
class="button_item_wrapper refund_button_wrapper">退款</view>
</view>
</view>
@ -346,7 +425,9 @@
}
.button_item_wrapper {
width: 180rpx;
min-width: 140rpx;
padding-left: 20rpx;
padding-right: 20rpx;
height: 60rpx;
border-radius: 30rpx;
line-height: 60rpx;
@ -531,4 +612,21 @@
.row_value {
margin-left: 20rpx;
}
.tishi_main{
background-color: #fff;
padding: 40rpx 50rpx;
width:500rpx;
border-radius: 40rpx;
}
.tishi_button{
height: 60rpx;
line-height: 60rpx;
width: 365rpx;
background-color: #009da5;
color:#fff;
text-align: center;
border-radius: 40rpx;
margin: 40rpx auto 10rpx auto;
}
</style>

@ -316,14 +316,14 @@
<view v-if="question_list.length !== 0">
<view>
<view v-if="question_info.type === '检前评估'" class="banner_wrapper">
<view @click="getQuestionLogPush()" class="push_log_wrapper">带入上次答题记录</view>
<view @click="getQuestionLogPush()" class="push_log_wrapper">带入上次答题记录<uni-icons type="map" color="#7E6F5C" size="20"></uni-icons></view>
<image src="@/static/assets/question/banner3.png"></image>
</view>
<!-- <view v-if="question_info.type === '检前评估'" class="chuchu">
<view v-if="question_info.type === '检前评估'" class="chuchu">
<uni-icons type="search" color="#fff" size="18"></uni-icons>
<view style="margin-left: 10rpx;">问卷出处:健康体检基本项目专家共识 </view>
</view> -->
</view>
<view v-else>
<view class="q2_banner_wrapper">
<view class="q2_banner_text_wrapper">健康问卷</view>
@ -668,18 +668,17 @@
.push_log_wrapper {
position: absolute;
z-index: 9;
width: 250rpx;
width: 350rpx;
height: 50rpx;
/* background: #DAD3C9; */
/* color: #7E6F5C; */
color: #fff;
background: #259ea3;
background: #DAD3C9;
color: #7E6F5C;
right: 36rpx;
top: -15rpx;
bottom:20rpx ;
border-radius: 6rpx;
margin: 40rpx auto 0;
font-weight: 500;
font-size: 22rpx;
font-size: 28rpx;
line-height: 50rpx;
text-align: center;

@ -424,8 +424,6 @@
<view v-for="(item, index) in recommendPackageList" :key="index"
class="pt-40rpx pb-15rpx box-border b-0 b-t-1 b-solid b-#E1ECEE">
<view class="flex w-full">
<image v-if="item.cover" :src="$image(item.cover)" class="w-190rpx h-190rpx mr-37rpx"
mode="widthFix" />
<view class="flex flex-col grow">
<text>{{ item.name }}</text>
<view class="mt-13rpx mb-18rpx">
@ -452,7 +450,7 @@
<text class="text-18rpx text-#878787 line-through">{{
item.original_price
}}</text>
<text class="text-18rpx text-#878787 ml-auto mr-55rpx">已售{{ item.count }}</text>
</view>
</view>
</view>

@ -10,6 +10,18 @@ import { $api, $image, $response } from "@/api";
import { onShow } from "@dcloudio/uni-app";
import { useStore } from "@/store";
const $store = useStore();
const $props = defineProps({
do: {
type: String,
default: "",
},
orderid: {
type: String,
default: "",
},
})
const person_list = ref([]);
const getPersonList = async () => {
const response = await $api("GetPersonList");
@ -54,6 +66,21 @@ const choosePersonClick = async (info) => {
getUserInfo();
});
};
const ZhuanZengChoosePersonClick=async(info)=>{
uni.showLoading();
const response = await $api("OrderZhuanZeng", {
order_id: $props.orderid,
person_id:info.id
});
uni.hideLoading();
$response(response, () => {
if (response.status) {
uni.redirectTo({
url: "/pages/main/order/order"
});
}
})
}
onShow(() => {
if (!!config_ref.value) {
@ -90,8 +117,12 @@ onShow(() => {
v-if="i.is_default === 2"
@click="choosePersonClick(i)"
class="person_choose_wrapper"
>切换</view
>
>切换</view>
<view
v-if="$props.do === 'transfer'"
@click="ZhuanZengChoosePersonClick(i)"
class="person_choose_wrapper"
>转赠</view>
</view>
</view>
</view>

Loading…
Cancel
Save