update: 更新 #1

Merged
guomingxin merged 1 commits from master into dev 1 year ago

32
package-lock.json generated

@ -15,6 +15,7 @@
"echarts": "^5.4.3",
"element-ui": "^2.15.14",
"js-cookie": "^3.0.5",
"json-loader": "^0.5.7",
"vue": "^2.6.14",
"vue-router": "^3.5.1",
"vuex": "^3.6.2"
@ -3310,8 +3311,6 @@
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@ -3323,9 +3322,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true,
"optional": true,
"peer": true
"dev": true
},
"node_modules/ajv-keywords": {
"version": "3.5.2",
@ -7423,6 +7420,11 @@
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true
},
"node_modules/json-loader": {
"version": "0.5.7",
"resolved": "https://registry.npmmirror.com/json-loader/-/json-loader-0.5.7.tgz",
"integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w=="
},
"node_modules/json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
@ -13755,6 +13757,7 @@
"integrity": "sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==",
"dev": true,
"requires": {
"@babel/core": "^7.12.16",
"@babel/helper-compilation-targets": "^7.12.16",
"@babel/helper-module-imports": "^7.12.13",
"@babel/plugin-proposal-class-properties": "^7.12.13",
@ -13767,6 +13770,7 @@
"@vue/babel-plugin-jsx": "^1.0.3",
"@vue/babel-preset-jsx": "^1.1.2",
"babel-plugin-dynamic-import-node": "^2.3.3",
"core-js": "^3.8.3",
"core-js-compat": "^3.8.3",
"semver": "^7.3.4"
},
@ -14441,14 +14445,15 @@
"resolved": "https://registry.npmmirror.com/ajv-formats/-/ajv-formats-2.1.1.tgz",
"integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==",
"dev": true,
"requires": {},
"requires": {
"ajv": "^8.0.0"
},
"dependencies": {
"ajv": {
"version": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz",
"version": "8.12.0",
"resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz",
"integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
"dev": true,
"optional": true,
"peer": true,
"requires": {
"fast-deep-equal": "^3.1.1",
"json-schema-traverse": "^1.0.0",
@ -14460,9 +14465,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"dev": true,
"optional": true,
"peer": true
"dev": true
}
}
},
@ -17782,6 +17785,11 @@
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true
},
"json-loader": {
"version": "0.5.7",
"resolved": "https://registry.npmmirror.com/json-loader/-/json-loader-0.5.7.tgz",
"integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w=="
},
"json-parse-better-errors": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",

@ -15,6 +15,7 @@
"echarts": "^5.4.3",
"element-ui": "^2.15.14",
"js-cookie": "^3.0.5",
"json-loader": "^0.5.7",
"vue": "^2.6.14",
"vue-router": "^3.5.1",
"vuex": "^3.6.2"

@ -9,7 +9,7 @@
<title>
<%= htmlWebpackPlugin.options.title %>
</title>
<script type="text/javascript" src="<%= BASE_URL %>js/liveplayer-lib.min.js"></script>
<!-- <script type="text/javascript" src="<%= BASE_URL %>js/liveplayer-lib.min.js"></script> -->
<!-- 引入MineMap API插件 -->
<link rel="stylesheet" href="http://50.144.11.244:21009/support/static/api/demo/js-api/zh/css/demo.css">
<link rel="stylesheet" href="http://50.144.11.244:21009/minemapapi/v2.1.0/minemap.css">

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -9,11 +9,38 @@ export function get_person_num(params) {
})
}
//
export function getData(params){
// * 资源概况
export function getResourceAPI(data) {
return request({
url:'/base/metaHandleAlarmInfo',
method:'get',
params
url: '/base/bigscreen/overviewResources',
method: 'post',
data
})
}
// * 重点人员
export const keyPersonnelAPI = (data) => {
return request({
url: '/base/bigscreen/keyPersonnel',
method: 'post',
data
})
}
// * 警力分布
export const PoliceForceDistributionAPI = (data) => {
return request({
url: '/base/bigscreen/policeForceDistribution',
method: 'post',
data
})
}
// * 涉海要素
export const seaRelatedElementsAPI = (data) => {
return request({
url: '/base/bigscreen/seaRelatedElements',
method: 'post',
data
})
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1001 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1008 KiB

@ -49,7 +49,7 @@ const router = new VueRouter({
// 防止重复点击路由报错
const VueRouterPush = VueRouter.prototype.push
VueRouter.prototype.push = function push (to) {
VueRouter.prototype.push = function push(to) {
return VueRouterPush.call(this, to).catch(err => err)
}

@ -16,9 +16,8 @@ export const dateFormat = (date) => {
}
// * 创建时间集合
let timeArr = {}
let timeText = `${check(year)}${check(month)}${check(day)}${check(
hours
)}:${check(min)}:${check(seconds)}`
let timeText = `${check(year)}.${check(month)}.${check(day)} `
let timeTime = `${check(hours)}:${check(min)}:${check(seconds)}`
let nowDate = date.getDay()
let weeks = new Array(
'星期日',
@ -86,6 +85,7 @@ export const dateFormat = (date) => {
timePeriod.setStrategy(getStrategy(hours))
const state = timePeriod.getState()
timeArr.timeText = timeText
timeArr.timeTime = timeTime
timeArr.week = week
timeArr.state = state
return timeArr

@ -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>

@ -5,637 +5,7 @@
<div class="live_card_header">重点人员信息</div>
<div class="card_close" @click="cardClose"></div>
<div class="live_card_body">
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->
<div class="image"></div>
<!-- 查看轨迹 -->
<div class="card_picture_look">
<span>查看轨迹</span>
</div>
</div>
<!-- 图片右边的个人介绍 -->
<div class="card_picture_right">
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p class="text">张三asdasdaasdadasdasdsda</p>
</div>
<div class="info">
<div class="info_icon"></div>
<p>张三</p>
</div>
<!-- 涉毒人员 -->
<div class="card_picture_right_cate">
<span>涉毒人员</span>
</div>
</div>
<!-- 户籍 -->
<div class="card_huji"><span>户籍</span></div>
<!-- 现住 -->
<div class="card_xianzhu"><span>现住</span></div>
</div>
<!-- -->
<div class="box">
<div class="box" v-for="item in 15" :key="item">
<!-- 图片 -->
<div class="card_picture">
<!-- 照片 -->

@ -72,7 +72,10 @@
<ul class="marquee-list" :class="{ 'animate-up': animateUp }">
<li v-for="(item, index) in roll_list" :key="index">
<div class="roll_item_left">
<div class="roll_item_pic"></div>
<div
class="roll_item_pic"
:style="{ backgroundImage: `url(${item.pic})` }"
></div>
<div class="roll_item_btn">查看详情</div>
</div>
<div class="roll_item_right">
@ -122,10 +125,8 @@
<script>
import * as echarts from 'echarts'
import EleResize from '@/utils/esresize'
// import PersonScroll from './keypersonScroll.vue'
export default {
name: 'KeyPerson',
// components: { PersonScroll },
data() {
return {
title_text: '重点人员',
@ -138,7 +139,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县海河镇革新村二组112号',
pic: require('@/assets/people-picture/people-cacth/people-1.jpg')
},
{
text: '1243',
@ -148,7 +150,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县合德镇解放路192号',
pic: require('@/assets/people-picture/people-cacth/people-2.jpg')
},
{
text: '12323',
@ -158,7 +161,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县大兴镇合顺三组',
pic: require('@/assets/people-picture/people-cacth/people-3.jpg')
},
{
text: '1243',
@ -168,7 +172,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县海通镇射阳渔业大队',
pic: require('@/assets/people-picture/people-cacth/people-1.jpg')
},
{
text: '1223',
@ -178,7 +183,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县合德镇解放路192号',
pic: require('@/assets/people-picture/people-cacth/people-2.jpg')
},
{
text: '1223',
@ -188,7 +194,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县海河镇革新村二组110号',
pic: require('@/assets/people-picture/people-cacth/people-3.jpg')
},
{
text: '1243',
@ -198,7 +205,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县大兴镇合顺三组',
pic: require('@/assets/people-picture/people-cacth/people-1.jpg')
},
{
text: '1223',
@ -208,7 +216,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县海河镇革新村二组120号',
pic: require('@/assets/people-picture/people-cacth/people-2.jpg')
},
{
text: '1223',
@ -218,7 +227,8 @@ export default {
phone_num: '13455674532',
id_card: '321287197606038965',
old_address: '射阳县解放路74号',
new_address: '江苏省射阳县海河镇革新村二组113号'
new_address: '江苏省射阳县海河镇革新村二组113号',
pic: require('@/assets/people-picture/people-cacth/people-3.jpg')
}
],
animateUp: false,
@ -289,7 +299,7 @@ export default {
this.roll_list.push(this.roll_list[0])
this.roll_list.shift()
this.animateUp = false
}, 500)
}, 2000)
}
}
}
@ -453,7 +463,9 @@ export default {
.roll_item_pic {
width: 5vw;
height: 10vh;
background: #0b4672;
// background: #0b4672;
background-repeat: no-repeat;
background-size: 100% auto;
}
.roll_item_btn {
width: 5vw;

@ -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>

@ -2,6 +2,7 @@
<div id="map"></div>
</template>
<script>
import townLine from '../../../../public/townLine.geojson'
export default {
name: 'MapBody',
data() {
@ -48,6 +49,48 @@ export default {
}
console.log('obj', obj)
})
this.mapContainer.on('load', function () {
//
addSources()
addLayers()
})
let that = this
function addSources() {
var jsonData = {
type: 'FeatureCollection',
features: [
{
type: 'Feature',
geometry: {
type: 'Polygon',
coordinates: townLine.features[0].geometry.geometry
}
}
]
}
that.mapContainer.addSource('fillSource', {
type: 'geojson',
data: jsonData
})
}
function addLayers() {
that.mapContainer.addLayer({
id: 'fillLayer',
type: 'fill',
source: 'fillSource',
layout: {
visibility: 'visible'
},
paint: {
'fill-color': '#00ff00',
'fill-opacity': 0.8,
'fill-outline-color': '#ff0000'
},
minzoom: 7,
maxzoom: 17.5
})
}
}
}
}
@ -64,4 +107,8 @@ export default {
}
}
}
// * logo
a.minemap-ctrl-logo {
display: none;
}
</style>

@ -20,16 +20,32 @@
</template>
<script>
import { PoliceForceDistributionAPI } from '@/api/coastalMap/resource'
export default {
name: 'PoliceSpread',
data() {
return {
// *
policeData: [
{ num: '321', text: '派出所' },
{ num: '123', text: '警务室' },
{ num: '645', text: '执法警员' }
]
{ num: '20', text: '派出所' },
{ num: '4', text: '警务室' },
{ num: '6244', text: '执法警员' }
],
// *
policeSpreadData: {}
}
},
created() {
this.onGetPoliceDistributionAPI()
},
methods: {
// *
async onGetPoliceDistributionAPI() {
const res = await PoliceForceDistributionAPI()
this.policeData[0].num = res.data.pcsCount
this.policeData[1].num = res.data.jwsCount
this.policeData[2].num = res.data.zfjyCount
// console.log(res, '')
}
}
}

@ -10,9 +10,15 @@
<div class="police_status_box">
<!-- 左边占比 -->
<div class="rank_left">
<div class="rank_left_item one">1</div>
<div class="rank_left_item two">2</div>
<div class="rank_left_item three">3</div>
<div class="rank_left_item">
<div class="one">1</div>
</div>
<div class="rank_left_item">
<div class="two">2</div>
</div>
<div class="rank_left_item">
<div class="three">3</div>
</div>
</div>
<div class="charts_right" id="charts_right"></div>
</div>
@ -34,7 +40,9 @@
<div class="roll_item_value">{{ item.type }}</div>
<div class="roll_item_value">{{ item.unit }}</div>
<div class="roll_item_value">{{ item.address }}</div>
<div class="roll_item_value" :title="item.now_address">{{ item.now_address }}</div>
<div class="roll_item_value" :title="item.now_address">
{{ item.now_address }}
</div>
</div>
</div>
</li>
@ -46,170 +54,179 @@
<script>
// import PoliceScroll from "./policeScroll.vue";
import * as echarts from "echarts";
import EleResize from "@/utils/esresize";
import * as echarts from 'echarts'
import EleResize from '@/utils/esresize'
export default {
name: "PoliceStatus",
name: 'PoliceStatus',
components: {
//PoliceScroll
},
data() {
return {
y_data: ["调解案件", "行政处罚案件", "当场处罚案件"], // y
chart_data: ["145", "29", "101"], // chart
y_data: ['调解案件', '行政处罚案件', '当场处罚案件'], // y
chart_data: ['145', '29', '101'], // chart
roll_list: [
{
id:'1',
type: "机动车",
unit:'射阳公安局',
address:'建湖县明星路与冠华路交界处北边',
police_time: "2023-11-24 13:21:17",
now_address:'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
id: '1',
type: '机动车',
unit: '射阳公安局',
address: '建湖县明星路与冠华路交界处北边',
police_time: '2023-11-24 13:21:17',
now_address:
'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
},
{
id:'2',
type: "机动车",
unit:'射阳公安局',
address:'建湖县明星路与冠华路交界处北边',
police_time: "2023-11-22 14:20:17",
now_address:'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
id: '2',
type: '机动车',
unit: '射阳公安局',
address: '建湖县明星路与冠华路交界处北边',
police_time: '2023-11-22 14:20:17',
now_address:
'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
},
{
id:'3',
type: "机动车",
unit:'射阳公安局',
address:'建湖县明星路与冠华路交界处北边',
police_time: "2023-11-21 09:20:17",
now_address:'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
id: '3',
type: '机动车',
unit: '射阳公安局',
address: '建湖县明星路与冠华路交界处北边',
police_time: '2023-11-21 09:20:17',
now_address:
'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
},
{
id:'4',
type: "机动车",
unit:'射阳公安局',
address:'建湖县明星路与冠华路交界处北边',
police_time: "2023-12-03 14:35:17",
now_address:'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
id: '4',
type: '机动车',
unit: '射阳公安局',
address: '建湖县明星路与冠华路交界处北边',
police_time: '2023-12-03 14:35:17',
now_address:
'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
},
{
id:'5',
type: "机动车",
unit:'射阳公安局',
address:'建湖县明星路与冠华路交界处北边',
police_time: "2023-12-02 13:21:16",
now_address:'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
id: '5',
type: '机动车',
unit: '射阳公安局',
address: '建湖县明星路与冠华路交界处北边',
police_time: '2023-12-02 13:21:16',
now_address:
'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
},
{
id:'6',
type: "机动车",
unit:'射阳公安局',
address:'建湖县明星路与冠华路交界处北边',
police_time: "2023-12-04 13:20:17",
now_address:'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
id: '6',
type: '机动车',
unit: '射阳公安局',
address: '建湖县明星路与冠华路交界处北边',
police_time: '2023-12-04 13:20:17',
now_address:
'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
},
{
id:'7',
type: "机动车",
unit:'射阳公安局',
address:'建湖县明星路与冠华路交界处北边',
police_time: "2023-11-15 13:23:17",
now_address:'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
id: '7',
type: '机动车',
unit: '射阳公安局',
address: '建湖县明星路与冠华路交界处北边',
police_time: '2023-11-15 13:23:17',
now_address:
'报警人萧婷在建湖县明星路与冠华路交界处北边轿车苏J8MZ63、苏J3KC06相撞。(建湖64号,内线(86158110)) '
}
],
animateUp: false,
timer: null,
};
timer: null
}
},
mounted() {
this.init_charts();
this.timer = setInterval(this.scrollAnimate, 1500);
this.init_charts()
this.timer = setInterval(this.scrollAnimate, 1500)
},
methods: {
init_charts() {
let charts = document.getElementById("charts_right");
let resize_div = document.getElementById("charts_right");
let myChart = echarts.init(charts);
let charts = document.getElementById('charts_right')
let resize_div = document.getElementById('charts_right')
let myChart = echarts.init(charts)
// echarts
EleResize.on(resize_div, () => {
myChart.resize();
});
myChart.resize()
})
let option = {
grid: {
top: "3%",
left: "3%",
right: "10%",
bottom: "3%",
containLabel: true, //
top: '3%',
left: '3%',
right: '10%',
bottom: '3%',
containLabel: true //
},
xAxis: {
show: false,
axisLine: {
show: false,
show: false
},
axisTick: {
show: false,
show: false
},
axisLabel: {
show: false,
},
show: false
}
},
yAxis: {
type: "category",
type: 'category',
data: this.y_data,
inverse: true, //
axisLabel: {
color: "#fff",
color: '#fff'
},
axisLine: {
show: false, // 线
show: false // 线
},
axisTick: {
show: false, // 线
},
show: false // 线
}
},
series: [
{
data: this.chart_data,
type: "bar",
barWidth: '20%',
type: 'bar',
showBackground: true,
itemStyle: {
color: {
colorStops: [
{
offset: 0,
color: "#1A416B", // 0%
barWidth: '30%',
color: '#1A416B' // 0%
},
{
offset: 1,
color: "#019FFA", // 100%
},
],
},
color: '#019FFA' // 100%
}
]
}
},
backgroundStyle: {
color: "rgba(180, 180, 180, 0.2)",
color: 'rgba(180, 180, 180, 0.2)'
},
label: {
show: true,
position: "right",
color: "white",
},
},
],
};
position: 'right',
color: 'white'
}
}
]
}
option && myChart.setOption(option);
option && myChart.setOption(option)
},
//
scrollAnimate() {
this.animateUp = true;
this.animateUp = true
setTimeout(() => {
this.roll_list.push(this.roll_list[0]);
this.roll_list.shift();
this.animateUp = false;
}, 500);
},
},
};
this.roll_list.push(this.roll_list[0])
this.roll_list.shift()
this.animateUp = false
}, 500)
}
}
}
</script>
<style lang="scss">
@ -221,7 +238,7 @@ export default {
.police_status_header {
width: 20vw;
height: 3.5vh;
background-image: url("@/assets/picture/bg_small_title.png");
background-image: url('@/assets/picture/bg_small_title.png');
background-repeat: no-repeat;
background-size: 100% 100%;
.police_status_text {
@ -239,7 +256,7 @@ export default {
.police_status_body {
width: 20vw;
height: 46.5vh;
background-image: url("@/assets/picture/bg_5.png");
background-image: url('@/assets/picture/bg_5.png');
background-repeat: no-repeat;
background-size: 100% 100%;
.police_status_body_charts {
@ -259,24 +276,54 @@ export default {
.rank_left_item {
width: 3vw;
height: 6vh;
display: flex;
justify-content: center;
align-items: center;
.one {
color: #ecf4f9;
font-size: 18px;
font-weight: 600;
text-align: center;
line-height: 6vh;
line-height: 4vh;
width: 2vw;
height: 4vh;
background: url('~@/assets/coastalMap/policeStatus/rank_one.png')
no-repeat;
background-size: 100% 100%;
}
.one {
background: url("~@/assets/coastalMap/policeStatus/rank_one.png")
.two {
color: #ecf4f9;
font-size: 18px;
font-weight: 600;
text-align: center;
line-height: 4vh;
width: 2vw;
height: 4vh;
background: url('~@/assets/coastalMap/policeStatus/rank_two.png')
no-repeat;
background-size: 100% 100%;
}
.three {
color: #ecf4f9;
font-size: 18px;
font-weight: 600;
text-align: center;
line-height: 4vh;
width: 2vw;
height: 4vh;
background: url('~@/assets/coastalMap/policeStatus/rank_three.png')
no-repeat;
background-size: 100% 100%;
}
}
.two {
background: url("~@/assets/coastalMap/policeStatus/rank_two.png")
background: url('~@/assets/coastalMap/policeStatus/rank_two.png')
no-repeat;
background-size: 100% 100%;
}
.three {
background: url("~@/assets/coastalMap/policeStatus/rank_three.png")
background: url('~@/assets/coastalMap/policeStatus/rank_three.png')
no-repeat;
background-size: 100% 100%;
}
@ -302,7 +349,7 @@ export default {
margin-right: 2%;
width: 96%;
height: 12.5vh;
background: url("~@/assets/coastalMap/keyPerson/key_li_back.png")
background: url('~@/assets/coastalMap/keyPerson/key_li_back.png')
no-repeat;
background-size: 100% 100%;
margin-top: 1vh;
@ -333,7 +380,7 @@ export default {
width: 5vw;
height: 12.5vh;
.roll_item_text {
color: #ECF4F9;
color: #ecf4f9;
height: 25%;
text-align: center;
line-height: 3vh;
@ -343,7 +390,7 @@ export default {
width: 10vw;
height: 12.5vh;
.roll_item_value {
color: #EDF1F7;
color: #edf1f7;
height: 25%;
text-align: left;
line-height: 3vh;

@ -11,25 +11,29 @@
<!-- 占位 -->
<div class="box_item_blank"></div>
<div class="box_item_text">实有人口</div>
<div class="box_item_value">654332</div>
<div class="box_item_value">
{{ resourceData.actualUserSyrkCount || 32677 }}
</div>
</div>
<div class="resource_box_item two">
<!-- 占位 -->
<div class="box_item_blank"></div>
<div class="box_item_text">流动人口</div>
<div class="box_item_value">421123</div>
<div class="box_item_value">
{{ resourceData.actualUserLdrkCount || 4611 }}
</div>
</div>
<div class="resource_box_item three">
<!-- 占位 -->
<div class="box_item_blank"></div>
<div class="box_item_text">实有房屋</div>
<div class="box_item_value">556432</div>
<div class="box_item_value">{{ resourceData.countSyfw || 20000 }}</div>
</div>
<div class="resource_box_item four">
<!-- 占位 -->
<div class="box_item_blank"></div>
<div class="box_item_text">实有单位</div>
<div class="box_item_value">221223</div>
<div class="box_item_value">{{ resourceData.countSydw || 10009 }}</div>
</div>
</div>
</div>
@ -38,7 +42,12 @@
import { get_person_num } from '@/api/coastalMap/resource'
// import { getToken } from '@/utils/auth'
export default {
// eslint-disable-next-line vue/multi-word-component-names
props: {
resourceData: {
required: true,
type: Object
}
},
name: 'Resource',
data() {
return {

@ -7,8 +7,8 @@
<div class="sea_body">
<div
class="sea_body_box"
v-for="item in back"
:key="item.num"
v-for="(item, index) in back"
:key="index"
:style="{ backgroundImage: `url(${item.backImg}) ` }"
>
<div class="sea_body_box_num">{{ item.num }}</div>
@ -19,6 +19,7 @@
</template>
<script>
import { seaRelatedElementsAPI } from '@/api/coastalMap/resource'
export default {
name: 'SeaElement',
data() {
@ -46,6 +47,19 @@ export default {
}
]
}
},
created() {
this.onGetSeaRelated()
},
methods: {
async onGetSeaRelated() {
const res = await seaRelatedElementsAPI()
this.back[0].num = res.data.gkCount
this.back[1].num = res.data.mtCount
this.back[2].num = res.data.czCount
this.back[3].num = res.data.cyCount
// console.log(res, '')
}
}
}
</script>

@ -16,16 +16,31 @@
</div>
<div class="time_body">
<div class="box_all">
<div class="time_item"></div>
<div class="time_item">{{ timeArr.timeText }}</div>
<div class="time_item">{{ timeArr.week }}</div>
<div class="time">{{ timeArr.timeTime }}</div>
</div>
<div class="box_all_right">
<div class="box_all_right_pic"></div>
<div class="box_all_right_name">{{ userName }}</div>
</div>
</div>
</div>
<!-- 左边区域 -->
<div class="left_box">
<Resource ref="resource"></Resource>
<div class="left_box" v-if="isplay == '1'">
<Resource ref="resource" :resourceData="resourceData"></Resource>
<KeyPerson ref="keyPerson"></KeyPerson>
</div>
<!-- 显示实有房屋弹窗 -->
<div class="left_house_box" v-else-if="isplay == '2'">
<building-inform></building-inform>
</div>
<!-- 右边区域 -->
<!-- <div class="center_box">
<el-button @click="change"></el-button>
</div> -->
<div class="right_box">
<PoliceSpread ref="policeSpread"></PoliceSpread>
<SeaElement ref="sea"></SeaElement>
@ -54,16 +69,19 @@
</div>
</template>
<script>
import { getData } from '@/api/coastalMap/resource/index'
import {
getResourceAPI,
keyPersonnelAPI
} from '@/api/coastalMap/resource/index'
// import { login, getDeviceListAPI } from '@/api/facility'
// import { setToken } from '@/utils/token'
// import { setDeviceLatlng } from '@/utils/latlng'
import { dateFormat } from '@/utils/date'
import MapBody from './components/mapBody'
import Resource from './components/resource' // *
import KeyPerson from './components/keyPerson' // *
import PoliceSpread from './components/policeSpread.vue' // *
import SeaElement from './components/seaElement.vue' // *
import PoliceStatus from './components/policeStatus.vue' // *
import BuildingInform from './components/buildingInform.vue'
// import KeyInformantion from './components/keyInformantion.vue' //
export default {
name: 'CoastalMap',
@ -74,12 +92,14 @@ export default {
PoliceSpread,
SeaElement,
PoliceStatus,
BuildingInform
//KeyInformantion
},
data() {
return {
title_text: '射阳沿海治安防控综合平台',
play: true,
isplay: 1,
// *
back: [
{
@ -98,7 +118,14 @@ export default {
backImg: require('@/assets/picture/icon_point_red.png'),
text: '重点警情'
}
]
],
// *
resourceData: {},
// *
timeArr: {},
// *
userName: '李警官'
// // *
// params: {
// start: 0,
@ -108,41 +135,38 @@ export default {
}
},
created() {
// this.onLogin()
// this.onGetDeviceData()
// this.getActionsData()
this.onGetData()
this.onGetResource()
this.onGetKeyPersonnel()
this.timeArr = dateFormat(new Date())
this.timeStart()
},
methods: {
onCardClose() {
console.log('关闭弹窗')
this.play = !this.play
},
async onGetData(){
const res = await getData()
console.log(res);
change() {
//
this.isplay = 2
//
},
timeStart() {
this.timer = setInterval(() => {
this.timeArr = dateFormat(new Date())
// console.log(this.timeArr)
}, 1000)
},
// *
async onGetResource() {
const res = await getResourceAPI()
this.resourceData = res.data
// console.log(this.resourceData)
},
// *
async onGetKeyPersonnel() {
const res = await keyPersonnelAPI()
console.log(res, '重点人员数据待更新')
}
// * token
// async onLogin() {
// const res = await login()
// setToken(res.URLToken)
// },
// *
// async onGetDeviceData() {
// const res = await getDeviceListAPI(this.params)
// // TODO
// this.deviceData = res.ChannelList.filter((item) => {
// Object.seal(item)
// return item.Longitude !== 0
// })
// console.log(this.deviceData, '')
// // *
// setDeviceLatlng(this.deviceData)
// }
// // * vuex
// getActionsData() {
// this.$store.dispatch('device/getVideoData', this.params)
// }
}
}
</script>
@ -154,7 +178,7 @@ export default {
position: relative;
.system_title {
width: 100vw;
height: 14vh;
height: 18vh;
position: absolute;
top: 0;
background: url('~@/assets/homepage/title_back.png') no-repeat;
@ -173,7 +197,7 @@ export default {
display: flex;
.title_icon {
width: 3.5vw;
height: 7vh;
height: 9vh;
display: flex;
justify-content: center;
align-items: center;
@ -188,25 +212,68 @@ export default {
.title_text {
color: aliceblue;
text-align: center;
line-height: 7vh;
line-height: 9vh;
font-size: 2.25rem;
font-weight: 700;
}
}
.time_body {
width: 24vw;
display: flex;
justify-content: space-between;
width: 25vw;
height: 7vh;
.box_all {
width: 12vw;
display: flex;
justify-content: start;
width: 14vw;
height: 7vh;
// background: #ad337f;
.time_item {
.time_item,
.time {
margin-left: 2px;
width: 12vw;
height: 3.5vh;
line-height: 7vh;
text-align: center;
color: #37fdc7;
font-size: 1.5rem;
font-weight: 600;
color: #e5f5f9;
font-size: 1.2rem;
font-weight: 400;
font-family: PingFangSC PingFang SC;
}
.time {
color: #009cfe;
font-size: 1.2rem;
font-family: D-DIN;
font-weight: bold;
letter-spacing: 2px;
}
}
.box_all_right {
display: flex;
align-items: center;
justify-content: space-around;
width: 9vw;
height: 7vh;
.box_all_right_pic {
width: 2vw;
height: 4.5vh;
background-image: url('@/assets/people-picture/people-cacth/people-3.jpg');
background-repeat: no-repeat;
background-size: 100% 100%;
}
.box_all_right_name {
width: 5vw;
height: 7vh;
font-size: 1.2rem;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
color: #ecf4f9;
line-height: 7vh;
}
}
}
@ -220,6 +287,23 @@ export default {
// background: #ad337f;
z-index: 3;
}
.left_house_box {
position: absolute;
top: 10vh;
left: 1vw;
width: 20vw;
height: 89vh;
background: #ad337f;
z-index: 3;
}
.center_box {
position: absolute;
width: 2vw;
height: 4vh;
z-index: 3;
top: 5vh;
left: 22vw;
}
.right_box {
position: absolute;
top: 10vh;
@ -233,7 +317,7 @@ export default {
top: 10vh;
right: 21vw;
width: 5vw;
height: 20vh;
height: 40vh;
display: flex;
flex-direction: column;
justify-content: space-between;

@ -10,7 +10,7 @@
<div class="item_check" @click="toHome"></div>
</div>
<div class="under_btn_item">
<div class="item_check_back" @click="toVideo"></div>
<div class="item_check_back" @click="toVideo"></div>
</div>
<div class="under_btn_item">
<div class="item_check_back" @click="toDevice"></div>
@ -80,17 +80,17 @@ export default {
.under_btn {
position: absolute;
bottom: 1vh;
bottom: 5vh;
left: 35vw;
width: 30vw;
height: 7vh;
width: 35vw;
height: 12vh;
// background: #33a59f;
display: flex;
z-index: 2;
.under_btn_item {
width: 10vw;
height: 7vh;
width: 13vw;
height: 12vh;
// border: 1px solid#b1335d;
display: flex;
justify-content: center;
@ -98,32 +98,38 @@ export default {
// *
.item_check {
width: 3.5vw;
height: 6.5vh;
width: 6vw;
height: 12vh;
background-image: url('@/assets/picture/icon_home_nor.png');
background-repeat: no-repeat;
background-size: 100% auto;
background-size: 100% 100%;
cursor: pointer;
&:hover {
background-image: url('@/assets/picture/icon_home_sel.png');
background-repeat: no-repeat;
background-size: 100% auto;
background-size: 100% 100%;
}
}
.item_check_back {
width: 3.5vw;
height: 6.5vh;
width: 6vw;
height: 12vh;
background-image: url('@/assets/picture/under_button.png');
background-repeat: no-repeat;
background-size: 100% auto;
font-size: 0.8rem;
background-size: 100% 100%;
font-size: 1.3rem;
font-family: PingFangSC, PingFang SC;
font-weight: 500;
color: #ecf4f9;
line-height: 6.5vh;
line-height: 10.5vh;
text-shadow: 0px 0px 9px #00a2ff;
text-align: center;
cursor: pointer;
&:hover {
color: #00f5ff;
}
}
}
}

@ -11,7 +11,10 @@
<ul class="marquee-list" :class="{ 'animate-up': animateUp }">
<li v-for="(item, index) in roll_list" :key="index">
<div class="roll_item_left">
<div class="roll_item_pic"></div>
<div
class="roll_item_pic"
:style="{ backgroundImage: `url(${item.pic})` }"
></div>
<div class="roll_item_btn">车辆追踪</div>
</div>
<div class="roll_item_right">
@ -78,101 +81,101 @@ export default {
{
text: '123',
per_type: '1',
// type_text: '',
person_name: '周大山',
id_card: '321287197606038965',
id_card: '321287196606038965',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
catch_time: '2023-11-03 01:20:08',
state_time: '8个小时',
catch_place: '江苏省射阳县海河镇革新村二组111号',
pic: require('@/assets/people-picture/picture-custom/car/car-1.jpg')
},
{
text: '1243',
per_type: '3',
// type_text: '',
person_name: '王富强',
id_card: '321287197606038965',
id_card: '321287198606036365',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
catch_time: '2023-11-28 00:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
catch_place: '江苏省射阳县黄沙港镇',
pic: require('@/assets/people-picture/picture-custom/car/car-2.jpg')
},
{
text: '12323',
per_type: '2',
// type_text: '',
person_name: '赵磊',
id_card: '321287197606038965',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
catch_time: '2023-11-29 10:20:08',
state_time: '13个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号',
pic: require('@/assets/people-picture/picture-custom/car/car-3.jpg')
},
{
text: '1243',
per_type: '2',
// type_text: '',
person_name: '徐永',
id_card: '321287197606038965',
id_card: '321287199204037765',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
catch_time: '2023-12-01 16:20:08',
state_time: '24个小时',
catch_place: '江苏省射阳县合德镇解放路192号',
pic: require('@/assets/people-picture/picture-custom/car/car-4.jpg')
},
{
text: '1223',
per_type: '2',
// type_text: '',
person_name: '李文一',
id_card: '321287197606038965',
id_card: '321287198905032065',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
catch_time: '2023-11-30 06:20:08',
state_time: '48个小时',
catch_place: '江苏省射阳县黄沙港镇',
pic: require('@/assets/people-picture/picture-custom/car/car-1.jpg')
},
{
text: '1223',
per_type: '1',
// type_text: '',
person_name: '谭静',
id_card: '321287197606038965',
id_card: '321287199606038945',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
catch_time: '2023-12-03 15:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
catch_place: '江苏省射阳县海河镇革新村二组130号',
pic: require('@/assets/people-picture/picture-custom/car/car-2.jpg')
},
{
text: '1243',
per_type: '3',
// type_text: '',
person_name: '孙洋洋',
id_card: '321287197606038965',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
catch_time: '2023-11-25 09:20:08',
state_time: '8个小时',
catch_place: '江苏省射阳县合德镇解放路',
pic: require('@/assets/people-picture/picture-custom/car/car-3.jpg')
},
{
text: '1223',
per_type: '1',
// type_text: '',
person_name: '董磊',
id_card: '321287197606038965',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
catch_time: '2023-12-01 13:20:08',
state_time: '12个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号',
pic: require('@/assets/people-picture/picture-custom/car/car-4.jpg')
},
{
text: '1223',
per_type: '2',
// type_text: '',
person_name: '郑廖',
id_card: '321287197606038965',
car_code: '苏J40089',
catch_time: '2023-11-30 14:20:08',
state_time: '4个小时',
catch_place: '江苏省射阳县海河镇革新村二组113号'
state_time: '9个小时',
catch_place: '江苏省射阳县大兴镇',
pic: require('@/assets/people-picture/picture-custom/car/car-1.jpg')
}
],
animateUp: false,
@ -190,7 +193,7 @@ export default {
this.roll_list.push(this.roll_list[0])
this.roll_list.shift()
this.animateUp = false
}, 500)
}, 2000)
}
}
}
@ -258,7 +261,9 @@ export default {
.roll_item_pic {
width: 5vw;
height: 14vh;
background: #0b4672;
// background: #0b4672;
background-repeat: no-repeat;
background-size: 100% 100%;
}
.roll_item_btn {
width: 5vw;

@ -25,7 +25,7 @@ export default {
init_charts() {
var chartDom = document.getElementById('carMain')
var myChart = echarts.init(chartDom)
let resize_div = document.getElementById('people_chart')
let resize_div = document.getElementById('carMain')
// *echarts
EleResize.on(resize_div, () => {
myChart.resize()
@ -84,6 +84,7 @@ export default {
.car_charts {
width: 20vw;
height: 30vh;
color: #4ca5dd;
}
}
}

@ -10,7 +10,7 @@
</div>
<div class="device_main_body">
<div class="live">
<LivePlayer aspect="fullscreen"></LivePlayer>
<!-- <LivePlayer aspect="fullscreen"></LivePlayer> -->
</div>
</div>
</div>
@ -18,10 +18,10 @@
</template>
<script>
import LivePlayer from '@liveqing/liveplayer'
// import LivePlayer from '@liveqing/liveplayer'
export default {
name: 'DeviceLive',
components: { LivePlayer },
// components: { LivePlayer },
data() {
return {
title: '射阳幸福大道明湖大桥西侧东向西2(标卡)'

@ -4,15 +4,224 @@
<div class="mancar_title">
<div class="mancar_title_text">人车统计</div>
</div>
<div class="mancar_main"></div>
<div class="mancar_main">
<div class="echart_box" id="man-charts"></div>
<div class="echart_box" id="car-charts"></div>
<!-- <div class="text_people">人流统计</div>
<div class="text_car">车流统计</div> -->
</div>
</div>
</template>
<script>
import * as echarts from 'echarts'
import EleResize from '@/utils/esresize'
export default {
name: 'ManCar',
data() {
return {}
},
mounted() {
this.init_charts()
this.init_car_charts()
},
methods: {
init_charts() {
var chartDom = document.getElementById('man-charts')
var myChart = echarts.init(chartDom)
let resize_div = document.getElementById('man-charts')
// echarts
EleResize.on(resize_div, () => {
myChart.resize()
})
const gaugeData = [
{
value: 80,
name: 'Perfect',
title: {
offsetCenter: ['0%', '-30%']
},
detail: {
valueAnimation: true,
offsetCenter: ['0%', '-20%']
}
}
// {
// value: 40,
// name: 'Good',
// title: {
// offsetCenter: ['0%', '0%']
// },
// detail: {
// valueAnimation: true,
// offsetCenter: ['0%', '10%']
// }
// },
// {
// value: 60,
// name: 'Commonly',
// title: {
// offsetCenter: ['0%', '30%']
// },
// detail: {
// valueAnimation: true,
// offsetCenter: ['0%', '40%']
// }
// }
]
let option = {
series: [
{
type: 'gauge',
startAngle: 90,
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: 14
},
detail: {
// width: 50,
// height: 14,
fontSize: 12,
color: 'inherit',
borderColor: 'inherit',
borderRadius: 20,
borderWidth: 1,
formatter: '{value}%'
}
}
]
}
option && myChart.setOption(option)
},
init_car_charts() {
var chartDom = document.getElementById('car-charts')
var myChart = echarts.init(chartDom)
let resize_div = document.getElementById('car-charts')
// echarts
EleResize.on(resize_div, () => {
myChart.resize()
})
const gaugeData = [
{
value: 20,
name: 'Perfect',
title: {
offsetCenter: ['0%', '-30%']
},
detail: {
valueAnimation: true,
offsetCenter: ['0%', '-20%']
}
},
{
value: 40,
name: 'Good',
title: {
offsetCenter: ['0%', '0%']
},
detail: {
valueAnimation: true,
offsetCenter: ['0%', '10%']
}
},
{
value: 60,
name: 'Commonly',
title: {
offsetCenter: ['0%', '30%']
},
detail: {
valueAnimation: true,
offsetCenter: ['0%', '40%']
}
}
]
let option = {
series: [
{
type: 'gauge',
startAngle: 90,
endAngle: -270,
pointer: {
show: false
},
progress: {
show: true,
overlap: false,
roundCap: true,
clip: false,
itemStyle: {
borderWidth: 1,
borderColor: '#464646'
}
},
axisLine: {
lineStyle: {
width: 40
}
},
splitLine: {
show: false,
distance: 0,
length: 10
},
axisTick: {
show: false
},
axisLabel: {
show: false,
distance: 50
},
data: gaugeData,
title: {
fontSize: 14
},
detail: {
width: 50,
height: 14,
fontSize: 14,
color: 'inherit',
borderColor: 'inherit',
borderRadius: 20,
borderWidth: 1,
formatter: '{value}%'
}
}
]
}
option && myChart.setOption(option)
}
}
}
</script>
@ -38,11 +247,35 @@ export default {
}
}
.mancar_main {
display: flex;
justify-content: center;
position: relative;
width: 20vw;
height: 19vh;
background-image: url('@/assets/picture/bg_1.png');
background-size: 100% auto;
color: #edf1f7;
background-image: url('../../../assets/picture/bg_1.png');
background-repeat: no-repeat;
background-size: 100% auto;
// .text_people {
// // z-index: 3;
// position: absolute;
// top: 45%;
// left: 3.5vw;
// }
// .text_car {
// position: absolute;
// top: 45%;
// right: 3.5vw;
// }
}
// #man-charts {
// width: 10vw;
// height: 19vh;
// }
// #car-charts {
// width: 10vw;
// height: 19vh;
// }
}
</style>

@ -3,7 +3,7 @@
</template>
<script>
import { addDeviceLayers, addSources, addDeviceImages } from '../utils/layer'
// import { addDeviceLayers, addSources, addDeviceImages } from '../utils/layer'
export default {
name: 'MapDevice',
data() {
@ -51,15 +51,15 @@ export default {
})
// *
this.mapContainer.on('load', () => {
addSources(this.mapContainer)
addDeviceLayers(this.mapContainer)
addDeviceImages(this.mapContainer)
// addSources(this.mapContainer)
// addDeviceLayers(this.mapContainer)
// addDeviceImages(this.mapContainer)
})
},
// * vuex
getActionsData() {
this.$store.dispatch('device/getVideoData', this.params)
}
// * vuex
// getActionsData() {
// this.$store.dispatch('device/getVideoData', this.params)
// }
}
}
</script>

@ -11,7 +11,10 @@
<ul class="marquee-list" :class="{ 'animate-up': animateUp }">
<li v-for="(item, index) in roll_list" :key="index">
<div class="roll_item_left">
<div class="roll_item_pic"></div>
<div
class="roll_item_pic"
:style="{ backgroundImage: `url(${item.pic})` }"
></div>
<div class="roll_item_btn">人员追踪</div>
</div>
<div class="roll_item_right">
@ -75,61 +78,67 @@ export default {
text: '123',
per_type: '1',
type_text: '在逃人员',
person_name: '周大山',
catch_time: '2023-12-01 13:20:09',
person_name: '白玉莹',
catch_time: '2023-12-02 13:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '8个小时',
catch_address: '江苏省射阳县黄沙港镇',
pic: require('@/assets/people-picture/people-cacth/people-1.jpg')
},
{
text: '1243',
per_type: '3',
type_text: '涉恐人员',
person_name: '王富强',
catch_time: '2023-12-01 13:20:09',
person_name: '周大山',
catch_time: '2023-12-03 14:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '14个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号',
pic: require('@/assets/people-picture/people-cacth/people-3.jpg')
},
{
text: '12323',
per_type: '2',
type_text: '精神病人',
person_name: '赵磊',
catch_time: '2023-12-01 13:20:09',
person_name: '王富强',
catch_time: '2023-12-01 16:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '21个小时',
catch_address: '江苏省射阳县黄沙港镇',
pic: require('@/assets/people-picture/people-cacth/people-2.jpg')
},
{
text: '1243',
per_type: '2',
type_text: '精神病人',
type_text: '涉恐人员',
person_name: '徐永',
catch_time: '2023-12-01 13:20:09',
catch_time: '2023-12-01 11:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '10个小时',
catch_address: '江苏省射阳县海河镇革新村二组110号',
pic: require('@/assets/people-picture/people-cacth/people-1.jpg')
},
{
text: '1223',
per_type: '2',
type_text: '精神病人',
person_name: '李文一',
type_text: '列管人员',
person_name: '赵磊',
catch_time: '2023-12-01 13:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '2个小时',
catch_address: '江苏省射阳县合德镇革新村二组113号',
pic: require('@/assets/people-picture/people-cacth/people-2.jpg')
},
{
text: '1223',
per_type: '1',
type_text: '在逃人员',
person_name: '谭静',
catch_time: '2023-12-01 13:20:09',
catch_time: '2023-11-29 10:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '24个小时',
catch_address: '江苏省射阳县海河镇革新村二组110号',
pic: require('@/assets/people-picture/people-cacth/people-3.jpg')
},
{
text: '1243',
@ -138,28 +147,31 @@ export default {
person_name: '孙洋洋',
catch_time: '2023-12-01 13:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '18个小时',
catch_address: '江苏省射阳县合德镇解放路122号',
pic: require('@/assets/people-picture/people-cacth/people-1.jpg')
},
{
text: '1223',
per_type: '1',
type_text: '在逃人员',
person_name: '董磊',
catch_time: '2023-12-01 13:20:09',
catch_time: '2023-12-03 09:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '10个小时',
catch_address: '江苏省射阳县大兴镇革新村二组113号',
pic: require('@/assets/people-picture/people-cacth/people-3.jpg')
},
{
text: '1223',
per_type: '2',
type_text: '精神病人',
person_name: '郑廖',
catch_time: '2023-12-01 13:20:09',
catch_time: '2023-11-29 00:20:09',
id_card: '321287197606038965',
state_time: '4个小时',
catch_address: '江苏省射阳县海河镇革新村二组113号'
state_time: '24个小时',
catch_address: '江苏省射阳县海通镇革新村二组113号',
pic: require('@/assets/people-picture/people-cacth/people-2.jpg')
}
],
animateUp: false,

@ -22,7 +22,13 @@
</div>
<div class="time_body">
<div class="box_all">
<div class="time_item"></div>
<div class="time_item">{{ timeArr.timeText }}</div>
<div class="time_item">{{ timeArr.week }}</div>
<div class="time">{{ timeArr.timeTime }}</div>
</div>
<div class="box_all_right">
<div class="box_all_right_pic"></div>
<div class="box_all_right_name">{{ userName }}</div>
</div>
</div>
</div>
@ -49,6 +55,7 @@
</template>
<script>
import { dateFormat } from '@/utils/date'
import MapDevice from './components/mapDevice.vue' // *
import MapSearch from './components/mapSearch.vue' // *
import ManCar from './components/mancarStatistics.vue' // *
@ -76,14 +83,29 @@ export default {
{ id: 2, title: '车辆抓拍' }
],
title_text: '射阳沿海治安防控综合平台',
play: false
play: false,
// *
timeArr: {},
// *
userName: '李警官'
}
},
created() {},
created() {
this.timeArr = dateFormat(new Date())
this.timeStart()
},
mounted() {},
methods: {
// *
onUpdateClose() {
this.play = !this.play
},
// *
timeStart() {
this.timer = setInterval(() => {
this.timeArr = dateFormat(new Date())
// console.log(this.timeArr)
}, 1000)
}
},
computed: {}
@ -111,25 +133,26 @@ export default {
.system_title {
width: 100vw;
height: 14vh;
height: 18vh;
position: absolute;
top: 0;
background: url('@/assets/homepage/title_back.png') no-repeat;
background: url('~@/assets/homepage/title_back.png') no-repeat;
background-size: 100% 100%;
display: flex;
justify-content: space-between;
.blank {
width: 24vw;
height: 14vh;
// background: #33a59f;
}
.title_body {
// width: 28vw;
height: 7vh;
// background: #33a59f;
display: flex;
z-index: 2;
.title_icon {
width: 3.5vw;
height: 7vh;
height: 9vh;
display: flex;
justify-content: center;
align-items: center;
@ -137,34 +160,75 @@ export default {
.police_icon {
width: 2.7vw;
height: 5.4vh;
background: url('@/assets/homepage/police.png') no-repeat;
background: url('~@/assets/homepage/police.png') no-repeat;
background-size: 100% 100%;
}
}
.title_text {
color: aliceblue;
text-align: center;
line-height: 7vh;
font-size: 2vw;
line-height: 9vh;
font-size: 2.25rem;
font-weight: 700;
}
}
.time_body {
width: 24vw;
display: flex;
justify-content: space-between;
width: 25vw;
height: 7vh;
.box_all {
width: 12vw;
display: flex;
justify-content: start;
width: 14vw;
height: 7vh;
// background: #ad337f;
.time_item {
.time_item,
.time {
margin-left: 2px;
width: 12vw;
height: 3.5vh;
line-height: 7vh;
text-align: center;
color: #37fdc7;
font-size: 2.25rem;
font-weight: 700;
color: #e5f5f9;
font-size: 1.2rem;
font-weight: 400;
font-family: PingFangSC PingFang SC;
}
.time {
color: #009cfe;
font-size: 1.2rem;
font-family: D-DIN;
font-weight: bold;
letter-spacing: 2px;
}
}
.box_all_right {
display: flex;
align-items: center;
justify-content: space-around;
width: 9vw;
height: 7vh;
.box_all_right_pic {
width: 2vw;
height: 4.5vh;
background-image: url('@/assets/people-picture/people-cacth/people-3.jpg');
background-repeat: no-repeat;
background-size: 100% 100%;
}
.box_all_right_name {
width: 5vw;
height: 7vh;
font-size: 1.2rem;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
color: #ecf4f9;
line-height: 7vh;
}
}
}

@ -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 /* 聚合半径 */
// })
// }

@ -92,7 +92,7 @@
</div>
<!-- 视频 -->
<div class="live_card_body_right">
<LivePlayer></LivePlayer>
<!-- <LivePlayer></LivePlayer> -->
<div class="video_button">
<div class="video_buton_style">
<div class="video_icon video_icon1"></div>
@ -111,10 +111,10 @@
</template>
<script>
import LivePlayer from '@liveqing/liveplayer'
// import LivePlayer from '@liveqing/liveplayer'
export default {
name: 'MapPlayer',
components: { LivePlayer },
// components: { LivePlayer },
props: {
videoUrl: {
type: String

@ -2,7 +2,7 @@
<div id="map"></div>
</template>
<script>
import { addSources, addImages, addLayers } from '../utils/deviceLayer'
// import { addSources, addImages, addLayers } from '../utils/deviceLayer'
export default {
name: 'MapBody',
data() {
@ -37,12 +37,12 @@ export default {
minZoom: 3,
projection: 'LATLON'
})
// *
this.mapContainer.on('load', () => {
addSources(this.mapContainer)
addImages(this.mapContainer)
addLayers(this.mapContainer)
})
// // *
// this.mapContainer.on('load', () => {
// addSources(this.mapContainer)
// addImages(this.mapContainer)
// addLayers(this.mapContainer)
// })
// *
this.mapContainer.on('moveend', () => {
let bounds = this.mapContainer.getBounds()

@ -15,7 +15,13 @@
</div>
<div class="time_body">
<div class="box_all">
<div class="time_item"></div>
<div class="time_item">{{ timeArr.timeText }}</div>
<div class="time_item">{{ timeArr.week }}</div>
<div class="time">{{ timeArr.timeTime }}</div>
</div>
<div class="box_all_right">
<div class="box_all_right_pic"></div>
<div class="box_all_right_name">{{ userName }}</div>
</div>
</div>
</div>
@ -60,10 +66,11 @@
</template>
<script>
import { dateFormat } from '@/utils/date'
import MapPlayer from './components/livePlayer.vue'
import MapVideo from './components/mapVideo.vue'
import { getDeviceListAPI } from '@/api/facility'
import { setDeviceLatlng } from '@/utils/latlng'
// import { getDeviceListAPI } from '@/api/facility'
// import { setDeviceLatlng } from '@/utils/latlng'
export default {
components: {
MapVideo,
@ -83,21 +90,35 @@ export default {
online: true
},
// *
channelList: []
channelList: [],
// *
timeArr: {},
// *
userName: '李警官'
}
},
created() {
this.onGetDeviceListAPI()
// this.onGetDeviceListAPI()
this.timeArr = dateFormat(new Date())
this.timeStart()
},
methods: {
// *
async onGetDeviceListAPI() {
const res = await getDeviceListAPI(this.params)
this.channelList = res.ChannelList.filter((item) => item.Longitude !== 0)
console.log(this.channelList, '监控设备数据')
// *
setDeviceLatlng(this.channelList)
// // *
// async onGetDeviceListAPI() {
// const res = await getDeviceListAPI(this.params)
// this.channelList = res.ChannelList.filter((item) => item.Longitude !== 0)
// console.log(this.channelList, '')
// // *
// setDeviceLatlng(this.channelList)
// },
// *
timeStart() {
this.timer = setInterval(() => {
this.timeArr = dateFormat(new Date())
// console.log(this.timeArr)
}, 1000)
},
// *
onUpdateClose() {
console.log('关闭弹窗')
this.play = !this.play
@ -112,28 +133,29 @@ export default {
position: relative;
// *
.system_title {
width: 100vw;
height: 14vh;
position: absolute;
top: 0;
background: url('@/assets/homepage/title_back.png') no-repeat;
background-size: 100% 100%;
display: flex;
justify-content: space-between;
z-index: 2;
position: absolute;
top: 0;
width: 100vw;
height: 18vh;
background: url('~@/assets/homepage/title_back.png') no-repeat;
background-size: 100% 100%;
.blank {
width: 24vw;
height: 14vh;
// background: #33a59f;
}
.title_body {
// width: 28vw;
height: 7vh;
// background: #33a59f;
display: flex;
z-index: 2;
.title_icon {
width: 3.5vw;
height: 7vh;
height: 9vh;
display: flex;
justify-content: center;
align-items: center;
@ -141,34 +163,75 @@ export default {
.police_icon {
width: 2.7vw;
height: 5.4vh;
background: url('@/assets/homepage/police.png') no-repeat;
background: url('~@/assets/homepage/police.png') no-repeat;
background-size: 100% 100%;
}
}
.title_text {
color: aliceblue;
text-align: center;
line-height: 7vh;
font-size: 2vw;
line-height: 9vh;
font-size: 2.25rem;
font-weight: 700;
}
}
.time_body {
width: 24vw;
display: flex;
justify-content: space-between;
width: 25vw;
height: 7vh;
.box_all {
width: 12vw;
display: flex;
justify-content: start;
width: 14vw;
height: 7vh;
// background: #ad337f;
.time_item {
.time_item,
.time {
margin-left: 2px;
width: 12vw;
height: 3.5vh;
line-height: 7vh;
text-align: center;
color: #37fdc7;
font-size: 1.5rem;
font-weight: 600;
color: #e5f5f9;
font-size: 1.2rem;
font-weight: 400;
font-family: PingFangSC PingFang SC;
}
.time {
color: #009cfe;
font-size: 1.2rem;
font-family: D-DIN;
font-weight: bold;
letter-spacing: 2px;
}
}
.box_all_right {
display: flex;
align-items: center;
justify-content: space-around;
width: 9vw;
height: 7vh;
.box_all_right_pic {
width: 2vw;
height: 4.5vh;
background-image: url('@/assets/people-picture/people-cacth/people-3.jpg');
background-repeat: no-repeat;
background-size: 100% 100%;
}
.box_all_right_name {
width: 5vw;
height: 7vh;
font-size: 1.2rem;
font-family: PingFangSC, PingFang SC;
font-weight: 400;
color: #ecf4f9;
line-height: 7vh;
}
}
}
@ -187,7 +250,7 @@ export default {
}
}
.children {
width: 18vw;
width: 20vw;
height: 89vh;
background-color: rgba(25, 64, 166, 0.5);
position: absolute;
@ -198,17 +261,18 @@ export default {
color: #fff;
.coverage {
height: 4vh;
align-self: center;
display: flex;
font-weight: 400;
font-size: 1.5rem;
font-size: 1.2rem;
border-bottom: 1px solid #fff;
background: url('../../assets/icon-hza/bg_104.png');
width: 20vw;
height: 4vh;
background-image: url('@/assets/picture/bg_small_title.png');
background-size: 100% auto;
background-repeat: no-repeat;
padding-left: 3vw;
padding-top: 2vh;
padding-top: 0.7vh;
.checkbox {
padding-top: 1.5vh;
padding-left: 3vh;

@ -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 //图标覆盖文字允许压盖
// }
// })
// }

@ -22,3 +22,15 @@ module.exports = {
}
}
module.exports = {
configureWebpack: {
module: {
rules: [
{
test: /.geojson$/,
loader: 'json-loader'
}
]
}
}
}

Loading…
Cancel
Save