瀏覽代碼

feat(views): 能耗分析页面支持导出数据

wangcong 1 月之前
父節點
當前提交
64f1d8700c
共有 2 個文件被更改,包括 19 次插入4 次删除
  1. 6 1
      src/api/index.ts
  2. 13 3
      src/views/energy-analysis/EnergyConsumption.vue

+ 6 - 1
src/api/index.ts

@@ -111,7 +111,7 @@ const apiSys = (path: string, params?: unknown) => {
  * 获取业务服务 url
  */
 const apiBiz = (path: string, params?: unknown) => {
-  const apiUrl = params ? `${path}?${qs.stringify(params)}` : path;
+  const apiUrl = params ? `${path}?${qs.stringify(params, { arrayFormat: 'repeat' })}` : path;
   return `/api-biz${apiUrl}`;
 };
 
@@ -701,6 +701,11 @@ export const getElectricityDataStatistics = async (params: ElectricityStatistics
   return data;
 };
 
+export const downloadElectricityHisData = async (params: ElectricityStatisticsQuery) => {
+  const blob = await request<Blob>(apiBiz('/deviceElectricityDataChange/download', params));
+  return blob;
+};
+
 // 平台标准协议参数
 
 export const getProtocolStandardParam = async (paramId: number) => {

+ 13 - 3
src/views/energy-analysis/EnergyConsumption.vue

@@ -1,6 +1,7 @@
 <script setup lang="ts">
 import { computed, onMounted, ref, watch } from 'vue';
 import VChart from 'vue-echarts';
+import dayjs from 'dayjs';
 import { BarChart, LineChart, PieChart } from 'echarts/charts';
 import { DatasetComponent, GridComponent, LegendComponent, TitleComponent, TooltipComponent } from 'echarts/components';
 import { use } from 'echarts/core';
@@ -10,7 +11,8 @@ import SvgIcon from '@/components/SvgIcon.vue';
 import { useRequest } from '@/hooks/request';
 import { useViewVisible } from '@/hooks/view-visible';
 import { t } from '@/i18n';
-import { getElectricityDataStatistics } from '@/api';
+import { downloadElectricityHisData, getElectricityDataStatistics } from '@/api';
+import { downloadBlob } from '@/utils';
 import type { IconfontIcon } from '@/icons/fonts/iconfont';
 
 import cumulativeElectricityBill from '@/assets/img/cumulative-electricity-bill.png';
@@ -402,8 +404,16 @@ const deviceAndGroups = computed<EquipmentData[]>(() => {
   }));
 });
 
-const exportData = () => {
-  return;
+const exportData = async () => {
+  const fileName = t('energyAnalysis.energyConsumptionAnalysis') + ' - ' + dayjs().format('YYYYMMDDHHmmss');
+  const file = await downloadElectricityHisData({
+    deviceGroupId: 7,
+    deviceTypes: [DeviceType.冷水主机, DeviceType.冷却塔, DeviceType.冷却泵, DeviceType.冷冻泵],
+    startTime: '2025-04-01 00:00:00',
+    endTime: '2025-05-01 23:00:00',
+  });
+
+  downloadBlob(file, fileName);
 };
 
 const { handleRequest: handleDevElectricRequest } = useRequest();