import React, { useState, useEffect } from 'react';
import { Form, Modal, Input, Select, notification } from 'antd';
import { AddConnString, EditConnString } from '@/services/database/api';

const { Item } = Form;
const { Option } = Select;
const AddModal = props => {
  const { callBackSubmit = () => {}, type, formObj, visible } = props;
  const [loading, setLoading] = useState(false);
  const [form] = Form.useForm();
  // 提交
  const onSubmit = () => {
    form.validateFields().then(validate => {
      if (validate) {
        setLoading(true);
        let obj = form.getFieldsValue();
        if (type === 'add') {
          AddConnString({
            ...obj,
            type: 'oracle',
          })
            .then(res => {
              setLoading(false);
              if (res.code == 0) {
                form.resetFields();
                callBackSubmit();
                notification.success({
                  message: '提示',
                  duration: 3,
                  description: '新增成功',
                });
              } else {
                notification.error({
                  message: '提示',
                  duration: 3,
                  description: res.msg,
                });
              }
            })
            .catch(err => {
              setLoading(false);
              console.error(err);
            });
        } else if (type === 'edit') {
          handleEdit();
        }
      }
    });
  };
  const handleEdit = () => {
    let obj = form.getFieldsValue();
    EditConnString({
      type: 'oracle',
      ...obj,
      oldName: formObj.name,
    })
      .then(res => {
        setLoading(false);
        if (res.code == 0) {
          form.resetFields();
          callBackSubmit();
          notification.success({
            message: '提示',
            duration: 3,
            description: res.message || '编辑成功',
          });
        } else {
          notification.error({
            message: '提示',
            duration: 3,
            description: res.message || '编辑失败',
          });
        }
      })
      .catch(err => setLoading(false));
  };
  const onFinish = value => {};
  useEffect(() => {
    switch (type) {
      case 'add':
        form.resetFields();
        break;
      case 'edit':
        form.setFieldsValue({ ...formObj });
        break;
      default:
        break;
    }
  }, [visible]);
  const layout = {
    layout: 'horizontal',
    labelCol: {
      span: 4,
    },
    wrapperCol: {
      span: 19,
    },
  };
  return (
    <Modal
      title={`${type === 'add' ? '添加' : '编辑'}Oracle数据库配置连接`}
      bodyStyle={{ width: '100%', minHeight: '100px' }}
      style={{ top: '150px' }}
      width="700px"
      destroyOnClose
      maskClosable={false}
      cancelText="取消"
      okText="确认"
      {...props}
      onOk={() => onSubmit()}
      confirmLoading={loading}
    >
      {visible && (
        <Form form={form} {...layout} onFinish={onFinish}>
          <Item label="标签" name="name" rules={[{ required: true, message: '请输入标签' }]}>
            {/* <Select>
            <Option value={item.value}>{item.title}</Option>
          </Select> */}
            <Input placeholder="请输入标签" allowClear />
          </Item>
          <Item
            label="网络服务名"
            name="dbName"
            rules={[{ required: true, message: '请输入网络服务名' }]}
          >
            <Input placeholder="请输入网络服务名" allowClear />
          </Item>
          <Item
            label="用户名"
            name="userName"
            rules={[{ required: true, message: '请输入用户名' }]}
          >
            <Input placeholder="请输入用户名" allowClear />
          </Item>
          <Item label="密码" name="password" rules={[{ required: true, message: '请输入密码' }]}>
            <Input placeholder="请输入密码" allowClear />
          </Item>
        </Form>
      )}
    </Modal>
  );
};
export default AddModal;
