import React from 'react';
import $ from 'jquery/src/ajax';
import { Form,Radio, Icon, Button, Input, Spin, Table, message, DatePicker, Modal, Upload ,Popconfirm,Cascader,Tabs} from 'antd';
import NewService from "./addService.jsx";
import moment from 'moment';
import '../userMangagement.less';
import {areaSelect} from '@/NewDicProvinceList';
import {getApprovedState,getprovince,getProcessStatus,getLiquidationStatus,getNewOrderStatus,beforeUploadFile,getProvinceA,getInvoiceStatus,splitUrl} from '../../../tools.js';
const PicturesWall = React.createClass({
    getInitialState() {
        return {
            previewVisible: false,
            previewImage: '',
            fileList: this.props.pictureUrl,
        }
    },
    getDefaultProps(){
    	return{
    		changeClick:this.modifyChange
    	}
    },
    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 >= 18 ? null : uploadButton}
                
                
                     
                
             
        );
    }
});
const MyService=Form.create()(React.createClass({
	loadData(pageNo) {
        this.state.data = [];
        this.setState({
            loading: true
        });
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + '/api/admin/newOrder/orderNewList',
            data: {
                pageNo: pageNo || 1,
                pageSize: this.state.pagination.pageSize,
                specially:0,
                name:this.state.customerName,
                orderNo:this.state.searchOrderNo,
                depId: this.state.departmenttSearch,
                starTime: this.state.releaseDate[0],
				endTime: this.state.releaseDate[1],
            },
            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.list.length; i++) {
                        let thisdata = data.data.list[i];
                        theArr.push({
                             key: i,
	                         id: thisdata.id,
	                         orderNo: thisdata.orderNo,//订单编号
	                         totalAmount:thisdata.totalAmount,//签单金额
	                         processStatus:thisdata.processStatus,//流程状态
	                         liquidationStatus:thisdata.liquidationStatus,//结算状态
	                         approval:thisdata.approval,//特批状态
	                         signDate:thisdata.signDate,//签单时间
	                         userName:thisdata.userName,//客户名称
	                         salesmanName:thisdata.salesmanName,//营销员名称
	                         financeName:thisdata.financeName,//财务名称
	                         createDate:thisdata.createDate,//下单时间
	                         orderStatus:thisdata.orderStatus,//订单状态
	                         depName:thisdata.depName,//部门名称
							 contractNo:thisdata.contractNo
                        });
                    };
                    this.state.pagination.current = data.data.pageNo;
                    this.state.pagination.total = data.data.totalCount;
                };
                if(!data.data.list.length){
					this.state.pagination.current=0
					this.state.pagination.total=0
				}
                this.setState({
                	pageNo:pageNo,
                    dataSource: theArr,
                    pagination: this.state.pagination,
                    selectedRowKeys:[],
                });
            }.bind(this),
        }).always(function () {
            this.setState({
                loading: false
            });
        }.bind(this));
    },
    getInitialState() {
        return {
        	datauser:{},
			orgCodeUrl:[],
            selectedRowKeys: [],
            releaseDate: [],
            departmentArr: [],
            signBillState:false,
            signBillVisible:false,
            selectedRows: [],
			recordData:[],
			flag:false,
            searchMore: true,
            loading: false,
			alreadyAmount:0,
            intentOrder:true,
            formalOrder:true,
            pagination: {
                defaultCurrent: 1,
                defaultPageSize: 10,
                showQuickJumper: true,
                pageSize: 10,
                onChange: function (page) {
                    this.loadData(page);
                }.bind(this),
                showTotal: function (total) {
                    return '共' + total + '条数据';
                }
            },
            columns: [
                {
                    title: '订单编号',
                    dataIndex: 'orderNo',
                    key: 'orderNo',
					fixed: 'left'
                },{
                    title: '客户名称',
                    dataIndex: 'userName',
                    key: 'userName',
                    render:(text)=>{
                    	return (text&&text.length>9?text.substr(0,9)+'...':text)
                    }
                }, {
                    title: '下单时间',
                    dataIndex: 'createDate',
                    key: 'createTime'
                },{
                    title: '合同签订时间',
                    dataIndex: 'signDate',
                    key: 'signDate'
                }, {
                    title: '流程状态',
                    dataIndex: 'processStatus',
                    key: 'processStatus',
                    render:text=>{return getProcessStatus(text)}
                }, {
                    title: '签单金额(万元)',
                    dataIndex: 'totalAmount',
                    key: 'totalAmount'
                },{
                    title: '结算状态',
                    dataIndex: 'liquidationStatus',
                    key: 'liquidationStatus',
                    render:text=>{return getLiquidationStatus(text)}
                }, {
                    title: '是否特批',
                    dataIndex: 'approval',
                    key: 'approval',
                    render:text=>{return getApprovedState(text)}
                },{
                    title: '订单状态',
                    dataIndex: 'orderStatus',
                    key: 'orderStatus',
                    render:text=>{return getNewOrderStatus(text)}
                },{
                    title: '财务负责人',
                    dataIndex: 'financeName',
                    key: 'financeName'
                }, {
					title: '操作',
					dataIndex: 'abc',
					key: 'abc',
					render: (text, record, index) => {
						return (
              
                {
                  
                }
                {
                  
                }
                {record.liquidationStatus == 2 ? (
                  
 {
                      this.delectRow(record);
                    }}
                    okText="是"
                    cancelText="否"
                  >
                    
                  
                ) : (
                  ""
                )}
              
									{record.status === 3?
										:getInvoiceStatus(text)}
									{record.status === 3?
										:''}	
								
					}
                }
			],
            dataSource: [],
        };
    },
	
	invoiceData(record) {
		let theorgCodeUrl = [];
		if (this.state.orgCodeUrl.length) {
		    let picArr = [];
		    this.state.orgCodeUrl.map(function (item) {
				if ( item.response && item.response.data && item.response.data.length ){
					picArr.push(item.response.data);
				}
		    });
		    theorgCodeUrl = picArr.join(",");
		};
		let api = '',
			api1 = '', 
			method = '',
			fdata = {
				orderNo:this.state.orderNo3,
				type:this.state.type,
				status:this.state.status,
				approval:this.state.ordapproval,
				remarks:this.state.remarks,
				invoiceType:this.state.invoiceType,
				unitName:this.state.unitName,
				taxNumber:this.state.taxNumber,
				amount:parseFloat(this.state.amount),
				banks:this.state.banks,
				content:this.state.content,
				unitAddress:this.state.unitAddress,
				invoiceRemarks:this.state.invoiceRemarks,
				unitMobile:this.state.unitMobile,
				voucherUrl:theorgCodeUrl.length?theorgCodeUrl:'',
				post:this.state.post,
				addressee:this.state.addressee,
				addresseeMobile:this.state.addresseeMobile,
				addresseeProvince:this.state.post === 0?this.state.ProvinceCity[0]:'',
				addresseeCity:this.state.post === 0?this.state.ProvinceCity[1]:'',
				addresseeArea:this.state.post === 0?this.state.ProvinceCity[2]:'',
				recipientAddress:this.state.recipientAddress,
				alreadyAmount:parseFloat(this.state.alreadyAmount)},
			sumData = {},
			sumData1 = {};
		switch (this.state.status) {
			case 0:api = '/api/admin/orderInvoice/createOrderInvoice';
					sumData = fdata;
					method = 'post'
				break;
			case 1:api = '/api/admin/orderInvoice/createOrderInvoice';
					api1 = '/api/admin/orderInvoice/updateOrderInvoice'
					sumData = fdata;
					sumData1 = {
				orderNo:this.state.orderNo3,
				type:this.state.type,
				status:this.state.status,
				approval:this.state.ordapproval,
				remarks:this.state.remarks,
				invoiceType:this.state.invoiceType,
				unitName:this.state.unitName,
				taxNumber:this.state.taxNumber,
				amount:parseFloat(this.state.amount),
				banks:this.state.banks,
				content:this.state.content,
				unitAddress:this.state.unitAddress,
				invoiceRemarks:this.state.invoiceRemarks,
				unitMobile:this.state.unitMobile,
				voucherUrl:theorgCodeUrl.length?theorgCodeUrl:'',
				post:this.state.post,
				addressee:this.state.addressee,
				addresseeMobile:this.state.addresseeMobile,
				addresseeProvince:this.state.post === 0?this.state.ProvinceCity[0]:'',
				addresseeCity:this.state.post === 0?this.state.ProvinceCity[1]:'',
				addresseeArea:this.state.post === 0?this.state.ProvinceCity[2]:'',
				recipientAddress:this.state.recipientAddress,
				alreadyAmount:parseFloat(this.state.alreadyAmount)};
					sumData1.id = this.state.id;
					method = 'post'
				break;
			case 3:api = '/api/admin/orderInvoice/selectByIdOrderInvoice'
					sumData.id = record.id;
					method='get';
				break;	
			default: api=''
				break;
		}
		if (this.state.status === 1 || this.state.status === 0) {
			if (typeof(this.state.type) !== 'number') {
				message.warning('省内/外不能为空')
				return
			}
			if (typeof(this.state.invoiceType) !== 'number') {
				message.warning('发票类型不能为空')
				return
			}
			if(typeof theorgCodeUrl !== 'string'){
			    message.warning('未上传图片');
			    return 
			}
			if (!this.state.unitName) {
				message.warning('单位名称不能为空')
				return
			}
			if (!this.state.taxNumber) {
				message.warning('税号不能为空')
				return
			}
			if (!this.state.amount) {
				message.warning('金额不能为空')
				return
			}
			if (isNaN(this.state.amount)) {
				message.warning('开票金额包含非法字符,请重新输入')
				return
			}
			if (isNaN(this.state.alreadyAmount)) {
				message.warning('开票金额总计包含非法字符,请重新输入')
				return
			}
			if (parseFloat(this.state.alreadyAmount)<0) {
				message.warning('开票金额总计不能小于0,请重新输入')
				return
			}
			if (!this.state.banks) {
				message.warning('开户行不能为空')
				return
			}
			if (!this.state.content) {
				message.warning('开票内容及说明不能为空')
				return
			}
			if (!this.state.unitAddress) {
				message.warning('单位地址不能为空')
				return
			}
			if (!this.state.unitMobile) {
				message.warning('单位电话不能为空')
				return
			}
			if (this.state.alreadyAmount === '') {
				message.warning('开票金额总计不能为空')
				return
			}
		}
		// console.log(this.state.flag,this.state.status)
        this.setState({
            loading: true
        });
        $.ajax({
            method: method,
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + (this.state.flag?api1:api),
            data: this.state.flag?sumData1:sumData,
			success:function (data) {
				        if(this.state.status === 3 && typeof data.data === 'object'){
							let thisdata = data.data;
							let ProvinceCityArr = [];
							let ProvinceS = thisdata.addresseeProvince; //省
							let citys = thisdata.addresseeCity;//市
							let Areas = thisdata.addresseeArea;//区
							ProvinceCityArr.push(ProvinceS, citys, Areas);
							this.setState({
								orderNo:thisdata.orderNo,
								type:thisdata.type,
								status:thisdata.status,
								ordapproval:thisdata.approval,
								remarks:thisdata.remarks,
								invoiceType:thisdata.invoiceType,
								unitName:thisdata.unitName,
								taxNumber:thisdata.taxNumber,
								amount:thisdata.amount,
								banks:thisdata.banks,
								content:thisdata.content,
								unitAddress:thisdata.unitAddress,
								invoiceRemarks:thisdata.invoiceRemarks,
								unitMobile:thisdata.unitMobile,
								post:thisdata.post,
								addressee:thisdata.addressee,
								addresseeMobile:thisdata.addresseeMobile,
								addresseeProvince:thisdata.addresseeProvince,
								addresseeCity:thisdata.addresseeCity,
								addresseeArea:thisdata.addresseeArea,
								alreadyAmount:thisdata.alreadyAmount,
								ProvinceCity: ProvinceCityArr[0]!=null?ProvinceCityArr:undefined,//省市区
								recipientAddress:thisdata.recipientAddress,
								orgCodeUrl: thisdata.voucherUrl ? splitUrl(thisdata.voucherUrl, ',', globalConfig.avatarHost + '/upload') : [],
							})
						}
					}.bind(this)
        }).done(function(data) {
			this.setState({
				loading: false
			});
			if(!data.error.length) {
				if(this.state.status === 1){
					message.success('提交成功!');
					this.visitCancels()
					if (this.state.flag) {
						this.inRecordData()
					}
				}else if(this.state.status === 0){
					message.success('保存成功!');
					this.visitCancels()
				}else if(this.state.status === 3){
					this.setState({
						flag:true
					})
				}
			} else {
				message.warning(data.error[0].message);
			}
        }.bind(this));
    },
	areset(){
		this.setState({
			remarks:'',
			type:undefined,
			orgCodeUrl:'',
			invoiceType:undefined,
			unitName:'',
			taxNumber:'',
			unitName:'',
			amount:'',
			banks:'',
			content:'',
			unitAddress:'',
			invoiceRemarks:'',
			unitMobile:'',
			post:undefined,
			addressee:'',
			addresseeMobile:'',
			addresseeProvince:'',
			addresseeCity:'',
			addresseeArea:'',
			recipientAddress:'',
			ordapproval:undefined,
			alreadyAmount:'',
			ProvinceCity:[]
		})
	},
	
	recompose(record){
		// console.log(record)
		this.setState({
			avisible:true,
			orderNo3:record.orderno,
			id:record.id
		})
		this.setState({
			status:3,
			cvisible:true,
			flag:false
		},()=>{
			this.invoiceData(record)
		})
	},
	
	submitApp(){
		if (this.state.status === 3) {
			this.setState({
				flag:true
			})
		}
		this.setState({
			status:1
		},()=>{
			this.invoiceData()
		})
	},
	saveApp(){
		this.setState({
			status:0
		},()=>{
			this.invoiceData()
		})
	},
	
	reject(record){
		this.setState({
			visibleR:true,
			reason:record.rejectReason
		});
	},
	rejectCancels(){
		this.setState({
			visibleR:false
		})
	},
	
	//开票
	visit(record,index){
		this.areset()
		this.setState({
			contractNo:this.state.dataSource[index].contractNo,
			orderNo3:record.orderNo,
			avisible:true,
			flag:false,
			invoiceType:0,
			alreadyAmount:0,
			unitName:this.state.dataSource[index].userName,
			post:1
		})
	},
	visitCancels(){
		this.setState({
			avisible:false,
			cvisible:false
		})
	},
	
	//查看开票历史记录详情
	dtableRowClick(record){
		this.setState({
			dvisible:true
		})
		this.setState({
		    loading: true
		});
		$.ajax({
		    method: "get",
		    dataType: "json",
		    crossDomain: false,
		    url: globalConfig.context + '/api/admin/orderInvoice/selectByIdOrderInvoice',
			data:{
				id:record.id
			},
		    success:function (data) {
				        let thisdata = data.data;
				        this.setState({
							contractNo:thisdata.contractNo,
							orderNo:thisdata.orderNo,
							ordapproval:thisdata.approval,
							type:thisdata.type,
							status:thisdata.status,
							remarks:thisdata.remarks,
							invoiceType:thisdata.invoiceType,
							unitName:thisdata.unitName,
							taxNumber:thisdata.taxNumber,
							amount:thisdata.amount,
							banks:thisdata.banks,
							content:thisdata.content,
							unitAddress:thisdata.unitAddress,
							invoiceRemarks:thisdata.invoiceRemarks,
							unitMobile:thisdata.unitMobile,
							post:thisdata.post,
							addressee:thisdata.addressee,
							addresseeMobile:thisdata.addresseeMobile,
							addresseeProvince:thisdata.addresseeProvince,
							addresseeCity:thisdata.addresseeCity,
							addresseeArea:thisdata.addresseeArea,
							alreadyAmount:thisdata.alreadyAmount,
							recipientAddress:thisdata.recipientAddress,
							orgCodeUrl: thisdata.voucherUrl ? splitUrl(thisdata.voucherUrl, ',', globalConfig.avatarHost + '/upload') : [],
						})
					}.bind(this)
		}).done(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
	
	//关闭开票历史记录详情
	dvisitCancels(){
		this.setState({
			dvisible:false
		})
	},
	
	inRecordData(){
		this.setState({
		    loading: true
		});
		$.ajax({
		    method: "get",
		    dataType: "json",
		    crossDomain: false,
		    url: globalConfig.context + '/api/admin/orderInvoice/salesmanOrderInvoiceList',
		    data: {
				orderNo:this.state.orderNo2
		    },
			success: function (data) {
			    let theArr = [];
				let sum = 0;
			    if (!data.data) {
			        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];
						sum += parseFloat(thisdata.amount);
			            theArr.push({
			                 id: thisdata.id,
			                 orderno: thisdata.orderno,//订单编号
			                 amount:thisdata.amount,//签单金额
			                 createTime:thisdata.createTime,//流程状态
			                 status:thisdata.status,//结算状态
							 rejectReason:thisdata.rejectReason
			            });
			        };
			    };
				this.setState({
					recordData:theArr,
					sum:sum.toFixed(4)
				})
			}.bind(this),
		}).done(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
	
	inRecord(record){
		this.setState({
			bvisible:true,
			orderNo2:record.orderNo,
		},() => {this.inRecordData()})
	},
	
	inRecordCanl(){
		this.setState({
			bvisible:false
		})
	},
	
    //结项
    delectRow(record) {
        this.setState({
            loading: true
        });
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + "/api/admin/newOrder/OrderOver",
            data: {
            	orderNo:record.orderNo
            }
        }).done(function (data) {
            if (!data.error.length) {
                message.success('该项目已成功结项!');
            	this.loadData();
            } else {
                message.warning(data.error[0].message);
            };
             this.setState({
                loading: false,
            });
        }.bind(this));
    },
    //是否退款
    refundCancel(record){
    	this.refund(record,0)
    },
    refundOk(record){
    	this.refund(record,1)
    },
    refund(record,index){
    	this.setState({
        	signBillVisible:false,
            selectedRowKeys: [],
            loading: true,
            userDetaile:false
        });
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + '/api/admin/order/confirmRefund',
            data: {
            	orderNo:record.orderNo,
            	confirm:index
            }
        }).done(function (data) {
            if (!data.error.length) {
                message.success('操作成功!');
                this.setState({
                    loading: false,
                    showDesc:false
                });
            } 
            this.loadData(this.state.pageNo);
        }.bind(this));
    },
    //受理订单
    admissibleOrderOk(e){
    	this.admissibleOrder(e,true)
    },
    admissibleOrderCancel(e){
    	this.admissibleOrder(e,false)
    },
    admissibleOrder(record,index) {
        this.setState({
        	signBillVisible:false,
            selectedRowKeys: [],
            loading: true,
            userDetaile:false
        });
        $.ajax({
            method: "POST",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + '/api/admin/order/confirmIntention',
            data: {
            	orderNo:record.orderNo,
            	confirm:index
            }
        }).done(function (data) {
            if (!data.error.length) {
                message.success('操作成功!');
                this.setState({
                    loading: false,
                    showDesc:false
                });
            } else {
                message.warning(data.error[0].message);
                this.setState({
                	showDesc:true
                })
            };
            this.loadData(this.state.pageNo);
        }.bind(this));
    },
    //取消订单
    cancelOrder(e){
    	this.operation(e,3)
    },
    //作废订单
    scrapOrder(e){
    	this.operation(e,2)
    },
    //锁定订单
    lockOrder(e){
    	this.operation(e,0)
    },
    //解锁订单
    unlockOrder(e){
    	this.operation(e,1)
    },
    //签单
    signBill(ids){
    	this.setState({
    		uid:ids,
    		signBillVisible:true
    	})
    },
    componentWillMount() {
    	this.departmentList();
        this.loadData();
        let data=localStorage.getItem('newData');
    	if(data!='{}'&&data){
    		var newData = JSON.parse(data);
    		this.tableRowClick(newData);
    	};
    },
    tableRowClick(record) {
    	this.state.userDetaile=true;
        this.state.datauser = record;
        this.setState({
        	signBillVisible:false,
        	signBillState:true,
            showDesc: true
        });
    	localStorage.setItem('newData','{}');
    },
    //列表各种骚操作
    operation(record,index) {
        this.setState({
            selectedRowKeys: [],
            loading: true,
            showDesc:false
        });
        $.ajax({
            method: "get",
            dataType: "json",
            crossDomain: false,
            url: globalConfig.context + '/api/admin/order/lockOrRevokeOrder',
            data: {
            	orderNo:record.orderNo,
            	operatorType:index
            }
        }).done(function (data) {
            if (!data.error.length) {
                message.success('操作成功!');
                this.setState({
                    loading: false,
                });
            } else {
                message.warning(data.error[0].message);
            };
            this.loadData(this.state.pageNo);
        }.bind(this));
    },
    addClick() {
    	this.state.userDetaile=false;
        this.setState({
        	signBillVisible:false,
            showDesc: true
        });
    },
    closeDesc(e, s) {
    	this.state.userDetaile=false;
    	this.state.signBillVisible=false;
        this.state.showDesc = e;
        if (s) {
            this.loadData(this.state.pageNo);
        };
    },
    searchSwitch() {
		this.setState({
			signBillVisible:false,
			searchMore: !this.state.searchMore
		});
	},
	getOrgCodeUrl(e) {
	    this.setState({ orgCodeUrl: e });
	},
    search() {
    	this.setState({
    		signBillVisible:false
    	})
        this.loadData();
    },
    reset() {
    	this.setState({
    		signBillVisible:false
    	})
		this.state.searchOrderNo=undefined;
    	this.state.orderNo='';
    	this.state.customerName='';
    	this.state.departmenttSearch=undefined;
    	this.state.releaseDate[0] = undefined;
		this.state.releaseDate[1] = undefined;
		this.state.projectProgress = undefined;
		this.state.approval= undefined;
		this.state.formalOrder=true;
		this.state.intentOrder=true;
        this.loadData();       
    },
    //部门
	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,
						})
					})
				}
				this.setState({
					departmentArr: theArr,
				})
			}.bind(this),
		}).always(function() {
			this.setState({
				loading: false
			});
		}.bind(this));
	},
    render() {
    	const FormItem = Form.Item;
    	const formItemLayout = {
			labelCol: { span: 8 },
			wrapperCol: { span: 14 },
		};
		const RadioGroup = Radio.Group;
        const { RangePicker } = DatePicker;
        return (