Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
max_android_panel
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Zhang Xin
max_android_panel
Commits
03f64bc2
Commit
03f64bc2
authored
May 08, 2019
by
Zhang Xin
Browse files
Options
Browse Files
Download
Plain Diff
fix 冲突 & merge from dev for 需求195 & bug 2950
parents
42699ffa
8cf361f6
Show whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
713 additions
and
157 deletions
+713
-157
.gitignore
+1
-0
.vscode/launch.json
+15
-0
client/actions/ScanBarCode.js
+7
-3
client/actions/TokeStokeContainer.js
+3
-1
client/actions/barcodeCommon.js
+6
-4
client/actions/breakaegContainer.js
+7
-5
client/actions/chooseTaskContainer.js
+75
-25
client/actions/common.js
+39
-21
client/actions/getStore.js
+34
-19
client/actions/getTroubles.js
+4
-2
client/actions/recovery.js
+22
-14
client/actions/replenish.js
+5
-3
client/actions/uploadError.js
+5
-4
client/actions/userinfo.js
+69
-2
client/actiontype/store.js
+2
-0
client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx
+30
-4
client/components/ReplenishComponent/ReplenishSkuPage/ReplenishSkuPage.jsx
+3
-1
client/config/socketType.js
+4
-1
client/containers/HomePageContainer/HomePageContainer.jsx
+18
-3
client/containers/PageContainer/PageContainer.jsx
+253
-29
client/css/font.css
+12
-0
client/index.js
+13
-2
client/reducers/store.js
+7
-1
client/util/logger.js
+1
-0
client/util/socket.js
+60
-9
package.json
+2
-2
webpack.config.js
+16
-2
No files found.
.gitignore
View file @
03f64bc2
...
...
@@ -6,4 +6,5 @@ static
.idea
package-lock.json
.map
.vscode
.vscode/launch.json
0 → 100644
View file @
03f64bc2
{
//
使用
IntelliSense
了解相关属性。
//
悬停以查看现有属性的描述。
//
欲了解更多信息,请访问
:
https
:
//go.microsoft.com/fwlink/?linkid=
830387
"version"
:
"0.2.0"
,
"configurations"
:
[
{
"type"
:
"node"
,
"request"
:
"launch"
,
"name"
:
"Launch Program"
,
"program"
:
"${workspaceFolder}
\\
index.js"
}
]
}
\ No newline at end of file
client/actions/ScanBarCode.js
View file @
03f64bc2
...
...
@@ -18,6 +18,7 @@ export function scanBarCodeGetProductInfo(postData) {
}).
then
((
response
)
=>
response
.
json
())
.
then
(
(
json
)
=>
{
UTILPATH
.
myLogger
.
info
(
"scanning_sku_barcode_for_add_loss_task response "
,
json
);
//处理数据如果
let
success
=
json
.
meta
.
success
;
if
(
success
){
...
...
@@ -27,7 +28,8 @@ export function scanBarCodeGetProductInfo(postData) {
}
}
).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"scanning_sku_barcode_for_add_loss_task error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`scanning_sku_barcode_for_add_loss_task error
${
e
}
`
);
// dispatch(scanBarCodeGetProductInfo(postData))
})
}
}
...
...
@@ -47,15 +49,17 @@ export function submitProductInfo(postData) {
}).
then
((
response
)
=>
response
.
json
())
.
then
(
(
json
)
=>
{
UTILPATH
.
myLogger
.
info
(
"submit_add_loss_task response "
,
json
);
if
(
json
.
data
){
let
submit
=
{
"submit"
:
true
}
}
;
dispatch
(
submitProductSuccess
(
submit
))
}
}
).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"submit_add_loss_task error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`submit_add_loss_task error
${
e
}
`
);
// dispatch(submitProductInfo(postData));
}
)
...
...
client/actions/TokeStokeContainer.js
View file @
03f64bc2
...
...
@@ -23,12 +23,14 @@ const checkProductQuantity = (data)=>{
body
:
JSON
.
stringify
(
bodyData
)
}).
then
(
response
=>
response
.
json
())
.
then
((
json
)
=>
{
UTILPATH
.
myLogger
.
info
(
"checkProductQuantity response "
,
json
);
if
(
json
.
data
===
1
){
dispatch
(
getTaskList
(
commonInfo
))
}
dispatch
(
checkQuantity
({
type
:
json
.
data
}))
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"checkProductQuantity error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`checkProductQuantity error
${
e
}
`
);
// dispatch(checkProductQuantity(data))
})
}
...
...
client/actions/barcodeCommon.js
View file @
03f64bc2
...
...
@@ -10,10 +10,10 @@ const getBarCodeProductInfo = (data)=>{
let
{
taskInfo
=
{},
storeInfo
=
{}}
=
commonInfo
;
let
storeId
=
storeInfo
.
id
||
0
;
let
currentTaskType
=
taskInfo
.
currentTaskType
||
''
;
let
area
=
taskInfo
.
area
||
''
let
taskId
=
taskInfo
.
taskId
||
0
let
area
=
taskInfo
.
area
||
''
;
let
taskId
=
taskInfo
.
taskId
||
0
;
let
url
=
`
${
domain
}
machine_pad/barcode/
${
storeId
}
/
${
taskId
}
/
${
area
}
/
${
currentTaskType
}
/
${
barcode
}
`
;
UTILPATH
.
myLogger
.
info
(
"getBarCodeProductInfo url"
,
url
);
UTILPATH
.
myLogger
.
info
(
"getBarCodeProductInfo url
"
,
url
);
return
(
dispatch
)
=>
{
fetch
(
url
,{
credentials
:
'include'
,
...
...
@@ -21,6 +21,7 @@ const getBarCodeProductInfo = (data)=>{
mode
:
'cors'
}).
then
((
response
)
=>
response
.
json
())
.
then
((
json
)
=>
{
UTILPATH
.
myLogger
.
info
(
"getBarCodeProductInfo response "
,
json
);
if
(
!
json
.
meta
.
success
&&!
json
.
data
){
dispatch
(
saveProductInfo
(
json
.
meta
))
switch
(
taskInfo
.
currentTaskType
){
...
...
@@ -79,7 +80,8 @@ const getBarCodeProductInfo = (data)=>{
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"getBarCodeProductInfo error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`getBarCodeProductInfo error
${
e
}
`
);
dispatch
(
getBarCodeProductInfo
(
data
));
})
}
...
...
client/actions/breakaegContainer.js
View file @
03f64bc2
...
...
@@ -18,8 +18,8 @@ const submitBreakageProduct = (data)=>{
let
{
skuPosition
,
skuId
,
skuStatus
,
area
}
=
productDetail
;
let
bodyData
=
{
skuPosition
,
skuId
,
skuStatus
,
machineId
,
taskId
,
area
}
let
url
=
domain
+
`machine_pad/lr/
${
userId
}
`
;
UTILPATH
.
myLogger
.
info
(
"submitBreakageProduct url"
,
url
);
UTILPATH
.
myLogger
.
info
(
"submitBreakageProduct request"
,
bodyData
);
UTILPATH
.
myLogger
.
info
(
"submitBreakageProduct url
"
,
url
);
UTILPATH
.
myLogger
.
info
(
"submitBreakageProduct request
"
,
bodyData
);
return
(
dispatch
)
=>
{
fetch
(
url
,{
// credentials : 'include',
...
...
@@ -32,9 +32,11 @@ const submitBreakageProduct = (data)=>{
body
:
JSON
.
stringify
(
bodyData
)
}).
then
((
response
)
=>
response
.
json
())
.
then
((
json
)
=>
{
UTILPATH
.
myLogger
.
info
(
"submitBreakageProduct response "
,
json
);
dispatch
(
getSubmitStatus
(
json
.
meta
))
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"submitBreakageProduct error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`submitBreakageProduct error
${
e
}
`
);
// dispatch(submitBreakageProduct(data))
})
}
}
...
...
@@ -44,7 +46,7 @@ const submitBreakageProduct = (data)=>{
const
hasNoSku
=
(
commonInfo
)
=>
{
let
{
storeInfo
=
{},
userInfo
=
{},
taskInfo
=
{}}
=
commonInfo
;
let
url
=
`
${
domain
}
machine_pad/work/lr/status/
${
taskInfo
.
taskId
}
/
${
taskInfo
.
area
}
/
${
taskInfo
.
currentTaskType
}
`
;
UTILPATH
.
myLogger
.
info
(
"hasNoSku url"
,
url
);
UTILPATH
.
myLogger
.
info
(
"hasNoSku url
"
,
url
);
return
(
dispatch
)
=>
{
fetch
(
url
,{
// credentials : 'include',
...
...
@@ -55,7 +57,7 @@ const hasNoSku = (commonInfo)=>{
.
then
((
json
)
=>
{
dispatch
(
getTaskList
(
commonInfo
))
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"hasNoSku 没有散落货品 error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`hasNoSku 没有散落货品 error
${
e
}
`
);
})
}
}
...
...
client/actions/chooseTaskContainer.js
View file @
03f64bc2
import
fetch
from
'isomorphic-fetch'
import
{
logout
,
getTaskList
,
saveCommonInfo
}
from
"./common"
;
import
{
logout
,
getTaskList
,
saveCommonInfo
,
emptyStoreInfo
}
from
"./common"
;
import
{
emit
}
from
"../util/event"
;
let
domain
=
ENV
.
domain
;
// let domain1='http://192.168.10.184:8080/maxbox/web/'
const
willCloseDoor
=
(
data
,
flag
=
false
)
=>
{
let
url
=
domain
+
`machine_pad/finish_task.action`
let
url
=
domain
+
`machine_pad/finish_task.action`
;
let
{
userInfo
,
taskInfo
,
storeInfo
}
=
data
;
let
userId
=
userInfo
.
employeeId
;
let
machineId
=
storeInfo
.
id
;
let
{
taskId
,
area
,
currentTaskType
}
=
taskInfo
;
let
bodyData
=
{
area
,
storeId
:
machineId
,
taskId
,
userId
,
taskType
:
currentTaskType
};
UTILPATH
.
myLogger
.
info
(
"finish_task url"
,
url
);
UTILPATH
.
myLogger
.
info
(
"finish_task request"
,
bodyData
);
return
(
dispatch
)
=>
{
fetch
(
url
,{
UTILPATH
.
myLogger
.
info
(
"finish_task url "
,
url
);
UTILPATH
.
myLogger
.
info
(
"finish_task flag "
,
flag
);
UTILPATH
.
myLogger
.
info
(
"finish_task request "
,
bodyData
);
return
async
(
dispatch
)
=>
{
let
success
=
(
json
)
=>
{
UTILPATH
.
myLogger
.
info
(
"finish_task response "
,
json
);
if
(
flag
){
//回收箱完成
dispatch
(
getTaskList
(
data
))
}
};
let
fail
=
(
err
)
=>
{
UTILPATH
.
myLogger
.
error
(
`finish_task error
${
err
}
`
);
};
try
{
let
result
=
await
fetch
(
url
,{
credentials
:
'include'
,
method
:
'POST'
,
mode
:
'cors'
,
...
...
@@ -21,32 +33,31 @@ const willCloseDoor=(data,flag=false)=>{
'Content-Type'
:
'application/json; charset=UTF-8'
},
body
:
JSON
.
stringify
(
bodyData
)
}).
then
((
response
)
=>
response
.
json
())
.
then
((
json
)
=>
{
if
(
flag
){
//回收箱完成
dispatch
(
getTaskList
(
data
))
}
else
{
//没有问题,完成任务
// dispatch(saveCommonInfo(Object.assign({},{taskInfo:{currentTaskType:'FINISH'}})))
}).
then
((
response
)
=>
response
.
json
());
return
success
(
result
)
}
catch
(
err
)
{
return
fail
(
err
)
}
// dispatch(closeDoorSuccess(data));
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"finish_task error "
,
e
);
})
}
}
/**
*
* @param data
* @param stopFlag 断电断网标志,true 断电断网中,
* @returns {Function}
*/
const
closeDoorSuccess
=
(
data
)
=>
{
const
closeDoorSuccess
=
(
data
,
stopFlag
=
false
)
=>
{
let
{
userInfo
,
taskInfo
,
storeInfo
}
=
data
;
let
userId
=
userInfo
.
employeeId
;
let
machineId
=
storeInfo
.
id
;
let
{
taskId
,
area
}
=
taskInfo
;
let
bodyData
=
{
storeId
:
machineId
,
taskId
,
area
,
userId
}
let
url
=
domain
+
'machine_pad/update_door_status.action'
;
UTILPATH
.
myLogger
.
info
(
"update_door_status url"
,
url
);
UTILPATH
.
myLogger
.
info
(
"update_door_status request"
,
bodyData
);
UTILPATH
.
myLogger
.
info
(
"update_door_status url "
,
url
);
UTILPATH
.
myLogger
.
info
(
"update_door_status request "
,
bodyData
);
UTILPATH
.
myLogger
.
info
(
"update_door_status stopFlag "
,
stopFlag
);
return
(
dispatch
)
=>
{
fetch
(
url
,{
credentials
:
'include'
,
...
...
@@ -59,10 +70,49 @@ const closeDoorSuccess=(data)=>{
body
:
JSON
.
stringify
(
bodyData
)
}).
then
((
response
)
=>
response
.
json
())
.
then
((
json
)
=>
{
dispatch
(
logout
())
UTILPATH
.
myLogger
.
info
(
"update_door_status response "
,
json
);
if
(
stopFlag
){
dispatch
(
askForNextTask
(
taskId
))
}
else
{
dispatch
(
logout
());
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
`update_door_status error
${
e
}
`
);
// dispatch(closeDoorSuccess(data));
})
}
};
const
askForNextTask
=
(
taskId
)
=>
{
let
url
=
domain
+
`machine_pad/power_cut_close_door/
${
taskId
}
`
;
UTILPATH
.
myLogger
.
info
(
"askForNextTask power_cut_close_door url "
,
url
);
return
(
dispatch
)
=>
{
fetch
(
url
,{
credentials
:
'include'
,
method
:
'POST'
,
mode
:
'cors'
,
headers
:{
'Access-Control-Allow-Origin'
:
'*'
,
'Content-Type'
:
'application/json; charset=UTF-8'
},
body
:
JSON
.
stringify
({})
}).
then
((
response
)
=>
response
.
json
())
.
then
((
json
)
=>
{
let
{
meta
=
{}}
=
json
;
UTILPATH
.
myLogger
.
info
(
"askForNextTask power_cut_close_door response "
,
json
);
if
(
meta
.
success
){
let
area
=
meta
.
message
;
dispatch
(
saveCommonInfo
(
Object
.
assign
({},{
taskInfo
:{
area
:
area
,
currentTaskNum
:
0
,
currentTaskType
:
""
}})))
}
else
{
//将门店信息也清空
dispatch
(
emptyStoreInfo
());
dispatch
(
logout
());
emit
(
CONFIG
.
socketType
.
STOPSTOPSERVER
,{});
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"update_door_status error "
,
e
);
closeDoorSuccess
(
data
);
UTILPATH
.
myLogger
.
error
(
`power_cut_close_door error
${
e
}
`
);
// dispatch(askForNextTask(taskId))
})
}
}
...
...
client/actions/common.js
View file @
03f64bc2
...
...
@@ -12,29 +12,36 @@ let myHeaders = new Headers({
//获取店铺信息
const
getStoreInfo
=
(
storeId
)
=>
{
return
(
dispatch
)
=>
{
return
async
(
dispatch
)
=>
{
let
bodyData
=
{
storeId
};
UTILPATH
.
myLogger
.
info
(
"getMachineData request"
,
bodyData
);
fetch
(
domain
+
'pad_warehouse/getMachineData.action'
,{
credentials
:
'include'
,
method
:
'POST'
,
mode
:
'cors'
,
headers
:
myHeaders
,
body
:
JSON
.
stringify
(
bodyData
)
}).
then
((
response
)
=>
response
.
json
())
.
then
(
json
=>
{
UTILPATH
.
myLogger
.
info
(
"getMachineData request "
,
bodyData
);
let
success
=
(
json
)
=>
{
UTILPATH
.
myLogger
.
info
(
"getMachineData response "
,
json
);
let
storeInfo
=
Object
.
assign
({},{
id
:
storeId
});
if
(
json
.
meta
.
success
&&
json
.
data
.
warehouse
){
storeInfo
=
Object
.
assign
({},
storeInfo
,
json
.
data
.
warehouse
)
}
else
{
UTILPATH
.
myLogger
.
error
(
"getMachineData error "
,
json
);
}
dispatch
(
saveCommonInfo
(
Object
.
assign
({},{
storeInfo
})))
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"getMachineData error "
,
e
);
})
dispatch
(
saveCommonInfo
(
Object
.
assign
({},{
storeInfo
})));
};
let
fail
=
(
e
)
=>
{
UTILPATH
.
myLogger
.
error
(
`getMachineData error
${
e
}
`
);
dispatch
(
getStoreInfo
(
storeId
));
};
try
{
let
res
=
await
fetch
(
domain
+
'pad_warehouse/getMachineData.action'
,{
credentials
:
'include'
,
method
:
'POST'
,
mode
:
'cors'
,
headers
:
myHeaders
,
body
:
JSON
.
stringify
(
bodyData
)
}).
then
((
response
)
=>
response
.
json
());
return
success
(
res
);
}
catch
(
e
)
{
return
fail
(
e
)
}
}
};
...
...
@@ -42,7 +49,7 @@ const getStoreInfo = (storeId)=>{
//获取用户信息
const
getUserinfo
=
(
employeeId
,
storeId
)
=>
{
let
bodyData
=
Object
.
assign
({},{
employeeId
,
storeId
});
UTILPATH
.
myLogger
.
info
(
"get_alowed_task request"
,
bodyData
);
UTILPATH
.
myLogger
.
info
(
"get_alowed_task request
"
,
bodyData
);
return
(
dispatch
)
=>
{
fetch
(
domain
+
'machine_pad/get_alowed_task.action'
,{
credentials
:
'include'
,
...
...
@@ -52,6 +59,7 @@ const getUserinfo = (employeeId,storeId)=>{
body
:
JSON
.
stringify
(
bodyData
)
}).
then
((
response
)
=>
response
.
json
())
.
then
(
json
=>
{
UTILPATH
.
myLogger
.
info
(
"getMachineData get_alowed_task response "
,
json
);
let
userInfo
=
Object
.
assign
({},{
id
:
employeeId
})
if
(
json
.
meta
.
success
&&
json
.
data
){
if
(
json
.
data
.
employee
){
...
...
@@ -65,7 +73,8 @@ const getUserinfo = (employeeId,storeId)=>{
dispatch
(
saveCommonInfo
(
Object
.
assign
({},{
userInfo
})));
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"get_alowed_task error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`get_alowed_task error
${
e
}
`
);
dispatch
(
getUserinfo
(
employeeId
,
storeId
))
})
}
};
...
...
@@ -76,7 +85,7 @@ const getTaskList = (data={},callback=null)=>{
let
{
storeInfo
=
{},
userInfo
=
{},
taskInfo
=
{}}
=
data
;
let
taskId
=
taskInfo
.
taskId
||
0
;
let
url
=
`
${
domain
}
machine_pad/work/list/
${
storeInfo
.
id
}
/
${
taskInfo
.
area
}
/
${
taskId
}
/
${
userInfo
.
employeeId
}
`
;
UTILPATH
.
myLogger
.
info
(
"getTaskList url"
,
url
);
UTILPATH
.
myLogger
.
info
(
"getTaskList url
"
,
url
);
return
(
dispatch
)
=>
{
if
(
!
userInfo
.
id
){
dispatch
(
addErrorInfo
(
'没有获取用户信息'
))
...
...
@@ -90,6 +99,7 @@ const getTaskList = (data={},callback=null)=>{
headers
:
myHeaders
}).
then
(
response
=>
response
.
json
())
.
then
((
json
)
=>
{
UTILPATH
.
myLogger
.
info
(
"getTaskList response "
,
json
);
let
data
=
Object
.
assign
({});
if
(
json
.
meta
.
success
&&
json
.
data
){
data
.
taskInfo
=
Object
.
assign
({},
json
.
data
.
flatCommonVo
);
...
...
@@ -106,10 +116,10 @@ const getTaskList = (data={},callback=null)=>{
callback
()
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
`getTaskList error
${
e
}
`
);
if
(
callback
){
callback
()
}
UTILPATH
.
myLogger
.
error
(
"getTaskList error "
,
e
);
})
}
}
...
...
@@ -129,6 +139,14 @@ const logout = ()=>{
}
};
const
emptyStoreInfo
=
()
=>
{
let
data
=
Object
.
assign
({},{
storeInfo
:{}});
return
{
type
:
actionType
.
EMPTYCOMMONINFO
,
data
}
}
const
getTaskName
=
(
currentTaskType
,
childTaskNum
=
0
)
=>
{
return
{
type
:
actionType
.
GETTASKNAME
,
...
...
@@ -136,4 +154,4 @@ const getTaskName = (currentTaskType,childTaskNum=0)=>{
}
}
export
{
getStoreInfo
,
saveCommonInfo
,
getUserinfo
,
logout
,
getTaskList
,
getTaskName
}
export
{
getStoreInfo
,
saveCommonInfo
,
getUserinfo
,
logout
,
getTaskList
,
getTaskName
,
emptyStoreInfo
}
client/actions/getStore.js
View file @
03f64bc2
...
...
@@ -3,22 +3,6 @@ import actionTypes from '../actiontype/store'
import
{
saveHeaderInfo
}
from
'./initHeader'
const
domain
=
ENV
.
domain
;
let
json
=
{
"meta"
:
{
"code"
:
"200"
,
"message"
:
"成功"
,
"success"
:
true
},
"data"
:
{
"warehouse"
:
{
"id"
:
13
,
"name"
:
"华贸商业街"
,
"image"
:
"http://static.mjitech.com/static/tmp/2018-05-25/1527243213701.jpg"
,
"address"
:
"华贸商业街(新光天地与利兹卡尔顿酒店之间广场)"
}
}
};
const
saveStoreInfo
=
(
data
)
=>
{
return
{
type
:
actionTypes
.
SAVESTORE
,
...
...
@@ -35,7 +19,7 @@ var myHeaders = new Headers({
const
getStoreInfo
=
(
data
)
=>
{
let
storeId
=
data
.
storeId
let
storeId
=
data
.
storeId
;
return
(
dispatch
)
=>
{
dispatch
(
saveHeaderInfo
(
data
))
let
bodyData
=
{
storeId
};
...
...
@@ -56,7 +40,38 @@ const getStoreInfo = (data)=>{
}
}
};
const
getStoreList
=
()
=>
{
return
(
dispatch
)
=>
{
fetch
(
domain
+
'machine_pad/power_cut_find_store'
,{
credentials
:
'include'
,
method
:
'POST'
,
mode
:
'cors'
,
headers
:
{
'Content-Type'
:
'application/json'
},
body
:
JSON
.
stringify
({})
}).
then
((
response
)
=>
response
.
json
())
.
then
(
json
=>
{
UTILPATH
.
myLogger
.
info
(
"power_cut_find_store "
,
json
);
if
(
json
.
meta
.
success
){
let
storeList
=
json
.
data
;
dispatch
(
saveStoreList
(
storeList
))
}
else
{
//没有店铺信息
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
`power_cut_find_store
${
e
}
`
);
dispatch
(
getStoreList
());
});
}
};
const
saveStoreList
=
(
data
)
=>
{
return
{
type
:
actionTypes
.
SAVESTORELIST
,
data
}
};
export
{
getStoreInfo
}
export
{
getStoreInfo
,
getStoreList
}
client/actions/getTroubles.js
View file @
03f64bc2
...
...
@@ -48,7 +48,8 @@ const getTroubleList = (info) => {
dispatch
(
saveTroubleList
(
json
.
data
))
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"getTroubleList error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`getTroubleList error
${
e
}
`
);
dispatch
(
getTroubleList
(
info
))
})
}
};
...
...
@@ -69,7 +70,8 @@ const updateTroubleList = (info, headerInfo) => {
.
then
(
json
=>
{
dispatch
(
getTaskList
(
headerInfo
))
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"save_all_error error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`save_all_error error
${
e
}
`
);
// dispatch(updateTroubleList(info, headerInfo))
})
}
};
...
...
client/actions/recovery.js
View file @
03f64bc2
...
...
@@ -13,8 +13,7 @@ let lock = false;
const
finishBoxRecovery
=
(
info
)
=>
{
//已放入回收箱
return
(
dispatch
)
=>
{
return
async
dispatch
=>
{
if
(
!
lock
){
lock
=
true
;
let
{
userInfo
=
{},
taskInfo
=
{},
storeInfo
=
{},
taskList
=
{}}
=
info
;
...
...
@@ -26,24 +25,33 @@ const finishBoxRecovery = (info)=>{
taskType
:
taskInfo
.
currentTaskType
||
""
,
area
:
taskInfo
.
area
||
""
});
UTILPATH
.
myLogger
.
info
(
"update_machine_recovery_sku request"
,
bodyData
);
UTILPATH
.
myLogger
.
info
(
"update_machine_recovery_sku request
"
,
bodyData
);
let
url
=
`
${
domain
}
machine_pad/update_machine_recovery_sku.action`
;
fetch
(
url
,{
credentials
:
'include'
,
method
:
'POST'
,
mode
:
'cors'
,
headers
:
myHeaders
,
body
:
JSON
.
stringify
(
bodyData
)
}).
then
(
response
=>
response
.
json
())
.
then
((
json
)
=>
{
let
success
=
(
res
)
=>
{
dispatch
(
saveProductInfo
({}));
dispatch
(
getTaskList
(
info
,()
=>
{
lock
=
false
;
}));
}).
catch
(
e
=>
{
};
let
fail
=
(
err
)
=>
{
lock
=
false
;
UTILPATH
.
myLogger
.
error
(
"update_machine_recovery_sku error "
,
e
);
})
UTILPATH
.
myLogger
.
error
(
`update_machine_recovery_sku error
${
err
}
`
);
};
try
{
const
result
=
await
fetch
(
url
,{
credentials
:
'include'
,
method
:
'POST'
,
mode
:
'cors'
,
headers
:
myHeaders
,
body
:
JSON
.
stringify
(
bodyData
)
}).
then
(
response
=>
response
.
json
());
return
success
(
result
)
}
catch
(
err
)
{
return
fail
(
err
)
}
}
}
};
...
...
client/actions/replenish.js
View file @
03f64bc2
...
...
@@ -2,6 +2,7 @@ import fetch from 'isomorphic-fetch';
import
actionType
from
'../actiontype/replenish'
import
{
getTaskList
}
from
"./common"
;
import
{
saveProductInfo
}
from
"./barcodeCommon"
;
import
{
finishBoxRecovery
}
from
"./recovery"
;
const
domain
=
ENV
.
domain
;
let
myHeaders
=
new
Headers
({
...
...
@@ -35,8 +36,8 @@ const finishReplenish = (info,source)=>{
area
:
taskInfo
.
area
,
id
:
source
===
1
?
taskList
.
workListId
:
0
,
});
let
url
=
`
${
domain
}
machine_pad/trigger_ck_task_sku.action`
UTILPATH
.
myLogger
.
info
(
"trigger_ck_task_sku request"
,
bodyData
);
let
url
=
`
${
domain
}
machine_pad/trigger_ck_task_sku.action`
;
UTILPATH
.
myLogger
.
info
(
"trigger_ck_task_sku request
"
,
bodyData
);
return
(
dispatch
)
=>
{
fetch
(
url
,{
credentials
:
'include'
,
...
...
@@ -48,7 +49,8 @@ const finishReplenish = (info,source)=>{
.
then
((
json
)
=>
{
dispatch
(
getTaskList
(
info
));
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"trigger_ck_task_sku error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`trigger_ck_task_sku error
${
e
}
`
);
// dispatch(finishReplenish(info,source))
})
}
}
...
...
client/actions/uploadError.js
View file @
03f64bc2
...
...
@@ -48,6 +48,7 @@ const uploadError = (info,exceptionType,getTask=true)=>{
area
:
taskInfo
.
area
||
''
});
UTILPATH
.
myLogger
.
info
(
"exception_skupass_sku bodyData "
,
bodyData
);
UTILPATH
.
myLogger
.
info
(
"exception_skupass_sku getTask "
,
getTask
);
return
(
dispatch
=>
{
fetch
(
domain
+
'machine_pad/exception_skupass_sku.action'
,{
credentials
:
'include'
,
...
...
@@ -63,7 +64,8 @@ const uploadError = (info,exceptionType,getTask=true)=>{
dispatch
(
saveProductInfo
({}))
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"exception_skupass_sku error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`exception_skupass_sku error
${
e
}
`
);
// dispatch(uploadError(info,exceptionType,getTask))
});
})
};
...
...
@@ -93,10 +95,9 @@ const timeoutAlarm = (info)=>{
}).
then
((
response
)
=>
response
.
json
())
.
then
(
json
=>
{
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
"expired_send_error_msg error "
,
e
);
UTILPATH
.
myLogger
.
error
(
`expired_send_error_msg error
${
e
}
`
);
// dispatch(timeoutAlarm(info))
});
})
}
...
...
client/actions/userinfo.js
View file @
03f64bc2
...
...
@@ -2,6 +2,7 @@ import fetch from 'isomorphic-fetch';
import
actionTypes
from
'../actiontype/user'
import
{
saveHeaderInfo
}
from
'./initHeader'
import
{
addErrorInfo
}
from
'./uploadError'
import
{
saveCommonInfo
,
getUserinfo
,
emptyStoreInfo
}
from
"./common"
;
const
domain
=
ENV
.
domain
;
...
...
@@ -19,7 +20,7 @@ var myHeaders = new Headers({
const
getUserinfo
=
(
info
,
headerInfo
)
=>
{
const
getUserinfo
Old
=
(
info
,
headerInfo
)
=>
{
let
employeeId
=
info
.
employeeId
;
let
storeId
=
headerInfo
.
storeId
;
let
bodyData
=
Object
.
assign
({},{
employeeId
,
storeId
})
...
...
@@ -49,5 +50,71 @@ const logoutUser = ()=>{
}
}
export
{
getUserinfo
,
logoutUser
}
let
timer
=
null
;
const
pollingGetUserinfoAgain
=
(
storeId
)
=>
{
return
(
dispatch
)
=>
{
if
(
!
timer
){
timer
=
setTimeout
(()
=>
{
UTILPATH
.
myLogger
.
info
(
"pollingGetUserinfoAgain storeId "
,
storeId
)
clearTimeout
(
timer
);
timer
=
null
;
dispatch
(
pollingGetUserinfo
(
storeId
))
},
2
*
1000
)
}
}
}
const
pollingGetUserinfo
=
(
storeId
)
=>
{
UTILPATH
.
myLogger
.
info
(
"power_cut_find_user storeId "
,
storeId
)
return
(
dispatch
)
=>
{
fetch
(
domain
+
`machine_pad/power_cut_find_user/
${
storeId
}
`
,{
credentials
:
'include'
,
method
:
'POST'
,
mode
:
'cors'
,
headers
:
myHeaders
,
body
:
JSON
.
stringify
({})
}).
then
((
response
)
=>
response
.
json
())
.
then
(
json
=>
{
UTILPATH
.
myLogger
.
info
(
"power_cut_find_user response "
,
json
)
let
{
meta
=
{},
data
=
{}}
=
json
;
if
(
meta
.
success
&&
data
.
code
){
let
code
=
parseInt
(
data
.
code
);
switch
(
code
){
case
1
:
//开门成功
let
{
employeeId
,
area
}
=
data
;
if
(
employeeId
&&
area
){
dispatch
(
saveCommonInfo
({
userInfo
:{
employeeId
}}));
dispatch
(
saveCommonInfo
(
Object
.
assign
({},{
taskInfo
:{
area
:
area
,
taskId
:
0
,
currentTaskType
:
'OPEN'
}})));
dispatch
(
getUserinfo
(
employeeId
,
storeId
));
}
else
{
dispatch
(
pollingGetUserinfoAgain
(
storeId
));
}
break
;
case
2
:
//开门失败
dispatch
(
emptyStoreInfo
());
break
;
case
3
:
//暂无信息,继续调用
dispatch
(
pollingGetUserinfoAgain
(
storeId
));
break
;
}
}
else
{
dispatch
(
pollingGetUserinfoAgain
(
storeId
));
}
}).
catch
(
e
=>
{
UTILPATH
.
myLogger
.
error
(
`power_cut_find_user error
${
e
}
`
);
dispatch
(
pollingGetUserinfoAgain
(
storeId
));
})
// dispatch(tempGetUserInfo(storeId));
}
};
export
{
pollingGetUserinfo
}
client/actiontype/store.js
View file @
03f64bc2
const
actionTypes
=
{
SAVESTORE
:
'SAVESTORE'
,
SAVESTORELIST
:
'SAVESTORELIST'
,
}
export
default
actionTypes
\ No newline at end of file
client/components/CommonComponent/HeaderComponent/HeaderComponent.jsx
View file @
03f64bc2
...
...
@@ -8,10 +8,14 @@ export default class HeaderComponent extends React.Component{
this
.
getHomeHeader
=
this
.
getHomeHeader
.
bind
(
this
);
this
.
getOtherHeader
=
this
.
getOtherHeader
.
bind
(
this
);
this
.
handleShowClassify
=
this
.
handleShowClassify
.
bind
(
this
);
this
.
showVersion
=
this
.
showVersion
.
bind
(
this
);
this
.
state
=
{
showHeader
:
headerStatus
[
1
],
showClassify
:
false
showClassify
:
false
,
showVersion
:
false
,
}
this
.
timer
=
null
;
this
.
countbackTime
=
1000
;
}
componentWillReceiveProps
(
nextProps
){
...
...
@@ -42,6 +46,22 @@ export default class HeaderComponent extends React.Component{
return
pages
;
}
showVersion
(){
this
.
setState
({
showVersion
:
!
this
.
state
.
showVersion
},()
=>
{
if
(
!
this
.
timer
&&
this
.
state
.
showVersion
){
this
.
timer
=
window
.
setTimeout
(()
=>
{
window
.
clearTimeout
(
this
.
timer
);
this
.
timer
=
null
;
this
.
setState
({
showVersion
:
false
})
},
this
.
countbackTime
)
}
})
}
getHomeHeader
(){
let
headerInfo
=
this
.
props
.
headerInfo
;
let
{
storeInfo
,
userInfo
,
taskInfo
}
=
headerInfo
;
...
...
@@ -52,13 +72,20 @@ export default class HeaderComponent extends React.Component{
}
}
let
versionStyle
=
{
lineHeight
:
"3.6"
,
textAlign
:
"center"
,
width
:
"100%"
};
return
(
<
div
className=
{
"homeHeader clearfix"
}
>
{
<
div
className=
{
"headerContent leftContent fl"
}
>
<
div
className=
{
"headerlogo"
}
>
<
div
className=
{
"headerlogo"
}
onClick=
{
()
=>
this
.
showVersion
()
}
>
{
this
.
state
.
showVersion
?
<
div
className=
{
"colfff font26"
}
style=
{
versionStyle
}
>
当前版本号 ---
{
CURVERSION
}
</
div
>
:
<
img
className=
{
"logoImg"
}
src=
{
UTILPATH
.
localImg
.
headlogo
}
alt=
""
/>
}
</
div
>
{
taskInfo
&&
taskInfo
.
currentTaskNum
&&
taskInfo
.
totalTaskNum
?
...
...
@@ -69,7 +96,6 @@ export default class HeaderComponent extends React.Component{
}
</
div
>
}
<
div
className=
{
"headerContent rightContent fr "
}
>
{
storeInfo
&&
storeInfo
.
id
?
<
div
className=
{
"locationInfo"
}
>
...
...
client/components/ReplenishComponent/ReplenishSkuPage/ReplenishSkuPage.jsx
View file @
03f64bc2
...
...
@@ -43,8 +43,10 @@ export default class ReplenishSkuPage extends React.Component{
this
.
setState
({
btnClock
:
true
},()
=>
{
this
.
props
.
finishBoxRecovery
()
;
this
.
props
.
finishBoxRecovery
()
.
then
(()
=>
{
this
.
continueScan
()
});
})
}
}
...
...
client/config/socketType.js
View file @
03f64bc2
...
...
@@ -2,7 +2,9 @@
const
socketType
=
{
GETSTOREINFO
:
'GETSTOREINFO'
,
GETSOCKETMSG
:
'GETSOCKETMSG'
,
SOCKETERROR
:
'SOCKETERROR'
SOCKETERROR
:
'SOCKETERROR'
,
STARTSTOPSERVER
:
'STARTSTOPSERVER'
,
//开启断电断网流程
STOPSTOPSERVER
:
'STOPSTOPSERVER'
//关闭断电断网流程
}
module
.
exports
=
socketType
;
\ No newline at end of file
client/containers/HomePageContainer/HomePageContainer.jsx
View file @
03f64bc2
...
...
@@ -43,12 +43,24 @@ export default class HomePageContainer extends React.Component{
this
.
setState
({
closeDoorStatus
:
1
},()
=>
{
this
.
props
.
willCloseDoor
();
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'
};
sendMsg
(
JSON
.
stringify
(
msg
));
this
.
props
.
changeIsSend
(
true
);
// this.props.tempLogout()
});
}
})
}
}
...
...
@@ -124,8 +136,11 @@ export default class HomePageContainer extends React.Component{
)
}
start
(){
let
props
=
this
.
props
;
props
.
getTaskList
();
let
props
=
this
.
props
;
let
{
getTaskList
}
=
props
;
if
(
getTaskList
){
getTaskList
();
}
}
}
...
...
client/containers/PageContainer/PageContainer.jsx
View file @
03f64bc2
...
...
@@ -2,7 +2,7 @@
import
React
from
'react'
import
{
connect
}
from
'react-redux'
;
import
PropTypes
from
'prop-types'
import
ReactQrCode
from
'qrcode.react'
import
{
getTroubleList
,
updateTroubleList
}
from
"../../actions/getTroubles"
;
import
{
initGetOtherProblem
,
addNewProbem
,
deleteProblem
,
editProblemItem
,
submitProblemList
}
from
"../../actions/otherQuestion"
...
...
@@ -30,15 +30,18 @@ import BoxRecoveryPage from '../BoxRecoveryContainer/BoxRecoveryContainer'
import
ReplenishContainer
from
'../ReplenishContainer/ReplenishContainer'
import
QuestionContainer
from
'../QuestionContainer/QuestionContainer'
import
{
getBarCodeProductInfo
,
saveProductInfo
}
from
'../../actions/barcodeCommon'
import
{
getTaskList
}
from
'../../actions/common'
import
{
getTaskList
,
askForNextTask
,
emptyStoreInfo
}
from
'../../actions/common'
import
{
submitBreakageProduct
,
hasNoSku
}
from
'../../actions/breakaegContainer'
import
{
checkProductQuantity
}
from
'../../actions/TokeStokeContainer'
import
{
getStoreInfo
,
saveCommonInfo
,
getUserinfo
,
logout
,
getTaskName
}
from
"../../actions/common"
;
import
{
finishBoxRecovery
}
from
"../../actions/recovery"
;
import
replenishAction
from
"../../actions/replenish"
;
import
{
getStoreList
}
from
"../../actions/getStore"
;
import
{
pollingGetUserinfo
}
from
"../../actions/userinfo"
;
import
AllClassify
from
'../AllClassifyContainer/AllClassifyContainer'
import
{
willCloseDoor
,
closeDoorSuccess
}
from
'../../actions/chooseTaskContainer'
import
{
sendMsg
}
from
'../../util/socket'
import
PopModel
from
'../../components/CommonComponent/PopupComponent/PopupChildComponent'
/*二期引用 end*/
import
{
on
,
remove
}
from
'../../util/event'
;
...
...
@@ -79,7 +82,11 @@ class PageContainer extends React.Component {
isSend
:
false
,
area
:
''
,
//区域
maxTime
:
300
,
showAlarm
:
false
// 是否已报警,已报警为true,未报警为false
showAlarm
:
false
,
// 是否已报警,已报警为true,未报警为false
startStopServer
:
false
,
//开启断电断网流程
storeValue
:
""
,
startWork
:
false
,
startCountback
:
false
,
};
this
.
getPages
=
this
.
getPages
.
bind
(
this
);
//获取当前页面
this
.
showPopup
=
this
.
showPopup
.
bind
(
this
);
//显示弹窗
...
...
@@ -108,6 +115,11 @@ class PageContainer extends React.Component {
this
.
goBackTask
=
this
.
goBackTask
.
bind
(
this
);
//二期显示菜单栏
this
.
showSecondTroubelPage
=
this
.
showSecondTroubelPage
.
bind
(
this
);
//根据用户的type判断显示的页面
this
.
handleCloseDoor
=
this
.
handleCloseDoor
.
bind
(
this
);
//监听到关门回调
this
.
showStoreListPop
=
this
.
showStoreListPop
.
bind
(
this
);
//展示门店列表窗口
this
.
handleStoreChange
=
this
.
handleStoreChange
.
bind
(
this
);
//监听门店切换
this
.
handleChooseStore
=
this
.
handleChooseStore
.
bind
(
this
);
//监听门店切换
this
.
showQrcodePop
=
this
.
showQrcodePop
.
bind
(
this
);
//展示扫码开门二维码弹窗
this
.
startWork
=
this
.
startWork
.
bind
(
this
);
//展示扫码开门二维码弹窗
/*以下是二期方法 end*/
...
...
@@ -142,30 +154,99 @@ class PageContainer extends React.Component {
componentWillMount
()
{
this
.
getPageStyle
();
let
that
=
this
;
let
{
dispatch
}
=
this
.
props
;
// this.beginCountBack();
//
// dispatch(saveCommonInfo({ip:"192.168.10.128"}));
// dispatch(getStoreInfo(31));
// dispatch(saveCommonInfo({userInfo:{employeeId:3}}));
// dispatch(getUserinfo(3,31))
// dispatch(saveCommonInfo(Object.assign({},{taskInfo:{area:'A'}})))
/**
* 测试数据
* @type {number}
let employeeId = 14;
let area = "B";
let storeId = 50;
let maxTime = 300;
dispatch(getStoreInfo(storeId));
dispatch(saveCommonInfo({userInfo:{employeeId}}));
dispatch(getUserinfo(employeeId,storeId));
dispatch(saveCommonInfo(Object.assign({},{taskInfo:{area:area,taskId:0,currentTaskType:'OPEN'}})));
if(!this.state.startCountback){
this.setState({
successCloseDoor : false,
area:area,
showAlarm : false,
maxTime : maxTime,
startCountback : true
},()=>{
//开门开始倒计时
this.countBackTime = maxTime;
this.beginCountBack()
});
}
*/
on
(
CONFIG
.
socketType
.
GETSTOREINFO
,
this
,
function
(
data
)
{
UTILPATH
.
myLogger
.
info
(
CONFIG
.
socketType
.
GETSTOREINFO
,
data
);
dispatch
(
saveCommonInfo
({
ip
:
data
.
ip
}));
if
(
!
this
.
state
.
startStopServer
){
//非断电断网模式
dispatch
(
getStoreInfo
(
data
.
storeId
));
/**
* 测试数据
* @type {number}
let employeeId = 14;
let area = "B";
dispatch(saveCommonInfo({userInfo:{employeeId}}));
dispatch(getUserinfo(employeeId,data.storeId));
dispatch(saveCommonInfo(Object.assign({},{taskInfo:{area:area,taskId:0,currentTaskType:'OPEN'}})));
if(!this.state.startCountback){
this.setState({
successCloseDoor : false,
area:info.area,
showAlarm : false,
maxTime : maxTime,
startCountback : true
},()=>{
//开门开始倒计时
this.countBackTime = maxTime;
this.beginCountBack()
});
}
*/
}
});
on
(
CONFIG
.
socketType
.
GETSOCKETMSG
,
this
,
function
(
data
)
{
UTILPATH
.
myLogger
.
info
(
CONFIG
.
socketType
.
GETSOCKETMSG
,
data
);
if
(
!
this
.
state
.
startStopServer
){
//非断电断网模式
that
.
getSocketMsg
(
data
)
}
});
// on(CONFIG.socketType.SOCKETERROR,this,()=>{
// dispatch(saveCommonInfo({ip:""}));
// })
on
(
CONFIG
.
socketType
.
STARTSTOPSERVER
,
this
,()
=>
{
UTILPATH
.
myLogger
.
info
(
CONFIG
.
socketType
.
STARTSTOPSERVER
);
if
(
!
this
.
state
.
startStopServer
){
this
.
setState
({
startStopServer
:
true
},()
=>
{
//获取门店列表
dispatch
(
emptyStoreInfo
());
dispatch
(
getStoreList
());
})
}
});
on
(
CONFIG
.
socketType
.
STOPSTOPSERVER
,
this
,()
=>
{
UTILPATH
.
myLogger
.
info
(
"componentWillMount "
,
CONFIG
.
socketType
.
STOPSTOPSERVER
);
if
(
this
.
state
.
startStopServer
){
this
.
setState
({
startStopServer
:
false
},()
=>
{
this
.
hidePopup
()
})
}
})
}
...
...
@@ -208,21 +289,23 @@ class PageContainer extends React.Component {
if
(
parseInt
(
info
.
maxTime
)){
maxTime
=
parseInt
(
info
.
maxTime
);
}
if
(
!
this
.
state
.
startCountback
){
this
.
setState
({
successCloseDoor
:
false
,
area
:
info
.
area
,
showAlarm
:
false
,
maxTime
:
maxTime
maxTime
:
maxTime
,
startCountback
:
true
},()
=>
{
//开门开始倒计时
this
.
countBackTime
=
maxTime
;
this
.
beginCountBack
()
});
}
break
;
case
'
SUCCESS_CLOSEDOOR
'
:
UTILPATH
.
myLogger
.
info
(
"
SUCCESS_CLOSEDOOR
isSend "
,
isSend
);
UTILPATH
.
myLogger
.
info
(
"
SUCCESS_CLOSEDOOR
area "
,
area
);
case
'
RESPONSE_ATTACHMENT_STATUS
'
:
UTILPATH
.
myLogger
.
info
(
"
RESPONSE_ATTACHMENT_STATUS
isSend "
,
isSend
);
UTILPATH
.
myLogger
.
info
(
"
RESPONSE_ATTACHMENT_STATUS
area "
,
area
);
if
(
isSend
){
let
{
info
=
{}}
=
data
;
let
{
left_door
=
0
,
right_door
=
0
}
=
info
;
...
...
@@ -248,7 +331,6 @@ class PageContainer extends React.Component {
}
handleCloseDoor
(){
let
{
dispatch
,
state
}
=
this
.
props
;
let
{
commonInfo
=
{}}
=
state
;
...
...
@@ -262,7 +344,7 @@ class PageContainer extends React.Component {
isSend
:
false
},()
=>
{
this
.
endCountBack
();
dispatch
(
closeDoorSuccess
(
commonInfo
));
dispatch
(
closeDoorSuccess
(
commonInfo
,
this
.
state
.
startStopServer
));
});
}
...
...
@@ -274,6 +356,13 @@ class PageContainer extends React.Component {
let
{
state
,
dispatch
}
=
nextProps
;
let
nextCommonInfo
=
state
.
commonInfo
;
let
nextUserInfo
=
nextCommonInfo
.
userInfo
||
{};
let
nextStoreInfo
=
nextCommonInfo
.
storeInfo
||
{};
let
nextTaskInfo
=
nextCommonInfo
.
taskInfo
||
{};
let
nextStoreId
=
nextStoreInfo
.
id
||
0
;
let
nextUserId
=
nextUserInfo
.
id
||
""
;
let
nextEmployeeId
=
nextUserInfo
.
employeeId
||
0
;
let
nextArea
=
nextTaskInfo
.
area
||
""
;
let
storeList
=
state
.
storeInfo
&&
state
.
storeInfo
.
storeList
?
state
.
storeInfo
.
storeList
:
[];
if
(
nextUserInfo
&&
nextUserInfo
.
taskType
&&
nextUserInfo
.
id
)
{
let
commonInfo
=
this
.
props
.
state
.
commonInfo
;
let
{
userInfo
=
{},
taskInfo
=
{}}
=
commonInfo
;
...
...
@@ -287,7 +376,6 @@ class PageContainer extends React.Component {
}
//补货人员,根据type判断显示页面
let
nextTaskInfo
=
nextCommonInfo
.
taskInfo
||
{};
let
lastCurrentType
=
taskInfo
.
currentTaskType
||
''
;
...
...
@@ -333,6 +421,38 @@ class PageContainer extends React.Component {
})
}
if
(
this
.
state
.
startStopServer
){
UTILPATH
.
myLogger
.
info
(
"=====startStopServer======= "
,
this
.
state
.
startStopServer
,
this
.
state
.
startWork
)
if
(
storeList
&&
storeList
.
length
>
0
&&
!
nextStoreId
){
//断电断网,有门店列表,没有门店信息,弹出门店弹窗
this
.
setState
({
storeValue
:
storeList
[
0
].
id
},()
=>
{
this
.
showStoreListPop
(
storeList
);
})
}
else
if
(
nextStoreId
&&
!
nextEmployeeId
){
//todo 不应该判断区域,但是后台会在获取一次用户信息后就清空用户数据,所以加了区域的判断,这个地方要改一下
//断电断网,有门店信息,但是没有用户信息,弹出扫描用户二维码的弹窗
this
.
showQrcodePop
(
nextStoreId
);
}
else
if
(
nextStoreId
&&
nextUserInfo
&&
nextEmployeeId
&&
nextArea
){
UTILPATH
.
myLogger
.
info
(
"=====startStopServer===hasEverything==== "
,
this
.
state
.
startCountback
)
if
(
!
this
.
state
.
startCountback
){
this
.
setState
({
successCloseDoor
:
false
,
area
:
nextArea
,
showAlarm
:
false
,
maxTime
:
this
.
maxCountBackTime
,
startCountback
:
true
},()
=>
{
//开门开始倒计时
this
.
countBackTime
=
this
.
maxCountBackTime
;
this
.
beginCountBack
();
this
.
hidePopup
();
});
}
}
}
if
(
state
.
errMsg
&&
state
.
errMsg
.
errMsg
){
//有错误信息,弹出错误信息弹窗
this
.
showError
(
state
.
errMsg
.
errMsg
)
...
...
@@ -409,6 +529,11 @@ class PageContainer extends React.Component {
}
endCountBack
(){
if
(
this
.
state
.
startCountback
){
this
.
setState
({
startCountback
:
false
});
}
this
.
countBackTime
=
-
1
;
if
(
this
.
countbackTimer
){
clearTimeout
(
this
.
countbackTimer
);
...
...
@@ -650,6 +775,106 @@ 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
)
=>
{
return
<
option
key=
{
"storeListPop"
+
index
}
value
=
{
store
.
id
}
>
{
store
.
name
}
</
option
>
});
let
btnWidth
=
UTILPATH
.
getRemByPx
(
260
);
let
btnMarginLeft
=
UTILPATH
.
getRemByPx
(
30
);
let
btnBorderRadius
=
UTILPATH
.
getRemByPx
(
10
);
let
border
=
"2px solid #e5e5e5"
let
btnDom
=
<
Button
key=
{
"stopServerStoreListBtn"
}
style=
{
{
'width'
:
btnWidth
,
'border'
:
border
,
'marginLeft'
:
'40%'
,
'marginTop'
:
'12%'
}
}
text=
{
"确定"
}
option=
{
this
.
handleChooseStore
}
/>
let
dom
=
<
PopModel
popupTitle=
{
"选择门店"
}
classContainer=
{
"recoveryPopInfo"
}
>
<
div
className=
{
"font36"
}
style=
{
{
'marginTop'
:
'12%'
}
}
>
<
span
className=
{
"font"
}
>
选择当前门店
</
span
>
<
select
defaultValue=
""
onChange=
{
this
.
handleStoreChange
}
>
{
storeDom
}
</
select
>
</
div
>
{
btnDom
}
</
PopModel
>;
this
.
setState
({
popupInfo
:
defaultPopupInfo
},()
=>
{
this
.
showPopup
({
popupChild
:
dom
});
});
}
}
showQrcodePop
(
storeId
){
if
(
storeId
){
UTILPATH
.
myLogger
.
info
(
"showQrcodePop "
)
const
{
dispatch
,
state
}
=
this
.
props
;
let
{
commonInfo
=
{}}
=
state
;
let
{
userInfo
=
{}}
=
commonInfo
;
let
{
employeeId
=
0
,
id
=
""
}
=
userInfo
;
if
(
!
employeeId
){
dispatch
(
pollingGetUserinfo
(
storeId
));
}
let
qrcodeUrl
=
`http://www.mjitech.com/web/redirect.action?type=store&storeId=
${
storeId
}
&from=panel`
;
UTILPATH
.
myLogger
.
info
(
"showQrcodePop qrcodeUrl "
,
qrcodeUrl
);
let
btnWidth
=
UTILPATH
.
getRemByPx
(
260
);
let
btnMarginLeft
=
UTILPATH
.
getRemByPx
(
30
);
let
btnBorderRadius
=
UTILPATH
.
getRemByPx
(
10
);
let
border
=
"2px solid #e5e5e5"
;
let
style
=
{
width
:
UTILPATH
.
getRemByPx
(
300
),
height
:
UTILPATH
.
getRemByPx
(
300
),
border
:
border
,
position
:
"absolute"
,
left
:
"50%"
,
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
||
''
}
/>
</
div
>
</
PopModel
>;
this
.
setState
({
popupInfo
:
defaultPopupInfo
},()
=>
{
this
.
showPopup
({
popupChild
:
dom
});
});
}
}
startWork
(){
const
{
dispatch
,
state
}
=
this
.
props
;
let
{
commonInfo
=
{}}
=
state
;
this
.
setState
({
startWork
:
true
},()
=>
{
dispatch
(
getTaskList
(
commonInfo
))
});
}
goBackTask
(){
let
{
state
}
=
this
.
props
;
let
{
commonInfo
=
{}}
=
state
;
...
...
@@ -781,14 +1006,14 @@ class PageContainer extends React.Component {
showOpenDoorPage=
{
()
=>
this
.
showOpenDoorPage
.
bind
(
this
)()
}
showPopup=
{
(
info
)
=>
this
.
showPopup
(
info
)
}
hidePopup=
{
()
=>
this
.
hidePopup
()
}
willCloseDoor=
{
()
=>
{
dispatch
(
willCloseDoor
(
commonInfo
,
false
))}
}
willCloseDoor=
{
async
()
=>
{
return
await
dispatch
(
willCloseDoor
(
commonInfo
,
false
))}
}
/>
;
break;
/*以下是二期页面 start*/
case showPage[13]:
pages =
<
HomePage
headerInfo=
{
commonInfo
}
getTaskList=
{
()
=>
{
dispatch
(
getTaskList
(
commonInfo
))}
}
getTaskList=
{
()
=>
this
.
startWork
()
}
changePages=
{
(
data
)
=>
this
.
changePages
(
data
)
}
showPopup=
{
(
info
)
=>
this
.
showPopup
(
info
)
}
hidePopup=
{
()
=>
this
.
hidePopup
()
}
...
...
@@ -796,15 +1021,15 @@ class PageContainer extends React.Component {
break;
case showPage[131]:
pages =
<
HomePage
headerInfo=
{
commonInfo
}
getTaskList=
{
()
=>
{
dispatch
(
getTaskList
(
commonInfo
))}
}
changePages=
{
(
data
)
=>
this
.
changePages
(
data
)
}
showPopup=
{
(
info
)
=>
this
.
showPopup
(
info
)
}
hidePopup=
{
()
=>
this
.
hidePopup
()
}
willCloseDoor=
{
()
=>
{
dispatch
(
willCloseDoor
(
commonInfo
,
false
))}
}
willCloseDoor=
{
async
()
=>
{
return
await
dispatch
(
willCloseDoor
(
commonInfo
,
false
))}
}
closeDoor=
{
true
}
tempLogout=
{
()
=>
this
.
tempLogout
.
bind
(
this
)()
}
changeIsSend
={
this
.
changeIsSend
.
bind
(
this
)}
endCountBack=
{
this
.
endCountBack
}
startStopServer=
{
this
.
state
.
startStopServer
}
/>
;
break;
case showPage[12]:
...
...
@@ -856,7 +1081,7 @@ class PageContainer extends React.Component {
showPopup=
{
(
info
)
=>
this
.
showPopup
(
info
)
}
hidePopup=
{
()
=>
this
.
hidePopup
()
}
getTaskName=
{
()
=>
dispatch
(
getTaskName
(
commonInfo
.
taskInfo
.
currentTaskType
,
2
))
}
finishBoxRecovery=
{
()
=>
dispatch
(
finishBoxRecovery
(
commonInfo
))
}
finishBoxRecovery=
{
async
()
=>
{
return
await
dispatch
(
finishBoxRecovery
(
commonInfo
))}
}
uploadError=
{
(
exceptionType
)
=>
dispatch
(
uploadError
(
commonInfo
,
exceptionType
))
}
getBarCodeProductInfo=
{
(
barcode
)
=>
{
dispatch
(
getBarCodeProductInfo
({
barcode
,
commonInfo
}))}
}
/>
;
...
...
@@ -866,7 +1091,7 @@ class PageContainer extends React.Component {
headerInfo
=
{
commonInfo
}
showPopup=
{
(
info
)
=>
this
.
showPopup
(
info
)
}
hidePopup=
{
()
=>
this
.
hidePopup
()
}
willCloseDoor=
{
()
=>
{
dispatch
(
willCloseDoor
(
commonInfo
,
true
))}
}
willCloseDoor=
{
async
()
=>
{
return
await
dispatch
(
willCloseDoor
(
commonInfo
,
true
))}
}
/>
;
break;
case showPage[11]:
...
...
@@ -878,7 +1103,7 @@ class PageContainer extends React.Component {
emptyBarcodeInfo=
{
()
=>
dispatch
(
saveProductInfo
({}))
}
replenishInfo=
{
state
.
replenishInfo
}
getBarCodeProductInfo=
{
(
barcode
)
=>
{
dispatch
(
getBarCodeProductInfo
({
barcode
,
commonInfo
}))}
}
finishBoxRecovery=
{
()
=>
dispatch
(
finishBoxRecovery
(
commonInfo
))
}
finishBoxRecovery=
{
async
()
=>
{
return
await
dispatch
(
finishBoxRecovery
(
commonInfo
))}
}
emptyErrorInfo=
{
()
=>
dispatch
(
replenishAction
.
emptyErrorInfo
())
}
uploadError=
{
(
exceptionType
)
=>
dispatch
(
uploadError
(
commonInfo
,
exceptionType
))
}
finishReplenish=
{
(
source
)
=>
dispatch
(
replenishAction
.
finishReplenish
(
commonInfo
,
source
))
}
...
...
@@ -907,7 +1132,6 @@ class PageContainer extends React.Component {
}
handleTouch()
{
this
.
countBackTime
=
this
.
state
.
maxTime
;
if
(
this
.
state
.
showAlarm
){
...
...
client/css/font.css
View file @
03f64bc2
...
...
@@ -103,6 +103,18 @@ body {
font-size
:
calc
(
var
(
--font3
)
*
font18
*
var
(
--base
))
!important
;
}
.font20
{
font-size
:
calc
(
font20
*
var
(
--base
))
!important
;
}
[
data-dpr
=
"2"
]
.font20
{
font-size
:
calc
(
var
(
--font2
)
*
font20
*
var
(
--base
))
!important
;
}
[
data-dpr
=
"3"
]
.font20
{
font-size
:
calc
(
var
(
--font3
)
*
font20
*
var
(
--base
))
!important
;
}
.font22
{
font-size
:
calc
(
font22
*
var
(
--base
))
!important
;
}
...
...
client/index.js
View file @
03f64bc2
...
...
@@ -6,15 +6,24 @@ import reducers from './reducers/index';
import
{
createLogger
}
from
'redux-logger'
import
thunkMiddleware
from
'redux-thunk'
;
require
(
'./index.css'
);
import
PageContainer
from
'./containers/PageContainer/PageContainer'
import
PageContainer
from
'./containers/PageContainer/PageContainer'
;
const
env
=
process
.
env
.
NODE_ENV
;
function
activateVendor
()
{
const
logMiddleware
=
createLogger
();
return
createStore
(
return
(
env
===
"development"
?
createStore
(
reducers
,
applyMiddleware
(
thunkMiddleware
,
logMiddleware
)
)
:
createStore
(
reducers
,
applyMiddleware
(
thunkMiddleware
,
)
)
)
}
function
renderPage
(
store
)
{
...
...
@@ -28,6 +37,7 @@ function renderPage(store) {
let
store
=
activateVendor
();
UTILPATH
.
socket
.
getIp1
();
UTILPATH
.
socket
.
stopServer
();
// UTILPATH.socket.getTestIp(203);
renderPage
(
store
);
\ No newline at end of file
client/reducers/store.js
View file @
03f64bc2
...
...
@@ -2,12 +2,18 @@ import actionTypes from '../actiontype/store';
const
saveStore
=
(
content
,
data
)
=>
{
return
Object
.
assign
({},
content
,
data
);
};
const
saveStoreList
=
(
content
,
data
)
=>
{
return
Object
.
assign
({},
content
,{
storeList
:
data
});
}
export
default
function
(
state
=
{},
action
)
{
switch
(
action
.
type
)
{
case
actionTypes
.
SAVESTORE
:
return
saveStore
(
state
,
action
.
data
)
return
saveStore
(
state
,
action
.
data
);
case
actionTypes
.
SAVESTORELIST
:
return
saveStoreList
(
state
,
action
.
data
);
default
:
return
state
;
}
...
...
client/util/logger.js
View file @
03f64bc2
...
...
@@ -17,6 +17,7 @@ myLogger.saveDomain = (ip)=>{
myLogger
.
info
=
function
()
{
let
args
=
[].
slice
.
call
(
arguments
)
||
[];
// console.log.apply(console,args);
if
(
domain
&&
args
.
length
>
0
){
let
bodyData
=
{};
let
time
=
new
Date
().
getTime
();
...
...
client/util/socket.js
View file @
03f64bc2
import
{
emit
}
from
'./event'
import
{
emit
,
on
,
remove
}
from
'./event'
import
myLogger
from
'./logger'
let
domainIp
=
'192.168.8.'
;
...
...
@@ -12,6 +12,49 @@ let getIpING = false; //正在获取IP
let
currentIpIndex
=
255
;
let
ws
=
null
;
let
storeId
=
0
;
let
stopTimer
=
null
;
let
startStopServer
=
false
;
//断网后1min连不上,就终止连接
let
beginConnectSocket
=
()
=>
{
console
.
log
(
"===socket===beginConnectSocket===getIpING=== "
,
getIpING
);
if
(
!
getIpING
){
currentIpIndex
=
255
;
totalCount
=
0
;
storeId
=
0
;
socket
.
getIp1
();
socket
.
stopServer
();
}
};
socket
.
stopServer
=
()
=>
{
console
.
log
(
"======stopServer====== "
,
stopTimer
);
if
(
!
stopTimer
){
stopTimer
=
setTimeout
(()
=>
{
clearTimeout
(
stopTimer
);
stopTimer
=
null
;
startStopServer
=
true
;
//告知页面走断电断网流程
emit
(
CONFIG
.
socketType
.
STARTSTOPSERVER
,{});
console
.
log
(
"===socket===STARTSTOPSERVER====== "
);
let
that
=
socket
.
stopServer
;
on
(
CONFIG
.
socketType
.
STOPSTOPSERVER
,
that
,()
=>
{
console
.
log
(
"===socket===STOPSTOPSERVER====== "
);
startStopServer
=
false
;
getIpING
=
false
;
beginConnectSocket
();
remove
(
CONFIG
.
socketType
.
STOPSTOPSERVER
,
that
);
});
},
1000
*
60
*
1
)
}
};
socket
.
getIp1
=
()
=>
{
if
(
!
getIpING
)
{
...
...
@@ -34,14 +77,17 @@ socket.getIp1 = ()=>{
let
info
=
JSON
.
parse
(
evt
.
data
);
if
(
info
.
type
===
'GET_STORE_ID'
&&
info
.
data
){
ws1
.
close
();
if
(
!
startStopServer
){
//非断电断网情况就连接
init
(
currentIpIndex
,
info
.
data
,
true
);
}
}
}
};
ws1
.
onerror
=
function
(
err
)
{
totalCount
++
;
if
(
totalCount
>=
255
){
if
(
totalCount
>=
255
&&
!
startStopServer
){
totalCount
=
0
;
currentIpIndex
=
255
;
getIpING
=
false
;
...
...
@@ -72,8 +118,11 @@ socket.getTestIp = (ip) => {
let
info
=
JSON
.
parse
(
evt
.
data
);
if
(
info
.
type
===
'GET_STORE_ID'
&&
info
.
data
){
ws1
.
close
();
if
(
!
startStopServer
){
init
(
currentIpIndex
,
info
.
data
,
true
);
}
}
}
};
...
...
@@ -87,12 +136,7 @@ const getError = ()=>{
const
getClose
=
()
=>
{
//如果有currentIp就没有必要再次循环
ws
=
null
;
if
(
!
getIpING
){
currentIpIndex
=
255
;
totalCount
=
0
;
storeId
=
0
;
socket
.
getIp1
();
}
beginConnectSocket
();
}
...
...
@@ -111,6 +155,13 @@ const init = (ip,storeid,from = false)=>{
storeId
=
storeid
;
getIpING
=
false
;
myLogger
.
saveDomain
(
domainIp
+
ip
);
if
(
stopTimer
){
//重连成功后,终止倒计时
clearTimeout
(
stopTimer
);
stopTimer
=
null
;
startStopServer
=
false
;
myLogger
.
info
(
"连接成功,停止stopTimer倒计时"
);
}
emit
(
CONFIG
.
socketType
.
GETSTOREINFO
,{
ip
:
domainIp
+
ip
,
storeId
:
storeid
})
};
...
...
@@ -122,7 +173,7 @@ const init = (ip,storeid,from = false)=>{
};
ws
.
send
(
JSON
.
stringify
(
o
));
}
else
{
var
received_msg
=
JSON
.
parse
(
evt
.
data
);
//String
let
received_msg
=
JSON
.
parse
(
evt
.
data
);
//String
emit
(
CONFIG
.
socketType
.
GETSOCKETMSG
,
received_msg
);
}
...
...
package.json
View file @
03f64bc2
...
...
@@ -7,8 +7,8 @@
"scripts"
:
{
"test"
:
"echo
\"
Error: no test specified
\"
&& exit 1"
,
"clean"
:
"rm -rf static/*"
,
"start"
:
"cross-env NODE_ENV=development webpack-dev-server --env=dev -d --history-api-fallback --hot --inline --progress --colors --port 80 --host 0.0.0.0"
,
"build"
:
"cross-env NODE_ENV=production webpack --env=build --progress --color"
,
"start"
:
"cross-env NODE_ENV=development webpack-dev-server --
version=2.0.1 --
env=dev -d --history-api-fallback --hot --inline --progress --colors --port 80 --host 0.0.0.0"
,
"build"
:
"cross-env NODE_ENV=production webpack --env=build --
version=2.0.1 --
progress --color"
,
"build:prod"
:
"cross-env NODE_ENV=development webpack --env=build --progress --color"
},
"author"
:
""
,
...
...
webpack.config.js
View file @
03f64bc2
...
...
@@ -76,6 +76,18 @@ function getEnv(){
}
let
env
=
getEnv
();
function
getVersion
(){
const
args
=
require
(
'minimist'
)(
process
.
argv
.
slice
(
2
));
let
version
=
""
;
if
(
args
.
version
){
version
=
(
args
.
version
).
toString
();
}
return
version
;
}
let
curversion
=
getVersion
();
let
envConfig
=
{
'build'
:{
output
:{
...
...
@@ -91,7 +103,8 @@ let envConfig = {
new
webpack
.
optimize
.
AggressiveMergingPlugin
(),
new
webpack
.
DefinePlugin
({
'process.env'
:
{
NODE_ENV
:
JSON
.
stringify
(
process
.
env
.
NODE_ENV
||
'production'
)
},
'BASEREM'
:
120
'BASEREM'
:
120
,
'CURVERSION'
:
JSON
.
stringify
(
curversion
)
}),
new
webpack
.
ProvidePlugin
({
ENV
:
__dirname
+
'/client/env/production'
,
...
...
@@ -115,7 +128,8 @@ let envConfig = {
}),
//分割共有模块和代码模块
new
webpack
.
DefinePlugin
({
'process.env'
:
{
NODE_ENV
:
JSON
.
stringify
(
process
.
env
.
NODE_ENV
||
'development'
)
},
'BASEREM'
:
120
'BASEREM'
:
120
,
'CURVERSION'
:
JSON
.
stringify
(
curversion
)
}),
new
webpack
.
ProvidePlugin
({
ENV
:
__dirname
+
'/client/env/development'
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment