import React from 'react';
import ReactDom from 'react-dom';
import ajax from 'jquery/src/ajax/xhr.js';
import $ from 'jquery/src/ajax';
import { Form, Radio, Icon, Button, Input, Select, AutoComplete, Spin, Table, Switch, message, DatePicker, Modal, Upload,Popconfirm,Tabs } from 'antd';
import Newuser from "./newUser.jsx"
import './userMangagement.less'
import { techAuditStatusList, station, post } from '../../../dataDic.js';
import {getPost,getStation} from '../../../tools.js';

const {TabPane} = Tabs
const User = Form.create()(React.createClass({
	loadData(pageNo) {
		this.state.data = [];
		this.setState({
			userDetaile:false,
			loading: true,
			page:pageNo
		});
		var admin=window.adminData.isSuperAdmin||'';
		var departmentId=window.adminData.departmentId||'';
		$.ajax({
			method: "get",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + '/api/admin/superviser/adminList',
			data: {
				pageNo: pageNo || 1,
				pageSize: this.state.pagination.pageSize,
				name: this.state.userNameSearch,
				departmentId: admin?this.state.organizationSearch:departmentId,
				rid: this.state.rolesSearch,
				duty: this.state.postSearch,
				position: this.state.stationSearch,
				status: this.state.statusSeach,
				mobile: this.state.signNameSearch,
				superiorId: this.state.theTypes
			},
			success: function(data) {
				let theArr = [];
				if(!data.data || !data.data.list) {
					if(data.error && data.error.length) {
						message.warning(data.error[0].message);
					};
				} else {
					for(let i = 0; i < data.data.list.length; i++) {
						let thisdata = data.data.list[i];
						theArr.push({
							key: i,
							id: thisdata.id,
							mobile: thisdata.mobile,
							name: thisdata.name,
							email: thisdata.email,
							createTime: thisdata.createTime,
							province: thisdata.province,
							position: thisdata.position,
							superior: thisdata.superior, //上级名称
							superiorId: thisdata.superiorId, //上级Id
							duty: thisdata.duty, //职务
							status: thisdata.status,
							userNo: thisdata.userNo,
							departmentName: thisdata.departmentName, //部门名称
							departmentId: thisdata.departmentId, //部门id
							roles:thisdata.roles[0],
							rolesId:thisdata.rolesId,
							lastLoginTime:thisdata.lastLoginTime,
						});
					};
					this.state.pagination.current = data.data.pageNo ? data.data.pageNo : '0';
					this.state.pagination.total = data.data.totalCount ? data.data.totalCount : '0';
				};
				if(!data.data.list.length){
					this.state.pagination.current=0
					this.state.pagination.total=0
				}
				this.setState({
					dataSource: theArr,
					pagination: this.state.pagination,
					selectedRowKeys:[]
				});
			}.bind(this),
		}).always(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
	loadDatas(pageNo) {
		this.state.data = [];
		this.setState({
			userDetaile:false,
			loading: true,
			page:pageNo
		});
		var admin=window.adminData.isSuperAdmin||'';
		var departmentId=window.adminData.departmentId||'';
		$.ajax({
			method: "get",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + '/api/admin/superviser/adminList',
			data: {
				pageNo: pageNo || 1,
				pageSize: this.state.paginations.pageSize,
				name: this.state.userNameSearchs,
				status: "正常"
				// departmentId: admin?this.state.organizationSearch:departmentId,
				// rid: this.state.rolesSearch,
				// duty: this.state.postSearch,
				// position: this.state.stationSearch,
				// status: this.state.statusSeach,
				// mobile: this.state.signNameSearch,
				// superiorId: this.state.theTypes
			},
			success: function(data) {
				let theArr = [];
				if(!data.data || !data.data.list) {
					if(data.error && data.error.length) {
						message.warning(data.error[0].message);
					};
				} else {
					for(let i = 0; i < data.data.list.length; i++) {
						let thisdata = data.data.list[i];
						theArr.push({
							key: i,
							id: thisdata.id,
							mobile: thisdata.mobile,
							name: thisdata.name,
							email: thisdata.email,
							createTime: thisdata.createTime,
							province: thisdata.province,
							position: thisdata.position,
							superior: thisdata.superior, //上级名称
							superiorId: thisdata.superiorId, //上级Id
							duty: thisdata.duty, //职务
							status: thisdata.status,
							userNo: thisdata.userNo,
							departmentName: thisdata.departmentName, //部门名称
							departmentId: thisdata.departmentId, //部门id
							roles:thisdata.roles[0],
							rolesId:thisdata.rolesId
						});
					};
					this.state.paginations.current = data.data.pageNo ? data.data.pageNo : '0';
					this.state.paginations.total = data.data.totalCount ? data.data.totalCount : '0';
				};
				if(!data.data.list.length){
					this.state.paginations.current=0
					this.state.paginations.total=0
				}
				this.setState({
					dataSourceData: theArr,
					paginations: this.state.paginations,
					selectedRowKeys:[]
				});
			}.bind(this),
		}).always(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
	getInitialState() {
		return {
			datauser: {},
			searchMore: true,
			selectedRowKeys: [],
			selectedRows: [],
			userDetaile: false,
			departmentArr: [],
			loading: false,
			roleArr:[],
			pagination: {
				defaultCurrent: 1,
				defaultPageSize: 10,
				showQuickJumper: true,
				pageSize: 10,
				onChange: function(page) {
					this.loadData(page);
				}.bind(this),
				showTotal: function(total) {
					return '共' + total + '条数据';
				}
			},
			paginations: {
				defaultCurrent: 1,
				defaultPageSize: 10,
				showQuickJumper: true,
				pageSize: 10,
				onChange: function(page) {
					this.loadDatas(page);
				}.bind(this),
				showTotal: function(total) {
					return '共' + total + '条数据';
				}
			},
			columns: [{
					title: '用户编号',
					dataIndex: 'userNo',
					key: 'userNo',
				}, {
					title: '登录用户名',
					dataIndex: 'mobile',
					key: 'mobile',
				}, {
					title: '角色',
					dataIndex: 'roles',
					key: 'roles',
				}, {
					title: '用户姓名',
					dataIndex: 'name',
					key: 'name',
				}, {
					title: '部门',
					dataIndex: 'departmentName',
					key: 'departmentName',
				}, {
					title: '职务',
					dataIndex: 'duty',
					key: 'duty',
					render: text => { return getPost(text) }
				},
				{
					title: '岗位',
					dataIndex: 'position',
					key: 'position',
					render: text => { return getStation(text) }
				},

				{
					title: '上级主管姓名',
					dataIndex: 'superior',
					key: 'superior',
				},
				{
					title: '状态',
					dataIndex: 'status',
					key: 'status',
				},
				{
					title: '最后登录时间',
					dataIndex: 'lastLoginTime',
					key: 'lastLoginTime',
				}
			],
			column: [{
					title: '用户编号',
					dataIndex: 'userNo',
					key: 'userNo',
				}, {
					title: '登录用户名',
					dataIndex: 'mobile',
					key: 'mobile',
				}, {
					title: '角色',
					dataIndex: 'roles',
					key: 'roles',
				}, {
					title: '用户姓名',
					dataIndex: 'name',
					key: 'name',
				}, {
                    title: '转交',
                    dataIndex: 'ee',
                    key: 'ee',
                    render: (text, record, index) => {
                    	return <div>
							<Popconfirm title={'请确认转交【'+record.name+'】'} onConfirm={(e)=>{this.examineOK(record)}} okText="确认" cancelText="取消">
							    <Button style={{marginRight:'5px'}} onClick={(e) =>{ e.stopPropagation()}} type="primary">转交</Button>                 
							</Popconfirm>
                        </div>
					}
                },
			],
			dataSourceData: [],
		};
	},
	//点击离职一键转交
	resources() {
		this.loadDatas();
		let deletedIds;
		let rowItem;
		for(let idx = 0; idx < this.state.selectedRows.length; idx++) {
			rowItem = this.state.selectedRows[idx];
			// console.log(rowItem.id);
			if(rowItem.id) {
				deletedIds = rowItem.id;
			};
		};
		this.setState({
			visible: true,
			aid:deletedIds
		});
	},
	//关闭离职一键转交
	handleCancel(){
		this.setState({
			visible: false
		});
		this.resets();
	},
	//一键离职
	examineOK(record){
		console.log(record);
        this.setState({
            selectedRowKeys: [],
            loading: true
        });
        $.ajax({
            method: "POST",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + "/api/admin/role/dimission",
            data: {
            	aid:this.state.aid,
            	transferId:record.id,
                
            }
        }).done(function (data) {
            if (!data.error.length) {
                message.success('转交成功!');
                this.handleCancel()
            } else {
                message.warning(data.error[0].message);
            };
            this.setState({
                    loading: false,
                    visible2: false
                });
        }.bind(this));
	},
	componentWillMount() {
		this.loadData();
		this.departmentList();
		this.rolesList();
	},
	tableRowClick(record, index) {
		this.rolesArrS(record)
		this.setState({
			userDetaile:true,
			showDesc: true,
			datauser:record
		});
	},
	//新建获取id
	addIdS() {
		$.ajax({
			method: "get",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + '/api/admin/superviser/newId',
			data: {},
			success: function(data) {
				this.setState({
					addId: data.data
				});
			}.bind(this),
		}).always(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
	//部门
	departmentList() {
		this.setState({
			loading: true
		});
		$.ajax({
			method: "get",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + "/api/admin/organization/selectSuperId",
			data: {

			},
			success: function(data) {
				let thedata = data.data;
				let theArr = [];
				if(!thedata) {
					if(data.error && data.error.length) {
						message.warning(data.error[0].message);
					};
					thedata = {};
				} else {
					thedata.map(function(item, index) {
						theArr.push({
							key: index,
							name: item.name,
							id: item.id,
							depNo: item.depNo
						})
					})
				}
				this.setState({
					departmentArr: theArr,
				})
			}.bind(this),
		}).always(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
	//修改时获取角色数组 
	rolesArrS(e) {
		$.ajax({
			method: "get",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + "/api/admin/role",
			data: {
				uid:e.id
			},
			success: function(data) {
				let thedata = data.data;
				let theArr = [];
				let theId=[]
				if(!thedata) {
					if(data.error && data.error.length) {
						message.warning(data.error[0].message);
					};
					thedata = {};
				} else {
				
				}
				this.setState({
					role:thedata
				})
			}.bind(this),
		}).always(function() {
		}.bind(this));
	},
	//角色
	rolesList() {
		this.setState({
			loading: true
		});
		$.ajax({
			method: "get",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + "/api/roles",
			data: {
				
			},
			success: function(data) {
				let thedata = data.data;
				let theArr = [];
				if(!thedata) {
					if(data.error && data.error.length) {
						message.warning(data.error[0].message);
					};
					thedata = {};
				} else {
					thedata.map(function(item, index) {
						theArr.push({
							key: index,
							roleName: item.roleName,
							id: item.id,
						})
					})
				}
				this.setState({
					roleArr: theArr,
				})
			}.bind(this),
		}).always(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
	
	//锁定
	locking() {
		let deletedIds;
		let statust;
		let mobiles;
		let names;
		let rolesId=[];
		for(let idx = 0; idx < this.state.selectedRows.length; idx++) {
			let rowItem = this.state.selectedRows[idx];
			if(rowItem.id) {
				deletedIds=rowItem.id;
				statust=rowItem.status;
				names=rowItem.name;
				mobiles=rowItem.mobile;
				rolesId=rowItem.rolesId
			};
		};
			this.setState({
				selectedRowKeys: [],
				loading: true
			});
			$.ajax({
				method: "POST",
				dataType: "json",
				crossDomain: false,
				url: globalConfig.context + "/api/admin/superviser/updateAdmin",
				data: {
					roles:rolesId,
					data:JSON.stringify({
						id: deletedIds,
						status: '锁定',
						name: names,
						mobile: mobiles,
					}),
				}
			}).done(function(data) {
				if(!data.error.length) {
					message.success('锁定成功!');
					this.setState({
						loading: false,
					});
				} else {
					message.warning(data.error[0].message);
				};
				this.loadData();
			}.bind(this));
	
	},
	//激活
	activation() {
		let deletedIds;
		let statust;
		let mobiles;
		let names;
		let rolesId=[]
		for(let idx = 0; idx < this.state.selectedRows.length; idx++) {
			let rowItem = this.state.selectedRows[idx];
			if(rowItem.id) {
				deletedIds=rowItem.id;
				statust=rowItem.status;
				names=rowItem.name;
				mobiles=rowItem.mobile;
				rolesId=rowItem.rolesId
			};
		};
		
			this.setState({
				selectedRowKeys: [],
				loading: true
			});
			$.ajax({
				method: "POST",
				dataType: "json",
				crossDomain: false,
				url: globalConfig.context + "/api/admin/superviser/updateAdmin",
				data: {
					roles:rolesId,
					data:JSON.stringify({
						id: deletedIds,
						status: '正常',
						name: names,
						mobile: mobiles,
					})
				}
			}).done(function(data) {
				if(!data.error.length) {
					message.success('激活成功!');
					this.setState({
						loading: false,
					});
				} else {
					message.warning(data.error[0].message);
				};
				this.loadData();
			}.bind(this));
	},
	//删除
	delectRow() {
		let deletedIds;
		
		for(let idx = 0; idx < this.state.selectedRows.length; idx++) {
			let rowItem = this.state.selectedRows[idx];
			if(rowItem.id) {
				deletedIds=rowItem.id;
			};
		};
		this.setState({
			selectedRowKeys: [],
			loading: true
		});
		$.ajax({
			method: "POST",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + "/api/admin/superviser/deleteById",
			data: {
				id: deletedIds,	
			}
		}).done(function(data) {
			if(!data.error.length) {
				message.success('删除成功!');
				this.setState({
					loading: false,
				});
			} else {
				message.warning(data.error[0].message);
			};
			this.loadData(this.state.page);
		}.bind(this));
	},
	addClick() {
		this.addIdS()
		this.state.userDetaile = false;
		this.setState({
			showDesc: true
		});
	},
	
	closeDesc(e, s) {
		this.state.userDetaile=false;
		this.state.showDesc = e;
		if(s) {
			this.loadData(this.state.page);
		};
	},
	search() {
		this.state.userDetaile = false
		this.loadData();
	},
	searchs() {
		this.state.userDetaile = false
		this.loadDatas();
	},
	reset() {
		this.state.userNameSearch = '';
		this.state.organizationSearch = undefined;
		this.state.rolesSearch = undefined;
		this.state.postSearch = undefined;
		this.state.stationSearch = undefined;
		this.state.statusSeach = undefined;
		this.state.signNameSearch = '';
		this.state.mobileSearch = '';
		this.state.auto = '';
		this.state.theTypes='';
		this.loadData();
	},
	resets() {
		this.state.userNameSearchs = '';
		this.state.organizationSearch = undefined;
		this.state.rolesSearch = undefined;
		this.state.postSearch = undefined;
		this.state.stationSearch = undefined;
		this.state.statusSeach = undefined;
		this.state.signNameSearch = '';
		this.state.mobileSearch = '';
		this.state.auto = '';
		this.state.theTypes='';
		this.loadDatas();
	},
	searchSwitch() {
		this.setState({
			searchMore: !this.state.searchMore
		});
	},
	//主管初始加载(自动补全)
	supervisor(e) {
		$.ajax({
			method: "post",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + "/api/admin/organization/selectName",
			data: {
				name: e
			},
			success: function(data) {
				let thedata = data.data;
				if(!thedata) {
					if(data.error && data.error.length) {
						message.warning(data.error[0].message);
					};
					thedata = {};
				};
				this.setState({
					customerArr: thedata,
				});
			}.bind(this),
		}).always(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
	//上级主管输入框失去焦点是判断客户是否存在
	selectAuto(value, options) {
		this.setState({
			auto: value
		})
	},
	blurChange(e) {
		let theType = '';
		let contactLists = this.state.customerArr || [];
		if(e) {
			contactLists.map(function(item) {
				if(item.name == e.toString()) {
					theType = item.id;
				}
			});
		}
		this.setState({
			theTypes: theType
		})
	},
	//值改变时请求客户名称
	httpChange(e) {
		if(e.length >= 1) {
			this.supervisor(e);
		}
		this.setState({
			auto: e
		})
	},
	render() {
		const rowSelection = {
			selectedRowKeys: this.state.selectedRowKeys,
			onChange: (selectedRowKeys, selectedRows) => {
				this.setState({
					selectedRows: selectedRows.slice(-1),
					selectedRowKeys: selectedRowKeys.slice(-1)
				});
			},
			onSelectAll: (selected, selectedRows, changeRows) => {
				this.setState({
					selectedRowKeys: []
				})
			},
		};
		const dataSources = this.state.customerArr || [];
		const options = dataSources.map((group, index) =>
			<Select.Option key={index} value={group.name}>{group.name}</Select.Option>
		)
		const hasSelected = this.state.selectedRowKeys.length > 0;
		const { RangePicker } = DatePicker;
		let departmentArr = this.state.departmentArr || [];
		let roleArr = this.state.roleArr || [];
		return (
      <div className="user-content">
        <div className="content-title">
          <Tabs defaultActiveKey="1" onChange={this.callback} className="test">
            <TabPane tab="搜索" key="1">
              <div className="user-search">
                <Input
                  placeholder="用户姓名"
                  style={{ width: "150px" }}
                  value={this.state.userNameSearch}
                  onChange={e => {
                    this.setState({ userNameSearch: e.target.value });
                  }}
                />
                {window.adminData.isSuperAdmin ? (
                  <Select
                    placeholder="部门"
                    style={{ width: 160 }}
                    value={this.state.organizationSearch}
                    onChange={e => {
                      this.setState({ organizationSearch: e });
                    }}
                  >
                    {departmentArr.map(function(item) {
                      return (
                        <Select.Option key={item.id}>{item.name}</Select.Option>
                      );
                    })}
                  </Select>
                ) : (
                  ""
                )}
                <Select
                  placeholder="角色"
                  style={{ width: 160 }}
                  value={this.state.rolesSearch}
                  onChange={e => {
                    this.setState({ rolesSearch: e });
                  }}
                >
                  {roleArr.map(function(item) {
                    return (
                      <Select.Option key={item.id}>
                        {item.roleName}
                      </Select.Option>
                    );
                  })}
                </Select>
                <div
                  className="search-more"
                  style={{ display: "inline-block" }}
                >
                  <Select
                    placeholder="职务"
                    style={{ width: 160 }}
                    value={this.state.postSearch}
                    onChange={e => {
                      this.setState({ postSearch: e });
                    }}
                  >
                    {post.map(function(item) {
                      return (
                        <Select.Option key={item.value}>
                          {item.key}
                        </Select.Option>
                      );
                    })}
                  </Select>
                  <Select
                    placeholder="岗位"
                    style={{ width: 160 }}
                    value={this.state.stationSearch}
                    onChange={e => {
                      this.setState({ stationSearch: e });
                    }}
                  >
                    {station.map(function(item) {
                      return (
                        <Select.Option key={item.value}>
                          {item.key}
                        </Select.Option>
                      );
                    })}
                  </Select>
                  <Select
                    placeholder="状态"
                    style={{ width: 160 }}
                    value={this.state.statusSeach}
                    onChange={e => {
                      this.setState({ statusSeach: e });
                    }}
                  >
                    <Select.Option value="正常">正常</Select.Option>
                    <Select.Option value="锁定">锁定</Select.Option>
                    <Select.Option value="注销">注销</Select.Option>
                  </Select>
                  <Input
                    placeholder="登录用户名"
                    style={{ width: "150px" }}
                    value={this.state.signNameSearch}
                    onChange={e => {
                      this.setState({ signNameSearch: e.target.value });
                    }}
                  />

                  <AutoComplete
                    className="certain-category-search"
                    dropdownClassName="certain-category-search-dropdown"
                    dropdownMatchSelectWidth={false}
                    dropdownStyle={{ width: 200 }}
                    size="large"
                    style={{
                      width: "150px",
                      height: "28px",
                      marginLeft: "10px"
                    }}
                    dataSource={options}
                    placeholder="输入上级主管名字"
                    value={this.state.auto}
                    onChange={this.httpChange}
                    filterOption={true}
                    onBlur={this.blurChange}
                    onSelect={this.selectAuto}
                  >
                    <Input />
                  </AutoComplete>
                </div>
                <Button type="primary" onClick={this.search}>
                  搜索
                </Button>
                <Button onClick={this.reset}>重置</Button>
                <Button
                  style={{ background: "red", border: "none", color: "#fff" }}
                  disabled={!hasSelected}
                  onClick={this.delectRow}
                  style={{ display: "none" }}
                >
                  删除
                  <Icon type="minus" />
                </Button>

                {/* <span>更多搜索<Switch defaultChecked={false} onChange={this.searchSwitch} /></span> */}
              </div>
            </TabPane>
            <TabPane tab="操作" key="2">
              <Button
                style={{
                  background: "#333333",
                  border: "none",
                  color: "#fff",
				  marginBottom: 10,
				  marginTop: 12,
                  marginRight: 10
                }}
                disabled={!hasSelected}
                onClick={this.locking}
              >
                锁定
                <Icon type="lock" />
              </Button>
              <Button
                style={{ background: "green", border: "none", color: "#fff", marginTop: 12 }}
                disabled={!hasSelected}
                onClick={this.activation}
              >
                激活
                <Icon type="unlock" />
              </Button>
              {/* </TabPane>
					 <TabPane tab="新增" key="3"> */}
              <Button
                type="primary"
                className="addButton"
                style={{ float: "left", marginBottom: 10, marginTop: 12 }}
                onClick={this.addClick}
              >
                新增用户
                <Icon type="user" />
              </Button>
              {/* </TabPane>
					 <TabPane tab="离职转交" key="4"> */}
              <Button
                type="primary"
                className="addButton"
                style={{ float: "left", marginBottom: 10, marginTop: 12 }}
                onClick={this.resources}
                disabled={!hasSelected}
              >
                离职一键转交
                <Icon type="user" />
              </Button>
            </TabPane>
          </Tabs>
          <div className="patent-table">
            <Spin spinning={this.state.loading}>
              <Table
                columns={this.state.columns}
                dataSource={this.state.dataSource}
                rowSelection={rowSelection}
                pagination={this.state.pagination}
                onRowClick={this.tableRowClick}
              />
            </Spin>
          </div>
          <Newuser
            role={this.state.role}
            addId={this.state.addId}
            roleArr={this.state.roleArr}
            departmentArr={this.state.departmentArr}
            userDetaile={this.state.userDetaile}
            datauser={this.state.datauser}
            showDesc={this.state.showDesc}
            closeDesc={this.closeDesc}
          />
          <div className="patent-desc">
            <Modal
              maskClosable={false}
              visible={this.state.visible}
              onOk={this.checkResources}
              onCancel={this.handleCancel}
              width="800px"
              title="离职一键转交"
              footer=""
              className="admin-desc-content"
            >
              <Input
                placeholder="用户姓名"
                style={{
                  width: "150px",
                  marginRight: "10px",
                  marginBottom: "10px"
                }}
                value={this.state.userNameSearchs}
                onChange={e => {
                  this.setState({ userNameSearchs: e.target.value });
                }}
              />
              <Button type="primary" onClick={this.searchs}>
                搜索
              </Button>
              <Button onClick={this.resets}>重置</Button>

              <div className="patent-table">
                <Spin spinning={this.state.loading}>
                  <Table
                    columns={this.state.column}
                    dataSource={this.state.dataSourceData}
                    pagination={this.state.paginations}
                    onRowClick={this.tableRowClick}
                  />
                </Spin>
              </div>
            </Modal>
          </div>
        </div>
      </div>
    );
	}
}));

export default User;