3 Commits

Author SHA1 Message Date
e987030a70 更新版本号和完善一店一码的功能 2026-05-16 14:21:31 +08:00
4c33f1b460 修改功能 2026-05-13 09:53:09 +08:00
473e40b817 完善功能 2026-05-09 16:50:00 +08:00
10 changed files with 159 additions and 60 deletions

View File

@ -67,7 +67,7 @@ export function getHomeTeaStoreList(data: IHomeTeaStoreListParams) {
* 获取茶室开通城市列表 * 获取茶室开通城市列表
*/ */
export function getOpenCityList() { export function getOpenCityList() {
return http.Post<IOpenCityListResult>('/api/teaStore/teaStoreCity', null, return http.Post<IOpenCityListResult>('/api/teaStore/teaStoreCity', {},
{ {
meta: { ignoreAuth: true } meta: { ignoreAuth: true }
} }
@ -85,7 +85,7 @@ export function getTeaRoomSearchHistory() {
* 清除茶室搜索历史 * 清除茶室搜索历史
*/ */
export function clearTeaRoomSearchHistory() { export function clearTeaRoomSearchHistory() {
return http.Post('/api/teaStore/delTeaStoreSearchHistory', null) return http.Post('/api/teaStore/delTeaStoreSearchHistory', {})
} }
/** /**
@ -97,6 +97,7 @@ export interface IRoomDetailParams {
longitude: number longitude: number
user_id: number user_id: number
room_id?: number room_id?: number
is_scan?: boolean
} }
export function getTeaRoomDetail(data: IRoomDetailParams) { export function getTeaRoomDetail(data: IRoomDetailParams) {

View File

@ -70,7 +70,7 @@
<template v-if="tab === 0"> <template v-if="tab === 0">
<view class="flex items-center bg-white p-20rpx rounded-10rpx mx-30rpx mb-20rpx relative" <view class="flex items-center bg-white p-20rpx rounded-10rpx mx-30rpx mb-20rpx relative"
v-for="(item, index) in list" :key="index"> v-for="(item, index) in list" :key="index">
<view class="mr-28rpx relative z-2" @click="Collect.handlePreviewImage(item.image)"> <view class="mr-28rpx relative z-2" @click="Collect.handlePreviewImage(item.image, item.image_arr)">
<wd-img width="260rpx" height="320rpx" :src="item.image" mode="aspectFill" <wd-img width="260rpx" height="320rpx" :src="item.image" mode="aspectFill"
radius="10rpx"></wd-img> radius="10rpx"></wd-img>
<view <view
@ -88,6 +88,9 @@
<view class="font-bold text-[#303133] text-30rpx leading-42rpx mr-12rpx"> <view class="font-bold text-[#303133] text-30rpx leading-42rpx mr-12rpx">
{{ item.name }} {{ item.name }}
</view> </view>
<view class="tea-specialist-level-badge flex items-center shrink-0 mr-12rpx">
<text class="tea-specialist-level-badge__text ml-6rpx">{{ GetTeaSpecialistLevelLabel(item.level) }}</text>
</view>
<view class="flex items-center"> <view class="flex items-center">
<wd-icon name="star-on" size="22rpx" color="#FF5951"></wd-icon> <wd-icon name="star-on" size="22rpx" color="#FF5951"></wd-icon>
<view class="font-400 text-24rpx text-[#FF5951] leading-34rpx ml-6rpx"> <view class="font-400 text-24rpx text-[#FF5951] leading-34rpx ml-6rpx">
@ -101,24 +104,32 @@
</view> </view>
</view> </view>
<view class="flex flex-wrap items-center mb-14rpx gap-y-12rpx">
<view class="flex items-center mb-14rpx">
<!-- 到店服务标签 --> <!-- 到店服务标签 -->
<view class="mr-12rpx" v-if="item.server_type == 1 || item.server_type == 3"> <view class="mr-12rpx shrink-0"
v-if="item.server_type == 1 || item.server_type == 3">
<wd-tag color="#F55726" bg-color="#F55726" plain <wd-tag color="#F55726" bg-color="#F55726" plain
custom-class="!rounded-4rpx">到店服务</wd-tag> custom-class="!rounded-4rpx whitespace-nowrap">到店服务</wd-tag>
</view> </view>
<!-- 上门服务标签 --> <!-- 上门服务标签 -->
<view class="mr-12rpx" v-if="item.server_type == 2 || item.server_type == 3"> <view class="mr-12rpx shrink-0"
v-if="item.server_type == 2 || item.server_type == 3">
<wd-tag color="#40AE36" bg-color="#40AE36" plain <wd-tag color="#40AE36" bg-color="#40AE36" plain
custom-class="!rounded-4rpx">上门服务</wd-tag> custom-class="!rounded-4rpx whitespace-nowrap">上门服务</wd-tag>
</view> </view>
<view class="mr-12rpx"> <view class="mr-12rpx shrink-0" v-if="item.is_mileage == 1">
<wd-tag color="#818CA9" bg-color="#F3F3F3">{{ item.both }}岁</wd-tag> <!-- 醒目的红色实心标签 -->
<wd-tag color="#FFF" bg-color="#FF5951"
custom-class="!rounded-4rpx whitespace-nowrap border-none !px-12rpx">免费出行</wd-tag>
</view> </view>
<view class="flex items-center mt-8rpx">
<view class="mr-12rpx shrink-0">
<wd-tag color="#818CA9" bg-color="#F3F3F3"
custom-class="whitespace-nowrap">{{ item.both }}岁</wd-tag>
</view>
<view class="flex items-center shrink-0">
<wd-img <wd-img
:src="item.sex == 1 ? `${OSS}icon/icon_man.png` : `${OSS}icon/icon_woman.png`" :src="item.sex == 1 ? `${OSS}icon/icon_man.png` : `${OSS}icon/icon_woman.png`"
width="28rpx" height="28rpx"></wd-img> width="28rpx" height="28rpx"></wd-img>
@ -173,9 +184,10 @@ import { ref } from 'vue'
import { toast } from '@/utils/toast' import { toast } from '@/utils/toast'
import { onPageScroll, onReachBottom } from '@dcloudio/uni-app' import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
import useMescroll from "@/uni_modules/mescroll-uni/hooks/useMescroll.js" import useMescroll from "@/uni_modules/mescroll-uni/hooks/useMescroll.js"
import { getCollectTeaRoomList, collectTeaRoom } from '@/api/tea-room' import { collectTeaRoom } from '@/api/tea-room'
import { getCollectTeaSpecialistList, collectTeaSpecialist } from '@/api/tea-specialist' import { getCollectTeaSpecialistList, collectTeaSpecialist } from '@/api/tea-specialist'
import { router, previewImage } from '@/utils/tools' import { router, previewImage } from '@/utils/tools'
import { GetTeaSpecialistLevelLabel } from '@/utils/teaSpecialist'
const tab = ref<number>(0) const tab = ref<number>(0)
const OSS = inject('OSS') const OSS = inject('OSS')
@ -276,8 +288,8 @@ const Collect = {
/** /**
* 预览图片 * 预览图片
*/ */
handlePreviewImage: (img: any) => { handlePreviewImage: (img: any, imageList: any) => {
previewImage(img, [img]) previewImage(img, imageList)
}, },
// 取消收藏茶艺师 // 取消收藏茶艺师
@ -319,4 +331,21 @@ page {
background-image: url(#{$OSS}images/collect/collect_image1.png); background-image: url(#{$OSS}images/collect/collect_image1.png);
background-size: 100% 100%; background-size: 100% 100%;
} }
.tea-specialist-level-badge {
height: 40rpx;
padding: 0 14rpx 0 8rpx;
border-radius: 999rpx;
background: linear-gradient(135deg, #f7fbf4 0%, #e5f5de 100%);
border: 1rpx solid rgba(76, 159, 68, 0.18);
box-shadow: 0 6rpx 16rpx rgba(76, 159, 68, 0.08);
}
.tea-specialist-level-badge__text {
color: #2f7d32;
font-size: 22rpx;
line-height: 22rpx;
font-weight: 600;
letter-spacing: 2rpx;
}
</style> </style>

View File

@ -203,7 +203,6 @@
<navbar :title="title" custom-class='!bg-[#F6F7F8]' :leftArrow="false"></navbar> <navbar :title="title" custom-class='!bg-[#F6F7F8]' :leftArrow="false"></navbar>
<view class="text-[#909399] text-26rpx leading-36rpx mb-40rpx"> <view class="text-[#909399] text-26rpx leading-36rpx mb-40rpx">
<view class="text-center" v-if="orderStatus == TeaSpecialistOrderStatus.Arrived || orderStatus == TeaSpecialistOrderStatus.Accepted">使用过程中有任何问题请联系客服</view>
<view class="flex items-center justify-center" v-if="(orderStatus == TeaSpecialistOrderStatus.Unpaid || orderStatus == TeaSpecialistOrderStatus.Pending) && order.timekeeping > 0"> <view class="flex items-center justify-center" v-if="(orderStatus == TeaSpecialistOrderStatus.Unpaid || orderStatus == TeaSpecialistOrderStatus.Pending) && order.timekeeping > 0">
<view class="flex items-center mr-6rpx"> <view class="flex items-center mr-6rpx">
<wd-img width="36rpx" height="36rpx" :src="`${OSS}icon/icon_time.png`"/> <wd-img width="36rpx" height="36rpx" :src="`${OSS}icon/icon_time.png`"/>
@ -230,9 +229,19 @@
<view class="mx-30rpx coupon-bg" v-if="orderStatus < TeaSpecialistOrderStatus.SpecialistRefund"> <view class="mx-30rpx coupon-bg" v-if="orderStatus < TeaSpecialistOrderStatus.SpecialistRefund">
<view class="flex items-center px-30rpx pt-30rpx"> <view class="flex items-center px-30rpx pt-30rpx">
<view class="mr-30rpx"> <view class="mr-30rpx">
<wd-img width="190rpx" height="190rpx" :src="order.image" mode="scaleToFill"></wd-img> <wd-img width="190rpx" height="190rpx" :src="order.image" mode="scaleToFill" @click="OrderDetail.handlePreviewImage(order.image, order.image_arr)"></wd-img>
</view> </view>
<view class="flex-1"> <view class="flex-1">
<view class="flex flex-col items-end shrink-0 text-[#FF5951]">
<text v-if="orderStatus === TeaSpecialistOrderStatus.Unpaid" class="text-28rpx mb-12rpx">待付款</text>
<text v-else-if="orderStatus === TeaSpecialistOrderStatus.Pending" class="text-28rpx mb-12rpx">待接单</text>
<text v-else-if="orderStatus >= TeaSpecialistOrderStatus.SpecialistRefund && orderStatus <= TeaSpecialistOrderStatus.CustomerRefundAfterArrive" class="text-28rpx mb-12rpx text-[#606266]">已退款</text>
<text v-else-if="orderStatus === TeaSpecialistOrderStatus.Accepted" class="text-28rpx mb-12rpx">已预约</text>
<text v-else-if="orderStatus === TeaSpecialistOrderStatus.Departed" class="text-28rpx mb-12rpx">已出发</text>
<text v-else-if="orderStatus === TeaSpecialistOrderStatus.Arrived" class="text-28rpx mb-12rpx">服务中</text>
<text v-else-if="orderStatus === TeaSpecialistOrderStatus.Completed" class="text-28rpx mb-12rpx">完成</text>
<text v-else-if="orderStatus === TeaSpecialistOrderStatus.Cancelled" class="text-28rpx mb-12rpx">订单取消</text>
</view>
<view class="flex justify-between items-center"> <view class="flex justify-between items-center">
<view class="font-bold text-30rpx leading-42rpx text-[#303133] mr-10rpx line-1 w-280rpx"> <view class="font-bold text-30rpx leading-42rpx text-[#303133] mr-10rpx line-1 w-280rpx">
{{ order.title }} {{ order.title }}
@ -311,6 +320,14 @@
</view> </view>
</view> </view>
<!-- 联系官方客服 -->
<view class="px-30rpx mx-30rpx mt-20rpx rounded-16rpx h-90rpx flex justify-between items-center border-[2rpx] border-[#4C9F44] bg-[#F2FAF4]" @click="OrderDetail.handleContactService">
<view class="font-bold text-26rpx leading-48rpx text-[#4C9F44]">服务遇到问题或需要帮助?</view>
<view class="flex items-center bg-[#4C9F44] rounded-8rpx px-18rpx py-8rpx">
<view class="text-24rpx leading-34rpx text-[#fff] ml-6rpx">联系客服</view>
</view>
</view>
<!-- 茶艺服务 --> <!-- 茶艺服务 -->
<view class="bg-white rounded-16rpx px-30rpx pb-32rpx mx-30rpx mt-20rpx" v-if="orderStatus < TeaSpecialistOrderStatus.SpecialistRefund"> <view class="bg-white rounded-16rpx px-30rpx pb-32rpx mx-30rpx mt-20rpx" v-if="orderStatus < TeaSpecialistOrderStatus.SpecialistRefund">
<view class="pt-32rpx text-[#303133] text-32rpx leading-44rpx">茶艺服务</view> <view class="pt-32rpx text-[#303133] text-32rpx leading-44rpx">茶艺服务</view>
@ -392,10 +409,10 @@
<view> <view>
<view class="text-28rpx leading-40rpx flex items-center mt-22rpx"> <view class="text-28rpx leading-40rpx flex items-center mt-22rpx">
<view class="text-[#606266] mr-54rpx">服务方式</view> <view class="text-[#606266] mr-54rpx">服务方式</view>
<view class="text-[#303133]">{{ order.service_type == 1 ? '到店服务' : '上门服务'}}</view> <view class="text-[#303133]">{{ order.server_type == 1 ? '到店服务' : '上门服务'}}</view>
</view> </view>
<view class="text-28rpx leading-40rpx flex items-center mt-22rpx"> <view class="text-28rpx leading-40rpx flex items-center mt-22rpx">
<view class="text-[#606266] mr-54rpx">{{ order.service_type == 1 ? '服务门店' : '服务地址'}}</view> <view class="text-[#606266] mr-54rpx">{{ order.server_type == 1 ? '服务门店' : '服务地址'}}</view>
<view class="text-[#303133] line-1 w-300rpx">{{ order.address }}</view> <view class="text-[#303133] line-1 w-300rpx">{{ order.address }}</view>
</view> </view>
</view> </view>
@ -497,7 +514,7 @@
import { useMessage, useToast } from 'wot-design-uni' import { useMessage, useToast } from 'wot-design-uni'
import { TeaSpecialistManageOrderStatusText, TeaSpecialistManageStatusTextValue, TeaSpecialistOrderStatus} from '@/utils/teaSpecialistOrder' import { TeaSpecialistManageOrderStatusText, TeaSpecialistManageStatusTextValue, TeaSpecialistOrderStatus} from '@/utils/teaSpecialistOrder'
import { handleCancelOrderHooks, handleRefundTeaSpecialistOrderHooks } from '@/hooks/useTeaSpecialistOrder' import { handleCancelOrderHooks, handleRefundTeaSpecialistOrderHooks } from '@/hooks/useTeaSpecialistOrder'
import { router, copy, toPlus } from '@/utils/tools' import { router, copy, toPlus, previewImage } from '@/utils/tools'
import { OrderType } from '@/utils/order' import { OrderType } from '@/utils/order'
import { getTeaTypeList } from '@/api/tea' import { getTeaTypeList } from '@/api/tea'
import { getTeaSpecialistFeeDetails, createTeaSpecialistRenewOrder } from '@/api/tea-specialist' import { getTeaSpecialistFeeDetails, createTeaSpecialistRenewOrder } from '@/api/tea-specialist'
@ -572,7 +589,7 @@
day_time: '', // 预约日期 day_time: '', // 预约日期
start_time: '', // 开始日期 start_time: '', // 开始日期
end_time: '', // 结束日期0 end_time: '', // 结束日期0
service_type: 1, // 服务方式 1到店服务 2上门服务 server_type: 1, // 服务方式 1到店服务 2上门服务
address: '', // 服务地址 address: '', // 服务地址
longitude: 0, // 经度 longitude: 0, // 经度
latitude: 0, // 纬度 latitude: 0, // 纬度
@ -593,6 +610,10 @@
renew_tea_price: 0, // 续订茶叶金额 renew_tea_price: 0, // 续订茶叶金额
tea_price: 0, // 茶叶费 tea_price: 0, // 茶叶费
teacup_price: 0, // 茶具费 teacup_price: 0, // 茶具费
is_mileage: 0, // 是否免费出行
both: 0, // 年龄
sex: 0, // 性别
image_arr: [] // 订单相关图片数组
}) })
onLoad(async (args) => { onLoad(async (args) => {
@ -822,6 +843,27 @@
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: res.mobile phoneNumber: res.mobile
}) })
},
/**
* 联系企业微信客服
*/
handleContactService: () => {
// @ts-ignore
wx.openCustomerServiceChat({
extInfo: {
url: 'https://work.weixin.qq.com/kfid/kfc723bd879ef30a161' //客服ID
},
corpId: 'wwe8c5c7cf7d2010e6',
success(res) {},
fail(res) {
toast.show('调起客服失败')
}
})
},
handlePreviewImage: (img: any, imageList: any) => {
previewImage(img, imageList)
} }
} }
</script> </script>

View File

@ -256,7 +256,7 @@
<!-- 茶艺师信息 --> <!-- 茶艺师信息 -->
<view class="flex items-center bg-white p-20rpx rounded-10rpx mb-20rpx mt-20rpx"> <view class="flex items-center bg-white p-20rpx rounded-10rpx mb-20rpx mt-20rpx">
<view class="mr-28rpx relative"> <view class="mr-28rpx relative">
<wd-img width="200rpx" height="200rpx" :src="info.image" radius="10rpx" @click="previewImage(info.image, [info.image])"></wd-img> <wd-img width="200rpx" height="200rpx" :src="info.image" radius="10rpx" @click="previewImage(info.image, info.image_arr)"></wd-img>
</view> </view>
<view class=""> <view class="">
<view class="font-bold text-[#303133] text-30rpx leading-42rpx mr-14rpx"> <view class="font-bold text-[#303133] text-30rpx leading-42rpx mr-14rpx">
@ -427,7 +427,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { useMessage, useToast } from 'wot-design-uni' import { useToast } from 'wot-design-uni'
import { router, toPlus, previewImage } from '@/utils/tools' import { router, toPlus, previewImage } from '@/utils/tools'
import PriceFormat from '@/components/PriceFormat.vue' import PriceFormat from '@/components/PriceFormat.vue'
import { OrderType } from '@/utils/order' import { OrderType } from '@/utils/order'
@ -440,16 +440,11 @@ import { CouponType } from '@/utils/coupon'
const OSS = inject('OSS') const OSS = inject('OSS')
const toast = useToast() const toast = useToast()
const message = useMessage('wd-message-box-slot')
// 防止重复提交 // 防止重复提交
const isSubmitting = ref(false) const isSubmitting = ref(false)
// 服务方式 // 服务方式
const serviceType = ref<Array<any>>([
{ type: 1, name: '到店服务' },
{ type: 2, name: '上门服务' },
])
const serviceTypeValue = ref<number>(1) const serviceTypeValue = ref<number>(1)
// 选择茶馆 // 选择茶馆
@ -604,7 +599,7 @@ const costParams = ref({
const teaPackage = ref<any>({}) const teaPackage = ref<any>({})
const teaPackageId = ref<number>(0) const teaPackageId = ref<number>(0)
onLoad(async (args) => { onLoad(async (args: any) => {
teaPackageId.value = Number(uni.getStorageSync('teaPackageId')) teaPackageId.value = Number(uni.getStorageSync('teaPackageId'))
if (teaPackageId.value === 0) { if (teaPackageId.value === 0) {

View File

@ -119,7 +119,7 @@
<view class="flex justify-end"> <view class="flex justify-end">
<view class="flex items-center"> <view class="flex items-center">
<view class="font-400 text-[#303133] text-30rpx leading-42rpx"> <view class="font-400 text-[#303133] text-30rpx leading-42rpx">
2.14.16 2.14.19
</view> </view>
</view> </view>
</view> </view>

View File

@ -204,13 +204,17 @@
// 随机颜色列表 // 随机颜色列表
const tagColors = ['#40AE36', '#F55726'] const tagColors = ['#40AE36', '#F55726']
onLoad((args) => { // 是否是扫码进入
const isScan = ref<boolean>(false)
onLoad((args: any) => {
console.log("🚀 ~ args:", args) console.log("🚀 ~ args:", args)
// 处理小程序码扫码进入时的 scene 参数 // 处理小程序码扫码进入时的 scene 参数
if (!args.id && args.scene) { if (!args.id && args.scene) {
const scene = decodeURIComponent(args.scene) const scene = decodeURIComponent(args.scene)
const params = strToParams(scene) const params = strToParams(scene)
Object.assign(args, params) Object.assign(args, params)
isScan.value = true
} }
if (args.id) { if (args.id) {
@ -223,6 +227,7 @@
Room.handleInit() Room.handleInit()
} }
console.log("🚀 ~ args2:", args)
// 如果是从分享进入的未登录的情况下 // 如果是从分享进入的未登录的情况下
uni.$on('refreshShareTeaRoomLists', (params) => { uni.$on('refreshShareTeaRoomLists', (params) => {
@ -302,7 +307,8 @@
id: teaRoomId.value, id: teaRoomId.value,
latitude: uni.getStorageSync('latitude') || import.meta.env.VITE_DEFAULT_LATITUDE, latitude: uni.getStorageSync('latitude') || import.meta.env.VITE_DEFAULT_LATITUDE,
longitude: uni.getStorageSync('longitude') || import.meta.env.VITE_DEFAULT_LONGITUDE, longitude: uni.getStorageSync('longitude') || import.meta.env.VITE_DEFAULT_LONGITUDE,
user_id: userInfo.value.id || 0 user_id: userInfo.value.id || 0,
is_scan: isScan.value
}) })
if (res && res.status == 0) { if (res && res.status == 0) {

View File

@ -145,7 +145,7 @@
:up="upOption" fixed> :up="upOption" fixed>
<view class="flex items-center bg-white p-20rpx rounded-10rpx mx-30rpx mb-20rpx relative" <view class="flex items-center bg-white p-20rpx rounded-10rpx mx-30rpx mb-20rpx relative"
v-for="(item, index) in list" :key="index"> v-for="(item, index) in list" :key="index">
<view class="mr-28rpx relative z-2" @click="List.handlePreviewImage(item.image)"> <view class="mr-28rpx relative z-2" @click="List.handlePreviewImage(item.image, item.image_arr)">
<wd-img width="260rpx" height="320rpx" :src="item.image" mode="aspectFill" <wd-img width="260rpx" height="320rpx" :src="item.image" mode="aspectFill"
radius="10rpx"></wd-img> radius="10rpx"></wd-img>
<view <view
@ -170,23 +170,29 @@
</view> </view>
</view> </view>
<view class="flex items-center mb-14rpx"> <view class="flex flex-wrap items-center mb-14rpx gap-y-12rpx">
<!-- 到店服务标签 --> <!-- 到店服务标签 -->
<view class="mr-12rpx" v-if="item.server_type == 1 || item.server_type == 3"> <view class="mr-12rpx shrink-0" v-if="item.server_type == 1 || item.server_type == 3">
<wd-tag color="#F55726" bg-color="#F55726" plain <wd-tag color="#F55726" bg-color="#F55726" plain
custom-class="!rounded-4rpx">到店服务</wd-tag> custom-class="!rounded-4rpx whitespace-nowrap">到店服务</wd-tag>
</view> </view>
<!-- 上门服务标签 --> <!-- 上门服务标签 -->
<view class="mr-12rpx" v-if="item.server_type == 2 || item.server_type == 3"> <view class="mr-12rpx shrink-0" v-if="item.server_type == 2 || item.server_type == 3">
<wd-tag color="#40AE36" bg-color="#40AE36" plain <wd-tag color="#40AE36" bg-color="#40AE36" plain
custom-class="!rounded-4rpx">上门服务</wd-tag> custom-class="!rounded-4rpx whitespace-nowrap">上门服务</wd-tag>
</view> </view>
<view class="mr-12rpx"> <view class="mr-12rpx shrink-0" v-if="item.is_mileage == 1">
<wd-tag color="#818CA9" bg-color="#F3F3F3">{{ item.both }}岁</wd-tag> <!-- 醒目的红色实心标签 -->
<wd-tag color="#FFF" bg-color="#FF5951"
custom-class="!rounded-4rpx whitespace-nowrap border-none !px-12rpx">免费出行</wd-tag>
</view> </view>
<view class="flex items-center mt-8rpx">
<view class="mr-12rpx shrink-0">
<wd-tag color="#818CA9" bg-color="#F3F3F3" custom-class="whitespace-nowrap">{{ item.both }}岁</wd-tag>
</view>
<view class="flex items-center shrink-0">
<wd-img :src="item.sex == 1 ? `${OSS}icon/icon_man.png` : `${OSS}icon/icon_woman.png`" <wd-img :src="item.sex == 1 ? `${OSS}icon/icon_man.png` : `${OSS}icon/icon_woman.png`"
width="28rpx" height="28rpx"></wd-img> width="28rpx" height="28rpx"></wd-img>
</view> </view>
@ -450,8 +456,8 @@ const List = {
/** /**
* 预览图片 * 预览图片
*/ */
handlePreviewImage: (img: any) => { handlePreviewImage: (img: any, imageList: any) => {
previewImage(img, [img]) previewImage(img, imageList)
} }
} }
</script> </script>

View File

@ -142,9 +142,9 @@
</wd-popup> </wd-popup>
<!-- 茶艺服务 --> <!-- 茶艺服务 -->
<wd-popup v-model="showTeaServicePopup" lock-scroll custom-style="border-radius: 32rpx 32rpx 0rpx 0rpx;" position="bottom"> <wd-popup v-model="showTeaServicePopup" lock-scroll custom-style="border-radius: 32rpx 32rpx 0rpx 0rpx;" position="bottom" @close="uni.hideKeyboard()">
<view class="relative"> <view class="relative">
<view class="absolute top-18rpx right-30rpx" @click="showTeaServicePopup = false"> <view class="absolute top-18rpx right-30rpx" @click="Reserve.handleCloseTeaServicePopup">
<wd-img width="60rpx" height='60rpx' :src="`${OSS}icon/icon_close.png`"></wd-img> <wd-img width="60rpx" height='60rpx' :src="`${OSS}icon/icon_close.png`"></wd-img>
</view> </view>
<view class="text-36rpx text-[#121212] leading-50rpx text-center pt-50rpx pb-40rpx">茶艺服务</view> <view class="text-36rpx text-[#121212] leading-50rpx text-center pt-50rpx pb-40rpx">茶艺服务</view>
@ -247,7 +247,7 @@
<!-- 茶艺师信息 --> <!-- 茶艺师信息 -->
<view class="flex items-center bg-white p-20rpx rounded-10rpx mb-20rpx mt-20rpx"> <view class="flex items-center bg-white p-20rpx rounded-10rpx mb-20rpx mt-20rpx">
<view class="mr-28rpx relative"> <view class="mr-28rpx relative">
<wd-img width="200rpx" height="200rpx" radius="10rpx" :src="info.image" @click="previewImage(info.image, [info.image])"></wd-img> <wd-img width="200rpx" height="200rpx" radius="10rpx" :src="info.image" @click="previewImage(info.image, info.image_arr)"></wd-img>
</view> </view>
<view class=""> <view class="">
<view class="font-bold text-[#303133] text-30rpx leading-42rpx mr-14rpx"> <view class="font-bold text-[#303133] text-30rpx leading-42rpx mr-14rpx">
@ -858,6 +858,14 @@
teaUsageValue.value = 0 teaUsageValue.value = 0
}, },
/**
* 关闭茶艺服务弹窗
*/
handleCloseTeaServicePopup: () => {
uni.hideKeyboard()
showTeaServicePopup.value = false
},
/** /**
* 确认茶艺服务 * 确认茶艺服务
*/ */
@ -866,6 +874,7 @@
toast.info('请选择预定茶叶') toast.info('请选择预定茶叶')
return return
} }
uni.hideKeyboard()
showTeaServicePopup.value = false showTeaServicePopup.value = false
// 计算费用明细 // 计算费用明细

View File

@ -160,7 +160,7 @@
<view v-if="type === OrderSource.TeaSpecialist" class="bg-white rounded-10rpx p-28rpx"> <view v-if="type === OrderSource.TeaSpecialist" class="bg-white rounded-10rpx p-28rpx">
<view class="flex items-center"> <view class="flex items-center">
<view class="mr-28rpx"> <view class="mr-28rpx">
<wd-img width="200rpx" height="200rpx" :src="order.image" radius="10rpx"></wd-img> <wd-img width="200rpx" height="200rpx" :src="order.image" radius="10rpx" @click="ComboCard.handlePreviewImage(order.image, order.image_arr)"></wd-img>
</view> </view>
<view class="flex-1" @click="ComboCard.handleToOrderDetail"> <view class="flex-1" @click="ComboCard.handleToOrderDetail">
<view class="flex items-center relative"> <view class="flex items-center relative">
@ -183,17 +183,20 @@
</view> </view>
</view> </view>
<view class="flex items-center"> <view class="flex flex-wrap items-center gap-y-12rpx">
<view class="mr-12rpx" v-if="order.server_type == 1 || order.server_type == 3"> <view class="mr-12rpx shrink-0" v-if="order.server_type == 1 || order.server_type == 3">
<wd-tag color="#F55726" bg-color="#F55726" plain>到店服务</wd-tag> <wd-tag color="#F55726" bg-color="#F55726" plain custom-class="!rounded-4rpx whitespace-nowrap">到店服务</wd-tag>
</view> </view>
<view class="mr-12rpx" v-if="order.server_type == 2 || order.server_type == 3"> <view class="mr-12rpx shrink-0" v-if="order.server_type == 2 || order.server_type == 3">
<wd-tag color="#40AE36" bg-color="#40AE36" plain custom-class="!rounded-4rpx">上门服务</wd-tag> <wd-tag color="#40AE36" bg-color="#40AE36" plain custom-class="!rounded-4rpx whitespace-nowrap">上门服务</wd-tag>
</view> </view>
<view class="mr-12rpx"> <view class="mr-12rpx shrink-0" v-if="order.is_mileage == 1">
<wd-tag color="#818CA9" bg-color="#F3F3F3">{{ order.both }}</wd-tag> <wd-tag color="#FFF" bg-color="#FF5951" custom-class="!rounded-4rpx whitespace-nowrap border-none !px-12rpx">免费出行</wd-tag>
</view> </view>
<view class="flex items-center mt-8rpx"> <view class="mr-12rpx shrink-0">
<wd-tag color="#818CA9" bg-color="#F3F3F3" custom-class="whitespace-nowrap">{{ order.both }}</wd-tag>
</view>
<view class="flex items-center mt-8rpx shrink-0">
<wd-img :src="order.sex == 1 ? `${OSS}icon/icon_man.png` : `${OSS}icon/icon_woman.png`" width="28rpx" height="28rpx"></wd-img> <wd-img :src="order.sex == 1 ? `${OSS}icon/icon_man.png` : `${OSS}icon/icon_woman.png`" width="28rpx" height="28rpx"></wd-img>
</view> </view>
</view> </view>
@ -247,7 +250,7 @@
// import { toast } from '@/utils/toast' // import { toast } from '@/utils/toast'
import { handleTRCancelOrderHooks, handleTRDeleteOrderHooks, handleTRToPayHooks, handleToTRStoreHooks, handleRefundOrderHooks } from '@/hooks/useOrder' import { handleTRCancelOrderHooks, handleTRDeleteOrderHooks, handleTRToPayHooks, handleToTRStoreHooks, handleRefundOrderHooks } from '@/hooks/useOrder'
import { StoreType } from '@/utils/tea' import { StoreType } from '@/utils/tea'
import { router } from '@/utils/tools' import { router, previewImage } from '@/utils/tools'
import { PayOrderType } from '@/utils/pay' import { PayOrderType } from '@/utils/pay'
import { TeaSpecialistOrderStatus } from '@/utils/teaSpecialistOrder' import { TeaSpecialistOrderStatus } from '@/utils/teaSpecialistOrder'
import { handleCancelOrderHooks, handleDeleteOrderHooks } from '@/hooks/useTeaSpecialistOrder' import { handleCancelOrderHooks, handleDeleteOrderHooks } from '@/hooks/useTeaSpecialistOrder'
@ -523,7 +526,14 @@
// TODO 确认订单接口 // TODO 确认订单接口
} }
}).catch(() => {}) }).catch(() => {})
} },
/**
* 预览图片
*/
handlePreviewImage: (img: any, imageList: any) => {
previewImage(img, imageList)
},
} }
</script> </script>

View File

@ -444,8 +444,9 @@
// 选择菜单-拨打客服电话 // 选择菜单-拨打客服电话
handleSelectMenu: (item: any) => { handleSelectMenu: (item: any) => {
console.log("🚀 ~ item:", item)
uni.makePhoneCall({ uni.makePhoneCall({
phoneNumber: item.item.name phoneNumber: String(item.item.name)
}) })
}, },