This commit is contained in:
3321822538@qq.com 2025-01-20 18:21:48 +08:00
parent aec896e882
commit d96b457f36
9 changed files with 916 additions and 345 deletions

View File

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

View File

@ -26,7 +26,6 @@
</view>
</view>
</view>
<!-- 检测蓝牙未开启 -->
<view class="shibai" v-if="lanyaflag">
<view class="top">
@ -84,7 +83,6 @@
<text v-if="item.feeType == 1">{{item.value}}<text v-if="item.timeUnit == 2">时</text> <text v-if="item.timeUnit == 3">分钟</text> <text v-if="item.timeUnit == 4"></text> {{item.price}}</text>
<text v-if="item.feeType == 2">{{item.value}}{{item.price}}</text>
<text v-if="item.feeMode == 2">预存{{item.deposit}}</text>
</view>
<view class="" style="margin-top: 10rpx;color: #8883F0;font-size: 28rpx;" v-if="item.feeMode == 2">
完成订单后押金将自动退还
@ -113,13 +111,35 @@
<view class="" style="margin-top: 10rpx;">
套餐说明{{item.description == null ? '无' : item.description}}
</view>
</view>
<view v-if="deviceobj.suitList == null || deviceobj.suitList.length == 0" class="" style="color: #ccc;font-size: 36rpx;">
该设备暂无套餐...
</view>
</view>
<view class="fee_box" @click="btngoumai" v-if="huiyuanlistflag">
<view class="auto_box">
<view class="auto_li" v-for="(item,index) in huiyuanlist" :key="index">
<view class="txt1">
{{item.name == null ? '--' : item.name}}
</view>
<view class="txt1">
{{item.price == null ? '--' :item.price}}
</view>
<view class="txt2">
每单享{{item.discount == item.discount}}
</view>
<view class="buy_btn">
前去购买
</view>
</view>
</view>
</view>
<view class="youhui" @click="huiyuanflag = true">
<view style="color: #666;">{{vipLevelName}}</view>
<view class="yh">
<text class="yi">已优惠{{discountAmount}}</text> <u-icon name="arrow-right" color="rgb(128, 128, 128)" size="28"></u-icon>
</view>
</view>
<view class="tongyi" v-if="deviceobj.suitList != null">
<u-checkbox-group>
<u-checkbox v-model="checked" @change="checkboxChange" active-color="#8883F0 ">我已同意
@ -134,8 +154,6 @@
</view>
</view>
<view class="mask" v-if="zhifuflag"></view>
<!-- <view class="mask" v-if="czflag"></view> -->
<view class="czdh" v-if="jzflag">
<view class="bj">
<view class="tittop">
@ -146,9 +164,7 @@
</view>
</view>
</view>
</view>
<!-- 防诈骗提示 -->
<view class="fangswindle" v-if="swindleflag">
<image src="https://api.ccttiot.com/smartmeter/img/static/uvJcZhPixU1trBud6xTa" mode="aspectFit"></image>
@ -158,7 +174,6 @@
</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 class="mask" v-if="masksss"></view>
<!-- 服务协议弹框 -->
<view class="fuwutc" v-if="yinsiflag">
<view class="wenxin">
@ -180,7 +195,22 @@
</view>
</view>
<view class="mask" v-if="yinsiflag"></view>
<!-- 选择会员卡弹窗 -->
<view class="huiyuantc" v-if="huiyuanflag">
<view class="cha" @click="huiyuanflag = false">
×
</view>
<view class="" style="width: 100%;text-align: center;font-size: 32rpx;font-weight: 600;">
我的会员
</view>
<view class="vip_box1" v-for="(item,index) in storelist" :key="index" @click="btnxzhuiyuan(item)">
<view class="txt1">{{item.vipLevelName}}</view>
<view class="txt2">会员将在{{item.endTime.slice(0,10)}}后到期剩余次数/{{item.surplusCount}}</view>
<view class="btn">
使用
</view>
</view>
</view>
</view>
</template>
@ -238,7 +268,16 @@
hasCalledGetczlyss:false,
arrlists:[],
imglanya:'https://api.ccttiot.com/smartmeter/img/static/ulbuqIwcbhuCYGHZPAiL',
ver_dataflag:2
ver_dataflag:2,
huiyuanflag:false,
huiyuanlist:[],
huiyuanlistflag:false,
storelist:[],
huiyuanid:'',
vipLevelName:'',
payPrice:'',
discountAmount:'',
zhekou:''
}
},
onLoad(option) {
@ -338,6 +377,12 @@
})
},
methods: {
//
btngoumai(){
uni.navigateTo({
url:'/page_geren/index?storeId=' + this.deviceobj.storeId
})
},
//
getMyLocation() {
uni.getLocation({
@ -363,6 +408,12 @@
this.suitGearTime = item.gearTime
this.suitFeeMode = item.feeMode
this.suitFeeType = item.feeType
this.$u.get(`/app/bill/recharge/prePayPrice?vipId=${this.huiyuanid}&suitId=${this.zfobj.suitId}`).then(res => {
if(res.code == 200){
this.discountAmount = res.data.discountAmount //
this.payPrice = res.data.payPrice //
}
})
if(item.feeMode == 2 && ['1','2'].includes(item.feeType)){
let sum = item.deposit / item.price
if(item.timeUnit == 1){
@ -392,15 +443,14 @@
this.swindleflag = false
if(this.onlineStatus == 0){
if(this.ver_data == ''){
// uni.showLoading({
// title: ''
// })
}else{
this.ver_dataflag = 3
uni.hideLoading()
}
}
},
//
getzfqd(){
this.$u.get(`/app/channel/recharge/enabledList?mchId=` + this.deviceobj.userId).then(res =>{
if(res.code == 200){
@ -408,11 +458,6 @@
uni.hideLoading()
}else{
uni.hideLoading()
// uni.showToast({
// title:res.msg,
// icon: 'none',
// duration:2000
// })
}
})
},
@ -533,7 +578,6 @@
}
})
},
//
btnyinsi(){
uni.navigateTo({
@ -545,7 +589,6 @@
url: '/page_fenbao/statulist/about/index?tit=' + '用户服务协议'
})
},
gettrue() {
this.$u.get("/app/device/isBind?deviceNo=" + this.id).then((res) => {
if (res.data == 0 || res.data == 1) {
@ -558,7 +601,7 @@
getuserinfo() {
this.$u.get("/app/user/userInfo").then((res) => {
if (res.code == 200) {
// this.gettrue()
} else {
uni.navigateTo({
url: '/pages/login/login?id=' + 1
@ -566,12 +609,64 @@
}
})
},
// id
huiyuan(){
this.$u.get(`/app/vipLevel/list?pageNum=1&pageSize=999&storeId=${this.deviceobj.storeId}`).then(res => {
if(res.code == 200){
this.huiyuanlist = res.rows
if(res.rows == null || res.rows.length == 0){
this.huiyuanlistflag = false
}else{
this.huiyuanlistflag = true
}
}
})
},
// id
zuidihuiyuan(){
this.$u.get(`/app/vip/availableMinDiscount?storeId=${this.deviceobj.storeId}`).then(res => {
if(res.code == 200){
this.vipLevelName = res.data.vipLevelName
this.huiyuanid = res.data.id
this.zhekou = res.data.discount
//
this.$u.get(`/app/bill/recharge/prePayPrice?vipId=${this.huiyuanid}&suitId=${this.zfobj.suitId}`).then(res => {
if(res.code == 200){
this.discountAmount = res.data.discountAmount //
this.payPrice = res.data.payPrice //
}
})
}
})
},
// id
myhuiyuan(){
this.$u.get(`/app/vip/list?pageNum=1&pageSize=99&orderByColumn=createTime&isAsc=desc&inValid=true&storeId=${this.deviceobj.storeId}`).then(res => {
if(res.code == 200){
this.storelist = res.rows
}
})
},
//
btnxzhuiyuan(item){
this.huiyuanid = item.id //id
this.vipLevelName = item.vipLevelName //
this.zhekou = item.discount //
//
this.$u.get(`/app/bill/recharge/prePayPrice?vipId=${this.huiyuanid}&suitId=${this.zfobj.suitId}`).then(res => {
if(res.code == 200){
this.huiyuanflag = false
this.discountAmount = res.data.discountAmount //
this.payPrice = res.data.payPrice //
}
})
},
// this.id
gettaoc() {
this.$u.get(`/app/device/${this.id}/withSuitList`).then((res) => {
if (res.code == 200) {
this.deviceobj = res.data
this.getzfqd()
this.getzfqd() //
//
if(this.deviceobj.suitList.length == 0 || this.deviceobj.suitList == ''){
this.swindleflag = false
@ -603,6 +698,11 @@
}
}else{
this.btnactive(this.deviceobj.suitList[0]) //
if(this.deviceobj.storeId != null){ //
this.huiyuan()
this.zuidihuiyuan()
this.myhuiyuan()
}
}
this.zfobj = res.data.suitList[0]
let targetDateStr = this.deviceobj.expireTime
@ -643,6 +743,7 @@
suit.arr = arr
})
},
//
btnzhifu() {
if((this.phonenumber == '' || this.phonenumber == null) && this.mchShowBillMobile == true){
console.log(this.phonenumber,this.mchShowBillMobile)
@ -661,30 +762,11 @@
content: '蓝牙连接中,请尽量靠近设备!',
showCancel: false,
success: function(res) {
// if (res.confirm) {
// that.ver_data = ''
// that.ver_dataflag = 2
// that.getzhifu()
// } else if (res.cancel) {
// console.log('')
// }
}
})
}else if(this.checked == false) {
this.yinsiflag = true
// let that = this
// uni.showModal({
// title: '',
// content: '',
// showCancel: true,
// success: function(res) {
// if (res.confirm) {
// } else if (res.cancel) {
// console.log(''); //
// }
// }
// })
} else{
this.getzhifu()
}
@ -722,7 +804,7 @@
let data = {
deviceNo: that.id,
suitId: that.zfobj.suitId,
money: that.zfobj.price,
money: this.payPrice,
suitDeposit:that.zfobj.deposit,
suitTime: that.zfobj.value,
suitTimeUnit:that.suitTimeUnit,
@ -730,7 +812,10 @@
suitFeeType:that.suitFeeType,
suitGearAmount:that.suitGearAmount,
suitGearTime:that.suitGearTime,
suitPrice:that.suitPrice
suitPrice:that.suitPrice,
vipId:this.huiyuanid,
vipDiscount:this.zhekou,
discountAmount:this.discountAmount
}
that.$u.post('/app/bill/recharge', data).then((res) => {
if (res.code == 200) {
@ -857,7 +942,7 @@
let data = {
deviceNo: that.id,
suitId: that.zfobj.suitId,
money: that.zfobj.price,
money: this.payPrice,
suitDeposit:that.zfobj.deposit,
suitTime: that.zfobj.value,
suitTimeUnit:that.suitTimeUnit,
@ -865,7 +950,10 @@
suitFeeType:that.suitFeeType,
suitGearAmount:that.suitGearAmount,
suitGearTime:that.suitGearTime,
suitPrice:that.suitPrice
suitPrice:that.suitPrice,
vipId:this.huiyuanid,
vipDiscount:this.zhekou,
discountAmount:this.discountAmount
}
that.$u.post('/app/bill/recharge', data).then((res) => {
if (res.code == 200) {
@ -1001,162 +1089,162 @@
},
//
getczly(){
uni.showLoading({
title: '准备支付中...'
})
this.getzfqd()
this.zhifuflag = true
let that = this
let data = {
deviceNo: that.id,
suitId: that.zfobj.suitId,
money: that.zfobj.price,
suitDeposit:that.zfobj.deposit,
suitTime: that.zfobj.value,
suitTimeUnit:that.suitTimeUnit,
suitFeeMode:that.suitFeeMode,
suitFeeType:that.suitFeeType,
suitGearAmount:that.suitGearAmount,
suitGearTime:that.suitGearTime,
suitPrice:that.suitPrice
}
that.$u.post('/app/bill/recharge', data).then((res) => {
if (res.code == 200) {
that.orderno = res.data
let data = {
billNo:that.orderno,
channelId:that.channelId
}
that.$u.put(`/app/bill/pay`,data).then((res) => {
if (res.code == 200) {
that.payNo = res.data.payBill.payNo
uni.requestPayment({
provider: 'wxpay',
timeStamp: res.data.payParams.timeStamp,
nonceStr: res.data.payParams.nonceStr,
package: res.data.payParams.packageVal,
signType: res.data.payParams.signType,
paySign: res.data.payParams.paySign,
success: (res) => {
if (that.timer) {
clearInterval(this.timer)
that.timer = null
}
// 111111111111111111111111
that.$u.put(`/app/payBill/${that.payNo}/refreshPayResult`).then(res =>{
// if(res.code == 200){
that.$u.get(`/app/bill/byNo/${that.orderno}`).then(res => {
if (res.code == 200) {
let timesc = res.data.syncDeviceSeconds
let suitEnabledVoid = res.data.suitEnabledVoid
let suitVoidMinute = res.data.suitVoidMinute
console.log(res,'111111',suitEnabledVoid);
that.$u.get(`/app/bill/recharge/${res.data.billNo}/bluetoothSuccess`).then(res =>{})
let datas = {
mac:that.mac,
reason:'下单' + that.orderno,
command:'11time' + timesc + '@',
result:'成功'
}
that.$u.post(`/app/commandLog/bluetooth`,datas).then(res => {})
if(res.data.status == 2){
uni.getConnectedBluetoothDevices({
success(res) {
that.jzflag = true
that.startLoading()
setTimeout(()=> {
xBlufi.notifySendCustomData({
customData: "time" + timesc + '@'
})
xBlufi.notifySendCustomData({
customData: "11time" + timesc + '@'
})
if(suitEnabledVoid == true){
xBlufi.notifySendCustomData({
customData: "11dj" + suitVoidMinute * 60 + '@'
})
}
setTimeout(() => {
if(that.ver_data == ''){
uni.showToast({
title: '蓝牙已断开,蓝牙充值失败',
icon: 'none',
duration: 2000
})
}else{
that.zhifuflag = false
uni.reLaunch({
url:'/page_components/eletj?id=' + that.orderno + '&ver_data=' + this.ver_data
})
}
},1000)
},500)
},
fail(err) {
console.error('获取已连接蓝牙设备信息失败:',err)
let that = this
that.ver_data = ''
that.ver_dataflag = 1
uni.showModal({
title: '温馨提示',
content: '设备开启失败,检测到设备蓝牙已断开',
showCancel: false,
success: function(res) {
// getczly(){
// uni.showLoading({
// title: '...'
// })
// this.getzfqd()
// this.zhifuflag = true
// let that = this
// let data = {
// deviceNo: that.id,
// suitId: that.zfobj.suitId,
// money: that.zfobj.price,
// suitDeposit:that.zfobj.deposit,
// suitTime: that.zfobj.value,
// suitTimeUnit:that.suitTimeUnit,
// suitFeeMode:that.suitFeeMode,
// suitFeeType:that.suitFeeType,
// suitGearAmount:that.suitGearAmount,
// suitGearTime:that.suitGearTime,
// suitPrice:that.suitPrice
// }
// that.$u.post('/app/bill/recharge', data).then((res) => {
// if (res.code == 200) {
// that.orderno = res.data
// let data = {
// billNo:that.orderno,
// channelId:that.channelId
// }
// that.$u.put(`/app/bill/pay`,data).then((res) => {
// if (res.code == 200) {
// that.payNo = res.data.payBill.payNo
// uni.requestPayment({
// provider: 'wxpay',
// timeStamp: res.data.payParams.timeStamp,
// nonceStr: res.data.payParams.nonceStr,
// package: res.data.payParams.packageVal,
// signType: res.data.payParams.signType,
// paySign: res.data.payParams.paySign,
// success: (res) => {
// if (that.timer) {
// clearInterval(this.timer)
// that.timer = null
// }
// // 111111111111111111111111
// that.$u.put(`/app/payBill/${that.payNo}/refreshPayResult`).then(res =>{
// // if(res.code == 200){
// that.$u.get(`/app/bill/byNo/${that.orderno}`).then(res => {
// if (res.code == 200) {
// let timesc = res.data.syncDeviceSeconds
// let suitEnabledVoid = res.data.suitEnabledVoid
// let suitVoidMinute = res.data.suitVoidMinute
// console.log(res,'111111',suitEnabledVoid);
// that.$u.get(`/app/bill/recharge/${res.data.billNo}/bluetoothSuccess`).then(res =>{})
// let datas = {
// mac:that.mac,
// reason:'' + that.orderno,
// command:'11time' + timesc + '@',
// result:''
// }
// that.$u.post(`/app/commandLog/bluetooth`,datas).then(res => {})
// if(res.data.status == 2){
// uni.getConnectedBluetoothDevices({
// success(res) {
// that.jzflag = true
// that.startLoading()
// setTimeout(()=> {
// xBlufi.notifySendCustomData({
// customData: "time" + timesc + '@'
// })
// xBlufi.notifySendCustomData({
// customData: "11time" + timesc + '@'
// })
// if(suitEnabledVoid == true){
// xBlufi.notifySendCustomData({
// customData: "11dj" + suitVoidMinute * 60 + '@'
// })
// }
// setTimeout(() => {
// if(that.ver_data == ''){
// uni.showToast({
// title: '',
// icon: 'none',
// duration: 2000
// })
// }else{
// that.zhifuflag = false
// uni.reLaunch({
// url:'/page_components/eletj?id=' + that.orderno + '&ver_data=' + this.ver_data
// })
// }
// },1000)
// },500)
// },
// fail(err) {
// console.error('',err)
// let that = this
// that.ver_data = ''
// that.ver_dataflag = 1
// uni.showModal({
// title: '',
// content: '',
// showCancel: false,
// success: function(res) {
}
})
}
})
}else{
uni.showToast({
title: '支付失败',
icon: 'none',
duration: 2000
});
}
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
// }
})
//
uni.setStorageSync('time', that.expireTimeStr)
},
fail(err) {
this.zhifuflag = false
setTimeout(() => {
this.czflag = false
uni.hideLoading()
}, 500)
//
uni.showToast({
title: '支付失败',
icon: 'none',
duration: 2000
});
}
})
}else{
this.zhifuflag = false
}
})
} else if (res.code == 500) {
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
});
} else {
this.czflag = false
}
})
},
// }
// })
// }
// })
// }else{
// uni.showToast({
// title: '',
// icon: 'none',
// duration: 2000
// });
// }
// }else{
// uni.showToast({
// title: res.msg,
// icon: 'none',
// duration: 2000
// })
// }
// })
// // }
// })
// //
// uni.setStorageSync('time', that.expireTimeStr)
// },
// fail(err) {
// this.zhifuflag = false
// setTimeout(() => {
// this.czflag = false
// uni.hideLoading()
// }, 500)
// //
// uni.showToast({
// title: '',
// icon: 'none',
// duration: 2000
// });
// }
// })
// }else{
// this.zhifuflag = false
// }
// })
// } else if (res.code == 500) {
// uni.showToast({
// title: res.msg,
// icon: 'none',
// duration: 2000
// });
// } else {
// this.czflag = false
// }
// })
// },
startLoading() {
@ -1314,6 +1402,149 @@
</script>
<style lang="scss">
.youhui{
position: fixed;
right: 40rpx;
bottom: 200rpx;
display: flex;
justify-content: space-between;
align-items: center;
width: 680rpx;
border: 1px dashed #ccc;
padding: 2rpx;
box-sizing: border-box;
.yh{
color: #ef3333;
}
}
.huiyuantc{
width: 100%;
height: 80vh;
position: fixed;
left: 0;
bottom: 0;
background-color: #fff;
border-radius: 50rpx 50rpx 0 0;
padding-top: 50rpx;
box-sizing: border-box;
.cha{
position: absolute;
top: 0rpx;
right: 30rpx;
font-size: 60rpx;
font-weight: 600;
}
.vip_box1 {
position: relative;
margin-left: 38rpx;
width: 680rpx;
height: 158rpx;
background-image: url('https://lxnapi.ccttiot.com/bike/img/static/uiaiNkMy7221n3bk2ta0');
background-size: cover;
/* 背景图片等比缩放以覆盖整个容器 */
background-position: center;
/* 背景图片居中显示 */
background-repeat: no-repeat;
margin-top: 40rpx;
.txt1 {
top: 20rpx;
left: 171rpx;
position: absolute;
font-weight: 500;
font-size: 39rpx;
color: #B07C1E;
}
.txt2 {
position: absolute;
left: 171rpx;
bottom: 20rpx;
font-weight: 400;
font-size: 25rpx;
color: #B07C1E;
}
.btn {
display: flex;
align-items: center;
justify-content: center;
position: absolute;
top: 18rpx;
right: 23rpx;
width: 150rpx;
height: 43rpx;
border-radius: 31rpx 31rpx 31rpx 31rpx;
border: 1rpx solid #B07C1E;
font-weight: 400;
font-size: 25rpx;
color: #B07C1E;
}
}
}
.fee_box {
margin-top: 18rpx;
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 270rpx;
width: 680rpx;
height: 288rpx;
background-image: url('https://lxnapi.ccttiot.com/bike/img/static/ugciMYClSGgJxP8HYoRU');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
.auto_box::-webkit-scrollbar {
display: none;
}
.auto_box {
padding-left: 24rpx;
display: flex;
overflow-x: auto; /* 允许横向滚动 */
flex-wrap: nowrap; /* 禁止换行,保持所有元素在一行 */
position: absolute;
top: 90rpx;
width: 100%; /* 根据需要调整宽度 */
height: auto; /* 根据内容自动调整高度 */
.auto_li {
position: relative;
padding: 24rpx 28rpx;
margin-right: 22rpx;
width: 408rpx;
height: 176rpx;
flex-shrink: 0; /* 防止子元素被压缩 */
background-image: url('https://lxnapi.ccttiot.com/bike/img/static/ui88NWy9R1j2zFGojdHU');
background-size: cover;
background-position: center;
.txt1{
width: 100%;
font-weight: 600;
font-size: 32rpx;
color: #495E74;
}
.txt2{
font-weight: 400;
font-size: 24rpx;
color: #495E74;
}
.buy_btn{
position: absolute;
right: 26rpx;
bottom: 38rpx;
display: flex;
align-items: center;
justify-content: center;
width: 132rpx;
height: 50rpx;
background: #495E74;
border-radius: 25rpx 25rpx 25rpx 25rpx;
font-weight: 500;
font-size: 28rpx;
color: #FFF3DB;
}
}
}
}
.fuwutc{
width: 640rpx;
height: 400rpx;
@ -1624,18 +1855,19 @@
.box {
width: 750rpx;
height: 71vh;
height: 66vh;
overflow: scroll;
background: #F4F5F7;
border-radius: 0rpx 0rpx 0rpx 0rpx;
padding: 36rpx 54rpx;
padding-bottom: 400rpx;
box-sizing: border-box;
border-radius: 30rpx 30rpx 0 0;
.tongyi {
width: 590rpx;
position: fixed;
bottom: 50rpx;
bottom: 40rpx;
left: 50%;
transform: translateX(-50%);

View File

@ -61,7 +61,7 @@
@click.stop="nav(item)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/u9IYNLl7G83pOXtQbaYj" mode="aspectFit"
@click.stop="btnpag(4,item)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/u1Gjnomycy9oiRNbmW4F" style="width: 116rpx;" mode="aspectFit"
<image src="https://api.ccttiot.com/smartmeter/img/static/uVYNIcmP5ytOhhfpasrt" style="width: 116rpx;" mode="aspectFit"
@click.stop="btnpag(5,item)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/uoyO7psgUNmNuhPDoOmH" mode="aspectFit"
@click.stop="btnpag(2,item)"></image>
@ -187,8 +187,11 @@
url:'/page_components/peizhi?obj=' + JSON.stringify(item)
})
}else if(num == 5){
// uni.navigateTo({
// url:'/pages/shopewm?storeId=' + item.storeId
// })
uni.navigateTo({
url:'/pages/shopewm?storeId=' + item.storeId
url:'/page_geren/buyCard?storeId=' + item.storeId
})
}
},

View File

@ -37,7 +37,7 @@
@click="nav"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/u9IYNLl7G83pOXtQbaYj" mode="aspectFit"
@click="btnpag(4)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/u1Gjnomycy9oiRNbmW4F" style="width: 116rpx;" mode="aspectFit"
<image src="https://api.ccttiot.com/smartmeter/img/static/uVYNIcmP5ytOhhfpasrt" style="width: 116rpx;" mode="aspectFit"
@click="btnpag(5)"></image>
<image src="https://api.ccttiot.com/smartmeter/img/static/uoyO7psgUNmNuhPDoOmH" mode="aspectFit"
@click="btnpag(2)"></image>
@ -277,6 +277,10 @@
uni.navigateTo({
url:'/page_components/peizhi?obj=' + JSON.stringify(this.listobj)
})
}else if(num == 5){
uni.navigateTo({
url:'/page_geren/buyCard?storeId=' + item.storeId
})
}
},

View File

@ -5,7 +5,7 @@
<view class="box">
<view class="ul">
<view class="name">
会员卡名称
<text>*</text>会员卡名称
</view>
<input type="text" v-model="name" placeholder="请输入会员卡名称"/>
</view>
@ -13,47 +13,72 @@
<view class="name">
会员卡原价/
</view>
<input type="text" v-model="yuanjia" placeholder="请输入会员卡原价"/>
<input type="number" v-model="yuanjia" placeholder="请输入会员卡原价"/>
</view>
<view class="ul">
<view class="name">
会员卡现价/
<text>*</text>会员卡现价/
</view>
<input type="text" v-model="xianjia" placeholder="请输入会员卡现价"/>
<input type="number" v-model="xianjia" placeholder="请输入会员卡现价"/>
</view>
<view class="ul">
<view class="name">
会员卡期限/
<text>*</text>会员卡时长/
</view>
<input type="text" v-model="qixian" placeholder="请输入会员卡期限"/>
<input type="number" v-model="qixian" placeholder="请输入会员卡时长"/>
</view>
<view class="ul">
<view class="name">
会员卡折扣/
<text>*</text>会员卡折扣/
</view>
<input type="text" v-model="zhekou" placeholder="请输入会员卡折扣"/>
</view>
<view class="ul">
<view class="name">
会员卡使用次数/
<text>*</text>会员卡使用次数/
</view>
<input type="text" v-model="shangxian" placeholder="请输入会员卡使用次数"/>
<input type="number" v-model="shangxian" placeholder="请输入会员卡使用次数"/>
</view>
<view class="ul">
<view class="ul" @click="show = true">
<view class="name">
上限次数/
是否上架
</view>
<view class="sx">
<input v-model="day" type="text"/>/ 上限<input v-model="cishu" type="text"/>/
<view class="" style="color: rgb(128, 128, 128);">
{{shangjia}}
<u-icon name="arrow-right" color="rgb(128, 128, 128)" size="28"></u-icon>
</view>
</view>
<view class="ul" @click="shows = true">
<view class="name">
使用限制
</view>
<view class="" style="color: rgb(128, 128, 128);">
{{xianzhi}}
<u-icon name="arrow-right" color="rgb(128, 128, 128)" size="28"></u-icon>
</view>
</view>
<view class="ul" v-if="xianzhi != '不限制'">
<view class="name">
频率限制/
</view>
<input type="number" v-model="cishu" placeholder="请输入限制次数"/>
</view>
<view class="ul" style="border: none;">
<view class="name">
描述
</view>
<input type="text" v-model="miaoshu" placeholder="请输入描述"/>
</view>
</view>
<u-select v-model="show" :list="list" @confirm="confirm"></u-select>
<u-select v-model="shows" :list="lists" @confirm="confirms"></u-select>
<view class="anniu">
<view class="qx" @click="btnqx">
{{deltit}}
</view>
<view class="qd">
<view class="qd" @click="btnadd">
{{addtit}}
</view>
</view>
@ -78,14 +103,51 @@
zhekou:'',
shangxian:'',
day:'',
cishu:''
miaoshu:'',
cishu:'',
show: false,
list: [
{
value: '1',
label: '上架'
},
{
value: '2',
label: '下架'
}
],
shows: false,
lists: [
{
value: '1',
label: '不限制'
},
{
value: '2',
label: '每周'
},
{
value: '3',
label: '每30天'
}
],
shangjia:'上架',
shangjiaid:1,
xianzhi:'不限制',
xianzhiid:1,
storeId:'',
id:'',
huiyuanobj:{}
}
},
onLoad(option) {
this.storeId = option.storeId
if(option.id){
this.tit = '修改会员卡'
this.deltit = '删除'
this.addtit = '修改'
this.id = option.id
this.getxq()
}else{
this.tit = '新增会员卡'
this.deltit = '取消'
@ -93,27 +155,160 @@
}
},
methods: {
getQiniuToken() {
this.$u.get("/common/qiniu/uploadInfo").then((res) => {
//
getxq(){
this.$u.get(`/mch/vipLevel/${this.id}`).then((res) => {
if (res.code == 200) {
this.token = res.token
this.huiyuanobj = res.data
this.xianjia = res.data.price
this.qixian = res.data.time
this.miaoshu = res.data.description
this.xianzhiid = res.data.limitType
if(res.data.limitType == 1){
this.xianzhi = '不限制'
}else if(res.data.limitType == 2){
this.xianzhi = '每周'
}else if(res.data.limitType == 3){
this.xianzhi = '每30天'
}
this.cishu = res.data.limitCount
this.name = res.data.name
this.yuanjia = res.data.originalPrice
this.shangxian = res.data.limitTotal
this.mchId = res.data.mchId
this.zhekou = res.data.discount
this.shangjiaid = res.data.status
if(res.data.status == 1){
this.shangjia = '上架'
}else{
this.shangjia = '下架'
}
}
})
},
//
confirm(e){
this.shangjia = e[0].label
this.shangjiaid = e[0].value
},
//
confirms(e){
this.xianzhi = e[0].label
this.xianzhiid = e[0].value
},
//
btnqx(){
if(this.deltit == '取消'){
uni.navigateBack()
}else{
let that = this
uni.showModal({
title: '温馨提示',
content: '您是否要删除此会员卡?',
showCancel: true,
success: function(res) {
if (res.confirm) {
that.$u.delete(`/mch/vipLevel/${that.id}`).then(res =>{
if(res.code == 200){
uni.showToast({
title: '删除成功',
icon: 'success',
duration: 2000
})
setTimeout(()=>{
uni.navigateBack()
},1000)
}
})
} else if (res.cancel) {
console.log('取消')
}
}
})
}
},
//
btnadd(){
if(this.addtit == '新增'){
let re = /^\d*\.?\d+$/
if(!re.test(this.zhekou)){
uni.showToast({
title: '请输入整数或者小数',
icon: 'none',
duration: 2000
})
}else if(this.name.length > 7){
uni.showToast({
title: '名称过长,字符不能超过七位',
icon: 'none',
duration: 2000
})
}else if(this.addtit == '新增'){
let data = {
price:this.xianjia,
time:this.qixian,
description:this.miaoshu,
limitType:this.xianzhiid,
limitCount:this.cishu,
name:this.name,
originalPrice:this.yuanjia,
limitTotal:this.shangxian,
mchId:this.mchId,
discount:this.zhekou,
storeId:this.storeId,
status:this.shangjiaid
}
this.$u.post(`/mch/vipLevel`,data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '新增成功',
icon: 'success',
duration: 2000
})
setTimeout(()=>{
uni.navigateBack()
},1000)
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
}else{
let data = {
id:this.id,
price:this.xianjia,
time:this.qixian,
description:this.miaoshu,
limitType:this.xianzhiid,
limitCount:this.cishu,
name:this.name,
originalPrice:this.yuanjia,
limitTotal:this.shangxian,
mchId:this.mchId,
discount:this.zhekou,
storeId:this.storeId,
status:this.shangjiaid
}
this.$u.put(`/mch/vipLevel`,data).then((res) => {
if (res.code == 200) {
uni.showToast({
title: '修改成功',
icon: 'success',
duration: 2000
})
setTimeout(()=>{
uni.navigateBack()
},1000)
}else{
uni.showToast({
title: res.msg,
icon: 'none',
duration: 2000
})
}
})
}
}
}
@ -182,6 +377,12 @@
}
.name{
font-size: 28rpx;
display: flex;
align-items: center;
text{
color: red;
margin-right: 10rpx;
}
}
input{
height: 120rpx;

View File

@ -3,37 +3,58 @@
<u-navbar title="会员卡列表" :border-bottom="false" :background="bgc" title-color='#000' title-size='36'
height='45'></u-navbar>
<view class="cont">
<view class="card2" v-for="(item,index) in 3" :key="index">
<view class="card3" style="margin-top: 20rpx;" @click="btnxq">
<view class="" style="font-size: 34rpx;font-weight: 600;">
会员卡名称
<view class="card2" v-for="(item,index) in huiyuanlist" :key="index">
<view class="card3" style="margin-top: 20rpx;" @click="btnxq(item.id)">
<view class="" style="font-size: 34rpx;font-weight: 600;display: flex;justify-content: space-between;align-items: center;">
<view class="">
{{item.name == null ? '--' : item.name}}
</view>
<view style="font-weight: 400;font-size: 24rpx;color: green;" v-if="item.status == 1">
已上架
</view>
<view style="font-weight: 400;font-size: 24rpx;color: orange;" v-if="item.status == 2">
已下架
</view>
</view>
<view class="top">
<view class="tit1">
20天30次
时长{{item.time == null ? '--' :item.time}}天一共{{item.limitTotal == null ? '--' : item.limitTotal}}
</view>
<view class="tit2">
30<span style="font-size: 28rpx;"></span>
{{item.price == null ? '--' : item.price}}<span style="font-size: 28rpx;"></span>
</view>
</view>
<view class="middle">
<view class="tit3" >
8天最多用20次
<view class="tit3" v-if="item.limitType == 1">
没有限制
</view>
<view class="tit3" v-if="item.limitType == 2">
每周最多用{{item.limitCount == null ? '--' : item.limitCount}}
</view>
<view class="tit3" v-if="item.limitType == 3">
每30天最多用{{item.limitCount == null ? '--' : item.limitCount}}
</view>
<view class="tit4">
原价40
原价{{item.originalPrice == null ? '--' : item.originalPrice}}
</view>
</view>
<view class="bot">
<view class="bot_left">
<view class="txt3">
每次享折扣7
每次享折扣{{item.discount == null ? '--' : item.discount}}
</view>
</view>
</view>
<view class="miaoshu">
描述{{item.description == null ? '--' : item.description}}
</view>
</view>
</view>
<view style="width: 100%;text-align: center;margin-top: 30rpx;font-size: 32rpx;color: #ccc;">
没有更多会员卡啦...
</view>
</view>
<view class="anniu" @click="btnadd">
新增会员卡
</view>
@ -47,22 +68,37 @@
bgc: {
backgroundColor: '#fff'
},
storeId:'',
huiyuanlist:[]
}
},
onLoad(option) {
if(option.storeId){
this.storeId = option.storeId
}
},
onShow() {
this.getlist()
},
methods: {
//
getlist(){
this.$u.get(`/mch/vipLevel/list?pageNum=1&pageSize=999&storeId=${this.storeId}`).then((res) => {
if (res.code == 200) {
this.huiyuanlist = res.rows
}
})
},
//
btnadd(){
uni.navigateTo({
url:'/page_geren/addhuiyuan'
url:'/page_geren/addhuiyuan?storeId=' + this.storeId
})
},
//
btnxq(){
btnxq(id){
uni.navigateTo({
url:'/page_geren/addhuiyuan?id=' + 1
url:'/page_geren/addhuiyuan?id=' + id + '&storeId=' + this.storeId
})
}
}
@ -263,7 +299,7 @@
padding: 20rpx 40rpx;
width: 680rpx;
margin: auto;
height: 240rpx;
height: 270rpx;
background: #FFFFFF;
box-shadow: 0rpx 10rpx 64rpx 0rpx rgba(0,0,0,0.08);
border-radius: 20rpx 20rpx 20rpx 20rpx;
@ -301,6 +337,11 @@
text-decoration: line-through;
}
}
.miaoshu{
font-size: 24rpx;
color: #808080;
margin-top: 6rpx;
}
.bot{
margin-top: 10rpx;
display: flex;
@ -350,7 +391,7 @@
.card2{
margin-top: 16rpx;
width: 680rpx;
height: 250rpx;
height: 290rpx;
margin: auto;
}

View File

@ -1,70 +1,92 @@
<template>
<view class="page">
<view class="">
<u-navbar title="会员中心" :border-bottom="false" :background="background" title-color='#000' title-size='36'
<u-navbar :title="tit" :border-bottom="false" :background="background" title-color='#000' title-size='36'
back-icon-color='#000' height='45'></u-navbar>
</view>
<!-- <view class="vip_box" @click="btnkt(1)">
<view class="txt1">会员卡</view>
<view class="txt2" > 仅需10可享30天折扣权益
</view>
</view> -->
<view class="vip_box1">
<view class="txt1">会员卡</view>
<view class="txt2"> 会员卡25天后到期</view>
<view class="btn">
已开通
</view>
<view class="btn" v-if="false">
未开通
</view>
</view>
<view class="vipcard">
<view class="card_top">
<view class="name">
17795402553
</view>
</view>
<view class="card_bot">
<view class="txts">
开通立享超值会员特权
</view>
<view class="txts" v-if="flase">
会员卡23天后到期
</view>
<view class="topage" @click="topage">
购买记录 >
<view class="" style="height: 500rpx;overflow: scroll;" v-if="storeId != ''">
<view class="vip_box1" v-for="(item,index) in huiyuanlist" :key="index">
<view class="txt1">{{item.vipLevelName == null ? '--' : item.vipLevelName}}</view>
<view class="txt2">会员将在{{item.endTime.slice(0,10)}}后到期剩余次数/{{item.surplusCount}}</view>
<view class="btn">
已开通
</view>
</view>
</view>
<image class="mc" src="https://lxnapi.ccttiot.com/bike/img/static/uCIpavkHbM18al7gpxH8" mode=""></image>
<view class="" style="background-color: #fff;">
<view class="cont_box">
<view class="cont_li" v-for="(item,index) in 3" :key="index" @click="choose(item,index)" :class="chooseidx==index?'act1':''">
<view class="tit">
会员卡
<view class="" style="height: 1400rpx;overflow: scroll;" v-else>
<view class="vip_box1" v-for="(item,index) in huiyuanlist" :key="index">
<view class="txt1">{{item.vipLevelName == null ? '--' : item.vipLevelName}}</view>
<view class="txt2">会员将在{{item.endTime.slice(0,10)}}后到期剩余次数/{{item.surplusCount}}</view>
<view class="btn">
已开通
</view>
</view>
</view>
<view v-if="zanwuflag && storeId == '' " style="width: 100%;text-align: center;margin-top: 50rpx;font-size: 32rpx;color: #ccc;">
暂无更多会员卡...
</view>
<!-- -->
<view class="" v-if="typeflag">
<view class="vipcard">
<view class="card_top">
<view class="name">
购买会员卡
</view>
<view class="tips">
40天享7折
</view>
<view class="card_bot">
<view class="txts">
开通立享超值会员特权
</view>
<view class="money">
36.66
<view class="txts" v-if="flase">
会员卡23天后到期
</view>
<view class="tips" style="text-decoration: line-through; ">
30.66
</view>
<view class="tips">
立省6.00
<view class="topage" @click="topage">
购买记录 >
</view>
</view>
</view>
<view class="txt">
该卡只能用于付费享折扣
<view class="" style="background-color: #fff;">
<image class="mc" src="https://lxnapi.ccttiot.com/bike/img/static/uCIpavkHbM18al7gpxH8" mode=""></image>
<view class="cont_box">
<view class="cont_li" v-for="(item,index) in huiyuanzaishoulist" :key="index" @click="choose(item,index)" :class="chooseidx == index ? 'act1' : ''">
<view class="tit">
{{item.name == null ? '--' : item.name}}
</view>
<view class="tips">
{{item.time == null ? '--' :item.time}}天享{{item.discount == null ? '--' : item.discount}}
</view>
<view class="tips">
<view class="" v-if="item.limitType == 1">
没有限制
</view>
<view class="" v-if="item.limitType == 2">
每周最多用{{item.limitCount == null ? '--' : item.limitCount}}
</view>
<view class="" v-if="item.limitType == 3">
每30天最多用{{item.limitCount == null ? '--' : item.limitCount}}
</view>
</view>
<view class="tips">
总共可用{{item.limitTotal == null ? '--' : item.limitTotal}}/
</view>
<view class="money">
{{item.price == null ? '--' : item.price}}
</view>
<view class="tips" style="text-decoration: line-through; ">
{{item.originalPrice == null ? '--' : item.originalPrice}}
</view>
<view class="tips">
立省{{Number(item.originalPrice) - Number(item.price)}}
</view>
</view>
</view>
<view class="txt">
该卡只能用于付费享折扣
</view>
</view>
<view class="pay_btn" @click="btnzf">
{{price}}立即开通
</view>
</view>
<view class="pay_btn" @click="buy()">
38.88立即开通
</view>
</view>
@ -80,15 +102,69 @@ export default {
userinfo:{},
chooseInfo:{},
chooseidx:0,
typeflag:false,
tit:'会员中心',
huiyuanlist:[],
zanwuflag:false,
storeId:'',
huiyuanzaishoulist:[],
price:'',
channelId:'',
mchid:'',
zfobj:{}
}
},
onLoad() {
onLoad(option) {
if(option.storeId){
this.typeflag = true
this.storeId = option.storeId
this.tit = '购买会员'
this.getlist()
this.getzaishou()
}else{
this.typeflag = false
this.tit = '会员中心'
this.getlist()
}
this.getinfo()
},
onShow() {
},
methods: {
// id
getzaishou(){
this.$u.get(`/app/vipLevel/list?pageNum=1&pageSize=99&storeId=${this.storeId}`).then((res) => {
if (res.code == 200) {
this.huiyuanzaishoulist = res.rows
this.price = this.huiyuanzaishoulist[0].price
this.mchid = this.huiyuanzaishoulist[0].mchId
this.zfobj = this.huiyuanzaishoulist[0]
this.getzfqd()
}
})
},
//
getlist(){
this.$u.get(`/app/vip/list?pageNum=1&pageSize=999&orderByColumn=createTime&isAsc=desc&inValid=true`).then((res) => {
if (res.code == 200) {
this.huiyuanlist = res.rows
if(res.rows != ''){
this.zanwuflag = false
}else{
this.zanwuflag = true
}
}
})
},
//
getinfo(){
this.$u.get("/app/user/userInfo").then((res) => {
if (res.code == 200) {
this.userinfo = res.data
}
})
},
//
btnkt(num){
if(num == 1){ //
@ -101,6 +177,7 @@ export default {
})
}
},
//
topage(){
uni.navigateTo({
url:'/page_geren/vip_his'
@ -112,42 +189,60 @@ export default {
url:'/page_geren/buyCard'
})
},
//
choose(itm,idx){
this.chooseInfo=itm
this.chooseidx=idx
this.price = itm.price
this.zfobj = itm
this.chooseInfo = itm
this.chooseidx = idx
},
buy(){
//
getzfqd(){
this.$u.get(`/app/channel/recharge/enabledList?mchId=` + this.mchid).then(res =>{
if(res.code == 200){
this.channelId = res.data[0].channelId
}
})
},
//
btnzf(){
let data={
userId:this.userinfo.userId,
couponId:this.chooseInfo.couponId
amount:this.price,
channelId:this.channelId,
levelId: this.zfobj.id,
levelTime: this.zfobj.time,
levelPrice: this.price,
levelLimitType: this.zfobj.limitType,
levelLimitCount: this.zfobj.limitCount,
levelLimitTotal: this.zfobj.limitTotal,
levelDiscount: this.zfobj.discount,
levelStoreId: this.storeId
}
let that=this
that.$u.get("/appVerify/coupon/buy?",data ).then((res) => {
let that = this
that.$u.post("/app/vipOrder",data).then((res) => {
if (res.code == 200) {
uni.requestPayment({
provider: 'wxpay',
timeStamp: res.data.timeStamp,
nonceStr: res.data.nonceStr,
package: res.data.packageVal,
signType: res.data.signType,
paySign: res.data.paySign,
success(res) {
//
setTimeout(()=>{
},500)
timeStamp: res.data.payParams.timeStamp,
nonceStr: res.data.payParams.nonceStr,
package: res.data.payParams.packageVal,
signType: res.data.payParams.signType,
paySign: res.data.payParams.paySign,
success(ress) {
//
that.$u.put(`/app/vipOrder/refreshPayResult?orderNo=${res.data.orderNo}`).then(res =>{})
uni.navigateBack()
},
fail(err) {
//
uni.showToast({
title: '支付失败',
icon: 'none',
duration: 2000
});
})
}
});
})
}
});
})
},
}
}
@ -316,11 +411,10 @@ export default {
}
.vipcard {
padding: 36rpx ;
position: fixed;
top: 428rpx;
left: 38rpx;
width: 680rpx;
height: 244rpx;
margin: auto;
margin-top: 30rpx;
z-index: 1;
background-image: url('https://lxnapi.ccttiot.com/bike/img/static/u78FEc5oHRKzdvopQpZE');
background-size: cover;
@ -382,7 +476,7 @@ export default {
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 100rpx;
bottom: 30rpx;
}
.backimg {
position: fixed;
@ -393,29 +487,26 @@ export default {
z-index: -1; //
}
.txt{
margin: 56rpx 48rpx;
margin: 40rpx 48rpx;
font-weight: 400;
font-size: 24rpx;
color: #64B6A7;
padding-bottom: 50rpx;
padding-bottom: 20rpx;
box-sizing: border-box;
}
.cont_box {
display: flex;
flex-wrap: nowrap;
padding: 0 38rpx;
margin-top: 280rpx;
padding-top: 50rpx;
box-sizing: border-box;
z-index: 10;
overflow-x: auto; //
white-space: nowrap; //
-webkit-overflow-scrolling: touch; // 使
//
::-webkit-scrollbar {
display: none; // WebKit ( Safari Chrome)
height: 0; // 0
display: none;
height: 0;
}
scrollbar-width: none; // Firefox
@ -424,8 +515,8 @@ export default {
background: #FFFBF1;
}
.cont_li {
width: 218rpx;
height: 256rpx;
width: 230rpx;
height: 330rpx;
background: rgba(255, 224, 158, 0.15) #FFFFFF;
border-radius: 20rpx;
border: 1rpx solid rgba(176, 124, 30, 0.56);
@ -438,6 +529,7 @@ export default {
font-weight: 500;
font-size: 32rpx;
color: #B07C1E;
margin-top: 10rpx;
}
.money{
width: 100%;
@ -465,12 +557,11 @@ export default {
.mc {
position: fixed;
top: 611rpx;
left: 0rpx;
width: 750rpx;
height: 107.29rpx;
height: 40rpx;
z-index: 2;
position: relative;
top: -40rpx;
}
}
.page {

View File

@ -96,10 +96,10 @@
<image src="https://api.ccttiot.com/smartmeter/img/static/uAjP0V10qIEJn4ruztGa" mode="aspectFit"></image>
<view class="txt">代理入口</view>
</view>
<view style="margin-top:40rpx" class="botcard" @click="btnhuiyuan">
<!-- <view style="margin-top:40rpx" class="botcard" @click="btnhuiyuan">
<image src="https://api.ccttiot.com/smartmeter/img/static/uAjP0V10qIEJn4ruztGa" mode="aspectFit"></image>
<view class="txt">会员卡</view>
</view>
</view> -->
<view style="margin-top:40rpx" class="botcard" @click="btntuichu">
<image src="https://api.ccttiot.com/smartmeter/img/static/uSBN3RkeyeJLJev5Sk2F" mode="aspectFit"></image>
<view class="txt">退出登录</view>

View File

@ -61,9 +61,8 @@
<!-- 我的订单 -->
</view>
<view class="gr" @click="btngeren">
<!-- <image src="https://api.ccttiot.com/smartmeter/img/static/u8rWtdPtHabALkII23Zr" mode="aspectFit"
style="width: 96rpx;height:94rpx;"></image> -->
<u-icon name="account" color="#000" size="38"></u-icon>
<image src="https://api.ccttiot.com/smartmeter/img/static/u7l3mQi3FG22CShvxBHp" mode="aspectFit"
style="width: 96rpx;height:94rpx;"></image>
</view>
<view class="gr" @click="btnindex(3)">
<image src="https://api.ccttiot.com/smartmeter/img/static/uphoDfOVnT6VEyj6glfF" mode="aspectFit"