congming_huose-apk/subpackage/device/devicexq.vue

437 lines
16 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="device-detail">
<!-- 自定义导航栏 -->
<view class="tabback">
<view class="rtjt" @click="btnback"></view>
<view class="name">{{ $i18n.t('deviceDetail') }}</view>
<view style="width: 36rpx;"></view>
</view>
<scroll-view style="height: 90vh;" scroll-y refresher-enabled @refresherrefresh="onRefresh" :refresher-triggered="isRefreshing" refresher-default-style="black">
<!-- 头像和扫码按钮悬浮 -->
<view class="avatar-box">
<image class="avatar" :src="xqobj.productPicture" mode="aspectFill"></image>
<view class="scan-btn" @click="btnrdit">
<image src="https://api.ccttiot.com/smartmeter/img/static/uZiAQwh3lTliRkGXV3R0" mode="aspectFill"></image>
</view>
</view>
<!-- 信息列表卡片 -->
<view class="info-card">
<!-- 蜂窝信号 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/u28z8kmu23FHKOMs5OoT" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('cellularSignal') }}</view>
<view class="info-status-row">
<view class="signal-bar">
<view v-for="n in 4" :key="n" class="signal-block" :class="{active: n <= cellularSignalLevel}"></view>
</view>
</view>
</view>
<image v-if="cellularSignalValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- WiFi信号 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uutwguH4unzWw2r9Zpde" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('wifiSignal') }}</view>
<view class="info-status-row">
<text class="info-status" :class="wifiSignalValueClass">{{ wifiSignalValue }}</text>
</view>
</view>
<image v-if="wifiSignalValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- 网络状态 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uRFwK1gJXCpUJJk3wDG4" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('networkStatus') }}</view>
<view class="info-status-row">
<text class="info-status" style="color: #e74c3c;" v-if="xqobj.onlineStatus == 0">离线</text>
<text class="info-status" style="color: #4cd964;" v-if="xqobj.onlineStatus == 1">在线</text>
</view>
</view>
<image v-if="xqobj.onlineStatus == 0" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- 电池电量 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uAlkslDfDJ7MJtYkLXAd" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('batteryLevel') }}</view>
<view class="info-status-row">
<text class="info-status" :class="batteryLevelValueClass">{{ batteryLevelValue }}</text>
</view>
</view>
<image v-if="batteryLevelValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- 设备覆盖 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uRAWgDGlM9ySANCb5m7S" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('deviceCover') }}</view>
<view class="info-status-row">
<text class="info-status" :class="deviceCoverValueClass">{{ deviceCoverValue }}</text>
</view>
</view>
<image v-if="deviceCoverValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- 外部电源 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/u934hpF8vWqaGF1soiPH" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('externalPower') }}</view>
<view class="info-status-row">
<text class="info-status" :class="externalPowerValueClass">{{ externalPowerValue }}</text>
</view>
</view>
<image v-if="externalPowerValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- 蜂窝设备 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/u28z8kmu23FHKOMs5OoT" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('cellularDevice') }}</view>
<view class="info-status-row">
<text class="info-status" :class="cellularDeviceValueClass">{{ cellularDeviceValue }}</text>
</view>
</view>
<image v-if="cellularDeviceValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- WiFi -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uutwguH4unzWw2r9Zpde" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('wifi') }}</view>
<view class="info-status-row">
<text class="info-status" :class="wifiValueClass">{{ wifiValue }}</text>
</view>
</view>
<image v-if="wifiValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- 以太网 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/upnqWy06k5L0xtanObM7" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('ethernet') }}</view>
<view class="info-status-row">
<text class="info-status" :class="ethernetValueClass">{{ ethernetValue }}</text>
</view>
</view>
<image v-if="ethernetValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- SIM1 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uvq4fvbXLx8LMdAJVunM" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('sim1') }}</view>
<view class="info-status-row">
<text class="info-status" :class="sim1ValueClass">{{ sim1Value }}</text>
</view>
</view>
<image v-if="sim1ValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- SIM2 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uvq4fvbXLx8LMdAJVunM" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('sim2') }}</view>
<view class="info-status-row">
<text class="info-status" :class="sim2ValueClass">{{ sim2Value }}</text>
</view>
</view>
<image v-if="sim2ValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- 平均SNR -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/udon2SOIwspVLoxX6G6q" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('avgSnr') }}</view>
<view class="info-status-row">
<text class="info-status" :class="avgSnrValueClass">{{ avgSnrValue }}</text>
</view>
</view>
<image v-if="avgSnrValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- LORA/BLE -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uhM8UxrlR0qKJ50Xlx3L" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">LORA/BLE</view>
<view class="info-status-row">
<text class="info-status" :class="loraBleValueClass">{{ loraBleValue }}</text>
</view>
</view>
<image v-if="loraBleValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view class="divider"></view>
</view>
<!-- 安全公司 -->
<view class="info-item">
<image class="iconfont info-icon" src="https://api.ccttiot.com/smartmeter/img/static/uTlg5irZwTYkGGnIxFRY" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ $i18n.t('securityCompany') }}</view>
<view class="info-status-row">
<text class="info-status" :class="securityCompanyValueClass">{{ securityCompanyValue }}</text>
</view>
</view>
<image v-if="securityCompanyValueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
</view>
</view>
<!-- 底部摘要 -->
<view class="device-summary">
<view>{{xqobj.productName}}{{$i18n.t('deviceModel')}}</view>
<view>{{ $i18n.t('hardware') }}</view>
<view>{{ $i18n.t('firmware') }}</view>
<view>{{$i18n.t('deviceMac')}}{{xqobj.mac}}</view>
</view>
</scroll-view>
</view>
</template>
<script>
export default {
data() {
return {
// 蜂窝信号
cellularSignalLevel: 4,
cellularSignalValueClass: '',
// WiFi信号
wifiSignalValue: this.$i18n.t('noData'),
wifiSignalValueClass: '',
// 电池电量
batteryLevelValue: this.$i18n.t('noData'),
batteryLevelValueClass: '',
// 设备覆盖
deviceCoverValue: this.$i18n.t('noData'),
deviceCoverValueClass: 'red',
// 外部电源
externalPowerValue: this.$i18n.t('noData'),
externalPowerValueClass: '',
// 蜂窝设备
cellularDeviceValue: this.$i18n.t('offline'),
cellularDeviceValueClass: '',
// WiFi
wifiValue: this.$i18n.t('offline'),
wifiValueClass: 'red',
// 以太网
ethernetValue: this.$i18n.t('offline'),
ethernetValueClass: '',
// SIM1
sim1Value: this.$i18n.t('unknownNumber'),
sim1ValueClass: '',
// SIM2
sim2Value: this.$i18n.t('unknownNumber'),
sim2ValueClass: '',
// 平均SNR
avgSnrValue: this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData'),
avgSnrValueClass: '',
// LORA/BLE
loraBleValue: this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData'),
loraBleValueClass: '',
// 安全公司
securityCompanyValue: this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData'),
securityCompanyValueClass: '',
id:'',
xqobj:{},
isRefreshing:false,
}
},
onLoad(option) {
this.id = option.id
this.getxq()
},
methods: {
// 下拉刷新
onRefresh() {
this.isRefreshing = true
setTimeout(()=>{
this.isRefreshing = false
this.getxq()
},1000)
},
// 点击进行设备修改
btnrdit(){
uni.navigateTo({
url:'/pages/device/hubedit?id=' + this.id
})
},
// 进行设备详情请求
getxq(){
this.$http.get(`/bst/device/detail?id=${this.id}`).then(res => {
if(res.code == 200){
this.xqobj = res.data
}
})
},
// 点击返回上一级
btnback(){
uni.navigateBack()
},
}
}
</script>
<style scoped lang="less">
.tabback {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
height: 160rpx;
padding: 0 20rpx;
padding-top: 80rpx;
box-sizing: border-box;
position: fixed;
top: 0;
left: 0;
z-index: 999 !important;
background-color: #fff;
.rtjt {
font-size: 36rpx;
}
}
.device-detail {
padding-top: 150rpx;
background-color: #F3F5F6;
}
.avatar-box {
position: relative;
display: flex;
justify-content: center;
margin-top: 60rpx;
padding-bottom: 74rpx;
border-bottom: 1rpx solid #f2f2f2;
.avatar {
width: 278rpx;
height: 278rpx;
background: #e0e0e0;
border-radius: 24rpx;
box-shadow: 0 2rpx 8rpx #eee;
}
.scan-btn {
image{
width: 48rpx;
height: 48rpx;
}
position: absolute;
right: 26rpx;
top: -36rpx;
width: 48rpx;
height: 48rpx;
background: #fff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
box-shadow: 0 2rpx 8rpx #eee;
border: 1rpx solid #eee;
}
}
.info-card {
background: #fff;
.info-item {
display: flex;
align-items: flex-start;
padding: 0 24rpx 0 32rpx;
position: relative;
min-height: 80rpx;
image{
width: 50rpx;
height: 50rpx;
margin-top: 30rpx;
}
.info-icon {
font-family: 'iconfont' !important;
font-size: 32rpx;
margin-right: 18rpx;
color: #222;
line-height: 80rpx;
}
.info-content {
flex: 1;
padding: 18rpx 0;
.info-title {
font-size: 28rpx;
color: #333;
font-weight: 500;
}
.info-status-row {
display: flex;
align-items: center;
margin-top: 6rpx;
min-height: 32rpx;
.info-status {
font-size: 26rpx;
color: #666;
&.red {
color: #e74c3c;
}
&.green {
color: #27ae60;
}
}
.signal-bar {
display: flex;
align-items: center;
.signal-block {
width: 62rpx;
height: 6rpx;
margin-right: 6rpx;
border-radius: 2rpx;
background: #e0e0e0;
&.active {
background: #4cd964;
}
}
}
}
}
.divider {
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 1rpx;
background: #f2f2f2;
}
}
}
.device-summary {
background: #f7f7f7;
text-align: center;
color: #888;
font-size: 24rpx;
line-height: 1.8;
border-radius: 0 0 20rpx 20rpx;
padding-top: 40rpx;
box-sizing: border-box;
padding-bottom: 30rpx;
}
</style>