congming_huose-apk/pages/device/jingdi/index.vue

245 lines
8.8 KiB
Vue
Raw Permalink 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>
<!-- 头像和扫码按钮悬浮 -->
<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" v-for="(item, idx) in infoList" :key="idx">
<!-- <text class="iconfont info-icon" :class="item.iconClass">{{ item.icon }}</text> -->
<image class="iconfont info-icon" :class="item.iconClass" :src="item.icon" mode="aspectFill"></image>
<view class="info-content">
<view class="info-title">{{ item.title }}</view>
<view class="info-status-row">
<!-- 蜂窝信号强度用格子条 -->
<view v-if="item.type === 'signal'" class="signal-bar">
<view v-for="n in 4" :key="n" class="signal-block" :class="{active: n <= item.signalLevel}"></view>
</view>
<!-- 其他状态 -->
<text v-else class="info-status" :class="item.valueClass">{{item.value}}</text>
</view>
</view>
<image v-if="item.valueClass == 'red'" style="width: 60rpx;height: 60rpx;" src="https://api.ccttiot.com/smartmeter/img/static/uw31nuDEs8OOlS36kYE3" mode=""></image>
<view v-if="idx !== infoList.length-1" class="divider"></view>
</view>
</view>
<!-- 底部摘要 -->
<view class="device-summary">
<view>{{xqobj.productName || '--'}}{{$i18n.t('deviceModel')}}</view>
<view>{{ $i18n.t('hardware') }} {{ xqobj.hardwareVersion || '--' }}</view>
<view>{{ $i18n.t('firmware') }} {{ xqobj.firmwareVersion || '--' }}</view>
<view>{{$i18n.t('deviceMac')}}{{xqobj.mac || '--'}}</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
infoList: [],
id:'',
xqobj:{}
}
},
created() {
// 初始化信息列表,使用$i18n.t进行国际化
this.infoList = [
// icon 用 iconfont 占位符,实际项目请替换为你的 iconfont 字体编码
{ icon: 'https://api.ccttiot.com/C3HfwZjQEfxFb69fe7a8a5b02c9355147650fa73da29.png', title: '喇叭状况', value: '正常', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/kUDoIKiuGlZZb17b40176ead5a6914edc8182499f097.png', title: 'LED状况', value: '开启', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/ULlLsQCVKcz1fe897169f3f6a9e31ca4e65b220f321d.png', title: '声音大小', value: '低80DB', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/N4VU5HlkBiNDdc9502731ee558caeb1dff3ee2f2277d.png', title: '声音时长', value: '3秒', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/U8Azcme0x3x373d7293107a64c4546637fe5d0cd8eb1.png', title: '温度(℃)', value: '2℃以上就改变温度', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/u3kuDU7QtC5DCwxF7OMn', title: '电池电量', value: '100%', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/uo5bYrOx2j9XcB93OgnB', title: '设备盖子', value: '打开', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/aDQds2luq1I52285ce17d99002a267e772c7734aa9bf.png', title: '设备支架', value: '正常', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/uo5bYrOx2j9XcB93OgnB', title: '是否可以开启保护功能', value: '报警', subValue: '', iconClass: '', valueClass: 'red', type: 'text' },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/uRgW826i9UFnVQCKe3cW', title: 'HUB直连', value: '连接', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/u8HbiP9EXs21YZ5g8iK2', title: 'HUB信号强度', value:'' , subValue: '', iconClass: '', valueClass: '', type: 'signal', signalLevel: 4 },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/uwxenGFFOlLOJ395ya0K', title: '连接模式', value: '有线', subValue: '', iconClass: '', valueClass: '', type: 'text' },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/u8HbiP9EXs21YZ5g8iK2', title: 'LORA信号强度', value: this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData'), subValue: '', iconClass: '', valueClass: '', type: 'signal', signalLevel: 4 },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/u8HbiP9EXs21YZ5g8iK2', title: 'BLE信号强度', value: this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData'), subValue: '', iconClass: '', valueClass: '', type: 'signal', signalLevel: 4 },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/uHNVHl1QFKt7swCSxCYO', title: 'LORA发射功率', value: this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData'), subValue: '', iconClass: '', valueClass: '', type: 'signal', signalLevel: 4 },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/uHNVHl1QFKt7swCSxCYO', title: 'BLE发射功率', value: this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData') + ' / ' + this.$i18n.t('noData'), subValue: '', iconClass: '', valueClass: '', type: 'signal', signalLevel: 4 },
{ icon: 'https://api.ccttiot.com/smartmeter/img/static/ufzGmkXJW0w9zRvfdJyr', title: '中继器', value: this.$i18n.t('none'), subValue: '', iconClass: '', valueClass: '', type: 'text' },
];
},
onLoad(option) {
this.id = option.id
this.getxq()
},
methods: {
// 点击进行设备修改
btnrdit(){
uni.navigateTo({
url:'/pages/device/jingdi/xq'
})
},
// 进行设备详情请求
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>