From a791a033d892fb08f5acdcba915b98a863866e99 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期五, 08 十一月 2024 13:47:29 +0800
Subject: [PATCH] 分享对话为空的情况

---
 src/components/chat/chatComponents/summaryCom/components/deviceLastValue/MonitorContent.vue |   63 ++++++++++++++++++++++++++++++-
 1 files changed, 60 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..23721e6 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,17 +24,53 @@
 				height: `${CELL_HEIGHT}px`,
 			}"
 		>
-			<span>
+			<span
+				class="cursor-pointer"
+				@mouseover="valueMouseOver($event, item)"
+				@mouseleave="valueMouseLeave"
+				@click="emit('itemClick', item, type)"
+			>
 				{{ 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-8">绫诲瀷</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-8">缂栧彿</div>
+					<div class="before:content-[':'] before:pr-1.5">{{ hoverState.data?.ONAME }}</div>
+				</div>
+				<div v-if="hoverState.data?.[type] || hoverState.data?.[type] === 0" class="flex">
+					<div class="w-8">鐩戞祴</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-8">鏃堕棿</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 emit = defineEmits(['itemClick']);
 const props = defineProps({
 	/** @description 鏍囬 */
 	title: {
@@ -56,5 +92,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