/**
 * 钟是志
 * 2019年2月26日
 * 用于 弹出提示信息 确认用户是否执行XXX操作
 * 一个按钮 + 点击按钮显示的提示
 * 点确定 调接口->关闭弹窗 刷新页面
 * */
import ButtonDiy from '@/baseComponent/ButtonDiy';
import React, { Component, Fragment } from 'react';
import { message, Modal  } from 'antd';
import PropTypes from 'prop-types';
import * as service from '@/highOrderComponent/Service';


export default class ModalConfirm extends Component {

  handleConfirm = () => {
    const { selectRows,name, contentSentence, onlyOne, checkSelectRow, noNeedCheckSelect,listData } = this.props;
    if(typeof noNeedCheckSelect === 'undefined' && !selectRows.length){
        message.warning('请至少选择一条数据');
        return false;
    }

    if(onlyOne && selectRows.length > 1){
      message.warning('只能选择一条数据进行操作');
      return false;
    }
    if(checkSelectRow){
      let res = checkSelectRow(selectRows, listData);
      if(res && res.result === false){
        message.warning(res.info);
        return false;
      }

    }
    Modal.confirm({
      title: name,
      content: contentSentence,
      onOk: this.handleOk,
      okText: '确定',
      cancelText: '取消',
    });

  };

  handleOk = () => {
    const { selectRows, postKey, sourceKey, url,
      responseCallBack, getPage,fields,formValues,
      beforeUpdate,search } = this.props;
    let data = {};
    if(fields){
      data  = {...fields};
    }
    data[postKey] = selectRows.map( (item) => {
      return item[sourceKey];
    });
    data[postKey] = data[postKey].join(',');
    if(beforeUpdate){
      data = beforeUpdate(data,selectRows,formValues,search);
    }
    service.addOrUpdate(data,url).then((response) => {
      if(responseCallBack && !responseCallBack(response)){
        return false;
      }
      if(!response){
        return false;
      }else{
        message.success('操作成功');
        getPage();
      }
    });
  };

  render() {
    const { name, className } = this.props;
    return (
      <Fragment>
        <ButtonDiy name={name}
                   className={className}
                   handleClick={this.handleConfirm}/>
      </Fragment>);
  }
}

ModalConfirm.propTypes = {
  name: PropTypes.string, // 按钮名称和 弹窗的标题
  selectRows: PropTypes.array.isRequired, // 选择的数据.数组类型
  className: PropTypes.string, // 按钮样式
  sourceKey: PropTypes.string.isRequired,  // 通过什么字段删除
  postKey: PropTypes.string, // 提交的字段名.
  url: PropTypes.string.isRequired,  // 接口url
  responseCallBack: PropTypes.func, // 接口返回数据检查
  getPage: PropTypes.func.isRequired,  // 刷新页面的方法
};

ModalConfirm.defaultProps = {
  name: '一键审核通过',
  className: 'defaultBlue',
  url: 'asdasd/asdasd',
  contentSentence: '您确认xxxxx吗?',
  sourceKey: 'id',
  postKey: 'ids',
  selectRows: [],
  responseCallBack: (response)=>{
    return !!response;
  },
};
