Blame view

src/pages/pms/partPlan/PlanManage/components/DetailModal.tsx 3.18 KB
bbc8cff2   by1642146903   配件计划管理调整
1
  import React, {useState, useEffect, useMemo} from 'react';
dae4c757   baiyun   配件计划进度
2
  import { Button, Modal, Table } from 'antd';
bbc8cff2   by1642146903   配件计划管理调整
3
4
  import { getProgressDetail, ProgressVO, ListVO, Params, SubmitListVO } from "../api";
  import useInitial from "@/hooks/useInitail";
dae4c757   baiyun   配件计划进度
5
6
  import ProgressView from "./ProgressView";
  import ShippingDetailModal from './ShippingDetailModal';
80be94ef   jiangwei   服务站配件、配件计划进度、客户订件...
7
  import PartDetailModal from './PartDetailModal';
bbc8cff2   by1642146903   配件计划管理调整
8
  import {flattenDeep} from "@/pages/pms/entity";
9c4c170d   jiangwei   fix
9
  import {getDetail, DetailVO, Item} from "@/pages/pms/partPlan/PlanManage/subpages/Detail/api";
dae4c757   baiyun   配件计划进度
10
11
12
13
  
  interface Props {
    visible: boolean,
    onCancel: Function,
7ae589ea   by1642146903   配件计划管理和配件计划进度整合
14
    item: ListVO,
dae4c757   baiyun   配件计划进度
15
16
17
18
19
20
21
  }
  
  const { Column } = Table;
  export default function DetailModal(props: Props) {
    const { visible, onCancel, item } = props;
    const params = {planId: item.planId};
    const [delay, setDelay] = useState(true);
bbc8cff2   by1642146903   配件计划管理调整
22
23
24
    // @ts-ignore
    const { data: progresss, setParams: setProgresssParams } = useInitial<ProgressVO[], Params>(getProgressDetail, [], params, delay);
    // @ts-ignore
9c4c170d   jiangwei   fix
25
    const { data, setParams, loading } = useInitial<Item, Params>(getDetail, {}, params, delay);
dae4c757   baiyun   配件计划进度
26
27
    const [visibleDetail, setVisibleDetail] = useState(false);
    const [_item, setItem] = useState<SubmitListVO>({});
80be94ef   jiangwei   服务站配件、配件计划进度、客户订件...
28
    const [visiblePartDetail, setVisiblePartDetail] = useState(false);
bbc8cff2   by1642146903   配件计划管理调整
29
    const suppliers = useMemo(() => {
9c4c170d   jiangwei   fix
30
      return flattenDeep(data.list?.map((it: DetailVO) => (it.suppliers || []).map(su => ({...it, ...su}))));
bbc8cff2   by1642146903   配件计划管理调整
31
    }, [data]);
dae4c757   baiyun   配件计划进度
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  
    useEffect(() => {
      if (visible) {
        setProgresssParams(params, true);
        setParams(params, true);
        setDelay(false);
      }
    }, [visible]);
  
    return (
      <Modal
        title="配件计划进度"
        width={1000}
        visible={visible}
        maskClosable={false}
        onCancel={() => onCancel()}
        footer={
          <Button onClick={() => onCancel()}>取消</Button>
        }
      >
        <div style={{display: 'flex', flexDirection: 'row'}}>
          <ProgressView data={progresss} />
12f15fa6   by1642146903   fix
54
          <div style={{width: 700}}>
bbc8cff2   by1642146903   配件计划管理调整
55
            <Table loading={loading} rowKey={(v: any) => `${v.planSupplierId}`} scroll={{y: 500, x: 650}} dataSource={suppliers} pagination={false}>
3aaadd4b   baiyun   样式
56
              <Column title="品牌" dataIndex="brandName" />
bbc8cff2   by1642146903   配件计划管理调整
57
58
              <Column title="结算商家" dataIndex="settleDealerName" />
              <Column title="结算门店" dataIndex="settleShopName" />
3aaadd4b   baiyun   样式
59
              <Column title="供应商" dataIndex="supplierName" />
bbc8cff2   by1642146903   配件计划管理调整
60
              <Column title="总金额(元)" dataIndex="totalAmount" render={(t: number) => t && t.toFixed(2) || 0} />
dae4c757   baiyun   配件计划进度
61
62
              <Column
                title="操作"
80be94ef   jiangwei   服务站配件、配件计划进度、客户订件...
63
64
65
66
67
68
                render={(text, _item: SubmitListVO) => (
                  <>
                    <a onClick={() => { setVisiblePartDetail(true); setItem(_item); }} style={{marginRight: 20}}>查看配件</a>
                    <a onClick={() => { setVisibleDetail(true); setItem(_item); }}>查看进度</a>
                  </>
                )}
dae4c757   baiyun   配件计划进度
69
70
71
72
73
74
              />
            </Table>
          </div>
        </div>
        <ShippingDetailModal
          visible={visibleDetail}
bbc8cff2   by1642146903   配件计划管理调整
75
          item={{..._item, ...params}}
dae4c757   baiyun   配件计划进度
76
77
          onCancel={() => setVisibleDetail(false)}
        />
12f15fa6   by1642146903   fix
78
        <PartDetailModal
80be94ef   jiangwei   服务站配件、配件计划进度、客户订件...
79
80
81
82
          visible={visiblePartDetail}
          item={_item}
          onCancel={() => setVisiblePartDetail(false)}
        />
dae4c757   baiyun   配件计划进度
83
84
85
      </Modal>
    );
  }