todo: trade data

feature/2.0-sales-trade
Lei OT 2 years ago
parent 2feca18720
commit 281aae9405

@ -5,22 +5,22 @@
"data": null, "data": null,
"loading": false, "loading": false,
"result1": { "result1": {
"SumML|999-9999": 27018, "SumML": "@float(999,9999,2,2)",
"SumMLrate|-20-100": 23, "SumMLrate": "@float(-20,100,2,2)",
"SumMLKPIrate|20-100": 23, "SumMLKPIrate": "@float(20,100,2,2)",
"SumOrder|999-999": 27018, "SumOrder": "@integer(99,999)",
"SumOrderrate": "@float(-20,20,2,2)", "SumOrderrate": "@float(-20,20,2,2)",
"SumOrderKPIrate|20-100": 25, "SumOrderKPIrate|20-100": 25,
"SumPersonNum|999-999": 27018, "SumPersonNum": "@integer(999,9999)",
"SumPersonNumrate|-50-1": 33, "SumPersonNumrate|-50-1": 33,
"SumPersonNumKPIrate|20-100": 33, "SumPersonNumKPIrate|20-100": 33,
"groups": "2023-05-01~2023-05-31", "groups": "2023-05-01~2023-05-31",
"key": "@increment" "key": "@increment"
}, },
"result2": { "result2": {
"SumML|999-9999": 27018, "SumML": "@float(999,9999,2,2)",
"SumOrder|999-999": 27018, "SumOrder": "@integer(99,999)",
"SumPersonNum|999-999": 27018, "SumPersonNum": "@integer(99,999)",
"groups": "2022-05-01~2023-05-31", "groups": "2022-05-01~2023-05-31",
"key": "@increment" "key": "@increment"
} }
@ -31,8 +31,11 @@
"loading": false, "loading": false,
"data|24": [ "data|24": [
{ {
"biz_side|1": ["inside", "outside"], "biz_side|1": [
"SumML|999-9999": 27018, "inside",
"outside"
],
"SumML": "@float(999,9999,2,2)",
"SumMLKPIrate": "@float(0,70,2,2)", "SumMLKPIrate": "@float(0,70,2,2)",
"COLI_Department": "1,2,28,7", "COLI_Department": "1,2,28,7",
"month": "@date('MM')", "month": "@date('MM')",
@ -41,7 +44,7 @@
], ],
"inside|12": [ "inside|12": [
{ {
"SumML|999-9999": 27018, "SumML": "@float(999,9999,2,2)",
"SumMLKPIrate": "@float(0,70,2,2)", "SumMLKPIrate": "@float(0,70,2,2)",
"COLI_Department": "1,2,28,7", "COLI_Department": "1,2,28,7",
"month|+1": -11, "month|+1": -11,
@ -50,12 +53,44 @@
], ],
"outside|12": [ "outside|12": [
{ {
"SumML|999-9999": 27018, "SumML": "@float(999,9999,2,2)",
"SumMLKPIrate": "@float(0,70,2,2)", "SumMLKPIrate": "@float(0,70,2,2)",
"COLI_Department": "1,2,28,7", "COLI_Department": "1,2,28,7",
"month|+1": -11, "month|+1": -11,
"key": "@increment" "key": "@increment"
} }
] ]
},
"get|/service-web/QueryData/GetTradeByType": {
"errcode": 0,
"errmsg": "",
"loading": false,
"data": null,
"result1|10": [
{
"OrderTypeSN": "@integer(1,10)",
"OrderType": "@region",
"OrderCount": "@integer(9,999)",
"CJCount": "@integer(9,999)",
"CJPersonNum": "@integer(9,999)",
"YJLY": "@integer(99,9999)",
"CJrate": "@float(1,99,0,2)",
"Ordervalue": "@integer(9,999)",
"SumML": "@integer(99,9999)",
"SumMLrate": "@float(-20,100,0,2)",
"SumMLKPIrate": "@float(20,100,0,2)",
"SumOrder": "@integer(9,999)",
"SumOrderrate": "@float(-20,20,0,2)",
"SumOrderKPIrate": "@float(20,100,0,2)",
"SumPersonNum": "@integer(99,9999)",
"SumPersonNumrate": "@float(-50,1,0,2)",
"SumPersonNumKPIrate": "@float(20,100,0,2)",
"groups": "2023-06-12~2023-06-18",
"key": "@increment"
}
],
"result2": [
{}
]
} }
} }

@ -20,7 +20,22 @@ class Trade {
req.fetchJSON('/service-web/QueryData/GetTradeSummary').then((json) => { req.fetchJSON('/service-web/QueryData/GetTradeSummary').then((json) => {
if (json.errcode === 0) { if (json.errcode === 0) {
runInAction(() => { runInAction(() => {
this.summaryData = { loading: false, ...json }; const summaryData = {
loading: false,
dataSource: [
{
title: '人数',
value: json.result1?.SumPersonNum,
VSrate: json.result1?.SumPersonNumrate,
KPIrate: json.result1?.SumPersonNumKPIrate,
hasKPI: !isEmpty(json.result1?.SumPersonNumKPIrate),
},
{ title: '成团', value: json.result1?.SumOrder, VSrate: json.result1?.SumOrderrate, KPIrate: json.result1?.SumOrderKPIrate, hasKPI: !isEmpty(json.result1?.SumOrderKPIrate) },
{ title: '毛利', value: json.result1?.SumML, VSrate: json.result1?.SumMLrate, KPIrate: json.result1?.SumMLKPIrate, hasKPI: !isEmpty(json.result1?.SumMLKPIrate) },
{ title: '完成率', value: `${json.result1?.SumMLKPIrate}%`, hasKPI: false },
],
};
this.summaryData = summaryData;
}); });
} }
}); });
@ -35,15 +50,30 @@ class Trade {
(r[v.biz_side] || (r[v.biz_side] = [])).push(v); (r[v.biz_side] || (r[v.biz_side] = [])).push(v);
return r; return r;
}, {}); }, {});
console.log(_sideData); console.log(_sideData, '_sideData');
this.sideData = { loading: false, ...json }; this.sideData = { loading: false, ...json };
}); });
} }
}); });
} }
summaryData = { loading: false }; fetchTradeDataByType(orderType) {
this.topData.loading = true;
this.topData[orderType] = null;
req.fetchJSON('/service-web/QueryData/GetTradeByType').then((json) => {
if (json.errcode === 0) {
runInAction(() => {
this.topData.loading = false;
this.topData[orderType] = { loading: false, ...json };
console.log({ loading: false, ...json }, orderType, 'topData');
});
}
});
}
summaryData = { loading: false, dataSource: [] };
sideData = { loading: false }; sideData = { loading: false };
topData = { loading: false };
} }
export default Trade; export default Trade;

@ -7,17 +7,17 @@ import { SlackOutlined, SketchOutlined, AntCloudOutlined, RedditOutlined, Github
import { empty } from './../utils/commons'; import { empty } from './../utils/commons';
import './home.css'; import './home.css';
const Home = () => { export default observer(() => {
const navigate = useNavigate(); const navigate = useNavigate();
const { TradeStore } = useContext(stores_Context); const { TradeStore } = useContext(stores_Context);
const { sideData, summaryData } = TradeStore; const { sideData, summaryData, topData } = TradeStore;
useEffect(() => { useEffect(() => {
if (empty(summaryData?.errcode)) { if (empty(summaryData.dataSource)) {
TradeStore.fetchSummaryData(); TradeStore.fetchSummaryData();
}
if (empty(sideData?.errcode)) {
TradeStore.fetchTradeDataByMonth(); TradeStore.fetchTradeDataByMonth();
TradeStore.fetchTradeDataByType('Country');
TradeStore.fetchTradeDataByType('Area');
} }
return () => {}; return () => {};
}, []); }, []);
@ -46,34 +46,33 @@ const Home = () => {
); );
}; };
const layoutProps = {
gutter: { xs: 8, sm: 8, lg: 16 },
lg: { span: 6 },
sm: { span: 12 },
xs: { span: 24 },
};
return ( return (
<> <>
<h2>年度业绩</h2> <h2>年度业绩</h2>
<section> <section>
<Spin spinning={summaryData.loading}> <Spin spinning={summaryData.loading}>
<Row gutter={16}> <Row gutter={layoutProps.gutter}>
<Col span={6}> {summaryData.dataSource.map(item =>
<StatisticCard title="人数" value={summaryData?.result1?.SumPersonNum} VSrate={summaryData?.result1?.SumPersonNumrate} KPIrate={summaryData?.result1?.SumPersonNumKPIrate} /> <Col {...layoutProps} key={item.title}>
</Col> <StatisticCard {...item} showProgress={(item.hasKPI)} />
<Col span={6}>
<StatisticCard title="成团" value={summaryData?.result1?.SumOrder} VSrate={summaryData?.result1?.SumOrderrate} KPIrate={summaryData?.result1?.SumOrderKPIrate} />
</Col>
<Col span={6}>
<StatisticCard title="毛利" value={summaryData?.result1?.SumML} VSrate={summaryData?.result1?.SumMLrate} KPIrate={summaryData?.result1?.SumMLKPIrate} />
</Col>
<Col span={6}>
<StatisticCard title="完成率" value={`${summaryData?.result1?.SumMLKPIrate}%`} showProgress={false} />
</Col> </Col>
)}
</Row> </Row>
</Spin> </Spin>
</section> </section>
<h3>市场进度</h3> <h3>市场进度</h3>
<section> <section>
<Spin spinning={sideData.loading}></Spin> <Spin spinning={sideData.loading}></Spin>
</section> </section>
<h3>TOP</h3>
<section></section>
</> </>
); );
}; });
export default observer(Home);

Loading…
Cancel
Save