import React, { Fragment, useRef, useMemo,useEffect,useState } from 'react'; import { Divider,Tabs,Dropdown,Space} from 'antd'; import ToolBar from './toolbar'; import { DownOutlined,UpOutlined } from '@ant-design/icons'; import apiurl from '../../service/apiurl'; import moment from 'moment'; import { httpget2, httppost2 } from '../../utils/request'; import userBarOption from "./userBarOption" import userLineOption from "./userLineOption" import hotOption from './hotOption'; import ReactEcharts from 'echarts-for-react'; import "./index.less" const Page = () => { const [searchVal, setSearchVal] = useState(false) const [todayData, setTodayData] = useState({}) const [activeCount, setActiveCount] = useState() const [userCountData, setUserCountData] = useState() const [hotData, setHotData] = useState() const [tabs, setTabs] = useState({active:0}) const [showMore, setShowMore] = useState(false) const [height, setHeight] = useState("100%") const [hotWidth, setHotWidth] = useState("100%") const dtoption = useMemo(() => { if (userCountData) { return userBarOption(userCountData) } }, [userCountData]) const lineoption = useMemo(() => { if (activeCount) { return userLineOption(activeCount) } }, [activeCount]) const hotoption = useMemo(() => { if (hotData) { let substrData = []; if (!showMore) { substrData = hotData.slice(0, 10) } else { substrData = hotData } setHeight(((substrData.length) * 10) + "%") try { const labels = substrData.map(item => ( (item.menu1 || '') + '-' + (item.menu2 || '') + (item.menu3 ? '-' + item.menu3 : '') )); const maxLen = Math.max(...labels.map(l => (l || '').length), 0); const px = Math.min(Math.max(maxLen * 12 + 600, 800), 2400); setHotWidth(px + 'px'); } catch (e) {} return hotOption(substrData) } }, [hotData,showMore]) // 获取今日数据 const getTodayData = async () => { try { const res = await httpget2(apiurl.systemM.action.todayData) setTodayData(res.data) } catch (error) { console.log(error); } } // 获取日活跃数 const getActiveCount = async (params) => { try { const {data} = await httppost2(apiurl.systemM.action.activeCount,params) const {appList,webList} = data if(appList&&webList){ setActiveCount({appList:appList,webList:webList}) } } catch (error) { console.log(error); } } // 获取前十用户活跃数 const getUserActiveCount = async (params) => { try { const { data } = await httppost2(apiurl.systemM.action.userCount, params) const {appList,webList} = data if(appList&&webList){ setUserCountData({appList:appList,webList:webList}) } } catch (error) { console.log(error); } } // 获取热点数据 const getHotData = async (data) => { try { const res = await httppost2(apiurl.systemM.action.hotData, data) setHotData(res.data) } catch (error) { console.log(error); } } useEffect(() => { getTodayData() }, []) useEffect(() => { if (searchVal) { getActiveCount(searchVal) getUserActiveCount(searchVal) } }, [searchVal]) useEffect(() => { if (searchVal && tabs) { const params = { ...searchVal, loginType:Number(tabs?.active) } getHotData(params) } }, [searchVal,tabs]) return ( <>
今日数据总览
WEB端访问用户

{todayData?.web1Count || '-' }

WEB端浏览次数

{todayData?.web2Count || '-' }

WEB端平均访问时长

{todayData?.web3Count || '-' } h

移动端访问用户

{todayData?.app1Count || '-'}

移动端浏览次数

{todayData?.app2Count || '-'}

移动端平均访问时长

{todayData?.app3Count || '-'} h

浏览次数前十
日活跃用户数
功能热度前十
{ setTabs({ active: e }); setShowMore(false)}} items={[ { label: `web端`, key: 0, children: ``, }, { label: `移动端`, key: 1, children: ``, }, ]} />
); } export default Page;