import React, { PropTypes } from 'react';
import { Table, Pagination, Popconfirm, Row, Col } from 'antd';
import { Link } from 'react-router'

/**
 * 格式化 `caseDesc`
 * 
 * desc:
 * 服务端传来的 `caseDesc` 换行是用 `/n` 来体现的,在页面上无法显示
 * 
 * 该方法将 `caseDesc` 按 `/n` 来切割成数据
 * 遍历切割后的数据,处理换行显示
 * 
 */
const caseDescFormat = (caseDesc) => {
  return caseDesc.split("/n")
    .map((item, index, items) => {
      if ((items.length - 1) == index) {
        return <span>{item}</span>
      } else {
        return <span>{item}<br/></span>
      }
    });
};

/**
 * 处理表格左侧 `+` 扩展内容
 * 
 * desc:
 * 表格显示的字段为主要字段,扩展中显示的是附加字段及详情
 * 方便在使用case的时候,可以直接在表格上操作,减去进入详情的步骤
 * 
 */
export const expandedRowRender = (record) => {
  const caseDescElement = caseDescFormat(record.caseDesc);

  const styleTitle = { textAlign: 'right', border: '1px dotted #ccc', borderRight: 'none', borderLeft: 'none', padding: '10px', lineHeight: '1.5' };
  const styleContent = { border: '1px dotted #ccc', borderLeft: 'none', borderRight: 'none', padding: '10px', lineHeight: '1.5' };
  const styleDetail = { textAlign: 'right', padding: '0 10px 10px 10px' };
  const styleDetailCont = { textAlign: 'right', padding: '10px' };
  return <div>
    <Row>
      <Col style={styleTitle} span={2}>小区:</Col>
      <Col style={styleContent} span={3}>{record.community ? record.community : '暂无数据'}</Col>
      <Col style={styleTitle} span={2}>业主姓名:</Col>
      <Col style={styleContent} span={3}>{record.ownerName ? record.ownerName : '暂无数据'}</Col>
      <Col style={styleTitle} span={2}>单元:</Col>
      <Col style={styleContent} span={3}>{record.unit ? record.unit : '暂无数据'}</Col>
      <Col style={styleTitle} span={2}>实收金额:</Col>
      <Col style={styleContent} span={3}>{record.recoveredAmount ? record.recoveredAmount : '暂无数据'}</Col>
    </Row>
    <Row>
      <Col style={styleTitle} span={2}>楼栋:</Col>
      <Col style={styleContent} span={3}>{record.building ? record.building : '暂无数据'}</Col>
      <Col style={styleTitle} span={2}>欠费月数:</Col>
      <Col style={styleContent} span={3}>{record.arrearsMonth ? record.arrearsMonth : '暂无数据'}</Col>
      <Col style={styleTitle} span={2}>房号:</Col>
      <Col style={styleContent} span={3}>{record.room ? record.room : '暂无数据'}</Col>
      <Col style={styleTitle} span={2}>业主电话:</Col>
      <Col style={styleContent} span={3}>{record.ownerPhone ? record.ownerPhone : '暂无数据'}</Col>
    </Row>
    <Row>
      <Col style={styleTitle} span={2}>收费方式:</Col>
      <Col style={styleContent} span={2}>{record.chargeWay ? record.chargeWay : '暂无数据'}</Col>
      <Col style={styleTitle} span={3}>实收历史欠费金额:</Col>
      <Col style={styleContent} span={13}>{record.arrearsAmount ? record.arrearsAmount : '暂无数据'}</Col>
    </Row>
    <br />
    <Row>
      <Col style={styleDetail} span={2}>详情:</Col>
      <Col style={styleDetailCont} span={7} style={{ whiteSpace: 'pre-line' }}>{caseDescElement ? caseDescElement : '暂无数据'}</Col>
    </Row>
  </div>
};

/**
 * case管理表格字段配置
 */
export function caseManageTableHead(operation) {
  return [
    {
      title: '工单号',
      dataIndex: 'caseNo',
    }, {
      title: '标题',
      render: (text, record, index) => <div className="yincang" style={{ width: '300' }}>{record.caseTitle}</div>,
    },
    {
      title: '优先级',
      dataIndex: 'priority',
      key: 'priority',
      sorter: true,
      filters: [
        {
          text: '非常高',
          value: '1',
        },
        {
          text: '高',
          value: '2',
        },
        {
          text: '中',
          value: '3',
        },
        {
          text: '低',
          value: '4',
        }
      ],
      render: (text, record, index) => {
        return formatPriority(record.priority);
      }
    }
    , {
      title: '发起人',
      dataIndex: 'createUser',
      key: 'createUser'
    }, {
      title: '发起时间',
      dataIndex: 'createTime',
      key: 'createTime',
      sorter: true
    }, {
      title: '执行人',
      render: (text, record, index) => record.executorList[0] && record.executorList[0].userName,
      key: 'executorUser'
    }, {
      title: '类型',
      dataIndex: 'caseTypeName',
      key: 'caseTypeName',
      filters: operation.typeList
      // filterMultiple: false
    }, {
      title: '状态',
      render: function(text, record, index) {
        return formatStatus(record.status);
      },
      key: 'status',
    }, {
      title: '催费金额',
      dataIndex: 'amount',
      key: 'amount',
      sorter: true
    }, {
      title: '关注人',
      render: (text, record, index) => <div className="yincang" style={{ width: '400' }}>{record.focusList}</div>,
      key: 'focusUser'
    }, {
      title: '管理',
      key: 'operation',
      fixed: 'right',
      render: (record) => <Link to={{ pathname: "case_detail/" + record.id }}>详情</Link>
    }];
}

/**
 * case排名表格字段配置
 */
export function caseRankTableHead(operation) {
  return [
    {
      title: '排名',
      dataIndex: 'rownum'
    },
    {
      title: '员工姓名',
      dataIndex: 'userName',
      key: 'userName'
    },
    {
      title: '排名类型',
      render: (text, record, index) => {
        switch (record.rankType) {
          case 'remain':
            return (<div>剩余任务</div>);
          case 'create':
            return (<div>发起任务</div>);
          case 'finish':
            return (<div>完成任务</div>);
          case 'confirmfinish':
            return (<div>确认完成任务</div>);
          case 'close':
            return (<div>关闭任务</div>);
        }
      },
      key: 'rankType'
    },
    {
      title: '任务数量',
      dataIndex: 'caseNumber',
      key: 'caseNumber',
      sorter: true
    },
    {
      title: '日期',
      dataIndex: 'rankTime',
      key: 'rankTime'
    }];
}


/**
 * 我的关注表格字段配置
 */
export function myFocusTableHead(operation) {
  return [
    {
      title: '工单号',
      dataIndex: 'caseNo',
    }, {
      title: '标题',
      render: (text, record, index) => <div className="yincang" style={{ width: '300' }}>{record.caseTitle}</div>,
    },
    {
      title: '优先级',
      dataIndex: 'priority',
      key: 'priority',
      sorter: true,
      filters: [
        {
          text: '非常高',
          value: '1',
        },
        {
          text: '高',
          value: '2',
        },
        {
          text: '中',
          value: '3',
        },
        {
          text: '低',
          value: '4',
        }
      ],
      render: (text, record, index) => {
        return formatPriority(record.priority);
      }
    }
    , {
      title: '发起人',
      dataIndex: 'createUser',
      key: 'createUser'
    }, {
      title: '发起时间',
      dataIndex: 'createTime',
      key: 'createTime',
      sorter: true
    }, {
      title: '执行人',
      render: (text, record, index) => record.executorList[0] && record.executorList[0].userName,
      key: 'executorUser'
    }, {
      title: '类型',
      dataIndex: 'caseTypeName',
      key: 'caseTypeName',
      filters: operation.typeList
      // filterMultiple: false
    }, {
      title: '状态',
      render: (text, record, index) => {
        return formatStatus(record.status);
      },
      key: 'status',
    }, {
      title: '催费金额',
      dataIndex: 'amount',
      key: 'amount',
      sorter: true
    }, {
      title: '关注人',
      render: (text, record, index) => <div className="yincang" style={{ width: '400' }}>{record.focusList}</div>,
      key: 'focusUser'
    }, {
      title: '管理',
      key: 'operation',
      fixed: 'right',

      render: (record) => {
        return (
          <span>
            <Link to={{ pathname: "case_detail/" + record.id }}>详情</Link>
          </span>)
      }
    }];
}


/**
 * 我的任务表格字段配置
 */
export function myTaskTableHead(operation) {
  return [
    {
      title: '工单号',
      dataIndex: 'caseNo'
    }, {
      title: '标题',
      render: (text, record, index) => <div className="yincang" style={{ width: '300' }}>{record.caseTitle}</div>
    },
    {
      title: '优先级',
      dataIndex: 'priority',
      key: 'priority',
      sorter: true,
      filters: [
        {
          text: '非常高',
          value: '1',
        },
        {
          text: '高',
          value: '2',
        },
        {
          text: '中',
          value: '3',
        },
        {
          text: '低',
          value: '4',
        }
      ],
      render: (text, record, index) => {
        return formatPriority(record.priority);
      }
    }
    , {
      title: '发起人',
      dataIndex: 'createUser',
      key: 'createUser'
    }, {
      title: '发起时间',
      dataIndex: 'createTime',
      key: 'createTime',
      sorter: true
    }, {
      title: '执行人',
      render: (text, record, index) => record.executorList[0] && record.executorList[0].userName,
      key: 'executorUser'
    }, {
      title: '类型',
      dataIndex: 'caseTypeName',
      key: 'caseTypeName',
      // filterMultiple: false,
      filters: operation.typeList
    }, {
      title: '状态',
      render: (text, record, index) => {
        return formatStatus(record.status);
      },
      key: 'status'
    }, {
      title: '催费金额',
      dataIndex: 'amount',
      key: 'amount',
      sorter: true
    }, {
      title: '关注人',
      render: (text, record, index) => <div className="yincang" style={{ width: '400' }}>{record.focusList}</div>,
      key: 'focusUser'
    }, {
      title: '管理',
      key: 'operation',
      fixed: 'right',

      render: (record) => {
        let successDom;
        const finishtext = '确定要完成这个任务吗?';
        if (record.status != 2 && record.status != 3 && record.status != 4) {

          successDom = <span>
            <span className="ant-divider"></span>
            <Popconfirm placement="top" title={finishtext} onConfirm={() => { operation.finishCase(record.id) } }>
              <a>完成</a>
            </Popconfirm>
          </span>;
        }
        return (
          <span>
            <Link to={{ pathname: "case_detail/" + record.id }}>详情</Link>
            {successDom}
          </span>);
      }
    }];
}


/**
 * 我的case表格字段配置
 */
export function myCaseTableHead(operation) {
  return [
    {
      title: '工单号',
      dataIndex: 'caseNo',
    },
    {
      title: '标题',
      render: (text, record, index) => <div className="yincang" style={{ width: '300' }}>{record.caseTitle}</div>,
    },
    {
      title: '优先级',
      dataIndex: 'priority',
      key: 'priority',
      sorter: true,
      filters: [
        {
          text: '非常高',
          value: '1',
        },
        {
          text: '高',
          value: '2',
        },
        {
          text: '中',
          value: '3',
        },
        {
          text: '低',
          value: '4',
        }
      ],
      render: (text, record, index) => {
        return formatPriority(record.priority);
      }
    },
    {
      title: '发起人',
      dataIndex: 'createUser',
      key: 'createUser'
    }, {
      title: '发起时间',
      dataIndex: 'createTime',
      key: 'createTime',
      sorter: true
    }, {
      title: '执行人',
      render: (text, record, index) => record.executorList[0] && record.executorList[0].userName,
      key: 'executorUser'
    }, {
      title: '类型',
      dataIndex: 'caseTypeName',
      key: 'caseTypeName',
      filters: operation.typeList
      // filterMultiple: false
    }, {
      title: '状态',
      render: (text, record, index) => {
        return formatStatus(record.status);
      },
      key: 'status',
    }, {
      title: '催费金额',
      dataIndex: 'amount',
      key: 'amount',
      sorter: true
    }, {
      title: '关注人',
      render: (text, record, index) => <div className="yincang" style={{ width: '400' }}>{record.focusList}</div>,
      key: 'focusUser'
    }, {
      title: '管理',
      key: 'operation',
      fixed: 'right',

      render: (record) => {
        let ConfirmDom, CloseDom;
        const confirmFinishtext = '确定要完成这个任务吗?';
        const closetext = '确定要关闭这个任务吗?';
        if (record.status == 2) { // 已完成状态下才能操作确认完成
          ConfirmDom = <span>
            <span className="ant-divider"></span>
            <Popconfirm placement="top" title={confirmFinishtext} onConfirm={() => { operation.confirmFinishCase(record.id) } }>
              <a>确认完成</a>
            </Popconfirm>
          </span>

          // ConfirmDom = ConfirmFinisModal;
        }
        if (record.status != 3 && record.status != 4) {
          CloseDom = <span>
            <span className="ant-divider"></span>
            <Popconfirm placement="top" title={closetext} onConfirm={() => { operation.closeCase(record.id) } }>
              <a>关闭</a>
            </Popconfirm>
          </span>
          // CloseDom = CloseModal;
        }
        return (
          <span>
            <Link to={{ pathname: "case_detail/" + record.id }}>详情</Link>
            { ConfirmDom }
            { CloseDom }
          </span>)

        // return (
        //   <span>
        //     <Link to={{pathname:"case_detail/" + record.id}}>详情</Link>
        //     {record.status != 3 && record.status != 4? <CloseModal confirmFinishCase={(close_message)=>{operation.confirmFinishCase(record.id, close_message)}}/> : ''}
        //     {record.status == 2? <ConfirmFinisModal /> : ''}
        //   </span>)
      }
    }];
}

/**
 * case分组表格字段配置
 */
export function caseGroupTableHead(operation) {
  return [
    {
      title: '工单号',
      dataIndex: 'caseNo',
    }, {
      title: '标题',
      render: (text, record, index) => <div className="yincang" style={{ width: '300' }}>{record.caseTitle}</div>,
    },
    {
      title: '优先级',
      dataIndex: 'priority',
      key: 'priority',
      sorter: true,
      filters: [
        {
          text: '非常高',
          value: '1',
        },
        {
          text: '高',
          value: '2',
        },
        {
          text: '中',
          value: '3',
        },
        {
          text: '低',
          value: '4',
        }
      ],
      render: (text, record, index) => {
        return formatPriority(record.priority);
      }
    }
    , {
      title: '发起人',
      dataIndex: 'createUser',
      key: 'createUser'
    }, {
      title: '发起时间',
      dataIndex: 'createTime',
      key: 'createTime',
      sorter: true
    }, {
      title: '执行人',
      render: (text, record, index) => record.executorList[0] && record.executorList[0].userName,
      key: 'executorUser'
    }, {
      title: '类型',
      dataIndex: 'caseTypeName',
      key: 'caseTypeName',
      filters: operation.typeList
      // filterMultiple: false
    }, {
      title: '状态',
      render: function(text, record, index) {
        return formatStatus(record.status);
      },
      key: 'status',
    }, {
      title: '催费金额',
      dataIndex: 'amount',
      key: 'amount',
      sorter: true
    }, {
      title: '关注人',
      render: (text, record, index) => <div className="yincang" style={{ width: '400' }}>{record.focusList}</div>,
      key: 'focusUser'
    }, {
      title: '管理',
      key: 'operation',
      fixed: 'right',
      render: (record) => <Link to={{ pathname: "case_detail/" + record.id }}>详情</Link>
    }];
}

/**
 * 关联case 表格配置
 */
export function relatedCaseTableHead(operation) {
  return [
    {
      title: '工单号',
      dataIndex: 'caseNo',
      key: 'caseNo',
      render: (text) => <a href="#">{text}</a>,
    }, {
      title: '标题',
      dataIndex: 'title',
      key: 'title',
    }, {
      title: '类型',
      dataIndex: 'caseTypeName',
      key: 'caseTypeName',
    }, {
      title: '优先级',
      dataIndex: 'priority',
      key: 'priority',
      render: (text, record, index) => {
        return formatPriority(record.priority);
      }
    }, {
      title: '状态',
      render: function(text, record, index) {
        return formatStatus(record.status);
      },
      key: 'status',
    }, {
      title: '操作',
      key: 'operation',
      render: (text, record) => {
        
        const closetext = '确定删除该关联分组?';
        
        return (
          <span>
            <Link to={{ pathname: "case_detail/" + record.id }}>详情</Link>
            <span className="ant-divider"></span>
            
            <span>
              <span className="ant-divider"></span>
              <Popconfirm placement="top" title={closetext} onConfirm={() => { operation.delRelatedCase(record.id) } }>
                <a>删除</a>
              </Popconfirm>
            </span>
            
          </span>
        )
      },
    }];
}

function formatPriority(priority) {
  switch (priority) {
    case '1':
      return (<div><span className="case-state state-error"></span>非常高</div>);
    case '2':
      return (<div><span className="case-state state-emergency"></span>高</div>);
    case '3':
      return (<div><span className="case-state state-ongoing"></span>中</div>);
    case '4':
      return (<div><span className="case-state state-close"></span>低</div>);
      
    default:
      return '暂无数据'
  }
}

function formatStatus(status) {
  switch (status) {
    case '1':
      return (<div><span className="case-state state-error"></span>进行中</div>);
    case '2':
      return (<div><span className="case-state state-success"></span>已完成</div>);
    case '3':
      return (<div><span className="case-state state-close"></span>确认完成</div>);
    case '4':
      return (<div><span className="case-state state-close"></span>已关闭</div>);
  }
}