曹煤炭地图首页统计页与港务局监管端显示内容同步,去除港务局监管端曹妃甸港门口门禁人员、车辆闸机显示的id编号。修复港务局监管端地图曹煤炭港不显示消防管控-消防救援队问题。因曹煤炭港没有气象站数据,取消港务局监管端曹煤炭港气象站按钮显示,修复危险作业-受限空间作业数据对接丢失坐标字段导致地图不显示数据的问题。危险作业和重点工程数据对接完成后,调试港务局监管端地图曹煤炭港数据显示。

cmt地图合并
songwenxuan 2024-02-26 17:47:10 +08:00
parent adafcfd115
commit aeb034cb27
4 changed files with 588 additions and 12 deletions

View File

@ -0,0 +1,560 @@
<template>
<div class="gangkou_index">
<div class="block2">
<layout-title title="风险辨识管控"/>
<div class="options">
<div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<img :src="item.img" class="img_top" alt="">
<img class="img_bottom" src="../../../assets/map/gangkou_index/bg1.png" alt="">
<div class="label">{{ item.label }}</div>
<div class="count">
<count-to :start-val="0" :end-val="item.count" :duration="3600"/>
</div>
</div>
</div>
</div>
<div class="block3">
<layout-title title="人员定位信息"/>
<div class="options">
<div v-for="(item,index) in block3OptionsList" :key="index" class="option">
<img :src="item.img" class="img_top" alt="">
<img class="img_bottom" src="../../../assets/map/gangkou_index/img1.png" alt="">
<div class="label">{{ item.label }}</div>
<div class="count">
<count-to :start-val="0" :end-val="item.count" :duration="3600"/>
</div>
</div>
</div>
</div>
<div class="block4">
<layout-title title="进出记录管理"/>
<div class="options">
<div v-for="(item,index) in block4OptionsList" :key="index" class="option">
<div class="title">{{ item.title }}</div>
<div class="items">
<div v-for="(item1,index1) in item.list" :key="index1" class="item">
<div class="label">
{{ item1.label }}<count-to :start-val="0" :end-val="item1.count" :duration="3600"/>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="block1">
<layout-title title="气象监测数据"/>
<div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="title">{{ item.title }}</div>
<div class="circular">
<img :src="item.img" alt="">
</div>
<div class="label">
{{ item.count }}
</div>
</div>
</div>
</div>
</div>
</template>
<script>
import layoutTitle from './title.vue'
import CountTo from 'vue-count-to'
import { requestFN } from '@/utils/request'
export default {
components: {
layoutTitle,
CountTo
},
props: {
corpInfoId: {
type: String,
default: ''
},
gangkou: {
type: String,
default: ''
}
},
data() {
return {
block1OptionsList: [
{
title: '风速监测',
img: require('../../../assets/map/qixiang/ico1.png'),
count: 0
},
{
title: '温度监测',
img: require('../../../assets/map/qixiang/ico2.png'),
count: 0
},
{
title: '风向监测',
img: require('../../../assets/map/qixiang/ico3.png'),
count: 0
},
{
title: '大气湿度',
img: require('../../../assets/map/qixiang/ico4.png'),
count: 0
}
],
block2OptionsList: [
{
label: '风险单元数',
img: require('../../../assets/map/gangkou_index/ico1.png'),
count: 0
},
{
label: '辨识部位数',
img: require('../../../assets/map/gangkou_index/ico2.png'),
count: 0
},
{
label: '风险因素数',
img: require('../../../assets/map/gangkou_index/ico3.png'),
count: 0
}
],
block3OptionsList: [
{
label: '公司人员数',
img: require('../../../assets/map/gangkou_index/img1_on.png'),
count: 0
},
{
label: '部门人员数',
img: require('../../../assets/map/gangkou_index/img2_on.png'),
count: 0
},
{
label: '定位在线人员数',
img: require('../../../assets/map/gangkou_index/img3_on.png'),
count: 0
}
],
block4OptionsList: [
{
title: '进出人员',
list: [
{
label: '今日进堆料场人员数',
count: 0
},
{
label: '今日出堆料场人员数',
count: 0
}
]
},
{
title: '进出车辆',
list: [
{
label: '今日进堆料场车辆数',
count: 0
},
{
label: '今日出堆料场车辆数',
count: 0
}
]
}
]
}
},
created() {
this.getRiskIdentificationCount()
this.getPersonPositioningCount()
this.getDoorManagement()
this.start()
this.getMeteorologicalinfo()
},
beforeDestroy() {
console.log('定时器关闭')
clearInterval(this.timer)
},
methods: {
//
getMeteorologicalinfo() {
this.listLoading = true
requestFN(
'/map/listbymeteorological',
{
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
this.listLoading = false
this.block1OptionsList[0].count = data.pd.WINDSPEED || '-'
this.block1OptionsList[1].count = data.pd.TEMPERATURE || '-'
this.block1OptionsList[2].count = this.calculateWindDirection(data.pd.WINDDIRECTION)
// this.block1OptionsList[3].count = data.pd.HUMIDITY || '-'
}).catch((e) => {
this.listLoading = false
})
},
calculateWindDirection(angle) {
const arr = [
{
directions: '北',
minAngle: '348.76',
maxAngle: '11.25'
},
{
directions: '北东北',
minAngle: '11.26',
maxAngle: '33.75'
},
{
directions: '东北',
minAngle: '33.76',
maxAngle: '56.25'
},
{
directions: '东东北',
minAngle: '56.26',
maxAngle: '78.75'
},
{
directions: '东',
minAngle: '78.76',
maxAngle: '101.25'
},
{
directions: '东东南',
minAngle: '101.26',
maxAngle: '123.75'
},
{
directions: '东南',
minAngle: '123.76',
maxAngle: '146.25'
},
{
directions: '南东南',
minAngle: '146.26',
maxAngle: '168.75'
},
{
directions: '南',
minAngle: '168.76',
maxAngle: '191.25'
},
{
directions: '南西南',
minAngle: '191.26',
maxAngle: '213.75'
},
{
directions: '西南',
minAngle: '213.76',
maxAngle: '236.25'
},
{
directions: '西西南',
minAngle: '236.26',
maxAngle: '258.75'
},
{
directions: '西',
minAngle: '258.76',
maxAngle: '281.25'
},
{
directions: '西西北',
minAngle: '281.26',
maxAngle: '303.75'
},
{
directions: '西北',
minAngle: '303.76',
maxAngle: '326.25'
},
{
directions: '北西北',
minAngle: '326.26',
maxAngle: '348.75'
}
]
for (let i = 0; i < arr.length; i++) {
if (+angle >= +arr[i].minAngle && +angle <= +arr[i].maxAngle) {
return arr[i].directions + '风'
}
}
return '静风'
},
//
start() {
console.log('定时器开启')
this.timer = setInterval(this.getMeteorologicalinfo, 10000) // : ;
},
over() {
clearInterval(this.timer)
},
getDoorManagement() {
requestFN(
'/map/getDoorManagement',
{
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
this.block4OptionsList[1].list[0].count = data.varList[1].list[2].count
this.block4OptionsList[1].list[1].count = data.varList[1].list[3].count
// this.block4OptionsList[1].list[2].count = data.data.carOnSiteCount
this.block4OptionsList[0].list[0].count = data.varList[1].list[1].count
this.block4OptionsList[0].list[1].count = datadata.varList[1].list[0].count
})
},
getRiskIdentificationCount() {
requestFN(
'/map/getRiskIdentificationCount',
{
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
this.block2OptionsList[0].count = data.riskIdentificationCount[0]
this.block2OptionsList[1].count = data.riskIdentificationCount[1]
this.block2OptionsList[2].count = data.riskIdentificationCount[2]
})
},
getPersonPositioningCount() {
requestFN(
'/map/getPersonPositioningCount',
{
CORPINFO_ID: this.corpInfoId,
GANGKOU: this.gangkou
}
).then((data) => {
this.block3OptionsList[0].count = data.personPositioningCount[0]
this.block3OptionsList[1].count = data.personPositioningCount[1]
})
}
}
}
</script>
<style lang="scss" scoped>
.gangkou_index {
.block1 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
.title {
background-image: url("../../../assets/map/qixiang/label.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 88px;
height: 25px;
font-size: 12px;
line-height: 25px;
text-align: center;
color: #fff;
}
.circular {
margin-top: 15px;
background-image: url("../../../assets/map/qixiang/imgbg.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 67px;
height: 48px;
text-align: center;
padding-top: 13px;
img {
width: 30px;
height: 30px;
margin-top: -20px;
animation: slideY 2s infinite;
}
}
.label {
margin-top: 5px;
font-size: 12px;
color: #fff;
}
}
}
}
.block2 {
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 10px 40px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
.img_top {
position: absolute;
width: 25px;
height: 25px;
margin-top: 11px;
animation: slideY 2s infinite;
}
.img_bottom {
position: absolute;
width: 50px;
height: 50px;
}
.label {
margin-top: 60px;
color: #fff;
font-size: 14px;
}
.count {
background-image: linear-gradient(bottom, #5bb4f7, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-size: 26px;
margin-top: 0px;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
}
}
}
.block3 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
display: flex;
justify-content: space-between;
padding: 0 40px 10px 40px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
.img_top {
position: absolute;
width: 75px;
height: 75px;
animation: slideY 2s infinite;
}
.img_bottom {
position: absolute;
width: 75px;
height: 75px;
top: 5px;
}
.label {
margin-top: 80px;
color: #fff;
font-size: 14px;
}
.count {
background-image: linear-gradient(bottom, #5bb4f7, #ffffff);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-weight: bold;
font-size: 26px;
margin-top: 0px;
font-family: "PingFang SC", "Helvetica Neue", "Hiragino Sans GB", "Segoe UI", "Microsoft YaHei", "微软雅黑", sans-serif;
}
}
}
}
.block4 {
margin-top: 10px;
width: 410px;
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
.options {
padding: 10px 15px 10px 15px;
border: 1px solid;
border-image: linear-gradient(to bottom, rgba(58, 122, 149, 0), rgba(58, 122, 149, 1)) 1;
border-top: none;
.option {
.title {
background-image: url("../../../assets/map/menjin/title.png");
background-size: 100% 100%;
background-repeat: no-repeat;
width: 113px;
height: 26px;
font-size: 14px;
line-height: 26px;
text-align: center;
color: #fff;
}
.items {
display: flex;
flex-wrap: wrap;
margin-bottom: 10px;
.item {
margin-top: 10px;
font-size: 12px;
color: #fff;
flex-basis: 50%;
}
}
}
}
}
}
@keyframes slideY {
0% {
transform: translateY(0);
}
50% {
transform: translateY(5px);
}
100% {
transform: translateY(0);
}
}
</style>

View File

@ -26,16 +26,16 @@
<hotworkFirst v-if="type === 'HOTWORK' && corpInfoId === '035958e685cf4850bc40151c5e0617a6' " :id="id" :type="type" :gangkou="gangkou"/> <hotworkFirst v-if="type === 'HOTWORK' && corpInfoId === '035958e685cf4850bc40151c5e0617a6' " :id="id" :type="type" :gangkou="gangkou"/>
<!--秦港一公司 动火作业 详细页面 end--> <!--秦港一公司 动火作业 详细页面 end-->
<!--其他公司 动火作业 详细页面 start--> <!--其他公司 动火作业 详细页面 start-->
<hotwork v-if="type === 'HOTWORK'&& corpInfoId !== '635917e77af8461691d5da5507b56347' && corpInfoId !== '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" :gangkou="gangkou"/> <hotwork v-if="type === 'HOTWORK' || type === 'HOTWORK00005' && corpInfoId !== '635917e77af8461691d5da5507b56347' && corpInfoId !== '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" :gangkou="gangkou"/>
<!--其他公司 动火作业 详细页面 end--> <!--其他公司 动火作业 详细页面 end-->
<!--其他七项作业共用一个详细页面 start--> <!--其他七项作业共用一个详细页面 start-->
<confinedspace v-if="type === 'CONFINEDSPACE' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/> <confinedspace v-if="type === 'CONFINEDSPACE' || type === 'CONFINEDSPACE00005' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/>
<electricityOrder v-if="type === 'ELECTRICITY' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/> <electricityOrder v-if="type === 'ELECTRICITY' || type === 'ELECTRICITY00005' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/>
<highworkOrder v-if="type === 'HIGHWORK' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/> <highworkOrder v-if="type === 'HIGHWORK' || type === 'HIGHWORK00005' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/>
<hoistingOrder v-if="type === 'HOISTING' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/> <hoistingOrder v-if="type === 'HOISTING' || type === 'HOISTING00005' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/>
<blindboardOrder v-if="type === 'BLINDBOARD' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/> <blindboardOrder v-if="type === 'BLINDBOARD' || type === 'BLINDBOARD00005' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/>
<cutroadOrder v-if="type === 'CUTROAD' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/> <cutroadOrder v-if="type === 'CUTROAD' || type === 'CUTROAD00005' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/>
<breakgroundOrder v-if="type === 'BREAKGROUND' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/> <breakgroundOrder v-if="type === 'BREAKGROUND' || type === 'BREAKGROUND00005' && corpInfoId !== '635917e77af8461691d5da5507b56347'" :id="id" :type="type" :gangkou="gangkou"/>
<!--其他七项作业共用一个详细页面 end--> <!--其他七项作业共用一个详细页面 end-->
<!--曹妃甸东 八项作业 曹实业详细页面 start--> <!--曹妃甸东 八项作业 曹实业详细页面 start-->
<hotworkCfdD v-if="type === 'HOTWORK'&& corpInfoId === '635917e77af8461691d5da5507b56347'" :id="id" :type="type"/> <hotworkCfdD v-if="type === 'HOTWORK'&& corpInfoId === '635917e77af8461691d5da5507b56347'" :id="id" :type="type"/>
@ -54,7 +54,7 @@
<peoplePositionOne v-if="type === 'peoplePositionOne' && corpInfoId !== '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" /> <peoplePositionOne v-if="type === 'peoplePositionOne' && corpInfoId !== '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" />
<peoplePositionYGS v-if="type === 'peoplePositionOne' && corpInfoId === '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" /> <peoplePositionYGS v-if="type === 'peoplePositionOne' && corpInfoId === '035958e685cf4850bc40151c5e0617a6'" :id="id" :type="type" />
<!-- 重点工程 start --> <!-- 重点工程 start -->
<outSourceInfo v-if="type === 'PROJECT'" :id="id" :type="type" /> <outSourceInfo v-if="type === 'PROJECT' || type === 'PROJECT00005'" :id="id" :type="type" />
<outSourceVideoInfo v-if="type === 'VIDEO'" :id="id" :type="type" /> <outSourceVideoInfo v-if="type === 'VIDEO'" :id="id" :type="type" />
<!-- 重点工程 end --> <!-- 重点工程 end -->
</el-dialog> </el-dialog>

View File

@ -2,7 +2,7 @@
<div class="app-container print-work"> <div class="app-container print-work">
<div class="level-title"> <div class="level-title">
<h1>卡口信息</h1> <h1>卡口信息</h1>
<div class="level-btns">卡口编号:{{ id }}</div> <!-- <div class="level-btns">卡口编号:{{ id }}</div>-->
</div> </div>
<table class="table-ui"> <table class="table-ui">
<tr> <tr>

View File

@ -25,7 +25,7 @@
<info v-if="!gangkouActive"/> <info v-if="!gangkouActive"/>
<gangkou-index v-if="gangkouActive === '00003' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && !CORP_INFO_ID" :area="area"/> <gangkou-index v-if="gangkouActive === '00003' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && !CORP_INFO_ID" :area="area"/>
<fengongsi-index <fengongsi-index
v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00002' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && CORP_INFO_ID" v-if="gangkouActive && gangkouActive !== '00004' && gangkouActive !== '00005' && gangkouActive !== '00002' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && CORP_INFO_ID"
:corp-info-id="CORP_INFO_ID" :corp-info-id="CORP_INFO_ID"
:gangkou="gangkouActive" :gangkou="gangkouActive"
/> />
@ -34,6 +34,11 @@
:corp-info-id="CORP_INFO_ID" :corp-info-id="CORP_INFO_ID"
:gangkou="gangkouActive" :gangkou="gangkouActive"
/> />
<cmt-index
v-if="gangkouActive && gangkouActive === '00005' && bottomOptionsIndex === '' && CORP_INFO_ID"
:corp-info-id="CORP_INFO_ID"
:gangkou="gangkouActive"
/>
<czksIndex <czksIndex
v-if="gangkouActive && gangkouActive === '00002' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && CORP_INFO_ID" v-if="gangkouActive && gangkouActive === '00002' && (bottomOptionsIndex === '' || bottomOptionsIndex === 5) && CORP_INFO_ID"
:corp-info-id="CORP_INFO_ID" :corp-info-id="CORP_INFO_ID"
@ -248,6 +253,7 @@ import gangkouIndex from './components/gangkou_index.vue'
import fengongsiIndex from './components/fengongsi_index.vue' import fengongsiIndex from './components/fengongsi_index.vue'
import caofeidianIndex from './components/caofeidian_index.vue' import caofeidianIndex from './components/caofeidian_index.vue'
import czksIndex from './components/czks_index.vue' import czksIndex from './components/czks_index.vue'
import cmtIndex from './components/cmt_index.vue'
import menjinCzks from './components/menjinCzks.vue' import menjinCzks from './components/menjinCzks.vue'
import renyuanCzks from './components/renyuanCzks.vue' import renyuanCzks from './components/renyuanCzks.vue'
import renyuanCmt from './components/renyuanCmt.vue' import renyuanCmt from './components/renyuanCmt.vue'
@ -299,6 +305,7 @@ export default {
AnquanCfd, AnquanCfd,
czksIndex, czksIndex,
menjinCzks, menjinCzks,
cmtIndex,
renyuanCzks, renyuanCzks,
renyuanCmt, renyuanCmt,
// navigation, // navigation,
@ -3019,12 +3026,21 @@ export default {
if (item && item.list && item.list.length > 0) { if (item && item.list && item.list.length > 0) {
if (item.label === '消防管控') { if (item.label === '消防管控') {
if (e.label === '消防救援队') { if (e.label === '消防救援队') {
if (this.gangkouActive === '00005') {
return true
}else {
return !(this.CORP_INFO_ID && this.CORP_INFO_ID !== '') return !(this.CORP_INFO_ID && this.CORP_INFO_ID !== '')
} }
}
if (e.label !== '消防救援队') { if (e.label !== '消防救援队') {
return (this.CORP_INFO_ID && this.CORP_INFO_ID !== '') return (this.CORP_INFO_ID && this.CORP_INFO_ID !== '')
} }
} }
if (item.label === '气象监测') {
if (e.label === '气象站') {
return this.gangkouActive !== '00005'
}
}
} }
const CORP_INFO_ID = this.CORP_INFO_ID const CORP_INFO_ID = this.CORP_INFO_ID
if (e.containAuthorization.length === 0) return true if (e.containAuthorization.length === 0) return true