Browse Source

护栏碰撞控制,视频录像,事件对应相机

develop
王兴琳 7 months ago
parent
commit
90f7a70ef7
  1. 37
      ruoyi-ui/src/views/JiHeExpressway/components/VideoMulti/index.vue
  2. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/GuardrailCollision/index.vue
  3. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue

37
ruoyi-ui/src/views/JiHeExpressway/components/VideoMulti/index.vue

@ -1,30 +1,32 @@
<template> <template>
<div class="video-container"> <div class="video-container">
<div class="header"> <div class="header">
<ElSelect @change="cameraChange" v-model="cameraId"> <ElSelect v-model="cameraId" @change="cameraChange">
<ElOption v-for="item in urls" :key="item.id" :label="item.deviceName" :value="item.iotDeviceId"> <ElOption v-for="item in urls" :key="item.id" :label="item.deviceName" :value="item.iotDeviceId">
</ElOption> </ElOption>
</ElSelect> </ElSelect>
<img @click="controlDialogVisible = true" v-if="[0, '0'].includes( <img v-if="[0, '0'].includes(
dialogData.parseOtherConfig && dialogData.parseOtherConfig &&
dialogData.parseOtherConfig.ptzCtrl dialogData.parseOtherConfig.ptzCtrl
) )
" src="@screen/images/camera-control-icon.svg" width="18px" height="18px" " height="18px" src="@screen/images/camera-control-icon.svg" style="cursor: pointer;background-color: #0d5f79;margin-top: 3px" width="18px"
style="cursor: pointer;background-color: #0d5f79;margin-top: 3px" /> @click="controlDialogVisible = true"/>
</div> </div>
<Transition name="fade" mode="out-in"> <Transition mode="out-in" name="fade">
<video controls autoplay muted class="video-stream" v-bind="$attrs" ref="videoContainerRef" /> <video ref="videoContainerRef" v-bind="$attrs" autoplay class="video-stream" controls muted/>
</Transition> </Transition>
<CameraControlDialog :deviceId="dialogData.iotDeviceId" :dialogData="dialogData" :visible="controlDialogVisible" @update:value="handleClose" /> <CameraControlDialog :deviceId="dialogData.iotDeviceId" :dialogData="dialogData" :visible="controlDialogVisible"
@update:value="handleClose"/>
</div> </div>
</template> </template>
<script> <script>
import { HttpLivePlayer, openLiveVideo } from "./videoStream.js" import {HttpLivePlayer} from "./videoStream.js"
import {find} from "lodash" import {find} from "lodash"
import { import {
getNearCameraNew,getNearCameraNewStation, getNearCameraNew,
getNearCameraNewStation,
} from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js"; } from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js";
import CameraControlDialog from "@screen/pages/Home/components/Dialogs/Camera/components/CameraControlDialog.vue"; import CameraControlDialog from "@screen/pages/Home/components/Dialogs/Camera/components/CameraControlDialog.vue";
@ -111,14 +113,22 @@ export default {
urls = [...urls, ...data[i]] urls = [...urls, ...data[i]]
} }
this.$emit('nearload', urls.map(x => x.iotDeviceId)) this.$emit('nearload', urls.map(x => x.iotDeviceId))
} } else if (data[this.rangeIndex]) {
else if (data[this.rangeIndex]) {
urls = data[this.rangeIndex] urls = data[this.rangeIndex]
} }
if (urls.length > 0) { if (urls.length > 0) {
let firstItem
this.urls = urls; this.urls = urls;
const firstItem = urls[0]; let list = urls.filter(itm => itm.stakeMark === this.pileNum & itm.childType === "1-1");
if (list.length === 0) {
firstItem = urls[0];
}else if (list.length>0){
firstItem = list[0];
}
// console.log("+++++++++++++++++++++++++++++++++++++++++++++++++")
// console.log(this.pileNum)
this.cameraId = firstItem['iotDeviceId']; this.cameraId = firstItem['iotDeviceId'];
// console.log("id"+this.cameraId)
this.dialogData = {...firstItem, parseOtherConfig: firstItem.otherConfig && JSON.parse(firstItem.otherConfig)} this.dialogData = {...firstItem, parseOtherConfig: firstItem.otherConfig && JSON.parse(firstItem.otherConfig)}
this.showVideo(); this.showVideo();
} }
@ -150,6 +160,7 @@ export default {
display: flex; display: flex;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
.fade-enter-active, .fade-enter-active,
.fade-leave-active { .fade-leave-active {
transition: opacity 0.24s ease; transition: opacity 0.24s ease;
@ -166,6 +177,7 @@ export default {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
background-color: #145775; background-color: #145775;
.radio { .radio {
background: #265A70; background: #265A70;
border-radius: 41px 41px 41px 41px; border-radius: 41px 41px 41px 41px;
@ -227,6 +239,7 @@ export default {
.video-stream { .video-stream {
width: 100%; width: 100%;
} }
@media (min-width: 3000px) { @media (min-width: 3000px) {
.video-stream { .video-stream {
height: 90%; height: 90%;

5
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/GuardrailCollision/index.vue

@ -16,9 +16,8 @@
"> ">
警示灯: 警示灯:
</span> </span>
<Button style="margin-left: 5px" @click.native="controlClick(30)"></Button> <Button style="margin-left: 5px" @click.native="controlClick(30)">强制开启</Button>
<Button style="margin-left: 5px" @click.native="controlClick(31)"></Button> <Button style="margin-left: 5px" @click.native="controlClick(31)">强制关闭</Button>
<Button style="margin-left: 5px" @click.native="controlClick(34)">退出</Button>
</div> </div>
</ElTabPane> </ElTabPane>

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue

@ -67,7 +67,7 @@
" @close="onCloseAddNew" /> " @close="onCloseAddNew" />
<template #footer> <template #footer>
<Button @click.native="onOpen" :style="{ marginTop: '30px', padding: '0 24px' }">视频录像</Button> <Button v-if="[1,2,5].includes(data.warningSource)" @click.native="onOpen" :style="{ marginTop: '30px', padding: '0 24px' }">视频录像</Button>
<Button :loading="submitLoading" v-if="check(['business:home:event','control:event:event:disposalAndRelease','control:event:event:disposeOf','home:notice:releaseEvent','home:notice:closeEvent']) && activeName == '1'" style="margin-top: 30px;padding: 0 24px" <Button :loading="submitLoading" v-if="check(['business:home:event','control:event:event:disposalAndRelease','control:event:event:disposeOf','home:notice:releaseEvent','home:notice:closeEvent']) && activeName == '1'" style="margin-top: 30px;padding: 0 24px"
@click.native="onEnd">终止</Button> @click.native="onEnd">终止</Button>
<Button :loading="submitLoading" v-if="check(['business:home:event','control:event:event:disposalAndRelease','control:event:event:disposeOf','home:notice:releaseEvent']) && (activeName == '-1' || activeName == '0')" style="margin-top: 30px;padding: 0 24px" <Button :loading="submitLoading" v-if="check(['business:home:event','control:event:event:disposalAndRelease','control:event:event:disposeOf','home:notice:releaseEvent']) && (activeName == '-1' || activeName == '0')" style="margin-top: 30px;padding: 0 24px"

Loading…
Cancel
Save