Browse Source

匹配3840×1080大屏

develop
王钦 7 months ago
parent
commit
f49793667a
  1. 18
      ruoyi-ui/src/common/menuData.js
  2. 5
      ruoyi-ui/src/store/modules/menu.js
  3. 2
      ruoyi-ui/src/utils/auth.js
  4. 20
      ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/CustomMenu.vue
  5. 6
      ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/WarningList.vue
  6. 15
      ruoyi-ui/src/views/JiHeExpressway/components/RecentPages/index.vue
  7. 2
      ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/TimeLine2/DescCard.vue
  8. 1
      ruoyi-ui/src/views/JiHeExpressway/components/Video/index.vue
  9. 14
      ruoyi-ui/src/views/JiHeExpressway/components/VideoMulti/index.vue
  10. 16
      ruoyi-ui/src/views/JiHeExpressway/components/WarningNotify.vue
  11. 13
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/BMapContainer/index.vue
  12. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/ConditionStatistics/index.vue
  13. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/FocusedMonitoring/index.vue
  14. 18
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/index.vue
  15. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/index.vue
  16. 14296
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/dataoffset.js
  17. 13
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js
  18. 8
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Thumbnail/index.vue
  19. 8
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/index.vue
  20. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/record/index.vue
  21. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/strategy/components/AddNEditDialog.vue
  22. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/components/SpecialTable.vue
  23. 12
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/components/ScopeTable.vue
  24. 40
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/index.vue
  25. 23
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/StatsDialog/index.vue
  26. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/index.vue
  27. 14
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/DialogProcess/index.vue
  28. 11
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue
  29. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/EventInformation/index.vue
  30. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/ReleaseInformation/index.vue
  31. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/TrafficControl/index.vue
  32. 13
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/EventDispatchDialog/index.vue
  33. 23
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/EventDetailDialog/index.vue
  34. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/PresetFormItems.js
  35. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/data.js
  36. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
  37. 37
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/audit/StatsDialogVisible/index.vue
  38. 9
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/audit/index.vue
  39. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/index.vue
  40. 155
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/etime/charts.js
  41. 137
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/etime/index.vue
  42. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/etype/charts.js
  43. 1
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/etype/index.vue
  44. 65
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/index.vue
  45. 32
      ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/search/index.vue
  46. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/manual/statistic/components/Eventfiltering/index.vue
  47. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/control/manual/statistic/components/Sitefiltering/index.vue
  48. 97
      ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/index.vue
  49. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/statisticalAnalysis/query/dialogRecord.vue
  50. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/statisticalAnalysis/query/index.vue
  51. 20
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/analysis/progress/index.vue
  52. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/analysis/railway/charts.js
  53. 18
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/analysis/railway/index.vue
  54. 6
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/sortFaceForecast/index.vue
  55. 10
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherWarning/components/infowWarningList/index.vue
  56. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/analysis/section/charts.js
  57. 18
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/analysis/section/index.vue
  58. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/statistics/data.js
  59. 22
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/analysis/indicator/index.vue
  60. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/query/index.vue
  61. 4
      ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditDetails/index.vue
  62. 150
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts.js
  63. 266
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts3.js
  64. 105
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts4.js
  65. 208
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts6.js
  66. 247
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/charts8.js
  67. 650
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/index.vue
  68. 257
      ruoyi-ui/src/views/JiHeExpressway/pages/service/analysis/search/index.vue
  69. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/channelAnalytics/charts.js
  70. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js
  71. 5
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/record/index.vue
  72. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/eventTypeAnalysis/charts.js
  73. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/postTrendsDay/charts.js
  74. 2
      ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/postTrendsMonth/charts.js
  75. 2
      ruoyi-ui/src/views/JiHeExpressway/utils/common.js
  76. 6
      ruoyi-ui/src/views/JiHeExpressway/utils/enum_event/data.js
  77. 1
      ruoyi-ui/src/views/event/reservePlan/index.vue
  78. 1
      ruoyi-ui/src/views/event/strategy/components/manualControl.vue
  79. 1
      ruoyi-ui/src/views/event/strategy/components/timingControl.vue
  80. 1
      ruoyi-ui/src/views/event/strategy/event/autoControl.vue
  81. 1
      ruoyi-ui/src/views/event/strategy/event/manualControl.vue
  82. 49
      ruoyi-ui/src/views/websocket.vue
  83. 9
      ruoyi-ui/vue.config.js

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

@ -196,12 +196,12 @@ export default [
// path: "/maintain/photovoltaic",
// component: "developing.vue",
// },
// {
// title: "桥梁监测",
// name: "photovoltaic",
// path: "/maintain/photovoltaic",
// component: "developing.vue",
// },
{
title: "桥梁监测",
name: "photovoltaic",
path: "/maintain/photovoltaic",
component: "developing.vue",
},
],
},
{
@ -293,6 +293,12 @@ export default [
component: "datav/roadNet/index.vue",
hide: true,
},
{
title: "高速云数据分析",
name: "dataAnalysis",
path: "/service/analysis",
component: "service/analysis/index.vue",
},
],
},
{

5
ruoyi-ui/src/store/modules/menu.js

@ -37,10 +37,11 @@ const state = {
state.recentPages.forEach((unit, index) => {
if (unit.path == item.path) {
// unit.isPinned = !unit.isPinned;
Vue.prototype.$set(unit, "isPinned", !unit.isPinned);
// Vue.prototype.$set(unit, "isPinned", !unit.isPinned);
Vue.set(unit, "isPinned", !unit.isPinned);
}
});
mutations.saveRecent(state);
// mutations.saveRecent(state);
},
openRecent(state){
state.isRecentOpen = true;

2
ruoyi-ui/src/utils/auth.js

@ -1,6 +1,6 @@
import Cookies from 'js-cookie'
const TokenKey = 'DC-Pro-Token'
const TokenKey = 'DC-Token'
export function getToken() {
return Cookies.get(TokenKey)

20
ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/CustomMenu.vue

@ -92,12 +92,20 @@ export default {
} else if(node.title==='桥梁监测'){
this.activeIndex = key
window.open('http://iot.sdhscloud.com/home?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpZCI6MTc1MSwidWlkIjoiM2M2NTZjOGUtMzgwZC0xMWVmLWFhNmItYmVhNGE2MDZhMzE2IiwidXNlcm5hbWUiOiJKSFpIR1MiLCJuaWNrbmFtZSI6Ilx1NmQ0ZVx1ODNjZlx1NjY3YVx1NjE2N1x1OWFkOFx1OTAxZiIsImVtYWlsIjoiMjU4NTQwMjg0MEBxcS5jb20iLCJ0ZWwiOiIiLCJpc19zdXBlcnVzZXIiOmZhbHNlLCJpc19tYXN0ZXIiOmZhbHNlLCJpc19hY3RpdmUiOnRydWUsInRlbmFudF9pZCI6NDUsImF0dHJzIjp7Imdyb3VwIjoiIn0sImhhc3VyYSI6eyJ4LWhhc3VyYS11c2VyLWlkIjoiM2M2NTZjOGUtMzgwZC0xMWVmLWFhNmItYmVhNGE2MDZhMzE2IiwieC1oYXN1cmEtdGVuYW50Ijo0NSwieC1oYXN1cmEtYWN0aXZlIjp0cnVlLCJ4LWhhc3VyYS1tYXN0ZXIiOmZhbHNlLCJ4LWhhc3VyYS1yb2xlX2lkIjo1MjcsIngtaGFzdXJhLWFwcF9pZCI6NTIsIngtaGFzdXJhLXNlcnZpY2VfaWQiOjQsIngtaGFzdXJhLXN1cGVydXNlciI6ZmFsc2V9LCJhcHBfaWQiOjUyLCJyb2xlX2lkIjo1MjcsInNlcnZpY2VfaWQiOjQsImNsaWVudF9pZCI6IjA1ZTI1NzU4LTBhYTQtMTFlYS1iYTM0LTAyNDJhYzEwMDExZiIsImV4cCI6NDg3MzUxMzk1M30.JR5dwFCmNfaDFkSISOF5ZhRyPBulzDwG1bg4BA-Jqog')
} else if(node.title==='数字收费站'){
this.activeIndex = key
getConfigKey("digitalTollStation").then((response) => {
window.open(response.msg===''?'https://10.0.86.63:9000/s?loadType=auto&group=15ai1k13748d&runType=box':response.msg);
})
} else if (this.$route.path != node.path){
}
// else if(node.title===''){
// this.activeIndex = key
// getConfigKey("digitalTollStation").then((response) => {
// window.open(response.msg===''?'https://10.0.86.63:9000/s?loadType=auto&group=15ai1k13748d&runType=box':response.msg);
// })
// }
// else if(node.title==='GIS+BIM'){
// this.activeIndex = key
// getConfigKey("dc.gisAndBim").then((response) => {
// window.open(response.msg===''?'https://10.0.86.63:9000/s?loadType=auto&group=15ai1k13748d&runType=box':response.msg);
// })
// }
else if (this.$route.path != node.path){
this.$router.push(node.path);
}

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

@ -150,8 +150,10 @@ export default {
})
} else if(this.activeTab === 'four'){
request({
url: `business/dcNoStakeWarningTable/list?pageSize=${this.searchData.pageSize}&pageNum=${this.searchData.pageNum}`,
method: "GET",
url: `/business/warning/meteorologicalList?pageSize=${this.searchData.pageSize}&pageNum=${this.searchData.pageNum}`,
method: "Post",
// url: `business/dcNoStakeWarningTable/list?pageSize=${this.searchData.pageSize}&pageNum=${this.searchData.pageNum}`,
// method: "GET",
})
.then((result) => {
if (result.code != 200) return;

15
ruoyi-ui/src/views/JiHeExpressway/components/RecentPages/index.vue

@ -15,10 +15,11 @@
:style="{width:item.title.length*14+'px'}">
{{item.title}}
</p>
<el-tooltip effect="light" content="记住" placement="bottom">
<p class="btn_pin" :class="item.isPinned ? 'active' :'unactive'" @click="onPin(item)">
<div class="btn_pin" :class="isPin[index] ? 'active' :'unactive'" @click="onPin(item,index)">
<i></i>
</p>
</div>
</el-tooltip>
<!-- <p class=" btn_pin" :class="{active:item.isPinned}" @click="onPin(item)"><i></i></p> -->
<i class="btn_close iconfont icon-guanbi" @click="onRemoveItem(item)"></i>
@ -43,7 +44,8 @@ export default{
lastIndex:-1, //
startIndex:-1, //
widthArr:[],
currentIndex : -1
currentIndex : -1,
isPin: []
}
},
components:{
@ -66,6 +68,8 @@ export default{
this.widthBox = this.$refs["box"].offsetWidth;
this.widthTotal = this.$refs["btnlist"].offsetWidth;
let temp = 0;
this.isPin = newV.map(x=>x.isPinned)
newV.forEach((item,index)=>{
let unitW = this.$refs["unit"][index].offsetWidth;
temp += unitW;
@ -121,7 +125,9 @@ export default{
}
},
onPin(item){
onPin(item,index){
this.isPin[index] = (!item.isPinned)
this.isPin = _.cloneDeep(this.isPin)
this.pinRecent(item);
},
onRemoveItem(item){
@ -259,6 +265,7 @@ export default{
}
}
.btn_pin{
cursor:context-menu;
position: absolute;
left:0;
bottom:0;

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

@ -294,7 +294,7 @@ export default {
"data.type": {
handler(newValue, oldValue) {
if (newValue != "text") {
this.data.url = process.env.VUE_APP_BASE_API + this.data.desc;
this.data.url = (this.data.desc.indexOf('http:')===-1 && this.data.desc.indexOf('https:')===-1) ? process.env.VUE_APP_BASE_API + this.data.desc:this.data.desc;
}
},
deep: true,

1
ruoyi-ui/src/views/JiHeExpressway/components/Video/index.vue

@ -165,4 +165,5 @@ export default {
width: 100%;
}
}
</style>

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

@ -12,10 +12,10 @@
" src="@screen/images/camera-control-icon.svg" width="18px" height="18px"
style="cursor: pointer;background-color: #0d5f79;" />
</div>
<Transition name="fade" mode="out-in">
<video controls autoplay muted class="video-stream" v-bind="$attrs" ref="videoContainerRef" />
</Transition>
<CameraControlDialog :deviceId="dialogData.iotDeviceId" :dialogData="dialogData" :visible="controlDialogVisible" @update:value="handleClose" />
</div>
</template>
@ -115,7 +115,6 @@ export default {
display: flex;
flex-direction: column;
justify-content: center;
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.24s ease;
@ -131,7 +130,6 @@ export default {
z-index: 999;
display: flex;
justify-content: space-between;
.radio {
background: #265A70;
border-radius: 41px 41px 41px 41px;
@ -180,8 +178,7 @@ export default {
// -webkit-text-fill-color: transparent;
}
}
.video-stream,
img {
height: 100%;
@ -192,5 +189,12 @@ export default {
.video-stream {
width: 100%;
}
@media (min-width: 3000px) {
.video-stream {
height: 90%;
width: 100%;
}
}
}
</style>

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

@ -61,6 +61,15 @@ export default {
level: "danger",
duration: 0
}
} else if( para.subEvent == "2"){
obj = {
content: para.content.content,
time:para.content.event.warningTime,
type: "otherEvent",
level: "danger",
title:'扫码报警',
duration: 0
}
} else if(para.subEvent === '1'){
obj = {
content: para.content.content,
@ -87,8 +96,6 @@ export default {
duration: 4000
}
}
this.speak(obj.time + '' + para.content.content);
if(Cookies.get('warning-notify') === 'off'){
return;
@ -122,7 +129,7 @@ export default {
), _this.$createElement(
"span",
{ class: 'text' },
obj.level === 'warning' ? '预警':"告警"
(obj.title ? obj.title: (obj.level === 'warning' ? '预警':"告警"))
)
]
)
@ -185,7 +192,8 @@ export default {
_this.notifyIndex++;
},
showDialog(info,idx){
if (info.subEvent == '1') {
console.log(info,555)
if (info.subEvent == '1' || info.subEvent == '2') {
this.activeName = '-1' //
request({
url: `/perceivedEvents/warning/getWarningById`,//

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

@ -1,7 +1,7 @@
<template>
<div class="BMapContainer">
<gisMap2d ref="gisMap2d"
:mapZoom = "15"
:mapZoom = "mapZoom"
:mapCenter="mapCenter"
radarSliderBottom="33%"
@ -13,6 +13,7 @@
<script>
import Vue from "vue";
import { gisMap2d } from 'gis-map-universal'
const lnglat = [117.16515148266497,35.2797674572588]
export default {
name: "BMapContainer",
components: {
@ -21,8 +22,8 @@ export default {
data() {
return {
mapBoxHeight: '100vh',
mapZoom: '15', // '7.5' String
mapCenter: [110.329514, 35.505288], //[118.75, 36.46] Array
mapZoom: '7.5', // '7.5' String
mapCenter: lnglat, //[118.75, 36.46] Array
};
},
@ -35,9 +36,9 @@ export default {
},
},
async mounted() {
this.$refs.gisMap2d.zoomInBylatlon(
[116.329514, 35.505288],7.5
);
// this.$refs.gisMap2d.zoomInBylatlon(
// lnglat,7.5
// );
// Vue.prototype.map2d = this.$refs.gisMap2d;
Vue.prototype.mapIns = this.$refs.gisMap2d;
this.$emit("update:isGisCompleted", true);

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

@ -503,7 +503,7 @@ export default {
.count-item {
width: 118px;
height: 26px;
margin-top: 10px;
margin-top: -10px;
background: url("~@screen/images/bg/button-bg.png") no-repeat;
background-size: 100% 100%;
opacity: 1;

4
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/FocusedMonitoring/index.vue

@ -210,13 +210,13 @@ export default {
display: flex;
align-items: center;
justify-content: flex-start;
gap: .5vw 1.4vw;
gap: 10px 15px;
// justify-content: center;
flex:1;
flex-wrap: wrap;
.monitor-item {
text-align: center;
width: 7vw;
width: 135px;
span {
font-size: 20px;
font-family: PangMenZhengDao;

18
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeTraffic/index.vue

@ -6,7 +6,7 @@
</Button>
</el-tooltip>
<div class="radarControlBox" v-if="silderVisible" style="bottom: 30%; right:20%;">
<div class="radarControlBox" v-if="silderVisible">
<button class="radarButton" @click="play">{{isPlay?'暂停':'播放'}}</button>
<el-slider
ref="slider"
@ -229,6 +229,11 @@ export default {
</script>
<style lang="scss">
.radarControlBox{
position: absolute;
display: flex;
bottom: 25%; right:28%;
}
.radarSliderTooltip .el-tooltip {
display: block;
}
@ -270,7 +275,16 @@ div.el-popper.global-input-search-popover {
width: 25px;
height: 25x;
}
.radarButton{
z-index: 999;
padding: 2px 4px;
font-size: 14px;
color: #fff;
background: linear-gradient(180deg, #39a3c4, #065572);
border: 1px solid #39a3c4;
border-radius: 3px;
cursor: pointer;
}
.HomeTraffic {
.btn {
padding: 9px;

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

@ -408,7 +408,7 @@ export default {
.device-item {
// position: absolute;
position: relative;
width: 4.5vw;
width: 86px;
cursor: pointer;
display: flex;
flex-direction: column;

14296
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/dataoffset.js

File diff suppressed because one or more lines are too long

13
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js

@ -54,6 +54,12 @@ export class MarkerCluster {
async addData(data, isDefault) {
this.infoWindow?.close?.();
data.forEach(e => {
const lnglat = getLnglat(e.extData);
e.extData.longitude = lnglat[0];//点坐标经度 【必传字段】
e.extData.latitude = lnglat[1];
});
marksAddInGraph(data);
if (!data) return;
@ -122,11 +128,11 @@ export class MarkerCluster {
}
}
const lnglat = getLnglat(e.extData)
// const lnglat = [e.extData.longitude, e.extData.latitude];//getLnglat(e.extData)
aryPoints.push({
type: 'event', //类型。例如:交通事件、故障停车、摄像机等 【必传字段】
longitude: lnglat[0], //点坐标经度 【必传字段】
latitude: lnglat[1], //点坐标纬度 【必传字段】
longitude: e.extData.longitude, //点坐标经度 【必传字段】
latitude: e.extData.latitude, //点坐标纬度 【必传字段】
iconUrl: getIcon(e,'b'), // 图标 【必传字段】
offset: [0,-48],
size: [42,100],
@ -143,7 +149,6 @@ export class MarkerCluster {
}
})
if(aryPoints.length > 0){
console.log(aryPoints)
map2d.addPointByArr(
{pointList:aryPoints}, // 点位数据数组(按以下规范组装)
'jhlayers', // 当前添加的数据 唯一标识(删除该图层时也会用到)//./事件专题/交通事故.svg

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

@ -406,7 +406,10 @@ export default {
},
async drayLine(text, graph, isFoot = false) {
const x = this.translateX + 141;
let x = this.translateX + 141;
const ipxDiff = window.screen.width === 3840?135:0;
x = x+ipxDiff
if (isFoot) {
graph.addNode({
...rect, x: x, y: 30, height: 161
@ -469,8 +472,9 @@ export default {
});
imageNode.translate(width * 0.07, 0);
const ipxDiff = window.screen.width === 3840?-10:0;
for (var i = 0; i < info.name.length; i++) { //
const imageLabelNode = graph.addNode({ label: info.name[i], x: this.translateX, y: i * 15, attrs: { text: { fill: "#ffffff", fontSize: 12 } } });
const imageLabelNode = graph.addNode({ label: info.name[i], x: this.translateX+ipxDiff, y: i * 15, attrs: { text: { fill: "#ffffff", fontSize: 12 } } });
imageLabelNode.translate(width * window.offsetRatio, 50 + y);
}

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

@ -6,7 +6,7 @@
<!-- 左侧 -->
<div class="content-l">
<!-- -->
<FocusedMonitoring class="card-menu" style="height: 15vw;" />
<FocusedMonitoring class="card-menu" style="height: 288px;" />
<!-- -->
<RoadAndEvents ref="RoadAndEventsRef" :isGisCompleted="isGisCompleted" :mapContainer="mapContainer" style="flex:1" class="card-menu" />
</div>
@ -152,13 +152,13 @@ export default {
height: 62vh;
.content-l {
width: 25vw;
width: 480px;
overflow: hidden;
display: flex;
flex-direction: column;
overflow: hidden;
height: 100%;
gap: .5vw;
gap: 10px;
}
.content-m {
@ -179,7 +179,7 @@ export default {
}
.content-r {
width: 25vw;
width: 480px;
overflow: hidden;
display: flex;
flex-direction: column;

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/device/record/index.vue

@ -166,6 +166,7 @@ export default {
if (result.code != 200) return;
result.rows.forEach(e => {
console.log('e.jsonResult',e.jsonResult)
const resJson = JSON.parse(e.jsonResult)
const resCodes = [];
const resCodesDeivce = [];
@ -176,6 +177,7 @@ export default {
}
}
let resParam = {}
console.log('e.operParam',e.operParam)
try{
resParam = JSON.parse(e.operParam)[0].devices
}catch(e){

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/device/strategy/components/AddNEditDialog.vue

@ -369,9 +369,11 @@ export default {
}
item.time = aryTime.join(':')
let arr = _.filter(result.data, (itm) => {
return item.tasks.includes(itm.jobId);
return (item.tasks.includes(itm.jobId) && itm.callParameter !== "[]");
});
console.log(arr,4445)
this.$set(item, "tasksEdit", arr);
// item.tasksEdit = arr;
});
});

3
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/components/SpecialTable.vue

@ -82,6 +82,7 @@ export default {
.normal {
display: flex;
flex:1;
}
.column {
@ -131,7 +132,7 @@ export default {
.operation {
padding: 20px 18px;
width: 400px;
.content {
width: 100%;
gap: 9px;

12
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DeviceControl/components/ScopeTable.vue

@ -27,9 +27,9 @@
style="width: 75px;"></el-input-number>
<span v-if="tableInfo.searchRule == 4" style="width: 56px;"></span>
</el-col>
<el-col :span="4" v-if=" (tableInfo.deviceType == '2' || tableInfo.deviceType == 5)">
<el-col :span="4" v-if=" (tableInfo.deviceType == 2 || tableInfo.deviceType == 5)">
<div class="firstBtns">
<ButtonGradient class="title-button" @click.native="$emit('onConfirm', index)">
<ButtonGradient class="title-button" :style="tableInfo.isConfirm?'':'background:#FFB65D;color:#000'" @click.native="$emit('onConfirm', index)">
<i class="el-icon-check"></i>
</ButtonGradient>
<el-dropdown>
@ -251,7 +251,7 @@ export default {
prop: 'visible',
event: 'update:value'
},
// inject: ['loadData'],
inject: ['provideData'],
props: {
visible: Boolean,
eventType: Number,
@ -419,9 +419,11 @@ export default {
this.$emit('check');
},
async loadData(deviceType = 1) {
console.log(this.provideData.detail,555)
let result = await request({
url: `business/device/query?deviceType=${deviceType}`,
method: "get",
url: `business/device/deviceList/${deviceType}`,
method: "post",
data:this.provideData.detail
});
if (result.code != 200) return Message.error(result?.msg);
const _sbOptions = [];

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

@ -17,7 +17,7 @@
<ButtonGradient
v-if="detailData.eventState != 2"
class="special-button"
style="background: rgb(229, 68, 73)"
:style="isControl?'background: rgb(229, 68, 73)':'background: rgb(88, 88, 88)'"
@click.native="handleSubmit(1)"
>
一键控制
@ -25,7 +25,7 @@
<ButtonGradient
v-if="detailData.eventState != 2 && !isAll5"
class="special-button"
style="background: rgb(250, 152, 56)"
:style="isControl?'background: rgb(250, 152, 56)':'background: rgb(88, 88, 88)'"
@click.native="handleSubmit(2)"
>
一键恢复
@ -41,6 +41,7 @@ import ScopeTable from "./components/ScopeTable.vue";
import { provideMixin } from "./../../mixin";
import { defaultTableInfo } from "./data";
import { Message } from "element-ui";
import { planDeviceMap } from "@screen/utils/enum.js";
import request from "@/utils/request";
import {
inducerModeDic,
@ -64,6 +65,7 @@ export default {
eventId: "",
direction: "",
isAll5: false,//广
isControl: false
};
},
watch: {
@ -87,8 +89,25 @@ export default {
},
mounted() {},
methods: {
checkTable(){
checkTable(idx = -1){
const unDevice5 = this.tableData.filter(x=>x.deviceType !== 5)
let errIdx = -2;
let _isControl = true;
this.tableData.forEach((e,index) => {
if(e.deviceType === 2 || e.deviceType === 5){
e.isConfirm = false
if(e.executeConfig && e.executeConfig.contentList && e.executeConfig.contentList.length > 0){
e.isConfirm = true
} else {
errIdx = index;
_isControl = false;
}
}
});
this.isControl = _isControl;
if(idx === errIdx){
this.$message.warning('暂无配置预案');
}
this.isAll5 = (unDevice5.length === 0);
this.tableData = _.cloneDeep(this.tableData)
},
@ -115,6 +134,7 @@ export default {
this.planId = data[0].id;
let dcArr = [];
this.isControl = true;
dcExecuteAction.forEach((it) => {
let action = { ...it };
if (it.executeConfig) {
@ -137,7 +157,11 @@ export default {
if (it.deviceList) {
action.devList = it.deviceList.split(",").map((str) => str);
}
if(action.deviceType===2 || action.deviceType===5 ){
action.isConfirm = false;
this.isControl = false;
}
dcArr.push(action);
});
this.tableData =
@ -193,13 +217,15 @@ export default {
if (result.code != 200) return Message.error(result?.msg);
console.log(this.tableData[index])
let data = result.data;
this.tableData[index].executeConfig = JSON.parse(data.executeConfig)
this.tableData[index].recoverConfig = JSON.parse(data.recoverConfig)
if(this.tableData[index].isDefault === true){
this.tableData[index].zx_operationType = this.tableData[index].executeConfig?.operationType;
this.tableData[index].hf_operationType = this.tableData[index].recoverConfig?.operationType;
}
this.tableData = _.cloneDeep(this.tableData)
this.checkTable(index);
// this.tableData = _.cloneDeep(this.tableData)
})
},
onContentEdit({field,index,idx,type}){
@ -234,6 +260,10 @@ export default {
return data;
},
handleSubmit(value = 1) {
if(!this.isControl){
this.$message.warning('未配置管控预案')
return;
}
const self = this;
this.$modal
.confirm(`是否确认${value===1?'一键控制操作':'一键恢复操作'}`)

23
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DispatchLiaison/StatsDialog/index.vue

@ -1,19 +1,19 @@
<template>
<Dialog v-model="modelVisible" title="智能调度" width="1200px">
<Dialog v-model="modelVisible" title="智能调度" width="1400px">
<div class="StatsDetail">
<el-form ref="form" :model="form">
<el-table :data="data">
<el-table-column
prop="organizationName"
label="路管驻点"
width="120"
width="180"
align="center"
>
</el-table-column>
<el-table-column
prop="difference"
label="距离"
width="120"
width="180"
align="center"
>
<template slot-scope="scope">
@ -188,7 +188,12 @@ export default {
},
};
</script>
<style>
.custom-table-header2 td.el-table__cell{
height: 55px;
}
</style>
<style lang="scss" scoped>
.dialog {
min-height: 800px;
@ -220,6 +225,18 @@ export default {
background: #0b6581;
}
@media (min-width: 3000px) {
::v-deep .el-table .el-table__header-wrapper th,
.el-table .el-table__fixed-header-wrapper th {
height: 55px !important;
background: #0b6581;
border: 1px solid #07aec6;
font-size: 22px;
}
::v-deep .el-table td.el-table__cell div{
font-size: 22px;
}
}
::v-deep .el-table .el-table__header-wrapper th,
.el-table .el-table__fixed-header-wrapper th {
background: #0b6581;

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

@ -141,7 +141,10 @@ export default {
methods: {
handleClick() {
this.modelSmartVisible = false;
this.$parent.$refs['CrowdnessIndicatorRankings'].active = []
if(this.$parent.$refs['CrowdnessIndicatorRankings']){
this.$parent.$refs['CrowdnessIndicatorRankings'].active = []
}
this.statsDialogVisible = true;
},
handleClose() {
@ -323,6 +326,7 @@ export default {
}
.modSmart{
display: flex;
font-size: 16px;
span{
color: #38e4ff;
font-weight: bold;

14
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/DialogProcess/index.vue

@ -857,7 +857,19 @@ export default {
line-height: 34px;
height: 34px;
}
@media (min-width: 3000px) {
::v-deep .file-content-title .el-input__inner {
width: 100% !important;
font-family: AlibabaPuHuiTi-Medium, AlibabaPuHuiTi;
font-weight: 600;
text-align: center;
font-weight: 700 !important;
font-size: 1.19792vw;
border: none;
line-height: 60px;
height: 60px;
}
}
::v-deep .file-content-toDept .el-input__inner {
width: 160px;
}

11
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/DisposalProcess/index.vue

@ -277,6 +277,11 @@ export default {
},
},
methods: {
async eventProcess(e){
if(e.eventId === this.eventId){
await this.disposalRecords(this.eventId);
}
},
filterDistance(distance) {
return distance;
},
@ -499,6 +504,8 @@ export default {
}
},
async mounted() {
//
this.$root.$on('update-eventProcess', this.eventProcess);
// const self = this;
// setTimeout(async () => {
// self.eventId = self.detailData.id;
@ -506,6 +513,10 @@ export default {
// await self.disposalRecords(self.eventId);
// }, 500);
},
beforeDestroy() {
//
this.$root.$off('update-eventProcess', this.eventProcess);
},
};
</script>

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/EventInformation/index.vue

@ -108,7 +108,9 @@ export default {
},
methods: {
onEdit(){
this.$parent.$refs['CrowdnessIndicatorRankings'].active = []
if(this.$parent.$refs['CrowdnessIndicatorRankings']){
this.$parent.$refs['CrowdnessIndicatorRankings'].active = []
}
this.editEventInformationDialogVisible = true
},
closeDialog() {

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

@ -157,6 +157,8 @@ export default {
data.phone = "13589019062";
}
data.eventId = this.detailData.id;
data.stakeMark = this.detailData.stakeMark
console.log(this.detailData)
this.submitting = true;
await request({
url: `/business/sms/pushAll`,

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

@ -64,7 +64,9 @@ export default {
},
methods: {
onSubmit(value) {
this.$parent.$refs['CrowdnessIndicatorRankings'].active = []
if(this.$parent.$refs['CrowdnessIndicatorRankings']){
this.$parent.$refs['CrowdnessIndicatorRankings'].active = []
}
this.controlType = value;
this.addControlEventInfoDialogVisible = true;

13
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/dispatch/EventDispatchDialog/index.vue

@ -14,10 +14,10 @@
<div style="width:50px">{{ item.operatorName }}</div>
<div style="width: 80px" v-if="item.processName && item.type !== 'text'">{{ item.processName }}</div>
<el-image v-if="['bmp','jpg','jpeg','png'].indexOf(item.type)!==-1" :preview-src-list="[uploadUrl +item.context]" :src="uploadUrl +item.context" style="width: 200px;height: auto"></el-image>
<el-image v-if="['bmp','jpg','jpeg','png'].indexOf(item.type)!==-1" :preview-src-list="[formatUrl(item.context)]" :src="formatUrl(item.context)" style="width: 200px;height: auto"></el-image>
<div v-else-if="['mp4','avi','xmvb'].indexOf(item.type)!==-1" style="flex:1;display: flex;flex-direction: column;" >
<div >{{ item.remark }}</div>
<video :src="uploadUrl +item.context" style="width: 200px;height: 160px" muted controls ></video>
<video :src="formatUrl(item.context)" style="width: 200px;height: 160px" muted controls ></video>
</div>
<div style="flex:1" v-else>
@ -77,6 +77,14 @@ export default {
},
},
methods: {
formatUrl(url) {
if(url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1){
return url;
} else {
return this.uploadUrl + url;
}
},
print(){
var printContent = document.getElementById('printbody').innerHTML;
var l=(screen.availWidth-1080)/2;
@ -97,7 +105,6 @@ export default {
printContent = printContent.replace(/display: flex; gap: 10px;/g,'display: flex; gap: 10px;margin-bottom:10px')
printContent = printContent.replace(/width: 200px; height: 160px;/g,'display: none; width: 200px; height: 160px;')
console.log(printContent)
printWindow.document.write(printContent);

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

@ -59,6 +59,8 @@
" @close="onCloseAddNew" />
<template #footer>
<Button :loading="submitLoading" v-if="activeName == '1'" style="margin-top: 30px;padding: 0 24px"
@click.native="onEnd">终止</Button>
<Button :loading="submitLoading" v-if="activeName == '-1' || activeName == '0'" style="margin-top: 30px;padding: 0 24px"
@click.native="onDelete">解除</Button>
<Button :style="{ marginTop: '30px', backgroundColor: '#0e708b', padding: '0 24px' }"
@ -313,6 +315,27 @@ export default {
onCloseAddNew() {
this.isShowDialog = false;
},
onEnd(){
this.$confirm("确定终止吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
}).then(() => {
request({
url: `dc/system/event/dcEventState/${this.formData.id}/3`,
method: "put",
}).then((result) => {
if (result.code == 200) Message.success("成功");
else Message.error(result?.msg);
this.modelVisible = false;
this.$emit("queryData", true);
//
this.$root.$emit('refresh-event');
this.$root.$emit('delete-event');
});
})
},
onDelete() {
if (this.formData.id) {
if (this.activeName == "-1") {

1
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/FormEvent/PresetFormItems.js

@ -367,6 +367,7 @@ export const eventType = {
key: "eventType",
type: "select",
options: {
clearable: true,
options: [
{
key: "1",

5
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/data.js

@ -51,6 +51,11 @@ export const tabMap = {
textColor: "#007FF4",
text: "处置记录",
},
3: {
state: 3,
textColor: "#007FF4",
text: "终止记录",
},
};
export const gjSearchFormList = [
{

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

@ -126,6 +126,10 @@ export default {
label: "已处置事件",
key: "2"
},
{
label: "终止事件",
key: "3"
},
],
eventDetailDialogVisible: false,
isShowAddNew: false,

37
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/audit/StatsDialogVisible/index.vue

@ -1,5 +1,5 @@
<template>
<Dialog v-model="modelVisible" title="收费站管制统计" style="width: 100%;z-index: 1999 !important;">
<Dialog v-model="modelVisible" title="收费站管制统计" style="width: 100%;z-index: 1999 !important; top:-100px">
<div class="search">
<InputSearch
:formList="searchFormList"
@ -64,7 +64,7 @@
<el-table-column
prop="minuteTime"
label="时长(分钟)"
width="120"
width="160"
align="center"
>
</el-table-column>
@ -80,7 +80,7 @@
<el-table-column
prop="lastYearTime"
label="时长(分钟)"
width="120"
width="160"
align="center"
>
</el-table-column>
@ -154,7 +154,7 @@
<el-table-column
prop="minuteTime"
label="时长(分钟)"
width="120"
width="160"
align="center"
>
</el-table-column>
@ -170,7 +170,7 @@
<el-table-column
prop="lastYearTime"
label="时长(分钟)"
width="120"
width="160"
align="center"
>
</el-table-column>
@ -194,12 +194,14 @@
v-else
show-summary
:data="facilityTableData"
style="width: 100%"
class="custom-table-header"
style="width: 100%;"
>
<el-table-column
prop="facilityName"
label=""
width="150"
width="300"
align="center"
>
</el-table-column>
@ -499,6 +501,12 @@ export default {
</script>
<style>
.custom-table-header .el-table__header-wrapper th{
height: 45px; /* 你想要的高度 */
}
.custom-table-header td.el-table__cell{
height: 50px;
}
::v-deep {
.el-popover {
z-index: 2099 !important;
@ -580,4 +588,19 @@ export default {
.el-table--border::after {
background: none;
}
@media (min-width: 3000px) {
::v-deep .el-table .el-table__header-wrapper th,
.el-table .el-table__fixed-header-wrapper th {
height: 55px !important;
background: #0b6581;
border: 1px solid #07aec6;
font-size: 22px;
font-weight: normal;
}
::v-deep .el-table td.el-table__cell div{
font-size: 22px;
font-weight: normal;
}
}
</style>

9
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/audit/index.vue

@ -94,7 +94,6 @@ export default {
getTollStationAnalysis() {
return tollStationAnalysis().then((response) => {
this.tollBoothsData = response.data;
console.log(response.data)
this.maxRestrictionNum = Math.max.apply(
Math,
this.tollBoothsData.map((item) => {
@ -201,12 +200,12 @@ export default {
}
.content-item-right {
flex:1;
}
}
.box-item {
position: relative;
height: 8px;
width: 289px;
background: linear-gradient(
@ -216,7 +215,11 @@ export default {
);
border-radius: 2px 2px 2px 2px;
}
@media (min-width: 3000px) {
.box-item {
width: 770px;
}
}
.box-item:nth-child(1) {
margin-bottom: 10px;
}

1
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/index.vue

@ -93,7 +93,6 @@ export default {
getTollStationAnalysis() {
return tollStationAnalysis().then((response) => {
this.tollBoothsData = response.data;
console.log(response.data)
this.maxRestrictionNum = Math.max.apply(
Math,
this.tollBoothsData.map((item) => {

155
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/etime/charts.js

@ -0,0 +1,155 @@
import * as echarts from "echarts";
let options = {
tooltip: {
show: true,
trigger: "axis",
formatter: function (params) {
let mark = ''
params.forEach((e,index) => {
mark += e.marker + e.seriesName + ':'+e.value+'起<br />'
});
return `<div>${params[0].name}</div>${mark}`;
},
},
grid: {
left: "10px",
right: "10px",
top: "70px",
bottom: "0px",
containLabel: true,
},
xAxis: {
data: [],
show: true,
axisTick: {
show: false,
lineStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "#2A6278",
},
},
axisLabel: {
align: "center",
rotate: "1",
margin: 20,
textStyle: {
fontSize: 10,
color: "#E5E7E8",
},
},
},
yAxis: [
{
name: "(起)",
nameTextStyle: {
color: "#E5E7E8",
fomtSize: 10,
},
axisLine: {
lineStyle: {
color: "#1C82C5",
},
},
splitLine: {
show: true,
lineStyle: {
color: "#2A6278",
type: "solid",
},
},
axisLabel: {
show: true,
color: "#E5E7E8",
textStyle: {
fontSize: 10,
},
},
axisTick: {
show: false,
},
},
],
legend: {
itemHeight: 8,
itemWidth: 8,
top: "0",
right: "2%",
textStyle: {
color: "#fff",
},
},
series: [
{
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: "#1AC5FD", // 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: "line", //换为line 实现折线与柱状图
data:[],
color: "#E2BA74",
},
],
};
export default options;

137
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/etime/index.vue

@ -0,0 +1,137 @@
<template>
<div class="chartsETime "id="chartsETime"></div>
</template>
<script>
import * as echarts from "echarts";
import chartsOptions from "./charts";
import { exportFile } from "@screen/utils/common";
import request from '@/utils/request'
export default {
name: "ChartsETime",
data() {
return {
dataList: [],
};
},
created() {},
methods: {
export(name){
exportFile({
method:'get',
url: "/business/trafficIncidents/exportSelectEventTypeAnalysis",
filename: name,
data: this.data
});
},
bind(formData){
this.data = {}
let type = -1;
let date = ''
if(formData){
formData.keys().forEach(x=>{
if(x === 'startTime'){
date = formData.get(x).substr(0,10)
this.data['currently'] = formData.get(x).substr(0,10)
this.data['lastYear'] = moment(formData.get(x)).subtract(1,'year').format('YYYY-MM-DD')
} else {
this.data[x] = formData.get(x)
}
if(x === 'type'){
type = formData.get(x)
}
})
if(!this.myChart){
this.myChart = echarts.init(document.getElementById("chartsETime"));
}
request({
url: '/business/trafficIncidents/selectEventTimeProportion',
method: 'post',
data: this.data
}).then(res=>{
let aryXAxis = []
let arySeries0 = []
let arySeries1 = []
if(type === '1'){ //
for(let i = 0; i < 24; i++){
let c = _.find(res.data.currentlyMap,{time:i})
let l = _.find(res.data.lastYearMap,{time:i})
aryXAxis.push(i.toString()+'点')
arySeries0.push(c?c.number:0)
arySeries1.push(l?l.number:0)
}
} else if (type === '2'){ //
//
const daysInMonth = moment().daysInMonth();
for(let i = 1; i <= daysInMonth; i++){
let c = _.find(res.data.currentlyMap, function(o){
{ return Number(o.day.substring(8)) === i; }
})
let l = _.find(res.data.lastYearMap,function(o){
{ return Number(o.day.substring(8)) === i; }
})
aryXAxis.push(i.toString() + '日')
arySeries0.push(c?c.num:0)
arySeries1.push(l?l.num:0)
}
} else if (type === '3'){ //
//
let m = Number(date.substring(5,7))
for(let i = m; i < (m+3); i++){
let c = _.find(res.data.currentlyMap, {month:i})
let l = _.find(res.data.lastYearMap, {month:i})
aryXAxis.push(i.toString() + '月')
arySeries0.push(c?c.number:0)
arySeries1.push(l?l.number:0)
}
} else if(type === '4'){ //
for(let i = 1; i <= 12; i++){
let c = _.find(res.data.currentlyMap, {month:i})
let l = _.find(res.data.lastYearMap, {month:i})
aryXAxis.push(i.toString() + '月')
arySeries0.push(c?c.number:0)
arySeries1.push(l?l.number:0)
}
}
chartsOptions.xAxis.data = aryXAxis;
chartsOptions.series[0].data = arySeries0;
chartsOptions.series[1].data = arySeries1;
this.myChart.setOption(chartsOptions);
})
// selectEventType(formData).then((res) => {
// let lastAvgTimeData = [];
// let avgTimeData = [];
// let numData = [];
// let lastNumData = [];
// let eventSubclassData = [];
// res.data.forEach((item) => {
// lastAvgTimeData.push(item.lastAvgTime);
// numData.push(item.num);
// avgTimeData.push(item.avgTime);
// lastNumData.push(item.lastNum);
// eventSubclassData.push(item.eventSubclassName);
// chartsOptions.series[0].data = numData; //
// chartsOptions.series[1].data = lastNumData; //
// chartsOptions.series[2].data = avgTimeData; //
// chartsOptions.series[3].data = lastAvgTimeData; //
// chartsOptions.xAxis.data = eventSubclassData;
// })
// })
}
}
},
mounted() {
},
};
</script>
<style lang="scss" scoped>
.chartsETime {
height: 100%;
width: 100%;
}
</style>

4
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/etype/charts.js

@ -14,7 +14,7 @@ let options = {
},
},
grid: {
right: "4%",
right: "0%",
top: "60px",
left: "30px",
bottom: "0%",
@ -111,7 +111,7 @@ let options = {
itemHeight: 8,
itemWidth: 8,
top: "0%",
right: "10%",
right: "0%",
textStyle: {
color: "#fff",
},

1
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/etype/index.vue

@ -20,7 +20,6 @@ export default {
created() {},
methods: {
export(name){
exportFile({
method:'get',

65
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/index.vue

@ -40,21 +40,40 @@
<CTimer ref="refTimer" />
</section>
<section class="cright">
<div class="title">
<div class="icon"></div>事故时间分析
<ChartExport @export="$refs.refEType.export('事故时间分析')" />
</div>
<ETime ref="refETime" />
</section>
<!-- <section class="cright">
<div class="title">
<div class="icon"></div>事故类型分析
<ChartExport @export="$refs.refEType.export('事故类型分析')" />
</div>
<EType ref="refEType" />
</section>
<section class="cright">
</section> -->
<!-- <section class="cright">
<div class="title">
<div class="icon"></div>事故车型分析
<ChartExport @export="$refs.refCModel.export('事故车型分析')" />
</div>
<CModel ref="refCModel" />
</section>
</section> -->
</section>
</div>
<!-- 添加或修改控制码对话框 -->
<Dialog title="更多" v-model="modelVisible" style="z-index: 99999;" width="700px" >
<el-tabs v-model="activeTab" @tab-click="onChangeTab">
<el-tab-pane label="事故类型分析" name="EType" />
<el-tab-pane label="事故车型分析" name="CModel" />
</el-tabs>
<div style="width: 660px;height: 300px;">
<EType v-if="activeTab === 'EType'" ref="refEType" />
<CModel v-if="activeTab === 'CModel'" ref="refCModel" />
</div>
</Dialog>
</div>
</template>
@ -62,6 +81,7 @@
import TopComponent from './components/topComponent/index.vue'
import Search from './search/index.vue'
import CTimer from './ctimer/index.vue';
import ETime from './etime/index.vue';
import EType from './etype/index.vue';
import CModel from './cmodel/index.vue';
@ -69,6 +89,7 @@ import Days from './days/index.vue';
import Audit from './audit/index.vue';
import TAnaly from './tanaly/index.vue';
import ChartExport from "@screen/components/ChartExport/index.vue"
import Dialog from "@screen/components/Dialog/index.vue";
export default {
name: 'GovernanceAnalysis',
@ -76,25 +97,28 @@ export default {
TopComponent,
Search,
CTimer,
EType,
ETime,
CModel,
Days,
Audit,
TAnaly,
ChartExport
ChartExport,
EType,
Dialog
},
data() {
return {
activeName: "first"
activeName: "first",
modelVisible:false,
activeTab: 'EType',
searchQuery:null
}
},
mounted() {
window.addEventListener("resize", () => {
this.$refs.refTimer.myChart.resize();
this.$refs.refEType.myChart.resize();
// this.$refs.refTAnaly.myChart.resize();
this.$refs.refCModel.myChart.resize();
this.$refs.refETime.myChart.resize();
this.$refs.refDays.myChart.resize();
});
@ -106,11 +130,26 @@ export default {
formData.append("type", search.type);
formData.append("startTime", search.startTime);
this.$refs.refTimer.bind(formData)
this.$refs.refEType.bind(formData)
this.$refs.refCModel.bind(formData)
this.$refs.refETime.bind(formData)
},
changeTabs() {
bindMore(search){
this.modelVisible = true;
this.searchQuery = new FormData();
this.searchQuery.append("direction", search.direction);
this.searchQuery.append("type", search.type);
this.searchQuery.append("startTime", search.startTime);
this.onChangeTab({name:'EType'})
},
onChangeTab(e) {
this.activeName = e.name
console.log(this.activeName,66)
setTimeout(() => {
console.log(this.activeName,555)
if(this.activeName==='EType'){
this.$refs.refEType.bind(this.searchQuery )
} else if(this.activeName==='CModel')
this.$refs.refCModel.bind(this.searchQuery )
}, 300);
}
}

32
ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/search/index.vue

@ -25,6 +25,8 @@
<el-button type="primary" size="mini" class="btnSearch" @click="searchQuery" icon="el-icon-search">查询</el-button>
<el-button class="btnReset" size="mini" icon="el-icon-refresh-left" @click="onReset">重置</el-button>
<el-button class="btnReset" size="mini" icon="el-icon-more" @click="onMore">更多</el-button>
</div>
</template>
<script>
@ -93,8 +95,15 @@ export default {
created() { },
methods: {
searchQuery() {
let startTime = this.getStartTime();
this.$parent.bindCharts({
type:this.type,
direction: this.direction,
startTime
});
},
getStartTime(){
let startTime = "";
if (this.type == 2) {
startTime = moment().format("YYYY-MM-01 00:00:00");
@ -115,20 +124,15 @@ export default {
} else if (this.type == 4) {
startTime = moment().format("YYYY-01-01 00:00:00");
if(this.dateTime){
startTime = moment(this.dateTime).format("YYYY-MM-01 00:00:00");
startTime = moment(this.dateTime).format("YYYY-01-01 00:00:00");
}
} else {
startTime = moment().format("YYYY-MM-DD HH:mm:ss");
if(this.dateTime){
startTime = moment(this.dateTime).format("YYYY-MM-01 00:00:00");
startTime = moment(this.dateTime).format("YYYY-MM-DD 00:00:00");
}
}
this.$parent.bindCharts({
type:this.type,
direction: this.direction,
startTime
});
return startTime
},
onReset() {
this.selectId = 1;
@ -139,6 +143,14 @@ export default {
this.dateTime = moment().format("YYYY-MM-DD HH:mm:ss");
this.searchQuery();
},
onMore(){
let startTime = this.getStartTime();
this.$parent.bindMore({
type:this.type,
direction: this.direction,
startTime
});
}
},
mounted() {
this.$nextTick(()=>{
@ -153,7 +165,7 @@ export default {
display: flex;
align-items: center;
height: 40px;
width: 500px;
font-size: 14px;
margin-bottom: 10px;
z-index: 1;

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/manual/statistic/components/Eventfiltering/index.vue

@ -251,7 +251,7 @@ export default {
}
.Eventfiltering-right {
width: 20vw;
width: 380px;
height: 100%;
}
}

2
ruoyi-ui/src/views/JiHeExpressway/pages/control/manual/statistic/components/Sitefiltering/index.vue

@ -273,7 +273,7 @@ export default {
}
.Eventfiltering-right {
width: 20vw;
width: 380px;
height: 100%;
}
}

97
ruoyi-ui/src/views/JiHeExpressway/pages/datav/roadNet/index.vue

@ -26,7 +26,7 @@
</div>
<div class="part manage">
<img class="arrow arrow_01" src="./img/arrowRight.svg" alt="">
<img class="arrow arrow_02" src="./img/arrowRight.svg" alt="">
<img class="arrow arrow_02" src="./img/arrowRight.svg" alt="" @click="mockData">
<img class="arrow arrow_03" src="./img/arrowRight.svg" alt="">
<div class="manageTotal">
<h4 >济菏运管中心</h4>
@ -46,7 +46,7 @@
<div class="calcUnit small" style="margin-top: -20px;">
<h4 >实时计算</h4>
<div class="con">
<p class="total keep-ratio">25,568,876</p>
<p class="total keep-ratio">{{ realTime }}</p>
<ul>
<li >节点</li>
<li >5/5</li>
@ -60,7 +60,7 @@
<div class="calcUnit big" style="margin-top:-20px;margin-bottom: 20px;">
<h4>AI模型</h4>
<div class="con">
<p class="total">33,210</p>
<p class="total">{{realTimeAi}}</p>
<ul>
<li >实时交通态势感知模型</li>
<li >交通预警模型</li>
@ -147,7 +147,9 @@ export default {
{ top: "calc(100% + 60px)", right: "50%", transform: "translate(-20px, -50%)", opacity: 0 },
{ top: "calc(100% + 60px)", left: "50%", transform: "translate(20px, -50%)", opacity: 0 }
],
dataShare: []
dataShare: [],
realTime: '25,568,876',
realTimeAi: '33,210'
}
},
components: {
@ -159,32 +161,61 @@ export default {
},
methods: {
mockData() {
const mock = () => {
let num1 = this.summary[1].dataAll.value + Math.floor(Math.random() * 200);
this.summary[1].dataAll.value = num1;
this.summary[1].dataRed.value = (num1 / this.summary[1].dataGreen.value * 100).toFixed(2);
let num2 = +this.summary[2].dataAll.value + Math.random() * 0.01;
this.summary[2].dataAll.value = num2.toFixed(2);
this.summary[2].dataRed.value = (num2 / this.summary[2].dataGreen.value * 100).toFixed(2);
let num3 = this.summary[3].dataAll.value + Math.floor(Math.random() * 20);
this.summary[3].dataAll.value = num3;
this.summary[3].dataRed.value = (num3 / this.summary[3].dataGreen.value * 100).toFixed(2);
let num4 = 1154 + Math.random() * 120;
this.summary[4].dataAll.value = num4.toFixed(2);
this.summary[4].dataGreen.value = (num4 / this.summary[4].dataAll.total * 100).toFixed(2);
let num5 = 81 + Math.random() * 20;
this.summary[5].dataAll.value = num5.toFixed(2);
this.summary[5].dataGreen.value = (num5 / this.summary[5].dataAll.total * 100).toFixed(2);
//
this.summary[1].dataAll.value = (Number(this.summary[1].dataAll.value)+Math.floor(Math.random() * 20)).toFixed(0);
//
this.summary[2].dataAll.value = (Number(this.summary[2].dataAll.value) + Math.random() * 0.01).toFixed(2);
//
this.summary[3].dataAll.value = (Number(this.summary[1].dataAll.value)+Math.floor(Math.random() * 10)).toFixed(0);
let num4 = Math.random() * 10 * (new Date().getTime()%2===0?1:-1);
this.summary[4].dataAll.value = (Number(this.summary[4].dataAll.value)+num4).toFixed(1)
this.summary[4].dataGreen.value = (Number(this.summary[4].dataAll.value)/Number( this.summary[4].dataAll.total)*100).toFixed(2)
let num5 = Math.random() * .1 * (new Date().getTime()%2===0?1:-1);
let value5 = (Number(this.summary[5].dataAll.value)+num5)
if(value5<3){
value5 = value5*2
}
mock();
let interval = setInterval(() => {
mock();
this.summary[5].dataAll.value = value5.toFixed(1)
this.summary[5].dataGreen.value = (Number(this.summary[5].dataAll.value)/Number( this.summary[5].dataAll.total)*100).toFixed(2)
this.summaryMem.memUsed = this.summary[4].dataAll.value
this.summaryMem.cpuUsed = this.summary[5].dataAll.value
this.summaryMem.filUsed = (Number(this.summaryMem.filUsed)+Math.random() * 0.01).toFixed(2)
this.manage[0].value = (Number(this.manage[0].value)+Math.random() * 2).toFixed(0)
this.manage[1].value = (Number(this.manage[1].value)+Math.random() * 10).toFixed(0)
this.manage[2].value = (Number(this.manage[2].value)+Math.random() * 2).toFixed(0)
this.manage[3].value = (Number(this.manage[3].value)+Math.random() * 8).toFixed(0)
this.manage[4].value = (Number(this.manage[4].value)+Math.random() * 8).toFixed(0)
this.manage[5].value = (Number(this.manage[5].value)+Math.random() * 1).toFixed(0)
this.manage[6].value = (Number(this.manage[6].value)+Math.random() * 3).toFixed(0)
this.manage[7].value = (Number(this.manage[7].value)+Math.random() * 20).toFixed(0)
this.dataShare[2].value = (Number(this.dataShare[2].value)+Math.random() * 10).toFixed(0)
this.dataShare[3].value = (Number(this.dataShare[3].value)+Math.random() * 3).toFixed(0)
this.dataShare[4].value = (Number(this.dataShare[4].value)+Math.random() * 10).toFixed(0)
this.dataShare[6].value = (Number(this.dataShare[6].value)+Math.random() * 6).toFixed(0)
this.dataShare[7].value = (Number(this.dataShare[7].value)+Math.random() * 2).toFixed(0)
let num8 = Math.random() * (new Date().getTime()%2===0?1:-1);
this.dataShare[8].value = (Number(this.dataShare[8].value)+num8).toFixed(2)
this.dataShare[9].value = (Number(this.dataShare[9].value)+Math.random() * 6).toFixed(0)
const reg = /(\d)(?=(?:\d{3})+$)/g;
this.realTime = (Number(this.realTime.replace(/,/g,''))+Math.random() * 10).toFixed(0).replace(reg,'$1,')
this.realTimeAi = (Number(this.realTimeAi.replace(/,/g,''))+Math.random() * 5).toFixed(0).replace(reg,'$1,')
setTimeout(() => {
this.mockData();
}, 1500);
this.$once("hook:beforeDestroy", () => this.clearInterval(interval));
},
async initData() {
this.summary = [
@ -224,7 +255,7 @@ export default {
}
];
// 1
//#region 1
request({ url: 'business/metrics/device/count', method: 'get'}).then(res=>{
if (res.code != 200) return;
this.summary[0].dataAll.value = res.data;
@ -237,9 +268,9 @@ export default {
if (res.code != 200) return;
this.summary[0].dataRed.value = res.data;
});
//#endregion
//2
//#region 2
let startTime = moment('1990-01-01 00:00:00').format('YYYY-MM-DD HH:mm:ss');
let endTime = moment().format('YYYY-MM-DD HH:mm:ss');
request({ url: 'business/metrics/message-access/count', method: 'get',params:{
@ -251,6 +282,7 @@ export default {
this.summary[1].dataAll.value = res.data;
});
//
startTime = moment().subtract(1, 'days').format('YYYY-MM-DD') + ' 00:00:00';
endTime = moment().subtract(1, 'days').format('YYYY-MM-DD') + ' 23:59:59';
@ -274,7 +306,8 @@ export default {
this.summary[1].dataRed.color = res3>0?'green':'red';
});
});
//#endregion
// 3
request({ url: 'business/metrics/iot-server/monitor-previous', method: 'get'}).then(res=>{
if (res.code != 200) return;

2
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/statisticalAnalysis/query/dialogRecord.vue

@ -31,7 +31,7 @@
</template>
</ElTableColumn>
<ElTableColumn prop="lossRate" width="80" label="丢包率%"></ElTableColumn>
<ElTableColumn prop="rttAvg" width="80" label="平均延时ms"></ElTableColumn>
<ElTableColumn prop="rttAvg" width="110" label="平均延时ms"></ElTableColumn>
<ElTableColumn prop="networkQuality" width="80" label="网络质量"> </ElTableColumn>
<ElTableColumn prop="monitorTime" label="检测时间"> </ElTableColumn>
</Table>

4
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/smart/statisticalAnalysis/query/index.vue

@ -48,8 +48,8 @@
</div>
</template>
</ElTableColumn>
<ElTableColumn prop="lossRate" width="120" label="丢包率"></ElTableColumn>
<ElTableColumn prop="rttAvg" width="120" label="平均延时"></ElTableColumn>
<ElTableColumn prop="lossRate" width="120" label="丢包率%"></ElTableColumn>
<ElTableColumn prop="rttAvg" width="120" label="平均延时ms"></ElTableColumn>
<ElTableColumn prop="networkQuality" width="120" label="网络状况"> </ElTableColumn>
<ElTableColumn prop="onlineRate" width="120" label="在线率" sortable>
<template slot-scope="scope">

20
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/analysis/progress/index.vue

@ -192,7 +192,7 @@ export default {
display: inline-flex;
left: 0px;
top: -5px;
width: 40px !important;
width: 2vw !important;
height: 35px !important;
background-color: transparent;
cursor: pointer;
@ -204,7 +204,7 @@ export default {
display: inline-flex;
left: 0px;
top: 8px;
width: 45px !important;
width: 2.3vw !important;
height: 3px !important;
background-color: #c7c7c7;
}
@ -214,7 +214,7 @@ export default {
display: inline-flex;
right: 0px;
top: -5px;
width: 45px;
width: 2.3vw;
height: 35px;
background-color: transparent;
cursor: pointer;
@ -226,7 +226,7 @@ export default {
display: inline-flex;
left: 0px;
top: 8px;
width: 45px !important;
width: 2.3vw !important;
height: 3px !important;
background-color: #c7c7c7;
}
@ -248,7 +248,7 @@ export default {
background: #c7c7c7;
border-radius: 50%;
opacity: 1;
left: 60px;
left: 3.1vw;
}
.point::after {
@ -284,9 +284,13 @@ export default {
position: absolute;
cursor: pointer;
margin-top: 35px;
margin-left: 4px;
margin-left: .2vw;
user-select: none;
z-index: 999999;
z-index: 999;
}
@media (min-width: 3000px) {
.tag {
margin-left: -.2vw;
}
}
</style>

2
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/analysis/railway/charts.js

@ -16,7 +16,7 @@ var options = {
// 边距自行修改
bottom: "0%",
left: "10px",
top: "50px",
top: "10px",
right: "15%",
},
xAxis: {

18
ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/analysis/railway/index.vue

@ -1,5 +1,7 @@
<template>
<div class="chartsSE" id="situationEchartBox"></div>
<div class="scpanel">
<div class="chartsSE" id="situationEchartBox"></div>
</div>
</template>
<script>
@ -25,6 +27,7 @@ export default {
this.$nextTick(() => {
this.bind();
})
console.log(window.innerHeight)
},
created() { },
methods: {
@ -51,7 +54,7 @@ export default {
let texts = [];
let datas = [];
data.forEach((it, index) => {
if (index > 6) return;
// if (index > 6) return;
texts.push(it.sectionName);
datas.push(it.number);
});
@ -67,8 +70,17 @@ export default {
</script>
<style lang="scss" scoped>
.scpanel{
height:30vh;overflow-y: auto;overflow-x: hidden;margin-top: 40px;
}
@media (min-height: 1000px) {
.scpanel{
height:35vh;
}
}
.chartsSE {
width: 100%;
height: 100%;
height: 600px;
}
</style>

6
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/sortFaceForecast/index.vue

@ -287,10 +287,10 @@ export default {
content: "";
position: absolute;
display: inline-flex;
width: 189px;
width: 9.8vw;
height: 2px;
top: 14px;
left: -200px;
left: -10.4vw;
background: linear-gradient(
90deg,
rgba(59, 216, 188, 1),
@ -302,7 +302,7 @@ export default {
content: "";
position: absolute;
display: inline-flex;
width: 189px;
width: 9.8vw;
height: 2px;
top: 14px;
left: 35px;

10
ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherWarning/components/infowWarningList/index.vue

@ -2,7 +2,7 @@
<div class="congestionWL" >
<WgtTitle title="能见度异常信息"></WgtTitle>
<div class="weaterMainWl" style="height:500px;width: 49vw;">
<div class="weaterMainWl" >
<Table
:border="false"
:data="tableData"
@ -153,4 +153,12 @@ export default {
flex-direction: column;
}
.weaterMainWl{
height:500px;width: 49vw;
}
@media (min-height: 1000px) {
.weaterMainWl{
height:630px;
}
}
</style>

2
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/analysis/section/charts.js

@ -21,7 +21,7 @@ var options = {
// 边距自行修改
bottom: "5%",
left: "2%",
top: "40px",
top: "10px",
right: "10%",
},
xAxis: {

18
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/analysis/section/index.vue

@ -1,5 +1,7 @@
<template>
<div class="scpanel">
<div class="chartsSit "id="anaSituation"></div>
</div>
</template>
<script>
@ -50,9 +52,9 @@ export default {
params: this.data
}).then(res=>{
if (res.code != 200) return this.$message.error(res?.msg)
if(res.data.length > 6){
res.data = res.data.splice(0,6)
}
// if(res.data.length > 6){
// res.data = res.data.splice(0,6)
// }
chartsOption.yAxis[0].data = res.data.map(x=>x.facilityName);
chartsOption.series[0].data = res.data.map(x=>x.trafficVolume);
@ -68,9 +70,17 @@ export default {
</script>
<style lang="scss" scoped>
.scpanel{
height:200px;overflow-y: auto;overflow-x: hidden;margin-top: 30px;
}
@media (min-height: 1000px) {
.scpanel{
height:300px;
}
}
.chartsSit {
height: 100%;
height: 760px;
width: 100%;
}
</style>

3
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficFlow/statistics/data.js

@ -1,3 +1,5 @@
import moment from "moment/moment";
export const searchFormList = [
{
label: "方向:",
@ -23,6 +25,7 @@ export const searchFormList = [
label: "时间范围:",
key: "time",
type: "datePicker",
default:[moment().format('YYYY-MM-DD'),moment().format('YYYY-MM-DD')],
options: {
format: "yyyy-MM-dd",
type: "daterange",

22
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/analysis/indicator/index.vue

@ -117,9 +117,9 @@ export default {
});
_data.sort(function(a,b){return b.num-a.num})
if(_data.length > 7){
_data = _data.slice(0,7)
}
// if(_data.length > 7){
// _data = _data.slice(0,7)
// }
this.count = _count;
this.tableData = _data;
})
@ -151,9 +151,10 @@ export default {
overflow: hidden;
.bodySort {
flex: 1;
// flex: 1;
overflow: auto;
width: 100%;
height: 270px;
> div:first-child {
.barTitle {
background: linear-gradient(180deg, #ff6969 0%, #ffb904 100%);
@ -200,7 +201,6 @@ export default {
.text {
font-size: 12px;
}
.lineHight {
width: 60%;
height: 8px;
@ -219,9 +219,19 @@ export default {
top: -7px;
}
}
@media (min-width: 3000px) {
.lineHight{
width: 80%;
}
}
}
}
@media (min-height: 1000px) {
.bodySort{
height:340px;
}
}
.textStr {
display: inline-flex;
width: 100%;

4
ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/query/index.vue

@ -1,6 +1,7 @@
<template>
<div class='congestion'>
<div class="buttonbar">
<div style="display: flex;gap:10px;">
<ButtonGradient @click="onRefreshForm" class="button">
<template #prefix>
<i class="el-icon-refresh-right"></i>
@ -13,6 +14,7 @@
</template>
导出
</ButtonGradient>
</div>
<InputSearch ref="searchComp" style="width: 402px;margin-left: 1300px;" :formList="formList" @handleSearch="handleSearch" />
</div>
<div class="body">
@ -147,7 +149,6 @@ export default {
},
handleSearch(data) {
let _search = {};
console.log(3333,data,333)
if(data.time && data.time.length === 2){
_search['startDate'] = (typeof data.time[0] === 'string')?data.time[0] :data.time[0].format('yyyy-MM-dd')
_search['endDate'] = (typeof data.time[1] === 'string')?data.time[1] :data.time[1].format('yyyy-MM-dd')
@ -300,6 +301,7 @@ export default {
.buttonbar {
display: inline-flex;
flex-direction: row;
justify-content: space-between;
padding-top: 15px;
margin-bottom: 20px;
>.button {

4
ruoyi-ui/src/views/JiHeExpressway/pages/service/InformationReleaseManagement/Cards/AuditDetails/index.vue

@ -41,7 +41,7 @@ export default {
if(e.publishChannels === 4 || e.publishChannels === 7){
const contentDetailsInfo = JSON.parse(e.contentDetails)
if(e.publishChannels === 4){ //
let msg = '情报板数据异常' + e.contentDetails
let msg = '情报板数据异常' //+ e.contentDetails
//
if(contentDetailsInfo.length > 0){
if(contentDetailsInfo[0].functions.length > 1){
@ -59,7 +59,7 @@ export default {
}
e.contentDetails = msg
} else if(e.publishChannels === 7){
let msg = '语音广播数据异常'+e.contentDetails
let msg = '语音广播数据异常' //+e.contentDetails
if(contentDetailsInfo.length > 0){
if(contentDetailsInfo[0].functions.length > 0){
msg = contentDetailsInfo[0].functions[0].params.text

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

@ -0,0 +1,150 @@
import * as echarts from "echarts";
let options = {
color:['#00A3FF'],
tooltip: {
show: true,
trigger: "axis",
formatter: function (params) {
let mark = ''
params.forEach((e,index) => {
mark += e.marker + e.seriesName + ':'+e.value+'起<br />'
});
return `<div>${params[0].name}</div>${mark}`;
},
},
grid: {
left: "10px",
right: "20px",
top: "70px",
bottom: "0px",
containLabel: true,
},
xAxis: {
data: [],
show: true,
axisTick: {
show: false,
lineStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "#2A6278",
},
},
axisLabel: {
align: "center",
rotate: "1",
margin: 20,
textStyle: {
fontSize: 10,
color: "#E5E7E8",
},
},
},
yAxis: [
{
name: "(起)",
nameTextStyle: {
color: "#E5E7E8",
fomtSize: 10,
},
axisLine: {
lineStyle: {
color: "#1C82C5",
},
},
splitLine: {
show: true,
lineStyle: {
color: "#2A6278",
type: "solid",
},
},
axisLabel: {
show: true,
color: "#E5E7E8",
textStyle: {
fontSize: 10,
},
},
axisTick: {
show: false,
},
},
],
legend: {
itemHeight: 8,
itemWidth: 8,
top: "0",
right: "2%",
textStyle: {
color: "#fff",
},
},
series: [
{
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: "#1AC5FD", // 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: [],
}
],
};
export default options;

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

@ -0,0 +1,266 @@
import * as echarts from "echarts";
let options = {
color:['#00A3FF','#0c8c52','#c7d61d'],
tooltip: {
show: true,
trigger: "axis",
formatter: function (params) {
let mark = ''
params.forEach((e,index) => {
mark += e.marker + e.seriesName + ':'+e.value+'起<br />'
});
return `<div>${params[0].name}</div>${mark}`;
},
},
grid: {
left: "10px",
right: "20px",
top: "70px",
bottom: "0px",
containLabel: true,
},
xAxis: {
data: [],
show: true,
axisTick: {
show: false,
lineStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "#2A6278",
},
},
axisLabel: {
align: "center",
rotate: "1",
margin: 20,
textStyle: {
fontSize: 10,
color: "#E5E7E8",
},
},
},
yAxis: [
{
name: "(起)",
nameTextStyle: {
color: "#E5E7E8",
fomtSize: 10,
},
axisLine: {
lineStyle: {
color: "#1C82C5",
},
},
splitLine: {
show: true,
lineStyle: {
color: "#2A6278",
type: "solid",
},
},
axisLabel: {
show: true,
color: "#E5E7E8",
textStyle: {
fontSize: 10,
},
},
axisTick: {
show: false,
},
},
],
legend: {
itemHeight: 8,
itemWidth: 8,
top: "0",
right: "2%",
textStyle: {
color: "#fff",
},
},
series: [
{
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",
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,
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: [],
}
],
};
export default options;

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

@ -0,0 +1,105 @@
import * as echarts from "echarts";
let options = {
color:['#00A3FF','#c7d61d'],
tooltip: {
show: true,
trigger: "axis",
formatter: function (params) {
let mark = ''
params.forEach((e,index) => {
mark += e.marker + e.seriesName + ':'+e.value+'起<br />'
});
return `<div>${params[0].name}</div>${mark}`;
},
},
grid: {
left: "10px",
right: "20px",
top: "70px",
bottom: "0px",
containLabel: true,
},
xAxis: {
data: [],
show: true,
axisTick: {
show: false,
lineStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "#2A6278",
},
},
axisLabel: {
align: "center",
rotate: "1",
margin: 20,
textStyle: {
fontSize: 10,
color: "#E5E7E8",
},
},
},
yAxis: [
{
name: "(起)",
nameTextStyle: {
color: "#E5E7E8",
fomtSize: 10,
},
axisLine: {
lineStyle: {
color: "#1C82C5",
},
},
splitLine: {
show: true,
lineStyle: {
color: "#2A6278",
type: "solid",
},
},
axisLabel: {
show: true,
color: "#E5E7E8",
textStyle: {
fontSize: 10,
},
},
axisTick: {
show: false,
},
},
],
legend: {
itemHeight: 8,
itemWidth: 8,
top: "0",
right: "2%",
textStyle: {
color: "#fff",
},
},
series: [
{
name: "当前事故总量",
type: "line",
barWidth: "10px",
selectedMode: false,
data: [],
},
{
name: "去年事故总量",
type: "line",
barWidth: "10px",
selectedMode: false,
data: [],
}
],
};
export default options;

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

@ -0,0 +1,208 @@
import * as echarts from "echarts";
let options = {
color:['#00A3FF','#0c8c52'],
tooltip: {
show: true,
trigger: "axis",
formatter: function (params) {
let mark = ''
params.forEach((e,index) => {
mark += e.marker + e.seriesName + ':'+e.value+'起<br />'
});
return `<div>${params[0].name}</div>${mark}`;
},
},
grid: {
left: "10px",
right: "20px",
top: "70px",
bottom: "0px",
containLabel: true,
},
xAxis: {
data: [],
show: true,
axisTick: {
show: false,
lineStyle: {
color: "#fff",
},
},
axisLine: {
lineStyle: {
color: "#2A6278",
},
},
axisLabel: {
align: "center",
rotate: "1",
margin: 20,
textStyle: {
fontSize: 10,
color: "#E5E7E8",
},
},
},
yAxis: [
{
name: "(起)",
nameTextStyle: {
color: "#E5E7E8",
fomtSize: 10,
},
axisLine: {
lineStyle: {
color: "#1C82C5",
},
},
splitLine: {
show: true,
lineStyle: {
color: "#2A6278",
type: "solid",
},
},
axisLabel: {
show: true,
color: "#E5E7E8",
textStyle: {
fontSize: 10,
},
},
axisTick: {
show: false,
},
},
],
legend: {
itemHeight: 8,
itemWidth: 8,
top: "0",
right: "2%",
textStyle: {
color: "#fff",
},
},
series: [
{
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",
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: [],
}
],
};
export default options;

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

@ -0,0 +1,247 @@
import * as echarts from "echarts";
var options = {
tooltip: {
show: true,
trigger: "axis",
formatter: (params) => {
let name = params[0].name.replace(/-/g, "")
let name1 = name+'-济南'
let name2 = name+'-菏泽'
if(params[0].axisIndex === 1){
name1 = name+'-菏泽'
name2 = name+'-济南'
}
return `${name1}
<br/>
${params[0].marker}${params[0].seriesName}: <span style="font-weight:bold;"> ${params[0].value} </span>
<br/><br/>
${name2}
<br/>
${params[1].marker}${params[1].seriesName}: <span style="font-weight:bold;"> ${params[1].value} </span>`;
},
},
axisPointer: {
link: [
{
xAxisIndex: "all",
},
],
},
legend: {
top: 0,
right: 0,
icon:'rect',
textStyle: {
color: "#fff",
},
itemHeight: 5,
itemWidth: 10,
data: [
{
name: "本期车流量",
itemStyle: {
color: '#6DBBFB'
}
},{
name: "去年同期",
itemStyle: {
color: '#5FA52B'
}
},
],
},
grid: [
{
left: 40,
top: '25%',
right: 10,
height: "35%",
},
{
left: 40,
right: 10,
top: "60%",
height: "35%",
},
],
xAxis: [
{
type: "category",
data: [
"殷家林-枢纽",
"大学城-立交",
"长清-立交",
"松竹-枢纽",
"孝里-立交",
"平阴北-立交",
"平阴-立交",
"孔村-枢纽",
"平阴南-立交",
"东平-立交",
"东平湖-枢纽",
"梁山东-立交",
"梁山-立交",
"嘉祥西-立交",
"王官屯-枢纽",
],
axisLabel: {
show:false
},
z: 10,
splitLine: {
show: false,
},
axisTick: {
show: false,
},
},
{
onZero: true,
axisLine: { show: false },
gridIndex: 1,
type: "category",
z: 10,
data: [
"殷家林-枢纽",
"大学城-立交",
"长清-立交",
"松竹-枢纽",
"孝里-立交",
"平阴北-立交",
"平阴-立交",
"孔村-枢纽",
"平阴南-立交",
"东平-立交",
"东平湖-枢纽",
"梁山东-立交",
"梁山-立交",
"嘉祥西-立交",
"王官屯-枢纽",
],
position: "top",
axisLabel: {
color: "#fff",
margin: -20,
formatter: function (params) {
return `${params.substr(0,params.length-2)}\n\n${params.substr(params.length-2)}`;
},
},
axisTick: {
show: false,
},
},
],
yAxis: [
{
name: "车流量 ",
type: "value",
axisLabel: {
color: "#FFF",
},
axisLine: {
show: true,
lineStyle: {
color: "#00D1FF",
},
},
splitLine: {
show: false,
},
},
{
gridIndex: 1,
name: "",
type: "value",
inverse: true,
axisLabel: {
color: "#FFF",
},
axisLine: {
show: true,
lineStyle: {
color: "#06AED3",
},
},
splitLine: {
show: false,
},
},
],
series: [
{
name: "本期车流量",
type: "line",
symbolSize: 0,
lineStyle: {
color: "#06AED3",
},
smooth: true,
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 1,
color: "#06AED300",
},
{
offset: 0,
color: "#06AED3",
},
],
false
),
},
},
data: [
57, 36, 56, 95, 125, 194, 94, 94, 74, 34, 125, 194, 94, 94, 74, 34,
],
},
{
name: "本期车流量",
type: "line",
symbol: "circle",
symbolSize: 0,
xAxisIndex: 1,
yAxisIndex: 1,
smooth: true,
lineStyle: {
color: "#06AED3",
},
areaStyle: {
normal: {
color: new echarts.graphic.LinearGradient(
0,
0,
0,
1,
[
{
offset: 0,
color: "#06AED300",
},
{
offset: 1,
color: "#06AED3",
},
],
false
),
},
},
data: [
67, 36, 56, 195, 25, 194, 94, 94, 74, 21, 195, 25, 194, 94, 94, 74, 21,
],
},
],
};
export default options;

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

@ -0,0 +1,650 @@
<template>
<div class="serviceAnalysis">
<div class="cleft">
<el-checkbox
class="treeCheckbox"
v-model="menuNodeAll"
@change="handleCheckedTreeNodeAll($event, 'menu')"
>全选/全不选</el-checkbox
>
<el-tree
ref="menu"
:data="treeData"
show-checkbox
@current-change="onTreeClick"
node-key="id"
default-expand-all
:highlight-current="true"
:expand-on-click-node="false"
:auto-expand-parent="false">
</el-tree>
<!-- <el-checkbox-group class="device" v-model="devices" @change="onDeviceChange">
<el-checkbox v-for="(item,index) in deviceTypeList" :label="item.value" >{{ item.label }}</el-checkbox>
</el-checkbox-group> -->
</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 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" />
</Table>
</div>
</div>
</div>
</template>
<script>
import Search from './search/index.vue'
import request from "@/utils/request";
// import { setLoading } from "@screen/utils/index.js"
import { delay, exportFile, confirm, uploadFile } from "@screen/utils/common";
import { Message } from "element-ui";
import * as echarts from "echarts";
import chartsOptions from "./charts";
import chartsOptions3 from "./charts3";
import chartsOptions4 from "./charts4";
import chartsOptions6 from "./charts6";
import chartsOptions8 from "./charts8";
import Table from '@screen/components/Table.vue';
//
export default {
name: "serviceAnalysis",
components: {
Search,
Table
},
data() {
return {
curid:'',
treeData:[
{
id:'a',
label:'交通事件',
children:[
{ id:'1', label:'事故多发路段'},
{ id:'2', label:'事件类型分析'},
{ id:'3', label:'事故车型分析'},
{ id:'4', label:'事故时间分析'},
{ id:'5', label:'事故地市分布'},
{ id:'6', label:'交通管制情况统计'},
]
},{
id:'b',
label:'天气情况统计',
children:[
{ id:'7', label:'天气情况统计'},
]
},{
id:'c',
label:'交通量统计',
children:[
{ id:'8', label:'门架车流量'},
{ id:'9', label:'收费站车流量'},
]
},{
id:'d',
label:'交通事故情况',
children:[
{ id:'10', label:'事故类型统计'},
]
},{
id:'e',
label:'拥堵情况',
children:[
{ id:'11', label:'拥堵地点统计'},
{ id:'12', label:'路段平均拥堵时长'},
]
}
],
tableData:[],
menuNodeAll: false,
tableCols:[]
};
},
created() {
},
mounted() {
this.$nextTick(()=>{
const def = 1;
this.$refs.menu.setCheckedKeys([def]);
this.$refs.menu.setCurrentKey(def);
if(!this.myChart){
this.myChart = echarts.init(document.getElementById("charts"));
}
this.bind();
// this.searchQuery()
})
window.addEventListener("resize", () => {
if(this.myChart)
this.myChart.resize();
});
},
methods: {
getKeys(){
let keys = this.$refs.menu.getCheckedKeys().filter(x=>!isNaN(x));
return keys;
},
bind(){
let id = this.$refs.menu.getCurrentKey();
let query = this.$refs.search.searchQuery();
if(id==='1'){
request({
url: '/business/sdhsEvent/sectionAnalysis',
method: 'post',
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'路段桩号',value:'stake'},{label:'数量(起)',value:'num'}]
let _tableData = []
if(_.keys(result.data).length === 0){
this.tableData = []
chartsOptions.series[0].data = []
this.myChart.setOption(chartsOptions);
this.myChart.resize();
this.$message.warning('暂无数据')
return;
}
for(let i in result.data){
_tableData.push({
stake:i, num:result.data[i]
})
}
this.tableData = _tableData;
this.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = _tableData.map(x=>x.num)
chartsOptions.xAxis.data = _tableData.map(x=>x.stake);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
})
} else if(id==='2'){
request({
url: '/business/sdhsEvent/typeAnalysis',
method: 'post',
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){
chartsOptions.series[0].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.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = _tableData.map(x=>x.num)
chartsOptions.xAxis.data = _tableData.map(x=>x.name);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
})
} else if(id==='3'){
request({
url: '/business/sdhsEvent/accidentModelAnalysis',
method: 'post',
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:'客车'}]
if(_.keys(result.data).length === 0){
chartsOptions3.series[0].data = []
chartsOptions3.series[1].data = []
chartsOptions3.series[2].data = []
this.myChart.setOption(chartsOptions3);
this.myChart.resize();
this.tableData = []
this.$message.warning('暂无数据')
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,
})
}
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.客车)
this.myChart.setOption(chartsOptions3);
this.myChart.resize();
}, 200);
})
} else if(id==='4'){
let unit = '时';
if(query.type === '1'){unit='日'}
else if(query.type === '0'){unit='月'}
request({
url: '/business/sdhsEvent/accidentTimeAnalysis',
method: 'post',
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'}]
let _tableData = []
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){
chartsOptions4.series[0].data = []
chartsOptions4.series[1].data = []
chartsOptions4.xAxis.data = _tableData.map(x=>x.time);
this.myChart.setOption(chartsOptions4);
this.myChart.resize();
this.tableData = []
this.$message.warning('暂无数据')
return;
}
for(let i in result.data){
_tableData.push({
idx:parseInt(i),
time:i.toString()+ unit, num:result.data[i.toString()],numYes:resultYes.data[i.toString()]
})
}
_tableData.sort(function(a,b){return a.idx-b.idx})
this.tableData = _tableData;
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);
})
} else if(id==='5'){
request({
url: '/business/sdhsEvent/selectRegionAnalysis',
method: 'post',
data: query
}).then(result=>{
console.log(result)
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'发生地区',value:'regionName'},{label:'数量(起)',value:'num'}]
if(result.data.length===0){
chartsOptions.series[0].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.regionName);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
})
} else if(id==='6'){
request({
url: '/business/sdhsEvent/selectStationAnalysis',
method: 'post',
data: query
}).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'}]
if(result.data.length===0){
chartsOptions6.series[0].data = []
chartsOptions6.series[1].data = []
this.myChart.setOption(chartsOptions6);
this.myChart.resize();
this.tableData = []
this.$message.warning('暂无数据')
return;
}
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.xAxis.data = result.data.map(x=>x.stationName);
this.myChart.setOption(chartsOptions6);
this.myChart.resize();
}, 200);
})
} else if(id==='7'){
request({
url: '/business/sdhsEvent/selectWeather',
method: 'post'
}).then(result=>{
console.log(result)
if (result.code != 200) return this.$message.error(result?.msg);
if(result.data.dataList.length===0){
this.tableData = []
this.$message.warning('暂无数据')
return;
}
let col = [{label:'地区',value:'regionName'}]
for(let i in result.data.column){
col.push({label:result.data.column[i],value:i})
}
this.tableCols = col;
this.tableData = result.data.dataList;
})
} else if(id==='8'){
request({
url: '/business/sdhsEvent/gantryAnalysis',
method: 'post',
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'方向',value:'dir'},{label:'门架',value:'name'},{label:'车流量',value:'num'}]
let _tableData = []
for(let i of result.data.jinanDirection){
_tableData.push({
dir:'济南方向',name:i.intervalName, num:(i.trafficVolume||0)
})
} for(let i of result.data.hezeDirection){
_tableData.push({
dir:'菏泽方向',name:i.intervalName, num:(i.trafficVolume||0)
})
}
this.tableData = _tableData;
this.curid = id;
setTimeout(() => {
const xAxis = result.data.jinanDirection.map(x=>x.intervalName);
// 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)
this.myChart.setOption(chartsOptions8);
this.myChart.resize();
}, 200);
})
} else if(id==='9'){
request({
url: '/business/sdhsEvent/TollBoothStatisticsList',
method: 'post',
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'方向',value:'dir'},{label:'收费站',value:'name'},{label:'车流量',value:'num'}]
let _tableData = []
for(let i of result.data.exit){
_tableData.push({
dir:'出口',name:i.facilityName, num:(i.trafficVolume||0)
})
} for(let i of result.data.entrance){
_tableData.push({
dir:'入口',name:i.facilityName, num:(i.trafficVolume||0)
})
}
this.tableData = _tableData;
this.curid = id;
setTimeout(() => {
const xAxis = result.data.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)
this.myChart.setOption(chartsOptions8);
this.myChart.resize();
}, 200);
})
} else if(id==='10'){
request({
url: '/business/sdhsEvent/selectAccidentType',
method: 'post',
data: query
}).then(result=>{
if (result.code != 200) return this.$message.error(result?.msg);
this.tableCols = [{label:'事故类型',value:'subclassName'},{label:'数量(起)',value:'num'}]
if(result.data.length===0){
chartsOptions.series[0].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);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
})
} else if(id==='11'){
request({
url: '/business/sdhsEvent/congestedLocation',
method: 'post',
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){
chartsOptions.series[0].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.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = _tableData.map(x=>x.num)
chartsOptions.xAxis.data = _tableData.map(x=>x.name);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
})
} else if(id==='12'){
request({
url: '/business/sdhsEvent/congestedTime',
method: 'post',
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){
chartsOptions.series[0].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.curid = id;
setTimeout(() => {
chartsOptions.series[0].data = _tableData.map(x=>x.num)
chartsOptions.xAxis.data = _tableData.map(x=>x.name);
this.myChart.setOption(chartsOptions);
this.myChart.resize();
}, 200);
})
}else {
this.$message.warning('暂未配置')
}
},
onTreeClick(e){
this.curid = ''
this.myChart.dispose();
this.myChart = echarts.init(document.getElementById("charts"));
if(e.id === 'a'){
this.$refs.menu.setCurrentKey(1);
} else if(e.id === 'b'){
this.$refs.menu.setCurrentKey(7);
} else if(e.id === 'c'){
this.$refs.menu.setCurrentKey(8);
} else if(e.id === 'd'){
this.$refs.menu.setCurrentKey(10);
} else if(e.id === 'e'){
this.$refs.menu.setCurrentKey(11);
} else {
this.$refs.menu.setCurrentKey(e.id);
}
this.bind()
},
handleCheckedTreeNodeAll(value) {
this.$refs.menu.setCheckedNodes(value ? this.treeData : []);
},
},
};
</script>
<style >
.el-tree{
background-color: #ffffff00;
color: #fff;
}
.el-tree-node__content{
margin-bottom: 10px;
}
.el-tree-node__content:hover {
background: #1E374F;
}
.el-tree-node:focus>.el-tree-node__content {
background-color: #009bcc;
background: linear-gradient(to right, #009bcc 0%, #009bcc00 100%);
}
.el-tree-node.is-current > .el-tree-node__content {
background-color: #009bcc !important;
background: linear-gradient(to right, #009bcc 0%, #009bcc00 100%) !important;
}
.el-checkbox__input.is-checked .el-checkbox__inner {
background-color: #005c79;
border-color: #005c79;
}
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background-color: #005c79;
border-color: #005c79;
}
.el-checkbox__input.is-checked + .el-checkbox__label{
color: white !important;
}
</style>
<style lang="scss" scoped>
.charts {
height: 300px;
width: 100%;
}
.treeCheckbox{
color:white;
margin:10px 23px;
}
.serviceAnalysis {
width: 100%;
height: 100%;
display: flex;
flex-direction: row;
.cleft{
background-color: #101e25;
width: 300px;
height: 100%;
overflow-y: auto;
overflow-x: hidden;
padding:10px;
}
.cright{
flex: 1;
height: 100%;
margin-left: 15px;
display: flex;
flex-direction: column;
}
}
.tag1 {
position: absolute;
margin-top: 100px;
margin-left: 60px;
font-size: 12px;
span{
color: #8be8fe;
font-weight: bold;
margin-left: 10px;
}
}
.tag2 {
position: absolute;
font-size: 12px;
margin-top: 300px;
margin-left: 74vw;
span{
color: #8be8fe;
font-weight: bold;
margin-right: 10px;
}
}
</style>

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

@ -0,0 +1,257 @@
<template>
<div class="searchPanel">
<div style="margin-right: 30px;" v-if="fileInfo">上次上传<a style="text-decoration: underline;" :download="fileInfo.fileName" target="_blank" :href="urlRoot+fileInfo.fileUrl">{{ fileInfo.fileName }}</a> <span class="el-icon-time" style="margin:0px 5px;"></span>{{ fileInfo.uploadTime }}</div>
<!-- 路段选择 -->
<!-- <RadioGroup :options="[
{ key: '1', label: '菏泽' },
{ key: '3', label: '济南' },
]" v-model="direction" type="button" size="mini" /> -->
<el-select v-model="type" class="selectRoad" placeholder="请选择">
<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"
:picker-options="pickerOptions" :type="type == 2
? 'date'
: type == 1
? 'month'
: type == 0
? 'year'
: ''
" placeholder="请选择" />
<el-button type="primary" size="mini" class="btnSearch" @click="onQuery" icon="el-icon-search">查询</el-button>
<el-button class="btnReset" size="mini" icon="el-icon-refresh-left" @click="onReset">重置</el-button>
<el-upload
class="upload-file"
:file-list="fileList"
:show-file-list="false"
:before-upload="handleBeforeUpload"
:on-success="handleUploadSuccess"
:on-error="handleUploadError"
accept=".xls,.xlsx"
:headers="headers"
:action="uploadUrl"
>
<el-button class="btnReset" size="mini" >导入</el-button>
</el-upload>
<el-button class="btnReset" size="mini" @click="onExport">导出</el-button>
</div>
</template>
<script>
import RadioGroup from "@screen/components/FormConfig/components/RadioGroup/index.vue";
import { delay, exportFile2, confirm } from "@screen/utils/common";
import request from "@/utils/request";
import { getToken } from "@/utils/auth";
export default {
name: "EventQuery",
components: {
RadioGroup,
},
data() {
return {
fileInfo:null,
headers: {
Authorization: "Bearer " + getToken(),
},
urlRoot: process.env.VUE_APP_BASE_API, //
uploadUrl: process.env.VUE_APP_BASE_API + "/common/upload", //
fileList: [],
fileType: ["xls", "xlsx"],
fileName: '',
selectIndex: 1,
selectId: 1,
reset: false,
direction: "1",
type: "0",
typeOptions: [
{
label: "年",
value: "0",
},
{
label: "月",
value: "1",
},
{
label: "日",
value: "2",
}
],
quarter: "2",
dateTime: moment().format("YYYY-MM-DD HH:mm:ss"),
dataList: [],
year: "",
pickerOptions: {
disabledDate(time) {
return time.getTime() > Date.now();
},
},
};
},
created() { },
methods: {
//
handleBeforeUpload(file) {
this.fileName = file.name
},
handleUploadSuccess(res, file) {
if(res.code !== 200){this.$message.error(res.msg); return;}
request({
url: `/business/sdhsEvent/importData`,
method: "post",
params: {
fileName:this.fileName ,
fileUrl:res.fileName
},
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
this.$message.success("上传成功");
this.bindFiles();
});
},
//
handleUploadError() {
this.$message.error("上传失败");
},
searchQuery() {
const filter = this.getStartTime();
return filter;
},
getStartTime(){
let startTime = "";
let endTime = "";
if (this.type == 2) { //
startTime = moment(this.dateTime).format("YYYY-MM-DD 00:00:00");
endTime = moment(this.dateTime).format("YYYY-MM-DD 23:59:59");
} else if (this.type == 1) { //
startTime = moment(this.dateTime).format("YYYY-MM-01 00:00:00");
endTime = moment(this.dateTime).endOf('month').format("YYYY-MM-DD 23:59:59");
} else if (this.type == 0) { //
startTime = moment(this.dateTime).format("YYYY-01-01 00:00:00");
endTime = moment(this.dateTime).format("YYYY-12-31 23:59:59");
}
return {type: this.type, startTime,endTime}
},
onReset() {
this.selectId = 1;
this.selectIndex = 1;
this.reset = true;
this.direction = "1";
this.type = "1";
this.dateTime = moment().format("YYYY-MM-DD HH:mm:ss");
this.$parent.bind()
},
onQuery(){
this.$parent.bind()
},
onExport(){
const keys = this.$parent.getKeys();
if(keys.length === 0){
this.$message.warning('未选中导出事件类型')
}
const param = {
...this.getStartTime(),
exportKey:keys
}
console.log(param)
param.startTime = new Date(param.startTime)
param.endTime = new Date(param.endTime)
exportFile2({
url: "/business/sdhsEvent/export",
filename: "云事件导出",
data: param,
ext:'docx'
});
},
bindFiles(){
request({
url: `business/sdhsEvent/getFileInfo`,
method: "get"
}).then((result) => {
if (result.code != 200) return Message.error(result?.msg);
if(result.data.fileName){
this.fileInfo = result.data
}
});
}
},
mounted() {
this.$nextTick(()=>{
this.bindFiles();
// this.searchQuery()
})
},
};
</script>
<style lang="scss" scoped>
.searchPanel {
display: flex;
align-items: center;
height: 40px;
font-size: 14px;
margin-bottom: 10px;
z-index: 1;
div {
white-space: nowrap;
margin-right: 4px;
}
::v-deep {
.el-input__inner {
background-color: #064258 !important;
border-width: 0px !important;
}
.el-radio-button__inner{
margin-top: -1px;
height: 29px !important;
line-height: 29px !important;
}
}
.inputZh {
width: 47px;
}
.inputJl {
margin-left: 5px;
margin-right: 10px;
}
.selectRoad {
width: 89px;
border: 1px solid #00b3cc;
}
.btnSearch {
background: linear-gradient(180deg, #005c79 0%, #009bcc 100%);
margin-left: 10px;
border-color: transparent;
}
.btnReset {
background: linear-gradient(180deg, #005c79 0%, #009bcc 100%);
border-color: transparent;
color: white;
margin-left: 10px;
}
.keep-ratio {
height: 200px;
}
}
</style>

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/channelAnalytics/charts.js

@ -46,7 +46,7 @@ var options = {
left: "49%",
textStyle: {
color: "#ffffff",
fontSize: 30,
fontSize: 20,
fontFamily: "PangMenZhengDao",
},
},

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js

@ -91,7 +91,7 @@ var options = {
grid: {
top: "80px", //上边距
right: "0", //右边距
left: "3px", //左边距
left: "13px", //左边距
bottom: "20px", //下边距
containLabel: true,
},

5
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/record/index.vue

@ -141,7 +141,6 @@ export default {
method: "DELETE",
data: {},
}).then((result) => {
console.log(result)
if (result.code != 200) return self.$message.error(result?.msg);
self.$message.success('删除成功');
self.initData();
@ -226,7 +225,7 @@ export default {
if(e.publishChannels === 4 || e.publishChannels === 7){
const contentDetailsInfo = JSON.parse(e.contentDetails)
if(e.publishChannels === 4){ //
let msg = '情报板数据异常' + e.contentDetails
let msg = '情报板数据异常' // + e.contentDetails
//
if(contentDetailsInfo.length > 0){
if(contentDetailsInfo[0].functions.length > 1){
@ -244,7 +243,7 @@ export default {
}
e.contentDetails = msg
} else if(e.publishChannels === 7){
let msg = '语音广播数据异常'+e.contentDetails
let msg = '语音广播数据异常' //+e.contentDetails
console.log(contentDetailsInfo)
if(contentDetailsInfo.length > 0){
if(contentDetailsInfo[0].functions.length > 0){

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/eventTypeAnalysis/charts.js

@ -67,7 +67,7 @@ var options = {
left: "49%",
textStyle: {
color: "#ffffff",
fontSize: 30,
fontSize: 20,
fontFamily: "PangMenZhengDao",
},
},

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/postTrendsDay/charts.js

@ -92,7 +92,7 @@ var options = {
grid: {
top: "75px", //上边距
right: "0", //右边距
left: "3px", //左边距
left: "18px", //左边距
bottom: "20px", //下边距
containLabel: true,
},

2
ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/postTrendsMonth/charts.js

@ -91,7 +91,7 @@ var options = {
grid: {
top: "50px", //上边距
right: "0", //右边距
left: "3px", //左边距
left: "18px", //左边距
bottom: "20px", //下边距
containLabel: true,
},

2
ruoyi-ui/src/views/JiHeExpressway/utils/common.js

@ -229,7 +229,7 @@ export function uploadFile(
Message.success("上传成功");
resolve(res);
resolve(res,file);
})
.catch((err) => {
reject(err);

6
ruoyi-ui/src/views/JiHeExpressway/utils/enum_event/data.js

@ -1792,7 +1792,11 @@ export const configList = {
{
...PresetFormItems.station,
visible: (data) => {
if (
if(data.eventSubclass == "7-2" || data.eventSubclass == "7-3" || data.eventSubclass == "7-4" ||
data.eventSubclass == "7-7" || data.eventSubclass == "7-8" || data.eventSubclass == "7-9"
){
return false;
} else if (
(data.eventSubclass == "7-1" || data.eventSubclass == "7-6") &&
data?.dcEventConstruction.locationType == "2"
) {

1
ruoyi-ui/src/views/event/reservePlan/index.vue

@ -1632,7 +1632,6 @@
this.getAudioFileListData(brr.equipments, i, j);
}
this.getDicts("sd_device_retrieval_rule").then((response) => {
console.log(response.data);
var retrievalRuleList = response.data;
if (brr.eqTypeId == 30) {
console.log(retrievalRuleList);

1
ruoyi-ui/src/views/event/strategy/components/manualControl.vue

@ -666,7 +666,6 @@ export default {
item.disposalName != null && item.equipmentTypeId != null && item.state != null && item.value != null
);
});
console.log(result);
if (!result) {
return this.$modal.msgError("请填写完整策略信息!");
}

1
ruoyi-ui/src/views/event/strategy/components/timingControl.vue

@ -676,7 +676,6 @@
return item.equipmentTypeId != "" && item.state != "" && item.equipments != "" &&
item.equipmentTypeId != null && item.state != null && item.equipments != null
});
console.log(result);
if (!result) {
return this.$modal.msgError("请填写完整策略信息!");
}

1
ruoyi-ui/src/views/event/strategy/event/autoControl.vue

@ -934,7 +934,6 @@ export default {
let result = response.every(function (item) {
return item.equipmentTypeId && item.state && item.equipments;
});
// console.log(result);
if (!result) {
return this.$modal.msgError("请填写完整");
}

1
ruoyi-ui/src/views/event/strategy/event/manualControl.vue

@ -518,7 +518,6 @@ export default {
console.log(item.state,item.value);
return item.equipmentTypeId && item.state && item.value && item.disposalName
});
console.log(result);
if(!result){
return this.$modal.msgError("请填写完整");
}

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

@ -104,6 +104,7 @@ export default {
break;
case "0":
case "1":
case "2":
case "3":
case "trafficFlowDataEarlyWarning":
this.$emit("newEvent", params);
@ -116,6 +117,9 @@ export default {
case "eventCount":
this.$root.$emit('update-warning', content);
break;
case "eventProcess":
this.$root.$emit('update-eventProcess', content);
break;
//
default:
}
@ -128,49 +132,20 @@ export default {
let _this = this;
if (process.env.NODE_ENV == "development") {
//websocket
return
return;
let deviceState = "0";
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);
//
// _this.$root.$emit('update-warning', Math.floor(Math.random() * 20));
//
let params = {
"subEvent": "1",
"content": {
"event": {
"id": "8f92fe09450f4c58868821a8173b797c",
"deptId": 103,
"stakeMark": "K059+289",
"endStakeMark": "",
"direction": "1",
"userId": 1,
"estimatedEndTime": "2024-04-11 00:00:00",
"eventType": 3,
"eventSubclass": "3-2",
"eventState": 0,
"eventSource": 1,
"inTunnel": 0,
"roadId": 1,
"occurrenceTime": "2024-04-10 16:56:02",
"lang": "",
"dcEventTrafficControl": {
"controlType": 1,
"controlCause": 1,
"exitsInlets": 2,
"facilityId": 11,
"measure": 1,
"classify": 1,
"facilityIds": [
11
]
},
"createTime": "2024-05-08 18:02:40"
},
"content": "菏泽方向 K059+289 发生收费站封闭和限行事件"
}
};
// 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 = {
@ -190,7 +165,7 @@ 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);
// _this.$emit("newEvent", params);
//
// let params = {

9
ruoyi-ui/vue.config.js

@ -37,13 +37,8 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
// target: `http://127.0.0.1:8087`,
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://localhost:3001`,
// target:`http://10.0.111.11:8097`,
changeOrigin: true,
pathRewrite: {
["^" + process.env.VUE_APP_BASE_API]: "",

Loading…
Cancel
Save