Files
app-govern/pages/index/message.vue

204 lines
6.6 KiB
Vue
Raw Normal View History

2023-02-09 08:50:01 +08:00
<template>
<view :loading="loading">
<view class="message">
2023-09-18 14:19:09 +08:00
<view class="message-nav" @click="jump('run')">
2023-02-09 08:50:01 +08:00
<image mode="aspectFill" class="message-nav-icon" src="/static/message3.png" />
2023-09-18 10:36:14 +08:00
<view class="message-nav-label">运行事件</view>
2023-09-21 15:15:17 +08:00
<uni-badge :text="messageCount.runCount"></uni-badge>
2023-02-09 08:50:01 +08:00
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view>
2023-09-18 14:19:09 +08:00
<view class="message-nav" @click="jump('transient')">
2023-02-09 08:50:01 +08:00
<image mode="aspectFill" class="message-nav-icon" src="/static/incident.png" />
2023-02-27 14:56:08 +08:00
<view class="message-nav-label">暂态事件</view>
2023-09-21 15:15:17 +08:00
<uni-badge :text="messageCount.eventCount"></uni-badge>
2023-02-27 14:56:08 +08:00
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view>
2023-09-18 14:19:09 +08:00
<view class="message-nav" @click="jump('steady')">
2023-09-18 10:36:14 +08:00
<image mode="aspectFill" class="message-nav-icon" src="/static/report.png" />
<view class="message-nav-label">稳态事件</view>
2023-09-21 15:15:17 +08:00
<uni-badge :text="messageCount.harmonicCount"></uni-badge>
2023-09-18 10:36:14 +08:00
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view>
2023-09-18 14:19:09 +08:00
<view class="message-nav" @click="jump('report')">
2023-02-27 14:56:08 +08:00
<image mode="aspectFill" class="message-nav-icon" src="/static/term.png" />
2023-09-18 10:36:14 +08:00
<view class="message-nav-label">设备告警</view>
2023-09-21 15:15:17 +08:00
<uni-badge :text="messageCount.alarmCount"></uni-badge>
2023-02-09 08:50:01 +08:00
<uni-icons type="forward" color="#aaa" size="20"></uni-icons>
</view>
</view>
</view>
</template>
<script>
2024-09-23 08:50:16 +08:00
import { getDevCount } from '../../common/api/device.js'
2023-02-09 08:50:01 +08:00
export default {
2023-07-03 20:29:24 +08:00
data() {
2023-02-09 08:50:01 +08:00
return {
2023-02-23 08:44:46 +08:00
loading: false,
2023-07-03 20:29:24 +08:00
userInfo: {},
2023-09-21 15:15:17 +08:00
messageCount: {},
2023-09-22 13:39:19 +08:00
timer: null,
2024-09-23 08:50:16 +08:00
devCount: {},
2023-02-09 08:50:01 +08:00
}
},
2024-09-23 08:50:16 +08:00
2023-02-09 08:50:01 +08:00
methods: {
2023-07-03 20:29:24 +08:00
init() {
2023-02-23 08:44:46 +08:00
this.userInfo = uni.getStorageSync('userInfo')
2023-02-09 08:50:01 +08:00
},
2023-07-03 20:29:24 +08:00
upgrade(code) {
console.log(code)
2023-02-09 08:50:01 +08:00
uni.showToast({
title: '升级成功',
2023-07-03 20:29:24 +08:00
icon: 'none',
2023-02-09 08:50:01 +08:00
})
},
2023-07-03 20:29:24 +08:00
jump(type) {
2023-02-09 08:50:01 +08:00
switch (type) {
2023-11-03 16:33:16 +08:00
case 'run':
2023-02-09 08:50:01 +08:00
uni.navigateTo({
2023-11-03 16:33:16 +08:00
url: `/pages/message/message?type=${2}`,
2023-02-09 08:50:01 +08:00
})
2023-07-03 20:29:24 +08:00
break
2023-11-03 16:33:16 +08:00
case 'transient':
2023-02-09 08:50:01 +08:00
uni.navigateTo({
2023-11-03 16:33:16 +08:00
url: `/pages/message/message?type=${0}`,
2023-02-09 08:50:01 +08:00
})
2023-07-03 20:29:24 +08:00
break
2023-11-03 16:33:16 +08:00
case 'steady':
uni.navigateTo({
url: `/pages/message/message?type=${1}`,
})
2023-07-03 20:29:24 +08:00
break
2023-11-03 16:33:16 +08:00
case 'report':
2023-02-09 08:50:01 +08:00
uni.navigateTo({
2023-11-03 16:33:16 +08:00
url: `/pages/message/message?type=${3}`,
2023-02-09 08:50:01 +08:00
})
2023-07-03 20:29:24 +08:00
break
2023-11-03 16:33:16 +08:00
default:
break
2023-02-09 08:50:01 +08:00
}
2023-07-03 20:29:24 +08:00
},
2024-09-23 08:50:16 +08:00
getDevCount() {
if (uni.getStorageSync('projectList')[1] != undefined) {
getDevCount(uni.getStorageSync('projectList')[1].engineeringId).then((res) => {
this.devCount = res.data
this.devCount.currentOffLineDevs.forEach((item) => {
item.runStatus = 1
})
this.devCount.offLineDevs.forEach((item) => {
item.runStatus = 1
})
uni.setStorage({
key: this.$cacheKey.messageCount,
data: this.devCount,
})
let messagePage =
this.devCount.runCount +
this.devCount.eventCount +
this.devCount.alarmCount +
this.devCount.harmonicCount
let minePage = this.devCount.feedBackCount
if (messagePage) {
uni.setTabBarBadge({
index: 1,
text:messagePage ? (messagePage > 99 ? '99+' : messagePage + '') : '',
})
} else {
uni.removeTabBarBadge({
index: 1,
})
}
if (minePage) {
uni.setTabBarBadge({
index: 2,
text: minePage + '',
})
} else {
uni.removeTabBarBadge({
index: 2,
})
}
// #ifdef APP-PLUS
plus.runtime.setBadgeNumber(messagePage + minePage)
// #endif
})
}
},
2023-02-09 08:50:01 +08:00
},
2023-09-22 13:39:19 +08:00
onLoad(options) {},
2023-07-03 20:29:24 +08:00
onShow() {
2023-02-09 08:50:01 +08:00
this.init()
2024-09-23 08:50:16 +08:00
this.getDevCount()
2023-09-21 15:15:17 +08:00
this.messageCount = uni.getStorageSync(this.$cacheKey.messageCount) || {}
2023-09-22 13:39:19 +08:00
this.timer = setInterval(() => {
this.messageCount = uni.getStorageSync(this.$cacheKey.messageCount) || {}
2023-11-03 16:33:16 +08:00
}, 1000) // 定时请求
2023-02-09 08:50:01 +08:00
},
2023-09-22 13:39:19 +08:00
onHide() {
clearInterval(this.timer)
2023-11-03 16:33:16 +08:00
},
2023-02-09 08:50:01 +08:00
}
</script>
<style lang="scss">
.message {
padding-top: 20rpx;
2023-02-23 08:44:46 +08:00
2023-02-09 08:50:01 +08:00
.message-header {
padding: 200rpx 34rpx 34rpx;
display: flex;
align-items: center;
background: $uni-theme-white;
margin-bottom: 20rpx;
box-shadow: 0 4rpx 8rpx #e7e7e74c;
.message-header-head {
margin-right: 30rpx;
height: 128rpx;
width: 128rpx;
border-radius: $uni-theme-radius;
overflow: hidden;
}
.message-header-name {
margin-right: 30rpx;
flex: 1;
font-size: 36rpx;
color: #111;
font-weight: 700;
.tag {
margin-top: 10rpx;
font-size: 24rpx;
color: #aaa;
}
}
}
.message-nav {
2023-02-23 08:44:46 +08:00
padding: 34rpx;
2023-02-09 08:50:01 +08:00
display: flex;
align-items: center;
background: $uni-theme-white;
border-bottom: 1rpx solid #e8e8e8;
&-icon {
margin-right: 30rpx;
height: 44rpx;
width: 44rpx;
border-radius: $uni-theme-radius;
overflow: hidden;
}
&-label {
margin-right: 30rpx;
flex: 1;
font-size: 28rpx;
color: #111;
}
}
}
2023-07-03 20:29:24 +08:00
</style>