Browse Source

① 首页护栏碰撞警示灯开关 ② 首页收费站摄像头引导图 ③ 高速云统计 ④ 设备离线弹窗/页面等

develop
mbp 2 months ago
parent
commit
d372c3179c
  1. 6
      ruoyi-ui/src/common/menuData.js
  2. 5
      ruoyi-ui/src/main.js
  3. 11
      ruoyi-ui/src/views/JiHeExpressway/components/DialogDeviceOffline/data.js
  4. 156
      ruoyi-ui/src/views/JiHeExpressway/components/DialogDeviceOffline/index.vue
  5. 40
      ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/WarningList.vue
  6. 26
      ruoyi-ui/src/views/JiHeExpressway/components/VideoMulti/index.vue
  7. 25
      ruoyi-ui/src/views/JiHeExpressway/components/WarningNotify.vue
  8. 46
      ruoyi-ui/src/views/JiHeExpressway/images/deviceType/balle_active.svg
  9. 46
      ruoyi-ui/src/views/JiHeExpressway/images/deviceType/balle_fault.svg
  10. 1
      ruoyi-ui/src/views/JiHeExpressway/images/event/设备.svg
  11. BIN
      ruoyi-ui/src/views/JiHeExpressway/images/shoufeiz/大学城收费站.jpg
  12. BIN
      ruoyi-ui/src/views/JiHeExpressway/images/shoufeiz/孝里收费站.jpg
  13. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue
  14. 40
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/GuardrailCollision/index.vue
  15. 159
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/RoadNetworkFacilities/index.vue
  16. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
  17. 32
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/abnormal/data.js
  18. 242
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/abnormal/index.vue
  19. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/analysis/real/charts.js
  20. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts.js
  21. 174
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts3.js
  22. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts4.js
  23. 116
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts6.js
  24. 85
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts8.js
  25. 312
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/index.vue
  26. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/search/index.vue
  27. 8
      ruoyi-ui/src/views/JiHeExpressway/utils/enum.js
  28. 35
      ruoyi-ui/src/views/websocket.vue
  29. 4
      ruoyi-ui/vue.config.js

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

@ -188,6 +188,12 @@ export default [
path: "/maintain/smart/analysis",
component: "maintenanceOperations/smart/analysis/index.vue",
},
{
title: "设备异常管理",
name: "deviceAbnormal",
path: "/maintain/smart/abnormal",
component: "maintenanceOperations/smart/abnormal/index.vue",
},
],
},
// {

5
ruoyi-ui/src/main.js

@ -55,9 +55,10 @@ import eventDialogTable from "@/components/eventDialogTable";
import evtDialogOneThing from "@/components/eventDialogTable/evtDialogOneThing.vue";
import evtDialogVideo from "@/components/eventDialogTable/video.vue";
// 时间弹窗
// 事件弹窗
import EventDetailDialog from "@screen/pages/control/event/event/EventDetailDialog/index";
import DialogDeviceOffline from '@screen/components/DialogDeviceOffline/index.vue'
import mitt from "mitt";
const emitter = mitt();
@ -135,6 +136,8 @@ Vue.component("evtDialogOneThing", evtDialogOneThing);
Vue.component("evtDialogVideo", evtDialogVideo);
Vue.component("DialogDeviceOffline", DialogDeviceOffline);
Vue.component("EventDetailDialog", EventDetailDialog);
Vue.component(CollapseTransition.name, CollapseTransition);

11
ruoyi-ui/src/views/JiHeExpressway/components/DialogDeviceOffline/data.js

@ -0,0 +1,11 @@
export const _formList = [
{
label: "设备名称:",
key: "deviceName",
type: "input",
options: {
placeholder: "",
}
},
];

156
ruoyi-ui/src/views/JiHeExpressway/components/DialogDeviceOffline/index.vue

@ -0,0 +1,156 @@
<template>
<Dialog v-model="modelVisible" style="z-index: 2050;" title="设备异常" width="650px">
<div class="dialogDeviceOffline" >
<!-- <Form ref="FormConfigRef" :formList="formList" :dFormData="info" label-width="110px" />
{{info}} -->
<el-row style="width:90%;margin-top:15px;margin-right:10%;">
<el-col :span="4" style="text-align:right;color:#00d1ff;">设备名称</el-col>
<el-col :span="6">{{info.deviceName}}</el-col>
<el-col :span="3" style="text-align:right;color:#00d1ff;">设备类型</el-col>
<el-col :span="6">{{info.deviceTypeName}}</el-col>
</el-row>
<el-row style="width:90%;margin-top:15px;margin-right:10%;">
<el-col :span="4" style="text-align:right;color:#00d1ff;">方向</el-col>
<el-col :span="6">{{info.directionName}}</el-col>
<el-col :span="3" style="text-align:right;color:#00d1ff;">桩号</el-col>
<el-col :span="6">{{info.stakeMark}}</el-col>
</el-row>
<el-row style="width:90%;margin-top:15px;margin-right:10%;">
<el-col :span="4" style="text-align:right;color:#00d1ff;">设备归属类型</el-col>
<el-col :span="6">{{info.facilitiesTypeName}}</el-col>
<el-col :span="3" style="text-align:right;color:#00d1ff;">安装位置</el-col>
<el-col :span="6">{{info.installationSite}}</el-col>
</el-row>
<el-row style="width:90%;margin-top:15px;margin-right:10%;">
<el-col :span="4" style="text-align:right;color:#00d1ff;">时间</el-col>
<el-col :span="6">{{info.warningTime}}</el-col>
<el-col :span="3" style="text-align:right;color:#00d1ff;">状态</el-col>
<el-col :span="6">{{info.stateName}}</el-col>
</el-row>
</div>
<template #footer>
<Button :style="{ marginTop: '30px', backgroundColor: '#0e708b', padding: '0 24px' }"
@click.native="modelVisible = false">取消</Button>
<Button :loading="submitLoading" v-if="info.status==='0'" style="margin-top: 30px;padding: 0 24px"
@click.native="updateEvent">处置</Button>
</template>
</Dialog>
</template>
<script>
import Dialog from "@screen/components/Dialog/index";
import Form from "@screen/components/FormConfig";
import Button from "@screen/components/Buttons/Button.vue";
import request from "@/utils/request";
var moment = require("moment");
import {
deviceTypeOptions
} from "@screen/utils/enum.js";
export default {
name: "DialogDeviceOffline",
components: {
Dialog,
Form,
Button,
},
model: {
prop: "visible",
event: "update:value",
},
props: {
visible: Boolean,
activeId: String,
},
data() {
return {
info: {},
source:{},
submitLoading: false,
};
},
computed: {
modelVisible: {
get() {
if (this.visible) {
this.getInfo(this.activeId)
}
return this.visible;
},
set(val) {
this.$emit("update:value", val);
},
},
},
methods: {
getInfo(id) {
if(id && id !== ''){
request({
url:`deviceOfflineRecord/${id}`,
method:'get',
}).then(res=>{
this.source = res.data;
const e = _.cloneDeep(res.data);
const enum_facilitiesType = {
0: '默认',
1: '道路沿线',
2: '桥梁',
3: '隧道',
4: '收费广场',
5: '收费站',
6: '服务区'
}
e.deviceTypeName = _.find(deviceTypeOptions,{value:parseInt(e.deviceType)}).label
e.directionName = e.direction==='1'?'菏泽方向':'济南方向'
e.warningTime = moment(e.createTime).format('YYYY-MM-DD HH:mm:ss')
e.stateName = (e.status==='0'?'未处理':(e.status==='1'?'已处理':'自动处理'))
e.facilitiesTypeName = enum_facilitiesType[e.facilitiesType]
this.info = e;
})
}
},
updateEvent() {
this.submitLoading = true;
const self = this;
this.$confirm(`是否确认处理设备【${this.source['deviceName']}】异常?`, "异常处理", {
confirmButtonText: "处理",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
request({
url: `/deviceOfflineRecord`,
method: 'put',
data:{
...self.source,
status:'1'
}
}).then(res=>{
self.$message.success('操作成功')
self.submitLoading = false;
self.modelVisible = false;
})
}).catch(function() {});
},
},
};
</script>
<style lang="scss" scoped>
.dialogDeviceOffline {
display: flex;
gap: 9px;
width: 905px;
// height: 768px;
flex-direction: column;
justify-content: center;
align-items: center;
font-size:18px;
}
</style>

40
ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/WarningList.vue

@ -5,6 +5,7 @@
<el-tab-pane label="感知事件" name="first" />
<el-tab-pane label="待确认事件" name="second" />
<el-tab-pane label="处置中事件" name="third" />
<el-tab-pane label="设备异常" name="fifth" />
</el-tabs>
<div>
<Table :data="tableData" :show-header="false" @cell-click="onCellClick" height="400px">
@ -34,10 +35,14 @@
</Pagination>
</div>
<DialogDeviceOffline :visible="modelDeviceVisible" :activeId="activeId"
@update:value="handleDeviceDialogClose" />
<!-- "详情"弹出框 -->
<EventDetailDialog :visible="eventDetailDialogVisible" :formData="detailDialogFormData" :activeName="activeName"
@update:value="handleDialogClose" @queryData="reData" />
<DialogWarning ref="refDigWarn" v-model="dialogWarningVisible"></DialogWarning>
<!-- 设备异常弹窗 -->
</div>
</template>
@ -45,8 +50,9 @@
import request from "@/utils/request";
import Table from '@screen/components/Table.vue';
import Pagination from '@screen/components/Pagination.vue';
import { WarningType } from "@screen/utils/enum.js";
import { WarningType , deviceTypeOptions} from "@screen/utils/enum.js";
import { Message } from "element-ui";
import { WarningType as warningTypeMapping, DirectionTypes as gzDirectionMapping, warningSourceMapping, warningStateMapping } from "@screen/utils/enum.js"
import DialogWarning from './dialogWarn/DialogWarning.vue'
@ -55,7 +61,7 @@ export default {
components: {
Table,
Pagination,
DialogWarning
DialogWarning,
},
data() {
return {
@ -72,6 +78,10 @@ export default {
},
dialogWarningVisible: false,
modelDeviceVisible:false,
activeId:''
};
},
computed: {
@ -89,7 +99,17 @@ export default {
onChangeTab(tab, event) {
this.getMainData();
},
handleDeviceDialogClose() {
this.modelDeviceVisible = false;
},
onCellClick(row, column, cell, event) {
if(this.activeTab === 'fifth'){
this.activeId = row.id;
this.modelDeviceVisible = true;
return;
}
if(this.activeTab === 'four'){
if(row.warningType === '1'){
@ -167,6 +187,22 @@ export default {
this.tableData = result.rows;
this.total = result.total;
})
} else if(this.activeTab === 'fifth'){
request({
url: `/deviceOfflineRecord/list?pageSize=${this.searchData.pageSize}&pageNum=${this.searchData.pageNum}`,
method: "GET",
})
.then((result) => {
if (result.code != 200) return;
result.rows.forEach(item => {
item.icon = '设备'
item.remark = item.createTime+ ' '+item.stakeMark +' ' +item.deviceName+'发生故障'
item.stringEventType = _.find(deviceTypeOptions,{value:parseInt(item.deviceType)}).label
})
this.tableData = result.rows;
this.total = result.total;
})
}
},
firstBtnClick(id) {////

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

@ -63,14 +63,17 @@ export default {
this.playVideo();
this.$once("hook:beforeDestroy", () => this.player?.destroy());
},
destroyed(){
this.player?.destroy();
},
methods: {
handleClose() {
this.controlDialogVisible = false;
},
cameraChange() {
console.log('chanage.======')
const changeItem = find(this.urls, { iotDeviceId: this.cameraId });
this.dialogData = { ...changeItem, parseOtherConfig: changeItem.otherConfig && JSON.parse(changeItem.otherConfig) };
console.log(this.cameraId, this.dialogData)
this.player?.destroy();
const self = this;
setTimeout(() => {
@ -89,9 +92,19 @@ export default {
this.$message.warning("未获取到附近的相机信息");
return;
}
if (data[this.rangeIndex]) {
this.urls = data[this.rangeIndex]
const firstItem = data[this.rangeIndex]?.[0] || {};
let urls = [];
if(this.rangeIndex === 'all'){
for(let i in data){
urls = [...urls,...data[i]]
}
this.$emit('nearload', urls.map(x=>x.iotDeviceId))
}
else if (data[this.rangeIndex]) {
urls = data[this.rangeIndex]
}
if(urls.length > 0){
this.urls = urls;
const firstItem = urls[0];
this.cameraId = firstItem['iotDeviceId'];
this.dialogData = { ...firstItem, parseOtherConfig: firstItem.otherConfig && JSON.parse(firstItem.otherConfig) }
this.showVideo();
@ -99,6 +112,11 @@ export default {
},
showVideo() {
this.player = new HttpLivePlayer(this.$refs.videoContainerRef, { camId: this.cameraId });
},
setCameraId(id){
console.log('外部改变cameraId',id,3333)
this.cameraId = id;
this.cameraChange();
}
}
}

25
ruoyi-ui/src/views/JiHeExpressway/components/WarningNotify.vue

@ -5,13 +5,16 @@
<EventDetailDialog :visible="eventDetailDialogVisible" :formData="detailDialogFormData" :activeName="activeName"
@update:value="handleDialogClose" />
<!-- 添加或修改控制码对话框 -->
<DialogDeviceOffline :visible="modelDeviceVisible" :activeId="activeId"
@update:value="handleDeviceDialogClose" />
</div>
</template>
<script>
import moment from "moment";
import Cookies from 'js-cookie'
import request from "@/utils/request";
import { WarningType as warningTypeMapping, DirectionTypes as gzDirectionMapping, warningSourceMapping, warningStateMapping } from "@screen/utils/enum.js"
import { param } from "../../../utils";
@ -35,6 +38,10 @@ export default {
activeName: '-1',
eventDetailDialogVisible: false,
detailDialogFormData: {},
modelDeviceVisible:false,
activeId:''
}
},
computed: {
@ -86,6 +93,14 @@ export default {
level: "warning",
duration: 4000
}
} else if(para.subEvent === 'deviceOfflineRecord'){
obj = {
content: para.content.deviceOfflineRecord.createTime+' '+ para.content.content,
time:'',
type: "equipmentTrouble",
level: "danger",
duration: 4000
}
} else if(para.subEvent === '3'){
para.content.content = para.content.earlyWorningContent
obj = {
@ -191,8 +206,11 @@ export default {
});
_this.notifyIndex++;
},
handleDeviceDialogClose() {
this.modelDeviceVisible = false;
},
showDialog(info,idx){
console.log(info,555)
if (info.subEvent == '1' || info.subEvent == '2') {
this.activeName = '-1' //
request({
@ -233,6 +251,9 @@ export default {
this.detailDialogFormData = data;
this.eventDetailDialogVisible = true;
});
} else if(info.subEvent==='deviceOfflineRecord'){
this.activeId = info.content.deviceOfflineRecord.id.toString();
this.modelDeviceVisible = true;
} else {
this.activeName = info.eventState
request({

46
ruoyi-ui/src/views/JiHeExpressway/images/deviceType/balle_active.svg

@ -1,51 +1,51 @@
<svg width="42" height="52" viewBox="0 0 42 52" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21 40.9997C32.0457 40.9997 41 32.0455 41 20.9998C41 9.95424 32.0457 1 21 1C9.9543 1 1 9.95424 1 20.9998C1 32.0455 9.9543 40.9997 21 40.9997Z" fill="white"/>
<g filter="url(#filter0_i_1302_2627)">
<path d="M21 40.9997C32.0457 40.9997 41 32.0455 41 20.9998C41 9.95424 32.0457 1 21 1C9.9543 1 1 9.95424 1 20.9998C1 32.0455 9.9543 40.9997 21 40.9997Z" fill="black"/>
<path d="M21 41.796C32.0457 41.796 41 32.6635 41 21.398C41 10.1325 32.0457 1 21 1C9.9543 1 1 10.1325 1 21.398C1 32.6635 9.9543 41.796 21 41.796Z" fill="white"/>
<g filter="url(#filter0_i_1302_2626)">
<path d="M21 41.796C32.0457 41.796 41 32.6635 41 21.398C41 10.1325 32.0457 1 21 1C9.9543 1 1 10.1325 1 21.398C1 32.6635 9.9543 41.796 21 41.796Z" fill="black"/>
</g>
<path d="M21 40.9997C32.0457 40.9997 41 32.0455 41 20.9998C41 9.95424 32.0457 1 21 1C9.9543 1 1 9.95424 1 20.9998C1 32.0455 9.9543 40.9997 21 40.9997Z" stroke="#D20000" stroke-width="0.6"/>
<path d="M21 51L26 43.5001H16L21 51Z" fill="white"/>
<g filter="url(#filter1_i_1302_2627)">
<path d="M20.7061 51L25.7061 43.5001H15.7061L20.7061 51Z" fill="black"/>
<path d="M21 41.796C32.0457 41.796 41 32.6635 41 21.398C41 10.1325 32.0457 1 21 1C9.9543 1 1 10.1325 1 21.398C1 32.6635 9.9543 41.796 21 41.796Z" stroke="#BEA019" stroke-width="0.6"/>
<path d="M21.002 51L26.002 43.3507H16.002L21.002 51Z" fill="white"/>
<g filter="url(#filter1_i_1302_2626)">
<path d="M20.6348 51L25.6348 43.3507H15.6348L20.6348 51Z" fill="black"/>
</g>
<path d="M21 51L26 43.5001H16L21 51Z" stroke="#D20000" stroke-width="0.6"/>
<path d="M21 37.2497C29.9746 37.2497 37.25 29.9744 37.25 20.9999C37.25 12.0253 29.9746 4.75 21 4.75C12.0254 4.75 4.75 12.0253 4.75 20.9999C4.75 29.9744 12.0254 37.2497 21 37.2497Z" fill="#D20000"/>
<g filter="url(#filter2_i_1302_2627)">
<path d="M21.1719 37.2497C30.1465 37.2497 37.4219 29.9744 37.4219 20.9999C37.4219 12.0253 30.1465 4.75 21.1719 4.75C12.1972 4.75 4.92188 12.0253 4.92188 20.9999C4.92188 29.9744 12.1972 37.2497 21.1719 37.2497Z" fill="black"/>
<path d="M21.002 51L26.002 43.3507H16.002L21.002 51Z" stroke="#BEA019" stroke-width="0.6"/>
<path d="M20.999 37.9715C29.9736 37.9715 37.249 30.5513 37.249 21.3981C37.249 12.2449 29.9736 4.82471 20.999 4.82471C12.0244 4.82471 4.74902 12.2449 4.74902 21.3981C4.74902 30.5513 12.0244 37.9715 20.999 37.9715Z" fill="#BEA019"/>
<g filter="url(#filter2_i_1302_2626)">
<path d="M21.1523 37.9715C30.127 37.9715 37.4023 30.5513 37.4023 21.3981C37.4023 12.2449 30.127 4.82471 21.1523 4.82471C12.1777 4.82471 4.90234 12.2449 4.90234 21.3981C4.90234 30.5513 12.1777 37.9715 21.1523 37.9715Z" fill="black"/>
</g>
<path d="M21 37.2497C29.9746 37.2497 37.25 29.9744 37.25 20.9999C37.25 12.0253 29.9746 4.75 21 4.75C12.0254 4.75 4.75 12.0253 4.75 20.9999C4.75 29.9744 12.0254 37.2497 21 37.2497Z" stroke="#FF2020" stroke-width="1.2"/>
<path d="M15 25.3125H27C27 22.4688 24.7714 20.1125 21.9429 19.7062V18H16.7143V18.8125H20.2286V19.625C17.3143 20.0312 15 22.3875 15 25.3125ZM20.9143 31C23.6571 31 25.8857 28.8875 25.8857 26.2875H15.9429C15.9429 28.8875 18.1714 31 20.9143 31ZM20.9143 27.1C21.7714 27.1 22.5429 27.75 22.5429 28.6438C22.5429 29.4563 21.8571 30.1875 20.9143 30.1875C19.9714 30.1875 19.2857 29.5375 19.2857 28.6438C19.3714 27.75 20.0571 27.1 20.9143 27.1Z" fill="#FF5F5F"/>
<path d="M30.4286 15H11.5714C10.7071 15 10 15.54 10 16.2V19.8C10 20.46 10.7071 21 11.5714 21H13.2295C14.3632 18.5548 17.4095 15.6 21 15.6C24.5905 15.6 27.6368 18.5548 28.7705 21H30.4286C31.2929 21 32 20.46 32 19.8V16.2C32 15.54 31.2929 15 30.4286 15Z" fill="#FF5F5F"/>
<path d="M20.999 37.9715C29.9736 37.9715 37.249 30.5513 37.249 21.3981C37.249 12.2449 29.9736 4.82471 20.999 4.82471C12.0244 4.82471 4.74902 12.2449 4.74902 21.3981C4.74902 30.5513 12.0244 37.9715 20.999 37.9715Z" stroke="#D4C47F" stroke-width="1.2"/>
<path d="M15 25.3125H27C27 22.4688 24.7714 20.1125 21.9429 19.7062V18H16.7143V18.8125H20.2286V19.625C17.3143 20.0312 15 22.3875 15 25.3125ZM20.9143 31C23.6571 31 25.8857 28.8875 25.8857 26.2875H15.9429C15.9429 28.8875 18.1714 31 20.9143 31ZM20.9143 27.1C21.7714 27.1 22.5429 27.75 22.5429 28.6438C22.5429 29.4563 21.8571 30.1875 20.9143 30.1875C19.9714 30.1875 19.2857 29.5375 19.2857 28.6438C19.3714 27.75 20.0571 27.1 20.9143 27.1Z" fill="#FFDB82"/>
<path d="M30.4286 15H11.5714C10.7071 15 10 15.54 10 16.2V19.8C10 20.46 10.7071 21 11.5714 21H13.2295C14.3632 18.5548 17.4095 15.6 21 15.6C24.5905 15.6 27.6368 18.5548 28.7705 21H30.4286C31.2929 21 32 20.46 32 19.8V16.2C32 15.54 31.2929 15 30.4286 15Z" fill="#FFDB82"/>
<defs>
<filter id="filter0_i_1302_2627" x="1" y="1" width="40" height="39.9995" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter0_i_1302_2626" x="1" y="1" width="40" height="40.7959" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="2.4"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.823529 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2627"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.745098 0 0 0 0 0.627451 0 0 0 0 0.0980392 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2626"/>
</filter>
<filter id="filter1_i_1302_2627" x="15.7061" y="43.5" width="10" height="7.5" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter1_i_1302_2626" x="15.6348" y="43.3506" width="10" height="7.64941" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="2.4"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.823529 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2627"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.745098 0 0 0 0 0.627451 0 0 0 0 0.0980392 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2626"/>
</filter>
<filter id="filter2_i_1302_2627" x="4.92188" y="4.75" width="32.5" height="32.4995" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter2_i_1302_2626" x="4.90234" y="4.82471" width="32.5" height="33.147" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="5.4"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.12549 0 0 0 0 0.12549 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2627"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.831373 0 0 0 0 0.768627 0 0 0 0 0.498039 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2626"/>
</filter>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

46
ruoyi-ui/src/views/JiHeExpressway/images/deviceType/balle_fault.svg

@ -1,51 +1,51 @@
<svg width="42" height="52" viewBox="0 0 42 52" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M21 41.796C32.0457 41.796 41 32.6635 41 21.398C41 10.1325 32.0457 1 21 1C9.9543 1 1 10.1325 1 21.398C1 32.6635 9.9543 41.796 21 41.796Z" fill="white"/>
<g filter="url(#filter0_i_1302_2626)">
<path d="M21 41.796C32.0457 41.796 41 32.6635 41 21.398C41 10.1325 32.0457 1 21 1C9.9543 1 1 10.1325 1 21.398C1 32.6635 9.9543 41.796 21 41.796Z" fill="black"/>
<path d="M21 40.9997C32.0457 40.9997 41 32.0455 41 20.9998C41 9.95424 32.0457 1 21 1C9.9543 1 1 9.95424 1 20.9998C1 32.0455 9.9543 40.9997 21 40.9997Z" fill="white"/>
<g filter="url(#filter0_i_1302_2627)">
<path d="M21 40.9997C32.0457 40.9997 41 32.0455 41 20.9998C41 9.95424 32.0457 1 21 1C9.9543 1 1 9.95424 1 20.9998C1 32.0455 9.9543 40.9997 21 40.9997Z" fill="black"/>
</g>
<path d="M21 41.796C32.0457 41.796 41 32.6635 41 21.398C41 10.1325 32.0457 1 21 1C9.9543 1 1 10.1325 1 21.398C1 32.6635 9.9543 41.796 21 41.796Z" stroke="#BEA019" stroke-width="0.6"/>
<path d="M21.002 51L26.002 43.3507H16.002L21.002 51Z" fill="white"/>
<g filter="url(#filter1_i_1302_2626)">
<path d="M20.6348 51L25.6348 43.3507H15.6348L20.6348 51Z" fill="black"/>
<path d="M21 40.9997C32.0457 40.9997 41 32.0455 41 20.9998C41 9.95424 32.0457 1 21 1C9.9543 1 1 9.95424 1 20.9998C1 32.0455 9.9543 40.9997 21 40.9997Z" stroke="#D20000" stroke-width="0.6"/>
<path d="M21 51L26 43.5001H16L21 51Z" fill="white"/>
<g filter="url(#filter1_i_1302_2627)">
<path d="M20.7061 51L25.7061 43.5001H15.7061L20.7061 51Z" fill="black"/>
</g>
<path d="M21.002 51L26.002 43.3507H16.002L21.002 51Z" stroke="#BEA019" stroke-width="0.6"/>
<path d="M20.999 37.9715C29.9736 37.9715 37.249 30.5513 37.249 21.3981C37.249 12.2449 29.9736 4.82471 20.999 4.82471C12.0244 4.82471 4.74902 12.2449 4.74902 21.3981C4.74902 30.5513 12.0244 37.9715 20.999 37.9715Z" fill="#BEA019"/>
<g filter="url(#filter2_i_1302_2626)">
<path d="M21.1523 37.9715C30.127 37.9715 37.4023 30.5513 37.4023 21.3981C37.4023 12.2449 30.127 4.82471 21.1523 4.82471C12.1777 4.82471 4.90234 12.2449 4.90234 21.3981C4.90234 30.5513 12.1777 37.9715 21.1523 37.9715Z" fill="black"/>
<path d="M21 51L26 43.5001H16L21 51Z" stroke="#D20000" stroke-width="0.6"/>
<path d="M21 37.2497C29.9746 37.2497 37.25 29.9744 37.25 20.9999C37.25 12.0253 29.9746 4.75 21 4.75C12.0254 4.75 4.75 12.0253 4.75 20.9999C4.75 29.9744 12.0254 37.2497 21 37.2497Z" fill="#D20000"/>
<g filter="url(#filter2_i_1302_2627)">
<path d="M21.1719 37.2497C30.1465 37.2497 37.4219 29.9744 37.4219 20.9999C37.4219 12.0253 30.1465 4.75 21.1719 4.75C12.1972 4.75 4.92188 12.0253 4.92188 20.9999C4.92188 29.9744 12.1972 37.2497 21.1719 37.2497Z" fill="black"/>
</g>
<path d="M20.999 37.9715C29.9736 37.9715 37.249 30.5513 37.249 21.3981C37.249 12.2449 29.9736 4.82471 20.999 4.82471C12.0244 4.82471 4.74902 12.2449 4.74902 21.3981C4.74902 30.5513 12.0244 37.9715 20.999 37.9715Z" stroke="#D4C47F" stroke-width="1.2"/>
<path d="M15 25.3125H27C27 22.4688 24.7714 20.1125 21.9429 19.7062V18H16.7143V18.8125H20.2286V19.625C17.3143 20.0312 15 22.3875 15 25.3125ZM20.9143 31C23.6571 31 25.8857 28.8875 25.8857 26.2875H15.9429C15.9429 28.8875 18.1714 31 20.9143 31ZM20.9143 27.1C21.7714 27.1 22.5429 27.75 22.5429 28.6438C22.5429 29.4563 21.8571 30.1875 20.9143 30.1875C19.9714 30.1875 19.2857 29.5375 19.2857 28.6438C19.3714 27.75 20.0571 27.1 20.9143 27.1Z" fill="#FFDB82"/>
<path d="M30.4286 15H11.5714C10.7071 15 10 15.54 10 16.2V19.8C10 20.46 10.7071 21 11.5714 21H13.2295C14.3632 18.5548 17.4095 15.6 21 15.6C24.5905 15.6 27.6368 18.5548 28.7705 21H30.4286C31.2929 21 32 20.46 32 19.8V16.2C32 15.54 31.2929 15 30.4286 15Z" fill="#FFDB82"/>
<path d="M21 37.2497C29.9746 37.2497 37.25 29.9744 37.25 20.9999C37.25 12.0253 29.9746 4.75 21 4.75C12.0254 4.75 4.75 12.0253 4.75 20.9999C4.75 29.9744 12.0254 37.2497 21 37.2497Z" stroke="#FF2020" stroke-width="1.2"/>
<path d="M15 25.3125H27C27 22.4688 24.7714 20.1125 21.9429 19.7062V18H16.7143V18.8125H20.2286V19.625C17.3143 20.0312 15 22.3875 15 25.3125ZM20.9143 31C23.6571 31 25.8857 28.8875 25.8857 26.2875H15.9429C15.9429 28.8875 18.1714 31 20.9143 31ZM20.9143 27.1C21.7714 27.1 22.5429 27.75 22.5429 28.6438C22.5429 29.4563 21.8571 30.1875 20.9143 30.1875C19.9714 30.1875 19.2857 29.5375 19.2857 28.6438C19.3714 27.75 20.0571 27.1 20.9143 27.1Z" fill="#FF5F5F"/>
<path d="M30.4286 15H11.5714C10.7071 15 10 15.54 10 16.2V19.8C10 20.46 10.7071 21 11.5714 21H13.2295C14.3632 18.5548 17.4095 15.6 21 15.6C24.5905 15.6 27.6368 18.5548 28.7705 21H30.4286C31.2929 21 32 20.46 32 19.8V16.2C32 15.54 31.2929 15 30.4286 15Z" fill="#FF5F5F"/>
<defs>
<filter id="filter0_i_1302_2626" x="1" y="1" width="40" height="40.7959" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter0_i_1302_2627" x="1" y="1" width="40" height="39.9995" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="2.4"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.745098 0 0 0 0 0.627451 0 0 0 0 0.0980392 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2626"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.823529 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2627"/>
</filter>
<filter id="filter1_i_1302_2626" x="15.6348" y="43.3506" width="10" height="7.64941" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter1_i_1302_2627" x="15.7061" y="43.5" width="10" height="7.5" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="2.4"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.745098 0 0 0 0 0.627451 0 0 0 0 0.0980392 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2626"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.823529 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2627"/>
</filter>
<filter id="filter2_i_1302_2626" x="4.90234" y="4.82471" width="32.5" height="33.147" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<filter id="filter2_i_1302_2627" x="4.92188" y="4.75" width="32.5" height="32.4995" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="5.4"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.831373 0 0 0 0 0.768627 0 0 0 0 0.498039 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2626"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.12549 0 0 0 0 0.12549 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_1302_2627"/>
</filter>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

1
ruoyi-ui/src/views/JiHeExpressway/images/event/设备.svg

@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1726890676633" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1538" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M786.809 847.838c-78.767 41.195-174.909-12.715-185.924-101.68-2.165-17.485-1.77-34.846 4.06-51.473 2.682-7.645 0.749-12.033-4.534-17.296-85.062-84.735-170.007-169.587-254.762-254.628-5.792-5.813-10.415-6.833-18.577-4.539-72.713 20.445-148.312-25.295-163.248-99.328-5.504-27.284-3.914-54.766 8.968-80.467 5.553-0.898 7.24 3.702 9.867 6.302 25.058 24.797 49.784 49.928 74.935 74.63 21.171 20.792 46.71 21.995 65.357 3.665 18.325-18.011 17.284-44.533-3.222-65.374-27.202-27.645-54.811-54.889-84.062-84.119 40.922-16.76 79.539-17.603 117.611 2.244 54.164 28.234 81.982 92.17 65.165 150.84-2.618 9.135-0.449 13.802 5.454 19.685 84.324 84.027 168.561 168.14 252.514 252.538 6.738 6.774 12.271 7.202 21.269 5.065 50.978-12.11 95.839 0.585 130.861 39.423 33.614 37.275 43.297 81.071 26.675 129.642-3.615 10.561-5.963 14.77-15.988 4.182-24.58-25.96-50.174-50.973-75.733-75.986-13.395-13.108-29.463-18.45-47.742-11.505-16.112 6.122-25.69 18.124-27.916 35.359-2.144 16.605 4.963 29.586 16.483 40.933 27.275 26.858 54.347 53.923 82.489 81.887z m-625.06-53.597c-2.14-16.57 5.342-31.411 17.68-43.805 69.58-69.892 139.431-139.514 209.017-209.4 4.931-4.954 7.687-6.024 13.22-0.363 26.426 27.042 53.244 53.707 80.263 80.159 5.226 5.116 5.455 7.934 0.115 13.24-69.966 69.507-139.195 139.763-209.691 208.727-34.114 33.373-85.326 24.101-105.52-17.11-4.615-9.422-5.094-12.225-5.084-31.448z m443.146-330.187c-2.417-2.07-4.787-3.859-6.879-5.932-10.879-10.778-21.303-22.052-32.663-32.293-6.879-6.2-5.358-9.823 0.509-15.556 25.924-25.337 50.785-51.788 77.244-76.542 20.823-19.482 39.05-40.66 48.748-67.477 15.324-42.376 43.383-70.798 85.786-85.975 13.315-4.766 26.082-17.779 38.354-16.877 12.574 0.924 20.05 18.9 31.37 27.397 13.863 10.403 15.204 19.93 5.647 35.01-13.05 20.592-23.243 43.04-34.014 65.008-3.831 7.814-8.87 13.25-16.868 16.529-59.122 24.25-108.413 61.834-150.243 109.896-12.372 14.216-26.559 26.851-39.939 40.187-2.153 2.146-4.43 4.17-7.052 6.625z" p-id="1539" fill="#FF5F5F"></path></svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
ruoyi-ui/src/views/JiHeExpressway/images/shoufeiz/大学城收费站.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

BIN
ruoyi-ui/src/views/JiHeExpressway/images/shoufeiz/孝里收费站.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 128 KiB

1
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue

@ -163,7 +163,6 @@ export default {
if(this.dialogData.useState){
this.deviceControlVisible = true
}
},
updateFormData(formData) {
formData.workMode &&

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

@ -6,6 +6,20 @@
<ElTabs v-model="activeName" class="tabs">
<ElTabPane label="基本信息" name="first">
<Descriptions :list="list" :data="data" style="gap: 18px" />
<div class="jsdcontrol">
<span style="
color: #3de8ff;
font-size: 12px;
font-family: PingFang SC, PingFang SC;
font-weight: 400;
line-height: 25px;
">
警示灯:
</span>
<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(34)">退出</Button>
</div>
</ElTabPane>
<ElTabPane label="在线率统计" name="third">
@ -111,8 +125,8 @@ export default {
async created() {
// if (!this.dialogData.iotDeviceId) this.dialogData.iotDeviceId = '10.0.36.146-1883';
// camid
console.log(this.dialogData,3333)
// camid
if(typeof this.dialogData.otherConfig === 'string'){
const oConfig = JSON.parse(this.dialogData.otherConfig)
if(oConfig && oConfig.camId){
@ -132,6 +146,23 @@ export default {
// if (roadInfo) this.data.roadName = roadInfo.roadName;
},
methods:{
controlClick(id){
request({
url: `/business/device/functions/${this.dialogData.iotDeviceId}/A3`,
method: "POST",
data: {
function:id
}
}).then(res=>{
if (result.code != 200) {
this.$message.error(result.msg);
return;
};
this.$message.success('设备请求完成')
})
}
}
};
</script>
@ -190,4 +221,9 @@ div.switcher {
}
}
}
.jsdcontrol{
display:flex;
margin-top:20px;
align-content: center;
}
</style>

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

@ -3,47 +3,55 @@
v-model="obverseVisible"
:title="dialogData._itemData && dialogData._itemData.title"
@update:close="camClose"
width="500px" top="10%">
<div class="RoadNetworkFacilities">
<div class="header">
<Video ref="refVideo" class="video-stream" :pileNum="dialogData.stakeMark" rangeIndex="upCamera" :showHeader="false" />
</div>
<div class="SolarEnergy">
<ElTabs v-model="activeName" class="tabs">
<ElTabPane v-for="item in formList" :key="item.key" :label="item.name" :name="item.key">
<Descriptions :labelWidth="item.labelWidth" :list="item.list" :data="data" style="gap: 12px" column="6" />
</ElTabPane>
<ElTabPane label="边坡测点数据" v-if="dialogData.facilityType === 9">
<Table :data="bianpoData" height="200px" >
<ElTableColumn label="项目编号" prop="pro_code" width="80" ></ElTableColumn>
<ElTableColumn label="标段编号" prop="con_code" width="80" ></ElTableColumn>
<ElTableColumn label="测点名称" prop="meaPointName" width="80" ></ElTableColumn>
<ElTableColumn label="工程编号" prop="unit_code" ></ElTableColumn>
<ElTableColumn label="测点编号" prop="meaPointNum" ></ElTableColumn>
</Table>
</ElTabPane>
<ElTabPane label="测点历史数据" v-if="dialogData.facilityType === 9">
<el-select v-model="bindpoSelecte" placeholder="" @change="bindListAsync" transfer="true"
style="width: 240px;">
<el-option v-for="item in bianpoOptions"
:key="item.key" :label="item.label"
:value="item.key">
</el-option>
</el-select>
<el-date-picker v-model="daterangeChangeTime" size="mini"
style="width: 190px;float:right;margin-bottom: 10px;" value-format="yyyy-MM-dd" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
<div class='chart LineChart' ref="chartRef" />
</ElTabPane>
<ElTabPane :label="'UPS'+(index+1)" :key="'UPS_'+item" :name="'UPS_'+item" v-for="(item,index) in upsList" v-if="dialogData.facilityType === 1">
<Descriptions labelWidth="142px" :list="upsForm" :data="upsData" style="gap: 12px" column="6" />
</ElTabPane>
:width="isCameraMap?'1300px':'500px'" top="10%">
<div class="panelParent" style="display:flex;">
<div class="RoadNetworkFacilities">
<div class="header">
<Video ref="refVideo" class="video-stream" @nearload="bindNearLoad" :pileNum="dialogData.stakeMark" :rangeIndex="dialogData.facilityType === 1?'all':'upCamera'" :showHeader="false" />
</div>
<div class="SolarEnergy">
<ElTabs v-model="activeName" class="tabs">
<ElTabPane v-for="item in formList" :key="item.key" :label="item.name" :name="item.key">
<Descriptions :labelWidth="item.labelWidth" :list="item.list" :data="data" style="gap: 12px" column="6" />
</ElTabPane>
<ElTabPane label="边坡测点数据" v-if="dialogData.facilityType === 9">
<Table :data="bianpoData" height="200px" >
<ElTableColumn label="项目编号" prop="pro_code" width="80" ></ElTableColumn>
<ElTableColumn label="标段编号" prop="con_code" width="80" ></ElTableColumn>
<ElTableColumn label="测点名称" prop="meaPointName" width="80" ></ElTableColumn>
<ElTableColumn label="工程编号" prop="unit_code" ></ElTableColumn>
<ElTableColumn label="测点编号" prop="meaPointNum" ></ElTableColumn>
</Table>
</ElTabPane>
<ElTabPane label="测点历史数据" v-if="dialogData.facilityType === 9">
<el-select v-model="bindpoSelecte" placeholder="" @change="bindListAsync" transfer="true"
style="width: 240px;">
<el-option v-for="item in bianpoOptions"
:key="item.key" :label="item.label"
:value="item.key">
</el-option>
</el-select>
<el-date-picker v-model="daterangeChangeTime" size="mini"
style="width: 190px;float:right;margin-bottom: 10px;" value-format="yyyy-MM-dd" type="daterange"
range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
<div class='chart LineChart' ref="chartRef" />
</ElTabPane>
<template v-if="dialogData.facilityType === 1">
<ElTabPane :label="'UPS'+(index+1)" :key="'UPS_'+item" :name="'UPS_'+item" v-for="(item,index) in upsList">
<Descriptions labelWidth="142px" :list="upsForm" :data="upsData" style="gap: 12px" column="6" />
</ElTabPane>
</template>
</ElTabs>
</ElTabs>
</div>
</div>
<div style="margin-left:20px" v-if="isCameraMap">
<div :style="'background-image:url('+imgSrc+')'" class="cameraMap">
<img v-for="(item,index) of cameraMaps" :key="index" @click="showCamera(item)"
:style="'left:'+item.left+'px;top:'+item.top+'px'"
width="50px" height="50px" :src="item.status===0?item.iconUn:item.icon" />
</div>
</div>
</div>
</Dialog>
</template>
@ -63,7 +71,16 @@ import { chartOption } from "./chart"
import moment from "moment";
import Table from "@screen/components/Table.vue";
const icona = require(`@screen/images/layerb/路测设备/摄像机_active.svg`);// childType==='1-2
const icona_f = require(`@screen/images/layerb/路测设备/摄像机_fault.svg`);
const iconb = require(`@screen/images/deviceType/ballb_active.svg`); // childType==='1-2
const iconb_f = require(`@screen/images/deviceType/ballb_fault.svg`);
const iconc = require(`@screen/images/deviceType/ballc_active.svg`); // 1-3
const iconc_f = require(`@screen/images/deviceType/ballc_fault.svg`);
const icond = require(`@screen/images/deviceType/balld_active.svg`); // 1-4 360°
const icond_f = require(`@screen/images/deviceType/balld_fault.svg`);
const icone = require(`@screen/images/deviceType/balle_active.svg`); //1-5 180°
const icone_f = require(`@screen/images/deviceType/balle_fault.svg`);
//
export default {
name: "RoadNetworkFacilities",
@ -97,7 +114,10 @@ export default {
upsData:{},
// UPS
upsList:[],
//
isCameraMap:false,
imgSrc:'',
cameraMaps:[]
};
},
watch: {
@ -165,21 +185,53 @@ export default {
// pointList = resPointList.data.result[0]
// }
dData = { ...dData, ...otherConfig,}
this.isCameraMap = false;
this.cameraMaps = [];
if(dData.facilityType === 1){
// console.log('')
if(dData.facilityName === '大学城收费站'){
this.imgSrc = require('@screen/images/shoufeiz/大学城收费站.jpg')
this.cameraMaps = [
{icon:icona,iconUn:icona_f,left:50,top:50,status:0,iotDeviceId:'57954'},
{icon:iconb,iconUn:iconb_f,left:500,top:50,status:0,iotDeviceId:'57939'},
{icon:iconc,iconUn:iconc_f,left:100,top:200,status:0,iotDeviceId:'57941'},
{icon:iconc,iconUn:iconc_f,left:600,top:500,status:0,iotDeviceId:'111111'},
{icon:icone,iconUn:icone_f,left:200,top:400,status:0,iotDeviceId:'222222'},
{icon:icona,iconUn:icona_f,left:30,top:30,status:0,iotDeviceId:'57953'}
]
this.isCameraMap = true;
}
else if(dData.facilityName === '孝里收费站'){
this.imgSrc = require('@screen/images/shoufeiz/孝里收费站.jpg')
this.isCameraMap = true;
}
}
this.upsList=otherConfig.UPSList||[]
}
this.data = dData;
},
methods: {
bindNearLoad(e){
for(let i of this.cameraMaps){
if(e.indexOf(i.iotDeviceId) !== -1){
i.status = 1;
}
}
},
camClose(){
if(this.$refs.refVideo.closeContrl){
this.$refs.refVideo.closeContrl()
}
this.upsList =[]
},
showCamera(item){
if(item.status === 1){
this.$refs.refVideo.setCameraId(item.iotDeviceId)
} else {
this.$message.warning('设备离线')
}
},
bindUPS(id){
request({
url: `business/device/properties/latest/${id}`,
@ -258,7 +310,10 @@ export default {
height: 160px;
overflow: hidden;
}
.panelParent{
display: flex;
flex-direction: row;
}
.RoadNetworkFacilities {
width: 452px;
color: #fff;
@ -316,4 +371,16 @@ export default {
}
}
}
.cameraMap{
position:relative;
width:800px;
height:600px;
background-repeat: no-repeat;
background-size: 100% 100%;
img{
position: absolute;
cursor: pointer;
}
}
</style>

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

@ -408,6 +408,7 @@ export default {
transition: all .24s linear;
height: 0px;
overflow-y: auto;
min-height: 185px;
.device-item {
// position: absolute;
position: relative;

32
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/abnormal/data.js

@ -0,0 +1,32 @@
// import * as PresetFormItems from "@screen/pages/control/event/event/FormEvent/PresetFormItems.js";
import * as PresetFormItems from "@screen/common/PresetFormItems.js";
// import { merge, cloneDeep } from "lodash";
import {directionOptions} from '@screen/utils/enum.js';
export const searchFormList = [
{
label: "处理状态:",
key: "status",
type: "select",
options: {
clearable: true,
options: [
{key:'0', label:'未处理'},
{key:'1', label:'已处理'},
{key:'2', label:'自动处理'}
],
},
},
{
label: "发生时间:",
key: "createTime",
required: false,
type: "datePicker",
options: {
type: "daterange",
format: "yyyy-MM-dd",
valueFormat: "yyyy-MM-dd",
},
},
];

242
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/abnormal/index.vue

@ -0,0 +1,242 @@
<template>
<div class='board_record'>
<!-- 搜索栏 -->
<div class="filter">
<div>
<ButtonGradient @click="onRefreshForm" class="refresh-btn">
<template #prefix>
<img src="@screen/images/refresh.svg" />
</template>
刷新
</ButtonGradient>
</div>
<InputSearch ref="searchComp" style="width: 400px" :formList="searchFormList"
:formConfigOptions="{ dFormData: { eventState: '0' } }" @handleSearch="handleSearch" />
</div>
<!-- 内容 -->
<div class="body">
<Table :data="tableData" height="75vh" >
<el-table-column label="序号" type="index" :index="indexMethod" width="100" align="center"
header-align="center" />
<ElTableColumn label="设备名称" show-overflow-tooltip prop="deviceName" header-align="center" />
<ElTableColumn label="设备类型" prop="deviceTypeName" />
<ElTableColumn label="方向" prop="directionName" />
<ElTableColumn label="安装位置" prop="installationSite" />
<ElTableColumn label="设备归属类型" prop="facilitiesTypeName" />
<ElTableColumn label="桩号" prop="stakeMark" />
<ElTableColumn label="时间" prop="warningTime" />
<ElTableColumn label="状态" width="150" prop="stateName" />
<ElTableColumn label="操作" width="130" align="center">
<template slot-scope="scope">
<ElButton type="text" v-if="scope.row.status==='0'" style="color: #00D1FF;" @click="showDisposal(scope.row)">处理</ElButton>
</template>
</ElTableColumn>
</Table>
</div>
<!-- 分页 -->
<div class="footer">
<Pagination @current-change="initData" @size-change="onSizeChange" width="'100%'"
:page-sizes="[10, 20, 30, 40, 50]" :page-size="searchData.pageSize" :current-page.sync="searchData.pageNum"
layout="total, sizes, prev, pager, next" :total="total">
</Pagination>
</div>
</div>
</template>
<script>
import ButtonGradient from '@screen/components/Buttons/ButtonGradient.vue';
import Pagination from '@screen/components/Pagination.vue';
import Table from '@screen/components/Table.vue';
import request from '@/utils/request'
import BoardRecordPreview from '@screen/components/infoBoard/BoardRecordPreview.vue'
import InputSearch from "@screen/components/InputSearch/index.vue";
import { searchFormList } from "./data";
import { getToken } from "@/utils/auth";
import { delay, exportFile, confirm } from "@screen/utils/common";
import { Message } from "element-ui";
import Button from "@screen/components/Buttons/Button.vue";
import Form from "@screen/components/FormConfig";
import {deviceTypeOptions} from '@screen/utils/enum.js';
import DialogWarning from '@screen/components/HeaderMenu/dialogWarn/DialogWarning.vue'
export default {
name: 'boardRecord',
components: {
ButtonGradient,
Pagination,
Table,
Button,
Form,
DialogWarning,
BoardRecordPreview,
InputSearch
},
data() {
return {
WarningType:{
1: '交通流预警',
2: '气象预警'
},
tableData: [],
searchFormList,
total: 20,
searchData: {
pageSize: 20,
pageNum: 1
},
dialogWarningVisible: false,
}
},
created() {
this.initData();
},
mounted(){
},
methods: {
onRefreshForm(){
this.searchData.pageNum = 1;
this.$refs.searchComp.handleResetForm();
},
handleSearch(data) {
let startTime = null;
let endTime = null;
if(data.warningTime && data.warningTime.length ===2){
startTime = data.warningTime[0]+' 00:00:00'
endTime = data.warningTime[1]+' 23:59:59'
}
this.searchData = {
...this.searchData,
status: (data.status===undefined||data.status===''?null:data.status),
};
this.initData();
},
indexMethod(index) {
return this.searchData.pageSize*(this.searchData.pageNum-1) + index + 1;
},
//
showDisposal(row){
const self = this;
this.$confirm(`是否确认处理设备【${row['deviceName']}】异常?`, "异常处理", {
confirmButtonText: "处理",
cancelButtonText: "取消",
type: "warning"
}).then(function() {
request({
url: `/deviceOfflineRecord`,
method: 'put',
data:{
...row,
status:'1'
}
}).then(res=>{
self.initData();
self.$modal.msgSuccess("处理成功");
})
}).catch(function() {});
},
//
initData() {
request({
url: `/deviceOfflineRecord/list`,
method: "get",
params: this.searchData,
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
console.log(result)
const enum_facilitiesType = {
0: '默认',
1: '道路沿线',
2: '桥梁',
3: '隧道',
4: '收费广场',
5: '收费站',
6: '服务区'
}
result.rows.forEach(e=>{
e.deviceTypeName = _.find(deviceTypeOptions,{value:parseInt(e.deviceType)}).label
e.directionName = e.direction==='1'?'菏泽方向':'济南方向'
e.warningTime = moment(e.createTime).format('YYYY-MM-DD HH:mm:ss')
e.stateName = (e.status==='0'?'未处理':(e.status==='1'?'已处理':'自动处理'))
e.facilitiesTypeName = enum_facilitiesType[e.facilitiesType]
})
this.tableData = result.rows;
this.total = result.total;
});
},
onSizeChange(pageSize) {
this.tableData = [];
this.searchData.pageSize = pageSize;
this.searchData.pageNum = 1;
this.initData();
}
}
}
</script>
<style lang='scss' scoped>
.board_record {
padding: 0 14px 14px;
width:100%;
height: 100%;
display: flex;
flex-direction: column;
.filter {
height: 60px;
display: flex;
justify-content: space-between;
align-items: center;
>div {
display: flex;
gap: 6px;
}
}
.body {
flex: 1;
height: 0;
min-height: 0;
}
.footer {
margin-top: 15px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
}
.board_shower{
margin: 4px;
}
::v-deep .el-carousel__indicators--horizontal{
line-height: 0; height: 16px;
.el-carousel__indicator--horizontal{
padding: 7px 4px;
}
}
::v-deep .el-table__cell div.cell {
padding: 0 10px !important;
}
}
.upload-file{
width: 100%;
margin: 20px 0px;
background-color: #104c66 !important;
border: 1px solid #359cbc !important;
border-radius: 5px;
text-align: center;
padding: 5px 0px;
font-size: 14px;
cursor: pointer;
}
</style>

5
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/analysis/real/charts.js

@ -59,14 +59,13 @@ var options = {
},
grid: [
{
left: 40,
left: 60,
top: '25%',
right: 10,
height: "35%",
},
{
left: 40,
left: 60,
right: 10,
top: "60%",
height: "35%",

1
ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts.js

@ -46,6 +46,7 @@ let options = {
yAxis: [
{
name: "(起)",
minInterval:1,
nameTextStyle: {
color: "#E5E7E8",
fomtSize: 10,

174
ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts3.js

@ -1,7 +1,6 @@
import * as echarts from "echarts";
let options = {
color:['#00A3FF','#0c8c52','#c7d61d'],
tooltip: {
show: true,
trigger: "axis",
@ -73,6 +72,7 @@ let options = {
axisTick: {
show: false,
},
minInterval:1,
},
],
legend: {
@ -90,174 +90,34 @@ let options = {
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#0c8c52", // 0% 处的颜色
},
{
offset: 1,
color: "#003B4E", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
// lenged文本
opacity: 1,
color: function (params) {
var a = params.name;
// console.log("==========a=============", a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#00A3FF", // 0% 处的颜色
},
{
offset: 1,
color: "#00A3FF00", // 100% 处的颜色
},
],
false
);
},
},
data: [],
}, {
name: "小型车",
type: "bar",
barWidth: "10px",
data: [],
}, {
name: "客车",
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#0c8c52", // 0% 处的颜色
},
{
offset: 1,
color: "#003B4E", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
// lenged文本
opacity: 1,
color: function (params) {
var a = params.name;
// console.log("==========a=============", a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#0c8c52", // 0% 处的颜色
},
{
offset: 1,
color: "#0c8c5200", // 100% 处的颜色
},
],
false
);
},
},
data: [],
}, {
name: "货车",
type: "bar",
barWidth: "10px",
selectedMode: false,
data: [],
}, {
name: "小型车",
type: "bar",
barWidth: "10px",
data: [],
}, {
name: "客车",
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#c7d61d", // 0% 处的颜色
},
{
offset: 1,
color: "#003B4E", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
// lenged文本
opacity: 1,
color: function (params) {
var a = params.name;
// console.log("==========a=============", a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#c7d61d", // 0% 处的颜色
},
{
offset: 1,
color: "#c7d61d00", // 100% 处的颜色
},
],
false
);
},
},
data: [],
}
],

1
ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts4.js

@ -73,6 +73,7 @@ let options = {
axisTick: {
show: false,
},
minInterval:1,
},
],
legend: {

116
ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts6.js

@ -1,7 +1,6 @@
import * as echarts from "echarts";
let options = {
color:['#00A3FF','#0c8c52'],
tooltip: {
show: true,
trigger: "axis",
@ -73,6 +72,7 @@ let options = {
axisTick: {
show: false,
},
minInterval:1,
},
],
legend: {
@ -89,117 +89,23 @@ let options = {
name: "封闭",
type: "bar",
barWidth: "10px",
data: [],
}, {
name: "限行",
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#0c8c52", // 0% 处的颜色
},
{
offset: 1,
color: "#003B4E", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
// lenged文本
opacity: 1,
color: function (params) {
var a = params.name;
// console.log("==========a=============", a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#00A3FF", // 0% 处的颜色
},
{
offset: 1,
color: "#00A3FF00", // 100% 处的颜色
},
],
false
);
},
},
data: [],
}, {
name: "封闭",
type: "bar",
barWidth: "10px",
data: [],
}, {
name: "限行",
type: "bar",
barWidth: "10px",
selectedMode: false,
select: {
itemStyle: {
opacity: 1,
color: function (params) {
var a = params;
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#0c8c52", // 0% 处的颜色
},
{
offset: 1,
color: "#003B4E", // 100% 处的颜色
},
],
false
);
},
},
},
itemStyle: {
barBorderRadius: [10, 10, 10, 10], // 圆角(左上、右上、右下、左下)
// lenged文本
opacity: 1,
color: function (params) {
var a = params.name;
// console.log("==========a=============", a);
return new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#0c8c52", // 0% 处的颜色
},
{
offset: 1,
color: "#0c8c5200", // 100% 处的颜色
},
],
false
);
},
},
data: [],
}
],

85
ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts8.js

@ -14,11 +14,15 @@ var options = {
}
return `${name1}
<br/>
${params[0].marker}${params[0].seriesName}: <span style="font-weight:bold;"> ${params[0].value} </span>
${params[0].marker}${params[0].seriesName}: <span style="font-weight:bold;"> ${params[0].value} </span>
<br/>
${params[1].marker}${params[1].seriesName}: <span style="font-weight:bold;"> ${params[1].value} </span>
<br/><br/>
${name2}
<br/>
${params[1].marker}${params[1].seriesName}: <span style="font-weight:bold;"> ${params[1].value} </span>`;
${params[2].marker}${params[2].seriesName}: <span style="font-weight:bold;"> ${params[2].value} </span>
<br/>
${params[3].marker}${params[3].seriesName}: <span style="font-weight:bold;"> ${params[3].value} </span>`;
},
},
axisPointer: {
@ -55,14 +59,13 @@ var options = {
},
grid: [
{
left: 40,
left: 70,
top: '25%',
right: 10,
height: "35%",
},
{
left: 40,
left: 70,
right: 10,
top: "60%",
height: "35%",
@ -151,6 +154,7 @@ var options = {
splitLine: {
show: false,
},
minInterval:1,
},
{
gridIndex: 1,
@ -169,6 +173,7 @@ var options = {
splitLine: {
show: false,
},
minInterval:1,
},
],
series: [
@ -205,6 +210,40 @@ var options = {
57, 36, 56, 95, 125, 194, 94, 94, 74, 34, 125, 194, 94, 94, 74, 34,
],
},
{
name: "去年同期",
type: "line",
symbol: 'none',
smooth: true,
lineStyle: {
type:'dashed',
width: 1
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 1,
color: "#5FA52B00",
},
{
offset: 0,
color: "#5FA52B55",
},
],
false
),
},
},
data: [
94, 74, 34, 125, 194, 94, 94, 74, 34,57, 36, 56, 95, 125, 194, 94,
],
},
{
name: "本期车流量",
type: "line",
@ -241,6 +280,42 @@ var options = {
67, 36, 56, 195, 25, 194, 94, 94, 74, 21, 195, 25, 194, 94, 94, 74, 21,
],
},
{
name: "去年同期",
type: "line",
symbol: 'none',
smooth: true,
xAxisIndex: 1,
yAxisIndex: 1,
lineStyle: {
type:'dashed',
width: 1
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 1,
color: "#5FA52B00",
},
{
offset: 0,
color: "#5FA52B55",
},
],
false
),
},
},
data: [
195,25, 194, 94, 94, 7, 25, 194, 94, 94, 74, 21, 67, 36, 56, 195, 4, 21,
],
},
],
};

312
ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/index.vue

@ -24,11 +24,13 @@
</div>
<div class="cright">
<div style="display: flex;justify-content: flex-end;padding-right: 20px;"><Search ref="search" /></div>
<div class="tag1" v-if="this.curid==='8' ">方向济南<span></span></div>
<div class="tag2" v-if="this.curid==='8' "><span></span>方向菏泽</div>
<div class="tag1" v-if=" this.curid==='9'">方向出口<span></span></div>
<div class="tag2" v-if=" this.curid==='9'"><span></span>方向入口</div>
<div :hidden="curid===''" class="charts "id="charts"></div>
<div v-if="curid === ''" style="height:300px"></div>
<div class="tag1A" v-if="curid==='8' ">方向济南<span></span></div>
<div class="tag2A" v-if="curid==='8' "><span></span>方向菏泽</div>
<div class="tag1A" v-if=" curid==='9'">方向出口<span></span></div>
<div class="tag2A" v-if=" curid==='9'"><span></span>方向入口</div>
<div :hidden="curid==='' || curid==='7'" class="charts "id="charts"></div>
<div style="overflow: none;height: 450px">
<Table :data="tableData" style="width: 99%;margin-top: 30px;" height="430px">
<ElTableColumn v-for="(item,index) of tableCols" :label="item.label" :prop="item.value" align="center" />
@ -51,6 +53,7 @@ import chartsOptions4 from "./charts4";
import chartsOptions6 from "./charts6";
import chartsOptions8 from "./charts8";
import Table from '@screen/components/Table.vue';
import { chartOption } from '../../Home/components/Dialogs/RoadNetworkFacilities/chart';
//
export default {
@ -136,6 +139,7 @@ export default {
bind(){
let id = this.$refs.menu.getCurrentKey();
let query = this.$refs.search.searchQuery();
const {thisTime,lastTime} = query;
if(id==='1'){
request({
url: '/business/sdhsEvent/sectionAnalysis',
@ -143,11 +147,10 @@ export default {
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'路段桩号',value:'stakeMark'},{label:query.thisTime+' 数量(起)',value:query.thisTime},{label:query.lastTime+' 数量(起)',value:query.lastTime}]
let _tableData = []
chartsOptions.series[0].name = query.thisTime;
chartsOptions.series[1].name = query.lastTime;
this.tableCols = [{label:'路段桩号',value:'stakeMark'},{label:thisTime+' 数量(起)',value:thisTime},{label:lastTime+' 数量(起)',value:lastTime}]
chartsOptions.series[0].name = thisTime;
chartsOptions.series[1].name = lastTime;
if(result.data.length === 0){
this.tableData = []
chartsOptions.series[0].data = []
@ -160,9 +163,9 @@ export default {
this.tableData = result.data;
this.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = _tableData.map(x=>x[query.thisTime])
chartsOptions.series[1].data = _tableData.map(x=>x[query.lastTime])
chartsOptions.xAxis.data = _tableData.map(x=>x.stakeMark);
chartsOptions.series[0].data = this.tableData.map(x=>x[thisTime])
chartsOptions.series[1].data = this.tableData.map(x=>x[lastTime])
chartsOptions.xAxis.data = this.tableData.map(x=>x.stakeMark);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
@ -174,32 +177,28 @@ export default {
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'事故类型',value:'name'},{label:'数量(起)',value:'num'}]
let _tableData = []
if(_.keys(result.data).length === 0){
this.tableCols = [{label:'事故类型',value:'eventType'},{label:thisTime+' 数量(起)',value:thisTime},{label:lastTime+' 数量(起)',value:lastTime}]
chartsOptions.series[0].name = thisTime;
chartsOptions.series[1].name = lastTime;
if(result.data.length === 0){
this.tableData = []
chartsOptions.series[0].data = []
chartsOptions.series[1].data = []
this.myChart.setOption(chartsOptions);
this.myChart.resize();
this.tableData = []
this.$message.warning('暂无数据')
return;
}
for(let i in result.data){
_tableData.push({
name:i, num:result.data[i]
})
}
this.tableData = _tableData;
this.tableData = result.data;
this.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = _tableData.map(x=>x.num)
chartsOptions.xAxis.data = _tableData.map(x=>x.name);
chartsOptions.series[0].data = this.tableData.map(x=>x[thisTime])
chartsOptions.series[1].data = this.tableData.map(x=>x[lastTime])
chartsOptions.xAxis.data = this.tableData.map(x=>x.eventType);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
}, 200)
})
} else if(id==='3'){
request({
@ -208,12 +207,30 @@ export default {
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'事故类型',value:'name'},{label:'货车',value:'货车'},{label:'小型车',value:'小型车'},{label:'客车',value:'客车'}]
this.tableCols = [
{label:'事故类型',value:'name'},
{label:'货车'+thisTime,value:'货车'+thisTime},
{label:'小型车'+thisTime,value:'小型车'+thisTime},
{label:'客车'+thisTime,value:'客车'+thisTime},
{label:'货车'+lastTime,value:'货车'+lastTime},
{label:'小型车'+lastTime,value:'小型车'+lastTime},
{label:'客车'+lastTime,value:'客车'+lastTime}
]
chartsOptions3.series[0].name = '货车'+thisTime
chartsOptions3.series[1].name = '小型车'+thisTime
chartsOptions3.series[2].name = '客车'+thisTime
chartsOptions3.series[3].name = '货车'+lastTime
chartsOptions3.series[4].name = '小型车'+lastTime
chartsOptions3.series[5].name = '客车'+lastTime
if(_.keys(result.data).length === 0){
chartsOptions3.series[0].data = []
chartsOptions3.series[1].data = []
chartsOptions3.series[2].data = []
chartsOptions3.series[3].data = []
chartsOptions3.series[4].data = []
chartsOptions3.series[5].data = []
this.myChart.setOption(chartsOptions3);
this.myChart.resize();
this.tableData = []
@ -221,21 +238,27 @@ export default {
return;
}
let _tableData = []
for(let i in result.data){
_tableData.push({
name:i,
货车: result.data[i]['货车'] || 0,
小型车: result.data[i]['小型车'] || 0,
客车: result.data[i]['客车'] || 0,
})
for(let i in result.data[thisTime]){
const _row = {name:i}
_row['货车'+thisTime] = result.data[thisTime][i]['货车']||0
_row['小型车'+thisTime] = result.data[thisTime][i]['小型车']||0
_row['客车'+thisTime] = result.data[thisTime][i]['客车']||0
_row['货车'+lastTime] = result.data[lastTime][i]['货车']||0
_row['小型车'+lastTime] = result.data[lastTime][i]['小型车']||0
_row['客车'+lastTime] = result.data[lastTime][i]['客车']||0
_tableData.push(_row)
}
this.tableData = _tableData;
this.curid = id;
setTimeout(() => {
chartsOptions3.xAxis.data = _tableData.map(x=>x.name);
chartsOptions3.series[0].data = _tableData.map(x=>x.货车)
chartsOptions3.series[1].data = _tableData.map(x=>x.小型车)
chartsOptions3.series[2].data = _tableData.map(x=>x.客车)
chartsOptions3.series[0].data = _tableData.map(x=>x['货车'+thisTime])
chartsOptions3.series[1].data = _tableData.map(x=>x['小型车'+thisTime])
chartsOptions3.series[2].data = _tableData.map(x=>x['客车'+thisTime])
chartsOptions3.series[3].data = _tableData.map(x=>x['货车'+lastTime])
chartsOptions3.series[4].data = _tableData.map(x=>x['小型车'+lastTime])
chartsOptions3.series[5].data = _tableData.map(x=>x['客车'+lastTime])
this.myChart.setOption(chartsOptions3);
this.myChart.resize();
}, 200);
@ -250,47 +273,41 @@ export default {
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'事故时间',value:'time'},{label:'当前事故总量(起)',value:'num'},{label:'去年事故总量(起)',value:'numYes'}]
this.tableCols = [{label:'事故时间',value:'time'},{label:thisTime+'事故总量(起)',value:'num'},{label:lastTime+'事故总量(起)',value:'numYes'}]
let _tableData = []
chartsOptions4.series[0].name = thisTime;
chartsOptions4.series[1].name = lastTime;
this.curid = id;
let queryYes = _.cloneDeep(query)
queryYes.startTime = (Number(queryYes.startTime.substr(0,4))-1).toString()+queryYes.startTime.substr(4)
queryYes.endTime = (Number(queryYes.endTime.substr(0,4))-1).toString()+queryYes.endTime.substr(4)
request({
url: '/business/sdhsEvent/accidentTimeAnalysis',
method: 'post',
data: queryYes
}).then(resultYes=>{
if(_.keys(result.data).length === 0){
if(_.keys(result.data[thisTime]).length === 0){
chartsOptions4.series[0].data = []
chartsOptions4.series[1].data = []
chartsOptions4.xAxis.data = _tableData.map(x=>x.time);
chartsOptions4.xAxis.data = [];
this.myChart.setOption(chartsOptions4);
this.myChart.resize();
this.tableData = []
this.$message.warning('暂无数据')
return;
}
for(let i in result.data){
for(let i in result.data[thisTime]){
_tableData.push({
idx:parseInt(i),
time:i.toString()+ unit, num:result.data[i.toString()],numYes:resultYes.data[i.toString()]
time:i.toString()+ unit,
num:result.data[thisTime][i.toString()],
numYes:result.data[lastTime][i.toString()]
})
}
_tableData.sort(function(a,b){return a.idx-b.idx})
this.tableData = _tableData;
setTimeout(() => {
chartsOptions4.series[0].data = _tableData.map(x=>x.num)
chartsOptions4.series[1].data = _tableData.map(x=>x.numYes)
chartsOptions4.xAxis.data = _tableData.map(x=>x.time);
this.myChart.setOption(chartsOptions4);
this.myChart.resize();
})
setTimeout(() => {
}, 200);
},200)
})
} else if(id==='5'){
request({
@ -300,9 +317,12 @@ export default {
}).then(result=>{
console.log(result)
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'发生地区',value:'regionName'},{label:'数量(起)',value:'num'}]
this.tableCols = [{label:'发生地区',value:'city'},{label:thisTime+' 数量(起)',value:thisTime},{label:lastTime+' 数量(起)',value:lastTime}]
chartsOptions.series[0].name = thisTime;
chartsOptions.series[1].name = lastTime;
if(result.data.length===0){
chartsOptions.series[0].data = []
chartsOptions.series[1].data = []
this.myChart.setOption(chartsOptions);
this.myChart.resize();
this.tableData = []
@ -312,8 +332,10 @@ export default {
this.tableData = result.data;
this.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = result.data.map(x=>x.num)
chartsOptions.xAxis.data = result.data.map(x=>x.regionName);
chartsOptions.series[0].data = this.tableData.map(x=>x[thisTime])
chartsOptions.series[1].data = this.tableData.map(x=>x[lastTime])
chartsOptions.xAxis.data = result.data.map(x=>x.city);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
@ -326,11 +348,22 @@ export default {
}).then(result=>{
console.log(result)
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'发生地区',value:'stationName'},{label:'封闭',value:'close'},{label:'限行',value:'restriction'},{label:'全部',value:'allNum'}]
this.tableCols = [
{label:'发生地区',value:'stationName'},
{label:thisTime+'封闭',value:thisTime+'close'},
{label:thisTime+'限行',value:thisTime+'restriction'},
{label:lastTime+'封闭',value:lastTime+'close'},
{label:lastTime+'限行',value:lastTime+'restriction'},
]
chartsOptions6.series[0].name = thisTime+'封闭'
chartsOptions6.series[1].name = thisTime+'限行'
chartsOptions6.series[2].name = lastTime+'封闭'
chartsOptions6.series[3].name = lastTime+'限行'
if(result.data.length===0){
chartsOptions6.series[0].data = []
chartsOptions6.series[1].data = []
chartsOptions6.series[2].data = []
chartsOptions6.series[3].data = []
this.myChart.setOption(chartsOptions6);
this.myChart.resize();
this.tableData = []
@ -340,8 +373,10 @@ export default {
this.tableData = result.data;
this.curid = id;
setTimeout(() => {
chartsOptions6.series[0].data = result.data.map(x=>x.close)
chartsOptions6.series[1].data = result.data.map(x=>x.restriction)
chartsOptions6.series[0].data = result.data.map(x=>x[thisTime+'close'])
chartsOptions6.series[1].data = result.data.map(x=>x[thisTime+'restriction'])
chartsOptions6.series[2].data = result.data.map(x=>x[lastTime+'close'])
chartsOptions6.series[3].data = result.data.map(x=>x[lastTime+'restriction'])
chartsOptions6.xAxis.data = result.data.map(x=>x.stationName);
this.myChart.setOption(chartsOptions6);
this.myChart.resize();
@ -354,6 +389,7 @@ export default {
method: 'post'
}).then(result=>{
console.log(result)
this.curid = id;
if (result.code != 200) return this.$message.error(result?.msg);
if(result.data.dataList.length===0){
this.tableData = []
@ -378,24 +414,47 @@ export default {
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'方向',value:'dir'},{label:'门架',value:'name'},{label:'车流量',value:'num'}]
chartsOptions8.legend.data[0].name = thisTime+'车流量'
chartsOptions8.legend.data[1].name = lastTime+'车流量'
chartsOptions8.series[0].name = thisTime+'车流量'
chartsOptions8.series[1].name = lastTime+'车流量'
chartsOptions8.series[2].name = thisTime+'车流量'
chartsOptions8.series[3].name = lastTime+'车流量'
let _tableData = []
for(let i of result.data.jinanDirection){
for(let i of result.data[thisTime+'heze']){
_tableData.push({
dir:'济南方向',name:i.intervalName, num:(i.trafficVolume||0)
dir:thisTime+'菏泽方向',name:i.facilityName, num:(i.trafficVolume||0)
})
} for(let i of result.data.hezeDirection){
}
for(let i of result.data[thisTime+'jinan']){
_tableData.push({
dir:thisTime+'济南方向',name:i.facilityName, num:(i.trafficVolume||0)
})
}
for(let i of result.data[lastTime+'heze']){
_tableData.push({
dir:lastTime+'菏泽方向',name:i.facilityName, num:(i.trafficVolume||0)
})
}
for(let i of result.data[lastTime+'jinan']){
_tableData.push({
dir:'菏泽方向',name:i.intervalName, num:(i.trafficVolume||0)
dir:lastTime+'济南方向',name:i.facilityName, num:(i.trafficVolume||0)
})
}
this.tableData = _tableData;
this.curid = id;
setTimeout(() => {
const xAxis = result.data.jinanDirection.map(x=>x.intervalName);
const xAxis = result.data[thisTime+'heze'].map(x=>x.facilityName);
chartsOptions8.xAxis[0].data = xAxis
chartsOptions8.xAxis[1].data = xAxis
// 1 2 3 4
chartsOptions8.series[0].data = result.data.jinanDirection.map(x=>x.trafficVolume)
chartsOptions8.series[1].data =result.data.hezeDirection.map(x=>x.trafficVolume)
chartsOptions8.series[0].data = result.data[thisTime+'jinan'].map(x=>x.trafficVolume)
chartsOptions8.series[1].data =result.data[lastTime+'jinan'].map(x=>x.trafficVolume)
chartsOptions8.series[2].data = result.data[thisTime+'heze'].map(x=>x.trafficVolume)
chartsOptions8.series[3].data =result.data[lastTime+'heze'].map(x=>x.trafficVolume)
this.myChart.setOption(chartsOptions8);
this.myChart.resize();
}, 200);
@ -409,24 +468,48 @@ export default {
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'方向',value:'dir'},{label:'收费站',value:'name'},{label:'车流量',value:'num'}]
chartsOptions8.legend.data[0].name = thisTime+'车流量'
chartsOptions8.legend.data[1].name = lastTime+'车流量'
chartsOptions8.series[0].name = thisTime+'车流量'
chartsOptions8.series[1].name = lastTime+'车流量'
chartsOptions8.series[2].name = thisTime+'车流量'
chartsOptions8.series[3].name = lastTime+'车流量'
let _tableData = []
for(let i of result.data.exit){
for(let i of result.data[thisTime+'exit']){
_tableData.push({
dir:'出口',name:i.facilityName, num:(i.trafficVolume||0)
dir:thisTime+'出口',name:i.facilityName, num:(i.trafficVolume||0)
})
} for(let i of result.data.entrance){
} for(let i of result.data[thisTime+'entrance']){
_tableData.push({
dir:'入口',name:i.facilityName, num:(i.trafficVolume||0)
dir:thisTime+'入口',name:i.facilityName, num:(i.trafficVolume||0)
})
}
for(let i of result.data[lastTime+'exit']){
_tableData.push({
dir:lastTime+'出口',name:i.facilityName, num:(i.trafficVolume||0)
})
} for(let i of result.data[lastTime+'entrance']){
_tableData.push({
dir:lastTime+'入口',name:i.facilityName, num:(i.trafficVolume||0)
})
}
this.tableData = _tableData;
this.curid = id;
setTimeout(() => {
const xAxis = result.data.exit.map(x=>x.facilityName);
const xAxis = result.data[thisTime+'exit'].map(x=>x.facilityName);
chartsOptions8.xAxis[0].data = xAxis
chartsOptions8.xAxis[1].data = xAxis
chartsOptions8.series[0].data = result.data.exit.map(x=>x.trafficVolume)
chartsOptions8.series[1].data =result.data.entrance.map(x=>x.trafficVolume)
chartsOptions8.series[0].data = result.data[thisTime+'exit'].map(x=>x.trafficVolume)
chartsOptions8.series[1].data =result.data[lastTime+'exit'].map(x=>x.trafficVolume)
chartsOptions8.series[2].data = result.data[thisTime+'entrance'].map(x=>x.trafficVolume)
chartsOptions8.series[3].data =result.data[lastTime+'entrance'].map(x=>x.trafficVolume)
this.myChart.setOption(chartsOptions8);
this.myChart.resize();
}, 200);
@ -438,20 +521,25 @@ export default {
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'事故类型',value:'subclassName'},{label:'数量(起)',value:'num'}]
this.tableCols = [{label:'事故类型',value:'eventSubclass'},{label:thisTime+' 数量(起)',value:thisTime},{label:lastTime+' 数量(起)',value:lastTime}]
chartsOptions.series[0].name = thisTime;
chartsOptions.series[1].name = lastTime;
if(result.data.length===0){
this.tableData = []
chartsOptions.series[0].data = []
chartsOptions.series[1].data = []
this.myChart.setOption(chartsOptions);
this.myChart.resize();
this.tableData = []
this.$message.warning('暂无数据')
return;
}
this.tableData = result.data;
this.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = result.data.map(x=>x.num)
chartsOptions.xAxis.data = result.data.map(x=>x.subclassName);
chartsOptions.series[0].data = this.tableData.map(x=>x[thisTime])
chartsOptions.series[1].data = this.tableData.map(x=>x[lastTime])
chartsOptions.xAxis.data = this.tableData.map(x=>x.eventSubclass);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
@ -463,26 +551,25 @@ export default {
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'拥堵类型',value:'name'},{label:'数量(起)',value:'num'}]
let _tableData = []
if(_.keys(result.data).length === 0){
this.tableCols = [{label:'拥堵类型',value:'eventSubclass'},{label:thisTime+' 数量(起)',value:thisTime},{label:lastTime+' 数量(起)',value:lastTime}]
chartsOptions.series[0].name = thisTime;
chartsOptions.series[1].name = lastTime;
if(result.data.length===0){
this.tableData = []
chartsOptions.series[0].data = []
chartsOptions.series[1].data = []
this.myChart.setOption(chartsOptions);
this.myChart.resize();
this.tableData = []
this.$message.warning('暂无数据')
return;
}
for(let i in result.data){
_tableData.push({
name:i, num:result.data[i]
})
}
this.tableData = _tableData;
this.tableData = result.data;
this.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = _tableData.map(x=>x.num)
chartsOptions.xAxis.data = _tableData.map(x=>x.name);
chartsOptions.series[0].data = this.tableData.map(x=>x[thisTime])
chartsOptions.series[1].data = this.tableData.map(x=>x[lastTime])
chartsOptions.xAxis.data = this.tableData.map(x=>x.eventSubclass);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
@ -496,28 +583,25 @@ export default {
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'路段桩号',value:'name'},{label:'时长(分钟)',value:'num'}]
let _tableData = []
if(_.keys(result.data).length === 0){
this.tableCols = [{label:'路段桩号',value:'stakeMark'},{label:thisTime+' 时长(分钟)',value:thisTime},{label:lastTime+' 时长(分钟)',value:lastTime}];
chartsOptions.series[0].name = thisTime;
chartsOptions.series[1].name = lastTime;
if(result.data.length===0){
this.tableData = []
chartsOptions.series[0].data = []
chartsOptions.series[1].data = []
this.myChart.setOption(chartsOptions);
this.myChart.resize();
this.tableData = []
this.$message.warning('暂无数据')
return;
}
for(let i in result.data){
_tableData.push({
name:i, num:result.data[i]
})
}
this.tableData = _tableData;
this.tableData = result.data;
this.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = _tableData.map(x=>x.num)
chartsOptions.xAxis.data = _tableData.map(x=>x.name);
chartsOptions.series[0].data = this.tableData.map(x=>x[thisTime])
chartsOptions.series[1].data = this.tableData.map(x=>x[lastTime])
chartsOptions.xAxis.data = this.tableData.map(x=>x.stakeMark);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
@ -623,10 +707,10 @@ export default {
}
}
.tag1 {
.tag1A {
position: absolute;
margin-top: 100px;
margin-left: 60px;
margin-left: 90px;
font-size: 12px;
span{
color: #8be8fe;
@ -635,7 +719,7 @@ export default {
}
}
.tag2 {
.tag2A {
position: absolute;
font-size: 12px;
margin-top: 300px;

6
ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/search/index.vue

@ -10,7 +10,7 @@
<el-option v-for="item in typeOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<!-- 日期选择 -->
<el-date-picker size="mini" class="selectRoad" :clearable="false" v-model="dateTime" style="width: 140px"
<el-date-picker size="mini" class="selectRoad" :clearable="false" v-model="dateTime" style="width: 220px"
:picker-options="pickerOptions" :type="type == 2
? 'dates'
: type == 1
@ -190,8 +190,8 @@ export default {
exportKey:keys
}
console.log(param)
param.startTime = new Date(param.startTime)
param.endTime = new Date(param.endTime)
param.startTime = new Date(param.thisTime)
param.endTime = new Date(param.lastTime)
exportFile2({
url: "/business/sdhsEvent/export",
filename: "云事件导出",

8
ruoyi-ui/src/views/JiHeExpressway/utils/enum.js

@ -987,6 +987,14 @@ export const deviceTypeOptions = [
value: 14,
label: "光线在线监测",
},
{
value: 15,
label: "太阳能板",
},
{
value: 16,
label: "远端机",
},
];
export const deviceTypeDic = arrayToDic(deviceTypeOptions);

35
ruoyi-ui/src/views/websocket.vue

@ -31,6 +31,7 @@ export default {
this.socket.initialize({
// url: 'ws://' + location.hostname + ':' + port + path,
url: 'wss://' + location.hostname + ':' + window.location.port + '/ws' || 80 + '/ws',
// url: "ws://10.168.66.196:7789" + path,
// url: 'ws://10.168.77.128:7789/ws',
// url: "ws://10.7.179.15" + ":" + port + path,
// url: "ws://10.168.64.171" + ":" + port + path,
@ -137,16 +138,14 @@ export default {
document.onkeydown = function (e) {
deviceState == "0" ? deviceState = "1" : deviceState = "0";
if (e.code == 'Space') {
let params = {"subEvent":"eventProcess","content":{"id":3598,"eventId":"a026a03962d94089b67858d6c7e6cd42","operationTime":"2024-08-27 11:39:11","operator":"1","operatorName":"管理员","source":1,"processName":"","context":"这是处置记录","type":"text","remark":""}}
_this.$root.$emit('update-eventProcess', params.content);
// let params = {"subEvent":"eventProcess","content":{"id":3598,"eventId":"a026a03962d94089b67858d6c7e6cd42","operationTime":"2024-08-27 11:39:11","operator":"1","operatorName":"","source":1,"processName":"","context":"","type":"text","remark":""}}
// _this.$root.$emit('update-eventProcess', params.content);
//
// _this.$root.$emit('update-warning', Math.floor(Math.random() * 20));
//
// let params = {
// "subEvent":"2","content":{"event":{"id":"ad84780896584c4ab67d034c0ab9b853","stakeMark":"K078+300","direction":"1","warningState":1,"warningTime":"2024-08-20 10:43:23","warningSource":5,"warningType":6,"warningSubclass":"6-3","warningTitle":" ()","otherConfig":"","lane":"0","number":0,"longitude":"116.699758","latitude":"36.435038","duration":0,"endTime":"2024-08-20 12:00:43","createTime":"2024-08-20 11:00:43","remark":"20240820 10:43:21 K078+300 ()","params":{}},"content":" K078+300 "}
// };
//
// let params = {
// "subEvent": "trafficFlowDataEarlyWarning",
@ -165,7 +164,33 @@ export default {
// "earlyWorningContentNotic":"","stationName":"","warningLevelString":"YELLOW_ALERT","earlyWarningTypeStringNumber":"6",
// "earlyWorningSignal":"6yj1","warningLevelStringNumber":"1","earlyWorningIssueDate":"2024-06-24T16:40:00","earlyWarningTypeString":"HYPERTHERMIA"}
// }
// _this.$emit("newEvent", params);
//
let params = {
"subEvent": "deviceOfflineRecord",
"content": {
"deviceOfflineRecord": {
"id": 86,
"deviceId": 2171,
"iotDeviceId": "10.0.36.142-1883",
"deviceName": "远端机(K112+037)",
"deviceType": "16",
"stakeMark": "K112+037",
"direction": "1",
"deviceIp": "10.0.36.142",
"facilitiesType": "1",
"longitude": "116.475787",
"latitude": "36.221393",
"status": "0",
"createTime": "2024-09-21 11:05:12",
"params": {}
},
"content": "K112+037菏泽方向远端机(K112+037)发生故障"
}
}
_this.$emit("newEvent", params);
//
// let params = {

4
ruoyi-ui/vue.config.js

@ -38,14 +38,14 @@ module.exports = {
[process.env.VUE_APP_BASE_API]: {
// target: `http://127.0.0.1:8087`,
// target:`http://localhost:3001`,
target:`http://10.0.111.11:8097`,
// target:`http://10.0.111.11:8097`,
// target:`http://10.0.111.11:8097`,
// target: `http://10.168.66.196:8087`, //刘文阁
// target: `http://10.168.68.42:8087`, //王思祥
// target: `http://10.168.72.174:8087`, //赵祥龙
// target: `http://10.168.65.156:8097`, //孟凡峰
// target: `http://10.168.79.46:8089`, //王家宝
// target: `http://10.168.77.128:8087`, //王兴琳
target: `http://10.168.77.128:8087`, //王兴琳
changeOrigin: true,
pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: "",

Loading…
Cancel
Save