完善茶艺师套餐功能优化
This commit is contained in:
@ -15,7 +15,9 @@ export function getTeaPackageList() {
|
||||
* 获取茶艺师套餐详情
|
||||
*/
|
||||
export function getTeaPackageDetail(id: number) {
|
||||
return http.Post<any>('/api/Teamaster/teamasterGroupDetails', { id })
|
||||
return http.Post<any>('/api/Teamaster/teamasterGroupDetails', { id }, {
|
||||
meta: { ignoreAuth: true }
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -17,6 +17,7 @@ export interface ITeaSpecialistParams {
|
||||
longitude: number
|
||||
level?: string
|
||||
search?: string
|
||||
server_type?: number // 1到店服务 2上门服务
|
||||
}
|
||||
|
||||
export function getTeaSpecialist(data: ITeaSpecialistParams) {
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
<view>
|
||||
<view class="text-26rpx leading-32rpx text-#606266">公司名称</view>
|
||||
<view class="mt-20rpx border-b border-b-solid border-b-[#F6F7F8] pb-20rpx">
|
||||
<wd-input no-border placeholder="请填写真实姓名" v-model="form.company_name"></wd-input>
|
||||
<wd-input no-border placeholder="请填写公司名称" v-model="form.company_name"></wd-input>
|
||||
</view>
|
||||
</view>
|
||||
<view class="mt-22rpx">
|
||||
@ -38,7 +38,7 @@
|
||||
<view class="mt-22rpx">
|
||||
<view class="text-26rpx leading-32rpx text-#606266">手机号</view>
|
||||
<view class="mt-20rpx border-b border-b-solid border-b-[#F6F7F8] pb-20rpx">
|
||||
<wd-input no-border placeholder="请填写真实姓名" v-model="form.mobile"></wd-input>
|
||||
<wd-input no-border placeholder="请填写手机号" v-model="form.mobile"></wd-input>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
<!-- 使用 type="home" 属性设置首页,其他页面不需要设置,默认为page -->
|
||||
<route lang="jsonc" type="page">{
|
||||
"needLogin": true,
|
||||
"layout": "tabbar",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
@ -213,7 +212,7 @@ const Detail = {
|
||||
},
|
||||
|
||||
/**
|
||||
* 提交订单
|
||||
* 立即预约
|
||||
*/
|
||||
handleReserve: async () => {
|
||||
router.navigateTo('/bundle/package/service')
|
||||
|
||||
@ -203,7 +203,7 @@
|
||||
<view class="mx-60rpx mb-50rpx">
|
||||
<view class="text-32rpx leading-44rpx text-#303133">
|
||||
<text class="mr-20rpx">预定茶叶</text>
|
||||
<text class="text-26rpx leading-36rpx text-#909399">支持多选</text>
|
||||
<text class="text-26rpx leading-36rpx text-#909399">任选一款</text>
|
||||
</view>
|
||||
<view class="mt-28rpx">
|
||||
<view class="grid grid-cols-3 gap-x-16rpx gap-y-16rpx">
|
||||
@ -727,20 +727,20 @@ const Reserve = {
|
||||
},
|
||||
|
||||
/**
|
||||
* 切换预定茶叶选择
|
||||
* 切换预定茶叶选择 (单选)
|
||||
*/
|
||||
handleToggleTea: (id: number, name: string, price: number) => {
|
||||
const index = selectedTea.value.indexOf(id)
|
||||
if (index >= 0) {
|
||||
// 已选择,取消选择
|
||||
selectedTea.value.splice(index, 1)
|
||||
selectedTeaTxt.value.splice(index, 1)
|
||||
selectedTeaPrice.value.splice(index, 1)
|
||||
selectedTea.value = []
|
||||
selectedTeaTxt.value = []
|
||||
selectedTeaPrice.value = []
|
||||
} else {
|
||||
// 未选择,添加选择
|
||||
selectedTea.value.push(id)
|
||||
selectedTeaTxt.value.push(name)
|
||||
selectedTeaPrice.value.push(price)
|
||||
// 未选择,设置为当前选择 (排他单选)
|
||||
selectedTea.value = [id]
|
||||
selectedTeaTxt.value = [name]
|
||||
selectedTeaPrice.value = [price]
|
||||
}
|
||||
|
||||
totalSelectedTeaPrice.value = toPlus(selectedTeaPrice.value)
|
||||
|
||||
@ -289,7 +289,7 @@ const Service = {
|
||||
}
|
||||
|
||||
uni.setStorageSync('selectedPackageService', address) // 将选择的服务信息存储到本地,供下一个页面使用
|
||||
router.navigateTo('/bundle/package/tea-specialist')
|
||||
router.navigateTo('/bundle/package/tea-specialist?serviceType=' + serviceType.value) // 跳转到下一个页面,并传递服务方式参数
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -15,8 +15,8 @@
|
||||
<view class="text-30rpx font-bold text-[#303133]">茶艺师</view>
|
||||
<view class="text-24rpx text-[#818CA9] mt-12rpx mb-32rpx font-500">匹配心动茶艺师</view>
|
||||
|
||||
<view class="flex flex-wrap justify-between">
|
||||
<view class="w-216rpx mb-30rpx relative" v-for="(item, index) in list" :key="index"
|
||||
<view class="grid grid-cols-3 gap-y-20rpx gap-x-20rpx justify-items-center">
|
||||
<view class="w-216rpx relative" v-for="(item, index) in list" :key="index"
|
||||
@click="TeaSpecialist.handleSelect(index)">
|
||||
<view class="relative w-216rpx h-216rpx rounded-16rpx overflow-hidden">
|
||||
<wd-img :src="item.image" width="216rpx" height="216rpx" mode="aspectFill"></wd-img>
|
||||
@ -40,7 +40,7 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="flex justify-center mt-10rpx">
|
||||
<view class="flex justify-center mt-40rpx">
|
||||
<view class="flex items-center justify-center bg-[#F6F7F8] rounded-34rpx h-100rpx w-320rpx"
|
||||
@click="TeaSpecialist.handleMore">
|
||||
<wd-img :src="`${OSS}icon/icon_more.png`" width="36rpx" height="36rpx"></wd-img>
|
||||
@ -62,7 +62,7 @@
|
||||
<view class="flex items-center text-24rpx text-[#909399] mb-16rpx">
|
||||
<wd-img :src="`${OSS}icon/icon_store_cert.png`" width="36rpx" height="36rpx"
|
||||
class="mr-8rpx"></wd-img>
|
||||
<text>商家认证</text>
|
||||
<text @click="TeaSpecialist.handlePreviewInfo">{{ info.company_abv }}</text>
|
||||
</view>
|
||||
<view class="flex items-center">
|
||||
<wd-rate v-model="info.sold" readonly active-color="#FF5951" allow-half
|
||||
@ -137,9 +137,10 @@
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { inject, ref, computed } from 'vue'
|
||||
import { router } from '@/utils/tools'
|
||||
import { router, previewImage } from '@/utils/tools'
|
||||
import { getTeaSpecialist, getTeaSpecialistDetail } from '@/api/tea-specialist'
|
||||
import type { ITeaSpecialistResult } from '@/api/types/tea-specialist'
|
||||
import { toast } from '@/utils/toast'
|
||||
|
||||
const OSS = inject('OSS')
|
||||
|
||||
@ -164,10 +165,16 @@ const info = ref({
|
||||
mileage_price: 0, // 车马费
|
||||
server_type: 0, // 服务方式 1到店 2上门 3两者都有
|
||||
label: [], // 专属圈子标签
|
||||
company_abv: '', // 公司简称
|
||||
company_url: '', // 图片链接
|
||||
company_status: 0, // 是否有公司信息
|
||||
})
|
||||
|
||||
const serviceType = ref<number>(1) // 服务方式,默认为到店服务
|
||||
|
||||
onLoad((args) => {
|
||||
serviceType.value = args.serviceType || 1 // 默认到店服务
|
||||
|
||||
onLoad(() => {
|
||||
TeaSpecialist.handleGetTeaSpecialistList()
|
||||
})
|
||||
|
||||
@ -186,6 +193,7 @@ const TeaSpecialist = {
|
||||
latitude: storage.latitude || import.meta.env.VITE_DEFAULT_LATITUDE,
|
||||
longitude: storage.longitude || import.meta.env.VITE_DEFAULT_LONGITUDE,
|
||||
level: uni.getStorageSync('teaPackageType'),
|
||||
server_type: serviceType.value, // 1到店服务 2上门服务
|
||||
}
|
||||
try {
|
||||
const res = await getTeaSpecialist(filter)
|
||||
@ -241,6 +249,17 @@ const TeaSpecialist = {
|
||||
handleNext: () => {
|
||||
console.log("🚀 ~ info.value:", info.value)
|
||||
router.navigateTo(`/bundle/package/reserve?id=${info.value.team_user_id}`)
|
||||
},
|
||||
|
||||
/**
|
||||
* 查看商家信息
|
||||
*/
|
||||
handlePreviewInfo: () => {
|
||||
if (info.value.company_status) {
|
||||
previewImage(info.value.company_url, [info.value.company_url])
|
||||
} else {
|
||||
toast.info('暂无商家信息')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -116,7 +116,7 @@
|
||||
<view class="flex items-center">
|
||||
<wd-img :src="`${OSS}icon/icon_store_cert.png`" width="36rpx" height="36rpx"></wd-img>
|
||||
</view>
|
||||
<text class="ml-8rpx font-400 text-24rpx leading-4rpx text-#303133">商家认证</text>
|
||||
<text class="ml-8rpx font-400 text-24rpx leading-4rpx text-#303133" @click="Detail.handlePreviewInfo">{{ info.company_abv }}</text>
|
||||
</view>
|
||||
|
||||
<view class="bg-[#EBFBF7] w-692rpx h-64rpx rounded-12rpx p-14rpx flex items-center mt-22rpx text-[#35C1A0]">
|
||||
@ -331,6 +331,9 @@ const info = ref({
|
||||
mileage_price: 0, // 车马费
|
||||
server_type: 0, // 服务方式 1到店 2上门 3两者都有
|
||||
label: [], // 专属圈子标签
|
||||
company_abv: '', // 公司简称
|
||||
company_url: '', // 图片链接
|
||||
company_status: 0, // 是否有公司信息
|
||||
})
|
||||
const latitude = ref<number>(0) // 纬度
|
||||
const longitude = ref<number>(0) // 经度
|
||||
@ -510,6 +513,17 @@ const Detail = {
|
||||
*/
|
||||
handlePreviewImage: (e: { index: number, item: any }) => {
|
||||
previewImage(info.value.image_arr[e.index], info.value.image_arr)
|
||||
},
|
||||
|
||||
/**
|
||||
* 查看商家信息
|
||||
*/
|
||||
handlePreviewInfo: () => {
|
||||
if (info.value.company_status) {
|
||||
previewImage(info.value.company_url, [info.value.company_url])
|
||||
} else {
|
||||
toast.info('暂无商家信息')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@ -59,28 +59,27 @@
|
||||
:up="upOption" fixed>
|
||||
<view class="flex items-center bg-white p-20rpx rounded-10rpx mx-30rpx mb-20rpx relative"
|
||||
v-for="(item, index) in list" :key="index">
|
||||
<view
|
||||
class="tea-specialist-time absolute z-3 top-6rpx left-0 bg-[#4C9F44] text-[#fff] font-400 text-18rpx flex items-center justify-center">
|
||||
<text v-if="item.state == 0">可约</text>
|
||||
<text v-if="item.state == 1">工作中</text>
|
||||
<text v-if="item.state == 2">不可约</text>
|
||||
</view>
|
||||
<view class="mr-28rpx relative z-2" @click="List.handlePreviewImage(item.image)">
|
||||
<wd-img width="200rpx" height="200rpx" :src="item.image" mode="aspectFill"></wd-img>
|
||||
<wd-img width="260rpx" height="320rpx" :src="item.image" mode="aspectFill" radius="10rpx"></wd-img>
|
||||
<view
|
||||
class="tea-specialist-time absolute z-3 top-26rpx left-0 bg-[#4C9F44] text-[#fff] font-400 text-18rpx flex items-center justify-center">
|
||||
<text v-if="item.state == 0">可约</text>
|
||||
<text v-if="item.state == 1">工作中</text>
|
||||
<text v-if="item.state == 2">不可约</text>
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex-1" @click="List.handleReserveTeaSpecialist(item.team_user_id, item.state)">
|
||||
<view class="flex items-center">
|
||||
<view class="font-bold text-[#303133] text-30rpx leading-42rpx mr-14rpx">
|
||||
<view class="flex items-center mb-8rpx">
|
||||
<view class="font-bold text-[#303133] text-30rpx leading-42rpx mr-12rpx">
|
||||
{{ item.name }}
|
||||
</view>
|
||||
<view class="flex items-center">
|
||||
<wd-icon name="star-on" size="22rpx" color="#FF5951"></wd-icon>
|
||||
<view class="font-400 text-24rpx text-[#FF5951] leading-34rpx ml-6rpx">5.0</view>
|
||||
<!-- <tea-specialist-level :level="item.level"></tea-specialist-level> -->
|
||||
<view class="font-400 text-24rpx text-[#FF5951] leading-34rpx ml-6rpx">{{ item.star }}</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="flex items-center">
|
||||
<view class="flex items-center mb-14rpx">
|
||||
<!-- 到店服务标签 -->
|
||||
<view class="mr-12rpx" v-if="item.server_type == 1 || item.server_type == 3">
|
||||
<wd-tag color="#F55726" bg-color="#F55726" plain
|
||||
@ -102,15 +101,16 @@
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="flex flex-wrap items-center mt-14rpx">
|
||||
<view
|
||||
class="mr-8rpx bg-[#4C9F44] text-[#fff] px-10rpx leading-34rpx font-400 text-24rpx rounded-4rpx"
|
||||
<view class="flex flex-wrap items-center mt-14rpx mb-24rpx">
|
||||
<view
|
||||
class="mr-8rpx px-10rpx leading-34rpx font-400 text-24rpx rounded-4rpx mb-14rpx"
|
||||
:style="List.handleGetLabelStyle(Number(index))"
|
||||
v-for="(label, index) in item.label" :key="index">
|
||||
{{ label.label_name }}
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="flex items-center justify-between mt-18rpx">
|
||||
<view class="flex items-center justify-between mb-8rpx">
|
||||
<view class="mr-20rpx w-200rpx">
|
||||
<view class="flex items-center">
|
||||
<view class="flex items-center">
|
||||
@ -155,8 +155,8 @@ const OSS = inject('OSS')
|
||||
const navbarHeight = inject('navbarHeight')
|
||||
const toast = useToast()
|
||||
|
||||
// 茶艺师等级
|
||||
const selectedLevel = ref<Array<any>>([]) // 选择茶艺师的点击等级
|
||||
// 茶艺师等级(单选)
|
||||
const selectedLevel = ref<Array<any>>([]) // 当前选中的茶艺师等级
|
||||
|
||||
// mescroll
|
||||
const { mescrollInit, downCallback, getMescroll } = useMescroll(onPageScroll, onReachBottom) // 调用mescroll的hook
|
||||
@ -195,6 +195,16 @@ onShareAppMessage(() => {
|
||||
})
|
||||
|
||||
const List = {
|
||||
handleGetLabelStyle: (index: number) => {
|
||||
const firstThreeStyles = [
|
||||
{ backgroundColor: '#FAF1F1', color: '#CE295A' },
|
||||
{ backgroundColor: '#F1F3FA', color: '#2934CE' },
|
||||
{ backgroundColor: '#F1FAF9', color: '#29C9CE' },
|
||||
]
|
||||
|
||||
return firstThreeStyles[index] || { backgroundColor: '#F3F3F3', color: '#818CA9' }
|
||||
},
|
||||
|
||||
/**
|
||||
* 筛选表
|
||||
*/
|
||||
@ -205,7 +215,8 @@ const List = {
|
||||
size: mescroll.size,
|
||||
latitude: uni.getStorageSync('latitude') || import.meta.env.VITE_DEFAULT_LATITUDE,
|
||||
longitude: uni.getStorageSync('longitude') || import.meta.env.VITE_DEFAULT_LONGITUDE,
|
||||
search: keywords.value
|
||||
search: keywords.value,
|
||||
server_type: 0
|
||||
}
|
||||
|
||||
getTeaSpecialist(filter).then((res: ITeaSpecialistResult) => {
|
||||
@ -234,11 +245,11 @@ const List = {
|
||||
handleToggleTeaSpecialistLevel: (value: any) => {
|
||||
const index = selectedLevel.value.indexOf(value);
|
||||
if (index > -1) {
|
||||
// 如果已经选择了该等级,则取消选择
|
||||
selectedLevel.value.splice(index, 1);
|
||||
// 已选中时再次点击,取消选择
|
||||
selectedLevel.value = [];
|
||||
} else {
|
||||
// 如果未选择该等级,则添加选择
|
||||
selectedLevel.value.push(value);
|
||||
// 单选:只保留当前点击项
|
||||
selectedLevel.value = [value];
|
||||
}
|
||||
|
||||
List.handleSearch()
|
||||
|
||||
@ -255,7 +255,6 @@
|
||||
{
|
||||
"path": "package/detail",
|
||||
"type": "page",
|
||||
"needLogin": true,
|
||||
"layout": "tabbar",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
|
||||
@ -1,396 +1,408 @@
|
||||
<route lang="jsonc" type="page">
|
||||
{
|
||||
<route lang="jsonc" type="page">{
|
||||
"needLogin": true,
|
||||
"layout": "default",
|
||||
"style": {
|
||||
"navigationStyle": "custom"
|
||||
}
|
||||
}
|
||||
</route>
|
||||
}</route>
|
||||
<template>
|
||||
<view>
|
||||
<view>
|
||||
<navbar title="收银台" custom-class='!bg-[#F6F7F8]' :leftArrow="false"></navbar>
|
||||
</view>
|
||||
<navbar title="收银台" custom-class='!bg-[#F6F7F8]' :leftArrow="false"></navbar>
|
||||
</view>
|
||||
|
||||
<!-- 支付信息 -->
|
||||
<view class="mt-56rpx text-center">
|
||||
<view class="text-28rpx leading-40rpx text-#606266" v-if="!teaPackageTitle">{{ title }}</view>
|
||||
<view class="text-28rpx leading-40rpx text-#606266" v-if="teaPackageTitle">茶艺师套餐-{{ teaPackageTitle }}</view>
|
||||
<view class="text-28rpx leading-40rpx text-#606266" v-if="teaPackageTitle">茶艺师套餐-{{ teaPackageTitle }}
|
||||
</view>
|
||||
<view class="mt-24rpx">
|
||||
<template>
|
||||
<price-format color="#303133" :first-size="44" :second-size="44" :subscript-size="28" :price="money"></price-format>
|
||||
<price-format color="#303133" :first-size="44" :second-size="44" :subscript-size="28"
|
||||
:price="money"></price-format>
|
||||
</template>
|
||||
</view>
|
||||
<view class="mt-12rpx flex items-center justify-center">
|
||||
<view class="text-24rpx leading-34rpx text-#606266">
|
||||
支付剩余时间
|
||||
</view>
|
||||
支付剩余时间
|
||||
</view>
|
||||
<wd-count-down :time="time" custom-class="!text-[#606266] !text-24rpx !leading-34rpx" />
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 支付方式 -->
|
||||
<view class="bg-white rounded-16rpx px-30rpx py-34rpx mx-30rpx mt-84rpx">
|
||||
<view class="font-400 text-32rpx leading-44rpx text-#303133 border-b border-b-solid border-b-#F6F7F8 pb-16rpx mb-32rpx">支付方式</view>
|
||||
<view
|
||||
class="font-400 text-32rpx leading-44rpx text-#303133 border-b border-b-solid border-b-#F6F7F8 pb-16rpx mb-32rpx">
|
||||
支付方式</view>
|
||||
<!-- pay 组件 -->
|
||||
<pay @pay="Cashier.handleGetPayValue" :hidePlatformBalance="hidePlatformBalance" :hideStoreBalance="hideStoreBalance" :hideWechat="hideWechat" :storeMoney="storeMoney"></pay>
|
||||
<pay @pay="Cashier.handleGetPayValue" :hidePlatformBalance="hidePlatformBalance"
|
||||
:hideStoreBalance="hideStoreBalance" :hideWechat="hideWechat" :storeMoney="storeMoney"></pay>
|
||||
</view>
|
||||
|
||||
<view class="fixed bottom-70rpx left-0 right-0 text-#fff font-bold text-30rpx leading-42rpx mx-60rpx text-center rounded-8rpx w-630rpx" >
|
||||
<wd-button custom-class='!bg-[#4C9F44] !rounded-8rpx !h-90rpx !leading-90rpx !w-630rpx' :disabled="isSubmitting" @click='Cashier.handleToPay'>{{ isGroupBuying ? '立即购买' : '立即预定' }}</wd-button>
|
||||
<view
|
||||
class="fixed bottom-70rpx left-0 right-0 text-#fff font-bold text-30rpx leading-42rpx mx-60rpx text-center rounded-8rpx w-630rpx">
|
||||
<wd-button custom-class='!bg-[#4C9F44] !rounded-8rpx !h-90rpx !leading-90rpx !w-630rpx'
|
||||
:disabled="isSubmitting" @click='Cashier.handleToPay'>{{ isGroupBuying ? '立即购买' : '立即预定' }}</wd-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { getTeaSpecialistDetails } from '@/api/tea'
|
||||
import { ITeaSpecialistDetailsFields } from '@/api/types/tea'
|
||||
import { prePay, balancePay, newPrePay } from '@/api/pay'
|
||||
import type {IUserInfoVo } from '@/api/types/login'
|
||||
import { getTeaRoomBalance, getTeaRoomOrderDetail, getTeaRoomPackageOrderDetail, getTeaRoomPackageDetail, getTeaRoomPayOrderAmount, getRenewTeaRoomPayOrderAmount } from '@/api/tea-room'
|
||||
import Pay from '@/components/Pay.vue'
|
||||
import { PayValue, PayValueMap, PayOrderType, PayOrderSource } from '@/utils/pay'
|
||||
import { toast } from '@/utils/toast'
|
||||
import { router } from '@/utils/tools'
|
||||
import { OrderType } from '@/utils/order'
|
||||
import { wechatPay } from '@/hooks/usePay'
|
||||
import { useUserStore } from '@/store'
|
||||
import { getTeaSpecialistOrderDetails } from '@/api/teaSpecialist-order'
|
||||
import { getTeaSpecialistDetails } from '@/api/tea'
|
||||
import { ITeaSpecialistDetailsFields } from '@/api/types/tea'
|
||||
import { prePay, balancePay, newPrePay } from '@/api/pay'
|
||||
import type { IUserInfoVo } from '@/api/types/login'
|
||||
import { getTeaRoomBalance, getTeaRoomOrderDetail, getTeaRoomPackageOrderDetail, getTeaRoomPackageDetail, getTeaRoomPayOrderAmount, getRenewTeaRoomPayOrderAmount } from '@/api/tea-room'
|
||||
import Pay from '@/components/Pay.vue'
|
||||
import { PayValue, PayValueMap, PayOrderType, PayOrderSource } from '@/utils/pay'
|
||||
import { toast } from '@/utils/toast'
|
||||
import { router } from '@/utils/tools'
|
||||
import { OrderType } from '@/utils/order'
|
||||
import { wechatPay } from '@/hooks/usePay'
|
||||
import { useUserStore } from '@/store'
|
||||
import { getTeaSpecialistOrderDetails } from '@/api/teaSpecialist-order'
|
||||
|
||||
|
||||
// 用户信息
|
||||
const userInfo = ref<IUserInfoVo>(null)
|
||||
// 用户信息
|
||||
const userInfo = ref<IUserInfoVo>(null)
|
||||
|
||||
// 支付倒计时取消
|
||||
const time = ref<number>(3 * 60 * 1000)
|
||||
// 支付倒计时取消
|
||||
const time = ref<number>(3 * 60 * 1000)
|
||||
|
||||
// 支付金额
|
||||
const money = ref<number>(0)
|
||||
|
||||
// 茶艺师详情
|
||||
const id = ref<number>(0)
|
||||
const info = reactive<ITeaSpecialistDetailsFields>({
|
||||
id: 0,
|
||||
name: '',
|
||||
star: 0,
|
||||
image: '',
|
||||
reservation_num: 0,
|
||||
distance: 0,
|
||||
speed: 0,
|
||||
real: { gender: 1, both: 18, height: 165, weight: 53, interests: '爱好茶艺,喜欢旅游,把爱好当工作' },
|
||||
teamasterlabel: [],
|
||||
teamasterLevel: [],
|
||||
price: 0,
|
||||
fare_price: 0,
|
||||
collect: 0,
|
||||
up_status: 0,
|
||||
textarea: []
|
||||
})
|
||||
// 支付金额
|
||||
const money = ref<number>(0)
|
||||
|
||||
// 支付方式
|
||||
const pay = ref<number>(0)
|
||||
const hideWechat = ref<boolean>(false)
|
||||
const hidePlatformBalance = ref<boolean>(false)
|
||||
const hideStoreBalance = ref<boolean>(false)
|
||||
// 茶艺师详情
|
||||
const id = ref<number>(0)
|
||||
const info = reactive<ITeaSpecialistDetailsFields>({
|
||||
id: 0,
|
||||
name: '',
|
||||
star: 0,
|
||||
image: '',
|
||||
reservation_num: 0,
|
||||
distance: 0,
|
||||
speed: 0,
|
||||
real: { gender: 1, both: 18, height: 165, weight: 53, interests: '爱好茶艺,喜欢旅游,把爱好当工作' },
|
||||
teamasterlabel: [],
|
||||
teamasterLevel: [],
|
||||
price: 0,
|
||||
fare_price: 0,
|
||||
collect: 0,
|
||||
up_status: 0,
|
||||
textarea: []
|
||||
})
|
||||
|
||||
// 支付方式
|
||||
const pay = ref<number>(0)
|
||||
const hideWechat = ref<boolean>(false)
|
||||
const hidePlatformBalance = ref<boolean>(false)
|
||||
const hideStoreBalance = ref<boolean>(false)
|
||||
|
||||
// 订单
|
||||
const orderId = ref<number>(0)
|
||||
const order = ref<{}>(null)
|
||||
const result = ref<string>('')
|
||||
const from = ref<string>('')
|
||||
|
||||
// 支付标题
|
||||
const title = ref<string>('')
|
||||
|
||||
// 门店ID
|
||||
const storeId = ref<number>(0)
|
||||
const storeMoney = ref<number>(0)
|
||||
const comboId = ref<number>(0) // 套餐ID
|
||||
|
||||
// 一键续订支付
|
||||
const renew = ref<string>('')
|
||||
|
||||
// 购买套餐支付
|
||||
const isGroupBuying = ref<number>(0)
|
||||
const groupCouponId = ref<number>(0)
|
||||
|
||||
// 只有在续订茶艺师下才有这个renewOrderId
|
||||
const renewOrderId = ref<number>(0)
|
||||
// 预约茶艺师支付
|
||||
const reserveTeaSpecialist = ref<boolean>(false)
|
||||
const teaSpecialistOrderAmount = ref<number>(0) // 茶艺师订单金额
|
||||
|
||||
// 茶艺师套餐标题
|
||||
const teaPackageTitle = ref<string>('')
|
||||
|
||||
// 防止重复提交
|
||||
const isSubmitting = ref(false)
|
||||
|
||||
onLoad(async (args) => {
|
||||
// 订单
|
||||
const orderId = ref<number>(0)
|
||||
const order = ref<{}>(null)
|
||||
const result = ref<string>('')
|
||||
const from = ref<string>('')
|
||||
orderId.value = Number(args.orderId)
|
||||
comboId.value = Number(args.cmoboId) || 0
|
||||
|
||||
// 支付标题
|
||||
const title = ref<string>('')
|
||||
// 茶艺师套餐
|
||||
teaPackageTitle.value = args.teaPackageTitle || ''
|
||||
|
||||
// 门店ID
|
||||
const storeId = ref<number>(0)
|
||||
const storeMoney = ref<number>(0)
|
||||
const comboId = ref<number>(0) // 套餐ID
|
||||
// 套餐购买
|
||||
groupCouponId.value = Number(args.groupCouponId) || 0
|
||||
isGroupBuying.value = Number(args.isGroupBuying) || 0
|
||||
console.log("🚀 ~ isGroupBuying.value:", isGroupBuying.value)
|
||||
|
||||
// 一键续订支付
|
||||
const renew = ref<string>('')
|
||||
// 一键续订
|
||||
renew.value = args?.renew || ''
|
||||
|
||||
// 购买套餐支付
|
||||
const isGroupBuying = ref<number>(0)
|
||||
const groupCouponId = ref<number>(0)
|
||||
|
||||
// 只有在续订茶艺师下才有这个renewOrderId
|
||||
const renewOrderId = ref<number>(0)
|
||||
// 预约茶艺师支付
|
||||
const reserveTeaSpecialist = ref<boolean>(false)
|
||||
const teaSpecialistOrderAmount = ref<number>(0) // 茶艺师订单金额
|
||||
|
||||
// 茶艺师套餐标题
|
||||
const teaPackageTitle = ref<string>('')
|
||||
|
||||
// 防止重复提交
|
||||
const isSubmitting = ref(false)
|
||||
|
||||
onLoad(async (args) => {
|
||||
// 订单
|
||||
orderId.value = Number(args.orderId)
|
||||
comboId.value = Number(args.cmoboId) || 0
|
||||
|
||||
// 茶艺师套餐
|
||||
teaPackageTitle.value = args.teaPackageTitle || ''
|
||||
|
||||
// 套餐购买
|
||||
groupCouponId.value = Number(args.groupCouponId) || 0
|
||||
isGroupBuying.value = Number(args.isGroupBuying) || 0
|
||||
console.log("🚀 ~ isGroupBuying.value:", isGroupBuying.value)
|
||||
|
||||
// 一键续订
|
||||
renew.value = args?.renew || ''
|
||||
|
||||
// 获取门店余额
|
||||
if (args.storeId) {
|
||||
storeId.value = Number(args.storeId)
|
||||
const balance = await getTeaRoomBalance({ store_id: storeId.value })
|
||||
storeMoney.value = Number(balance.data.money) || 0
|
||||
}
|
||||
|
||||
// 设置支付来源标题
|
||||
from.value = args.from || ''
|
||||
if (from.value === OrderType.TeaRoomOrder) {
|
||||
// 茶室订单:预定、套餐团购两种方式
|
||||
if (args.name && isGroupBuying.value == 0) {
|
||||
title.value = renew.value ? `茶室续订-${args.name}` : `茶室预定-${args.name}`
|
||||
} else {
|
||||
title.value = `茶室套餐购买-${args.name}`
|
||||
hideStoreBalance.value = true // 隐藏门店余额支付
|
||||
}
|
||||
} else if (from.value === OrderType.TeaSpecialist) {
|
||||
// 预约茶艺师
|
||||
renewOrderId.value = args.renewOrderId
|
||||
teaSpecialistOrderAmount.value = Number(args.teaSpecialistOrderAmount) || 0
|
||||
reserveTeaSpecialist.value = true
|
||||
if (renewOrderId.value > 0) {
|
||||
title.value = `续订茶艺师-${args.teaSpecialistName || ''}`
|
||||
} else {
|
||||
title.value = `预订茶艺师-${args.teaSpecialistName || ''}`
|
||||
}
|
||||
// 获取门店余额
|
||||
if (args.storeId) {
|
||||
storeId.value = Number(args.storeId)
|
||||
const balance = await getTeaRoomBalance({ store_id: storeId.value })
|
||||
storeMoney.value = Number(balance.data.money) || 0
|
||||
}
|
||||
|
||||
// 设置支付来源标题
|
||||
from.value = args.from || ''
|
||||
if (from.value === OrderType.TeaRoomOrder) {
|
||||
// 茶室订单:预定、套餐团购两种方式
|
||||
if (args.name && isGroupBuying.value == 0) {
|
||||
title.value = renew.value ? `茶室续订-${args.name}` : `茶室预定-${args.name}`
|
||||
} else {
|
||||
title.value = `茶室套餐购买-${args.name}`
|
||||
hideStoreBalance.value = true // 隐藏门店余额支付
|
||||
}
|
||||
} else if (from.value === OrderType.TeaSpecialist) {
|
||||
// 预约茶艺师
|
||||
renewOrderId.value = args.renewOrderId
|
||||
teaSpecialistOrderAmount.value = Number(args.teaSpecialistOrderAmount) || 0
|
||||
reserveTeaSpecialist.value = true
|
||||
if (renewOrderId.value > 0) {
|
||||
title.value = `续订茶艺师-${args.teaSpecialistName || ''}`
|
||||
} else {
|
||||
title.value = `预订茶艺师-${args.teaSpecialistName || ''}`
|
||||
}
|
||||
|
||||
// 用户信息
|
||||
const userStore = useUserStore()
|
||||
userInfo.value = userStore.userInfo
|
||||
hideStoreBalance.value = true // 隐藏门店余额支付
|
||||
}
|
||||
|
||||
// 用户信息
|
||||
const userStore = useUserStore()
|
||||
userInfo.value = userStore.userInfo
|
||||
|
||||
// 获取订单详情
|
||||
if (args.from == OrderType.TeaRoomOrder && args.orderId) {
|
||||
// 获取订单详情
|
||||
if (args.from == OrderType.TeaRoomOrder && args.orderId) {
|
||||
// 获取订单详情
|
||||
if (isGroupBuying.value == 0) {
|
||||
// 茶室预约订单走这个接口,续订的不需要
|
||||
if (renew.value) {
|
||||
Cashier.handleGetRenewOrderDetails()
|
||||
} else {
|
||||
Cashier.handleGetOrderDetails()
|
||||
}
|
||||
if (isGroupBuying.value == 0) {
|
||||
// 茶室预约订单走这个接口,续订的不需要
|
||||
if (renew.value) {
|
||||
Cashier.handleGetRenewOrderDetails()
|
||||
} else {
|
||||
Cashier.handleGetRoomPackageDetails(args.money)
|
||||
Cashier.handleGetOrderDetails()
|
||||
}
|
||||
} else if (args.from == OrderType.TeaSpecialist && args.orderId) {
|
||||
// 获取预定茶艺师订单详情
|
||||
Cashier.handleGetTeaSpecialistOrderDetails()
|
||||
} else {
|
||||
Cashier.handleGetRoomPackageDetails(args.money)
|
||||
}
|
||||
})
|
||||
} else if (args.from == OrderType.TeaSpecialist && args.orderId) {
|
||||
// 获取预定茶艺师订单详情
|
||||
Cashier.handleGetTeaSpecialistOrderDetails()
|
||||
}
|
||||
})
|
||||
|
||||
onUnload(() => {
|
||||
switch(result.value) {
|
||||
case 'success':
|
||||
uni.$emit('payment', { result: true, orderId: orderId.value })
|
||||
break;
|
||||
case 'fail':
|
||||
default: uni.$emit('payment', { result: false, orderId: orderId.value })
|
||||
onUnload(() => {
|
||||
switch (result.value) {
|
||||
case 'success':
|
||||
uni.$emit('payment', { result: true, orderId: orderId.value })
|
||||
break;
|
||||
case 'fail':
|
||||
default: uni.$emit('payment', { result: false, orderId: orderId.value })
|
||||
}
|
||||
})
|
||||
|
||||
const Cashier = {
|
||||
/**获取茶艺师订单详情
|
||||
*
|
||||
* @param id
|
||||
* @param user_id
|
||||
*/
|
||||
handleGetTeaSpecialistOrderDetails: async () => {
|
||||
const res = await getTeaSpecialistOrderDetails({
|
||||
id: orderId.value
|
||||
})
|
||||
order.value = res
|
||||
if (teaSpecialistOrderAmount.value > 0) {
|
||||
money.value = teaSpecialistOrderAmount.value
|
||||
} else {
|
||||
money.value = Number(res.order_amount)
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
const Cashier = {
|
||||
/**获取茶艺师订单详情
|
||||
*
|
||||
* @param id
|
||||
* @param user_id
|
||||
*/
|
||||
handleGetTeaSpecialistOrderDetails: async () => {
|
||||
const res = await getTeaSpecialistOrderDetails({
|
||||
id: orderId.value
|
||||
})
|
||||
order.value = res
|
||||
if (teaSpecialistOrderAmount.value > 0) {
|
||||
money.value = teaSpecialistOrderAmount.value
|
||||
/**
|
||||
* 获取预定茶室订单详情
|
||||
*/
|
||||
handleGetOrderDetails: async () => {
|
||||
// 获取订单详情接口
|
||||
// const res = await getTeaRoomOrderDetail({
|
||||
// id: orderId.value,
|
||||
// latitude: uni.getStorageSync('latitude') || import.meta.env.VITE_DEFAULT_LATITUDE,
|
||||
// longitude: uni.getStorageSync('longitude') || import.meta.env.VITE_DEFAULT_LONGITUDE,
|
||||
// })
|
||||
const res = await getTeaRoomPayOrderAmount({
|
||||
id: orderId.value,
|
||||
pay_way: pay.value || PayValue.PlatformBalance
|
||||
})
|
||||
console.log("🚀 ~ getTeaRoomPayOrderAmount res:", res)
|
||||
order.value = res
|
||||
money.value = Number(res.details.order_amount)
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取茶室续订订单详情
|
||||
*/
|
||||
handleGetRenewOrderDetails: async () => {
|
||||
const res = await getRenewTeaRoomPayOrderAmount({
|
||||
id: orderId.value,
|
||||
pay_way: pay.value || PayValue.PlatformBalance
|
||||
})
|
||||
console.log("🚀 ~ getRenewTeaRoomPayOrderAmount res:", res)
|
||||
order.value = res
|
||||
money.value = Number(res.details.order_amount)
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取茶室套餐订单详情(改为args传过来金额)
|
||||
* @param value
|
||||
*/
|
||||
handleGetRoomPackageDetails: async (m: number) => {
|
||||
// const res = await getTeaRoomPackageDetail({
|
||||
// id: comboId.value
|
||||
// })
|
||||
money.value = m
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取支付方式
|
||||
* @param value 支付value
|
||||
*/
|
||||
handleGetPayValue: (value: number) => {
|
||||
pay.value = value
|
||||
|
||||
// 茶室订单:为了获取不同支付方式下的订单金额
|
||||
if (from.value == OrderType.TeaRoomOrder && orderId.value && isGroupBuying.value == 0) {
|
||||
if (renew.value) {
|
||||
// 续订订单
|
||||
Cashier.handleGetRenewOrderDetails()
|
||||
} else {
|
||||
money.value = Number(res.order_amount)
|
||||
// 正常茶室订单
|
||||
Cashier.handleGetOrderDetails()
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取预定茶室订单详情
|
||||
*/
|
||||
handleGetOrderDetails: async () => {
|
||||
// 获取订单详情接口
|
||||
// const res = await getTeaRoomOrderDetail({
|
||||
// id: orderId.value,
|
||||
// latitude: uni.getStorageSync('latitude') || import.meta.env.VITE_DEFAULT_LATITUDE,
|
||||
// longitude: uni.getStorageSync('longitude') || import.meta.env.VITE_DEFAULT_LONGITUDE,
|
||||
// })
|
||||
const res = await getTeaRoomPayOrderAmount({
|
||||
id: orderId.value,
|
||||
pay_way: pay.value || PayValue.PlatformBalance
|
||||
})
|
||||
console.log("🚀 ~ getTeaRoomPayOrderAmount res:", res)
|
||||
order.value = res
|
||||
money.value = Number(res.details.order_amount)
|
||||
},
|
||||
/**
|
||||
* 支付
|
||||
*/
|
||||
handleToPay: async () => {
|
||||
if (isSubmitting.value) return
|
||||
|
||||
/**
|
||||
* 获取茶室续订订单详情
|
||||
*/
|
||||
handleGetRenewOrderDetails: async () => {
|
||||
const res = await getRenewTeaRoomPayOrderAmount({
|
||||
id: orderId.value,
|
||||
pay_way: pay.value || PayValue.PlatformBalance
|
||||
})
|
||||
console.log("🚀 ~ getRenewTeaRoomPayOrderAmount res:", res)
|
||||
order.value = res
|
||||
money.value = Number(res.details.order_amount)
|
||||
},
|
||||
|
||||
/**
|
||||
* 获取茶室套餐订单详情(改为args传过来金额)
|
||||
* @param value
|
||||
*/
|
||||
handleGetRoomPackageDetails: async (m: number) => {
|
||||
// const res = await getTeaRoomPackageDetail({
|
||||
// id: comboId.value
|
||||
// })
|
||||
money.value = m
|
||||
},
|
||||
if (pay.value == null || pay.value == undefined) {
|
||||
toast.info('请选择支付方式')
|
||||
return
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取支付方式
|
||||
* @param value 支付value
|
||||
*/
|
||||
handleGetPayValue: (value: number) => {
|
||||
pay.value = value
|
||||
isSubmitting.value = true
|
||||
|
||||
// 茶室订单:为了获取不同支付方式下的订单金额
|
||||
if (from.value == OrderType.TeaRoomOrder && orderId.value && isGroupBuying.value == 0) {
|
||||
if (renew.value) {
|
||||
// 续订订单
|
||||
Cashier.handleGetRenewOrderDetails()
|
||||
} else {
|
||||
// 正常茶室订单
|
||||
Cashier.handleGetOrderDetails()
|
||||
}
|
||||
}
|
||||
},
|
||||
if (from.value == OrderType.TeaRoomOrder) {
|
||||
// 预支付-茶室订单
|
||||
uni.showLoading({ title: '支付中...' })
|
||||
try {
|
||||
// 预支付
|
||||
const res = await prePay({
|
||||
from: PayValueMap[pay.value],
|
||||
order_id: orderId.value,
|
||||
pay_way: pay.value,
|
||||
order_source: PayOrderSource.MINI, //订单来源:1-小程序; 2-h5; 3app
|
||||
order_type: Cashier.handleGetOrderType(), // 0为茶艺师 1为茶室包间 2为茶室套餐
|
||||
store_id: storeId.value || 0
|
||||
})
|
||||
|
||||
/**
|
||||
* 支付
|
||||
*/
|
||||
handleToPay: async () => {
|
||||
if (isSubmitting.value) return
|
||||
|
||||
if (pay.value == null || pay.value == undefined) {
|
||||
toast.info('请选择支付方式')
|
||||
return
|
||||
}
|
||||
|
||||
isSubmitting.value = true
|
||||
|
||||
if (from.value == OrderType.TeaRoomOrder) {
|
||||
// 预支付-茶室订单
|
||||
uni.showLoading({ title: '支付中...' })
|
||||
try {
|
||||
// 预支付
|
||||
const res = await prePay({
|
||||
from: PayValueMap[pay.value],
|
||||
order_id: orderId.value,
|
||||
pay_way: pay.value,
|
||||
order_source: PayOrderSource.MINI, //订单来源:1-小程序; 2-h5; 3app
|
||||
order_type: Cashier.handleGetOrderType(), // 0为茶艺师 1为茶室包间 2为茶室套餐
|
||||
store_id: storeId.value || 0
|
||||
// 余额支付(平台余额、门店余额)
|
||||
if (pay.value == PayValue.PlatformBalance || pay.value == PayValue.StoreBalance) {
|
||||
await balancePay({
|
||||
id: res.pay,
|
||||
store_id: storeId.value || 0,
|
||||
pay_way: pay.value,
|
||||
})
|
||||
|
||||
// 余额支付(平台余额、门店余额)
|
||||
if (pay.value == PayValue.PlatformBalance || pay.value == PayValue.StoreBalance) {
|
||||
await balancePay({
|
||||
id: res.pay,
|
||||
store_id: storeId.value || 0,
|
||||
pay_way: pay.value,
|
||||
})
|
||||
uni.hideLoading()
|
||||
result.value = 'success'
|
||||
|
||||
uni.hideLoading()
|
||||
isSubmitting.value = false
|
||||
router.navigateBack(1, 500)
|
||||
} else if (pay.value == PayValue.WeChatPay) {
|
||||
// 微信支付
|
||||
console.log("🚀 ~ res.pay:", res.pay)
|
||||
if (res.pay_type && res.pay_type == 1) {
|
||||
toast.success('支付成功')
|
||||
result.value = 'success'
|
||||
|
||||
isSubmitting.value = false
|
||||
router.navigateBack(1, 500)
|
||||
} else if (pay.value == PayValue.WeChatPay) {
|
||||
// 微信支付
|
||||
console.log("🚀 ~ res.pay:", res.pay)
|
||||
if (res.pay_type && res.pay_type == 1) {
|
||||
toast.success('支付成功')
|
||||
result.value = 'success'
|
||||
return
|
||||
} else {
|
||||
wechatPay(res.pay.config).then((res) => {
|
||||
console.log("🚀 ~ res:", res)
|
||||
uni.hideLoading()
|
||||
if (res === 'success') {
|
||||
toast.success('支付成功')
|
||||
result.value = 'success'
|
||||
} else if (res === 'cancel') {
|
||||
toast.info('已取消支付')
|
||||
result.value = 'fail'
|
||||
} else {
|
||||
toast.info('支付失败,请重试')
|
||||
result.value = 'fail'
|
||||
}
|
||||
|
||||
isSubmitting.value = false
|
||||
router.navigateBack(1, 500)
|
||||
return
|
||||
} else {
|
||||
wechatPay(res.pay.config).then((res) => {
|
||||
console.log("🚀 ~ res:", res)
|
||||
uni.hideLoading()
|
||||
if (res === 'success') {
|
||||
toast.success('支付成功')
|
||||
result.value = 'success'
|
||||
} else if (res === 'cancel') {
|
||||
toast.info('已取消支付')
|
||||
result.value = 'fail'
|
||||
} else {
|
||||
toast.info('支付失败,请重试')
|
||||
result.value = 'fail'
|
||||
}
|
||||
|
||||
isSubmitting.value = false
|
||||
router.navigateBack(1, 500)
|
||||
return
|
||||
}).catch((e) => {
|
||||
console.log("🚀 ~ error:", e)
|
||||
uni.hideLoading()
|
||||
toast.info('支付失败,请重试')
|
||||
return
|
||||
})
|
||||
}
|
||||
}).catch((e) => {
|
||||
console.log("🚀 ~ error:", e)
|
||||
uni.hideLoading()
|
||||
toast.info('支付失败,请重试')
|
||||
return
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
isSubmitting.value = false
|
||||
uni.hideLoading()
|
||||
result.value = 'fail'
|
||||
router.navigateBack(1, 500)
|
||||
return
|
||||
}
|
||||
} else if (from.value == OrderType.TeaSpecialist) {
|
||||
// 预支付-茶艺师订单
|
||||
uni.showLoading({ title: '支付中...' })
|
||||
try {
|
||||
// 预支付
|
||||
const res = await newPrePay({
|
||||
from: PayValueMap[pay.value],
|
||||
order_id: renewOrderId.value > 0 ? renewOrderId.value : orderId.value, //如果是续单的话,则用续单的订单ID
|
||||
pay_way: pay.value,
|
||||
order_source: PayOrderSource.MINI, //订单来源:1-小程序; 2-h5; 3app
|
||||
order_type: renewOrderId.value > 0 ? PayOrderType.RenewTeaSpecialist : PayOrderType.TeaSpecialis, // 茶艺师订单
|
||||
})
|
||||
} catch (error) {
|
||||
isSubmitting.value = false
|
||||
uni.hideLoading()
|
||||
result.value = 'fail'
|
||||
router.navigateBack(1, 500)
|
||||
return
|
||||
}
|
||||
} else if (from.value == OrderType.TeaSpecialist) {
|
||||
// 预支付-茶艺师订单
|
||||
uni.showLoading({ title: '支付中...' })
|
||||
try {
|
||||
// 预支付
|
||||
const res = await newPrePay({
|
||||
from: PayValueMap[pay.value],
|
||||
order_id: renewOrderId.value > 0 ? renewOrderId.value : orderId.value, //如果是续单的话,则用续单的订单ID
|
||||
pay_way: pay.value,
|
||||
order_source: PayOrderSource.MINI, //订单来源:1-小程序; 2-h5; 3app
|
||||
order_type: renewOrderId.value > 0 ? PayOrderType.RenewTeaSpecialist : PayOrderType.TeaSpecialis, // 茶艺师订单
|
||||
})
|
||||
|
||||
// 余额支付(平台余额)
|
||||
if (pay.value == PayValue.PlatformBalance && res) {
|
||||
// 余额支付(平台余额)
|
||||
if (pay.value == PayValue.PlatformBalance && res) {
|
||||
|
||||
uni.hideLoading()
|
||||
uni.hideLoading()
|
||||
result.value = 'success'
|
||||
|
||||
isSubmitting.value = false
|
||||
router.navigateBack(1, 500)
|
||||
} else if (pay.value == PayValue.WeChatPay) {
|
||||
if (res.order_amount && Number(res.order_amount) == 0) {
|
||||
toast.success('支付成功')
|
||||
result.value = 'success'
|
||||
|
||||
isSubmitting.value = false
|
||||
router.navigateBack(1, 500)
|
||||
} else if (pay.value == PayValue.WeChatPay) {
|
||||
return
|
||||
} else {
|
||||
// 微信支付
|
||||
wechatPay(res.config).then((res) => {
|
||||
uni.hideLoading()
|
||||
@ -415,40 +427,41 @@
|
||||
return
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
isSubmitting.value = false
|
||||
uni.hideLoading()
|
||||
result.value = 'fail'
|
||||
router.navigateBack(1, 500)
|
||||
return
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 订单类型
|
||||
*/
|
||||
handleGetOrderType: () => {
|
||||
if (isGroupBuying.value) {
|
||||
// 购买团购套餐
|
||||
return PayOrderType.BuyCombo
|
||||
} else if (renew.value) {
|
||||
// 续订包间
|
||||
return PayOrderType.RenewRoom
|
||||
} else if (reserveTeaSpecialist.value) {
|
||||
// 预约茶艺师
|
||||
return PayOrderType.TeaSpecialis
|
||||
} else {
|
||||
// 默认是购买茶室
|
||||
return PayOrderType.TeaRoom
|
||||
} catch (error) {
|
||||
isSubmitting.value = false
|
||||
uni.hideLoading()
|
||||
result.value = 'fail'
|
||||
router.navigateBack(1, 500)
|
||||
return
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* 订单类型
|
||||
*/
|
||||
handleGetOrderType: () => {
|
||||
if (isGroupBuying.value) {
|
||||
// 购买团购套餐
|
||||
return PayOrderType.BuyCombo
|
||||
} else if (renew.value) {
|
||||
// 续订包间
|
||||
return PayOrderType.RenewRoom
|
||||
} else if (reserveTeaSpecialist.value) {
|
||||
// 预约茶艺师
|
||||
return PayOrderType.TeaSpecialis
|
||||
} else {
|
||||
// 默认是购买茶室
|
||||
return PayOrderType.TeaRoom
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
<style lang="scss">
|
||||
page {
|
||||
background-color: $cz-page-background;
|
||||
}
|
||||
page {
|
||||
background-color: $cz-page-background;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -86,10 +86,8 @@
|
||||
</view>
|
||||
<view class="px-12rpx mt-8rpx">
|
||||
<view class="text-28rpx font-bold text-[#303133] line-1">{{ item.title }}</view>
|
||||
<view class="text-[#FF5951] mt-6rpx flex items-baseline font-400">
|
||||
<text class="text-28rpx">¥</text>
|
||||
<text class="text-30rpx">{{ item.discount_price }}</text>
|
||||
<text class="text-24rpx">/{{ item.hour }}小时</text>
|
||||
<view class="text-[#FF5951] mt-6rpx font-400 w-180rpx">
|
||||
<text class="text-30rpx block" style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap;">¥{{ item.discount_price }}/{{ item.hour }}小时</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
@ -98,22 +98,20 @@
|
||||
return
|
||||
}
|
||||
|
||||
uni.showLoading({
|
||||
title: '登录中...',
|
||||
mask: true
|
||||
})
|
||||
try {
|
||||
const res = await userStore.wxLogin(Number(storeId.value))
|
||||
console.log("🚀 ~ token:", uni.getStorageSync('token'))
|
||||
uni.hideLoading()
|
||||
uni.showLoading({ title: '登录中...', mask: true });
|
||||
const res = await userStore.wxLogin(Number(storeId.value) || 0);
|
||||
if (!res.mobile) {
|
||||
showBindMobilePopup.value = true
|
||||
return false
|
||||
showBindMobilePopup.value = true;
|
||||
toast.info('请先绑定手机号');
|
||||
return;
|
||||
}
|
||||
|
||||
Login.handleToLogin()
|
||||
} catch(error) {
|
||||
uni.hideLoading()
|
||||
Login.handleToLogin();
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
toast.info('登录失败,请重试');
|
||||
} finally {
|
||||
uni.hideLoading();
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
Reference in New Issue
Block a user