import React from 'react';
import { Form, Input, Button, Row, Col } from 'antd';
import './index.less';
import Editor from '@src/components/Editor';
import Page from '@src/containers/Page';
import Block from '@src/components/Block';
// import FileUpload from '@src/components/FileUpload';
import { formatFormError, getMap } from '@src/services/Tools';
import { asyncSMessage } from '@src/services/AsyncTools';
// import {  } from '../../../../Constant';
// import { User } from '../../../stores/user';
import { System } from '../../../stores/system';
import { ContractKey } from '../../../../Constant';

const ContractKeyMap = getMap(ContractKey, 'value', 'label');

export default class extends Page {
  initData() {
    const { key } = this.params;
    const { form } = this.props;
    let handler;
    if (key) {
      handler = System.getContract({ key });
    } else {
      handler = Promise.resolve({});
    }

    handler
      .then(result => {
        form.setFieldsValue(result);
        this.setState({ data: result });
      });
  }

  submit() {
    const { form } = this.props;
    form.validateFields((err) => {
      if (!err) {
        const data = form.getFieldsValue();
        System.setContract(data).then(() => {
          asyncSMessage('保存成功');
          goBack();
        }).catch((e) => {
          if (e.result) form.setFields(formatFormError(data, e.result));
        });
      }
    });
  }

  renderBase() {
    const { getFieldDecorator } = this.props.form;
    const { data } = this.state;
    return <Block>
      <h1>协议基本信息</h1>
      <Form>
        {getFieldDecorator('key')(<input hidden />)}
        <Form.Item labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label='应用场景'>
          {ContractKeyMap[data.key] || ''}
        </Form.Item>
        <Form.Item labelCol={{ span: 5 }} wrapperCol={{ span: 16 }} label='协议标题'>
          {getFieldDecorator('title', {
            rules: [
              { required: true, message: '请输入名称' },
            ],
          })(
            <Input placeholder='请输入名称' />,
          )}
        </Form.Item>
      </Form>
    </Block>;
  }

  renderContent() {
    const { getFieldDecorator } = this.props.form;
    return <Block>
      <Form>
        <Form.Item label='正文'>
          {getFieldDecorator('content', {
          })(
            <Editor placeholder='输入内容' />,
          )}
        </Form.Item>
      </Form>
    </Block>;
  }

  renderView() {
    return <div flex>
      {this.renderBase()}
      {this.renderContent()}
      <Row type="flex" justify="center">
        <Col>
          <Button type="primary" onClick={() => {
            this.submit();
          }}>保存</Button>
        </Col>
      </Row>
    </div>;
  }
}