Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
罗鑫霖
/
vion-tools
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit dd1ec57f
authored
Nov 14, 2025
by
陈岩
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
feat: 抓拍修正
1 parent
14c2ded6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
201 additions
and
6 deletions
public/config.js
src/views/SnapshotCluster/ClusterResult/ClusterResult.vue
src/views/SnapshotCluster/ClusterResult/ClusterResultApi.js
src/views/SnapshotCluster/ClusterResult/PersonClusterEditor.vue
src/views/SnapshotCluster/ClusterResult/PersonGroupDialog.vue
vue.config.js
public/config.js
View file @
dd1ec57
window
.
_serverHost
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'https://
store.keliuyun
.com/'
:
window
.
location
.
host
window
.
_serverHost
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'https://
wenan-poc.efivestar
.com/'
:
window
.
location
.
host
window
.
_baseUrl
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'https://
store.keliuyun
.com/tool/'
:
`
${
window
.
location
.
origin
}
/btool/`
window
.
_baseUrl
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'https://
wenan-poc.efivestar
.com/tool/'
:
`
${
window
.
location
.
origin
}
/btool/`
window
.
_reportUrl
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'https://
store.keliuyun
.com/report/'
:
`
${
window
.
location
.
origin
}
/report/`
window
.
_reportUrl
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'https://
wenan-poc.efivestar
.com/report/'
:
`
${
window
.
location
.
origin
}
/report/`
window
.
_baseImgUrl
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'https://
store.keliuyun
.com/images/'
:
`
${
window
.
location
.
origin
}
/images/`
window
.
_baseImgUrl
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'https://
wenan-poc.efivestar
.com/images/'
:
`
${
window
.
location
.
origin
}
/images/`
window
.
_matchHost
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'http://192.168.1.64:6689/'
:
window
.
location
.
host
window
.
_matchHost
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
'http://192.168.1.64:6689/'
:
window
.
location
.
host
window
.
_socketUrl
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
`wss://
${
window
.
_serverHost
}
/btool/`
:
`wss://
${
window
.
_serverHost
}
/btool/`
window
.
_socketUrl
=
[
'localhost'
,
'192.168.1.120'
].
includes
(
window
.
location
.
hostname
)
?
`wss://
${
window
.
_serverHost
}
/btool/`
:
`wss://
${
window
.
_serverHost
}
/btool/`
const
log
=
console
.
log
.
bind
(
console
)
const
log
=
console
.
log
.
bind
(
console
)
\ No newline at end of file
\ No newline at end of file
src/views/SnapshotCluster/ClusterResult/ClusterResult.vue
View file @
dd1ec57
...
@@ -192,6 +192,10 @@
...
@@ -192,6 +192,10 @@
<a-form-item
style=
"padding: 5px 0"
>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"updatePersonInfoByGroup"
>
类型修正
</a-button>
<a-button
type=
"primary"
@
click=
"updatePersonInfoByGroup"
>
类型修正
</a-button>
</a-form-item>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"updatePersonInfoByCluster"
>
抓拍修正
</a-button>
</a-form-item>
<!--
<a-form-item
style=
"padding: 5px 0"
>
<!--
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"addOneCaptureData"
>
添加抓拍记录
</a-button>
<a-button
type=
"primary"
@
click=
"addOneCaptureData"
>
添加抓拍记录
</a-button>
</a-form-item>
-->
</a-form-item>
-->
...
@@ -320,6 +324,9 @@
...
@@ -320,6 +324,9 @@
<singleImgComparisonDialog
ref=
"singleImgComparisonRef"
></singleImgComparisonDialog>
<singleImgComparisonDialog
ref=
"singleImgComparisonRef"
></singleImgComparisonDialog>
<PersonGroupEditor
ref=
'personGroupEditorRef'
@
refresh=
"handleEditorRefresh"
/>
<PersonGroupEditor
ref=
'personGroupEditorRef'
@
refresh=
"handleEditorRefresh"
/>
<!-- 抓拍修正 -->
<PersonClusterEditor
:person-type-list=
"personTypeList"
ref=
'personClusterEditorRef'
@
refresh=
"handleEditorRefresh"
/>
<UploadGroupDataEditor
ref=
'uploadGroupDataEditorRef'
@
refresh=
"handleEditorRefresh"
/>
<UploadGroupDataEditor
ref=
'uploadGroupDataEditorRef'
@
refresh=
"handleEditorRefresh"
/>
<PersonGroupMover
ref=
'personGroupMoverRef'
:data-params=
"currentSearchCondition"
:data-list=
"dataList"
@
refresh=
"handleRefresh"
/>
<PersonGroupMover
ref=
'personGroupMoverRef'
:data-params=
"currentSearchCondition"
:data-list=
"dataList"
@
refresh=
"handleRefresh"
/>
<AddPersonnelPool
ref=
'personnelPoolRef'
:data-params=
"currentSearchCondition"
@
refresh=
"handleRefresh"
/>
<AddPersonnelPool
ref=
'personnelPoolRef'
:data-params=
"currentSearchCondition"
@
refresh=
"handleRefresh"
/>
...
@@ -341,6 +348,8 @@ import PersonnelDialog from "../../ComparisonCapturedPictures/PersonnelDialog.vu
...
@@ -341,6 +348,8 @@ import PersonnelDialog from "../../ComparisonCapturedPictures/PersonnelDialog.vu
import
DetailDialogComparison
from
"../../ComparisonCapturedPictures/DetailDialogComparisonNew.vue"
;
import
DetailDialogComparison
from
"../../ComparisonCapturedPictures/DetailDialogComparisonNew.vue"
;
import
singleImgComparisonDialog
from
"../singleImgComparisonDialog.vue"
;
import
singleImgComparisonDialog
from
"../singleImgComparisonDialog.vue"
;
import
PersonGroupEditor
from
"./PersonGroupEditor.vue"
;
import
PersonGroupEditor
from
"./PersonGroupEditor.vue"
;
import
PersonClusterEditor
from
"./PersonClusterEditor.vue"
;
import
UploadGroupDataEditor
from
"./UploadGroupDataEditor.vue"
;
import
UploadGroupDataEditor
from
"./UploadGroupDataEditor.vue"
;
import
PersonGroupDialog
from
"./PersonGroupDialog.vue"
;
import
PersonGroupDialog
from
"./PersonGroupDialog.vue"
;
import
PersonGroupMover
from
"./PersonGroupMover.vue"
;
import
PersonGroupMover
from
"./PersonGroupMover.vue"
;
...
@@ -352,6 +361,7 @@ export default {
...
@@ -352,6 +361,7 @@ export default {
components
:{
components
:{
AddEditSnapshotClusterDialog
,
AddEditSnapshotClusterDialog
,
PersonGroupEditor
,
PersonGroupEditor
,
PersonClusterEditor
,
UploadGroupDataEditor
,
UploadGroupDataEditor
,
PersonGroupDialog
,
PersonGroupDialog
,
PersonGroupMover
,
PersonGroupMover
,
...
@@ -989,6 +999,23 @@ export default {
...
@@ -989,6 +999,23 @@ export default {
}
}
}
}
// 人员抓拍修正
const
personClusterEditorRef
=
ref
();
// const isShowGroupEditor = ref(false)
const
updatePersonInfoByCluster
=
function
()
{
if
(
currentItemId
.
value
)
{
personClusterEditorRef
.
value
?.
initDialog
(
currobj
.
value
);
}
else
{
ElMessage
(
{
message
:
`请选择聚类图片`
,
type
:
'warning'
}
)
return
}
}
// 上传数据
// 上传数据
const
uploadGroupDataEditorRef
=
ref
();
const
uploadGroupDataEditorRef
=
ref
();
const
uploadGroupData
=
function
(
data
)
{
const
uploadGroupData
=
function
(
data
)
{
...
@@ -1469,6 +1496,7 @@ export default {
...
@@ -1469,6 +1496,7 @@ export default {
formatGender
,
formatGender
,
downloadTrajectoryFile
,
downloadTrajectoryFile
,
clickSearch
,
clickSearch
,
updatePersonInfoByCluster
,
handleRefresh
,
handleRefresh
,
handleEditorRefresh
,
handleEditorRefresh
,
currentSearchCondition
,
currentSearchCondition
,
...
@@ -1477,6 +1505,7 @@ export default {
...
@@ -1477,6 +1505,7 @@ export default {
DetailDialogRef
,
DetailDialogRef
,
personnelDialogRef
,
personnelDialogRef
,
personGroupDialogRef
,
personGroupDialogRef
,
personClusterEditorRef
,
personGroupEditorRef
,
personGroupEditorRef
,
uploadGroupDataEditorRef
,
uploadGroupDataEditorRef
,
DetailDialogComparisonRef
,
DetailDialogComparisonRef
,
...
...
src/views/SnapshotCluster/ClusterResult/ClusterResultApi.js
View file @
dd1ec57
...
@@ -172,6 +172,18 @@ class ClusterResultApi {
...
@@ -172,6 +172,18 @@ class ClusterResultApi {
}
}
)
)
}
}
// 人员抓拍修正
updateClusterPerson
(
data
)
{
return
axiosInstance
.
request
(
{
method
:
'POST'
,
url
:
`/faceRecognitions/updateRecordOrg`
,
data
:
data
}
)
}
// 多选删除
// 多选删除
deletePerson
(
data
)
{
deletePerson
(
data
)
{
return
axiosInstance
.
request
(
return
axiosInstance
.
request
(
...
@@ -232,6 +244,15 @@ class ClusterResultApi {
...
@@ -232,6 +244,15 @@ class ClusterResultApi {
}
}
)
)
}
}
getChannelSerielNumApi
()
{
return
axiosInstance
.
request
(
{
method
:
'GET'
,
url
:
`/faceRecognitions/getAllChannel`
,
}
)
}
//
// 搜索左侧图片列表
// 搜索左侧图片列表
getAllfacePic
(
data
)
{
getAllfacePic
(
data
)
{
return
axiosInstance
.
request
(
return
axiosInstance
.
request
(
...
...
src/views/SnapshotCluster/ClusterResult/PersonClusterEditor.vue
0 → 100644
View file @
dd1ec57
<
template
>
<a-modal
title=
"抓拍修正"
v-if=
"isVisible"
v-model:visible=
"isVisible"
width=
"400px"
height=
"50%"
class=
"detail-modal"
>
<a-form
:model=
"formData"
>
<a-form-item
label=
"年龄"
>
<a-input-number
v-model:value=
"formData.age"
:min=
"1"
:max=
"200"
style=
"width: 100%"
/>
</a-form-item>
<a-form-item
label=
"性别"
>
<a-select
v-model:value=
"formData.gender"
:allowClear=
"true"
>
<a-select-option
:value=
"0"
>
女
</a-select-option>
<a-select-option
:value=
"1"
>
男
</a-select-option>
</a-select>
</a-form-item>
<a-form-item
label=
"方向"
>
<a-select
v-model:value=
"formData.direction"
>
<a-select-option
:value=
"1"
>
进
</a-select-option>
<a-select-option
:value=
"-1"
>
出
</a-select-option>
<a-select-option
:value=
"0"
>
横穿
</a-select-option>
<a-select-option
:value=
"2"
>
过店
</a-select-option>
<a-select-option
:value=
"4"
>
从左到右
</a-select-option>
<a-select-option
:value=
"5"
>
从右到左
</a-select-option>
<a-select-option
:value=
"7"
>
关注
</a-select-option>
<a-select-option
:value=
"8"
>
触达
</a-select-option>
</a-select>
</a-form-item>
<a-form-item
label=
"类型"
>
<a-select
v-model:value=
"formData.type"
:options=
"personTypeList"
optionFilterProp=
"label"
:allowClear=
"true"
></a-select>
</a-form-item>
<a-form-item
label=
"通道"
>
<a-select
v-model:value=
"formData.channelSerialnum"
:allowClear=
"true"
show-search
>
<a-select-option
v-for=
"item in serielList"
:key=
"item.serialnum"
:value=
"item.serialnum"
>
{{
item
.
serialnum
}}
</a-select-option>
</a-select>
</a-form-item>
</a-form>
<template
#
footer
>
<a-button
type=
"primary"
@
click=
"onSave"
>
保存
</a-button>
<a-button
@
click=
"onCancel"
>
关闭
</a-button>
</
template
>
</a-modal>
</template>
<
script
>
import
{
ref
}
from
"vue"
;
import
clusterResultApi
from
"@/views/SnapshotCluster/ClusterResult/ClusterResultApi"
;
import
{
ElMessage
}
from
"element-plus"
;
export
default
{
name
:
"PersonClusterEditor"
,
props
:
{
personTypeList
:
{
type
:
Array
,
default
:
()
=>
[],
},
},
setup
(
props
,
{
emit
})
{
const
isVisible
=
ref
(
false
);
// 表单
const
formData
=
ref
({});
const
initDialog
=
(
data
)
=>
{
console
.
log
(
"initDialog"
,
data
);
getChannelSerielList
()
formData
.
value
=
{
mallId
:
data
.
mall_id
,
age
:
data
.
age
,
gender
:
data
.
gender
,
type
:
data
.
person_type
,
countdate
:
data
.
counttime
,
direction
:
data
.
direction
,
channelSerialnum
:
data
.
channel_serialnum
,
unid
:
data
.
person_unid
,
};
isVisible
.
value
=
true
;
};
const
serielList
=
ref
([])
const
getChannelSerielList
=
()
=>
{
clusterResultApi
.
getChannelSerielNumApi
().
then
((
r
)
=>
{
if
(
r
.
msg_code
==
200
)
{
serielList
.
value
=
r
.
data
||
[]
}
else
{
ElMessage
({
message
:
`获取通道列表失败`
,
type
:
"error"
,
});
}
});
};
const
onCancel
=
()
=>
{
isVisible
.
value
=
false
;
};
const
onSave
=
()
=>
{
clusterResultApi
.
updateClusterPerson
(
formData
.
value
).
then
((
r
)
=>
{
if
(
r
.
msg_code
==
200
)
{
ElMessage
({
message
:
`保存成功`
,
type
:
"success"
,
});
// 刷新列表
emit
(
"refresh"
);
onCancel
();
}
else
{
ElMessage
({
message
:
`保存失败`
,
type
:
"error"
,
});
}
});
};
return
{
isVisible
,
formData
,
onSave
,
serielList
,
onCancel
,
initDialog
};
},
};
</
script
>
<
style
lang=
"less"
scoped
></
style
>
src/views/SnapshotCluster/ClusterResult/PersonGroupDialog.vue
View file @
dd1ec57
...
@@ -265,10 +265,11 @@ export default {
...
@@ -265,10 +265,11 @@ export default {
addGroupLoading
.
value
=
false
addGroupLoading
.
value
=
false
})
})
}
else
{
}
else
{
// 新增处理
const
param
=
{
const
param
=
{
dstPersonUnid
:
personUnid
.
value
,
dstPersonUnid
:
personUnid
.
value
,
srcPersonUnid
,
srcPersonUnid
,
count
d
ate
:
formData
.
value
.
date
,
count
D
ate
:
formData
.
value
.
date
,
}
}
clusterResultApi
.
updateRecognitionApi
(
param
).
then
((
r
)
=>
{
clusterResultApi
.
updateRecognitionApi
(
param
).
then
((
r
)
=>
{
if
(
r
.
msg_code
===
200
)
{
if
(
r
.
msg_code
===
200
)
{
...
...
vue.config.js
View file @
dd1ec57
...
@@ -70,7 +70,7 @@ module.exports = {
...
@@ -70,7 +70,7 @@ module.exports = {
}
}
},
},
'/'
:
{
'/'
:
{
target
:
'https://
store.keliuyun
.com/btool/'
,
target
:
'https://
wenan-poc.efivestar
.com/btool/'
,
// target: 'http://117.133.143.116:33333/btool/',
// target: 'http://117.133.143.116:33333/btool/',
changeOrigin
:
true
changeOrigin
:
true
},
},
...
...
Write
Preview
Markdown
is supported
Attach a file
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 post a comment