Browse Source

Merge branch 'develop' of http://39.106.31.193:9211/mengff/jihe-hs into develop

wangqin
zhangzhang 7 months ago
parent
commit
e20e91e7d5
  1. 10
      ruoyi-ui/src/App.vue
  2. 328
      ruoyi-ui/src/assets/iconfont/demo_index.html
  3. 62
      ruoyi-ui/src/assets/iconfont/iconfont.css
  4. 2
      ruoyi-ui/src/assets/iconfont/iconfont.js
  5. 98
      ruoyi-ui/src/assets/iconfont/iconfont.json
  6. BIN
      ruoyi-ui/src/assets/iconfont/iconfont.ttf
  7. BIN
      ruoyi-ui/src/assets/iconfont/iconfont.woff
  8. BIN
      ruoyi-ui/src/assets/iconfont/iconfont.woff2
  9. 18
      ruoyi-ui/src/common/menuData.js
  10. 2
      ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/EarlyWarning.vue
  11. 308
      ruoyi-ui/src/views/JiHeExpressway/components/WarningNotify.vue
  12. 12
      ruoyi-ui/src/views/JiHeExpressway/images/shareWith/message-active.svg
  13. 9
      ruoyi-ui/src/views/JiHeExpressway/images/shareWith/message-active2.svg
  14. 212
      ruoyi-ui/src/views/JiHeExpressway/index.vue
  15. 3
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue
  16. 21
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue
  17. 7
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue
  18. 14
      ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/buttonEvent.js
  19. 33
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/manage/index.vue
  20. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/index.vue
  21. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/left-bg-action.png
  22. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/left-bg.png
  23. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/switch0.png
  24. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/switch1.png
  25. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t01-1.svg
  26. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t01-2.svg
  27. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t01-4.svg
  28. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t01-5.svg
  29. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t010.svg
  30. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t011.svg
  31. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t012.svg
  32. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t013.svg
  33. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t014.svg
  34. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t015.svg
  35. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t02-1.svg
  36. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t03.svg
  37. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t05.svg
  38. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t06.svg
  39. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t07.svg
  40. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t08.svg
  41. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t11-1.svg
  42. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t11-2.svg
  43. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t11-4.svg
  44. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t11-5.svg
  45. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t110.svg
  46. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t111.svg
  47. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t112.svg
  48. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t113.svg
  49. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t114.svg
  50. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t115.svg
  51. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t12-1.svg
  52. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t13.svg
  53. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t15.svg
  54. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t16.svg
  55. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t17.svg
  56. 0
      ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t18.svg
  57. 185
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/_index.vue
  58. 208
      ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/index.vue
  59. 27
      ruoyi-ui/src/views/JiHeExpressway/pages/service/boardRecord/index.vue
  60. 470
      ruoyi-ui/src/views/JiHeExpressway/utils/enum.js
  61. 68
      ruoyi-ui/src/views/websocket.vue

10
ruoyi-ui/src/App.vue

@ -9,13 +9,15 @@
<template>
<div id="app">
<router-view />
<websocket />
<websocket @newEvent="onNewEvent"/>
<WarningNotify ref="notifyShow" />
<!-- <websocket_phone /> -->
</div>
</template>
<script>
import websocket from "@/views/websocket";
import WarningNotify from "@screen/components/WarningNotify.vue";
// import websocket_phone from "@/views/websocket_phone";
export default {
name: "App",
@ -29,6 +31,7 @@ export default {
},
components: {
websocket,
WarningNotify
// websocket_phone
},
watch: {
@ -49,6 +52,11 @@ export default {
},
};
},
methods:{
onNewEvent(para){
this.$refs["notifyShow"].showNotify(para);
}
}
};
</script>

328
ruoyi-ui/src/assets/iconfont/demo_index.html

@ -54,6 +54,90 @@
<div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xe833;</span>
<div class="name">感应</div>
<div class="code-name">&amp;#xe833;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe603;</span>
<div class="name">异常天气</div>
<div class="code-name">&amp;#xe603;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe604;</span>
<div class="name">施工建设</div>
<div class="code-name">&amp;#xe604;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe605;</span>
<div class="name">路障清除</div>
<div class="code-name">&amp;#xe605;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe607;</span>
<div class="name">车辆故障</div>
<div class="code-name">&amp;#xe607;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe608;</span>
<div class="name">服务区异常</div>
<div class="code-name">&amp;#xe608;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe609;</span>
<div class="name">设施设备隐患</div>
<div class="code-name">&amp;#xe609;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60a;</span>
<div class="name">交通管制</div>
<div class="code-name">&amp;#xe60a;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60b;</span>
<div class="name">交通事故</div>
<div class="code-name">&amp;#xe60b;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60c;</span>
<div class="name">交通拥堵</div>
<div class="code-name">&amp;#xe60c;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60e;</span>
<div class="name">非法上路</div>
<div class="code-name">&amp;#xe60e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe60f;</span>
<div class="name">非机动车</div>
<div class="code-name">&amp;#xe60f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe610;</span>
<div class="name">其他事件</div>
<div class="code-name">&amp;#xe610;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe7ef;</span>
<div class="name">汽车</div>
<div class="code-name">&amp;#xe7ef;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe602;</span>
<div class="name">行人</div>
@ -114,9 +198,9 @@
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1715061600935') format('woff2'),
url('iconfont.woff?t=1715061600935') format('woff'),
url('iconfont.ttf?t=1715061600935') format('truetype');
src: url('iconfont.woff2?t=1715240266347') format('woff2'),
url('iconfont.woff?t=1715240266347') format('woff'),
url('iconfont.ttf?t=1715240266347') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
@ -142,6 +226,132 @@
<div class="content font-class">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-signal"></span>
<div class="name">
感应
</div>
<div class="code-name">.icon-signal
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-abnormalWeather"></span>
<div class="name">
异常天气
</div>
<div class="code-name">.icon-abnormalWeather
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-construction"></span>
<div class="name">
施工建设
</div>
<div class="code-name">.icon-construction
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-barrierClear"></span>
<div class="name">
路障清除
</div>
<div class="code-name">.icon-barrierClear
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-vehicleBroken"></span>
<div class="name">
车辆故障
</div>
<div class="code-name">.icon-vehicleBroken
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-serviceAreaAbnormal"></span>
<div class="name">
服务区异常
</div>
<div class="code-name">.icon-serviceAreaAbnormal
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-equipmentTrouble"></span>
<div class="name">
设施设备隐患
</div>
<div class="code-name">.icon-equipmentTrouble
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-trafficControl"></span>
<div class="name">
交通管制
</div>
<div class="code-name">.icon-trafficControl
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-trafficAccident"></span>
<div class="name">
交通事故
</div>
<div class="code-name">.icon-trafficAccident
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-trafficJam"></span>
<div class="name">
交通拥堵
</div>
<div class="code-name">.icon-trafficJam
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-illegalVehicle"></span>
<div class="name">
非法上路
</div>
<div class="code-name">.icon-illegalVehicle
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-nonMotor"></span>
<div class="name">
非机动车
</div>
<div class="code-name">.icon-nonMotor
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-otherEvent"></span>
<div class="name">
其他事件
</div>
<div class="code-name">.icon-otherEvent
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-car"></span>
<div class="name">
汽车
</div>
<div class="code-name">.icon-car
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-pedestrian"></span>
<div class="name">
@ -232,6 +442,118 @@
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-signal"></use>
</svg>
<div class="name">感应</div>
<div class="code-name">#icon-signal</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-abnormalWeather"></use>
</svg>
<div class="name">异常天气</div>
<div class="code-name">#icon-abnormalWeather</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-construction"></use>
</svg>
<div class="name">施工建设</div>
<div class="code-name">#icon-construction</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-barrierClear"></use>
</svg>
<div class="name">路障清除</div>
<div class="code-name">#icon-barrierClear</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-vehicleBroken"></use>
</svg>
<div class="name">车辆故障</div>
<div class="code-name">#icon-vehicleBroken</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-serviceAreaAbnormal"></use>
</svg>
<div class="name">服务区异常</div>
<div class="code-name">#icon-serviceAreaAbnormal</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-equipmentTrouble"></use>
</svg>
<div class="name">设施设备隐患</div>
<div class="code-name">#icon-equipmentTrouble</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-trafficControl"></use>
</svg>
<div class="name">交通管制</div>
<div class="code-name">#icon-trafficControl</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-trafficAccident"></use>
</svg>
<div class="name">交通事故</div>
<div class="code-name">#icon-trafficAccident</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-trafficJam"></use>
</svg>
<div class="name">交通拥堵</div>
<div class="code-name">#icon-trafficJam</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-illegalVehicle"></use>
</svg>
<div class="name">非法上路</div>
<div class="code-name">#icon-illegalVehicle</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-nonMotor"></use>
</svg>
<div class="name">非机动车</div>
<div class="code-name">#icon-nonMotor</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-otherEvent"></use>
</svg>
<div class="name">其他事件</div>
<div class="code-name">#icon-otherEvent</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-car"></use>
</svg>
<div class="name">汽车</div>
<div class="code-name">#icon-car</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-pedestrian"></use>

62
ruoyi-ui/src/assets/iconfont/iconfont.css

@ -1,8 +1,8 @@
@font-face {
font-family: "iconfont"; /* Project id 4466169 */
src: url('iconfont.woff2?t=1715061600935') format('woff2'),
url('iconfont.woff?t=1715061600935') format('woff'),
url('iconfont.ttf?t=1715061600935') format('truetype');
src: url('iconfont.woff2?t=1715240266347') format('woff2'),
url('iconfont.woff?t=1715240266347') format('woff'),
url('iconfont.ttf?t=1715240266347') format('truetype');
}
.iconfont {
@ -13,6 +13,62 @@
-moz-osx-font-smoothing: grayscale;
}
.icon-signal:before {
content: "\e833";
}
.icon-abnormalWeather:before {
content: "\e603";
}
.icon-construction:before {
content: "\e604";
}
.icon-barrierClear:before {
content: "\e605";
}
.icon-vehicleBroken:before {
content: "\e607";
}
.icon-serviceAreaAbnormal:before {
content: "\e608";
}
.icon-equipmentTrouble:before {
content: "\e609";
}
.icon-trafficControl:before {
content: "\e60a";
}
.icon-trafficAccident:before {
content: "\e60b";
}
.icon-trafficJam:before {
content: "\e60c";
}
.icon-illegalVehicle:before {
content: "\e60e";
}
.icon-nonMotor:before {
content: "\e60f";
}
.icon-otherEvent:before {
content: "\e610";
}
.icon-car:before {
content: "\e7ef";
}
.icon-pedestrian:before {
content: "\e602";
}

2
ruoyi-ui/src/assets/iconfont/iconfont.js

File diff suppressed because one or more lines are too long

98
ruoyi-ui/src/assets/iconfont/iconfont.json

@ -5,6 +5,104 @@
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "30712929",
"name": "感应",
"font_class": "signal",
"unicode": "e833",
"unicode_decimal": 59443
},
{
"icon_id": "40248866",
"name": "异常天气",
"font_class": "abnormalWeather",
"unicode": "e603",
"unicode_decimal": 58883
},
{
"icon_id": "40248865",
"name": "施工建设",
"font_class": "construction",
"unicode": "e604",
"unicode_decimal": 58884
},
{
"icon_id": "40248864",
"name": "路障清除",
"font_class": "barrierClear",
"unicode": "e605",
"unicode_decimal": 58885
},
{
"icon_id": "40248855",
"name": "车辆故障",
"font_class": "vehicleBroken",
"unicode": "e607",
"unicode_decimal": 58887
},
{
"icon_id": "40248862",
"name": "服务区异常",
"font_class": "serviceAreaAbnormal",
"unicode": "e608",
"unicode_decimal": 58888
},
{
"icon_id": "40248861",
"name": "设施设备隐患",
"font_class": "equipmentTrouble",
"unicode": "e609",
"unicode_decimal": 58889
},
{
"icon_id": "40248854",
"name": "交通管制",
"font_class": "trafficControl",
"unicode": "e60a",
"unicode_decimal": 58890
},
{
"icon_id": "40248860",
"name": "交通事故",
"font_class": "trafficAccident",
"unicode": "e60b",
"unicode_decimal": 58891
},
{
"icon_id": "40248857",
"name": "交通拥堵",
"font_class": "trafficJam",
"unicode": "e60c",
"unicode_decimal": 58892
},
{
"icon_id": "40248859",
"name": "非法上路",
"font_class": "illegalVehicle",
"unicode": "e60e",
"unicode_decimal": 58894
},
{
"icon_id": "40248858",
"name": "非机动车",
"font_class": "nonMotor",
"unicode": "e60f",
"unicode_decimal": 58895
},
{
"icon_id": "40248856",
"name": "其他事件",
"font_class": "otherEvent",
"unicode": "e610",
"unicode_decimal": 58896
},
{
"icon_id": "7791021",
"name": "汽车",
"font_class": "car",
"unicode": "e7ef",
"unicode_decimal": 59375
},
{
"icon_id": "28559895",
"name": "行人",

BIN
ruoyi-ui/src/assets/iconfont/iconfont.ttf

Binary file not shown.

BIN
ruoyi-ui/src/assets/iconfont/iconfont.woff

Binary file not shown.

BIN
ruoyi-ui/src/assets/iconfont/iconfont.woff2

Binary file not shown.

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

@ -36,12 +36,6 @@ export default [
path: "/perception/trafficSituation",
name: "perceptionTrafficSituation",
component: "perception/trafficSituation/index.vue",
},
{
title: "网络拓扑",
name: "perceptionTopology",
path: "/perception/topology",
component: "perception/topology/index.vue"
}
],
},
@ -119,6 +113,18 @@ export default [
path: "/control/device/strategy",
name: "controlDeviceStrategy",
component: "control/device/strategy/index.vue",
},
{
title: "网络拓扑",
name: "controlDeviceTopology",
path: "/control/device/topology",
component: "control/device/topology/index.vue"
},
{
title: "设备管理",
name: "controlDeviceMange",
path: "/control/device/manage",
component: "control/device/manage/index.vue"
}
],
},

2
ruoyi-ui/src/views/JiHeExpressway/components/HeaderMenu/EarlyWarning.vue

@ -34,6 +34,6 @@ export default {
<style lang="scss" scoped>
.early_warning{
&:hover{ cursor: pointer;}
}
</style>

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

@ -0,0 +1,308 @@
<template>
<div>
</div>
</template>
<script>
import moment from "moment";
export default {
name: "WarningNotify",
props: {
},
provide() {
return {
}
},
data() {
return {
notifications: [],
notifyIndex: 0,
}
},
computed: {
},
watch: {
},
methods: {
//
closeNotify(para) {
// let type = para.type;
this.notifications[para.index].close();
},
showNotify(para){
let _this = this;
let eventType = ["trafficAccident", "vehicleBroken", "trafficControl", "trafficJam", "illegalVehicle", "barrierClear", "construction", "serviceAreaAbnormal", "equipmentTrouble", "abnormalWeather", "otherEvent"];
let obj = {
content: para.content.content,
time: para.subEvent == "0" ? para.content.event.occurrenceTime : para.content.event.warning_time,
// moment().format("yyyy-MM-DD hh:mm"),
type: para.subEvent == '1' ? "signal" : eventType[para.content.event.eventType*1-1],
level: ["danger", "info"][para.subEvent*1],
duration: para.subEvent == "0" ? 0 : 4000
}
_this.notifications[_this.notifyIndex] = _this.$notify({
title: '',
dangerouslyUseHTMLString: true,
duration: obj.duration,
customClass: 'notify_whole',
offset: 50,
showClose: false,
message: _this.$createElement(
"div",
{ class: "notify_box " + obj.level },
[
_this.$createElement(
"div",
{ class: 'nofify_head' },
[
_this.$createElement(
"p",
{ class: "title" },
[
_this.$createElement(
"i",
{ class: 'icon el-icon-warning' }
), _this.$createElement(
"span",
{ class: 'text' },
"告警"
)
]
)
, _this.$createElement(
"button",
{
class: 'btn_close el-icon-close',
on: {
click: _this.closeNotify.bind(_this, { type: obj.type, index: _this.notifyIndex }),
},
}
)
]
),
_this.$createElement(
"div",
{ class: 'nofify_content' },
[
_this.$createElement(
"span",
{ class: 'type_icon' },
[
_this.$createElement(
"i",
{ class: 'iconfont icon-' + obj.type }
)
]
),
_this.$createElement(
"div",
{ class: 'info' },
[
_this.$createElement(
"p",
{ class: 'content' },
obj.content
)
,
_this.$createElement(
"p",
{ class: 'time' },
obj.time
)
]
),
]
),
]
),
});
_this.notifyIndex++;
}
},
mounted() {
},
};
</script>
<style lang="scss">
.notify_whole {
padding: 0;
width: 420px !important;
// height: 120px !important;
margin-top: 40px !important;
background: none;
border: none;
border-radius: 0;
}
.el-notification__group {
width: 100%;
height: 100%;
margin: 0;
}
.el-notification__content {
width: 100%;
height: 100%;
margin: 0;
}
.notify_box {
width: 100%;
height: 100%;
border: 1px solid;
.nofify_head {
display: flex;
justify-content: space-between;
height: 44px;
align-items: center;
margin: 0 12px;
.title {
display: flex;
justify-content: flex-start;
align-items: center;
.icon {
font-size: 24px;
}
.text {
font-size: 17px;
margin-left: 4px;
font-weight: bold;
}
}
.btn_close {
background: none;
border: none;
cursor: pointer;
font-size: 20px;
text-align: center;
}
}
.nofify_content {
display: flex;
align-items: center;
padding: 20px 20px 16px 0;
.type_icon {
width: 80px;
display: flex;
align-items: center;
justify-content: center;
.iconfont {
font-size: 48px;
&.icon-illegalVehicle{ font-size: 30px;}
}
}
.info {
flex: 1;
.content {
color: #FFF;
font-size: 16px;
word-wrap: break-word;
white-space: wrap;
}
.time {
color: #FFF;
font-size: 14px;
opacity: 0.5;
text-align: right;
margin-top: 8px;
}
}
}
}
$infoColor: #3DE8FF;
$dangerColor: #FF5F5F;
.notify_box.info {
background-image: linear-gradient(180deg, rgba(14, 69, 92, 0.9) 0%, rgba(20, 89, 119, 0.9) 100%);
border-image: linear-gradient(180deg, rgba(78, 174, 204, 1), rgba(78, 174, 204, 0)) 2 2;
.nofify_head {
border-bottom: 1px solid #FFFFFF33;
.title {
.icon {
color: $infoColor;
}
.text {
color: $infoColor;
}
}
.btn_close {
color: $infoColor;
}
}
.nofify_content {
.type_icon {
.iconfont {
color: $infoColor;
}
}
.info {
.content {}
.time {}
}
}
}
.notify_box.danger {
background-image: linear-gradient(180deg, rgba(30, 0, 0, 0.9) 0%, rgba(111, 0, 0, 0.9) 100%);
border-image: linear-gradient(180deg, rgba(237, 147, 128, 1), rgba(239, 146, 157, 0)) 2 2;
.nofify_head {
border-bottom: 1px solid #FFFFFF33;
.title {
.icon {
color: $dangerColor;
}
.text {
color: $dangerColor;
}
}
.btn_close {
color: $dangerColor;
}
}
.nofify_content {
.type_icon {
.iconfont {
color: $dangerColor;
}
}
.info {
.content {}
.time {}
}
}
}
</style>

12
ruoyi-ui/src/views/JiHeExpressway/images/shareWith/message-active.svg

@ -1,9 +1,11 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#231;&#159;&#173;&#228;&#191;&#161;">
<rect id="Rectangle 3688" width="22" height="22" rx="6" fill="#A2C847"/>
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="Group 1142814973">
<g id="&#195;&#167;&#194;&#159;&#194;&#173;&#195;&#164;&#194;&#191;&#194;&#161;-&#195;&#167;&#194;&#129;&#194;&#176;">
<path id="Rectangle 3688" d="M11.6364 0H4.36364C1.95367 0 0 1.95367 0 4.36364V11.6364C0 14.0463 1.95367 16 4.36364 16H11.6364C14.0463 16 16 14.0463 16 11.6364V4.36364C16 1.95367 14.0463 0 11.6364 0Z" fill="#03C3FF"/>
<g id="Group 1142814681">
<path id="Vector 553" d="M6.5 16.5325V13.5H12.1408L7.28922 16.9404C6.95812 17.1751 6.5 16.9384 6.5 16.5325Z" fill="white"/>
<path id="Subtract" fill-rule="evenodd" clip-rule="evenodd" d="M5.5 5C4.67157 5 4 5.67157 4 6.5V13.5C4 14.3284 4.67157 15 5.5 15H16.5C17.3284 15 18 14.3284 18 13.5V6.5C18 5.67157 17.3284 5 16.5 5H5.5ZM7.5 11C8.05228 11 8.5 10.5523 8.5 10C8.5 9.44772 8.05228 9 7.5 9C6.94772 9 6.5 9.44772 6.5 10C6.5 10.5523 6.94772 11 7.5 11ZM12 10C12 10.5523 11.5523 11 11 11C10.4477 11 10 10.5523 10 10C10 9.44772 10.4477 9 11 9C11.5523 9 12 9.44772 12 10ZM14.5 11C15.0523 11 15.5 10.5523 15.5 10C15.5 9.44772 15.0523 9 14.5 9C13.9477 9 13.5 9.44772 13.5 10C13.5 10.5523 13.9477 11 14.5 11Z" fill="white"/>
<path id="Vector 553" d="M4.72705 12.0228V9.81738H8.82945L5.30103 12.3195C5.06023 12.4902 4.72705 12.318 4.72705 12.0228Z" fill="white"/>
<path id="Subtract" fill-rule="evenodd" clip-rule="evenodd" d="M4.00009 3.63574C3.39759 3.63574 2.90918 4.12416 2.90918 4.72665V9.81756C2.90918 10.42 3.39759 10.9085 4.00009 10.9085H12.0001C12.6026 10.9085 13.091 10.42 13.091 9.81756V4.72665C13.091 4.12416 12.6026 3.63574 12.0001 3.63574H4.00009ZM5.45463 7.99938C5.85629 7.99938 6.18191 7.67378 6.18191 7.27211C6.18191 6.87045 5.85629 6.54483 5.45463 6.54483C5.05298 6.54483 4.72736 6.87045 4.72736 7.27211C4.72736 7.67378 5.05298 7.99938 5.45463 7.99938ZM8.72736 7.27211C8.72736 7.67378 8.40176 7.99938 8.00009 7.99938C7.59842 7.99938 7.27282 7.67378 7.27282 7.27211C7.27282 6.87045 7.59842 6.54483 8.00009 6.54483C8.40176 6.54483 8.72736 6.87045 8.72736 7.27211ZM10.5455 7.99938C10.9472 7.99938 11.2728 7.67378 11.2728 7.27211C11.2728 6.87045 10.9472 6.54483 10.5455 6.54483C10.1439 6.54483 9.81827 6.87045 9.81827 7.27211C9.81827 7.67378 10.1439 7.99938 10.5455 7.99938Z" fill="white"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 974 B

After

Width:  |  Height:  |  Size: 1.5 KiB

9
ruoyi-ui/src/views/JiHeExpressway/images/shareWith/message-active2.svg

@ -0,0 +1,9 @@
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
<g id="&#231;&#159;&#173;&#228;&#191;&#161;">
<rect id="Rectangle 3688" width="22" height="22" rx="6" fill="#A2C847"/>
<g id="Group 1142814681">
<path id="Vector 553" d="M6.5 16.5325V13.5H12.1408L7.28922 16.9404C6.95812 17.1751 6.5 16.9384 6.5 16.5325Z" fill="white"/>
<path id="Subtract" fill-rule="evenodd" clip-rule="evenodd" d="M5.5 5C4.67157 5 4 5.67157 4 6.5V13.5C4 14.3284 4.67157 15 5.5 15H16.5C17.3284 15 18 14.3284 18 13.5V6.5C18 5.67157 17.3284 5 16.5 5H5.5ZM7.5 11C8.05228 11 8.5 10.5523 8.5 10C8.5 9.44772 8.05228 9 7.5 9C6.94772 9 6.5 9.44772 6.5 10C6.5 10.5523 6.94772 11 7.5 11ZM12 10C12 10.5523 11.5523 11 11 11C10.4477 11 10 10.5523 10 10C10 9.44772 10.4477 9 11 9C11.5523 9 12 9.44772 12 10ZM14.5 11C15.0523 11 15.5 10.5523 15.5 10C15.5 9.44772 15.0523 9 14.5 9C13.9477 9 13.5 9.44772 13.5 10C13.5 10.5523 13.9477 11 14.5 11Z" fill="white"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 974 B

212
ruoyi-ui/src/views/JiHeExpressway/index.vue

@ -15,7 +15,7 @@ import HeaderMenu from "./components/HeaderMenu/index.vue";
import Adaptation from "./components/Adaptation.vue";
import getBoardBaseData from '@/common/getBoardBaseData'
import { mapGetters } from "vuex";
import moment from "moment";
export default {
name: "ji_ze_gao_su",
components: {
@ -25,8 +25,7 @@ export default {
},
data() {
return {
notifications: [],
notifyIndex:0,
isShowContent:false,
headerHeight:100,
header: {
@ -61,101 +60,6 @@ export default {
},
mounted(){
let _this = this;
document.onkeydown = function(e){
if(e.code == 'Space'){
let obj = {
content: "一个沙雕横穿马路导致堵车,他还不承认,不知道怎么办,请求指导,在线等。",
time:moment().format("yyyy-MM-DD hh:mm"),
type : "3",
level: ["info", "danger"][_this.notifyIndex%2]
}
_this.notifications[_this.notifyIndex] = _this.$notify({
title: '',
dangerouslyUseHTMLString: true,
duration: 0,
customClass: 'notify_whole',
offset: 50,
showClose: false,
message: _this.$createElement(
"div",
{class : "notify_box " + obj.level},
[
_this.$createElement(
"div",
{ class: 'nofify_head' },
[
_this.$createElement(
"p",
{ class:"title"},
[
_this.$createElement(
"i",
{ class: 'icon el-icon-warning' }
), _this.$createElement(
"span",
{ class: 'text' },
"告警"
)
]
)
, _this.$createElement(
"button",
{
class: 'btn_close el-icon-close',
on: {
click: _this.closeNotify.bind(_this, { type: obj.type, index: _this.notifyIndex }),
},
}
)
]
),
_this.$createElement(
"div",
{ class:'nofify_content'},
[
_this.$createElement(
"span",
{ class: 'type_icon' },
[
_this.$createElement(
"i",
{ class: 'iconfont icon-pedestrian' }
)
]
),
_this.$createElement(
"span",
{ class: 'info' },
[
_this.$createElement(
"span",
{ class: 'content' },
obj.content
)
,
_this.$createElement(
"div",
{class: 'time'},
obj.time
)
]
),
]
),
]
),
});
_this.notifyIndex ++;
}
}
// this.$store.commit("menu/resetRecent");
getBoardBaseData().then(res => {
this.isShowContent = true;
@ -170,19 +74,7 @@ export default {
this.calcHeaderScale();
},
methods: {
//
closeNotify(para) {
let type = para.type;
console.log("hahah");
console.log(type);
if (type === '2') {
console.log("自动关闭,流程。。");
}
if (type === '3') {
console.log("手动确认,流程。。");
}
this.notifications[para.index].close();
},
calcHeaderScale(){
let winW = window.innerWidth;
this.header.scale = winW / this.header.originW;
@ -247,101 +139,3 @@ export default {
}
}
</style>
<style lang="scss">
.notify_whole {
padding: 0;
width: 420px !important;
// height: 120px !important;
margin-top: 50px !important;
background: none;
border: none; border-radius: 0;
}
.el-notification__group {
width: 100%; height: 100%; margin: 0;
}
.el-notification__content {
width: 100%;
height: 100%;
margin: 0;
}
.notify_box{ width: 100%; height: 100%; background-image: linear-gradient(180deg, rgba(14, 69, 92, 0.9) 0%, rgba(20, 89, 119, 0.9) 100%);
border: 1px solid; border-image: linear-gradient(180deg, rgba(78, 174, 204, 1), rgba(78, 174, 204, 0)) 2 2;
.nofify_head{ display: flex; justify-content: space-between; height: 44px; align-items: center; margin: 0 12px;
.title{ display: flex; justify-content: flex-start; align-items: center;
.icon { font-size: 24px;}
.text{ font-size: 17px; margin-left: 4px; font-weight: bold;}
}
.btn_close{ background: none; border: none;
cursor: pointer;
font-size: 20px;
text-align: center;
}
}
.nofify_content{
display: flex; align-items: center; padding: 20px 20px 16px 0;
.type_icon{ width: 80px; display: flex; align-items: center; justify-content: center;
.iconfont{ font-size: 48px;}
}
.info{ flex: 1;
.content{ color:#FFF; font-size: 16px; word-wrap: break-word; white-space: wrap;}
.time{ color: #FFF; font-size: 14px; opacity: 0.5; text-align: right; margin-top: 8px;}
}
}
}
$infoColor: #3DE8FF;
$dangerColor: #FF5F5F;
.notify_box.info {
background-image: linear-gradient(180deg, rgba(14, 69, 92, 0.9) 0%, rgba(20, 89, 119, 0.9) 100%);
border-image: linear-gradient(180deg, rgba(78, 174, 204, 1), rgba(78, 174, 204, 0)) 2 2;
.nofify_head { border-bottom: 1px solid #FFFFFF33;
.title {
.icon { color: $infoColor;}
.text {color: $infoColor; }
}
.btn_close {color: $infoColor;}
}
.nofify_content {
.type_icon {
.iconfont{color: $infoColor;}
}
.info {
.content {}
.time {}
}
}
}
.notify_box.danger {
background-image: linear-gradient(180deg, rgba(30, 0, 0, 0.9) 0%, rgba(111, 0, 0, 0.9) 100%);
border-image: linear-gradient(180deg, rgba(237, 147, 128, 1), rgba(239, 146, 157, 0)) 2 2;
.nofify_head { border-bottom: 1px solid #FFFFFF33;
.title {
.icon { color: $dangerColor;}
.text {color: $dangerColor; }
}
.btn_close {color: $dangerColor;}
}
.nofify_content {
.type_icon {
.iconfont{color: $dangerColor;}
}
.info {
.content {}
.time {}
}
}
}
</style>

3
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue

@ -49,9 +49,6 @@ export default {
computed: {
modelVisible: {
get() {
if(this.visible){
console.log('id',id)
}
return this.visible;
},
set(val) {

21
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/PerceiveEvent/index.vue

@ -5,8 +5,8 @@
<div class="video-pic">
<!-- <Video style="height: 100%; flex: 1" :showHeader="false" :url="dialogData.formData.videoList[0]"
videoType="mp4" /> -->
<Carousel style="flex: 1; height: 100%;max-width: 350px;" :videos="dialogData.formData.videoList" />
<Carousel style="flex: 1; height: 100%;max-width: 300px;" :pictures="dialogData.formData.pictures" />
<Carousel style="flex: 1; height: 100%;max-width: 350px;" :videos="dialogData.videoList || []" />
<Carousel style="flex: 1; height: 100%;max-width: 300px;" :pictures="dialogData.pictures || []" />
</div>
<LineChart class="chart" />
<Form class="form" v-loading="loading" v-model="data" ref="FormConfigRef" :formList="formList" column="1" />
@ -188,7 +188,16 @@ export default {
self.getDetails();
});
},
async mounted() { },
async mounted() {
if (this.dialogData.otherConfig) {
const otherConfig = JSON.parse(this.dialogData.otherConfig);
this.dialogData.videoList = otherConfig.videoList
this.dialogData.pictures = otherConfig.pictures
}
console.log(1122, this.dialogData, 3344);
},
beforeDestroy() {
clearInterval(this.interval);
},
@ -300,8 +309,10 @@ export default {
lane: data.lane?.split(",") || [],
};
this.formList[5].options = { options:
WarningSubclassList[data.warningType] || []};
this.formList[5].options = {
options:
WarningSubclassList[data.warningType] || []
};
setTimeout(() => {
this.$refs.FormConfigRef.reset(true);

7
ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/HomeFrameControl/index.vue

@ -408,8 +408,7 @@ export default {
},
methods: {
onHide(){
this.data['deviceType']=deviceTypeDefault;
changeHandle(this.data, this.formList);
// TODO
},
submitClick() {
this.$refs.ControlComponent?.handleSubmit();
@ -430,6 +429,10 @@ export default {
},
handleClick(type) {
this.activeIcon = this.activeIcon === type ? null : type;
if(this.activeIcon){
this.data['deviceType']=deviceTypeDefault;
changeHandle(this.data, this.formList);
}
},
filterEnd(data) {
this.activeIcon = null;

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

@ -112,17 +112,21 @@ function resolveDataOptions(data, config, component, isDefault) {
name: "",
config: {
markerClick: (extData, item) => {
const formData = (extData?.otherConfig && typeof extData?.otherConfig !== 'string')
? JSON.parse(extData.otherConfig)
: null;
// 兼容不同的返回类型
let formData = extData.otherConfig;
try{
formData = JSON.parse(otherConfig)
}catch(e){
formData = null;
}
// formData.pictures = ["https://pic1.zhimg.com/80/v2-c00beaae1f6e3c09a6d77c16c70002fe_1440w.webp?source=1def8aca","https://pic1.zhimg.com/80/v2-c56626621906417a453d262ac11f3385_1440w.webp?source=1def8aca"]
console.log(component, "DialogComponent");
// console.log(component, "DialogComponent",extData);
this.dialogConfig = {
component,
data: {
...extData,
formData,
parseOtherConfig: JSON.parse((extData.otherConfig && typeof extData.otherConfig !== 'string')|| "{}"),
parseOtherConfig: formData,
_itemData: item,
},
};

33
ruoyi-ui/src/views/JiHeExpressway/pages/control/device/manage/index.vue

@ -0,0 +1,33 @@
<template>
<div class='developing'>
<p>功能开发中...</p>
</div>
</template>
<script>
export default {
name: 'InDevelopment',
components: {
},
mounted() {
}
}
</script>
<style lang='scss' scoped>
.developing {
width: 100%;
height: 100%;
position: relative;
z-index: 6;
color: white;
display: flex;
justify-content: center;
align-items: center;
p {
font-size: 24px;
}
}
</style>

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/index.vue → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/index.vue

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/left-bg-action.png → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/left-bg-action.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/left-bg.png → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/left-bg.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/switch0.png → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/switch0.png

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/switch1.png → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/switch1.png

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 10 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t01-1.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t01-1.svg

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 574 B

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t01-2.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t01-2.svg

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t01-4.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t01-4.svg

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t01-5.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t01-5.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t010.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t010.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t011.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t011.svg

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t012.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t012.svg

Before

Width:  |  Height:  |  Size: 855 B

After

Width:  |  Height:  |  Size: 855 B

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t013.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t013.svg

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t014.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t014.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t015.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t015.svg

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t02-1.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t02-1.svg

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t03.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t03.svg

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t05.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t05.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t06.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t06.svg

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t07.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t07.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t08.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t08.svg

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t11-1.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t11-1.svg

Before

Width:  |  Height:  |  Size: 574 B

After

Width:  |  Height:  |  Size: 574 B

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t11-2.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t11-2.svg

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t11-4.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t11-4.svg

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t11-5.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t11-5.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t110.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t110.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t111.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t111.svg

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t112.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t112.svg

Before

Width:  |  Height:  |  Size: 855 B

After

Width:  |  Height:  |  Size: 855 B

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t113.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t113.svg

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t114.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t114.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t115.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t115.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t12-1.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t12-1.svg

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t13.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t13.svg

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t15.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t15.svg

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t16.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t16.svg

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t17.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t17.svg

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

0
ruoyi-ui/src/views/JiHeExpressway/pages/perception/topology/t18.svg → ruoyi-ui/src/views/JiHeExpressway/pages/control/device/topology/t18.svg

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

185
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/_index.vue

@ -0,0 +1,185 @@
<template>
<div class="TrafficFlow">
<section class="foot">
<div class="content">
<div class="content-l">
<RoadNetwork />
<LaneTolls />
</div>
<div class="content-l">
<VehicleTolls />
<TruckLaneTolls />
</div>
<RoadSectionTolls class="content-r" />
</div>
</section>
<section class="foot">
<div class="content" style="position: relative; top: -10px">
<AccessAnalysis class="content-m" />
<AuxiliaryFlowcharts class="content-rm" />
</div>
</section>
<section class="foot">
<div class="content">
<MonthlyAnalysis class="content-mi" />
<DaylyAnalysis class="content-mi" />
</div>
</section>
</div>
</template>
<script>
import RoadNetwork from "./components/roadNetworkTraffic";
import LaneTolls from "./components/laneTolls";
import VehicleTolls from "./components/vehicleTolls";
import TruckLaneTolls from "./components/truckLaneTolls";
import RoadSectionTolls from "./components/RoadSectionTolls";
import AccessAnalysis from "./components/accessAnalysis";
import AuxiliaryFlowcharts from "./components/auxiliaryFlowcharts";
import MonthlyAnalysis from "./components/monthlyAnalysis";
import DaylyAnalysis from "./components/daylyAnalysis";
export default {
name: "publicService",
components: {
RoadNetwork,
LaneTolls,
VehicleTolls,
TruckLaneTolls,
RoadSectionTolls,
AccessAnalysis,
AuxiliaryFlowcharts,
MonthlyAnalysis,
DaylyAnalysis,
},
data() {
return {
activeName: "first",
};
},
methods: {
changeTabs() {},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-tabs__item {
display: inline-flex;
justify-content: center;
font-size: 16px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #ffffff;
min-width: 128px;
position: relative;
left: 10px;
}
::v-deep .el-tabs__active-bar {
min-width: 128px;
}
::v-deep .el-tabs__nav-wrap::after {
background-color: #133242;
opacity: 0.1;
}
.footTabs {
display: inline;
width: 100%;
}
.TrafficFlow {
width: 100%;
height: 100%;
position: relative;
z-index: 6;
color: white;
padding-top: 15px;
.header-shot {
width: 98%;
margin: auto;
margin-top: 15px;
height: 160px;
}
.content {
width: 100%;
margin: auto;
display: flex;
flex: 1;
pointer-events: none;
margin-top: 0px;
> div {
pointer-events: auto;
}
.content-l {
width: calc(32.2%);
margin-right: 20px;
display: inline-flex;
flex-direction: column;
> div {
margin-bottom: 15px;
}
}
.content-r {
width: calc(33%);
display: inline-flex;
}
.content-rm {
width: calc(33%);
margin-right: 10px;
}
.content-mi {
width: calc(50%);
margin-right: 20px;
}
.content-mi:last-child {
margin-right: 10px;
}
.content-m {
display: inline-flex;
width: 66%;
margin-right: 20px;
}
}
.foot {
width: 98%;
margin: auto;
display: flex;
justify-content: space-between;
flex: 1;
pointer-events: none;
margin-top: 8px;
> div {
pointer-events: auto;
}
.foot-w {
width: 100%;
}
.foot-l {
width: 726px;
}
.foot-m {
width: 613px;
}
.foot-r {
width: 493px;
}
}
}
</style>

208
ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/index.vue

@ -1,185 +1,67 @@
<template>
<div class="TrafficFlow">
<section class="foot">
<div class="content">
<div class="content-l">
<RoadNetwork />
<LaneTolls />
</div>
<div class="content-l">
<VehicleTolls />
<TruckLaneTolls />
</div>
<RoadSectionTolls class="content-r" />
</div>
</section>
<section class="foot">
<div class="content" style="position: relative; top: -10px">
<AccessAnalysis class="content-m" />
<AuxiliaryFlowcharts class="content-rm" />
<!-- <template>
<div>
<img class="img" src="@screen/images/digital/gisAndBim.jpg" />
</div>
</section>
<section class="foot">
<div class="content">
<MonthlyAnalysis class="content-mi" />
<DaylyAnalysis class="content-mi" />
</div>
</section>
</template>
<script>
</script>
<style lang='scss' scoped>
.img {
height: 1030px;
width: 1920px;
}
</style> -->
<template>
<div class='comp_box'>
<iframe class="iframe" :src="alarmUrl" frameborder="0"></iframe>
</div>
</template>
<script>
import RoadNetwork from "./components/roadNetworkTraffic";
import LaneTolls from "./components/laneTolls";
import VehicleTolls from "./components/vehicleTolls";
import TruckLaneTolls from "./components/truckLaneTolls";
import RoadSectionTolls from "./components/RoadSectionTolls";
import AccessAnalysis from "./components/accessAnalysis";
import AuxiliaryFlowcharts from "./components/auxiliaryFlowcharts";
import MonthlyAnalysis from "./components/monthlyAnalysis";
import DaylyAnalysis from "./components/daylyAnalysis";
import { getConfigKey } from "@/api/system/config.js";
export default {
name: "publicService",
name: 'InDevelopment',
components: {
RoadNetwork,
LaneTolls,
VehicleTolls,
TruckLaneTolls,
RoadSectionTolls,
AccessAnalysis,
AuxiliaryFlowcharts,
MonthlyAnalysis,
DaylyAnalysis,
},
data() {
return {
activeName: "first",
};
props: {
text: {
type: String,
default: "暂无数据"
},
methods: {
changeTabs() {},
},
};
</script>
<style lang="scss" scoped>
::v-deep .el-tabs__item {
display: inline-flex;
justify-content: center;
font-size: 16px;
font-family: PingFang SC, PingFang SC;
font-weight: 500;
color: #ffffff;
min-width: 128px;
position: relative;
left: 10px;
}
::v-deep .el-tabs__active-bar {
min-width: 128px;
alarmUrl: {
type: String,
default: "",
}
::v-deep .el-tabs__nav-wrap::after {
background-color: #133242;
opacity: 0.1;
},
mounted() {
// this.alarmUrl = "http://10.0.86.37:81/?HoveringMouse=true&LightMode=false";
getConfigKey("dc.gisAndBim").then((res) => {
this.alarmUrl = res.msg
});
}
.footTabs {
display: inline;
width: 100%;
}
</script>
.TrafficFlow {
<style lang='scss' scoped>
.comp_box {
// padding-top:160px;
width: 100%;
height: 100%;
position: relative;
z-index: 6;
color: white;
padding-top: 15px;
.header-shot {
width: 98%;
margin: auto;
margin-top: 15px;
height: 160px;
}
.content {
width: 100%;
margin: auto;
color: #8A9EAA;
display: flex;
flex: 1;
pointer-events: none;
margin-top: 0px;
> div {
pointer-events: auto;
}
.content-l {
width: calc(32.2%);
margin-right: 20px;
display: inline-flex;
flex-direction: column;
> div {
margin-bottom: 15px;
}
}
.content-r {
width: calc(33%);
display: inline-flex;
}
.content-rm {
width: calc(33%);
margin-right: 10px;
}
.content-mi {
width: calc(50%);
margin-right: 20px;
}
.content-mi:last-child {
margin-right: 10px;
}
.content-m {
display: inline-flex;
width: 66%;
margin-right: 20px;
}
}
.foot {
width: 98%;
margin: auto;
display: flex;
justify-content: space-between;
flex: 1;
pointer-events: none;
margin-top: 8px;
> div {
pointer-events: auto;
}
justify-content: center;
align-items: center;
position: relative;
.foot-w {
.iframe {
position: absolute;
left: 0;
top: 0;
width: 100%;
}
.foot-l {
width: 726px;
}
.foot-m {
width: 613px;
}
.foot-r {
width: 493px;
}
height: 100%;
}
}
</style>

27
ruoyi-ui/src/views/JiHeExpressway/pages/service/boardRecord/index.vue

@ -22,18 +22,23 @@
<!-- 内容 -->
<div class="body">
<Table :data="tableData" height="100%">
<el-table-column label="序号" type="index" :index="indexMethod" width="100" />
<ElTableColumn label="发布时间" prop="operTime" width="280">
<el-table-column label="序号" type="index" :index="indexMethod" width="100" align="center"
header-align="center" />
<ElTableColumn label="发布时间" prop="operTime" width="280" align="center" header-align="center">
<template slot-scope="scope">
{{ moment(scope.row.operTime).format("yyyy/MM/DD hh:mm") }}
</template>
</ElTableColumn>
<ElTableColumn label="设备ID" prop="dcDeviceId" width="120">
<ElTableColumn label="设备ID" prop="dcDeviceId" width="120" align="center" header-align="center">
<template slot-scope="scope">
{{ JSON.parse(scope.row.dcDeviceId).join("、") }}
</template>
</ElTableColumn>
<ElTableColumn label="设备名称" prop="dcDeviceName" />
<ElTableColumn label="设备名称" prop="dcDeviceName" align="center" header-align="center">
<template slot-scope="scope">
{{ scope.row.dcDeviceName.replace(/^\[/,'').replace(/\]$/,'') }}
</template>
</ElTableColumn>
<ElTableColumn label="内容" prop="operParam" width="400" header-align="center">
<template slot-scope="scope">
<el-carousel direction="horizontal" :autoplay="false" indicator-position="inside" height="80px"
@ -45,13 +50,18 @@
</el-carousel>
</template>
</ElTableColumn>
<ElTableColumn label="状态" prop="status" width="140" :formatter="formatterStatus" />
<ElTableColumn label="用户名" prop="operName" width="160" />
<ElTableColumn label="用户IP" prop="operIp" width="200">
<ElTableColumn label="用户名" prop="operName" width="160" align="center" header-align="center" />
<ElTableColumn label="用户IP" prop="operIp" width="200" align="center" header-align="center">
<template slot-scope="scope">
{{ ["unknown"].includes(scope.row.operIp) ? "" : scope.row.operIp }}
</template>
</ElTableColumn>
<ElTableColumn label="发布结果" prop="status" width="140" align="center" header-align="center">
<template slot-scope="scope">
<i class="el-icon-success" style="font-size: 24px; color:#0c0;" v-if="scope.row.status == 1"></i>
<i class="el-icon-error" style="font-size: 24px; color:#BBB;" v-else></i>
</template>
</ElTableColumn>
</Table>
</div>
@ -149,9 +159,6 @@ export default {
formatterDirection(row, column) {
return DirectionTypes[row.direction];
},
formatterStatus(row, column) {
return ["失败", "成功"][row.releaseStatus];
},
initData() {
request({
url: `/business/dcOperLog/list`,

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

@ -4,7 +4,15 @@
* icon: 展示的图标
*/
// 相机的状态
function arrayToDic(arr) {
let obj = {};
arr.map((item) => {
obj[item.value] = item;
});
return obj;
}
// 相机状态
export const CameraStatusEnum = {
"-1": {
color: "",
@ -60,7 +68,7 @@ export const CameraDirectionEnumList = Object.keys(CameraDirectionEnum).map(
}
);
// 设备状态
// 设备状态
export const DeviceTypeEnum = {
0: {
text: "异常",
@ -94,7 +102,8 @@ export const CameraControlTypeEnum = {
},
};
//交通事件类型
//交通事件主类
export const EventTopics = {
交通事故: 1,
车辆故障: 2,
@ -109,79 +118,73 @@ export const EventTopics = {
其他事件: 11,
};
//路网设施类型
// 1-收费站
// 2-桥梁
// 3-互通立交
// 4-枢纽立交
// 5-隧道
// 6-服务区',
// 7-停车区,
// 8-清障驻点
// 9-边坡
export const RoadNFTopics = {
收费站: 1,
桥梁: 2,
枢纽立交: 4,
服务区: 6,
停车区: 7,
清障驻点: 8,
边坡: 9,
};
// 事件类型 eventType
export const EventType = {
0: {
text: "待确认",
},
1: {
text: "处理中",
},
2: {
text: "已完成",
},
};
// 信息来源 warningSource
export const InfoWarningSource = {
1: {
text: "视频AI",
},
2: {
text: "雷达识别",
},
3: {
text: "锥桶",
},
4: {
text: "护栏碰撞",
},
5: {
text: "扫码报警",
},
6: {
text: "非机预警",
},
// 7: {
// text: "气象监测器",
// },
};
//交通事件主类 {1: "交通事故",... }
export const trafficType = Object.keys(EventTopics).reduce((prev, now) => {
return { ...prev, [EventTopics[now]]: now };
}, {});
export const warningSourceMapping = {
1: "视频AI",
2: "雷达识别",
3: "锥桶",
4: "护栏碰撞",
5: "扫码报警",
6: "非机预警",
// 7: '气象监测器'
//交通事件主类 [{value:"", label:""},...]
export const trafficKV = Object.keys(trafficType).map((key) => {
return {
value: key * 1,
label: trafficType[key],
};
});
export const warningStateMapping = {
1: "上报",
2: "已完成",
3: "已终止",
4: "自动结束",
//交通事件子类
export const EventSubclass = {
"1-1": "追尾",
"1-2": "侧翻",
"1-3": "撞护栏",
"1-4": "自燃",
"1-5": "其他事故",
"2-1": "车辆故障",
"3-1": "主线封闭限行",
"3-2": "收费站封闭和限行",
"3-3": "立交封闭和限行",
"3-4": "服务区封闭和限行",
"4-1": "道路拥堵",
"4-2": "立交拥堵",
"4-3": "收费站拥堵",
"4-4": "服务区拥堵",
"5-1": "行人",
"5-2": "非机动车",
"5-3": "摩托车",
"5-4": "其他",
"6-1": "烟雾",
"6-2": "倒伏树木",
"6-3": "撒落物",
"6-4": "动物",
"6-5": "其他",
"7-1": "道路养护施工",
"7-2": "收费站养护施工",
"7-3": "服务区养护施工",
"7-4": "枢纽立交匝道养护施工",
"7-5": "地方道路养护施工",
"7-6": "道路工程建设施工",
"7-7": "收费站工程建设施工",
"7-8": "服务区工程建设施工",
"7-9": "枢纽立交匝道工程建设施工",
"7-10": "地方道路工程建设施工",
"8-1": "封闭、暂停营业",
"8-2": "重要设施停用",
"8-3": "服务区其他异常",
"9-1": "摄像机",
"9-2": "护栏",
"9-3": "隔离栅",
"9-4": "情报板",
"9-5": "防炫板",
"9-6": "其他",
"10-1": "雨",
"10-2": "雪",
"10-3": "雾",
"10-4": "大风",
"10-5": "低温寒潮",
"10-6": "路面积雪",
"10-7": "路面结冰",
"10-8": "路面积水",
"10-9": "其他",
"11-1": "其他事件",
};
// 感知事件主类 warningType
@ -200,80 +203,7 @@ export const WarningType = {
99: "其他事件",
};
function arrayToDic(arr) {
let obj = {};
arr.map((item) => {
obj[item.value] = item;
});
return obj;
}
//设备Options
export const deviceTypeOptions = [
{
value: 1,
label: "摄像机",
},
{
value: 2,
label: "可变信息标志",
timingControl: true,
},
{
value: 3,
label: "气象监测器",
},
{
value: 4,
label: "出口诱导灯",
},
{
value: 5,
label: "路段语音广播",
timingControl: true,
},
{
value: 6,
label: "护栏碰撞",
},
{
value: 7,
label: "毫米波雷达",
},
{
value: 8,
label: "合流区预警",
},
{
value: 9,
label: "智慧锥桶",
},
{
value: 10,
label: "激光疲劳唤醒",
timingControl: true,
},
{
value: 11,
label: "一类交通量调查站",
},
{
value: 12,
label: "行车诱导",
timingControl: true,
},
{
value: 13,
label: "智能设备箱",
// timingControl: true,
},
{
value: 14,
label: "光线在线监测",
},
];
export const deviceTypeDic = arrayToDic(deviceTypeOptions);
//感知事件主类 [{ value: "", label: "" }, ...]
export const WarningTypeList = Object.keys(WarningType).map((key) => {
return {
value: key * 1,
@ -281,26 +211,7 @@ export const WarningTypeList = Object.keys(WarningType).map((key) => {
};
});
// 交通事件主类 {1: "交通事故" } 格式
export const trafficType = Object.keys(EventTopics).reduce((prev, now) => {
return { ...prev, [EventTopics[now]]: now };
}, {});
//激光疲劳唤醒工作模式
export const awakerWorkModeDic = {
0: "激光关闭",
1: "常亮模式",
2: "间隔100ms闪烁模式",
3: "间隔200ms闪烁模式",
4: "间隔500ms闪烁模式",
5: "2次闪烁模式",
6: "SOS模式",
7: "自定义模式1",
8: "自定义模式2",
9: "自定义模式3",
};
// 感知事件主类的子类(上方) warningSubclass
// 感知事件子类
export const WarningSubclass = {
1: {
"1-1": "拥堵",
@ -377,14 +288,6 @@ export const WarningSubclass = {
},
};
//========= 交通事件 主类(key vulue) =========
export const trafficKV = Object.keys(trafficType).map((key) => {
return {
value: key * 1,
label: trafficType[key],
};
});
//交通事件、感知事件 子类(key vulue)预案使用
export const eventSubClassMap = {
1: {
@ -855,6 +758,162 @@ export const eventSubClassMap = {
},
};
//路网设施类型
// 1-收费站
// 2-桥梁
// 3-互通立交
// 4-枢纽立交
// 5-隧道
// 6-服务区',
// 7-停车区,
// 8-清障驻点
// 9-边坡
export const RoadNFTopics = {
收费站: 1,
桥梁: 2,
枢纽立交: 4,
服务区: 6,
停车区: 7,
清障驻点: 8,
边坡: 9,
};
// 事件类型 eventType
export const EventType = {
0: {
text: "待确认",
},
1: {
text: "处理中",
},
2: {
text: "已完成",
},
};
// 信息来源 warningSource
export const InfoWarningSource = {
1: {
text: "视频AI",
},
2: {
text: "雷达识别",
},
3: {
text: "锥桶",
},
4: {
text: "护栏碰撞",
},
5: {
text: "扫码报警",
},
6: {
text: "非机预警",
},
// 7: {
// text: "气象监测器",
// },
};
export const warningSourceMapping = {
1: "视频AI",
2: "雷达识别",
3: "锥桶",
4: "护栏碰撞",
5: "扫码报警",
6: "非机预警",
// 7: '气象监测器'
};
export const warningStateMapping = {
1: "上报",
2: "已完成",
3: "已终止",
4: "自动结束",
};
//设备Options
export const deviceTypeOptions = [
{
value: 1,
label: "摄像机",
},
{
value: 2,
label: "可变信息标志",
timingControl: true,
},
{
value: 3,
label: "气象监测器",
},
{
value: 4,
label: "出口诱导灯",
},
{
value: 5,
label: "路段语音广播",
timingControl: true,
},
{
value: 6,
label: "护栏碰撞",
},
{
value: 7,
label: "毫米波雷达",
},
{
value: 8,
label: "合流区预警",
},
{
value: 9,
label: "智慧锥桶",
},
{
value: 10,
label: "激光疲劳唤醒",
timingControl: true,
},
{
value: 11,
label: "一类交通量调查站",
},
{
value: 12,
label: "行车诱导",
timingControl: true,
},
{
value: 13,
label: "智能设备箱",
// timingControl: true,
},
{
value: 14,
label: "光线在线监测",
},
];
export const deviceTypeDic = arrayToDic(deviceTypeOptions);
//激光疲劳唤醒 工作模式
export const awakerWorkModeDic = {
0: "激光关闭",
1: "常亮模式",
2: "间隔100ms闪烁模式",
3: "间隔200ms闪烁模式",
4: "间隔500ms闪烁模式",
5: "2次闪烁模式",
6: "SOS模式",
7: "自定义模式1",
8: "自定义模式2",
9: "自定义模式3",
};
//激光疲劳唤醒 工作模式
export const gzmsMap = {
SETMD0: "激光关闭",
@ -1032,74 +1091,21 @@ export const DirectionTypes = {
3: "济南方向",
2: "双向",
};
export const EventSubclass = {
"1-1": "追尾",
"1-2": "侧翻",
"1-3": "撞护栏",
"1-4": "自燃",
"1-5": "其他事故",
"2-1": "车辆故障",
"3-1": "主线封闭限行",
"3-2": "收费站封闭和限行",
"3-3": "立交封闭和限行",
"3-4": "服务区封闭和限行",
"4-1": "道路拥堵",
"4-2": "立交拥堵",
"4-3": "收费站拥堵",
"4-4": "服务区拥堵",
"5-1": "行人",
"5-2": "非机动车",
"5-3": "摩托车",
"5-4": "其他",
"6-1": "烟雾",
"6-2": "倒伏树木",
"6-3": "撒落物",
"6-4": "动物",
"6-5": "其他",
"7-1": "道路养护施工",
"7-2": "收费站养护施工",
"7-3": "服务区养护施工",
"7-4": "枢纽立交匝道养护施工",
"7-5": "地方道路养护施工",
"7-6": "道路工程建设施工",
"7-7": "收费站工程建设施工",
"7-8": "服务区工程建设施工",
"7-9": "枢纽立交匝道工程建设施工",
"7-10": "地方道路工程建设施工",
"8-1": "封闭、暂停营业",
"8-2": "重要设施停用",
"8-3": "服务区其他异常",
"9-1": "摄像机",
"9-2": "护栏",
"9-3": "隔离栅",
"9-4": "情报板",
"9-5": "防炫板",
"9-6": "其他",
"10-1": "雨",
"10-2": "雪",
"10-3": "雾",
"10-4": "大风",
"10-5": "低温寒潮",
"10-6": "路面积雪",
"10-7": "路面结冰",
"10-8": "路面积水",
"10-9": "其他",
"11-1": "其他事件",
};
// 方向
export const directionOptions = [
{ value: "1", label: "菏泽方向" },
{ value: "3", label: "济南方向" },
{ value: "2", label: "双向" },
];
//行车诱导相关
//行车诱导控制模式
export const inducerModeDic = {
"00": "手动模式",
"01": "自动模式",
"02": "万年历",
};
//行车诱导工作模式
export const inducerWorkTypeDic = {
"00": "不更新",
"01": "常亮",

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

@ -32,6 +32,7 @@ export default {
this.socket.initialize({
// url: 'ws://' + location.hostname + ':' + port + path,
url: 'wss://' + location.hostname + ':' + window.location.port + '/ws' || 80 + '/ws',
// url: 'ws://10.168.77.128:7789/ws',
// url: "ws://10.7.179.15" + ":" + port + path,
// url: "ws://10.168.64.171" + ":" + port + path,
// url: 'ws://10.168.78.127'+ ':' + port + path,
@ -40,8 +41,10 @@ export default {
tokenSN: this.token,
heartRate: interval,
});
this.socket.onopen = () => {};
this.socket.onmessage = (message) => {
// debugger
message = JSON.parse(message);
const method = message.method;
@ -53,7 +56,11 @@ export default {
const params = message.params;
const subEvent = params.subEvent;
const content = params.content;
if(_.isString(content)){
var contentList = JSON.parse(content);
}else{
var contentList = content;
}
switch (subEvent) {
case "payment_webSocket_send":
@ -92,7 +99,10 @@ export default {
this.$nextTick(() => {
this.$store.commit("EVENTUNTREATEDNUM", contentList);
});
break;
case "0":
case "1":
this.$emit("newEvent", params);
break;
default:
}
@ -101,6 +111,62 @@ export default {
},
created() {},
methods: {},
mounted(){
let _this = this;
if (process.env.NODE_ENV == "development"){
let et = 1;
document.onkeydown = function (e) {
let tp = _.sample(["0", "1", "0", "1", "0", "0", "0", "1", "0"]);
if (e.code == 'Space') {
let params = {
"subEvent": tp,
"content": {
"event": {
"id": "1555c6599eb14e3fb68d04e512182ee7",
"deptId": 103,
"stakeMark": "K059+289",
"endStakeMark": "",
"direction": "1",
"userId": 1,
"estimatedEndTime": "2024-04-11 00:00:00",
"eventType": et,
"eventSubclass": "3-2",
"eventState": 0,
"eventSource": 1,
"inTunnel": 0,
"roadId": 1,
"occurrenceTime": "2024-04-10 16:56:02",
"warning_time": "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 发生收费站封闭和限行事件"
}
};
_this.$emit("newEvent", params);
}
if(tp == "0"){
et++;
if (et >= 12) {
et = 1;
}
}
}
}
}
};
</script>

Loading…
Cancel
Save