调试接口

This commit is contained in:
wangxiaowei
2025-12-22 19:06:04 +08:00
parent ca0d16cf05
commit 90e9448b68
15 changed files with 220 additions and 152 deletions

View File

@ -141,19 +141,23 @@
const storeId = ref<number>(0) // 门店ID
const teaRoomId = ref<number>(0) // 包间ID
const couponId = ref<number>(0) // 选中的优惠券ID
onLoad((args) => {
onLoad(async (args) => {
teaRoomId.value = args.id
console.log("🚀 ~ teaRoomId.value:", teaRoomId.value)
storeId.value = args.storeId || 0
couponType.value = args.type // 1:优惠券 2:团购券
// 初始化优惠券数据
if (args.id && args.numbers && args.type == 1) {
// 获取到包间ID和预定了几个小时
Coupons.handleInitCoupon(args.id, args.numbers)
await Coupons.handleInitCoupon(args.id, args.numbers)
checkedId.value = Number(args.couponId) || 0
} else if (args.id && args.type == 2) {
Coupons.handleInitGroupCoupon(args.id, args.numbers)
await Coupons.handleInitGroupCoupon(args.id, args.numbers)
checkedId.value = Number(args.groupCouponId) || 0
console.log("🚀 ~ checkedId.value :", checkedId.value )
}
})
@ -172,8 +176,6 @@
* 初始化团购券列表
*/
handleInitGroupCoupon: async (id: number, numbers: number) => {
console.log("🚀 ~ teaRoomId.value2:", teaRoomId.value)
const res = await getTeaRoomGroupCouponList({store_id: storeId.value, room_id: teaRoomId.value})
groupCouponList.value = res.list
},

View File

@ -22,10 +22,10 @@
<text v-if="orderStatus === GroupComboOrderStatus.Used">感谢购买期待再次光临</text>
<view v-if="orderStatus === GroupComboOrderStatus.Refunded" class="text-center mt-14rpx">
<view class="text-40rpx text-[#303133] leading-56rpx">
<view>退款成功{{ order.order_amount }}</view>
<view>退款成功{{ order.order_amount }}</view>
</view>
<view class="text-28rpx text-[#606266] leading-54rpx mt-20rpx">谢谢您的信任我们一定会做的更好</view>
<view class="text-24rpx text-[#606266] leading-34rpx mt-12rpx">2025年4月13日 18:22</view>
<view class="text-24rpx text-[#606266] leading-34rpx mt-12rpx">{{ order.update_dtime }}</view>
</view>
</view>
@ -143,7 +143,7 @@
</view>
<!-- 操作按钮 -->
<view class="w-full fixed bottom-0 left-0 right-0 bg-white h-152rpx">
<view class="w-full fixed bottom-0 left-0 right-0 bg-white h-152rpx" v-if="orderStatus !== GroupComboOrderStatus.Refunded">
<!-- 直营店 -->
<view class="mt-34rpx" v-if="order.store.operation_type == StoreType.Direct">
<!-- 待使用 -->
@ -158,10 +158,10 @@
</view>
<!-- 已退款 -->
<view class="text-32rpx leading-44rpx flex items-center justify-center leading-90rpx text-center" v-if="orderStatus === GroupComboOrderStatus.Refunded">
<!-- <view class="text-32rpx leading-44rpx flex items-center justify-center leading-90rpx text-center" v-if="orderStatus === GroupComboOrderStatus.Refunded">
<view class="w-330rpx h-90rpx bg-[#F6F7F8] rounded-8rpx text-[#303133] mr-30rpx" @click="OrderDetail.handleCallPhone">联系商家</view>
<view class="w-330rpx h-90rpx bg-[#F6F7F8] rounded-8rpx text-[#303133]" @click="OrderDetail.handleCallPhone">联系平台</view>
</view>
</view> -->
</view>
<!-- 加盟店 -->
@ -172,10 +172,10 @@
</view>
<!-- 已退款 -->
<view class="text-32rpx leading-44rpx flex items-center justify-center leading-90rpx text-center" v-if="orderStatus === GroupComboOrderStatus.Refunded">
<!-- <view class="text-32rpx leading-44rpx flex items-center justify-center leading-90rpx text-center" v-if="orderStatus === GroupComboOrderStatus.Refunded">
<view class="w-330rpx h-90rpx bg-[#F6F7F8] rounded-8rpx text-[#303133] mr-30rpx" @click="OrderDetail.handleCallPhone">联系商家</view>
<view class="w-330rpx h-90rpx bg-[#F6F7F8] rounded-8rpx text-[#303133]" @click="OrderDetail.handleCallPhone">联系平台</view>
</view>
</view> -->
</view>
</view>
</view>

View File

@ -86,7 +86,15 @@
</wd-popup>
<view>
<navbar :title="title" custom-class='!bg-[#F6F7F8]'></navbar>
<navbar :title="title" custom-class='!bg-[#F6F7F8]' v-if="!shareSource"></navbar>
<wd-navbar v-if="shareSource == 'TransferOrder'" safeAreaInsetTop custom-class='!bg-[#F6F7F8]' :bordered="false" placeholder left-text="返回" left-arrow>
<template #capsule>
<view class="flex items-center">
<wd-navbar-capsule @back="router.navigateBack" @back-home="router.reLaunch('/pages/index/index')" />
<view class="ml-20rpx">{{title}}</view>
</view>
</template>
</wd-navbar>
</view>
<!-- 描述信息 -->
@ -114,8 +122,8 @@
</view>
<view class="flex-1">
<view class="flex justify-between items-center" @click="OrderDetail.handleToStore">
<view class="flex items-center font-bold text-30rpx leading-42rpx text-[#303133] mr-10rpx">
<view class="line-1 w-300rpx">
<view class="flex items-center font-bold text-30rpx leading-42rpx text-[#303133] mr-10rpx line-1 w-300rpx">
<view class="line-1">
{{ order.room_msg.title }}
</view>
<wd-icon name="chevron-right" size="32rpx"></wd-icon>
@ -388,8 +396,8 @@
}
})
// 一键续订的金额
const totalReserveMoney = ref<number>(0)
// 一键续订的时间
const renewHour = ref<number>(0)
// 获取当前年月日格式YYYY-MM-DD
const now = new Date();
@ -403,23 +411,31 @@
onLoad((args) => {
shareSource.value = args.shareSource || ''
if (args.orderId) {
orderId.value = args.orderId
orderId.value = args.orderId
// 这里写判断是因为要处理页面分享出去的时候有这个参数但是没有token会触发网络请求跳转到登录页再加上页面登录权限路由
// 就会出现2次跳转登录页,这个是正常加载订单详情
if (args.orderId && shareSource.value != 'TransferOrder') {
// 获取订单详情
OrderDetail.handleInit()
}
// 这个是用户分享登录之后再次进入小程序加载事件
const token = uni.getStorageSync('token')
if (token && shareSource.value === 'TransferOrder') {
// 处理转让订单
OrderDetail.handleInit()
OrderDetail.handleTransferOrder()
}
// 如果是从分享进入的未登录的情况下TransferOrder需要转让订单
uni.$on('transferOrder', () => {
uni.$on('transferOrder', (params) => {
// 处理未登录的情况下
orderId.value = params?.orderId
shareSource.value = params?.shareSource
uni.$off('transferOrder')
OrderDetail.handleInit()
OrderDetail.handleTransferOrder()
})
})
@ -443,10 +459,11 @@
* 获取订单详情
*/
handleInit: async () => {
// 这里单独处理下经纬度,因为分享的时候没有经纬度
const res = await getTeaRoomOrderDetail({
id: orderId.value,
latitude: uni.getStorageSync('latitude'),
longitude: uni.getStorageSync('longitude')
latitude: uni.getStorageSync('latitude') || import.meta.env.VITE_DEFAULT_LATITUDE,
longitude: uni.getStorageSync('longitude') || import.meta.env.VITE_DEFAULT_LONGITUDE,
})
order.value = res.details
console.log("🚀 ~ order.value :", order.value )
@ -515,44 +532,42 @@
* 确认一键续订
*/
handleRenewReserve: async () => {
uni.showLoading({ title: '加载中...' })
// uni.showLoading({ title: '加载中...' })
try {
await renewTeaRoomOrder({
id: orderId.value,
start_time: reserveTime.value[2][0],
end_time: reserveTime.value[2][reserveTime.value[2].length - 1],
renew_hour: reserveTime.value[3],
})
// try {
// await renewTeaRoomOrder({
// id: orderId.value,
// renew_hour: renewHour,
// })
uni.$on('payment', params => {
uni.$off("payment")
if (params.result) {
OrderDetail.handleInit()
showRenewSuccessPopup.value = true
} else {
message.alert({
title: '提示',
msg: '您已取消续订',
confirmButtonText: '确定',
confirmButtonProps: {
customClass: '!bg-[#4C9F44] !text-[#fff] !text-32rpx !leading-44rpx !rounded-8rpx',
}
})
}
})
// uni.$on('payment', params => {
// uni.$off("payment")
// if (params.result) {
// OrderDetail.handleInit()
// showRenewSuccessPopup.value = true
// } else {
// message.alert({
// title: '提示',
// msg: '您已取消续订',
// confirmButtonText: '确定',
// confirmButtonProps: {
// customClass: '!bg-[#4C9F44] !text-[#fff] !text-32rpx !leading-44rpx !rounded-8rpx',
// }
// })
// }
// })
uni.hideLoading()
showRenewPopup.value = false
// uni.hideLoading()
// showRenewPopup.value = false
router.navigateTo(
`/pages/cashier/cashier?from=${OrderType.TeaRoomOrder}&renew=renewTeaRoomOrder&orderId=${orderId.value}&teaRoomName=${order.value.store_msg.name}&storeId=${order.value.store_msg.id}`
)
} catch (err) {
uni.hideLoading()
toast.info('续订失败')
return false
}
// router.navigateTo(
// `/pages/cashier/cashier?from=${OrderType.TeaRoomOrder}&renew=renewTeaRoomOrder&orderId=${orderId.value}&teaRoomName=${order.value.store_msg.name}&storeId=${order.value.store_msg.id}`
// )
// } catch (err) {
// uni.hideLoading()
// toast.info('续订失败')
// return false
// }
},
/**
@ -587,9 +602,34 @@
/**
* 修改一键续订时间
*/
handleChooseRenewTime: (item) => {
console.log("🚀 ~ item:", item)
handleChooseRenewTime: async (item) => {
uni.showLoading({ title: '加载中...', mask: true })
try {
const res = await renewTeaRoomOrder({
id: orderId.value,
renew_hour: item.value,
})
// 支付后的处理
uni.$on('payment', params => {
uni.$off("payment")
if (params.result) {
toast.info('续订成功')
} else {
toast.info('续订失败')
}
OrderDetail.handleInit()
})
uni.hideLoading()
router.navigateTo(
`/pages/cashier/cashier?from=${OrderType.TeaRoomOrder}&renew=renewOrder&renewPrice=${res.price}&orderId=${res.order_id}&name=${order.value.store_msg.name}&storeId=${order.value.store_msg.id}`
)
} catch(e) {
uni.hideLoading()
return false
}
},
/**
@ -615,9 +655,9 @@
transferOrder(orderId.value).then(res => {
console.log('开始转让订单4', res)
uni.removeStorageSync('transferOrder')
toast.success('订单接收成功')
router.redirectTo('/bundle/order/tea-room/order-list', 500)
router.switchTab('/pages/my/my', 500)
})
}
}).catch(() => {

View File

@ -41,7 +41,7 @@
<view>-¥{{ bill.groupCoupon || 0 }}</view>
</view>
<view class="flex justify-between items-center text-24rpx text-[#909399] leading-34rpx mt-16rpx">
<view>会员折</view>
<view>会员折</view>
<view>-¥{{ bill.discount || 0 }}</view>
</view>
</view>
@ -93,7 +93,7 @@
{{ teaRoomPackage.sold > 10 ? teaRoomPackage.sold + '+' : teaRoomPackage.sold }}
</template>
<template v-else>
{{ teaRoom.sold > 10 ? teaRoom.sold + '+' : teaRoom.sold }}
{{ teaRoom.room?.sold > 10 ? teaRoom.room?.sold + '+' : teaRoom.room?.sold }}
</template>
</view>
</view>
@ -144,6 +144,27 @@
</view>
</view>
</view>
<!-- 团购券 -->
<view class="bg-white rounded-16rpx py-26rpx px-30rpx mt-24rpx mx-30rpx" @click="Detail.handleToCoupon(CouponType.GroupBuy)">
<view class="text-[#303133] text-32rpx leading-44rpx font-bold mb-24rpx">团购券</view>
<view class="flex items-center justify-between">
<view class="text-[26rpx] text-[#606266] leading-36rpx">团购券</view>
<view class="flex items-center">
<view class="text-[28rpx] text-[#909399] leading-40rpx">
<template v-if="selectedGroupCoupon?.id > 0">
{{ selectedGroupCoupon.name }}
</template>
<template v-else>
请选择
</template>
</view>
<view class="mt-4rpx">
<wd-icon name="chevron-right" size="22px" color="#909399"></wd-icon>
</view>
</view>
</view>
</view>
<!-- 优惠券 -->
<view class="bg-white rounded-16rpx py-26rpx px-30rpx mt-24rpx mx-30rpx" @click="Detail.handleToCoupon(CouponType.Discount)">
@ -166,26 +187,6 @@
</view>
</view>
<!-- 团购券 -->
<view class="bg-white rounded-16rpx py-26rpx px-30rpx mt-24rpx mx-30rpx" @click="Detail.handleToCoupon(CouponType.GroupBuy)">
<view class="text-[#303133] text-32rpx leading-44rpx font-bold mb-24rpx">团购券</view>
<view class="flex items-center justify-between">
<view class="text-[26rpx] text-[#606266] leading-36rpx">团购券</view>
<view class="flex items-center">
<view class="text-[28rpx] text-[#909399] leading-40rpx">
<template v-if="selectedGroupCoupon?.id > 0">
{{ selectedGroupCoupon.name }}
</template>
<template v-else>
请选择
</template>
</view>
<view class="mt-4rpx">
<wd-icon name="chevron-right" size="22px" color="#909399"></wd-icon>
</view>
</view>
</view>
</view>
</view>
<view v-if="isGroupBuying">
@ -291,6 +292,7 @@
import PriceFormat from '@/components/PriceFormat.vue'
import BookingTime from '@/components/BookingTime.vue'
import { getUserInfo } from '@/api/user'
import { getTeaRoomGroupCouponList } from '@/api/tea-room'
const OSS = inject('OSS')
@ -360,6 +362,8 @@
// 选择的优惠券
const selectedCoupon = ref<{id: number, name: string}>({id: 0, name: ''})
const selectedGroupCoupon = ref<{id: number, name: string}>({id: 0, name: ''})
const selectCouponId = ref<number>(0)
const selectGroupCouponId = ref<number>(0)
// 用户信息
const user = ref<any>(null)
@ -370,6 +374,12 @@
// 页面类型
const pageType = ref<string>('')
// 防止重复提交
const isSubmitting = ref(false)
// 团购套餐列表
const groupCouponList = ref<Array<any>>([])
onLoad((args) => {
storeId.value = Number(args.storeId)
id.value = Number(args.id) // 在茶室下这个id是包间ID在团购下是套餐ID
@ -389,7 +399,6 @@
})
// 防止重复提交
const isSubmitting = ref(false)
const Detail = {
/**
@ -421,8 +430,12 @@
// 获取门店余额
const balance = await getTeaRoomBalance({ store_id: storeId.value })
storeMoney.value = balance.data.money || 0
},
// 获取团购券
const group = await getTeaRoomGroupCouponList({store_id: storeId.value, room_id: id.value})
groupCouponList.value = group.list
},
/*
* 初始化套餐详情
*/
@ -468,6 +481,19 @@
toast.info('请选择预定时间')
return
}
// 在选择优惠券之前需要先选择团购券
if (type === CouponType.Discount && groupCouponList.value.length > 0 && selectedGroupCoupon.value.id == 0) {
toast.info('请先选择团购券')
return
}
// 如果选择优惠券之前订单金额已经是0的话则不用再选择优惠券
if (type === CouponType.Discount && selectedGroupCoupon.value.id > 0 && bill.value.total <= 0) {
toast.info('当前订单金额已为0无需选择优惠券')
return
}
uni.$on('chooseCoupon', params => {
console.log("🚀 ~ params:", params)
uni.$off('chooseCoupon')
@ -475,9 +501,11 @@
if (type === CouponType.Discount) {
selectedCoupon.value = {id: params.coupon.user_coupon_id, name: `${params.coupon.name}${params.coupon.coupon_price}` }
bill.value.coupon = params.coupon.coupon_price
selectCouponId.value = params.coupon.id // 这里的ID是在数据表自增的ID保存下来是为了回显列表的,没有其他作用
} else {
selectedGroupCoupon.value = {id: params.coupon.group_id, name: `团购券-${params.coupon?.title}` }
bill.value.groupCoupon = params.coupon.coupon_price
selectGroupCouponId.value = params.coupon.id // 这里的ID是在数据表自增的ID保存下来是为了回显列表的,没有其他作用
}
Detail.handleCalculateTeaRoomPrice()
@ -485,7 +513,9 @@
// 获取预定了几个小时
const count = bill.value.service.num
router.navigateTo(`/bundle/coupon/coupon?id=${id.value}&numbers=${count}&type=${type}&storeId=${storeId.value}`)
console.log("🚀 ~ selectCouponId:", selectCouponId.value)
router.navigateTo(`/bundle/coupon/coupon?id=${id.value}&numbers=${count}&type=${type}&storeId=${storeId.value}&couponId=${selectCouponId.value}&groupCouponId=${selectGroupCouponId.value}`)
},
/**
@ -523,7 +553,7 @@
user_coupon_id: selectedCoupon.value.id || 0,
hours: bill.value.service.num,
group_coupon_id: selectedGroupCoupon.value.id || 0,
timeslot: timeSlots.value
timeslot: timeSlots.value.join(',')
}
res = await createTeaRoomOrder(params)
}
@ -571,7 +601,7 @@
const res = await calculateTeaRoomPrice({
room_id: id.value,
coupon_id: selectedCoupon.value.id || 0,
group_coupon_id: selectedGroupCoupon.value.id,
group_coupon_id: selectedGroupCoupon.value.id || 0,
nums: bill.value.service.num,
})