<template> <a-tabs v-model:activeKey="activeKey" @change="handleTabChange"> <a-tab-pane key="1" tab="能耗统计"> <energyConsumption ref="energyConsumptionRef" /> </a-tab-pane> <a-tab-pane key="2" tab="碳排统计" force-render> <carbonEmissions ref="carbonEmissionsRef" /> </a-tab-pane> <a-tab-pane key="3" tab="碳排速算"> <quickCalculation ref="quickCalculationRef" /> </a-tab-pane> </a-tabs> </template> <script lang="ts" setup> import { ref } from 'vue'; import energyConsumption from './energyConsumption/index.vue'; import carbonEmissions from './carbonEmissions/index.vue'; import quickCalculation from './quickCalculation/index.vue'; defineOptions({ name: 'CarbonEmissionStatisticsIndex', // 与页面路由name一致缓存才可生效 components: { energyConsumption, carbonEmissions, quickCalculation, }, }); const activeKey = ref('1'); const energyConsumptionRef = ref<InstanceType<typeof energyConsumption> | null>(null); const carbonEmissionsRef = ref<InstanceType<typeof carbonEmissions> | null>(null); const quickCalculationRef = ref<InstanceType<typeof quickCalculation> | null>(null); // 切换tab页的回调 const handleTabChange = (key) => { console.log('Tab changed:', key); // 在这里可以执行需要在页面切换时执行的逻辑 if (key === '1') { if (energyConsumptionRef.value) { energyConsumptionRef.value.mainRef.nsTableRef.reload(); } } else if (key === '2') { if (carbonEmissionsRef.value) { carbonEmissionsRef.value.getTableList(); // 调用子组件的方法 } } else if (key === '3') { if (quickCalculationRef.value) { quickCalculationRef.value.getTreeData(); } } }; </script>