diff --git a/ruoyi-ui/src/utils/request.js b/ruoyi-ui/src/utils/request.js
index d31b22f7..1acab51b 100644
--- a/ruoyi-ui/src/utils/request.js
+++ b/ruoyi-ui/src/utils/request.js
@@ -141,6 +141,14 @@ service.interceptors.response.use(res => {
     else if (message.includes("Request failed with status code")) {
       message = "系统接口" + message.substr(message.length - 3) + "异常";
     }
+    else if (message.includes("client_offline"))
+    {
+      message = "设备离线"
+    }
+    else if (message.includes("time_out"))
+    {
+      message = "连接超时"
+    }
     Message({
       message: message,
       type: 'error',
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/Adaptation.vue b/ruoyi-ui/src/views/JiHeExpressway/components/Adaptation.vue
index ff5a269d..8d34a74d 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/Adaptation.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/Adaptation.vue
@@ -101,10 +101,10 @@ export default {
   mounted() {
     this.initScale();
 
-    window.addEventListener(
-      "resize",
-      _.debounce(this.initScale.bind(this), 360)
-    );
+    // window.addEventListener(
+    //   "resize",
+    //   _.debounce(this.initScale.bind(this), 360)
+    // );
   },
 };
 </script>
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue
index c2db7f75..bdbee4b9 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/RoadStateCard/index.vue
@@ -2,8 +2,14 @@
   <BorderRadiusImage class='RoadStateCard' borderRadius="2px"
     borderColor="linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0))" borderWidth="2px">
     <div class="left">
-      <img :src="(cardData.pictures ? cardData.pictures[0] : null) || require(`./test.png`)">
+      <!-- <img :src="(cardData.pictures ? cardData.pictures[0] : null) || require(`./test.png`)"> -->
       <!-- <img :src="require(`./test.png`)"> -->
+      <ElImage style="width: 212px; height: 159px;" :src="cardData.pictures ? cardData.pictures[0] : null"
+        :preview-src-list="cardData.pictures || []">
+        <div slot="error">
+          <i class="el-icon-picture-outline icon"></i>
+        </div>
+      </ElImage>
     </div>
     <div class="right">
       <div class="info">
@@ -23,7 +29,7 @@
       </div>
     </div>
 
-    <img v-if="cardData.state" class="status" :src="require(`./images/${statusMap[cardData.state]}.svg`)" />
+    <img v-if="cardData.state" class="status" :src="require(`./images/${statusMap[cardData.state]}.svg`) " />
   </BorderRadiusImage>
 </template>
 
@@ -135,6 +141,15 @@ export default {
       width: 212px;
       height: 159px;
     }
+
+    .icon {
+      display:inline-block;
+      width: 212px;
+      height: 159px;
+      line-height: 157px;
+      text-align: center;
+      border: 1px solid #fff;
+    }
   }
 
   .right {
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardInfoEditor.vue b/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardInfoEditor.vue
index 5a34ea16..54ba5735 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardInfoEditor.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardInfoEditor.vue
@@ -101,6 +101,7 @@
                   :key="item.dictValue"
                   :label="item.dictLabel"
                   :value="item.dictValue"
+                  v-if="+(item.dictValue.replace('px',''))<=maxFontSize"
                 >
                 </el-option>
               </el-select>
@@ -191,6 +192,7 @@ import { debounce } from "lodash";
 export default {
   data() {
     return {
+      maxFontSize:100,
       alignmentNum: 2,
       content: "",
       boardWidth: "",
@@ -316,6 +318,17 @@ export default {
         speechSpeed: "0",
         font: "3",
       },
+      templateDefault: {
+        category: "",
+        formatStyle: "2",
+        content: "",
+        fontColor: "",
+        fontSize: "",
+        fontType: "",
+        stopTime: 50,
+        inScreenMode: "",
+        screenSize: "",
+      },
       isLocked: false,
     };
   },
@@ -361,6 +374,26 @@ export default {
     },
   },
   watch: {
+    screenSize(newV){
+
+      if(newV){
+        let boardH = newV.split("*")[1];
+        let fontSize = "20";
+        if (['64', '48'].includes(boardH)) {
+          this.maxFontSize = +boardH
+          fontSize = boardH + ""
+        } else if (['80'].includes(boardH)) {
+          this.maxFontSize = +boardH / 2
+          fontSize = +boardH / 2 + ""
+        } else if (['160'].includes(boardH)) {
+          this.maxFontSize = +boardH / 2
+          fontSize = +boardH / 4 + ""
+        }
+        this.deviceCttDefault.fontSize = fontSize
+        this.templateDefault.screenSize = newV;
+        this.templateDefault.fontSize = fontSize;
+      }
+    },
     visible: {
       handler(newV) {
         this.dialogVisible = newV;
@@ -400,21 +433,30 @@ export default {
   },
   mounted() {},
   created() {
+    this.templateDefault.fontType = this.fontTypeList[0].dictValue  //设置模板的默认值
     this.getDicts("iot_devices_font_color").then((res) => {
       this.colorList = res.data;
+      this.templateDefault.fontColor = this.colorList[0].dictValue
       // console.log(this.colorList, "字体颜色");
     });
     this.getDicts("iot_device_font_inScreen_mode").then((res) => {
       this.inScreenModeList = res.data;
+      this.templateDefault.inScreenMode = this.inScreenModeList[0].dictValue
       // console.log(this.inScreenModeList, "入屏方式");
     });
     this.getDicts("iot_template_category").then((res) => {
       this.templateCategoryList = res.data;
+      this.templateDefault.category = this.templateCategoryList[0].dictValue
     });
     this.getDicts("iot_device_font_size").then((res) => {
       this.fontSizeList = res.data;
+      // this.templateDefault.fontSize = this.fontSizeList[0].dictValue
       // this.dataForm.FONT_SIZE = res.data[1].dictValue
     });
+
+
+    
+
   },
   methods: {
     initData() {
@@ -433,17 +475,7 @@ export default {
       if (this.mode == "add") {
         let tempTpl = null;
         if (this.type == "template") {
-          tempTpl = {
-            category: this.templateCategoryList[0].dictValue,
-            formatStyle: 0,
-            content: "",
-            fontColor: this.colorList[0].dictValue,
-            fontSize: this.fontSizeList[0].dictValue,
-            fontType: this.fontTypeList[0].dictValue,
-            stopTime: 50,
-            inScreenMode: this.inScreenModeList[0].dictValue,
-            screenSize: this.screenSize,
-          };
+          tempTpl = _.merge({}, this.templateDefault, this.tpl);
         } else {
           tempTpl = _.merge({}, this.deviceCttDefault, this.tpl.origin); //首页弹窗,新增设备项时,需要传设备尺寸过来
         }
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardPreview.vue b/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardPreview.vue
index 005fa7d5..51c3e6da 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardPreview.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardPreview.vue
@@ -40,7 +40,7 @@ export default {
         },
         tpl:{
             handler(newV){
-                this.contentArr = this.tpl.textContent.replaceAll(/\\\\n/g, '\n').replaceAll(/ /g, '&nbsp').split('\n');
+                this.contentArr = this.tpl.textContent.replaceAll(/\\\\n/g, '\n').replaceAll(/\\=/g, '=').replaceAll(/\\,/g, ',').replaceAll(/ /g, '&nbsp').split('\n');
                 this.setStyle();
             },
             deep:true,
@@ -113,6 +113,8 @@ export default {
             color: #f00;
             line-height: 1;
             margin-bottom: 0;
+            word-break: keep-all;
+            white-space: nowrap;
         }
     }
 }
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardTplPreview.vue b/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardTplPreview.vue
index 71f8144c..473dbb38 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardTplPreview.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/infoBoard/BoardTplPreview.vue
@@ -110,6 +110,8 @@ export default {
             color: #f00;
             line-height: 1;
             margin-bottom: 0;
+            word-break: keep-all;
+            white-space: nowrap;
         }
     }
 }
diff --git a/ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js b/ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
index 0dcc45a8..5d9b420e 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
@@ -11,13 +11,14 @@ export default{
         // 新增待下发
         ____onAddDeviceItem() {
             let arr = this.selectedSize.split("*");
+
             this.editDialog = {
                 visible: true,
                 mode: "add",
                 type: "device",
                 tpl: {
                     "textContent": "",
-                    origin: {
+                    "origin": {
                         displayAreaWidth: +arr[0],
                         displayAreaHeight: +arr[1]
                     }
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/ConditionStatistics/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/ConditionStatistics/index.vue
index 0953fe23..2abe0e3b 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/ConditionStatistics/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/ConditionStatistics/index.vue
@@ -5,7 +5,7 @@
       <img class="icon-right keep-ratio" origin="right" src="@screen/images/icon/icon_right.png" />
     </div>
     <div class="content-r-t-box">
-      <div class="box-title keep-ratio" origin="left"><span>预警事件</span></div>
+      <div class="box-title keep-ratio" origin="left"><span>交通事件</span></div>
       <div class="box-content">
         <div class="box-content-l">
           <div class="event-item keep-ratio" origin="left">今日:<span>{{ earlyWarningEvents.day }}</span> 起</div>
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/TrafficIncidents/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/TrafficIncidents/index.vue
index 944d0c5f..6985b889 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/TrafficIncidents/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Dialogs/TrafficIncidents/index.vue
@@ -132,7 +132,7 @@ export default {
         if (code != 200) return;
 
         this.data = { ...data, ...this.data };
-        console.log(data);
+        console.log('trafficIncidents',data);
       })
       .catch((err) => {});
   },
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/FocusedMonitoring/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/FocusedMonitoring/index.vue
index 39d4a78f..b99c98e0 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/FocusedMonitoring/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/FocusedMonitoring/index.vue
@@ -17,7 +17,7 @@
           <span class="abnormal">{{ trafficIncidents[0] }}</span>
           <span>/{{ trafficIncidents[1] }}</span>
         </p>
-        <div>交通事件</div>
+        <div>交通事故</div>
       </div>
       <div class="monitor-item keep-ratio">
         <span>{{ constructionSection }}</span>
@@ -44,6 +44,7 @@
     </div>
   </Bg2>
 </template>
+
 <script>
 import Bg2 from "@screen/components/Decorations/bg-2.vue"
 import request from "@/utils/request";
@@ -96,6 +97,7 @@ export default {
   }
 }
 </script>
+
 <style lang="less">
 .content-l-t {
   width: 100%;
@@ -184,6 +186,7 @@ export default {
         width: 131px;
         height: 35px;
         display: flex;
+        letter-spacing: 2px;
         justify-content: center;
         align-items: center;
         background: url("~@screen/images/bg/box_bg_004.png") no-repeat;
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js
index 3ad07135..8aeb6151 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/map.js
@@ -2,6 +2,7 @@ import { loadAMap } from "@screen/pages/Home/components/AMapContainer/loadAMap.j
 // import { Message } from "element-ui";
 import Vue from "vue";
 import { lngLatMap } from "./buttonEvent";
+import { upperFirst } from "lodash";
 /**
  * @typedef {Object} Point
  * @property {number} weight - The weight of the item.
@@ -252,26 +253,24 @@ export class MarkerCluster {
       const findIndex = this.data.findIndex(
         (removeData) => removeData === item
       );
-      const { stakeMark } = item.extData;
+      let { stakeMark } = item.extData;
+      stakeMark = upperFirst(stakeMark); //统一格式 大写K
       const existNode = graphInstance.getCellById(stakeMark);
       const lnglat = item.lnglat;
       if (lnglat) {
         const { lat, lng } = getLatAndLng(lnglat);
         const lngLatStr = `${lng}/${lat}`;
         const lngLatArr = lngLatMap[lngLatStr]; //已是移除后的数据集
-        console.log(lngLatArr, lngLatArr?.length, "length");
         if (existNode) {
-          window.graphInstance.removeNode(existNode.id);
           if (lngLatArr) {
-            if (lngLatArr.length === 0) console.log();
-            // window.graphInstance.removeNode(stakeMark);
+            if (lngLatArr.length === 0)
+              window.graphInstance.removeNode(existNode.id);
             else {
-              //移除并重新添加
-              // window.graphInstance.removeNode(stakeMark);
-              console.log("重新ADD", lngLatArr);
-              // addInGraphHandle(lngLatArr);
+              //更新节点
+              const updateNode = graphInstance.getCellById(stakeMark);
+              updateNode.updateData(getDataConf(lngLatArr, item.extData));
             }
-          } //else window.graphInstance.removeNode(stakeMark);
+          } else window.graphInstance.removeNode(stakeMark);
         }
       }
       if (findIndex > -1) this.data.splice(findIndex, 1);
@@ -373,11 +372,11 @@ export function marksAddInGraph(data) {
 
 export function addInGraphHandle(data) {
   const graphInstance = window.graphInstance;
-  const nowBg = getState(data) ? normalBg : faultBg;
   const extData = data[0].extData;
   const { item: eventItem } = data[0].config;
   if (eventItem.id.match("./事件专题")) {
     let { stakeMark, lang } = extData;
+    stakeMark = upperFirst(stakeMark); //统一格式 大写K
     const distance =
       (Number(
         stakeMark.replace(/\.\d+/, "").replace("+", ".").replace(/[Kk]/, "")
@@ -386,42 +385,50 @@ export function addInGraphHandle(data) {
         window.canvasRatio +
       window.canvasWidth * window.offsetRatio; //K54+394 开始到K208+979计算的比例尺
 
-    const node = {};
-    if (data.length === 1) {
-      node.shape = "singleNode-html";
-      node.data = {
-        nowBg,
-        src: `${getIcon(data[0])}`,
-        extData,
-      };
-    } else {
-      node.shape = "multiNode-html";
-      node.data = {
-        nowBg,
-        // width: `${36 + `${data.length}`.length * 15}px`,
-        length: data.length,
-        extData,
-      };
-    }
+    const node = { shape: "custom-html", effect: ["data"] };
+    node.data = getDataConf(data, extData);
     const existNode = graphInstance.getCellById(stakeMark);
     if (existNode) {
-      graphInstance.removeCell(existNode.id);
+      existNode.updateData(node.data);
+    } else {
+      // setTimeout(() => {
+      graphInstance.addNode({
+        x: distance,
+        y: 60,
+        width: 20,
+        height: 20,
+        ...node,
+        zIndex: 1,
+        id: stakeMark,
+      });
+      // }, 0);
     }
     console.log(lang, "lang");
-    // setTimeout(() => {
-    graphInstance.addNode({
-      x: distance,
-      y: 60,
-      width: 20,
-      height: 20,
-      ...node,
-      zIndex: 1,
-      id: stakeMark,
-    });
-    // }, 0);
   }
 }
 
+function getDataConf(data, extData) {
+  let dataConf;
+  const nowBg = getState(data) ? normalBg : faultBg;
+  if (data.length === 1) {
+    dataConf = {
+      shape: "singleNode-html",
+      nowBg,
+      src: `${getIcon(data[0])}`,
+      extData,
+    };
+  } else {
+    dataConf = {
+      shape: "multiNode-html",
+      nowBg,
+      // width: `${36 + `${data.length}`.length * 15}px`,
+      length: data.length,
+      extData,
+    };
+  }
+  return dataConf;
+}
+
 export function getLatAndLng(lnglat) {
   if (Array.isArray(lnglat)) return { lng: lnglat[0], lat: lnglat[1] };
   else return lnglat;
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Thumbnail/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Thumbnail/index.vue
index 7b4a4367..978a89a2 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Thumbnail/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/Thumbnail/index.vue
@@ -11,13 +11,13 @@ import { actualLocationList, canvasList } from "./data.js";
 
 
 const mouseenterDebounceFunc = debounce(({ node }) => {
-  if (["singleNode-html", "multiNode-html"].indexOf(node.shape) >= 0) {
+  if (["custom-html"].indexOf(node.shape) >= 0) {
     node.setZIndex(100);
     console.log(node);
   }
 }, 0);
 const mouseleaveDebounceFunc = debounce(({ node }) => {
-  if (["singleNode-html", "multiNode-html"].indexOf(node.shape) >= 0) {
+  if (["custom-html"].indexOf(node.shape) >= 0) {
     node.setZIndex(1);
   }
 }, 0);
@@ -25,7 +25,7 @@ const mouseleaveDebounceFunc = debounce(({ node }) => {
 
 const clickDebounceFunc = debounce(({ node }) => {
   const mapIns = Vue.prototype.mapIns;
-  if (["singleNode-html", "multiNode-html"].indexOf(node.shape) >= 0) {
+  if (["custom-html"].indexOf(node.shape) >= 0) {
     const extData = node.getData()?.extData;
     if (extData) {
       mapIns.setZoomAndCenter(18, [extData.longitude, extData.latitude]);
@@ -188,16 +188,18 @@ export default {
       graph.on('node:click', clickDebounceFunc);
 
       Shape.HTML.register({
-        shape: 'singleNode-html',
+        shape: 'custom-html',
         width: 160,
         height: 80,
         html(node) {
           const data = node.getData();
+          const { shape, nowBg, src, length } = data;
           const { height, width } = node.prop().size;
           const div = document.createElement('div')
-          div.innerHTML = `
+          if (shape === "singleNode-html") {
+            div.innerHTML = `
             <div style="
-              background-image: url(${data.nowBg});
+              background-image: url(${nowBg});
               background-size: 100% 100%;
               background-repeat: no-repeat;
               width: ${width * 1.2}px;
@@ -209,24 +211,14 @@ export default {
               width: ${width * 0.8}px;
                   height: ${height * 0.8}px;
                   margin-top: ${height * 0.1}px;
-                " src='${data.src}'
+                " src='${src}'
               >
             </div>
           `;
-          return div
-        },
-      })
-      Shape.HTML.register({
-        shape: 'multiNode-html',
-        width: 160,
-        height: 80,
-        html(node) {
-          const data = node.getData();
-          const { height, width } = node.prop().size;
-          const div = document.createElement('div')
-          div.innerHTML = `
+          } else if (shape === "multiNode-html") {
+            div.innerHTML = `
             <div style="
-              background-image: url(${data.nowBg});
+              background-image: url(${nowBg});
               background-size: 100% 100%;
               background-repeat: no-repeat;
               display: flex;
@@ -234,12 +226,14 @@ export default {
               align-items: center;
               padding-bottom: ${height * 0.1}px;
             ">
-              ${data.length}
+              ${length}
             </div>
         `;
+          }
           return div
         },
       })
+
       window.graphInstance = graph;
       graph.addNodes(baseData.nodes);
 
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
index 8e53283c..5cbe6744 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/event/index.vue
@@ -359,8 +359,8 @@ export default {
             data.visibility = otherConfig.visibility;
 
             data.pictures = otherConfig.pictures || [];
-            // data.videoList = otherConfig.videoList || []
-            data.videoList = otherConfig.videoList || ['https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-480p.mp4']
+            data.videoList = otherConfig.videoList || []
+            // data.videoList = otherConfig.videoList || ['https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-480p.mp4']
           }
 
           this.detailDialogFormData = data;
@@ -377,7 +377,7 @@ export default {
           let data = result.data;
           data.stringDirection = gzDirectionMapping[data.direction] || data.direction;
 
-          data.videoList = ['https://sf1-cdn-tos.huoshanstatic.com/obj/media-fe/xgplayer_doc_video/mp4/xgplayer-demo-480p.mp4'];
+          data.videoList = [];
           if (data.otherConfig) {
             let otherConfig = JSON.parse(data.otherConfig);
             // data.pictures = otherConfig.pictures || [];
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue
index 565ad9d8..f952b135 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/index.vue
@@ -1,12 +1,13 @@
 <template>
   <div class="congestion">
     <div class="board">
-      <ProgressBar class="keep-ratio" @selectItem="selectProgress" :dataList="dataList" :selectIndex="selectIndex" />
+      <ProgressBar class="keep-ratio" @selectItem="selectProgress" :dataList="dataList" :selectIndex="selectIndex"
+        :reset="reset" />
       <div class="searchPanel">
         <RadioGroup :options="[
-          { key: '1', label: '菏泽' },
-          { key: '3', label: '济南' },
-        ]" v-model="direction" type="button" />
+        { key: '1', label: '菏泽' },
+        { key: '3', label: '济南' },
+      ]" v-model="direction" type="button" />
         <el-select v-model="type" size="mini" class="selectRoad" placeholder="请选择" @change="changeType">
           <el-option v-for="item in typeOptions" :key="item.value" :label="item.label" :value="item.value">
           </el-option>
@@ -18,15 +19,16 @@
         </el-select>
         <el-date-picker size="mini" v-if="type != 'quarter'" class="selectRoad" v-model="dateTime" style="width: 140px"
           :type="type == 'date'
-            ? 'date'
-            : type == 'month'
-              ? 'month'
-              : type == 'year'
-                ? 'year'
-                : ''
-            " placeholder="请选择" :clearable="false" />
-
-        <el-button type="primary" size="mini" class="btnSearch" @click="searchQuery" icon="el-icon-search">查询</el-button>
+        ? 'date'
+        : type == 'month'
+          ? 'month'
+          : type == 'year'
+            ? 'year'
+            : ''
+        " placeholder="请选择" :clearable="false" />
+
+        <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>
       </div>
     </div>
@@ -151,6 +153,7 @@ export default {
       dataList: [],
       selectIndex: 2,
       selectId: 2,
+      reset: false,
       type: "year",
       chart1List: [],
       chart2List: [],
@@ -206,16 +209,17 @@ export default {
     selectProgress(item, index) {
       this.selectIndex = index;
       this.selectId = item.id;
+      this.reset = false;
       this.searchQuery();
     },
     onReset() {
       this.direction = "1";
       this.type = "year";
       this.dateTime = "2024";
-      this.selectId = this.dataList[0].id;
       this.selectId = 2;
       this.selectIndex = 2;
-      this.searchQuery()
+      this.reset = true;
+      this.searchQuery();
     },
     searchQuery() {
       let startTime = "";
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/progressBar.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/progressBar.vue
index 5a91de2e..e8c05158 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/progressBar.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/progressBar.vue
@@ -3,9 +3,9 @@
         <div>
             <!-- :style="{ width: dataList.length * 300 }" -->
             <div :class="selectIndex == index ?
-                (selectLine < 1 ? 'item action Abefore' : 'item action Aafter') :
-                (selectIndex + selectLine == index ?
-                    (selectLine < 1 ? 'item action Aafter' : 'item action Abefore') : 'item')"
+                    (selectLine < 1 ? 'item action Abefore' : 'item action Aafter') :
+                    (selectIndex + selectLine == index ?
+                        (selectLine < 1 ? 'item action Aafter' : 'item action Abefore') : 'item')"
                 v-for="(item, index) in dataList" :key="index">
                 <i class="after" v-if="index === 0"></i>
                 <i class="after" v-else @click="selectItem(index, -1, dataList[index - 1])"></i>
@@ -19,7 +19,7 @@
         </div>
     </div>
 </template>
-  
+
 <script>
 
 export default {
@@ -36,6 +36,10 @@ export default {
         selectIndex: {
             type: Number,
             default: 1
+        },
+        reset: {
+            type: Boolean,
+            default: false
         }
     },
     data() {
@@ -46,6 +50,16 @@ export default {
     },
     created() {
 
+    },
+    watch: {
+        reset: {
+            handler(newV) {
+                if (newV) {
+                    this.selectLine = -1;
+                }
+            },
+            immediate: true,
+        },
     },
     methods: {
         selectItem(index, num, item) {
@@ -60,7 +74,7 @@ export default {
     },
 }
 </script>
-  
+
 <style lang='scss' scoped>
 .congestion {
     width: 100%;
@@ -204,5 +218,4 @@ export default {
         }
     }
 }
-</style>
-  
\ No newline at end of file
+</style>
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
index 516e4897..14477d93 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
@@ -57,8 +57,8 @@
                       :key="index"
                     >
                       <div class="title">{{ itm.deviceName }}</div>
-                      <el-tooltip :content="(item.deviceState == 0 || item.deviceState == null) ? '离线' : '在线'" placement="top">
-                        <img src="@/assets/jihe/images/offline.svg" class="state" v-if="item.deviceState==0 || item.deviceState==null">
+                      <el-tooltip :content="(itm.deviceState == 0 || itm.deviceState == null) ? '离线' : '在线'" placement="top">
+                        <img src="@/assets/jihe/images/offline.svg" class="state" v-if="itm.deviceState=='0' || itm.deviceState==null">
                         <img src="@/assets/jihe/images/online.svg" class="state" v-else>
                       </el-tooltip>
                       <el-tooltip content="回读" placement="top">
@@ -455,7 +455,7 @@ export default {
         res.data.forEach((item) => {
           this.boardSizeDic[item.dictValue] = {
             label: item.dictLabel,
-            list: [],
+            list: []
           };
         });
       });
@@ -533,6 +533,7 @@ export default {
             if (_.isString(item.otherConfig)) {
               item.otherConfig = JSON.parse(item.otherConfig);
             }
+            item.iotDeviceId = item.iotDeviceId || "null_" + item.id;
             this.boardSizeDic[item.otherConfig.screenSize].list.push(item);
             if (!this.selectedSize) {
               this.selectedSize = item.otherConfig.screenSize;
@@ -569,7 +570,7 @@ export default {
         this.selectedBdMsg = [];
         this.selectedBdMsg = _.cloneDeep(testDeviceInfo.data["3A"].content);
       } else {
-        if (!deviceFrom.iotDeviceId) {
+        if (!deviceFrom.iotDeviceId || deviceFrom.iotDeviceId.includes("null_")) {
           this.$message.warning("设备未接入!");
           return;
         }
@@ -586,12 +587,16 @@ export default {
       }
     },
     ____onAddTemplate() {
+      
+      // if(selectedSize){
+      //   fontSize = "64px"
+      // }
       this.editDialog = {
         visible: true,
         mode: "add",
         type: "template",
         tpl: {
-          content: "",
+          content: ""
         },
       };
     },
@@ -783,8 +788,8 @@ export default {
         return;
       }
       this.checkedDeviceIds = [arr.pop()];
-      if (!this.checkedDeviceIds[0]) {
-        this.$message.warning("该设备缺少iotDeviceId参数!");
+      if (!this.checkedDeviceIds[0] || this.checkedDeviceIds[0].includes("null_")) {
+        this.$message.warning("设备未接入!");
       }
       this.selectedDevice = _.find(this.boardSizeDic[this.selectedSize].list, {
         iotDeviceId: this.checkedDeviceIds[0],
diff --git a/ruoyi-ui/src/views/JiHeExpressway/utils/enum.js b/ruoyi-ui/src/views/JiHeExpressway/utils/enum.js
index cad7cfc3..208678ee 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/utils/enum.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/utils/enum.js
@@ -40,13 +40,13 @@ export const CameraDirectionEnum = {
   //   text: "上下行 (双向)",
   // },
   1: {
-    text: "上行(菏泽方向)",
+    text: "菏泽方向",
   },
   2: {
     text: "中",
   },
   3: {
-    text: "下行(济南方向)",
+    text: "济南方向",
   },
 };
 
diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js
index 25f5969a..388187f1 100644
--- a/ruoyi-ui/vue.config.js
+++ b/ruoyi-ui/vue.config.js
@@ -51,8 +51,8 @@ module.exports = {
         // target: `http://10.0.81.204:8087`, //现场后台 刘文阁
         // target: `http://10.168.69.255:8087`, //正晨后台 连现场物联 刘文阁
         // target: `http://10.168.78.135:8087`,  //王钦
-        // target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2
-        target: `http://10.168.68.42:8087`, //王思祥
+        target: `http://10.168.66.196:8087`, //正晨后台 连现场物联 刘文阁2
+        // target: `http://10.168.68.42:8087`, //王思祥
         changeOrigin: true,
         pathRewrite: {
           ["^" + process.env.VUE_APP_BASE_API]: "",