| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- import React, { memo } from 'react';
- import { Row, Col, Icon, Tooltip } from 'antd';
- import { FormattedMessage } from 'umi/locale';
- import styles from './Analysis.less';
- import { ChartCard, MiniArea, MiniBar, MiniProgress, Field } from '@/components/Charts';
- import Trend from '@/components/Trend';
- import numeral from 'numeral';
- import Yuan from '@/utils/Yuan';
- const topColResponsiveProps = {
- xs: 24,
- sm: 12,
- md: 12,
- lg: 12,
- xl: 6,
- style: { marginBottom: 24 },
- };
- const IntroduceRow = memo(({ loading, visitData }) => (
- <Row gutter={24}>
- <Col {...topColResponsiveProps}>
- <ChartCard
- bordered={false}
- title={<FormattedMessage id="app.analysis.total-sales" defaultMessage="Total Sales" />}
- action={
- <Tooltip
- title={<FormattedMessage id="app.analysis.introduce" defaultMessage="Introduce" />}
- >
- <Icon type="info-circle-o" />
- </Tooltip>
- }
- loading={loading}
- total={() => <Yuan>126560</Yuan>}
- footer={
- <Field
- label={<FormattedMessage id="app.analysis.day-sales" defaultMessage="Daily Sales" />}
- value={`¥${numeral(12423).format('0,0')}`}
- />
- }
- contentHeight={46}
- >
- <Trend flag="up" style={{ marginRight: 16 }}>
- <FormattedMessage id="app.analysis.week" defaultMessage="Weekly Changes" />
- <span className={styles.trendText}>12%</span>
- </Trend>
- <Trend flag="down">
- <FormattedMessage id="app.analysis.day" defaultMessage="Daily Changes" />
- <span className={styles.trendText}>11%</span>
- </Trend>
- </ChartCard>
- </Col>
- <Col {...topColResponsiveProps}>
- <ChartCard
- bordered={false}
- loading={loading}
- title={<FormattedMessage id="app.analysis.visits" defaultMessage="Visits" />}
- action={
- <Tooltip
- title={<FormattedMessage id="app.analysis.introduce" defaultMessage="Introduce" />}
- >
- <Icon type="info-circle-o" />
- </Tooltip>
- }
- total={numeral(8846).format('0,0')}
- footer={
- <Field
- label={<FormattedMessage id="app.analysis.day-visits" defaultMessage="Daily Visits" />}
- value={numeral(1234).format('0,0')}
- />
- }
- contentHeight={46}
- >
- <MiniArea color="#975FE4" data={visitData} />
- </ChartCard>
- </Col>
- <Col {...topColResponsiveProps}>
- <ChartCard
- bordered={false}
- loading={loading}
- title={<FormattedMessage id="app.analysis.payments" defaultMessage="Payments" />}
- action={
- <Tooltip
- title={<FormattedMessage id="app.analysis.introduce" defaultMessage="Introduce" />}
- >
- <Icon type="info-circle-o" />
- </Tooltip>
- }
- total={numeral(6560).format('0,0')}
- footer={
- <Field
- label={
- <FormattedMessage
- id="app.analysis.conversion-rate"
- defaultMessage="Conversion Rate"
- />
- }
- value="60%"
- />
- }
- contentHeight={46}
- >
- <MiniBar data={visitData} />
- </ChartCard>
- </Col>
- <Col {...topColResponsiveProps}>
- <ChartCard
- loading={loading}
- bordered={false}
- title={
- <FormattedMessage
- id="app.analysis.operational-effect"
- defaultMessage="Operational Effect"
- />
- }
- action={
- <Tooltip
- title={<FormattedMessage id="app.analysis.introduce" defaultMessage="Introduce" />}
- >
- <Icon type="info-circle-o" />
- </Tooltip>
- }
- total="78%"
- footer={
- <div style={{ whiteSpace: 'nowrap', overflow: 'hidden' }}>
- <Trend flag="up" style={{ marginRight: 16 }}>
- <FormattedMessage id="app.analysis.week" defaultMessage="Weekly Changes" />
- <span className={styles.trendText}>12%</span>
- </Trend>
- <Trend flag="down">
- <FormattedMessage id="app.analysis.day" defaultMessage="Weekly Changes" />
- <span className={styles.trendText}>11%</span>
- </Trend>
- </div>
- }
- contentHeight={46}
- >
- <MiniProgress percent={78} strokeWidth={8} target={80} color="#13C2C2" />
- </ChartCard>
- </Col>
- </Row>
- ));
- export default IntroduceRow;
|