import React, { Component } from 'react';
import { Button, Input, message, Select, Spin, Table, Tag, Popconfirm, Tabs } from "antd";
import AddSoftWritingPrice from './addSoftWritingPrice'
import $ from "jquery/src/ajax";
import '../content.less';
import { getMaterialStatus } from "@/tools";
import { ChooseList } from "../../order/orderNew/chooseList";

const TabPane = Tabs.TabPane;

class SoftwareConfigure extends Component {
  constructor(props) {
    super(props);
    this.state = {
      companyName: '',        //公司名称
      urgent: undefined,            //加急
      material: undefined,          //方案
      pagination: {
        defaultCurrent: 1,
        defaultPageSize: 10,
        showQuickJumper: true,
        pageSize: 10,
        onChange: function (page) {
          this.loadData(page);
        }.bind(this),
        showTotal: function (total) {
          return '共' + total + '条数据';
        }
      },
      dataSource: [],
      columns: [
        {
          title: '供应商名称',
          dataIndex: 'companyName',
          key: 'companyName',
        },
        {
          title: '方案',
          dataIndex: 'material',
          key: 'material',
          render: (text, record) => {
            return getMaterialStatus(text)
          },
        },
        {
          title: '加急天数',
          dataIndex: 'urgent',
          key: 'urgent',
          render: (text) => {
            switch (text) {
              case 0:
                return '无加急';
              case 1:
                return '加急3-5个工作日';
              case 2:
                return '加急6-10个工作日';
              case 3:
                return '加急11-15个工作日';
              case 4:
                return '加急16-20个工作日';
              case 5:
                return '加急21-25个工作日';
              case 6:
                return '加急26-30个工作日';
              case 7:
                return '加急45个工作日';
              case 8:
                return '加急60个工作日';
            }
          }
        },
        {
          title: '价格万元/个',
          dataIndex: 'unitPrice',
          key: 'unitPrice',
        },
        {
          title: '备注',
          dataIndex: 'remarks',
          key: 'remarks',
        },
        {
          title: '状态',
          dataIndex: 'status',
          key: 'status',
          render: (text) => {
            return text === 0 ? <Tag color="#87d068">正常</Tag> :
              text === 1 ? <Tag>停用</Tag> : <Tag color="#f50">删除</Tag>
          }
        },
        {
          title: '操作',
          dataIndex: 'id',
          key: 'id',
          render: (text) => {
            return <div>
              <Popconfirm
                title="是否删除?"
                onConfirm={() => {
                  this.deleteSoftWritingPrice(text);
                }}
                okText="删除"
                cancelText="不删除"
              >
                <Button type="danger" onClick={(e) => {
                  e.stopPropagation()
                }}>
                  删除
                </Button>
              </Popconfirm>
            </div>
          }
        },
      ],
      addSoftVisible: false,
      infor: {},
      pageNo: 1,
    }
    this.loadData = this.loadData.bind(this);
    this.tableRowClick = this.tableRowClick.bind(this);
    this.reset = this.reset.bind(this);
    this.changeList = this.changeList.bind(this);
  }

  componentDidMount() {
    this.loadData();
  }

  //搜索功能和初始列表加载
  loadData(pageNo) {
    this.setState({
      loading: true,
    });
    $.ajax({
      method: "get",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + '/api/admin/company/listSoftWritingPrice',
      data: {
        pageNo: pageNo || 1,
        pageSize: this.state.pagination.pageSize,
        companyName: this.state.companyName || undefined,       //公司名称
        urgent: this.state.urgent,    //加急
        material: this.state.material,  //方案
      },
      success: function (data) {
        if (!data.data || !data.data.list) {
          if (data.error && data.error.length) {
            message.warning(data.error[0].message);
          }
        } else {
          this.state.pagination.current = data.data.pageNo;
          this.state.pagination.total = data.data.totalCount;
          if (data.data && data.data.list && !data.data.list.length) {
            this.state.pagination.current = 0;
            this.state.pagination.total = 0;
          }
          data.data.list.map((v, i) => { v.key = i })
          this.setState({
            dataSource: data.data.list,
            pagination: this.state.pagination,
            pageNo: data.data.pageNo
          });
        }

      }.bind(this),
    }).always(function () {
      this.setState({
        loading: false
      });
    }.bind(this));
  }

  tableRowClick(infor) {
    this.setState({
      addSoftVisible: true,
      infor: infor
    })
  }

  reset() {
    this.setState({
      companyName: '',       //公司名称
      urgent: undefined,    //加急
      material: undefined,  //方案
    }, () => {
      this.loadData();
    })
  }

  //删除
  deleteSoftWritingPrice(id) {
    let _this = this;
    this.setState({
      loading: true
    });
    $.ajax({
      method: "post",
      dataType: "json",
      crossDomain: false,
      url: globalConfig.context + '/api/admin/company/deleteSoftWritingPrice',
      data: {
        id: id
      },
    }).done(function (data) {
      _this.setState({
        loading: false
      });
      if (!data.error.length) {
        message.success('删除成功!');
        _this.loadData();
      } else {
        message.warning(data.error[0].message);
      }
    }.bind(this));
  }
  changeList(arr) {
    const newArr = [];
    this.state.columns.forEach(item => {
      arr.forEach(val => {
        if (val === item.title) {
          newArr.push(item);
        }
      });
    });
    this.setState({
      changeList: newArr
    });
  }

  render() {
    return (
      <div className="user-content" >
        <div className="content-title">
          <Tabs defaultActiveKey="1" className="test">
            <TabPane tab="搜索" key="1">
              <div className="user-search" style={{ display: 'flex', flexFlow: 'row' }}>
                <Input placeholder="公司名称" style={{ width: '150px', marginRight: '10px', marginBottom: '10px', marginLeft: 10 }}
                  value={this.state.companyName}
                  onChange={(e) => { this.setState({ companyName: e.target.value }); }} />
                <div style={{ display: 'flex', flexFlow: 'row nowrap' }}>
                  <div style={{ marginLeft: 10, marginRight: 10 }}>方案:</div>
                  <Select
                    placeholder="方案"
                    style={{ width: '200px', marginRight: '10px' }}
                    value={this.state.material}
                    onChange={(e) => { this.setState({ material: e }) }}>
                    <Select.Option value={0}>无</Select.Option>
                    <Select.Option value={1}>有</Select.Option>
                  </Select>
                </div>
                <div style={{ display: 'flex', flexFlow: 'row nowrap' }}>
                  <div style={{ marginLeft: 10, marginRight: 10 }}>加急天数:</div>
                  <Select placeholder="加急天数"
                    style={{ width: '200px', marginRight: '10px' }}
                    value={this.state.urgent}
                    onChange={(e) => { this.setState({ urgent: e }) }}>
                    <Select.Option value={0}>无加急</Select.Option>
                    <Select.Option value={1}>加急3-5个工作日</Select.Option>
                    <Select.Option value={2}>加急6-10个工作日</Select.Option>
                    <Select.Option value={3}>加急11-15个工作日</Select.Option>
                    <Select.Option value={4}>加急16-20个工作日</Select.Option>
                    <Select.Option value={5}>加急21-25个工作日</Select.Option>
                    <Select.Option value={6}>加急26-30个工作日</Select.Option>
                    <Select.Option value={7}>加急45个工作日</Select.Option>
                    <Select.Option value={8}>加急60个工作日</Select.Option>
                  </Select>
                </div>
                <Button type="primary" onClick={() => {
                  this.loadData();
                }} style={{ marginRight: '10px' }}>搜索</Button>
                <Button onClick={this.reset} style={{ marginRight: '10px' }}>重置</Button>
                <span style={{ marginLeft: 'auto' }}>
                  <Button type="primary" size={'middle'} onClick={() => {
                    this.setState({
                      addSoftVisible: true
                    })
                  }}>
                    增加
                  </Button>
                </span>
              </div>
            </TabPane>
            <TabPane tab="更改表格显示数据" key="2">
              <div style={{ marginLeft: 10 }}>
                <ChooseList
                  columns={this.state.columns}
                  changeFn={this.changeList}
                  changeList={this.state.changeList}
                  top={55}
                  margin={11}
                />
              </div>
            </TabPane>
          </Tabs>
          <div className="patent-table">
            <Spin spinning={this.state.loading}>
              <Table size="middle" columns={
                this.state.changeList
                  ? this.state.changeList
                  : this.state.columns
              }
                style={{
                  cursor: 'pointer',
                }}
                dataSource={this.state.dataSource}
                pagination={this.state.pagination}
                onRowClick={this.tableRowClick} />
            </Spin>
          </div>
        </div>
        {this.state.addSoftVisible ? <AddSoftWritingPrice
          infor={this.state.infor}
          visible={this.state.addSoftVisible}
          onCancel={() => {
            this.setState({
              addSoftVisible: false,
              infor: {},
            })
          }}
          successFn={() => {
            this.loadData(this.state.pageNo);
            this.setState({
              addSoftVisible: false,
              infor: {}
            })
          }} /> : <div />}
      </div>
    )
  }
}

export default SoftwareConfigure