SaleTaskBatchSet.tsx 8.22 KB
import { PlusOutlined } from "@ant-design/icons";
import { Button, Card, Col, Form, InputNumber, Row, Select } from "antd";
import styles from "./index.less";
import React from "react";
import { MAX_NUM } from "../entity";

export default function SaleTaskBatchSet() {
  const [form] = Form.useForm();

  const assignToShop = async () => {
    await form.validateFields();
    const values = form.getFieldsValue();
    console.log(values);
  };

  const assignToBoth = async () => {
    await form.validateFields();
    const values = form.getFieldsValue();
    console.log(values);
  };

  return (
    <Form form={form} name="sale-task-batch-set-form" autoComplete="off">
      <Form.List name="vehicleGrossProfitTask">
        {(fields, { add, remove }) => (
          <Card>
            <Row
              align="middle"
              justify="space-between"
              style={{ marginBottom: 15 }}
            >
              <h4 className={styles.title}>单车毛利任务</h4>
              <Button type="link" onClick={() => add()} icon={<PlusOutlined />}>
                新增
              </Button>
            </Row>
            {fields.map(({ key, name, ...restField }) => (
              <Row gutter={16} key={key}>
                <Col className="gutter-row" span={6}>
                  <Form.Item
                    {...restField}
                    name={[name, "vehicleGrossProfitTask"]}
                    rules={[{ required: true, message: "请填写单车毛利任务" }]}
                  >
                    <InputNumber
                      formatter={(value) => `${value}元`}
                      parser={(value: any) => value.replace("元", "")}
                      min={0}
                      max={MAX_NUM}
                      style={{ width: "100%" }}
                      precision={2}
                      placeholder="请填写单车毛利任务"
                    />
                  </Form.Item>
                </Col>
                <Col className="gutter-row" span={15}>
                  <Form.Item
                    {...restField}
                    name={[name, "shop"]}
                    rules={[{ required: true, message: "请选择适用门店" }]}
                  >
                    <Select
                      showSearch
                      allowClear
                      labelInValue
                      loading={false}
                      placeholder="请选择适用门店"
                      style={{ width: "100%" }}
                      fieldNames={{ value: "id", label: "name" }}
                      options={[]}
                    />
                  </Form.Item>
                </Col>
                <Col className="gutter-row" span={3}>
                  <Button
                    type="link"
                    style={{ color: "#999" }}
                    onClick={() => remove(name)}
                  >
                    删除
                  </Button>
                </Col>
              </Row>
            ))}
          </Card>
        )}
      </Form.List>
      <Form.List name="testDriveTaskCount">
        {(fields, { add, remove }) => (
          <Card style={{ marginTop: 20 }}>
            <Row
              align="middle"
              justify="space-between"
              style={{ marginBottom: 15 }}
            >
              <h4 className={styles.title}>首客试驾成交</h4>
              <Button type="link" onClick={() => add()} icon={<PlusOutlined />}>
                新增
              </Button>
            </Row>
            {fields.map(({ key, name, ...restField }) => (
              <Row gutter={16} key={key}>
                <Col className="gutter-row" span={6}>
                  <Form.Item
                    {...restField}
                    name={[name, "testDriveTaskCount"]}
                    rules={[{ required: true, message: "请填写首客试驾成交" }]}
                  >
                    <InputNumber
                      formatter={(value) => `${value}台`}
                      parser={(value: any) => value.replace("台", "")}
                      min={0}
                      max={MAX_NUM}
                      style={{ width: "100%" }}
                      precision={0}
                      placeholder="请填写首客试驾成交"
                    />
                  </Form.Item>
                </Col>
                <Col className="gutter-row" span={15}>
                  <Form.Item
                    {...restField}
                    name={[name, "shop"]}
                    rules={[{ required: true, message: "请选择适用门店" }]}
                  >
                    <Select
                      showSearch
                      allowClear
                      labelInValue
                      loading={false}
                      placeholder="请选择适用门店"
                      style={{ width: "100%" }}
                      fieldNames={{ value: "id", label: "name" }}
                      options={[]}
                    />
                  </Form.Item>
                </Col>
                <Col className="gutter-row" span={3}>
                  <Button
                    type="link"
                    style={{ color: "#999" }}
                    onClick={() => remove(name)}
                  >
                    删除
                  </Button>
                </Col>
              </Row>
            ))}
          </Card>
        )}
      </Form.List>
      <Form.List name="tackCarTaskCount">
        {(fields, { add, remove }) => (
          <Card style={{ marginTop: 20 }}>
            <Row
              align="middle"
              justify="space-between"
              style={{ marginBottom: 15 }}
            >
              <h4 className={styles.title}>攻坚车任务</h4>
              <Button type="link" onClick={() => add()} icon={<PlusOutlined />}>
                新增
              </Button>
            </Row>
            {fields.map(({ key, name, ...restField }) => (
              <Row gutter={16} key={key}>
                <Col className="gutter-row" span={6}>
                  <Form.Item
                    {...restField}
                    name={[name, "tackCarTaskCount"]}
                    rules={[{ required: true, message: "请填写攻坚车任务" }]}
                  >
                    <InputNumber
                      formatter={(value) => `${value}台`}
                      parser={(value: any) => value.replace("台", "")}
                      min={0}
                      max={MAX_NUM}
                      style={{ width: "100%" }}
                      precision={0}
                      placeholder="请填写攻坚车任务"
                    />
                  </Form.Item>
                </Col>
                <Col className="gutter-row" span={15}>
                  <Form.Item
                    {...restField}
                    name={[name, "shop"]}
                    rules={[{ required: true, message: "请选择适用门店" }]}
                  >
                    <Select
                      showSearch
                      allowClear
                      labelInValue
                      loading={false}
                      placeholder="请选择适用门店"
                      style={{ width: "100%" }}
                      fieldNames={{ value: "id", label: "name" }}
                      options={[]}
                    />
                  </Form.Item>
                </Col>
                <Col className="gutter-row" span={3}>
                  <Button
                    type="link"
                    style={{ color: "#999" }}
                    onClick={() => remove(name)}
                  >
                    删除
                  </Button>
                </Col>
              </Row>
            ))}
          </Card>
        )}
      </Form.List>
      <Row align="middle" justify="center" style={{ marginTop: 20 }}>
        <Button onClick={() => {}}>取消</Button>
        <Button
          type="primary"
          style={{ marginLeft: 10 }}
          onClick={assignToShop}
        >
          分配到门店
        </Button>
        <Button
          type="primary"
          style={{ marginLeft: 10 }}
          onClick={assignToBoth}
        >
          分配到门店和顾问
        </Button>
      </Row>
    </Form>
  );
}