From 9cc59c17892a7e69de54e06b5931e78c9b05551c Mon Sep 17 00:00:00 2001
From: zhuguifei <zhuguifei@zhuguifeideiMac.local>
Date: 星期二, 02 九月 2025 09:24:34 +0800
Subject: [PATCH] 添加mqtt登出

---
 pages/tabBar/monitor.vue |  354 ++++++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 289 insertions(+), 65 deletions(-)

diff --git a/pages/tabBar/monitor.vue b/pages/tabBar/monitor.vue
index 491fdd0..489e0a3 100644
--- a/pages/tabBar/monitor.vue
+++ b/pages/tabBar/monitor.vue
@@ -1,22 +1,36 @@
 <template>
 	<view class="container">
-		<!-- <view class="text-xxl" style="position: fixed; left: 40rpx;top: 100rpx;color: black;z-index: 99;">
-			<text @click="goBack" class="cuIcon-back" ></text>
-		</view> -->
 
 		<cu-custom bgColor="bg-gradual-blue" :isBack="false">
 			<block slot="content">鏈哄彴鐩戞帶</block>
 		</cu-custom>
 		<!-- <u-notice-bar :text="notice" mode="closable"  ></u-notice-bar> -->
-		<!--  -->
-		<view class="uni-padding-wrap">
+	 
+		<!--  <view class="nav uni-padding-wrap margin-bottom-xs">
+			<u--image v-if="runStatu" :showLoading="true" :fade="true" duration="450"
+				src="https://dev.shlanbao.cn:9999/fileTransfer/preview?userFileId=1645312976277106688&isMin=false&shareBatchNum=&extractionCode="
+				width="100%" height="200px" mode="aspectFit">
+				<template v-slot:loading>
+					<u-loading-icon></u-loading-icon>
+				</template>
+			</u--image>
+
+			<u--image v-else :showLoading="true" :fade="true" duration="450"
+				src="https://dev.shlanbao.cn:9999/fileTransfer/preview?userFileId=1645312976381964288&isMin=false&shareBatchNum=&extractionCode="
+				width="100%" height="200px" mode="aspectFit">
+				<template v-slot:loading>
+					<u-loading-icon></u-loading-icon>
+				</template>
+			</u--image>
+		</view> -->
+		<view  class="uni-padding-wrap">
 			<view class="page-section swiper">
 				<view class="page-section-spacing">
 					<swiper class="swiper" style="height: 450rpx;" circular="true" indicator-dots="true" autoplay="true"
 						interval="3500" duration="600">
 						<swiper-item class="swiper-list" v-for="(item, index) in bannerList" :key="index">
 							<view class="swiper-item uni-bg-red">
-								<image class="swiper-img" :src="item.imageUrl" mode="aspectFill"></image>
+								<image class="swiper-img" :src="item.imageUrl" mode="aspectFit"></image>
 							</view>
 						</swiper-item>
 					</swiper>
@@ -31,9 +45,9 @@
 				<view class='bg-orange cu-tag radius light sm margin-right-xs' v-else>鍋滄</view>
 				<!-- <view class='bg-cyan cu-tag radius light sm'>姝e父</view> -->
 			</view>
-			<view class="text-black text-df flex">
-				<text class="margin-right-xs">閰嶆柟鍚嶇О:</text>
-				<text>{{ formulaName   }} </text>
+			<view class="text-black text-df flex align-center">
+				<text class="margin-right-xs">鎵规:</text>
+				<text>{{ this.$lget(this.model,'code') }} </text>
 			</view>
 
 			<view class="text-gray  margin-top-xs">
@@ -43,32 +57,40 @@
 
 			<view class="text-gray  margin-top-xs">
 				<text class="margin-right-xs">鎶曟枡:</text>
-				<text>{{$lget(model,'feed')}}妗�</text>
+				<text class="text-cyan">{{$lget(model,'feed')}} <text class="text-gray margin-left-xs">绛�</text></text>
+
+			</view>
+			<view class="text-gray  margin-top-xs">
+				<text class="margin-right-xs">閲嶉噺:</text>
+				<text class="text-cyan margin-right-xs">{{$lget(model,'trendVo.weight')}}<text
+						class="text-gray margin-left-xs">/</text></text>
+				<text> <text class="text-line-through">{{$lget(model,'originWeight')}}</text> <text
+						class="text-gray margin-left-xs">kg</text></text>
+
 			</view>
 
-			<!-- <view class="margin-tb-sm" style="position: relative;">
-				<text class="text-gray text-df margin-right-xs">閲嶉噺:</text>
-				<text class="text-cyan text-bold text-xxl margin-right-xs">100kg</text>
-				<text class="text-gray text-df margin-right-xs">鏃堕棿:</text>
-				<text class="text-cyan text-bold text-xxl margin-right-xs">0min </text>
-		 
-			</view>
-			 -->
+			<view class="text-gray  margin-top-xs">
+				<text class="margin-right-xs">鐢ㄦ椂:</text>
+				<text class="text-cyan">{{$lget(model,'trendVo.totalTime')}}<text
+						class="text-gray margin-left-xs">min</text></text>
 
+			</view>
 
 			<view class="margin-tb-sm" style="position: relative;">
 				<text class="text-gray text-df margin-right-xs">鍚按鐜�:</text>
-				<text class="text-cyan text-bold text-xxl margin-right-xs">{{ $lget(this.model, 'trendVo.moisture') }}%
+				<text class="text-cyan text-bold text-xl margin-right-xs">{{ $lget(this.model, 'trendVo.moisture') }}%
 				</text>
 				<text class="text-gray text-df margin-right-xs">鐑:</text>
-				<text class="text-cyan text-bold text-xxl margin-right-xs">{{$lget(this.model, 'trendVo.wind') }} 鈩� </text>
+				<text class="text-cyan text-bold text-xl margin-right-xs">{{$lget(this.model, 'trendVo.bellowsTemp') }}鈩�
+				</text>
 
 
 				<view class="scoreBox">
-					<text class="text-green text-xl text-bold">{{$lget(model,'target')}}%<text
-							class="text-gray text-sm">/鐩爣</text> </text>
-					<text class="text-gray text-xl text-bold">{{$lget(model,'initial')}}%<text
-							class="text-gray text-sm">/鍒濆</text> </text>
+					<text class="text-gray text-sm">鐩爣: <text
+							class="text-green text-xl text-bold">{{$lget(model,'target')}}% </text> </text>
+					<text class="text-gray text-sm">鍒濆: <text
+							class="text-gray text-xl text-bold">{{$lget(model,'initial')}}% </text></text>
+
 					<!-- <view class="text-yellow text-xs flex justify-around">
 						<uni-text class="text-yellow cuIcon-favorfill"></uni-text>
 						<uni-text class="text-yellow cuIcon-favorfill"></uni-text>
@@ -199,8 +221,8 @@
 					<view class="h-td">骞茬嚗鏃堕棿</view>
 				</view>
 				<view class="h-tr h-tr-2">
-					<view class="h-td">{{$lget(model,'envTemp')}}鈩�</view>
-					<view class="h-td">{{$lget(model,'envHum')}}%</view>
+					<view class="h-td">{{$lget(model,'envTemp') == "" ? "--" :  $lget(model,'envTemp')}}鈩�</view>
+					<view class="h-td">{{$lget(model,'envHum') == "" ? "--" :$lget(model,'envHum') }}%</view>
 					<view class="h-td">{{$lget(model,'windTemp')}}鈩�</view>
 					<view class="h-td">{{$lget(model,'delay')}}ms</view>
 					<view class="h-td">{{$lget(model,'et')}}min</view>
@@ -321,8 +343,21 @@
 		</view>
 
  -->
-		<view style="height: 20rpx; width: 1rpx;"></view>
 
+		<view class="cu-bar bg-white margin-top-xs">
+			<view class="action sub-title">
+				<text class="text-xl text-bold text-blue text-shadow">瀹炴椂鐩戞帶</text>
+				<text class="text-ABC text-blue"></text>
+			</view>
+		</view>
+		<view class="chartsMain">
+			<qiun-data-charts type="area" :opts="opts" :animation="false" :canvas2d="true" :ontouch="true"
+				:chartData="chartData" />
+		</view>
+
+
+
+		<view style="height: 20rpx; width: 1rpx;"></view>
 
 
 	</view>
@@ -330,79 +365,235 @@
 
 <script>
 	import get from 'lodash.get'
+	// 鍥捐〃
+	import uCharts from "@/components/u-charts/u-charts.js";
+	var _self;
+	var canvaArea = null;
 	export default {
 		data() {
 			return {
+				chartData: {},
+				opts: {
+					color: ["#1890FF", "#91CB74", "#FAC858", "#EE6666", "#73C0DE", "#3CA272", "#FC8452", "#9A60B4",
+						"#ea7ccc"
+					],
+					padding: [15, 10, 0, 15],
+					dataLabel: false,
+					dataPointShape: false,
+					enableScroll: false,
+					legend: {},
+					update:true,
+					xAxis: {
+						disableGrid: true,
+						labelCount: 6
+					},
+					yAxis: {
+						gridType: "dash",
+						dashLength: 2,
+					},
+					extra: {
+						line: {
+							type: "curve",
+							width: 2,
+							activeType: "hollow",
+							linearType: "custom"
+						}
+					}
+				},
 				notice: "2023-03-1812:00:001鍙锋満鍙颁綆娓╂姤璀�",
-				timer: null,
 				model: {},
 				queryParam: {
 					machineid: "GM001",
-					tenantid: 1000
+					tenantid: 1003
 				},
 				bannerList: [{
-						imageUrl: '/static/image/equ1.png'
+						imageUrl: '../../static/image/ganzaoji-x.png'
 					},
 					{
-						imageUrl: '/static/image/equ1.png'
+						imageUrl: '../../static/image/ganzaoji-x.png'
 					}
 				]
+
+
 			}
 		},
-		onLoad(option) {},
 		onShow() {
-			var that = this;
 			console.info("鐩戞帶椤甸潰鏄剧ず")
-			this.getRealData(this)
-			if (!that.timer) {
-				that.timer = setInterval(function() {
+			this.getRealData()
+			if (!this.$monitorTimer) {
+				this.$monitorTimer = setInterval(() => {
 					console.info("瀹氭椂鍣ㄥ伐浣�")
-					console.info(that.timer)
-					that.getRealData(that)
+					console.info(this.$monitorTimer)
+					this.getRealData()
 
 				}, 1000 * 12)
 			}
 
 
 		},
+	
+		onLoad(e) {
+
+		},
 		onHide() {
-			clearInterval(this.timer)
+			clearInterval(this.$monitorTimer)
+			this.$monitorTimer = null
 			console.info("鐩戞帶椤甸潰闅愯棌")
 			console.info("瀹氭椂鍣ㄥ仠姝�")
-			console.info(this.timer)
+			console.info(this.$monitorTimer)
 		},
 		onUnload() {
-			clearInterval(this.timer)
+
 		},
 		mounted() {
 
 		},
-		methods: {
+		onReady() {
+			//this.getServerData()
 
-			getRealData(that) {
-				console.info(that)
-				that.$api.getRealTimeData(this.queryParam).then((res) => {
+		},
+		methods: {
+			getServerData() {
+				//妯℃嫙浠庢湇鍔″櫒鑾峰彇鏁版嵁鏃剁殑寤舵椂
+				setTimeout(() => {
+					let res = {
+						categories: ["2018", "2019", "2020", "2021", "2022", "2023"],
+						series: [{
+								name: "鎴愪氦閲廇",
+								data: [35, 8, null, 37, 4, 20]
+							},
+							{
+								name: "鎴愪氦閲廈",
+								connectNulls: true,
+								data: [70, 40, null, 100, 44, 68]
+							},
+							{
+								name: "鎴愪氦閲廋",
+								data: [100, 80, null, 150, 112, 132]
+							}
+						]
+					};
+					this.chartData = JSON.parse(JSON.stringify(res));
+				}, 500);
+			},
+
+            /**
+			 * 缁勫缓鏁版嵁
+			 */
+			createData() {
+				//娓╁害鏁版嵁 10s涓�娆�
+				let bellowsTemp = this.$lget(this.model, 'bellowsTemp');
+				//绉伴噸鏁版嵁 锛堥噸閲忋�佸惈姘寸巼锛�
+				let detailList = this.$lget(this.model, 'detailList');
+				if (!bellowsTemp) return;
+				let wmap = {} //鍙栧嚭鎵�鏈夐噸閲忔暟鎹�
+				let mmap = {} //鍙栧嚭鎵�鏈夋俯搴︽暟鎹�
+				let minW = null; //绗竴涓噸閲忔暟鎹�
+				let minM = null; //绗竴涓俯搴︽暟鎹�
+				let maxW = null; //鏈�鍚庝竴涓噸閲忔暟鎹�
+				let maxM = null; //鏈�鍚庝竴涓俯搴︽暟鎹�
+				//鍙栧嚭閲嶉噺鍜屽惈姘寸巼鏁版嵁
+				if (detailList && detailList.length > 0) {
+					for (var i = 0; i < detailList.length; i++) {
+						let item = detailList[i]
+						//姣忎釜鏃堕棿鑺傜偣閲嶉噺鏁版嵁
+						wmap[item.totalTime] = item.weight
+						mmap[item.totalTime] = item.moisture
+						if (i == 0) {
+							minW = item.weight
+							minM = item.moisture
+						}
+						if (i == (detailList.length - 1)) {
+							maxW = item.weight
+							maxM = item.moisture
+						}
+					}
+				}
+				let tList = [] //娓╁害
+				let wList = [] //閲嶉噺
+				let mList = [] //鍚按鐜�
+				let xList = [] //xAxis
+				//鏍规嵁娓╁害鏁版嵁闀垮害锛岀敓鎴恱杞淬�侀噸閲忓拰鍚按鐜囨暟缁勭瓑
+				for (let key in bellowsTemp) {
+					//console.log(key + '---' + bellowsTemp[key])
+					tList.push(bellowsTemp[key])
+					wList.push(wmap[key] || null)
+					mList.push(mmap[key] || null)
+					xList.push(key)
+				}
+				//濉厖娴嬭瘯鏁版嵁 TODO 鍒犻櫎
+				// for(let i = 1 ; i <= 10 ; i++){
+				// 	tList.push(i*2)
+				// 	wList.push(i*100)
+				// 	mList.push(i*10)
+				// 	xList.push(i)
+				// }
+
+				//绗竴涓暟鎹负绌� 璁剧疆涓虹涓�娆$О閲嶆暟鎹紙娌℃湁绉伴噸鏁版嵁鍒欒缃负0锛�
+				if (!wList[0]) {
+					wList[0] = minW || 0
+				}
+
+
+				if (!mList[0]) {
+					mList[0] = minM || 0
+				}
+
+				//鏈�鍚庝竴涓暟鎹负绌� 璁剧疆涓烘渶鍚庝竴娆$О閲嶆暟鎹�
+				if (!wList[wList.length - 1]) {
+					wList[wList.length - 1] = maxW
+				}
+
+				if (!mList[mList.length - 1]) {
+					mList[mList.length - 1] = maxM
+				}
+				// 	let weightList = detailList.map(item => {
+				// 		return {type: item.weight, data: []}
+				// 	})
+
+				let series = [{
+					name: '閲嶉噺',
+					data: wList,
+					connectNulls: true,
+					color: '#facc14'
+				}, {
+					name: '鍚按',
+					data: mList,
+					connectNulls: true,
+					color: '#2fc25b'
+				}, {
+					name: '娓╁害',
+					data: tList,
+					color: '#1890ff'
+				}]
+
+				// console.error(wmap)
+				// console.error(mmap)
+				// console.error("============")
+				// console.error(wList)
+				// console.error(mList)
+				// console.error(tList)
+				let res = {
+					categories: xList,
+					series: series
+				}
+				this.chartData = JSON.parse(JSON.stringify(res));
+			},
+            /**
+			 * 鑾峰彇瀹炴椂鏁版嵁
+			 */
+			getRealData() {
+				this.$api.getRealTimeData(this.queryParam).then((res) => {
 					if (res.success) {
 						this.model = res.result
+						//鍒涘缓鍥捐〃鏁版嵁
+						this.createData()
 					}
 				}).catch((err) => {
 					console.log('request fail', err);
 				})
 			},
-			getData(id) {
-				let opts = {
-					url: 'api/circle.Areas/info',
-					method: 'get'
-				};
-				let params = {
-					"circle_areas_id": id,
-				}
 
-				uni.showLoading({
-					title: '鍔犺浇涓�'
-				})
-
-			},
 			goBack() {
 				uni.navigateBack({
 					delta: 1
@@ -412,7 +603,7 @@
 		computed: {
 			//杩愯鐘舵��
 			runStatu() {
-				let stop = this.$lget(this.model, 'result.stop');
+				let stop = this.$lget(this.model, 'stop');
 				return !stop
 
 			},
@@ -430,6 +621,7 @@
 
 
 			},
+			//閰嶆柟鍚嶇О
 			formulaName() {
 				let name = this.$lget(this.model, 'herbName')
 				let code = this.$lget(this.model, 'code')
@@ -443,15 +635,16 @@
 				return formula
 			},
 			//骞茬嚗寮�濮嬫椂闂�
-			startTime() {
-				if (this.model && this.model.detailList) {
-					if (this.model.detailList.length > 0) {
-						return this.model.detailList[0].tim
+			startTime() {
+				let detailList = this.$lget(this.model, 'detailList')
+				if (detailList) {
+					if (detailList.length > 0) {
+						return detailList[0].tim
 					}
 				}
 				return ""
 			},
- 
+
 		}
 	}
 </script>
@@ -523,4 +716,35 @@
 		color: #888;
 		display: block;
 	}
-</style>
+
+	.chartsMain {
+		width: 750rpx;
+		height: 450rpx;
+		padding-top: 15rpx;
+		background: #fff;
+		margin-bottom: 24rpx;
+		border-top: 2rpx solid #f2f2f2;
+
+		.charts {
+			width: 750rpx;
+			height: 450rpx;
+			box-sizing: border-box;
+		}
+	}
+
+	.charts-box {
+		width: 100%;
+		height: 300px;
+	}
+
+	.nav {
+		background-color: white;
+		width: 100%;
+		height: 200px;
+
+		image {
+			width: 100%;
+			height: 100%;
+		}
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3