diff --git a/client/actions/common.js b/client/actions/common.js new file mode 100644 index 0000000..abb93af --- /dev/null +++ b/client/actions/common.js @@ -0,0 +1,119 @@ +import fetch from 'isomorphic-fetch'; +import actionType from '../actiontype/common' +import {saveHeaderInfo} from "./initHeader"; +import actionTypes from "../actiontype/user"; +const domain = ENV.domain; +//获取工单 +const getTaskInfo = (data)=>{ + let {employeeId,storeId} = data; + return(dispatch)=>{ + + } +}; + +//获取店铺信息 +const getStoreInfo = (storeId)=>{ + return(dispatch)=>{ + let bodyData = {storeId}; + fetch(domain + 'pad_warehouse/getMachineData.action',{ + credentials : 'include', + method : 'POST', + mode : 'cors', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(bodyData) + }).then((response)=>response.json()) + .then(json=>{ + let storeInfo = Object.assign({},{id:storeId}); + if(json.meta.success && json.data.warehouse){ + storeInfo = Object.assign({},storeInfo,json.data.warehouse) + } + dispatch(saveCommonInfo(Object.assign({},{storeInfo}))) + }).catch(e=>{console.error(e)}) + + + } +}; + +//获取条形码信息 + +const getInfoByBarcode = (data)=>{ + let {storeId,barcode} = data; + let url = `flat/barcode/${storeId}/${barcode}` + return (dispatch)=>{ + // dispatch(clearBarcodeInfo()); //清空barcode信息 + fetch(domain + url,{ + credentials : 'include', + method : 'GET', + mode : 'cors', + headers: { 'Content-Type': 'application/json' }, + }).then(response=>response.json()) + .then(json=>{ + console.log(json); + if(json.meta.success){ + //扫码成功 + }else{ + //扫码失败 + } + }) + } +}; + +//获取用户信息 +const getUserinfo = (employeeId,storeId)=>{ + let bodyData = Object.assign({},{employeeId,storeId}) + return(dispatch)=>{ + dispatch(saveHeaderInfo(info)); + fetch(domain + 'machine_pad/get_alowed_task.action',{ + credentials : 'include', + method : 'POST', + mode : 'cors', + headers:myHeaders, + body : JSON.stringify(bodyData) + }).then((response)=>response.json()) + .then(json=>{ + let userInfo = Object.assign({},{id:employeeId}) + if(json.meta.success && json.data){ + if(json.data.employee){ + userInfo = Object.assign({},userInfo,json.data.employee) + } + if(json.data.type){ + userInfo = Object.assign({},userInfo,{taskType:json.data.type}); + }else{ + dispatch(addErrorInfo('没有任务需要处理')) + } + dispatch(saveCommonInfo(Object.assign({},{userInfo}))); + } + }).catch(e=>{console.error(e)}) + } +} + +const setBarcodeInfo = (data)=>{ + return{ + type : actionType.SETBARCODEINFO, + data + } +}; + +const clearBarcodeInfo = (data)=>{ + return{ + type : actionType.EMPTYBARCODEINFO, + data + } +}; + +const saveCommonInfo = (data)=>{ + return { + type : actionType.SAVECOMMONINFO, + data + } +}; + +const logout = ()=>{ + let data = Object.assign({},{userInfo:{},taskInfo:{}}); + return { + type : actionTypes.EMPTYCOMMONINFO, + data + } +} + +export {getStoreInfo,getTaskInfo,getInfoByBarcode,saveCommonInfo,getUserinfo,logout} diff --git a/client/actions/index.js b/client/actions/index.js index 0a9270b..edda485 100755 --- a/client/actions/index.js +++ b/client/actions/index.js @@ -9,10 +9,10 @@ const initStart = () => { data : mock } } -const setPickedCategory = (data)=>{ +const startTask = (data)=>{ return { type:actiontypes.SETPICKEDCATEGORY, data } } -export {initStart,setPickedCategory} +export {initStart} diff --git a/client/actiontype/common.js b/client/actiontype/common.js new file mode 100644 index 0000000..8a1d311 --- /dev/null +++ b/client/actiontype/common.js @@ -0,0 +1,7 @@ +const actionTypes = { + SETBARCODEINFO : 'SETBARCODEINFO', + EMPTYBARCODEINFO : 'EMPTYBARCODEINFO', + SAVECOMMONINFO : 'SAVECOMMONINFO', + EMPTYCOMMONINFO : 'EMPTYCOMMONINFO', +} +export default actionTypes \ No newline at end of file diff --git a/client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx b/client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx index a841958..ec1176d 100644 --- a/client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx +++ b/client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx @@ -40,23 +40,14 @@ export default class HeaderComponent extends React.Component{ } getHomeHeader(){ - let {storeInfo,userinfo,taskInfo} = this.props; - storeInfo = { - name : '华贸商业街', - id : 20 - }; - userinfo = { - headImageUrl : "", - employeeName : "你说呢", - id : "00001" - }; - taskInfo = { - totalTaskNum : 5, - currentTaskNum : 2 - }; - let style = { - 'width' : (parseInt(taskInfo.currentTaskNum) / parseInt(taskInfo.totalTaskNum) * 100) + '%' + let headerInfo = this.props.headerInfo; + let {storeInfo,userInfo,taskInfo} = headerInfo; + if(taskInfo && taskInfo.currentTaskNum && taskInfo.totalTaskNum){ + let style = { + 'width' : (parseInt(taskInfo.currentTaskNum) / parseInt(taskInfo.totalTaskNum) * 100) + '%' + } } + return ( <div className={"homeHeader clearfix"}> { @@ -75,21 +66,24 @@ export default class HeaderComponent extends React.Component{ </div> :null } - <div className={"taskProgress"}> - <div className={"currentTask"} style={style}></div> - <div className={"progressText col333 font26"}>任务进度 {taskInfo.currentTaskNum}/{taskInfo.totalTaskNum}</div> - </div> + { + taskInfo && taskInfo.currentTaskNum && taskInfo.totalTaskNum ? + <div className={"taskProgress"}> + <div className={"currentTask"} style={style}></div> + <div className={"progressText col333 font26"}>任务进度 {taskInfo.currentTaskNum}/{taskInfo.totalTaskNum}</div> + </div> : null + } </div> } <div className={"headerContent rightContent fr "}> { - userinfo && userinfo.id ? <div className={"userinfos"}> - <img className={"userheadImg"} src={ userinfo.headImageUrl || UTILPATH.localImg.defaultImg} alt=""/> + userInfo && userInfo.id ? <div className={"userinfos"}> + <img className={"userheadImg"} src={ userInfo.headImageUrl || UTILPATH.localImg.defaultImg} alt=""/> <div className={"userinfo font24 colfff"}> - <p>{userinfo.employeeName || ''}</p> - <p>ID:{userinfo.id || 0}</p> + <p>{userInfo.employeeName || ''}</p> + <p>ID:{userInfo.id || 0}</p> </div> </div> : null } @@ -137,7 +131,13 @@ export default class HeaderComponent extends React.Component{ render(){ - let pages = this.getHeader.bind(this)(); + let props = this.props; + let pages = null; + console.log("props ",props); + console.log("props ",props.headerInfo); + if(props && props.headerInfo && props.headerInfo.storeInfo){ + pages = this.getHeader.bind(this)(); + } return <div className={"headerComponent"}> {pages} </div> diff --git a/client/containers/PageContainer/PageContainer.jsx b/client/containers/PageContainer/PageContainer.jsx index 6273564..f2ac8ae 100755 --- a/client/containers/PageContainer/PageContainer.jsx +++ b/client/containers/PageContainer/PageContainer.jsx @@ -2,14 +2,13 @@ import React from 'react' import { connect } from 'react-redux'; -import {getStoreInfo} from "../../actions/getStore"; +import {getStoreInfo,saveCommonInfo,getUserinfo,logout} from "../../actions/common"; import {getTroubleList,updateTroubleList} from "../../actions/getTroubles"; import {initGetOtherProblem,addNewProbem,deleteProblem,editProblemItem,submitProblemList} from "../../actions/otherQuestion" import {scanBarCodeGetProductInfo,submitProductInfo,saveEditProductInfo,submitProductSuccess,clearProductSuccess} from "../../actions/ScanBarCode" import {getReportDamageList,deleteDamageItem} from '../../actions/reportDamageList' import {getRefreshImg,deleteImg,emptyImg} from "../../actions/refreshImg" import {uploadError,addErrorInfo} from '../../actions/uploadError' -import {getUserinfo,logoutUser} from '../../actions/userinfo' import PopupComponent from '../../components/CommonComponent/PopupComponent/PopupComponent' import TroubleContainer from '../TroubleContainer/TroubleContainer' import ScanBarCodeContainer from '../ScanBarCodeContainer/ScanBarCodeContaienr' @@ -22,7 +21,7 @@ import Button from '../../components/CommonComponent/ButtonComponent/ButtonCompo import Clock from '../../components/CommonComponent/ClockComponent/ClockComponent'; /*二期引用 start*/ -import HomePage from '../HomeContainer/HomeContainer' +import HomePage from '../HomePageContainer/HomePageContainer' import TakeStokeContainer from '../TakeStokeContainer/TakeStokeContainer' import BreakageContainer from '../BreakageContainer/BreakageConatiner' import RecoveryPage from '../RecoveryContainer/RecoveryContainer' @@ -67,7 +66,7 @@ class PageContainer extends React.Component { headerInfo : {}, pageStyle : {}, successCloseDoor : false, - showClassify : false //显示右侧菜单栏,默认不显示 + showClassify : false //显示右侧菜单栏,默认不显示,目前没用 }; this.getPages = this.getPages.bind(this); //获取当前页面 this.showPopup = this.showPopup.bind(this); //显示弹窗 @@ -132,12 +131,12 @@ class PageContainer extends React.Component { on(CONFIG.socketType.GETSTOREINFO,this,function (data) { console.log("==GETSTOREINFO===") console.log(data); - dispatch(getStoreInfo(data)); + dispatch(saveCommonInfo({ip:data.ip})); + dispatch(getStoreInfo(data.storeId)); }); on(CONFIG.socketType.GETSOCKETMSG,this,function (data) { console.log("==GETSTOREINFO===") console.log(data) - console.log(this); that.getSocketMsg(data) }) @@ -146,7 +145,7 @@ class PageContainer extends React.Component { emptyUser(){ let {dispatch} = this.props; - dispatch(logoutUser()); + dispatch(logout()); } getSocketMsg(data){ @@ -155,9 +154,21 @@ class PageContainer extends React.Component { case 'SUCCESS_OPENDOOR': //执行开门 let info = data.info; - let headerInfo = state.headerInfo; + let commonInfo = state.commonInfo; console.log("SUCCESS_OPENDOOR " ,info); - dispatch(getUserinfo(info,headerInfo)); + let {userinfo} = info; + let datas = info.data; + let {storeInfo} = commonInfo; + if(storeInfo && userinfo && + storeInfo.id && userinfo.employeeId + ){ + dispatch(getUserinfo(userinfo.employeeId,storeInfo.id)) + } + if(datas.area){ + //区域信息 + dispatch(saveCommonInfo(Object.assign({},{taskInfo:{area:datas.area}}))) + } + this.setState({ successCloseDoor : false }); @@ -165,7 +176,7 @@ class PageContainer extends React.Component { case 'SUCCESS_CLOSEDOOR': //关门成功 console.log("closedoor"); - dispatch(logoutUser()); + dispatch(logout()); this.endCountBack(); // remove(CONFIG.socketType.GETSTOREINFO,this) // remove(CONFIG.socketType.GETSOCKETMSG,this) @@ -198,6 +209,7 @@ class PageContainer extends React.Component { this.dealPageByType(userinfo.type); } if(state.errMsg.errMsg){ + //有错误信息,弹出错误信息弹窗 this.showError(state.errMsg.errMsg) } } @@ -225,8 +237,8 @@ class PageContainer extends React.Component { dealPageByType(type){ let {dispatch,state} = this.props; - if(this.taskTypeOption[type] && state.headerInfo){ - this.taskTypeOption[type](state.headerInfo); + if(this.taskTypeOption[type] && state.commonInfo){ + this.taskTypeOption[type](state.commonInfo); } } @@ -307,7 +319,7 @@ class PageContainer extends React.Component { uploadErrs(type){ let {dispatch,state} = this.props; - dispatch(uploadError(Object.assign({},state.headerInfo,{exceptionType:type}))); + dispatch(uploadError(Object.assign({},state.commonInfo,{exceptionType:type}))); } //弹出警告弹窗,并报警 showAlarm(){ @@ -455,7 +467,7 @@ class PageContainer extends React.Component { break; case showPage[2]: pages = <ScanBarCodeContainer - headerInfo = {state.headerInfo} + headerInfo = {state.commonInfo} storeInfo={state.storeInfo} userInfo={state.userInfo} getProductInfo = {(postData)=>dispatch(scanBarCodeGetProductInfo(postData))} @@ -474,7 +486,7 @@ class PageContainer extends React.Component { getReportDamageList = {(postData)=>dispatch(getReportDamageList(postData))} deleteDamageItem = {(postData)=>{dispatch(deleteDamageItem(postData))}} changePages={(data)=>this.changePages(data)} - headerInfo = {state.headerInfo} + headerInfo = {state.commonInfo} storeInfo={state.storeInfo} userInfo={state.userInfo} state = {state} @@ -492,7 +504,7 @@ class PageContainer extends React.Component { getRefreshImg={(errorId,type)=>dispatch(getRefreshImg(errorId,type))} deleteImg={(errorId,type,fileId)=>dispatch(deleteImg(errorId,type,fileId))} changePages={(data)=>this.changePages(data)} - headerInfo = {state.headerInfo} + headerInfo = {state.commonInfo} storeInfo={state.storeInfo} userInfo={state.userInfo} state = {state} @@ -538,6 +550,7 @@ class PageContainer extends React.Component { break; case showPage[10]: pages = <RecoveryPage + headerInfo = {state.commonInfo} showPopup={(info)=>this.showPopup(info)} hidePopup={()=>this.hidePopup()} />; @@ -553,8 +566,9 @@ class PageContainer extends React.Component { } render() { + console.log("render "); let {state} = this.props; - let headerInfo = state.headerInfo; + let headerInfo = state.commonInfo; let ip = headerInfo ? headerInfo.ip : ''; let mp3Url = ip ? `http://${ip}:7788/defaultMedia/back.mp3` : ''; return ( diff --git a/client/containers/RecoveryContainer/RecoveryContainer.jsx b/client/containers/RecoveryContainer/RecoveryContainer.jsx index 37ca691..37b2432 100644 --- a/client/containers/RecoveryContainer/RecoveryContainer.jsx +++ b/client/containers/RecoveryContainer/RecoveryContainer.jsx @@ -65,9 +65,14 @@ export default class RecoveryContainer extends React.Component{ render(){ let dom = this.getFirstPage(); + let props = this.props; return( <div className={"recoveryContainer page"}> - <Header /> + { + props.headerInfo && props.headerInfo.storeInfo ? + <Header headerInfo={props.headerInfo}/> : null + } + <LeftContainer /> <RightContainer> { diff --git a/client/env/test.js b/client/env/test.js index 88ce343..17d0c3c 100755 --- a/client/env/test.js +++ b/client/env/test.js @@ -2,6 +2,6 @@ * Created by ruibing on 16/11/2. */ module.exports = { - domain: 'http://test.mjitech.com', + domain: 'http://test.mjitech.com/web/', uploadImg : 'https://preprod.mjitech.com/static/uploadTrouble' } \ No newline at end of file diff --git a/client/index.js b/client/index.js index 6567291..a47d176 100755 --- a/client/index.js +++ b/client/index.js @@ -30,6 +30,6 @@ function renderPage(store) { let store = activateVendor(); // UTILPATH.socket.init(129,17); // UTILPATH.socket.testIp(209); -// UTILPATH.socket.testIp(179); +UTILPATH.socket.testIp(169); renderPage(store); \ No newline at end of file diff --git a/client/reducers/common.js b/client/reducers/common.js new file mode 100644 index 0000000..ed1e1ab --- /dev/null +++ b/client/reducers/common.js @@ -0,0 +1,35 @@ +import actionTypes from '../actiontype/common'; + + +const saveCommonInfo = (state,data)=>{ + let keys = Object.keys(data); + keys.forEach(k=> + { + if(state[k]){ + if(typeof data[k] === 'string'){ + state[k] = data[k] + }else{ + state[k] = Object.assign({},state[k],data[k]); + } + + }else{ + state[k] = data[k] + } + }); + return Object.assign({},state); +}; + +const emptyCommInfo = (state,data)=>{ + return Object.assign({},state,data) +} + +export default function(state={}, action) { + switch (action.type) { + case actionTypes.SAVECOMMONINFO: + return saveCommonInfo(state,action.data); + case actionTypes.EMPTYCOMMONINFO: + return emptyCommInfo(state); + default: + return state; + } +} \ No newline at end of file diff --git a/client/reducers/index.js b/client/reducers/index.js index 4a894d2..6c4582a 100755 --- a/client/reducers/index.js +++ b/client/reducers/index.js @@ -8,6 +8,7 @@ import refreshImg from './refreshImg' //刷新图片 import headerInfo from './initHeader' //获取头部信息 import reportDamageList from './reportDamge' //一期商铺报损 import errMsg from './error' //上报异常 +import commonInfo from './common' //上报异常 export default combineReducers({ troubleList, @@ -18,7 +19,8 @@ export default combineReducers({ refreshImg, headerInfo, reportDamageList, - errMsg + errMsg, + commonInfo })