Merge branch 'limingyu-20240425-消防和重点工程更新' into pet

pet_li_6.6
limingyu 2024-05-07 11:06:39 +08:00
commit 9aad2a8a8c
13 changed files with 4623 additions and 102 deletions

View File

@ -9,7 +9,7 @@
<!-- <link href="./static/map/cesium109/Widgets/widgets.css" rel="stylesheet"/>--> <!-- <link href="./static/map/cesium109/Widgets/widgets.css" rel="stylesheet"/>-->
<link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.16.0/skins/default/aliplayer-min.css" /> <link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.16.0/skins/default/aliplayer-min.css" />
<script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.16.0/aliplayer-min.js"></script> <script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.16.0/aliplayer-min.js"></script>
<script type="text/javascript" charset="utf-8" src="http://10.30.20.54:8093/static/imosPlayer.min.js"></script> <!-- <script type="text/javascript" charset="utf-8" src="http://10.30.20.54:8093/static/imosPlayer.min.js"></script>-->
<script type="text/javascript" charset="utf-8" src="https://api.tianditu.gov.cn/api?v=4.0&tk=e8a16137fd226a62a23cc7ba5c9c78ce"></script> <script type="text/javascript" charset="utf-8" src="https://api.tianditu.gov.cn/api?v=4.0&tk=e8a16137fd226a62a23cc7ba5c9c78ce"></script>
<script type="text/javascript" src="./static/map/cesium91/CesiumUnminified/Cesium.js"></script> <script type="text/javascript" src="./static/map/cesium91/CesiumUnminified/Cesium.js"></script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -68,7 +68,11 @@
<el-table-column v-if="otherShow" prop="HIDDEN_COUNT" label="发现隐患数量" /> <el-table-column v-if="otherShow" prop="HIDDEN_COUNT" label="发现隐患数量" />
<el-table-column v-if="otherShow" prop="PUNISH_COUNT" label="违约处罚次数" /> <el-table-column v-if="otherShow" prop="PUNISH_COUNT" label="违约处罚次数" />
<el-table-column v-if="otherShow" prop="AMOUT_SUM" label="违约处罚金额(元)" /> <el-table-column v-if="otherShow" prop="AMOUT_SUM" label="违约处罚金额(元)" />
<el-table-column v-if="otherShow" prop="VIDEO_COUNT" label="包含视频监控数" /> <el-table-column v-if="otherShow" prop="VIDEO_COUNT" label="包含视频监控数(在线视频数)" width="200">
<template slot-scope="{row}">
<span>{{ row.VIDEO_COUNT }} ({{ row.ONLINE_COUNT }})</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="100"> <el-table-column label="操作" align="center" width="100">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-button type="success" icon="el-icon-view" size="mini" @click="goDetail(row.CORPINFO_ID)"></el-button> <el-button type="success" icon="el-icon-view" size="mini" @click="goDetail(row.CORPINFO_ID)"></el-button>

View File

@ -40,11 +40,11 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="消防点位数" align="center"> <el-table-column label="消防点位数(已标点数)" align="center">
<template slot-scope="{row}"> <template slot-scope="{row}">
<div class="link-type" @click="goControlRoomInfo({CORPINFO_ID:row.CORPINFO_ID,TYPE:'FirePoint'})"> <div class="link-type" @click="goControlRoomInfo({CORPINFO_ID:row.CORPINFO_ID,TYPE:'FirePoint'})" style="display: inline-block">
{{ row.xiaoFangDianWeiNum }} {{ row.xiaoFangDianWeiNum }}
</div> </div>({{ row.xiaoFangDianWeiBiaoDianNum }})
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="消防器材数" align="center"> <el-table-column label="消防器材数" align="center">

View File

@ -145,12 +145,13 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="OUTSOURCED_CREATOR_NAME" label="创建人" show-overflow-tooltip /> <el-table-column prop="OUTSOURCED_CREATOR_NAME" label="创建人" show-overflow-tooltip />
<el-table-column label="视频数量" show-overflow-tooltip> <el-table-column label="视频数量(在线数)" show-overflow-tooltip width="150">
<template slot-scope="{row}"> <template slot-scope="{row}">
<span v-if="row.VIDEO_COUNT != 0"> <span v-if="row.VIDEO_COUNT != 0">
<a style="color: #1e9fff;text-decoration:underline" @click="clickVideoDetail(row.OUTSOURCED_ID)">{{ row.VIDEO_COUNT }}</a> <a style="color: #1e9fff;text-decoration:underline" @click="clickVideoDetail(row.OUTSOURCED_ID)">{{ row.VIDEO_COUNT }}</a>
</span> </span>
<span v-else>{{ row.VIDEO_COUNT }}</span> <span v-else>{{ row.VIDEO_COUNT }}</span>
<span>({{ row.VIDEO_ONLINE_COUNT }})</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="400"> <el-table-column label="操作" align="center" width="400">

View File

@ -145,7 +145,11 @@
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="UNITS_NAME" label="施工相关方" width="250" show-overflow-tooltip /> <el-table-column prop="UNITS_NAME" label="施工相关方" width="250" show-overflow-tooltip />
<el-table-column prop="VIDEO_COUNT" label="视频个数" /> <el-table-column prop="VIDEO_COUNT" label="视频个数(在线数量)" >
<template slot-scope="{row}">
<span>{{ row.VIDEO_COUNT }}({{ row.VIDEO_ONLINE_COUNT }})</span>
</template>
</el-table-column>
<el-table-column prop="STATE" label="状态"> <el-table-column prop="STATE" label="状态">
<template slot-scope="{row}"> <template slot-scope="{row}">
<span v-if="row.STATE == -1"></span> <span v-if="row.STATE == -1"></span>

View File

@ -50,6 +50,11 @@
<span v-else></span> <span v-else></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="ONLINE_STATUS" label="是否在线" width="100">
<template slot-scope="{row}">
<span>{{ row.ONLINE_STATUS }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="left" width="500"> <el-table-column label="操作" align="left" width="500">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-button :disabled="STATE == 2" type="success" icon="el-icon-caret-right" size="mini" @click="showVideo(row)"></el-button> <el-button :disabled="STATE == 2" type="success" icon="el-icon-caret-right" size="mini" @click="showVideo(row)"></el-button>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="shipin"> <div class="shipin">
<div class="block1"> <div class="block1">
<layout-title title="视频状态"/> <layout-title title="视频定位"/>
<div class="options"> <div class="options">
<div class="option"> <div class="option">
<div class="leftimg"/> <div class="leftimg"/>
@ -15,7 +15,7 @@
</div> </div>
</div> </div>
<div class="block2"> <div class="block2">
<layout-title title="区域报警数"/> <layout-title title="重点工程"/>
<div class="options"> <div class="options">
<div v-for="(item,index) in block2OptionsList" :key="index" class="option"> <div v-for="(item,index) in block2OptionsList" :key="index" class="option">
<div class="circular"><img :src="item.img" alt=""></div> <div class="circular"><img :src="item.img" alt=""></div>
@ -26,26 +26,25 @@
</div> </div>
</div> </div>
</div> </div>
<div class="block3"> <!-- <div class="block3">-->
<layout-title title="报警记录"/> <!-- <layout-title title="报警记录"/>-->
<div class="content"> <!-- <div class="content">-->
<!-- <div class="table">-->
<div class="table"> <!-- <div class="tr">-->
<div class="tr"> <!-- <div class="td">防区</div>-->
<div class="td">防区</div> <!-- <div class="td">摄像头名称</div>-->
<div class="td">摄像头名称</div> <!-- <div class="td">时间</div>-->
<div class="td">时间</div> <!-- </div>-->
</div> <!-- <div class="scroll">-->
<div class="scroll"> <!-- <div v-for="(item,index) in block3List" :key="index" class="tr">-->
<div v-for="(item,index) in block3List" :key="index" class="tr"> <!-- <div class="td line1">{{ item.region }}</div>-->
<div class="td line1">{{ item.region }}</div> <!-- <div class="td">{{ item.name }}</div>-->
<div class="td">{{ item.name }}</div> <!-- <div class="td">{{ item.time }}</div>-->
<div class="td">{{ item.time }}</div> <!-- </div>-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</div>
</div> </div>
</template> </template>
@ -79,17 +78,25 @@ export default {
{ {
lable: '视频总数', lable: '视频总数',
count: 0 count: 0
},
{
lable: '在线数量',
count: 0
},
{
lable: '离线数量',
count: 0
} }
], ],
block2OptionsList: [ block2OptionsList: [
{ {
img: require('../../../assets/map/bianjie/img1.png'), img: require('../../../assets/map/gangkou_index/point/ico15.png'),
label: '码头', label: '重点工程总数',
count: 0 count: 0
}, },
{ {
img: require('../../../assets/map/bianjie/img2.png'), img: require('../../../assets/map/gangkou_index/point/ico30.png'),
label: '油罐区域', label: '重点工程开工数量',
count: 0 count: 0
} }
], ],
@ -163,33 +170,70 @@ export default {
this.initgetTable() this.initgetTable()
}, },
methods: { methods: {
//
// initCount() {
// requestFN(
// '/map/mapPlatformelectronic/listAll',
// {
// CORPINFO_ID: this.corpInfoId,
// AREA: this.area
// }
// ).then((data) => {
// this.block1OptionsList[0].count = data.allForMap
// })
// },
// //
initCount() { initCount() {
requestFN( requestFN(
'/map/mapPlatformelectronic/listAll', '/map/keyProject/listAllLocation',
{ {
CORPINFO_ID: this.corpInfoId, CORPINFO_ID: this.corpInfoId,
AREA: this.area AREA: this.area,
TYPE: 'VIDEO',
GANGKOU: this.gangkou
} }
).then((data) => { ).then((data) => {
this.block1OptionsList[0].count = data.allForMap this.block1OptionsList[0].count = data.varList.length
data.varList.forEach((item) => {
if (item.ONLINE_STATUS === '0') {
this.block1OptionsList[1].count++
} else {
this.block1OptionsList[2].count++
}
})
}) })
}, },
//
// initgetTable() {
// requestFN(
// '/map/mapPlatformelectronic/listAllByArea',
// {
// CORPINFO_ID: this.corpInfoId,
// AREA: this.area
// }
// ).then((data) => {
// data.varList.forEach(item => {
// if (item.SUOSHUQUYU === '2') {
// this.block2OptionsList[0].count = item.co
// } else if (item.SUOSHUQUYU === '1') {
// this.block2OptionsList[1].count = item.co
// }
// })
// })
// }
// //
initgetTable() { initgetTable() {
requestFN( requestFN(
'/map/mapPlatformelectronic/listAllByArea', '/outsourced/listForCount',
{ {
CORPINFO_ID: this.corpInfoId, CORPINFO_ID: this.corpInfoId
AREA: this.area
} }
).then((data) => { ).then((data) => {
this.block2OptionsList[0].count = data.varList.length
data.varList.forEach(item => { data.varList.forEach(item => {
if (item.SUOSHUQUYU === '2') { if (item.STATE == 1) {
this.block2OptionsList[0].count = item.co this.block2OptionsList[1].count++
} else if (item.SUOSHUQUYU === '1') {
this.block2OptionsList[1].count = item.co
} }
}) })
}) })

View File

@ -16,7 +16,7 @@
<script> <script>
import { requestFN } from '@/utils/request' import { requestFN } from '@/utils/request'
const imosPlayer = window.imosPlayer // const imosPlayer = window.imosPlayer
let iframeObj = null let iframeObj = null
export default { export default {
@ -65,19 +65,19 @@ export default {
}, },
methods: { methods: {
showYsVideo() { showYsVideo() {
iframeObj = imosPlayer.createPanelWindow() // iframeObj = imosPlayer.createPanelWindow()
var dom = document.getElementById('aLiVideoPlayer') // var dom = document.getElementById('aLiVideoPlayer')
iframeObj.style.margin = 'auto' // iframeObj.style.margin = 'auto'
dom.appendChild(iframeObj) // dom.appendChild(iframeObj)
imosPlayer // imosPlayer
.playLive(iframeObj.id, { // .playLive(iframeObj.id, {
camera: this.id, // camera: this.id,
title: this.id, // title: this.id,
stream: 1 // stream: 1
}) // })
.then((e) => { // .then((e) => {
console.log(e) // console.log(e)
}) // })
}, },
showVideo() { showVideo() {
let url = this.requestUrl let url = this.requestUrl

View File

@ -277,6 +277,7 @@ import cloneDeep from 'lodash/cloneDeep'
import fullScreenMixins from '@/assets/mixins/fullScreen' import fullScreenMixins from '@/assets/mixins/fullScreen'
import { animate } from 'motion' import { animate } from 'motion'
import loadMapBoxCfd from './js/mapboxCfd' import loadMapBoxCfd from './js/mapboxCfd'
import loadCmtMapBox from './js/mapboxCmt'
import loadMapBoxCzks from './js/mapboxCzks' import loadMapBoxCzks from './js/mapboxCzks'
import loadMapBox from './js/mapbox' import loadMapBox from './js/mapbox'
import AnquanCfd from './components/anquanCfd' import AnquanCfd from './components/anquanCfd'
@ -295,7 +296,7 @@ import axios from 'axios'
// md5 // md5
import md5 from 'md5' import md5 from 'md5'
const imosPlayer = window.imosPlayer // const imosPlayer = window.imosPlayer
var PI = 3.1415926535897932384626 var PI = 3.1415926535897932384626
var a = 6378245.0 // var a = 6378245.0 //
var ee = 0.00669342162296594323 // 椭球的偏心率。//判断是否在国内在中国国内的经纬度才需要做偏移 var ee = 0.00669342162296594323 // 椭球的偏心率。//判断是否在国内在中国国内的经纬度才需要做偏移
@ -876,6 +877,7 @@ export default {
pointBoxCfd: [], pointBoxCfd: [],
pointBox: [], pointBox: [],
pointBoxCzks: [], pointBoxCzks: [],
pointBoxCmt: [],
fwebsocket: {}, fwebsocket: {},
redList: [], redList: [],
orangeList: [], orangeList: [],
@ -1157,6 +1159,7 @@ export default {
mounted() { mounted() {
this.initMap() this.initMap()
this.pointBoxCfd = loadMapBoxCfd() this.pointBoxCfd = loadMapBoxCfd()
this.pointBoxCmt = loadCmtMapBox()
this.pointBox = loadMapBox() this.pointBox = loadMapBox()
this.pointBoxCzks = loadMapBoxCzks() this.pointBoxCzks = loadMapBoxCzks()
// this.ysVideoInit() // this.ysVideoInit()
@ -1179,49 +1182,6 @@ export default {
}) })
}, },
ysVideoInit() { ysVideoInit() {
//
var _this = this
requestFN(
'/map/loginOrKeepAlive',
{
}
).then((data) => {
const token = data.token
var nbsp = String.fromCharCode(160)
var arr = []
arr.length = 40
const str = arr.fill(nbsp).join('')
const voidPath = imosPlayer.getUniqueID()
window.voidPath = voidPath
document.title = document.title + str + new Date().getTime()
_this.keepalive(token)
setInterval(_this.keepalive, 30000, token)
window.videoWindow = 0
imosPlayer.setLinkPort('8093')
imosPlayer
.init({
ip: '172.14.0.54',
token: token,
title: document.title,
voidListenerPath: '\\' + voidPath
})
.then(async(resr) => {
if (resr.ErrCode === 0) {
// imosPlayer.setLiveNetLinkMode(liveNetProtocol, liveByMS)
// imosPlayer.setReplayNetLinkMode(replayNetProtocol, replayByMS)
// eslint-disable-next-line no-alert
console.info('登录成功')
} else {
// eslint-disable-next-line no-alert
console.info(resr.ErrMsg)
}
})
.catch((err) => {
console.error(err)
})
})
}, },
// keepalive(token) { // keepalive(token) {
// axios({ // axios({
@ -1386,6 +1346,15 @@ export default {
url: '/mapapi/ware/upload/qhdgysh/merge_tile.json' url: '/mapapi/ware/upload/qhdgysh/merge_tile.json'
}) })
viewer.scene.primitives.add(qhdgysh) viewer.scene.primitives.add(qhdgysh)
var czkszhmt = new Cesium.Cesium3DTileset({ //
url: '/mapapi/ware/upload/%E6%B2%A7%E5%B7%9E%E6%B8%AF%E8%A5%BF/%E6%B2%A7%E5%B7%9E%E6%B8%AF%E8%A5%BF/merge_tile.json'
})
viewer.scene.primitives.add(czkszhmt)
var czksksmt = new Cesium.Cesium3DTileset({//
url: '/mapapi/ware/upload/%E6%B2%A7%E5%B7%9E%E6%B8%AF%E4%B8%9C/%E6%B2%A7%E5%B7%9E%E6%B8%AF%E4%B8%9C/merge_tile.json'
})
viewer.scene.primitives.add(czksksmt)
}, },
leftDownAction() { leftDownAction() {
@ -2158,6 +2127,14 @@ export default {
point.name = varList[i].MAP_POINT_NAME point.name = varList[i].MAP_POINT_NAME
point.infoname = varList[i].MAP_POINT_NAME point.infoname = varList[i].MAP_POINT_NAME
} }
// 线
if (point.icon_type.indexOf('6_1') > -1) {
if (varList[i].ONLINE_STATUS === '0') {
point.icon_type = point.icon_type + '_online'
} else {
point.icon_type = point.icon_type + '_offline'
}
}
points.push(point) points.push(point)
} }
if (this.gangkouActive === '00004' && urlType === 'carPosition') { if (this.gangkouActive === '00004' && urlType === 'carPosition') {

View File

@ -44,6 +44,8 @@ const img5_0 = require('../../../assets/map/gangkou_index/point/ico26.png')
const img6_0 = require('../../../assets/map/gangkou_index/point/ico30.png') const img6_0 = require('../../../assets/map/gangkou_index/point/ico30.png')
const img6_1 = require('../../../assets/map/gangkou_index/point/ico31.png') const img6_1 = require('../../../assets/map/gangkou_index/point/ico31.png')
const img6_1_online = require('../../../assets/map/gangkou_index/point/ico31_online.png')
const img6_1_offline = require('../../../assets/map/gangkou_index/point/ico31_offline.png')
const img7_0 = require('../../../assets/map/gangkou_index/point/ico26.png') const img7_0 = require('../../../assets/map/gangkou_index/point/ico26.png')
@ -62,7 +64,8 @@ const imgMap = {
img6_0, img6_1, img6_0, img6_1,
img7_0, img7_0,
img8_0, img8_1, img8_2, img8_3, img8_0, img8_1, img8_2, img8_3,
cfd_img1_0, cfd_img1_0_1, cfd_img1_0_2, cfd_img1_0_3 cfd_img1_0, cfd_img1_0_1, cfd_img1_0_2, cfd_img1_0_3,
img6_1_online, img6_1_offline
} }
export { imgMap } export { imgMap }
@ -70,10 +73,12 @@ import './PolylineTrailLinkMaterialProperty'
import loadMapBox from './mapbox' import loadMapBox from './mapbox'
import loadMapBoxCfd from './mapboxCfd' import loadMapBoxCfd from './mapboxCfd'
import loadMapBoxCzks from './mapboxCzks' import loadMapBoxCzks from './mapboxCzks'
import loadCmtMapBox from './mapboxCmt'
const polygonMap = { const polygonMap = {
'00003': loadMapBox, '00003': loadMapBox,
'00002': loadMapBoxCzks, '00002': loadMapBoxCzks,
'00005': loadCmtMapBox,
'00004': loadMapBoxCfd '00004': loadMapBoxCfd
} }

File diff suppressed because it is too large Load Diff