Commit 6ae09059 by wujiabao

Merge branch 'dev' of git.mjitech.com:zhangxin/max_android_panel into dev

parents dd08b5db 7bc27027
......@@ -42,7 +42,7 @@ const submitBreakageProduct = (data)=>{
}
//test 没有散落货品
// 没有散落货品
const hasNoSku = (commonInfo)=>{
let {storeInfo={},userInfo={},taskInfo={}} = commonInfo;
let url = `${domain}machine_pad/work/lr/status/${taskInfo.taskId}/${taskInfo.area}/${taskInfo.currentTaskType}`;
......
......@@ -2,6 +2,7 @@ import fetch from 'isomorphic-fetch'
import {logout, getTaskList, saveCommonInfo,emptyStoreInfo} from "./common";
import {emit} from "../util/event";
let domain = ENV.domain;
// 回收箱替换,flag为true,任务完成,flag为false
const willCloseDoor=(data,flag=false)=>{
let url=domain+`machine_pad/finish_task.action`;
let {userInfo,taskInfo,storeInfo}=data;
......
......@@ -127,12 +127,15 @@ const getTaskList = (data={},callback=null)=>{
}
}
//本地存储公共信息
const saveCommonInfo = (data)=>{
return {
type : actionType.SAVECOMMONINFO,
data
}
};
// 退出时清空用户信息,工单信息
const logout = ()=>{
let data = Object.assign({},{userInfo:{},taskInfo:{},taskList:{}});
return {
......@@ -141,6 +144,7 @@ const logout = ()=>{
}
};
// 清空门店信息(用于断电断网退出时)
const emptyStoreInfo = ()=>{
let data = Object.assign({},{storeInfo:{}});
return {
......@@ -149,6 +153,7 @@ const emptyStoreInfo = ()=>{
}
}
// 获取页面左边部分展示当前任务名
const getTaskName = (currentTaskType,childTaskNum=0)=>{
return {
type : actionType.GETTASKNAME,
......
......@@ -26,7 +26,7 @@ var myHeaders = new Headers({
'Content-Type': 'application/json; charset=UTF-8',
});
// 获取故障列表
const getTroubleList = (info) => {
let {storeInfo={},userInfo={},taskInfo={}} = info;
return (dispatch) => {
......@@ -54,6 +54,7 @@ const getTroubleList = (info) => {
}
};
// 提交故障信息
const updateTroubleList = (info, headerInfo) => {
let {taskInfo={},userInfo={},storeInfo={}} = headerInfo;
let bodyData = Object.assign({}, {details: info}, {taskId:taskInfo.taskId,employeeId:userInfo.employeeId,storeId:storeInfo.id});
......
......@@ -11,13 +11,14 @@ let myHeaders = new Headers({
// '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,
......@@ -26,7 +27,6 @@ const emptyErrorInfo = ()=>{
const finishReplenish = (info,source)=>{
//source 1 : 商品页 , 2 : 扫码页
//已放入回收箱
let {userInfo,taskInfo,storeInfo,taskList} = info;
let bodyData = Object.assign({},{
storeId : storeInfo.id,
......
......@@ -53,6 +53,7 @@ const logoutUser = ()=>{
let timer = null;
// 断电断网 轮询获取用户登录状态
const pollingGetUserinfoAgain = (storeId)=>{
return (dispatch)=>{
if(!timer){
......@@ -66,7 +67,7 @@ const pollingGetUserinfoAgain = (storeId)=>{
}
}
// 断电断网获取用户登录信息
const pollingGetUserinfo = (storeId)=>{
UTILPATH.myLogger.info("power_cut_find_user storeId ",storeId)
return(dispatch)=>{
......
......@@ -130,6 +130,7 @@ export default class ReplenishSkuPage extends React.Component{
getSkuInfo(){
let {headerInfo} = this.props;
let {taskList={}} = headerInfo;
UTILPATH.myLogger.info("replenishSkuPage getSkuInfo ",taskList);
let skuImg = taskList.skuImage ? UTILPATH.getPic(taskList.skuImage,"middle") : '';
let areaImage = taskList.areaImage ? UTILPATH.getPic(taskList.areaImage,"middle") : '';
return(
......
const showPage = {
1 : 'Trouble', //一期故障
//一期的界面基本已废
1 : 'Trouble', //一期故障(已废)
2 : 'Scan', //一期扫描二维码
3 : 'DamageProductList', //一期上报损耗商品
4 : 'OtherQuestionUpload', //一期上报其它问题
5 : 'ReportLeftSkus', // 二期遗留商品上报
51 : 'ReportLeftSkus1', // 二期遗留商品上报
5 : 'ReportLeftSkus', // 二期遗留商品上报,获取工单进入
51 : 'ReportLeftSkus1', // 二期遗留商品上报,右上角菜单进入,组件用的一个,只是参数不同
6 : 'CheckSkus', //二期盘点
7 : 'Home', //一期首页和关门页
8 : 'FinishAsk', //一期询问是否完成页
9 : 'ChooseTask', //一期选择故障问题页
10 : 'RecoverySkus', //二期回收
11 : 'Replenishment', //二期补货
12 : 'Feedback', //二期问题反馈和关门
13 : 'HomePage', //二期首页
131 : 'HomePage1', //二期首页
14 : 'Question', //二期问题反馈页面
141 : 'Question1', //二期问题反馈页面
12 : 'Feedback', //二期故障页面
13 : 'HomePage', //二期首页,开门展示
131 : 'HomePage1', //二期首页,关门展示
14 : 'Question', //二期问题反馈页面,获取工单进入
141 : 'Question1', //二期问题反馈页面,右上角菜单栏进入
15 : 'BoxRecoverySkus', //二期回收箱回收
'DevPage' : 'DevPage'
};
......@@ -35,6 +36,7 @@ const headerStatus = { //首页状态栏
};
const normalMenuList = [
// 菜单栏展示内容(目前菜单栏禁止使用和展示)
{
text : '货品报损',
type : 'HPBS',
......
......@@ -45,12 +45,14 @@ export default class HomePageContainer extends React.Component{
},()=>{
UTILPATH.myLogger.info("logout startStopServer ",this.props.startStopServer);
if(this.props.startStopServer){
// 断网调用
this.props.willCloseDoor().then(()=>{
this.props.endCountBack();
this.props.tempLogout()
});
}else{
//正常调用
this.props.willCloseDoor().then(()=>{
this.props.endCountBack();
let msg={type:'WILL_CLOSEDOOR'};
......
......@@ -61,7 +61,7 @@ const defaultPopupInfo = {
popupChild : null, // 自定义弹窗内部htmls,
popupTitle : ''
};
const initPage = 13;
const initPage = 13; // 默认显示页面
const errorType = {
1 : 1, //屏幕超时操作
......@@ -73,23 +73,23 @@ class PageContainer extends React.Component {
constructor(props) {
super(props);
this.state = {
showPage : showPage[initPage],
lastPage : '',
page : null,
popupInfo : defaultPopupInfo,
showPage : showPage[initPage], // 当前显示页面
lastPage : '', // 暂时没用
page : null, // 暂时没用
popupInfo : defaultPopupInfo, // 弹窗信息
showClock : false, //关门页面显示倒计时
headerInfo : {},
pageStyle : {},
successCloseDoor : false,
headerInfo : {}, // 暂时没用
pageStyle : {}, // 页面样式
successCloseDoor : false, //关门成功标识
showClassify : false, //显示右侧菜单栏,默认不显示,目前没用
isSend:false,
isSend:false, // 关门之后设置为true,当其为true的时候才会接口 关门的socket消息
area:'',//区域
maxTime : 300,
maxTime : 300, // 超时时间
showAlarm : false, // 是否已报警,已报警为true,未报警为false
startStopServer : false, //开启断电断网流程
storeValue : "",
startWork : false,
startCountback : false,
storeValue : "", // 断网情况下的 门店id
startWork : false, //断网情况下 开始工作标识(暂未用到)
startCountback : false, // 开始超时倒计时标识
};
this.getPages = this.getPages.bind(this); //获取当前页面
this.showPopup = this.showPopup.bind(this); //显示弹窗
......@@ -98,7 +98,6 @@ class PageContainer extends React.Component {
this.beginCountBack = this.beginCountBack.bind(this); //开始300s倒计时
this.endCountBack = this.endCountBack.bind(this); //结束300s倒计时
this.showAlarm = this.showAlarm.bind(this); //显示警告弹窗
this.beginCloseDoor = this.beginCloseDoor.bind(this); //开始关门倒计时
this.playAlarmMusic = this.playAlarmMusic.bind(this); //播放警报音乐
this.overTimeSolve = this.overTimeSolve.bind(this); //超时未完成
this.failCloseDoor = this.failCloseDoor.bind(this); //关门倒数未监听到关门成功
......@@ -192,6 +191,7 @@ class PageContainer extends React.Component {
*/
on(CONFIG.socketType.GETSTOREINFO,this,function (data) {
//socket接收到门店id
UTILPATH.myLogger.info(CONFIG.socketType.GETSTOREINFO ,data);
dispatch(saveCommonInfo({ip:data.ip}));
if(!this.state.startStopServer){
......@@ -218,15 +218,10 @@ class PageContainer extends React.Component {
});
}
}
/**
* 测试数据
* @type {number}
*/
}
});
on(CONFIG.socketType.GETSOCKETMSG,this,function (data) {
// 接收到 socket信息
UTILPATH.myLogger.info(CONFIG.socketType.GETSOCKETMSG ,data);
if(!this.state.startStopServer){
//非断电断网模式
......@@ -234,6 +229,7 @@ class PageContainer extends React.Component {
}
});
on(CONFIG.socketType.STARTSTOPSERVER,this,()=>{
// 接收到断网指令
UTILPATH.myLogger.info(CONFIG.socketType.STARTSTOPSERVER);
if(!this.state.startStopServer){
this.setState({
......@@ -246,6 +242,7 @@ class PageContainer extends React.Component {
}
});
on(CONFIG.socketType.STOPSTOPSERVER,this,()=>{
// 接收到终止断网指令(即联网成功)
UTILPATH.myLogger.info("componentWillMount " ,CONFIG.socketType.STOPSTOPSERVER);
if(this.state.startStopServer){
this.setState({
......@@ -263,13 +260,13 @@ class PageContainer extends React.Component {
let {dispatch} = this.props;
dispatch(logout());
}
//判断是否向服务端发起请求
//判断是否向monitor发起获取货柜门状态请求,点击关门按钮后获取
changeIsSend(bool){
this.setState({
isSend:bool
})
}
}
// 根据socket信息,执行开门关门相关逻辑
getSocketMsg(data){
let {dispatch,state} = this.props;
let {isSend , area} = this.state;
......@@ -365,29 +362,29 @@ class PageContainer extends React.Component {
switchPages (type) {
switch (type) {
case 'LR' :
case 'LR' : //遗留上报
this.changePages(CONFIG.showPage[5]);
break;
case 'CK' :
case 'CR' :
case 'CK' : // 盘点
case 'CR' : // 盘点
this.changePages(CONFIG.showPage[6]);
break;
case 'RE' :
case 'RE' : // 回收
this.changePages(CONFIG.showPage[10]);
break;
case 'ADDR' :
case 'ADDR' : // 补货
this.changePages(CONFIG.showPage[11]);
break;
case 'PF' :
case 'PF' : // 问题反馈
this.changePages(CONFIG.showPage[14]);
break;
case 'ER' :
case 'ER' : // 故障处理
this.changePages(CONFIG.showPage[12]);
break;
case 'REA' :
case 'REA' : // 回收箱回收
this.changePages(CONFIG.showPage[15]);
break;
case 'FINISH' :
case 'FINISH' : // 任务完成,关门页面
this.changePages(CONFIG.showPage[131]);
break;
default:
......@@ -597,7 +594,7 @@ class PageContainer extends React.Component {
}
}
// 上报错误(目前只有超时在用)
uploadErrs(){
let {dispatch,state} = this.props;
let {commonInfo={}} = state;
......@@ -632,80 +629,15 @@ class PageContainer extends React.Component {
showAlarm : true,
popupInfo : defaultPopupInfo
},()=>{
this.playAlarmMusic()
})
/*
let btnWidth = UTILPATH.getRemByPx(260);
let btnMarginLeft = UTILPATH.getRemByPx(30);
let btnBorderRadius = UTILPATH.getRemByPx(10);
let border = "2px solid #e5e5e5"
let btnDom = <Button key={"pagecountBack1"} style={{'width':btnWidth,'border':border}} text={"确定"} option={this.beginCloseDoor}/>
let clockDom = <Clock key={"pagecountBack2"} totalTime={30}
style={{'width':btnWidth,'marginLeft':btnMarginLeft,'borderRadius':btnBorderRadius}}
callback={this.beginCloseDoor}
/>;
let showAlarmDom = this.getPopDom({
popupText : '检测到店铺反常,请站出店铺,关闭店铺门后重新验证您的身份',
popupButtons:[btnDom,clockDom]
});
this.setState({
popupInfo : defaultPopupInfo
},()=>{
this.showPopup({popupChild:showAlarmDom});
this.playAlarmMusic()
})
*/
}
//关门
beginCloseDoor(){
let btnWidth = UTILPATH.getRemByPx(260);
let btnMarginLeft = UTILPATH.getRemByPx(30);
let btnBorderRadius = UTILPATH.getRemByPx(10);
//老机器
// this.handleCloseDoor();
/*
this.setState({
popupInfo:defaultPopupInfo
},()=>{
let clockDom = <Clock key={"pagecountBack2"} totalTime={30}
style={{'width':btnWidth,'marginLeft':btnMarginLeft,'borderRadius':btnBorderRadius}}
text={"关门中"}
callback={this.judgeDoorStatus}
/>;
let beginCloseDoorDom = this.getPopDom({
popupText : '关门倒数,请尽快站到设备外关闭设备门',
popupButtons:[clockDom]
});
this.showPopup({popupChild:beginCloseDoorDom});
//新机器 todo
// sendMsg(JSON.stringify({type:'WILL_CLOSEDOOR'}));
// this.changeIsSend.bind(this)(true);
this.playAlarmMusic() //播放音乐,暂未实现
})
*/
}
closeDoor(){
}
// 关门失败(一期逻辑,现未使用)
failCloseDoor(){
this.playAlarmMusic();
this.uploadErrs();
}
// 判断关门状态(一期逻辑,现未使用)
judgeDoorStatus(){
this.setState({
showPage : showPage[initPage],
......@@ -758,13 +690,13 @@ class PageContainer extends React.Component {
});
}
//二期临时退出
//二期临时退出(不考虑现实物理门,直接告诉服务器门已关)
tempLogout(){
this.handleCloseDoor()
}
/**
* 显示右侧弹出菜单
* 显示右侧弹出菜单(暂未用)
* @returns {*}
*/
toggleOrders(page=0){
......@@ -788,19 +720,19 @@ class PageContainer extends React.Component {
}
// 断网模式,在门店列表页,监听门店切换
handleStoreChange(e){
this.setState({
storeValue : e.target.value
})
}
// 断网模式,监听选择门店,获取门店信息
handleChooseStore(){
const {dispatch} = this.props;
let storeId = this.state.storeValue;
dispatch(getStoreInfo(storeId));
}
// 断网模式,显示门店列表弹窗
showStoreListPop(storeList){
if(storeList && storeList.length > 0){
let storeDom = storeList.map((store,index)=>{
......@@ -833,7 +765,7 @@ class PageContainer extends React.Component {
});
}
}
// 断网模式,显示扫码弹窗,这个是为让用户通过小程序扫码登录
showQrcodePop(storeId){
if(storeId){
UTILPATH.myLogger.info("showQrcodePop ")
......@@ -859,7 +791,6 @@ class PageContainer extends React.Component {
top: "50%",
transform: "translate(-50%,-50%)"
}
let btnDom = <Button key={"stopServerStoreListBtn"} style={{'width':btnWidth,'border':border,'marginLeft':'40%','marginTop':'12%'}} text={"确定"} option={this.beginCloseDoor}/>
let dom = <PopModel popupTitle={"扫码开门二维码"} classContainer={"recoveryPopInfo"}>
<div className={"font36"} style={style}>
<ReactQrCode className={"qrcodeCanvas"} value={qrcodeUrl || ''}/>
......@@ -877,7 +808,7 @@ class PageContainer extends React.Component {
}
}
// 点击页面“开始工作”
startWork(){
const {dispatch,state} = this.props;
let {commonInfo={}} = state;
......@@ -888,7 +819,7 @@ class PageContainer extends React.Component {
});
}
// 回退,菜单栏进入页面的回退按钮,执行这个方法,暂时未用
goBackTask(){
let {state} = this.props;
let {commonInfo={}} = state;
......@@ -935,7 +866,7 @@ class PageContainer extends React.Component {
goBackTask: this.goBackTask
}
}
//得到当前页面
getPages(){
let pages = null;
let{state,dispatch} = this.props;
......
......@@ -20,7 +20,6 @@ class TakeStokeContaniner extends React.Component {
let {showButton,number,initNum}=this.state;
let props = this.props;
let tokeTaskProduct=props.tokeTaskProduct;
console.log(tokeTaskProduct)
return (
<div className={'TokeStokeContainer'}>
<HeaderComponent headerStatus={headerStatus[1]} headerInfo={props.headerInfo}/>
......
......@@ -3,5 +3,5 @@
*/
module.exports = {
domain: 'https://test.mjitech.com/web/',
uploadImg : 'https://test.mjitech.com/static/uploadTrouble'
uploadImg : 'https://test.mjitech.com/static/uploadTrouble' // 小程序上传图片的二维码连接(已作废)
}
\ No newline at end of file
......@@ -5,12 +5,14 @@
"description": "max_android_panel",
"main": "index.js",
"scripts": {
"pretest": "npm run clean",
"test": "cross-env NODE_ENV=production PAD_ENV=test webpack --env=test --version=2.0.4 --progress --color",
"clean": "rm -rf static/*",
"start": "cross-env NODE_ENV=development PAD_ENV=development webpack-dev-server --version=2.0.4 --env=dev -d --history-api-fallback --hot --inline --progress --colors --port 6999 --host 0.0.0.0",
"prebuild": "npm run clean",
"build": "cross-env NODE_ENV=production PAD_ENV=production webpack --env=build --version=2.0.4 --progress --color",
"preprod": "cross-env NODE_ENV=production PAD_ENV=preprod webpack --env=preprod --version=2.0.4 --progress --color",
"build:prod": "cross-env NODE_ENV=development webpack --env=build --progress --color"
"prepreprod": "npm run clean",
"preprod": "cross-env NODE_ENV=production PAD_ENV=preprod webpack --env=preprod --version=2.0.4 --progress --color"
},
"author": "",
"license": "MIT",
......
......@@ -189,8 +189,8 @@ let envConfig = {
}), //分割共有模块和代码模块
new webpack.DefinePlugin({
'process.env': {
NODE_ENV: JSON.stringify(process.env.NODE_ENV || 'development'),
PAD_ENV: JSON.stringify(process.env.PAD_ENV || 'production')
NODE_ENV: JSON.stringify('development'),
PAD_ENV: JSON.stringify('development')
},
'BASEREM' : 120,
'CURVERSION' : JSON.stringify(curversion)
......
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