ProportionSales.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import React, { memo } from 'react';
  2. import { Card, Radio } from 'antd';
  3. import { FormattedMessage } from 'umi/locale';
  4. import styles from './Analysis.less';
  5. import { Pie } from 'ant-design-pro/lib/Charts';
  6. import Yuan from '@/utils/Yuan';
  7. const ProportionSales = memo(
  8. ({ dropdownGroup, salesType, loading, salesPieData, handleChangeSalesType }) => (
  9. <Card
  10. loading={loading}
  11. className={styles.salesCard}
  12. bordered={false}
  13. title={
  14. <FormattedMessage
  15. id="app.analysis.the-proportion-of-sales"
  16. defaultMessage="The Proportion of Sales"
  17. />
  18. }
  19. bodyStyle={{ padding: 24 }}
  20. extra={
  21. <div className={styles.salesCardExtra}>
  22. {dropdownGroup}
  23. <div className={styles.salesTypeRadio}>
  24. <Radio.Group value={salesType} onChange={handleChangeSalesType}>
  25. <Radio.Button value="all">
  26. <FormattedMessage id="app.analysis.channel.all" defaultMessage="ALL" />
  27. </Radio.Button>
  28. <Radio.Button value="online">
  29. <FormattedMessage id="app.analysis.channel.online" defaultMessage="Online" />
  30. </Radio.Button>
  31. <Radio.Button value="stores">
  32. <FormattedMessage id="app.analysis.channel.stores" defaultMessage="Stores" />
  33. </Radio.Button>
  34. </Radio.Group>
  35. </div>
  36. </div>
  37. }
  38. style={{ marginTop: 24 }}
  39. >
  40. <h4 style={{ marginTop: 10, marginBottom: 32 }}>
  41. <FormattedMessage id="app.analysis.sales" defaultMessage="Sales" />
  42. </h4>
  43. <Pie
  44. hasLegend
  45. subTitle={<FormattedMessage id="app.analysis.sales" defaultMessage="Sales" />}
  46. total={() => <Yuan>{salesPieData.reduce((pre, now) => now.y + pre, 0)}</Yuan>}
  47. data={salesPieData}
  48. valueFormat={value => <Yuan>{value}</Yuan>}
  49. height={270}
  50. lineWidth={4}
  51. style={{ padding: '8px 0' }}
  52. />
  53. </Card>
  54. )
  55. );
  56. export default ProportionSales;