Browse Source

毫米波雷达更新

wangqin
王钦 6 months ago
parent
commit
934cde9d68
  1. 2
      ruoyi-ui/src/common/menuData.js
  2. 2
      ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue
  3. 169
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MillimeterWaveRadar/components/DeviceControlDialog.vue
  4. 214
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MillimeterWaveRadar/index.vue
  5. 8
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue
  6. 13
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFilter/index.vue
  7. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
  8. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js
  9. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue
  10. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/TrafficControl/components/AddControlEventInfoDialog/index.vue
  11. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/TrafficControl/index.vue
  12. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/charts.js
  13. 31
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/index.vue

2
ruoyi-ui/src/common/menuData.js

@ -219,7 +219,7 @@ export default [
component: "service/boardRecord/index.vue",
},
{
title: "情报板敏感词",
title: "敏感词",
name: "sensitive",
path: "/service/sensitive",
component: "service/sensitive/index.vue",

2
ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue

@ -6,7 +6,7 @@
<span class="name">{{ data.name }}</span>
<span class="posts">{{ data.posts }}</span>
</div>
<div class="node" v-if="data.processId">节点{{ data.processName }}</div>
<div class="node" v-if="data.processType===1 && data.processId">节点{{ data.processName }}</div>
<el-image
style="width: 100px; height: 100px"
v-if="

169
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MillimeterWaveRadar/components/DeviceControlDialog.vue

@ -0,0 +1,169 @@
<template>
<Dialog v-model="modelVisible" title="感知事件" width="740px" >
<div class="DeviceControlDialog">
<div class="headSearch">
<p>查询事件:</p>
<el-select
v-model="eventType"
style="width: 180px"
>
<el-option
v-for="item in eventTypeOption"
:key="item.key"
:label="item.label"
:value="item.key"
></el-option>
</el-select>
<p style="margin-left: 10px;">时间范围:</p>
<!-- <el-date-picker style="width:220px;" class="selectRoad" v-model="time" type="daterange" placeholder="请选择" :clearable="false"> -->
<!-- </el-date-picker> -->
<el-date-picker
v-model="dateRange"
size="mini"
style="width: 200px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
unlink-panels
start-placeholder="开始日期"
end-placeholder="结束日期"
></el-date-picker>
<Button @click.native="bindData" style="margin-left: 10px;"> 查询 </Button>
<Button
style="background-color: rgba(0, 179, 204, 0.3)"
@click.native="handleResetForm"
>
重置
</Button>
</div>
</div>
</Dialog>
</template>
<script>
import Button from "@screen/components/Buttons/Button.vue";
import Dialog from "@screen/components/Dialog/index.vue";
import request from "@/utils/request";
import { throttle } from "lodash"
import { Message } from "element-ui";
export default {
name: "DeviceControlDialog",
components: {
Dialog,
Button
},
model: {
prop: "visible",
event: "update:value",
},
props: {
visible: Boolean,
deviceId: String,
btnType: Number,
},
data() {
return {
submitting: false,
eventType:'all',
eventTypeOption:[
{key:'all',label:'全部'},
{key:'RADAR_TOPIC',label:'雷达目标检测事件'},
{key:'trafficAnalysis',label:'交通事件'},
{key:'timeRange',label:'交通统计'},
{key:'realTime',label:'交通状态数据'},
],
dateRange: [],
searchData: {
pageSize: 12,
pageNum: 1
},
};
},
computed: {
modelVisible: {
get() {
return this.visible;
},
set(val) {
// this.$emit("update:value", val);
},
},
},
watch: {
visible: {
immediate: true,
handler(bool) {
this.initData();
},
},
},
mounted() {
this.time = new Date().format('yyyy-MM-dd')
},
methods: {
initData(){
this.dateRange = [];
this.eventType = 'all';
this.searchData = {
pageSize: 12,
pageNum: 1
}
this.bindData();
},
async bindData() {
console.log(this.deviceId)
// request({
// url: `business/device/events/history/{deviceId}/type/{type}`,
// method: "get",
// }).then(res=>{
// if (result.code != 200) return Message.error(result?.msg);
// })
},
},
};
</script>
<style lang="scss" scoped>
.DeviceControlDialog {
max-height: 78vh;
height: 410px;
display: flex;
flex-direction: column;
gap: 15px;
.headSearch {
display: flex;
align-items: center;
width: 700px;
p {
margin-right: 10px;
}
::v-deep {
.el-input__prefix {
top: -5px
}
}
}
.tips {
font-size: 12px;
}
}
.selectRoad {
::v-deep {
.el-input__inner {
background-color: #064258 !important;
border-width: 0px !important;
}
}
}
</style>

214
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MillimeterWaveRadar/index.vue

@ -0,0 +1,214 @@
<template>
<Dialog v-model="obverseVisible" title="毫米波雷达" width="470px">
<div class="MillimeterWaveRadar">
<Video class="video-stream" :pileNum="dialogData.stakeMark" />
<ElTabs v-model="activeName" @tab-click="handleClickTabs" class="tabs">
<ElTabPane label="基本信息" name="first">
<Descriptions labelWidth="72px" :list="list" :data="data" style="gap: 18px" />
</ElTabPane>
</ElTabs>
</div>
<template #footer>
<Button @click.native="deviceControlVisible = true;" style="margin-top: 20px;">感知事件</Button>
</template>
<!-- 设备操作弹窗 -->
<DeviceControlDialog v-model="deviceControlVisible" :deviceId="dialogData.deviceId" :btnType="btnType" />
</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,
getMeteorologicalDetector
} from "@screen/pages/Home/components/RoadAndEvents/utils/httpList.js";
import Video from "@screen/components/Video";
import DeviceControlDialog from "./components/DeviceControlDialog.vue";
import request from "@/utils/request";
import { dialogDelayVisible } from "./../mixin";
import LineChart from "../../LineChart/index.vue";
//
export default {
name: "MillimeterWaveRadar",
mixins: [dialogDelayVisible],
components: {
Dialog,
Descriptions,
Video,
DeviceControlDialog,
Button,
LineChart,
},
data() {
return {
activeName: "first",
deviceControlVisible: false,
data: {
deviceType: "行车诱导",
deviceStation: "k094+079",
roadName: "G35济泽高速",
direction: "1",
deviceState: "0",
deviceVendors: "XXX厂家",
},
btnType: 1,
weatherData: {},
list: [
{
label: "设备名称",
key: "deviceName",
},
{
label: "设备桩号",
key: "stakeMark",
},
{
label: "道路名称",
key: "roadName",
},
{
label: "设备方向",
key: "direction",
enum: "CameraDirectionEnum",
},
{
label: "设备状态",
key: "deviceState",
enum: "DeviceTypeEnum",
},
{
label: "设备厂商",
key: "manufacturer",
},
],
weatherList: [
{
label: "路面状态",
key: "remoteRoadSurfaceStatus",
enum: "remoteRoadSurfaceStatus",
},
{
label: "路表温度(℃)",
key: "remoteRoadSurfaceTemperature",
},
{
label: "下雨类型",
key: "precipitationType",
enum: "precipitationType",
},
{
label: "雨量(mm)",
key: "rainfall",
},
{
label: "能见度类型",
key: "visibilityType",
enum: "visibilityType",
},
{
label: "能见度(km)",
key: "visibility",
},
{
label: "温度(℃)",
key: "temperature",
},
{
label: "湿度",
key: "humidity",
},
{
label: "风向",
key: "windDirection",
},
{
label: "风速(m/s)",
key: "windSpeed",
},
{
label: "水膜厚度(mm)",
key: "waterFilmIceSnowValue",
},
{
label: "大气压力(hPa)",
key: "atmosphericPressure",
},
{
label: "时间",
key: "createTime",
gridColumn: 2,
},
]
};
},
async created() {
this.data = { ...this.dialogData };
getProduct(this.dialogData.productId).then((data) => {
this.dialogData.brand = data.brand;
});
const roadInfo = await getRoadInfoByStakeMark(this.dialogData.stakeMark);
if (roadInfo) this.$set(this.data, "roadName", roadInfo.roadName);
const weatherInfo = await getMeteorologicalDetector(this.dialogData.deviceName)
this.weatherData = { ...weatherInfo }
},
methods: {
handleClickTabs() { },
},
};
</script>
<style lang="scss" scoped>
.MillimeterWaveRadar {
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>

8
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue

@ -17,7 +17,7 @@
</ElTabPane>
<ElTabPane :label="item" :key="'UPS_'+item" :name="'UPS_'+item" v-for="item in upsList" v-if="dialogData.facilityType === 1">
<Descriptions labelWidth="142px" :list="upsList" :data="upsData" style="gap: 12px" column="6" />
<Descriptions labelWidth="142px" :list="upsForm" :data="upsData" style="gap: 12px" column="6" />
</ElTabPane>
@ -67,8 +67,8 @@ export default {
formList: [],
dateRange: [],
daterangeChangeTime: [],
upsList:[],
upsData:[],
upsForm:[],
upsData:{},
// UPS
upsList:['SNMP']
};
@ -137,7 +137,7 @@ export default {
})
_data[e.propertyName] = e.formatValue;
});
this.upsList = _list;
this.upsForm = _list;
this.upsData = _data;
})
},

13
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFilter/index.vue

@ -12,8 +12,13 @@
</div>
<div class="body">
<div class="title">筛选</div>
<Form v-model="data" labelWidth="90px" column="1" class="form" ref="FormConfigRef" :formList="formList" />
<div class="title">
<div>筛选</div>
<div class="el-icon-close" style="cursor: pointer;" @click="activeIcon = null"></div>
</div>
<div style="width:500px; ">
<Form v-model="data" labelWidth="90px" column="1" class="form" ref="FormConfigRef" :formList="formList" />
</div>
<div class="footer">
<Button style="background-color: rgba(0, 179, 204, 0.3)" @click.native="handleResetForm">
重置
@ -176,6 +181,7 @@ div.el-popper.global-input-search-popover {
transform: translateY(24px);
.body {
width: 500px !important;
.title {
background: linear-gradient(90deg,
#237e9b 0%,
@ -185,6 +191,9 @@ div.el-popper.global-input-search-popover {
top: 0;
left: 0;
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
}
}
}

2
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue

@ -57,6 +57,7 @@ import ConfluenceArea from "./../Dialogs/ConfluenceArea/index.vue";
import Intermodulation from "./../Dialogs/Intermodulation/index.vue";
import GuardrailCollision from "./../Dialogs/GuardrailCollision/index.vue";
import MeteorologicalDetection from "./../Dialogs/MeteorologicalDetection/index.vue";
import MillimeterWaveRadar from "./../Dialogs/MillimeterWaveRadar/index.vue";
import FatigueWakesUp from "./../Dialogs/FatigueWakesUp/index.vue";
import { addInGraphHandle, markerClusterIns } from "./utils/map"
@ -81,6 +82,7 @@ export default {
RoadNetworkFacilities,
RemoteMachine,
MeteorologicalDetection,
MillimeterWaveRadar,
ConfluenceArea
},
data() {

1
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js

@ -68,6 +68,7 @@ export const DeviceForMap = {
},
毫米波雷达: {
deviceType: "7",
dialog: "MillimeterWaveRadar",
},
气象检测器: {
deviceType: "3",

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue

@ -222,10 +222,8 @@ export default {
if (item.devList && item.devList.length > 0) {
dcData.deviceList = item.devList.join(",");
}
dcData.executeConfig = JSON.stringify(item.executeConfig);
dcData.recoverConfig = JSON.stringify(item.recoverConfig);
dcArr.push(dcData);
});

6
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/TrafficControl/components/AddControlEventInfoDialog/index.vue

@ -31,6 +31,7 @@ export default {
},
props: {
visible: Boolean,
eventId: String,
eventSubclass: String,
controlType: Number
},
@ -115,7 +116,7 @@ export default {
if (formData.dcEventTrafficControl.facilityId instanceof Array) {
let ids = formData.dcEventTrafficControl.facilityId;
formData.dcEventTrafficControl.facilityIds = ids
formData.dcEventTrafficControl.facilityId = ''
formData.dcEventTrafficControl.facilityId = null
}
let stakeMark = formData.stakeMark;
@ -132,8 +133,9 @@ export default {
method: "post",
data: {
...formData,
id:this.eventId,
eventState:1,
eventType: 3,
eventState: 0,
stakeMark: stakeMark && stakeMark[0] != null
? stakeMark && stakeMark.length > 0 ? "K" + stakeMark[0] + "+" + stakeMark[1] : "" : "",
},

1
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/TrafficControl/index.vue

@ -25,6 +25,7 @@
v-model="addControlEventInfoDialogVisible"
:controlType="controlType"
:eventSubclass="eventSubclass"
:eventId="this.detailData.id"
@close="closeDialog"
/>
</Card>

2
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/charts.js

@ -33,7 +33,7 @@ var options = {
top: "25%", //上边距
right: "0%", //右边距
left: "0%", //左边距
bottom: "0%", //下边距
bottom: "10%", //下边距
containLabel: true,
},
xAxis: {

31
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/analysis/index.vue

@ -61,12 +61,11 @@
<Button style="margin-left: 25px" @click.native="bindData()">查询</Button>
</div>
</div>
<div class="right-bottom" >
<div id="chart1" class="chart1 keep-ratio" origin="top"></div>
<div id="chart1" class="chart1"></div>
<div class="right-table">
<Table :data="tableData" >
<ElTableColumn label="名称" prop="name" width="300" align="center" />
<ElTableColumn label="名称" prop="name" width="300" align="center" />
<ElTableColumn label="采集时间" prop="timestamp" align="center" />
<ElTableColumn :label="devParamName" prop="result" width="300" align="center" />
</Table>
@ -253,7 +252,7 @@ export default {
padding: 20px;
.left {
width: 400px;
width: 380px;
background-color: #112533;
height: 100%;
display: flex;
@ -297,7 +296,7 @@ export default {
}
.right-table{
width: 100%;
height: 600px;
height: 550px;
overflow-y: auto;
margin-bottom: 30px;
}
@ -428,18 +427,18 @@ export default {
}
.selectDate {
width: 89px;
border: 1px solid #00b3cc;
width: 89px;
border: 1px solid #00b3cc;
::v-deep {
.el-input__prefix{
top:-4px;
}
.el-input__inner {
::v-deep {
.el-input__prefix{
top:-4px;
}
.el-input__inner {
background-color: #064258 !important;
border-width: 0px !important;
}
}
background-color: #064258 !important;
border-width: 0px !important;
}
}
}
</style>

Loading…
Cancel
Save