import React from 'react';
import Button from '../../CommonComponent/ButtonComponent/ButtonComponent'
import Header from '../../CommonComponent/HeaderComponent/HeaderComponent';
import PopModel from '../../CommonComponent/PopupComponent/PopupChildComponent'
require('./index.css')
export default class RecoveryScanPage extends React.Component{
    constructor(props){
        super(props);
        this.getOtherHeader = this.getOtherHeader.bind(this)
        this.getBarcodeInput = this.getBarcodeInput.bind(this)
        this.wrongQrcode = this.wrongQrcode.bind(this)
        this.makeSureScanOver = this.makeSureScanOver.bind(this);
        this.submitBarcode = this.submitBarcode.bind(this);
        this.failSubmit = this.failSubmit.bind(this);
        this.getScanDom = this.getScanDom.bind(this);
        this.changeShowInput = this.changeShowInput.bind(this);
        this.getPopInfo = this.getPopInfo.bind(this);
        this.correctQrcode = this.correctQrcode.bind(this);
        this.hidePop = this.hidePop.bind(this); //关闭弹窗
        this.state = {
            barcodeText : '',
            barcodeErrorText : '',
            showInput : true
        }
    }

    componentWillReceiveProps(nextProps){
        let {recoveryInfo} = nextProps;

    }

    getPopInfo(){
        let {finishBoxRecovery} = this.props;
        let btnDom = <Button btnContainer={"recoveryContainerQrcode font32 backff775c colfff"} style={{marginTop:'10%'}}  key={"recoveryContainerCorrectQrcode"} text={"已放入"} option={finishBoxRecovery}/>
        return (
            <PopModel popupTitle={"货品匹配成功"} classContainer={"recoveryPopInfo"}>
                <div className={"icon iconfont icon-correct font150 col27ce61"} />
                <div className={"text font40 col000"}>
                    <p>请将货品放入回收箱</p>
                </div>
                <div className={"btn"}>
                    {btnDom}
                </div>
            </PopModel>

        )
    }

    getOtherHeader(){
        let {headerInfo,goBack} = this.props;
        return <div className={"otherHeader replenishScanQrcodeHeader font32 clearfix colfff "}>
            <i className={"iconfont middle icon font50 icon-circle-left circleIcon fl"} onClick={()=>goBack(2)}/>
        </div>
    }

    hidePop(){
        this.setState({
            barcodeText:""
        },()=>{
            this.props.hidePopup();
        });
    }

    handleInputChange(e){
        this.setState({
            barcodeText:e.target.value
        });
        if(this.state.barcodeErrorText){
            this.setState({
                barcodeErrorText : ''
            })
        }
    }

    getBarcodeInput(){
        let {headerInfo} = this.props;
        let {taskList={}} = headerInfo;
        return (
            <div className={"recoveryBarcodeInputDom"}>
                <div className={"colfff font30 scanText"} style={{marginBottom:'0.5rem'}}>目标回收数量:<span className={"font40 colff775c"}>{taskList.targetNum || 0}</span> 已回收数量:<span className={"font40 colff775c"}>{taskList.recoverNum || 0}</span></div>
                <div className={"barcodeInputText font30"}>{this.state.barcodeErrorText}</div>
                <input value={this.state.barcodeText} autoFocus={true} className={"barcodeInput font30 col000"} type="text" onChange={this.handleInputChange.bind(this)}/>
                <br/>
                {/*<div className={"barcodeInputTip font30 colff775c"} onClick={()=>this.changeShowInput()}><span className={"colfff"}>or</span>条形码扫描</div>*/}
                <Button btnContainer={"barcodeInputBarcode font32 backff775c colfff"} key={"barcodeInputBarcode"} text={"确定"} option={this.submitBarcode}/>
                <div className={"colfff scanInfo font30"} style={{marginTop:'1.5rem'}}>
                    <span style={{marginRight:"0.1rem"}}> 货道信息:{taskList.position || ''} </span>
                    <span style={{marginRight:"0.1rem"}}> 货道编号:{taskList.positionNum || ''} </span>
                    <span> 货物条形码:{taskList.barcode || ''} </span>
                </div>
            </div>
        )
    }

    /**
     * 扫描错误商品(后台返回)
     */
    wrongQrcode(){
        //拿错货品
        let {showPopup,hidePopup} = this.props;
        let btnDom = <Button btnContainer={"recoveryContainerQrcode font32 bordere5e5e5"} key={"recoveryContainerWrongQrcode"} style={{marginTop:'10%'}} text={"关闭"} option={this.hidePop}/>
        let popDom =
            <PopModel popupTitle={"遇到问题-货品不对"} classContainer={"recoveryPopInfo"}>
                <div className={"icon iconfont icon-wrong font150 colf00"} />
                <div className={"text font40 col000"}>
                    <p>您拿错货品了,请放回货架!</p>
                </div>
                <div className={"btn"}>
                    {btnDom}
                </div>
            </PopModel>
        showPopup({popupChild:popDom});
    }


    correctQrcode(){
        let {showPopup} = this.props;
        let popDom = this.getPopInfo();
        showPopup({popupChild:popDom});
    }


    /**
     * 条形码扫描完毕
     */
    makeSureScanOver(){
        //确认扫描完毕
        let {hidePopup} = this.props;
        hidePopup()
    }

    /**
     * 条形码提交失败,前台判断
     */
    failSubmit(){
        this.setState({
            barcodeText : ''
        },()=>{
            this.props.hidePopup()
        })
    }

    /**
     * 提交条形码
     */
    submitBarcode(){
        //提交条形码信息
        let barcodeText = this.state.barcodeText;
        let {showPopup,getBarCodeProductInfo,headerInfo} = this.props;
        let {taskList={}} = headerInfo;
        let barcodeList = taskList.barcode.split("|");
        if(barcodeText){
            barcodeText = barcodeText.trim();
            if(this.checkNumber(barcodeText)){
                this.setState({
                    barcodeErrorText : ''
                });
                if(taskList.barcode && barcodeList.indexOf(barcodeText) > -1){
                    this.correctQrcode()
                }else{
                    this.wrongQrcode()
                }
            }else{
                //提示条形码不正确
                this.setState({
                    barcodeErrorText : '条形码输入错误,请重新输入',
                    barcodeText : ''
                })
            }

        }else{
            //提示输入条形码
            this.setState({
                barcodeErrorText : '请输入条形码',
                barcodeText : ''
            })
        }

    }

    /**
     * 验证条形码结果是否为纯数字
     * @param str
     * @returns {boolean}
     */
    checkNumber(str){
        let reg = /^[0-9]*$/;
        return reg.test(str);
    }


    /**
     * 调用扫描条形码
     * @returns {*}
     */
    getScanDom(){
        let {headerInfo} = this.props;
        let {taskList={}} = headerInfo;
        return (
            <div className={"recoveryScanDom"}>
                <div className={"colfff font30 scanText"}>目标回收数量:<span className={"font40 colff775c"}>{taskList.targetNum || 0}</span> 已回收数量:<span className={"font40 colff775c"}>{taskList.recoverNum || 0}</span></div>
                <div className={"colff775c scanTips font30"} onClick={()=>this.changeShowInput()}><span className={"colfff font26"}>or</span> 手动输入条形码</div>
                <div className={"colfff scanInfo font30"}>
                    <span>货道信息:{taskList.position || ''}</span>
                    <span>货道编号:{taskList.positionNum || ''}</span>
                    <span>货物条形码:{taskList.barcode || ''}</span>
                </div>
            </div>
        )
    }

    /**
     * 条形码扫描和输入框切换
     */
    changeShowInput(){
        this.setState({
            showInput : !this.state.showInput,
            barcodeText :""
        })
    }

    render(){
        let props = this.props;
        let {headerInfo} = props;
        let {taskInfo={}} = headerInfo;
        return(
            <div className={"replenishScanPage"} style={{width:'100%',height:'100%',backgroundColor:'#000'}}>
                <Header
                    showHeader={CONFIG.headerStatus[2]}
                >
                    {this.getOtherHeader()}
                </Header>
                {
                    this.state.showInput ? this.getBarcodeInput() : this.getScanDom()
                }

            </div>
        )
    }
}