独树的风 1 year ago
commit bd238663b1

@ -0,0 +1 @@
VUE_APP_OSS = http://50.146.63.224:8118

@ -1,6 +1,4 @@
import request from '@/utils/request' import request from '@/utils/request'
export const getResources = () => export const getResources = () => request.post('/base/poaching/overviewResources')
request.post('/base/poaching/overviewResources') export const getStatistics = () => request.post('/base/poaching/personnelStatistics')
export const getStatistics = () =>
request.post('/base/poaching/personnelStatistics')

@ -1,3 +1,3 @@
import request from '@/utils/request' import request from '@/utils/request'
export const listHunter = (params) => request.get('/base/transitHuntersUserRecord', { params }) export const listHunter = (params) => request.get('/base/transitHuntersUserModelRecord', { params })

@ -1,6 +1,14 @@
import request from '@/utils/request' import request from '@/utils/request'
export const listUser = (params) => request.get('/base/metaHuntersInfo', { params }) export const listUser = (params) =>
request.get('/base/metaHuntersInfo', { params })
export const addUser = (data) => request.post('/base/metaHuntersInfo', data) export const addUser = (data) => request.post('/base/metaHuntersInfo', data)
export const editUser = (data) => request.put('/base/metaHuntersInfo', data) export const editUser = (data) => request.put('/base/metaHuntersInfo', data)
export const delUser = (idList) => request.delete('/base/metaHuntersInfo', { params: { idList: idList.join(',') } }) export const delUser = (idList) =>
request.delete('/base/metaHuntersInfo', {
params: { idList: idList.join(',') }
})
export const getUserType = () =>
request.get('/system/dict/data/list', {
params: { dictType: 'hunters_user_type' }
})

@ -15,16 +15,6 @@ export function transitVehicleRecord(params) {
params params
}) })
} }
// * 重点人车辆记录表
export function getTransitImpVehicleAPI(params) {
return request({
url: '/base/transitImpVehicleRecord',
method: 'get',
params
})
}
//人车数量 //人车数量
export function humanVehicleStatistics(params) { export function humanVehicleStatistics(params) {
return request({ return request({

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

@ -29,7 +29,12 @@ export default {
border: 1px solid rgba(54, 181, 255, 1); border: 1px solid rgba(54, 181, 255, 1);
&.img-button_light { &.img-button_light {
background: linear-gradient(270deg, rgba(0, 142, 224, 0) 0%, #008ee0 49%, rgba(0, 142, 224, 0) 100%); background: linear-gradient(
270deg,
rgba(0, 142, 224, 0) 0%,
#008ee0 49%,
rgba(0, 142, 224, 0) 100%
);
} }
} }
</style> </style>

@ -13,7 +13,7 @@ export default {
}, },
methods: { methods: {
handleClose() { handleClose() {
this.back && this.$router.push(this.back) this.back ? this.$router.push(this.back) : this.$router.back()
} }
} }
} }

@ -9,8 +9,7 @@ export default {
}, },
data() { data() {
return { return {
// oss: process.env.VUE_APP_OSS oss: process.env.VUE_APP_OSS
oss: 'http://50.146.63.224:8118'
} }
} }
} }

@ -52,6 +52,34 @@ const routes = [
// } // }
] ]
}, },
{
path: '/hunting',
name: 'hunting',
redirect: { name: 'huntingHome' },
component: () => import('@/views/Layout/index.vue'),
children: [
{
path: '',
name: 'huntingHome',
component: () => import('@/views/hunting/home/index.vue')
},
{
path: 'control',
name: 'huntingControl',
component: () => import('@/views/hunting/control/index.vue')
},
{
path: 'warning',
name: 'huntingWarning',
component: () => import('@/views/hunting/warning/index.vue')
},
{
path: 'hunter',
name: 'huntingHunter',
component: () => import('@/views/hunting/hunter/index.vue')
}
]
},
{ {
path: '/hunting', path: '/hunting',
name: 'hunting', name: 'hunting',

@ -57,7 +57,7 @@ export default {
}, },
created() {}, created() {},
methods: { methods: {
} }
} }
</script> </script>

@ -26,6 +26,7 @@
</div> </div>
</div> </div>
</div> </div>
<!-- 左边区域 --> <!-- 左边区域 -->
<div class="left_box" v-if="isplay === 1"> <div class="left_box" v-if="isplay === 1">
<Resource <Resource
@ -564,7 +565,6 @@ export default {
justify-content: space-between; justify-content: space-between;
transform: translateY(-1%); transform: translateY(-1%);
transition: right 0.5s ease-in-out; transition: right 0.5s ease-in-out;
.point_list_item { .point_list_item {
width: 4vw; width: 4vw;
height: 4vw; height: 4vw;

@ -1,13 +1,11 @@
<template> <template>
<div class="card-table"> <div class="card-table">
<div class="card-item" v-for="(item, index) in rows" :key="index"> <div class="card-item" v-for="(item, index) in rows" :key="index">
<el-checkbox <el-checkbox @change="handleChecked($event, item.id)" :key="item.id"></el-checkbox>
@change="handleChecked($event, item.id)"
:key="item.id"
></el-checkbox>
<div class="fy-center"> <div class="fy-center">
<div style="height: 14vh; width: 5vw"> <div style="height: 14vh; width: 5vw" class="f-center">
<oss-img :src="item.pic" /> <oss-img v-if="item.userPic" :src="item.userPic" />
<img v-else src="@/assets/hunting/user-default.png" />
</div> </div>
<div class="flex-1"> <div class="flex-1">
<div class="fy-center"> <div class="fy-center">
@ -18,17 +16,12 @@
<div class="fy-center mt-10"> <div class="fy-center mt-10">
<img class="img-icon" src="@/assets/hunting/id-card.png" /> <img class="img-icon" src="@/assets/hunting/id-card.png" />
<div class="item-label">证件号码</div> <div class="item-label">证件号码</div>
<div <div style="color: #66b1ff; cursor: pointer" @click="$emit('click', item.idCard)">{{ item.idCard }}</div>
style="color: #66b1ff; cursor: pointer"
@click="$emit('click', item.idCard)"
>
{{ item.idCard }}
</div>
</div> </div>
<div class="fy-center mt-10"> <div class="fy-center mt-10">
<img class="img-icon" src="@/assets/hunting/involved.png" /> <img class="img-icon" src="@/assets/hunting/involved.png" />
<div class="item-label">涉案类型</div> <div class="item-label">人员类型</div>
<div>{{ item.caseSituation }}</div> <div>{{ item.huntersUserTypeCn }}</div>
</div> </div>
<div class="fy-center mt-10"> <div class="fy-center mt-10">
<img class="img-icon" src="@/assets/hunting/address.png" /> <img class="img-icon" src="@/assets/hunting/address.png" />
@ -83,19 +76,9 @@ export default {
grid-template-rows: min-content; grid-template-rows: min-content;
grid-gap: 10px; grid-gap: 10px;
.card-item { .card-item {
background: linear-gradient( background: linear-gradient(180deg, rgba(0, 97, 224, 0.3) 0%, rgba(0, 71, 224, 0) 49%, rgba(0, 97, 224, 0.25) 100%);
180deg,
rgba(0, 97, 224, 0.3) 0%,
rgba(0, 71, 224, 0) 49%,
rgba(0, 97, 224, 0.25) 100%
);
border: 1px solid; border: 1px solid;
border-image: linear-gradient( border-image: linear-gradient(153deg, rgba(127, 207, 244, 1), rgba(48, 184, 246, 0.7)) 1 1;
153deg,
rgba(127, 207, 244, 1),
rgba(48, 184, 246, 0.7)
)
1 1;
backdrop-filter: blur(3px); backdrop-filter: blur(3px);
position: relative; position: relative;
padding: 1vh 0.5vw; padding: 1vh 0.5vw;

@ -15,7 +15,7 @@
<!-- 占位 --> <!-- 占位 -->
<div class="num_blank"></div> <div class="num_blank"></div>
<div class="num_text">非法狩猎人员</div> <div class="num_text">非法狩猎人员</div>
<div class="num_value">{{ importpeople.ffslryCount }}</div> <div class="num_value">{{ importpeople.count }}</div>
</div> </div>
<div class="echart_box" id="charts"></div> <div class="echart_box" id="charts"></div>
</div> </div>
@ -27,8 +27,8 @@
<div class="color_box" :style="{ background: colors[index] }"></div> <div class="color_box" :style="{ background: colors[index] }"></div>
</div> </div>
<!-- 图例文字 --> <!-- 图例文字 -->
<div class="num_text">{{ item.name }}</div> <div class="num_text line-1" style="width: 100%" :title="item.name">{{ item.name }}</div>
<div class="num_proportion">{{ item.value }}</div> <div class="num_proportion">{{ item.percentage }}</div>
</div> </div>
</div> </div>
</div> </div>
@ -38,12 +38,21 @@
<li v-for="item in roll_list" :key="item.id"> <li v-for="item in roll_list" :key="item.id">
<div class="roll_item_left"> <div class="roll_item_left">
<div class="roll_item_pic"> <div class="roll_item_pic">
<oss-img :src="item.userPic" alt="" /> <oss-img v-if="item.userPic" :src="item.userPic" alt="" />
<img v-else src="@/assets/hunting/user-default.png" />
</div> </div>
</div> </div>
<div class="roll_item_right"> <div class="roll_item_right">
<!-- // TODO --> <!-- // TODO -->
<div class="person_type one_type">非法狩猎</div> <div v-if="item.huntersUserType == '2'" class="person_type one_type">
{{ item.huntersUserTypeCn }}
</div>
<div v-if="item.huntersUserType == '1'" class="person_type two_type">
{{ item.huntersUserTypeCn }}
</div>
<div v-if="item.huntersUserType == '3'" class="person_type three_type">
{{ item.huntersUserTypeCn }}
</div>
<!-- 信息展示 --> <!-- 信息展示 -->
<div class="right_text"> <div class="right_text">
<div class="right_text_item">人员姓名 :</div> <div class="right_text_item">人员姓名 :</div>
@ -53,7 +62,7 @@
<div class="right_text_item">现住地址 :</div> <div class="right_text_item">现住地址 :</div>
</div> </div>
<div class="right_value"> <div class="right_value">
<div class="right_value_item">{{ item.userName }}</div> <div class="right_value_item">{{ item.hunterName }}</div>
<div class="right_value_item">{{ item.phone }}</div> <div class="right_value_item">{{ item.phone }}</div>
<div class="right_value_item" :title="item.idCard"> <div class="right_value_item" :title="item.idCard">
{{ item.idCard }} {{ item.idCard }}
@ -99,7 +108,7 @@ export default {
}, },
mounted() { mounted() {
this.init_charts() this.init_charts()
this.timer = setInterval(this.scrollAnimate, 1500) this.timer = setInterval(this.scrollAnimate, 5000)
}, },
created() { created() {
this.onkeyPersonnelAPI() this.onkeyPersonnelAPI()
@ -116,12 +125,10 @@ export default {
}) })
const data = [] const data = []
const count = this.importpeople.ffslryCount
for (let key in this.importpeople) { for (let key in this.importpeople) {
if (key != 'ffslryCount') { if (key != 'count') {
for (let name in this.importpeople[key]) { const item = this.importpeople[key]
data.push({ value: Math.round((count * parseInt(this.importpeople[key][name])) / 100), name: key }) data.push(item)
}
} }
} }
this.seriesData = data this.seriesData = data
@ -376,13 +383,13 @@ export default {
display: flex; display: flex;
.person_type { .person_type {
position: absolute; position: absolute;
width: 3vw; width: 5vw;
height: 2vh;
top: 0px; top: 0px;
right: 0px; right: 0px;
color: #061122; color: #061122;
text-align: center; text-align: center;
line-height: 2vh; white-space: normal;
font-size: 10px;
} }
.one_type { .one_type {
background: #ffc426; background: #ffc426;

@ -14,7 +14,7 @@
<li v-for="item in roll_list" :key="item.id"> <li v-for="item in roll_list" :key="item.id">
<div class="roll_item_left"> <div class="roll_item_left">
<div class="roll_item_pic"> <div class="roll_item_pic">
<img class="oss-img" :src="item.platePic" alt="" /> <img class="oss-img" :src="item.globalPic" alt="" />
</div> </div>
</div> </div>
<div class="roll_item_right"> <div class="roll_item_right">
@ -46,7 +46,7 @@
<div class="right_value_item" :title="item.passTime"> <div class="right_value_item" :title="item.passTime">
{{ item.passTime }} {{ item.passTime }}
</div> </div>
<div class="right_value_item">{{ item.duration }}</div> <div class="right_value_item">{{ item.residenceTime }}</div>
<div class="right_value_item" :title="item.deviceAddress"> <div class="right_value_item" :title="item.deviceAddress">
{{ item.deviceAddress }} {{ item.deviceAddress }}
</div> </div>

@ -14,29 +14,40 @@
<li v-for="item in roll_list" :key="item.id"> <li v-for="item in roll_list" :key="item.id">
<div class="roll_item_left"> <div class="roll_item_left">
<div class="roll_item_pic"> <div class="roll_item_pic">
<img class="oss-img" :src="item.platePic" alt="" /> <oss-img v-if="item.userPic" :src="item.userPic" alt="" />
<img v-else src="@/assets/hunting/user-default.png" />
</div> </div>
</div> </div>
<div class="roll_item_right"> <div class="roll_item_right">
<!-- // TODO -->
<div v-if="item.huntersUserType == '2'" class="person_type one_type">
{{ item.huntersUserTypeCn }}
</div>
<div v-if="item.huntersUserType == '1'" class="person_type two_type">
{{ item.huntersUserTypeCn }}
</div>
<div v-if="item.huntersUserType == '3'" class="person_type three_type">
{{ item.huntersUserTypeCn }}
</div>
<!-- 信息展示 --> <!-- 信息展示 -->
<div class="right_text"> <div class="right_text">
<div class="right_text_item">人员姓名 :</div> <div class="right_text_item">人员姓名 :</div>
<div class="right_text_item">证件号码 :</div> <div class="right_text_item">证件号码 :</div>
<div class="right_text_item">抓拍时间 :</div> <div class="right_text_item">预警时间 :</div>
<div class="right_text_item">滞留时间 :</div> <div class="right_text_item">预警级别 :</div>
<div class="right_text_item">抓拍地址 :</div> <div class="right_text_item">滞留时长 :</div>
</div> </div>
<div class="right_value"> <div class="right_value">
<div class="right_value_item">{{ item.userName }}</div> <div class="right_value_item">{{ item.huntersUserName }}</div>
<div class="right_value_item">{{ item.idCard }}</div> <div class="right_value_item">{{ item.huntersUserIdCard }}</div>
<div class="right_value_item"> <div class="right_value_item">
{{ item.passTime }} {{ item.warningTime }}
</div> </div>
<div class="right_value_item" :title="item.duration"> <div class="right_value_item" :title="item.duration">
{{ item.duration }} {{ item.warningLevelCn }}
</div> </div>
<div class="right_value_item" :title="item.deviceAddress"> <div class="right_value_item" :title="item.residenceTime">
{{ item.deviceAddress }} {{ item.residenceTime }}
</div> </div>
</div> </div>
</div> </div>
@ -65,7 +76,7 @@ export default {
} }
}, },
mounted() { mounted() {
this.timer = setInterval(this.scrollAnimate, 1500) this.timer = setInterval(this.scrollAnimate, 3000)
}, },
created() { created() {
this.onkeyPersonnelAPI() this.onkeyPersonnelAPI()
@ -272,13 +283,13 @@ export default {
display: flex; display: flex;
.person_type { .person_type {
position: absolute; position: absolute;
width: 3vw; width: 5vw;
height: 2vh;
top: 0px; top: 0px;
right: 0px; right: 0px;
color: #061122; color: #061122;
text-align: center; text-align: center;
line-height: 2vh; white-space:normal;
font-size: 10px;
} }
.one_type { .one_type {
background: #ffc426; background: #ffc426;

@ -20,13 +20,19 @@
<!-- --> <!-- -->
<div class="under_btn"> <div class="under_btn">
<div class="under_btn_item"> <div class="under_btn_item">
<div class="item_check" @click="toHome"></div> <div class="item_check_back" @click="toHome">
<img src="@/assets/hunting/home.png" />
</div>
</div> </div>
<div class="under_btn_item"> <div class="under_btn_item">
<div class="item_check_back" @click="toControl"></div> <div class="item_check_back" @click="toControl">
<img src="@/assets/hunting/control.png" />
</div>
</div> </div>
<div class="under_btn_item"> <div class="under_btn_item">
<div class="item_check_back" @click="toWarning"></div> <div class="item_check_back" @click="toWarning">
<img src="@/assets/hunting/warning.png" />
</div>
</div> </div>
</div> </div>
</div> </div>
@ -340,7 +346,7 @@ export default {
.item_check_back { .item_check_back {
width: 5.5vw; width: 5.5vw;
height: 5.5vw; height: 5.5vw;
background-image: url('@/assets/picture/under_button.png'); background-image: url('@/assets/hunting/dizuo.png');
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: 100% 100%; background-size: 100% 100%;
font-size: 1.2rem; font-size: 1.2rem;
@ -356,7 +362,6 @@ export default {
color: #00f5ff; color: #00f5ff;
// * // *
filter: brightness(140%); filter: brightness(140%);
background-size: 100% auto;
} }
} }
} }

@ -1,9 +1,10 @@
<template> <template>
<card class="hunting-hunter" back="/hunting/control"> <card class="hunting-hunter" >
<div class="fy-center"> <div class="fy-center">
<div class="avatar"> <div class="avatar">
<div class="flex-1"> <div class="flex-1">
<oss-img :src="hunter.pic" /> <oss-img v-if="hunter.userPic" :src="hunter.userPic" />
<img v-else src="@/assets/hunting/user-default.png" />
</div> </div>
<div class="avatar_name">{{ hunter.hunterName }}</div> <div class="avatar_name">{{ hunter.hunterName }}</div>
</div> </div>
@ -14,7 +15,7 @@
<label class="fy-center">性别</label> <label class="fy-center">性别</label>
<div class="fy-center">{{ hunter.sexCn }}</div> <div class="fy-center">{{ hunter.sexCn }}</div>
<label class="fy-center">涉案类型</label> <label class="fy-center">涉案类型</label>
<div class="fy-center">{{ hunter.caseSituation }}</div> <div class="fy-center">{{ hunter.huntersUserTypeCn }}</div>
</div> </div>
<div class="fy-center row"> <div class="fy-center row">
<label class="fy-center">联系方式</label> <label class="fy-center">联系方式</label>

@ -0,0 +1,152 @@
<template>
<div class="detail">
<div>
<div class="box">
<div class="fy-center" style="justify-content: space-between">
<div>首次抓拍</div>
<div>{{ data.firstPassTimeCn }}</div>
</div>
<div class="fy-center">
<img class="oss-img" :src="data.firstGlobalPic" />
<img class="oss-img" :src="data.firstUserPic" />
</div>
<div class="fy-center">
<div>经过位置</div>
<div>{{ data.firstDeviceAddress }}</div>
</div>
</div>
<div class="box" style="margin-top: 20px">
<div class="fy-center" style="justify-content: space-between">
<div>末次抓拍</div>
<div>{{ data.endPassTimeCn }}</div>
</div>
<div class="fy-center">
<img class="oss-img" :src="data.endGlobalPic" />
<img class="oss-img" :src="data.endUserPic" />
</div>
<div class="fy-center">
<div>经过位置</div>
<div>{{ data.endDeviceAddress }}</div>
</div>
</div>
</div>
<div class="flex-col w-530 ml-12 overflow-auto">
<div class="fy-center row">
<div class="label fy-center">姓名</div>
<div class="content line-1">{{ data.huntersUserName }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">证件号码</div>
<div class="content line-1">{{ data.huntersUserIdCard }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">人员类型</div>
<div class="content line-1">{{ data.huntersUserTypeCn }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">预警级别</div>
<div class="content line-1">{{ data.warningLevelCn }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">抓拍次数</div>
<div class="content line-1">{{ data.captureFrequencyCn }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">预警时间</div>
<div class="content line-1">{{ data.warningTime }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">滞留时间</div>
<div class="content line-1"></div>
</div>
<div class="fy-center row flex-1">
<div class="label fy-center">预警内容</div>
<div class="content flex-1">{{ data.warningContent }}</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
data: Object
}
}
</script>
<style lang="scss" scoped>
.oss-img {
object-fit: cover;
}
.detail {
color: white;
overflow: hidden;
display: flex;
.box {
padding: 20px 20px 10px 20px;
background: rgba(0, 156, 254, 0.15);
border: 1px solid #22628b;
box-sizing: border-box;
img {
width: 432px;
height: 200px;
margin: 10px 0;
&:last-child {
width: 182px;
margin-left: 20px;
}
}
}
.row {
margin-top: 0.4vh;
display: flex;
&:first-child {
margin-top: 0;
}
&:last-child {
.label,
.content {
height: 100%;
}
}
}
.h-144 {
height: 14.4vh;
}
.w-530 {
width: 530px;
}
.ml-12 {
margin-left: 0.6vw;
}
.overflow-auto {
overflow: auto;
}
.grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 5px;
}
.label {
width: 6vw;
height: 44px;
background-color: #093979;
margin-right: 1px;
padding-left: 12px;
}
.content {
padding-left: 12px;
height: 44px;
line-height: 44px;
background-color: rgba(9, 57, 121, 0.3);
&.even {
background-color: rgba(9, 57, 121, 0.5);
}
}
}
</style>

@ -0,0 +1,99 @@
<template>
<div class="detail">
<div class="flex-1">
<img class="oss-img" :src="data.pic" />
</div>
<div class="flex-col w-400 ml-12 overflow-auto">
<div class="fy-center row">
<div class="label fy-center">车牌号码</div>
<div class="content line-1" :class="{ even: index % 2 == 0 }">{{ data.plateNo }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">姓名</div>
<div class="content line-1" :class="{ even: index % 2 == 0 }">{{ data.ownerName }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">证件号码</div>
<div class="content line-1" :class="{ even: index % 2 == 0 }">{{ data.idCard }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">联系方式</div>
<div class="content line-1" :class="{ even: index % 2 == 0 }">{{ data.phone }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">过车时间</div>
<div class="content line-1" :class="{ even: index % 2 == 0 }">{{ data.passTime }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">经过位置</div>
<div class="content line-1" :class="{ even: index % 2 == 0 }">{{ data.deviceAddress }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">经度</div>
<div class="content line-1" :class="{ even: index % 2 == 0 }">{{ data.longitude }}</div>
</div>
<div class="fy-center row">
<div class="label fy-center">纬度</div>
<div class="content line-1" :class="{ even: index % 2 == 0 }">{{ data.latitude }}</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
data: Object
}
}
</script>
<style lang="scss" scoped>
.oss-img {
width: 100%;
height: 100%;
object-fit: cover;
}
.detail {
color: white;
width: 100%;
overflow: hidden;
display: flex;
.row {
margin-top: 0.4vh;
}
.h-144 {
height: 14.4vh;
}
.w-400 {
width: 20vw;
}
.ml-12 {
margin-left: 0.6vw;
}
.overflow-auto {
overflow: auto;
}
.grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 5px;
}
.label {
width: 6vw;
height: 44px;
background-color: #093979;
margin-right: 1px;
padding-left: 12px;
}
.content {
padding-left: 12px;
height: 44px;
line-height: 44px;
background-color: rgba(9, 57, 121, 0.3);
&.even {
background-color: rgba(9, 57, 121, 0.5);
}
}
}
</style>

@ -42,20 +42,20 @@
</div> </div>
<el-table v-if="listType == 0" :data="rows" style="width: 100%"> <el-table v-if="listType == 0" :data="rows" style="width: 100%">
<el-table-column label="序号" type="index"> </el-table-column> <el-table-column label="序号" type="index"> </el-table-column>
<el-table-column prop="userName" label="姓名" width="150"> </el-table-column> <el-table-column prop="huntersUserName" label="姓名" width="150"> </el-table-column>
<el-table-column prop="idCard" label="证件号码" width="200"> <el-table-column prop="huntersUserIdCard" label="证件号码" width="200">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="color: #66b1ff; cursor: pointer" @click="toDetail(scope.row.idCard)">{{ scope.row.idCard }}</div> <div style="color: #66b1ff; cursor: pointer" @click="toDetail(scope.row.huntersUserIdCard)">{{ scope.row.huntersUserIdCard }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="" label="预警类型" width="150"> 非法狩猎 </el-table-column> <el-table-column prop="huntersUserTypeCn" label="人员类型" width="150"> </el-table-column>
<el-table-column prop="" label="预警内容" width="400"> <el-table-column prop="warningLevelCn" label="预警级别" width="150"> </el-table-column>
<el-table-column prop="warningTime" label="预警时间" width="200"> </el-table-column>
<el-table-column prop="warningContent" label="预警内容" width="400">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.deviceAddress">{{ scope.row.deviceAddress }}</div> <div style="width: 100%" class="line-1" :title="scope.row.warningContent">{{ scope.row.warningContent }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="" label="派出所" width="250"> 临海双洋</el-table-column>
<el-table-column prop="passTime" label="预警时间" width="200"> </el-table-column>
<el-table-column prop="passTime" label="签收反馈状态" width="200"> <el-table-column prop="passTime" label="签收反馈状态" width="200">
<el-tag type="danger" effect="dark">未签收</el-tag> <el-tag type="danger" effect="dark">未签收</el-tag>
</el-table-column> </el-table-column>
@ -69,20 +69,21 @@
<el-table-column label="序号" type="index"> </el-table-column> <el-table-column label="序号" type="index"> </el-table-column>
<el-table-column prop="ownerName" label="姓名" width="150"> </el-table-column> <el-table-column prop="ownerName" label="姓名" width="150"> </el-table-column>
<el-table-column v-if="listType == 1" prop="plateNo" label="车牌号码" width="100"> </el-table-column> <el-table-column v-if="listType == 1" prop="plateNo" label="车牌号码" width="100"> </el-table-column>
<el-table-column prop="idCard" label="证件号码" width="200"> <el-table-column prop="idCard" label="证件号码" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<div style="color: #66b1ff; cursor: pointer" @click="toDetail(scope.row.idCard)">{{ scope.row.idCard }}</div> <div style="color: #66b1ff; cursor: pointer" @click="toDetail(scope.row.idCard)">{{ scope.row.idCard }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="" label="预警类型" width="150"> 非法狩猎 </el-table-column> <el-table-column prop="" label="预警类型" width="150"> 非法狩猎 </el-table-column>
<el-table-column prop="" label="预警内容" width="400"> <el-table-column prop="" label="预警内容" width="300">
<template slot-scope="scope"> <template slot-scope="scope">
<div v-if="scope.row.deviceAddress">{{ scope.row.deviceAddress }}</div> <div v-if="scope.row.deviceAddress">{{ scope.row.deviceAddress }}</div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="" label="派出所" width="250"> 临海双洋</el-table-column> <el-table-column prop="" label="派出所" width="120"> 临海双洋</el-table-column>
<el-table-column prop="passTime" label="活动时间" width="200"> </el-table-column>
<el-table-column prop="passTime" label="预警时间" width="200"> </el-table-column> <el-table-column prop="passTime" label="预警时间" width="200"> </el-table-column>
<el-table-column prop="" label="签收反馈状态" width="200"> <el-table-column prop="" label="签收反馈状态" width="150">
<el-tag type="danger" effect="dark">未签收</el-tag> <el-tag type="danger" effect="dark">未签收</el-tag>
</el-table-column> </el-table-column>
<el-table-column prop="address" label="操作"> <el-table-column prop="address" label="操作">
@ -92,8 +93,9 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination style="margin-top: 2vh" :total="total" @change="handleQuery"></pagination> <pagination style="margin-top: 2vh" :total="total" @change="handleQuery"></pagination>
<el-dialog title="详情" :visible.sync="dialogVisible" width="70vw"> <el-dialog title="详情" :visible.sync="dialogVisible" width="1286px">
<detail :data="detail"></detail> <UserDetail v-if="listType == 0" :data="detail"></UserDetail>
<VehicleDetail v-else :data="detail"></VehicleDetail>
</el-dialog> </el-dialog>
</card> </card>
</template> </template>
@ -104,14 +106,16 @@ import ImgButton from '@/components/button/ImgButton.vue'
import Pagination from '@/components/pagination' import Pagination from '@/components/pagination'
import { listVehicle } from '@/api/hunting/vehicle' import { listVehicle } from '@/api/hunting/vehicle'
import { listHunter } from '@/api/hunting/hunter' import { listHunter } from '@/api/hunting/hunter'
import Detail from './Detail.vue' import VehicleDetail from './VehicleDetail.vue'
import UserDetail from './UserDetail.vue'
export default { export default {
name: 'HuntingWarning', name: 'HuntingWarning',
components: { components: {
Card, Card,
ImgButton, ImgButton,
Pagination, Pagination,
Detail VehicleDetail,
UserDetail
}, },
data() { data() {
return { return {
@ -161,36 +165,7 @@ export default {
}, },
handleDetail(row) { handleDetail(row) {
this.dialogVisible = true this.dialogVisible = true
if (this.listType == 0) { this.detail = row
this.detail = {
pic: row.globalPic,
albums: [row.platePic],
columns: [
{ label: '姓名', content: row.userName },
{ label: '证件号码', content: row.idCard },
{ label: '联系方式', content: row.phone },
{ label: '抓拍时间', content: row.passTime },
{ label: '经过位置', content: row.deviceAddress },
{ label: '经度', content: row.longitude },
{ label: '纬度', content: row.latitude }
]
}
} else {
this.detail = {
pic: row.globalPic,
columns: [
{ label: '车牌号码', content: row.plateNo },
{ label: '姓名', content: row.ownerName },
{ label: '证件号码', content: row.idCard },
{ label: '联系方式', content: row.phone },
{ label: '过车时间', content: row.passTime },
{ label: '经过位置', content: row.deviceAddress },
{ label: '经度', content: row.longitude },
{ label: '纬度', content: row.latitude }
]
}
}
console.log(row)
}, },
toDetail(idCard) { toDetail(idCard) {
this.$router.push({ name: 'huntingHunter', query: { idCard } }) this.$router.push({ name: 'huntingHunter', query: { idCard } })

@ -20,11 +20,17 @@
</template> </template>
<script> <script>
import * as echarts from 'echarts'
import { humanVehicleStatistics } from '@/api/sensingDevice/resource/index'
import { humanVehicleStatistics } from '@/api/sensingDevice/resource/index' import { humanVehicleStatistics } from '@/api/sensingDevice/resource/index'
export default { export default {
name: 'ManCar', name: 'ManCar',
data() { data() {
return {
list: {}
}
return { return {
list: [] list: []
} }
@ -33,7 +39,198 @@ export default {
created() { created() {
this.onhumanVehicleStatistics() this.onhumanVehicleStatistics()
}, },
created() {
this.onhumanVehicleStatistics()
},
created() {
this.onhumanVehicleStatistics()
},
created() {
this.onhumanVehicleStatistics()
},
methods: { methods: {
onhumanVehicleStatistics() {
const res = humanVehicleStatistics()
console.log(res, 'aaa')
},
init_charts() {
var chartDom = document.getElementById('man-charts')
var myChart = echarts.init(chartDom)
var option
const gaugeData = [
{
value: 2656446,
name: '人口',
title: {
offsetCenter: ['0%', '30%']
},
detail: {
valueAnimation: true,
offsetCenter: ['0%', '-20%']
}
}
]
option = {
series: [
{
type: 'gauge',
startAngle: 120,
endAngle: -270,
pointer: {
show: false
},
progress: {
show: true,
overlap: false,
roundCap: true,
clip: false,
itemStyle: {
borderWidth: 1,
borderColor: '#464646'
}
},
axisLine: {
lineStyle: {
width: 10
}
},
splitLine: {
show: false,
distance: 0,
length: 10
},
axisTick: {
show: false
},
axisLabel: {
show: false,
distance: 50
},
data: gaugeData,
title: {
fontSize: 18,
color: '#fff',
fontweight: 600
},
detail: {
width: 50,
height: 14,
fontSize: 12,
color: '',
borderColor: 'inherit',
borderRadius: 20,
borderWidth: 1,
formatter: '{value}'
}
}
]
}
setInterval(function () {
gaugeData.value = +(Math.random() * 100).toFixed(2)
myChart.setOption({
series: [
{
data: gaugeData,
pointer: {
show: false
}
}
]
})
}, 2000)
option && myChart.setOption(option)
},
init_car_charts() {
var chartDom = document.getElementById('car-charts')
var myChart = echarts.init(chartDom)
var option
const gaugeData = [
{
value: 755554,
name: '车辆',
title: {
offsetCenter: ['0%', '30%']
},
detail: {
valueAnimation: true,
offsetCenter: ['0%', '-20%']
}
}
]
option = {
series: [
{
type: 'gauge',
startAngle: 120,
endAngle: -270,
pointer: {
show: false
},
progress: {
show: true,
overlap: false,
roundCap: true,
clip: false,
itemStyle: {
borderWidth: 1,
borderColor: '#464646'
}
},
axisLine: {
lineStyle: {
width: 10
}
},
splitLine: {
show: false,
distance: 0,
length: 10
},
axisTick: {
show: false
},
axisLabel: {
show: false,
distance: 50
},
data: gaugeData,
title: {
fontSize: 18,
color: '#fff',
fontweight: 600
},
detail: {
width: 50,
height: 14,
fontSize: 12,
color: 'inherit',
borderColor: 'inherit',
borderRadius: 20,
borderWidth: 1,
formatter: '{value}'
}
}
]
}
setInterval(function () {
gaugeData.value = +(Math.random() * 100).toFixed(2)
myChart.setOption({
series: [
{
data: gaugeData,
pointer: {
show: false
}
}
]
})
}, 2000)
option && myChart.setOption(option)
async onhumanVehicleStatistics() { async onhumanVehicleStatistics() {
const res = await humanVehicleStatistics() const res = await humanVehicleStatistics()
this.list = res.data this.list = res.data
@ -176,5 +373,13 @@ export default {
width: 10vw; width: 10vw;
height: 19vh; height: 19vh;
} }
#man-charts {
width: 10vw;
height: 19vh;
}
#car-charts {
width: 10vw;
height: 19vh;
}
} }
</style> </style>

Loading…
Cancel
Save