From deae00b5df65146d3e92f86f686fc0280753b91b Mon Sep 17 00:00:00 2001 From: zcxlsm Date: Thu, 11 Sep 2025 16:35:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(analytics-trends):=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BB=AA=E8=A1=A8=E7=B1=BB=E5=9E=8B=E9=80=89=E6=8B=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dashboard/analytics/analytics-trends.vue | 17 +++++++--- .../src/views/dashboard/analytics/index.vue | 33 +++++++++++++++---- 2 files changed, 40 insertions(+), 10 deletions(-) diff --git a/apps/web-antd/src/views/dashboard/analytics/analytics-trends.vue b/apps/web-antd/src/views/dashboard/analytics/analytics-trends.vue index 353d4c96..3e720e73 100644 --- a/apps/web-antd/src/views/dashboard/analytics/analytics-trends.vue +++ b/apps/web-antd/src/views/dashboard/analytics/analytics-trends.vue @@ -2,9 +2,18 @@ import type { EchartsUIType } from '@vben/plugins/echarts'; import { EchartsUI, useEcharts } from '@vben/plugins/echarts'; -import { onMounted, ref, defineExpose } from 'vue'; +import { onMounted, ref, defineExpose, watch } from 'vue'; import { meterRecordTrend } from '#/api/property/energyManagement/meterRecord'; import dayjs from 'dayjs'; + +const props = defineProps({ + meterType: { + type: Number, + default: 1, + }, +}); + +const meterType = ref(1); const chartRef = ref(); const { renderEcharts } = useEcharts(chartRef); // 添加日期选择相关逻辑 @@ -16,12 +25,12 @@ const getDaysInMonth = (date: any) => { const daysInMonth = new Date(year, month, 0).getDate(); return Array.from({ length: daysInMonth }, (_, i) => i + 1); }; -const getMeterRecordTrend = async (selectedDate: any) => { +const getMeterRecordTrend = async (selectedDate: any, meterType: any) => { const res = await meterRecordTrend({ day: dayjs().format('YYYY-MM-DD'), month: selectedDate.value, year: dayjs().format('YYYY'), - meterType: 1, + meterType: meterType.value, meterId: null, floorId: null, }); @@ -109,7 +118,7 @@ const getMeterRecordTrend = async (selectedDate: any) => { }); }; onMounted(async () => { - getMeterRecordTrend(selectedDate); + getMeterRecordTrend(selectedDate, meterType); }); // 暴露方法给父组件调用 defineExpose({ diff --git a/apps/web-antd/src/views/dashboard/analytics/index.vue b/apps/web-antd/src/views/dashboard/analytics/index.vue index 4eb8c766..59d09876 100644 --- a/apps/web-antd/src/views/dashboard/analytics/index.vue +++ b/apps/web-antd/src/views/dashboard/analytics/index.vue @@ -12,7 +12,7 @@ import AnalyticsVisitsData from './analytics-visits-data.vue'; import AnalyticsVisitsSales from './analytics-visits-sales.vue'; import AnalyticsVisitsSource from './analytics-visits-source.vue'; import { ref, onMounted } from 'vue'; -import { DatePicker } from 'ant-design-vue'; +import { DatePicker, message } from 'ant-design-vue'; import { Radio } from 'ant-design-vue'; import { getIndexCount, @@ -52,7 +52,7 @@ const overviewItems = ref([ ]); //tab选择 -const timeUnit = ref(1); +const meterType = ref(1); // 月份选择 const selectedDate = ref(null); const paramDate = ref(null); @@ -65,12 +65,28 @@ const analyticsTrendsRef = ref | null>( ); const handleDateChange = (date: any) => { paramDate.value = date.format('YYYY-MM'); + console.log('meterType', meterType); // 调用子组件的方法 if ( analyticsTrendsRef.value && analyticsTrendsRef.value.getMeterRecordTrend ) { - analyticsTrendsRef.value.getMeterRecordTrend(paramDate); + analyticsTrendsRef.value.getMeterRecordTrend(paramDate, meterType); + } +}; + +const handleMeterTypeChange = (e: Event) => { + if (!selectedDate.value) { + message.warning('请选择月份'); + return; + } + paramDate.value = selectedDate.value.format('YYYY-MM'); + // 调用子组件的方法 + if ( + analyticsTrendsRef.value && + analyticsTrendsRef.value.getMeterRecordTrend + ) { + analyticsTrendsRef.value.getMeterRecordTrend(paramDate, meterType); } }; @@ -199,8 +215,13 @@ onMounted(() => { class="flex items-center justify-between p-5" style="width: 100%; height: 100px" > - + 电量 + 水量 { @change="handleDateChange" /> -
+
-