diff --git a/src/pages/Overview.tsx b/src/pages/Overview.tsx new file mode 100644 index 0000000..ee13896 --- /dev/null +++ b/src/pages/Overview.tsx @@ -0,0 +1,165 @@ +import { appList, incomeOverview } from '@/services/matrix/admin'; +import { Column } from '@ant-design/charts'; +import { + PageContainer, + ProFormDateRangePicker, + ProFormSelect, + QueryFilter, + StatisticCard, +} from '@ant-design/pro-components'; +import moment from 'moment'; +import RcResizeObserver from 'rc-resize-observer'; +import { useEffect, useState } from 'react'; +import { useParams } from 'react-router-dom'; +import { incomeDaily } from '../services/matrix/admin'; + +const Overview: React.FC = () => { + const [overview, setOverview] = useState(); + const [daily, setDaily] = useState([]); + const [appArr, setAppArr] = useState([]); + const { Divider } = StatisticCard; + const [responsive, setResponsive] = useState(false); + + const { code } = useParams(); + + const fetchData = async () => { + const res = await incomeOverview({ appCode: code }); + if (res.data) { + setOverview(res.data); + } + }; + + const fetchApp = async () => { + const res = await appList(); + if (res.data) { + setAppArr(res.data); + } + }; + + const fetchDaily = async (params: API.IncomeQuery) => { + console.log('fetchDaily'); + console.log(params); + const res = await incomeDaily(params); + if (res.data) { + setDaily(res.data); + } + }; + + useEffect(() => { + fetchData(); + fetchApp(); + fetchDaily({ code: code }); + }, []); + + const formatIncome = (v: number | undefined) => { + if (!v) { + return 0; + } + return parseFloat((v / 1000_00).toFixed(2)); + }; + + // 在渲染折线图组件时,对数据进行处理 + const processedChartData: { date: string | number; income: number }[] = daily.map((item) => ({ + date: item.date + '', + income: formatIncome(item.income), + })); + + const config = { + data: processedChartData, + xField: 'date', + yField: 'income', + axis: { + date: { + title: '日期', + }, + income: { + title: '收入(元)', + }, + }, + title: + '累计' + + formatIncome(daily.reduce((acc, data) => acc + (data.income ? data.income : 0), 0)) + + '元', + height: 400, + label: { + text: (d: any) => (d.收入 > 0 ? d.收入 : ''), + textBaseline: 'bottom', + }, + }; + + return ( + + { + setResponsive(offset.width < 596); + }} + > + + + + + + + + + +
+ + ({ + label: x.name, + value: x.code, + }))} + /> + + + current && current >= moment().startOf('day'), + }} + name="date" + label="时间" + /> + + {/* */} + +
+
+ ); +}; + +export default Overview;