This commit is contained in:
3321822538@qq.com 2024-09-29 19:32:37 +08:00
parent 1b86d650af
commit bfab58ddbb
14 changed files with 766 additions and 187 deletions

View File

@ -19,8 +19,8 @@ const install = (Vue, vm) => {
// },
// });
Vue.prototype.$u.http.setConfig({
baseUrl: 'http://192.168.2.81:10002',
// baseUrl: 'https://kg.chuangtewl.com/prod-api',
// baseUrl: 'http://192.168.2.81:10002',
baseUrl: 'https://kg.chuangtewl.com/prod-api',
// loadingText: '努力加载中~',
// loadingTime: 1000,
// 设置自定义头部content-type

View File

@ -15,7 +15,10 @@
<image src="@/static/tabbar/my-active.png" mode="" v-show="indexs==2" style="width: 28rpx;height: 36.4rpx;"></image>
<div class="txt" :class="indexs==2?'act1':''">商户</div>
</div>
<!-- <view class="" style="width: 50rpx;height: 50rpx;border-radius: 50%;background-color: #000;position: fixed;">
</view>
-->
</view>
</template>

View File

@ -19,27 +19,43 @@
套餐模版配置
</view>
<view class="shebeiname">
<view class="icon_img">
<!-- <view class="icon_img">
<image src="https://api.ccttiot.com/smartmeter/img/static/ueeiLjBHkm48X5WRSxbz" mode=""></image>
<view class="">套餐模版</view>
</view>
</view> -->
<view class="shebeitit">
能更方便快速的配置设备套餐
</view>
</view>
<view @click="btntc" style="width: 100%;height: 100rpx;line-height: 100rpx;display: flex;justify-content: space-between;border-radius: 20rpx;padding-left: 30rpx;padding-right: 30rpx;box-sizing: border-box;background-color: #fff;margin-top: 20rpx;">
<!-- <view @click="btntc" style="width: 100%;height: 100rpx;line-height: 100rpx;display: flex;justify-content: space-between;border-radius: 20rpx;padding-left: 30rpx;padding-right: 30rpx;box-sizing: border-box;background-color: #fff;margin-top: 20rpx;">
<view class="">
新建套餐
</view>
<view style="padding-top: 6rpx;" class="iconfont icon-xiangyou1"></view>
</view>
</view> -->
<view class="buttit">
<view class="xztclist" style="margin-bottom: 30rpx;font-size: 36rpx;">
<image src="https://api.ccttiot.com/smartmeter/img/static/uQKZrXJmLFnd9kscyk9S" mode=""></image> <text>选择套餐列表</text>
</view>
<view class="taocanlist" v-if="list.length > 0">
<view v-for="(item,index) in list" :key="index" :class="['tc_list', { active: isActive.includes(item.suitId) }]" @click="toindex(item.suitId)">
<text>套餐名称</text> <text>{{item.name}}</text>
<text style="font-weight: 600;font-size: 29rpx">{{item.name}}</text>
<view class="">
<text style="margin-top: 10rpx;" v-if="item.feeType == 1">计时收费</text>
<text style="margin-top: 10rpx;" v-if="item.feeType == 2">按量收费</text>
<text style="margin-top: 10rpx;" v-if="item.feeType == 3">分时段按量收费</text>
<text style="margin-top: 10rpx;" v-if="item.feeType == 4">分时段按时收费</text>
(<text style="margin-top: 10rpx;" v-if="item.feeMode == 1">单次收费</text>
<text style="margin-top: 10rpx;" v-if="item.feeMode == 2">智能收费</text>)
<text style="width: 20rpx;"></text>
<text style="margin-top: 10rpx;" v-if="item.feeType == 3 || item.feeType == 4">押金{{item.price}}</text>
<text style="margin-top: 10rpx;" v-if="item.timeUnit == 2 && item.feeType != 3 && item.feeType != 4">{{item.value}} {{item.price}}</text>
<text style="margin-top: 10rpx;" v-if="item.timeUnit == 3 && item.feeType != 3 && item.feeType != 4">{{item.value}} {{item.price}}</text>
<text style="margin-top: 10rpx;" v-if="item.timeUnit == 4 && item.feeType != 3 && item.feeType != 4">{{item.value}} {{item.price}}</text>
</view>
<view class="">
备注{{item.description == null ? '--' : item.description}}
</view>
</view>
</view>
<view class="" style="text-align: center;" v-else>
@ -48,13 +64,43 @@
</view>
</view>
<view class="btnxyb" @click="btnxia">
完成设置(3/3)
<view class="btnanniu">
<view @click="btntc" style="width: 36%;font-size: 36rpx;height: 100rpx;line-height: 100rpx;border-radius: 10rpx;box-sizing: border-box;color: #8883F0;border: 1px solid #8883F0;text-align: center;">
<view class="">
新建套餐
</view>
</view>
<view class="btnxyb" @click="btnxia">
完成设置(3/3)
</view>
</view>
</view>
<view v-if="btnmsk" style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .1;z-index: 999;"></view>
<!-- 新用户弹窗提示 -->
<view class="xints" v-if="xintsflag">
<image src="https://api.ccttiot.com/smartmeter/img/static/uQ7YMvgkBSfZc28IA5Fm" mode=""></image>
<view class="wxts">
商户反洗钱协议
</view>
<view class="huany">
欢迎来到创想物联
</view>
<scroll-view scroll-y="true" @scrolltolower="onScrollToLower" class="scrolls">
<view v-html="contwz"></view>
</scroll-view>
<view class="yiyues" v-if="countdown == 0" @click="btnzx">
同意
</view>
<view class="yiyue" v-else>
已阅 {{countdown}}
</view>
</view>
<view class="" v-if="xintsflag" style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .5;z-index: 1;"></view>
</view>
</template>
@ -63,6 +109,7 @@
export default {
data() {
return {
xintsflag:false,
btnmsk:false,
qrResult:'',
bluetoothflag: false,
@ -103,7 +150,10 @@
url: '',
tclist:[],
list:[],
isActive: []
isActive: [],
countdown: 10, //
intervalId: null,
contwz:''
}
},
onLoad(option) {
@ -118,12 +168,14 @@
// this.getgroup()
// this.gettanc()
this.getlistobj(this.id)
// this.getuserinfo()
this.getao()
this.getlist()
this.getxieyi()
},
onUnload: function() {
console.log("unload ");
if (this.intervalId) {
clearInterval(this.intervalId);
}
xBlufi.listenDeviceMsgEvent(false, this.funListenDeviceMsgEvent);
wx.closeBLEConnection({
deviceId: this.deviceId,
@ -146,6 +198,54 @@
}
},
methods: {
//
onScrollToLower() {
this.startCountdown()
},
startCountdown() {
if(this.intervalId){
}else{
this.intervalId = setInterval(() => {
if (this.countdown > 0) {
this.countdown--;
} else {
clearInterval(this.intervalId); //
}
}, 1000); //
}
},
getxieyi(){
this.$u.get(`/app/article/licence/mch`).then(res => {
if(res.code == 200){
this.contwz = res.data.content
}
})
},
getuser(){
this.$u.get("/app/user/userInfo").then((res) => {
if (res.code == 200) {
if(res.data.readMchLicence == false){
this.xintsflag = true
}else{
this.xintsflag = false
}
}
})
},
btnzx(){
this.$u.put(`/app/user/readMchLicence`).then((res) => {
if (res.code == 200) {
uni.reLaunch({
url:'/pages/index/index'
})
// this.getuser()
// this.xintsflag = false
}
})
},
toindex(suitId){
const index = this.isActive.indexOf(suitId);
if (index !== -1) {
@ -210,48 +310,63 @@
//
btnxia(){
if(this.isActive.length == 0){
uni.showModal({
title: '提示',
content: '还未绑定套餐,设备将无法扫码使用,是否继续完成设置?',
success: function(res) {
if (res.confirm) {
this.btnmsk = false
uni.switchTab({
url:'/pages/index/index'
})
}
}
// uni.showModal({
// title: '',
// content: '',
// success: function(res) {
// if (res.confirm) {
// this.btnmsk = false
// // uni.switchTab({
// // url:'/pages/index/index'
// // })
// }
// }
// })
uni.showToast({
title: '还未绑定套餐,请先绑定或新建套餐',
icon: 'none',
duration: 3000,
})
}else{
this.$u.delete(`/app/suit/delByDevice/${this.deviceId}`).then(res => {})
let numArr = this.isActive.map(item => parseInt(item, 10))
let data = {
deviceId: this.id,
suitIds: numArr
}
this.$u.put(`/app/device`, data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: res.msg,
icon: 'success',
duration: 1000,
})
this.getao()
setTimeout(() => {
this.btnmsk = false
uni.reLaunch({
url:'/pages/index/index'
})
}, 1000)
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1000,
})
this.btnmsk = false
}
})
this.$u.get("/app/user/userInfo").then((res) => {
if (res.code == 200) {
if(res.data.readMchLicence == false){
this.xintsflag = true
// this.startCountdown()
}else{
this.xintsflag = false
this.$u.delete(`/app/suit/delByDevice/${this.deviceId}`).then(res => {})
let numArr = this.isActive.map(item => parseInt(item, 10))
let data = {
deviceId: this.id,
suitIds: numArr
}
this.$u.put(`/app/device`, data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: res.msg,
icon: 'success',
duration: 1000,
})
this.getao()
setTimeout(() => {
this.btnmsk = false
uni.reLaunch({
url:'/pages/index/index'
})
}, 1000)
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1000,
})
this.btnmsk = false
}
})
}
}
})
}
},
// wifi
@ -528,6 +643,91 @@
</script>
<style lang="scss">
.xints{
width: 584rpx;
height: 798rpx;
background: #FFFFFF;
border-radius: 24rpx 24rpx 24rpx 24rpx;
position: fixed;
top: 332rpx;
left: 50%;
transform: translateX(-50%);
z-index: 3;
.wxts{
position: fixed;
top: 34rpx;
left: 50%;
transform: translateX(-50%);
font-size: 32rpx;
color: #3D3D3D;
z-index: 4;
}
.huany{
position: fixed;
top: 90rpx;
left: 50%;
transform: translateX(-50%);
font-size: 24rpx;
color: #808080;
z-index: 4;
}
.yiyue{
position: fixed;
bottom:46rpx;
left: 50%;
transform: translateX(-50%);
font-size: 24rpx;
color: #808080;
z-index: 4;
width: 530rpx;
height: 76rpx;
background: #C3C0FF;
border-radius: 47rpx 47rpx 47rpx 47rpx;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
line-height: 76rpx;
}
.yiyues{
position: fixed;
bottom:46rpx;
left: 50%;
transform: translateX(-50%);
font-size: 24rpx;
color: #808080;
z-index: 4;
width: 530rpx;
height: 76rpx;
background: #8883F0;
border-radius: 47rpx 47rpx 47rpx 47rpx;
font-size: 32rpx;
color: #FFFFFF;
text-align: center;
line-height: 76rpx;
}
.scrolls{
position: fixed;
top: 170rpx;
left: 50%;
width: 100%;
height: 460rpx;
padding: 0 36rpx;
box-sizing: border-box;
transform: translateX(-50%);
font-size: 24rpx;
color: #3D3D3D;
z-index: 4;
}
image{
width: 584rpx;
height: 798rpx;
position: fixed;
top: 0;
left: 50%;
transform: translateX(-50%);
z-index: 2;
}
}
.active{
background-color: #8883F0 !important;
color: #fff !important;
@ -562,21 +762,25 @@
margin-top: 0 !important;
}
image{
width: 50rpx;
height: 50rpx;
margin-right: 10rpx;
width: 37rpx;
height: 37rpx;
padding-left: 10rpx;
margin-right: 10rpx;
}
}
.taocanlist{
text{
display: inline-block !important;
}
.tc_list{
display: flex;
// display: flex;
padding-left: 30rpx;
padding-right: 30rpx;
box-sizing: border-box;
justify-content: space-between;
height: 80rpx;
// justify-content: space-between;
height: 160rpx;
line-height: 40rpx;
background-color: #ccc;
background-color: #fff;
color: #000;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
border-radius: 20rpx;
@ -593,7 +797,7 @@
}
.buttit{
width: 100%;
height:650rpx;
height:1050rpx;
overflow: scroll;
background-color: #fff;
margin-top: 30rpx;
@ -701,8 +905,18 @@
page {
background-color: #F7FAFE;
}
.btnanniu{
width: 86%;
align-items: center;
display: flex;
justify-content: space-between;
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 50rpx;
}
.btnxyb {
width: 636rpx;
width: 60%;
height: 100rpx;
background: #8883F0;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
@ -712,10 +926,6 @@
font-size: 36rpx;
color: #FFFFFF;
border-radius: 10rpx;
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 150rpx;
}
.btntg {
@ -799,14 +1009,12 @@
border-radius: 30rpx;
.shebeiname {
width: 654rpx;
height: 160rpx;
background: #FFFFFF;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
// height: 160rpx;
// background: #FFFFFF;
// box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
border-radius: 24rpx 24rpx 24rpx 24rpx;
margin: auto;
margin-top: 26rpx;
padding-top: 26rpx;
padding-left: 28rpx;
box-sizing: border-box;
.shebeitit {

View File

@ -1,5 +1,5 @@
<template>
<view class="page">
<view class="page" style="width: 100%;height: 88vh;overflow: scroll;">
<u-navbar :title="tittxt" :border-bottom="false" :background="bgc" back-icon-color="#fff" title-color='#fff'
:custom-back="btns" title-size='36' height='50' id="navbar">
</u-navbar>
@ -29,8 +29,30 @@
</view>
<view class="botwz">
<!-- 点击刷新实时信息 -->
历史总用电量{{totalElectriQuantity}}
<view @click="shuaxin" style="width: 100%;display: flex;color: #fff;justify-content: center;align-items: center;padding-top:40rpx;padding-bottom: 30rpx;box-sizing: border-box;">
点击刷新实时信息
</view>
</view>
</view>
<!-- 操作 -->
<view class="card2" style="padding-bottom: 30rpx;box-sizing: border-box;margin-top: 0;" v-if="detaobj.suitFeeType == 1 || detaobj.suitFeeType == 4">
<view class="" style="display: flex;box-sizing: border-box;width: 100%;
height: 80rpx;align-items: center;justify-content: space-between;border-radius: 20rpx;font-size: 32rpx;color: #3D3D3D;">
<view class="bot">临时开关{{tdtxt}}</view>
<view class="cont" @click="btnkq">
<view class="top" style="padding-top: 10rpx;">
<!-- <u-switch v-model="checked" active-color="#8883F0"></u-switch> -->
<view class="rt">
<image v-if="imgflag" style="width: 160rpx;height: 80rpx;"
src="https://api.ccttiot.com/smartmeter/img/static/uccaWar4FDp37op7haWM " mode="">
</image>
<image style="width: 160rpx;height: 80rpx;" v-else
src="https://api.ccttiot.com/smartmeter/img/static/ur9HRtZKY7YcxGewJARz" mode="">
</image>
</view>
</view>
</view>
</view>
</view>
<view class="time_list">
@ -57,8 +79,8 @@
</view>
<view class="time_bot" v-if="!detaobj.suitEndTime || detaobj.suitFeeType == 1">
<view class="">
<text v-if="detaobj.suitFeeType == 3 || detaobj.suitFeeType == 4">使用时长</text>
<text v-else>剩余时长</text>
<text v-if="detaobj.suitFeeType == 3 || detaobj.suitFeeType == 4">使用时长</text>
<text v-else>订单剩余</text>
</view>
<view class="">
<text v-if="detaobj.suitFeeType == 3 || detaobj.suitFeeType == 4">预估金额,以实际金额为准</text>
@ -106,7 +128,7 @@
<view class="zujie">
<view class="toptit">
租借信息
订单信息
</view>
<view class="emilist">
<view class="">
@ -116,6 +138,14 @@
{{detaobj.suitStartTime == null ? '--' : detaobj.suitStartTime}}
</view>
</view>
<!-- <view class="emilist">
<view class="">
结束时间
</view>
<view class="">
{{detaobj.suitEndTime == null ? '--' : detaobj.suitEndTime}}
</view>
</view> -->
<view class="emilist">
<view class="">
店铺名称
@ -140,14 +170,6 @@
{{detaobj.suitName == null ? '--' : detaobj.suitName}}
</view>
</view>
<view class="emilist">
<view class="">
结束时间
</view>
<view class="">
{{detaobj.suitEndTime == null ? '--' : detaobj.suitEndTime}}
</view>
</view>
<view class="emilist">
<view class="">
设备编号
@ -165,19 +187,11 @@
</view>
</view>
</view>
<!-- 订单暂停 -->
<!-- <view class="zujie" style="border-top:1px solid #D8D8D8;padding-top: 30rpx;box-sizing: border-box;">
<view class="toptit">
暂停订单
</view>
<view class="emilist" style="align-items: center;">
<view class="">
开关关闭
</view>
<u-switch v-model="checkeds" active-color="#8883f0"></u-switch>
</view>
</view> v-if="detaobj.isFinished == false" -->
<!-- 电话客服 -->
<image class="imgtel" @click="btncall" src="https://api.ccttiot.com/smartmeter/img/static/uJtDyokYXyBVzIs6hXHv" mode=""></image>
<view class="">
<view class="jieshu" v-if="jieshuflag">
<text v-if="detaobj.status == 1">立即支付</text>
@ -225,6 +239,8 @@
},
data() {
return {
tdtxt: '开启',
imgflag: false,
checkeds: false,
trueboxfalg: false,
bgc: {
@ -360,6 +376,186 @@
this.stopTimer();
},
methods: {
btncall(){
let phoneNumber = ''
phoneNumber = this.sbobj.userMobile
uni.makePhoneCall({
phoneNumber: phoneNumber,
success: function(res) {
console.log('拨打电话成功', res)
},
fail: function(err) {
console.error('拨打电话失败', err)
uni.showToast({
title: '拨打电话失败',
icon: 'none'
})
}
})
},
//
btnkq() {
if (this.onlineStatus == 1) {
if (this.tdtxt == '开启') {
this.$u.put(`/app/device/${this.sbid}/changePower?status=0`).then((res) => {
if (res.code == 200) {
this.tdtxt = '关闭'
this.imgflag = false
uni.showToast({
title: res.msg,
icon: 'success',
duration: 2000
})
} else {
this.imgflag = true
this.tdtxt = '开启'
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
} else {
this.$u.put(`/app/device/${this.sbid}/changePower?status=1`).then((res) => {
if (res.code == 200) {
this.imgflag = true
this.tdtxt = '开启'
uni.showToast({
title: res.msg,
icon: 'success',
duration: 2000
})
} else {
this.imgflag = false
this.tdtxt = '关闭'
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
}
} else {
if (this.ver_data == null) {
this.jieshufalg = true
uni.showLoading({
title: '切换中'
})
xBlufi.initXBlufi(1)
xBlufi.listenDeviceMsgEvent(true, this.funListenDeviceMsgEvent)
xBlufi.notifyStartDiscoverBle({
'isStart': true
})
//
setTimeout(() => {
xBlufi.notifyStartDiscoverBle({
'isStart': false
})
xBlufi.notifyConnectBle({
isStart: true,
deviceId: this.deviceId,
name: this.name
})
xBlufi.notifyInitBleEsp32({
deviceId: this.deviceId
})
let name = ''
let index = this.name.indexOf('-')
if (index !== -1) {
name = this.name.slice(index + 1)
}
if (this.sbobj.powerStatus == 0) {
this.imgflag = false
} else {
this.imgflag = true
}
}, 1000)
} else {
// console.log(this.tdtxt,'020202');
if (this.tdtxt == '开启') {
let that = this
uni.getNetworkType({
success(res) {
if (res.networkType !== 'none') {
uni.getConnectedBluetoothDevices({
success(res) {
setTimeout(() => {
// console.log('close');
that.tdtxt = '关闭'
that.imgflag = false
xBlufi.notifySendCustomData({
customData: 'close'
})
xBlufi.notifySendCustomData({
customData: '11close'
})
}, 1000)
},
fail(err) {
console.error('获取已连接蓝牙设备信息失败:', err)
}
})
}
}
})
} else {
let that = this
uni.getNetworkType({
success(res) {
if (res.networkType !== 'none') {
uni.getConnectedBluetoothDevices({
success(res) {
setTimeout(() => {
// console.log('open');
that.tdtxt = '开启'
that.imgflag = true
xBlufi.notifySendCustomData({
customData: 'open'
})
xBlufi.notifySendCustomData({
customData: '11open'
})
}, 1000)
},
fail(err) {
console.error('获取已连接蓝牙设备信息失败:', err)
}
})
}
}
})
}
}
}
},
shuaxin(){
this.$u.get(`/app/device/${this.sbid}/refreshIot`).then((res) => {
if(res.code == 200){
this.getDevice()
this.getsb()
uni.showToast({
title: res.msg,
icon: 'success',
duration: 1500
})
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 1500
})
}
})
},
getzfqd(){
this.$u.get(`/app/channel/recharge/enabledList`).then(res =>{
if(res.code == 200){
@ -442,9 +638,22 @@
}
that.$u.put(`/app/bill/endUse`, data).then(res => {
if (res.code == 200) {
uni.reLaunch({
url: '/pages/shouye/index'
})
if(res.data.deviceResult == false){
uni.showToast({
title: res.data.deviceMsg,
icon: 'none',
duration: 2000
})
setTimeout(()=>{
uni.reLaunch({
url: '/pages/shouye/index'
})
},1500)
}else{
uni.reLaunch({
url: '/pages/shouye/index'
})
}
} else {
uni.showToast({
title: res.msg,
@ -959,6 +1168,11 @@
this.$u.get(`/app/device/${this.sbid}`).then(res => {
if (res.code == 200) {
this.sbobj = res.data
if (this.sbobj.powerStatus == 0) {
this.imgflag = false
} else {
this.imgflag = true
}
this.onlineStatus = res.data.onlineStatus
this.qrResult = res.data.mac
this.totalElectriQuantity = res.data.totalElectriQuantity
@ -1242,7 +1456,16 @@
/deep/ .u-icon__icon {
padding-bottom: 22rpx;
}
.imgtel{
position: fixed;
left: 36rpx;
bottom: 78rpx;
width: 90rpx;
height: 90rpx;
z-index: 99;
}
page {
background-color: #F7FAFE;
padding: 0 30rpx;
@ -1250,6 +1473,65 @@
padding-bottom: 300rpx;
overflow: scroll;
}
.card2 {
padding-top: 40rpx;
margin-top: 70rpx;
// width: 670rpx;
max-height: 314rpx;
// background: #FFFFFF;
// box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1);
border-radius: 28rpx;
.aa{
padding-left: 40rpx;
padding-right: 40rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
margin-top: 10rpx;
font-size: 28rpx;
color: #808080;
}
.tit {
margin-left: 40rpx;
font-size: 36rpx;
color: #3D3D3D;
font-weight: 600;
}
.cont_box {
margin-top: 32rpx;
display: flex;
flex-wrap: nowrap;
justify-content: space-around;
.cont {
width: 25%;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
text-align: center;
.top {
width: 100%;
font-size: 32rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #262B37;
}
.bot {
margin-top: 20rpx;
font-size: 26rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #262B37;
}
}
}
}
.truebox {
width: 500rpx;
@ -1308,7 +1590,7 @@
text-align: center;
position: fixed;
bottom: 76rpx;
left: 50%;
left: 58%;
transform: translateX(-50%);
}
@ -1439,11 +1721,13 @@
.dltop {
width: 100%;
height: 204rpx;
height: 224rpx;
background: #8883F0;
border-radius: 16rpx 16rpx 16rpx 16rpx;
margin: auto;
margin-top: 36rpx;
padding-bottom: 20rpx;
box-sizing: border-box;
.dian_list {
display: flex;
@ -1464,7 +1748,6 @@
color: #FFFFFF;
width: 100%;
text-align: center;
margin-top: 16rpx;
}
}
@ -1719,9 +2002,9 @@
.card2 {
padding-top: 0rpx;
width: 670rpx;
width: 100%;
height: 60rpx;
background: #FFFFFF;
// background: #FFFFFF;
border-radius: 0 0 28rpx 28rpx;
.tit {
@ -1773,7 +2056,7 @@
width: 670rpx;
// height: 318rpx;
background: #FFFFFF;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1);
// box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1);
border-radius: 28rpx;
padding-bottom: 20rpx;

View File

@ -83,7 +83,7 @@
<u-collapse>
<u-collapse-item title="收费详情">
<view class="" style="margin-bottom: 6rpx;font-size: 24rpx;">
收费时间段
收费时间段(滑动查看各时段费用)
</view>
<view class="ulbox">
<view class="ulli">
@ -136,6 +136,17 @@
</view>
</view>
<!-- 防诈骗提示 -->
<view class="fangswindle" v-if="swindleflag">
<image src="https://api.ccttiot.com/smartmeter/img/static/uvJcZhPixU1trBud6xTa" mode=""></image>
<view class="zhixiao" @click="swindleflag = false">
我已知晓
</view>
</view>
<view v-if="swindleflag" class="" style="width: 100%;height: 100vh;position: fixed;top: 0;left: 0;background-color: #000;opacity: .5;z-index: 98;"></view>
</view>
</template>
@ -179,7 +190,8 @@
suitPrice:'',
payNo:'',
q:'',
channelId:''
channelId:'',
swindleflag:true
}
},
onLoad(option) {
@ -1052,6 +1064,32 @@
</script>
<style lang="scss">
.fangswindle{
position: fixed;
top: 500rpx;
left: 50%;
transform: translateX(-50%);
z-index: 99;
image{
width: 584rpx;
height: 456rpx;
}
.zhixiao{
width: 530rpx;
height: 76rpx;
background: #8883F0;
border-radius: 47rpx 47rpx 47rpx 47rpx;
text-align: center;
line-height: 76rpx;
font-size: 32rpx;
color: #FFFFFF;
position: fixed;
top: 340rpx;
left: 50%;
transform: translateX(-50%);
z-index: 99;
}
}
.czdh{
width: 100%;
height: 100vh;

View File

@ -72,19 +72,32 @@
<image src="https://api.ccttiot.com/smartmeter/img/static/uEcvOWAyC2VCw8WSiyBe" mode="" @click.stop="del(row.storeId)"></image>
</view> -->
<view :class="['txt', { activewz: tcidlist.includes(row.suitId) }]" style="font-size: 28rpx;">
<text>{{row.name.length > 4 ? row.name.substring(0, 4) + '...' : row.name }} </text>
<text>
<text>{{row.name.length > 4 ? row.name.substring(0, 4) + '...' : row.name }} </text>
<!-- <text>
通电时长{{row.value}}
<text v-if="row.timeUnit == 1"></text>
<text v-if="row.timeUnit == 2"></text>
<text v-if="row.timeUnit == 3">分钟</text>
<text v-if="row.timeUnit == 4"></text>
</text>
<text>{{row.price}}</text>
<text>{{row.price}}</text> -->
<view class="">
<text style="margin-top: 10rpx;" v-if="row.feeType == 1">计时收费</text>
<text style="margin-top: 10rpx;" v-if="row.feeType == 2">按量收费</text>
<text style="margin-top: 10rpx;" v-if="row.feeType == 3">分时段按量收费</text>
<text style="margin-top: 10rpx;" v-if="row.feeType == 4">分时段按时收费</text>
(<text style="margin-top: 10rpx;" v-if="row.feeMode == 1">单次收费</text>
<text style="margin-top: 10rpx;" v-if="row.feeMode == 2">智能收费</text>)
<text style="width: 20rpx;"></text>
<text style="margin-top: 10rpx;" v-if="row.feeType == 3 || row.feeType == 4">押金{{row.price}}</text>
<text style="margin-top: 10rpx;" v-if="row.timeUnit == 2 && row.feeType != 3 && row.feeType != 4">{{row.value}} {{row.price}}</text>
<text style="margin-top: 10rpx;" v-if="row.timeUnit == 3 && row.feeType != 3 && row.feeType != 4">{{row.value}} {{row.price}}</text>
<text style="margin-top: 10rpx;" v-if="row.timeUnit == 4 && row.feeType != 3 && row.feeType != 4">{{row.value}} {{row.price}}</text>
</view>
</view>
<view class="ccc">
<view class="bumday" v-if="row.description == null">
<text class="shi"></text></text>
<text class="shi"></text></text>
</view>
<view class="bumday" v-else>
<text>{{row.description.length > 20 ? row.description.substring(0, 20) + '...' : row.description}}</text></text>
@ -707,7 +720,7 @@
font-family: Source Han Sans, Source Han Sans;
font-weight: 400;
color: #000000;
display: flex;
// display: flex;
justify-content: space-between;
width: 570rpx;
}

View File

@ -35,16 +35,13 @@
<text class="shen">设备名称</text><text class="qian">{{detailobj.deviceName == undefined ? '--' : detailobj.deviceName}}</text>
</view>
<view class="nav">
<text class="shen">支付方式</text><text class="qian">{{detailobj.channelName == undefined ? '--' : detailobj.channelName}}</text>
<text class="shen">店铺名称</text><text class="qian">{{detailobj.storeName == undefined ? '--' : detailobj.storeName}}</text>
</view>
<view class="nav">
<text class="shen">套餐名称</text><text class="qian">{{detailobj.suitName == undefined ? '--' : detailobj.suitName}}</text>
</view>
<view class="nav">
<text class="shen">套餐金额</text><text class="qian">{{detailobj.money == undefined ? '--' : detailobj.money}}</text>
</view>
<view class="nav" v-if="detailobj.status == 3">
<text class="shen">退款金额</text><text class="qian" style="color: red;">{{detailobj.refundAmount == undefined ? '--' : detailobj.refundAmount}}</text>
<view class="nav">
<text class="shen">支付方式</text><text class="qian">{{detailobj.channelName == undefined ? '--' : detailobj.channelName}}</text>
</view>
<view class="nav">
<text class="shen">收费模式</text><text class="qian">{{detailobj.suitFeeMode == 1 ? '单次收费' : '智能收费'}}</text>
@ -64,6 +61,12 @@
<text v-if="detailobj.suitTimeUnit == 1">天</text> <text v-if="detailobj.suitTimeUnit == 2">时</text> <text v-if="detailobj.suitTimeUnit == 3">分钟</text> <text v-if="detailobj.suitTimeUnit == 4"></text>
</text>
</view>
<view class="nav">
<text class="shen">套餐金额</text><text class="qian">{{detailobj.money == undefined ? '--' : detailobj.money}}</text>
</view>
<view class="nav" v-if="detailobj.status == 3">
<text class="shen">退款金额</text><text class="qian" style="color: red;">{{detailobj.refundAmount == undefined ? '--' : detailobj.refundAmount}}</text>
</view>
<view class="nav">
<text class="shen">支付时间</text><text class="qian">{{detailobj.payTime == undefined ? '--' : detailobj.payTime}}</text>
</view>

View File

@ -127,10 +127,16 @@
},
btndetail(item){
uni.navigateTo({
url:'/page_fenbao/statulist/myorder/detailxq/index?billId=' + item.billId
// url:'/page_components/eletj?id=' + item.billNo + '&flag=' + true
})
if(item.isUsing == true){
uni.navigateTo({
url: '/page_components/eletj?id=' + item.billNo
})
}else{
uni.navigateTo({
url:'/page_fenbao/statulist/myorder/detailxq/index?billId=' + item.billId
// url:'/page_components/eletj?id=' + item.billNo + '&flag=' + true
})
}
}
}
}

View File

@ -317,14 +317,14 @@
</view>
<!-- 弹出框 -->
<view class="tishi" style="width: 100%;height: 100%;background-color: #fff;position: fixed;top: 0;left: 0;z-index: 99;" v-if="contwzflag">
<!-- <view class="tishi" style="width: 100%;height: 100%;background-color: #fff;position: fixed;top: 0;left: 0;z-index: 99;" v-if="contwzflag">
<view class="" style="margin-top: 180rpx;padding: 30rpx;box-sizing: border-box;overflow: scroll;height: 80vh;font-size: 32rpx;" v-html="contwz">
</view>
<view @click="btnzx" class="btnzd" style="width: 650rpx;height: 90rpx;text-align: center;line-height: 90rpx;background-color: #8883F0;color: #fff;font-size: 36rpx;border-radius: 50rpx;margin: auto;">
我已知晓
</view>
</view>
</view> -->
</view>
@ -542,8 +542,8 @@
} else {
this.btnmsk = true
if (this.title == '确定') {
if(this.contwzflags == false){
this.contwzflag = false
// if(this.contwzflags == false){
// this.contwzflag = false
let colorMap = {
"#64B6A7": 0,
"#468DFF": 1,
@ -595,9 +595,9 @@
})
}
})
}else{
this.contwzflag = true
}
// }else{
// this.contwzflag = true
// }
} else {
let colorMap = {
"#64B6A7": 0,

View File

@ -31,32 +31,24 @@
退款中
</text>
</view>
<view class="nav">
<text class="shen">用户</text><text class="qian">{{detailobj.userMobile == undefined ? '--' : detailobj.userMobile}}</text>
</view>
<view class="nav">
<text class="shen">设备名称</text><text class="qian">{{detailobj.deviceName == undefined ? '--' : detailobj.deviceName}}</text>
</view>
<view class="nav">
<text class="shen">用户</text><text class="qian">{{detailobj.userName == undefined ? '--' : detailobj.userName}}</text>
</view>
<view class="nav">
<text class="shen">用户手机号</text><text class="qian">{{detailobj.userMobile == undefined ? '--' : detailobj.userMobile}}</text>
</view>
<view class="nav">
<text class="shen">支付时间</text><text class="qian">{{detailobj.payTime == undefined ? '--' : detailobj.payTime}}</text>
</view>
<view class="nav">
<text class="shen">支付方式</text><text class="qian">{{detailobj.channelName == undefined ? '--' : detailobj.channelName}}</text>
<text class="shen">店铺名称</text><text class="qian">{{detailobj.storeName == undefined ? '--' : detailobj.storeName}}</text>
</view>
<view class="nav">
<text class="shen">套餐名称</text><text class="qian">{{detailobj.suitName == undefined ? '--' : detailobj.suitName}}</text>
</view>
<view class="nav">
<text class="shen">套餐金额</text><text class="qian">{{detailobj.money == undefined ? '--' : detailobj.money}}</text>
</view>
<view class="nav" v-if="detailobj.status == 3">
<text class="shen">退款金额</text><text class="qian" style="color: red;">{{detailobj.refundAmount == undefined ? '--' : detailobj.refundAmount}}</text>
<text class="shen">支付方式</text><text class="qian">{{detailobj.channelName == undefined ? '--' : detailobj.channelName}}</text>
</view>
<view class="nav">
<text class="shen">收费模式</text><text class="qian">{{detailobj.suitFeeMode == 1 ? '单次计时' : '智能计时'}}</text>
<text class="shen">收费模式</text><text class="qian">{{detailobj.suitFeeMode == 1 ? '单次收费' : '智能收费'}}</text>
</view>
<view class="nav">
<text class="shen">收费方式</text><text class="qian">
@ -73,6 +65,15 @@
<text v-if="detailobj.suitTimeUnit == 1">天</text> <text v-if="detailobj.suitTimeUnit == 2">时</text> <text v-if="detailobj.suitTimeUnit == 3">分钟</text> <text v-if="detailobj.suitTimeUnit == 4"></text>
</text>
</view>
<view class="nav">
<text class="shen">套餐金额</text><text class="qian">{{detailobj.money == undefined ? '--' : detailobj.money}}</text>
</view>
<view class="nav" v-if="detailobj.status == 3">
<text class="shen">退款金额</text><text class="qian" style="color: red;">{{detailobj.refundAmount == undefined ? '--' : detailobj.refundAmount}}</text>
</view>
<view class="nav">
<text class="shen">支付时间</text><text class="qian">{{detailobj.payTime == undefined ? '--' : detailobj.payTime}}</text>
</view>
<view class="nav">
<text class="shen">套餐开始时间</text><text class="qian">{{detailobj.suitStartTime == undefined ? '--' : detailobj.suitStartTime}}</text>
</view>
@ -85,7 +86,7 @@
</view> -->
</view>
<view class="sb" v-if="userflag && detailobj.status == 2" @click="btntz" style="width:680rpx;height: 100rpx;background: #8883F0;
border-radius: 20rpx 20rpx 20rpx 20rpx;
border-radius: 50rpx;
margin: auto;font-weight: 600;
padding: 32rpx 24rpx;color:#fff;font-size: 32rpx;
box-sizing: border-box;text-align: center;

View File

@ -31,13 +31,10 @@
<div class="tip" v-if="deviceInfo.status==2">
<text>状态</text> <text style="color: red;">使用中</text>
</div>
<div class="tip" v-if="deviceInfo.status==3">
<text>状态</text> <text style="color: red;">维修中</text>维修中
</div>
</view>
<view class="txt" v-if="deviceInfo">
SN{{ deviceInfo.deviceNo == null ? '' : deviceInfo.deviceNo }}</view>
<view class="" style="font-size: 24rpx;margin-top: 8rpx;color: #95989D;">
<view class="" style="font-size: 24rpx;color: #95989D;">
更新时间{{deviceInfo.lastPullTime == null ? '--' : deviceInfo.lastPullTime}}</view>
</view>
<view class="mid_left" style="position: relative;">
@ -102,7 +99,7 @@
</view>
<!-- 当前订单 -->
<view class="card2" style="padding-bottom: 30rpx;box-sizing: border-box;margin-top: 20rpx;">
<view v-if="sklistflag" @click="btnshdd" class="card2" style="padding-bottom: 30rpx;box-sizing: border-box;margin-top: 20rpx;">
<view class="tit" style="border-left: 14rpx solid #8883F0;padding-left: 24rpx;display: flex;justify-content: space-between;padding-right: 40rpx;margin-bottom: 20rpx;">当前订单 <text style="color: #8883F0;font-size: 32rpx;font-weight: 400;">查看</text> </view>
<view class="aa">
<text>用户</text> <text>{{sklist.userName}}</text>
@ -117,13 +114,12 @@
<text>下单时间</text> <text>{{sklist.suitStartTime}}</text>
</view>
</view>
<!-- 操作 -->
<view class="card2" style="padding-bottom: 30rpx;box-sizing: border-box;margin-top: 20rpx;">
<view class="tit" style="border-left: 14rpx solid #8883F0;padding-left: 24rpx;">设备控制 </view>
<view class="" style="display: flex;margin-top: 20rpx;padding: 50rpx;box-sizing: border-box;width: 100%;
height: 80rpx;align-items: center;justify-content: space-between;background-color: #fff;border-radius: 20rpx;font-size: 32rpx;color: #3D3D3D;">
<view class="bot">开关控制{{tdtxt}}</view>
<view class="bot">开关状态{{tdtxt}}</view>
<view class="cont" @click="btnkq">
<view class="top" style="padding-top: 10rpx;">
<!-- <u-switch v-model="checked" active-color="#8883F0"></u-switch> -->
@ -152,6 +148,14 @@
</view>
<image class="jt" src="https://api.ccttiot.com/smartmeter/img/static/ukdy921M8MNe9XDid0WI" mode=""></image>
</view>
<view class="cont" @click="topage(3)">
<view class="top">
<image src="https://api.ccttiot.com/smartmeter/img/static/uJmpaxyrv34a1EW5lWQv" mode=""
style="width: 58rpx;height: 58rpx;"></image>
<view class="bot">收费方式</view>
</view>
<image class="jt" src="https://api.ccttiot.com/smartmeter/img/static/ukdy921M8MNe9XDid0WI" mode=""></image>
</view>
<view class="cont" @click="topage(1)">
<view class="top">
<image src="https://api.ccttiot.com/smartmeter/img/static/uhsqQVT62DOTdW8qW7ez" mode=""
@ -169,24 +173,9 @@
</view>
<image class="jt" src="https://api.ccttiot.com/smartmeter/img/static/ukdy921M8MNe9XDid0WI" mode=""></image>
</view>
<view class="cont" @click="topage(2)">
<view class="top">
<image src="https://api.ccttiot.com/smartmeter/img/static/ueQ5V8QAidDZGt0FpqXb" mode=""
style="width: 58rpx;height: 58rpx;"></image>
<view class="bot">上报异常</view>
</view>
<image class="jt" src="https://api.ccttiot.com/smartmeter/img/static/ukdy921M8MNe9XDid0WI" mode=""></image>
</view>
</view>
<view class="">
<view class="cont" @click="topage(3)">
<view class="top">
<image src="https://api.ccttiot.com/smartmeter/img/static/uJmpaxyrv34a1EW5lWQv" mode=""
style="width: 50rpx;height: 58rpx;"></image>
<view class="bot">收费方式</view>
</view>
<image class="jt" src="https://api.ccttiot.com/smartmeter/img/static/ukdy921M8MNe9XDid0WI" mode=""></image>
</view>
<view class="cont" @click="topage(5)" v-if="modelId.some(tag => tag == 2)">
<view class="top">
<image style="width: 58rpx;height: 58rpx;"
@ -205,8 +194,16 @@
</view>
<image class="jt" src="https://api.ccttiot.com/smartmeter/img/static/ukdy921M8MNe9XDid0WI" mode=""></image>
</view>
<view class="cont" @click="topage(2)">
<view class="top">
<image src="https://api.ccttiot.com/smartmeter/img/static/ueQ5V8QAidDZGt0FpqXb" mode=""
style="width: 58rpx;height: 58rpx;"></image>
<view class="bot">上报异常</view>
</view>
<image class="jt" src="https://api.ccttiot.com/smartmeter/img/static/ukdy921M8MNe9XDid0WI" mode=""></image>
</view>
<view class="cont" @click="topage(4)">
<view class="top" style="border: 0;padding-bottom: 0;">
<view class="top" style="border: 0;">
<image style="width: 58rpx;height: 58rpx;"
src="https://api.ccttiot.com/smartmeter/img/static/uOUM2aclDz2ZnRxOll9g" mode="">
</image>
@ -278,7 +275,7 @@
SN:{{deviceNo}}
</view>
<view class=""
style="border: 1px solid; padding: 20rpx;box-sizing: border-box;width: 100%;text-align: center;margin-top: 400rpx;"
style="border: 1px solid; padding: 20rpx;box-sizing: border-box;width: 100%;text-align: center;margin-top: 40rpx;"
@click="wemflag = false">
关闭二维码
</view>
@ -360,7 +357,8 @@
modelId: [],
damweiid: '',
intervalId: null,
sklist:{}
sklist:{},
sklistflag:false,
}
},
onLoad(option) {
@ -454,6 +452,13 @@
this.drawCanvas()
},
methods: {
//
btnshdd(){
uni.navigateTo({
url:'/pages/shanghudd?id=' + this.sklist.billNo
})
},
getshuax() {
this.$u.get(`/app/device/${this.id}/refreshIot`).then((res) => {
this.getDevice(this.id)
@ -462,7 +467,13 @@
getshoukuan(){
this.$u.get(`/app/bill/incomeList?isUsing=true&deviceId=${this.deviceInfo.deviceId}`).then((res) => {
if(res.code == 200){
this.sklist = res.rows[0]
if(res.rows == null || res.rows.length == 0){
this.sklistflag = false
}else{
this.sklistflag = true
this.sklist = res.rows[0]
}
}else{
uni.showToast({
title: res.msg,
@ -1555,9 +1566,9 @@
.imgewm {
width: 250px;
height: 250px;
height:250px;
position: fixed;
top: 20%;
top:400rpx;
left: 50%;
transform: translateX(-50%);
z-index: 2;
@ -1849,10 +1860,10 @@
.mid_top {
width: 100%;
font-size: 42rpx;
font-size: 36rpx;
font-family: HarmonyOS Sans SC, HarmonyOS Sans SC;
font-weight: 400;
color: #262B37;
font-weight: 600;
color: #333;
}
.mid_bot {
@ -1965,7 +1976,7 @@
.card2 {
padding-top: 40rpx;
margin-top: 70rpx;
margin-top: 20rpx;
width: 670rpx;
max-height: 314rpx;
background: #FFFFFF;
@ -2026,6 +2037,8 @@
padding-top: 40rpx;
margin-top: 24rpx;
width: 670rpx;
// height: 490rpx;
// overflow: scroll;
background: #FFFFFF;
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(53, 140, 255, 0.1);
border-radius: 28rpx;

View File

@ -26,7 +26,7 @@
</view>
<view class="">
<text style="color: #ccc;" v-if="item.status == 1"><text style="width: 10rpx;height: 10rpx;background-color: #ccc;border-radius: 50%;display: inline-block;vertical-align: middle;margin-right: 5rpx;"></text> 未支付</text>
<text style="color: #00FF00;" v-if="item.status == 2"><text style="width: 10rpx;height: 10rpx;background-color: #00FF00;border-radius: 50%;display: inline-block;vertical-align: middle;margin-right: 5rpx;"></text> 支付成功</text>
<text style="color: #27da77;" v-if="item.status == 2"><text style="width: 10rpx;height: 10rpx;background-color: #27da77;border-radius: 50%;display: inline-block;vertical-align: middle;margin-right: 5rpx;"></text> 支付成功</text>
<text style="color: #ccc;" v-if="item.status == 3"><text style="width: 10rpx;height: 10rpx;background-color: #ccc;border-radius: 50%;display: inline-block;vertical-align: middle;margin-right: 5rpx;"></text> 已退款</text>
<text style="color: red;" v-if="item.status == 4"><text style="width: 10rpx;height: 10rpx;background-color: red;border-radius: 50%;display: inline-block;vertical-align: middle;margin-right: 5rpx;"></text> 用户取消</text>
<text style="color: red;" v-if="item.status == 5"><text style="width: 10rpx;height: 10rpx;background-color: red;border-radius: 50%;display: inline-block;vertical-align: middle;margin-right: 5rpx;"></text> 系统超时取消</text>

View File

@ -35,6 +35,17 @@
}
},
{
"path": "pages/shanghudd",
"style": {
"navigationBarTitleText": "我的",
// "enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#3996FD",
"navigationBarTextStyle": "#FFFFFF",
"navigationStyle": "custom"
}
},
{
"path": "pages/tj",
"style": {

View File

@ -102,17 +102,17 @@
<text v-if="item.wifi == null && !item.modelTags.some(tag => tag == 3) || item.wifi == '创特物联TP'" style="color: red;" @click.stop="btnwifi(item.mac)">未配网</text>
<text v-else>
<text v-if="item.onlineStatus == 0" style="color: red;">离线</text>
<text v-else style="color: seagreen;">在线</text>
<text v-else style="color: #00BA88;">在线</text>
</text>
<view class="" style="width: 20rpx;"></view>
状态:<view class="" style="width: 10rpx;"></view>
<view class="sta_txt" v-if="item.status==3">
维修中
</view>
<view class="sta_txt" v-if="item.status==2" style="color:greenyellow;">
<view class="sta_txt" v-if="item.status==2" style="color:red;">
使用中
</view>
<view class="sta_txt" v-if="item.status==1" style="color:seagreen;">
<view class="sta_txt" v-if="item.status==1" style="color:#00BA88;">
空闲
</view>
</view>
@ -2145,7 +2145,7 @@
.card {
display: flex;
margin-top: 20rpx;
// margin-top: 20rpx;
width: 658rpx;
max-height: 300rpx;
padding-bottom: 20rpx;
@ -2161,9 +2161,9 @@
margin-left: 50rpx;
.card_left_tit {
font-size: 44rpx;
font-size: 36rpx;
font-family: AlibabaPuHuiTi, AlibabaPuHuiTi;
font-weight: 500;
font-weight: 600;
color: #8883F0;
}