Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pmk-channel-vue
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
黄麒宇
pmk-channel-vue
Commits
8d538069
Commit
8d538069
authored
Sep 19, 2023
by
huangqy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
111
parent
1f821432
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
182 行增加
和
512 行删除
+182
-512
HomeView.vue
src/views/HomeView.vue
+1
-1
NoOrder.vue
src/views/NoOrder.vue
+180
-510
RFID.vue
src/views/RFID.vue
+1
-1
没有找到文件。
src/views/HomeView.vue
View file @
8d538069
...
@@ -75,7 +75,7 @@ export default defineComponent({
...
@@ -75,7 +75,7 @@ export default defineComponent({
console
.
log
(
'刷新起点'
)
console
.
log
(
'刷新起点'
)
proxy
.
$refs
.
InTask
[
0
].
loadData
()
proxy
.
$refs
.
InTask
[
0
].
loadData
()
proxy
.
$refs
.
OutTask
[
0
].
loadData
()
proxy
.
$refs
.
OutTask
[
0
].
loadData
()
proxy
.
$refs
.
NoOrder
[
0
].
load
Data
()
proxy
.
$refs
.
NoOrder
[
0
].
getTable
Data
()
}
}
function
handleLogChange
(
data
)
{
function
handleLogChange
(
data
)
{
log
.
value
=
data
log
.
value
=
data
...
...
src/views/NoOrder.vue
View file @
8d538069
<
template
>
<
template
>
<div>
<el-card
style=
"height: calc(100vh - 147px)"
>
<el-tabs
type=
"border-card"
v-model=
"activeTab"
>
<template
#
header
>
<el-tab-pane
v-for=
"item in channelList"
:key=
"item"
:name=
"item.stationId"
>
<div
style=
"display: flex;"
>
<template
#
label
>
<el-select
v-model=
"positionCode"
placeholder=
"请选择垛位"
filterable
size=
"large"
class=
"titleSelect"
>
<span
class=
"card-title"
>
通道
{{
item
.
stationId
}}
</span>
<el-option
:label=
"'垛位号: ' + item.positionName"
:value=
"item.positionCode"
v-for=
"item in positionList"
:key=
"item.positionCode"
></el-option>
</
template
>
</el-select>
<el-card
style=
"height: calc(100vh - 227.75px)"
>
<el-select
v-model=
"temporaryName"
placeholder=
"请选择单据"
filterable
size=
"large"
class=
"titleSelect"
clearable
@
focus=
"getTemporaryName"
>
<el-option
:label=
"'单据号: ' + item"
:value=
"item"
v-for=
"item in temporaryList"
:key=
"item"
></el-option>
</el-select>
<el-radio-group
v-model=
"type"
size=
"large"
@
change=
"changeType"
style=
"margin-left: auto;margin-right: 15px;"
>
<el-radio-button
label=
"CANCEL"
>
未激活
</el-radio-button>
<el-radio-button
label=
"IN"
>
入库激活
</el-radio-button>
<el-radio-button
label=
"OUT"
>
出库激活
</el-radio-button>
</el-radio-group>
<el-button
round
size=
"large"
type=
"primary"
@
click=
"reportData"
>
上报单据
</el-button>
<el-button
round
size=
"large"
type=
"warning"
@
click=
"clearData"
>
清空数据
</el-button>
</div>
</
template
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"18"
>
<el-table
:header-cell-style=
"{backgroundColor: '#f5f7fa',color: '#000',fontSize: '18px',fontWeight: '600'}"
:row-class-name=
"tableRowClassName"
:data=
"logData"
size=
"large"
border
style=
"width: 100%;height: 68vh;"
max-height=
"660"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"70"
align=
"center"
/>
<el-table-column
prop=
"type"
label=
"作业类型"
align=
"center"
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
type
==
'IN'
?
'入库'
:
'出库'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"goodsCode"
label=
"品名代码"
align=
"center"
/>
<el-table-column
prop=
"goodsName"
label=
"品名"
align=
"center"
/>
<el-table-column
prop=
"modelName"
label=
"号型"
align=
"center"
/>
<el-table-column
prop=
"amount"
label=
"箱内数量"
align=
"center"
/>
<el-table-column
prop=
"xhNo"
label=
"箱号"
align=
"center"
/>
</el-table>
<el-pagination
style=
"left: 40%;margin-top: 6px;"
background
@
current-change=
"handleCurrentChange"
:current-page=
"pageNo"
:page-size=
"pageSize"
layout=
"total, prev, pager, next"
:total=
"total"
/>
</el-col>
<el-col
:span=
"6"
>
<el-card
class=
"box-card"
>
<
template
#
header
>
<
template
#
header
>
<span
class=
"card-title"
>
实时出入库数据
</span>
<div
style=
"text-align: center;"
>
<el-button
round
style=
"float: right;"
type=
"primary"
@
click=
"showChannelSetting"
>
通道配置
</el-button>
<span
class=
"card-title"
>
总箱数
</span>
<el-button
round
style=
"float: right;margin-right: 10px;"
type=
"warning"
@
click=
"clearData"
>
清空数据
</el-button>
</div>
<el-button
round
type=
"success"
@
click=
"changeType(item)"
v-show=
"item.type"
style=
"float: right;"
>
{{
item
.
type
==
'IN'
?
'入库模式'
:
item
.
type
==
'OUT'
?
'出库模式'
:
''
}}
</el-button>
</
template
>
</
template
>
<el-row
:gutter=
"20"
>
<div
class=
"text"
>
{{ total }}箱
</div>
<el-col
:span=
"18"
>
<el-table
:header-cell-style=
"{backgroundColor: '#f5f7fa',color: '#000',fontSize: '18px',fontWeight: '600'}"
:row-class-name=
"tableRowClassName"
:data=
"item.logData"
size=
"large"
border
style=
"width: 100%;"
max-height=
"660"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"70"
align=
"center"
/>
<el-table-column
prop=
"stationType"
label=
"作业类型"
align=
"center"
>
<
template
#
default=
"scope"
>
{{
scope
.
row
.
stationType
==
'IN'
?
'入库'
:
'出库'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"goodsCode"
label=
"品名代码"
align=
"center"
/>
<el-table-column
prop=
"goodsName"
label=
"品名"
align=
"center"
/>
<el-table-column
prop=
"modelName"
label=
"号型"
align=
"center"
/>
<el-table-column
prop=
"amount"
label=
"箱内数量"
align=
"center"
/>
<el-table-column
prop=
"xhNo"
label=
"箱号"
align=
"center"
/>
</el-table>
</el-col>
<el-col
:span=
"6"
>
<el-card
class=
"box-card"
>
<
template
#
header
>
<div
style=
"text-align: center;"
>
<span
class=
"card-title"
>
识别总箱数
</span>
</div>
</
template
>
<div
class=
"text"
>
{{ item.logData.length }}箱
</div>
</el-card>
<el-divider
/>
<el-card
class=
"box-card"
>
<
template
#
header
>
<div
style=
"text-align: center;cursor: pointer;"
>
<span
@
click=
"changeErr"
class=
"card-title"
>
异常次数
{{
item
.
errNum
}}
次
</span>
</div>
</
template
>
<div
style=
"height: 280px;overflow: auto"
v-if=
"showErr"
>
<div
v-for=
"item in errList"
:key=
"item.time"
>
<p
style=
"text-align: center;"
>
-----------------{{item.time}}-----------------
</p>
<p
style=
"text-align: center;"
>
{{item.content}}
</p>
</div>
</div>
<div
style=
"height: 120px;overflow: auto"
v-if=
"!showErr"
>
</div>
</el-card>
</el-col>
</el-row>
</el-card>
</el-card>
</el-tab-pane>
</el-col>
</el-tabs>
</el-row>
</el-card>
<el-dialog
v-model=
"visible"
width=
"45%"
>
<
template
#
header
>
<div
style=
"text-align: center;font-size: 18px;font-family: Microsoft YaHei;font-weight: bold;color: #303133;"
>
{{
title
}}
</div>
</
template
>
<el-form
size=
"large"
:model=
"formData"
>
<el-collapse
v-model=
"activeNames"
>
<el-collapse-item
name=
"1"
>
<
template
#
title
>
<p
class=
"title"
>
读写器配置
</p>
</
template
>
<el-card
style=
"margin: 25px 35px 0 35px;"
>
<el-row
:gutter=
"40"
>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"formData.readerIp"
placeholder=
"请输入读写器的IP"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
style=
"color: #1296db"
><Monitor
/></el-icon>
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"formData.readerPort"
placeholder=
"请输入读写器的端口"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
style=
"color: #1296db"
><Help
/></el-icon>
</
template
>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-collapse-item>
<el-collapse-item
name=
"2"
>
<
template
#
title
>
<p
class=
"title"
>
天线功率
</p>
</
template
>
<el-card
style=
"margin: 25px 35px 0 35px;"
>
<el-row
:gutter=
"40"
>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"power1"
placeholder=
"请输入1号天线功率"
:max=
"30"
:min=
"0"
>
<
template
#
prefix
>
<img
src=
"../assets/1.svg"
width=
"16"
height=
"16"
/>
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"power2"
placeholder=
"请输入2号天线功率"
>
<
template
#
prefix
>
<img
src=
"../assets/2.svg"
width=
"16"
height=
"16"
/>
</
template
>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"40"
style=
"margin-top: 15px;"
>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"power3"
placeholder=
"请输入3号天线功率"
>
<
template
#
prefix
>
<img
src=
"../assets/3.svg"
width=
"16"
height=
"16"
/>
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"power4"
placeholder=
"请输入4号天线功率"
>
<
template
#
prefix
>
<img
src=
"../assets/4.svg"
width=
"16"
height=
"16"
/>
</
template
>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"40"
v-if=
"readerType == 8"
style=
"margin-top: 15px;"
>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"power5"
placeholder=
"请输入5号天线功率"
>
<
template
#
prefix
>
<img
src=
"../assets/5.svg"
width=
"16"
height=
"16"
/>
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"power6"
placeholder=
"请输入6号天线功率"
>
<
template
#
prefix
>
<img
src=
"../assets/6.svg"
width=
"16"
height=
"16"
/>
</
template
>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"40"
v-if=
"readerType == 8"
style=
"margin-top: 15px;"
>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"power7"
placeholder=
"请输入7号天线功率"
>
<
template
#
prefix
>
<img
src=
"../assets/7.svg"
width=
"16"
height=
"16"
/>
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"power8"
placeholder=
"请输入8号天线功率"
>
<
template
#
prefix
>
<img
src=
"../assets/8.svg"
width=
"16"
height=
"16"
/>
</
template
>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-collapse-item>
<el-collapse-item
name=
"3"
>
<
template
#
title
>
<p
class=
"title"
>
GPIO配置
</p>
</
template
>
<el-card
style=
"margin: 25px 35px 0 35px;"
>
<el-row
:gutter=
"40"
>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"formData.gpioIp"
placeholder=
"请输入GPIO的IP"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
style=
"color: #1296db"
><Monitor
/></el-icon>
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"formData.gpioPort"
placeholder=
"请输入GPIO的端口"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
style=
"color: #1296db"
><Help
/></el-icon>
</
template
>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-collapse-item>
<el-collapse-item
name=
"4"
>
<
template
#
title
>
<p
class=
"title"
>
LED屏配置
</p>
</
template
>
<el-card
style=
"margin: 25px 35px 0 35px;"
>
<el-row
:gutter=
"40"
>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"formData.ledIp1"
placeholder=
"请输入1号显示屏IP"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
style=
"color: #1296db"
><Monitor
/></el-icon>
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"formData.ledPort1"
placeholder=
"请输入1号显示屏端口"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
style=
"color: #1296db"
><Help
/></el-icon>
</
template
>
</el-input>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"40"
style=
"margin-top: 15px;"
>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"formData.ledIp2"
placeholder=
"请输入2号显示屏IP"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
style=
"color: #1296db"
><Monitor
/></el-icon>
</
template
>
</el-input>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item>
<el-input
v-model=
"formData.ledPort2"
placeholder=
"请输入2号显示屏端口"
>
<
template
#
prefix
>
<el-icon
class=
"el-input__icon"
style=
"color: #1296db"
><Help
/></el-icon>
</
template
>
</el-input>
</el-form-item>
</el-col>
</el-row>
</el-card>
</el-collapse-item>
</el-collapse>
</el-form>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
@
click=
"visible = false"
>
关闭
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit"
>
提交
</el-button>
</div>
</
template
>
</el-dialog>
</div>
</template>
</template>
<
script
>
<
script
>
...
@@ -276,38 +65,27 @@ import { Help, Monitor } from '@element-plus/icons-vue'
...
@@ -276,38 +65,27 @@ import { Help, Monitor } from '@element-plus/icons-vue'
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
Monitor
,
Help
},
components
:
{
Monitor
,
Help
},
setup
(
props
,
{
emit
})
{
setup
(
props
,
{
emit
})
{
const
channelList
=
ref
([]);
const
sysForm
=
ref
({})
const
logData
=
ref
([])
const
logData
=
ref
([])
const
visible
=
ref
(
false
)
const
positionCode
=
ref
(
''
)
const
formData
=
ref
({})
const
positionList
=
ref
([])
const
activeTab
=
ref
()
const
temporaryName
=
ref
(
''
)
const
activeNames
=
ref
([
'1'
,
'2'
,
'3'
,
'4'
])
const
temporaryList
=
ref
([])
const
readerType
=
ref
(
4
)
const
type
=
ref
(
''
)
const
title
=
ref
()
const
pageNo
=
ref
(
1
)
const
power1
=
ref
()
const
pageSize
=
ref
(
10
)
const
power2
=
ref
()
const
total
=
ref
(
0
)
const
power3
=
ref
()
const
power4
=
ref
()
const
power5
=
ref
()
const
power6
=
ref
()
const
power7
=
ref
()
const
power8
=
ref
()
const
log
=
ref
(
''
)
const
errList
=
ref
([])
const
showErr
=
ref
(
false
)
const
lockReconnect
=
ref
(
false
)
const
state
=
reactive
({
const
state
=
reactive
({
url
:
{
url
:
{
getConfig
:
'/config/getConfig'
,
getTemporaryName
:
'/temporary/getTemporaryName'
,
getDevice
:
'/device/getDevice'
,
getSwitch
:
'/temporary/getSwitch'
,
openReader
:
'/rfid/openReader'
,
getPositionList
:
'/temporary/getPositionList'
,
updateDevice
:
'/device/updateDevice'
,
updateSwitch
:
'/temporary/updateSwitch'
,
removeDevice
:
'/device/removeDevice'
,
clearGoods
:
'/temporary/clearGoods'
,
saveDevice
:
'/device/saveDevice'
,
getPage
:
'/temporary/getPage'
,
updateConfig
:
'/config/updateConfig'
,
report
:
'/temporary/report'
,
getStoreCode
:
'/config/getStoreCode'
},
},
storeInfo
:
{},
storeInfo
:
{},
storeCode
:
''
,
storeCode
:
''
,
...
@@ -323,263 +101,155 @@ export default defineComponent({
...
@@ -323,263 +101,155 @@ export default defineComponent({
}
}
onBeforeUnmount
(()
=>
{
console
.
log
(
'A 组件,切换到 B 组件,A 组件消失时执行'
)
})
// websocket开始
const
getTableData
=
()
=>
{
let
websock
=
null
console
.
log
(
'刷新无单据数据'
)
function
initWebSocket
()
{
pageNo
.
value
=
1
// if (websock) {
getLogPage
()
// return
// }
websock
=
new
WebSocket
(
window
.
_CONFIG
[
'wsURL'
]
+
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
);
websock
.
onopen
=
websocketOnopen
;
websock
.
onerror
=
websocketOnerror
;
websock
.
onmessage
=
websocketOnmessage
;
websock
.
onclose
=
websocketClose
;
}
}
// Websoket连接成功事件
function
handleCurrentChange
(
val
)
{
const
websocketOnopen
=
(
res
)
=>
{
pageNo
.
value
=
val
ElMessage
.
success
(
'服务连接成功'
);
getLogPage
()
console
.
log
(
"WebSocket连接成功"
);
};
const
map
=
new
Map
()
const
map1
=
new
Map
()
// Websoket接收消息事件
const
websocketOnmessage
=
(
res
)
=>
{
let
message
=
JSON
.
parse
(
res
.
data
)
console
.
log
(
message
)
if
(
message
.
noticeType
==
0
||
message
.
noticeType
==
4
)
{
logData
.
value
=
''
if
(
message
.
noticeType
==
0
&&
message
.
noticeInfo
==
1
)
{
map1
.
set
(
message
.
stationId
+
'd'
,
'green'
)
}
else
if
((
message
.
noticeType
==
0
&&
message
.
noticeInfo
==
0
)
)
{
map1
.
set
(
message
.
stationId
+
'd'
,
''
)
}
if
(
message
.
noticeType
==
4
&&
message
.
noticeInfo
==
1
)
{
map1
.
set
(
message
.
stationId
+
'g'
,
'green'
)
}
else
if
((
message
.
noticeType
==
4
&&
message
.
noticeInfo
==
0
)
)
{
map1
.
set
(
message
.
stationId
+
'g'
,
''
)
}
let
str
=
'<div>【通道'
+
message
.
stationId
+
': '
+
'</div><div class='
+
(
map1
.
get
(
message
.
stationId
+
'd'
)
||
'red'
)
+
'></div><div>读写器</div><div class='
+
(
map1
.
get
(
message
.
stationId
+
'g'
)
||
'red'
)
+
'></div><div>GPIO</div>】'
map
.
set
(
message
.
stationId
,
str
)
const
sortedArr
=
Array
.
from
(
map
).
sort
((
a
,
b
)
=>
a
[
0
]
>
b
[
0
]
?
1
:
-
1
);
for
(
let
[
key
,
value
]
of
sortedArr
)
{
logData
.
value
+=
value
}
emit
(
'logChange'
,
logData
.
value
)
}
if
(
message
.
noticeType
==
2
)
{
if
(
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
isHide
)
return
let
stationType
=
message
.
stationType
let
noticeInfoList
=
JSON
.
parse
(
message
.
noticeInfo
)
let
newArr
=
noticeInfoList
.
map
(
v
=>
{
return
{...
v
,
stationType
:
stationType
}
})
let
channel
=
channelList
.
value
.
find
(
i
=>
i
.
stationId
==
message
.
stationId
)
channel
.
logData
=
[...
channel
.
logData
,
...
newArr
]
emit
(
'refresh'
)
}
if
(
message
.
noticeType
==
3
)
{
if
(
!
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
isHide
)
return
let
stationType
=
message
.
stationType
let
noticeInfoList
=
JSON
.
parse
(
message
.
noticeInfo
)
let
newArr
=
noticeInfoList
.
map
(
v
=>
{
return
{...
v
,
stationType
:
stationType
}
})
let
channel
=
channelList
.
value
.
find
(
i
=>
i
.
stationId
==
message
.
stationId
)
channel
.
logData
=
[...
channel
.
logData
,
...
newArr
]
let
obj
=
{}
channel
.
logData
=
channel
.
logData
.
reduce
((
item
,
next
)
=>
{
obj
[
next
.
epc
]
?
''
:
obj
[
next
.
epc
]
=
true
&&
item
.
push
(
next
)
return
item
},
[])
emit
(
'refresh'
)
}
if
(
!
[
0
,
2
,
3
,
4
].
includes
(
message
.
noticeType
))
{
let
channel
=
channelList
.
value
.
find
(
i
=>
i
.
stationId
==
message
.
stationId
)
channel
.
errNum
=
channel
.
errNum
+
1
errList
.
value
.
unshift
({
time
:
parseTime
(
new
Date
()),
content
:
message
.
noticeInfo
})
}
};
function
parseTime
(
date
)
{
var
hours
=
date
.
getHours
()
<
10
?
'0'
+
date
.
getHours
()
:
date
.
getHours
()
var
minutes
=
date
.
getMinutes
()
<
10
?
'0'
+
date
.
getMinutes
()
:
date
.
getMinutes
()
var
seconds
=
date
.
getSeconds
()
<
10
?
'0'
+
date
.
getSeconds
()
:
date
.
getSeconds
()
return
hours
+
':'
+
minutes
+
':'
+
seconds
}
}
// Websoket连接错误事件
const
websocketOnerror
=
(
res
)
=>
{
console
.
log
(
"WebSocket连接错误"
);
reconnect
()
};
// Websoket断开事件
const
websocketClose
=
(
res
)
=>
{
console
.
log
(
"WebSocket断开连接"
);
emit
(
'logChange'
,
logData
.
value
.
replaceAll
(
'green'
,
'red'
))
console
.
log
(
logData
.
value
)
reconnect
()
};
function
reconnect
()
{
if
(
lockReconnect
.
value
)
return
;
lockReconnect
.
value
=
true
;
//没连接上会一直重连,设置延迟避免请求过多
setTimeout
(()
=>
{
console
.
log
(
"尝试重连...,5秒一次"
);
initWebSocket
();
lockReconnect
.
value
=
false
;
},
5000
);
}
onBeforeUnmount
(()
=>
{
console
.
log
(
'A 组件,切换到 B 组件,A 组件消失时执行'
)
})
const
loadData
=
()
=>
{
const
loadData
=
()
=>
{
if
(
sessionStorage
.
getItem
(
'storeInfo'
))
{
if
(
sessionStorage
.
getItem
(
'storeInfo'
))
{
let
config
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
))
initPositionList
()
// 获取垛位
sysForm
.
value
=
{
getSwitch
()
// 获取无单据激活状态
id
:
config
.
id
,
getTemporaryName
()
// 获取单据号
storeCode
:
config
.
storeCode
,
getLogPage
()
serverIp
:
config
.
serverIp
,
serverPort
:
config
.
serverPort
,
isHide
:
config
.
isHide
}
channelList
.
value
=
[]
postAction
(
state
.
url
.
getDevice
,
{
storeCode
:
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
}).
then
(
res
=>
{
if
(
res
.
code
!==
99200
)
return
ElMessage
.
error
(
res
.
message
);
res
.
data
.
map
((
item
,
index
)
=>
{
channelList
.
value
.
push
(
Object
.
assign
({},
item
,
{
logData
:
[],
errNum
:
0
}))
})
activeTab
.
value
=
channelList
.
value
[
0
].
stationId
emit
(
'logChange'
,
"<div>【通道"
+
activeTab
.
value
+
": </div><div class=red></div><div>读写器</div><div class=red></div><div>GPIO</div>】"
)
initWebSocket
()
getAction
(
state
.
url
.
openReader
,
{
storeCode
:
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
}).
then
(
res
=>
{
})
})
}
else
{
}
else
{
getAction
(
state
.
url
.
getStoreCode
).
then
(
res
=>
{
ElMessage
.
error
(
'未获取到库房代码'
)
if
(
res
.
code
!==
99200
)
{
emit
(
'changeTab'
)
return
ElMessage
.
error
(
res
.
message
);
}
postAction
(
state
.
url
.
getConfig
,
{
storeCode
:
res
.
data
}).
then
(
res
=>
{
if
(
res
.
code
!==
99200
)
return
ElMessage
.
error
(
res
.
message
);
state
.
storeInfo
=
res
.
data
[
0
]
sessionStorage
.
setItem
(
'storeInfo'
,
JSON
.
stringify
(
state
.
storeInfo
))
loadData
()
})
})
}
}
}
}
function
clearData
()
{
const
initPositionList
=
()
=>
{
let
channel
=
channelList
.
value
.
find
(
i
=>
i
.
stationId
==
activeTab
.
value
)
let
storeCode
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
channel
.
logData
=
[]
postAction
(
state
.
url
.
getPositionList
,
{
storeCode
}).
then
(
res
=>
{
positionList
.
value
=
res
.
data
if
(
res
.
data
.
length
>
0
)
{
positionCode
.
value
=
res
.
data
[
0
].
positionCode
}
})
}
}
function
changeErr
()
{
const
getTemporaryName
=
()
=>
{
showErr
.
value
=
!
showErr
.
value
let
storeCode
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
console
.
log
(
showErr
.
value
)
postAction
(
state
.
url
.
getTemporaryName
,
{
storeCode
}).
then
(
res
=>
{
temporaryList
.
value
=
res
.
data
})
}
}
function
showChannelSetting
()
{
const
getSwitch
=
()
=>
{
postAction
(
state
.
url
.
getDevice
,
{
storeCode
:
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
,
stationId
:
activeTab
.
value
}).
then
(
res
=>
{
let
storeCode
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
if
(
res
.
code
!==
99200
)
return
ElMessage
.
error
(
res
.
message
);
postAction
(
state
.
url
.
getSwitch
,
{
storeCode
}).
then
(
res
=>
{
formData
.
value
=
res
.
data
[
0
]
type
.
value
=
res
.
data
.
temporaryType
readerType
.
value
=
res
.
data
[
0
].
readerType
title
.
value
=
activeTab
.
value
+
'号通道配置'
if
(
res
.
data
[
0
].
readerType
==
4
)
{
power1
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
0
]
power2
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
1
]
power3
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
2
]
power4
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
3
]
}
if
(
res
.
data
[
0
].
readerType
==
8
)
{
power1
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
0
]
power2
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
1
]
power3
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
2
]
power4
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
3
]
power5
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
4
]
power6
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
5
]
power7
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
6
]
power8
.
value
=
res
.
data
[
0
].
readerPower
.
split
(
','
)[
7
]
}
visible
.
value
=
true
})
})
}
}
function
changeType
(
formData
)
{
const
getLogPage
=
()
=>
{
if
(
formData
.
type
==
'IN'
)
{
let
storeCode
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
formData
.
type
=
'OUT'
postAction
(
state
.
url
.
getPage
,
{
storeCode
,
pageNo
:
pageNo
.
value
,
pageSize
:
pageSize
.
value
}).
then
(
res
=>
{
}
else
{
logData
.
value
=
res
.
data
.
records
formData
.
type
=
'IN'
total
.
value
=
res
.
data
.
totalRows
-
0
})
}
const
changeType
=
(
value
)
=>
{
let
storeCode
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
postAction
(
state
.
url
.
updateSwitch
,
{
storeCode
,
temporaryType
:
value
}).
then
(
res
=>
{
if
(
res
.
code
!==
99200
)
{
// 失败就报错, 并且状态回到原来的值
ElMessage
.
error
(
res
.
message
);
getSwitch
()
}
else
{
ElMessage
.
success
(
res
.
message
);
}
})
}
function
clearData
()
{
let
storeCode
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
if
(
type
.
value
==
'CANCEL'
)
{
return
ElMessage
.
error
(
'未激活状态下无法清空'
);
}
}
postAction
(
state
.
url
.
updateDevice
,
formData
).
then
(
res
=>
{
postAction
(
state
.
url
.
clearGoods
,
{
positionCode
:
positionCode
.
value
,
storeCode
,
temporaryName
:
temporaryName
.
value
,
type
:
type
.
value
}).
then
(
res
=>
{
if
(
res
.
code
!==
99200
)
return
ElMessage
.
error
(
res
.
message
);
if
(
res
.
code
!==
99200
)
return
ElMessage
.
error
(
res
.
message
);
ElMessage
.
success
(
res
.
message
)
getLogPage
(
)
})
})
}
}
function
handleSubmit
()
{
function
reportData
()
{
if
(
readerType
.
value
==
4
)
{
let
storeCode
=
JSON
.
parse
(
sessionStorage
.
getItem
(
'storeInfo'
)).
storeCode
formData
.
value
.
readerPower
=
power1
.
value
+
','
+
power2
.
value
+
','
+
power3
.
value
+
','
+
power4
.
value
if
(
type
.
value
==
'CANCEL'
)
{
}
return
ElMessage
.
error
(
'未激活状态下无法上报'
);
if
(
readerType
.
value
==
8
)
{
formData
.
value
.
readerPower
=
power1
.
value
+
','
+
power2
.
value
+
','
+
power3
.
value
+
','
+
power4
.
value
+
','
+
power5
.
value
+
','
+
power6
.
value
+
','
+
power7
.
value
+
','
+
power8
.
value
}
}
postAction
(
state
.
url
.
updateDevice
,
formData
.
value
).
then
(
res
=>
{
postAction
(
state
.
url
.
report
,
{
positionCode
:
positionCode
.
value
,
storeCode
,
temporaryName
:
temporaryName
.
value
,
type
:
type
.
value
}).
then
(
res
=>
{
if
(
res
.
code
!==
99200
)
return
ElMessage
.
error
(
res
.
message
);
if
(
res
.
code
!==
99200
)
return
ElMessage
.
error
(
res
.
message
);
ElMessage
.
success
(
res
.
message
)
getLogPage
()
formData
.
value
=
{}
visible
.
value
=
false
})
})
}
}
loadData
()
return
{
return
{
...
toRefs
(
state
),
...
toRefs
(
state
),
sysForm
,
positionCode
,
channelList
,
positionList
,
log
,
logData
,
formData
,
activeTab
,
readerType
,
activeNames
,
title
,
visible
,
power1
,
power2
,
power3
,
power4
,
power5
,
power6
,
power7
,
power8
,
errList
,
showErr
,
tableRowClassName
,
tableRowClassName
,
loadData
,
loadData
,
showChannelSetting
,
initPositionList
,
handleSubmit
,
getTemporaryName
,
getSwitch
,
clearData
,
clearData
,
changeErr
,
type
,
changeType
changeType
,
temporaryName
,
temporaryList
,
reportData
,
logData
,
getTableData
,
getLogPage
,
pageNo
,
pageSize
,
total
,
handleCurrentChange
}
}
},
},
})
})
</
script
>
</
script
>
<
style
lang=
"less"
>
<
style
lang=
"less"
>
.titleSelect
.el-input__inner
{
color
:
#fff
;
font-size
:
20px
;
font-weight
:
'bold'
;
font-family
:
'Times New Roman'
,
Times
,
serif
;
}
.el-input__wrapper
{
background-color
:
var
(
--color-primary
)
!important
;
margin-right
:
15px
;
}
.el-table
.warning-row
{
.el-table
.warning-row
{
--el-table-tr-bg-color
:
var
(
--el-color-warning-light-5
);
;
--el-table-tr-bg-color
:
var
(
--el-color-warning-light-5
);
}
}
...
...
src/views/RFID.vue
View file @
8d538069
...
@@ -349,7 +349,6 @@ export default defineComponent({
...
@@ -349,7 +349,6 @@ export default defineComponent({
// Websoket接收消息事件
// Websoket接收消息事件
const
websocketOnmessage
=
(
res
)
=>
{
const
websocketOnmessage
=
(
res
)
=>
{
let
message
=
JSON
.
parse
(
res
.
data
)
let
message
=
JSON
.
parse
(
res
.
data
)
console
.
log
(
message
)
if
(
message
.
noticeType
==
0
||
message
.
noticeType
==
4
)
{
if
(
message
.
noticeType
==
0
||
message
.
noticeType
==
4
)
{
logData
.
value
=
''
logData
.
value
=
''
if
(
message
.
noticeType
==
0
&&
message
.
noticeInfo
==
1
)
{
if
(
message
.
noticeType
==
0
&&
message
.
noticeInfo
==
1
)
{
...
@@ -401,6 +400,7 @@ export default defineComponent({
...
@@ -401,6 +400,7 @@ export default defineComponent({
let
channel
=
channelList
.
value
.
find
(
i
=>
i
.
stationId
==
message
.
stationId
)
let
channel
=
channelList
.
value
.
find
(
i
=>
i
.
stationId
==
message
.
stationId
)
channel
.
errNum
=
channel
.
errNum
+
1
channel
.
errNum
=
channel
.
errNum
+
1
errList
.
value
.
unshift
({
time
:
parseTime
(
new
Date
()),
content
:
message
.
noticeInfo
})
errList
.
value
.
unshift
({
time
:
parseTime
(
new
Date
()),
content
:
message
.
noticeInfo
})
emit
(
'errList'
,
errList
.
value
)
}
}
};
};
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论