import React from "react";
import { Modal } from "antd";
import {
  ProFormSelect,
  ProFormText,
  ProFormTextArea,
  StepsForm,
  ProFormRadio,
  ProFormDateTimePicker,
} from "@ant-design/pro-form";
import { useIntl, FormattedMessage } from "umi";

const UpdateForm = (props) => {
  const intl = useIntl();
  return (
    <StepsForm
      stepsProps={{
        size: "small",
      }}
      stepsFormRender={(dom, submitter) => {
        return (
          <Modal
            width={640}
            bodyStyle={{
              padding: "32px 40px 48px",
            }}
            destroyOnClose
            title={intl.formatMessage({
              id: "pages.searchTable.updateForm.ruleConfig",
              defaultMessage: "规则配置",
            })}
            visible={props.updateModalVisible}
            footer={submitter}
            onCancel={() => {
              props.onCancel();
            }}
          >
            {dom}
          </Modal>
        );
      }}
      onFinish={props.onSubmit}
    >
      <StepsForm.StepForm
        initialValues={{
          name: props.values.name,
          desc: props.values.desc,
        }}
        title={intl.formatMessage({
          id: "pages.searchTable.updateForm.basicConfig",
          defaultMessage: "基本信息",
        })}
      >
        <ProFormText
          name="name"
          label={intl.formatMessage({
            id: "pages.searchTable.updateForm.ruleName.nameLabel",
            defaultMessage: "规则名称",
          })}
          width="md"
          rules={[
            {
              required: true,
              message: (
                <FormattedMessage
                  id="pages.searchTable.updateForm.ruleName.nameRules"
                  defaultMessage="请输入规则名称！"
                />
              ),
            },
          ]}
        />
        <ProFormTextArea
          name="desc"
          width="md"
          label={intl.formatMessage({
            id: "pages.searchTable.updateForm.ruleDesc.descLabel",
            defaultMessage: "规则描述",
          })}
          placeholder={intl.formatMessage({
            id: "pages.searchTable.updateForm.ruleDesc.descPlaceholder",
            defaultMessage: "请输入至少五个字符",
          })}
          rules={[
            {
              required: true,
              message: (
                <FormattedMessage
                  id="pages.searchTable.updateForm.ruleDesc.descRules"
                  defaultMessage="请输入至少五个字符的规则描述！"
                />
              ),
              min: 5,
            },
          ]}
        />
      </StepsForm.StepForm>
      <StepsForm.StepForm
        initialValues={{
          target: "0",
          template: "0",
        }}
        title={intl.formatMessage({
          id: "pages.searchTable.updateForm.ruleProps.title",
          defaultMessage: "配置规则属性",
        })}
      >
        <ProFormSelect
          name="target"
          width="md"
          label={intl.formatMessage({
            id: "pages.searchTable.updateForm.object",
            defaultMessage: "监控对象",
          })}
          valueEnum={{
            0: "表一",
            1: "表二",
          }}
        />
        <ProFormSelect
          name="template"
          width="md"
          label={intl.formatMessage({
            id: "pages.searchTable.updateForm.ruleProps.templateLabel",
            defaultMessage: "规则模板",
          })}
          valueEnum={{
            0: "规则模板一",
            1: "规则模板二",
          }}
        />
        <ProFormRadio.Group
          name="type"
          label={intl.formatMessage({
            id: "pages.searchTable.updateForm.ruleProps.typeLabel",
            defaultMessage: "规则类型",
          })}
          options={[
            {
              value: "0",
              label: "强",
            },
            {
              value: "1",
              label: "弱",
            },
          ]}
        />
      </StepsForm.StepForm>
      <StepsForm.StepForm
        initialValues={{
          type: "1",
          frequency: "month",
        }}
        title={intl.formatMessage({
          id: "pages.searchTable.updateForm.schedulingPeriod.title",
          defaultMessage: "设定调度周期",
        })}
      >
        <ProFormDateTimePicker
          name="time"
          width="md"
          label={intl.formatMessage({
            id: "pages.searchTable.updateForm.schedulingPeriod.timeLabel",
            defaultMessage: "开始时间",
          })}
          rules={[
            {
              required: true,
              message: (
                <FormattedMessage
                  id="pages.searchTable.updateForm.schedulingPeriod.timeRules"
                  defaultMessage="请选择开始时间！"
                />
              ),
            },
          ]}
        />
        <ProFormSelect
          name="frequency"
          label={intl.formatMessage({
            id: "pages.searchTable.updateForm.object",
            defaultMessage: "监控对象",
          })}
          width="md"
          valueEnum={{
            month: "月",
            week: "周",
          }}
        />
      </StepsForm.StepForm>
    </StepsForm>
  );
};

export default UpdateForm;
