优化功能

This commit is contained in:
wangxiaowei
2026-01-12 17:39:48 +08:00
parent d1560ab450
commit f5e77e997b
21 changed files with 498 additions and 98 deletions

View File

@ -8,10 +8,10 @@ VITE_DELETE_CONSOLE = false
VITE_SHOW_SOURCEMAP = true
# 请求地址
VITE_SERVER_BASEURL = 'https://cz.stnav.com'
VITE_SERVER_BASEURL = 'https://76458.com'
# 图片上传路径
VITE_UPLOAD_BASEURL = 'https://cz.stnav.com/upload'
VITE_UPLOAD_BASEURL = 'https://76458.com/upload'
# 上传图片请求地址
VITE_UPLOAD_BASEURL = 'https://cz.stnav.com/api/upload/image'
VITE_UPLOAD_IMAGE_URL = 'https://cz.stnav.com/'
VITE_UPLOAD_BASEURL = 'https://76458.com/api/upload/image'
VITE_UPLOAD_IMAGE_URL = 'https://76458.com/'

View File

@ -17,3 +17,10 @@ export function getHomeBannerList() {
export function getHomeCouponPopup() {
return http.Post<any>('api/UserCoupon/isCoupin')
}
/**
* 首页领取88元优惠券
*/
export function claimIndexCoupon() {
return http.Post('/api/UserCoupon/shouyeCoupon', {})
}

View File

@ -95,7 +95,7 @@ export interface IGetMyCouponsParams {
type_id: number
}
export function getMyCoupons(data: IGetMyCouponsParams) {
return http.Post('/api/UserCoupon/orderCoupinList', data)
return http.Post('/api/UserCoupon/UserCoupinList', data)
}
/**
@ -189,3 +189,10 @@ export function getMobileByMnp(code: string) {
export function openLock(order_id: number, type: number) {
return http.Post('/api/Common/ce_ttlock', {order_id, type})
}
/**
* 门店余额记录
*/
export function getStoreBalanceLog() {
return http.Post<any>('/api/user/userStoreMoneyList', {})
}

View File

@ -0,0 +1,172 @@
<template>
<view class="pb-254rpx">
<!-- 兑换码 -->
<view class="mt-46rpx pb-86rpx">
<view class="flex items-center justify-center">
<view class="mr-30rpx w-72rpx h-72rpx">
<wd-img width="72rpx" height="72rpx" :src="`${OSS}icon/icon_douyin.png`"></wd-img>
</view>
<view class="text-40rpx text-[#303133] leading-56rpx">抖音兑换</view>
</view>
<view class="mt-42rpx">
<wd-input
type="text"
placeholder="输入兑换码"
v-model="code"
no-border
custom-class="!bg-[#F6F7F8] !rounded-16rpx"
custom-input-class="!h-104rpx">
<template #prefix>
<view class="ml-38rpx flex items-center" @click="DouYinExcharge.handleScan">
<view class="w-36rpx h-36rpx">
<wd-img width="36rpx" height="36rpx" :src="`${OSS}icon/icon_scan.png`"></wd-img>
</view>
<wd-divider vertical />
</view>
</template>
</wd-input>
</view>
<view class="bg-[#4C9F44] text-[#fff] h-90rpx leading-90rpx text-center rounded-8rpx mt-80rpx" @click="DouYinExcharge.handleConfirm">确定</view>
</view>
<!-- 间隔线 -->
<!-- <view>
<wd-gap bg-color="#F4F5F6" height="20rpx"></wd-gap>
</view> -->
<!-- 兑换记录 -->
<!-- <view class="px-30rpx">
<view class="text-32rpx text-[#303133] leading-144rpx h-144rpx border-b-2rpx border-b-solid border-b-[#E5E5E5]">兑换记录</view>
<view class="w-full">
<view class="h-144rpx border-b-2rpx border-b-solid border-b-[#E5E5E5] flex justify-between items-center" v-for="(item, index) in 3" :key="index">
<view>
<view class="text-[#303133] text-28rpx leading-40rpx">这是团购套餐的名字</view>
<view class="text-[#909399] text-24rpx leading-32rpx mt-10rpx">2025-03-01 11:20</view>
</view>
<view class="font-bold text-36rpx text-[#303133] leading-50rpx">129</view>
</view>
</view>
</view> -->
<wd-message-box selector="wd-message-box-slot"></wd-message-box>
</view>
</template>
<script lang="ts" setup name="DouYinExcharge">
import { useMessage, useToast } from 'wot-design-uni'
import { checkDouyinCoupon } from '@/api/user'
import { router } from '@/utils/tools'
const OSS = inject('OSS')
const code = ref<string>('')
const message = useMessage('wd-message-box-slot')
const toast = useToast()
// 茶室ID
const props = defineProps({
storeId: {
type: Number,
default: 0
},
})
const emit = defineEmits(['success'])
const DouYinExcharge = {
/**
* 扫码
*/
handleScan: () => {
uni.scanCode({
success: async (res) => {
if(res.result) {
toast.loading({
loadingType: 'ring',
loadingColor: '#4C9F44',
msg: '兑换中...'
})
code.value = res.result
try {
const params = {
store_id: props.storeId,
code: res.result.trim(),
type: 2
}
await checkDouyinCoupon(params)
toast.close()
// 跳转页面
emit('success', true)
DouYinExcharge.handleToExcharge()
} catch (error) {
toast.close()
return
}
}
},
fail: (err) => {
console.log('scanCode err', err);
},
})
},
/**
* 确认兑换
*/
handleConfirm: async () => {
if(!code.value) {
toast.info('兑换失败 请检查兑换码')
return
}
toast.loading({
loadingType: 'ring',
loadingColor: '#4C9F44',
msg: '兑换中...'
})
try {
const params = {
store_id: props.storeId,
code: code.value.replace(/\s+/g, ''),
type: 1
}
await checkDouyinCoupon(params)
toast.close()
// 跳转页面
emit('success', true)
DouYinExcharge.handleToExcharge()
} catch (error) {
toast.close()
return
}
},
/**
* 跳转兑换成功提示
*/
handleToExcharge: () => {
code.value = ''
message.confirm({
title: '兑换成功',
msg: '您的抖音券已经兑换成功',
confirmButtonText: '好的',
cancelButtonText: '取消',
cancelButtonProps: {
customClass: '!bg-[#F6F7F8] !text-[#303133] !text-32rpx !leading-44rpx !rounded-8rpx',
},
confirmButtonProps: {
customClass: '!bg-[#4C9F44] !text-[#fff] !text-32rpx !leading-44rpx !rounded-8rpx',
}
}).then((res) => {}).catch(() => {})
}
}
</script>
<script lang="ts">
export default {}
</script>

View File

@ -0,0 +1,51 @@
<route lang="jsonc" type="page">
{
"needLogin": true,
"layout": "default",
"style": {
"navigationStyle": "custom"
}
}
</route>
<template>
<view class="pb-100rpx">
<navbar title="专属客服" custom-class='!bg-[#FCEDDC]'></navbar>
<view class="mt-32rpx">
<view class="relative flex justify-center">
<wd-img :src="`${OSS}images/contact/image1.png`" width="690rpx" height="1232rpx"></wd-img>
<view class="absolute top-96rpx left-238rpx flex items-center w-full" @click="Conatct.handleCall">
<view class="font-400 text-28rpx leading-40rpx text-[#AD7A56] mr-24rpx">电话400-6245-123</view>
<view class="font-bold text-28rpx leading-40rpx text-[#4C9F44]">拨打</view>
</view>
<view class="absolute top-284rpx left-180rpx z-2">
<image :src="`${OSS}images/contact/image2.jpg`" style="width: 400rpx; height: 400rpx;" show-menu-by-longpress />
<!-- <wd-img :src="`${OSS}images/contact/image2.jpg`" width="400rpx" height="400rpx"></wd-img> -->
</view>
</view>
</view>
</view>
</template>
<script lang="ts" setup>
const OSS = inject('OSS')
const Conatct = {
/**
* 拨打电话
*/
handleCall() {
uni.makePhoneCall({
phoneNumber: '4006245123'
})
}
}
</script>
<style lang="scss">
page {
background-color: #FCEDDC;
}
</style>

View File

@ -23,7 +23,7 @@
</view>
<view class="text-40rpx text-[#303133] leading-56rpx">抖音兑换</view>
</view>
<view class="mt-42rpx mx-60rpx">
<view class="mt-42rpx">
<wd-input
type="text"
placeholder="输入兑换码"
@ -41,7 +41,7 @@
</template>
</wd-input>
</view>
<view class="bg-[#4C9F44] text-[#fff] mx-60rpx h-90rpx leading-90rpx text-center rounded-8rpx mt-80rpx" @click="Excharge.handleConfirm">确定</view>
<view class="bg-[#4C9F44] text-[#fff] h-90rpx leading-90rpx text-center rounded-8rpx mt-80rpx" @click="Excharge.handleConfirm">确定</view>
</view>
<!-- 间隔线 -->
@ -184,10 +184,4 @@
page {
background-color: #fff;
}
.coupon-bg {
background-image: url(#{$OSS}images/order/order_image2.png);
background-repeat: no-repeat;
background-size: 100% 100%;
}
</style>

View File

@ -113,7 +113,7 @@
</view>
<view class="text-32rpx leading-44rpx flex items-center justify-center leading-90rpx text-center text-[#303133] mt-112rpx pb-66rpx">
<view class="w-330rpx h-90rpx bg-[#FFFFFF] rounded-8rpx mr-30rpx">联系我们</view>
<view class="w-330rpx h-90rpx bg-[#FFFFFF] rounded-8rpx mr-30rpx" @click="router.navigateTo('/bundle/contact/contact')">联系我们</view>
<view class="w-330rpx h-90rpx bg-[#4C9F44] rounded-8rpx text-#fff">提交申请</view>
</view>
</view>
@ -121,6 +121,7 @@
<script lang="ts" setup>
import { useColPickerData } from '@/hooks/useColPickerData'
import { router } from '@/utils/tools'
const OSS = inject('OSS')

View File

@ -162,7 +162,7 @@
</view>
<view class="text-32rpx leading-44rpx flex items-center justify-center leading-90rpx text-center text-[#303133] mt-112rpx pb-66rpx">
<view class="w-330rpx h-90rpx bg-[#FFFFFF] rounded-8rpx mr-30rpx">联系我们</view>
<view class="w-330rpx h-90rpx bg-[#FFFFFF] rounded-8rpx mr-30rpx" @click="router.navigateTo('/bundle/contact/contact')">联系我们</view>
<view class="w-330rpx h-90rpx bg-[#4C9F44] rounded-8rpx text-#fff">提交申请</view>
</view>
</view>
@ -170,6 +170,7 @@
<script lang="ts" setup>
import { useColPickerData } from '@/hooks/useColPickerData'
import { router } from '@/utils/tools'
const OSS = inject('OSS')

View File

@ -236,7 +236,7 @@
</view>
<view class="text-32rpx leading-44rpx flex items-center justify-center leading-90rpx text-center text-[#303133] mt-112rpx pb-66rpx">
<view class="w-330rpx h-90rpx bg-[#FFFFFF] rounded-8rpx mr-30rpx">联系我们</view>
<view class="w-330rpx h-90rpx bg-[#FFFFFF] rounded-8rpx mr-30rpx" @click="router.navigateTo('/bundle/contact/contact')">联系我们</view>
<view class="w-330rpx h-90rpx bg-[#4C9F44] rounded-8rpx text-#fff">提交申请</view>
</view>
</view>
@ -244,6 +244,7 @@
<script lang="ts" setup>
import { useColPickerData } from '@/hooks/useColPickerData'
import { router } from '@/utils/tools'
const OSS = inject('OSS')

View File

@ -120,7 +120,7 @@
<view class="bg-white rounded-16rpx py-26rpx px-30rpx mt-24rpx mx-30rpx">
<view class="text-[#303133] text-32rpx leading-44rpx font-bold mb-24rpx">其他说明</view>
<view class="">
<rich-text :nodes="teaRoom.other_describe"></rich-text>
<rich-text :nodes="teaRoom.room.other_describe"></rich-text>
</view>
</view>

View File

@ -113,9 +113,17 @@
<view>已预约</view>
</view>
</view>
<mescroll-body @init="mescrollInit" @down="downCallback" :down="downOption" :up="upOption" @up="Room.upCallback">
<room-list :is-reserve="tabIndexs === 0" :is-group-buying="tabIndexs === 1" :list="list"></room-list>
</mescroll-body>
<view v-if="tab < 2">
<mescroll-body @init="mescrollInit" @down="downCallback" :down="downOption" :up="upOption" @up="Room.upCallback">
<room-list :is-reserve="tabIndexs === 0" :is-group-buying="tabIndexs === 1" :list="list"></room-list>
</mescroll-body>
</view>
<!-- 抖音兑换 -->
<view v-if="storeType == StoreType.Direct && tab === 2">
<dou-yin-excharge :store-id="teaRoomId" @success="Room.handleExchargeSuccess"/>
</view>
</view>
</view>
@ -146,6 +154,7 @@
import { useUserStore } from '@/store'
import { router } from '@/utils/tools'
import { StoreType } from '@/utils/tea'
import DouYinExcharge from '@/bundle/components/DouYinExcharge.vue'
const rightPadding = inject('capsuleOffset')
const OSS = inject('OSS')
@ -372,23 +381,6 @@
* tab切换获取index
*/
handleChangeTab: (item: { index: number }) => {
console.log("🚀 ~ item.index:", item.index)
if (item.index == 2) {
uni.showLoading({ title: '跳转中...' })
// 直营店抖音兑换强制切回第一个tab
nextTick(() => {
if (tabsRef.value && typeof tabsRef.value.setActive === 'function') {
tabsRef.value.setActive(0, false, true)
}
})
tab.value = 0
tabIndexs.value = 0
router.navigateTo(`/bundle/order/douyin/excharge?storeId=${teaRoomId.value}`, 200)
uni.hideLoading()
return
}
tabIndexs.value = item.index
list.value = []
getMescroll().resetUpScroll()

View File

@ -0,0 +1,69 @@
<route lang="jsonc" type="page">{
"layout": "default",
"style": {
"navigationStyle": "custom",
"navigationBarBackgroundColor": "#fff"
}
}</route>
<template>
<view>
<navbar title="门店余额" custom-class='!bg-[#F6F7F8]'></navbar>
<view class="">
<view class="mx-30rpx mt-20rpx">
<view class="bg-white rounded-16rpx px-36rpx py-32rpx mb-20rpx" v-for="item in list" :key="item.id">
<view class="flex items-center justify-between mb-32rpx">
<view class="flex items-center">
<wd-img :src="`${OSS}icon/icon_tea3.png`" width="40rpx" height="40rpx"></wd-img>
<view class="font-bold text-34rpx leading-48rpx text-[#303133] ml-12rpx w-300rpx line-1">{{ item.store_name }}</view>
</view>
<view class="text-[#303133] flex items-center">
<view class="font-400 text-26rpx mr-18rpx">余额</view>
<view class="font-bold text-24rpx">
<price-format color="#303133" weight="bold" :first-size="30" :second-size="24" :subscript-size="22" :price="item.money"></price-format>
</view>
</view>
</view>
<view class="flex items-center">
<wd-img :src="`${OSS}icon/icon_location4.png`" width="30rpx" height="30rpx"></wd-img>
<view class="font-400 text-26rpx leading-36rpx line-1 ml-16rpx">{{ item.address }}</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script lang="ts" setup>
import { getStoreBalanceLog } from '@/api/user'
const OSS = inject('OSS')
const list = ref<Array<any>>([])
onLoad((args) => {
RechargeList.handleInit()
})
const RechargeList = {
handleInit: async () => {
const res = await getStoreBalanceLog()
list.value = res
}
}
</script>
<style lang="scss">
page {
background-color: $cz-page-background;
}
.datetime-picker {
:deep() {
.wd-cell {
background-color: transparent !important;
}
}
}
</style>

View File

@ -57,10 +57,10 @@
<script lang="ts" setup>
import { PayList, PayCategory, PayValue, PayOrderType, PayOrderSource } from '@/utils/pay'
import { PayList, PayCategory, PayValue, PayOrderType, PayOrderSource, PayValueMap } from '@/utils/pay'
import { teaRoomRecharge, getRechargeActivity } from '@/api/tea-room'
import { wechatPay } from '@/hooks/usePay'
import { prePay, createRechargeOrder } from '@/api/pay'
import { createRechargeOrder, newPrePay } from '@/api/pay'
import { useToast } from 'wot-design-uni'
const toast = useToast()
@ -109,39 +109,41 @@
try {
// 先请求充值接口
const res = await createRechargeOrder({id: rechargeValue.value})
console.log("🚀 ~ res:", res)
// 预支付
const pay = await prePay({
from: 'recharge',
order_id: res.order_id,
pay_way: 2,
order_source: PayOrderSource.MINI, //订单来源1-小程序; 2-h5; 3app
order_type: PayOrderType.Recharge,
store_id: 0
})
if (res.order_id) {
// 预支付
const pay = await newPrePay({
from: PayValueMap[PayValue.WeChatPay],
order_id: res.order_id, //如果是续单的话则用续单的订单ID
pay_way: PayValue.WeChatPay,
order_source: PayOrderSource.MINI, //订单来源1-小程序; 2-h5; 3app
order_type: PayOrderType.TeaRoomRecharge, // 茶艺师订单
})
wechatPay(pay.pay.config).then((res) => {
uni.hideLoading()
if (res === 'success') {
setTimeout(() => {
toast.success('支付成功')
}, 100);
return
} else if (res === 'cancel') {
setTimeout(() => {
toast.show('已取消支付')
}, 100);
return
} else {
setTimeout(() => {
toast.show('支付失败,请重试')
}, 100);
return
}
}).catch(() => {
wechatPay(pay.config).then((res) => {
uni.hideLoading()
if (res === 'success') {
setTimeout(() => {
toast.success('支付成功')
}, 100);
return
} else if (res === 'cancel') {
setTimeout(() => {
toast.show('已取消支付')
}, 100);
return
} else {
setTimeout(() => {
toast.show('支付失败,请重试')
}, 100);
return
}
}).catch(() => {
toast.close()
})
} else {
toast.close()
})
}
} catch (error) {
toast.close()
}

View File

@ -182,20 +182,18 @@
const orderStatus = ref<string>('')
const list = ref<Array<any>>([]) // 茶室列表
const keywords = ref<string>('') // 搜索关键词
const canReset = ref<boolean>(false) // 避免onShow重复加载
onShow(() => {
if (canReset.value) {
list.value = []
getMescroll().resetUpScroll()
}
canReset.value = true
})
onLoad(async () => {
uni.$on('refreshTeaSpecialist', () => {
list.value = []
getMescroll().resetUpScroll()
})
})
onUnload(() => {
uni.$off('refreshTeaSpecialist')
})
// 茶室分享(仅页面右上角分享,无需按钮分享)
onShareAppMessage(() => {
return {

View File

@ -7,7 +7,7 @@
<wd-img width="100%" height="100%" :src="item.img"
radius="10rpx"/>
</view>
<view class="flex-1 ml-32rpx relative" v-if="!isGroupBuying">
<view class="flex-1 ml-32rpx relative" v-if="!isGroupBuying" @click="RoomList.handleToRoomPage(ReserveServiceCategory.ReserveRoom, item.status, item.store_id, item.id, item.price)">
<view class="text-28rpx text-[#303133] leading-40rpx line-1 w-420rpx">{{ item.title }}</view>
<view class="mt-22rpx flex">
<template v-for="(label, labelIndex) in item.label" :key="labelIndex">
@ -35,13 +35,31 @@
</view>
<view v-if="!isUseCoupon" class="flex flex-col justify-end items-end">
<!-- 预定状态 -->
<view class="flex flex-col justify-center items-center w-108rpx" @click="RoomList.handleToPage(ReserveServiceCategory.ReserveRoom, item.store_id, item.id, item.price)" v-if="item.status === RoomStatus.AVAILABLE">
<!-- 预定状态-空闲中 -->
<view class="flex flex-col justify-center items-center w-108rpx" v-if="item.status === RoomStatus.AVAILABLE">
<view class="font-bold text-26rpx leading-36rpx text-[#4C9F44] h-40rpx wait1-border">空闲中</view>
<view class="bg-[#4C9F44] font-400 text-26rpx text-[#fff] h-40rpx wait2-border">预定</view>
</view>
<!-- 预定状态-使用中 -->
<view class="flex flex-col justify-center items-center w-108rpx" v-if="item.status === RoomStatus.IN_USE">
<view class="font-bold text-26rpx leading-36rpx text-[#F29747] h-40rpx use1-border">使用中</view>
<view class="bg-[#F29747] font-400 text-26rpx text-[#fff] h-40rpx use2-border">预定</view>
</view>
<!-- 预定状态-待打扫 -->
<view class="flex flex-col justify-center items-center w-108rpx" v-if="item.status === RoomStatus.WAIT_CLEANING">
<view class="font-bold text-26rpx leading-36rpx text-[#818CA9] h-40rpx wait1-clear-border">未打扫</view>
<view class="bg-[#818CA9] font-400 text-26rpx text-[#fff] h-40rpx wait2-clear-border">预定</view>
</view>
<view class="w-108rpx h-52rpx leading-52rpx border-2rpx border-solid border-[#FF5951] rounded-8rpx text-[#FF5951] font-bold text-26rpx text-center" v-if="item.status === RoomStatus.MAINTENANCE">维护中</view>
<view class="w-108rpx h-52rpx leading-52rpx border-2rpx border-solid border-[#F29747] rounded-8rpx text-[#F29747] font-bold text-26rpx text-center" v-if="item.status === RoomStatus.IN_USE">使用中</view>
<!-- <view class="w-108rpx h-52rpx leading-52rpx border-2rpx border-solid border-[#F29747] rounded-8rpx text-[#F29747] font-bold text-26rpx text-center"
@click="RoomList.handleToPage(ReserveServiceCategory.ReserveRoom, item.store_id, item.id, item.price)"
v-if="item.status === RoomStatus.IN_USE">
使用中
</view> -->
<view class="font-400 text-22rpx text-[#6A6363] leading-32rpx w-200rpx text-right mt-8rpx" v-if="item.people_number">{{ item.people_number }}</view>
</view>
</view>
@ -173,6 +191,19 @@
}
const RoomList = {
/**
* 跳转茶室详情页面
* @param type 跳转类型ReserveRoom-预定包间、GroupBuying-团购套餐
* @param storeId 茶室ID
* @param id 包间ID
* @param price 包间价格
*/
handleToRoomPage: (type: string, status: number, storeId: number, id: number, price: number) => {
if (status !== RoomStatus.MAINTENANCE && status !== RoomStatus.CLEANING) {
router.navigateTo(`/bundle/tea-room/detail?storeId=${storeId}&id=${id}&type=${type}&price=${price}`)
}
},
/**
* 跳转页面
* @param type 跳转类型ReserveRoom-预定包间、GroupBuying-团购套餐
@ -230,4 +261,32 @@
border-radius: 0rpx 0rpx 8rpx 8rpx;
}
.use1-border {
border: 2rpx solid #F29747;
text-align: center;
border-radius: 8rpx 8rpx 0rpx 0rpx;
width: 108rpx;
}
.use2-border {
border: 2rpx solid #F29747;
width: 108rpx;
text-align: center;
border-radius: 0rpx 0rpx 8rpx 8rpx;
}
.wait1-clear-border {
border: 2rpx solid #818CA9;
text-align: center;
border-radius: 8rpx 8rpx 0rpx 0rpx;
width: 108rpx;
}
.wait2-clear-border {
border: 2rpx solid #818CA9;
width: 108rpx;
text-align: center;
border-radius: 0rpx 0rpx 8rpx 8rpx;
}
</style>

View File

@ -199,6 +199,15 @@
"navigationStyle": "custom"
}
},
{
"path": "contact/contact",
"type": "page",
"needLogin": true,
"layout": "default",
"style": {
"navigationStyle": "custom"
}
},
{
"path": "coupon/coupon",
"type": "page",
@ -306,6 +315,15 @@
"navigationStyle": "custom"
}
},
{
"path": "user/store-balance",
"type": "page",
"layout": "default",
"style": {
"navigationStyle": "custom",
"navigationBarBackgroundColor": "#fff"
}
},
{
"path": "vip/benefits",
"type": "page",

View File

@ -142,12 +142,14 @@
import { onPageScroll, onReachBottom } from '@dcloudio/uni-app'
import useMescroll from "@/uni_modules/mescroll-uni/hooks/useMescroll.js"
import { LOCATION_DENY_TIME_KEY, handleEnsureLocationAuthHooks, LOCATION_DEFAULT_CITY, handleGetLocationCity, LOCATION_CITY_KEY, handleForceGetLocation } from '@/hooks/useLocation'
import { getHomeBannerList, getHomeCouponPopup } from '@/api/home'
import { getHomeBannerList, getHomeCouponPopup, claimIndexCoupon } from '@/api/home'
import { getHomeTeaStoreList } from '@/api/tea-room'
import { useUserStore } from '@/store'
import { useToast } from 'wot-design-uni'
const OSS = inject('OSS')
const navbarHeight = inject('navbarHeight')
const toast = useToast()
// 轮播图
const swiperList = ref<string[]>([])
@ -354,9 +356,9 @@
/**
* 跳转领取优惠券页面
*/
handleToGetCoupon: () => {
handleToGetCoupon: async () => {
await claimIndexCoupon()
showCoupon.value = false
router.switchTab('/pages/my/my')
},
/**

View File

@ -158,15 +158,20 @@
*/
handleToLogin: () => {
const decoded = decodeURIComponent(redirectUrl.value)
console.log("🚀 ~ decoded:", decoded)
console.log("🚀 ~ decoded:", uni.getStorageSync('refreshTeaSpecialistDetailsParams'))
if (decoded == '/bundle/order/tea-room/order-detail') {
// 茶室订单转让
const transferOrderParams = uni.getStorageSync('transferOrderParams')
uni.$emit('transferOrder', transferOrderParams)
} else if (decoded == '/bundle_b/pages/tea-specialist/detail') {
// 刷新茶艺师详情页
uni.$emit('refreshTeaSpecialistDetails')
} else if (decoded == '/bundle/tea-room/room') {
// 刷新茶室列表页
uni.$emit('refreshShareTeaRoomLists')
} else if (decoded == '/bundle_b/pages/tea-specialist/list') {
// 刷新茶艺师列表页
uni.$emit('refreshTeaSpecialist')
}
toast.info('登录成功')

View File

@ -53,7 +53,8 @@
<!-- 余额显示 -->
<view class="mt-16rpx mx-30rpx flex justify-between">
<view class="flex items-center">
<view class="w-160rpx text-[#303133] text-center" @click="router.navigateTo('/bundle/coupon/my-coupon')">
<!-- <view class="w-160rpx text-[#303133] text-center" @click="router.navigateTo('/bundle/coupon/my-coupon')"> -->
<view class="w-160rpx text-[#303133] text-center">
<view class="font-bold text-36rpx leading-50rpx"> {{ isLogin ? user.coupon_count : '- -' }}</view>
<view class="text-24rpx leading-34rpx">优惠券</view>
</view>
@ -62,13 +63,23 @@
<view class="text-24rpx leading-34rpx">收藏</view>
</view> -->
</view>
<view class="relative" @click="router.navigateTo('/bundle/wallet/wallet')">
<view class="w-300rpx h-148rpx">
<wd-img width="100%" height="100%" :src="`${OSS}images/my/my_image3.png`" mode="aspectFill"></wd-img>
<view class="relative">
<view class="w-378rpx h-148rpx">
<wd-img width="100%" height="100%" :src="`${OSS}images/my/my_image8.png`" mode="aspectFill"></wd-img>
</view>
<view class="text-[#303133] absolute bottom-12rpx left-24rpx text-center">
<view class="text-30rpx leading-36rpx font-bold">{{ isLogin ? user.user_money : '- -' }}</view>
<view class="text-20rpx leading-28rpx ml-10rpx">平台余额</view>
<view class="text-[#303133] absolute bottom-12rpx text-center flex items-center justify-center w-full">
<view class="" @click="router.navigateTo('/bundle/wallet/wallet')">
<view class="text-30rpx leading-36rpx font-bold">{{ isLogin ? user.user_money : '- -' }}</view>
<view class="text-20rpx leading-28rpx ml-10rpx">平台余额</view>
</view>
<view class="border-dashed border-2rpx border-[#FFBC01] h-62rpx w-2rpx mx-28rpx"></view>
<view @click="router.navigateTo('/bundle/user/store-balance')">
<view class="text-30rpx leading-36rpx font-bold">{{ isLogin ? user.store_money : '- -' }}</view>
<view class="flex itemsc-center">
<view class="text-20rpx leading-28rpx ml-10rpx">门店余额</view>
<wd-icon name="chevron-right" color="#C78C4A" size="28rpx" custom-class="!mt-2rpx"></wd-icon>
</view>
</view>
</view>
</view>
</view>
@ -269,7 +280,7 @@
// 登录信息相关
const userInfo = ref<any>(null)
const user = ref<IUserResult>({
const user = ref({
id: 0,
sn: 0,
sex: "未知",
@ -285,6 +296,7 @@
member: 0,
mobile: "",
user_money: "0.00",
store_money: "0.00",
version: "",
last_month: 0
})

View File

@ -90,6 +90,14 @@
*/
handleToUse: () => {
router.redirectTo(`/bundle/tea-room/room?id=${storeId.value}&type=${storeType.value}`)
},
/**
* 完成
*/
handleRoomDone: () => {
router.redirectTo('/bundle_b/pages/tea-specialist/list')
// router.switchTab('/pages/index/index')
}
}
</script>

View File

@ -63,6 +63,7 @@ export enum PayOrderType {
ComboRefund = 5, // 套餐退款
TeaRoomRefund = 6, // 茶室退款
RenewRoom = 7, // 续订包间
TeaRoomRecharge = 9, // 茶室充值
TeaSpecialis = 10, // 茶艺师
RenewTeaSpecialist = 11, // 续订茶艺师服务
}