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}
>
)
}