import React from 'react';
import { Icon, Table, Modal, message, Spin, Input, Select, Button, Radio,Form ,Upload,Popconfirm,AutoComplete,DatePicker} from 'antd';
import ajax from 'jquery/src/ajax/xhr.js';
import $ from 'jquery/src/ajax';
import '../../userMangagement.less';
import {orderType} from '../../../../dataDic.js';  
import {splitUrl,getOrderType,getOrderStage,getProjectState,getOrderState,getTransactionProject,getChangeState,getPaymentState,getOrderChannel,getApprovedState,getLock,getPaymentMethod,getTransactionChannel,beforeUploadFile} from '../../../../tools.js';
const Option = AutoComplete.Option;
//图片组件
const PicturesWall = React.createClass({
    getInitialState() {
        return {
            previewVisible: false,
            previewImage: '',
            fileList: [],
        }
    },
    handleCancel() {
        this.setState({ previewVisible: false })
    },
    handlePreview(file) {
        this.setState({
            previewImage: file.url || file.thumbUrl,
            previewVisible: true,
        });
    },
    handleChange(info) {
        let fileList = info.fileList;
        this.setState({ fileList });
        this.props.fileList(fileList);
    },
    componentWillReceiveProps(nextProps) {
        this.state.fileList = nextProps.pictureUrl; 
    },
    render() {
        const { previewVisible, previewImage, fileList } = this.state;
        const uploadButton = (
            
        );
        return (
            
                
                    {fileList.length >= 8 ? null : uploadButton}
                
                
                     
                
             
        );
    }
});
const NewService = Form.create()(React.createClass({
	loadData(record) {
        this.state.data = [];
        this.setState({
            loading: true
        });
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + '/api/admin/order/getOrderCommodity',
            data: {
            	orderNo:record?record.orderNo:this.props.datauser.orderNo
            },
            success: function (data) {
                let theArr = [];
                if (!data.data) {
                    if (data.error && data.error.length) {
                        message.warning(data.error[0].message);
                    };
                } else {
                    for (let i = 0; i < data.data.length; i++) {
                        let thisdata = data.data[i];
                        theArr.push({
                             key: i,
                             id:thisdata.id,
                             orderNo:thisdata.orderNo,
                             commodityName:thisdata.commodityName,
                             commodityType:thisdata.commodityType,
                             commodityMode:thisdata.commodityMode,
                             commodityQuantity:thisdata.commodityQuantity,
                             commodityPrice:thisdata.commodityPrice,
                             discountPrice:thisdata.discountPrice,
                             commodityFirstPayment:thisdata.commodityFirstPayment,
                             createTimes:thisdata.createTimes,
                             discountFirstPayment:thisdata.discountFirstPayment,
                             remarks:thisdata.remarks,
                        });
                    };
                   }
                this.setState({
                    dataSource: theArr,
                    pagination: false,
                });
            }.bind(this),
        }).always(function () {
            this.setState({
                loading: false
            });
        }.bind(this));
    },
	getInitialState() {
		return {
			loading: false,
			visible: false,
			orgCodeUrl:[],
			lookState:false,
			checkedKeys: [],
			lookflowList:[],
			editFw:[],
			signBillVisible:false,
			commod:'',
			columns: [
				{
                    title: '业务项目名称',
                    dataIndex: 'commodityName',
                    key: 'commodityName'
                }, {
                    title: '项目类别',
                    dataIndex: 'commodityType',
                    key: 'commodityType',
                    render:(text)=>{
                    	return (getOrderType(text))
                    }
                },{
                    title: '项目数量',
                    dataIndex: 'commodityQuantity',
                    key: 'commodityQuantity'
                }, {
                    title: '服务市价(万元)',
                    dataIndex: 'commodityPrice',
                    key: 'commodityPrice'
                }, {
                    title: '实签价格(万元)',
                    dataIndex: 'discountPrice',
                    key: 'discountPrice'
                }, {
                    title: '下单时间',
                    dataIndex: 'createTimes',
                    key: 'createTimes'
                }, {
                    title: '项目说明',
                    dataIndex: 'remarks',
                    key: 'remarks',
					render:(text)=>{
						return (text&&text.length>8?text.substr(0,8)+'…':text)
					}
                }, {
                    title: '操作',
                    dataIndex: 'ABC',
                    key: 'ABC',
                    render: (text, record, index) => {
						return 
								{this.delectRow(record)}} okText="是" cancelText="否">
								                     
								
							 
							}
                },
			],
			flowList:[
				{
                    title: '平台流水号',
                    dataIndex: 'billNo',
                    key: 'billNo',
                }, {
                    title: '平台流水时间',
                    dataIndex: 'createTime',
                    key: 'createTime'
                }, {
                    title: '流水金额(万元)',
                    dataIndex: 'transactionAmount',
                    key: 'transactionAmount'
                },{
                    title: '付款人名称',
                    dataIndex: 'payerName',
                    key: 'payerName'
                }, {
                    title: '收款人名称',
                    dataIndex: 'payeeName',
                    key: 'payeeName'
                },
                {
                    title: '流水科目',
                    dataIndex: 'transactionSubject',
                    key: 'transactionSubject',
                    render:(text)=>{return getTransactionProject(text) }
                }, {
                    title: '流水渠道',
                    dataIndex: 'transactionChannel',
                    key: 'transactionChannel',
                    render:(text)=>{return getTransactionChannel(text) }
                },{
                    title: '财务流水号',
                    dataIndex: 'financialPayNo',
                    key: 'financialPayNo',
                }, {
                    title: '财务流水时间',
                    dataIndex: 'financialPayTime',
                    key: 'financialPayTime',
                }, {
                    title: '流水确认',
                    dataIndex: 'confirmSign',
                    key: 'confirmSign',
                    render:(text)=>{return text?'已确认':'待确认' }
                },{
                    title: '确认时间',
                    dataIndex: 'confirmTime',
                    key: 'confirmTime',
                }
			]
		};
	},
	//新建订单、编辑订单保存
	handleSubmit(e) {
		e.preventDefault();
        if(this.props.userDetaile){
	        if(!this.state.signTotalAmount){
	        	message.warning('请输入实签订单金额!');
	        	this.refs.signFirstPayment.focus()
	        	return false;
	        };
	        if(!this.state.signFirstPayment){
	        	message.warning('实签首款金额不能为空');
	        	this.refs.signFirstPayment.focus()
	        	return false;
	        };
        }else{
        	if(this.state.orderType==undefined){
	        	message.warning('请选择订单类型');
	        	return false;
	        }
        	if(this.state.autoId==undefined||!this.state.autoId){ 
	        	message.warning('客户名称不匹配');
	        	return false;
        	};
        }
		this.props.form.validateFields((err, values) => {
			if(!err) {
				this.setState({
					loading: true
				});
				let api=this.props.userDetaile?'/api/admin/order/updateServiceOrder':'/api/admin/order/createOrder';
				$.ajax({
					method: "POST",
					dataType: "json",
					crossDomain: false,
					url: globalConfig.context + api,
					data: !this.props.userDetaile?{
						uid:this.state.autoId,
						orderType:this.state.orderType
					}:{
						orderNo:this.props.datauser.orderNo,
//						firstPayment:this.state.firstPayment,
//						orderAmount:this.state.orderAmount,
						signTotalAmount:this.state.signTotalAmount,
						signFirstPayment:this.state.signFirstPayment,
						orderRemarks:this.state.orderRemarks,
						contractNo:this.state.contractNo
					}
				}).done(function(data) {
					this.setState({
						loading: false
					});
					if(!data.error.length) {
						message.success('保存成功!');
						this.handleOk()
					} else {
						message.warning(data.error[0].message);
					}
				}.bind(this));
			}
		});
	},
	//查看基本详情基本信息
    loaduser(record){
    	this.state.orderList=[];
    	$.ajax({
            method: "get",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context + '/api/admin/order/getServiceOrderDetail',
            data: {
              orderNo: record?record.orderNo:this.props.datauser.orderNo
            },
            success: function (data) {
                let thisData = data.data;                
                if (!thisData) {
                    if (data.error && data.error.length) {
                        message.warning(data.error[0].message);
                    };
                    thisData = {};
                };
                this.setState({
					id:thisData.id,
					orderList:thisData,
					changeStatus:thisData.changeStatus,
					orderAmount:thisData.orderAmount,
					firstPayment:thisData.firstPayment,
					signTotalAmount:thisData.signTotalAmount,
					signFirstPayment:thisData.signFirstPayment,
					approval:thisData.approval==0?thisData.approval.toString():thisData.approval,
					orderRemarks:thisData.orderRemarks,
                    orgCodeUrl: thisData.contractPictureUrl ? splitUrl(thisData.contractPictureUrl, ',', globalConfig.avatarHost + '/upload') : [],
               		//签单
               		orderNo:thisData.orderNo,//订单编号
               		buyerName:thisData.buyerName,
               		contractNo:thisData.contractNo
                });
            }.bind(this),
       }).always(function () {
            this.setState({            	
                loading: false
            });
        }.bind(this));  
    },
	handleOk(e) {
		this.setState({
			visible: false,
		});
		this.props.closeDesc(false, true);
	},
	handleCancel(e) {
		this.setState({
			visible: false,
		});
		this.props.closeDesc(false);
	},
	//删除
    delectRow(record) {
        this.setState({
            loading: true
        });
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + "/api/admin/order/deleteOrderCommodity",
            data: {
            	detailId:record.id
            }
        }).done(function (data) {
            if (!data.error.length) {
                message.success('删除成功!');
                this.setState({
                    loading: false,
                });
            } else {
                message.warning(data.error[0].message);
            };
            this.loadData();
        }.bind(this));
    },
	//添加明细
	addDetailed(){
		this.setState({
			customerArr:[],
			commodityName:'',
			commodityId:'',
			commodityMode:'',
			commodityQuantity:'',
			commodityPrice:'',
			discountPrice:'',
			commodityFirstPayment:'',
			discountFirstPayment:'',
			remarks:'',
			addState:1,
			addnextVisible: true
		})
	},
	nextCancel() {
		this.setState({
			addnextVisible: false
		})
	},
	tableRowClick(record, index) {
        this.setState({
        	editFw:record,
        	addnextVisible:true,
        	addState:0,
        });
    },
	componentWillMount() {
		
	},
	//查看订单详情里面的各种骚操作
	//受理订单
    admissibleOrderOK(){
    	let idArr=this.props.datauser;
    	this.props.admissibleOrder(idArr,true)
    },
    //拒绝受理
    admissibleOrderCancel(){
    	let idArr=this.props.datauser;
    	this.props.admissibleOrder(idArr,false)
    },
    //取消订单
    cancelOrder(){
    	let idArr=this.props.datauser;
    	this.props.operation(idArr,3)
    },
    //作废订单
    scrapOrder(){
    	let idArr=this.props.datauser;
    	this.props.operation(idArr,2)
    },
    //锁定订单
    lockOrder(){
    	let idArr=this.props.datauser;
    	this.props.operation(idArr,0)
    },
    //解锁订单
    unlockOrder(){
    	let idArr=this.props.datauser;
    	this.props.operation(idArr,1)
    },
    //签单
    signBitt(){
		this.setState({
			contractNo:this.state.contractNo,
			signVisible:true,
			entryTime:undefined,
			selTime:undefined
		})
    },
    signBittOk(){
    	this.setState({
    		signVisible:false
    	})
    },
    signBillOk(){
    	this.setState({
    		signBillVisible:false
    	})
    },
    signBillCancel(e) {
		this.setState({
			signVisible:false,
			signBillVisible: false,
		});
		this.props.closeDesc(false, true);
	},
	//加载(自动补全)
	supervisor(e,state){ //客户名称与服务名称自动补全
		let api=state?'/api/admin/customer/findCustomerByName':'/api/admin/order/getBusinessProjectByName';
		$.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + api,
            data:state?{
            	name:e
            }:{
            	businessName: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({
						states:state,
						customerArr:thedata,	
                    });
				}.bind(this),
			}).always(function () {
            this.setState({
                loading: false
            });
        }.bind(this));  
	},
	//上级主管输入框失去焦点是判断客户是否存在
	selectAuto(value,options){
		let kid=[];
		let fwList=this.state.customerArr;
		fwList.map(function(item){
			if(value==item.bname){
				kid=item
			}
		})
		this.setState({
			commodityName:value,
			gid:kid.id,
			commodityPrice:kid.price==0?kid.price.toString():kid.price,
			commodityFirstPayment:kid.firstPayment==0?kid.firstPayment.toString():kid.firstPayment
		})
	},
	//服务值改变时请求客户名称
	httpChange(e){
		this.state.gid='';
		if(e.length>=1){
			this.supervisor(e,false); 
		}	
		this.setState({
			commodityName:e
		})
	},
	//新建明细保存
	nextSubmit(e) {
		e.preventDefault();
		if(this.state.gid==undefined||!this.state.gid){
			message.warning('服务名称不匹配!');
			return false;
		};
		if(!this.state.commodityPrice){
			message.warning('请输入市场价格!');
			this.refs.commodityPrice.focus();
			return false;
		};
		if(!this.state.discountPrice){
			message.warning('请输入实签价格!');
			this.refs.discountPrice.focus();
			return false;
		};
		if(!this.state.commodityQuantity){
			message.warning('请输入商品数量!');
			this.refs.commodityQuantity.focus();
			return false;
		};
		if(!this.state.commodityFirstPayment){
			message.warning('请输入市场首付金额!');
			this.refs.commodityFirstPayment.focus();
			return false;
		};
		if(!this.state.discountFirstPayment){
			message.warning('请输入签单首付金额!');
			this.refs.discountFirstPayment.focus();
			return false;
		};
		this.setState({
			loading: true
		});
		let api=this.state.addState?'/api/admin/order/addOrderCommodity':'/api/bianji';
		$.ajax({
			method: "POST",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context +api ,
			data: {
				commodityId:this.state.gid,
				orderNo:this.props.datauser.orderNo,
				commodityName:this.state.commodityName,//商品名称
				commodityMode:this.state.commodityMode,//商品规格
				commodityQuantity:this.state.commodityQuantity,//商品数量
				commodityType:0,//商品类型
				commodityPrice:this.state.commodityPrice,//市场总价
				discountPrice:this.state.discountPrice,//签单总价
				commodityFirstPayment:this.state.commodityFirstPayment,//市场首付金额
				discountFirstPayment:this.state.discountFirstPayment,//签单首付金额
				remarks:this.state.remarks,//服务说明
			}
		}).done(function(data) {
			this.setState({
				loading: false
			});
			if(!data.error.length) {
				message.success('保存成功!');
				this.nextCancel()
				this.loaduser(this.props.datauser);
				this.loadData();
			} else {
				message.warning(data.error[0].message);
			}
		}.bind(this));
	},
	//签单保存
	signOk(e){
		e.preventDefault();
		this.temporarySave(false)
	},
	//暂存信息
	temporary(){
		this.temporarySave(true)
	},
		//签单时间选择
    selTime(e,index){
    	this.setState({
    		entryTime:e,
    		selTime:index
    	})
    },
	signSub(e){
		e.preventDefault();
		if(!this.state.selTime){
			message.warning("请选择签单时间!");
			return false;
		};
		this.setState({
			loading: true
		});
		$.ajax({
			method: "POST",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context +'/api/admin/order/signServiceOrder' ,
			data: {
				orderNo:this.props.datauser.orderNo,
				signTotalAmount:this.state.signTotalAmount,
				signFirstPayment:this.state.signFirstPayment,
				approval:this.state.approval,
				orderRemarks:this.state.orderRemarks,
				contractNo:this.state.contractNo,
				signTime:this.state.selTime
			}
		}).done(function(data) {
			this.setState({
				loading: false
			});
			if(!data.error.length) {
				message.success('操作成功!');
				this.signBillCancel()
			} else {
				message.warning(data.error[0].message);
			}
		}.bind(this));
	},
	//签单保存与暂存函数
	temporarySave(e){
		if(!this.state.signTotalAmount){
			message.warning('实签款项不能为空!')
			return false;
		};
		if(!this.state.signTotalAmount){
			message.warning('实签首款不能为空!')
			return false;
		};
		if(this.state.approval==undefined){
			message.warning('实签首款不能为空!')
			return false;
		};
		if(!this.state.contractNo){
			message.warning("请输入合同编号!");
			return false;
		}
		this.setState({
			loading: true
		});
		let api=e?'/api/admin/order/updateServiceOrder':'/api/admin/order/signServiceOrder';
		$.ajax({
			method: "POST",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context +api ,
			data: {
				orderNo:this.props.uid?this.props.uid.orderNo:this.props.datauser.orderNo,
				signTotalAmount:this.state.signTotalAmount,
				signFirstPayment:this.state.signFirstPayment,
				approval:this.state.approval,
				orderRemarks:this.state.orderRemarks,
				contractNo:this.state.contractNo
			}
		}).done(function(data) {
			this.setState({
				loading: false
			});
			if(!data.error.length) {
				message.success('操作成功!');
				this.signBillCancel()
			} else {
				message.warning(data.error[0].message);
			}
		}.bind(this));
	},
	lookflow(){
		this.setState({
			loading: true,
			lookVisible:true,
		})
		this.state.lookSource=[];
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context +'/api/admin/order/getBillByOrderNo',
            data: {
            	orderNo:this.props.datauser.orderNo,
            },
            success: function (data) {
                let theArr = [];
                if (!data.data) {
                    if (data.error && data.error.length) {
                        message.warning(data.error[0].message);
                    };
                } else {
                    for (let i = 0; i < data.data.length; i++) {
                        let thisdata = data.data[i];
                        theArr.push({
                             key: i,
	                         billNo: thisdata.billNo,
	                         transactionAmount:thisdata.transactionAmount,
	                         createTime:thisdata.createTime, 
	                         transactionAmount:thisdata.transactionAmount,
	                         payerName:thisdata.payerName,
	                         payeeName:thisdata.payeeName,
	                         transactionSubject:thisdata.transactionSubject,
	                         transactionChannel:thisdata.transactionChannel,
	                         financialPayNo:thisdata.financialPayNo,
	                         financialPayTime:thisdata.financialPayTime,
	                         orderNo:thisdata.orderNo,
	                         departmentName:thisdata.departmentName,
	                         salesmanName:thisdata.salesmanName,
	                         financeName:thisdata.financeName,
	                         confirmSign:thisdata.confirmSign,
	                         deleteSign:thisdata.deleteSign,
	                         confirmTime:thisdata.confirmTime
                        });
                    };
                };
                this.setState({
                    lookflowList: theArr,
                });
            }.bind(this),
        }).always(function () {
            this.setState({
                loading: false
            });
        }.bind(this));
	},
	lookCancel(){
		this.setState({
			lookVisible:false
		})
	},
	/* -----变更操作开始----- */
	//新建变更
	addChange(){
		this.setState({
			addChangeState:true,
			stateAdd:1,
			changeRemarks:''
		})
	},
	//产看变更记录
	lookChange(){
		this.setState({
			addChangeState:true,
			stateAdd:0
		})
		this.lookChangeData()
	},
	//查看变更列表修改变更
	modifyChangeCancel(){
		this.setState({
			modifyChangeState:false
		})
	},
	//获取变更记录
	lookChangeData(){
		this.setState({
			loading:true
		});
		 $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context +'/api/admin/order/viewOrderChange',
            data: {
            	orderNo:this.props.datauser.orderNo,
            },
            success: function (data) {
                let theArr = [];
                if (!data.data) {
                    if (data.error && data.error.length) {
                        message.warning(data.error[0].message);
                    };
                } else {
                    for (let i = 0; i < data.data.length; i++) {
                        theArr = data.data;
                    };
                };
                this.setState({
                    changeHtml: theArr,
                });
            }.bind(this),
        }).always(function () {
            this.setState({
                loading: false
            });
        }.bind(this));
	},
	//添加变更状态
	addChangeCancel(){
		this.setState({
			addChangeState:false
		})
	},
	//新建变更
	subChangeState(e){
		e.preventDefault();
		this.setState({
			loading: true
		});
		$.ajax({
			method: "POST",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context +'/api/admin/order/addOrderChange' ,
			data: {
				orderNo:this.props.datauser.orderNo,
				changeComment:this.state.changeRemarks
			}
		}).done(function(data) {
			this.setState({
				loading: false
			});
			if(!data.error.length) {
				message.success('保存成功!');
				this.addChangeCancel();
				this.loaduser();
			} else {
				message.warning(data.error[0].message);
			}
		}.bind(this));
	},
	//查看修改变更
	modifyChange(item){
		this.setState({
			modifyChangeState:true,
			changePromoter:item.creater,
			changeTime:item.createTime,
			changeState:item.changeStatus,
			changeRemarks:item.changeComment,
			idt:item.changeId,
			orderNot:item.orderNo
		})
	},
	//删除变更
	modifyDelete(item){
		this.setState({
			loading: true
		});
		$.ajax({
			method: "get",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context +'/api/admin/order/deleteOrderChange' ,
			data: {
				changeId:item.changeId,
			}
		}).done(function(data) {
			this.setState({
				loading: false
			});
			if(!data.error.length) {
				message.success('删除成功!');
				this.lookChangeData();
				this.loaduser()
			} else {
				message.warning(data.error[0].message);
			}
		}.bind(this));
	},
	//修改变更保存
	changeModify(e){
		e.preventDefault();
		this.setState({
			loading: true
		});
		$.ajax({
			method: "POST",
			dataType: "json",
			crossDomain: false,
			url: globalConfig.context +'/api/admin/order/updateOrderChange' ,
			data: {
				changeId:this.state.idt,
				changeStatus:this.state.changeState,
				changeComment:this.state.changeRemarks
			}
		}).done(function(data) {
			this.setState({
				loading: false
			});
			if(!data.error.length) {
				message.success('保存成功!');
				this.modifyChangeCancel();
				this.lookChangeData();
				this.loaduser()
			} else {
				message.warning(data.error[0].message);
			}
		}.bind(this));
	},
	/*-----变更操作结束----*/
	componentWillReceiveProps(nextProps) { //props改变时触发
		this.state.visible = nextProps.showDesc;
		this.state.signBillVisible=nextProps.signBillVisible;
		if(this.state.signBillVisible){
			this.loaduser(nextProps.uid)
		};
		if(nextProps.userDetaile && nextProps.showDesc) {
			this.loaduser(nextProps.datauser);
			this.loadData(nextProps.datauser);
		}else{
			this.setState({
				orderType:undefined,
				customerName:'',
				autoId:'',
				customerArr:[]
			})
		}
	},
	render() {
		const FormItem = Form.Item
		const formItemLayout = {
			labelCol: { span: 8 },
			wrapperCol: { span: 14 },
		};
		const changeHtml=this.state.changeHtml ||[];
		const editFws=this.state.editFw;
		const orderDetaiel=this.state.orderList || []
		const dataSources=this.state.customerArr || [];
        const options = this.state.states?dataSources.map((group,index) =>
				      {group.name}
				     ):dataSources.map((group,index) =>
				      {group.bname}
				     )
		    
		return(
			
		)
	}
}));
export default NewService;