#set($upperEntityPath=$table.entityPath.toUpperCase())
import React, { PureComponent } from 'react';
import { Form, Input, Card, Button } from 'antd';
import { connect } from 'dva';
import Panel from '../../../components/Panel';
import styles from '../../../layouts/Sword.less';
import { $!{upperEntityPath}_DETAIL, $!{upperEntityPath}_SUBMIT } from '../../../actions/$!{table.entityPath}';

const FormItem = Form.Item;

@connect(({ $!{table.entityPath}, loading }) => ({
  $!{table.entityPath},
  submitting: loading.effects['code/submit'],
}))
@Form.create()
class $!{entity}Edit extends PureComponent {
  componentWillMount() {
    const {
      dispatch,
      match: {
        params: { id },
      },
    } = this.props;
    dispatch($!{upperEntityPath}_DETAIL(id));
  }

  handleSubmit = e => {
    e.preventDefault();
    const {
      dispatch,
      match: {
        params: { id },
      },
      form,
    } = this.props;
    form.validateFieldsAndScroll((err, values) => {
      if (!err) {
        const params = {
          id,
          ...values,
        };
        console.log(params);
        dispatch($!{upperEntityPath}_SUBMIT(params));
      }
    });
  };

  render() {
    const {
      form: { getFieldDecorator },
      $!{table.entityPath}: { detail },
      submitting,
    } = this.props;

    const formItemLayout = {
      labelCol: {
        xs: { span: 24 },
        sm: { span: 7 },
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 12 },
        md: { span: 10 },
      },
    };

    const action = (
      <Button type="primary" onClick={this.handleSubmit} loading={submitting}>
        提交
      </Button>
    );

    return (
      <Panel title="修改" back="/$!{cfg.servicePackage}/$!{table.entityPath}" action={action}>
        <Form hideRequiredMark style={{ marginTop: 8 }}>
          <Card className={styles.card} bordered={false}>
#foreach($field in $!{table.fields})
            <FormItem {...formItemLayout} label="$!{field.comment}">
              {getFieldDecorator('$!{field.propertyName}', {
                rules: [
                  {
                    required: true,
                    message: '请输入$!{field.comment}',
                  },
                ],
                initialValue: detail.$!{field.propertyName},
              })(<Input placeholder="请输入$!{field.comment}" />)}
            </FormItem>
#end
          </Card>
        </Form>
      </Panel>
    );
  }
}

export default $!{entity}Edit;
