<template> <view class=""> <u-navbar title="设备控制" :border-bottom="false" :background="bgc" title-color='#262B37' back-icon-color="#262B37" title-size='36' height='50'></u-navbar> <view class="title"> 控制台 </view> <view class="shuom"> 请扫描设备上的二维码 </view> <view class="iptbox"> <view class="qrcode" @click="qrcode()"> <image src="https://api.ccttiot.com/smartmeter/img/static/uy7BNwAMIKwvstqFnRhs" mode="aspectFit"></image> </view> <input type="text" class="ips" v-model="storeId" placeholder="请扫描设备上的二维码" style="margin-left: 32rpx;" placeholder-class="my-placeholder" /> </view> <view class="machao"> MAC号:{{obj.mac == undefined ? '--' : obj.mac}} </view> <view class="machao"> 电压:{{obj.voltage == undefined ? '--' : obj.voltage}}V </view> <view class="machao"> 功率:{{obj.realTimePower == undefined ? '--' : obj.realTimePower}}KW </view> <view class="machao"> 电流:{{obj.electricity == undefined ? '--' : obj.electricity}}A </view> <view class="machao"> 网络:<text v-if="onlineStatus == '离线'" style="color: red;">离线</text> <text v-if="onlineStatus == '在线'" style="color: green;">在线</text> </view> <view class="machao"> 状态:<text v-if="powerStatus == '关闭'" style="color: red;">关闭</text> <text v-if="powerStatus == '开启'" style="color: green;">开启</text> </view> <view class="machao"> 最后在线时间:{{obj.lastOnlineTime == undefined ? '--' : obj.lastOnlineTime}} </view> <view class="list"> <view class="anniulist"> <view class="anniu" @click="btnkq"> 开启 </view> <view class="anniu" @click="btngb"> 关闭 </view> <view class="anniu" @click="btnsx"> 刷新 </view> </view> <view class="fanhui" @click="btnfh"> 返回 </view> </view> </view> </template> <script> export default { data() { return { bgc: { backgroundColor: "#F7FAFE", }, storeId: '', obj:{}, id:'', onlineStatus:'--', powerStatus:'--' } }, onLoad(options) { if(options.sn){ this.storeId = options.sn this.getsn() } }, // 分享到好友(会话) onShareAppMessage: function () { return { title: '创想物联', path: '/pages/shouye/index' } }, // 分享到朋友圈 onShareTimeline: function () { return { title: '创想物联', query: '', path: '/pages/shouye/index' } }, methods: { qrcode() { uni.scanCode({ onlyFromCamera: true, scanType: ['qrCode'], success: res => { function getQueryParam(url, paramName) { let regex = new RegExp(`[?&]${paramName}=([^&]*)`) let results = regex.exec(url); return results ? decodeURIComponent(results[1].replace(/\+/g, ' ')) : null } let sceneValue = res.result let decodedValue = decodeURIComponent(sceneValue) let id = getQueryParam(decodedValue, 's') this.storeId = id this.getsn() }, fail: err => { console.error('扫描失败:', err) uni.showToast({ title: '扫描失败', icon: 'none' }) } }) }, getsn(){ this.$u.get(`/app/device/${this.storeId}/bySn`).then(res => { if (res.code == 200) { this.obj = res.data this.id = res.data.deviceId if(res.data.onlineStatus == 0){ this.onlineStatus = '离线' }else if(res.data.onlineStatus == 1){ this.onlineStatus = '在线' } if(res.data.powerStatus == 0){ this.powerStatus = '关闭' }else if(res.data.powerStatus == 1){ this.powerStatus = '开启' } uni.showToast({ title: res.msg, icon: 'success', duration: 2000, }) uni.hideLoading() }else{ uni.showToast({ title: res.msg, icon: 'none', duration: 2000, }) } }) }, // 返回录入 btnfh(){ uni.navigateBack() }, // 开启 btnkq(){ uni.showLoading({ title: '设备开启中...' }) this.$u.put(`/app/device/admin/${this.id}/switch?open=true`).then((res) => { if (res.code == 200) { // setTimeout(()=>{ // this.btnsx() // },1000) uni.showToast({ title: '开启成功', icon: 'success', duration: 2000 }) this.powerStatus = '开启' } else { uni.showToast({ title: '开启失败', icon: 'none', duration: 2000 }) } }) }, // 关闭 btngb(){ uni.showLoading({ title: '设备关闭中...' }) this.$u.put(`/app/device/admin/${this.id}/switch?open=false`).then((res) => { if (res.code == 200) { // setTimeout(()=>{ // this.btnsx() // },1000) uni.showToast({ title: '关闭成功', icon: 'success', duration: 2000 }) this.powerStatus = '关闭' } else { uni.showToast({ title: '关闭失败', icon: 'none', duration: 2000 }) } }) }, // 刷新 btnsx(){ this.$u.get(`/app/device/v2/refreshIot?deviceNo=${this.storeId}`).then((res) => { if(res.code == 200){ this.getsn() uni.showToast({ title: '刷新成功', icon: 'success', duration: 2000 }) }else{ uni.showToast({ title: '刷新失败', icon: 'none', duration: 2000 }) } }) } } } </script> <style lang="less"> .list{ position: fixed; bottom: 50rpx; left: 50%; transform: translateX(-50%); .anniulist{ width: 658rpx; margin: auto; margin-top: 200rpx; text-align: left; font-size: 32rpx; display: flex; justify-content: space-between; .anniu{ width: 30%; height: 90rpx; border-radius: 20rpx; background-color: #8883f0; color: #fff; font-size: 32rpx; text-align: center; line-height: 90rpx; } } .fanhui{ width: 658rpx; height: 90rpx; border-radius: 20rpx; background-color: #8883f0; color: #fff; font-size: 32rpx; text-align: center; line-height: 90rpx; margin: auto; margin-top: 50rpx; } } .machao{ width: 658rpx; margin: auto; margin-top: 20rpx; text-align: left; font-size: 32rpx; } .title{ font-size: 70rpx; font-weight: 600; text-align: left; width: 658rpx; margin: auto; margin-top: 30rpx; } .shuom{ width: 658rpx; margin: auto; margin-top: 30rpx; text-align: left; font-size: 32rpx; } .iptbox { display: flex; align-items: center; flex-wrap: nowrap; padding: 22rpx; margin: 28rpx auto 0; width: 658rpx; height: 88rpx; background: #FFFFFF; box-shadow: 0rpx 0rpx 8rpx 0rpx rgba(0, 0, 0, 0.15); border-radius: 20rpx 20rpx 20rpx 20rpx; .qrcode { padding-right: 20rpx; border-right: 2rpx solid #D8D8D8; image { width: 54rpx; height: 54rpx; } } .ips { width: 630rpx; } image { width: 18rpx; height: 32rpx; } .my-placeholder { font-weight: 400; font-size: 32rpx; color: #808080; } } </style>