pull/91/head
xuhaoyun 1 year ago
parent 18489d427b
commit 6a4eefa2be

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 894 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 390 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 464 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,33 @@
import request from '@/utils/request'
//查询企业数据
export function queryCompany(params) {
return request({
url: '/element/resource/queryCompany',
method: 'get',
params
})
}
//查询监控数据
export function queryVideo(params) {
return request({
url: '/element/resource/queryVideo',
method: 'get',
params
})
}
//根据企业id查询企业信息
export function selectCompanyInfoById(params) {
return request({
url: '/element/resource/selectCompanyInfoById',
method: 'get',
params
})
}
//图层数据
export function statistic(params) {
return request({
url: '/element/resource/statistic',
method: 'get',
params
})
}

@ -45,7 +45,7 @@ export default {
});
let that = this
map.centerAndZoom(new BMap.Point(this.dongtaiPoint[0], this.dongtaiPoint[1]), 12);
// map.setMinZoom(11)
map.setMinZoom(12)
map.setMaxZoom(19)
map.enableScrollWheelZoom(true);
// hjrequest({
@ -196,7 +196,8 @@ export default {
label.setOffset(new BMap.Size(130, -10))
label.setStyle({ width: '372px', height: '242px', background: 'url(pbImg/bz49.png) no-repeat', backgroundSize: '100% 100%', border: '0', color: '#fff', padding: '13px 20px' })
label.setContent(`
<div style='width:100%;display:flex;justify-content: space-between;align-items: center;border-bottom:1px solid #657E83;'> <h4 style='margin:12px;font-size: 14px;color: #EBFFF4;letter-spacing: 1px;line-height: 24px;text-shadow: 0 0 9px rgba(21,255,195,0.77);'>${res.data.companyName}</h4><div class='closeBtn' style='font-size: 14px;color: #30C4FF;letter-spacing: 1px;font-weight: 400;'>企业看板<i style='display:inline-block; background: url(pbImg/跳转.png) no-repeat;width:16px;height:14px;background-size: 100% 100%;"'></i></div></div>
<div style='width:100%;display:flex;justify-content: space-between;align-items: center;border-bottom:1px solid #657E83;'> <h4 style='margin:12px;font-size: 14px;color: #EBFFF4;letter-spacing: 1px;line-height: 24px;text-shadow: 0 0 9px rgba(21,255,195,0.77);overflow: hidden;text-overflow: ellipsis;white-space: nowrap;'>${res.data.companyName}</h4><div class='closeBtn' style='font-size: 14px;color: #30C4FF;letter-spacing: 1px;font-weight: 400;'>企业看板<i style='display:inline-block; background: url(pbImg/跳转.png) no-repeat;width:16px;height:14px;background-size: 100% 100%;"'></i></div><div class='closeBtn1' style='background: url(pbImg/.png) no-repeat;width:20px;height:20px;background-size: 100% 100%;position:relative;z-index:200000000;
margin-top:-15px;"'></div></div>
<div style='height:70px;width:100%;margin-top:15px;background: url(pbImg/编组.png);display:flex;justify-content: space-around;align-items: center;'>
<div style='width:80px;height:80%;text-align:center;padding:15px 0;'>
<div style='font-size: 18px;color: #FFFCEB;letter-spacing: 2.25px;line-height: 16px;text-shadow: 0 0 9px rgba(255,236,21,0.41);'>${res.data.scoreMonth}</div>
@ -244,6 +245,11 @@ export default {
`);
map.addOverlay(label);
let closebtn = document.querySelector('.closeBtn')
let closeBtn1 = document.querySelector('.closeBtn1')
closeBtn1.addEventListener('click', () => {
map.removeOverlay(label);
})
//console.log(btn, 'btn');
closebtn.addEventListener('click', () => {
that.$emit('toArchives', item)

@ -50,6 +50,14 @@ const routes = [
component: () => import('@/views/realtimeWarning'),
},
//要素资源
{
path: 'factorResources',
name: 'factorResources',
component: () => import('@/views/factorResources'),
},
// 系统管理
{
path: 'systemManagement',

@ -5,7 +5,7 @@ import { getToken } from '@/utils/auth'
axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8'
const request = axios.create({
baseURL: 'http://172.18.113.50:8080/zhapi',
// baseURL: 'http://172.18.113.13:8080/zhapi', // 孙强
//baseURL: 'http://172.18.113.13:8080/zhapi', // 孙强
//baseURL: 'http://192.168.0.188:8888/zhapi',
// baseURL: `http://${window.location.host}/zhapi`,
timeout: 50000,

@ -15,7 +15,6 @@
<div class="monitorItem" v-for="(item, index) in monitorList" :key="index">
<div class="online" v-if="item.isOnline">
<div class="left">
<img src="../../assets/archives/公共区域2.png" v-if="item.deviceVideoSubType == 1">
<img src="../../assets/archives/摄像头0912.png" v-if="item.deviceVideoSubType == 3">
<img src="../../assets/archives/高空抛物2.png" v-if="item.deviceVideoSubType == 2">

@ -584,6 +584,8 @@ export default {
background: url('~@/assets/companyCanban/09091.png') no-repeat;
background-size: 100% 100%;
position: relative;
box-sizing: border-box;
padding-top: 35px;
.tjsjTitle {
position: absolute;
@ -609,7 +611,9 @@ export default {
.fxfqs {
width: 100%;
height: 100%;
height: calc(100% - 30px);
}
}
}

@ -1,6 +1,6 @@
<template>
<div class="qyyg">
<div class="title" @click="showDialog"><img src="../../assets/safetyIndex/装饰009991.png" alt="">企业员工</div>
<div class="title" @click="showDialog"><img src="../../assets/safetyIndex/装饰009991.png" alt="">人员安全</div>
<div class="ygtb" id="ygtb">
</div>
<el-dialog title="人员安全上报数据详情" :visible.sync="diaVisible" class="picForm"
@ -18,7 +18,7 @@
</div>
</div>
<div class="zdgw">
<div class="tjsjTitle">流动人员</div>
<div class="tjsjTitle">重点岗位人员</div>
<div class="zhuangshi"></div>
<div class="zdItem">
<div class="yellowIconBox"><img src="../../assets/companyCanban/icon/危险品领用、保管、使用人员.png" alt=""></div>

@ -49,7 +49,7 @@
</div>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip label="中高风险返企" width="35">
<el-table-column show-overflow-tooltip label="中高风险返企" width="35">
<template slot-scope="scope">
<div>
{{ scope.row.zgfx || 0 }}

@ -1,72 +1,113 @@
<template>
<div class="main">
<div class="box">
<div class="title">实时预警</div>
<div class="title">要素资源</div>
<div class="leftBox">
<zhmap class="map" :waringList="waringList" @zhuanchuzhi="chuzhi" v-if="waringList && waringList.length">
<zhmap class="map" :companyInfoList="companyInfoList" :deviceVideoInfoList="deviceVideoInfoList"
@showCompanyData="showCompanyData" @showCameraData="showCameraData">
</zhmap>
<div class="searchBox">
<el-select v-model="Selectvalue" placeholder="请选择" class="topSelect1">
<el-option label="企业" value="企业">
</el-option>
<el-option label="监控" value="监控">
</el-option>
</el-select>
<el-form :model="formInline" class="search">
<el-form-item class="formItem">
<el-input v-model.trim="formInline.name" placeholder="请输入名称搜索" clearable
class="formIpt"></el-input>
</el-form-item>
<el-button type="primary" @click="getCompanyList()"></el-button>
<el-button @click="reset()"></el-button>
</el-form>
</div>
<div class="rightBox">
<div class="totalTitle">
<div class="titleText">预警列表</div><span>&nbsp; <span class="redText">{{ total }}</span> </span>
<div class="companyCanban" v-if="showCompany">
<div class="close" @click="showCompany = false"></div>
<el-tooltip :content="companyData.companyName" placement="top-start">
<div class="companyName">{{ companyData.companyName }}</div>
</el-tooltip>
<div class="companybiaoqian">企业类型 <div
:class="{ 'shewei': a == '剧毒' || a == '易制毒', 'zhongdian': a == '消防重点' || a == '所管消防', 'zhibao': a == '放射源' || a == '易制爆', 'zhian': a == '治安重点' || a == '创安单位' }"
v-for="a in companyData.companyTypeList" :key="a">{{ a }}
</div>
<div class="bottomBody">
<div class="yujingItem" v-for="(item, index) in waringList" :key="index">
<div class="yujingTop">
<div class="companyName">{{ item.companyName }}</div>
<div class="impBtnList">
<div :class="{ 'shewei': a == '剧毒' || a == '易制毒', 'zhongdian': a == '消防重点' || a == '所管消防', 'zhibao': a == '放射源' || a == '易制爆', 'zhian': a == '治安重点' || a == '创安单位' }"
v-for="a in item.companyTypeList" :key="a">{{ a }}
</div>
<div class="companyxinxi">企业地址<span>{{ companyData.companyAddress }}</span></div>
<div class="companyxinxi">企业性质<span>{{ companyData.companyNature }}</span></div>
<div class="companyxinxi">成立日期<span>{{ companyData.establishDate }}</span></div>
<div class="companyxinxi">营业期限<span>{{ companyData.businessTermDate }}</span></div>
<div class="companyxinxi">登记机关<span>{{ companyData.registerAuthority }}</span></div>
<div class="companyxinxi">企业法人<span>{{ companyData.legalPerson }}</span></div>
<div class="companyxinxi">安全责任人<span>{{ companyData.emergencyContact }}</span></div>
<div class="companyxinxi">责任人电话<span>{{ companyData.emergencyContactPhone }}</span></div>
<div class="companyxinxi">经营范围<span>{{ companyData.businessScope }}</span></div>
<div class="todangan" @click="toArchive"> <img src="../../../public/pbImg/跳转.png" alt=""></div>
</div>
<div class="cameraCanban" v-if="showCamera">
<div class="close" @click="showCamera = false"></div>
<el-tooltip :content="cameraData.deviceName" placement="top-start">
<div class="companyName">{{ cameraData.deviceName }}</div>
</el-tooltip>
<div class="companyxinxi">隶属企业<span>{{ cameraData.companyName }}</span></div>
<div class="companyxinxi">监控<span>{{ cameraData.deviceAddress }}</span></div>
<div class="companyxinxi">监控状态<span class="online" v-if="cameraData.isOnline == 1">线</span><span
class="outline" v-else>离线</span></div>
<div class="todangan" @click="showVideo"> <img src="../../../public/pbImg/跳转.png" alt=""></div>
</div>
<div class="yujingBottom">
<div class="bottomTOP">
一级指标<span class="numValue">{{ item.levelIndexOne }}</span> &nbsp;&nbsp;预警指标<span
class="numValue">{{ item.levelIndexThree }}异常</span>
</div>
<div class="bottomTOP">
预警时间<span class="numValue">{{ item.alarmTime }}</span>
</div>
</div>
<div class="chuzhi" @click="chuzhi(item)"></div>
</div>
</div>
</div>
<el-dialog title="选择处置部门" :visible.sync="diaVisible" class="picForm">
<div class="czTitle">可选择多个部门联合处置</div>
<div class="czBody" v-if="deptList && deptList.length">
<el-checkbox-group v-model="checkedDepts">
<el-checkbox v-for="city in deptList" :label="city.deptId" :key="city.deptId">{{ city.deptName
}}</el-checkbox>
<div class="tucengCanban">
<div class="topText">图层</div>
<div class="tucengBox">
<el-checkbox :indeterminate="isIndeterminate" v-model="checkAll"
@change="handleCheckAllChange">全选</el-checkbox>
<div style="margin: 15px 0;"></div>
<el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
<el-checkbox v-for="city in cities" :label="city" :key="city">{{ city
}} <span v-if="city == '园区企业'">{{ companyInfoList.length }}</span><span v-else>{{
deviceVideoInfoList.length
}}</span></el-checkbox>
</el-checkbox-group>
</div>
<div slot="footer" class="dialog-footer">
<el-button @click="diaVisible = false">
</el-button>
<el-button type="primary" @click="addForm()"> </el-button>
</div>
<el-dialog title="实时监控" :visible.sync="diaVisible" class="picForm">
<playVideo :video="{ url: monitorData.wsFlv, index: 1 }" :control="true" v-if="diaVisible"></playVideo>
</el-dialog>
</div>
</div>
</div>
</template>
<script>
import { mapList, deptList, addCommonApprovalProcess } from '@/api/realtimeWarning'
import { statistic, queryCompany, queryVideo } from '@/api/factorResources'
import { realTimeMonitoring } from '@/api/archives'
import playVideo from '@/components/videoPlayer'
import zhmap from './map.vue'
export default {
components: {
zhmap,
playVideo
},
data() {
return {
total: 0,
waringList: [],
companyInfoList: [],
deviceVideoInfoList: [],
diaVisible: false,
checkedDepts: [],
deptList: [],
chuzhiData: {},
Selectvalue: '企业',
formInline: {},
companyData: {},
showCompany: false,
cameraData: {},
showCamera: false,
monitorData: {},
checkAll: false,
cityOptions: ['视频监控', '园区企业'],
checkedCities: ['视频监控', '园区企业'],
cities: ['视频监控', '园区企业'],
isIndeterminate: true
}
},
created() {
@ -74,32 +115,88 @@ export default {
},
methods: {
getList() {
mapList({ pageSize: 10, pageNum: 1 }).then(res => {
this.waringList = res.data
this.total = res.total
statistic().then(res => {
this.companyInfoList = res.data.companyInfoList
this.deviceVideoInfoList = res.data.deviceVideoInfoList
})
},
getCompanyList() {
if (this.Selectvalue == '企业') {
queryCompany({ ...this.formInline }).then(res => {
this.companyInfoList = res.data
this.deviceVideoInfoList = []
})
} else {
queryVideo({ ...this.formInline }).then(res => {
this.deviceVideoInfoList = res.data
this.companyInfoList = []
})
}
},
reset() {
this.getList()
},
showCompanyData(val) {
this.companyData = val
this.showCompany = true
},
showCameraData(val) {
this.cameraData = val
this.showCamera = true
},
toArchive() {
sessionStorage.setItem('companyID', this.companyData.id)
sessionStorage.setItem('companyName', this.companyData.companyName)
this.$router.push({
name: 'archives',
})
},
chuzhi(val) {
//console.log(val)
this.chuzhiData = val
deptList().then(res => {
console.log(res, 'res');
this.deptList = res.data
showVideo() {
realTimeMonitoring({ pageSize: 10, pageNum: 1, deviceName: this.cameraData.deviceName, companyId: this.cameraData.companyId }).then(res => {
this.monitorData = res.data[0]
this.diaVisible = true
})
},
addForm() {
console.log(this.checkedDepts, 'this.checkedDepts');
addCommonApprovalProcess({ approveDeptCodes: this.checkedDepts, safeCompanyAlarm: { id: this.chuzhiData.id } }).then(res => {
if (res.code == 200) {
this.$message.success(res.msg)
this.diaVisible = false
handleCheckAllChange(val) {
console.log(val, 'val');
this.checkedCities = val ? this.cityOptions : [];
this.isIndeterminate = false;
if (val) {
this.getList()
} else {
this.$message.error(res.msg)
this.companyInfoList = []
this.deviceVideoInfoList = []
}
},
handleCheckedCitiesChange(value) {
console.log(value, 'value');
if (value.length) {
if (value.length == 2) {
this.getList()
} else {
if (value[0] == "视频监控") {
statistic().then(res => {
this.companyInfoList = []
this.deviceVideoInfoList = res.data.deviceVideoInfoList
})
} else {
statistic().then(res => {
this.companyInfoList = res.data.companyInfoList
this.deviceVideoInfoList = []
})
}
}
} else {
this.companyInfoList = []
this.deviceVideoInfoList = []
}
let checkedCount = value.length;
this.checkAll = checkedCount === this.cities.length;
this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
},
}
}
@ -135,59 +232,136 @@ export default {
}
.leftBox {
width: calc(100% - 590px);
width: calc(100%);
height: 100%;
margin-right: 20px;
//margin-right: 20px;
box-sizing: border-box;
background: url('~@/assets/realtimeWarning/矩形备份 289981.png') no-repeat;
background-size: 100% 100%;
padding: 20px;
position: relative;
.map {
height: 100%;
width: 100%;
}
.searchBox {
position: absolute;
height: 40px;
width: 500px;
top: 40px;
right: 20px;
display: flex;
box-sizing: border-box;
.topSelect1 {
margin-top: 20px;
/deep/ .el-input {
width: 100px;
height: 35px;
.el-select__caret {
line-height: 35px;
}
.el-input__inner {
height: 35px;
// background: url('~@/assets/safetyIndex/.png') no-repeat;
// background-size: 100% 100%;
background: #3B4450;
font-size: 14px;
color: #C4E5FF;
letter-spacing: 1px;
text-align: center;
font-weight: 400;
border: 0;
}
}
}
.rightBox {
width: 570px;
height: 100%;
.search {
height: 35px;
box-sizing: border-box;
background: url('~@/assets/realtimeWarning/矩形备份 289981.png') no-repeat;
background-size: 100% 100%;
}
.totalTitle {
height: 60px;
width: 100%;
border-bottom: 1px solid rgba(91, 116, 140, 0.6);
padding: 0 20px;
display: flex;
align-items: center;
color: #EBFFF4;
/deep/.el-input__inner {
// background: url('~@/assets/companyFile/2121.png') no-repeat;
background: #3B4450;
border: 1px solid #5B748C;
color: rgba(234, 246, 255, 0.7);
height: 35px;
.titleText {
font-size: 16px;
color: #EBFFF4;
letter-spacing: 2px;
.el-range-separator {
color: #ccc;
}
.el-range-input {
background: rgba(0, 0, 0, 0);
color: #ccc;
}
}
/deep/.el-form-item {
text-shadow: 0 0 9px rgba(21, 255, 195, 0.60);
margin: 0;
.el-form-item__content {
line-height: 35px;
}
.el-form-item__label {
color: #EAF6FF;
letter-spacing: 1px;
text-align: center;
font-weight: 400;
}
.redText {
font-size: 16px;
color: #FF9191;
letter-spacing: 2px;
}
/deep/.el-button--primary {
width: 60px;
height: 35px;
line-height: 30px;
padding: 0;
text-align: center;
background: rgba(0, 0, 0, 0);
border: 0;
background: url('~@/assets/companyFile/2121.png') no-repeat;
background-size: 100% 100%;
font-size: 14px;
color: #F8FBFF;
letter-spacing: 0.89px;
font-weight: 500;
}
font-weight: 400
/deep/.el-button--default {
width: 60px;
height: 35px;
line-height: 30px;
padding: 0;
text-align: center;
background: #3B4450;
border: 0;
font-size: 14px;
color: #F8FBFF;
letter-spacing: 0.89px;
font-weight: 500;
}
}
.bottomBody {
height: calc(100% - 60px);
width: 100%;
.companyCanban {
width: 320px;
height: 540px;
position: absolute;
top: 120px;
right: 35px;
background: #3B4450;
border: 1px solid #5B748C;
padding: 14px;
box-sizing: border-box;
overflow: auto;
&::-webkit-scrollbar {
@ -207,38 +381,40 @@ export default {
}
.yujingItem {
height: 138px;
width: 100%;
background: rgba(108, 128, 151, 0.20);
border: 1px solid rgba(73, 84, 97, 1);
position: relative;
.yujingTop {
border-bottom: 1px solid #495461;
height: 54px;
width: 100%;
display: flex;
align-items: center;
padding: 0 14px;
.close {
position: absolute;
top: 14px;
right: 14px;
width: 18px;
height: 18px;
background: url('../../../public/pbImg/关闭.png') no-repeat;
background-size: 100% 100%;
cursor: pointer;
}
.companyName {
font-size: 16px;
color: #30C4FF;
letter-spacing: 1.14px;
width: 100%;
height: 20px;
font-size: 14px;
color: #FFE6D9;
letter-spacing: 0;
line-height: 16px;
text-shadow: 0 0 8px rgba(255, 119, 52, 0.50);
font-weight: 500;
margin-right: 20px;
width: 220px;
//white-space: nowrap; //
padding-right: 20px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap; //
}
.impBtnList {
height: 40px;
.companybiaoqian {
margin-top: 10px;
width: 100%;
display: flex;
align-items: center;
height: 28px;
font-size: 14px;
color: #D0DEEE;
letter-spacing: 0;
font-weight: 400;
overflow: hidden;
white-space: nowrap; //
width: 270px;
@ -299,97 +475,91 @@ export default {
background-size: 100% 100%;
margin-right: 10px;
}
}
}
.chuzhi {
position: absolute;
right: 14px;
bottom: 14px;
cursor: pointer;
height: 20px;
width: 50px;
line-height: 20px;
font-size: 14px;
color: #30C4FF;
letter-spacing: 1px;
font-weight: 400;
}
.yujingBottom {
.companyxinxi {
margin-top: 10px;
width: 100%;
height: 84px;
padding: 0 14px;
.bottomTOP {
width: 100%;
height: 50%;
display: flex;
align-items: center;
font-family: PingFangSC-Regular;
//height: 28px;
font-size: 14px;
color: rgba(255, 255, 255, 0.8);
color: #D0DEEE;
letter-spacing: 0;
font-weight: 400;
.numValue {
span {
font-size: 14px;
color: #FFFFFF;
letter-spacing: 0;
font-weight: 400;
}
}
}
.todangan {
margin-top: 15px;
width: 100%;
height: 30px;
line-height: 30px;
cursor: pointer;
font-size: 14px;
color: #4BCCFF;
letter-spacing: 0;
display: flex;
justify-content: center;
align-items: center;
img {
width: 20px;
height: 20px;
}
}
}
.picForm {
/deep/ .el-dialog {
background-color: rgba(0, 0, 0, 0);
background: url('~@/assets/realtimeWarning/导入弹窗.png') no-repeat;
background-size: 100% 100%;
width: 461px;
height: 412px;
position: relative;
.el-dialog__title {
font-size: 16px;
color: #EBFFF4;
letter-spacing: 2px;
.tucengCanban {
width: 180px;
height: 113px;
position: absolute;
top: 30px;
left: 35px;
background: #3B4450;
border: 1px solid #5B748C;
padding: 0 14px;
text-shadow: 0 0 9px rgba(21, 255, 195, 0.77);
.topText {
height: 30px;
border-bottom: 1px solid rgba(212, 212, 212, 0.25);
font-size: 14px;
color: #D0DEEE;
letter-spacing: 0;
font-weight: 400;
display: flex;
align-items: center;
justify-content: center;
}
.el-dialog__body {
box-sizing: border-box;
padding: 14px 10px;
height: 300px;
box-sizing: border-box;
.tucengBox {
height: 150px;
height: 100%;
.czTitle {
opacity: 0.7;
font-family: PingFangSC-Regular;
font-size: 14px;
color: #EAF6FF;
letter-spacing: 1px;
font-weight: 400;
margin-bottom: 12px;
/deep/.el-checkbox {
color: #D0DEEE;
}
}
}
.czBody {
width: 440px;
.cameraCanban {
width: 320px;
height: 232px;
background: rgba(108, 128, 151, 0.20);
border: 1px solid #495461;
position: absolute;
top: 120px;
right: 35px;
background: #3B4450;
border: 1px solid #5B748C;
padding: 14px;
overflow: auto;
&::-webkit-scrollbar {
width: 6px;
}
// ,
@ -401,63 +571,222 @@ export default {
//
&::-webkit-scrollbar-track {
background: transparent;
}
.close {
position: absolute;
top: 14px;
right: 14px;
width: 18px;
height: 18px;
background: url('../../../public/pbImg/关闭.png') no-repeat;
background-size: 100% 100%;
cursor: pointer;
}
.el-checkbox {
width: 80%;
height: 34px;
opacity: 0.7;
background-image: linear-gradient(180deg, rgba(234, 241, 248, 0.10) 0%, rgba(208, 222, 238, 0.10) 100%);
border: 1px solid #5B748C;
.companyName {
width: 100%;
height: 20px;
font-size: 14px;
color: #FFE6D9;
letter-spacing: 0;
line-height: 16px;
text-shadow: 0 0 8px rgba(255, 119, 52, 0.50);
font-weight: 500;
}
margin: 16px 15px 0;
.companybiaoqian {
margin-top: 10px;
width: 100%;
height: 28px;
font-size: 14px;
color: #EAF6FF;
letter-spacing: 1px;
padding: 7px;
color: #D0DEEE;
letter-spacing: 0;
font-weight: 400;
overflow: hidden;
white-space: nowrap; //
width: 270px;
text-overflow: ellipsis; //...
.shewei {
height: 26px;
line-height: 26px;
width: auto;
background: url('~@/assets/companyFile/编组 11991.png') no-repeat;
padding: 0 5px;
font-size: 14px;
color: #B5EBFF;
letter-spacing: 0.44px;
font-weight: 400;
background-size: 100% 100%;
margin-right: 10px;
}
.is-checked {
color: #37FDC7;
background: rgba(13, 251, 246, 0.10);
border: 1px solid #37FDC7;
box-sizing: border-box;
.zhongdian {
height: 26px;
line-height: 26px;
width: auto;
background: url('~@/assets/companyFile/编组 11222221.png') no-repeat;
padding: 0 5px;
font-size: 14px;
color: #E3DEFF;
letter-spacing: 0.44px;
font-weight: 400;
background-size: 100% 100%;
margin-right: 10px;
}
.el-checkbox__input.is-checked+.el-checkbox__label {
color: #37FDC7;
.zhibao {
height: 26px;
line-height: 26px;
width: auto;
background: url('~@/assets/companyFile/编组 11991备份 10.png') no-repeat;
padding: 0 5px;
font-size: 14px;
color: #E3DEFF;
letter-spacing: 0.44px;
font-weight: 400;
background-size: 100% 100%;
margin-right: 10px;
}
.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: rgba(13, 251, 246, 0.10);
border-color: rgba(255, 251, 246, 0.6);
.zhian {
height: 26px;
line-height: 26px;
width: auto;
background: url('~@/assets/companyFile/编组 11991备份 21.png') no-repeat;
padding: 0 5px;
font-size: 14px;
color: #E3DEFF;
letter-spacing: 0.44px;
font-weight: 400;
background-size: 100% 100%;
margin-right: 10px;
}
}
.companyxinxi {
margin-top: 20px;
width: 100%;
//height: 28px;
font-size: 14px;
color: #D0DEEE;
letter-spacing: 0;
font-weight: 400;
.online {
font-size: 14px;
color: #4CF993;
letter-spacing: 0;
font-weight: 400;
}
.outline {
font-size: 14px;
color: #FF7171;
letter-spacing: 0;
font-weight: 400;
}
span {
font-size: 14px;
color: #FFFFFF;
letter-spacing: 0;
}
}
.el-dialog__footer {
padding: 0px 30px 20px;
.todangan {
margin-top: 15px;
width: 100%;
height: 30px;
line-height: 30px;
cursor: pointer;
font-size: 14px;
color: #4BCCFF;
letter-spacing: 0;
display: flex;
justify-content: center;
align-items: center;
img {
width: 20px;
height: 20px;
}
}
}
}
.picForm {
/deep/ .el-dialog {
background-color: rgba(0, 0, 0, 0);
background: url('~@/assets/companyFile/背景.png') no-repeat;
background-size: 100% 100%;
width: 811px;
height: 534px;
.el-dialog__title {
font-size: 16px;
color: #EBFFF4;
letter-spacing: 2px;
text-shadow: 0 0 9px rgba(21, 255, 195, 0.77);
font-weight: 400;
}
.el-dialog__body {
box-sizing: border-box;
height: 480px;
position: relative;
img {
width: 100%;
height: 100%;
background: #f9f5f5;
}
.zhezhao {
width: 771px;
height: 420px;
position: absolute;
top: 30px;
left: 20px;
z-index: 1;
background: rgba(0, 0, 0, 0.4);
display: flex;
justify-content: center;
align-items: center;
.el-button--default {
width: 96px;
height: 35px;
opacity: 0.8;
background: rgba(0, 0, 0, 0);
background-image: linear-gradient(180deg, rgba(234, 241, 248, 0.10) 0%, rgba(208, 222, 238, 0.10) 100%);
border: 1px solid rgba(91, 116, 140, 1);
border-radius: 4px;
color: #E3DEFF
width: 99px;
height: 46px;
padding: 0;
line-height: 46px;
text-align: center;
background: #163C53;
font-size: 16px;
color: #F8FBFF;
letter-spacing: 0.89px;
font-weight: 500;
border: 0;
}
.el-button--primary {
width: 96px;
height: 35px;
width: 99px;
height: 46px;
line-height: 46px;
padding: 0;
text-align: center;
background: rgba(0, 0, 0, 0);
border: 0;
background: url('~@/assets/realtimeWarning/2121.png') no-repeat;
background: url('~@/assets/companyFile/2121.png') no-repeat;
background-size: 100% 100%;
font-size: 16px;
color: #F8FBFF;
letter-spacing: 0.89px;
font-weight: 500;
}
}
}
}

@ -0,0 +1,232 @@
<template>
<div>
<div class="bmap" id="container" ref="container"></div>
</div>
</template>
<script>
import MapLine from "../../../public/zhenhaiLine.json"
import MapPoint from "../../../public/zhenhaiPoint.json"
import styleJson from "../../../public/custom_map_config.json"
export default {
name: 'zhenhaimap',
props: ['companyInfoList', 'deviceVideoInfoList'],
data() {
return {
dongtaiPoint: [121.604192, 29.977299],
WaringList: this.companyInfoList,
VideoInfoList: this.deviceVideoInfoList,
villageList: [],
villageSumList: [],
flag: true,
companyList: [],
}
},
mounted() {
this.$nextTick(() => {
this.initMap()
})
},
watch: {
companyInfoList: {
handler(newVal) {
this.WaringList = newVal
this.initMap()
},
immediate: true
},
deviceVideoInfoList: {
handler(newVal) {
this.VideoInfoList = newVal
this.initMap()
},
immediate: true
}
},
methods: {
goBack() {
this.initMap()
this.$emit('goBack')
},
initMap() {
var BMap = window.BMap
// console.log(BMap, 'BMap');
var map = new BMap.Map('container', {
style: {
styleJson
}
});
// console.log(this.WaringList, 'waringList');
let that = this
map.centerAndZoom(new BMap.Point(this.dongtaiPoint[0], this.dongtaiPoint[1]), 13);
map.setMinZoom(12)
map.setMaxZoom(19)
map.enableScrollWheelZoom(true);
// hjrequest({
// url: '/yc/dt/statistical/village',
// method: 'get',
// params: { areaCode: that.areaCode }
// }).then((res) => {
// that.villageSumList = res.data
// })
// console.log(MapLine, 'MapLine');
for (var i = 0, n = MapLine.features.length; i < n; i++) {
showBoundaryEx(MapLine.features[i]);
}
var label = new BMap.Label();
showPoint()
showPic()
function showBoundaryEx(city) {
var paths = []
var list = city.geometry.coordinates
// console.log(list.length, 'list[0].length')
//console.log(list[1], 'list[1].length')
var polygon = {}
if (list.length > 1) {
for (let a = 0; a < list.length; a++) {
paths = []
for (let i = 0; i < list[a][0].length; i++) {
let lat = list[a][0][i][1],
lng = list[a][0][i][0];
paths.push(new BMap.Point(lng, lat));
}
polygon = new BMap.Polygon(paths, {
fillColor: '#3b4c44',
strokeColor: "#0f1423",
fillOpacity: 0.6,
strokeWeight: 1
}); //
map.addOverlay(polygon); //
}
// // console.log(list, 'length');
} else {
// console.log(list[0], ' list[0]');
for (let i = 0; i < list[0].length; i++) {
let lat = list[0][i][1],
lng = list[0][i][0];
paths.push(new BMap.Point(lng, lat));
}
// console.log(list, 'length');
polygon = new BMap.Polygon(paths, {
fillColor: '#3b4c44',
strokeColor: "#0f1423",
fillOpacity: 0.6,
strokeWeight: 1
}); //
map.addOverlay(polygon); //
}
polygon.infowindow = new BMap.InfoWindow();
polygon.infowindow.name = city.properties.name;
polygon.addEventListener("mouseover", function () {
polygon.setFillColor("#ffa500");
});
polygon.addEventListener("mouseout", function () {
map.removeOverlay(label);
polygon.setFillColor('#3b4c44');
});
}
function showPoint() {
// console.log(MapPoint, 'MapPoint');
for (let i = 0; i < MapPoint.features.length; i++) {
var opts = {
position: new BMap.Point(MapPoint.features[i].geometry.coordinates[0], MapPoint.features[i].geometry.coordinates[1]), //
offset: new BMap.Size(-30, -30) //
};
//
var label1 = new BMap.Label(MapPoint.features[i].properties.name, opts);
//
label1.setStyle({
color: 'orange',
borderRadius: '5px',
borderColor: '#ccc',
padding: '10px',
fontSize: '16px',
height: '20px',
lineHeight: '20px',
backgroundColor: 'rgba(0,0,0,0)',
border: '0',
fontFamily: '微软雅黑'
});
map.addOverlay(label1);
}
}
function showPic() {
// console.log(that.WaringList, 'that.WaringList');
that.WaringList.forEach(item => {
//
var myIcon = new BMap.Icon("pbImg/企业icon悬浮.png", new BMap.Size(80, 80));
myIcon.setImageUrl("pbImg/企业icon悬浮.png")
// Marker使
var marker = new BMap.Marker(new BMap.Point(item.longitude, item.latitude), {
icon: myIcon
});
// console.log(marker, 'marker');
map.addOverlay(marker);
marker.addEventListener("click", function () {
that.$emit('showCompanyData', item)
});
})
//that.flexPoint()
console.log(that.VideoInfoList, 'that.VideoInfoList');
that.VideoInfoList.forEach(item => {
//
var myIcon = new BMap.Icon("pbImg/监控icon悬浮.png", new BMap.Size(80, 80));
myIcon.setImageUrl("pbImg/监控icon悬浮.png")
// Marker使
var marker = new BMap.Marker(new BMap.Point(item.longitude, item.latitude), {
icon: myIcon
});
// console.log(marker, 'marker');
map.addOverlay(marker);
marker.addEventListener("click", function () {
that.$emit('showCameraData', item)
});
})
}
},
flexPoint() {
var pointAll = document.querySelectorAll('.BMap_Marker.BMap_noprint')
console.log(pointAll, 'pointAll');
}
}
}
</script>
<style scoped lang="less">
.bmap {
width: 100%;
height: 100%;
border: 1px solid #000000;
}
// /deep/ .BMap_Marker {
// z-index: 1000;
// background: url('../../../public/dongtai/awrni.png') no-repeat !important;
// background-size: 100% 100% !important;
// }
.fanhui {
display: inline-block;
width: 50px;
height: 20px;
position: absolute;
left: 49%;
bottom: 30px;
display: flex;
justify-content: center;
align-items: center;
z-index: 50;
}
</style>

@ -14,7 +14,7 @@
<div class="shu"></div>
<el-menu-item index="3" route="/home/closeLoopDispose">闭环处置</el-menu-item>
<div class="shu"></div>
<el-menu-item index="4" route="/home">要素资源</el-menu-item>
<el-menu-item index="4" route="/home/factorResources">要素资源</el-menu-item>
<div class="shu"></div>
<el-menu-item index="5" route="/home/enterpriseArchives">企业档案</el-menu-item>
<div class="shu"></div>

@ -15,7 +15,6 @@
<div class="yujingTop">
<div class="companyName">{{ item.companyName }}</div>
<div class="impBtnList">
<div :class="{ 'shewei': a == '剧毒' || a == '易制毒', 'zhongdian': a == '消防重点' || a == '所管消防', 'zhibao': a == '放射源' || a == '易制爆', 'zhian': a == '治安重点' || a == '创安单位' }"
v-for="a in item.companyTypeList" :key="a">{{ a }}
</div>
@ -218,8 +217,6 @@ export default {
border-bottom: 1px solid #495461;
height: 54px;
width: 100%;
display: flex;
align-items: center;
padding: 0 14px;
@ -229,7 +226,7 @@ export default {
letter-spacing: 1.14px;
font-weight: 500;
margin-right: 20px;
width: 220px;
width: 100%;
//white-space: nowrap; //
}
@ -241,7 +238,7 @@ export default {
align-items: center;
overflow: hidden;
white-space: nowrap; //
width: 270px;
text-overflow: ellipsis; //...
.shewei {

@ -47,7 +47,7 @@ export default {
// console.log(this.WaringList, 'waringList');
let that = this
map.centerAndZoom(new BMap.Point(this.dongtaiPoint[0], this.dongtaiPoint[1]), 13);
// map.setMinZoom(11)
map.setMinZoom(12)
map.setMaxZoom(19)
map.enableScrollWheelZoom(true);
// hjrequest({
@ -172,13 +172,13 @@ export default {
label.setPosition(new BMap.Point(item.longitude, item.latitude));
label.setOffset(new BMap.Size(130, -10))
label.setStyle({ width: '340px', height: '238px', background: 'url(pbImg/气泡弹窗1.png) no-repeat', backgroundSize: '100% 100%', border: '0', color: '#fff' })
label.setStyle({ width: '340px', height: '238px', background: 'url(pbImg/气泡弹窗1.png) no-repeat', backgroundSize: '100% 100%', border: '0', color: '#fff', zIndex: 2000000000, })
label.setContent(`
<div style='width:100%;display:flex;justify-content: space-between;align-items: center;'> <h4 style='margin:12px;font-size: 14px;color: #FFE6D9;'>${item.companyName}</h4><div class='closeBtn' style='background: url(pbImg/关闭.png) no-repeat;width:20px;height:20px;background-size: 100% 100%;margin-right:10px;"'></div></div>
<div style='width:100%;display:flex;justify-content: space-between;align-items: center;'> <h4 style='margin:12px;font-size: 14px;color: #FFE6D9;overflow: hidden;text-overflow: ellipsis;white-space: nowrap; '>${item.companyName}</h4><div class='closeBtn' style='background: url(pbImg/关闭.png) no-repeat;width:20px;height:20px;background-size: 100% 100%;margin-right:10px;"'></div></div>
<div style='margin:0 auto;font-size: 14px;width:316px;height:108px;padding:0 12px;background: rgba(108,128,151,0.20);border: 1px solid rgba(73,84,97,1);'>
<h4 style='height:33%;opacity: 0.8;margin:0;line-height:38px;font-weight:300;'><span style="color:#D0DEEE;">一级指标</span>${item.levelIndexOne}</h4>
<h4 style='height:33%;opacity: 0.8;margin:0;line-height:38px;font-weight:300;'><span style="color:#D0DEEE;">预警指标</span>"${item.levelIndexThree}"异常</h4>
<h4 style='height:33%;opacity: 0.8;margin:0;line-height:38px;font-weight:300;'><span style="color:#D0DEEE;">预警时间</span>${item.alarmTime}</h4>
<h4 style='height:33%;opacity: 0.8;margin:0;line-height:38px;font-weight:300;'><span style="color:#D0DEEE;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">一级指标</span>${item.levelIndexOne}</h4>
<h4 style='height:33%;opacity: 0.8;margin:0;line-height:38px;font-weight:300;'><span style="color:#D0DEEE;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">预警指标</span>"${item.levelIndexThree}"异常</h4>
<h4 style='height:33%;opacity: 0.8;margin:0;line-height:38px;font-weight:300;'><span style="color:#D0DEEE;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;">预警时间</span>${item.alarmTime}</h4>
<div class='zhuanchuzhiBtn' style='width:80px;height:34px;font-size: 14px;
color: #FFFFFF;
text-align:center;

@ -231,7 +231,8 @@ export default {
position: relative;
padding: 10px 8px;
background: rgba(0, 0, 0, 0);
z-index: 1;
z-index: 200;
cursor: pointer;
.caseDetail {
width: 100%;

@ -77,7 +77,7 @@
<el-tab-pane label="年度" name="year"></el-tab-pane>
</el-tabs>
<div class="second" v-if="topSortData.length > 1">
<div class="second" v-if="topSortData.length > 1" @click="toCanban(1)">
<div class="mingci">
<img src="../../assets/safetyIndex/第二名.png" alt="">&nbsp;
总得分&nbsp;<span>{{ topSortData[1].score }}</span>
@ -96,7 +96,7 @@
</div>
</div>
</div>
<div class="third" v-if="topSortData.length > 2">
<div class="third" v-if="topSortData.length > 2" @click="toCanban(0)">
<div class="mingci">
<img src="../../assets/safetyIndex/第三名.png" alt="">&nbsp;
总得分&nbsp;<span>{{ topSortData[2].score }}</span>
@ -114,7 +114,7 @@
</div>
</div>
</div>
<div class="first" v-if="topSortData.length">
<div class="first" v-if="topSortData.length" @click="toCanban(2)">
<div class="mingci">
<img src="../../assets/safetyIndex/第一名.png" alt="">&nbsp;
总得分&nbsp;<span>{{ topSortData[0].score }}</span>
@ -185,11 +185,17 @@ export default {
goMore() {
this.$router.push({ path: '/home/enterpriseRank' })
},
toCanban(index) {
sessionStorage.setItem('companyID', this.topSortData[index].companyId)
this.$router.push({
path: '/home/companyCanban',
})
},
toArchives(val) {
sessionStorage.setItem('companyID', val.companyId)
sessionStorage.setItem('companyName', val.companyName)
this.$router.push({
name: 'archives',
path: '/home/companyCanban',
})
}
},
@ -440,6 +446,7 @@ export default {
padding: 5px 27px 12px 10px;
box-sizing: border-box;
text-align: center;
cursor: pointer;
.mingci {
height: 18px;
@ -514,6 +521,7 @@ export default {
padding: 5px 10px 12px 27px;
box-sizing: border-box;
text-align: center;
cursor: pointer;
.mingci {
height: 18px;
@ -593,6 +601,7 @@ export default {
background-size: 100% 100%;
padding: 10px 16px 16px;
text-align: center;
cursor: pointer;
.mingci {
height: 22px;

@ -105,7 +105,12 @@
</el-table-column>
<el-table-column show-overflow-tooltip prop="goodsTypeCn" label="物品类型" width="100">
</el-table-column>
<el-table-column show-overflow-tooltip prop="quantity" label="总量t" width="100">
<el-table-column show-overflow-tooltip label="总量t" width="100">
<template slot-scope="scope">
<div>
{{ (scope.row.quantity - 0).toFixed(2) }}
</div>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip prop="companyName" label="隶属企业">
</el-table-column>
@ -457,7 +462,7 @@ export default {
background: url('~@/assets/head/编组 3021112.png') no-repeat;
background-size: 100% 100%;
width: 1241px;
height: 640px;
height: 660px;
position: relative;
.el-dialog__title {

@ -68,6 +68,8 @@
</el-table-column>
<el-table-column show-overflow-tooltip prop="visitContactInfo" label="联系方式">
</el-table-column>
<el-table-column show-overflow-tooltip prop="visitCompany" label="所属企业" width="180">
</el-table-column>
<el-table-column show-overflow-tooltip prop="visitTime" label="访问时间">
</el-table-column>
<el-table-column show-overflow-tooltip prop="contactPerson" label="对接人" width="90">

Loading…
Cancel
Save