StatisGroup.jsx 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import React from 'react';
  2. import { StatisticCard } from '@ant-design/pro-card';
  3. const { Divider } = StatisticCard;
  4. const iconDivStyle = {
  5. position: 'absolute',
  6. top: '4px',
  7. right: '-30px',
  8. }
  9. const iconStyle = {
  10. fontSize: '10em',
  11. color: '#fff',
  12. opacity: 0.45,
  13. }
  14. export default (props) => {
  15. const { title, data1, data2, icon, onClick1, onClick2, backColor = '#fff', frontColor = '#000' } = props
  16. const headStyle = {
  17. background: backColor,
  18. color: frontColor,
  19. }
  20. const bodyStyle = {
  21. background: backColor,
  22. color: frontColor,
  23. position: 'relative',
  24. overflow: 'hidden',
  25. }
  26. const groupBodyStyle = {
  27. ...bodyStyle,
  28. padding: 0,
  29. }
  30. const valueStyle = {
  31. color: frontColor
  32. }
  33. const headTitleStyle = {
  34. color: frontColor,
  35. fontSize: '19px',
  36. fontWeight: 700,
  37. letterSpacing: '2px',
  38. }
  39. const titleStyle = {
  40. color: frontColor,
  41. }
  42. return (
  43. <StatisticCard.Group title={<div style={headTitleStyle}>{title}</div>} headStyle={headStyle} bodyStyle={groupBodyStyle}>
  44. <StatisticCard
  45. bodyStyle={bodyStyle}
  46. statistic={{ ...data1, title: (<div style={titleStyle}>{data1.title}</div>), valueStyle }}
  47. onClick={onClick1}
  48. />
  49. <Divider type="vertical" />
  50. <StatisticCard
  51. bodyStyle={bodyStyle}
  52. statistic={{ ...data2, title: (<div style={titleStyle}>{data2.title}</div>), valueStyle }}
  53. onClick={onClick2}
  54. />
  55. {
  56. icon && (
  57. <div style={iconDivStyle}>
  58. {React.cloneElement(icon, { style: iconStyle })}
  59. </div>
  60. )
  61. }
  62. </StatisticCard.Group>
  63. )
  64. }