Commit 0105a36f by Zhang Xin

完善补货部分逻辑

parent 0d1f2a4c
import fetch from 'isomorphic-fetch'
import getTaskList from './common'
import barcodeActionType from '../actiontype/barcodeCommon'
import {wrongQrcode,emptyErrorInfo} from './replenish'
let domain = ENV.domain;
// const changeStatus = (data)=>{
// let {taskId,currentTaskType}=data.taskInfo;
......@@ -31,20 +32,34 @@ const changeTaskStatus = (data)=>{
//test 输入条形码获取商品信息
const getBarCodeProductInfo = (data)=>{
let {barcode,commonInfo}=data;
// let {taskInfo,storeInfo,userInfo}=commonInfo;
// let storeId=storeInfo.id;
// let {currentTaskType,taskId,area}=taskInfo;
let {barcode='',commonInfo={}}=data;
let {taskInfo={},storeInfo={}}=commonInfo;
let storeId=storeInfo.id || 0;
let currentTaskType = taskInfo.currentTaskType || '';
let area = taskInfo.area || ''
let taskId = taskInfo.taskId || 0
console.log(barcode,commonInfo,'这是吴加宝打印的数据')
let url=`http://192.168.10.128:8080/web/flat/barcode/13/336/A/LR/${barcode}`
let url=`${domain}flat/barcode/${storeId}/${taskId}/${area}/${currentTaskType}/${barcode}`
return (dispatch)=>{
fetch(url,{
// credentials : 'include',
method : 'GET',
mode : 'cors'
}).then((response)=>response.json())
.then((json)=>{
if(json.meta.success&&json.data){
dispatch(emptyErrorInfo());
dispatch(saveProductInfo(json.data))
}else{
switch (taskInfo.currentTaskNum){
case 3 :
//回收任务
break;
case 4 :
//补货任务
dispatch(wrongQrcode(json));
break;
}
}
})
......
......@@ -2,8 +2,7 @@ import fetch from 'isomorphic-fetch';
import actionType from '../actiontype/common'
import {addErrorInfo} from './uploadError'
let domain = ENV.domain;
//获取工单
domain = 'http://192.168.10.128:8080/web/'
// domain = 'http://192.168.10.128:8080/web/'
let myHeaders = new Headers({
// 'Access-Control-Allow-Origin': '*',
......@@ -114,16 +113,17 @@ const getUserinfo = (employeeId,storeId)=>{
//test 没有散落货品
const hasNoSku = (commonInfo)=>{
let {storeInfo={},userInfo={},taskInfo={}} = commonInfo;
return (dispatch)=>{
let url = domain + 'flat/work/status/1/A/LR';
let url = `${domain}flat/work/status/${storeInfo.id}/${taskInfo.area}/${taskInfo.currentTaskType}`;
fetch(url,{
// credentials : 'include',
method : 'PUT',
mode : 'cors',
headers: myHeaders
// headers: myHeaders
}).then(response=>response.json())
.then((json)=>{
dispatch(getTaskList())
dispatch(getTaskList(commonInfo))
})
}
}
......@@ -132,6 +132,7 @@ const hasNoSku = (commonInfo)=>{
//拉取工单
const getTaskList = (data={})=>{
let {storeInfo={},userInfo={},taskInfo={}} = data;
console.log("getTaskList ",data)
if(storeInfo.id && userInfo.id && taskInfo.area && taskInfo.taskId){
let url =`${domain}flat/work/list/${storeInfo.id}/${taskInfo.area}/${taskInfo.taskId}/${userInfo.id}`;
return (dispatch)=>{
......
import fetch from 'isomorphic-fetch';
import actionType from '../actiontype/replenish'
import {getTaskList} from "./common";
const domain = ENV.domain;
let myHeaders = new Headers({
// 'Access-Control-Allow-Origin': '*',
// 'Content-Type': 'text/plain;charset=UTF-8',
// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Content-Type': 'application/json; charset=UTF-8',
});
const wrongQrcode = (errorInfo)=>{
return {
type : actionType.SETREPLENISHERRORINFO,
errorInfo
}
}
const emptyErrorInfo = ()=>{
return {
type : actionType.EMPTYREPLENISHERRORINFO,
}
}
export {wrongQrcode,emptyErrorInfo}
import fetch from 'isomorphic-fetch'
import actionType from '../actiontype/error'
import {getTaskList} from './common'
let domain = ENV.domain;
var myHeaders = new Headers({
......@@ -8,7 +9,7 @@ var myHeaders = new Headers({
// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Content-Type': 'application/json; charset=UTF-8',
});
const uploadError = (info)=>{
const uploadErrorOld = (info)=>{
let bodyData = {
warehouseId : info.storeId,
exceptionType : info.exceptionType,
......@@ -28,6 +29,31 @@ const uploadError = (info)=>{
})
};
const uploadError = (info,exceptionType)=>{
let {taskInfo={},userInfo={},storeInfo={},taskList={}} = info;
let bodyData = {
storeId : storeInfo.id || 0,
id : taskList.workListId || 0,
userId : userInfo.id || 0,
taskId : taskInfo.taskId || 0,
exceptionType : exceptionType,
taskType : taskInfo.currentTaskType || '',
area : taskInfo.area || ''
};
return (dispatch =>{
fetch(domain + '/machine_pad/flat_warn_record',{
credentials : 'include',
method : 'POST',
mode : 'cors',
headers:myHeaders,
body : JSON.stringify(bodyData)
}).then((response)=>response.json())
.then(json=>{
}).catch(e=>{console.error(e)});
})
}
const addErrorInfo = (errMsg)=>{
return{
type : actionType.ADDERRORINFO,
......
const actionTypes = {
SETREPLENISHERRORINFO : 'SETREPLENISHERRORINFO',
EMPTYREPLENISHERRORINFO : 'EMPTYREPLENISHERRORINFO',
}
export default actionTypes
\ No newline at end of file
......@@ -56,9 +56,8 @@ export default class RecoverySecondPage extends React.Component{
wrongSku(){
//货道商品不符
let {showPopup,hidePopup} = this.props;
let marginTop = '40px';
let btnDom1 = <Button btnContainer={"recoveryPopInfoWrongSkuBtn1 font32"} key={"recoveryContainerShelfWrong1"} style={{'width':"100%"}} text={"货品不符"} option={this.uploadWrongSku}/>
let btnDom2 = <Button btnContainer={"recoveryPopInfoWrongSkuBtn2 backff775c colfff font32"} key={"recoveryContainerShelfWrong2"} style={{'width':"100%","marginTop":marginTop}} text={"关闭窗口"} option={hidePopup}/>
let btnDom2 = <Button btnContainer={"recoveryPopInfoWrongSkuBtn2 backff775c colfff font32"} key={"recoveryContainerShelfWrong2"} text={"关闭窗口"} option={hidePopup}/>
let popDom =
<PopModel popupTitle={"遇到问题-货品不符"} classContainer={"recoveryPopInfo"}>
<div className={"icon iconfont icon-exclamation font150 colf5a623"} />
......
......@@ -14,11 +14,19 @@ export default class ReplenishScanPage extends React.Component{
this.getSkuInfo = this.getSkuInfo.bind(this)
this.makeSureScanOver = this.makeSureScanOver.bind(this);
this.submitBarcode = this.submitBarcode.bind(this);
this.failSubmit = this.failSubmit.bind(this);
this.state = {
barcodeText : ''
}
}
componentWillReceiveProps(nextProps){
if(nextProps.replenishInfo && nextProps.replenishInfo.errorInfo){
//有错误信息,再对应页面弹出错误信息弹窗,要区分错误信息
}
}
getOtherHeader(){
let {headerInfo,goBack} = this.props;
let {taskInfo={}} = headerInfo;
......@@ -38,7 +46,7 @@ export default class ReplenishScanPage extends React.Component{
return (
<div className={"barcodeInputDom"}>
<div className={"barcodeInputText font30"}>条形码输入错误,请重新输入</div>
<input className={"barcodeInput font30 col000"} type="text" onChange={this.handleInputChange.bind(this)}/>
<input value={this.state.barcodeText} className={"barcodeInput font30 col000"} type="text" onChange={this.handleInputChange.bind(this)}/>
<div className={"barcodeInputTip font30 colff775c"}><span className={"colfff"}>or</span>条形码扫描</div>
<Button btnContainer={"barcodeInputBarcode font32 backff775c colfff"} key={"barcodeInputBarcode"} text={"确定"} option={this.submitBarcode}/>
</div>
......@@ -98,6 +106,7 @@ export default class ReplenishScanPage extends React.Component{
}
getSkuInfo(){
let {barcodeInfo} = this.props;
return(
<div className={"replenishSkuInfo"}>
<div className={"skuName font30 col333"}>商品名称:雪碧</div>
......@@ -129,11 +138,69 @@ export default class ReplenishScanPage extends React.Component{
hidePopup()
}
failSubmit(){
this.setState({
barcodeText : ''
},()=>{
this.props.hidePopup()
})
}
submitBarcode(){
//提交条形码信息
console.log("submitBarcode ",this.state.barcodeText)
let barcodeText = this.state.barcodeText;
let {showPopup,getBarCodeProductInfo} = this.props;
if(barcodeText){
barcodeText = barcodeText.trim();
if(this.checkNumber(barcodeText)){
console.log("submitBarcode ",barcodeText);
//获取条形码信息
getBarCodeProductInfo(barcodeText);
}else{
//提示条形码不正确
let btnDom = <Button btnContainer={"recoveryContainerQrcode font32 backff775c colfff"} key={"recoveryContainerWrongQrcode2"} text={"关闭"} option={this.failSubmit}/>
let popDom =
<PopModel popupTitle={"补货-输入提示"} classContainer={"recoveryPopInfo"}>
<div className={"icon iconfont icon-wrong font150"} />
<div className={"text font40 col000"}>
<p>您输入的条形码格式不正确</p>
</div>
<div className={"btn"}>
{btnDom}
</div>
</PopModel>
showPopup({popupChild:popDom});
}
}else{
//提示输入条形码
let btnDom = <Button btnContainer={"recoveryContainerQrcode font32 backff775c colfff"} key={"recoveryContainerWrongQrcode1"} text={"关闭"} option={this.failSubmit}/>
let popDom =
<PopModel popupTitle={"补货-输入提示"} classContainer={"recoveryPopInfo"}>
<div className={"icon iconfont icon-wrong font150"} />
<div className={"text font40 col000"}>
<p>请输入条形码</p>
</div>
<div className={"btn"}>
{btnDom}
</div>
</PopModel>
showPopup({popupChild:popDom});
}
}
/**
* 验证条形码结果是否为纯数字
* @param str
* @returns {boolean}
*/
checkNumber(str){
let reg = /^[0-9]*$/;
return reg.test(str);
}
render(){
let props = this.props;
......
......@@ -27,6 +27,7 @@ export default class ReplenishSkuPage extends React.Component{
this.getWrongSku = this.getWrongSku.bind(this); // 商品不符
this.overflowShelf = this.overflowShelf.bind(this); // 货道已满页面
this.putInBox = this.putInBox.bind(this); // 放回
this.continueScan = this.continueScan.bind(this); // 放回
this.state={
pageType : 1
......@@ -36,6 +37,11 @@ export default class ReplenishSkuPage extends React.Component{
//扫描下一个
}
componentWillUnmount(){
console.log("componentWillUnmount")
}
getSkuDom(){
return(
<div className={"replenishSkuPage commonPage"}>
......@@ -47,7 +53,7 @@ export default class ReplenishSkuPage extends React.Component{
<div className={"btn pageBtn"}>
<div className={"tips colff775c font30"} onClick={()=>this.getPage(2)}>遇到问题?</div>
<Button btnContainer={"replenishPageBtn1 font32"} key={"replenishPageBtn1"} text={'扫描工作结束'} option={this.handleScanOver}/>
<Button btnContainer={"replenishPageBtn2 font32 colfff backff775c"} key={"replenishPageBtn2"} text={'扫描下一个'} option={this.handleScanQrcode}/>
<Button btnContainer={"replenishPageBtn2 font32 colfff backff775c"} key={"replenishPageBtn2"} text={'扫描下一个'} option={this.continueScan}/>
</div>
</div>
</div>
......@@ -58,7 +64,7 @@ export default class ReplenishSkuPage extends React.Component{
console.log("扫描结束")
//货道商品不符
let {showPopup,hidePopup} = this.props;
let btnDom1 = <Button btnContainer={"replenishHandleScanOverBtn1 font32"} key={"replenishHandleScanOverBtn1"} text={"继续扫描"} option={this.handleScanQrcode}/>
let btnDom1 = <Button btnContainer={"replenishHandleScanOverBtn1 font32"} key={"replenishHandleScanOverBtn1"} text={"继续扫描"} option={this.continueScan}/>
let btnDom2 = <Button btnContainer={"replenishHandleScanOverBtn2 backff775c colfff font32"} key={"replenishHandleScanOverBtn2"} text={"确认扫描完毕"} option={hidePopup}/>
let popDom =
<PopModel popupTitle={"补货结束确认"} classContainer={"replenishPopInfo"}>
......@@ -75,24 +81,26 @@ export default class ReplenishSkuPage extends React.Component{
}
getSkuInfo(){
let {barcodeInfo} = this.props;
let {product={}} = barcodeInfo;
return(
<div className={"replenishSkuInfo"}>
<div className={"skuName font30 col333"}>商品名称:雪碧</div>
<div className={"skuName font30 col333"}>商品名称:{product.skuName || UTILPATH.localImg.defaultImg}</div>
<div className={"skuInfo"}>
<div className={"skuImg"}>
<img src="" alt=""/>
<img src={product.skuImage || UTILPATH.localImg.defaultImg} alt=""/>
</div>
<div className={"areaImg"}>
<img src="" alt=""/>
<img src={product.areaImage || UTILPATH.localImg.defaultImg} alt=""/>
</div>
<div className={"skuPos col333 font30"}>
<ul>
<li><span className={"skuPosTitle fl"}>所在区域:</span>A区域<span className={"colff775c showAreaImg"}>区域照片</span></li>
<li><span className={"skuPosTitle fl"}>所在区域:</span>{product.area}区域<span className={"colff775c showAreaImg"}>区域照片</span></li>
<li className={""}>
<span className={"skuPosTitle"}>货道信息:</span>
<span className={""}>一个字一个字一个字一个字一个字一个字</span>
<span className={""}>{product.position}</span>
</li>
<li><span className={"skuPosTitle fl"}>货道编号:</span>一个字</li>
<li><span className={"skuPosTitle fl"}>货道编号:</span>{product.positionNum}</li>
</ul>
</div>
</div>
......@@ -255,7 +263,14 @@ export default class ReplenishSkuPage extends React.Component{
hidePopup()
}
continueScan(){
let {showPopup,hidePopup,beginScan} = this.props;
hidePopup();
beginScan()
}
render(){
console.log("rerender")
let props = this.props;
return this[questionType[this.state.pageType]]()
}
......
//异常类型("SU"货道不符 ,"SLT"货品少拿 ,"SUM"货品种类不符,"SF"货道已满)
const errorType = {
SU:'SU',
SLT:'SLT',
SUM :'SUM',
SF : 'SF'
}
module.exports = errorType;
\ No newline at end of file
......@@ -608,10 +608,14 @@ class PageContainer extends React.Component {
/>;
break;
case showPage[11]:
console.log("showPage[11] ",state)
pages = <ReplenishContainer
headerInfo = {state.commonInfo}
showPopup={(info)=>this.showPopup(info)}
hidePopup={()=>this.hidePopup()}
barcodeInfo={state.barcodeCommon}
replenishInfo={state.replenishInfo}
getBarCodeProductInfo={(barcode)=>{dispatch(getBarCodeProductInfo({barcode,commonInfo:state.commonInfo}))}}
/>
/*以下是二期页面 end*/
}
......
......@@ -31,6 +31,23 @@ export default class ReplenishContainer extends React.Component{
}
componentWillReceiveProps(nextProps){
console.log("componentWillReceiveProps ",nextProps)
if(nextProps.barcodeInfo && nextProps.barcodeInfo.product && nextProps.replenishInfo && !nextProps.replenishInfo.errorInfo){
//有条形码信息且 没有错误信息 进入条形码扫描成功页面
console.log("in ",this.state.pageType,typeof this.state.pageType);
if(this.state.pageType !== 2){
console.log("2222222")
this.setState({
pageType : 2,
showScanQrcode : false
})
}
}else if(nextProps.replenishInfo && nextProps.replenishInfo.errorInfo){
//有错误信息,再对应页面弹出错误信息弹窗,要区分错误信息
}
}
getPage(type){
console.log("type ",type)
return (props)=>this[replenishPageIndex[type]](props)
......@@ -38,6 +55,7 @@ export default class ReplenishContainer extends React.Component{
beginScan(){
this.setState({
pageType : 3,
showScanQrcode : true,
})
}
......@@ -53,7 +71,7 @@ export default class ReplenishContainer extends React.Component{
}
getSkuPage(props){
return <ReplenishSkuPage {...props}/>
return <ReplenishSkuPage {...props} beginScan={this.beginScan}/>
}
getScanPage(props){
......@@ -80,6 +98,7 @@ export default class ReplenishContainer extends React.Component{
render(){
console.log("render ",this.state.pageType,this.state.showScanQrcode);
let props = this.props;
return (
<div className={"replenishContainer"}>
......
......@@ -44,6 +44,13 @@
border: 1px solid #e5e5e5;
margin: 0 80px 0 60px;
}
.replenishSkuInfo .skuInfo img{
width: 100%;
height: auto;
}
.replenishSkuInfo .skuInfo .skuPos{
line-height: 46px;
flex: 1;
......
......@@ -10,6 +10,7 @@ import reportDamageList from './reportDamge' //一期商铺报损
import errMsg from './error' //上报异常
import commonInfo from './common' //上报异常
import barcodeCommon from './barcodeCommon'
import replenishInfo from './replenish'
export default combineReducers({
troubleList,
storeInfo,
......@@ -21,7 +22,8 @@ export default combineReducers({
reportDamageList,
errMsg,
commonInfo,
barcodeCommon
barcodeCommon,
replenishInfo
})
......
import actionTypes from '../actiontype/replenish';
const setErrorInfo = (state,errorInfo)=>{
return Object.assign({},state,{errorInfo});
};
const emptyErrorInfo = (state)=>{
return Object.assign({},state,{errorInfo:null})
}
export default function(state={}, action) {
switch (action.type) {
case actionTypes.SETREPLENISHERRORINFO:
return setErrorInfo(state,action.errorInfo);
case actionTypes.EMPTYREPLENISHERRORINFO :
return emptyErrorInfo(state);
default:
return state;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment