// 能耗详情 import ChartModule from '@/components/ManagementPage/chartModule'; import PageContent from '@/components/PageContent'; import PageTitle from '@/components/PageTitle'; import { queryAccumulativeEnergy, queryChartList, queryEnergyConfig, queryEnergyWaterChart, } from '@/services/OperationManagement'; import { ArrowDownOutlined, ArrowUpOutlined } from '@ant-design/icons'; import { useParams, useRequest } from '@umijs/max'; import { Spin } from 'antd'; import dayjs from 'dayjs'; import { useMemo } from 'react'; import styles from './manage.less'; const EnergyCostDetail = () => { return ( 能耗数据 ); }; export default EnergyCostDetail; export const EnergyDetail = () => { const { projectId } = useParams(); const TIMER = 3600000; // 全场概况 const { data: allFactoryData, loading: allFacLoading } = useRequest( queryEnergyConfig, { defaultParams: [projectId], pollingInterval: TIMER, }, ); // 当日累计能耗、吨水电耗、环比 const { data: energyData, loading: energyLoading } = useRequest( queryAccumulativeEnergy, { defaultParams: [projectId], pollingInterval: TIMER, }, ); // 吨水电耗折线图 const { data: chartData, loading: chartLosding } = useRequest( queryEnergyWaterChart, { defaultParams: [ { project_id: Number(projectId), start_time: dayjs().startOf('day').format('YYYY-MM-DD 00:00:00'), end_time: dayjs().format('YYYY-MM-DD 23:59:59'), }, ], pollingInterval: TIMER, formatResult(data) { const tempData = data.data; if (!tempData) { return null; } return { xData: tempData?.map((item) => item.data_time) || [], dataList: [ { type: 0, name: '吨水电耗', data: tempData?.map((item) => item.value) || [], }, ], }; }, }, ); // 电量折线图 const { data: electricChartData, loading: electricLosding } = useRequest( () => queryChartList({ project_id: Number(projectId), metric_code: 'plant_electricity', start_time: dayjs().startOf('day').format('YYYY-MM-DD 00:00:00'), end_time: dayjs().format('YYYY-MM-DD 23:59:59'), }), { pollingInterval: TIMER, formatResult(data) { if (!data?.data) return null; const tempData = data.data; const reversedData = tempData.reverse(); return { xData: reversedData?.map((item) => item.data_time) || [], dataList: [ { type: 2, name: '实际', data: reversedData?.map((item) => item.value) || [], }, ], }; }, }, ); // 全场概况 包括两个折线图的y 轴名称 const allFactory = useMemo(() => { const data = allFactoryData || { voltage: '-', transformer: '-', capacity: '-', runtime_capacity: '-', voltage_unit: 'kV', transformer_unit: '台', capacity_unit: 'kVA', runtime_capacity_unit: 'kVA', energy_unit: 'kWh/t', energy_water_unit: 'kWh', }; return [ { title: '电量等级', data: data.voltage, unit: data.voltage_unit, color: '#eb0ce2', }, { title: '变压器台数', data: data.transformer, unit: data.transformer_unit, color: '#eb8c0c', }, { title: '装机容器', data: data.capacity, unit: data.capacity_unit, color: '#0cafeb', }, { title: '运行容器', data: data.runtime_capacity, unit: data.runtime_capacity_unit, color: '#50bb0a', }, ]; }, [allFactoryData]); const powerData = useMemo(() => { const power = energyData || { energy_change: '-', energy_water_change: '-', today_energy: '-', today_energy_water: '-', yesterday_energy: '-', yesterday_energy_water: '-', }; return [ { title: '当日吨水电耗', data: typeof power.today_energy_water == 'string' ? power.today_energy_water : power.today_energy_water?.toFixed(2), unit: 'kWh/t', color: '#eb0ce2', }, { title: '昨日吨水电耗', data: typeof power.yesterday_energy_water == 'string' ? power.yesterday_energy_water : power.yesterday_energy_water?.toFixed(2), unit: 'kWh/t', color: '#eb8c0c', }, { title: '环比增长', data: typeof power.energy_water_change == 'string' ? power.energy_water_change : power.energy_water_change?.toFixed(2), unit: '%', icon: power.energy_water_change >= 0 ? 1 : 2, }, { title: '当日用电', data: power.today_energy, unit: 'kWh', color: '#eb0ce2', }, { title: '昨日用电', data: power.yesterday_energy, unit: 'kWh', color: '#eb8c0c', }, { title: '环比增长', data: typeof power.energy_change == 'string' ? power.energy_change : power.energy_change?.toFixed(2), unit: '%', icon: power.energy_change >= 0 ? 1 : 2, }, ]; }, [energyData]); const loading = useMemo(() => allFacLoading, [allFacLoading]); return (
{allFactory.map((item, index) => ( ))}
{powerData.map((item, index) => ( ))}
{chartData && allFactoryData && ( )}
{electricChartData && allFactoryData && ( )}
); }; const DataCard = ({ title, data, unit, icon, color, type }) => { const width = Math.floor(100 / type - 2) + '%'; return (
{title}
{data} {unit} {icon === 1 && ( )} {icon === 2 && ( )}
); }; const SubTitle = ({ title }) => { return (
{title}
); };