From 56ec88c7b9bd1d7550a7bc6a023055d8e708247d Mon Sep 17 00:00:00 2001 From: wanghx Date: Thu, 16 Nov 2023 18:03:19 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E6=80=BB=E4=BD=93=E6=AC=A0=E8=B4=B9?= =?UTF-8?q?=E5=88=86=E6=9E=90=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/icon-rank-1.png | Bin 0 -> 9710 bytes src/assets/images/icon-rank-2.png | Bin 0 -> 10611 bytes src/assets/images/icon-rank-3.png | Bin 0 -> 10799 bytes .../ArrearageAly/Overview/echarts.config.js | 76 +++++++++++ .../ArrearageAly/Overview/index.jsx | 143 ++++++++++++++++++++- .../ArrearageAly/Overview/index.scss | 63 +++++++++ .../ParkingIncomeAly/ArrearageAly/loadable.jsx | 6 +- .../ParkingIncomeAly/index.js | 11 ++ src/services/DataAnalysisPrediction/index.js | 4 +- 9 files changed, 293 insertions(+), 10 deletions(-) create mode 100644 src/assets/images/icon-rank-1.png create mode 100644 src/assets/images/icon-rank-2.png create mode 100644 src/assets/images/icon-rank-3.png create mode 100644 src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/echarts.config.js create mode 100644 src/services/DataAnalysisPrediction/ParkingIncomeAly/index.js diff --git a/src/assets/images/icon-rank-1.png b/src/assets/images/icon-rank-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d66c9257ac6928679a72eb0a71ed7955ce689926 GIT binary patch literal 9710 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%0AB9DB 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/icon-rank-3.png b/src/assets/images/icon-rank-3.png new file mode 100644 index 0000000000000000000000000000000000000000..00107516b944c49779c9f0ebd2fac6ae1acb51a0 GIT binary patch literal 10799 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 E4{IHtA^-pY literal 0 HcmV?d00001 diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/echarts.config.js b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/echarts.config.js new file mode 100644 index 0000000..8816fe0 --- /dev/null +++ b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/echarts.config.js @@ -0,0 +1,76 @@ +const colorList = ['#3AA9FF', '#F997DF'] +import utils from "@/config/utils" + +export default { + pieChartOption: { + title: { + show: true, + text: '', + bottom: 0, + x: 'center', + textStyle: { + color: '#fff' + }, + textAlign: 'left' + }, + color: colorList, + tooltip: { + trigger: 'item', + formatter: (params) => { + return ` +
+ ${params.marker} + ${params.name}: +    + ${utils.parseFormatNum(params?.value || 0)} +
+ ` + } + }, + legend: { + top: '5%', + left: 'center', + itemHeight: 6, + itemGap: 20, + textStyle: { + color: '#fff' + } + }, + series: [ + { + name: '', + type: 'pie', + center: ["50%", "52%"], + radius: ['60%', '70%'], + avoidLabelOverlap: true, + label: { + normal: { + show: false, + position: 'center', + formatter: '{title|{b}}\n\r\n\r{percent|{d}}%', + textStyle: { + color: '#fff' + }, + rich: { + title: { + fontSize: 18 + }, + percent: { + fontSize: 20, + fontWeight: 700 + } + } + }, + emphasis: { + show: true + } + }, + labelLine: { + show: false + }, + data: [ + ] + } + ] + }, +} \ No newline at end of file diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx index 2fc39d7..afab685 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx +++ b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx @@ -1,30 +1,161 @@ -import React, { useEffect } from 'react' +import React, { useEffect, useState, useRef } from 'react' +import ajax from "@/services" +import { Tabs } from 'antd' +import ReactEcharts from "echarts-for-react"; +import EchartsConfig from './echarts.config' +import utils from "@/config/utils" import './index.scss' const Overview = function(props) { const { - yisaData + formData } = props + const [yisaData, setYisaData] = useState({}) + const [activeTab, setActiveTab] = useState('parkRank') + const [moneyPieChartOption, setMoneyPieChartOption] = useState({...EchartsConfig.pieChartOption}) + const [itemPieChartOption, setItemPieChartOption] = useState({...EchartsConfig.pieChartOption}) + + const ajaxGetData = () => { + ajax.getIncomeOverviewData({...formData}).then(res => { + if (res.status == 20000) { + setYisaData({...res.data}) + } + }) + } + + const initMoneyPieChart = (data, unit) => { + let total = 0 + data.map((item) => { + total += item.value + }) + setMoneyPieChartOption({ + ...moneyPieChartOption, + title: { + ...moneyPieChartOption.title, + text: `总金额:${utils.parseFormatNum(total)}(${unit})` + }, + tooltip: { + ...moneyPieChartOption.tooltip, + formatter: (params) => { + return ` +
+ ${params.marker} + ${params.name}: +    + ${utils.parseFormatNum(params?.value || 0)} + ${unit} +
+ ` + } + }, + series: [ + { + ...moneyPieChartOption.series[0], + data: data + } + ] + }) + } + + const initItemPieChart = (data, unit) => { + let total = 0 + data.map((item) => { + total += item.value + }) + setItemPieChartOption({ + ...itemPieChartOption, + title: { + ...itemPieChartOption.title, + text: `总订单数:${utils.parseFormatNum(total)}(${unit})` + }, + tooltip: { + ...itemPieChartOption.tooltip, + formatter: (params) => { + return ` +
+ ${params.marker} + ${params.name}: +    + ${utils.parseFormatNum(params?.value || 0)} + ${unit} +
+ ` + } + }, + series: [ + { + ...itemPieChartOption.series[0], + data: data + } + ] + }) + } + useEffect(() => { - console.log(yisaData) + ajaxGetData() }, []) + useEffect(() => { + if (yisaData.amount) { + initMoneyPieChart(yisaData.amount, '元') + } + if (yisaData.items) { + initItemPieChart(yisaData.items, '个') + } + }, [yisaData]) + return (
欠费金额占比图
-
+
+ +
欠费条数占比图
-
+
+ +
排行榜
-
+
+
+ setActiveTab(v)} + items={[ + { label: '欠费车场', key: 'parkRank' }, + { label: '欠费车牌', key: 'plateRank' } + ]} + /> +
+
+ { + yisaData[activeTab] && yisaData[activeTab].map((item, index) => ( +
+
+
{index+1 > 3 ? (index+1) : ''}
+
{item.name}
+
+
+
{utils.parseFormatNum(item.value || 0)}
+
+
+ )) + } +
+
diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.scss b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.scss index 454dc4b..4bafed3 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.scss +++ b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.scss @@ -1,3 +1,5 @@ +@import "@/assets/css/mixin.scss"; + .overview-container { display: flex; flex-direction: column; @@ -39,6 +41,67 @@ &:last-child { margin-right: 0; } + .overview-item-content { + height: 100%; + display: flex; + flex-direction: column; + .item-tab-content { + flex: 1; + margin-top: 10px; + display: flex; + flex-direction: column; + user-select: none; + padding-right: 10px; + overflow-y: hidden; + &:hover { + overflow-y: auto; + @include scrollBar(var(--color-user-list-bg), #3B97FF); + } + .rank-item { + display: flex; + justify-content: space-between; + align-items: center; + height: 30px; + margin-bottom: 5px; + font-size: 16px; + .rank-left { + display: flex; + font-weight: 700; + .rank-no { + width: 25px; + height: 25px; + margin: 0 5px; + margin-right: 10px; + text-align: center; + } + } + &:nth-child(1) { + .rank-no { + background: url('@/assets/images/icon-rank-1.png') no-repeat 100% 100%; + background-size: 100% 100%; + } + } + &:nth-child(2) { + .rank-no { + background: url('@/assets/images/icon-rank-2.png') no-repeat 100% 100%; + background-size: 100% 100%; + } + } + &:nth-child(3) { + .rank-no { + background: url('@/assets/images/icon-rank-3.png') no-repeat 100% 100%; + background-size: 100% 100%; + } + } + } + } + } + .item-tabs-container { + margin-top: 10px; + .ant-tabs-tab { + padding-bottom: 5px; + } + } } } .overview-bottom { diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx index c8b3458..24e9a8b 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx +++ b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx @@ -132,13 +132,13 @@ function ArrearageAly(props) {
{ - activeTab == 1 ? : null + activeTab == 1 ? : null } { - activeTab == 2 ? : null + activeTab == 2 ? : null } { - activeTab == 3 ? : null + activeTab == 3 ? : null }
diff --git a/src/services/DataAnalysisPrediction/ParkingIncomeAly/index.js b/src/services/DataAnalysisPrediction/ParkingIncomeAly/index.js new file mode 100644 index 0000000..44b1833 --- /dev/null +++ b/src/services/DataAnalysisPrediction/ParkingIncomeAly/index.js @@ -0,0 +1,11 @@ +import ajax from "@/config/ajax" + +export default { + getIncomeOverviewData: function(data) { + return ajax({ + url: '/api/dataAnalysis/overview', + type: 'post', + data + }) + } +} diff --git a/src/services/DataAnalysisPrediction/index.js b/src/services/DataAnalysisPrediction/index.js index e6b55bb..503de14 100644 --- a/src/services/DataAnalysisPrediction/index.js +++ b/src/services/DataAnalysisPrediction/index.js @@ -1,4 +1,6 @@ import ParkingBusinessAly from "./ParkingBusinessAly"; +import ParkingIncomeAly from "./ParkingIncomeAly"; export default { - ...ParkingBusinessAly + ...ParkingBusinessAly, + ...ParkingIncomeAly };