浇花器

This commit is contained in:
吴鹏 2026-02-25 18:01:42 +08:00
parent 1ba208ef93
commit d7704349bb
5 changed files with 1004 additions and 239 deletions

View File

@ -1,7 +1,7 @@
const install = (Vue, vm) => {
Vue.prototype.$u.http.setConfig({
// baseUrl: 'https://yxd.ccttiot.com/prod-api',
baseUrl: 'http://192.168.1.3:8081',
baseUrl: 'https://yxd.ccttiot.com/prod-api',
// baseUrl: 'http://192.168.1.4:8081',
loadingText: '努力加载中~',
loadingTime: 800,
// 设置自定义头部content-type

View File

@ -15,7 +15,7 @@
网关MAC号{{obj.mac == undefined ? '--' : obj.mac}} <text v-if="onlineStatus == '离线'" style="color: red;margin-left: 50rpx;">离线</text> <text v-if="onlineStatus == '在线'" style="color: green;margin-left: 50rpx;">在线</text>
</view> -->
<!-- 网关信息卡片 -->
<view class="device-info-card" v-if="obj.dataPoints">
<view class="device-info-card" v-if="obj.iotData">
<!-- 设备头部信息 -->
<view class="device-header">
<view class="device-header-info" style="display: flex;justify-content: space-between;align-items: center;">
@ -39,12 +39,12 @@
<view class="info-grid">
<view class="info-item">
<text class="info-label">VER</text>
<text class="info-value">{{obj.dataPoints && obj.dataPoints.VER ? obj.dataPoints.VER.value : '--'}}</text>
<text class="info-value">{{obj.iotData && obj.iotData.VER ? obj.iotData.VER.value : '--'}}</text>
</view>
<view class="info-item" style="position: relative;">
<text class="info-label">CSQ</text>
<view style="display: flex;align-items: center;gap: 10rpx;">
<text class="info-value" style="flex: 1;">{{obj.dataPoints && obj.dataPoints.CSQ ? obj.dataPoints.CSQ.value : '--'}}</text>
<text class="info-value" style="flex: 1;">{{obj.iotData && obj.iotData.CSQ ? obj.iotData.CSQ.value : '--'}}</text>
<view class="update-btn" @click="updateCSQ">
<text class="update-icon"></text>
<text class="update-text">更新</text>
@ -74,13 +74,13 @@
<view class="status-badge" :class="{'status-online': macobj.onlineStatus == '1', 'status-offline': macobj.onlineStatus == '0'}">
{{macobj.onlineStatus == '1' ? '在线' : '离线'}}
</view>
<text class="device-version" v-if="macobj.version">版本: {{macobj.dataPoints.ver.value == null ? '--' : macobj.dataPoints.ver.value}}</text>
<text class="device-version" v-if="macobj.dataPoints.RSSI">信号:{{macobj.dataPoints.RSSI.value == null ? '--' : macobj.dataPoints.RSSI.value}}</text>
<text class="device-version" v-if="macobj.version">版本: {{macobj.iotData.ver.value == null ? '--' : macobj.iotData.ver.value}}</text>
<text class="device-version" v-if="macobj.iotData.RSSI">信号:{{macobj.iotData.RSSI.value == null ? '--' : macobj.iotData.RSSI.value}}</text>
<view class="signal-strength" v-if="macobj.bluetoothDbm !== null && macobj.bluetoothDbm !== undefined">
<view class="signal-bars">
<view class="signal-bar" :class="{'active': getSignalLevel(macobj.bluetoothDbm) >= 1}"></view>
<view class="signal-bar" :class="{'active': getSignalLevel(macobj.bluetoothDbm) >= 2}"></view>
<view class="signal-bar" :class="{'active': getSignalLevel(macobj.bluetoothDbm) >= 3}"></view>
<view class="signal-bar" :class="{'active': getSignalLevel(macobj.bluetoothDbm) >= 3}"></view>
<view class="signal-bar" :class="{'active': getSignalLevel(macobj.bluetoothDbm) >= 4}"></view>
</view>
<text class="signal-value">{{macobj.bluetoothDbm}}dBm</text>
@ -88,7 +88,7 @@
</view>
</view>
</view>
<text class="device-version" style="margin-bottom: 20rpx;display: block;" v-if="macobj.dataPoints.RSSI">更新时间: {{macobj.dataPoints.RSSI.at == null ? '--' : macobj.dataPoints.RSSI.at}}</text>
<text class="device-version" style="margin-bottom: 20rpx;display: block;" v-if="macobj.iotData.RSSI">更新时间: {{macobj.iotData.RSSI.at == null ? '--' : macobj.iotData.RSSI.at}}</text>
<!-- 状态信息 -->
<view class="info-section" style="border-top: 1rpx solid #f0f0f0;padding-top: 20rpx;">
<view class="section-title">状态信息</view>
@ -147,7 +147,8 @@
xshu:'1',
x:'',
macsb:'',
macobj:{}
macobj:{},
btnflag:true
}
},
onLoad(options) {
@ -198,17 +199,17 @@
}
},
getver() {
if (!this.macobj || !this.macobj.dataPoints) {
if (!this.macobj || !this.macobj.iotData) {
return '--';
}
return this.macobj.dataPoints.ver
return this.macobj.iotData.ver
},
// dataPoints.d
// iotData.d
getDeviceStatus() {
if (!this.macobj || !this.macobj.dataPoints) {
if (!this.macobj || !this.macobj.iotData) {
return '--';
}
const d = this.macobj.dataPoints.water_sw.value;
const d = this.macobj.iotData.water_sw.value;
if (d === 0 || d === '0') {
return '关闭';
} else if (d === 1 || d === '1') {
@ -281,7 +282,7 @@
},
// sn
getsn() {
this.$u.get(`/device/device/getDetail?sn=${this.storeId}`).then(res => {
this.$u.get(`/device/device/getDetail/specGateway?sn=${this.storeId}`).then(res => {
if (res.code == 200) {
if(res.data == null){
this.clearInterval()
@ -360,7 +361,7 @@
this.$u.get(`/system/config/configKey/device.gateway.test.mac`).then(res =>{
if(res.code == 200){
this.macsb = res.data
this.$u.get(`/device/device/getDetail?mac=${this.macsb}&gatewayMacList=${this.obj.mac}`).then(resp =>{
this.$u.get(`/device/device/getDetail/specGateway?mac=${this.macsb}&gatewayMacList=${this.obj.mac}`).then(resp =>{
if(resp.code == 200){
this.getsn()
this.id = resp.data.deviceId
@ -396,7 +397,7 @@
this.$u.get(`/system/config/configKey/device.gateway.test.mac`).then(res =>{
if(res.code == 200){
this.macsb = res.data
this.$u.get(`/device/device/getDetail?mac=${this.macsb}&gatewayMacList=${this.obj.mac}`).then(resp =>{
this.$u.get(`/device/device/getDetail/specGateway?mac=${this.macsb}&gatewayMacList=${this.obj.mac}`).then(resp =>{
if(resp.code == 200){
this.id = resp.data.deviceId
this.macobj = resp.data
@ -420,6 +421,11 @@
//
btngb() {
if(this.btnflag == false){
return
}
this.btnflag = false
uni.showLoading({
title: '关闭中...',
mask: true,
@ -439,6 +445,9 @@
icon: 'success',
duration: 2000
})
setTimeout(()=>{
this.btnflag = true
},3000)
} else {
uni.hideLoading()
uni.showToast({
@ -446,11 +455,18 @@
icon: 'none',
duration: 2000
})
setTimeout(()=>{
this.btnflag = true
},1000)
}
})
},
//
btngbkq() {
if(this.btnflag == false){
return
}
this.btnflag = false
uni.showLoading({
title: '开启中...',
mask: true,
@ -471,6 +487,9 @@
icon: 'success',
duration: 2000
})
setTimeout(()=>{
this.btnflag = true
},1000)
} else {
uni.hideLoading()
uni.showToast({
@ -478,12 +497,15 @@
icon: 'none',
duration: 2000
})
setTimeout(()=>{
this.btnflag = true
},3000)
}
})
},
//
btnsx() {
this.$u.get(`/device/device/getDetail?mac=${this.macsb}&gatewayMacList=${this.obj.mac}`).then(resp =>{
this.$u.get(`/device/device/getDetail/specGateway?mac=${this.macsb}&gatewayMacList=${this.obj.mac}`).then(resp =>{
if(resp.code == 200){
this.id = resp.data.deviceId
this.macobj = resp.data

View File

@ -26,13 +26,13 @@
<view class="wifi" style="margin-top: 24rpx;display: block;" @click="gjconfirm" >
<view class="" style="display: flex;justify-content: space-between;align-items: center;">
<view class="">固件更新</view>
<view class="flex" style="color: red;font-size: 26rpx;" v-if=" ver != null && ver != version">
<view class="flex" style="color: red;font-size: 26rpx;" v-if=" ver != null && ver.slice(0,4) != version">
<text style="display: inline-block;width: 10rpx;height: 10rpx;border-radius: 50%;background-color: red;margin-right: 10rpx;"></text>点击更新
</view>
</view>
<view class="" style="font-size: 24rpx;display: flex;justify-content: space-between;">
<view class="">
当前版本{{ver == null ? '请连接蓝牙获取当前版本' : ver}}
当前版本{{ ver == null ? '请连接蓝牙获取当前版本' : (ver.length > 4 ? ver.slice(0,4) : ver) }}
</view>
<view class="">
最新版本{{version == null ? '' : version}}
@ -277,6 +277,9 @@
if (res.code == 200) {
this.pre = res.data.pre
this.version = res.data.version
if(this.ver.length > 4){
this.ver = this.ver.slice(0,4)
}
console.log(this.ver,'当前蓝牙版本号',this.version,'最新蓝牙版本号');
this.file = res.data.asDeviceVersion.file
console.log(this.file)
@ -405,6 +408,9 @@
duration: 2000
})
this.ver = this.version
if(this.ver.length > 4){
this.ver = this.ver.slice(0,4)
}
setTimeout(()=>{
this.shengjiflag = false
uni.reLaunch({
@ -486,10 +492,10 @@
console.log(showObject,'showObjectshowObject');
// this.ver
const verNumber = parseInt(this.ver.replace(/\D/g, '')) || 0;
if(verNumber >= 290){
this.xinpin = showObject.showArray[showObject.showArray.length - 1]
}else{
if(showObject.showArray.length > 9){
this.xinpin = showObject.showArray[showObject.showArray.length - 2]
}else{
this.xinpin = showObject.showArray[showObject.showArray.length - 1]
}
}
break;

View File

@ -2,12 +2,30 @@
<view class="page">
<u-navbar title="详情" :border-bottom="false" :background="bgc" title-color='#262B37' title-size='38'
height='40'></u-navbar>
<!-- 左上角信号和版本信息 -->
<view class="top-info">
<view class="info-item" style="display: flex;align-items: center;font-size: 26rpx;color: #737070;margin-top: 20rpx;margin-left: 20rpx;">
<view class="info-icon-wrapper signal-icon">
<text class="iconfont icon-xinhao">信号</text>
</view>
<text class="info-value" v-if="wgxq.iotData.CSQ">{{ wgxq.iotData.CSQ.value }}</text>
<text class="info-value" v-else>--</text>
</view>
<view class="info-item" style="display: flex;align-items: center;font-size: 26rpx;color: #737070;margin-top: 10rpx;margin-left: 20rpx;">
<view class="info-icon-wrapper version-icon">
<text class="iconfont icon-banben">版本</text>
</view>
<text class="info-value">{{ getVersion() || '--' }}</text>
</view>
</view>
<view class="wangguan">
<!-- 网关设备信息 -->
<view class="wgshebei">
<image :src="wgxq.picture || wgxq.modelPicture || ''" mode="aspectFill"></image>
<view class="wgname">
<text>{{ wgxq.deviceName || '未命名设备' }}</text>
<text>{{ gatewayName || '网关' }}</text>
<image class="edit-icon" src="https://api.ccttiot.com/smartmeter/img/static/uL6FHnMGWFrdptmDokDI" mode="aspectFit" @click="showEditNameDialog"></image>
<view class="status-badge" :class="wgxq.onlineStatus == 1 ? 'status-online' : 'status-offline'">
{{ wgxq.onlineStatus == 1 ? '在线' : '离线' }}
</view>
@ -57,7 +75,16 @@
<text>{{ item.deviceName || '未命名设备' }}</text>
<text style="color: #808080;font-size: 24rpx;">{{ item.modelName || '--' }}</text>
</view>
<view class="item-status" :class="item.onlineStatus == 1 ? 'status-online-dot' : 'status-offline-dot'"></view>
<view class="signal-container">
<!-- 在线显示信号强度格数 -->
<view v-if="item.onlineStatus == 1" class="signal-bars">
<view class="signal-bar" v-for="(bar, barIndex) in 4" :key="barIndex"
:class="barIndex < getSignalLevel(item) ? 'bar-active' : 'bar-inactive'">
</view>
</view>
<!-- 离线显示灰色圆点 -->
<view v-else class="item-status status-offline-dot"></view>
</view>
</view>
<view class="empty-device" v-if="wglist.length === 0">
<text>暂无设备</text>
@ -67,6 +94,19 @@
<view class="saoma" @click="btnjb">
解绑
</view>
<!-- 修改网关名称弹窗 -->
<view class="edit-name-modal" v-if="showEditName" @click.stop>
<view class="modal-mask" @click="closeEditNameDialog"></view>
<view class="modal-content">
<view class="modal-title">修改网关名称</view>
<input class="modal-input" v-model="editNameValue" placeholder="请输入网关名称" maxlength="20" />
<view class="modal-buttons">
<view class="modal-btn cancel-btn" @click="closeEditNameDialog">取消</view>
<view class="modal-btn confirm-btn" @click="confirmEditName">确定</view>
</view>
</view>
</view>
</view>
</template>
@ -80,6 +120,9 @@
id:'',
wgxq:{},
wglist:[],
gatewayName: '网关',
showEditName: false,
editNameValue: '',
}
},
onLoad(e) {
@ -125,18 +168,117 @@
this.$u.get(`/app/device/getDetail?deviceId=${this.id}`).then((res) => {
if (res.code == 200) {
this.wgxq = res.data
// 使""
this.gatewayName = res.data.deviceName && res.data.deviceName !== '未命名设备' ? res.data.deviceName : '网关'
console.log(11);
this.getlist()
}
})
},
// RSSI
getRSSIValue() {
if (this.wgxq.iotData && this.wgxq.iotData.RSSI && this.wgxq.iotData.RSSI.value !== undefined) {
return this.wgxq.iotData.RSSI.value
}
return null
},
//
getVersion() {
if (this.wgxq.version) {
return this.wgxq.version
}
if (this.wgxq.iotData && this.wgxq.iotData.version) {
return this.wgxq.iotData.version
}
return null
},
// RSSI
getSignalLevel(item) {
// RSSI
let rssiValue = null
if (item.rssi) {
rssiValue = parseFloat(item.rssi)
} else if (item.rssi !== undefined) {
rssiValue = parseFloat(item.rssi)
}
if (rssiValue === null || isNaN(rssiValue)) {
return 0
}
// RSSI
// -6004
if (rssiValue >= -60 && rssiValue <= 0) {
return 4
}
// -60-803-60-80
if (rssiValue > -80 && rssiValue < -60) {
return 3
}
// -80-1002-80-100
if (rssiValue >= -100 && rssiValue <= -80) {
return 2
}
// -1001
if (rssiValue < -100) {
return 1
}
return 0
},
//
showEditNameDialog() {
this.editNameValue = this.gatewayName
this.showEditName = true
},
//
closeEditNameDialog() {
this.showEditName = false
this.editNameValue = ''
},
//
confirmEditName() {
if (!this.editNameValue.trim()) {
uni.showToast({
title: '请输入网关名称',
icon: 'none',
duration: 2000
})
return
}
this.$u.put(`/app/editDeviceName?deviceId=${this.id}&deviceName=${this.editNameValue.trim()}`).then(res => {
if (res.code == 200) {
this.gatewayName = this.editNameValue.trim()
this.wgxq.deviceName = this.editNameValue.trim()
this.closeEditNameDialog()
uni.showToast({
title: '修改成功',
icon: 'success',
duration: 2000
})
} else {
uni.showToast({
title: res.msg || '修改失败',
icon: 'none',
duration: 2000
})
}
}).catch(err => {
uni.showToast({
title: '修改失败',
icon: 'none',
duration: 2000
})
})
},
//
getlist(){
console.log(111);
let data = {
gatewayMacList: [this.wgxq.mac]
}
this.$u.post(`/app/device/gateway/list`, data).then((res) => {
// let data = {
// mac:
// }
this.$u.get(`/app/device/gateway/gateWaySubDeviceList?gatewayMac=${this.wgxq.mac}&pageNum=1&pageSize=99`).then((res) => {
if (res.code == 200) {
this.wglist = res.rows
}
@ -147,37 +289,154 @@
</script>
<style lang="scss">
//
.edit-name-modal{
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
display: flex;
align-items: center;
justify-content: center;
.modal-mask{
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.6);
backdrop-filter: blur(4rpx);
}
.modal-content{
position: relative;
width: 640rpx;
background: #FFFFFF;
border-radius: 32rpx;
padding: 50rpx 40rpx 40rpx;
box-sizing: border-box;
box-shadow: 0 10rpx 40rpx rgba(0, 0, 0, 0.15);
animation: slideUp 0.3s ease;
@keyframes slideUp {
from {
transform: translateY(50rpx);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
.modal-title{
font-size: 36rpx;
font-weight: 600;
color: #262B37;
margin-bottom: 40rpx;
text-align: center;
letter-spacing: 1rpx;
}
.modal-input{
width: 100%;
height: 88rpx;
border: 2rpx solid #E8E8E8;
border-radius: 16rpx;
padding: 0 24rpx;
box-sizing: border-box;
font-size: 30rpx;
color: #262B37;
margin-bottom: 40rpx;
background: #F8F8F8;
transition: all 0.3s;
&:focus{
border-color: #48893B;
background: #FFFFFF;
}
}
.modal-buttons{
display: flex;
justify-content: space-between;
gap: 20rpx;
.modal-btn{
flex: 1;
height: 88rpx;
line-height: 88rpx;
text-align: center;
border-radius: 16rpx;
font-size: 30rpx;
font-weight: 500;
transition: all 0.3s;
&.cancel-btn{
background: #F5F5F5;
color: #666666;
&:active{
background: #E8E8E8;
transform: scale(0.98);
}
}
&.confirm-btn{
background: linear-gradient(135deg, #48893B 0%, #5BA849 100%);
color: #FFFFFF;
box-shadow: 0 4rpx 12rpx rgba(72, 137, 59, 0.3);
&:active{
transform: scale(0.98);
box-shadow: 0 2rpx 8rpx rgba(72, 137, 59, 0.3);
}
}
}
}
}
}
.saoma{
width: 680rpx;
height: 90rpx;
background-color: #48893B;
height: 96rpx;
background: linear-gradient(135deg, #48893B 0%, #5BA849 100%);
color: #FFFFFF;
font-size: 32rpx;
font-weight: 600;
text-align: center;
line-height: 90rpx;
border-radius: 30rpx;
line-height: 96rpx;
border-radius: 48rpx;
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 30rpx;
bottom: 40rpx;
box-shadow: 0 8rpx 24rpx rgba(72, 137, 59, 0.35);
transition: all 0.3s;
&:active{
transform: translateX(-50%) scale(0.98);
box-shadow: 0 4rpx 16rpx rgba(72, 137, 59, 0.3);
}
}
.wangguan{
padding: 0 30rpx;
box-sizing: border-box;
.wglist{
width: 100%;
min-height: 200rpx;
max-height: 740rpx;
.wglist{
width: 100%;
min-height: 200rpx;
max-height: 670rpx;
overflow: scroll;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 38rpx 0rpx rgba(128,128,128,0.15);
margin: auto;
margin-top: 20rpx;
border-radius: 24rpx;
padding: 32rpx 40rpx;
box-sizing: border-box;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.08);
margin: auto;
margin-top: 20rpx;
border-radius: 24rpx;
padding: 32rpx 40rpx;
box-sizing: border-box;
.wgtit{
font-size: 32rpx;
@ -186,60 +445,84 @@
margin-bottom: 20rpx;
}
.wgitem{
margin-top: 30rpx;
.wgitem{
margin-top: 30rpx;
max-height: 730rpx;
overflow: scroll;
display: flex;
justify-content: space-between;
align-items: center;
padding-bottom: 30rpx;
border-bottom: 1rpx solid #F0F0F0;
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx;
padding-bottom: 30rpx;
border-bottom: 1rpx solid #F0F0F0;
border-radius: 16rpx;
transition: all 0.3s;
&:hover{
background: #FAFAFA;
}
&:last-child{
border-bottom: none;
}
image{
width: 88rpx;
height: 88rpx;
border-radius: 16rpx;
background: #F5F5F5;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.06);
}
.cen{
flex: 1;
margin-left: 24rpx;
text{
display: block;
font-weight: 600;
font-size: 30rpx;
color: #262B37;
line-height: 1.4;
&:last-child{
margin-top: 10rpx;
font-weight: 400;
font-size: 24rpx;
color: #808080;
}
}
}
&:last-child{
border-bottom: none;
}
image{
width: 78rpx;
height: 84rpx;
border-radius: 12rpx;
background: #F5F5F5;
}
.cen{
flex: 1;
margin-left: 24rpx;
text{
display: block;
font-weight: 600;
font-size: 28rpx;
color: #3D3D3D;
&:last-child{
margin-top: 8rpx;
font-weight: 400;
font-size: 24rpx;
color: #808080;
}
}
}
.item-status{
width: 16rpx;
height: 16rpx;
border-radius: 50%;
&.status-online-dot{
background: #15C55D;
box-shadow: 0 0 8rpx rgba(21, 197, 93, 0.4);
}
&.status-offline-dot{
background: #999999;
}
}
.item-status{
width: 16rpx;
height: 16rpx;
border-radius: 50%;
&.status-online-dot{
background: #15C55D;
box-shadow: 0 0 8rpx rgba(21, 197, 93, 0.4);
}
&.status-offline-dot{
background: #999999;
}
}
.signal-container{
display: flex;
align-items: center;
justify-content: flex-end;
min-width: 60rpx;
.item-status{
width: 18rpx;
height: 18rpx;
border-radius: 50%;
background: #CCCCCC;
box-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);
}
}
}
.empty-device{
@ -250,34 +533,36 @@
}
}
.wgtime{
width: 100%;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 38rpx 0rpx rgba(128,128,128,0.15);
margin-top: 20rpx;
border-radius: 24rpx;
padding: 30rpx 40rpx;
box-sizing: border-box;
.time-item{
margin-bottom: 20rpx;
&:last-child{
margin-bottom: 0;
}
.time-label{
font-size: 28rpx;
color: #808080;
}
.time-value{
font-size: 28rpx;
color: #3D3D3D;
margin-left: 10rpx;
}
}
}
.wgtime{
width: 100%;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.08);
margin-top: 20rpx;
border-radius: 24rpx;
padding: 32rpx 40rpx;
box-sizing: border-box;
.time-item{
margin-bottom: 20rpx;
&:last-child{
margin-bottom: 0;
}
.time-label{
font-size: 28rpx;
color: #808080;
font-weight: 500;
}
.time-value{
font-size: 28rpx;
color: #262B37;
margin-left: 10rpx;
font-weight: 500;
}
}
}
.wgcaozuo{
width: 100%;
@ -343,31 +628,31 @@
}
}
.wgsnmac{
width: 100%;
height: 92rpx;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 38rpx 0rpx rgba(128,128,128,0.15);
border-radius: 24rpx;
display: flex;
justify-content: space-between;
// padding: 0 30rpx;
box-sizing: border-box;
padding-top: 16rpx;
.ltsn{
border-right: 1px solid #D8D8D8;
}
view{
height: 60rpx;
width: 50%;
text-align: center;
line-height: 60rpx;
font-size: 28rpx;
color: #808080;
}
}
.wgsnmac{
width: 100%;
height: 100rpx;
background: #FFFFFF;
box-shadow: 0rpx 4rpx 24rpx 0rpx rgba(0, 0, 0, 0.08);
border-radius: 24rpx;
display: flex;
justify-content: space-between;
box-sizing: border-box;
padding: 20rpx 0;
.ltsn{
border-right: 1px solid #E8E8E8;
}
view{
height: 60rpx;
width: 50%;
text-align: center;
line-height: 60rpx;
font-size: 28rpx;
color: #666666;
font-weight: 500;
}
}
.wgshebei{
width: 100%;
@ -382,37 +667,152 @@
background: #F5F5F5;
}
.wgname{
font-weight: 600;
font-size: 36rpx;
color: #3D3D3D;
display: flex;
align-items: center;
justify-content: center;
margin-top: 30rpx;
flex-wrap: wrap;
text{
margin-right: 16rpx;
}
.status-badge{
display: inline-block;
padding: 6rpx 20rpx;
border-radius: 20rpx;
font-size: 24rpx;
font-weight: 500;
&.status-online{
background: rgba(21, 197, 93, 0.1);
color: #15C55D;
}
&.status-offline{
background: rgba(153, 153, 153, 0.1);
color: #999999;
}
}
.wgname{
font-weight: 600;
font-size: 36rpx;
color: #3D3D3D;
display: flex;
align-items: center;
justify-content: center;
margin-top: 30rpx;
flex-wrap: wrap;
gap: 12rpx;
text{
margin-right: 0;
}
.edit-icon{
width: 36rpx;
height: 36rpx;
padding: 8rpx;
border-radius: 8rpx;
transition: all 0.3s;
&:active{
background: rgba(0, 0, 0, 0.05);
transform: scale(0.95);
}
}
.status-badge{
display: inline-block;
padding: 8rpx 24rpx;
border-radius: 24rpx;
font-size: 24rpx;
font-weight: 500;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.08);
&.status-online{
background: linear-gradient(135deg, rgba(21, 197, 93, 0.15) 0%, rgba(21, 197, 93, 0.1) 100%);
color: #15C55D;
border: 1rpx solid rgba(21, 197, 93, 0.2);
}
&.status-offline{
background: rgba(153, 153, 153, 0.1);
color: #999999;
border: 1rpx solid rgba(153, 153, 153, 0.2);
}
}
}
}
//
.top-info{
position: fixed;
top: 20rpx;
left: 30rpx;
z-index: 999;
display: flex;
flex-direction: column;
gap: 16rpx;
padding: 20rpx 24rpx;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10rpx);
border-radius: 16rpx;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08);
.info-item{
display: flex;
align-items: center;
gap: 12rpx;
.info-icon-wrapper{
width: 44rpx;
height: 44rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 28rpx;
&.signal-icon{
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
box-shadow: 0 2rpx 8rpx rgba(102, 126, 234, 0.3);
}
&.version-icon{
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
box-shadow: 0 2rpx 8rpx rgba(245, 87, 108, 0.3);
}
.iconfont{
font-size: 28rpx;
line-height: 1;
}
}
.info-value{
color: #262B37;
font-weight: 600;
font-size: 26rpx;
letter-spacing: 0.5rpx;
}
}
}
//
.signal-container{
.signal-bars{
display: flex;
align-items: flex-end;
gap: 5rpx;
height: 36rpx;
padding: 4rpx 0;
.signal-bar{
width: 6rpx;
border-radius: 5rpx 5rpx 2rpx 2rpx;
transition: all 0.3s ease;
&:nth-child(1){
height: 10rpx;
}
&:nth-child(2){
height: 16rpx;
}
&:nth-child(3){
height: 20rpx;
}
&:nth-child(4){
height: 24rpx;
}
&.bar-active{
background: linear-gradient(180deg, #15C55D 0%, #0FA855 100%);
box-shadow: 0 2rpx 6rpx rgba(21, 197, 93, 0.4);
}
&.bar-inactive{
background: linear-gradient(180deg, #E8E8E8 0%, #D0D0D0 100%);
}
}
}
}
}

View File

@ -69,15 +69,21 @@
<image :src="imgpic" mode="aspectFit"></image>
<view class="xinghao">
<view class="one">型号{{user.model == undefined ? '--' : user.model}}</view>
<view class="">MAC{{user.mac == undefined ? '--' : user.mac}}</view>
<view class="">MAC{{user.mac == undefined ? '--' : user.mac}}</view>
</view>
<view class="" style="display: flex;align-items: center;margin-left: 20rpx;">
<view class="signal-bars" style="display: flex;align-items: flex-end;">
<view class="signal-bar" :class="{'active': signalStrength >= 1}" style="width: 6rpx;height: 10rpx;background-color: #E0E0E0;margin-right: 3rpx;border-radius: 1rpx;"></view>
<view class="signal-bar" :class="{'active': signalStrength >= 2}" style="width: 6rpx;height: 14rpx;background-color: #E0E0E0;margin-right: 3rpx;border-radius: 1rpx;"></view>
<view class="signal-bar" :class="{'active': signalStrength >= 3}" style="width: 6rpx;height: 18rpx;background-color: #E0E0E0;margin-right: 3rpx;border-radius: 1rpx;"></view>
<view class="signal-bar" :class="{'active': signalStrength >= 4}" style="width: 6rpx;height: 22rpx;background-color: #E0E0E0;border-radius: 1rpx;"></view>
</view>
</view>
</view>
<view class="" style="font-weight: 400;font-size: 26rpx;margin-left: 20rpx;display: flex;align-items: center;">
<image style="width: 44rpx;height: 44rpx;" src="https://api.ccttiot.com/smartmeter/img/static/u4yJdBWPMHqgqYjZkQKM" mode=""></image>
<image style="width: 44rpx;height: 44rpx;transform: rotate(90deg)" src="https://api.ccttiot.com/smartmeter/img/static/u4yJdBWPMHqgqYjZkQKM" mode=""></image>
<view class="">
<view class="" style="font-size: 28rpx;color: #999999;">
剩余电量
</view>
<view class="" style="font-size: 24rpx;color: #48893B;">
{{sydl}}%
</view>
@ -394,9 +400,9 @@
<image src="https://api.ccttiot.com/smartmeter/img/static/u7NwkNOoQYYsvHVMkDlu" mode=""></image>
<view class="yushui">
雨水感应
<u-switch v-if="yschecked" v-model="one" @change="btnyushui" inactive-color="#eee"
<u-switch v-if="yschecked" v-model="one" @change="btnyushui" :disabled="isWateringInProgress" inactive-color="#eee"
active-color="#eee" size="40"></u-switch>
<u-switch v-else v-model="ones" @change="btnyushuis" active-color="#7FAD76"
<u-switch v-else v-model="ones" @change="btnyushuis" :disabled="isWateringInProgress" active-color="#7FAD76"
inactive-color="#7FAD76" size="40"></u-switch>
</view>
</view>
@ -424,7 +430,7 @@
<!-- 手动浇水 -->
<view class="dingshi_he">
<view class="naoz" style="font-weight: 400;font-size: 26rpx;align-items: center;">
<image style="width: 170rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uVYXvo4F6U6fJ5fP27BT" mode="aspectFill"></image>{{ sdminutes ? sdminutes + ':' : '' }}{{ sdseconds ? sdseconds : '' }}
<image style="width: 170rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uVYXvo4F6U6fJ5fP27BT" mode="aspectFill"></image>{{ sdminutes ? sdminutes + ':' : '' }}{{ sdseconds ? sdseconds : '' }}<text v-if="showWateringCountdown && wateringCountdownSeconds" style="margin-left: 10rpx;color: #7FAD76;font-size: 24rpx;">{{ wateringCountdownMinutes ? wateringCountdownMinutes + ':' : '' }}{{ wateringCountdownSeconds }}</text>
</view>
<view class="dstime">
手动浇水 <u-switch v-if="kgflag" v-model="jskeds" @change="btngb" inactive-color="#eee" active-color="#eee" size="40"></u-switch>
@ -464,6 +470,9 @@
<view class="sbist_val" v-for="(item,index) in devicelist" :key="index" @click="btnactive(item.deviceId,index)">
<view class="lt">
<view class="">{{item.deviceName}}</view>
<view class="" style="font-weight: 400;font-size: 26rpx;color: #989090;margin-top: 10rpx;">
{{item.mac}}
</view>
</view>
<view class="rt">
<image :src="item.modelPicture" mode="aspectFit"></image>
@ -535,6 +544,13 @@
data() {
return {
timeflag:false,
//
isManualWaterRequesting: false,
// /3
isManualWaterSwitchRequesting: false,
manualWaterBtCooldownUntil: 0,
// 0
wateringCountdownResetTimer: null,
//
lastUploadTs: 0,
//
@ -587,12 +603,16 @@
xctimesj: '',
sdminutes: '',
sdseconds: '',
wateringCountdownMinutes: '', // showArray[4]
wateringCountdownSeconds: '', // showArray[4]
showWateringCountdown: false, // 1
datalist: '',
devicelist:[],
shebid:'',
user:{},
lastChar:'',
timer:'',
wateringCountdownTimer: null, //
bjflag: '',
userobj:{},
devicesarr:[],
@ -622,6 +642,7 @@
errorModalData: {}, //
dianya:0,
sydl:'--',
signalStrength: 0, // 1-4
zaixianobj:{},
modelId:'',
jsobj:{},
@ -632,6 +653,14 @@
onlineStatus:''
}
},
computed: {
//
isWateringInProgress() {
const manualRunning = !!(this.sdminutes || this.sdseconds)
const deviceCountdownRunning = !!(this.showWateringCountdown && (this.wateringCountdownMinutes || this.wateringCountdownSeconds))
return manualRunning || deviceCountdownRunning
}
},
//
onShareAppMessage: function() {
return {
@ -702,6 +731,7 @@
this.clearDisconnectTimer()
this.clearDataTimeoutTimer()
this.clearConnectionTimeout()
this.clearWateringCountdownTimer()
},
onUnload() {
//
@ -709,9 +739,9 @@
this.clearDisconnectTimer()
this.clearDataTimeoutTimer()
this.clearConnectionTimeout()
this.clearWateringCountdownTimer()
},
methods: {
//
goToGatewayList() {
uni.navigateTo({
@ -729,21 +759,33 @@
if(this.pre === 'WATER' && this.vardataflag != 3){
this.ver_data = this.buildVerDataFromBackend(this.zaixianobj)
}
if(this.pre === 'pre' && this.vardataflag != 3){
if(this.pre === 'SMSJ:' && this.vardataflag != 3){
this.ver_data = this.buildVerDataFromBackend(this.zaixianobj)
console.log(this.ver_data);
// this.ver_data = this.zaixianobj
console.log(this.ver_data,'55555555555prprprprprprprpr');
}
if (res.data && res.data.iotData && res.data.iotData.xinp !== undefined) {
this.xinp = res.data.iotData.xinp.value == undefined ? '--' : res.data.iotData.xinp.value
}
if (res.data && res.data.iotData && res.data.iotData.yudi !== undefined) {
this.yschecked = res.data.iotData.yudi.value == 0 ? true : false
if (!this.isWateringInProgress) {
this.yschecked = res.data.iotData.yudi.value == 0 ? true : false
}
}
if (res.data && res.data.iotData && res.data.iotData.lock !== undefined) {
this.etchecked = res.data.iotData.lock.value == 0 ? true : false
}
this.devicetime = res.data.iotData.time.value
let originalValue = (res?.data?.iotData?.time?.value ?? "").toString().trim();
// "
originalValue = originalValue.replace(/^"|"$/g, '');
this.devicetime = originalValue || "--";
console.log('devicetime:', this.devicetime);
//
if (res.data && res.data.iotData && res.data.iotData.RSSI !== undefined && res.data.iotData.RSSI.value !== undefined) {
this.signalStrength = this.calculateSignalStrength(res.data.iotData.RSSI.value)
} else {
this.signalStrength = 0
}
//
this.onlineTime = res.data.onlineTime
this.onlineStatus = res.data.onlineStatus
@ -843,8 +885,19 @@
taht.getinfo()
uni.setStorageSync('token', res.token)
}else if(res.code == 10001){
uni.reLaunch({
url:'/pages/login/login'
that.bjflag = true
uni.showModal({
title: '提示',
content: '您还未登录,是否前去登录?',
success: function (res) {
if (res.confirm) {
uni.reLaunch({
url:'/pages/login/login'
})
} else if (res.cancel) {
}
}
})
}
})
@ -864,6 +917,7 @@
this.getlist()
}else if(res.code == 401){
this.isLoading = false //
this.bjflag = true
this.jmlogin()
}
}).catch(() => {
@ -1160,6 +1214,16 @@
//
btnyushui() {
this.handleUserAction()
if (this.isWateringInProgress) {
this.one = true
this.ones = false
uni.showToast({
title: '请等待浇水完成后再操作雨水感应',
icon: 'none',
duration: 2000
})
return
}
this.one = false
this.ones = true
if(this.vardataflag != 3){
@ -1216,11 +1280,9 @@
})
this.devicetime = this.getCurrentTime();
console.log(this.devicetime);
let data = {
deviceId:this.shebid,
time:this.devicetime,
}
this.$u.post(`/app/device/syncTime`,data).then(res => {
if (res.code == 200) {
@ -1340,6 +1402,16 @@
//
btnyushuis() {
this.handleUserAction()
if (this.isWateringInProgress) {
this.one = false
this.ones = false
uni.showToast({
title: '请等待浇水完成后再操作雨水感应',
icon: 'none',
duration: 2000
})
return
}
this.one = false
this.ones = true
if(this.vardataflag != 3){
@ -1510,7 +1582,20 @@
url: '/page_user/lanya'
})
}else if(res.code == 401){
this.jmlogin()
// this.jmlogin()
uni.showModal({
title: '提示',
content: '您还未登录,是否前去登录?',
success: function (res) {
if (res.confirm) {
uni.navigateTo({
url:'/pages/login/login'
})
} else if (res.cancel) {
}
}
})
}
})
},
@ -1575,20 +1660,33 @@
//
btnqd() {
this.handleUserAction()
if (this.isManualWaterRequesting) {
uni.showToast({
title: '请等待请求完成后再试',
icon: 'none',
duration: 2000
})
return
}
if (this.minute == '--' || this.second == '--') {
uni.showToast({
title: '请选择浇水时长',
icon: 'none',
duration: 3000
})
} else if(this.vardataflag == 3){
return
}
this.isManualWaterRequesting = true
if(this.vardataflag == 3){
this.$u.get(`/app/getModelCommand/${this.modelId}?instructionKey=time`).then(res =>{
if(res.code == 200){
uni.showLoading({
title: '开启中...'
})
xBlufi.notifySendCustomData({
customData: '11' + this.format(res.data, {time: this.jstime})
customData: '11' + this.format(res.data, {time: this.jstime}) + '@'
})
this.getjl()
uni.hideLoading()
@ -1602,6 +1700,15 @@
duration:2000
})
}
}).catch(() => {
uni.hideLoading()
uni.showToast({
title: '网络异常,请稍后重试',
icon: 'none',
duration: 2000
})
}).finally(() => {
this.isManualWaterRequesting = false
})
}else{
@ -1633,6 +1740,15 @@
duration:2000
})
}
}).catch(() => {
uni.hideLoading()
uni.showToast({
title: '网络异常,请稍后重试',
icon: 'none',
duration: 2000
})
}).finally(() => {
this.isManualWaterRequesting = false
})
}
},
@ -1654,10 +1770,10 @@
// 0
if (remainingSeconds <= 0) {
clearInterval(this.timer)
// this.btnkq()
//
setTimeout(()=>{
this.sdminutes = ''
this.sdseconds = ''
this.sdseconds = ''
this.kgflag = true
this.jsked = true
this.jskeds = false
@ -1666,10 +1782,161 @@
}, 1000)
},
//
startWateringCountdownTimer(totalSeconds) {
// interval timeout/
this.clearWateringCountdownTimer()
let remainingSeconds = Math.max(0, Math.floor(Number(totalSeconds) || 0))
if (remainingSeconds <= 0) {
this.wateringCountdownMinutes = ''
this.wateringCountdownSeconds = ''
this.showWateringCountdown = false
return
}
const updateDisplay = (secsLeft) => {
const safe = Math.max(0, Math.floor(Number(secsLeft) || 0))
const minutes = Math.floor(safe / 60).toString()
const secs = (safe % 60).toString()
this.wateringCountdownSeconds = secs.padStart(2, '0')
this.wateringCountdownMinutes = (minutes > 0 ? minutes : '').padStart(2, '0')
}
//
updateDisplay(remainingSeconds)
this.wateringCountdownTimer = setInterval(() => {
// 10
remainingSeconds = Math.max(0, remainingSeconds - 1)
updateDisplay(remainingSeconds)
// 0 timeout timeout
if (remainingSeconds === 0) {
clearInterval(this.wateringCountdownTimer)
this.wateringCountdownTimer = null
this.wateringCountdownResetTimer = setTimeout(() => {
this.wateringCountdownMinutes = ''
this.wateringCountdownSeconds = ''
this.showWateringCountdown = false
//
this.wateringCountdownResetTimer = null
}, 1000)
}
}, 1000)
},
//
clearWateringCountdownTimer() {
if (this.wateringCountdownResetTimer) {
clearTimeout(this.wateringCountdownResetTimer)
this.wateringCountdownResetTimer = null
}
if (this.wateringCountdownTimer) {
clearInterval(this.wateringCountdownTimer)
this.wateringCountdownTimer = null
}
},
// RSSI
calculateSignalStrength(rssi) {
if (rssi === undefined || rssi === null) {
return 0
}
//
const rssiValue = Number(rssi)
// 0 -504
if (rssiValue >= -50) {
return 4
}
// -50 -703
if (rssiValue >= -70) {
return 3
}
// -70 -902
if (rssiValue >= -90) {
return 2
}
// -90 1
return 1
},
//
btnkq() {
this.handleUserAction()
//
// if (this.isManualWaterRequesting || this.isManualWaterSwitchRequesting) {
// //
// this.jsked = true
// uni.showToast({
// title: '',
// icon: 'none',
// duration: 2000
// })
// return
// }
console.log('关闭')
// 3
if (this.vardataflag == 3) {
const now = Date.now()
if (now < this.manualWaterBtCooldownUntil) {
this.jsked = true
uni.showToast({
title: '请不要频繁点击',
icon: 'none',
duration: 2000
})
return
}
this.manualWaterBtCooldownUntil = now + 3000
this.isManualWaterSwitchRequesting = true
const unlockAt = this.manualWaterBtCooldownUntil
this.$u.get(`/app/getModelCommand/${this.modelId}?instructionKey=close`).then(res =>{
if(res.code == 200){
uni.showLoading({
title: '关闭中...'
})
xBlufi.notifySendCustomData({
customData: "11" + res.data
})
clearInterval(this.timer)
this.sdminutes = ''
this.sdseconds = ''
this.kgflag = true
this.jsked = true
this.jskeds = false
uni.hideLoading()
}else{
//
this.jsked = true
uni.hideLoading()
uni.showToast({
title: res.msg,
icon: 'none',
duration:2000
})
}
}).catch(() => {
//
this.jsked = true
uni.hideLoading()
uni.showToast({
title: '网络异常,请稍后重试',
icon: 'none',
duration: 2000
})
}).finally(() => {
const delay = Math.max(0, unlockAt - Date.now())
setTimeout(() => {
this.isManualWaterSwitchRequesting = false
}, delay)
})
return
}
//
this.isManualWaterSwitchRequesting = true
if(this.vardataflag != 3){
uni.showLoading({
title: '关闭中...'
@ -1693,31 +1960,8 @@
this.jsked = true
this.jskeds = false
}else{
uni.hideLoading()
uni.showToast({
title: res.msg,
icon: 'none',
duration:2000
})
}
})
}else{
this.$u.get(`/app/getModelCommand/${this.modelId}?instructionKey=close`).then(res =>{
if(res.code == 200){
uni.showLoading({
title: '关闭中...'
})
xBlufi.notifySendCustomData({
customData: "11" + res.data
})
clearInterval(this.timer)
this.sdminutes = ''
this.sdseconds = ''
this.kgflag = true
//
this.jsked = true
this.jskeds = false
uni.hideLoading()
}else{
uni.hideLoading()
uni.showToast({
title: res.msg,
@ -1725,12 +1969,54 @@
duration:2000
})
}
}).catch(() => {
//
this.jsked = true
uni.hideLoading()
uni.showToast({
title: '网络异常,请稍后重试',
icon: 'none',
duration: 2000
})
}).finally(() => {
this.isManualWaterSwitchRequesting = false
})
}
},
//
btngb() {
this.handleUserAction()
//
if (this.isManualWaterRequesting || this.isManualWaterSwitchRequesting) {
//
this.jskeds = false
uni.showToast({
title: '请不要频繁点击',
icon: 'none',
duration: 2000
})
return
}
// 3
if (this.vardataflag == 3) {
const now = Date.now()
if (now < this.manualWaterBtCooldownUntil) {
this.jskeds = false
uni.showToast({
title: '请不要频繁点击',
icon: 'none',
duration: 2000
})
return
}
this.manualWaterBtCooldownUntil = now + 3000
this.isManualWaterSwitchRequesting = true
const unlockAt = this.manualWaterBtCooldownUntil
setTimeout(() => {
//
if (Date.now() >= unlockAt) this.isManualWaterSwitchRequesting = false
}, 3000)
}
console.log('开启')
this.sdjsflag = true
this.kgflag = false
@ -1878,6 +2164,7 @@
const versionNumber = result[0].match(/ver(\d+)/)?.[1];
const ver = versionNumber ? parseInt(versionNumber) : 0;
this.ver = 'ver' + ver
console.log(this.ver,'ververver');
// 6.
const timeParts = dataPart.split(',');
@ -1959,24 +2246,27 @@
const inputString = this.datalist;
// console.log(':', inputString);
// @
const hasAtSymbol = inputString.includes('@');
let processedString;
let currentDay = 0;
const hasAtSymbol = inputString.includes('@')
let processedString
let currentDay = 0
if (hasAtSymbol) {
// @
const firstAtIndex = inputString.indexOf('@');
this.ver = inputString.substring(0, firstAtIndex) || '';
processedString = inputString.substring(firstAtIndex + 1) || '';
const firstAtIndex = inputString.indexOf('@')
this.ver = inputString.substring(0, firstAtIndex) || ''
processedString = inputString.substring(firstAtIndex + 1) || ''
//
const showMatch = processedString.match(/show:([^;]+)/);
const showMatch = processedString.match(/show:([^;]+)/)
if (showMatch) {
const showValues = showMatch[1].split(',');
currentDay = parseInt(showValues[showValues.length - 2]) || 0;
currentDay = parseInt(showValues[showValues.length - 2]) || 0
}
} else {
processedString = inputString;
this.ver = '';
}
if(this.ver.length > 6){
this.ver = this.ver.slice(0,6)
}
console.log(this.ver,'ververver');
const version = this.ver;
// 使
@ -2023,11 +2313,50 @@
this.ver_data = pSetObjects
this.jstimeobj = pSetObjects
this.showobj = showObject
console.log(this.showobj.showArray,'this.showobj.showArraythis.showobj.showArraythis.showobj.showArray')
//
//
if(this.showobj.showArray && this.showobj.showArray.length >= 2){
this.yschecked = this.showobj.showArray[1] == 0 ? true : false
if (!this.isWateringInProgress) {
this.yschecked = this.showobj.showArray[1] == 0 ? true : false
}
this.etchecked = this.showobj.showArray[0] == 0 ? true : false
}
// 4231
if(this.showobj.showArray && this.showobj.showArray.length > 4){
// 231
const thirdValue = this.showobj.showArray[2]
const fourthValue = this.showobj.showArray[3]
if(thirdValue === 1 && fourthValue === 1){
// 1
const countdown = this.showobj.showArray[4]
if(countdown && countdown > 0){
//
this.clearWateringCountdownTimer()
//
this.showWateringCountdown = true
//
this.startWateringCountdownTimer(countdown)
} else {
// 0
this.clearWateringCountdownTimer()
this.wateringCountdownMinutes = ''
this.wateringCountdownSeconds = ''
this.showWateringCountdown = false
}
} else {
// 1
this.clearWateringCountdownTimer()
this.wateringCountdownMinutes = ''
this.wateringCountdownSeconds = ''
this.showWateringCountdown = false
}
} else {
//
this.clearWateringCountdownTimer()
this.wateringCountdownMinutes = ''
this.wateringCountdownSeconds = ''
this.showWateringCountdown = false
}
this.dianya = this.showobj.showArray[this.showobj.showArray.length - 1]
console.log('this.yscheckedthis.yschecked',this.yschecked,this.etchecked)
@ -2089,7 +2418,7 @@
nextTimeDiff: this.xctime,
prevTime: this.sctimejs
});
if(this.ver == 'ver290' || this.ver == 'ver280'){
if(this.showobj.showArray.length > 9){
this.xinp = this.showobj.showArray[this.showobj.showArray.length - 2]
this.dianya = this.showobj.showArray[this.showobj.showArray.length - 1]
}else{
@ -3071,6 +3400,14 @@
margin-right: 32rpx;
}
}
.signal-bars {
.signal-bar {
transition: background-color 0.3s;
&.active {
background-color: #48893B !important;
}
}
}
}
}
.selectbox {