addMemberTrend.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import React from "react";
  2. import { Spin } from "antd";
  3. import { connect } from "dva";
  4. import PanelNav from "./PanelNav";
  5. import BarChart from "./BarChart";
  6. import RadioButtonGroup from "./RadioButtonGroup";
  7. import styles from "../styles/common.less";
  8. const AddMemberTrend = ({ options, current, data, loading, dispatch }) => {
  9. const onChange = (val) => {
  10. dispatch({
  11. type: "bigscreen/setMemberAddTrendData",
  12. payload: { current: val },
  13. });
  14. dispatch({
  15. type: "bigscreen/load_add_member_trend",
  16. });
  17. };
  18. const parseData = (barData) => {
  19. const xAxisdata = [];
  20. const seriesData = [];
  21. (barData ?? []).forEach((item) => {
  22. xAxisdata.push(item.day);
  23. seriesData.push(item.newMemberNum);
  24. });
  25. return {
  26. xAxisdata,
  27. seriesData,
  28. };
  29. };
  30. return (
  31. <Spin spinning={loading}>
  32. <div className={styles.common}>
  33. <div className={styles.common_header}>
  34. <PanelNav title="新增会员趋势" />
  35. <div className={styles.common_header_conditions}>
  36. <RadioButtonGroup
  37. options={options}
  38. label={current}
  39. onChange={onChange}
  40. />
  41. </div>
  42. </div>
  43. <div className={styles.common_content}>
  44. <BarChart {...parseData(data)} />
  45. </div>
  46. </div>
  47. </Spin>
  48. );
  49. };
  50. export default connect(({ bigscreen }) => ({
  51. data: bigscreen.memberAddTrendData.data,
  52. loading: bigscreen.memberAddTrendData.loading,
  53. options: bigscreen.memberAddTrendData.options,
  54. current: bigscreen.memberAddTrendData.current,
  55. }))(AddMemberTrend);