import React from "react" import LeftContainer from '../LeftContainer/LeftContainer' import RightContainer from '../RightContainer/RightContainer' import HeaderComponent from '../../components/CommonComponent/HeaderComponent/HeaderComponent' import DefaultComponent from '../../components/BreakageComponent/defaultComponent/DefaultComponnet' import BreakageProductDetail from '../../components/BreakageComponent/BreakageProductDetail/BreakageProductDetail' import BreakageCode from '../../components/BreakageComponent/BreakageCode/BreakageCode' import SanCodeComponent from '../../components/BreakageComponent/SanCodeComponent/SanCodeComponent' import PopModel from '../../components/CommonComponent/PopupComponent/PopupChildComponent' import Button from '../../components/CommonComponent/ButtonComponent/ButtonComponent' require('./index.css') class BreakageContainer extends React.Component { constructor(props){ super(props) this.state={ showPage:1,//初始显示的页面 isShow:true,//控制扫码页的显示隐藏 SanCodePage:'HandCode',//控制显示扫码或手动输入 popShow:false, //控制弹框, pop1Show:true, //控制异常弹窗显示 pop2Show:false } this.changePage=this.changePage.bind(this); this.changeBreakPop=this.changeBreakPop.bind(this) } render(){ let props=this.props; let {isShow,popShow,pop1Show,pop2Show}=this.state; return ( <div className={"BreakageContainer"}> { isShow?<div style={{width:'100%',height:'100%'}}> <HeaderComponent headerInfo={props.headerInfo} /> <LeftContainer menuType={props.menuType} leftInfo={props.headerInfo}/> <RightContainer> { this.getPages() } </RightContainer> </div>:this.getSanCodePgae() } { popShow?<div style={{width:'100%',height:'100%',background:'rgba(0,0,0,.8)',position:'absolute',top:'0',left:'0'}}> <PopModel popupTitle={props.breakageContainer.status&&props.breakageContainer.status.success?"货品匹配成功":'货品匹配失败'} classContainer={"recoveryPopInfo"}> <div className={props.breakageContainer.status&&props.breakageContainer.status.success?"icon iconfont icon-correct font150 col27ce61":"icon iconfont icon-exclamation font150 colfffd00"} /> <div className={"text font40 col000"}> <p>{props.breakageContainer.status&&props.breakageContainer.status.message}</p> </div> <div className={"btn"}> <Button text={props.breakageContainer.status&&props.breakageContainer.status.success?"已放入":'关闭'} btnContainer={'font32 backff775c colfff'} option={this.changePopHide.bind(this,props.breakageContainer.status&&props.breakageContainer.status.success)} /> </div> </PopModel> </div>:null } { !pop1Show?<div style={{width:'100%',height:'100%',background:'rgba(0,0,0,.8)',position:'absolute',top:'0',left:'0'}}> <PopModel popupTitle={"货品异常"} classContainer={"recoveryPopInfo"}> <div className={"icon iconfont icon-exclamation font150 colfffd00"} /> <div className={"text font40 col000"}> <p>{props.breakageProductInfo.product.message}</p> </div> <div className={"btn"}> <Button text={'关闭'} btnContainer={'font32 backff775c colfff'} option={this.changePopHideReturn.bind(this)} /> </div> </PopModel> </div>:null } { pop2Show?<PopModel popupTitle={"提示"}> <div className={"text font40 col000"}> <p style={{marginTop:'2rem'}}>敬请期待!</p> </div> <div className={"btn"}> <Button text={'关闭'} style={{marginLeft:'50%',transform:'translateX(-25%)',marginTop:'2rem'}} btnContainer={'font32 backff775c colfff'} option={this.changeBreakPop.bind(this,false)} /> </div> </PopModel>:null } </div> ) } //控制弹框消失 changePopHide(bool){ this.changePopShow(false); if(bool){ this.changePage(1) }else{ this.changeCodePage(false); this.changeSanCodePage('HandCode'); } } //控制弹框消失返回输入条形码页 changePopHideReturn(){ this.setState({ pop1Show:true }) this.changeSanCodePage('HandCode') } //改变显示的组件 changePage(page){ this.setState({ showPage:page, isShow:true }) } //切换到扫码的页面 changeCodePage(bool){ this.setState({ isShow:bool }) } //根据传入的值判断显示扫码页或手动输入码页 changeSanCodePage(CodePage){ this.setState({ SanCodePage:CodePage }) } //判断条形码损坏的弹框显示隐藏 changeBreakPop(bool){ this.setState({ pop2Show:bool }) } //根据判断显示应该显示的组件 getPages(){ let pages=null; let props=this.props; let {showPage}=this.state; switch(showPage){ case 1 : pages=<DefaultComponent pullTaskList={props.pullTaskList} menuType={props.menuType} changeCodePage={this.changeCodePage.bind(this)} changeSanCodePage={this.changeSanCodePage.bind(this)} /> break; case 2 : pages=<BreakageProductDetail breakageProductInfo={props.breakageProductInfo} changePage={this.changePage} submitBreakageProduct={this.transmitInfo.bind(this)} changePopShow={this.changePopShow.bind(this)} /> break; } return pages; } //根据数据显示扫码 还是手动输入条形码 getSanCodePgae(){ let {SanCodePage}=this.state; let SanPage=null; let props=this.props; switch(SanCodePage){ case 'SanCode' : SanPage=<SanCodeComponent changeSanCodePage={this.changeSanCodePage.bind(this)} changeCodePage={this.changeCodePage.bind(this)} changeBreakPop={this.changeBreakPop} /> break; case 'HandCode' : SanPage=<BreakageCode changePage={this.changePage.bind(this)} changeSanCodePage={this.changeSanCodePage.bind(this)} getBarCodeProductInfo={this.getproductCode.bind(this)} breakageProductInfo={props.breakageProductInfo} changeBreakPop={this.changeBreakPop} /> break; } return SanPage; } //把二维码传给后台 getproductCode(barcode){ this.props.getBarCodeProductInfo(barcode) } //把商品的详细信息传给后台 transmitInfo(productDetail){ this.props.submitBreakageProduct(productDetail) } //控制弹框的显示和隐藏 changePopShow(bool){ this.setState({popShow:bool}) } componentWillReceiveProps(nextProps){ if(nextProps.breakageProductInfo.product&&nextProps.breakageProductInfo.product.success===false){ this.setState({pop1Show:nextProps.breakageProductInfo.product.success}) }else{ this.setState({pop1Show:true}) } } } export default BreakageContainer