Blame view

src/pages/OrderReport/components/OrderDualAxes.tsx 2.68 KB
zhongnanhuang authored
1
2
import { DualAxes } from '@ant-design/charts';
柏杨 authored
3
const OrderDualAxes = ({ data, statisticMethod, onXValueClick }) => {
zhongnanhuang authored
4
  let yFiledString = 'curTime';
柏杨 authored
5
柏杨 authored
6
  if (statisticMethod === '0') {
zhongnanhuang authored
7
    yFiledString = 'curMonth';
柏杨 authored
8
9
  } else {
    yFiledString = 'curTime';
zhongnanhuang authored
10
  }
柏杨 authored
11
柏杨 authored
12
13
  const targetData = data?.targetAndTotalPaymentDtoList || [];
  const orderData = data?.orderNumberDtoList || [];
柏杨 authored
14
zhongnanhuang authored
15
  const config = {
柏杨 authored
16
    data: [targetData, orderData],
zhongnanhuang authored
17
    xField: yFiledString,
柏杨 authored
18
    yField: ['curDayTotalPayment', 'curDayTotalOrderNumber'],
zhongnanhuang authored
19
20
21
22
23
24
25
26
27
    geometryOptions: [
      {
        geometry: 'line',
        seriesField: 'type',
        lineStyle: {
          lineWidth: 3,
          lineDash: [5, 5],
        },
        smooth: true,
柏杨 authored
28
29
30
        point: {
          shape: 'circle',
        },
zhongnanhuang authored
31
32
33
34
      },
      {
        geometry: 'line',
        seriesField: 'name',
柏杨 authored
35
36
37
        point: {
          shape: 'circle',
        },
zhongnanhuang authored
38
39
40
      },
    ],
  };
柏杨 authored
41
42
43
44

  const handleClick = (event) => {
    // 获取当前点击点的数据
    const pointData = event?.data?.data;
柏杨 authored
45
    if (pointData) {
柏杨 authored
46
47
48
49
50
51
52
53
54
      // 解析年份和月份
      if (yFiledString === 'curMonth') {
        const xValue = pointData['curMonth']; // 格式类似 "2025-01"
        if (typeof xValue === 'string' && xValue.includes('-')) {
          const [yearFromXValue] = xValue?.split('-'); // 提取年份部分 "2025"

          if (!yearFromXValue) {
            return;
          }
柏杨 authored
55
56
          // // 减 1 获得目标年份
          // const targetYear = String(Number(yearFromXValue) - 1); // "2024"
柏杨 authored
57
柏杨 authored
58
59
60
61
62
63
          // // 检查 pointData.type 是否包含目标年份
          // if (
          //   pointData?.type?.includes(targetYear) ||
          //   pointData?.name?.includes(targetYear)
          // ) {
          // 调用父组件传递的回调
柏杨 authored
64
65
66
67
68
          if (pointData?.name) {
            onXValueClick?.(xValue, pointData?.name);
          } else if (pointData?.type) {
            onXValueClick?.(xValue, pointData?.type);
          }
柏杨 authored
69
柏杨 authored
70
71
          // // 合并两个数据源
          // const allData = [...targetData, ...orderData];
柏杨 authored
72
柏杨 authored
73
74
75
76
          // // 筛选出当前列的所有数据
          // const columnData = allData.filter(
          //   (item) => item[yFiledString] === xValue,
          // );
柏杨 authored
77
柏杨 authored
78
79
80
81
          // 可选择将筛选出的数据展示到页面或以其他方式处理
          // alert(`当前列数据: ${JSON.stringify(columnData, null, 2)}`);
          // } else {
          // }
柏杨 authored
82
83
84
        }
      } else {
        console.warn('点击事件未携带有效数据');
柏杨 authored
85
86
87
88
89
90
91
92
93
94
      }
    }
  };

  const handleReady = (plot) => {
    // 绑定点击事件
    plot.on('element:click', handleClick);
  };

  return <DualAxes {...config} onReady={handleReady} />;
zhongnanhuang authored
95
96
97
};

export default OrderDualAxes;