ComfirmDiffModal.tsx 5.46 KB
import React, { useEffect, useState } from "react";
import {
  Button,
  Modal,
  Form,
  Select,
  InputNumber,
  Radio,
  message,
  Spin,
  Input,
} from "antd";
import {
  getOrderDetail,
  saveDiffApi,
  saveSubsidyDiffApi,
} from "../Manufacturer/api";
import { useStore } from "../index";
import _ from "lodash";
import useInitail from "@/hooks/useInitail";
import moment from "moment";

const { TextArea } = Input;
const Option = Select.Option;
interface Props {
  visible: boolean;
  onCancel: Function;
  // eslint-disable-next-line react/require-default-props
  orderId?: number;
  fetchList: () => any;
}

function ComfirmDiffModal(props: Props) {
  const [form] = Form.useForm();
  const { visible, onCancel, fetchList, orderId } = props;
  // differenceItem,
  const {
    reasonList,
    currentItem,
    commonSaveDiffApi,
    differenceItem,
    setDifferencetItem,
    rebateId,
  } = useStore();

  const [saveLoading, setSaveLoading] = useState(false);

  function handSubmit(fieldsValue: any) {
    const param: any = {
      rebateId,
      orderId: differenceItem.id,
      promotionId: currentItem.promotionId,
      actualRebateAmount: fieldsValue.actualRebateAmount,
      reason:
        fieldsValue.type && fieldsValue.type === 1
          ? fieldsValue.writeReason
          : fieldsValue.reason && fieldsValue.reason.label,
      subsidyType: currentItem.subsidyType,
    };
    setSaveLoading(true);
    const api = commonSaveDiffApi[currentItem.dimension];
    api(param).then(() => {
      message.success("操作成功");
      setSaveLoading(false);
      fetchList && fetchList();
      onCancel && onCancel();
      setDifferencetItem({});
    }).catch((e) => {
      message.error(e.message);
      setSaveLoading(false);
    });
  }

  useEffect(() => {
    if (visible) {
      form.setFieldsValue({
        ...differenceItem,
        type: 1,
        writeReason: differenceItem.reason,
        reason: undefined,
      });
    }
  }, [visible]);

  return (
    <Modal
      title="确认折让差异"
      visible={visible}
      maskClosable={false}
      confirmLoading={saveLoading}
      afterClose={form.resetFields}
      onCancel={() => onCancel()}
      footer={[
        <Button key="2" type="primary" onClick={form.submit}>
          确认差异
        </Button>,
      ]}
    >
      <Form
        form={form}
        labelCol={{ span: 7 }}
        wrapperCol={{ span: 18 }}
        onFinish={handSubmit}
      >
        {differenceItem.realName && (
          <Form.Item label="客户" style={{ marginBottom: 0 }}>
            {differenceItem.realName}
          </Form.Item>
        )}
        <Form.Item label="车辆" style={{ marginBottom: 0 }}>
          {differenceItem.materialName}
        </Form.Item>
        <Form.Item label="下零售时间" style={{ marginBottom: 0 }}>
          {differenceItem.retailTime
            ? moment(differenceItem.retailTime).format("YYYY-MM-DD HH:mm:ss")
            : "-"}
        </Form.Item>
        <Form.Item label="下零售门店" style={{ marginBottom: 0 }}>
          {differenceItem.retailShopName || "-"}
        </Form.Item>
        <Form.Item label="下零售商家" style={{ marginBottom: 0 }}>
          {differenceItem.dealerName || "-"}
        </Form.Item>
        <div style={{ height: 30 }} />
        {differenceItem.saleSubsidyAmount != null && (
          <Form.Item label="零售终端补贴金额" required>
            {differenceItem.saleSubsidyAmount || 0}元
          </Form.Item>
        )}
        <Form.Item label="应折让金额" required>
          {differenceItem.rebateAmount}元
        </Form.Item>
        <Form.Item label="实际折让金额" required>
          <Form.Item
            noStyle
            name="actualRebateAmount"
            rules={[{ required: true, message: "请输入" }]}
          >
            <InputNumber placeholder="请输入" style={{ width: "60%" }} />
          </Form.Item>
          <span style={{ paddingLeft: 10 }}>元</span>
        </Form.Item>
        <Form.Item name="type" label="原因" required>
          <Radio.Group>
            <Radio value={1}>输入原因</Radio>
            <Radio value={2}>选择原因</Radio>
          </Radio.Group>
        </Form.Item>

        <Form.Item
          noStyle
          shouldUpdate={(prevValues, currentValues) =>
            prevValues.type != currentValues.type
          }
        >
          {({ getFieldValue }): any => {
            return getFieldValue("type") == 1 ? (
              <Form.Item
                name="writeReason"
                style={{ marginLeft: 130 }}
                rules={[{ required: true, message: "请填写原因" }]}
              >
                <TextArea
                  allowClear
                  placeholder="请输入"
                  rows={2}
                  style={{ width: "100%" }}
                />
              </Form.Item>
            ) : getFieldValue("type") == 2 ? (
              <Form.Item
                name="reason"
                style={{ marginLeft: 130 }}
                rules={[{ required: true, message: "请选择原因" }]}
              >
                <Select placeholder="选择原因" labelInValue>
                  {reasonList.map((item) => (
                    <Option value={item.id} key={item.id}>
                      {item.name}
                    </Option>
                  ))}
                </Select>
              </Form.Item>
            ) : null;
          }}
        </Form.Item>
      </Form>
    </Modal>
  );
}

export default React.memo(ComfirmDiffModal);