From cf6a0ad8ac7d07e4d1206f77d4a1e46899403c69 Mon Sep 17 00:00:00 2001 From: Lei OT Date: Fri, 1 Sep 2023 16:01:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=A6=96=E9=A1=B5:=20=E6=8E=92?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/mock/2.0/trade.json | 5 ++-- src/stores/Trade.js | 9 ++++--- src/views/Home.jsx | 52 ++++++++++++++++++++++++++++++++--------- 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/src/mock/2.0/trade.json b/src/mock/2.0/trade.json index 8ecf8d5..69b9bf8 100644 --- a/src/mock/2.0/trade.json +++ b/src/mock/2.0/trade.json @@ -66,12 +66,13 @@ "errmsg": "", "loading": false, "data": null, - "result1|10": [ + "result1|5": [ { "OrderTypeSN": "@integer(1,10)", - "OrderType": "@region", + "OrderType": "@cname", "OrderCount": "@integer(9,999)", "CJCount": "@integer(9,999)", + "CJCountKPI": "@integer(100,1000)", "CJPersonNum": "@integer(9,999)", "YJLY": "@integer(99,9999)", "CJrate": "@float(1,99,0,2)", diff --git a/src/stores/Trade.js b/src/stores/Trade.js index 70ada69..eaffc90 100644 --- a/src/stores/Trade.js +++ b/src/stores/Trade.js @@ -58,13 +58,12 @@ class Trade { } fetchTradeDataByType(orderType) { - this.topData.loading = true; - this.topData[orderType] = null; + this.topData[orderType] = { loading: true, dataSource: [] }; req.fetchJSON('/service-web/QueryData/GetTradeByType').then((json) => { if (json.errcode === 0) { runInAction(() => { - this.topData.loading = false; - this.topData[orderType] = { loading: false, ...json }; + this.topData[orderType].loading = false; + this.topData[orderType].dataSource = json.result1; console.log({ loading: false, ...json }, orderType, 'topData'); }); } @@ -73,7 +72,7 @@ class Trade { summaryData = { loading: false, dataSource: [] }; sideData = { loading: false }; - topData = { loading: false }; + topData = { }; } export default Trade; diff --git a/src/views/Home.jsx b/src/views/Home.jsx index 9f5b9ca..16d138a 100644 --- a/src/views/Home.jsx +++ b/src/views/Home.jsx @@ -1,10 +1,12 @@ import { useContext, useEffect } from 'react'; import { observer } from 'mobx-react'; -import { Row, Col, Spin, } from 'antd'; +import { Row, Col, Spin } from 'antd'; import { stores_Context } from '../config'; import { useNavigate } from 'react-router-dom'; import { SlackOutlined, SketchOutlined, AntCloudOutlined, RedditOutlined, GithubOutlined, ArrowUpOutlined, ArrowDownOutlined } from '@ant-design/icons'; import StatisticCard from './../charts/StatisticCard'; +import Bullet from './../charts/Bullet'; +import DataFieldRadio from './../components/DateFieldRadio'; import { empty } from './../utils/commons'; import './home.css'; @@ -13,12 +15,21 @@ export default observer(() => { const { TradeStore } = useContext(stores_Context); const { sideData, summaryData, topData } = TradeStore; + const topSeries = [ + { key: 'Country', label: '国籍'}, + { key: 'Area', label: '目的地'}, + { key: 'Sales', label: '顾问'}, + { key: 'GuestGroupType', label: '客群类别'}, + ]; + useEffect(() => { if (empty(summaryData.dataSource)) { TradeStore.fetchSummaryData(); TradeStore.fetchTradeDataByMonth(); - TradeStore.fetchTradeDataByType('Country'); - TradeStore.fetchTradeDataByType('Area'); + for (const iterator of topSeries) { + TradeStore.fetchTradeDataByType(iterator.key); + // TradeStore.fetchTradeDataByType('Area'); + } } return () => {}; }, []); @@ -30,26 +41,45 @@ export default observer(() => { xs: { span: 24 }, }; + const BulletConfig = { + measureField: 'CJCount', // + rangeField: 'CJCountRange', // + targetField: 'CJCountKPI', // + xField: 'OrderType', + }; + return ( <>

年度业绩

- {summaryData.dataSource.map(item => - - - - )} + {summaryData.dataSource.map((item) => ( + + + + ))}

市场进度

+
+

TOP +
+ +

- + + {topSeries.map((item) => ( + + +

{item.label}

+ +
+ + ))} +
-

TOP

-
); });