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 395de638
authored
Jan 12, 2023
by
李君
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
6.2
1 parent
4c6832e2
Show whitespace changes
Inline
Side-by-side
Showing
22 changed files
with
205 additions
and
1255 deletions
package-lock.json
public/config.js
src/App.vue
src/Request/PublicAxiosInstance.js
src/router/index.js
src/views/ComparisonCapturedPictures/ComparisonCapturedPictures.vue
src/views/ComparisonCapturedPictures/DetailDialog.vue
src/views/ComparisonCapturedPictures/DetailDialogComparison.vue
src/views/DataRerun/DataRerun.vue
src/views/FeatureComparisonVerification/FeatureComparisonVerification.vue
src/views/FeatureComparisonVerification/api.js
src/views/FeatureLibraryRebuild/FeatureLibraryRebuild.vue
src/views/FeatureReExtract/FeatureReExtract.vue
src/views/Main/Main.vue
src/views/PeopleReContrast/PeopleReContrast.vue
src/views/SnapshotCluster/ClusterResult/ClusterResult.less
src/views/SnapshotCluster/ClusterResult/ClusterResult.vue
src/views/SnapshotCluster/ClusterResult/ClusterResultApi.js
src/views/SnapshotCluster/SnapshotCluster.vue
src/views/SnapshotCluster/SnapshotRecord/SnapshotRecord.less
src/views/SnapshotCluster/SnapshotRecord/SnapshotRecord.vue
vue.config.js
package-lock.json
View file @
395de63
...
@@ -1743,87 +1743,6 @@
...
@@ -1743,87 +1743,6 @@
"webpack-chain"
:
"^6.4.0"
,
"webpack-chain"
:
"^6.4.0"
,
"webpack-dev-server"
:
"^3.11.0"
,
"webpack-dev-server"
:
"^3.11.0"
,
"webpack-merge"
:
"^4.2.2"
"webpack-merge"
:
"^4.2.2"
},
"dependencies"
:
{
"ansi-styles"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-convert"
:
"^2.0.1"
}
},
"chalk"
:
{
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
"integrity"
:
"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
}
},
"color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-name"
:
"~1.1.4"
}
},
"color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
,
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
,
"dev"
:
true
,
"optional"
:
true
},
"has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"optional"
:
true
},
"loader-utils"
:
{
"version"
:
"2.0.2"
,
"resolved"
:
"https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz"
,
"integrity"
:
"sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"big.js"
:
"^5.2.2"
,
"emojis-list"
:
"^3.0.0"
,
"json5"
:
"^2.1.2"
}
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
},
"vue-loader-v16"
:
{
"version"
:
"npm:vue-loader@16.8.3"
,
"resolved"
:
"https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz"
,
"integrity"
:
"sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"chalk"
:
"^4.1.0"
,
"hash-sum"
:
"^2.0.0"
,
"loader-utils"
:
"^2.0.0"
}
}
}
}
},
},
"@vue/cli-shared-utils"
:
{
"@vue/cli-shared-utils"
:
{
...
@@ -11579,6 +11498,87 @@
...
@@ -11579,6 +11498,87 @@
}
}
}
}
},
},
"vue-loader-v16"
:
{
"version"
:
"npm:vue-loader@16.8.3"
,
"resolved"
:
"https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz"
,
"integrity"
:
"sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"chalk"
:
"^4.1.0"
,
"hash-sum"
:
"^2.0.0"
,
"loader-utils"
:
"^2.0.0"
},
"dependencies"
:
{
"ansi-styles"
:
{
"version"
:
"4.3.0"
,
"resolved"
:
"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
,
"integrity"
:
"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-convert"
:
"^2.0.1"
}
},
"chalk"
:
{
"version"
:
"4.1.2"
,
"resolved"
:
"https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
,
"integrity"
:
"sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"ansi-styles"
:
"^4.1.0"
,
"supports-color"
:
"^7.1.0"
}
},
"color-convert"
:
{
"version"
:
"2.0.1"
,
"resolved"
:
"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
,
"integrity"
:
"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"color-name"
:
"~1.1.4"
}
},
"color-name"
:
{
"version"
:
"1.1.4"
,
"resolved"
:
"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
,
"integrity"
:
"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
,
"dev"
:
true
,
"optional"
:
true
},
"has-flag"
:
{
"version"
:
"4.0.0"
,
"resolved"
:
"https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
,
"integrity"
:
"sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
,
"dev"
:
true
,
"optional"
:
true
},
"loader-utils"
:
{
"version"
:
"2.0.4"
,
"resolved"
:
"https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz"
,
"integrity"
:
"sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"big.js"
:
"^5.2.2"
,
"emojis-list"
:
"^3.0.0"
,
"json5"
:
"^2.1.2"
}
},
"supports-color"
:
{
"version"
:
"7.2.0"
,
"resolved"
:
"https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
,
"integrity"
:
"sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="
,
"dev"
:
true
,
"optional"
:
true
,
"requires"
:
{
"has-flag"
:
"^4.0.0"
}
}
}
},
"vue-router"
:
{
"vue-router"
:
{
"version"
:
"4.0.8"
,
"version"
:
"4.0.8"
,
"resolved"
:
"https://registry.npmjs.org/vue-router/-/vue-router-4.0.8.tgz"
,
"resolved"
:
"https://registry.npmjs.org/vue-router/-/vue-router-4.0.8.tgz"
,
...
...
public/config.js
View file @
395de63
window
.
_serverHost
=
[
'localhost'
,
'192.168.1.16
5'
].
includes
(
window
.
location
.
hostname
)
?
'36.112.68.214:33333
'
:
window
.
location
.
host
window
.
_serverHost
=
[
'localhost'
,
'192.168.1.16
8'
].
includes
(
window
.
location
.
hostname
)
?
'36.112.68.214:9999
'
:
window
.
location
.
host
window
.
_baseUrl
=
[
'localhost'
,
'192.168.1.16
5'
].
includes
(
window
.
location
.
hostname
)
?
'http://36.112.68.214:33333/btool/'
:
`https://
${
window
.
_serverHost
}
/b
tool/`
window
.
_baseUrl
=
[
'localhost'
,
'192.168.1.16
8'
].
includes
(
window
.
location
.
hostname
)
?
'http://36.112.68.214:9999/tool/'
:
`http://
${
window
.
_serverHost
}
/
tool/`
window
.
_baseImgUrl
=
[
'localhost'
,
'192.168.1.
39'
].
includes
(
window
.
location
.
hostname
)
?
'https://store.keliuyun.com
/images/'
:
`
${
window
.
location
.
origin
}
/images/`
window
.
_baseImgUrl
=
[
'localhost'
,
'192.168.1.
168'
].
includes
(
window
.
location
.
hostname
)
?
'http://36.112.68.214:9999
/images/'
:
`
${
window
.
location
.
origin
}
/images/`
window
.
_socketUrl
=
[
'localhost'
,
'192.168.1.165'
].
includes
(
window
.
location
.
hostname
)
?
`wss://
${
window
.
_serverHost
}
/`
:
`wss://
${
window
.
_serverHost
}
/`
const
log
=
console
.
log
.
bind
(
console
)
const
log
=
console
.
log
.
bind
(
console
)
src/App.vue
View file @
395de63
...
@@ -59,10 +59,5 @@ html, body, #app, .el-container {
...
@@ -59,10 +59,5 @@ html, body, #app, .el-container {
display
:
flex
;
display
:
flex
;
justify-content
:
flex-end
;
justify-content
:
flex-end
;
}
}
.imgDialog
{
overflow
:
hidden
;
.el-dialog__body{
overflow
:
auto
;
}
}
</
style
>
</
style
>
src/Request/PublicAxiosInstance.js
View file @
395de63
...
@@ -2,34 +2,25 @@ import axios from 'axios'
...
@@ -2,34 +2,25 @@ import axios from 'axios'
import
router
from
'@/router/index'
import
router
from
'@/router/index'
import
Cookies
from
"js-cookie"
import
Cookies
from
"js-cookie"
import
{
getTimestampString
}
from
"@/PublicUtil/PublicUtil"
import
{
getTimestampString
}
from
"@/PublicUtil/PublicUtil"
import
{
ElMessage
}
from
'element-plus'
// 创建 axios 的一个实例
// 创建 axios 的一个实例
let
baseURL
=
[
'localhost'
,
'192.168.1.28'
].
includes
(
window
.
location
.
hostname
)
?
''
:
window
.
_baseUrl
const
axiosInstance
=
axios
.
create
(
const
axiosInstance
=
axios
.
create
(
{
{
baseURL
:
baseURL
,
baseURL
:
window
.
_baseUrl
timeout
:
10000
}
}
)
)
// 请求拦截器
// 请求拦截器
axiosInstance
.
interceptors
.
request
.
use
(
axiosInstance
.
interceptors
.
request
.
use
(
config
=>
{
config
=>
{
Cookies
.
set
(
'atoken'
,
'9b478c52-37e2-451e-8b71-5338f0b0f0e3'
)
if
([
'localhost'
,
'192.168.1.168'
].
includes
(
window
.
location
.
hostname
))
if
(
!
Cookies
.
get
(
'atoken'
)){
{
ElMessage
({
config
.
headers
.
Authorization
=
'015269a1-3214-4271-b202-1922138d021c'
message
:
`登录过期,请重新登录`
,
type
:
'warning'
})
setTimeout
(()
=>
{
let
url
=
[
'localhost'
,
'192.168.1.28'
].
includes
(
window
.
location
.
hostname
)
?
'http://36.112.68.214:33333/'
:
window
.
location
.
origin
// if(url.includes('36.112.68.214')){
// url = 'http://36.112.68.214:33333/'
// }
window
.
open
(
url
,
'_blank'
)
},
300
)
return
}
}
else
{
config
.
headers
.
Authorization
=
Cookies
.
get
(
'atoken'
)
config
.
headers
.
Authorization
=
Cookies
.
get
(
'atoken'
)
}
return
config
return
config
}
}
...
@@ -39,20 +30,7 @@ axiosInstance.interceptors.request.use(
...
@@ -39,20 +30,7 @@ axiosInstance.interceptors.request.use(
axiosInstance
.
interceptors
.
response
.
use
(
axiosInstance
.
interceptors
.
response
.
use
(
(
r
)
=>
{
(
r
)
=>
{
const
responseData
=
r
.
data
const
responseData
=
r
.
data
if
(
responseData
.
ecode
&&
responseData
.
ecode
==
'401'
){
ElMessage
({
message
:
`登录过期,请重新登录`
,
type
:
'warning'
})
setTimeout
(()
=>
{
let
url
=
[
'localhost'
,
'192.168.1.28'
].
includes
(
window
.
location
.
hostname
)
?
'http://36.112.68.214:33333/'
:
window
.
location
.
origin
// if(url.includes('36.112.68.214')){
// url = 'http://36.112.68.214:33333/'
// }
window
.
open
(
url
,
'_blank'
)
},
300
)
return
}
return
responseData
return
responseData
},
},
(
e
)
=>
{
(
e
)
=>
{
...
...
src/router/index.js
View file @
395de63
...
@@ -41,26 +41,6 @@ const menuRoute = [
...
@@ -41,26 +41,6 @@ const menuRoute = [
path
:
'ComparisonCapturedPictures'
,
path
:
'ComparisonCapturedPictures'
,
component
:
()
=>
import
(
"@/views/ComparisonCapturedPictures/ComparisonCapturedPictures.vue"
),
component
:
()
=>
import
(
"@/views/ComparisonCapturedPictures/ComparisonCapturedPictures.vue"
),
},
},
{
path
:
'MinutePassenger'
,
component
:
()
=>
import
(
"@/views/MinutePassenger/MinutePassenger.vue"
),
},
{
path
:
'SystemLog'
,
component
:
()
=>
import
(
"@/views/SystemLog/index.vue"
),
},
{
path
:
'DataReplay'
,
component
:
()
=>
import
(
"@/views/DataReplay/DataReplay.vue"
),
},
{
path
:
'Featurematching'
,
component
:
()
=>
import
(
"@/views/Featurematching/Featurematching.vue"
)
},
{
path
:
'equipmentDataRetransmission'
,
component
:
()
=>
import
(
"@/views/equipmentDataRetransmission/equipmentDataRetransmission.vue"
),
},
]
]
},
},
]
]
...
...
src/views/ComparisonCapturedPictures/ComparisonCapturedPictures.vue
View file @
395de63
...
@@ -63,7 +63,7 @@
...
@@ -63,7 +63,7 @@
<a-input-number
v-model:value=
"queryForm.maxPic"
:min=
"0"
style=
"width: 100px"
/>
<a-input-number
v-model:value=
"queryForm.maxPic"
:min=
"0"
style=
"width: 100px"
/>
</a-form-item>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"c
lick
Search"
:loading=
"isLoading"
>
查询
</a-button>
<a-button
type=
"primary"
@
click=
"c
onfirm
Search"
:loading=
"isLoading"
>
查询
</a-button>
</a-form-item>
</a-form-item>
</a-form>
</a-form>
<div
v-loading=
"isLoading"
>
<div
v-loading=
"isLoading"
>
...
@@ -99,7 +99,6 @@
...
@@ -99,7 +99,6 @@
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
...
@@ -117,7 +116,6 @@
...
@@ -117,7 +116,6 @@
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
...
@@ -131,7 +129,6 @@
...
@@ -131,7 +129,6 @@
</a-row>
</a-row>
<DetailDialog
ref=
"DetailDialogRef"
/>
<DetailDialog
ref=
"DetailDialogRef"
/>
<DetailDialogComparison
ref=
"DetailDialogComparisonRef"
/>
<DetailDialogComparison
ref=
"DetailDialogComparisonRef"
/>
<imgOtherDialog
ref=
"imgOtherDialogRef"
/>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -156,12 +153,10 @@
...
@@ -156,12 +153,10 @@
import
{
ElMessage
}
from
'element-plus'
import
{
ElMessage
}
from
'element-plus'
import
DetailDialog
from
"./DetailDialog.vue"
;
import
DetailDialog
from
"./DetailDialog.vue"
;
import
DetailDialogComparison
from
"./DetailDialogComparison.vue"
;
import
DetailDialogComparison
from
"./DetailDialogComparison.vue"
;
import
imgOtherDialog
from
"./imgOtherDialog.vue"
;
export
default
{
export
default
{
components
:
{
components
:
{
DetailDialog
,
DetailDialog
,
DetailDialogComparison
,
DetailDialogComparison
imgOtherDialog
},
},
setup
()
{
setup
()
{
// scalar
// scalar
...
@@ -180,7 +175,7 @@
...
@@ -180,7 +175,7 @@
// ref
// ref
const
DetailDialogRef
=
ref
();
const
DetailDialogRef
=
ref
();
const
DetailDialogComparisonRef
=
ref
();
const
DetailDialogComparisonRef
=
ref
();
const
imgOtherDialogRef
=
ref
()
const
pagedTableDataList
=
computed
(
const
pagedTableDataList
=
computed
(
()
=>
{
()
=>
{
return
getPagedList
(
dataList
.
value
,
10
)
return
getPagedList
(
dataList
.
value
,
10
)
...
@@ -202,20 +197,6 @@
...
@@ -202,20 +197,6 @@
minPic
:
''
,
minPic
:
''
,
maxPic
:
''
,
maxPic
:
''
,
})
})
const
searchCondition
=
ref
({})
if
(
window
.
localStorage
.
getItem
(
'searchCondition'
)){
searchCondition
.
value
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
'searchCondition'
));
queryForm
.
type
=
searchCondition
.
value
.
type
;
queryForm
.
zone_id
=
searchCondition
.
value
.
zone_id
;
queryForm
.
gate_id
=
searchCondition
.
value
.
gate_id
;
queryForm
.
direction
=
searchCondition
.
value
.
direction
;
queryForm
.
picType
=
searchCondition
.
value
.
picType
;
queryForm
.
date
=
searchCondition
.
value
.
date
;
queryForm
.
startTime
=
searchCondition
.
value
.
startTime
;
queryForm
.
endTime
=
searchCondition
.
value
.
endTime
;
queryForm
.
minPic
=
searchCondition
.
value
.
minPic
||
0
;
queryForm
.
maxPic
=
searchCondition
.
value
.
maxPic
||
100
;
}
// function
// function
const
onPageNumChange
=
function
(
num
)
{
const
onPageNumChange
=
function
(
num
)
{
pageNum
.
value
=
num
pageNum
.
value
=
num
...
@@ -229,9 +210,9 @@
...
@@ -229,9 +210,9 @@
}
}
const
onAccountChange
=
function
()
{
const
onAccountChange
=
function
()
{
getPlazaList
(
1
)
getPlazaList
()
//
getZoneList()
getZoneList
()
//
getGateList()
getGateList
()
}
}
const
onPlazaChange
=
function
()
{
const
onPlazaChange
=
function
()
{
...
@@ -243,7 +224,7 @@
...
@@ -243,7 +224,7 @@
getGateList
()
getGateList
()
}
}
const
getPlazaList
=
function
(
val
)
{
const
getPlazaList
=
function
()
{
queryForm
.
plaza_id
=
[]
queryForm
.
plaza_id
=
[]
plazaList
.
value
=
[]
plazaList
.
value
=
[]
snapshotRecordApi
.
getPlazaList
({
snapshotRecordApi
.
getPlazaList
({
...
@@ -257,22 +238,13 @@
...
@@ -257,22 +238,13 @@
label
:
item
.
name
,
label
:
item
.
name
,
})
})
}
}
if
(
plazaList
.
value
.
length
>
0
){
if
(
!
val
&&
searchCondition
.
value
.
plaza_id
&&
searchCondition
.
value
.
plaza_id
.
length
>
0
){
queryForm
.
plaza_id
=
searchCondition
.
value
.
plaza_id
}
else
{
queryForm
.
plaza_id
.
push
(
plazaList
.
value
[
0
].
value
)
}
getZoneList
(
1
)
getGateList
(
1
)
confirmSearch
()
}
}
}
}
}
)
)
}
}
const
getZoneList
=
function
(
val
)
{
const
getZoneList
=
function
()
{
queryForm
.
zone_id
=
[]
zoneList
.
value
=
[]
zoneList
.
value
=
[]
snapshotRecordApi
.
getZoneList
({
snapshotRecordApi
.
getZoneList
({
account_id
:
queryForm
.
account_id
.
toString
(),
account_id
:
queryForm
.
account_id
.
toString
(),
...
@@ -286,21 +258,13 @@
...
@@ -286,21 +258,13 @@
label
:
item
.
name
,
label
:
item
.
name
,
})
})
}
}
if
(
zoneList
.
value
.
length
){
if
(
val
&&
searchCondition
.
value
.
zone_id
&&
searchCondition
.
value
.
zone_id
.
length
>
0
){
queryForm
.
zone_id
=
searchCondition
.
value
.
zone_id
}
else
{
queryForm
.
zone_id
=
[]
}
}
else
{
queryForm
.
zone_id
=
[]
}
}
}
}
}
)
)
}
}
const
getGateList
=
function
(
val
)
{
const
getGateList
=
function
()
{
queryForm
.
gate_id
=
[]
gateList
.
value
=
[]
gateList
.
value
=
[]
snapshotRecordApi
.
getGateList
({
snapshotRecordApi
.
getGateList
({
account_id
:
queryForm
.
account_id
.
toString
(),
account_id
:
queryForm
.
account_id
.
toString
(),
...
@@ -316,15 +280,6 @@
...
@@ -316,15 +280,6 @@
label
:
item
.
name
,
label
:
item
.
name
,
})
})
}
}
if
(
gateList
.
value
.
length
){
if
(
val
&&
searchCondition
.
value
.
gate_id
&&
searchCondition
.
value
.
gate_id
.
length
>
0
){
queryForm
.
gate_id
=
searchCondition
.
value
.
gate_id
}
else
{
queryForm
.
gate_id
=
[]
}
}
else
{
queryForm
.
gate_id
=
[]
}
}
}
}
}
)
)
...
@@ -342,22 +297,11 @@
...
@@ -342,22 +297,11 @@
label
:
item
.
name
,
label
:
item
.
name
,
})
})
}
}
if
(
accountList
.
value
.
length
){
if
(
searchCondition
.
value
.
account_id
&&
searchCondition
.
value
.
account_id
.
length
>
0
){
queryForm
.
account_id
=
searchCondition
.
value
.
account_id
}
else
{
queryForm
.
account_id
.
push
(
accountList
.
value
[
0
].
value
)
}
getPlazaList
()
}
}
}
}
}
)
)
}
}
const
clickSearch
=
function
()
{
pageNum
.
value
=
1
confirmSearch
()
}
const
confirmSearch
=
function
()
{
const
confirmSearch
=
function
()
{
const
rawData
=
toRaw
(
queryForm
)
const
rawData
=
toRaw
(
queryForm
)
if
(
rawData
.
minPic
>
rawData
.
maxPic
){
if
(
rawData
.
minPic
>
rawData
.
maxPic
){
...
@@ -386,24 +330,7 @@
...
@@ -386,24 +330,7 @@
page
:
pageNum
.
value
-
1
,
page
:
pageNum
.
value
-
1
,
pageSize
:
pageSize
.
value
,
pageSize
:
pageSize
.
value
,
})
})
const
storageData
=
filterEmptyValueInObject
(
{
account_id
:
rawData
.
account_id
,
type
:
rawData
.
type
,
plaza_id
:
rawData
.
plaza_id
,
zone_id
:
rawData
.
zone_id
,
gate_id
:
rawData
.
gate_id
,
direction
:
rawData
.
direction
,
picType
:
rawData
.
picType
,
personType
:
rawData
.
personType
,
date
:
rawData
.
date
,
minPic
:
rawData
.
minPic
,
maxPic
:
rawData
.
maxPic
,
startTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
startTime
),
endTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
endTime
),
}
)
window
.
localStorage
.
setItem
(
'searchCondition'
,
JSON
.
stringify
(
storageData
))
comparsionResultApi
.
getPersonGroupList
(
data
).
then
(
comparsionResultApi
.
getPersonGroupList
(
data
).
then
(
(
r
)
=>
{
(
r
)
=>
{
isLoading
.
value
=
false
isLoading
.
value
=
false
...
@@ -583,6 +510,8 @@
...
@@ -583,6 +510,8 @@
}
}
parmas
.
persionlistLeft
=
boxListLeft
.
value
parmas
.
persionlistLeft
=
boxListLeft
.
value
parmas
.
persionlistRight
=
boxListRight
.
value
parmas
.
persionlistRight
=
boxListRight
.
value
console
.
log
(
clickItemObj
.
value
)
console
.
log
(
parmas
)
DetailDialogComparisonRef
.
value
.
initDialog
(
clickItemObj
.
value
,
parmas
);
DetailDialogComparisonRef
.
value
.
initDialog
(
clickItemObj
.
value
,
parmas
);
}
}
// 店员特征对比
// 店员特征对比
...
@@ -630,21 +559,6 @@
...
@@ -630,21 +559,6 @@
}
}
}
}
const
openImage
=
function
(
item
,
event
){
event
.
stopPropagation
()
if
(
item
.
features_url
){
let
url
=
item
.
picture_url
imgOtherDialogRef
.
value
.
initDialog
(
url
.
split
(
'0.jpg'
)[
0
]
+
'1.jpg'
)
}
else
{
ElMessage
(
{
message
:
`该图片没有特征`
,
type
:
'warning'
}
)
return
}
}
__main
()
__main
()
return
{
return
{
...
@@ -673,7 +587,6 @@
...
@@ -673,7 +587,6 @@
onPlazaChange
,
onPlazaChange
,
onZoneChange
,
onZoneChange
,
confirmSearch
,
confirmSearch
,
clickSearch
,
formatDirection
,
formatDirection
,
formatPersonType
,
formatPersonType
,
dragStart
,
dragStart
,
...
@@ -686,11 +599,9 @@
...
@@ -686,11 +599,9 @@
shoperFeatureComparison
,
shoperFeatureComparison
,
clickItem
,
clickItem
,
downloadFile
,
downloadFile
,
openImage
,
// ref
// ref
DetailDialogRef
,
DetailDialogRef
,
DetailDialogComparisonRef
,
DetailDialogComparisonRef
imgOtherDialogRef
}
}
}
}
}
}
...
@@ -729,14 +640,6 @@
...
@@ -729,14 +640,6 @@
right
:
0
;
right
:
0
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.openImage
{
position
:
absolute
;
color
:
#1890ff
;
font-size
:
32px
;
top
:
0
;
right
:
30px
;
cursor
:
pointer
;
}
}
}
.comparsionBox
{
.comparsionBox
{
padding-top
:
5px
;
padding-top
:
5px
;
...
...
src/views/ComparisonCapturedPictures/DetailDialog.vue
View file @
395de63
...
@@ -10,11 +10,11 @@
...
@@ -10,11 +10,11 @@
<a-row
:gutter=
"[16,16]"
>
<a-row
:gutter=
"[16,16]"
>
<a-col
:span=
'4'
>
<a-col
:span=
'4'
>
<div
style=
"margin: 0 5px"
class=
"itemBox"
>
<div
style=
"margin: 0 5px"
class=
"itemBox"
>
<el-image
:src=
"detailData.picture_url"
:fit=
"'fill'"
class=
"single-image"
@
click=
'clickItem(detailData)'
>
<el-image
:src=
"detailData.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(detailData,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(detailData,$event)"
></span>
<div>
时间:
{{
detailData
.
counttime
}}
</div>
<div>
时间:
{{
detailData
.
counttime
}}
</div>
<div
class=
"direction"
:class=
"'direction'+detailData.direction"
>
方向:
{{
formatDirection
(
detailData
.
direction
)
}}
</div>
<div>
方向:
{{
formatDirection
(
detailData
.
direction
)
}}
</div>
<div>
地点:
{{
detailData
.
gate_name
}}
</div>
<div>
地点:
{{
detailData
.
gate_name
}}
</div>
</div>
</div>
</a-col>
</a-col>
...
@@ -24,11 +24,10 @@
...
@@ -24,11 +24,10 @@
<a-row>
<a-row>
<a-col
:span=
"4"
v-for=
"item in row.personList"
:key=
'item.id'
class=
'colItem'
>
<a-col
:span=
"4"
v-for=
"item in row.personList"
:key=
'item.id'
class=
'colItem'
>
<div
style=
"margin: 0 5px"
class=
"itemBox"
>
<div
style=
"margin: 0 5px"
class=
"itemBox"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
@
click=
'clickItem(item)'
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<p
class=
"featureNum"
>
{{
item
.
featureNum
?(
item
.
featureNum
).
toFixed
(
2
):
0
}}
</p>
<p
class=
"featureNum"
>
{{
(
item
.
featureNum
).
toFixed
(
2
)
}}
</p>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
</div>
</div>
</a-col>
</a-col>
...
@@ -41,28 +40,17 @@
...
@@ -41,28 +40,17 @@
<a-button
@
click=
"onCancel"
>
返回
</a-button>
<a-button
@
click=
"onCancel"
>
返回
</a-button>
</
template
>
</
template
>
</a-modal>
</a-modal>
<imgDialog
ref=
'imgModelRef'
></imgDialog>
<imgOtherDialog
ref=
"imgOtherDialogRef"
></imgOtherDialog>
</template>
</template>
<
script
>
<
script
>
import
{
reactive
,
ref
}
from
"vue"
;
import
{
reactive
,
ref
}
from
"vue"
;
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
comparsionResultApi
from
'@/views/ComparisonCapturedPictures/api'
import
comparsionResultApi
from
'@/views/ComparisonCapturedPictures/api'
import
clusterResultApi
from
'@/views/SnapshotCluster/ClusterResult/ClusterResultApi'
import
imgDialog
from
'../SnapshotCluster/imgDialog.vue'
import
imgOtherDialog
from
"./imgOtherDialog.vue"
;
export
default
{
export
default
{
components
:{
imgDialog
,
imgOtherDialog
},
setup
()
{
setup
()
{
const
isVisible
=
ref
(
false
);
const
isVisible
=
ref
(
false
);
const
isLoading
=
ref
(
false
);
const
isLoading
=
ref
(
false
);
const
detailData
=
ref
({});
const
detailData
=
ref
({});
const
imgModelRef
=
ref
();
const
imgOtherDialogRef
=
ref
();
const
dataList
=
ref
([])
const
dataList
=
ref
([])
const
initDialog
=
(
record
,
parmas
)
=>
{
const
initDialog
=
(
record
,
parmas
)
=>
{
detailData
.
value
=
record
;
detailData
.
value
=
record
;
...
@@ -74,6 +62,7 @@ export default {
...
@@ -74,6 +62,7 @@ export default {
if
(
isArray
(
r
.
data
))
{
if
(
isArray
(
r
.
data
))
{
if
(
r
.
data
.
length
>
0
){
if
(
r
.
data
.
length
>
0
){
r
.
data
.
forEach
((
item
)
=>
{
r
.
data
.
forEach
((
item
)
=>
{
console
.
log
(
item
)
item
.
personList
.
forEach
((
item1
)
=>
{
item
.
personList
.
forEach
((
item1
)
=>
{
if
(
item1
.
features_url
)
{
if
(
item1
.
features_url
)
{
item1
.
features_url
=
window
.
_baseImgUrl
+
item1
.
features_url
item1
.
features_url
=
window
.
_baseImgUrl
+
item1
.
features_url
...
@@ -106,11 +95,6 @@ export default {
...
@@ -106,11 +95,6 @@ export default {
}
}
}
}
}
}
const
clickItem
=
function
(
data
){
clusterResultApi
.
getBodyPoint
({
'feature_url'
:
data
.
features_url
}).
then
((
r
)
=>
{
imgModelRef
.
value
.
initDialog
(
data
.
picture_url
,
r
.
data
);
})
}
const
onCancel
=
()
=>
{
const
onCancel
=
()
=>
{
isVisible
.
value
=
false
;
isVisible
.
value
=
false
;
};
};
...
@@ -129,21 +113,7 @@ export default {
...
@@ -129,21 +113,7 @@ export default {
}
}
}
}
const
openImage
=
function
(
item
,
event
){
event
.
stopPropagation
()
if
(
item
.
features_url
){
let
url
=
item
.
picture_url
imgOtherDialogRef
.
value
.
initDialog
(
url
.
split
(
'0.jpg'
)[
0
]
+
'1.jpg'
)
}
else
{
ElMessage
(
{
message
:
`该图片没有特征`
,
type
:
'warning'
}
)
return
}
}
return
{
return
{
isVisible
,
isVisible
,
detailData
,
detailData
,
...
@@ -152,11 +122,7 @@ export default {
...
@@ -152,11 +122,7 @@ export default {
initDialog
,
initDialog
,
isLoading
,
isLoading
,
formatDirection
,
formatDirection
,
downloadFile
,
downloadFile
clickItem
,
imgModelRef
,
imgOtherDialogRef
,
openImage
};
};
},
},
};
};
...
@@ -165,18 +131,6 @@ export default {
...
@@ -165,18 +131,6 @@ export default {
.single-image
{
.single-image
{
height
:
200px
;
height
:
200px
;
width
:
150px
;
width
:
150px
;
cursor
:
pointer
;
}
.direction
{
font-weight
:
900
;
background-color
:
red
;
color
:
white
;
}
.direction1
{
background-color
:
green
;
}
.direction0
{
background-color
:
orange
;
}
}
.rowBox
{
.rowBox
{
border
:
2px
dashed
#ccc
;
border
:
2px
dashed
#ccc
;
...
@@ -198,14 +152,6 @@ export default {
...
@@ -198,14 +152,6 @@ export default {
left
:
120px
;
left
:
120px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.openImage
{
position
:
absolute
;
color
:
#1890ff
;
font-size
:
32px
;
top
:
0
;
left
:
90px
;
cursor
:
pointer
;
}
.featureNum
{
.featureNum
{
position
:
absolute
;
position
:
absolute
;
top
:
0
;
top
:
0
;
...
...
src/views/ComparisonCapturedPictures/DetailDialogComparison.vue
View file @
395de63
...
@@ -30,8 +30,7 @@
...
@@ -30,8 +30,7 @@
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<p
class=
"featureNum"
>
{{
(
item
.
featureNum
).
toFixed
(
2
)
}}
</p>
<p
class=
"featureNum"
>
{{
item
.
featureNum
?(
item
.
featureNum
).
toFixed
(
2
):
0
}}
</p>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
...
@@ -51,8 +50,7 @@
...
@@ -51,8 +50,7 @@
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<p
class=
"featureNum"
>
{{
(
item
.
featureNum
).
toFixed
(
2
)
}}
</p>
<p
class=
"featureNum"
>
{{
item
.
featureNum
?(
item
.
featureNum
).
toFixed
(
2
):
0
}}
</p>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
...
@@ -67,18 +65,13 @@
...
@@ -67,18 +65,13 @@
<a-button
@
click=
"onCancel"
>
返回
</a-button>
<a-button
@
click=
"onCancel"
>
返回
</a-button>
</
template
>
</
template
>
</a-modal>
</a-modal>
<imgOtherDialog
ref=
"imgOtherDialogRef"
/>
</template>
</template>
<
script
>
<
script
>
import
{
reactive
,
ref
}
from
"vue"
;
import
{
reactive
,
ref
}
from
"vue"
;
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
comparsionResultApi
from
'@/views/ComparisonCapturedPictures/api'
import
comparsionResultApi
from
'@/views/ComparisonCapturedPictures/api'
import
imgOtherDialog
from
"./imgOtherDialog.vue"
;
export
default
{
export
default
{
components
:
{
imgOtherDialog
},
setup
()
{
setup
()
{
const
isVisible
=
ref
(
false
);
const
isVisible
=
ref
(
false
);
const
isLoadingTop
=
ref
(
false
);
const
isLoadingTop
=
ref
(
false
);
...
@@ -86,7 +79,6 @@ export default {
...
@@ -86,7 +79,6 @@ export default {
const
detailData
=
ref
({});
const
detailData
=
ref
({});
const
dataListLeft
=
ref
([])
const
dataListLeft
=
ref
([])
const
dataListRight
=
ref
([])
const
dataListRight
=
ref
([])
const
imgOtherDialogRef
=
ref
()
const
initDialog
=
(
record
,
parmas
)
=>
{
const
initDialog
=
(
record
,
parmas
)
=>
{
detailData
.
value
=
record
;
detailData
.
value
=
record
;
isVisible
.
value
=
true
;
isVisible
.
value
=
true
;
...
@@ -102,6 +94,7 @@ export default {
...
@@ -102,6 +94,7 @@ export default {
countdate
:
parmas
.
countdate
,
countdate
:
parmas
.
countdate
,
personList
:
parmas
.
persionlistLeft
personList
:
parmas
.
persionlistLeft
}
}
console
.
log
(
parmasObj
)
comparsionResultApi
.
getPersonContrastList
(
parmasObj
).
then
((
r
)
=>
{
comparsionResultApi
.
getPersonContrastList
(
parmasObj
).
then
((
r
)
=>
{
isLoadingTop
.
value
=
false
isLoadingTop
.
value
=
false
if
(
r
.
data
&&
isArray
(
r
.
data
.
personList
))
{
if
(
r
.
data
&&
isArray
(
r
.
data
.
personList
))
{
...
@@ -171,21 +164,6 @@ export default {
...
@@ -171,21 +164,6 @@ export default {
}
}
}
}
const
openImage
=
function
(
item
,
event
){
event
.
stopPropagation
()
if
(
item
.
features_url
){
let
url
=
item
.
picture_url
imgOtherDialogRef
.
value
.
initDialog
(
url
.
split
(
'0.jpg'
)[
0
]
+
'1.jpg'
)
}
else
{
ElMessage
(
{
message
:
`该图片没有特征`
,
type
:
'warning'
}
)
return
}
}
return
{
return
{
isVisible
,
isVisible
,
...
@@ -197,9 +175,7 @@ export default {
...
@@ -197,9 +175,7 @@ export default {
formatDirection
,
formatDirection
,
isLoadingTop
,
isLoadingTop
,
isLoadingBottom
,
isLoadingBottom
,
downloadFile
,
downloadFile
openImage
,
imgOtherDialogRef
};
};
},
},
};
};
...
@@ -229,14 +205,6 @@ export default {
...
@@ -229,14 +205,6 @@ export default {
left
:
120px
;
left
:
120px
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.openImage
{
position
:
absolute
;
color
:
#1890ff
;
font-size
:
32px
;
top
:
0
;
left
:
90px
;
cursor
:
pointer
;
}
}
}
.featureNum
{
.featureNum
{
position
:
absolute
;
position
:
absolute
;
...
@@ -246,9 +214,4 @@ export default {
...
@@ -246,9 +214,4 @@ export default {
font-weight
:
900
;
font-weight
:
900
;
font-size
:
16px
;
font-size
:
16px
;
}
}
.dialogImg
{
/deep/.el-dialog--center
.el-dialog__body{
text-align
:
center
;
}
}
</
style
>
</
style
>
src/views/DataRerun/DataRerun.vue
View file @
395de63
...
@@ -253,7 +253,7 @@ export default {
...
@@ -253,7 +253,7 @@ export default {
webSocketMap
[
scheduleType
].
close
()
webSocketMap
[
scheduleType
].
close
()
}
}
webSocketMap
[
scheduleType
]
=
new
WebSocket
(
`
${
window
.
_socketUrl
}
/recal/schedule/
${
scheduleType
}
`
)
webSocketMap
[
scheduleType
]
=
new
WebSocket
(
`
ws://
${
window
.
_serverHost
}
/recal/schedule/
${
scheduleType
}
`
)
webSocketMap
[
scheduleType
].
onopen
=
()
=>
{
webSocketMap
[
scheduleType
].
onopen
=
()
=>
{
queryData
(
scheduleType
)
queryData
(
scheduleType
)
...
...
src/views/FeatureComparisonVerification/FeatureComparisonVerification.vue
View file @
395de63
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
<a-time-picker
v-model:value=
"queryForm.endTime"
style=
"width: 100px"
/>
<a-time-picker
v-model:value=
"queryForm.endTime"
style=
"width: 100px"
/>
</a-form-item>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"c
lick
Search"
:loading=
"isLoading"
>
查询
</a-button>
<a-button
type=
"primary"
@
click=
"c
onfirm
Search"
:loading=
"isLoading"
>
查询
</a-button>
</a-form-item>
</a-form-item>
</a-form>
</a-form>
<div
v-loading=
"isLoading"
>
<div
v-loading=
"isLoading"
>
...
@@ -69,7 +69,6 @@
...
@@ -69,7 +69,6 @@
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
...
@@ -83,47 +82,37 @@
...
@@ -83,47 +82,37 @@
</div>
</div>
</a-col>
</a-col>
<a-col
:span=
"10"
class=
'imgBox1'
>
<a-col
:span=
"10"
class=
'imgBox1'
>
<div
class=
"imgBox1_top1"
>
<p
v-if=
'featureList.length>0'
style=
"margin-left: 15px;"
>
<p
v-if=
"featureList.length>0"
style=
"margin-left: 15px;"
>
<a-button
type=
"primary"
style=
"float: right;"
@
click=
"fullScreen('imgBox1_top1')"
>
全屏
</a-button>
<span>
{{
featureList
[
0
].
person_unid
}}
</span>
<span>
{{
featureList
[
0
].
person_unid
}}
</span>
<span
style=
"float: right;margin-right: 15px
;"
>
共
{{
featureList
.
length
}}
张
</span>
<span
style=
"float: right
;"
>
共
{{
featureList
.
length
}}
张
</span>
</p>
</p>
<el-row
class=
"imgBox1_top"
:gutter=
"10"
v-loading=
"isLoadingFeature"
>
<el-row
class=
"imgBox1_top"
:gutter=
"10"
v-loading=
"isLoadingFeature"
>
<el-col
:span=
"6"
class=
"itemBox"
v-for=
"item in featureList"
>
<el-col
:span=
"6"
class=
"itemBox"
v-for=
"item in featureList"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<p
class=
"featureNum"
>
{{
(
item
.
featureNum
).
toFixed
(
2
)
}}
</p>
<span
class=
"el-icon-delete delete"
@
click=
"deleteImage(item,$event)"
></span>
<p
class=
"featureNum"
>
{{
item
.
featureNum
?(
item
.
featureNum
).
toFixed
(
2
):
0
}}
</p>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
</el-col>
</el-col>
<a-empty
v-if=
'featureList.length==0'
style=
'margin: 0 auto;'
></a-empty>
<a-empty
v-if=
'featureList.length==0'
style=
'margin: 0 auto;'
></a-empty>
</el-row>
</el-row>
</div>
<div
class=
"imgBox2_top"
>
<div
class=
"imgBox2_top"
>
<div
class=
"btns"
>
<div
class=
"btns"
>
<p
v-if=
'comparisonList.length>0'
style=
"margin-left: 15px;float: left"
>
<p
v-if=
'comparisonList.length>0'
style=
"margin-left: 15px;float: left"
>
<span>
{{
comparisonList
[
0
].
person_unid
}}
</span>
<span>
{{
comparisonList
[
0
].
person_unid
}}
</span>
<span
syle=
"margin-left:30px"
>
共
{{
comparisonList
.
length
}}
张
</span>
<span
syle=
"margin-left:30px"
>
共
{{
comparisonList
.
length
}}
张
</span>
</p>
</p>
阈值:
<el-input-number
class=
"thresholdInput"
size=
"small"
:controls=
'false'
:min=
"1"
:max=
"100"
v-model=
"threshold"
></el-input-number>
<a-button
type=
"primary"
@
click=
"reComparison"
>
重新比对
</a-button>
<a-button
type=
"primary"
@
click=
"reComparison"
>
重新比对
</a-button>
<a-button
type=
"primary"
@
click=
"reComparisonFeature"
>
重提特征比对
</a-button>
<a-button
type=
"primary"
@
click=
"reComparisonFeature"
>
重提特征比对
</a-button>
<a-button
type=
"primary"
@
click=
"fullScreen('imgBox2_top')"
>
全屏
</a-button>
</div>
</div>
<el-row
:gutter=
"10"
v-loading=
"isLoadingComparison"
class=
'imgBox2'
>
<el-row
:gutter=
"10"
v-loading=
"isLoadingComparison"
class=
'imgBox2'
>
<el-col
:span=
"6"
class=
"itemBox"
v-for=
"item in comparisonList"
>
<el-col
:span=
"6"
class=
"itemBox"
v-for=
"item in comparisonList"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<p
class=
"featureNum"
>
{{
(
item
.
featureNum
).
toFixed
(
2
)
}}
</p>
<span
class=
"el-icon-plus add"
v-if=
"boxObj.person_unid != item.person_unid"
@
click=
"addImage(item,$event)"
></span>
<p
class=
"featureNum"
>
{{
item
.
featureNum
?(
item
.
featureNum
).
toFixed
(
2
):
0
}}
</p>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
...
@@ -133,64 +122,7 @@
...
@@ -133,64 +122,7 @@
</div>
</div>
</a-col>
</a-col>
</a-row>
</a-row>
<el-dialog
v-model=
"centerDialogVisible"
v-if=
"centerDialogVisible"
title=
"body1"
>
<el-image
:src=
"otherPictureUrl"
:fit=
"'contain'"
class=
"single-image"
>
</el-image>
<template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"centerDialogVisible = false"
>
关闭
</el-button>
</span>
</
template
>
</el-dialog>
<!-- 特征比对 -->
<el-dialog
v-model=
"featureDialogVisible"
custom-class=
"imgDialog"
v-if=
"featureDialogVisible"
title=
"特征比对"
width=
"90%"
top=
'50px'
>
<el-row
class=
"featureBox"
:gutter=
"10"
>
<el-col
:span=
"3"
class=
"itemBox"
v-for=
"item in featureList"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<span
class=
"el-icon-delete delete"
@
click=
"deleteImage(item,$event)"
></span>
<p
class=
"featureNum"
>
{{item.featureNum?(item.featureNum).toFixed(2):0}}
</p>
<div>
时间:{{ item.counttime }}
</div>
<div>
方向:{{ formatDirection(item.direction) }}
</div>
<div>
地点:{{ item.gate_name }}
</div>
</el-col>
<a-empty
v-if=
'featureList.length==0'
style=
'margin: 0 auto;'
></a-empty>
</el-row>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"featureDialogVisible = false"
>
关闭
</el-button>
</span>
</
template
>
</el-dialog>
<!-- 特征重新比对 -->
<el-dialog
v-model=
"refeatureDialogVisible"
custom-class=
"imgDialog"
v-if=
"refeatureDialogVisible"
title=
"特征比对"
width=
"90%"
top=
'50px'
>
<div
class=
"btns featureBoxBtns "
>
阈值:
<el-input-number
class=
"thresholdInput"
size=
"small"
:controls=
'false'
:min=
"1"
:max=
"100"
v-model=
"threshold"
></el-input-number>
<a-button
type=
"primary"
@
click=
"reComparison"
>
重新比对
</a-button>
<a-button
type=
"primary"
@
click=
"reComparisonFeature"
>
重提特征比对
</a-button>
</div>
<el-row
:gutter=
"10"
class=
'featureBox'
>
<el-col
:span=
"3"
class=
"itemBox"
v-for=
"item in comparisonList"
>
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
class=
"single-image"
>
</el-image>
<span
class=
"el-icon-document downloadFile"
@
click=
"downloadFile(item,$event)"
></span>
<span
class=
"el-icon-picture-outline openImage"
@
click=
"openImage(item,$event)"
></span>
<span
class=
"el-icon-plus add"
v-if=
"boxObj.person_unid != item.person_unid"
@
click=
"addImage(item,$event)"
></span>
<p
class=
"featureNum"
>
{{item.featureNum?(item.featureNum).toFixed(2):0}}
</p>
<div>
时间:{{ item.counttime }}
</div>
<div>
方向:{{ formatDirection(item.direction) }}
</div>
<div>
地点:{{ item.gate_name }}
</div>
</el-col>
<a-empty
v-if=
'comparisonList.length==0'
style=
'margin: 0 auto;'
></a-empty>
</el-row>
<
template
#
footer
>
<span
class=
"dialog-footer"
>
<el-button
@
click=
"refeatureDialogVisible = false"
>
关闭
</el-button>
</span>
</
template
>
</el-dialog>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -220,10 +152,6 @@
...
@@ -220,10 +152,6 @@
const
pageSize
=
ref
(
10
)
const
pageSize
=
ref
(
10
)
const
total
=
ref
()
const
total
=
ref
()
const
isLoading
=
ref
(
false
)
const
isLoading
=
ref
(
false
)
const
centerDialogVisible
=
ref
(
false
)
const
featureDialogVisible
=
ref
(
false
)
const
refeatureDialogVisible
=
ref
(
false
)
const
otherPictureUrl
=
ref
()
// sequence
// sequence
const
dataList
=
ref
([])
const
dataList
=
ref
([])
const
accountList
=
ref
([])
const
accountList
=
ref
([])
...
@@ -235,7 +163,6 @@
...
@@ -235,7 +163,6 @@
const
boxObj
=
ref
({})
const
boxObj
=
ref
({})
const
currentItemId
=
ref
()
const
currentItemId
=
ref
()
const
isLoadingFeature
=
ref
(
false
)
const
isLoadingFeature
=
ref
(
false
)
const
threshold
=
ref
(
75
)
const
pagedTableDataList
=
computed
(
const
pagedTableDataList
=
computed
(
()
=>
{
()
=>
{
return
getPagedList
(
dataList
.
value
,
10
)
return
getPagedList
(
dataList
.
value
,
10
)
...
@@ -255,18 +182,6 @@
...
@@ -255,18 +182,6 @@
startTime
:
moment
(
'00:00:00'
,
'HH:mm:ss'
),
startTime
:
moment
(
'00:00:00'
,
'HH:mm:ss'
),
endTime
:
moment
(
'23:59:59'
,
'HH:mm:ss'
),
endTime
:
moment
(
'23:59:59'
,
'HH:mm:ss'
),
})
})
const
searchCondition
=
ref
({})
if
(
window
.
localStorage
.
getItem
(
'searchCondition'
)){
searchCondition
.
value
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
'searchCondition'
));
queryForm
.
type
=
searchCondition
.
value
.
type
;
queryForm
.
zone_id
=
searchCondition
.
value
.
zone_id
;
queryForm
.
gate_id
=
searchCondition
.
value
.
gate_id
;
queryForm
.
direction
=
searchCondition
.
value
.
direction
;
queryForm
.
picType
=
searchCondition
.
value
.
picType
;
queryForm
.
date
=
searchCondition
.
value
.
date
;
queryForm
.
startTime
=
searchCondition
.
value
.
startTime
;
queryForm
.
endTime
=
searchCondition
.
value
.
endTime
;
}
// function
// function
const
onPageNumChange
=
function
(
num
)
{
const
onPageNumChange
=
function
(
num
)
{
pageNum
.
value
=
num
pageNum
.
value
=
num
...
@@ -280,21 +195,21 @@
...
@@ -280,21 +195,21 @@
}
}
const
onAccountChange
=
function
()
{
const
onAccountChange
=
function
()
{
getPlazaList
(
1
)
getPlazaList
()
// getZoneList()
// getZoneList()
// getGateList()
// getGateList()
}
}
const
onPlazaChange
=
function
()
{
const
onPlazaChange
=
function
()
{
getZoneList
(
1
)
getZoneList
()
getGateList
(
1
)
getGateList
()
}
}
const
onZoneChange
=
function
()
{
const
onZoneChange
=
function
()
{
getGateList
()
getGateList
()
}
}
const
getPlazaList
=
function
(
val
)
{
const
getPlazaList
=
function
()
{
queryForm
.
plaza_id
=
[]
queryForm
.
plaza_id
=
[]
plazaList
.
value
=
[]
plazaList
.
value
=
[]
snapshotRecordApi
.
getPlazaList
({
snapshotRecordApi
.
getPlazaList
({
...
@@ -308,22 +223,12 @@
...
@@ -308,22 +223,12 @@
label
:
item
.
name
,
label
:
item
.
name
,
})
})
}
}
if
(
plazaList
.
value
.
length
>
0
){
if
(
!
val
&&
searchCondition
.
value
.
plaza_id
&&
searchCondition
.
value
.
plaza_id
.
length
>
0
){
queryForm
.
plaza_id
=
searchCondition
.
value
.
plaza_id
}
else
{
queryForm
.
plaza_id
.
push
(
plazaList
.
value
[
0
].
value
)
}
getZoneList
(
1
)
getGateList
(
1
)
confirmSearch
()
}
}
}
}
}
)
)
}
}
const
getZoneList
=
function
(
val
)
{
const
getZoneList
=
function
()
{
queryForm
.
zone_id
=
[]
queryForm
.
zone_id
=
[]
zoneList
.
value
=
[]
zoneList
.
value
=
[]
snapshotRecordApi
.
getZoneList
({
snapshotRecordApi
.
getZoneList
({
...
@@ -338,21 +243,12 @@
...
@@ -338,21 +243,12 @@
label
:
item
.
name
,
label
:
item
.
name
,
})
})
}
}
if
(
zoneList
.
value
.
length
){
if
(
val
&&
searchCondition
.
value
.
zone_id
&&
searchCondition
.
value
.
zone_id
.
length
>
0
){
queryForm
.
zone_id
=
searchCondition
.
value
.
zone_id
}
else
{
queryForm
.
zone_id
=
[]
}
}
else
{
queryForm
.
zone_id
=
[]
}
}
}
}
}
)
)
}
}
const
getGateList
=
function
(
val
)
{
const
getGateList
=
function
()
{
queryForm
.
gate_id
=
[]
queryForm
.
gate_id
=
[]
gateList
.
value
=
[]
gateList
.
value
=
[]
snapshotRecordApi
.
getGateList
({
snapshotRecordApi
.
getGateList
({
...
@@ -369,15 +265,6 @@
...
@@ -369,15 +265,6 @@
label
:
item
.
name
,
label
:
item
.
name
,
})
})
}
}
if
(
gateList
.
value
.
length
){
if
(
val
&&
searchCondition
.
value
.
gate_id
&&
searchCondition
.
value
.
gate_id
.
length
>
0
){
queryForm
.
gate_id
=
searchCondition
.
value
.
gate_id
}
else
{
queryForm
.
gate_id
=
[]
}
}
else
{
queryForm
.
gate_id
=
[]
}
}
}
}
}
)
)
...
@@ -395,26 +282,14 @@
...
@@ -395,26 +282,14 @@
label
:
item
.
name
,
label
:
item
.
name
,
})
})
}
}
if
(
accountList
.
value
.
length
){
if
(
searchCondition
.
value
.
account_id
&&
searchCondition
.
value
.
account_id
.
length
>
0
){
queryForm
.
account_id
=
searchCondition
.
value
.
account_id
}
else
{
queryForm
.
account_id
.
push
(
accountList
.
value
[
0
].
value
)
}
getPlazaList
()
}
}
}
}
}
)
)
}
}
const
clickSearch
=
function
()
{
pageNum
.
value
=
1
confirmSearch
()
}
const
confirmSearch
=
function
()
{
const
confirmSearch
=
function
()
{
isLoading
.
value
=
true
isLoading
.
value
=
true
const
rawData
=
toRaw
(
queryForm
)
const
rawData
=
toRaw
(
queryForm
)
console
.
log
(
rawData
)
const
data
=
filterEmptyValueInObject
({
const
data
=
filterEmptyValueInObject
({
account_id
:
rawData
.
account_id
.
toString
(),
account_id
:
rawData
.
account_id
.
toString
(),
type
:
rawData
.
type
,
type
:
rawData
.
type
,
...
@@ -424,27 +299,13 @@
...
@@ -424,27 +299,13 @@
direction
:
rawData
.
direction
.
toString
(),
direction
:
rawData
.
direction
.
toString
(),
picType
:
rawData
.
picType
,
picType
:
rawData
.
picType
,
personType
:
rawData
.
personType
.
toString
(),
personType
:
rawData
.
personType
.
toString
(),
startTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
startTime
),
startTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
startTime
),
endTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
endTime
),
endTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
endTime
),
page
:
pageNum
.
value
-
1
,
page
:
pageNum
.
value
-
1
,
pageSize
:
pageSize
.
value
,
pageSize
:
pageSize
.
value
,
})
})
const
storageData
=
filterEmptyValueInObject
(
{
account_id
:
rawData
.
account_id
,
type
:
rawData
.
type
,
plaza_id
:
rawData
.
plaza_id
,
zone_id
:
rawData
.
zone_id
,
gate_id
:
rawData
.
gate_id
,
direction
:
rawData
.
direction
,
picType
:
rawData
.
picType
,
personType
:
rawData
.
personType
,
date
:
rawData
.
date
,
startTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
startTime
),
endTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
endTime
),
}
)
window
.
localStorage
.
setItem
(
'searchCondition'
,
JSON
.
stringify
(
storageData
))
snapshotRecordApi
.
getSnapshotRecordList
(
data
).
then
(
snapshotRecordApi
.
getSnapshotRecordList
(
data
).
then
(
(
r
)
=>
{
(
r
)
=>
{
isLoading
.
value
=
false
isLoading
.
value
=
false
...
@@ -496,7 +357,6 @@
...
@@ -496,7 +357,6 @@
}
}
boxObj
.
value
=
data
;
boxObj
.
value
=
data
;
featureList
.
value
=
[]
featureList
.
value
=
[]
comparisonList
.
value
=
[]
featureApi
.
getPersonContrastList
(
parmas
).
then
((
r
)
=>
{
featureApi
.
getPersonContrastList
(
parmas
).
then
((
r
)
=>
{
isLoadingFeature
.
value
=
false
isLoadingFeature
.
value
=
false
if
(
r
.
data
&&
isArray
(
r
.
data
.
personList
))
{
if
(
r
.
data
&&
isArray
(
r
.
data
.
personList
))
{
...
@@ -531,8 +391,7 @@
...
@@ -531,8 +391,7 @@
pic_type
:
rawData
.
picType
,
pic_type
:
rawData
.
picType
,
countdate
:
formatDate
(
rawData
.
date
),
countdate
:
formatDate
(
rawData
.
date
),
pic_id
:
boxObj
.
value
.
id
,
pic_id
:
boxObj
.
value
.
id
,
ip
:
window
.
_baseImgUrl
,
ip
:
window
.
_baseImgUrl
customScore
:
threshold
.
value
?
threshold
.
value
:
75
}
}
comparisonList
.
value
=
[]
comparisonList
.
value
=
[]
featureApi
.
getAllPersonContrastList
(
parmas
).
then
((
r
)
=>
{
featureApi
.
getAllPersonContrastList
(
parmas
).
then
((
r
)
=>
{
...
@@ -606,78 +465,8 @@
...
@@ -606,78 +465,8 @@
}
}
}
}
const
openImage
=
function
(
item
,
event
){
event
.
stopPropagation
()
if
(
item
.
features_url
){
centerDialogVisible
.
value
=
true
;
let
url
=
item
.
picture_url
otherPictureUrl
.
value
=
url
.
split
(
'0.jpg'
)[
0
]
+
'1.jpg'
}
else
{
ElMessage
(
{
message
:
`该图片没有特征`
,
type
:
'warning'
}
)
return
}
}
const
deleteImage
=
function
(
item
,
event
){
event
.
stopPropagation
()
featureApi
.
updateImage
({
'personUnid'
:
item
.
unid
,
'id'
:
item
.
id
,
'unid'
:
item
.
unid
,
'countdate'
:
item
.
counttime
?
item
.
counttime
:
''
,
}).
then
((
r
)
=>
{
if
(
r
.
msg_code
==
200
){
ElMessage
(
{
message
:
`删除成功`
,
type
:
'success'
}
)
featureList
.
value
.
forEach
((
itemObj
,
index
)
=>
{
if
(
itemObj
.
unid
==
item
.
unid
){
featureList
.
value
.
splice
(
index
,
1
)
}
})
}
})
}
const
addImage
=
function
(
data
,
event
){
event
.
stopPropagation
()
featureApi
.
updateImage
({
'personUnid'
:
boxObj
.
value
.
person_unid
,
'id'
:
data
.
id
,
'unid'
:
data
.
unid
,
'countdate'
:
data
.
counttime
?
data
.
counttime
:
''
,
}).
then
((
r
)
=>
{
if
(
r
.
msg_code
==
200
){
ElMessage
(
{
message
:
`增加成功`
,
type
:
'success'
}
)
comparisonList
.
value
.
forEach
(
item
=>
{
if
(
item
.
unid
==
data
.
unid
){
item
.
person_unid
=
boxObj
.
value
.
person_unid
}
})
}
})
}
__main
()
__main
()
const
fullScreen
=
function
(
className
){
if
(
className
==
'imgBox2_top'
){
refeatureDialogVisible
.
value
=
true
}
else
{
featureDialogVisible
.
value
=
true
}
}
// const
return
{
return
{
// scalar
// scalar
isLoading
,
isLoading
,
...
@@ -687,10 +476,6 @@
...
@@ -687,10 +476,6 @@
isLoadingFeature
,
isLoadingFeature
,
isLoadingComparison
,
isLoadingComparison
,
currentItemId
,
currentItemId
,
centerDialogVisible
,
otherPictureUrl
,
featureDialogVisible
,
refeatureDialogVisible
,
// sequence
// sequence
accountList
,
accountList
,
plazaList
,
plazaList
,
...
@@ -700,8 +485,6 @@
...
@@ -700,8 +485,6 @@
featureList
,
featureList
,
comparisonList
,
comparisonList
,
// mapping
// mapping
boxObj
,
threshold
,
queryForm
,
queryForm
,
// function
// function
onPageNumChange
,
onPageNumChange
,
...
@@ -714,19 +497,23 @@
...
@@ -714,19 +497,23 @@
chooseItem
,
chooseItem
,
reComparison
,
reComparison
,
reComparisonFeature
,
reComparisonFeature
,
downloadFile
,
downloadFile
openImage
,
deleteImage
,
addImage
,
fullScreen
,
clickSearch
}
}
}
}
}
}
</
script
>
</
script
>
<
style
scoped=
"scoped"
lang=
"less"
>
<
style
scoped=
"scoped"
lang=
"less"
>
.single-image
{
height
:
300px
;
width
:
100%
;
}
.imgBox1
{
border-left
:
10px
solid
#efefef
;
box-sizing
:
border-box
;
min-height
:
100%
;
.itemBox{
.itemBox{
position
:
relative
;
position
:
relative
;
}
.downloadFile
{
.downloadFile
{
position
:
absolute
;
position
:
absolute
;
color
:
#1890ff
;
color
:
#1890ff
;
...
@@ -735,30 +522,6 @@
...
@@ -735,30 +522,6 @@
right
:
0
;
right
:
0
;
cursor
:
pointer
;
cursor
:
pointer
;
}
}
.openImage
{
position
:
absolute
;
color
:
#1890ff
;
font-size
:
32px
;
top
:
0
;
right
:
30px
;
cursor
:
pointer
;
}
.delete
{
position
:
absolute
;
color
:
red
;
font-size
:
32px
;
top
:
0
;
right
:
60px
;
cursor
:
pointer
;
}
.add
{
position
:
absolute
;
color
:
#1890ff
;
font-size
:
32px
;
top
:
0
;
right
:
60px
;
cursor
:
pointer
;
}
.featureNum
{
.featureNum
{
position
:
absolute
;
position
:
absolute
;
top
:
0
;
top
:
0
;
...
@@ -768,28 +531,18 @@
...
@@ -768,28 +531,18 @@
font-size
:
16px
;
font-size
:
16px
;
}
}
}
}
.single-image
{
height
:
300px
;
width
:
100%
;
}
.imgBox1
{
border-left
:
10px
solid
#efefef
;
box-sizing
:
border-box
;
min-height
:
100%
;
}
.imgBox2
{
.imgBox2
{
min-height
:
400px
;
min-height
:
400px
;
max-height
:
500px
;
max-height
:
500px
;
overflow-y
:
auto
;
overflow-y
:
auto
;
}
}
.imgBox1_top
{
.imgBox1_top
{
width
:
100%
;
min-height
:
400px
;
min-height
:
400px
;
max-height
:
500px
;
max-height
:
500px
;
overflow-y
:
auto
;
overflow-y
:
auto
;
border-bottom
:
10px
solid
#efefef
;
}
}
.imgBox2_top
{
.imgBox2_top
{
border-top
:
10px
solid
#efefef
;
.btns{
.btns{
text-align
:
right
;
text-align
:
right
;
margin-top
:
10px
;
margin-top
:
10px
;
...
@@ -797,7 +550,6 @@
...
@@ -797,7 +550,6 @@
}
}
button
{
button
{
margin-right
:
10px
;
margin-right
:
10px
;
padding
:
4px
7px
;
}
}
}
}
.colItem
{
.colItem
{
...
@@ -814,14 +566,6 @@
...
@@ -814,14 +566,6 @@
top
:
0
;
top
:
0
;
right
:
0
;
right
:
0
;
}
}
.openImage
{
position
:
absolute
;
color
:
#1890ff
;
font-size
:
32px
;
top
:
0
;
right
:
30px
;
cursor
:
pointer
;
}
}
}
.col
{
.col
{
flex
:
0
0
20%
;
flex
:
0
0
20%
;
...
@@ -830,20 +574,4 @@
...
@@ -830,20 +574,4 @@
.actived
{
.actived
{
border
:
1px
solid
#1890ff
;
border
:
1px
solid
#1890ff
;
}
}
.thresholdInput
{
width
:
60px
;
//
margin-right
:
15px
;
/deep/.el-input__inner{
text-align
:
left
;
}
}
.featureBox
{
height
:
600px
;
}
.featureBoxBtns
{
margin-bottom
:
10px
;
button{
margin-left
:
15px
;
}
}
</
style
>
</
style
>
src/views/FeatureComparisonVerification/api.js
View file @
395de63
...
@@ -36,17 +36,6 @@ class FeatureResultApi {
...
@@ -36,17 +36,6 @@ class FeatureResultApi {
}
}
)
)
}
}
updateImage
(
data
){
return
axiosInstance
.
request
(
{
method
:
'PUT'
,
url
:
`/faceRecognitions`
,
data
:
filterEmptyValueInObject
(
data
)
}
)
}
}
}
const
featureResultApi
=
new
FeatureResultApi
()
const
featureResultApi
=
new
FeatureResultApi
()
...
...
src/views/FeatureLibraryRebuild/FeatureLibraryRebuild.vue
View file @
395de63
...
@@ -187,7 +187,7 @@ export default {
...
@@ -187,7 +187,7 @@ export default {
}
}
resultList
.
value
=
[]
resultList
.
value
=
[]
webSocket
=
new
WebSocket
(
`
${
window
.
_socketUrl
}
/recal/schedule/rebuildFeatureLib
${
queryForm
.
featureRevisitType
}
`
)
webSocket
=
new
WebSocket
(
`
ws://
${
window
.
_serverHost
}
/recal/schedule/rebuildFeatureLib
${
queryForm
.
featureRevisitType
}
`
)
webSocket
.
onopen
=
queryData
webSocket
.
onopen
=
queryData
...
...
src/views/FeatureReExtract/FeatureReExtract.vue
View file @
395de63
...
@@ -191,7 +191,7 @@ export default {
...
@@ -191,7 +191,7 @@ export default {
}
}
resultList
.
value
=
[]
resultList
.
value
=
[]
webSocket
=
new
WebSocket
(
`
${
window
.
_socketUrl
}
/recal/schedule/revisitFeature
${
queryForm
.
featureRevisitType
}
`
)
webSocket
=
new
WebSocket
(
`
ws://
${
window
.
_serverHost
}
/recal/schedule/revisitFeature
${
queryForm
.
featureRevisitType
}
`
)
webSocket
.
onopen
=
queryData
webSocket
.
onopen
=
queryData
...
...
src/views/Main/Main.vue
View file @
395de63
...
@@ -73,37 +73,6 @@
...
@@ -73,37 +73,6 @@
<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/MinutePassenger'"
>
<div
class=
"flex-vertical-center"
>
<img
:src=
"require('./Icons/7.svg')"
style=
"height: auto;width:20px"
/>
<span
style=
"padding: 0 5px"
>
分钟客流数据
</span>
</div>
</a-menu-item>
<a-menu-item
:key=
"'/Main/SystemLog'"
>
<div
class=
"flex-vertical-center"
>
<img
:src=
"require('./Icons/7.svg')"
style=
"height: auto;width:20px"
/>
<span
style=
"padding: 0 5px"
>
系统日志
</span>
</div>
</a-menu-item>
<a-menu-item
:key=
"'/Main/DataReplay'"
>
<div
class=
"flex-vertical-center"
>
<img
:src=
"require('./Icons/2.svg')"
style=
"height: auto;width:20px"
/>
<span
style=
"padding: 0 5px"
>
数据重放
</span>
</div>
</a-menu-item>
<a-menu-item
:key=
"'/Main/equipmentDataRetransmission'"
>
<div
class=
"flex-vertical-center"
>
<img
:src=
"require('./Icons/2.svg')"
style=
"height: auto;width:20px"
/>
<span
style=
"padding: 0 5px"
>
设备数据重传
</span>
</div>
</a-menu-item>
<a-menu-item
:key=
"'/Main/Featurematching'"
>
<div
class=
"flex-vertical-center"
>
<img
:src=
"require('./Icons/2.svg')"
style=
"height: auto;width:20px"
/>
<span
style=
"padding: 0 5px"
>
特征匹配
</span>
</div>
</a-menu-item>
</a-menu>
</a-menu>
</el-aside>
</el-aside>
<el-main>
<el-main>
...
...
src/views/PeopleReContrast/PeopleReContrast.vue
View file @
395de63
...
@@ -188,7 +188,7 @@ export default {
...
@@ -188,7 +188,7 @@ export default {
}
}
resultList
.
value
=
[]
resultList
.
value
=
[]
webSocket
=
new
WebSocket
(
`
${
window
.
_socketUrl
}
/recal/schedule/rematchPerson
${
queryForm
.
featureRevisitType
}
`
)
webSocket
=
new
WebSocket
(
`
ws://
${
window
.
_serverHost
}
/recal/schedule/rematchPerson
${
queryForm
.
featureRevisitType
}
`
)
webSocket
.
onopen
=
queryData
webSocket
.
onopen
=
queryData
...
...
src/views/SnapshotCluster/ClusterResult/ClusterResult.less
View file @
395de63
...
@@ -2,14 +2,3 @@
...
@@ -2,14 +2,3 @@
height: 300px;
height: 300px;
width: 100%;
width: 100%;
}
}
.direction{
font-weight: 900;
background-color: red;
color: white;
}
.direction1{
background-color: green;
}
.direction0{
background-color: orange;
}
src/views/SnapshotCluster/ClusterResult/ClusterResult.vue
View file @
395de63
<
template
>
<
template
>
<div
class=
"containter"
>
<a-form
:model=
"queryForm"
layout=
"inline"
:label-col=
"
{ style: { width: '70px' } }">
<a-form
:model=
"queryForm"
layout=
"inline"
:label-col=
"
{ style: { width: '70px' } }">
<a-form-item
label=
"集团:"
style=
"padding: 5px 0"
>
<a-form-item
label=
"集团:"
style=
"padding: 5px 0"
>
<a-select
v-model:value=
"queryForm.account_id"
<a-select
v-model:value=
"queryForm.account_id"
...
@@ -81,7 +80,6 @@
...
@@ -81,7 +80,6 @@
style=
"width: 280px"
>
style=
"width: 280px"
>
<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=
"0"
>
顾客
</a-select-option>
<a-select-option
:value=
"-99"
>
未知
</a-select-option>
</a-select>
</a-select>
</a-form-item>
</a-form-item>
<a-form-item
label=
"选择日期:"
style=
"padding: 5px 0"
>
<a-form-item
label=
"选择日期:"
style=
"padding: 5px 0"
>
...
@@ -97,54 +95,34 @@
...
@@ -97,54 +95,34 @@
<a-input
v-model:value=
"queryForm.maxPic"
style=
"width: 129px"
/>
<a-input
v-model:value=
"queryForm.maxPic"
style=
"width: 129px"
/>
</a-form-item>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"clickSearch"
:loading=
"isLoading"
>
查询
</a-button>
<a-button
type=
"primary"
@
click=
"confirmSearch"
:loading=
"isLoading"
>
查询
</a-button>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"comparativeFun"
>
特征对比
</a-button>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"singleComparativeFun"
>
单张特征对比
</a-button>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"clerkComparativeFun"
>
店员特征对比
</a-button>
</a-form-item>
</a-form-item>
</a-form>
</a-form>
<div
v-loading=
"isLoading"
>
<div
v-loading=
"isLoading"
>
<div
class=
"resultContent"
:style=
"
{'height':contentHeight+'px'}">
<div
v-for=
"person in dataList"
style=
"margin: 10px 0;border: solid 1px black"
>
<template
v-for=
"person in dataList"
>
<div
style=
"margin: 10px 0;border: solid 1px black"
:class=
"person.checked?'checked':''"
>
<el-checkbox
class=
"checkBox"
v-model=
"person.checked"
@
change=
'checkChange(person)'
></el-checkbox>
人id:
{{
' '
+
person
.
person_unid
}}
人id:
{{
' '
+
person
.
person_unid
}}
图片数量:
{{
person
.
perrsonList
.
length
}}
图片数量:
{{
person
.
perrsonList
.
length
}}
<el-row
v-for=
"row in getPagedList(person.perrsonList, 8)"
>
<el-row
v-for=
"row in getPagedList(person.perrsonList, 8)"
>
<el-col
:span=
"3"
v-for=
"item in row"
>
<el-col
:span=
"3"
v-for=
"item in row"
>
<div
style=
"margin: 0 5px"
@
click=
"handleClick(item)"
:class=
"currentItemId==item.id?'actived':''"
>
<div
style=
"margin: 0 5px"
>
<div
style=
""
>
<div
style=
"display:flex; justify-content: flex-end "
>
<span
@
click=
"downloadTrajectoryFile(item.track_url)"
class=
"downBtn"
>
轨迹
</span>
<span
@
click=
"downloadFile(item.features_url)"
<span
@
click=
"downloadFile(item.features_url)"
class=
"downBtn downBtn1
"
>
style=
"color: #409EFF;font-size: 15px;cursor: pointer;
"
>
特征
下载特征值文件
</span>
</span>
</div>
</div>
<el-image
:src=
"item.picture_url"
<el-image
:src=
"item.picture_url"
:fit=
"'fill'"
:fit=
"'fill'"
class=
"single-image"
>
class=
"single-image"
>
</el-image>
</el-image>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
人员类型:
{{
item
.
person_type
==
1
?
'店员'
:(
item
.
person_type
==
0
?
'顾客'
:
'未知'
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
性别:
{{
formatGender
(
item
.
gender
)
}}
</div>
<div
class=
"direction"
:class=
"'direction'+item.direction"
>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
</div>
</div>
</el-col>
</el-col>
</el-row>
</el-row>
</div>
</div>
</
template
>
</div>
<a-pagination
<a-pagination
v-model:current=
"pageNum"
v-model:current=
"pageNum"
v-model:pageSize=
"pageSize"
v-model:pageSize=
"pageSize"
...
@@ -158,11 +136,6 @@
...
@@ -158,11 +136,6 @@
style="text-align:center"
style="text-align:center"
/>
/>
</div>
</div>
</div>
<!-- <imgDialog ref='imgModelRef'></imgDialog> -->
<DetailDialog
ref=
"DetailDialogRef"
/>
<DetailDialogComparison
ref=
"DetailDialogComparisonRef"
/>
<singleImgComparisonDialog
ref=
"singleImgComparisonRef"
></singleImgComparisonDialog>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -171,41 +144,27 @@ import clusterResultApi from '@/views/SnapshotCluster/ClusterResult/ClusterResul
...
@@ -171,41 +144,27 @@ import clusterResultApi from '@/views/SnapshotCluster/ClusterResult/ClusterResul
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
moment
from
'moment'
import
moment
from
'moment'
import
{
filterEmptyValueInObject
,
formatDate
,
formatTime
,
getPagedList
}
from
'@/PublicUtil/PublicUtil'
import
{
filterEmptyValueInObject
,
formatDate
,
formatTime
,
getPagedList
}
from
'@/PublicUtil/PublicUtil'
// import imgDialog from '../imgDialog.vue'
import
{
ElMessage
}
from
'element-plus'
import
DetailDialog
from
"../../ComparisonCapturedPictures/DetailDialog.vue"
;
import
DetailDialogComparison
from
"../../ComparisonCapturedPictures/DetailDialogComparisonNew.vue"
;
import
singleImgComparisonDialog
from
"../singleImgComparisonDialog.vue"
;
export
default
{
export
default
{
components
:{
// imgDialog
DetailDialog
,
DetailDialogComparison
,
singleImgComparisonDialog
},
setup
()
{
setup
()
{
// scalar
// scalar
const
pageNum
=
ref
(
1
)
const
pageNum
=
ref
(
1
)
const
pageSize
=
ref
(
10
)
const
pageSize
=
ref
(
10
)
const
total
=
ref
()
const
total
=
ref
()
const
isLoading
=
ref
(
false
)
const
isLoading
=
ref
(
false
)
const
currobj
=
ref
({})
const
currentItemId
=
ref
()
// sequence
// sequence
const
dataList
=
ref
([])
const
dataList
=
ref
([])
const
accountList
=
ref
([])
const
accountList
=
ref
([])
const
plazaList
=
ref
([])
const
plazaList
=
ref
([])
const
zoneList
=
ref
([])
const
zoneList
=
ref
([])
const
gateList
=
ref
([])
const
gateList
=
ref
([])
// const imgModelRef = ref();
const
pagedTableDataList
=
computed
(
const
pagedTableDataList
=
computed
(
()
=>
{
()
=>
{
return
getPagedList
(
dataList
.
value
,
8
)
return
getPagedList
(
dataList
.
value
,
8
)
}
}
)
)
const
DetailDialogRef
=
ref
();
const
DetailDialogComparisonRef
=
ref
();
const
singleImgComparisonRef
=
ref
()
const
queryForm
=
reactive
(
const
queryForm
=
reactive
(
{
{
account_id
:
[],
account_id
:
[],
...
@@ -223,20 +182,6 @@ export default {
...
@@ -223,20 +182,6 @@ export default {
maxPic
:
100
,
maxPic
:
100
,
}
}
)
)
const
searchCondition
=
ref
({})
if
(
window
.
localStorage
.
getItem
(
'searchCondition'
)){
searchCondition
.
value
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
'searchCondition'
));
queryForm
.
type
=
searchCondition
.
value
.
type
;
queryForm
.
zone_id
=
searchCondition
.
value
.
zone_id
;
queryForm
.
gate_id
=
searchCondition
.
value
.
gate_id
;
queryForm
.
direction
=
searchCondition
.
value
.
direction
;
queryForm
.
picType
=
searchCondition
.
value
.
picType
;
queryForm
.
date
=
searchCondition
.
value
.
date
;
queryForm
.
startTime
=
searchCondition
.
value
.
startTime
;
queryForm
.
endTime
=
searchCondition
.
value
.
endTime
;
queryForm
.
minPic
=
searchCondition
.
value
.
minPic
||
0
;
queryForm
.
maxPic
=
searchCondition
.
value
.
maxPic
||
100
;
}
// function
// function
const
onPageNumChange
=
function
(
num
)
{
const
onPageNumChange
=
function
(
num
)
{
pageNum
.
value
=
num
pageNum
.
value
=
num
...
@@ -250,9 +195,9 @@ export default {
...
@@ -250,9 +195,9 @@ export default {
}
}
const
onAccountChange
=
function
()
{
const
onAccountChange
=
function
()
{
getPlazaList
(
1
)
getPlazaList
()
//
getZoneList()
getZoneList
()
//
getGateList()
getGateList
()
}
}
const
onPlazaChange
=
function
()
{
const
onPlazaChange
=
function
()
{
...
@@ -264,7 +209,7 @@ export default {
...
@@ -264,7 +209,7 @@ export default {
getGateList
()
getGateList
()
}
}
const
getPlazaList
=
function
(
val
)
{
const
getPlazaList
=
function
()
{
queryForm
.
plaza_id
=
[]
queryForm
.
plaza_id
=
[]
plazaList
.
value
=
[]
plazaList
.
value
=
[]
clusterResultApi
.
getPlazaList
(
clusterResultApi
.
getPlazaList
(
...
@@ -284,22 +229,13 @@ export default {
...
@@ -284,22 +229,13 @@ export default {
}
}
)
)
}
}
if
(
plazaList
.
value
.
length
>
0
){
if
(
!
val
&&
searchCondition
.
value
.
plaza_id
&&
searchCondition
.
value
.
plaza_id
.
length
>
0
){
queryForm
.
plaza_id
=
searchCondition
.
value
.
plaza_id
}
else
{
queryForm
.
plaza_id
.
push
(
plazaList
.
value
[
0
].
value
)
}
getZoneList
(
1
)
getGateList
(
1
)
confirmSearch
()
}
}
}
}
}
)
)
}
}
const
getZoneList
=
function
(
val
)
{
const
getZoneList
=
function
()
{
queryForm
.
zone_id
=
[]
zoneList
.
value
=
[]
zoneList
.
value
=
[]
clusterResultApi
.
getZoneList
(
clusterResultApi
.
getZoneList
(
{
{
...
@@ -319,21 +255,13 @@ export default {
...
@@ -319,21 +255,13 @@ export default {
}
}
)
)
}
}
if
(
zoneList
.
value
.
length
){
if
(
val
&&
searchCondition
.
value
.
zone_id
&&
searchCondition
.
value
.
zone_id
.
length
>
0
){
queryForm
.
zone_id
=
searchCondition
.
value
.
zone_id
}
else
{
queryForm
.
zone_id
=
[]
}
}
else
{
queryForm
.
zone_id
=
[]
}
}
}
}
}
)
)
}
}
const
getGateList
=
function
(
val
)
{
const
getGateList
=
function
()
{
queryForm
.
gate_id
=
[]
gateList
.
value
=
[]
gateList
.
value
=
[]
clusterResultApi
.
getGateList
(
clusterResultApi
.
getGateList
(
{
{
...
@@ -355,15 +283,6 @@ export default {
...
@@ -355,15 +283,6 @@ export default {
}
}
)
)
}
}
if
(
gateList
.
value
.
length
){
if
(
val
&&
searchCondition
.
value
.
gate_id
&&
searchCondition
.
value
.
gate_id
.
length
>
0
){
queryForm
.
gate_id
=
searchCondition
.
value
.
gate_id
}
else
{
queryForm
.
gate_id
=
[]
}
}
else
{
queryForm
.
gate_id
=
[]
}
}
}
}
}
)
)
...
@@ -385,22 +304,11 @@ export default {
...
@@ -385,22 +304,11 @@ export default {
}
}
)
)
}
}
if
(
accountList
.
value
.
length
){
if
(
searchCondition
.
value
.
account_id
&&
searchCondition
.
value
.
account_id
.
length
>
0
){
queryForm
.
account_id
=
searchCondition
.
value
.
account_id
}
else
{
queryForm
.
account_id
.
push
(
accountList
.
value
[
0
].
value
)
}
getPlazaList
()
}
}
}
}
}
)
)
}
}
const
clickSearch
=
function
()
{
pageNum
.
value
=
1
confirmSearch
()
}
const
confirmSearch
=
function
()
{
const
confirmSearch
=
function
()
{
isLoading
.
value
=
true
isLoading
.
value
=
true
const
rawData
=
toRaw
(
queryForm
)
const
rawData
=
toRaw
(
queryForm
)
...
@@ -422,30 +330,12 @@ export default {
...
@@ -422,30 +330,12 @@ export default {
pageSize
:
pageSize
.
value
,
pageSize
:
pageSize
.
value
,
}
}
)
)
const
storageData
=
filterEmptyValueInObject
(
{
account_id
:
rawData
.
account_id
,
type
:
rawData
.
type
,
plaza_id
:
rawData
.
plaza_id
,
zone_id
:
rawData
.
zone_id
,
gate_id
:
rawData
.
gate_id
,
direction
:
rawData
.
direction
,
picType
:
rawData
.
picType
,
personType
:
rawData
.
personType
,
date
:
rawData
.
date
,
minPic
:
rawData
.
minPic
,
maxPic
:
rawData
.
maxPic
,
startTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
startTime
),
endTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
endTime
),
}
)
window
.
localStorage
.
setItem
(
'searchCondition'
,
JSON
.
stringify
(
storageData
))
clusterResultApi
.
getClusterResultList
(
data
).
then
(
clusterResultApi
.
getClusterResultList
(
data
).
then
(
(
r
)
=>
{
(
r
)
=>
{
isLoading
.
value
=
false
isLoading
.
value
=
false
sortDataList
(
r
.
data
.
persons
)
sortDataList
(
r
.
data
.
persons
)
r
.
data
.
persons
.
forEach
((
itemPerson
)
=>
{
r
.
data
.
persons
.
forEach
((
itemPerson
)
=>
{
itemPerson
.
checked
=
false
itemPerson
.
perrsonList
.
forEach
((
item
)
=>
{
itemPerson
.
perrsonList
.
forEach
((
item
)
=>
{
if
(
item
.
features_url
)
{
if
(
item
.
features_url
)
{
item
.
features_url
=
window
.
_baseImgUrl
+
item
.
features_url
item
.
features_url
=
window
.
_baseImgUrl
+
item
.
features_url
...
@@ -453,39 +343,14 @@ export default {
...
@@ -453,39 +343,14 @@ export default {
if
(
item
.
picture_url
)
{
if
(
item
.
picture_url
)
{
item
.
picture_url
=
window
.
_baseImgUrl
+
item
.
picture_url
item
.
picture_url
=
window
.
_baseImgUrl
+
item
.
picture_url
}
}
if
(
item
.
track_url
)
{
item
.
track_url
=
window
.
_baseImgUrl
+
item
.
track_url
}
})
})
})
})
dataList
.
value
=
r
.
data
.
persons
dataList
.
value
=
r
.
data
.
persons
total
.
value
=
r
.
data
.
pageNum
total
.
value
=
r
.
data
.
pageNum
document
.
getElementsByClassName
(
'resultContent'
)[
0
].
scrollTop
=
0
}
}
)
)
}
}
const
formatGender
=
function
(
number
){
switch
(
number
)
{
case
1
:
{
return
'男'
}
case
-
1
:
{
return
'未知'
}
case
0
:
{
return
'女'
}
default
:
{
break
}
}
}
const
formatDirection
=
function
(
number
)
{
const
formatDirection
=
function
(
number
)
{
switch
(
number
)
switch
(
number
)
{
{
...
@@ -519,131 +384,9 @@ export default {
...
@@ -519,131 +384,9 @@ export default {
const
downloadFile
=
function
(
url
)
{
const
downloadFile
=
function
(
url
)
{
window
.
open
(
url
)
window
.
open
(
url
)
}
}
const
downloadTrajectoryFile
=
function
(
url
){
window
.
open
(
url
)
}
const
handleClick
=
function
(
data
){
currentItemId
.
value
=
data
.
id
currobj
.
value
=
data
;
// clusterResultApi.getBodyPoint({'feature_url':feature}).then(
// (r) => {
// imgModelRef.value.initDialog(url,r.data);
// }
// )
}
const
checkChange
=
function
(
data
){
console
.
log
(
data
)
}
// 特征对比
const
comparativeFun
=
function
(){
const
rawData
=
toRaw
(
queryForm
)
if
(
!
currobj
.
value
.
id
){
ElMessage
(
{
message
:
`请选择图片`
,
type
:
'warning'
}
)
return
}
if
(
!
currobj
.
value
.
picture_url
){
ElMessage
(
{
message
:
`该图片没有特征,请选择有效的图片`
,
type
:
'warning'
}
)
return
}
let
parmas
=
{
mall_id
:
currobj
.
value
.
mall_id
,
picType
:
rawData
.
picType
,
pic_id
:
currobj
.
value
.
id
,
countdate
:
formatDate
(
rawData
.
date
),
dataList
:[]
}
dataList
.
value
.
forEach
(
item
=>
{
if
(
item
.
checked
&&
item
.
checked
==
true
)
{
parmas
.
dataList
.
push
(
item
)
}
})
if
(
parmas
.
dataList
&&
parmas
.
dataList
.
length
>
0
){
DetailDialogComparisonRef
.
value
.
initDialog
(
currobj
.
value
,
parmas
);
}
else
{
ElMessage
(
{
message
:
`请选择聚类图片`
,
type
:
'warning'
}
)
return
}
}
//单张特征对比
const
singleComparativeFun
=
function
(){
if
(
!
currobj
.
value
.
id
){
ElMessage
(
{
message
:
`请选择图片`
,
type
:
'warning'
}
)
return
}
if
(
!
currobj
.
value
.
picture_url
){
ElMessage
(
{
message
:
`该图片没有特征,请选择有效的图片`
,
type
:
'warning'
}
)
return
}
const
rawData
=
toRaw
(
queryForm
)
let
parmas
=
{
person_unid
:
currobj
.
value
.
person_unid
,
pic_type
:
rawData
.
picType
,
countdate
:
formatDate
(
rawData
.
date
),
pic_id
:
currobj
.
value
.
id
,
ip
:
window
.
_baseImgUrl
,
plaza_id
:
currobj
.
value
.
mall_id
}
singleImgComparisonRef
.
value
.
initDialog
(
parmas
);
}
// 店员特征对比
const
clerkComparativeFun
=
function
(){
const
rawData
=
toRaw
(
queryForm
)
if
(
!
currobj
.
value
.
id
){
ElMessage
(
{
message
:
`请选择图片进行对比`
,
type
:
'warning'
}
)
return
}
if
(
!
currobj
.
value
.
picture_url
){
ElMessage
(
{
message
:
`该图片没有特征,请选择有效的图片`
,
type
:
'warning'
}
)
return
}
let
parmas
=
{
plaza_id
:
currobj
.
value
.
mall_id
,
pic_type
:
rawData
.
picType
,
pic_id
:
currobj
.
value
.
id
,
ip
:
window
.
_baseImgUrl
,
countdate
:
formatDate
(
rawData
.
date
)
}
DetailDialogRef
.
value
.
initDialog
(
currobj
.
value
,
parmas
);
}
const
contentHeight
=
ref
(
0
)
const
__main
=
function
()
{
const
__main
=
function
()
{
getAccountList
()
getAccountList
()
contentHeight
.
value
=
window
.
innerHeight
-
310
}
}
__main
()
__main
()
...
@@ -654,8 +397,6 @@ export default {
...
@@ -654,8 +397,6 @@ export default {
pageNum
,
pageNum
,
pageSize
,
pageSize
,
total
,
total
,
currentItemId
,
currobj
,
// sequence
// sequence
accountList
,
accountList
,
plazaList
,
plazaList
,
...
@@ -663,7 +404,6 @@ export default {
...
@@ -663,7 +404,6 @@ export default {
gateList
,
gateList
,
pagedTableDataList
,
pagedTableDataList
,
dataList
,
dataList
,
contentHeight
,
// mapping
// mapping
queryForm
,
queryForm
,
// function
// function
...
@@ -676,19 +416,6 @@ export default {
...
@@ -676,19 +416,6 @@ export default {
formatDirection
,
formatDirection
,
downloadFile
,
downloadFile
,
getPagedList
,
getPagedList
,
handleClick
,
comparativeFun
,
checkChange
,
clerkComparativeFun
,
singleComparativeFun
,
formatGender
,
downloadTrajectoryFile
,
clickSearch
,
// ref
// imgModelRef,
DetailDialogRef
,
DetailDialogComparisonRef
,
singleImgComparisonRef
}
}
}
}
}
}
...
@@ -696,28 +423,5 @@ export default {
...
@@ -696,28 +423,5 @@ export default {
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
@import
"./ClusterResult"
;
@import
"./ClusterResult"
;
.actived
{
border
:
3px
solid
#1890ff
;
}
.checkBox
{
margin-left
:
10px
;
}
.checked
{
background-color
:
#bbb
;
}
.resultContent
{
overflow
:
auto
;
min-height
:
500px
;
}
.downBtn
{
color
:
#409EFF
;
font-size
:
15px
;
cursor
:
pointer
;
display
:
inline-block
;
width
:
auto
;
}
.downBtn1
{
float
:
right
;
}
</
style
>
</
style
>
src/views/SnapshotCluster/ClusterResult/ClusterResultApi.js
View file @
395de63
...
@@ -69,17 +69,6 @@ class ClusterResultApi {
...
@@ -69,17 +69,6 @@ class ClusterResultApi {
)
)
}
}
getBodyPoint
(
data
)
{
return
axiosInstance
.
request
(
{
method
:
'GET'
,
url
:
`/feature/bodyPoint`
,
params
:
filterEmptyValueInObject
(
data
)
}
)
}
}
}
const
clusterResultApi
=
new
ClusterResultApi
()
const
clusterResultApi
=
new
ClusterResultApi
()
...
...
src/views/SnapshotCluster/SnapshotCluster.vue
View file @
395de63
...
@@ -7,10 +7,10 @@
...
@@ -7,10 +7,10 @@
聚类结果
聚类结果
</a-menu-item>
</a-menu-item>
</a-menu>
</a-menu>
<div
v-
if
=
"currentMenu[0] === '抓拍记录'"
>
<div
v-
show
=
"currentMenu[0] === '抓拍记录'"
>
<SnapshotRecord></SnapshotRecord>
<SnapshotRecord></SnapshotRecord>
</div>
</div>
<div
v-
if
=
"currentMenu[0] === '聚类结果'"
>
<div
v-
show
=
"currentMenu[0] === '聚类结果'"
>
<ClusterResult></ClusterResult>
<ClusterResult></ClusterResult>
</div>
</div>
</
template
>
</
template
>
...
...
src/views/SnapshotCluster/SnapshotRecord/SnapshotRecord.less
View file @
395de63
...
@@ -2,14 +2,3 @@
...
@@ -2,14 +2,3 @@
height: 300px;
height: 300px;
width: 100%;
width: 100%;
}
}
.direction{
font-weight: 900;
background-color: red;
color: white;
}
.direction1{
background-color: green;
}
.direction0{
background-color: orange;
}
src/views/SnapshotCluster/SnapshotRecord/SnapshotRecord.vue
View file @
395de63
...
@@ -79,7 +79,6 @@
...
@@ -79,7 +79,6 @@
style=
"width: 280px"
>
style=
"width: 280px"
>
<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=
"0"
>
顾客
</a-select-option>
<a-select-option
:value=
"-99"
>
未知
</a-select-option>
</a-select>
</a-select>
</a-form-item>
</a-form-item>
<a-form-item
label=
"选择日期:"
style=
"padding: 5px 0"
>
<a-form-item
label=
"选择日期:"
style=
"padding: 5px 0"
>
...
@@ -90,26 +89,18 @@
...
@@ -90,26 +89,18 @@
<a-time-picker
v-model:value=
"queryForm.endTime"
style=
"width: 140px"
/>
<a-time-picker
v-model:value=
"queryForm.endTime"
style=
"width: 140px"
/>
</a-form-item>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"clickSearch"
:loading=
"isLoading"
>
查询
</a-button>
<a-button
type=
"primary"
@
click=
"confirmSearch"
:loading=
"isLoading"
>
查询
</a-button>
</a-form-item>
<a-form-item
style=
"padding: 5px 0"
>
<a-button
type=
"primary"
@
click=
"comparativeFun"
>
特征对比验证
</a-button>
</a-form-item>
</a-form-item>
</a-form>
</a-form>
<div
v-loading=
"isLoading"
>
<div
v-loading=
"isLoading"
>
<div
class=
"resultContent"
:style=
"
{'height':contentHeight+'px'}">
<el-row
v-for=
"row in pagedTableDataList"
>
<el-row
v-for=
"row in pagedTableDataList"
>
<el-col
:span=
"3"
v-for=
"item in row"
>
<el-col
:span=
"3"
v-for=
"item in row"
>
<div
style=
"margin: 0 5px;cursor: pointer;"
@
click=
"handleClick(item)"
:class=
"currentItemId==item.id?'actived':''"
>
<div
style=
"margin: 0 5px"
>
<div
style=
""
>
<div
style=
"display:flex; justify-content: flex-end "
>
<span
@
click=
"downloadTrajectoryFile(item.track_url)"
class=
"downBtn"
>
轨迹
</span>
<span
@
click=
"downloadFile(item.features_url)"
<span
@
click=
"downloadFile(item.features_url)"
class=
"downBtn downBtn1
"
>
style=
"color: #409EFF;font-size: 15px;cursor: pointer;
"
>
特征
下载特征值文件
</span>
</span>
</div>
</div>
<el-image
:src=
"item.picture_url"
<el-image
:src=
"item.picture_url"
...
@@ -117,14 +108,12 @@
...
@@ -117,14 +108,12 @@
class=
"single-image"
>
class=
"single-image"
>
</el-image>
</el-image>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
时间:
{{
item
.
counttime
}}
</div>
<div>
人员类型:
{{
item
.
person_type
==
1
?
'店员'
:(
item
.
person_type
==
0
?
'顾客'
:
'未知'
)
}}
</div>
<div>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
性别:
{{
formatGender
(
item
.
gender
)
}}
</div>
<div
class=
"direction"
:class=
"'direction'+item.direction"
>
方向:
{{
formatDirection
(
item
.
direction
)
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
<div>
地点:
{{
item
.
gate_name
}}
</div>
</div>
</div>
</el-col>
</el-col>
</el-row>
</el-row>
</div>
<a-pagination
<a-pagination
v-model:current=
"pageNum"
v-model:current=
"pageNum"
v-model:pageSize=
"pageSize"
v-model:pageSize=
"pageSize"
...
@@ -138,8 +127,6 @@
...
@@ -138,8 +127,6 @@
style="text-align:center"
style="text-align:center"
/>
/>
</div>
</div>
<!--
<imgDialog
ref=
'imgModelRef'
></imgDialog>
-->
<DetailDialog
ref=
"DetailDialogRef"
/>
</
template
>
</
template
>
<
script
>
<
script
>
...
@@ -148,14 +135,8 @@ import snapshotRecordApi from '@/views/SnapshotCluster/SnapshotRecord/SnapshotRe
...
@@ -148,14 +135,8 @@ import snapshotRecordApi from '@/views/SnapshotCluster/SnapshotRecord/SnapshotRe
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
{
isArray
}
from
'@/PublicUtil/Judgment'
import
moment
from
'moment'
import
moment
from
'moment'
import
{
filterEmptyValueInObject
,
formatDate
,
formatTime
,
getPagedList
}
from
'@/PublicUtil/PublicUtil'
import
{
filterEmptyValueInObject
,
formatDate
,
formatTime
,
getPagedList
}
from
'@/PublicUtil/PublicUtil'
// import imgDialog from '../imgDialog.vue'
import
{
ElMessage
}
from
'element-plus'
import
DetailDialog
from
"../../ComparisonCapturedPictures/DetailDialog.vue"
;
export
default
{
export
default
{
components
:{
// imgDialog ,
DetailDialog
},
setup
()
{
setup
()
{
// scalar
// scalar
const
pageNum
=
ref
(
1
)
const
pageNum
=
ref
(
1
)
...
@@ -168,11 +149,7 @@ export default {
...
@@ -168,11 +149,7 @@ export default {
const
plazaList
=
ref
([])
const
plazaList
=
ref
([])
const
zoneList
=
ref
([])
const
zoneList
=
ref
([])
const
gateList
=
ref
([])
const
gateList
=
ref
([])
const
imgModelRef
=
ref
();
const
currentItemId
=
ref
()
const
currobj
=
ref
({})
// ref
const
DetailDialogRef
=
ref
();
const
pagedTableDataList
=
computed
(
const
pagedTableDataList
=
computed
(
()
=>
{
()
=>
{
return
getPagedList
(
dataList
.
value
,
8
)
return
getPagedList
(
dataList
.
value
,
8
)
...
@@ -194,18 +171,6 @@ export default {
...
@@ -194,18 +171,6 @@ export default {
endTime
:
moment
(
'23:59:59'
,
'HH:mm:ss'
),
endTime
:
moment
(
'23:59:59'
,
'HH:mm:ss'
),
}
}
)
)
const
searchCondition
=
ref
({})
if
(
window
.
localStorage
.
getItem
(
'searchCondition'
)){
searchCondition
.
value
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
'searchCondition'
));
queryForm
.
type
=
searchCondition
.
value
.
type
;
queryForm
.
zone_id
=
searchCondition
.
value
.
zone_id
;
queryForm
.
gate_id
=
searchCondition
.
value
.
gate_id
;
queryForm
.
direction
=
searchCondition
.
value
.
direction
;
queryForm
.
picType
=
searchCondition
.
value
.
picType
;
queryForm
.
date
=
searchCondition
.
value
.
date
;
queryForm
.
startTime
=
searchCondition
.
value
.
startTime
;
queryForm
.
endTime
=
searchCondition
.
value
.
endTime
;
}
// function
// function
const
onPageNumChange
=
function
(
num
)
{
const
onPageNumChange
=
function
(
num
)
{
pageNum
.
value
=
num
pageNum
.
value
=
num
...
@@ -219,9 +184,9 @@ export default {
...
@@ -219,9 +184,9 @@ export default {
}
}
const
onAccountChange
=
function
()
{
const
onAccountChange
=
function
()
{
getPlazaList
(
1
)
getPlazaList
()
//
getZoneList()
getZoneList
()
//
getGateList()
getGateList
()
}
}
const
onPlazaChange
=
function
()
{
const
onPlazaChange
=
function
()
{
...
@@ -233,7 +198,7 @@ export default {
...
@@ -233,7 +198,7 @@ export default {
getGateList
()
getGateList
()
}
}
const
getPlazaList
=
function
(
val
)
{
const
getPlazaList
=
function
()
{
queryForm
.
plaza_id
=
[]
queryForm
.
plaza_id
=
[]
plazaList
.
value
=
[]
plazaList
.
value
=
[]
snapshotRecordApi
.
getPlazaList
(
snapshotRecordApi
.
getPlazaList
(
...
@@ -242,8 +207,10 @@ export default {
...
@@ -242,8 +207,10 @@ export default {
}
}
).
then
(
).
then
(
(
r
)
=>
{
(
r
)
=>
{
if
(
isArray
(
r
)){
if
(
isArray
(
r
))
for
(
const
item
of
r
){
{
for
(
const
item
of
r
)
{
plazaList
.
value
.
push
(
plazaList
.
value
.
push
(
{
{
value
:
item
.
id
,
value
:
item
.
id
,
...
@@ -251,22 +218,12 @@ export default {
...
@@ -251,22 +218,12 @@ export default {
}
}
)
)
}
}
if
(
plazaList
.
value
.
length
){
if
(
!
val
&&
searchCondition
.
value
.
plaza_id
&&
searchCondition
.
value
.
plaza_id
.
length
>
0
){
queryForm
.
plaza_id
=
searchCondition
.
value
.
plaza_id
}
else
{
queryForm
.
plaza_id
.
push
(
plazaList
.
value
[
0
].
value
)
}
getZoneList
(
1
)
getGateList
(
1
)
confirmSearch
()
}
}
}
}
}
)
)
}
}
const
getZoneList
=
function
(
val
)
{
const
getZoneList
=
function
()
{
queryForm
.
zone_id
=
[]
queryForm
.
zone_id
=
[]
zoneList
.
value
=
[]
zoneList
.
value
=
[]
snapshotRecordApi
.
getZoneList
(
snapshotRecordApi
.
getZoneList
(
...
@@ -287,21 +244,13 @@ export default {
...
@@ -287,21 +244,13 @@ export default {
}
}
)
)
}
}
if
(
zoneList
.
value
.
length
){
if
(
val
&&
searchCondition
.
value
.
zone_id
&&
searchCondition
.
value
.
zone_id
.
length
>
0
){
queryForm
.
zone_id
=
searchCondition
.
value
.
zone_id
}
else
{
queryForm
.
zone_id
=
[]
}
}
else
{
queryForm
.
zone_id
=
[]
}
}
}
}
}
)
)
}
}
const
getGateList
=
function
(
val
)
{
const
getGateList
=
function
()
{
queryForm
.
gate_id
=
[]
gateList
.
value
=
[]
gateList
.
value
=
[]
snapshotRecordApi
.
getGateList
(
snapshotRecordApi
.
getGateList
(
{
{
...
@@ -323,15 +272,6 @@ export default {
...
@@ -323,15 +272,6 @@ export default {
}
}
)
)
}
}
if
(
gateList
.
value
.
length
){
if
(
val
&&
searchCondition
.
value
.
gate_id
&&
searchCondition
.
value
.
gate_id
.
length
>
0
){
queryForm
.
gate_id
=
searchCondition
.
value
.
gate_id
}
else
{
queryForm
.
gate_id
=
[]
}
}
else
{
queryForm
.
gate_id
=
[]
}
}
}
}
}
)
)
...
@@ -353,14 +293,6 @@ export default {
...
@@ -353,14 +293,6 @@ export default {
}
}
)
)
}
}
if
(
accountList
.
value
.
length
){
if
(
searchCondition
.
value
.
account_id
&&
searchCondition
.
value
.
account_id
.
length
>
0
){
queryForm
.
account_id
=
searchCondition
.
value
.
account_id
}
else
{
queryForm
.
account_id
.
push
(
accountList
.
value
[
0
].
value
)
}
getPlazaList
()
}
}
}
}
}
)
)
...
@@ -379,28 +311,14 @@ export default {
...
@@ -379,28 +311,14 @@ export default {
direction
:
rawData
.
direction
.
toString
(),
direction
:
rawData
.
direction
.
toString
(),
picType
:
rawData
.
picType
,
picType
:
rawData
.
picType
,
personType
:
rawData
.
personType
.
toString
(),
personType
:
rawData
.
personType
.
toString
(),
startTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
startTime
),
startTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
startTime
),
endTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
endTime
),
endTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
endTime
),
page
:
pageNum
.
value
-
1
,
page
:
pageNum
.
value
-
1
,
pageSize
:
pageSize
.
value
,
pageSize
:
pageSize
.
value
,
}
}
)
)
const
storageData
=
filterEmptyValueInObject
(
{
account_id
:
rawData
.
account_id
,
type
:
rawData
.
type
,
plaza_id
:
rawData
.
plaza_id
,
zone_id
:
rawData
.
zone_id
,
gate_id
:
rawData
.
gate_id
,
direction
:
rawData
.
direction
,
picType
:
rawData
.
picType
,
personType
:
rawData
.
personType
,
date
:
rawData
.
date
,
startTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
startTime
),
endTime
:
formatDate
(
rawData
.
date
)
+
' '
+
formatTime
(
rawData
.
endTime
),
}
)
window
.
localStorage
.
setItem
(
'searchCondition'
,
JSON
.
stringify
(
storageData
))
snapshotRecordApi
.
getSnapshotRecordList
(
data
).
then
(
snapshotRecordApi
.
getSnapshotRecordList
(
data
).
then
(
(
r
)
=>
{
(
r
)
=>
{
isLoading
.
value
=
false
isLoading
.
value
=
false
...
@@ -411,38 +329,13 @@ export default {
...
@@ -411,38 +329,13 @@ export default {
if
(
item
.
picture_url
)
{
if
(
item
.
picture_url
)
{
item
.
picture_url
=
window
.
_baseImgUrl
+
item
.
picture_url
item
.
picture_url
=
window
.
_baseImgUrl
+
item
.
picture_url
}
}
if
(
item
.
track_url
)
{
item
.
track_url
=
window
.
_baseImgUrl
+
item
.
track_url
}
})
})
dataList
.
value
=
r
.
data
.
persons
dataList
.
value
=
r
.
data
.
persons
total
.
value
=
r
.
data
.
pageNum
total
.
value
=
r
.
data
.
pageNum
document
.
getElementsByClassName
(
'resultContent'
)[
0
].
scrollTop
=
0
}
}
)
)
}
}
const
formatGender
=
function
(
number
){
switch
(
number
)
{
case
1
:
{
return
'男'
}
case
-
1
:
{
return
'未知'
}
case
0
:
{
return
'女'
}
default
:
{
break
}
}
}
const
formatDirection
=
function
(
number
)
{
const
formatDirection
=
function
(
number
)
{
switch
(
number
)
switch
(
number
)
{
{
...
@@ -468,46 +361,9 @@ export default {
...
@@ -468,46 +361,9 @@ export default {
const
downloadFile
=
function
(
url
)
{
const
downloadFile
=
function
(
url
)
{
window
.
open
(
url
)
window
.
open
(
url
)
}
}
const
downloadTrajectoryFile
=
function
(
url
){
window
.
open
(
url
)
}
const
handleClick
=
function
(
data
){
currentItemId
.
value
=
data
.
id
currobj
.
value
=
data
;
}
const
comparativeFun
=
function
(){
if
(
currobj
.
value
==
{})
{
ElMessage
({
message
:
`请选择图片进行对比验证`
,
type
:
'warning'
});
return
false
}
if
(
!
currobj
.
value
.
picture_url
){
ElMessage
({
message
:
`该图片没有特征,请选择有效的图片`
,
type
:
'warning'
})
return
}
const
rawData
=
toRaw
(
queryForm
)
let
parmas
=
{
plaza_id
:
currobj
.
value
.
mall_id
,
pic_type
:
rawData
.
picType
,
pic_id
:
currobj
.
value
.
id
,
ip
:
window
.
_baseImgUrl
,
countdate
:
formatDate
(
rawData
.
date
)
}
DetailDialogRef
.
value
.
initDialog
(
currobj
.
value
,
parmas
);
}
const
clickSearch
=
function
()
{
pageNum
.
value
=
1
confirmSearch
()
}
const
contentHeight
=
ref
(
0
)
const
__main
=
function
()
{
const
__main
=
function
()
{
getAccountList
()
getAccountList
()
contentHeight
.
value
=
window
.
innerHeight
-
310
}
}
__main
()
__main
()
...
@@ -518,15 +374,12 @@ export default {
...
@@ -518,15 +374,12 @@ export default {
pageNum
,
pageNum
,
pageSize
,
pageSize
,
total
,
total
,
currobj
,
// sequence
// sequence
accountList
,
accountList
,
plazaList
,
plazaList
,
zoneList
,
zoneList
,
gateList
,
gateList
,
pagedTableDataList
,
pagedTableDataList
,
currentItemId
,
contentHeight
,
// mapping
// mapping
queryForm
,
queryForm
,
// function
// function
...
@@ -538,14 +391,6 @@ export default {
...
@@ -538,14 +391,6 @@ export default {
confirmSearch
,
confirmSearch
,
formatDirection
,
formatDirection
,
downloadFile
,
downloadFile
,
downloadTrajectoryFile
,
handleClick
,
comparativeFun
,
formatGender
,
clickSearch
,
// ref
DetailDialogRef
,
imgModelRef
}
}
}
}
}
}
...
@@ -553,22 +398,5 @@ export default {
...
@@ -553,22 +398,5 @@ export default {
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
@import
"./SnapshotRecord"
;
@import
"./SnapshotRecord"
;
.actived
{
border
:
3px
solid
#1890ff
;
}
.resultContent
{
overflow
:
auto
;
min-height
:
500px
;
}
.downBtn
{
color
:
#409EFF
;
font-size
:
15px
;
cursor
:
pointer
;
display
:
inline-block
;
width
:
auto
;
}
.downBtn1
{
float
:
right
;
}
</
style
>
</
style
>
vue.config.js
View file @
395de63
...
@@ -57,9 +57,9 @@ module.exports = {
...
@@ -57,9 +57,9 @@ module.exports = {
// 这里写你调用接口的基础路径,来解决跨域,如果设置了代理,那你本地开发环境的axios的baseUrl要写为 '' ,即空字符串
// 这里写你调用接口的基础路径,来解决跨域,如果设置了代理,那你本地开发环境的axios的baseUrl要写为 '' ,即空字符串
devServer
:
{
devServer
:
{
proxy
:
{
proxy
:
{
'/'
:
{
'/
malls
'
:
{
target
:
'http
://36.112.68.214:33333/btool/
'
,
target
:
'http
s://store.keliuyun.com/report/malls
'
,
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