Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation
This project
Loading...
Sign in
platform
/
social_ecurity_serv
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 b9af383f
authored
Oct 31, 2019
by
潘建波
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
青岛社保2次提交
修改以图搜图部分 人脸事件部分
1 parent
d515cb9a
Show whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
507 additions
and
378 deletions
web/config/index.js
web/src/assets/css/public.css
web/src/router/index.js
web/src/store/getters.js
web/src/store/modules/menu.js
web/src/util/api.js
web/src/util/permission.js
web/src/views/Activity/detail.vue
web/src/views/Activity/report.vue
web/src/views/Activity/status.vue
web/src/views/Equipment/adddev.vue
web/src/views/Home/show/index.vue
web/src/views/Layout/index.vue
web/src/views/Login/login.vue
web/src/views/Search/FilmedRecords.vue
web/src/views/Search/Searchpic.vue
web/src/views/Search/comparisonpic.vue
web/src/views/Search/morePic.vue
web/src/views/Search/onePic.vue
web/src/views/Search/track.vue
web/src/views/System/Role/index.vue
web/src/views/System/Setting/index.vue
web/src/views/videos/playvideo.vue
web/src/views/videos/环形相似度.vue
web/config/index.js
View file @
b9af383
...
@@ -13,7 +13,7 @@ module.exports = {
...
@@ -13,7 +13,7 @@ module.exports = {
proxyTable
:
{},
proxyTable
:
{},
// Various Dev Server settings
// Various Dev Server settings
host
:
'
localhost
'
,
// can be overwritten by process.env.HOST
host
:
'
192.168.9.41
'
,
// can be overwritten by process.env.HOST
port
:
8990
,
// can be overwritten by process.env.PORT, if port is in use, a free one will be determined
port
:
8990
,
// can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser
:
false
,
autoOpenBrowser
:
false
,
errorOverlay
:
true
,
errorOverlay
:
true
,
...
...
web/src/assets/css/public.css
View file @
b9af383
...
@@ -806,7 +806,6 @@ div[data-v-4ab5ed42] .el-col-16,div[data-v-0a498488] .el-col-16,div[data-v-012f6
...
@@ -806,7 +806,6 @@ div[data-v-4ab5ed42] .el-col-16,div[data-v-0a498488] .el-col-16,div[data-v-012f6
}
}
.content_div_main
.el-transfer-panel
{
.content_div_main
.el-transfer-panel
{
width
:
10.6vw
;
width
:
10.6vw
;
height
:
43vh
}
}
.content_div_main
.el-transfer__buttons
{
.content_div_main
.el-transfer__buttons
{
padding
:
0
1vw
padding
:
0
1vw
...
...
web/src/router/index.js
View file @
b9af383
...
@@ -117,11 +117,13 @@ export const asyncRouterMap = [{
...
@@ -117,11 +117,13 @@ export const asyncRouterMap = [{
path
:
'/equipment/vchan'
,
path
:
'/equipment/vchan'
,
name
:
'相机配置'
,
name
:
'相机配置'
,
component
:
reslove
=>
require
([
'@/views/Equipment/vchan.vue'
],
reslove
),
component
:
reslove
=>
require
([
'@/views/Equipment/vchan.vue'
],
reslove
),
},{
}
path
:
'/equipment/dev'
,
// ,{
name
:
'设备状态'
,
// path: '/equipment/dev',
component
:
reslove
=>
require
([
'@/views/Equipment/dev.vue'
],
reslove
),
// name: '设备状态',
}]
// component: reslove => require(['@/views/Equipment/dev.vue'], reslove),
// }
]
},
{
},
{
path
:
'/system'
,
path
:
'/system'
,
name
:
'系统管理'
,
name
:
'系统管理'
,
...
...
web/src/store/getters.js
View file @
b9af383
...
@@ -3,6 +3,7 @@ const getters = {
...
@@ -3,6 +3,7 @@ const getters = {
permission_routers
:
state
=>
state
.
menu
.
addRouter
,
permission_routers
:
state
=>
state
.
menu
.
addRouter
,
three_menu
:
state
=>
state
.
menu
.
threeMenu
,
three_menu
:
state
=>
state
.
menu
.
threeMenu
,
dev_unid
:
state
=>
state
.
initinfo
.
dev_unid
,
dev_unid
:
state
=>
state
.
initinfo
.
dev_unid
,
faceInfo
:
state
=>
state
.
alarm
.
faceInfo
faceInfo
:
state
=>
state
.
alarm
.
faceInfo
,
alarmInfo
:
state
=>
state
.
alarm
.
alarmInfo
,
}
}
export
default
getters
export
default
getters
web/src/store/modules/menu.js
View file @
b9af383
...
@@ -6,7 +6,7 @@ import {url} from '../../util/api'
...
@@ -6,7 +6,7 @@ import {url} from '../../util/api'
*/
*/
function
getMenuInfo
(
token
)
{
function
getMenuInfo
(
token
)
{
return
new
Promise
((
reslove
,
reject
)
=>
{
return
new
Promise
((
reslove
,
reject
)
=>
{
axios
.
get
(
url
+
"/auth/apps/"
+
'
e38b9e91e27df7295282cd1d876f5f26
'
+
"/menus?shape=list"
).
then
(
response
=>
{
axios
.
get
(
url
+
"/auth/apps/"
+
'
23660e5593563b27832c2b8f490b458e
'
+
"/menus?shape=list"
).
then
(
response
=>
{
reslove
(
response
);
reslove
(
response
);
})
})
});
});
...
@@ -43,8 +43,8 @@ function hasPerminssion(router, roles) {
...
@@ -43,8 +43,8 @@ function hasPerminssion(router, roles) {
return
true
;
return
true
;
}
}
}
}
//
let status = false
let
status
=
false
let
status
=
true
//
let status = true
if
(
roles
)
{
if
(
roles
)
{
for
(
let
i
=
0
;
i
<
roles
.
length
;
i
++
){
for
(
let
i
=
0
;
i
<
roles
.
length
;
i
++
){
if
(
roles
[
i
].
path
===
router
.
path
){
if
(
roles
[
i
].
path
===
router
.
path
){
...
...
web/src/util/api.js
View file @
b9af383
export
let
url
=
'http://192.168.9.208:20080/api/v1'
export
let
url
=
'http://192.168.9.208:20080/api/v1'
// export let url = 'http://52.1.113.109:20080/api/v1'
// export let url = 'http://52.1.113.109:20080/api/v1'
export
let
menus
=
`
${
url
}
/auth/apps/
e38b9e91e27df7295282cd1d876f5f26
/menus`
export
let
menus
=
`
${
url
}
/auth/apps/
23660e5593563b27832c2b8f490b458e
/menus`
let
timer
=
()
=>
{
let
timer
=
()
=>
{
return
new
Date
().
getTime
()
return
new
Date
().
getTime
()
...
@@ -17,7 +17,7 @@ export let auth = {
...
@@ -17,7 +17,7 @@ export let auth = {
return
`
${
url
}
/auth/roles/
${
roleid
}
`
return
`
${
url
}
/auth/roles/
${
roleid
}
`
},
},
menusRole
(
roleid
){
menusRole
(
roleid
){
return
`
${
url
}
/auth/roles/
${
roleid
}
/apps/
e38b9e91e27df7295282cd1d876f5f26
/menus`
return
`
${
url
}
/auth/roles/
${
roleid
}
/apps/
23660e5593563b27832c2b8f490b458e
/menus`
},
},
userRole
(
userid
)
{
userRole
(
userid
)
{
return
`
${
url
}
/auth/users/
${
userid
}
/roles`
return
`
${
url
}
/auth/users/
${
userid
}
/roles`
...
...
web/src/util/permission.js
View file @
b9af383
...
@@ -29,16 +29,7 @@ router.beforeEach((to, from, next) => {
...
@@ -29,16 +29,7 @@ router.beforeEach((to, from, next) => {
faceapi
.
getAddress
();
faceapi
.
getAddress
();
faceapi
.
getFaceDbData
();
faceapi
.
getFaceDbData
();
faceapi
.
getProvince
();
faceapi
.
getProvince
();
//添加路由守卫确定是否打开新的页面
// router.beforeEach((to, from, next) => {
// if(to.matched.some(record => record.meta.openwin)) {
// let url = location.origin +'/#'+ to.meta.url
// window.open (url, 'newwindow', 'left=100, top=100 toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no')
// return
// }else{
// next()
// }
// })
}).
catch
(()
=>
{
}).
catch
(()
=>
{
})
})
...
...
web/src/views/Activity/detail.vue
View file @
b9af383
<
template
>
<
template
>
<div
class=
"statusdetail"
>
<div
class=
"statusdetail"
>
<el-dialog
<el-dialog
title=
"活动状态
"
:title=
"titlename
"
:visible
.
sync=
"show"
:visible
.
sync=
"show"
width=
"40%"
width=
"40%"
:before-close=
"handleClose"
>
:before-close=
"handleClose"
>
...
@@ -13,7 +13,11 @@
...
@@ -13,7 +13,11 @@
</el-select>
</el-select>
</div>
</div>
<div
class=
"activitychart"
id=
"activitychart"
v-show=
"curshow == 'chart'"
></div>
<div
class=
"activitychart"
id=
"activitychart"
v-show=
"curshow == 'chart'"
></div>
<div
class=
"imgbox"
v-show=
"curshow == 'img'"
></div>
<div
class=
"imgbox"
v-show=
"curshow == 'img'"
>
<div
v-for=
"(item,index) in imgData"
class=
"item-img-box"
:key=
"index"
>
<img
:src=
"item.pic_url"
alt=
""
>
</div>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"show = false"
>
取 消
</el-button>
<el-button
@
click=
"show = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"show = false"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"show = false"
>
确 定
</el-button>
...
@@ -30,14 +34,20 @@ export default {
...
@@ -30,14 +34,20 @@ export default {
detaildata
:
''
,
detaildata
:
''
,
curshow
:
'img'
,
curshow
:
'img'
,
period
:
'week'
,
period
:
'week'
,
titlename
:
'抓拍图片'
,
xdata
:[
'01'
,
'02'
,
'03'
,
'04'
,
'05'
,
'06'
],
xdata
:[
'01'
,
'02'
,
'03'
,
'04'
,
'05'
,
'06'
],
apperadata
:[
23
,
60
,
20
,
36
,
23
,
85
]
apperadata
:[
23
,
60
,
20
,
36
,
23
,
85
],
imgData
:[]
}
}
},
},
methods
:{
methods
:{
initImg
(){
initImg
(){
this
.
show
=
true
this
.
show
=
true
this
.
titlename
=
'抓拍图片'
this
.
curshow
=
'img'
this
.
curshow
=
'img'
this
.
axios
.
get
(
this
.
API
.
url
+
'/faces/'
+
data
.
face_unid
+
'/face_events'
).
then
(
res
=>
{
this
.
imgData
=
res
.
data
.
list_data
})
},
},
chageperiod
(){
chageperiod
(){
this
.
xdata
=
[
'00:00'
,
'00:01'
,
'00:02'
,
'00:03'
,
'00:04'
,
'00:05'
]
this
.
xdata
=
[
'00:00'
,
'00:01'
,
'00:02'
,
'00:03'
,
'00:04'
,
'00:05'
]
...
@@ -45,6 +55,7 @@ export default {
...
@@ -45,6 +55,7 @@ export default {
this
.
initchart
()
this
.
initchart
()
},
},
initchart
(
data
){
initchart
(
data
){
this
.
titlename
=
'活动状态'
this
.
show
=
true
;
this
.
show
=
true
;
this
.
curshow
=
'chart'
this
.
curshow
=
'chart'
this
.
detaildata
=
data
this
.
detaildata
=
data
...
@@ -142,4 +153,19 @@ export default {
...
@@ -142,4 +153,19 @@ export default {
width
100%
width
100%
overflow
hidden
overflow
hidden
}
}
.imgbox
{
overflow
hidden
}
.item-img-box
{
height
200px
width
200px
float
left
overflow
hidden
border-radius
5px
margin
0
0
20px
20px
img
{
height
100%
width
100%
}
}
</
style
>
</
style
>
web/src/views/Activity/report.vue
View file @
b9af383
...
@@ -2,33 +2,27 @@
...
@@ -2,33 +2,27 @@
<
template
>
<
template
>
<div
class=
"template-box content_div_main"
>
<div
class=
"template-box content_div_main"
>
<el-form
:inline=
"true"
class=
"search-form"
size=
"small"
>
<el-form
:inline=
"true"
class=
"search-form"
size=
"small"
>
<el-form-item
label=
"抓拍地点:"
>
<el-form-item
label=
"人口库:"
>
<el-input
type=
"text"
class=
"bla bra br0"
v-model=
"address"
placeholder=
""
></el-input>
<el-select
v-model=
"dbname"
class=
"br0 bra bla"
>
<el-option
value=
""
label=
"请选择库类型"
></el-option>
<el-option
v-for=
"item in crucialData"
:key=
"item.unid"
:value=
"item.code"
:label=
"item.name"
></el-option>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"
抓拍相机
:"
>
<el-form-item
label=
"
姓名
:"
>
<el-input
type=
"text"
class=
"bla bra br0"
v-model=
"
camera
"
placeholder=
""
></el-input>
<el-input
type=
"text"
class=
"bla bra br0"
v-model=
"
facename
"
placeholder=
""
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"查询库:"
>
<el-form-item
label=
"证件号:"
>
<el-select
v-model=
"value"
placeholder=
"请选择"
>
<el-input
type=
"text"
class=
"bla"
placeholder=
"请输入证件号"
v-model=
"facecard_id"
></el-input>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"查询时间:"
>
<el-form-item
label=
"性别:"
>
<el-date-picker
<el-select
v-model=
"facesex"
class=
"br0 bra bla"
>
v-model=
"value1"
<el-option
value=
""
label=
"请选择性别"
></el-option>
type=
"datetimerange"
<el-option
:value=
"1"
label=
"男"
></el-option>
range-separator=
"至"
<el-option
:value=
"2"
label=
"女"
></el-option>
start-placeholder=
"开始日期"
</el-select>
end-placeholder=
"结束日期"
></el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
class=
"search-btn"
@
click=
"
searchUser
"
icon=
"el-icon-search"
>
查询
</el-button>
<el-button
class=
"search-btn"
@
click=
"
getData
"
icon=
"el-icon-search"
>
查询
</el-button>
<el-button
class=
"search-btn ml10"
@
click=
"addGroupUser()"
icon=
"el-icon-upload"
>
导出
</el-button>
<el-button
class=
"search-btn ml10"
@
click=
"addGroupUser()"
icon=
"el-icon-upload"
>
导出
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
...
@@ -36,24 +30,13 @@
...
@@ -36,24 +30,13 @@
<el-table
:data=
"tableData"
style=
"width: 100%"
height=
"680"
>
<el-table
:data=
"tableData"
style=
"width: 100%"
height=
"680"
>
<el-table-column
type=
"index"
label=
"#"
></el-table-column>
<el-table-column
type=
"index"
label=
"#"
></el-table-column>
<el-table-column
prop=
"name"
label=
"姓名"
align=
"center"
></el-table-column>
<el-table-column
prop=
"name"
label=
"姓名"
align=
"center"
></el-table-column>
<el-table-column
prop=
"age"
label=
"年龄"
align=
"center"
></el-table-column>
<el-table-column
prop=
"sex"
label=
"性别"
:formatter=
"setSex"
align=
"center"
></el-table-column>
<el-table-column
prop=
"sex"
label=
"性别"
align=
"center"
></el-table-column>
<el-table-column
label=
"出生日期"
property=
"birthday"
:formatter=
"setBirthday"
>
</el-table-column>
<el-table-column
prop=
"carid"
label=
"身份证号"
></el-table-column>
<el-table-column
label=
"身份证号"
property=
"card_id"
></el-table-column>
<el-table-column
prop=
"address"
label=
"地点"
></el-table-column>
<el-table-column
prop=
"appearnum"
label=
"出现次数"
align=
"center"
></el-table-column>
<el-table-column
prop=
"lastappear"
label=
"最后出现时间"
></el-table-column>
<el-table-column
prop=
"signin"
label=
"注册时间"
></el-table-column>
<el-table-column
prop=
"pic"
label=
"人脸图片"
>
<template
slot-scope=
"scope"
>
<div
class=
"show-img-box"
>
<img
:src=
"scope.row.pic"
alt=
""
>
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
width=
"200"
align=
"center"
>
<el-table-column
label=
"操作"
width=
"200"
align=
"center"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
<div
class=
"tab-btn-box"
>
<div
class=
"tab-btn-box"
>
<span
@
click=
"showImg(scope.row)"
class=
"table-btn"
>
所有抓
图片
</span>
<span
@
click=
"showImg(scope.row)"
class=
"table-btn"
>
抓拍
图片
</span>
<span
@
click=
"activityStatus(scope.row)"
class=
"table-btn"
>
活动状态
</span>
<span
@
click=
"activityStatus(scope.row)"
class=
"table-btn"
>
活动状态
</span>
</div>
</div>
</
template
>
</
template
>
...
@@ -63,9 +46,11 @@
...
@@ -63,9 +46,11 @@
<el-row
class=
"block"
>
<el-row
class=
"block"
>
<el-pagination
<el-pagination
class=
"mt10"
class=
"mt10"
@
current-change=
"handleCurrentChange"
:current-page
.
sync=
"currentPage"
:page-size=
"limit"
background
background
layout=
"prev, pager, next"
layout=
"prev, pager, next"
:total=
"
1000
"
>
:total=
"
total
"
>
</el-pagination>
</el-pagination>
</el-row>
</el-row>
<el-row>
<el-row>
...
@@ -84,76 +69,20 @@ export default {
...
@@ -84,76 +69,20 @@ export default {
return
{
return
{
address
:
""
,
address
:
""
,
camera
:
""
,
camera
:
""
,
options
:
[
crucialData
:
[],
{
tableData
:
[],
value
:
"选项1"
,
label
:
"社保库1"
},
{
value
:
"选项2"
,
label
:
"社保库2"
},
{
value
:
"选项3"
,
label
:
"社保库3"
},
{
value
:
"选项4"
,
label
:
"社保库4"
},
{
value
:
"选项5"
,
label
:
"社保库5"
}
],
tableData
:
[
{
name
:
"王小虎"
,
age
:
'23'
,
sex
:
"男"
,
carid
:
"211232211221233341"
,
address
:
"上海市普陀区金沙江路 1518 弄"
,
appearnum
:
4
,
lastappear
:
'2019-08-01 10:00:09'
,
signin
:
'2016-08-01 10:00:09'
,
pic
:
require
(
'../videos/testimg/1.jpg'
)
},
{
name
:
"王小虎"
,
age
:
'23'
,
sex
:
"男"
,
carid
:
"211232211221233341"
,
address
:
"上海市普陀区金沙江路 1518 弄"
,
appearnum
:
4
,
lastappear
:
'2019-08-01 10:00:09'
,
signin
:
'2016-08-01 10:00:09'
,
pic
:
require
(
'../videos/testimg/1.jpg'
)
},
{
name
:
"王小虎"
,
age
:
'23'
,
sex
:
"男"
,
carid
:
"211232211221233341"
,
address
:
"上海市普陀区金沙江路 1518 弄"
,
appearnum
:
4
,
lastappear
:
'2019-08-01 10:00:09'
,
signin
:
'2016-08-01 10:00:09'
,
pic
:
require
(
'../videos/testimg/1.jpg'
)
},
{
name
:
"王小虎"
,
age
:
'23'
,
sex
:
"男"
,
carid
:
"211232211221233341"
,
address
:
"上海市普陀区金沙江路 1518 弄"
,
appearnum
:
4
,
lastappear
:
'2019-08-01 10:00:09'
,
signin
:
'2016-08-01 10:00:09'
,
pic
:
require
(
'../videos/testimg/1.jpg'
)
}
],
value
:
""
,
value
:
""
,
value1
:
""
value1
:
""
,
offset
:
0
,
limit
:
20
,
total
:
0
,
currentPage
:
0
,
dbname
:
''
,
facename
:
''
,
communityunid
:
''
,
facecardid
:
''
,
facesex
:
''
};
};
},
},
methods
:
{
methods
:
{
...
@@ -162,9 +91,50 @@ export default {
...
@@ -162,9 +91,50 @@ export default {
},
},
activityStatus
(
data
){
activityStatus
(
data
){
this
.
$refs
.
detail
.
initchart
(
data
)
this
.
$refs
.
detail
.
initchart
(
data
)
},
setSex
(
row
,
column
,
cellValue
)
{
var
sex
=
""
;
if
(
cellValue
==
"1"
)
sex
=
"男"
;
if
(
cellValue
==
"2"
)
sex
=
"女"
;
return
sex
;
},
setBirthday
(
row
,
column
,
cellValue
)
{
var
data
=
""
;
if
(
cellValue
)
data
=
cellValue
.
split
(
" "
)[
0
];
return
data
;
},
initDbData
(){
this
.
axios
.
get
(
this
.
API
.
url
+
"/codes/custom/cates/4DD23AF66E/codes"
).
then
((
response
)
=>
{
this
.
crucialData
=
response
.
data
.
list_data
;
});
},
getData
()
{
this
.
axios
.
get
(
this
.
API
.
faceweb
+
"/faces/crucial_faces"
,
{
params
:
{
offset
:
this
.
offset
,
limit
:
this
.
limit
,
is_crucial
:
true
,
is_active
:
true
,
sex
:
this
.
facesex
,
name__like
:
this
.
facename
,
card_id__like
:
this
.
facecardid
,
crucial_type
:
this
.
dbname
,
resident_unids
:
this
.
communityunid
,
}
}).
then
(
(
response
)
=>
{
this
.
tableData
=
response
.
data
.
list_data
;
this
.
total
=
response
.
data
.
total_num
;
});
},
handleCurrentChange
(){
}
}
},
},
created
()
{}
created
()
{
this
.
getData
();
this
.
initDbData
();
}
};
};
</
script
>
</
script
>
<
style
lang=
"stylus"
scoped
>
<
style
lang=
"stylus"
scoped
>
...
...
web/src/views/Activity/status.vue
View file @
b9af383
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
></el-date-picker>
></el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
class=
"search-btn"
@
click=
"
searchUser
"
icon=
"el-icon-search"
>
查询
</el-button>
<el-button
class=
"search-btn"
@
click=
"
getFace
"
icon=
"el-icon-search"
>
查询
</el-button>
<el-button
class=
"search-btn ml10"
@
click=
"addGroupUser()"
icon=
"el-icon-plus"
>
添加
</el-button>
<el-button
class=
"search-btn ml10"
@
click=
"addGroupUser()"
icon=
"el-icon-plus"
>
添加
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
...
...
web/src/views/Equipment/adddev.vue
View file @
b9af383
...
@@ -107,8 +107,7 @@
...
@@ -107,8 +107,7 @@
}
}
},
},
props
:
[
"addvdialog"
,
"editData"
,
"state"
],
props
:
[
"addvdialog"
,
"editData"
,
"state"
],
computed
:{
},
methods
:
{
methods
:
{
closeaddvdialog
(
state
)
{
closeaddvdialog
(
state
)
{
this
.
state
=
"add"
;
this
.
state
=
"add"
;
...
@@ -164,7 +163,10 @@
...
@@ -164,7 +163,10 @@
}
}
},
},
created
(){
created
(){
this
.
address
=
this
.
$store
.
state
.
initinfo
.
address
;
debugger
this
.
faceapi
.
getAddress
().
then
(
res
=>
{
this
.
address
=
res
.
list_data
;
})
},
},
watch
:{
watch
:{
editData
(
val
){
editData
(
val
){
...
...
web/src/views/Home/show/index.vue
View file @
b9af383
...
@@ -110,7 +110,7 @@ export default {
...
@@ -110,7 +110,7 @@ export default {
dataProjection
:
'EPSG:4326'
dataProjection
:
'EPSG:4326'
})
})
});
});
var
path
=
"http://192.168.9.62:20080/static/pics/
gaode
Map/roadmap/{z}/{x}/{y}.png"
var
path
=
"http://192.168.9.62:20080/static/pics/
qingdao
Map/roadmap/{z}/{x}/{y}.png"
var
offlineMapLayer
=
new
TileLayer
({
var
offlineMapLayer
=
new
TileLayer
({
source
:
new
XYZ
({
source
:
new
XYZ
({
// 设置本地离线瓦片所在路径,由于例子里面只有一张瓦片,页面显示时就只看得到一张瓦片。
// 设置本地离线瓦片所在路径,由于例子里面只有一张瓦片,页面显示时就只看得到一张瓦片。
...
@@ -121,9 +121,9 @@ export default {
...
@@ -121,9 +121,9 @@ export default {
Views
=
new
View
({
Views
=
new
View
({
projection
:
'EPSG:4326'
,
projection
:
'EPSG:4326'
,
zoom
:
2
,
// 并且定义地图显示层级为2
zoom
:
2
,
// 并且定义地图显示层级为2
minZoom
:
1
1
,
minZoom
:
1
3
,
maxZoom
:
18
,
maxZoom
:
18
,
center
:[
1
16.397477
,
39.908692
]
center
:[
1
20.324447
,
36.064594
]
})
})
map
=
new
Map
({
map
=
new
Map
({
// 设置地图图层
// 设置地图图层
...
@@ -153,27 +153,18 @@ export default {
...
@@ -153,27 +153,18 @@ export default {
// 添加一个使用离线瓦片地图的层
// 添加一个使用离线瓦片地图的层
var
CameraVertorlayer
=
new
VectorLayer
({
var
CameraVertorlayer
=
new
VectorLayer
({
source
:
_this
.
addCameraLayer
([
1
16.397477
,
39.908692
],
"相机A"
)
source
:
_this
.
addCameraLayer
([
1
20.324447
,
36.064594
],
"相机A"
)
});
});
map
.
addLayer
(
CameraVertorlayer
);
map
.
addLayer
(
CameraVertorlayer
);
this
.
addLayer
();
this
.
addLayer
();
var
container
=
document
.
getElementById
(
"popup"
);
var
content
=
document
.
getElementById
(
"popup-content"
);
var
popupCloser
=
document
.
getElementById
(
"popup-closer"
);
var
overlay
=
new
Overlay
({
element
:
container
,
autoPan
:
true
});
map
.
on
(
'click'
,(
e
)
=>
{
map
.
on
(
'click'
,(
e
)
=>
{
var
pixel
=
map
.
getEventPixel
(
e
.
originalEvent
);
var
pixel
=
map
.
getEventPixel
(
e
.
originalEvent
);
console
.
log
(
pixel
);
console
.
log
(
pixel
);
//点击
标注点信息
//点击
相机标注点
map
.
forEachFeatureAtPixel
(
pixel
,
function
(
feature
){
map
.
forEachFeatureAtPixel
(
pixel
,
function
(
feature
){
debugger
console
.
log
(
feature
);
//return feature;
var
coodinate
=
e
.
coordinate
;
var
coodinate
=
e
.
coordinate
;
_this
.
unid
=
feature
.
getProperties
().
unid
;
_this
.
unid
=
feature
.
getProperties
().
unid
;
overlay
.
setPosition
(
coodinate
);
overlay
.
setPosition
(
coodinate
);
...
@@ -187,22 +178,7 @@ export default {
...
@@ -187,22 +178,7 @@ export default {
});
});
},
},
removeclass
(
e
){
e
.
currentTarget
.
classList
.
remove
(
'canvasDiv'
);
},
removeAlarmclass
(
e
){
e
.
currentTarget
.
parentElement
.
classList
.
remove
(
'alarm-makerbox'
);
},
addAlarmBox
(
data
){
document
.
getElementById
(
'alarmMarker'
).
className
=
'alarm-makerbox alarm-active'
;
var
pos
=
data
;
var
marker
=
new
Overlay
({
position
:
pos
,
positioning
:
'center-center'
,
element
:
document
.
getElementById
(
'alarmMarker'
)
});
map
.
addOverlay
(
marker
);
},
addLayer
(
data
){
addLayer
(
data
){
var
pos
=
data
;
var
pos
=
data
;
var
marker
=
new
Overlay
({
var
marker
=
new
Overlay
({
...
@@ -251,9 +227,7 @@ export default {
...
@@ -251,9 +227,7 @@ export default {
vectorSource
.
addFeature
(
icon
);
vectorSource
.
addFeature
(
icon
);
return
vectorSource
;
return
vectorSource
;
},
},
switchalarminfo
(){
this
.
openstate
=
true
},
addFeature
(){
addFeature
(){
function
createStyle
(
src
,
img
)
{
function
createStyle
(
src
,
img
)
{
return
new
Style
({
return
new
Style
({
...
@@ -275,13 +249,7 @@ export default {
...
@@ -275,13 +249,7 @@ export default {
});
});
map
.
addLayer
(
this
.
CameraVertorlayer
);
map
.
addLayer
(
this
.
CameraVertorlayer
);
},
},
moveCenter
(
data
){
Views
.
animate
({
center
:
data
,
zoom
:
15
});
this
.
addAlarmBox
(
data
)
}
},
},
created
(){
created
(){
...
@@ -291,9 +259,6 @@ export default {
...
@@ -291,9 +259,6 @@ export default {
let
_this
=
this
;
let
_this
=
this
;
setTimeout
(()
=>
{
setTimeout
(()
=>
{
// 添加一个使用离线瓦片地图的层
// 添加一个使用离线瓦片地图的层
var
CameraVertorlayer
=
new
VectorLayer
({
source
:
_this
.
addCameraLayer
([
116.507372
,
39.932443
],
'相机B'
)
});
map
.
addLayer
(
CameraVertorlayer
);
map
.
addLayer
(
CameraVertorlayer
);
},
200
);
},
200
);
...
...
web/src/views/Layout/index.vue
View file @
b9af383
...
@@ -13,10 +13,10 @@
...
@@ -13,10 +13,10 @@
<menus
ref=
"menus"
></menus>
<menus
ref=
"menus"
></menus>
</el-col>
</el-col>
<el-col
:span=
"6"
class
>
<el-col
:span=
"6"
class
>
<el-col
:span=
"1
0"
:offset=
"8
"
>
<el-col
:span=
"1
3"
:offset=
"4
"
>
<div
class=
"timer"
>
{{
timer
}}
</div>
<div
class=
"timer"
>
{{
timer
}}
</div>
</el-col>
</el-col>
<el-col
:span=
"2"
>
<el-col
:span=
"2"
class=
"line55"
>
<el-dropdown
@
command=
"handleClick"
>
<el-dropdown
@
command=
"handleClick"
>
<i
class=
"el-icon-setting quit-icon"
></i>
<i
class=
"el-icon-setting quit-icon"
></i>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-menu
slot=
"dropdown"
>
...
@@ -25,7 +25,7 @@
...
@@ -25,7 +25,7 @@
</el-dropdown-menu>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown>
</el-col>
</el-col>
<el-col
:span=
"2"
>
<el-col
:span=
"2"
class=
"line55"
>
<div
class=
"quitsystem-btn"
>
<div
class=
"quitsystem-btn"
>
<i
class=
"el-icon-switch-button quit-icon"
@
click=
"quit"
></i>
<i
class=
"el-icon-switch-button quit-icon"
@
click=
"quit"
></i>
...
@@ -215,5 +215,9 @@ body {
...
@@ -215,5 +215,9 @@ body {
line-height
55px
line-height
55px
font-size
20px
font-size
20px
}
}
.line55
{
height
55px;
line-height
55px;
}
</
style
>
</
style
>
web/src/views/Login/login.vue
View file @
b9af383
<
template
>
<
template
>
<div
class=
"login"
>
<div
class=
"login"
>
<div
class=
"login_div_"
>
<div
class=
"login_div_"
>
<!--
<div
class=
"left_login_mc"
>
<el-row
style=
"font-size:15px;width:100%;"
class=
"ml_l"
>
<a
href=
"http://193.5.103.166:8089/illimg/76.0.3809.87_chrome_installer_32.exe"
>
谷歌浏览器下载
</a>
</el-row>
</div>
-->
<div
class=
"login-box"
>
<div
class=
"login-box"
>
<div
class=
"left-box"
>
<div
class=
"left-box"
>
<div
class=
"ploce-box"
></div>
<div
class=
"ploce-box"
></div>
...
@@ -34,48 +29,14 @@
...
@@ -34,48 +29,14 @@
suffix-icon=
"el-icon-lock"
suffix-icon=
"el-icon-lock"
class=
"item-input"
class=
"item-input"
type=
"passWord"
type=
"passWord"
@
keyup
.
enter
.
native=
"login"
v-model=
"passWord"
>
v-model=
"passWord"
>
</el-input>
</el-input>
</div>
</div>
<div
class=
"login-button"
@
click=
"login"
>
登录
</div>
<div
class=
"login-button"
@
click=
"login"
>
登录
</div>
<div
class=
"login-about"
>
技术支持:北京文安智能科技股份有限公司
</div>
<div
class=
"login-about"
>
技术支持:北京文安智能科技股份有限公司
</div>
</div>
</div>
</div>
</div>
<!--
<el-col
:span=
"10"
:offset=
"4"
class=
"login-box"
>
<el-col
:span=
"24"
class=
"login-header mt20"
>
<div
class=
"login-header-box pl10"
>
<div
class=
"pl25 header-box-title"
>
系统登录
</div>
</div>
</el-col>
<el-row
class=
"login-info"
>
<el-col
:span=
"20"
:offset=
"2"
class=
"box"
>
<el-input
:span=
"10"
class=
"el_input_b"
oninput=
"if(value.length>6)value=value.slice(0,6)"
v-model=
"userName"
placeholder=
"用户ID"
></el-input>
</el-col>
</el-row>
<el-row
class=
"mt20"
>
<el-col
:span=
"20"
:offset=
"2"
class=
"box"
>
<el-input
v-model=
"passWord"
class=
"el_input_b"
type=
"password"
onkeyup=
"this.value=this.value.replace(/[^\w_]/g,'');"
@
keyup
.
enter
.
native=
"login"
placeholder=
"密码"
></el-input>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"20"
:offset=
"2"
class=
"box mt20"
>
<el-button
type=
"primary pull-right"
class=
"login-btn"
@
click=
"login"
>
登录
</el-button>
</el-col>
</el-row>
</el-col>
-->
</div>
</div>
</div>
</div>
</
template
>
</
template
>
...
@@ -105,9 +66,6 @@ export default {
...
@@ -105,9 +66,6 @@ export default {
this
.
$message
.
error
(
"请输入密码在继续"
);
this
.
$message
.
error
(
"请输入密码在继续"
);
return
;
return
;
}
}
//--------\
// this.$router.push("/layout");
// this.$router.push("/show");
var
data
=
{
username
:
this
.
userName
,
password
:
this
.
passWord
};
var
data
=
{
username
:
this
.
userName
,
password
:
this
.
passWord
};
this
.
axios
this
.
axios
.
post
(
this
.
API
.
auth
.
login
,
data
)
.
post
(
this
.
API
.
auth
.
login
,
data
)
...
...
web/src/views/Search/FilmedRecords.vue
View file @
b9af383
...
@@ -3,24 +3,22 @@
...
@@ -3,24 +3,22 @@
<div
class=
"template-box content_div_main"
>
<div
class=
"template-box content_div_main"
>
<el-form
:inline=
"true"
class=
"search-form"
size=
"small"
>
<el-form
:inline=
"true"
class=
"search-form"
size=
"small"
>
<el-form-item
label=
"抓拍地点:"
>
<el-form-item
label=
"抓拍地点:"
>
<el-input
type=
"text"
class=
"bla bra br0"
v-model=
"
address
"
placeholder=
""
></el-input>
<el-input
type=
"text"
class=
"bla bra br0"
v-model=
"
search.communityunid
"
placeholder=
""
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"抓拍相机:"
>
<el-form-item
label=
"抓拍相机:"
>
<el-input
type=
"text"
class=
"bla bra br0"
v-model=
"
camera
"
placeholder=
""
></el-input>
<el-input
type=
"text"
class=
"bla bra br0"
v-model=
"
search.cameraname
"
placeholder=
""
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"查询库:"
>
<el-form-item
label=
"查询库:"
>
<el-select
v-model=
"
valu
e"
placeholder=
"请选择"
>
<el-select
v-model=
"
search.crucial_typ
e"
placeholder=
"请选择"
>
<el-option
<el-option
v-for=
"item in options"
v-for=
"item in crucialData"
:key=
"item.value"
:key=
"item.unid"
:value=
"item.code"
:label=
"item.name"
:label=
"item.label"
:value=
"item.value"
></el-option>
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"查询时间:"
>
<el-form-item
label=
"查询时间:"
>
<el-date-picker
<el-date-picker
v-model=
"
value1
"
v-model=
"
search.datatime
"
type=
"datetimerange"
type=
"datetimerange"
range-separator=
"至"
range-separator=
"至"
start-placeholder=
"开始日期"
start-placeholder=
"开始日期"
...
@@ -28,29 +26,40 @@
...
@@ -28,29 +26,40 @@
></el-date-picker>
></el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
class=
"search-btn"
@
click=
"search
User
"
icon=
"el-icon-search"
>
查询
</el-button>
<el-button
class=
"search-btn"
@
click=
"search
FaceCheck
"
icon=
"el-icon-search"
>
查询
</el-button>
<el-button
class=
"search-btn ml10"
@
click=
"addGroupUser()"
icon=
"el-icon-upload"
>
导出
</el-button>
<el-button
class=
"search-btn ml10"
@
click=
"addGroupUser()"
icon=
"el-icon-upload"
>
导出
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-row
class=
"table_m_type"
>
<el-row
class=
"table_m_type"
>
<el-table
:data=
"tableData"
height=
"690"
>
<el-table
:data=
"tableData"
height=
"690"
v-loading=
"loading"
>
<el-table-column
prop=
"
dat
e"
label=
"日期"
>
<el-table-column
prop=
"
lastAccessTim
e"
label=
"日期"
>
<template
slot-scope=
"scope"
>
<template
slot-scope=
"scope"
>
{{
showLocalTime
(
scope
.
row
.
event_dt
)
}}
{{
showLocalTime
(
scope
.
row
.
lastAccessTime
)
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"
event
s_count"
label=
"出现次数"
></el-table-column>
<el-table-column
prop=
"
accesse
s_count"
label=
"出现次数"
></el-table-column>
<el-table-column
prop=
"camera
.
name"
label=
"相机名称"
></el-table-column>
<el-table-column
prop=
"cameraname"
label=
"相机名称"
></el-table-column>
<el-table-column
prop=
"
face.
name"
label=
"姓名"
></el-table-column>
<el-table-column
prop=
"name"
label=
"姓名"
></el-table-column>
<el-table-column
label=
"性别"
>
<el-table-column
label=
"性别"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
face
.
sex
|
sexfn
}}
{{
scope
.
row
.
sex
|
sexfn
}}
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
prop=
"face.age"
label=
"年龄"
></el-table-column>
<el-table-column
prop=
"age"
label=
"年龄"
></el-table-column>
<el-table-column
prop=
"camera.name"
label=
"抓拍人像"
>
<el-table-column
label=
"抓拍人像"
>
<
template
slot-scope=
"scope"
class=
"accomimg-box"
>
<
template
slot-scope=
"scope"
>
<img
:src=
"scope.row.pic_url"
class=
"accomimg"
/>
<div
class=
"accomimg-box"
>
<el-popover
placement=
"left"
width=
"150"
trigger=
"hover"
>
<div
class=
"pop-img"
>
<img
slot=
"reference"
:src=
"scope.row.pic_url"
/>
</div>
<img
slot=
"reference"
:src=
"scope.row.pic_url"
class=
"accomimg"
/>
</el-popover>
</div>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"操作"
width=
"300px"
align=
"center"
>
<el-table-column
label=
"操作"
width=
"300px"
align=
"center"
>
...
@@ -82,19 +91,16 @@ export default {
...
@@ -82,19 +91,16 @@ export default {
data
()
{
data
()
{
return
{
return
{
communityData
:
[],
communityData
:
[],
loading
:
true
,
crucialData
:[],
loading
:
false
,
Progressdialog
:
false
,
Progressdialog
:
false
,
search
:
{
search
:
{
communityunid
:
""
,
communityunid
:
""
,
camrename
:
""
,
cameraname
:
""
,
identity
:
""
,
crucial_type
:
''
,
dt
:
"1"
,
sex
:
""
,
dtNumber
:
""
,
datatime
:
""
datatime
:
""
},
},
camrefid
:
""
,
camrefid
:
""
,
cameraname
:
""
,
page
:
{
page
:
{
limit
:
20
,
limit
:
20
,
offset
:
0
,
offset
:
0
,
...
@@ -116,7 +122,7 @@ export default {
...
@@ -116,7 +122,7 @@ export default {
handleSizeChange
(
val
)
{},
handleSizeChange
(
val
)
{},
handleCurrentChange
(
val
)
{
handleCurrentChange
(
val
)
{
this
.
page
.
offset
=
(
val
-
1
)
*
this
.
page
.
limit
;
this
.
page
.
offset
=
(
val
-
1
)
*
this
.
page
.
limit
;
this
.
faceCheck
();
this
.
getFaceData
();
this
.
page
.
currentPage
=
val
;
this
.
page
.
currentPage
=
val
;
},
},
handleEdit
(
index
,
row
)
{
handleEdit
(
index
,
row
)
{
...
@@ -125,12 +131,16 @@ export default {
...
@@ -125,12 +131,16 @@ export default {
this
.
dialogVisible
=
true
;
this
.
dialogVisible
=
true
;
},
},
searchFaceCheck
()
{
searchFaceCheck
()
{
this
.
faceCheck
();
this
.
getFaceData
();
this
.
page
.
offset
=
0
;
this
.
page
.
offset
=
0
;
this
.
page
.
currentPage
=
0
;
this
.
page
.
currentPage
=
0
;
},
},
initDbData
(){
faceCheck
()
{
this
.
axios
.
get
(
this
.
API
.
url
+
"/codes/custom/cates/4DD23AF66E/codes"
).
then
((
response
)
=>
{
this
.
crucialData
=
response
.
data
.
list_data
;
});
},
getFaceData
()
{
this
.
loading
=
true
;
this
.
loading
=
true
;
var
checknum_greater
=
this
.
search
.
dtNumber
,
var
checknum_greater
=
this
.
search
.
dtNumber
,
gte_checknum_greater
,
gte_checknum_greater
,
...
@@ -145,20 +155,17 @@ export default {
...
@@ -145,20 +155,17 @@ export default {
}
}
var
Vthis
=
this
;
var
Vthis
=
this
;
this
.
axios
this
.
axios
.
get
(
this
.
API
.
faceweb
+
"/faces/aggregate?"
,
{
.
get
(
"http://192.168.9.228:8080/api/v1/face_web/face_events"
// this.API.faceweb + "/face_events?", {
,{
params
:
{
params
:
{
offset
:
Vthis
.
page
.
offset
,
offset
:
Vthis
.
page
.
offset
,
limit
:
Vthis
.
page
.
limit
,
limit
:
Vthis
.
page
.
limit
,
addr_unid_is_null
:
""
,
is_active
:
true
,
is_active
:
true
,
events_count__gte
:
gte_checknum_greater
,
events_count__lt
:
lt_checknum_greater
,
camera_addr_unids
:
this
.
search
.
communityunid
,
camera_addr_unids
:
this
.
search
.
communityunid
,
camera_name__like
:
this
.
search
.
camrename
,
camera_name__like
:
this
.
search
.
camrename
,
event_dt__gte
:
this
.
setUtcTime
(
this
.
search
.
datatime
[
0
]),
event_dt__gte
:
this
.
setUtcTime
(
this
.
search
.
datatime
[
0
]),
event_dt__lt
:
this
.
setUtcTime
(
this
.
search
.
datatime
[
1
]),
event_dt__lt
:
this
.
setUtcTime
(
this
.
search
.
datatime
[
1
]),
name_flag
:
this
.
search
.
identity
,
sex
:
this
.
search
.
sex
,
}
}
}).
then
(
function
(
response
)
{
}).
then
(
function
(
response
)
{
Vthis
.
tableData
=
response
.
data
.
list_data
;
Vthis
.
tableData
=
response
.
data
.
list_data
;
...
@@ -180,14 +187,10 @@ export default {
...
@@ -180,14 +187,10 @@ export default {
}
}
this
.
axios
.
get
(
this
.
API
.
faceweb
+
"/faces/aggregate/export"
,{
this
.
axios
.
get
(
this
.
API
.
faceweb
+
"/faces/aggregate/export"
,{
params
:{
params
:{
"events_count__gte"
:
gte_checknum_greater
,
"events_count__lt"
:
lt_checknum_greater
,
"camera_addr_unids"
:
this
.
search
.
communityunid
,
"camera_addr_unids"
:
this
.
search
.
communityunid
,
"camera_name__like"
:
this
.
search
.
camrename
,
"camera_name__like"
:
this
.
search
.
camrename
,
"event_dt__gte"
:
this
.
setUtcTime
(
this
.
search
.
datatime
[
0
]),
"event_dt__gte"
:
this
.
setUtcTime
(
this
.
search
.
datatime
[
0
]),
"event_dt__lt"
:
this
.
setUtcTime
(
this
.
search
.
datatime
[
1
]),
"event_dt__lt"
:
this
.
setUtcTime
(
this
.
search
.
datatime
[
1
]),
"name_flag"
:
this
.
search
.
identity
,
"sex"
:
this
.
search
.
sex
,
"limit"
:
100
"limit"
:
100
}
}
}).
then
((
response
)
=>
{
}).
then
((
response
)
=>
{
...
@@ -205,8 +208,7 @@ export default {
...
@@ -205,8 +208,7 @@ export default {
})
})
},
},
showDownloadsize
(
unid
){
showDownloadsize
(
unid
){
this
.
axios
.
get
(
this
.
API
.
this
.
API
.
faceweb
+
"/consume_time_request/"
+
unid
).
then
((
response
)
=>
{
this
.
axios
.
get
(
this
.
API
.
faceweb
+
"/consume_time_request/"
+
unid
).
then
((
response
)
=>
{
// this.axios.get("http://192.168.9.225:8080/FACE-DETECT-WEB/api/v1/face_web" + "/consume_time_request/"+unid).then((response)=>{
if
(
response
.
data
.
response_json
){
if
(
response
.
data
.
response_json
){
var
sizeInfo
=
JSON
.
parse
(
response
.
data
.
response_json
);
var
sizeInfo
=
JSON
.
parse
(
response
.
data
.
response_json
);
debugger
debugger
...
@@ -222,8 +224,8 @@ export default {
...
@@ -222,8 +224,8 @@ export default {
}
}
});
});
},
},
handleSee
(){
handleSee
(
index
,
data
){
this
.
$refs
.
track
.
init
()
this
.
$refs
.
track
.
init
(
data
)
}
}
},
},
components
:
{
components
:
{
...
@@ -231,7 +233,7 @@ export default {
...
@@ -231,7 +233,7 @@ export default {
tracks
tracks
},
},
created
()
{
created
()
{
this
.
faceCheck
();
this
.
getFaceData
();
this
.
communityData
=
this
.
$store
.
state
.
orgData
;
this
.
communityData
=
this
.
$store
.
state
.
orgData
;
}
}
};
};
...
@@ -249,4 +251,20 @@ export default {
...
@@ -249,4 +251,20 @@ export default {
width
100%
width
100%
}
}
}
}
.accomimg-box
{
height
60px
width
60px
img{
height
100%
width
100%
}
}
.pop-img
{
height
150px
width
150px
img
{
height
100%
width
100%
}
}
</
style
>
</
style
>
web/src/views/Search/Searchpic.vue
View file @
b9af383
...
@@ -4,10 +4,10 @@
...
@@ -4,10 +4,10 @@
<div
class=
"pic-left-box"
>
<div
class=
"pic-left-box"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tabs
v-model=
"activeName"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"单人脸搜索"
name=
"one"
>
<el-tab-pane
label=
"单人脸搜索"
name=
"one"
>
<onpice></onpice>
<onpice
@
onceFace=
"onceFace"
></onpice>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"多人脸搜索"
name=
"more"
>
<el-tab-pane
label=
"多人脸搜索"
name=
"more"
>
<morepic></morepic>
<morepic
@
moreFace=
"moreFace"
></morepic>
</el-tab-pane>
</el-tab-pane>
<el-tab-pane
label=
"人脸比对"
name=
"compar"
>
<el-tab-pane
label=
"人脸比对"
name=
"compar"
>
<compaarisonpic></compaarisonpic>
<compaarisonpic></compaarisonpic>
...
@@ -17,12 +17,20 @@
...
@@ -17,12 +17,20 @@
<div
class=
"pic-right-box"
>
<div
class=
"pic-right-box"
>
<div
class=
"result-box"
v-show=
"activeName == 'one'"
>
<div
class=
"result-box"
v-show=
"activeName == 'one'"
>
<div
class=
"one-pic-box"
v-for=
"item in 15"
>
<div
v-for=
"(item,index) in oncefaceData"
:key=
"index"
class=
"one-pic-box"
>
<div
class=
"one-pic-item-box"
>
<img
src=
"./1.jpg"
alt=
""
>
<img
src=
"./1.jpg"
alt=
""
>
</div>
</div>
<div
class=
"pic-info"
>
<span
class=
"info-item"
>
姓名:
{{
item
.
age
}}
</span>
<span
class=
"info-item"
>
年龄:
{{
item
.
age
}}
</span>
<span
class=
"info-item"
>
性别:
{{
setsex
(
item
.
gender
)
}}
</span>
<span
class=
"info-item"
>
相似度:
{{
item
.
score
}}
</span>
</div>
</div>
</div>
</div>
<div
class=
"result-box"
v-show=
"activeName == 'more'"
>
<div
class=
"result-box"
v-show=
"activeName == 'more'"
>
<div
class=
"more-pic-box"
v-for=
"
item in 15
"
>
<div
class=
"more-pic-box"
v-for=
"
(item,index) in morefaceData"
:key=
"index
"
>
<div
class=
"more-item org-img"
>
<div
class=
"more-item org-img"
>
<img
src=
"./1.jpg"
alt=
""
>
<img
src=
"./1.jpg"
alt=
""
>
</div>
</div>
...
@@ -69,6 +77,8 @@ export default {
...
@@ -69,6 +77,8 @@ export default {
value1
:
""
,
value1
:
""
,
imageUrl
:
''
,
imageUrl
:
''
,
activeName
:
'one'
,
activeName
:
'one'
,
oncefaceData
:[],
morefaceData
:[]
};
};
},
},
components
:{
components
:{
...
@@ -83,6 +93,16 @@ export default {
...
@@ -83,6 +93,16 @@ export default {
handleClick
(
tab
,
event
)
{
handleClick
(
tab
,
event
)
{
console
.
log
(
tab
.
name
);
console
.
log
(
tab
.
name
);
},
},
onceFace
(
val
)
{
this
.
oncefaceData
=
val
;
},
moreFace
(
val
){
this
.
morefaceData
=
val
;
},
setsex
(
val
){
if
(
val
==
"male"
)
return
"男"
if
(
val
==
"female"
)
return
"女"
},
connectws
(){
connectws
(){
}
}
...
@@ -148,15 +168,26 @@ export default {
...
@@ -148,15 +168,26 @@ export default {
.one-pic-box{
.one-pic-box{
float
left
float
left
width
200px
width
200px
height
2
0
0px
height
2
4
0px
margin
0
0
20px
20px
margin
0
0
20px
20px
border-radius
5px
border-radius
5px
box-shadow
0
0
3px
rgba(0,0,0,.3)
overflow
hidden
overflow
hidden
.one-pic-item-box
{
width
200px
height
200px
box-shadow
0
0
3px
rgba(0,0,0,.3)
}
img
{
img
{
height
100%
height
100%
width
100%
width
100%
}
}
.pic-info
{
.info-item{
display
inline-block
width
90px
}
}
}
}
}
}
.more-pic-box
{
.more-pic-box
{
...
...
web/src/views/Search/comparisonpic.vue
View file @
b9af383
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
action=
"https://jsonplaceholder.typicode.com/posts/"
action=
"https://jsonplaceholder.typicode.com/posts/"
:show-file-list=
"false"
:show-file-list=
"false"
:on-success=
"handleAvatarSuccess"
:on-success=
"handleAvatarSuccess"
:before-upload=
"beforeAvatarUpload"
>
>
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
>
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
</el-upload>
</el-upload>
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
action=
"https://jsonplaceholder.typicode.com/posts/"
action=
"https://jsonplaceholder.typicode.com/posts/"
:show-file-list=
"false"
:show-file-list=
"false"
:on-success=
"handleAvatarSuccess"
:on-success=
"handleAvatarSuccess"
:before-upload=
"beforeAvatarUpload"
>
>
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
>
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
</el-upload>
</el-upload>
...
...
web/src/views/Search/morePic.vue
View file @
b9af383
...
@@ -7,6 +7,7 @@
...
@@ -7,6 +7,7 @@
drag
drag
action=
""
action=
""
:http-request=
"uploadsearchimg"
:http-request=
"uploadsearchimg"
:on-remove=
"handleRemove"
multiple
>
multiple
>
<i
class=
"el-icon-upload"
></i>
<i
class=
"el-icon-upload"
></i>
<div
class=
"el-upload__text"
>
将文件拖到此处,或
<em>
点击上传
</em></div>
<div
class=
"el-upload__text"
>
将文件拖到此处,或
<em>
点击上传
</em></div>
...
@@ -20,6 +21,7 @@
...
@@ -20,6 +21,7 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
...
@@ -28,15 +30,76 @@ export default {
...
@@ -28,15 +30,76 @@ export default {
value
:
""
,
value
:
""
,
value1
:
""
,
value1
:
""
,
imageUrl
:
''
,
imageUrl
:
''
,
dbname
:
''
dbname
:
''
,
base64List
:[]
};
};
},
},
methods
:
{
methods
:
{
handleAvatarSuccess
(
res
,
file
)
{
handleAvatarSuccess
(
res
,
file
)
{
this
.
imageUrl
=
URL
.
createObjectURL
(
file
.
raw
);
this
.
imageUrl
=
URL
.
createObjectURL
(
file
.
raw
);
},
},
beforeAvatarUpload
(
file
){
const
isJPG
=
file
.
type
===
"image/jpeg"
;
const
isLt1M
=
file
.
size
/
1024
/
1024
<
1
;
if
(
!
isJPG
)
{
this
.
$message
.
error
(
"上传头像图片只能是 JPG 格式!"
);
}
if
(
!
isLt1M
)
{
this
.
$message
.
error
(
"上传头像图片大小不能超过 1MB!"
);
}
return
isJPG
&&
isLt1M
;
},
handleRemove
(
file
){
this
.
base64List
.
forEach
((
ele
,
index
)
=>
{
if
(
file
.
uid
==
ele
.
uid
){
this
.
base64List
.
splice
(
index
,
1
)
console
.
log
(
this
.
base64List
)
}
})
},
},
created
()
{}
uploadsearchimg
(
file
){
var
file
=
file
;
this
.
base64Img
(
file
).
then
(
res
=>
{
this
.
imageUrl
=
res
.
src
this
.
base64
=
res
.
pic_base64
debugger
let
obj
=
{}
obj
.
uid
=
file
.
file
.
uid
obj
.
pic_base64
=
res
.
pic_base64
this
.
base64List
.
push
(
obj
)
})
},
searchPic
(){
let
baseData
=
[]
this
.
base64List
.
forEach
(
ele
=>
{
baseData
.
push
(
ele
.
pic_base64
)
})
let
data
=
{
sessionId
:
localStorage
.
getItem
(
"user_id"
),
similarity
:
this
.
similarity
,
crucial_type
:
this
.
dbname
,
limit
:
20
,
pics_base64
:
baseData
}
console
.
log
(
data
);
this
.
axios
.
post
(
this
.
API
.
faceweb
+
'/faces/image_search'
,
data
).
then
((
res
)
=>
{
});
}
},
computed
:{
...
mapGetters
([
'faceinfo'
,
'alarmInfo'
])
},
created
()
{},
watch
:{
alarmInfo
(
val
){
if
(
val
.
params
.
msg_type
===
'face_img_search'
){
this
.
axios
.
get
(
val
.
params
.
msg_url
).
then
(
res
=>
{
this
.
$emit
(
'onceFace'
,
res
.
data
)
})
}
}
}
};
};
</
script
>
</
script
>
<
style
lang=
"stylus"
scoped
>
<
style
lang=
"stylus"
scoped
>
...
...
web/src/views/Search/onePic.vue
View file @
b9af383
...
@@ -8,7 +8,7 @@
...
@@ -8,7 +8,7 @@
:http-request=
"uploadsearchimg"
:http-request=
"uploadsearchimg"
:show-file-list=
"false"
:show-file-list=
"false"
:on-success=
"handleAvatarSuccess"
:on-success=
"handleAvatarSuccess"
:before-upload=
"beforeAvatarUpload"
>
>
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
>
<img
v-if=
"imageUrl"
:src=
"imageUrl"
class=
"avatar"
>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
<i
v-else
class=
"el-icon-plus avatar-uploader-icon"
></i>
</el-upload>
</el-upload>
...
@@ -34,6 +34,7 @@
...
@@ -34,6 +34,7 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
mapGetters
}
from
'vuex'
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
...
@@ -65,7 +66,6 @@ export default {
...
@@ -65,7 +66,6 @@ export default {
uploadsearchimg
(
file
){
uploadsearchimg
(
file
){
var
file
=
file
;
var
file
=
file
;
this
.
base64Img
(
file
).
then
(
res
=>
{
this
.
base64Img
(
file
).
then
(
res
=>
{
debugger
this
.
imageUrl
=
res
.
src
this
.
imageUrl
=
res
.
src
this
.
base64
=
res
.
pic_base64
this
.
base64
=
res
.
pic_base64
})
})
...
@@ -77,7 +77,7 @@ export default {
...
@@ -77,7 +77,7 @@ export default {
},
},
searchPic
(){
searchPic
(){
let
data
=
{
let
data
=
{
sessionId
:
this
.
$store
.
state
.
sessionId
,
sessionId
:
localStorage
.
getItem
(
"user_id"
)
,
similarity
:
this
.
similarity
,
similarity
:
this
.
similarity
,
crucial_type
:
this
.
dbname
,
crucial_type
:
this
.
dbname
,
limit
:
20
,
limit
:
20
,
...
@@ -89,9 +89,20 @@ export default {
...
@@ -89,9 +89,20 @@ export default {
});
});
}
}
},
},
computed
:{
...
mapGetters
([
'faceinfo'
,
'alarmInfo'
])
},
created
()
{
created
()
{
this
.
initDbData
()
this
.
initDbData
()
},
watch
:{
alarmInfo
(
val
){
if
(
val
.
params
.
msg_type
===
'face_img_search'
){
this
.
axios
.
get
(
val
.
params
.
msg_url
).
then
(
res
=>
{
this
.
$emit
(
'onceFace'
,
res
.
data
)
})
}
}
}
}
};
};
</
script
>
</
script
>
...
@@ -110,7 +121,7 @@ export default {
...
@@ -110,7 +121,7 @@ export default {
}
}
.pic-search-box
{
.pic-search-box
{
width
90%
width
90%
margin
0
auto
margin
10px
auto
0
color
#333
color
#333
}
}
.sim-box
{
.sim-box
{
...
...
web/src/views/Search/track.vue
View file @
b9af383
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
:visible
.
sync=
"show"
:visible
.
sync=
"show"
width=
"50%"
width=
"50%"
:before-close=
"handleClose"
>
:before-close=
"handleClose"
>
<el-table
:data=
"
grid
Data"
>
<el-table
:data=
"
track
Data"
>
<el-table-column
property=
"date"
label=
"日期"
></el-table-column>
<el-table-column
property=
"date"
label=
"日期"
></el-table-column>
<el-table-column
property=
"name"
label=
"姓名"
></el-table-column>
<el-table-column
property=
"name"
label=
"姓名"
></el-table-column>
<el-table-column
property=
"address"
label=
"抓怕地址"
></el-table-column>
<el-table-column
property=
"address"
label=
"抓怕地址"
></el-table-column>
...
@@ -37,26 +37,10 @@ export default {
...
@@ -37,26 +37,10 @@ export default {
page
:
{
page
:
{
offset
:
0
,
offset
:
0
,
currentPage
:
1
,
currentPage
:
1
,
limit
:
5
,
limit
:
10
,
total
:
0
total
:
0
},
},
gridData
:
[{
trackData
:
[],
date
:
'2016-05-02 16:00:00'
,
name
:
'王小虎'
,
address
:
'上海市普陀区金沙江路 1518 弄'
},
{
date
:
'2016-05-04 16:00:0'
,
name
:
'王小虎'
,
address
:
'上海市普陀区金沙江路 1518 弄'
},
{
date
:
'2016-05-01 16:00:0'
,
name
:
'王小虎'
,
address
:
'上海市普陀区金沙江路 1518 弄'
},
{
date
:
'2016-05-03 16:00:0'
,
name
:
'王小虎'
,
address
:
'上海市普陀区金沙江路 1518 弄'
}],
}
}
},
},
props
:
{
props
:
{
...
@@ -64,14 +48,17 @@ export default {
...
@@ -64,14 +48,17 @@ export default {
faceunid
:
{}
faceunid
:
{}
},
},
methods
:{
methods
:{
init
(){
init
(
data
){
this
.
show
=
true
;
this
.
show
=
true
;
console
.
log
(
data
)
console
.
log
(
data
)
this
.
axios
.
get
(
this
.
API
.
url
+
'/faces/'
+
this
.
face
unid
+
'/face_events'
,{
this
.
axios
.
get
(
this
.
API
.
url
+
'/faces/'
+
data
.
face_
unid
+
'/face_events'
,{
params
:
{
params
:
{
limit
:
this
.
page
.
limit
,
limit
:
this
.
page
.
limit
,
offset
:
this
.
page
.
offset
,
offset
:
this
.
page
.
offset
,
}
}
}).
then
(
res
=>
{
console
.
log
(
res
.
data
)
this
.
trackData
=
res
.
data
.
list_data
;
})
})
},
},
handleCurrentChange
(
val
)
{
handleCurrentChange
(
val
)
{
...
@@ -79,7 +66,9 @@ export default {
...
@@ -79,7 +66,9 @@ export default {
this
.
page
.
offset
=
(
val
-
1
)
*
this
.
page
.
limit
;
this
.
page
.
offset
=
(
val
-
1
)
*
this
.
page
.
limit
;
this
.
init
();
this
.
init
();
},
},
handleClose
(){
this
.
show
=
false
;
},
},
},
mounted
(){
mounted
(){
}
}
...
...
web/src/views/System/Role/index.vue
View file @
b9af383
...
@@ -127,6 +127,7 @@ export default {
...
@@ -127,6 +127,7 @@ export default {
"offset"
:
this
.
page
.
offset
"offset"
:
this
.
page
.
offset
}
}
}).
then
(
response
=>
{
}).
then
(
response
=>
{
debugger
this
.
tableData
=
response
.
data
.
list_data
;
this
.
tableData
=
response
.
data
.
list_data
;
this
.
page
.
total
=
response
.
data
.
total_num
;
this
.
page
.
total
=
response
.
data
.
total_num
;
});
});
...
...
web/src/views/System/Setting/index.vue
View file @
b9af383
<
template
>
<
template
>
<div
class=
"template-box content_div_main setting-box"
>
<div
class=
"template-box content_div_main"
>
<div>
推送设置
</div>
<div
class=
"setting-box"
>
<el-row
class=
"mb10"
>
<el-col
:span=
"2"
>
<el-checkbox
v-model=
"daychecked"
>
天计划
</el-checkbox>
</el-col>
<el-col
:span=
"10"
>
<el-time-select
v-model=
"timer"
:picker-options=
"
{
start: '08:00',
step: '01:00',
end: '18:00'
}"
placeholder="选择时间">
</el-time-select>
</el-col>
</el-row>
<el-row
class=
"mb10"
>
<el-col
:span=
"2"
>
<el-checkbox
v-model=
"weekchecked"
>
周计划
</el-checkbox>
</el-col>
<el-col
:span=
"10"
>
<el-select
v-model=
"week"
placeholder=
"请选择"
>
<el-option
v-for=
"item in options"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
>
</el-option>
</el-select>
</el-col>
</el-row>
<el-row
class=
"mb10"
>
<el-col
:span=
"2"
>
<el-checkbox
v-model=
"monthchecked"
>
月计划
</el-checkbox>
</el-col>
<el-col
:span=
"10"
>
<el-select
v-model=
"month"
placeholder=
"请选择"
>
<el-option
v-for=
"item in 31"
:key=
"item"
:label=
"item"
:value=
"item"
>
</el-option>
</el-select>
<span
class=
"month-title"
>
不满31天月份将按照当月月底进行调整
</span>
</el-col>
</el-row>
<div
class=
"persion-box"
>
<el-transfer
v-model=
"user"
:titles=
"['成员列表', '选中成员']"
:data=
"sysData"
></el-transfer>
</div>
<div
class=
"btn-box"
>
<el-button
type=
"primary"
>
保存设置
</el-button>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
data
()
{
data
()
{
return
{
return
{
radio
:
3
,
userdata
:[],
daychecked
:
false
,
weekchecked
:
false
,
monthchecked
:
false
,
value
:[
1
,
4
],
options
:[{
value
:
'1'
,
label
:
'星期一'
},{
value
:
'2'
,
label
:
'星期二'
},{
value
:
'3'
,
label
:
'星期三'
},{
value
:
'4'
,
label
:
'星期四'
},{
value
:
'5'
,
label
:
'星期五'
},{
value
:
'6'
,
label
:
'星期六'
},{
value
:
'7'
,
label
:
'星期日'
}],
week
:
''
,
timer
:
''
,
month
:
''
,
user
:[],
sysData
:[]
}
}
},
},
methods
:
{
methods
:
{
saveSet
(){
let
data
=
{
day
:
"09:00"
,
week
:
1
,
month
:
12
,
openState
:
'day'
}
this
.
axios
.
post
(
''
,
data
).
then
(
res
=>
{
console
.
log
(
res
.
data
);
})
},
getSysUser
()
{
var
Vthis
=
this
;
this
.
axios
.
get
(
this
.
API
.
auth
.
user
,
{
params
:
{
limit
:
10000
,
offset
:
0
,
is_active
:
true
,
user_type
:
"user"
,
norm_type
:
"login"
}
}).
then
((
response
)
=>
{
let
resdata
=
response
.
data
.
list_data
;
let
sysArr
=
[]
resdata
.
forEach
(
ele
=>
{
let
obj
=
{
key
:
ele
.
user_unid
,
label
:
ele
.
name
}
sysArr
.
push
(
obj
)
});
this
.
sysData
=
sysArr
});
},
},
},
created
()
{
created
()
{
this
.
getSysUser
()
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"stylus"
scoped
>
<
style
lang=
"stylus"
scoped
>
.setting-box
{
.setting-box
{
margin
20px
40px
color
#333
color
#333
.el-checkbox{
color
#666
}
}
}
.sysuser
{
.sysuser
{
background
#fff
background
#fff
...
@@ -55,4 +182,16 @@ export default {
...
@@ -55,4 +182,16 @@ export default {
right
10px
right
10px
button
button
float
right
float
right
.mb10
margin-bottom
10px
.persion-box
{
margin-top
30px
}
.btn-box
{
margin-top
20px
}
.month-title
{
font-size
12px
color
#e4393c
}
</
style
>
</
style
>
web/src/views/videos/playvideo.vue
View file @
b9af383
...
@@ -21,13 +21,13 @@
...
@@ -21,13 +21,13 @@
<div
class=
"play-video-box"
>
<div
class=
"play-video-box"
>
<div
class=
"play-box"
></div>
<div
class=
"play-box"
></div>
<div
class=
"show-pic-box"
>
<div
class=
"show-pic-box"
>
<div
v-for=
"
item in 15"
class=
"pic-bo
x"
>
<div
v-for=
"
(item,index) in eventfaceData"
class=
"pic-box"
:key=
"inde
x"
>
<img
src=
"./testimg/2.jpg
"
alt=
""
>
<img
:src=
"item.pic_url
"
alt=
""
>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"comparison-box"
>
<div
class=
"comparison-box"
>
<div
class=
"item-box"
v-for=
"item in 5"
>
<div
class=
"item-box"
v-for=
"item in 5"
:key=
"item"
>
<div
class=
"org-img"
>
<div
class=
"org-img"
>
<img
src=
"./testimg/1.jpg"
alt=
""
>
<img
src=
"./testimg/1.jpg"
alt=
""
>
<div
class=
"img-info"
>
<div
class=
"img-info"
>
...
@@ -61,6 +61,8 @@ export default {
...
@@ -61,6 +61,8 @@ export default {
data
()
{
data
()
{
return
{
return
{
treedata
:
[],
treedata
:
[],
eventfaceData
:[],
faceclock
:
null
,
searchvideo
:
''
,
searchvideo
:
''
,
defaultProps
:
{
defaultProps
:
{
children
:
'childs'
,
children
:
'childs'
,
...
@@ -118,15 +120,29 @@ export default {
...
@@ -118,15 +120,29 @@ export default {
filterNode
(
value
,
data
)
{
filterNode
(
value
,
data
)
{
if
(
!
value
)
return
true
;
if
(
!
value
)
return
true
;
return
data
.
org_name
.
indexOf
(
value
)
!==
-
1
;
return
data
.
org_name
.
indexOf
(
value
)
!==
-
1
;
},
geteventData
(){
this
.
axios
.
get
(
this
.
API
.
faceweb
+
"/face_events"
).
then
(
res
=>
{
// console.log(res.data);
this
.
eventfaceData
=
res
.
data
.
list_data
;
})
}
}
},
},
beforeDestroy
(){
clearInterval
(
this
.
faceclock
);
this
.
faceclock
=
null
;
},
watch
:
{
watch
:
{
searchvideo
(
val
)
{
searchvideo
(
val
)
{
this
.
$refs
.
videotree
.
filter
(
val
);
this
.
$refs
.
videotree
.
filter
(
val
);
}
},
},
},
created
()
{
created
()
{
this
.
getorgtree
()
this
.
getorgtree
();
this
.
faceclock
=
setInterval
((
res
)
=>
{
this
.
geteventData
();
},
2000
)
}
}
};
};
</
script
>
</
script
>
...
...
web/src/views/videos/环形相似度.vue
deleted
100644 → 0
View file @
d515cb9
<
template
>
<div
id=
"sim"
>
<canvas
:id=
"cid"
class=
"simcav"
></canvas>
</div>
</
template
>
<
script
>
export
default
{
props
:[
'cid'
],
data
(){
return
{
}
},
methods
:{
drawoutround
(){
let
c
=
document
.
getElementById
(
this
.
cid
);
debugger
let
ctx
=
c
.
getContext
(
"2d"
)
c
.
width
=
300
c
.
height
=
150
ctx
.
beginPath
();
var
gradient
=
ctx
.
createLinearGradient
(
0
,
0
,
170
,
0
);
gradient
.
addColorStop
(
"1"
,
"rgba(0,0,237,.4)"
);
gradient
.
addColorStop
(
"0.3"
,
"rgba(33,149,237,.4)"
);
gradient
.
addColorStop
(
"0.6"
,
"rgba(33,149,237,.8)"
);
gradient
.
addColorStop
(
"0"
,
"rgba(33,149,237,1)"
);
// 用渐变进行填充
ctx
.
strokeStyle
=
gradient
;
ctx
.
lineWidth
=
10
;
ctx
.
arc
(
135
,
70
,
40
,
0
,
1.8
*
Math
.
PI
,
false
)
ctx
.
lineCap
=
"round"
ctx
.
stroke
();
ctx
.
font
=
"18px Verdana"
;
var
gradient
=
ctx
.
createLinearGradient
(
0
,
0
,
c
.
width
,
0
);
gradient
.
addColorStop
(
"0"
,
"magenta"
);
gradient
.
addColorStop
(
"0.5"
,
"blue"
);
gradient
.
addColorStop
(
"1.0"
,
"red"
);
// 用渐变填色
ctx
.
fillStyle
=
gradient
;
ctx
.
fillText
(
"80%"
,
115
,
75
);
}
},
mounted
(){
this
.
drawoutround
()
}
}
</
script
>
<
style
>
.simcav
{
height
:
150px
;
width
:
300px
;
position
:
absolute
;
left
:
-80px
}
</
style
>
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