import React, { useEffect } from 'react';
import { connect } from 'dva';
import {
  Row,
  Col,
  Form,
  Input,
  Button,
  Select,
  Switch,
  TreeSelect,
  message,
  Modal,
  Upload,
  InputNumber
} from 'antd';
import { dispatchHandle } from '@/utils/publicHandle';
import useUpdateEffect from '@/useHooks/useUpdateEffect';
// import { branchSeparate, treeSeparate } from '../treeSeparate';
import { _apiUrl_,beforeUpload } from '@/utils/common';
import { useState } from 'react';
import { UploadOutlined, PlusOutlined, CloseOutlined, LoadingOutlined } from '@ant-design/icons';
import UploadFile from '@/components/UploadFile';
const { TextArea } = Input;
const NoSystemModal = (props) => {
  const [form] = Form.useForm();
  const { dispatch,handleClose} = props;
  const [loading, setLoading] = useState(false);
  //当弹层关闭的时候,detail数据要清空
  useUpdateEffect(() => {
    if (addType !== 'edit') {
      form.resetFields();
    }
  }, [props.addVisible]);


  
  const handleSubmit = (e) => {
    e.preventDefault();
    const { handleClose, addType } = props;
    const { pickListTemp } = props.ware;
    let tempData = [...pickListTemp];
    form
      .validateFields()
      .then((values) => {
        values.nocodeLab = true; // 是否无料号物料 必传,这里为虚拟物料
        values.picture = values?.picture?.length > 0 && values.picture[0] || null;//物料图片,必传
        tempData = [...tempData, values];
        tempData = tempData.map((item, index) => {
          return {
            ...item,
            materialInfoId:item.materialInfoId && item.id ? item.materialInfoId : 0,//虚拟物料,物料信息id 必传 无物料号默认传0
            oKey:index
          }
        });
        props.dispatch({
          type: 'ware/setModelsState',
          payload: {
            pickListTemp: tempData,
          },
          callback: () => {
          }
        });
        handleClose();
        message.success(addType === 'edit' ? '修改成功' : '添加虚拟物料成功', 2, () => {
            form.resetFields();
          });
      })
      .catch((e) => {});
  };

  const formItemLayout = {
    labelCol: { span: 4 },
    wrapperCol: { span: 18 },
  };
  const formTailLayout = {
    labelCol: { span: 8 },
    wrapperCol: { span: 12 },
  };
  const {
    addType,
    addVisible,
    selectArea,
    supplierData
  } = props;
  const calcPrice = () => {
    const materialPrice = form.getFieldValue('materialPrice');
    const totalNum = form.getFieldValue('totalNum');
    let amount = 0;
    if (materialPrice && totalNum ) {
      amount = materialPrice * totalNum;
    }
    form.setFieldsValue({
      amount
    });
  }

  // const treeData = Boolean(groupTree && groupTree.length > 0)
  //   ? treeSeparate(groupTree, 'subGroups', 'id')
  //   : [];


  return (
    <Modal
      width={848}
      title={addType === 'edit' ? '编辑无物料号' : '创建无物料号'}
      visible={addVisible}
      onCancel={handleClose}
      afterClose={handleClose}
      closable={false}
      footer={null}
    >
      <Form form={form}>
        <Row>
          <Col md={24}>
            <Form.Item
              name="materialName"
              {...formItemLayout}
              label="物料品名"
              rules={[{ required: true, message: `请输入物料品名` }]}
            >
              <Input placeholder="请输入" />
            </Form.Item>
          </Col>
          <Col md={24}>
            <Form.Item
              name="mmodel"
              {...formItemLayout}
              label="规格/型号"
              rules={[{ required: true, message: `请输入规格/型号` }]}
            >
              <Input placeholder="请输入" />
            </Form.Item>
          </Col>
           <Col md={24}>
            <Form.Item
              name="supplierName"
              {...formItemLayout}
              label="供应商"
              rules={[{ required: true, message: `请输入供应商` }]}
            >
              {/* <Input placeholder="请输入" /> */}
              <Select placeholder='请选择'>
                {
                  supplierData && supplierData.map(item => {
                      return <Option key={item.value} value={ item.label }>{ item.label }</Option>
                  })
                }
              </Select>
              
            </Form.Item>
          </Col>
          {/* <Col md={24}>
            <Form.Item
              name="purchaseCycle"
              {...formItemLayout}
              label="采购周期"
              rules={[{ required: true, message: `请输入采购周期` }]}
            >
              <InputNumber min={ 0 } placeholder="请输入" style={{width:'100%'}} />
            </Form.Item>
          </Col> */}
          <Col md={24}>
            <Form.Item
              name="munit"
              {...formItemLayout}
              label="单位"
              rules={[{ required: true, message: `请输入单位` }]}
            >
              <Input placeholder="请输入" />
            </Form.Item>
          </Col>
           <Col md={24}>
            <Form.Item
              name="materialPrice"
              {...formItemLayout}
              label="单价(元)"
              rules={[{ required: true, message: `请输入单价` }]}
            >
              <InputNumber min ={ 0 } placeholder="请输入" style={{width:'100%'}} onChange = { calcPrice } />
            </Form.Item>
          </Col>
          <Col md={24}>
            <Form.Item
              name="totalNum"
              {...formItemLayout}
              label="领取数量"
              rules={[{ required: true, message: `请输入领取数量` }]}
            >
              <InputNumber min ={ 0 } placeholder="请输入" style={{width:'100%'}} onChange = { calcPrice } />
            </Form.Item>
          </Col>
          <Col md={24}>
            <Form.Item
              name="amount"
              {...formItemLayout}
              label=" 总领取金额"
              
              rules={[{ required: true, message: `请输入领取"金额` }]}
            >
              <Input placeholder="请输入" readOnly disabled  addonAfter="元" />
            </Form.Item>
          </Col>
          <Col md={24}>
            <Form.Item
              name="picture"
              {...formItemLayout}
              label=" 物料图片"
              rules={[{ required: true, message: `请上传物料图片` }]}
            >
                <UploadFile
                      listType="picture-card"
                      className="avatar-uploader"
                      showUploadList={true}
                      beforeUpload={beforeUpload}
                      maxCount={1}
                >
                  <PlusOutlined style={{display:'block',fontSize:16}} />
                    <div>上传图片</div>
              </UploadFile>
            </Form.Item>
          </Col>

          <Col md={24}>
            <Form.Item name="remarks" {...formItemLayout} label="备注">
              <TextArea type="text" placeholder="请输入" rows="3" maxLength="50" showCount />
            </Form.Item>
          </Col>
        </Row>
        <Row>
          <Col offset={4} span={12}>
            <Button
              loading={props.loading}
              type="primary"
              style={{ marginRight: 30 }}
              onClick={handleSubmit}
            >
              提交
            </Button>
            <Button onClick={handleClose}>取消</Button>
          </Col>
        </Row>
      </Form>
    </Modal>
  );
};

export default connect(({ ware, loading }) => ({
  ware,
  loading: loading.models.setting,
}))(NoSystemModal);