From 45f16bffeef4d72a0279c4178a85b0eeec50c4a3 Mon Sep 17 00:00:00 2001
From: wujingjing <gersonwu@qq.com>
Date: 星期三, 07 八月 2024 14:51:15 +0800
Subject: [PATCH] question

---
 src/components/chat/chatComponents/summaryCom/components/deviceLastValue/DeviceLastValueCom.vue |   64 +++++++++++++++++++++++--------
 1 files changed, 47 insertions(+), 17 deletions(-)

diff --git a/src/components/chat/chatComponents/summaryCom/components/deviceLastValue/DeviceLastValueCom.vue b/src/components/chat/chatComponents/summaryCom/components/deviceLastValue/DeviceLastValueCom.vue
index 69b0ebe..63c58e4 100644
--- a/src/components/chat/chatComponents/summaryCom/components/deviceLastValue/DeviceLastValueCom.vue
+++ b/src/components/chat/chatComponents/summaryCom/components/deviceLastValue/DeviceLastValueCom.vue
@@ -1,4 +1,5 @@
 <template>
+	<!-- 瀹炴椂鐩戞祴鍒楄〃 -->
 	<div ref="containerRef" class="w-full flex justify-center" v-resize="resizeHandler">
 		<div class="inline-block">
 			<div
@@ -8,6 +9,9 @@
 					backgroundColor: BORDER_COLOR,
 				}"
 			>
+				<div class="flex-center font-bold text-base bg-[#8db4e2]" :style="{ height: `${CELL_HEIGHT}px` }">
+					{{ data.title }}
+				</div>
 				<div
 					v-for="(rowChunk, index) in currentRowChunkList"
 					:key="index"
@@ -50,6 +54,7 @@
 							:title="firstRow.title"
 							:type="firstRow.id"
 							:values="rowChunk"
+							@itemClick="valueClick"
 						/>
 					</div>
 					<!-- 鍓╀綑琛� -->
@@ -61,6 +66,7 @@
 						:title="row.title"
 						:type="row.id"
 						:values="rowChunk"
+						@itemClick="valueClick"
 					/>
 				</div>
 			</div>
@@ -75,12 +81,13 @@
 				@current-change="handleCurrentChange"
 			/>
 		</div>
+		<RecordSetDialog v-model="chartDlgIsShow" :otype="chartDlgMapRow?.OTYPE" :oname="chartDlgMapRow?.ONAME" :indexName="indexName"/>
 	</div>
 </template>
 
 <script setup lang="ts">
 import _ from 'lodash';
-import { computed, onMounted, ref } from 'vue';
+import { computed, onActivated, onMounted, ref } from 'vue';
 import MonitorContent from './MonitorContent.vue';
 import { debounce, getTextWidth } from '/@/utils/util';
 
@@ -97,6 +104,7 @@
 	THIN_BORDER_WIDTH,
 } from './constants';
 import type { Monitor, MonitorValue } from './types';
+import RecordSetDialog from '../recordSet/RecordSetDialog.vue';
 
 const props = defineProps(chatComProps) as {
 	data: Monitor;
@@ -162,12 +170,15 @@
 const restColWidth = ref(colHeaderCellContentWidth.value);
 const calcMaxRowsNum = (groupCount: number, height, extraHeight = 0) => {
 	return Math.floor(
-		(height - THICK_BORDER_WIDTH - extraHeight) /
+		(height - 2 * THICK_BORDER_WIDTH - CELL_HEIGHT - extraHeight) /
 			(CELL_HEIGHT * groupCount + 2 * THICK_BORDER_WIDTH + THIN_BORDER_WIDTH * (groupCount - 2))
 	);
 };
 let maxColsNum = ref<number>(null);
 const resizeEvent = ({ width, height }) => {
+	if (width === 0 || height === 0) {
+		return;
+	}
 	// 鎸夋渶澶у搴︾畻鏈�澶у垪鏁�
 	maxColsNum.value = Math.floor(
 		(width - THICK_BORDER_WIDTH + colHeaderCellContentWidth.value - rowHeaderCellContentWidth.value) /
@@ -180,20 +191,22 @@
 		THICK_BORDER_WIDTH * (maxColsNum.value - 1) +
 		THICK_BORDER_WIDTH * 2;
 	let restWidth = width - currentWidth;
+	if (restWidth > 0) {
+		// 灏藉彲鑳藉垎缁欑涓�鍒�
+		if (rowHeaderCellContentWidth.value + restWidth > ROW_HEADER_CELL_MAX_WIDTH) {
+			restWidth = rowHeaderCellContentWidth.value + restWidth - ROW_HEADER_CELL_MAX_WIDTH;
+			firstColWidth.value = ROW_HEADER_CELL_MAX_WIDTH;
+		} else {
+			firstColWidth.value = rowHeaderCellContentWidth.value + restWidth;
+			restWidth = 0;
+		}
 
-	// 灏藉彲鑳藉垎缁欑涓�鍒�
-	if (rowHeaderCellContentWidth.value + restWidth > ROW_HEADER_CELL_MAX_WIDTH) {
-		restWidth = rowHeaderCellContentWidth.value - ROW_HEADER_CELL_MAX_WIDTH;
-		firstColWidth.value = ROW_HEADER_CELL_MAX_WIDTH;
-	} else {
-		firstColWidth.value = rowHeaderCellContentWidth.value + restWidth;
-		restWidth = 0;
-	}
-
-	// 鍏朵綑鍒嗙粰鍏朵粬鍒�
-	if (restWidth !== 0) {
-		const currentWidth = colHeaderCellContentWidth.value + restWidth;
-		restColWidth.value = currentWidth > CELL_MAX_WIDTH ? CELL_MAX_WIDTH : currentWidth;
+		// 鍏朵綑鍒嗙粰鍏朵粬鍒�
+		if (restWidth !== 0) {
+			const averageWidth = restWidth / (maxColsNum.value - 1);
+			const currentWidth = colHeaderCellContentWidth.value + averageWidth;
+			restColWidth.value = currentWidth > CELL_MAX_WIDTH ? CELL_MAX_WIDTH : currentWidth;
+		}
 	}
 
 	const groupCount = (props.data?.rows?.length ?? 0) + 1;
@@ -206,7 +219,11 @@
 	const isNeedPage = maxColsRowsNum > rowsNum;
 	rowsNum = isNeedPage ? calcMaxRowsNum(groupCount, height, PAGE_HEIGHT) : maxColsRowsNum;
 	// rowsNum 琛岋紝maxColsNum鍒楋紝绗竴鍒椾笉绠�
-	pageSize.value = isNeedPage ? rowsNum * (maxColsNum.value - 1) : total;
+	pageSize.value = isNeedPage
+		? rowsNum * (maxColsNum.value - 1)
+		: total % (maxColsNum.value - 1) === 0
+		? total
+		: (Math.floor(total / (maxColsNum.value - 1)) + 1) * (maxColsNum.value - 1);
 	pageIndex.value = 1;
 	// isNeedPage 鏄惁鍒嗛〉锛宺owsNum 琛屾暟锛宮axColsNum 鍒楁暟锛�
 };
@@ -247,6 +264,19 @@
 	return chunkResult;
 });
 
+//#region ====================== 鐐瑰嚮鐪嬫洸绾� ======================
+
+const chartDlgIsShow = ref(false);
+const chartDlgMapRow = ref(null);
+/** @description 鎸囨爣鍚嶇О */
+const indexName = ref(null);
+const valueClick = (item,type) => {
+	chartDlgMapRow.value = item;
+	chartDlgIsShow.value = true;
+	indexName.value = type;
+};
+//#endregion
+
 // 璁$畻鏈�澶у垪鏁�
 // (x-1)* cellWidth + rowHeaderCellContentWidth.value+thickBorderWidth*(x-1)+thickBorderWidth*2 <= width;
 
@@ -256,7 +286,7 @@
 // const groupCount = (TEST_DATA?.rows?.length ?? 0) + 1;
 // 璁$畻鏈�澶ц鏁�
 // y * (cellHeight * groupCount) +
-// 	(y - 1) * (2 * thickBorderWidth) +
+// 	(y - 1) * (2 * thickBorderWidth) +cellHeight+thickBorderWidth
 // 	thickBorderWidth +
 // 	thickBorderWidth * 2 +
 // 	y * (groupCount - 2) * thinBorderWidth <=

--
Gitblit v1.9.3