import {ModalForm,ProForm} from '@ant-design/pro-components';import {ProFormText} from '@ant-design/pro-components';import {ProFormSelect} from '@ant-design/pro-components';import {ProFormSwitch} from '@ant-design/pro-components';import {ProFormDateTimePicker} from '@ant-design/pro-components';
import {FormattedMessage, useIntl} from '@umijs/max';
import {postDeviceGroupGetDeviceGroupFkSelect} from "@/services/device/DeviceGroup";
import {postDeviceCategoryGetDeviceCategoryFkSelect} from "@/services/device/DeviceCategory";
import {putDeviceUpdateDevice} from "@/services/device/Device";
import React, {useState} from 'react';
import {Button, Form, message} from 'antd';
export type FormValueType = {
      target?: string;
      template?: string;
      type?: string;
      time?: string;
      frequency?: string;
    } & Partial<API.Device>;

    export type UpdateFormProps = {
      updateModalOpen: boolean;
      handleModal: () => void;
      values: Partial<API.Device>;
      reload: any;
    };
const UpdateForm: React.FC<UpdateFormProps> = (props) => {

  const intl = useIntl();
  const [form] = Form.useForm<API.Device>();

  return (
    <ModalForm<API.Device>
      title={intl.formatMessage({
        id: 'common.modal.table.update.title',
        defaultMessage: '$$$',
      })}
      open={props.updateModalOpen}
      form={form}
      autoFocusFirstInput
      modalProps={{
        destroyOnClose: true,
        onCancel: () => props.handleModal(),
      }}
      submitTimeout={2000}
      onFinish={async (values) => {
        putDeviceUpdateDevice(values).then(()=>{
          message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'}))
          props.reload()
        }).catch(()=>{
          message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'}))
        })

        props.handleModal();
        return true;
      }}
    >
    
<ProForm.Group>
<ProFormText width="md" name="id" label="id" disabled={true} initialValue={props.values.id}/>
<ProFormText width="md" name="name" label={<FormattedMessage id="device.device.table.list.name" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.name', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.name} disabled={false}
                    rules={[
                    {
                      required: true,
                      message: (
                        <FormattedMessage
                          id="device.device.table.rule.required.name"
                          defaultMessage="name is required"
                        />
                      ),
                    },
                  ]}
                />
<ProFormText width="md" name="code" label={<FormattedMessage id="device.device.table.list.code" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.code', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.code} disabled={false}
                    rules={[
                    {
                      required: true,
                      message: (
                        <FormattedMessage
                          id="device.device.table.rule.required.code"
                          defaultMessage="code is required"
                        />
                      ),
                    },
                  ]}
                />
<ProFormText width="md" name="position" label={<FormattedMessage id="device.device.table.list.position" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.position', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.position} disabled={false}/>
<ProFormText width="md" name="param" label={<FormattedMessage id="device.device.table.list.param" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.param', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.param} disabled={false}/>
<ProFormText width="md" name="spec" label={<FormattedMessage id="device.device.table.list.spec" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.spec', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.spec} disabled={false}/>
<ProFormSelect width="md" name="categoryFkId" label={<FormattedMessage id="device.device.table.list.categoryFkId" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.categoryFkId', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.categoryFkId} showSearch debounceTime={1000} request={async (keyWord)=>{
                              const resp = await postDeviceCategoryGetDeviceCategoryFkSelect({keyword: keyWord?.keyWords || ''})
                              return resp.data.list.map((v: any)=>{
                             return {
                               label: v.name,
                               value: v.id
                             }
                           })
                            }
                            }/>
<ProFormSelect width="md" name="groupFkId" label={<FormattedMessage id="device.device.table.list.groupFkId" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.groupFkId', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.groupFkId} showSearch debounceTime={1000} request={async (keyWord)=>{
                              const resp = await postDeviceGroupGetDeviceGroupFkSelect({keyword: keyWord?.keyWords || ''})
                              return resp.data.list.map((v: any)=>{
                             return {
                               label: v.name,
                               value: v.id
                             }
                           })
                            }
                            }/>
<ProFormSwitch width="md" name="isEnable" label={<FormattedMessage id="device.device.table.list.isEnable" defaultMessage="$$$"/>} initialValue={props.values.isEnable} disabled={false}/>
<ProFormText width="md" name="remark" label={<FormattedMessage id="device.device.table.list.remark" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.remark', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.remark} disabled={false}/>
<ProFormDateTimePicker width="md" name="createTime" label={<FormattedMessage id="device.device.table.list.createTime" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.createTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.createTime} disabled={true}/>
<ProFormDateTimePicker width="md" name="updateTime" label={<FormattedMessage id="device.device.table.list.updateTime" defaultMessage="$$$"/>} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'device.device.table.list.updateTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.updateTime} disabled={true}/>
</ProForm.Group>
</ModalForm>)}
export default UpdateForm;
