From 47cf5518f0f61dbf8066c2273b9f77c2cd7b1751 Mon Sep 17 00:00:00 2001
From: YLouie <929705085@qq.com>
Date: 星期五, 19 九月 2025 17:56:03 +0800
Subject: [PATCH] 销售订单plm同步
---
src/views/equipment/mqtt-show/index.vue | 239 +++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 188 insertions(+), 51 deletions(-)
diff --git a/src/views/equipment/mqtt-show/index.vue b/src/views/equipment/mqtt-show/index.vue
index 8d3a4fe..5abf0f9 100644
--- a/src/views/equipment/mqtt-show/index.vue
+++ b/src/views/equipment/mqtt-show/index.vue
@@ -1,71 +1,208 @@
<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="getMqttListsSelect"
+ >
+ <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-item label="鍘嗗彶鏌ヨ锛�">
+ <el-tooltip
+ class="item"
+ effect="dark"
+ content="娉ㄦ剰锛氬巻鍙叉椂闂翠负绌轰細鍒锋柊鏁版嵁锛屼笉涓虹┖鍒欎笉浼氬埛鏂版暟鎹紒"
+ placement="top"
+ >
+ <el-date-picker
+ v-model="datePicker"
+ size="small"
+ :picker-options="pickerOptions"
+ format="yyyy-MM-dd HH:mm:ss"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ @change="datePickerHistory"
+ type="datetimerange"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ :default-time="['12:00:00']"
+ >
+ </el-date-picker>
+ </el-tooltip>
+ </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"
+ :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: '榛勯噾绯�'
+ largeAreaChartList: [],
+ cities: ['5 鍒嗛挓', '10 鍒嗛挓', '15 鍒嗛挓'],
+ checkboxGroup3: '10 鍒嗛挓',
+ options: [],
+ deviceId: '',
+ timer: '',
+ datePicker: [],
+ choiceDate: null,
+ pickerOptions: {
+ onPick: ({ maxDate, minDate }) => {
+ // 鎶婇�夋嫨鐨勭涓�涓棩鏈熻祴鍊肩粰涓�涓彉閲忋��
+ this.choiceDate = minDate.getTime()
+ // 濡備綍浣犻�夋嫨浜嗕袱涓棩鏈熶簡锛屽氨鎶婇偅涓彉閲忕疆绌�
+ if (maxDate) this.choiceDate = ''
},
- {
- value: '閫夐」2',
- label: '鍙岀毊濂�'
- },
- {
- value: '閫夐」3',
- label: '铓典粩鐓�'
- },
- {
- value: '閫夐」4',
- label: '榫欓』闈�'
- },
- {
- value: '閫夐」5',
- label: '鍖椾含鐑ら腑'
+ disabledDate: (time) => {
+ // 濡備綍閫夋嫨浜嗕竴涓棩鏈�
+ if (this.choiceDate) {
+ // 7澶╃殑鏃堕棿鎴�
+ const one = 7 * 24 * 3600 * 1000
+ // 褰撳墠鏃ユ湡 - one = 7澶╀箣鍓�
+ const minTime = this.choiceDate - one
+ // 褰撳墠鏃ユ湡 + one = 7澶╀箣鍚�
+ const maxTime = this.choiceDate + one
+ return (
+ time.getTime() < minTime ||
+ time.getTime() > maxTime ||
+ // 闄愬埗涓嶈兘閫夋嫨浠婂ぉ鍙婁互鍚�
+ time.getTime() > Date.now()
+ )
+ } else {
+ // 濡傛灉娌℃湁閫夋嫨鏃ユ湡锛屽氨瑕侀檺鍒朵笉鑳介�夋嫨浠婂ぉ鍙婁互鍚�
+ return time.getTime() > Date.now()
+ }
}
- ],
- value: ''
+ }
+ }
+ },
+ // 鍒濆鍖栬皟鐢� 鏌ヨ璁惧 鎶樼嚎鍥炬暟鎹�
+ async created() {
+ await this.getDeviceIdFun()
+ this.destroyTimerAgainStart()
+ },
+ // 鍏抽棴椤甸潰閿�姣佸畾鏃跺櫒
+ beforeDestroy() {
+ clearInterval(this.timer)
+ },
+ watch: {
+ datePicker(newVal) {
+ // 瀛樺湪鏃堕棿 閿�姣佸畾鏃跺櫒
+ if (newVal) {
+ clearInterval(this.timer)
+ } else {
+ this.destroyTimerAgainStart()
+ }
+ }
+ },
+ methods: {
+ // 閫夋嫨鏃堕棿鍚庤皟鐢�
+ datePickerHistory() {
+ if (this.datePicker) {
+ this.getMqttLists()
+ }
+ },
+ // 閫夋嫨璁惧鍚庤皟鐢ㄥ埛鏂版帴鍙�
+ getMqttListsSelect() {
+ this.largeAreaChartList = []
+ this.getMqttLists()
+ },
+ // 鑾峰彇璁惧涓嬫媺妗�
+ async getDeviceIdFun() {
+ await getDeviceId().then((res) => {
+ this.options = res.data.data
+ this.deviceId = this.options[0].device_id
+ })
+ },
+ // 鑾峰彇鎶樼嚎鍥炬暟鎹�
+ async getMqttLists() {
+ const obj = {
+ deviceId: this.deviceId,
+ collectionTime: this.checkboxGroup3.split(' ')[0]
+ }
+ if (this.datePicker) {
+ obj.startTime = this.datePicker[0]
+ obj.endTime = this.datePicker[1]
+ }
+ // 璋冪敤鏁版嵁鎺ュ彛
+ const res = await mqttList(obj)
+ const data = res.data.data
+ for (const i of data) {
+ i.listData = []
+ i.yAxisMonth = []
+ if (i.listMqttTableData.length > 0) {
+ i.deviceId = i.listMqttTableData[0].deviceId
+ }
+ for (const j of i.listMqttTableData) {
+ i.listData.push(j.value)
+ i.yAxisMonth.push(j.collectionTime)
+ }
+ i.listMqttTableData = []
+ }
+ this.largeAreaChartList = data
+ // 澶勭悊鏁版嵁锛岄�傞厤鎶樼嚎鍥炬牸寮�
+ for (const [k, i] of this.largeAreaChartList.entries()) {
+ this.$refs.largeAreaChartRef[k].refreshData(i.listData, i.yAxisMonth)
+ }
+ },
+ // 寮�鍚畾鏃跺櫒
+ destroyTimerAgainStart() {
+ this.largeAreaChartList = []
+ clearInterval(this.timer)
+ this.timer = setInterval(this.getMqttLists, 1000 * 3)
+ this.getMqttLists()
}
}
}
</script>
-<style>
-.header_div {
- height: 5em;
- width: 100%;
- display: flex;
- align-items: center;
- margin-left: 3em;
-}
-</style>
+<style></style>
--
Gitblit v1.9.3