Blame view

src/pages/OrderReport/index.tsx 7.18 KB
zhongnanhuang authored
1
import {
PurelzMgnead authored
2
3
  getOrderErpOrderZoNingSelectAll,
  postOrderErpOrderZoNingSelectSaleUserByProvince,
zhongnanhuang authored
4
5
6
  postServiceOrderQueryReportFormsInformation,
  postServiceOrderQuerySalesCode,
} from '@/services';
zhongnanhuang authored
7
8
9
import { enumToSelect } from '@/utils';
import {
  ProCard,
zhongnanhuang authored
10
  ProFormCheckbox,
11
  ProFormDigit,
zhongnanhuang authored
12
13
14
  ProFormSelect,
  QueryFilter,
} from '@ant-design/pro-components';
15
import { Form, Segmented, Space, Spin } from 'antd';
zhongnanhuang authored
16
import { useEffect, useState } from 'react';
zhongnanhuang authored
17
import { PRODUCT_BELONG_DEPARTMENT_OPTIONS } from '../Order/constant';
zhongnanhuang authored
18
19
import OrderDualAxes from './components/OrderDualAxes';
import OrderStatisticCard from './components/OrderStatisticCard';
zhongnanhuang authored
20
import './index.less';
zhongnanhuang authored
21
const OrderReportPage = () => {
zhongnanhuang authored
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  const [salesCodeOptions, setSalesCodeOptions] = useState([]);

  /**
   * 获取销售代码枚举,在复制和编辑的时候判断是否为旧的代码
   */
  const getSalesCodeOptions = async () => {
    const res = await postServiceOrderQuerySalesCode();
    let options = res.data?.map((item) => {
      return {
        label: item.userName,
        value: item.userName,
        number: item.number,
      };
    });
    setSalesCodeOptions(options);
  };
zhongnanhuang authored
39
40
41
42
43
44
45
  const [form] = Form.useForm<{
    salesCode: '';
    productBelongBusiness: '';
    dateRange: '';
  }>();
  const [statisticData, setStatisticData] = useState([]);
  const [loading, setLoading] = useState(false);
zhongnanhuang authored
46
  const [statisticsMethod, setStatisticsMethod] = useState('MONTH_STATISTICS');
zhongnanhuang authored
47
  const onChange = (key: string) => {
zhongnanhuang authored
48
49
50
51
52
53
54
55
56
57
58
    if (key === '本月') {
      setStatisticsMethod('MONTH_STATISTICS');
    }

    if (key === '上月') {
      setStatisticsMethod('LAST_MONTH_STATISTICS');
    }

    if (key === '本年') {
      setStatisticsMethod('YEAR_STATISTICS');
    }
zhongnanhuang authored
59
60
61
62
63
64
65
66
67
  };

  /**
   * 加载页面数据
   */
  const loadData = async () => {
    setLoading(true);
    let body = {
      statisticsMethod: '',
PurelzMgnead authored
68
      // salesCode: [null],
zhongnanhuang authored
69
      productBelongBusiness: form.getFieldValue('productBelongBusiness'),
70
      maxAccount: form.getFieldValue('maxAccount'),
zhongnanhuang authored
71
72
73
      includeExperimentalEquipment: form.getFieldValue(
        'includeExperimentalEquipment',
      ),
zhongnanhuang authored
74
75
76
      // beginTime:"",
      // endTime:""
    };
PurelzMgnead authored
77
78
    // console.log(form.getFieldValue('zoning').value);
PurelzMgnead authored
79
80
81
82
83
84
85
86
    // let res = await getOrderErpOrderZoNingSelectUserAll();
    // if (res && res.data) {
    //   let safeUserList = [];
    //   res.data.forEach((element) => {
    //     safeUserList.push(element.userName);
    //   });
    //   body = { ...body, salesCode: safeUserList };
    // }
PurelzMgnead authored
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
    if (form.getFieldValue('salesCode')) {
      body = { ...body, salesCode: [form.getFieldValue('salesCode')] };
    }
    if (form.getFieldValue('zoning')) {
      if (
        form.getFieldValue('zoning').value !== '' ||
        form.getFieldValue('zoning').value !== null ||
        form.getFieldValue('zoning').value !== undefined
      ) {
        let res = await postOrderErpOrderZoNingSelectSaleUserByProvince({
          data: form.getFieldValue('zoning').value,
        });
        if (res && res.data) {
          body = { ...body, salesCode: res.data };
        }
      }
    }

    if (form.getFieldValue('zoning')) {
    }
zhongnanhuang authored
107
108
109
110
111

    // if(form.getFieldValue("dateRange")!==undefined){
    //   body.beginTime=formatDate(form.getFieldValue("dateRange")[0]),
    //   body.endTime=formatDate(form.getFieldValue("dateRange")[1])
    // }
zhongnanhuang authored
112
    body.statisticsMethod = statisticsMethod;
zhongnanhuang authored
113
114
115
    const { data } = await postServiceOrderQueryReportFormsInformation({
      data: body,
    });
zhongnanhuang authored
116
117
118
119
    if (data !== undefined) {
      setStatisticData(data);
    }
zhongnanhuang authored
120
121
122
123
124
    setLoading(false);
  };

  useEffect(() => {
    loadData();
zhongnanhuang authored
125
126
127
128
  }, [statisticsMethod]);

  useEffect(() => {
    loadData();
zhongnanhuang authored
129
    getSalesCodeOptions();
zhongnanhuang authored
130
131
  }, []);
zhongnanhuang authored
132
133
134
135
136
137
138
139
140
141
142
143
  // const items: TabsProps['items'] = [
  //   {
  //     key: 'MONTH_STATISTICS',
  //     label: '本月统计',
  //     children: '',
  //   },
  //   {
  //     key: 'YEAR_STATISTICS',
  //     label: '本年统计',
  //     children: '',
  //   },
  // ];
zhongnanhuang authored
144
  return (
145
    <div>
zhongnanhuang authored
146
      <Space direction="vertical" size="middle" className="flex">
zhongnanhuang authored
147
        <Spin spinning={loading}>
zhongnanhuang authored
148
149
150
151
152
          <OrderStatisticCard
            data={statisticData}
            statisticsMethod={statisticsMethod}
            reFreshData={loadData}
          />
zhongnanhuang authored
153
154
        </Spin>
zhongnanhuang authored
155
        <ProCard tooltip="这是提示" bordered>
zhongnanhuang authored
156
157
158
159
          <QueryFilter
            split
            className="!p-0 order-statistic-search"
            labelWidth="auto"
160
            defaultCollapsed={false}
zhongnanhuang authored
161
162
163
164
165
166
167
168
169
            form={form}
            onFinish={async () => {
              loadData();
              return true;
            }}
          >
            <ProFormSelect
              name="salesCode"
              key="salesCode"
zhongnanhuang authored
170
              width="lg"
zhongnanhuang authored
171
172
              showSearch
              label="销售代表"
zhongnanhuang authored
173
174
              placeholder="请选择销售代表"
              options={salesCodeOptions}
zhongnanhuang authored
175
176
177
178
179
180
181
            />
            <ProFormSelect
              key="productBelongBusiness"
              placeholder="请输入所属事业部"
              name="productBelongBusiness"
              label="所属事业部"
              options={enumToSelect(PRODUCT_BELONG_DEPARTMENT_OPTIONS)}
zhongnanhuang authored
182
183
184
185
186
187
              onChange={(val: any) => {
                if (val === 'EXPERIMENTAL_EQUIPMENT') {
                  //勾选上包含设备事业部
                  form.setFieldValue('includeExperimentalEquipment', true);
                }
              }}
zhongnanhuang authored
188
            />
189
190
            <ProFormDigit label="排除大订单金额" name="maxAccount" min={0} />
zhongnanhuang authored
191
192
193
194
195
196
            <ProFormCheckbox
              key="includeExperimentalEquipment"
              name="includeExperimentalEquipment"
              initialValue={false}
              label="包含实验设备事业部汇总统计"
            />
PurelzMgnead authored
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220

            <ProFormSelect
              key="zoning"
              name="zoning"
              width="md"
              label="所属地区"
              fieldProps={{
                labelInValue: true,
              }}
              placeholder="请选择"
              request={async () => {
                let zoningOptions = [];
                let res = await getOrderErpOrderZoNingSelectAll();
                if (res && res.data) {
                  console.log(res.data);

                  zoningOptions = res.data.map((item) => ({
                    value: item.zoning,
                    label: item.zoning,
                  }));
                }
                return zoningOptions;
              }}
            />
zhongnanhuang authored
221
          </QueryFilter>
zhongnanhuang authored
222
223
        </ProCard>
zhongnanhuang authored
224
225
        <ProCard
          id="order-dual-axes-card"
zhongnanhuang authored
226
227
          title="汇总统计"
          tooltip="下方汇总统计未统计实验设备事业部数据,如需要请勾选包含实验设备事业部汇总统计"
zhongnanhuang authored
228
          extra={
zhongnanhuang authored
229
230
231
232
233
234
            <Segmented
              options={['本月', '上月', '本年']}
              onChange={(val: any) => {
                onChange(val);
              }}
            />
zhongnanhuang authored
235
236
237
238
          }
          bordered
        >
          <Spin spinning={loading}>
zhongnanhuang authored
239
240
241
242
            <OrderDualAxes
              data={statisticData}
              statisticMethod={statisticsMethod}
            />
zhongnanhuang authored
243
          </Spin>
zhongnanhuang authored
244
245
        </ProCard>
      </Space>
246
    </div>
zhongnanhuang authored
247
  );
zhongnanhuang authored
248
};
zhongnanhuang authored
249
250

export default OrderReportPage;