@@ -86,6 +86,10 @@ export default {
     },
   },
   methods: {
+    close(){
+      console.log('------')
+      this.modelVisible = false
+    },
     updateDialogVisible(bool) {
       this.modelVisible = bool;
     },
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue
index 67d4a0be..6a77ffe0 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue
@@ -1,18 +1,11 @@
 
-  
-    
+  
+    
       
-        
-        
+        
+        
       
     ![]() +
+    ![]() 
   
 
 
@@ -106,6 +88,10 @@ export default {
         },
       ],
     },
+    isShowLeft: {
+      type: Boolean,
+      default: true
+    }
   },
   data() {
     return {
@@ -180,7 +166,7 @@ export default {
       display: flex;
       flex-direction: column;
 
-      > p {
+      >p {
         font-size: 12px;
         color: #f4f4f4;
         line-height: 24px;
@@ -212,7 +198,7 @@ export default {
       display: flex;
       gap: 9px;
 
-      > div {
+      >div {
         // flex: 1;
       }
     }
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/VideoMulti/index.vue b/ruoyi-ui/src/views/JiHeExpressway/components/VideoMulti/index.vue
index 6dc49afb..43dac124 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/VideoMulti/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/VideoMulti/index.vue
@@ -68,7 +68,12 @@ export default {
       const changeItem = find(this.urls, { iotDeviceId: this.cameraId });
       this.dialogData = { ...changeItem, parseOtherConfig: changeItem.otherConfig && JSON.parse(changeItem.otherConfig) };
       console.log(this.cameraId, this.dialogData)
-      this.showVideo();
+      this.player?.destroy();
+      const self = this;
+      setTimeout(() => {
+        self.showVideo();  
+      }, 500);
+      
     },
     async playVideo() {
       this.player?.destroy();
diff --git a/ruoyi-ui/src/views/JiHeExpressway/index.vue b/ruoyi-ui/src/views/JiHeExpressway/index.vue
index c1f020dc..7b4cd655 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/index.vue
@@ -1,7 +1,7 @@
 
   
-    
-     
+    
+    
     
       
         
@@ -15,6 +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: {
@@ -24,6 +25,8 @@ export default {
   },
   data() {
     return {
+      notifications: [],
+      notifyIndex:0,
       isShowContent:false,
       headerHeight:100,
       header: {
@@ -57,6 +60,102 @@ 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;
@@ -71,6 +170,19 @@ 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;
@@ -135,3 +247,101 @@ export default {
   }
 }
 
+
+
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue
index efaad632..93b1ef0b 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/components/DeviceControlDialog.vue
@@ -38,7 +38,7 @@ export default {
   props: {
     visible: Boolean,
     deviceId: String,
-    id: String,
+    id: Number,
     deviceType: String,
   },
   data() {
@@ -49,6 +49,9 @@ export default {
   computed: {
     modelVisible: {
       get() {
+        if(this.visible){
+          console.log('id',id)
+        }
         return this.visible;
       },
       set(val) {
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue
index 5a8efaf2..30a45fa7 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/DrivingGuidance/index.vue
@@ -164,18 +164,23 @@ export default {
     handleClickTabs() { },
     requestURL(functionId = 52, options = {}) {
       return new Promise((resolve, reject) => {
-        request
-          .post(
-            `business/device/functions/${this.dialogData.iotDeviceId}/${functionId}`,
-            options
-          )
-          .then((result) => {
-            if (result.code != 200) return reject();
-            resolve(result.data[0]);
-          })
-          .catch((err) => {
-            reject();
-          });
+        if (!this.dialogData.iotDeviceId) {
+          reject();
+        } else {
+          request
+            .post(
+              `business/device/functions/${this.dialogData.iotDeviceId}/${functionId}`,
+              options
+            )
+            .then((result) => {
+              if (result.code != 200) return reject();
+              resolve(result.data[0]);
+            })
+            .catch((err) => {
+              reject();
+            });
+        }
+
       });
     },
   },
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/index.vue
index 57ad41ac..335c20c1 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/MeteorologicalDetection/index.vue
@@ -139,7 +139,7 @@ export default {
         },
         {
           label: "水膜厚度(mm)",
-          key: "waterFilmlceSnowValue",
+          key: "waterFilmIceSnowValue",
         },
         {
           label: "大气压力(hPa)",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/components/DialogBoard.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/components/DialogBoard.vue
new file mode 100644
index 00000000..503eedc9
--- /dev/null
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/components/DialogBoard.vue
@@ -0,0 +1,168 @@
+
+  
+
+
+
+
+
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/components/DialogCamera.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/components/DialogCamera.vue
new file mode 100644
index 00000000..843eb3e0
--- /dev/null
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/components/DialogCamera.vue
@@ -0,0 +1,64 @@
+
+  
+
+
+
+
+
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue
index 69bf17be..f6d67e09 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/commandDispatch/Cards/CrowdnessIndicatorRankings/index.vue
@@ -5,7 +5,7 @@
         ref="AMapContainerRef"
         v-if="delayLoad"
         @update:isGisCompleted="(data) => {
-          this.bindMap(data)
+          this.bindMap(data)  
         }
       "
         style="z-index: 9"
@@ -19,7 +19,7 @@
         @click="handleClick(item)"
       >
         
+