After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 11 MiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 212 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 261 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 213 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 402 KiB |
After Width: | Height: | Size: 1.2 MiB |
After Width: | Height: | Size: 1.1 MiB |
After Width: | Height: | Size: 1001 KiB |
After Width: | Height: | Size: 1008 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 413 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 188 KiB |
After Width: | Height: | Size: 8.9 KiB |
After Width: | Height: | Size: 225 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 154 KiB |
After Width: | Height: | Size: 9.7 KiB |
@ -0,0 +1,51 @@
|
||||
<template>
|
||||
<div class="build_body">
|
||||
<!-- 头部 -->
|
||||
<div class="build_title">
|
||||
<div class="header_icon"></div>
|
||||
<div class="title_text">楼栋信息</div>
|
||||
</div>
|
||||
<!-- 模块内容 -->
|
||||
<div class="build_box">
|
||||
<div class="build_box_left"></div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.build_body {
|
||||
width: 20vw;
|
||||
height: 15vh;
|
||||
background-color: #fff;
|
||||
.build_title {
|
||||
width: 20vw;
|
||||
height: 3.5vh;
|
||||
display: flex;
|
||||
.header_icon {
|
||||
width: 1vw;
|
||||
height: 2vh;
|
||||
background-color: pink;
|
||||
}
|
||||
.title_text {
|
||||
width: 20vw;
|
||||
height: 3.5vh;
|
||||
color: antiquewhite;
|
||||
margin-left: 2vw;
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
line-height: 3.5vh;
|
||||
text-shadow: 0px 0px 10px #0b4672;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
}
|
||||
.build_box {
|
||||
width: 20vw;
|
||||
height: 11.5vh;
|
||||
background-color: orange;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,183 +0,0 @@
|
||||
<template>
|
||||
<div class="key_person">
|
||||
<el-carousel
|
||||
direction="vertical"
|
||||
:autoplay="true"
|
||||
:interval="4000"
|
||||
indicator-position="none"
|
||||
class="key_person_group"
|
||||
>
|
||||
<el-carousel-item
|
||||
class="key_person_item"
|
||||
v-for="(item, index) in groupItems"
|
||||
:key="index"
|
||||
>
|
||||
<div class="key_person_box" v-for="(group, index) in item" :key="index">
|
||||
<div class="key_person_box_left">
|
||||
<div class="key_person_box_left_picture"></div>
|
||||
<div class="key_person_box_left_text">人员追踪</div>
|
||||
</div>
|
||||
<div class="key_person_box_right">
|
||||
<div class="key_person_box_right_label">
|
||||
<div class="label_item">人员姓名 :</div>
|
||||
<div class="label_item">证件号码 :</div>
|
||||
<div class="label_item">抓拍时间 :</div>
|
||||
<div class="label_item">滞留时间 :</div>
|
||||
<div class="label_item">抓拍地点 :</div>
|
||||
</div>
|
||||
<div class="key_person_box_right_name">
|
||||
<div class="name_item">张三</div>
|
||||
<div class="name_item">321287197606038965</div>
|
||||
<div class="name_item">2023-11-15 14:20:16</div>
|
||||
<div class="name_item">4个小时</div>
|
||||
<div class="name_item">江苏省射阳县海河镇革新村二组113号</div>
|
||||
</div>
|
||||
<!-- 人员状态 -->
|
||||
<div
|
||||
class="people_status"
|
||||
:style="{ backgroundColor: group.color }"
|
||||
>
|
||||
{{ group.status }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-carousel-item>
|
||||
</el-carousel>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'PersonScroll',
|
||||
props: {
|
||||
// * index 传递过来的数据
|
||||
item: {
|
||||
type: Object
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
items: [
|
||||
{ name: 'Box 1', status: '涉稳人员', color: '#ffc426' },
|
||||
{ name: 'Box 1', status: '列管人员', color: '#00f5ff' },
|
||||
{ name: 'Box 1', status: '涉恐人员', color: '#a357ff' },
|
||||
{ name: 'Box 1', status: '涉稳人员', color: '#ffc426' },
|
||||
{ name: 'Box 1', status: '列管人员', color: '#00f5ff' },
|
||||
{ name: 'Box 1', status: '涉恐人员', color: '#a357ff' }
|
||||
]
|
||||
}
|
||||
},
|
||||
mounted() {},
|
||||
methods: {},
|
||||
computed: {
|
||||
groupItems() {
|
||||
// * 声明空数组
|
||||
let groups = []
|
||||
// * 循环时 items 的每一项 +3
|
||||
for (let i = 0; i < this.items.length; i += 3) {
|
||||
groups.push(this.items.slice(i, i + 3))
|
||||
}
|
||||
console.log(groups)
|
||||
return groups
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
.key_person {
|
||||
width: 20vw;
|
||||
height: 38vh;
|
||||
|
||||
.key_person_group {
|
||||
margin: 0;
|
||||
height: 36vh;
|
||||
|
||||
.key_person_item {
|
||||
.key_person_box {
|
||||
margin-top: 1vh;
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
height: 11vh;
|
||||
background-image: url('@/assets/picture/bg_people_nor.png');
|
||||
|
||||
&:hover {
|
||||
background-image: url('@/assets/picture/bg_people_hover.png');
|
||||
}
|
||||
|
||||
.key_person_box_left {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
width: 4vw;
|
||||
|
||||
.key_person_box_left_picture {
|
||||
flex: 1;
|
||||
height: 8vh;
|
||||
// background-color: #fcbebe;
|
||||
background-image: url('@/assets/picture/icon_householder.png');
|
||||
background-repeat: no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
.key_person_box_left_text {
|
||||
color: #ecf4f9;
|
||||
text-align: center;
|
||||
font-size: 0.8rem;
|
||||
font-weight: normal;
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
background-color: #005ea1;
|
||||
box-shadow: inset 0 0 9 0 #00a2ff;
|
||||
border: 1px solid;
|
||||
border-image: linear-gradient(
|
||||
360deg,
|
||||
rgba(62, 215, 255, 1),
|
||||
rgba(0, 204, 255, 1)
|
||||
)
|
||||
1 1;
|
||||
}
|
||||
}
|
||||
|
||||
.key_person_box_right {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
width: 16vw;
|
||||
font-size: 0.8rem;
|
||||
position: relative;
|
||||
|
||||
.key_person_box_right_label {
|
||||
width: 4vw;
|
||||
color: rgba($color: #ecf4f9, $alpha: 0.6);
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.key_person_box_right_name {
|
||||
width: 12vw;
|
||||
color: #edf1f7;
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.people_status {
|
||||
width: 3.5vw;
|
||||
height: 2vh;
|
||||
background-color: #ffc426;
|
||||
border-radius: 2px 0 2px 2px;
|
||||
color: #061122;
|
||||
text-align: center;
|
||||
font-family: PingFangSC, PingFang SC;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 400;
|
||||
line-height: 2vh;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -1,63 +1,63 @@
|
||||
// TODO 封装监控点聚合图层
|
||||
import { getDeviceLatlng } from '@/utils/latlng'
|
||||
const device = getDeviceLatlng()
|
||||
const devices = device.map((item) => ({
|
||||
type: 'Feature',
|
||||
geometry: {
|
||||
type: 'Point',
|
||||
coordinates: [item.Longitude, item.Latitude]
|
||||
},
|
||||
properties: {
|
||||
channel: item.Channel,
|
||||
title: item.Name,
|
||||
deviceName: item.Name
|
||||
}
|
||||
}))
|
||||
// * 监控点聚合图层数据源
|
||||
const devicePointData = {
|
||||
type: 'FeatureCollection',
|
||||
features: devices
|
||||
}
|
||||
export const addDeviceLayers = (minemap) => {
|
||||
// TODO 监控设备非聚合图层
|
||||
minemap.addLayer({
|
||||
id: 'device-points',
|
||||
type: 'symbol',
|
||||
// * 图层数据源 - 可以更改数据
|
||||
source: 'devicePoint',
|
||||
// * 图层过滤器
|
||||
filter: ['!has', 'point_count'],
|
||||
// * 图层布局样式
|
||||
layout: {
|
||||
'icon-image': 'device_image',
|
||||
'icon-size': 0.5,
|
||||
'text-field': ['get', 'title'],
|
||||
'text-offset': [0, 0.6],
|
||||
'text-anchor': 'top',
|
||||
'text-size': 10,
|
||||
'text-allow-overlap': true //图标覆盖文字允许压盖
|
||||
}
|
||||
})
|
||||
}
|
||||
// // TODO 封装监控点聚合图层
|
||||
// import { getDeviceLatlng } from '@/utils/latlng'
|
||||
// const device = getDeviceLatlng()
|
||||
// const devices = device.map((item) => ({
|
||||
// type: 'Feature',
|
||||
// geometry: {
|
||||
// type: 'Point',
|
||||
// coordinates: [item.Longitude, item.Latitude]
|
||||
// },
|
||||
// properties: {
|
||||
// channel: item.Channel,
|
||||
// title: item.Name,
|
||||
// deviceName: item.Name
|
||||
// }
|
||||
// }))
|
||||
// // * 监控点聚合图层数据源
|
||||
// const devicePointData = {
|
||||
// type: 'FeatureCollection',
|
||||
// features: devices
|
||||
// }
|
||||
// export const addDeviceLayers = (minemap) => {
|
||||
// // TODO 监控设备非聚合图层
|
||||
// minemap.addLayer({
|
||||
// id: 'device-points',
|
||||
// type: 'symbol',
|
||||
// // * 图层数据源 - 可以更改数据
|
||||
// source: 'devicePoint',
|
||||
// // * 图层过滤器
|
||||
// filter: ['!has', 'point_count'],
|
||||
// // * 图层布局样式
|
||||
// layout: {
|
||||
// 'icon-image': 'device_image',
|
||||
// 'icon-size': 0.5,
|
||||
// 'text-field': ['get', 'title'],
|
||||
// 'text-offset': [0, 0.6],
|
||||
// 'text-anchor': 'top',
|
||||
// 'text-size': 10,
|
||||
// 'text-allow-overlap': true //图标覆盖文字允许压盖
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
|
||||
export const addDeviceImages = (minemap) => {
|
||||
// TODO 自定义监控设备图片
|
||||
minemap.loadImage(
|
||||
require('@/assets/background-img/icon_company_blue.png'),
|
||||
(error, image) => {
|
||||
if (error) throw error
|
||||
minemap.addImage('device_image', image)
|
||||
}
|
||||
)
|
||||
}
|
||||
// export const addDeviceImages = (minemap) => {
|
||||
// // TODO 自定义监控设备图片
|
||||
// minemap.loadImage(
|
||||
// require('@/assets/background-img/icon_company_blue.png'),
|
||||
// (error, image) => {
|
||||
// if (error) throw error
|
||||
// minemap.addImage('device_image', image)
|
||||
// }
|
||||
// )
|
||||
// }
|
||||
|
||||
export const addSources = (minemap) => {
|
||||
// * 监控数据源
|
||||
minemap.addSource('devicePoint', {
|
||||
type: 'geojson',
|
||||
data: devicePointData,
|
||||
cluster: true,
|
||||
clusterMaxZoom: 15 /* 最大聚合层级 */,
|
||||
clusterRadius: 50 /* 聚合半径 */
|
||||
})
|
||||
}
|
||||
// export const addSources = (minemap) => {
|
||||
// // * 监控数据源
|
||||
// minemap.addSource('devicePoint', {
|
||||
// type: 'geojson',
|
||||
// data: devicePointData,
|
||||
// cluster: true,
|
||||
// clusterMaxZoom: 15 /* 最大聚合层级 */,
|
||||
// clusterRadius: 50 /* 聚合半径 */
|
||||
// })
|
||||
// }
|
||||
|
@ -1,69 +1,69 @@
|
||||
import { getDeviceLatlng } from '@/utils/latlng'
|
||||
// import { getDeviceLatlng } from '@/utils/latlng'
|
||||
|
||||
// * 获取本地存储中的监控经纬度信息
|
||||
const deviceData = getDeviceLatlng()
|
||||
// TODO 筛选监控经纬度
|
||||
const device = deviceData.map((item) => ({
|
||||
type: 'Feature',
|
||||
geometry: {
|
||||
type: 'Point',
|
||||
coordinates: [item.Longitude, item.Latitude]
|
||||
},
|
||||
properties: {
|
||||
channel: item.Channel,
|
||||
// title: item.Name.toString()
|
||||
// title: item.Name,
|
||||
deviceName: item.Name
|
||||
}
|
||||
}))
|
||||
// TODO 监控点聚合图层数据源
|
||||
const devicePointData = {
|
||||
type: 'FeatureCollection',
|
||||
features: device
|
||||
}
|
||||
// // * 获取本地存储中的监控经纬度信息
|
||||
// const deviceData = getDeviceLatlng()
|
||||
// // TODO 筛选监控经纬度
|
||||
// const device = deviceData.map((item) => ({
|
||||
// type: 'Feature',
|
||||
// geometry: {
|
||||
// type: 'Point',
|
||||
// coordinates: [item.Longitude, item.Latitude]
|
||||
// },
|
||||
// properties: {
|
||||
// channel: item.Channel,
|
||||
// // title: item.Name.toString()
|
||||
// // title: item.Name,
|
||||
// deviceName: item.Name
|
||||
// }
|
||||
// }))
|
||||
// // TODO 监控点聚合图层数据源
|
||||
// const devicePointData = {
|
||||
// type: 'FeatureCollection',
|
||||
// features: device
|
||||
// }
|
||||
|
||||
export const addImages = (minemap) => {
|
||||
// TODO 自定义监控设备图片
|
||||
minemap.loadImage(
|
||||
require('@/assets/picture/point_sea_video.png'),
|
||||
(error, image) => {
|
||||
if (error) throw error
|
||||
console.log(image, '图片')
|
||||
minemap.addImage('device_image', image)
|
||||
}
|
||||
)
|
||||
}
|
||||
// export const addImages = (minemap) => {
|
||||
// // TODO 自定义监控设备图片
|
||||
// minemap.loadImage(
|
||||
// require('@/assets/picture/point_sea_video.png'),
|
||||
// (error, image) => {
|
||||
// if (error) throw error
|
||||
// console.log(image, '图片')
|
||||
// minemap.addImage('device_image', image)
|
||||
// }
|
||||
// )
|
||||
// }
|
||||
|
||||
export const addSources = (minemap) => {
|
||||
// * 监控数据源
|
||||
minemap.addSource('device-point', {
|
||||
type: 'geojson',
|
||||
data: devicePointData,
|
||||
cluster: true,
|
||||
clusterMaxZoom: 15 /* 最大聚合层级 */,
|
||||
clusterRadius: 50 /* 聚合半径 */
|
||||
})
|
||||
}
|
||||
// export const addSources = (minemap) => {
|
||||
// // * 监控数据源
|
||||
// minemap.addSource('device-point', {
|
||||
// type: 'geojson',
|
||||
// data: devicePointData,
|
||||
// cluster: true,
|
||||
// clusterMaxZoom: 15 /* 最大聚合层级 */,
|
||||
// clusterRadius: 50 /* 聚合半径 */
|
||||
// })
|
||||
// }
|
||||
|
||||
export const addLayers = (minemap) => {
|
||||
// TODO 监控设备非聚合图层
|
||||
minemap.addLayer({
|
||||
id: 'device-points',
|
||||
type: 'symbol',
|
||||
// * 图层数据源 - 可以更改数据
|
||||
source: 'device-point',
|
||||
// * 图层过滤器
|
||||
filter: ['!has', 'point_count'],
|
||||
// * 图层布局样式
|
||||
layout: {
|
||||
'icon-image': 'device_image',
|
||||
'icon-size': 0.5,
|
||||
'text-field': ['get', 'title'],
|
||||
'text-offset': [0, 0.6],
|
||||
'text-anchor': 'top',
|
||||
'text-size': 10,
|
||||
// 'icon-allow-overlap': true, //图标允许压盖
|
||||
'text-allow-overlap': true //图标覆盖文字允许压盖
|
||||
}
|
||||
})
|
||||
}
|
||||
// export const addLayers = (minemap) => {
|
||||
// // TODO 监控设备非聚合图层
|
||||
// minemap.addLayer({
|
||||
// id: 'device-points',
|
||||
// type: 'symbol',
|
||||
// // * 图层数据源 - 可以更改数据
|
||||
// source: 'device-point',
|
||||
// // * 图层过滤器
|
||||
// filter: ['!has', 'point_count'],
|
||||
// // * 图层布局样式
|
||||
// layout: {
|
||||
// 'icon-image': 'device_image',
|
||||
// 'icon-size': 0.5,
|
||||
// 'text-field': ['get', 'title'],
|
||||
// 'text-offset': [0, 0.6],
|
||||
// 'text-anchor': 'top',
|
||||
// 'text-size': 10,
|
||||
// // 'icon-allow-overlap': true, //图标允许压盖
|
||||
// 'text-allow-overlap': true //图标覆盖文字允许压盖
|
||||
// }
|
||||
// })
|
||||
// }
|
||||
|