import PageContent from '@/components/PageContent'; import PageTitle from '@/components/PageTitle'; import { queryWorkReport } from '@/services/smartReport'; import { useNavigate, useParams, useRequest } from '@umijs/max'; import { ConfigProvider, DatePicker, Select, Spin } from 'antd'; import zhCN from 'antd/es/locale/zh_CN'; import dayjs from 'dayjs'; import * as echarts from 'echarts'; import { useEffect, useRef, useState } from 'react'; import styles from './index.less'; const { RangePicker } = DatePicker; const SmartReport = () => { const navigate = useNavigate(); const { projectId } = useParams(); const FORMAT = 'YYYY-MM-DD'; const [showRange, setShowRange] = useState(false); const [date, setDate] = useState({ stime: dayjs().subtract(7, 'day').format(FORMAT), etime: dayjs().subtract(1, 'day').format(FORMAT), }); const eqDomRef = useRef(null); const eqChartRef = useRef(null); const taskDomRef = useRef(null); const taskChartRef = useRef(null); const workDomRef = useRef(null); const workChartRef = useRef(null); const workScoreDomRef = useRef(null); const workScoreChartRef = useRef(null); const { data = {}, run, loading, } = useRequest( (date) => queryWorkReport({ project_id: projectId, ...date, }), { defaultParams: [{ project_id: projectId, ...date }], formatResult: (res) => { const data = res.data; return { ...data, eqData: [ { name: '安全隐患', value: data.patrol_safe }, { name: '工艺异常', value: data.patrol_section }, { name: '设备异常', value: data.push_complete_task }, ], taskData: [ { name: '工况任务', value: data.mandate_type_con }, { name: '集团任务', value: data.mandate_type_group }, { name: '系统自检', value: data.mandate_type_pat }, { name: '生产任务', value: data.mandate_type_pro }, ], workOrderData: [ { name: '盘点', value: data.chart_check }, { name: '备品备件', value: data.chart_part }, { name: '工艺工单', value: data.chart_section }, { name: '维修工单', value: data.repair_record }, { name: '保养工单', value: data.maintain_record }, { name: '巡检工单', value: data.patrol_mandate_record }, { name: '加药工单', value: data.reagent_record }, ], workScoreData: [ { name: '较差', value: data.con_level_five }, { name: '一般', value: data.con_level_four }, { name: '优秀', value: data.con_level_one }, { name: '较好', value: data.con_level_three }, { name: '良好', value: data.con_level_two }, ], }; }, }, ); const handleChange = (value) => { const date = { ...date }; switch (value) { case '1': date.stime = dayjs().subtract(7, 'day').format(FORMAT); date.etime = dayjs().subtract(1, 'day').format(FORMAT); setDate(date); setShowRange(false); run(date); break; case '2': date.stime = dayjs().subtract(1, 'month').format(FORMAT); date.etime = dayjs().subtract(1, 'day').format(FORMAT); setDate(date); setShowRange(false); run(date); break; case '3': setShowRange(true); break; } }; const { ele_65, ele_66, electricity, in_water, maintain_record, medicine, out_water, push_optimize_task, push_complete_task, push_complete_task_per, push_task, repair_record, self_inspection_abnormal_task, self_inspection_normal_task, self_inspection_task, water_electricity, water_medicine, work_order_complete_task, work_order_complete_task_per, work_order_task, } = data; useEffect(() => { initData(); }, [data]); useEffect(() => { eqChartRef.current = echarts.init(eqDomRef.current); taskChartRef.current = echarts.init(taskDomRef.current); workChartRef.current = echarts.init(workDomRef.current); workScoreChartRef.current = echarts.init(workScoreDomRef.current); return () => { eqChartRef.current.dispose(); taskChartRef.current.dispose(); workChartRef.current.dispose(); workScoreChartRef.current.dispose(); }; }, []); const initData = () => { const eqOption = getPieOption(data.eqData, '异常类型统计'); if (eqChartRef.current) eqChartRef.current.setOption(eqOption); const taskOption = getPieOption(data.taskData, '任务类型统计'); if (taskChartRef.current) taskChartRef.current.setOption(taskOption); const workOption = getPieOption(data.workOrderData, '工况评估统计'); if (workChartRef.current) workChartRef.current.setOption(workOption); const workScoreOption = getPieOption(data.workScoreData, '工况评估统计'); if (workScoreChartRef.current) workScoreChartRef.current.setOption(workScoreOption); }; const onChange = (value) => { if (!value) return; const date = { ...date }; date.stime = value[0].format(FORMAT); date.etime = value[1].format(FORMAT); run(date); setDate(date); }; const handleOnClick = () => { history.back(); }; const Box = ({ title, children }) => { return (