import React,{Component} from 'react';
import {Button, Form, Input, message, Modal, Radio, Spin, InputNumber} from "antd";
import $ from "jquery";

const layout = {
    labelCol: {
        span: 8,
    },
    wrapperCol: {
        span: 16,
    },
};

const formItemLayout = {
    labelCol: { span: 8 },
    wrapperCol: { span: 14 },
};

class ApplyPaymentModal extends Component{


    constructor(props) {
        super(props);
        this.state={
            loading: false,
            paymentStatus: 0,
        }
    }

    //申请付款
    handleSubmit(e){
        e.preventDefault();
        this.props.form.validateFieldsAndScroll((err, values) => {
            if (err) {
                return;
            }
            if(values.quantity<1){
                message.warning('申请支付数量不能小于零');
                return false;
            }
            this.setState({
                loading: true
            })
            values.tid = this.props.tid;
            if(this.props.type === 2){
                values.chooseType = 2;                 //支付类型 0第三方 1催款 2官费
            }else{
                if(this.props.previewPayInfor.nodeId){                      //催款
                    values.nodeId = this.props.previewPayInfor.nodeId;
                    values.chooseType = 1;                          //支付选择 0第三方 1催款 2官费
                    values.tpcId = this.props.previewPayInfor.cid;  //第三方机构id
                }else{
                    values.chooseType = 0                           //支付选择 0第三方 1催款 2官费
                    values.tpcId = this.props.previewPayInfor.id;   //第三方机构id
                }
            }
            values.companyName = values.companyName.split('-')[0];
            $.ajax({
                method: 'POST',
                dataType: 'json',
                crossDomain: false,
                url: globalConfig.context + '/api/admin/company/addOrderPayment',
                data: values,
            }).done(
                function (data) {
                    this.setState({
                        loading: false,
                    })
                    if (!data.error.length) {
                        this.props.changeVisible();
                        this.props.onRefresh();
                        message.success('申请成功!')
                    } else {
                        message.warning(data.error[0].message)
                    }
                }.bind(this)
            )
        })
    }

    render() {
        const { getFieldDecorator,setFieldsValue } = this.props.form;
        const { previewPayInfor } = this.props;
        if(this.props.type !== 2 && !previewPayInfor){return;}
        return(
            <Modal
                maskClosable={false}
                footer={null}
                visible={this.props.visible}
                onCancel={() => {
                    this.props.changeVisible();
                }}
            >
                <Spin spinning={this.state.loading}>
                    <div>
                        <div>
                            {
                                this.props.type === 2 ? "支付供应商官费" : "支付供应商费用"
                            }
                        </div>
                        <Form
                            {...layout}
                            name="basic"
                            initialValues={{
                                remember: true,
                            }}
                            onSubmit={(e)=>{
                                this.handleSubmit(e)
                            }}
                        >
                            <Form.Item
                                {...formItemLayout}
                                style={{
                                    display:'flex'
                                }}
                                label="付款单位/个人:"
                            >
                                {getFieldDecorator('companyName', {
                                    initialValue: this.props.type === 2 ? '国家知识产权局' : previewPayInfor.companyName,
                                    rules: [{
                                        required: true,
                                        message: '请输入付款单位/个人!',
                                    }],
                                })(
                                    <Input
                                        style={{ width: '200px' }}
                                        placeholder="请输入付款单位/个人"
                                    />
                                )}
                            </Form.Item>
                            {/* 0正常 1专利 2软著 3审计 */}
                            {/*{this.props.projectType === 1 && this.props.patentType === 1 ?<Form.Item*/}
                            {/*            {...formItemLayout}*/}
                            {/*            style={{*/}
                            {/*                display:'flex'*/}
                            {/*            }}*/}
                            {/*            label="支付状态:"*/}
                            {/*        >*/}
                            {/*            {getFieldDecorator('paymentStatus', {*/}
                            {/*                constructor: this.state.paymentStatus,*/}
                            {/*                rules: [{ required: false, message: '请选择支付状态!' }],*/}
                            {/*            })(*/}
                            {/*                <Radio.Group onChange={(e)=>{*/}
                            {/*                    this.setState({*/}
                            {/*                        paymentStatus: e.target.value*/}
                            {/*                    })*/}
                            {/*                    if(e.target.value === 1){*/}
                            {/*                        setFieldsValue({*/}
                            {/*                            quantity:parseInt(previewPayInfor.quantity),*/}
                            {/*                            applicationAmount:(previewPayInfor.partyAmount ?*/}
                            {/*                                ((parseFloat(previewPayInfor.totalAmount) * 1000000) - (parseFloat(previewPayInfor.partyAmount) * 1000000)) / 1000000 :*/}
                            {/*                                parseFloat(previewPayInfor.totalAmount))/2*/}
                            {/*                        });*/}
                            {/*                    } else if(e.target.value === 2){*/}
                            {/*                        setFieldsValue({*/}
                            {/*                            quantity:parseInt(previewPayInfor.quantity),*/}
                            {/*                            applicationAmount:(previewPayInfor.partyAmount ?*/}
                            {/*                                ((parseFloat(previewPayInfor.totalAmount) * 1000000) - (parseFloat(previewPayInfor.partyAmount) * 1000000)) / 1000000 :*/}
                            {/*                                parseFloat(previewPayInfor.totalAmount))*/}
                            {/*                        });*/}
                            {/*                    }*/}
                            {/*                }}>*/}
                            {/*                    <Radio value={0}>自定义</Radio>*/}
                            {/*                    <Radio value={1}>半款</Radio>*/}
                            {/*                    <Radio value={2}>全款</Radio>*/}
                            {/*                </Radio.Group>*/}
                            {/*            )}*/}
                            {/*        </Form.Item> : <div/>}*/}
                            {this.props.type !== 2 ? <Form.Item
                                {...formItemLayout}
                                style={{
                                    display:'flex'
                                }}
                                label="单价(万元):"
                            >
                                {/*可以查看单价	正常  审计 专利买卖
                                   软著 专利申请 打星号  */}
                                {
                                    isNaN(parseFloat(previewPayInfor.unitPrice)) ? previewPayInfor.unitPrice :
                                        getFieldDecorator('unitPrice', {
                                        initialValue:previewPayInfor.unitPrice,
                                        rules: [{ required: true, message: '请输入单价!' }],
                                    })(
                                        <Input disabled={true} style={{ width: '200px' }} placeholder="请输入单价" type={'number'}/>
                                    )
                                }
                            </Form.Item> : <div/>}
                            {/*{*/}
                            {/*    this.props.type === 2 ?*/}
                            {/*        <Form.Item*/}
                            {/*            {...formItemLayout}*/}
                            {/*            style={{*/}
                            {/*                display:'flex'*/}
                            {/*            }}*/}
                            {/*            label="官费(万元):"*/}
                            {/*        >*/}
                            {/*            /!*costReduction  费减 0否 1 是*!/*/}
                            {/*            /!*reductionAmount  费减金额*!/*/}
                            {/*            /!*officialUnitPrice  官费单价*!/*/}
                            {/*            <div>*/}
                            {/*              {*/}
                            {/*                  previewPayInfor.costReduction === 1 ?*/}
                            {/*                      (isNaN(parseFloat(previewPayInfor.reductionAmount)) ? previewPayInfor.reductionAmount : parseFloat(previewPayInfor.reductionAmount)):*/}
                            {/*                      (isNaN(parseFloat(previewPayInfor.officialUnitPrice)) ? previewPayInfor.officialUnitPrice : parseFloat(previewPayInfor.officialUnitPrice))*/}
                            {/*              }*/}
                            {/*            </div>*/}
                            {/*        </Form.Item> : <div/>*/}
                            {/*}*/}
                            <Form.Item
                                {...formItemLayout}
                                style={{
                                    display:'flex'
                                }}
                                label="数量(个):"
                            >
                                {this.props.type === 2 ? this.props.commodityQuantity : previewPayInfor.quantity}
                            </Form.Item>
                            {this.props.type !== 2 ? <Form.Item
                                {...formItemLayout}
                                style={{
                                    display:'flex'
                                }}
                                label="总价(万元):"
                            >
                                <div>
                                    {
                                        previewPayInfor.totalAmount

                                    }
                                </div>
                            </Form.Item> : null}
                            <Form.Item
                                {...formItemLayout}
                                style={{
                                    display:'flex'
                                }}
                                label="本次申请支付数量:"
                            >
                                {getFieldDecorator('quantity', {
                                    initialValue: previewPayInfor.quantity,
                                    rules: [{ required: false, message: '请输入本次申请支付数量!' }],
                                })(
                                    <InputNumber
                                        // disabled={previewPayInfor.quantity <= 1 || this.state.paymentStatus !== 0}
                                        disabled={this.props.type !== 2}
                                        style={{ width: '200px' }}
                                        precision={0}
                                        placeholder="请输入本次申请支付数量"
                                        onChange={(e)=>{
                                            //0正常 1专利 2软著 3审计
                                            //软著 专利申请不需要计算,因为单价未知
                                            // if(!(this.props.projectType === 2 || (this.props.projectType === 1 && this.props.patentType === 0))){
                                            //     //官费
                                            //     if(this.props.type === 2){
                                            //         this.props.form.setFieldsValue({
                                            //             applicationAmount: (previewPayInfor.costReduction === 1 ?
                                            //                 previewPayInfor.reductionAmount :
                                            //                 previewPayInfor.officialUnitPrice) * 1000000 * e / 1000000,
                                            //         });
                                            //     }else {
                                            //         let num = previewPayInfor.unitPrice * 1000000 * e / 1000000;
                                            //         this.props.form.setFieldsValue({
                                            //             applicationAmount: num,
                                            //         });
                                            //     }
                                            // }
                                        }}
                                    />
                                )}
                            </Form.Item>
                            {/* 0正常 1专利 2软著 3审计 */}
                            {this.props.type !== 2 ? <Form.Item
                                {...formItemLayout}
                                style={{
                                    display:'flex'
                                }}
                                label="本次申请支付金额(万元):"
                            >
                                {getFieldDecorator('applicationAmount', {
                                    initialValue:this.props.type === 2 ?(
                                        ((previewPayInfor.costReduction === 1 ? previewPayInfor.reductionAmount : previewPayInfor.officialUnitPrice) * 1000000 * parseInt(previewPayInfor.quantity)) / 1000000
                                    ): (
                                        !isNaN(parseFloat(previewPayInfor.totalAmount)) && !isNaN(parseFloat(previewPayInfor.partyAmount))?
                                        (
                                            this.state.paymentStatus === 1 ?
                                            (previewPayInfor.partyAmount ?
                                                ((parseFloat(previewPayInfor.totalAmount) * 1000000) - (parseFloat(previewPayInfor.partyAmount) * 1000000)) / 1000000 :
                                            parseFloat(previewPayInfor.totalAmount)) / 2 :
                                            previewPayInfor.partyAmount ?
                                                ((parseFloat(previewPayInfor.totalAmount) * 1000000) - (parseFloat(previewPayInfor.partyAmount) * 1000000)) / 1000000 :
                                            parseFloat(previewPayInfor.totalAmount)
                                        ) : null
                                    ),
                                    rules: [{ required: true, message: '请输入本次申请支付金额!' }],
                                })(
                                    <InputNumber
                                        min={0}
                                        disabled={this.state.paymentStatus !== 0}
                                        style={{ width: '200px' }}
                                        placeholder="请输入本次申请支付金额"/>
                                )}
                            </Form.Item> : null}
                            <Form.Item
                                {...formItemLayout}
                                style={{
                                    display:'flex'
                                }}
                                label="备注:"
                            >
                                {getFieldDecorator('remarks', {
                                    rules: [{ required: true, message: '请输入备注!' }],
                                })(
                                    <Input style={{ width: '200px' }} placeholder="请输入备注" type={'textarea'}/>
                                )}
                            </Form.Item>
                            <Form.Item>
                                <div style={{
                                    display: 'flex',
                                    justifyContent: 'center',
                                }}>
                                    <Button type="primary" htmlType="submit" style={{width:'60%',height:'40px'}}>
                                        {this.props.type === 2 ? "确定申请付官费" : "确定申请支付"}
                                    </Button>
                                </div>
                            </Form.Item>
                        </Form>
                    </div>
                </Spin>
            </Modal>
        )
    }
}

const WrappedNormalLoginForm = Form.create()(ApplyPaymentModal);

export default WrappedNormalLoginForm