各种更新

main
yanzai 10 months ago
parent 41d684a045
commit d69ba1b4eb

@ -54,7 +54,8 @@ class OrderController extends Controller
{
$info = request('info');
$date = [
'note' => $info['note']
'note' => $info['note'],
'youxiaoqi_end' => $info['youxiaoqi_end'],
];
$u = DB::table('orders')->where(['id' => $info['id']])->update($date);
if ($u) {

@ -116,6 +116,36 @@ class ComboController extends Controller
$canshu[] = '%'.$search.'%';
}
if(isset($keshi_name)){
$combo_ids=DB::table('combo_items')->where(['status'=>1,'keshi_name'=>$keshi_name]) ->pluck('combo_id')->toArray();
$count = count($combo_ids);
$placeholders = implode(', ', array_fill(0, $count, '?'));
if(count($combo_ids)>0){
$sql = $sql . " and a.combo_id in ($placeholders) ";
$canshu =array_merge($canshu, $combo_ids);
}else{
$sql = $sql . " and a.combo_id in (?) ";
$canshu =array_merge($canshu, [0]);
}
}
if(isset($combo_item)){
$combo_ids=DB::table('combo_items')->whereIn('item_id',$combo_item)->where(['status'=>1])
->groupBy('combo_id')
->havingRaw('COUNT(DISTINCT item_id) = '.count($combo_item))
->pluck('combo_id')->toArray();
$count = count($combo_ids);
$placeholders = implode(', ', array_fill(0, $count, '?'));
if(count($combo_ids)>0){
$sql = $sql . " and a.combo_id in ($placeholders) ";
$canshu =array_merge($canshu, $combo_ids);
}else{
$sql = $sql . " and a.combo_id in (?) ";
$canshu =array_merge($canshu, [0]);
}
}
if(isset($sort_price) and $sort_price==1) $combo_sort=3;
if(isset($sort_price) and $sort_price==2) $combo_sort=4;
if(isset($sort_sale_count) and $sort_sale_count==1) $combo_sort=7;
@ -147,39 +177,9 @@ class ComboController extends Controller
$sql = $sql . " order by a.sale_count desc";
}
}
if (!isset($combo_sort)) {
if (!isset($combo_sort) or $combo_sort == 1) {
$sql = $sql . " order by a.order ";
}
if(isset($keshi_name)){
$combo_ids=DB::table('combo_items')->where(['status'=>1,'keshi_name'=>$keshi_name]) ->pluck('combo_id')->toArray();
$count = count($combo_ids);
$placeholders = implode(', ', array_fill(0, $count, '?'));
if(count($combo_ids)>0){
$sql = $sql . " and a.combo_id in ($placeholders) ";
$canshu =array_merge($canshu, $combo_ids);
}else{
$sql = $sql . " and a.combo_id in (?) ";
$canshu =array_merge($canshu, [0]);
}
}
if(isset($combo_item)){
$combo_ids=DB::table('combo_items')->whereIn('item_id',$combo_item)->where(['status'=>1])
->groupBy('combo_id')
->havingRaw('COUNT(DISTINCT item_id) = '.count($combo_item))
->pluck('combo_id')->toArray();
$count = count($combo_ids);
$placeholders = implode(', ', array_fill(0, $count, '?'));
if(count($combo_ids)>0){
$sql = $sql . " and a.combo_id in ($placeholders) ";
$canshu =array_merge($canshu, $combo_ids);
}else{
$sql = $sql . " and a.combo_id in (?) ";
$canshu =array_merge($canshu, [0]);
}
}
$combos = DB::select("select * from combos as a LEFT JOIN (

@ -914,20 +914,20 @@ class OrderController extends Controller
"可选项目信息" => $item_arr,
"总计金额" => $order_info->price,
];
if ($order_info->wj_flag == 1) {
// if ($order_info->wj_flag == 1) {
$temp = [];
foreach ($item_arr as $k => $item) {
$temp[] = [
"Id" => $item['Id'],
"已收费" => $item['已收费'],
"优惠方式" => "打折",
"优惠值" => config('app.globals.Wj_ZheKou')
"优惠值" => config('app.globals.ZiXuan_ZheKou')
];
}
$cad2 = [
"可选项目信息" => $temp,
];
}
// }
$cad = array_merge($cad, $cad2);
} else {
if(isset($buy_info['group']['items']) and $buy_info['group']['have_Nx1']===true){

@ -548,6 +548,9 @@ class OrderNewController extends Controller
'updated_at' => date('Y-m-d H:i:s')
];
$u = DB::table('orders')->where(['id' => $orderid])->update($data);
$up_plan = DB::table('plans')->where(['id' => $plan->id, 'status' => 1])->update([
'status' => 2
]);
if(!$u) return \Yz::echoError1("预约失败");
$Finish = new OrderController();//预约体检
$yuyue= $Finish->Finish($order->order_number);

@ -54,6 +54,11 @@ class PayController extends Controller
$randomPart = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 6);
$new_ordernumber=substr($orderInfo->order_number, 0, -6);
$new_ordernumber=$new_ordernumber.$randomPart;
DB::table('order_number_change_logs')->insert([
'order_id' => $id,
'old_order_number' => $orderInfo->order_number,
'new_order_number' => $new_ordernumber,
]);
$u=DB::table('orders')->where(['id' => $id,])->update(['order_number'=>$new_ordernumber]);
if(!$u) return \Yz::echoError1("更新订单号失败");
$XCXApi = new XCXApiController();
@ -116,13 +121,15 @@ class PayController extends Controller
//判断订单状态是否是已经支付,判断是否到检,
$openid = request('openid');
$id = request('id');
$yuanyin = request('yuanyin');
if(!isset($id)) return \Yz::echoError1("id不能为空");
$orderInfo = DB::table('orders')->where(['id' => $id,])->first();
if(!$orderInfo) return \Yz::echoError1("未找到有效订单");
$userInfo = DB::table('web_users')->where(['id' => $orderInfo->web_user_id])->first();
if($openid != $userInfo->openid) return \Yz::echoError1("无权操作此订单");
$service = new OrderService();
$res=$service->Refund($id);
$res=$service->Refund($id,$yuanyin);
if(!$res['status']) return \Yz::echoError1($res['msg']);
if($res['status']) return \Yz::Return(true, "退款成功", []);

@ -113,14 +113,14 @@ class QuestionnaireController extends Controller
$v = str_replace('${今日日期}',$person->birthday , $v);
if ($v == '${省市县}') {
$v = [[
'value' => '11',
'text' => '北京市'
'value' => '46',
'text' => '海南省'
], [
'value' => '1101',
'text' => '市辖区'
'value' => '4601',
'text' => '海口市'
], [
'value' => '110101',
'text' => '东城区'
'value' => '460105',
'text' => '秀英区'
]];
}
$item_data['value'] = $v;

@ -193,7 +193,7 @@ class OrderService
]);
return true;
}
public function Refund($id)
public function Refund($id,$yuanyin='')
{
$orderInfo = DB::table('orders')->where(['id' => $id])->first();
if (!$orderInfo) return ['status'=>false,'msg'=>"未找到有效订单"];
@ -235,14 +235,17 @@ class OrderService
}
}
$refund_yuanyin="体检H5订单退款";
if(isset($yuanyin) and!empty($yuanyin)){
$refund_yuanyin=$yuanyin;
}
//如果真实支付大于0 则调用小程序退款
if ($orderInfo->true_price > 0) {
$data = [
'orderid' => $orderInfo->order_number,
'refund_order_id' => 'T' . $orderInfo->order_number,
'refund_amount' => (int)($orderInfo->true_price * 100),
'refund_reason' => "体检H5订单退款",
'refund_reason' => $refund_yuanyin,
];
$XCX = new XCXApiController();
$res = $XCX::Post('订单退款', $data);

@ -1,4 +1,4 @@
ENV = 'production'
VITE_APP_API = 'http://124.225.137.54:39081/api/'
VITE_APP_FILE = 'http://124.225.137.54:39081'
VITE_APP_API = 'https://tj-h5.hnxdfe.com/api/'
VITE_APP_FILE = 'https://tj-h5.hnxdfe.com'

@ -113,6 +113,15 @@
<el-form-item v-if="Info.pay_time" label="支付时间:">
{{Info.pay_time}}
</el-form-item>
<el-form-item label="订单有效期:">
<el-date-picker
v-model="Info.youxiaoqi_end"
value-format="YYYY-MM-DD"
type="date"
placeholder="选择日期"
/>
</el-form-item>
<el-form-item v-if="Info.appointment_date" label="预约时间:">
{{Info.appointment_date}} {{Info.appointment_time}}
</el-form-item>

@ -4,7 +4,7 @@
<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 class="zhou_title">{{ item.xingqi.replace('星期', '周')}}</view>
</view>
<view class="yu">{{item.count}}</view>

@ -1,7 +1,7 @@
const app_type = 'gzh'
//const base_url = "https://api.hainan2024.sa0.online" //开发环境
//const base_url="https://tj-h5.hnxdfe.com" //正式环境
const base_url="http://124.225.137.54:39081" //测试环境
const base_url="https://tj-h5.hnxdfe.com" //正式环境
//const base_url="http://124.225.137.54:39081" //测试环境
const config = {
api_map_url: base_url + '/api/ApiMap/h5',
base_assets_url: base_url,

@ -86,6 +86,7 @@
use_type: orderInfo.value.type,
checkup_type_id: orderInfo.value.checkup_type_id,
amount: orderInfo.value.true_price,
combo_id: orderInfo.value.combo_id?orderInfo.value.combo_id:""
}
const response = await $api("GetDayPlanList", data);
uni.hideLoading();

@ -313,7 +313,7 @@
</view>
</view>
</view>
<view class="botm_blank_wrapper" style="font-size: 18rpx;color: #ccc;">02272247</view>
<view class="botm_blank_wrapper" style="font-size: 18rpx;color: #ccc;">03010911</view>
</view>
</view>
</template>

@ -49,15 +49,28 @@ import DraggableButton from "@/pages/components/goHome.vue";
status_allow = [2]
break;
case '3':
status_allow = [3, 5]
status_allow = [2]
break;
case '4':
status_allow = [4,6]
status_allow = [3,4,5,6]
break;
}
for (let i in order_list.value) {
if (status_allow.includes(order_list.value[i].status)) {
list.push(order_list.value[i])
if(status_active.value=='2' ){
if (order_list.value[i].appointment_number == null) {
list.push(order_list.value[i]);
}
}else if(status_active.value=='3' ){
if (order_list.value[i].appointment_number != null && order_list.value[i].appointment_number != '') {
list.push(order_list.value[i]);
}
}
else{
list.push(order_list.value[i])
}
}
}
return list
@ -78,14 +91,14 @@ import DraggableButton from "@/pages/components/goHome.vue";
label: '待支付',
value: '1'
}, {
label: '进行中',
label: '待预约',
value: '2'
}, {
label: '已完成',
value: '4'
}, {
label: '已关闭',
label: '进行中',
value: '3'
}, {
label: '已结束',
value: '4'
}])
const statusClick = (status) => {
status_active.value = '-1'

@ -7,7 +7,8 @@
import {
ref,
onMounted,
defineEmits
defineEmits,
nextTick
} from "vue";
import {
$api,
@ -100,14 +101,22 @@
};
const emit = defineEmits();
let tuikuan_tishi=ref('');
let TuiKuanPopupRef=ref(null);
const Refound = async (order) => {
let content='确定要为 '+order.title+' 退款吗?'
tuikuan_tishi.value='确定要为 '+order.title+' 退款吗?'
if(order.appointment_date?.length>0){
content='您已经预约'+order.appointment_date+'的体检,'+content;
tuikuan_tishi.value='您已经预约'+order.appointment_date+'的体检,'+content;
}
TuiKuanPopupRef.value.open()
return false;
uni.showModal({
title: '提示',
content: content,
content: tuikuan_tishi.value,
success: function (res) {
if (res.confirm) {
tuikuan(order.id)
@ -118,11 +127,40 @@
});
};
let tuikuan_yuanyin_list=ref([
{
name:"不需要了",
value:"不需要了"
},
{
name:"点错体检项目了",
value:"点错体检项目了"
},
{
name:"已在其他医院体检",
value:"已在其他医院体检"
},
{
name:"其他原因",
value:"其他原因"
}
])
let tuikuan_yuanyin=ref('')
const tuikuanRadioChange=(evt)=>{
for (let i = 0; i < tuikuan_yuanyin_list.value.length; i++) {
if (tuikuan_yuanyin_list.value[i].value === evt.detail.value) {
tuikuan_yuanyin.value = tuikuan_yuanyin_list.value[i].value;
break;
}
}
}
const tuikuan=async(id)=>{
console.log(tuikuan_yuanyin.value)
uni.showLoading();
const response = await $api("Refund", {
openid: localStorage.getItem("OPENID"),
id: id,
yuanyin:tuikuan_yuanyin.value
});
uni.hideLoading();
$response(response, () => {
@ -298,6 +336,7 @@
});
}
onMounted(() => {
deepInfo();
@ -305,6 +344,30 @@
</script>
<template>
<view>
<uni-popup ref="TuiKuanPopupRef" style="z-index: 999;">
<view class="tishi_main">
<view class="tishi_title">{{tuikuan_tishi}}</view>
<view class="tishi_title2">请选择退号原因</view>
<view class="tishi_content">
<radio-group @change="tuikuanRadioChange">
<label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in tuikuan_yuanyin_list" :key="item.value">
<view style="display: flex; margin-bottom: 10rpx;">
<view>
<radio :value="item.value" :checked="item.name === tuikuan_yuanyin" activeBackgroundColor="#009da5" />
</view>
<view>{{item.name}}</view>
</view>
</label>
</radio-group>
</view>
<view style="display: flex;justify-content: space-between;">
<view class="tishi_button" style=" width: 200rpx; background-color: #e1ecee;color:#239ea3" @click="TuiKuanPopupRef.close()"></view>
<view class="tishi_button" style="width: 200rpx;" @click="tuikuan(order_info.id)"></view>
</view>
</view>
</uni-popup>
<uni-popup ref="TransferPopupRef" style="z-index: 999;">
<view class="tishi_main">
<view v-if="ZhuanZengType==1">
@ -314,6 +377,7 @@
<view v-if="(OrderInfoDetail.transfer_type==null || OrderInfoDetail.transfer_type=='') && ZhuanZengType!=1">
<view @click="ZhuanZengPerson(1)" class="tishi_button">指定转赠人</view>
<view @click="CreateTransferCode()" class="tishi_button">生成转赠码</view>
<view style="font-size: 26rpx; text-align: center; color:#ec4d15 ;margin-top: 16rpx;">温馨提示转赠成功后无法线上退款</view>
</view>
<view v-if="OrderInfoDetail.transfer_type==2">
<view>转赠码</view>
@ -385,11 +449,11 @@
<view class="row_label">订单状态:</view>
<view class="row_value">
<view v-if="[1].includes(OrderInfoDetail.status)"> </view>
<view
v-if="[2].includes(OrderInfoDetail.status) ">
已支付 </view>
<view v-if="[3, 5].includes(OrderInfoDetail.status)"> </view>
<view v-if="[2].includes(OrderInfoDetail.status)"> </view>
<view v-if="[3].includes(OrderInfoDetail.status)"> </view>
<view v-if="[4].includes(OrderInfoDetail.status)"> </view>
<view v-if="[5].includes(OrderInfoDetail.status)"> 退 </view>
<view v-if="[6].includes(OrderInfoDetail.status)"> </view>
</view>
</view>
<view class="OrderInfoRow">
@ -402,6 +466,11 @@
<view class="row_value">{{OrderInfoDetail.created_at}}
</view>
</view>
<view class="OrderInfoRow" v-if="OrderInfoDetail.status==2 && OrderInfoDetail.youxiaoqi_end">
<view class="row_label">订单有效期:</view>
<view class="row_value">{{OrderInfoDetail.youxiaoqi_end}}
</view>
</view>
<view >
<view class="OrderInfoRow" v-if="OrderInfoDetail.transfer_type==2">
@ -502,10 +571,10 @@
<text class="time_red">{{ count_down_text }}</text>
<text>内完成婚检预约</text>
</view>
<view v-if="[2, 4].includes(order_info.status)">
<!-- <view v-if="[2, 4].includes(order_info.status)">
<view v-if="order_info.pay_time"></view>
<view>{{ order_info.pay_time }}</view>
</view>
</view> -->
<view v-if="[5].includes(order_info.status)">
<view>退款时间</view>
<view>{{ order_info.refund_time }}</view>
@ -535,7 +604,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) && !order_info.source?.includes('')" @click="Refound(order_info)"
<view v-if="[2].includes(order_info.status) && order_info.type=='' && !order_info.source?.includes('')" @click="Refound(order_info)"
class="button_item_wrapper refund_button_wrapper">退款</view>
</view>
</view>
@ -666,6 +735,7 @@
}
.combo_name_wrapper {
padding-top: 4rpx;
width: calc(550rpx - 30rpx);
font-weight: bold;
font-size: 32rpx;
@ -755,4 +825,24 @@
border-radius: 40rpx;
margin: 40rpx auto 10rpx auto;
}
.tishi_title{
text-align: center;
font-size: 30rpx;
font-weight: 600;
color:#2b2827;
}
.tishi_title2{
font-size: 28rpx;
margin-top: 30rpx;
font-weight: 600;
color:#3a3635;
border-left: 3px solid #009da5;
padding-left: 5rpx;
}
.tishi_content{
font-size: 28rpx;
margin-top: 30rpx;
color:#474241;
}
</style>

@ -222,7 +222,12 @@
losePrice.value = response.data.lose_price;
comboInfo.value = response.data.combo_info;
if(comboInfo.value.items?.length){
contentInfo.value.push(comboInfo.value.items)
comboInfo.value.items.forEach((v,i)=>{
if(v.keshi_name!="材料费"){
contentInfo.value.push(v)
}
})
}
itemsInfo.value = response.data.items_info;
if(itemsInfo.value.items?.length){
@ -552,7 +557,7 @@
height: 58rpx;
line-height: 58rpx;
text-align: center;
width: 174rpx;
min-width: 174rpx;
border-radius: 58rpx;
margin-right: 20rpx;
font-size: 29rpx;

Loading…
Cancel
Save