import React, { useEffect, useRef, useState } from 'react' import moment from 'moment'; import { Button, Card, DatePicker, Space } from 'antd'; import ECharts from '@/components/ECharts' import echarts from '@/components/ECharts/echarts' import { assignOption } from '@/components/ECharts/utils' import request from '@/utils/request' import Title from './Title' const lineOption = { xAxis: { type: 'category', }, yAxis: { type: 'value' }, series: { type: 'line', areaStyle: { opacity: 0.8, color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: 'rgba(55, 162, 255)' }, { offset: 1, color: 'rgba(1, 191, 236)' }]) }, smooth: true, lineStyle: { width: 0 } } } const Condition = (props) => { const [dtRange, setDtRange] = useState() const handleWeek = () => { setDtRange([ moment().startOf('week'), moment(), ]) } const handleMonth = () => { setDtRange([ moment().startOf('month'), moment(), ]) } const handleChange = (vals) => { setDtRange(vals) } useEffect(() => { props.onChange(dtRange) // eslint-disable-next-line react-hooks/exhaustive-deps }, [dtRange]) useEffect(() => { // 默认本周 handleWeek() // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return ( ) } export default (props) => { const chartRef = useRef() const [loading, setLoading] = useState(false) const [data, setData] = useState([]) const [option, setOption] = useState(lineOption) const [dtRange, setDtRange] = useState() const [params, setParams] = useState() useEffect(() => { if (dtRange) { setParams({ startDate: dtRange[0].format('YYYY-MM-DD'), endDate: dtRange[1].format('YYYY-MM-DD') }) } }, [dtRange]) useEffect(() => { if (params) { setLoading(true) request(props.api, { params }).then(res => { setData(res) setLoading(false) }).catch(() => { setLoading(false) }) } }, [params, props.api]) useEffect(() => { const opt = assignOption(lineOption, { xAxis: { data: data.map((item) => item.dt) }, series: { data: data.map((item) => item.val) } }) setOption(opt) }, [data]) return ( } extra={ setDtRange(vals)} />} style={props.style} >
) }