From 022e0a3889e6510cd1bcc1ca6f18f00b3a62b638 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期四, 25 七月 2024 14:30:01 +0800
Subject: [PATCH] 监测列表

---
 src/components/chat/chatComponents/summaryCom/components/deviceLastValue/MonitorContent.vue |   56 +++++++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 53 insertions(+), 3 deletions(-)

diff --git a/src/components/chat/chatComponents/summaryCom/components/deviceLastValue/MonitorContent.vue b/src/components/chat/chatComponents/summaryCom/components/deviceLastValue/MonitorContent.vue
index b37996f..f0563f5 100644
--- a/src/components/chat/chatComponents/summaryCom/components/deviceLastValue/MonitorContent.vue
+++ b/src/components/chat/chatComponents/summaryCom/components/deviceLastValue/MonitorContent.vue
@@ -1,6 +1,6 @@
 <template>
 	<div
-		class="flex cursor-none"
+		class="flex"
 		:class="`space-x-[${THICK_BORDER_WIDTH}px]`"
 		:style="{
 			backgroundColor: BORDER_COLOR,
@@ -24,15 +24,44 @@
 				height: `${CELL_HEIGHT}px`,
 			}"
 		>
-			<span>
+			<span class="cursor-pointer " @mouseover="valueMouseOver($event, item)" @mouseleave="valueMouseLeave">
 				{{ item[type] }}
 			</span>
+		</div>
+		<div
+			v-show="hoverState.show && hoverState.data"
+			class="z-40 fixed p-2 bg-white"
+			style="transform-origin: center top"
+			:style="{
+				left: hoverState.left + 'px',
+				top: hoverState.top + 'px',
+			}"
+		>
+			<div v-if="hoverState.data?.OTITLE" class="font-bold mb-1">{{ hoverState.data?.OTITLE }}</div>
+			<div class="w-full space-y-1">
+				<div v-if="hoverState.data?.OTYPE" class="flex">
+					<div class="w-16">绫诲瀷</div>
+					<div class="before:content-[':'] before:pr-1.5">{{ hoverState.data?.OTYPE }}</div>
+				</div>
+				<div v-if="hoverState.data?.ONAME" class="flex">
+					<div class="w-16">鍚嶇О</div>
+					<div class="before:content-[':'] before:pr-1.5">{{ hoverState.data?.ONAME }}</div>
+				</div>
+				<div v-if="hoverState.data?.[type]" class="flex">
+					<div class="w-16">鐩戞祴鍊�</div>
+					<div class="before:content-[':'] before:pr-1.5">{{ hoverState.data?.[type] }}</div>
+				</div>
+				<div class="flex" v-if="hoverState.data?.OTIME">
+					<div class="w-16">鏁版嵁鏃堕棿</div>
+					<div class="before:content-[':'] before:pr-1.5">{{ hoverState.data?.OTIME }}</div>
+				</div>
+			</div>
 		</div>
 	</div>
 </template>
 
 <script setup lang="ts">
-import type { PropType } from 'vue';
+import { reactive, type PropType } from 'vue';
 import { BORDER_COLOR, CELL_HEIGHT, CONTENT_CELL_CLASS, ROW_HEADER_CELL_CLASS, THICK_BORDER_WIDTH } from './constants';
 import type { MonitorValue } from './types';
 const props = defineProps({
@@ -56,5 +85,26 @@
 		type: Number,
 	},
 });
+
+const hoverState = reactive({
+	left: 0,
+	top: 0,
+	show: false,
+	data: null as MonitorValue,
+});
+
+const TIP_OFFSET = 10;
+const valueMouseOver = (e, item: MonitorValue) => {
+	hoverState.show = true;
+	const { pageX, pageY } = e;
+	hoverState.left = pageX + TIP_OFFSET;
+	hoverState.top = pageY + TIP_OFFSET;
+	hoverState.data = item;
+};
+
+const valueMouseLeave = () => {
+	hoverState.show = false;
+	hoverState.data = null;
+};
 </script>
 <style scoped lang="scss"></style>

--
Gitblit v1.9.3