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