|
|
|
|
@ -6,7 +6,7 @@ import Taro, { useLoad, useRouter } from '@tarojs/taro'
@@ -6,7 +6,7 @@ import Taro, { useLoad, useRouter } from '@tarojs/taro'
|
|
|
|
|
import { useState } from 'react' |
|
|
|
|
import { observer } from 'mobx-react' |
|
|
|
|
import { Stepper } from '@taroify/core' |
|
|
|
|
import { depositStart, balanceStart, invokeWechatPay, PayType } from '../../api/startDevice' |
|
|
|
|
import { depositStart, balanceStart, invokeWechatPay, getTablePrice, PayType } from '../../api/startDevice' |
|
|
|
|
import { userStore, tableStore } from '../../store' |
|
|
|
|
import './index.scss' |
|
|
|
|
|
|
|
|
|
@ -18,6 +18,7 @@ const SelfStart = observer(() => {
@@ -18,6 +18,7 @@ const SelfStart = observer(() => {
|
|
|
|
|
const [deposit, setDeposit] = useState(100) // 押金金额
|
|
|
|
|
const [paymentMethod, setPaymentMethod] = useState<'微信支付' | '余额支付'>('微信支付') // 支付方式
|
|
|
|
|
const [loading, setLoading] = useState(false) // 加载状态
|
|
|
|
|
const [pricePerHour, setPricePerHour] = useState(0) // 每小时价格(从接口获取)
|
|
|
|
|
|
|
|
|
|
// 从路由参数获取设备信息,如果没有则从 store 获取
|
|
|
|
|
const grpSn = tableStore.getGrpSn(router.params.grpSn) |
|
|
|
|
@ -32,6 +33,20 @@ const SelfStart = observer(() => {
@@ -32,6 +33,20 @@ const SelfStart = observer(() => {
|
|
|
|
|
if (grpSn) { |
|
|
|
|
tableStore.setCurrentGrpSn(grpSn) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 获取该用户对应的台球桌价格
|
|
|
|
|
const openId = userStore.userInfo?.wxOpenId || Taro.getStorageSync('openId') |
|
|
|
|
if (openId && grpSn) { |
|
|
|
|
getTablePrice(openId, grpSn) |
|
|
|
|
.then((res) => { |
|
|
|
|
if (res.data) { |
|
|
|
|
setPricePerHour(res.data) |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.catch((err) => { |
|
|
|
|
console.error('获取价格失败:', err) |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 显示提示 Toast
|
|
|
|
|
setTimeout(() => { |
|
|
|
|
@ -57,10 +72,11 @@ const SelfStart = observer(() => {
@@ -57,10 +72,11 @@ const SelfStart = observer(() => {
|
|
|
|
|
setDeposit(value) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 计算续费时长(以小时为单位,假设 28.8元/小时)
|
|
|
|
|
// 根据押金和实际价格计算预计时长
|
|
|
|
|
const calculateDuration = () => { |
|
|
|
|
const hours = Math.floor(deposit / 28.8) |
|
|
|
|
const minutes = Math.round((deposit / 28.8 - hours) * 60) |
|
|
|
|
if (!pricePerHour) return '-' |
|
|
|
|
const hours = Math.floor(deposit / pricePerHour) |
|
|
|
|
const minutes = Math.round((deposit / pricePerHour - hours) * 60) |
|
|
|
|
return `约${hours}小时${minutes}分钟` |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -224,16 +240,13 @@ const SelfStart = observer(() => {
@@ -224,16 +240,13 @@ const SelfStart = observer(() => {
|
|
|
|
|
{/* 价格信息 */} |
|
|
|
|
<View className="price-info"> |
|
|
|
|
<View className="price-item"> |
|
|
|
|
<Text className="price-value">¥28.80</Text> |
|
|
|
|
<Text className="price-value">¥{pricePerHour > 0 ? pricePerHour.toFixed(2) : '--'}</Text> |
|
|
|
|
<Text className="price-label">/小时</Text> |
|
|
|
|
</View> |
|
|
|
|
<View className="price-item"> |
|
|
|
|
<Text className="price-label">押金</Text> |
|
|
|
|
<Text className="price-value">¥100.00</Text> |
|
|
|
|
</View> |
|
|
|
|
<View className="vip-price"> |
|
|
|
|
<Text className="vip-text">VIP ¥20.00</Text> |
|
|
|
|
</View> |
|
|
|
|
</View> |
|
|
|
|
|
|
|
|
|
{/* 价格时段 */} |
|
|
|
|
|