From 976c6eb6ca0e425342aabe5397eaa4095708bffe Mon Sep 17 00:00:00 2001
From: Crunchy <3114200645@qq.com>
Date: 星期三, 08 五月 2024 14:56:14 +0800
Subject: [PATCH] 2023-5-8 数采集完成
---
src/api/equipment/equipment.js | 15 +++
src/views/equipment/mqtt-show/components/largeAreaChart.vue | 59 ++++++++------
src/views/equipment/mqtt-show/index.vue | 165 ++++++++++++++++++++++++++++-------------
3 files changed, 159 insertions(+), 80 deletions(-)
diff --git a/src/api/equipment/equipment.js b/src/api/equipment/equipment.js
index 1050e3b..7b86def 100644
--- a/src/api/equipment/equipment.js
+++ b/src/api/equipment/equipment.js
@@ -75,4 +75,19 @@
url: '/mes/equipment/page/' + id,
method: 'get'
})
+}
+
+export function getDeviceId() {
+ return request({
+ url: '/mes/mqtt/getDeviceId',
+ method: 'get'
+ })
+}
+
+export function mqttList(query) {
+ return request({
+ url: '/mes/mqtt/mqttList',
+ method: 'get',
+ params: query
+ })
}
\ No newline at end of file
diff --git a/src/views/equipment/mqtt-show/components/largeAreaChart.vue b/src/views/equipment/mqtt-show/components/largeAreaChart.vue
index 5bdaf75..90ecb43 100644
--- a/src/views/equipment/mqtt-show/components/largeAreaChart.vue
+++ b/src/views/equipment/mqtt-show/components/largeAreaChart.vue
@@ -7,27 +7,21 @@
var myChart = null
var option = null
-let base = +new Date(1968, 9, 3)
-let oneDay = 24 * 3600 * 1000
-let date = []
-let data = [Math.random() * 300]
-for (let i = 1; i < 20000; i++) {
- var now = new Date((base += oneDay))
- date.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/'))
- data.push(Math.round((Math.random() - 0.5) * 20 + data[i - 1]))
-}
-
export default {
- // props: {
- // yAxisMonth: {
- // type: Array,
- // default: []
- // },
- // seriesData: {
- // type: Array,
- // default: []
- // }
- // },
+ props: {
+ yAxisMonth: {
+ type: Array,
+ default: []
+ },
+ seriesData: {
+ type: Array,
+ default: []
+ },
+ otherData: {
+ type: Object,
+ default: {}
+ }
+ },
data() {
return {
option: {
@@ -39,7 +33,7 @@
},
title: {
left: '5%',
- text: 'Large Ara Chart'
+ text: '璁惧鍚嶇О锛�' + this.otherData.deviceName + '\\鍗曚綅锛�' + (this.otherData.unit ? this.otherData.unit : '')
},
toolbox: {
right: '5%',
@@ -57,7 +51,7 @@
xAxis: {
type: 'category',
boundaryGap: false,
- data: date
+ data: this.yAxisMonth
},
yAxis: {
type: 'value',
@@ -76,7 +70,7 @@
],
series: [
{
- name: 'Fake Data',
+ name: '鍙傛暟',
type: 'line',
symbol: 'none',
sampling: 'lttb',
@@ -95,7 +89,7 @@
}
])
},
- data: data
+ data: this.seriesData
}
]
}
@@ -109,15 +103,26 @@
methods: {
makeOption() {},
initDrag() {
- myChart.setOption((option = this.option))
+ myChart.setOption((option = this.option), true)
- option && myChart.setOption(option)
// 椤甸潰鍙戠敓鍙樺寲tree涔熸敼鍙�
window.addEventListener('resize', () => {
if (myChart) myChart.resize()
})
}
- }
+ },
+ // watch: {
+ // yAxisMonth: {
+ // handler(newVal) {
+ // console.log(`output->myChart`,myChart)
+ // setTimeout(()=>{
+ // myChart.setOption((option = this.option), true)
+ // },100)
+
+ // },
+ // deep: true
+ // }
+ // }
}
</script>
diff --git a/src/views/equipment/mqtt-show/index.vue b/src/views/equipment/mqtt-show/index.vue
index 8d3a4fe..6e95491 100644
--- a/src/views/equipment/mqtt-show/index.vue
+++ b/src/views/equipment/mqtt-show/index.vue
@@ -1,71 +1,130 @@
<template>
<div>
- <div class="header_div">
- <el-select v-model="value" placeholder="璇烽�夋嫨">
- <el-option
- v-for="item in options"
- :key="item.value"
- :label="item.label"
- :value="item.value"
- >
- </el-option>
- </el-select>
- </div>
- <el-row>
- <el-col
- v-for="(v, k) in index"
- :key="k"
- style="height: 40vh; padding-top: 0.4em;"
- :span="12"
- ><largeAreaChart
- /></el-col>
- </el-row>
+ <basic-container>
+ <el-form label-width="100px" :inline="true">
+ <el-form-item label="璁惧锛�" required>
+ <el-select
+ v-model="deviceId"
+ placeholder="璇烽�夋嫨"
+ @change="getMqttLists"
+ >
+ <el-option
+ v-for="item in options"
+ :key="item.value"
+ :label="item.name"
+ :value="item.device_id"
+ >
+ </el-option>
+ </el-select>
+ </el-form-item>
+ <el-form-item label="鏃堕棿锛�">
+ <el-radio-group
+ v-model="checkboxGroup3"
+ size="small"
+ @change="destroyTimerAgainStart"
+ >
+ <el-radio-button v-for="city in cities" :label="city" :key="city">{{
+ city
+ }}</el-radio-button>
+ </el-radio-group>
+ </el-form-item>
+ </el-form>
+ </basic-container>
+ <basic-container>
+ <div
+ v-if="!largeAreaChartList.length > 0"
+ style="height: 75vh; padding-top: 0.4em; display: flex; align-items: center; justify-content: center;"
+ >
+ 鏆傛棤鏁版嵁
+ </div>
+ <el-row>
+ <el-col
+ v-for="(v, k) in largeAreaChartList"
+ :key="k"
+ style="height: 40vh; padding-top: 0.4em;"
+ :span="12"
+ ><largeAreaChart
+ ref="largeAreaChartRef"
+ v-if="largeAreaChartList.length > 0"
+ :key="k"
+ :yAxisMonth="v.yAxisMonth"
+ :seriesData="v.listData"
+ :otherData="v"
+ />
+ </el-col>
+ </el-row>
+ </basic-container>
</div>
</template>
<script>
import largeAreaChart from './components/largeAreaChart.vue'
+import { getDeviceId, mqttList } from '@/api/equipment/equipment'
+
export default {
components: {
largeAreaChart: largeAreaChart
},
data() {
return {
- index: 7,
- options: [
- {
- value: '閫夐」1',
- label: '榛勯噾绯�'
- },
- {
- value: '閫夐」2',
- label: '鍙岀毊濂�'
- },
- {
- value: '閫夐」3',
- label: '铓典粩鐓�'
- },
- {
- value: '閫夐」4',
- label: '榫欓』闈�'
- },
- {
- value: '閫夐」5',
- label: '鍖椾含鐑ら腑'
- }
- ],
- value: ''
+ largeAreaChartList: [],
+ cities: ['1 鍒嗛挓', '3 鍒嗛挓', '5 鍒嗛挓', '10 鍒嗛挓'],
+ checkboxGroup3: '1 鍒嗛挓',
+ options: [],
+ deviceId: '',
+ timer: ''
+ }
+ },
+ async created() {
+ await this.getDeviceIdFun()
+ this.getMqttLists()
+ },
+ mounted() {
+ this.destroyTimerAgainStart()
+ },
+ beforeDestroy() {
+ console.log(`output->閿�姣佷簡瀹氭椂鍣╜)
+ clearInterval(this.timer)
+ },
+ methods: {
+ async getDeviceIdFun() {
+ await getDeviceId().then((res) => {
+ this.options = res.data.data
+ this.deviceId = this.options[0].device_id
+ })
+ },
+ async getMqttLists() {
+ const obj = Object.assign({
+ deviceId: this.deviceId,
+ collectionTime: this.checkboxGroup3.split(' ')[0]
+ })
+ this.largeAreaChartList = []
+ await mqttList(obj).then((res) => {
+ let data = res.data.data
+ data.forEach((i) => {
+ i.listData = []
+ i.yAxisMonth = []
+ if (i.listMqttTableData.length > 0) {
+ i.deviceId = i.listMqttTableData[0].deviceId
+ }
+ i.listMqttTableData.forEach((j) => {
+ i.listData.push(j.value)
+ i.yAxisMonth.push(j.collectionTime)
+ })
+ i.listMqttTableData = []
+ })
+ this.largeAreaChartList = data
+ })
+ },
+ destroyTimerAgainStart() {
+ clearInterval(this.timer)
+ this.timer = setInterval(
+ this.getMqttLists,
+ 1000 * 60 * this.checkboxGroup3.split(' ')[0]
+ )
}
}
}
</script>
-<style>
-.header_div {
- height: 5em;
- width: 100%;
- display: flex;
- align-items: center;
- margin-left: 3em;
-}
-</style>
+<style></style>
--
Gitblit v1.9.3