| | |
| | | <template> |
| | | <el-tabs type="border-card"> |
| | | <el-tab-pane label="新设备"> |
| | | <el-tabs ref="tabsRef"> |
| | | <el-tab-pane label="静安夜间施工管理"> |
| | | <JingAnNightConstruction></JingAnNightConstruction> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="静安工地扬尘设备信息匹配"> |
| | | <NewDevice></NewDevice> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="新工地"> |
| | |
| | | </el-tabs> |
| | | </template> |
| | | <script setup> |
| | | import { ref, onMounted, provide, computed } from 'vue'; |
| | | import NewDevice from './NewDevice.vue'; |
| | | import NewConstruction from './NewConstruction.vue'; |
| | | import JingAnNightConstruction from './JingAnNightConstruction.vue'; |
| | | |
| | | // 定义 tabs ref |
| | | const tabsRef = ref(null); |
| | | const tabsHeaderHeight = ref(0); |
| | | |
| | | onMounted(() => { |
| | | // 确保 DOM 已经渲染完成 |
| | | setTimeout(() => { |
| | | tabsHeaderHeight.value = getTabsHeaderHeight(); |
| | | }, 0); |
| | | }); |
| | | |
| | | function getTabsHeaderHeight() { |
| | | if (tabsRef.value) { |
| | | // 获取 el-tabs 组件的 DOM 元素 |
| | | const tabsElement = tabsRef.value.$el; |
| | | |
| | | // Element UI 的 el-tabs header 通常有 .el-tabs__header 类名 |
| | | const headerElement = tabsElement.querySelector('.el-tabs__header'); |
| | | |
| | | if (headerElement) { |
| | | // 获取 header 的 offsetHeight(包含 padding 和 border,不包含 margin) |
| | | const offsetHeight = headerElement.offsetHeight; |
| | | |
| | | // 获取计算样式以获取 margin 值 |
| | | const computedStyle = window.getComputedStyle(headerElement); |
| | | |
| | | // 解析 margin 值(上下左右) |
| | | const marginTop = parseFloat(computedStyle.marginTop || 0); |
| | | const marginBottom = parseFloat(computedStyle.marginBottom || 0); |
| | | // const marginLeft = parseFloat(computedStyle.marginLeft || 0); |
| | | // const marginRight = parseFloat(computedStyle.marginRight || 0); |
| | | |
| | | // 计算总高度(包含所有 padding、border 和 margin) |
| | | const totalHeightWithMargin = offsetHeight + marginTop + marginBottom; |
| | | |
| | | return totalHeightWithMargin; |
| | | } |
| | | } |
| | | return 0; |
| | | } |
| | | |
| | | provide('tabsHeaderHeight', computed(() => tabsHeaderHeight.value)); |
| | | </script> |
| | | <style scoped></style> |