济菏高速业务端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

198 lines
5.0 KiB

<template>
<Dialog v-model="visibleModel"
title="疲劳唤醒弹窗" width="470px" style="z-index:3000" >
<div class="FatigueWakesUp">
<Video class="video-stream" :camId="camId" img="激光疲劳唤醒" />
<ElTabs v-model="activeName" @tab-click="handleClickTabs" class="tabs">
<ElTabPane label="基本信息" name="first">
<Descriptions :list="list" :data="data" style="gap: 18px" />
</ElTabPane>
<!-- <ElTabPane label="设备参数" name="second">设备参数</ElTabPane> -->
<ElTabPane label="在线率统计" name="third">
<LineChart v-if="activeName === 'third'" :productId="data.id" style="height: 180px" />
</ElTabPane>
</ElTabs>
</div>
<template #footer v-if="check(['business:home:laserFatigueAwakening'])">
<Button @click.native="onControlClick" disabled :style="(data.deviceState==='1' && data.iotDeviceId)?'':'background-color:#A9AEB8'">设备操作</Button>
</template>
<!-- 设备操作弹窗 -->
<DeviceControlDialog v-model="deviceControlVisible" :deviceId="data.iotDeviceId" :productId="data.id"
:deviceType="data.deviceType" />
</Dialog>
</template>
<script>
import Dialog from "@screen/components/Dialog/index.vue";
import Descriptions from "@screen/components/Descriptions.vue";
import Button from "@screen/components/Buttons/Button.vue";
import {
getRoadInfoByStakeMark,
getProduct,
} from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js";
import Video from "@screen/components/Video";
import DeviceControlDialog from "../Dialogs/FatigueWakesUp/components/DeviceControlDialog.vue";
import { checkPermi } from "@/utils/permission.js";
import request from "@/utils/request";
import { dialogDelayVisible } from "../Dialogs/mixin.js";
import LineChart from "../LineChart/index.vue";
// 疲劳唤醒弹窗
export default {
name: "DialogFatigueWakesUp",
components: {
Dialog,
Descriptions,
Video,
DeviceControlDialog,
Button,
LineChart,
},
props: {
visible: {
type: Boolean,
default: true,
},
data: {
type: Object,
default: null,
},
},
emit: ["close"],
computed: {
visibleModel: {
get() {
if (this.visible) this.getData();
return this.visible;
},
set(bool) {
this.$emit("close", bool);
},
},
},
data() {
return {
camId: null ,
activeName: "first",
deviceControlVisible: false,
list: [
{
label: "设备名称",
key: "deviceName",
},
{
label: "设备桩号",
key: "stakeMark",
},
{
label: "道路名称",
key: "roadName",
},
{
label: "设备方向",
key: "direction",
enum: "CameraDirectionEnum",
},
{
label: "设备状态",
key: "deviceState",
enum: "DeviceTypeEnum",
},
{
label: "设备厂商",
key: "manufacturer",
},
],
};
},
async mounted() {
// 修改camid
if(typeof this.data.otherConfig === 'string'){
const oConfig = JSON.parse(this.data.otherConfig)
if(oConfig && oConfig.camId){
this.camId = oConfig.camId
}
}
console.log("8888888888",this.data)
this.data = { ...this.data, roadName: '济菏高速' };
getProduct(this.data.productId).then((data) => {
this.data.brand = data.brand;
});
// const roadInfo = await getRoadInfoByStakeMark(this.data.stakeMark);
// if (roadInfo) this.$set(this.data, "roadName", roadInfo.roadName);
},
methods: {
check(arr){
return checkPermi(arr);
},
getData() {
},
onControlClick(){
if(this.data.deviceState==='1' && this.data.iotDeviceId){
this.deviceControlVisible = true
}
},
handleClickTabs() { },
},
};
</script>
<style lang="scss" scoped>
.fatigue-wakes-up {
position: absolute; /* 或 fixed,取决于你的需求 */
z-index: 3000; /* 确保这个值足够高 */
/* 其他样式 */
}
.FatigueWakesUp {
width: 420px;
color: #fff;
display: flex;
flex-direction: column;
gap: 12px;
// padding-bottom: 24px;
.camera-video {
flex: 1.5;
}
.tabs {
flex: 1;
display: flex;
flex-direction: column;
::v-deep {
.el-tabs__content {
flex: 1;
.el-tab-pane {
height: 100%;
}
}
}
}
.bottom {
margin-top: 12px;
display: flex;
gap: 9px;
align-items: center;
justify-content: end;
>div {
font-size: 16px;
padding: 6px 12px;
}
}
}
</style>