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 437fc71d
authored
Mar 13, 2025
by
李乾广
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
热力数据重跑,聚类结果批量获取图片特征
1 parent
952664e7
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
234 additions
and
11 deletions
src/router/index.js
src/views/Main/Main.vue
src/views/SnapshotCluster/ClusterResult/ClusterResult.vue
src/views/hotRerun/hotRerun.vue
src/views/hotRerun/hotRerunApi.js
src/router/index.js
View file @
437fc71
...
@@ -17,6 +17,10 @@ const menuRoute = [
...
@@ -17,6 +17,10 @@ const menuRoute = [
path
:
'batchAnalysisRerun'
,
path
:
'batchAnalysisRerun'
,
component
:
()
=>
import
(
"@/views/batchAnalysisRerun/batchAnalysisRerun.vue"
),
component
:
()
=>
import
(
"@/views/batchAnalysisRerun/batchAnalysisRerun.vue"
),
},
},
{
path
:
'hotRerun'
,
component
:
()
=>
import
(
"@/views/hotRerun/hotRerun.vue"
),
},
{
{
path
:
'DataRepair'
,
path
:
'DataRepair'
,
component
:
()
=>
import
(
"@/views/DataRepair/DataRepair.vue"
),
component
:
()
=>
import
(
"@/views/DataRepair/DataRepair.vue"
),
...
@@ -123,6 +127,8 @@ const router = createRouter(
...
@@ -123,6 +127,8 @@ const router = createRouter(
)
)
// 全局路由守卫
// 全局路由守卫
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
// Cookies.set('atoken','c3ac0dd5-571d-4c4b-aa51-437b691ac013')
// Cookies.set('userrole_type','c3ac0dd5-571d-4c4b-2341-437b691ac013')
// 加密获取userType
// 加密获取userType
let
tokenArr
=
Cookies
.
get
(
"atoken"
).
split
(
''
)
let
tokenArr
=
Cookies
.
get
(
"atoken"
).
split
(
''
)
let
tokenArr1
=
Cookies
.
get
(
"atoken"
).
split
(
'-'
)
let
tokenArr1
=
Cookies
.
get
(
"atoken"
).
split
(
'-'
)
...
...
src/views/Main/Main.vue
View file @
437fc71
...
@@ -121,6 +121,11 @@
...
@@ -121,6 +121,11 @@
<span
style=
"padding: 0 5px"
>
接待批次重跑
</span>
<span
style=
"padding: 0 5px"
>
接待批次重跑
</span>
</div>
</div>
</a-menu-item>
</a-menu-item>
<a-menu-item
:key=
"'/Main/hotRerun'"
>
<div
class=
"flex-vertical-center"
>
<span
style=
"padding: 0 5px"
>
热力数据重跑
</span>
</div>
</a-menu-item>
<a-menu-item
:key=
"'/Main/DataRepair'"
>
<a-menu-item
:key=
"'/Main/DataRepair'"
>
<div
class=
"flex-vertical-center"
>
<div
class=
"flex-vertical-center"
>
<!-- <img :src="require('./Icons/2.svg')" style="height: auto;width:20px"/> -->
<!-- <img :src="require('./Icons/2.svg')" style="height: auto;width:20px"/> -->
...
...
src/views/SnapshotCluster/ClusterResult/ClusterResult.vue
View file @
437fc71
...
@@ -180,6 +180,9 @@
...
@@ -180,6 +180,9 @@
<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=
"addOneCaptureData"
>
添加抓拍记录
</a-button>
</a-form-item>
-->
<a-form-item
style=
"padding: 0px 5px;border: 1px solid #ccc;border-radius: 6px;"
>
<a-form-item
style=
"padding: 0px 5px;border: 1px solid #ccc;border-radius: 6px;"
>
<a-button
type=
"primary"
@
click=
"handleMutipleOperation"
>
{{
mutipleOperationText
}}
</a-button>
<a-button
type=
"primary"
@
click=
"handleMutipleOperation"
>
{{
mutipleOperationText
}}
</a-button>
<i
class=
"el-icon-arrow-right"
style=
"margin: 0px 10px;"
></i>
<i
class=
"el-icon-arrow-right"
style=
"margin: 0px 10px;"
></i>
...
@@ -227,6 +230,7 @@
...
@@ -227,6 +230,7 @@
<!--
<span
class=
"expandWord"
@
click=
'updatePersonInfoByGroup(person)'
>
类型修正
</span>
-->
<!--
<span
class=
"expandWord"
@
click=
'updatePersonInfoByGroup(person)'
>
类型修正
</span>
-->
<span
class=
"expandWord"
@
click=
'uploadGroupData(person)'
>
上传数据
</span>
<span
class=
"expandWord"
@
click=
'uploadGroupData(person)'
>
上传数据
</span>
<span
class=
"expandWord"
@
click=
'searchPersonInfoByGroup(person)'
>
搜索
</span>
<span
class=
"expandWord"
@
click=
'searchPersonInfoByGroup(person)'
>
搜索
</span>
<!--
<span
class=
"expandWord"
@
click=
'searchPersonInfoByGroup(person)'
>
添加
</span>
-->
<el-checkbox
class=
"checkBox"
v-model=
"person.checked"
@
change=
'checkChange(person)'
></el-checkbox>
<el-checkbox
class=
"checkBox"
v-model=
"person.checked"
@
change=
'checkChange(person)'
></el-checkbox>
人id:
{{
' '
+
person
.
person_unid
}}
人id:
{{
' '
+
person
.
person_unid
}}
...
@@ -239,7 +243,7 @@
...
@@ -239,7 +243,7 @@
<div
<div
style=
"margin: 0 5px"
style=
"margin: 0 5px"
:class=
"[(currentItemId==item.id)?'actived':'', isSelectedPerson(item.id)?'actived-red':'']"
:class=
"[(currentItemId==item.id)?'actived':'', isSelectedPerson(item.id)?'actived-red':'']"
@
click=
"handleClick(item, $event)"
@
click=
"handleClick(item, $event
,person.perrsonList
)"
>
>
<div
style=
""
>
<div
style=
""
>
<span
@
click=
"downloadTrajectoryFile(item.track_url)"
<span
@
click=
"downloadTrajectoryFile(item.track_url)"
...
@@ -1025,12 +1029,12 @@ export default {
...
@@ -1025,12 +1029,12 @@ export default {
)
)
}
}
// 查询小平台单个图片
// 查询小平台单个图片
const
getDataSourcesImg
=
(
unid
)
=>
{
const
getDataSourcesImg
=
(
unid
s
)
=>
{
console
.
log
(
'getDataSourcesImg'
,
unid
)
console
.
log
(
'getDataSourcesImg'
,
unid
s
)
clusterResultApi
.
operateGetPics
({
unids
:
[
unid
]
}).
then
((
r
)
=>
{})
clusterResultApi
.
operateGetPics
({
unids
:
unids
}).
then
((
r
)
=>
{})
setTimeout
(()
=>
{
setTimeout
(()
=>
{
confirmSearch
()
confirmSearch
()
},
2
000
)
},
3
000
)
}
}
// 添加人员库
// 添加人员库
const
personnelPoolRef
=
ref
();
const
personnelPoolRef
=
ref
();
...
@@ -1111,13 +1115,25 @@ export default {
...
@@ -1111,13 +1115,25 @@ export default {
const
downloadTrajectoryFile
=
function
(
url
){
const
downloadTrajectoryFile
=
function
(
url
){
window
.
open
(
url
)
window
.
open
(
url
)
}
}
const
handleClick
=
function
(
data
,
event
){
const
handleClick
=
function
(
data
,
event
,
perrsonList
){
console
.
log
(
'handleClick'
,
data
,
event
)
// console.log('handleClick', data, event,perrsonList)
console
.
log
(
'dataSources'
,
dataSources
.
value
,
data
)
// console.log('dataSources',dataSources.value,data)
if
(
dataSources
.
value
==
1
&&!
data
.
picture_url
){
if
(
dataSources
.
value
==
1
){
// 小平台且没有图
// 小平台遍历该聚类,
getDataSourcesImg
(
data
.
unid
)
let
unids
=
[]
for
(
let
i
=
0
;
i
<
perrsonList
.
length
;
i
++
){
if
(
!
perrsonList
[
i
].
picture_url
){
unids
.
push
(
perrsonList
[
i
].
unid
)
}
}
if
(
unids
.
length
>
0
){
// 小平台且没有图
getDataSourcesImg
(
unids
)
}
}
}
// if(dataSources.value==1&&!data.picture_url){
// getDataSourcesImg([data.unid])
// }
// 多选。只有设置为多选状态的组,才可以选中
// 多选。只有设置为多选状态的组,才可以选中
if
(
isMultipleOperation
.
value
)
{
if
(
isMultipleOperation
.
value
)
{
// 如果已选中,则取消。若未选中,则增加
// 如果已选中,则取消。若未选中,则增加
...
...
src/views/hotRerun/hotRerun.vue
0 → 100644
View file @
437fc71
<
template
>
<div
v-loading=
"submitLoading"
>
<a-form
class=
"data-return-form"
:model=
"queryForm"
layout=
"inline"
:label-col=
"
{ style: { width: '70px' } }">
<a-form-item
label=
"集团:"
>
<a-select
v-model:value=
"queryForm.account_id"
style=
"width: 280px"
:options=
"accountList"
@
change=
"onAccountChange"
optionFilterProp=
"label"
show-search
>
</a-select>
</a-form-item>
<a-form-item
label=
"广场:"
>
<a-select
v-model:value=
"queryForm.plaza_id"
style=
"width: 280px"
:options=
"plazaList"
optionFilterProp=
"label"
show-search
>
</a-select>
</a-form-item>
<a-form-item
label=
"开始日期:"
>
<a-date-picker
v-model:value=
"queryForm.startDate"
/>
</a-form-item>
<a-form-item
label=
"结束日期:"
>
<a-date-picker
v-model:value=
"queryForm.endDate"
/>
</a-form-item>
<a-form-item>
<a-button
type=
"primary"
@
click=
"confirmSearch"
>
开始
</a-button>
</a-form-item>
</a-form>
<!--新的日志-->
<div
class=
"card-container"
>
<a-card
title=
"热力数据重跑结果"
style=
"width: 600px"
>
<el-row
v-for=
"(item,index) in msgLogList"
:key=
"index"
style=
"padding: 2px 0;"
>
<el-col
:span=
"8"
>
{{
item
.
time
}}
</el-col>
<el-col
:span=
"16"
>
热力数据重跑任务已提交,正在重跑中...
</el-col>
</el-row>
</a-card>
</div>
</div>
</
template
>
<
script
>
import
{
reactive
,
ref
,
toRaw
}
from
'vue'
import
moment
from
'moment'
import
{
ElMessage
}
from
'element-plus'
import
snapshotRecordApi
from
'@/views/SnapshotCluster/SnapshotRecord/SnapshotRecordApi'
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
{
formatDate
}
from
'@/PublicUtil/PublicUtil'
import
hotRerunApi
from
'@/views/hotRerun/hotRerunApi'
export
default
{
components
:
{
VNodes
:
(
_
,
{
attrs
})
=>
{
return
attrs
.
vnodes
},
},
setup
()
{
const
accountList
=
ref
([])
const
plazaList
=
ref
([])
const
queryForm
=
reactive
({
account_id
:
''
,
plaza_id
:
''
,
startDate
:
moment
(
moment
().
format
(
'YYYY-MM-DD'
),
'YYYY-MM-DD'
),
endDate
:
moment
(
moment
().
format
(
'YYYY-MM-DD'
),
'YYYY-MM-DD'
),
})
const
onAccountChange
=
function
()
{
getPlazaList
()
}
const
getPlazaList
=
function
()
{
queryForm
.
plaza_id
=
''
plazaList
.
value
=
[]
snapshotRecordApi
.
getPlazaList
({
account_id
:
queryForm
.
account_id
}).
then
(
(
r
)
=>
{
if
(
isArray
(
r
))
{
for
(
const
item
of
r
)
{
plazaList
.
value
.
push
({
value
:
item
.
id
,
label
:
item
.
name
,
})
}
}
}
)
}
const
getAccountList
=
function
()
{
queryForm
.
account_id
=
''
accountList
.
value
=
[]
snapshotRecordApi
.
getAccountList
().
then
(
(
r
)
=>
{
if
(
isArray
(
r
))
{
for
(
const
item
of
r
)
{
accountList
.
value
.
push
({
value
:
item
.
id
,
label
:
item
.
name
,
})
}
}
}
)
}
// 新需求:数据重跑
const
msgLogList
=
ref
([])
const
submitLoading
=
ref
(
false
)
const
confirmSearch
=
function
()
{
if
(
queryForm
.
account_id
==
''
)
{
ElMessage
({
message
:
`请选择集团`
,
type
:
'error'
})
return
}
if
(
queryForm
.
plaza_id
==
''
)
{
ElMessage
({
message
:
`请选择广场`
,
type
:
'error'
})
return
}
msgLogList
.
value
=
[]
const
rawData
=
toRaw
(
queryForm
)
const
params
=
{
mallId
:
queryForm
.
plaza_id
,
startDate
:
formatDate
(
rawData
.
startDate
),
endDate
:
formatDate
(
rawData
.
endDate
),
}
submitLoading
.
value
=
true
hotRerunApi
.
getResult
(
params
).
then
(
(
r
)
=>
{
console
.
log
(
'getResult'
,
r
)
submitLoading
.
value
=
false
if
(
r
.
code
==
200
)
{
msgLogList
.
value
.
push
({
time
:
moment
().
format
(
'YYYY-MM-DD HH:mm:ss'
)})
}
else
{
ElMessage
({
message
:
r
.
msg
||
'提交失败'
,
type
:
'error'
})
}
}
)
}
const
__main
=
function
()
{
getAccountList
()
}
__main
()
return
{
accountList
,
plazaList
,
queryForm
,
onAccountChange
,
confirmSearch
,
msgLogList
,
submitLoading
,
}
}
}
</
script
>
<
style
lang=
"less"
scoped
>
.result-wrapper-2
{
width
:
50%
;
min-width
:
600px
;
border-radius
:
4px
;
margin
:
20px
auto
0
;
position
:
relative
;
overflow
:
auto
;
}
.card-container
{
display
:
flex
;
justify-content
:
center
;
/deep/.ant-card-body
{
height
:
370px
;
}
}
.data-return-form
{
/deep/.ant-form-item
{
margin-bottom
:
10px
;
}
}
</
style
>
\ No newline at end of file
\ No newline at end of file
src/views/hotRerun/hotRerunApi.js
0 → 100644
View file @
437fc71
import
axiosInstance
from
"@/Request/PublicAxiosInstance"
class
HotRerunApi
{
getResult
(
data
)
{
return
axiosInstance
.
request
(
{
method
:
'GET'
,
url
:
`/heatMap/reCall`
,
params
:
data
}
)
}
}
const
hotRerunApi
=
new
HotRerunApi
()
export
default
hotRerunApi
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