import { connect } from 'dva/index'; import React, { Component } from 'react'; import { Form, Radio, Tooltip as TooltipAntd, Spin } from 'antd'; import { sldLlineRtextAddGoodsAddMargin, sldComLanguage, getSldHorLineBgColor, sldSvgIcon, formatNum, } from '@/utils/utils'; import global from '@/global.less'; import stat from '@/assets/css/stat.less'; import SldScrollbars from '@/components/SldScrollbars'; import SldStatDate from '@/components/SldStatDate'; import FlowOther from './flow_other'; import moment from 'moment'; import TweenOne from 'rc-tween-one'; import Children from 'rc-tween-one/lib/plugin/ChildrenPlugin'; import defaultSettings from '@/defaultSettings'; TweenOne.plugins.push(Children); @connect(({ statistics }) => ({ statistics, })) @Form.create() export default class StatisticsFlow extends Component { constructor(props) { super(props); this.state = { loadedFlag: false,//顶部数据是否加载完成 overViewLoading: false,//总览数据loading flowOverviewData: [ { children: [ { label: `${sldComLanguage('访客数')}`, num: '', differenceNum: '', isUp: false, tip: `${sldComLanguage('统计时间内,全平台所有页面的去重人数总和')}`, mapValue: 'visitorNum', mapDifferentValue: 'previousNewVisitorNum', }, { label: `${sldComLanguage('浏览量')}`, num: '', differenceNum: '', isUp: false, tip: `${sldComLanguage('统计时间内,全平台所有页面被访问的次数总和')}`, mapValue: 'viewNum', mapDifferentValue: 'previousViewNum', }, { label: `${sldComLanguage('新访客数')}`, num: '', differenceNum: '', isUp: false, tip: `${sldComLanguage('统计时间内,首次在平台发生浏览行为的人数')}`, mapValue: 'newVisitorNum', mapDifferentValue: 'previousNewVisitorNum', }, ], }, // { // children: [ // { // label: `${sldComLanguage('下单人数')}`, // num: '', // differenceNum: '', // isUp: false, // tip: `${sldComLanguage('统计时间内,全平台成功提交订单的去重人数总和')}`, // mapValue: 'orderSubmitMemberNum', // mapDifferentValue: 'previousOrderSubmitMemberNum', // }, // { // label: `${sldComLanguage('下单数')}`, // num: '', // differenceNum: '', // isUp: false, // tip: `${sldComLanguage('统计时间内,全平台用户成功提交订单的笔数总和')}`, // mapValue: 'orderSubmitNum', // mapDifferentValue: 'previousOrderSubmitNum', // }, // ], // }, // { // children: [ // { // label: `${sldComLanguage('支付人数')}`, // num: '', // differenceNum: '', // isUp: false, // tip: `${sldComLanguage('统计时间内,全平台成功付款的去重人数总和')}`, // mapValue: 'orderPayMemberNum', // mapDifferentValue: 'previousOrderPayMemberNum', // }, // { // label: `${sldComLanguage('支付订单数')}`, // num: '', // differenceNum: '', // isUp: false, // tip: `${sldComLanguage('统计时间内,全平台用户成功支付的订单数量总和')}`, // mapValue: 'orderPayNum', // mapDifferentValue: 'previousOrderPayNum', // }, // // ], // }, ], curFlowOverview: 'pc',//交易总览的终端类型,默认为all 全部 tradeOverviewParams: { startTime: (moment().subtract(1, 'days').format('YYYY-MM-DD') + ' 00:00:00'), endTime: (moment().subtract(1, 'days').format('YYYY-MM-DD') + ' 23:59:59:999'), }, chartsInfoData: {}, }; }; componentDidMount() { this.getTradeOverview(); } //tab切换事件 handleChangeTab = (e, type) => { this.setState({ [type]: e.target.value }, () => { if (type == 'curFlowOverview') { this.getTradeOverview(); } }); }; //时间筛选器返回的时间数据 updateSelectDate = (date, index) => { let { tradeOverviewParams } = this.state; let _this = this; if (index == '_trade_over_view') { //交易总览的时间筛选 tradeOverviewParams = { ...tradeOverviewParams, ...date }; this.setState({ tradeOverviewParams }, () => { _this.getTradeOverview(); }); } }; //获取交易总览的数据 getTradeOverview = () => { const { dispatch } = this.props; const { flowOverviewData, tradeOverviewParams, curFlowOverview, chartsInfoData } = this.state; let params = { ...tradeOverviewParams }; if (curFlowOverview != 'all') { params.terminalType = curFlowOverview; } this.setState({ overViewLoading: true }); dispatch({ type: 'statistics/get_analysis_flow_overview', payload: params, callback: (res) => { if (res.state === 200) { chartsInfoData.pvPayRate = res.data.pvPayRate || '--'; chartsInfoData.pvSubmitRate = res.data.pvSubmitRate || '--'; chartsInfoData.submitPayRate = res.data.submitPayRate || '--'; flowOverviewData.forEach((item, index) => { item.children.forEach((item2, index2) => { if (res.data[item2.mapDifferentValue] && res.data[item2.mapDifferentValue].indexOf('-') != 0) { //上涨 item2['differenceNum'] = '+' + res.data[item2.mapDifferentValue]; item2.isUp = true; } else { //下降 item2['differenceNum'] = res.data[item2.mapDifferentValue]; item2.isUp = false; } item2['num'] = item2.isMoney ? parseFloat(res.data[item2.mapValue]).toFixed(2) : res.data[item2.mapValue]; }); }); this.setState({ flowOverviewData, chartsInfoData }); } this.setState({ overViewLoading: false, loadedFlag: true }); }, }); }; render() { const { chartsInfoData, overViewLoading, flowOverviewData, curFlowOverview, loadedFlag } = this.state; return (
{sldLlineRtextAddGoodsAddMargin(defaultSettings.primaryColor, `${sldComLanguage('流量总览')}`, 10, 0, 0)}
this.updateSelectDate(date, '_trade_over_view')}/>
{getSldHorLineBgColor(1, 'rgba(216, 216, 216, .5)')} {/*
*/} {/* {sldComLanguage('筛选项:')}*/} {/* this.handleChangeTab(e, 'curFlowOverview')}*/} {/* defaultValue={curFlowOverview}>*/} {/* {sldComLanguage('全部')}*/} {/* {sldComLanguage('Android')}*/} {/* {sldComLanguage('IOS')}*/} {/* {sldComLanguage('PC')}*/} {/* {sldComLanguage('微信小程序')}*/} {/* {sldComLanguage('H5')}*/} {/* */} {/*
*/}
{/*
*/} {/*
*/} {/* */} {/* {sldComLanguage('访问')}*/} {/*
*/} {/*
*/} {/*
*/} {/*
*/} {/* */} {/* {sldComLanguage('下单')}*/} {/*
*/} {/*
*/} {/*
*/} {/*
*/} {/* */} {/* {sldComLanguage('支付')}*/} {/*
*/} {/*
*/}
{/*
*/} {/*
*/} {/*
*/} {/*
*/} {/*

{sldComLanguage('访问-下单转化率')}

*/} {/*

{chartsInfoData.pvSubmitRate || '--'}

*/} {/*
*/} {/*
*/} {/*

{sldComLanguage('下单-支付转化率')}

*/} {/*

{chartsInfoData.submitPayRate || '--'}

*/} {/*
*/} {/*
*/} {/*

{sldComLanguage('访问-支付转化率')}

*/} {/*

{chartsInfoData.pvPayRate || '--'}

*/} {/*
*/}
{flowOverviewData.map((item2, index2) => (
    {item2.children.map((item, index) => (
  • {item.label}
    {loadedFlag && ( item.num > 10000 ? formatNum(item.num, item.isMoney ? 2 : 0) : )}
    {sldComLanguage('较上期')} {item.differenceNum ? ({item.differenceNum}{sldSvgIcon(item.isUp ? '#52C41A' : '#C41A1A', 16, 16, item.isUp ? 'shangsheng' : 'xiajiang')}) : ( --)}
  • ))}
))}
); } }