2025-05-14 15:14:12 +08:00
|
|
|
|
<template>
|
|
|
|
|
<view class="page">
|
|
|
|
|
<u-navbar title=" " :border-bottom="false" :background="bgc" back-icon-color="#fff" title-color='#fff'
|
|
|
|
|
title-size='36' height='36' id="navbar" :custom-back="btnfanhui">
|
|
|
|
|
</u-navbar>
|
2025-05-19 18:02:41 +08:00
|
|
|
|
<image src="https://api.ccttiot.com/smartmeter/img/static/u1dVlFYFsW87hp0Rs014" class="bj" mode=""></image>
|
|
|
|
|
<view class="bjmask"></view>
|
2025-05-17 08:42:24 +08:00
|
|
|
|
<view class="jilu neon-button" @click="btnjilu">
|
|
|
|
|
记录
|
|
|
|
|
</view>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
<view class="caozuo">
|
2025-06-19 17:41:39 +08:00
|
|
|
|
<image class="czbj" src="https://api.ccttiot.com/smartmeter/img/static/u2FepRO7UQ0k1b5nceB3" mode=""></image>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
<view class="topname">
|
2025-05-19 18:02:41 +08:00
|
|
|
|
<image src="https://api.ccttiot.com/smartmeter/img/static/uLd99OBSt2ECYX5cNHwn" mode=""></image>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="line"></view>
|
|
|
|
|
<view class="bangding">
|
|
|
|
|
<view class="lt">
|
|
|
|
|
<view class="zhuozi">
|
2025-06-19 17:41:39 +08:00
|
|
|
|
绑定桌号:<text v-if="yonghuobj.boothName" class="">{{yonghuobj.boothName}}</text> <text v-else>未绑定</text>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="sm">
|
|
|
|
|
绑定桌号,即可解锁对应桌台的爆灯器
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
2025-05-19 18:02:41 +08:00
|
|
|
|
<view v-if="yonghuobj.boothName" class="rt" @click="jbflag = true">
|
2025-06-19 17:41:39 +08:00
|
|
|
|
解绑/换绑 <image src="https://api.ccttiot.com/smartmeter/img/static/uYIshjyTMzRFKve7Ensk" mode=""></image>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view v-else class="rt" @click="smflag = true">
|
|
|
|
|
去绑定 <image src="https://api.ccttiot.com/smartmeter/img/static/uYIshjyTMzRFKve7Ensk" mode=""></image>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="line"></view>
|
|
|
|
|
<view class="shengyu">
|
2025-06-19 17:41:39 +08:00
|
|
|
|
剩余爆灯次数:<text style="font-size: 50rpx;font-weight: 600;">{{shengyuobj.number == null ? '0' : shengyuobj.number}}</text>次
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</view>
|
2025-05-19 18:02:41 +08:00
|
|
|
|
<view v-if="yonghuobj.boothName" @click="btnbaodeng" class="cishu breathing-light"
|
2025-05-17 08:42:24 +08:00
|
|
|
|
style="width: 254rpx;height: 254rpx;color: #fff;margin: auto;margin-top: 20rpx;display: flex;align-items: center;justify-content: center;position: relative;">
|
2025-06-19 17:41:39 +08:00
|
|
|
|
<image v-if="shengyuobj.number > 0" class="breathing-image" style="position: absolute;top: 0;left: 0;width: 254rpx;height: 254rpx;z-index: -1;"
|
2025-05-19 18:02:41 +08:00
|
|
|
|
src="https://api.ccttiot.com/smartmeter/img/static/uw0QKoMF30vahW7o1YPU" mode=""></image>
|
2025-05-17 08:42:24 +08:00
|
|
|
|
<image v-else style="position: absolute;top: 0;left: 0;width: 254rpx;height: 254rpx;z-index: -1;"
|
2025-05-19 18:02:41 +08:00
|
|
|
|
src="https://api.ccttiot.com/smartmeter/img/static/u0piVrPcUak8yM6mMziR" mode=""></image>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</view>
|
2025-05-17 08:42:24 +08:00
|
|
|
|
<view v-else class="cishu breathing-light"
|
|
|
|
|
style="width: 254rpx;height: 254rpx;color: #fff;margin: auto;margin-top: 20rpx;display: flex;align-items: center;justify-content: center;position: relative;">
|
|
|
|
|
<image class="" style="position: absolute;top: 0;left: 0;width: 254rpx;height: 254rpx;z-index: -1;"
|
2025-05-19 18:02:41 +08:00
|
|
|
|
src="https://api.ccttiot.com/smartmeter/img/static/u0piVrPcUak8yM6mMziR" mode=""></image>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</view>
|
2025-05-19 18:02:41 +08:00
|
|
|
|
<view v-if="yonghuobj.boothName" @click="btnbaodeng" class="neon-text-small"
|
2025-05-17 08:42:24 +08:00
|
|
|
|
style="width: 100%;text-align: center;margin-top: 30rpx;">
|
|
|
|
|
{{countdown > 0 ? `请等待${countdown}秒后再点击` : '点击爆灯'}}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</view>
|
|
|
|
|
<view class="chongzhi" @click="czflag = true">
|
|
|
|
|
充值
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<!-- 解除绑定弹窗 -->
|
|
|
|
|
<view class="delbd" v-if="jbflag">
|
2025-05-17 08:42:24 +08:00
|
|
|
|
<image class="cha" @click="jbflag = false"
|
|
|
|
|
src="https://api.ccttiot.com/smartmeter/img/static/uVJumKNddHRlp0EmzTx7" mode=""></image>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
<view class="zhuohao">
|
|
|
|
|
<view class="taihao">
|
|
|
|
|
绑定桌号
|
|
|
|
|
</view>
|
|
|
|
|
<view class="d15">
|
2025-05-19 18:02:41 +08:00
|
|
|
|
{{yonghuobj.boothName == null ? '--' : yonghuobj.boothName}}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="jcbd" @click="btnjiebang">
|
|
|
|
|
解除绑定 <image src="https://api.ccttiot.com/smartmeter/img/static/uVJumKNddHRlp0EmzTx7" mode=""></image>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="ghbd" @click="btngenghuan">
|
|
|
|
|
更换桌号 <image src="https://api.ccttiot.com/smartmeter/img/static/usK85jkGXw491hI1ItJo" mode=""></image>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="mask" v-if="jbflag"></view>
|
|
|
|
|
<!-- 充值弹窗 -->
|
|
|
|
|
<view class="cztc" v-if="czflag">
|
2025-06-19 17:41:39 +08:00
|
|
|
|
<image class="cha" @click="czflag = false" src="https://api.ccttiot.com/smartmeter/img/static/uVJumKNddHRlp0EmzTx7" mode=""></image>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
<view class="top">
|
|
|
|
|
请先充值爆灯次数
|
|
|
|
|
</view>
|
|
|
|
|
<view class="sy">
|
|
|
|
|
剩余:{{shengyuobj.number == null ? '0' : shengyuobj.number}}次
|
|
|
|
|
</view>
|
|
|
|
|
<view class="list">
|
2025-06-19 17:41:39 +08:00
|
|
|
|
<view :class="['list_item',tabindex == index ? 'active' : '']" v-for="(item,index) in taocanlist" :key="item.suitId" @click="btnitem(index,item)">
|
2025-05-14 15:14:12 +08:00
|
|
|
|
{{item.lightingNums == null ? '--' : item.lightingNums}} <text>次</text>
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="zfaniu" @click="btnzf">
|
|
|
|
|
立即支付(¥{{price}}元)
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="mask" v-if="czflag"></view>
|
|
|
|
|
<!-- 扫码绑定弹窗 -->
|
|
|
|
|
<view class="ewmbd" v-if="smflag">
|
2025-05-17 08:42:24 +08:00
|
|
|
|
<image class="cha" @click="smflag = false"
|
|
|
|
|
src="https://api.ccttiot.com/smartmeter/img/static/uVJumKNddHRlp0EmzTx7" mode=""></image>
|
2025-05-14 15:14:12 +08:00
|
|
|
|
<view class="top">
|
|
|
|
|
请扫描桌号二维码
|
|
|
|
|
</view>
|
|
|
|
|
<view class="toptwo">
|
|
|
|
|
进行绑定
|
|
|
|
|
</view>
|
|
|
|
|
<view class="hong">
|
|
|
|
|
绑定后即可使用对应桌台爆灯器
|
|
|
|
|
</view>
|
|
|
|
|
<view class="ewm">
|
|
|
|
|
<image src="https://api.ccttiot.com/smartmeter/img/static/uqZ6aQmUd79pHO6nSksa" mode=""></image>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="saoma" @click="btnsaoma">
|
|
|
|
|
扫码绑定
|
|
|
|
|
</view>
|
|
|
|
|
</view>
|
|
|
|
|
<view class="mask" v-if="smflag"></view>
|
|
|
|
|
</view>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
var xBlufi = require("@/components/blufi/xBlufi.js")
|
|
|
|
|
export default {
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
2025-05-17 08:42:24 +08:00
|
|
|
|
bgc: {
|
|
|
|
|
backgroundColor: "",
|
|
|
|
|
},
|
|
|
|
|
jbflag: false,
|
|
|
|
|
tabindex: 0,
|
|
|
|
|
czflag: false,
|
|
|
|
|
smflag: false,
|
|
|
|
|
kazuoid: "",
|
|
|
|
|
taocanlist: [],
|
|
|
|
|
price: '',
|
|
|
|
|
suitId: '',
|
|
|
|
|
cishu: '',
|
|
|
|
|
user: {},
|
|
|
|
|
shengyuobj: {},
|
|
|
|
|
yonghuobj: {},
|
2025-05-14 15:14:12 +08:00
|
|
|
|
countdown: 0, // 倒计时秒数
|
|
|
|
|
countdownTimer: null, // 倒计时定时器
|
|
|
|
|
ver_dataflag: 1,
|
|
|
|
|
mac: '',
|
|
|
|
|
deviceid: '',
|
|
|
|
|
devicename: '',
|
|
|
|
|
devicesarr: [],
|
|
|
|
|
findDeviceTimer: null,
|
2025-05-17 08:42:24 +08:00
|
|
|
|
duration:''
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onLoad(option) {
|
2025-06-19 17:41:39 +08:00
|
|
|
|
if (option.q) { //判断是否直接扫码进入 解析携带参数
|
2025-05-14 15:14:12 +08:00
|
|
|
|
const getQueryParam = (url, paramName) => {
|
|
|
|
|
const regex = new RegExp(`[?&]${paramName}=([^&]*)`)
|
|
|
|
|
const results = regex.exec(url)
|
|
|
|
|
return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : null
|
|
|
|
|
}
|
|
|
|
|
const sceneValue = option.q
|
|
|
|
|
const decodedValue = decodeURIComponent(sceneValue)
|
|
|
|
|
this.kazuoid = getQueryParam(decodedValue, 'k')
|
2025-05-19 18:02:41 +08:00
|
|
|
|
console.log(this.kazuoid,option.q);
|
2025-06-19 17:41:39 +08:00
|
|
|
|
if (!this.kazuoid) { //判断是否解析成功 有无id
|
2025-05-17 08:42:24 +08:00
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '无效的二维码',
|
|
|
|
|
confirmText: '知道了',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {}
|
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: '绑定中...',
|
|
|
|
|
mask: true
|
|
|
|
|
})
|
2025-06-19 17:41:39 +08:00
|
|
|
|
// 有id的话 一进入直接就进行绑定操作
|
2025-06-06 11:14:06 +08:00
|
|
|
|
this.$u.get(`/app/booth/getBoothDetail/${this.kazuoid}`).then(res => {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.hideLoading()
|
2025-05-17 08:42:24 +08:00
|
|
|
|
if (res.code == 200) {
|
2025-06-06 11:14:06 +08:00
|
|
|
|
this.yonghuobj = res.data
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.smflag = false
|
2025-05-17 08:42:24 +08:00
|
|
|
|
setTimeout(() => {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.getcishu()
|
2025-05-17 08:42:24 +08:00
|
|
|
|
}, 500)
|
|
|
|
|
} else {
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: res.msg,
|
|
|
|
|
confirmText: '知道了',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {}
|
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
uni.hideLoading()
|
2025-05-17 08:42:24 +08:00
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '绑定失败,请重试',
|
|
|
|
|
confirmText: '知道了',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {}
|
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
onShow() {
|
2025-06-06 11:14:06 +08:00
|
|
|
|
this.tabindex = 0
|
2025-05-14 15:14:12 +08:00
|
|
|
|
xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
|
|
|
|
|
this.getinfo()
|
|
|
|
|
this.gettaocan()
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
// 点击返回到首页
|
2025-05-17 08:42:24 +08:00
|
|
|
|
btnfanhui() {
|
|
|
|
|
uni.setStorageSync('type', 1)
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.switchTab({
|
2025-05-17 08:42:24 +08:00
|
|
|
|
url: '/pages/index/index'
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
// 点击更换桌号
|
2025-05-17 08:42:24 +08:00
|
|
|
|
btngenghuan() {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
let that = this
|
2025-05-17 08:42:24 +08:00
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '确定要换绑桌号吗?',
|
|
|
|
|
success: function(res) {
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
console.log('用户点击确定')
|
2025-06-19 17:41:39 +08:00
|
|
|
|
uni.scanCode({ //扫描桌号二维码解析出桌号id
|
2025-05-17 08:42:24 +08:00
|
|
|
|
onlyFromCamera: true,
|
|
|
|
|
scanType: ['qrCode'],
|
|
|
|
|
success: res => {
|
|
|
|
|
const getQueryParam = (url, paramName) => {
|
|
|
|
|
const regex = new RegExp(`[?&]${paramName}=([^&]*)`)
|
|
|
|
|
const results = regex.exec(url)
|
2025-06-19 17:41:39 +08:00
|
|
|
|
return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : null
|
2025-05-17 08:42:24 +08:00
|
|
|
|
}
|
|
|
|
|
const sceneValue = res.result
|
|
|
|
|
const decodedValue = decodeURIComponent(sceneValue)
|
|
|
|
|
that.kazuoid = getQueryParam(decodedValue, 'k')
|
|
|
|
|
if (!that.kazuoid) {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.showToast({
|
2025-05-17 08:42:24 +08:00
|
|
|
|
title: '无效的二维码',
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
2025-05-17 08:42:24 +08:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: '更换绑定中...',
|
|
|
|
|
mask: true
|
|
|
|
|
})
|
2025-06-06 11:14:06 +08:00
|
|
|
|
that.$u.get(`/app/booth/getBoothDetail/${that.kazuoid}`).then(res => {
|
2025-05-17 08:42:24 +08:00
|
|
|
|
uni.hideLoading()
|
|
|
|
|
if (res.code == 200) {
|
2025-06-06 11:14:06 +08:00
|
|
|
|
that.yonghuobj = res.data
|
2025-05-17 08:42:24 +08:00
|
|
|
|
that.smflag = false
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
that.jbflag = false
|
|
|
|
|
that.getcishu()
|
|
|
|
|
}, 500)
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '更换绑定成功',
|
|
|
|
|
icon: 'success',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: res.msg,
|
|
|
|
|
confirmText: '知道了',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {}
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
uni.hideLoading()
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.showToast({
|
2025-05-17 08:42:24 +08:00
|
|
|
|
title: '换绑失败,请重试',
|
2025-05-14 15:14:12 +08:00
|
|
|
|
icon: 'none',
|
2025-05-17 08:42:24 +08:00
|
|
|
|
duration: 2000
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
2025-05-17 08:42:24 +08:00
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
fail: err => {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.showToast({
|
2025-05-17 08:42:24 +08:00
|
|
|
|
title: '扫描失败,请重试',
|
2025-05-14 15:14:12 +08:00
|
|
|
|
icon: 'none',
|
2025-05-17 08:42:24 +08:00
|
|
|
|
duration: 2000
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
2025-05-17 08:42:24 +08:00
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else if (res.cancel) {
|
|
|
|
|
console.log('用户点击取消')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
2025-05-14 15:14:12 +08:00
|
|
|
|
},
|
|
|
|
|
// 点击解绑桌号
|
2025-05-17 08:42:24 +08:00
|
|
|
|
btnjiebang() {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
let that = this
|
|
|
|
|
uni.showModal({
|
2025-05-17 08:42:24 +08:00
|
|
|
|
title: '提示',
|
|
|
|
|
content: '确定要解绑吗?',
|
|
|
|
|
success: function(res) {
|
|
|
|
|
if (res.confirm) {
|
2025-06-06 11:14:06 +08:00
|
|
|
|
that.yonghuobj = {}
|
|
|
|
|
that.kazuoid = ''
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '解绑成功',
|
|
|
|
|
icon: 'success',
|
|
|
|
|
duration: 2000
|
2025-05-17 08:42:24 +08:00
|
|
|
|
})
|
2025-06-06 11:14:06 +08:00
|
|
|
|
that.jbflag = false
|
2025-05-17 08:42:24 +08:00
|
|
|
|
} else if (res.cancel) {
|
|
|
|
|
console.log('用户点击取消')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})
|
2025-05-14 15:14:12 +08:00
|
|
|
|
},
|
|
|
|
|
// 判断离线连接蓝牙
|
|
|
|
|
findDevice() {
|
2025-06-19 17:41:39 +08:00
|
|
|
|
const matchedDevice = this.devicesarr.find(device => device.name.slice(-12) === this.mac.slice(-12)) //截取最后12位mac号进行判断是否存在相同的
|
|
|
|
|
if (matchedDevice) { //如果有则停止搜索 进行连接
|
2025-05-14 15:14:12 +08:00
|
|
|
|
xBlufi.notifyStartDiscoverBle({
|
|
|
|
|
'isStart': false
|
|
|
|
|
})
|
2025-05-17 08:42:24 +08:00
|
|
|
|
xBlufi.notifyConnectBle({
|
2025-05-14 15:14:12 +08:00
|
|
|
|
isStart: true,
|
|
|
|
|
deviceId: matchedDevice.deviceId,
|
|
|
|
|
name: matchedDevice.name
|
|
|
|
|
})
|
|
|
|
|
this.deviceid = matchedDevice.deviceId
|
|
|
|
|
this.devicename = matchedDevice.name
|
2025-06-19 17:41:39 +08:00
|
|
|
|
} else { //如果没找到 则一直找 直到找到为止
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.findDeviceTimer = setTimeout(this.findDevice.bind(this), 1000)
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 获取附近蓝牙设备列表
|
|
|
|
|
funListenDeviceMsgEvent: function(options) {
|
|
|
|
|
switch (options.type) {
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_STATUS_CONNECTED:
|
2025-06-19 17:41:39 +08:00
|
|
|
|
if (!options.result) { //监听蓝牙是否断开
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.ver_dataflag = 1
|
2025-06-19 17:41:39 +08:00
|
|
|
|
this.findDevice() //如果监听到断开之后 则进行重新连接
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS:
|
2025-06-19 17:41:39 +08:00
|
|
|
|
if (options.result) { //将搜索的附近设备赋值
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.devicesarr = options.data
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_CONNECTED:
|
2025-06-19 17:41:39 +08:00
|
|
|
|
if (options.result == true) { //蓝牙回调 判断是否连接成功还是失败
|
2025-05-14 15:14:12 +08:00
|
|
|
|
xBlufi.notifyInitBleEsp32({
|
|
|
|
|
deviceId: this.deviceid
|
|
|
|
|
})
|
|
|
|
|
this.deviceid = options.data.deviceId
|
|
|
|
|
this.name = this.name
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
this.ver_dataflag = 3
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
}, 2000)
|
|
|
|
|
} else {
|
|
|
|
|
uni.hideLoading()
|
2025-06-19 17:41:39 +08:00
|
|
|
|
this.findDevice() //如果连接失败则继续重新连接
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case xBlufi.XBLUFI_TYPE.TYPE_GET_DEVICE_LISTS_START:
|
2025-06-19 17:41:39 +08:00
|
|
|
|
if (!options.result) { //蓝牙初始化失败 则需要重新进入 重新初始化
|
2025-05-17 08:42:24 +08:00
|
|
|
|
console.log('蓝牙初始化失败');
|
2025-05-14 15:14:12 +08:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
},
|
2025-06-19 17:41:39 +08:00
|
|
|
|
btnyue(){
|
|
|
|
|
this.flag = true
|
|
|
|
|
this.bootm = 0
|
|
|
|
|
res.data.forEach(item =>{
|
|
|
|
|
if(item.id == this.id){
|
|
|
|
|
this.list.map({
|
|
|
|
|
name:item.devicename,
|
|
|
|
|
id:item.id,
|
|
|
|
|
price:item.money
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
2025-05-14 15:14:12 +08:00
|
|
|
|
// 点击立即支付
|
2025-05-17 08:42:24 +08:00
|
|
|
|
btnzf() {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.$u.get(`/app/channel/list?appId=${this.$store.state.appid}`).then((res) => {
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
let data = {
|
2025-05-17 08:42:24 +08:00
|
|
|
|
suitId: this.suitId,
|
|
|
|
|
appId: this.$store.state.appid,
|
|
|
|
|
channelId: res.data[0].channelId,
|
|
|
|
|
payAmount: this.price,
|
|
|
|
|
number: this.cishu
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
this.$u.post(`/app/order`, data).then(resp => {
|
|
|
|
|
if (resp.code == 200) {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.requestPayment({
|
|
|
|
|
provider: 'wxpay',
|
|
|
|
|
timeStamp: resp.data.payParams.timeStamp,
|
|
|
|
|
nonceStr: resp.data.payParams.nonceStr,
|
|
|
|
|
package: resp.data.payParams.packageVal,
|
|
|
|
|
signType: resp.data.payParams.signType,
|
|
|
|
|
paySign: resp.data.payParams.paySign,
|
|
|
|
|
success: (respc) => {
|
|
|
|
|
console.log(respc, '支付成功')
|
2025-05-17 08:42:24 +08:00
|
|
|
|
this.$u.put(
|
|
|
|
|
`/app/pay/refreshPayResult?no=${resp.data.pay.no}`
|
|
|
|
|
).then((res) => { //刷新支付结果
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.czflag = false
|
|
|
|
|
this.getcishu()
|
2025-05-17 08:42:24 +08:00
|
|
|
|
})
|
2025-05-14 15:14:12 +08:00
|
|
|
|
},
|
|
|
|
|
fail(err) {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
uni.hideLoading()
|
|
|
|
|
}, 1000)
|
|
|
|
|
console.log('取消或者支付失败')
|
|
|
|
|
}
|
|
|
|
|
})
|
2025-05-17 08:42:24 +08:00
|
|
|
|
} else {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.showToast({
|
|
|
|
|
title: resp.msg,
|
|
|
|
|
icon: 'none',
|
2025-05-17 08:42:24 +08:00
|
|
|
|
duration: 2000
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: res.msg,
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
2025-06-19 17:41:39 +08:00
|
|
|
|
// 爆灯成功开始倒计时 需倒计时结束后方可再次点击
|
2025-05-14 15:14:12 +08:00
|
|
|
|
startCountdown() {
|
2025-05-17 08:42:24 +08:00
|
|
|
|
this.countdown = this.duration
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.countdownTimer = setInterval(() => {
|
|
|
|
|
if (this.countdown > 0) {
|
|
|
|
|
this.countdown--
|
|
|
|
|
} else {
|
|
|
|
|
clearInterval(this.countdownTimer)
|
|
|
|
|
this.countdownTimer = null
|
|
|
|
|
}
|
|
|
|
|
}, 1000)
|
|
|
|
|
},
|
|
|
|
|
// 点击爆灯请求
|
2025-05-17 08:42:24 +08:00
|
|
|
|
btnbaodeng() {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
if (this.shengyuobj.number == 0) {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: `您当前没有爆灯次数,请先充值`,
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (this.countdown > 0) {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: `请等待${this.countdown}秒后再次点击`,
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
if (this.yonghuobj.devices[0]) {
|
|
|
|
|
let flag = ''
|
|
|
|
|
if (this.ver_dataflag == 3) {
|
|
|
|
|
flag = false
|
|
|
|
|
} else {
|
|
|
|
|
flag = true
|
|
|
|
|
}
|
|
|
|
|
this.$u.put(`/app/booth/${this.yonghuobj.boothId}/lighting?requiredIot=${flag}`).then(res => {
|
|
|
|
|
if (res.code == 200 && res.data.db >= 1) {
|
2025-06-19 17:41:39 +08:00
|
|
|
|
if (res.data.iot == false) { //判断是否进行蓝牙充值 为true则进行蓝牙发送命令
|
|
|
|
|
if (this.ver_dataflag == 3) { //判断蓝牙是否已经连接
|
2025-05-17 08:42:24 +08:00
|
|
|
|
xBlufi.notifySendCustomData({
|
2025-06-19 17:41:39 +08:00
|
|
|
|
customData: "11time" + this.duration + '@' //进行蓝牙发送命令
|
2025-05-17 08:42:24 +08:00
|
|
|
|
})
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "爆灯成功",
|
|
|
|
|
icon: 'success',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
this.getcishu()
|
2025-06-19 17:41:39 +08:00
|
|
|
|
this.startCountdown() //爆灯成功后进行禁用倒计时
|
2025-05-17 08:42:24 +08:00
|
|
|
|
} else {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '设备离线',
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
} else {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.showToast({
|
|
|
|
|
title: "爆灯成功",
|
|
|
|
|
icon: 'success',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
this.getcishu()
|
2025-06-19 17:41:39 +08:00
|
|
|
|
this.startCountdown() //爆灯成功后进行禁用倒计时
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
} else {
|
|
|
|
|
console.log(res.msg);
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: res.msg,
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '该桌号暂无设备',
|
|
|
|
|
confirmText: '知道了',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {}
|
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
},
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
2025-06-19 17:41:39 +08:00
|
|
|
|
// 用户请求剩余爆灯次数
|
2025-05-17 08:42:24 +08:00
|
|
|
|
getcishu() {
|
|
|
|
|
this.$u.get(`/app/lightingNum/userLightingNum?storeId=${this.$store.state.storeId}&userId=${this.user.userId}`).then(res => {
|
|
|
|
|
if (res.code == 200) {
|
2025-06-19 17:41:39 +08:00
|
|
|
|
this.shengyuobj = res.data //赋值
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
2025-06-19 17:41:39 +08:00
|
|
|
|
// 请求用户个人信息
|
2025-05-17 08:42:24 +08:00
|
|
|
|
getinfo() {
|
|
|
|
|
this.$u.get(`/getInfo`).then(res => {
|
|
|
|
|
if (res.code == 200) {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.user = res.user
|
|
|
|
|
this.getcishu()
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
2025-06-06 11:14:06 +08:00
|
|
|
|
|
2025-06-19 17:41:39 +08:00
|
|
|
|
// 请求充值套餐列表
|
2025-05-17 08:42:24 +08:00
|
|
|
|
gettaocan() {
|
|
|
|
|
this.$u.get(`/app/suit/list?pageNum=1&pageSize=999&storeId=${this.$store.state.storeId}`).then(res => {
|
|
|
|
|
if (res.code == 200) {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.taocanlist = res.rows
|
|
|
|
|
this.price = res.rows[0].rechargeAmount
|
|
|
|
|
this.suitId = res.rows[0].suitId
|
|
|
|
|
this.cishu = res.rows[0].lightingNums
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
},
|
2025-06-19 17:41:39 +08:00
|
|
|
|
// 点击切换充值套餐高亮
|
2025-05-17 08:42:24 +08:00
|
|
|
|
btnitem(index, item) {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.tabindex = index
|
|
|
|
|
this.price = item.rechargeAmount
|
|
|
|
|
this.suitId = item.suitId
|
|
|
|
|
this.cishu = item.lightingNums
|
|
|
|
|
},
|
|
|
|
|
// 点击跳转到记录
|
2025-05-17 08:42:24 +08:00
|
|
|
|
btnjilu() {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.navigateTo({
|
2025-05-17 08:42:24 +08:00
|
|
|
|
url: '/pages/myorder/returned/index'
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
},
|
2025-06-19 17:41:39 +08:00
|
|
|
|
// 扫码绑定
|
2025-05-17 08:42:24 +08:00
|
|
|
|
btnsaoma() {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.scanCode({
|
|
|
|
|
onlyFromCamera: true,
|
|
|
|
|
scanType: ['qrCode'],
|
|
|
|
|
success: res => {
|
|
|
|
|
const getQueryParam = (url, paramName) => {
|
|
|
|
|
const regex = new RegExp(`[?&]${paramName}=([^&]*)`)
|
|
|
|
|
const results = regex.exec(url)
|
|
|
|
|
return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : null
|
|
|
|
|
}
|
|
|
|
|
const sceneValue = res.result
|
|
|
|
|
const decodedValue = decodeURIComponent(sceneValue)
|
|
|
|
|
this.kazuoid = getQueryParam(decodedValue, 'k')
|
2025-05-19 18:02:41 +08:00
|
|
|
|
console.log(this.kazuoid,res);
|
2025-05-14 15:14:12 +08:00
|
|
|
|
if (!this.kazuoid) {
|
2025-05-17 08:42:24 +08:00
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '无效的二维码',
|
|
|
|
|
confirmText: '知道了',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {}
|
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
uni.showLoading({
|
|
|
|
|
title: '绑定中...',
|
|
|
|
|
mask: true
|
|
|
|
|
})
|
2025-06-06 11:14:06 +08:00
|
|
|
|
this.$u.get(`/app/booth/getBoothDetail/${this.kazuoid}`).then(res => {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
uni.hideLoading()
|
2025-05-17 08:42:24 +08:00
|
|
|
|
if (res.code == 200) {
|
2025-06-06 11:14:06 +08:00
|
|
|
|
this.yonghuobj = res.data
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.smflag = false
|
2025-05-17 08:42:24 +08:00
|
|
|
|
setTimeout(() => {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
this.getcishu()
|
2025-05-17 08:42:24 +08:00
|
|
|
|
}, 500)
|
|
|
|
|
} else {
|
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: res.msg,
|
|
|
|
|
confirmText: '知道了',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {}
|
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}).catch(() => {
|
|
|
|
|
uni.hideLoading()
|
2025-05-17 08:42:24 +08:00
|
|
|
|
uni.showModal({
|
|
|
|
|
title: '提示',
|
|
|
|
|
content: '绑定失败,请重试',
|
|
|
|
|
confirmText: '知道了',
|
|
|
|
|
showCancel: false,
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.confirm) {}
|
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
},
|
|
|
|
|
fail: err => {
|
|
|
|
|
uni.showToast({
|
|
|
|
|
title: '扫描失败,请重试',
|
|
|
|
|
icon: 'none',
|
|
|
|
|
duration: 2000
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
2025-05-19 18:02:41 +08:00
|
|
|
|
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style lang="scss">
|
2025-05-17 08:42:24 +08:00
|
|
|
|
.page {
|
|
|
|
|
position: relative;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
|
|
&::before {
|
|
|
|
|
content: '';
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
right: 0;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
background: linear-gradient(45deg, rgba(255, 0, 255, 0.1), rgba(0, 255, 255, 0.1));
|
|
|
|
|
animation: gradientBG 10s ease infinite;
|
|
|
|
|
z-index: -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes gradientBG {
|
|
|
|
|
0% {
|
|
|
|
|
background-position: 0% 50%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
50% {
|
|
|
|
|
background-position: 100% 50%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
background-position: 0% 50%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.neon-text {
|
|
|
|
|
background: linear-gradient(90deg, #FF00FF, #00FFFF, #FF00FF, #00FFFF);
|
|
|
|
|
background-size: 300% 100%;
|
|
|
|
|
-webkit-background-clip: text;
|
|
|
|
|
-webkit-text-fill-color: transparent;
|
|
|
|
|
animation: neonGradient 3s linear infinite;
|
|
|
|
|
text-shadow: 0 0 10rpx rgba(255, 0, 255, 0.5),
|
|
|
|
|
0 0 20rpx rgba(0, 255, 255, 0.5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.neon-text-small {
|
|
|
|
|
background: linear-gradient(90deg, #FF00FF, #00FFFF, #FF00FF, #00FFFF);
|
|
|
|
|
background-size: 300% 100%;
|
|
|
|
|
-webkit-background-clip: text;
|
|
|
|
|
-webkit-text-fill-color: transparent;
|
|
|
|
|
animation: neonGradient 3s linear infinite;
|
|
|
|
|
text-shadow: 0 0 5rpx rgba(255, 0, 255, 0.5),
|
|
|
|
|
0 0 10rpx rgba(0, 255, 255, 0.5);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.neon-button {
|
|
|
|
|
position: relative;
|
|
|
|
|
background: linear-gradient(90deg, #FF00FF, #00FFFF);
|
|
|
|
|
background-size: 200% 100%;
|
|
|
|
|
animation: neonGradient 3s linear infinite;
|
|
|
|
|
border-radius: 50rpx;
|
|
|
|
|
box-shadow: 0 0 10rpx rgba(255, 0, 255, 0.5),
|
|
|
|
|
0 0 20rpx rgba(0, 255, 255, 0.5);
|
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
|
|
|
|
|
&:active {
|
|
|
|
|
transform: scale(0.95);
|
|
|
|
|
box-shadow: 0 0 5rpx rgba(255, 0, 255, 0.3),
|
|
|
|
|
0 0 10rpx rgba(0, 255, 255, 0.3);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.neon-button-small {
|
|
|
|
|
position: relative;
|
|
|
|
|
background: linear-gradient(90deg, #FF00FF, #00FFFF);
|
|
|
|
|
background-size: 200% 100%;
|
|
|
|
|
animation: neonGradient 3s linear infinite;
|
|
|
|
|
border-radius: 23rpx;
|
|
|
|
|
box-shadow: 0 0 5rpx rgba(255, 0, 255, 0.5),
|
|
|
|
|
0 0 10rpx rgba(0, 255, 255, 0.5);
|
|
|
|
|
transition: all 0.3s ease;
|
|
|
|
|
|
|
|
|
|
&:active {
|
|
|
|
|
transform: scale(0.95);
|
|
|
|
|
box-shadow: 0 0 3rpx rgba(255, 0, 255, 0.3),
|
|
|
|
|
0 0 5rpx rgba(0, 255, 255, 0.3);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.czbj {
|
|
|
|
|
// animation: float 6s ease-in-out infinite;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes float {
|
|
|
|
|
0% {
|
|
|
|
|
transform: translateY(0px);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
50% {
|
|
|
|
|
transform: translateY(-10px);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
transform: translateY(0px);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.line {
|
|
|
|
|
position: relative;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
|
content: '';
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: -100%;
|
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
|
|
|
|
|
animation: shine 3s infinite;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes shine {
|
|
|
|
|
0% {
|
|
|
|
|
left: -100%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
left: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.active {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
background-color: #FF1818;
|
|
|
|
|
color: #fff !important;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
text {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
border: 1px solid #fff;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.ewmbd {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 750rpx;
|
|
|
|
|
height: 932rpx;
|
|
|
|
|
background: #FFFFFF;
|
|
|
|
|
border-radius: 30rpx 30rpx 0 0;
|
|
|
|
|
position: fixed;
|
|
|
|
|
left: 0;
|
|
|
|
|
bottom: 0;
|
|
|
|
|
z-index: 9;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.hong {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 26rpx;
|
|
|
|
|
color: #F72B2B;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 42rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.top {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-weight: 600;
|
|
|
|
|
font-size: 48rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 106rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.toptwo {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-weight: 600;
|
|
|
|
|
font-size: 48rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.saoma {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 238rpx;
|
|
|
|
|
height: 68rpx;
|
|
|
|
|
background: #010000;
|
|
|
|
|
border-radius: 47rpx 47rpx 47rpx 47rpx;
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
margin: auto;
|
|
|
|
|
margin-top: 112rpx;
|
|
|
|
|
padding-top: 16rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.ewm {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 246rpx;
|
|
|
|
|
height: 246rpx;
|
|
|
|
|
margin: auto;
|
|
|
|
|
margin-top: 90rpx;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
image {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100%;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.cha {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 56rpx;
|
|
|
|
|
height: 56rpx;
|
|
|
|
|
position: absolute;
|
|
|
|
|
right: 26rpx;
|
|
|
|
|
top: -100rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.mask {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
background-color: rgba(0, 0, 0, .3);
|
|
|
|
|
position: fixed;
|
|
|
|
|
z-index: 8;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.cztc {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 646rpx;
|
|
|
|
|
max-height: 858rpx;
|
|
|
|
|
padding-bottom: 40rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
background: #FFFFFF;
|
|
|
|
|
position: fixed;
|
|
|
|
|
left: 50%;
|
|
|
|
|
transform: translateX(-50%);
|
|
|
|
|
top: 418rpx;
|
|
|
|
|
border-radius: 20rpx;
|
|
|
|
|
z-index: 9;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.zfaniu {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 518rpx;
|
|
|
|
|
height: 76rpx;
|
|
|
|
|
background: #FF1818;
|
|
|
|
|
border-radius: 38rpx 38rpx 38rpx 38rpx;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
text-align: center;
|
|
|
|
|
line-height: 76rpx;
|
|
|
|
|
margin: auto;
|
|
|
|
|
margin-top: 52rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.list {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
flex-wrap: wrap;
|
|
|
|
|
width: 100%;
|
|
|
|
|
padding: 0 54rpx;
|
|
|
|
|
box-sizing: border-box;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.list_item {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 252rpx;
|
|
|
|
|
height: 118rpx;
|
|
|
|
|
border-radius: 16rpx 16rpx 16rpx 16rpx;
|
|
|
|
|
border: 2rpx solid #FF1818;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 36rpx;
|
|
|
|
|
font-weight: 700;
|
|
|
|
|
font-size: 72rpx;
|
|
|
|
|
color: #FF1818;
|
|
|
|
|
position: relative;
|
|
|
|
|
padding-top: 10rpx;
|
|
|
|
|
box-sizing: border-box;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
text {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
display: inline-block;
|
|
|
|
|
width: 32rpx;
|
|
|
|
|
height: 32rpx;
|
|
|
|
|
background-color: #FF1818;
|
|
|
|
|
border-radius: 50%;
|
|
|
|
|
position: absolute;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
right: 67rpx;
|
2025-05-14 15:14:12 +08:00
|
|
|
|
top: 56rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.sy {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
margin-top: 40rpx;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.top {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 40rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 62rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.cha {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 56rpx;
|
|
|
|
|
height: 56rpx;
|
|
|
|
|
position: absolute;
|
|
|
|
|
right: 0;
|
|
|
|
|
top: -100rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.delbd {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 646rpx;
|
|
|
|
|
height: 512rpx;
|
|
|
|
|
background: #FFFFFF;
|
|
|
|
|
position: fixed;
|
|
|
|
|
left: 50%;
|
|
|
|
|
transform: translateX(-50%);
|
|
|
|
|
top: 696rpx;
|
|
|
|
|
z-index: 9;
|
|
|
|
|
border-radius: 20rpx;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.cha {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 56rpx;
|
|
|
|
|
height: 56rpx;
|
|
|
|
|
position: absolute;
|
|
|
|
|
right: 0;
|
|
|
|
|
top: -100rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.taihao {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 40rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 62rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.d15 {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 68rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 14rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.ghbd {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 242rpx;
|
|
|
|
|
height: 60rpx;
|
|
|
|
|
border-radius: 47rpx 47rpx 47rpx 47rpx;
|
|
|
|
|
border: 2rpx solid #000000;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #010000;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding-left: 44rpx;
|
|
|
|
|
padding-right: 8rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
margin: auto;
|
|
|
|
|
margin-top: 26rpx;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
image {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 44rpx;
|
|
|
|
|
height: 44rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.jcbd {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 242rpx;
|
|
|
|
|
height: 60rpx;
|
|
|
|
|
background: #010000;
|
|
|
|
|
border-radius: 47rpx 47rpx 47rpx 47rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
align-items: center;
|
|
|
|
|
padding-left: 44rpx;
|
|
|
|
|
padding-right: 8rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
margin: auto;
|
|
|
|
|
margin-top: 72rpx;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
image {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 44rpx;
|
|
|
|
|
height: 44rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.caozuo {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 700rpx;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
height: 1000rpx;
|
2025-05-14 15:14:12 +08:00
|
|
|
|
margin: auto;
|
|
|
|
|
margin-top: 366rpx;
|
|
|
|
|
position: relative;
|
|
|
|
|
padding: 0 62rpx;
|
|
|
|
|
box-sizing: border-box;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.chongzhi {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 154rpx;
|
|
|
|
|
height: 52rpx;
|
|
|
|
|
background: #F72B2B;
|
|
|
|
|
border-radius: 26rpx 26rpx 26rpx 26rpx;
|
|
|
|
|
font-size: 28rpx;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
text-align: center;
|
|
|
|
|
line-height: 52rpx;
|
|
|
|
|
margin: auto;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
margin-top: 54rpx;
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.cishu {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 144rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 84rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.shengyu {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 36rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
margin-top: 32rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.bangding {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
margin-top: 36rpx;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
align-items: center;
|
|
|
|
|
margin-bottom: 34rpx;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.lt {
|
|
|
|
|
.zhuozi {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-weight: 600;
|
|
|
|
|
font-size: 34rpx;
|
|
|
|
|
color: #3D3D3D;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.sm {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
font-size: 20rpx;
|
|
|
|
|
color: #7C7C7C;
|
|
|
|
|
margin-top: 10rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.rt {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
padding-right: 6rpx;
|
|
|
|
|
width: 178rpx;
|
|
|
|
|
height: 46rpx;
|
|
|
|
|
background: #D8D8D8;
|
|
|
|
|
border-radius: 23rpx 23rpx 23rpx 23rpx;
|
|
|
|
|
font-size: 24rpx;
|
|
|
|
|
color: #010000;
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
padding-left: 24rpx;
|
|
|
|
|
box-sizing: border-box;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
image {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 38rpx;
|
|
|
|
|
height: 38rpx;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.topname {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 100%;
|
|
|
|
|
text-align: center;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
font-size: 44rpx;
|
|
|
|
|
color: #3D3D3D;
|
2025-05-19 18:02:41 +08:00
|
|
|
|
padding-top: 64rpx;
|
2025-05-14 15:14:12 +08:00
|
|
|
|
box-sizing: border-box;
|
2025-05-19 18:02:41 +08:00
|
|
|
|
image{
|
|
|
|
|
width: 232rpx;
|
|
|
|
|
height: 138rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
.neon-text {
|
|
|
|
|
background: linear-gradient(90deg, #FF00FF, #00FFFF, #FF00FF, #00FFFF);
|
|
|
|
|
background-size: 300% 100%;
|
|
|
|
|
-webkit-background-clip: text;
|
|
|
|
|
-webkit-text-fill-color: transparent;
|
|
|
|
|
animation: neonGradient 3s linear infinite;
|
|
|
|
|
text-shadow: 0 0 10rpx rgba(255, 0, 255, 0.5),
|
|
|
|
|
0 0 20rpx rgba(0, 255, 255, 0.5);
|
2025-05-19 18:02:41 +08:00
|
|
|
|
|
2025-05-17 08:42:24 +08:00
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.line {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 578rpx;
|
|
|
|
|
height: 6rpx;
|
|
|
|
|
border: 1rpx dashed #B8B8B8;
|
|
|
|
|
margin-top: 6rpx;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.czbj {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 700rpx;
|
2025-05-17 08:42:24 +08:00
|
|
|
|
height: 1000rpx;
|
2025-05-14 15:14:12 +08:00
|
|
|
|
position: absolute;
|
|
|
|
|
left: 0;
|
|
|
|
|
z-index: -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.jilu {
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 140rpx;
|
|
|
|
|
height: 62rpx;
|
|
|
|
|
background: #010000;
|
|
|
|
|
font-weight: 600;
|
|
|
|
|
font-size: 30rpx;
|
|
|
|
|
color: #FFFFFF;
|
|
|
|
|
text-align: center;
|
|
|
|
|
border-radius: 50rpx 0 0 50rpx;
|
|
|
|
|
position: fixed;
|
|
|
|
|
right: 0;
|
|
|
|
|
top: 350rpx;
|
|
|
|
|
padding-top: 10rpx;
|
|
|
|
|
box-sizing: border-box;
|
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
|
|
|
|
|
.bj {
|
2025-05-19 18:02:41 +08:00
|
|
|
|
width: 760rpx;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
position: fixed;
|
|
|
|
|
top: 0;
|
|
|
|
|
left: -10rpx;
|
|
|
|
|
z-index: -2;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
.bjmask{
|
2025-05-14 15:14:12 +08:00
|
|
|
|
width: 100%;
|
|
|
|
|
height: 100vh;
|
|
|
|
|
position: fixed;
|
2025-05-19 18:02:41 +08:00
|
|
|
|
z-index: -1;
|
2025-05-14 15:14:12 +08:00
|
|
|
|
top: 0;
|
|
|
|
|
left: 0;
|
2025-05-19 18:02:41 +08:00
|
|
|
|
background-color: rgba(0, 0, 0, .3);
|
2025-05-14 15:14:12 +08:00
|
|
|
|
}
|
2025-05-17 08:42:24 +08:00
|
|
|
|
.breathing-light {
|
|
|
|
|
.breathing-image {
|
|
|
|
|
animation: breathing 2s ease-in-out infinite;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.breathing-text {
|
|
|
|
|
animation: breathing 2s ease-in-out infinite;
|
|
|
|
|
font-size: 72rpx;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes breathing {
|
|
|
|
|
0% {
|
|
|
|
|
opacity: 0.9;
|
|
|
|
|
transform: scale(0.95);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
50% {
|
|
|
|
|
opacity: 1;
|
|
|
|
|
transform: scale(1.05);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
opacity: 0.9;
|
|
|
|
|
transform: scale(0.95);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@keyframes neonGradient {
|
|
|
|
|
0% {
|
|
|
|
|
background-position: 0% 50%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
50% {
|
|
|
|
|
background-position: 100% 50%;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
100% {
|
|
|
|
|
background-position: 0% 50%;
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-05-14 15:14:12 +08:00
|
|
|
|
</style>
|