From f5e4383c0b5393954c3061850c90df1c415e52b0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Fri, 8 Mar 2024 09:38:55 +0800
Subject: [PATCH 01/10] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=80=BC=E7=8F=AD?=
 =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=88=86=E9=A1=B5=E6=80=BB=E6=9D=A1=E6=95=B0?=
 =?UTF-8?q?=E9=94=99=E8=AF=AF=E7=9A=84=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../event/businessDataManagement/views/dutyOfficer/index.vue    | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue
index c5e3b6cc..5c0b1e6a 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/index.vue
@@ -281,7 +281,7 @@ export default {
 
             return result
           });
-          this.total = result.total;
+          this.setTotal(result.total);
         })
         .finally(() => {
           this.isFirst = false;

From 501abbc6b6a48347879dec9731df2d810222112f Mon Sep 17 00:00:00 2001
From: zhangzhang <1747194829@qq.com>
Date: Mon, 11 Mar 2024 16:50:03 +0800
Subject: [PATCH 02/10] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=9B=BE=E8=A1=A8?=
 =?UTF-8?q?=E6=8F=90=E7=A4=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../channelAnalytics/assets/charts.js         |   5 +-
 .../eventTypeAnalysis/assets/charts.js        |   4 +-
 .../components/postTrendsDay/assets/charts.js |   4 +-
 .../postTrendsMonth/assets/charts.js          |  26 +-
 .../postTrendsMonth/assets/charts2.js         |   6 +-
 .../postTrendsMonth/assets/charts3.js         |   7 +-
 .../RoadSectionTolls/assets/charts.js         |  17 +-
 .../components/daylyAnalysis/assets/charts.js | 205 +++++------
 .../monthlyAnalysis/assets/charts.js          | 139 ++++---
 .../chargeableOperations/index.vue            | 343 +++++++++---------
 .../TemperatureTrend/assets/charts.js         |   3 +
 .../visibilityTrends/assets/charts.js         |   8 +-
 .../changesIndicators/assets/charts3.js       |   5 +-
 .../auditAnalytics/assets/charts.js           |   4 +-
 .../channelAnalytics/assets/charts.js         |   4 +-
 .../eventTypeAnalysis/assets/charts.js        |   4 +-
 .../nucleusThrough/assets/charts3.js          |  14 +-
 .../components/nucleusThrough/index.vue       |   2 +-
 .../components/postTrendsDay/assets/charts.js |   3 +
 .../postTrendsMonth/assets/charts.js          |   3 +
 .../components/postTrendsMonth/index.vue      |   2 +-
 21 files changed, 399 insertions(+), 409 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/assets/charts.js
index a18985fa..aafb53e0 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/assets/charts.js
@@ -65,8 +65,9 @@ var options = {
   },
   tooltip: {
     show: true,
-    // trigger: "item",
-    // formatter: "{b} : {c}",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     width: "300px",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/assets/charts.js
index cb3b31d3..71eb3844 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/assets/charts.js
@@ -81,7 +81,9 @@ var options = {
   tooltip: {
     show: true,
     trigger: "item",
-    // formatter: "{b} : {c}:{d}",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     width: "300px",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsDay/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsDay/assets/charts.js
index ff0b4cf9..af418882 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsDay/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsDay/assets/charts.js
@@ -3,7 +3,9 @@ var options = {
   tooltip: {
     show: true,
     trigger: "axis",
-    // formatter: "{b}:{c}人",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     icon: "circle",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts.js
index 28433ebe..28f57d2a 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts.js
@@ -23,14 +23,14 @@ let options = {
       // 坐标轴指示器,坐标轴触发有效
       type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
     },
-    // backgroundColor: "rgba(3, 31, 71, .0)", //设置背景颜色
-    // borderColor: "rgba(3, 31, 71, .0)",
-    // formatter: "健康监测<br>{b}:{c}人",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   grid: {
     left: "0",
     right: "0",
-    top: "70px",
+    top: "90px",
     bottom: "20px",
     containLabel: true,
   },
@@ -61,9 +61,12 @@ let options = {
   },
   yAxis: [
     {
-      // max: 900,
-      // min: 0,
-      // interval: 100,
+      name: "(起)",
+      nameTextStyle: {
+        color: "#E5E7E8",
+        fomtSize: 10,
+        align: "right",
+      },
       axisLine: {
         lineStyle: {
           color: "#1C82C5",
@@ -87,9 +90,12 @@ let options = {
       },
     },
     {
-      // max: 90,
-      // min: 60,
-      // interval: 10,
+      name: "  (分钟)",
+      nameTextStyle: {
+        color: "#E5E7E8",
+        fomtSize: 10,
+        align: "center",
+      },
       axisLine: {
         show: false,
         // lineStyle: {
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts2.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts2.js
index fffb4ddc..ee01021c 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts2.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts2.js
@@ -5,11 +5,13 @@ let options = {
   tooltip: {
     show: true,
     trigger: "axis",
-    // formatter: "{b}:{c}人",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   grid: {
     right: "4%",
-    top: "20%",
+    top: "90px",
     left: "2%",
     bottom: "0%",
     containLabel: true,
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts3.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts3.js
index 7dc5ed46..83691ff5 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts3.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/assets/charts3.js
@@ -23,10 +23,9 @@ var options = {
   },
   tooltip: {
     show: true,
-    // valueFormatter: function (value) {
-    //   return value;
-    //   // return (value + minNumber).toFixed(2) + " %";
-    // },
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     // orient: 'vertical',
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js
index 095d0d97..6232da6c 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/RoadSectionTolls/assets/charts.js
@@ -21,16 +21,13 @@ let options = {
   },
   tooltip: {
     trigger: "axis",
-    //  axisPointer: {
-    //    type: "shadow",
-    //  },
-    // backgroundColor: "rgba(255,255,255,0.75)",
-    // extraCssText: "box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.3);",
-    //  textStyle: {
-    //    fontSize: 14,
-    //    color: "#000",
-    //  },
-    //  formatter: "{a}<br/>{b} :\n\n{c} ",
+    formatter: function (params) {
+      if (params[0].seriesName == "收费金额") {
+        return `<div>${params[0].marker} ${params[0].name} <span style="font-weight: bold;">${params[0].value} 万元</span></div>`;
+      } else {
+        return `<div>${params[0].marker} ${params[0].name} <span style="font-weight: bold;">${params[0].value} 万辆</span></div>`;
+      }
+    },
   },
   legend: {
     top: 10,
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/daylyAnalysis/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/daylyAnalysis/assets/charts.js
index 14c97212..51095a7b 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/daylyAnalysis/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/daylyAnalysis/assets/charts.js
@@ -4,20 +4,14 @@ var data1 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15];
 var data2 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15];
 var options = {
   tooltip: {
-    // trigger: "axis",
-    // backgroundColor: 'rgba(17,95,182,0.5)',
-    // textStyle: {
-    //   color: "#fff"
-    // },
-    // formatter: function (params) {
-    //   return params[1].marker + '' + params[1].name + '\n' +
-    //     "<div>" +
-    //     "<span style='display:inline-block;border-radius:1px;width:10px;height:10px;background-color:#007AFF;option:0.5'></span>" +
-    //     "<span style=''> " + params[1].seriesName + ': ' + params[1].value + "\n" + ' </span>' +
-    //     "</div>" +
-    //     "<span style='display:inline-block;border-radius:1px;width:10px;height:10px;background-color:#FF9B61;'></span>" +
-    //     '' + "<span style=''> " + params[3].seriesName + ': ' + params[3].value;
-    // }
+    formatter: function (params) {
+      console.log("params", params);
+      if (params.seriesName == "增收金额") {
+        return `<div>${params.marker} ${params.name} <span style="font-weight: bold;">${params.value} 万元</span></div>`;
+      } else {
+        return `<div>${params.marker} ${params.name} <span style="font-weight: bold;">${params.value} %</span></div>`;
+      }
+    },
   },
   grid: {
     left: "5%",
@@ -67,11 +61,11 @@ var options = {
   },
   yAxis: [
     {
-      min: 0,
-      max: 18,
+      // min: 0,
+      // max: 18,
       type: "value",
-      minInterval: 3,
-      maxInterval: 3,
+      // minInterval: 3,
+      // maxInterval: 3,
       name: "(单位:万)",
       nameTextStyle: {
         align: "left",
@@ -105,17 +99,9 @@ var options = {
       data: ["0", "3", "6", "9", "12", "15", "18"],
     },
     {
-      show: true,
+      // show: true,
       name: "",
-      min: 0,
-      max: 18,
       type: "value",
-      minInterval: 3,
-      maxInterval: 3,
-      splitNumber: 3,
-      formatter: function (e) {
-        console.log("---------------", e);
-      },
       nameTextStyle: {
         align: "left",
         color: "rgba(255,255,255,0.8)",
@@ -187,7 +173,8 @@ var options = {
       itemStyle: {
         // lenged文本
         opacity: 1,
-        borderCap: "round",
+        barBorderRadius: [13, 13, 13, 13],
+        // borderCap: "round",
         color: function (params) {
           var a = params.name.slice(0, 2);
           return new echarts.graphic.LinearGradient(
@@ -202,7 +189,7 @@ var options = {
               },
               {
                 offset: 1,
-                color: "#2CAEE3", // 100% 处的颜色
+                color: "#003B4E", // 100% 处的颜色
               },
             ],
             false
@@ -213,40 +200,40 @@ var options = {
       data: data1,
     },
 
-    {
-      name: "",
-      type: "pictorialBar",
-      symbolSize: [12, 12],
-      symbolOffset: [0, -4],
-      z: 5,
-      itemStyle: {
-        opacity: 1,
-        borderCap: "round",
-        color: function (params) {
-          var a = params.name.slice(0, 2);
+    // {
+    //   name: "",
+    //   type: "pictorialBar",
+    //   symbolSize: [12, 12],
+    //   symbolOffset: [0, -4],
+    //   z: 5,
+    //   itemStyle: {
+    //     opacity: 1,
+    //     borderCap: "round",
+    //     color: function (params) {
+    //       var a = params.name.slice(0, 2);
 
-          return new echarts.graphic.LinearGradient(
-            0,
-            0,
-            0,
-            1,
-            [
-              {
-                offset: 0,
-                color: "#0BA7DA", // 0% 处的颜色
-              },
-              {
-                offset: 1,
-                color: "#0BA7DA30", // 100% 处的颜色
-              },
-            ],
-            false
-          );
-        },
-      },
-      symbolPosition: "end",
-      data: data1,
-    },
+    //       return new echarts.graphic.LinearGradient(
+    //         0,
+    //         0,
+    //         0,
+    //         1,
+    //         [
+    //           {
+    //             offset: 0,
+    //             color: "#0BA7DA", // 0% 处的颜色
+    //           },
+    //           {
+    //             offset: 1,
+    //             color: "#0BA7DA30", // 100% 处的颜色
+    //           },
+    //         ],
+    //         false
+    //       );
+    //     },
+    //   },
+    //   symbolPosition: "end",
+    //   data: data1,
+    // },
     {
       name: "增涨率",
       z: 9,
@@ -270,54 +257,54 @@ var options = {
       },
     },
 
-    {
-      name: "",
-      type: "bar",
-      barWidth: 12,
-      barGap: "-100%",
-      z: 0,
-      itemStyle: {
-        borderCap: "round",
-        color: "#163F7A",
-        opacity: 0.7,
-      },
-      data: [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18],
-    },
-    {
-      name: "",
-      type: "pictorialBar",
-      symbolSize: [12, 12],
-      symbolOffset: [0, -5],
-      z: 5,
-      itemStyle: {
-        barBorderRadius: [13, 13, 13, 13],
-        opacity: 1,
-        borderCap: "round",
-        color: function (params) {
-          var a = params.name.slice(0, 2);
+    // {
+    //   name: "",
+    //   type: "bar",
+    //   barWidth: 12,
+    //   barGap: "-100%",
+    //   z: 0,
+    //   itemStyle: {
+    //     borderCap: "round",
+    //     color: "#163F7A",
+    //     opacity: 0.7,
+    //   },
+    //   data: [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18],
+    // },
+    // {
+    //   name: "",
+    //   type: "pictorialBar",
+    //   symbolSize: [12, 12],
+    //   symbolOffset: [0, -5],
+    //   z: 5,
+    //   itemStyle: {
+    //     barBorderRadius: [13, 13, 13, 13],
+    //     opacity: 1,
+    //     borderCap: "round",
+    //     color: function (params) {
+    //       var a = params.name.slice(0, 2);
 
-          return new echarts.graphic.LinearGradient(
-            0,
-            0,
-            0,
-            1,
-            [
-              {
-                offset: 0,
-                color: "#2CAEE3", // 0% 处的颜色
-              },
-              {
-                offset: 1,
-                color: "#2CAEE3", // 100% 处的颜色
-              },
-            ],
-            false
-          );
-        },
-      },
-      symbolPosition: "end",
-      data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
-    },
+    //       return new echarts.graphic.LinearGradient(
+    //         0,
+    //         0,
+    //         0,
+    //         1,
+    //         [
+    //           {
+    //             offset: 0,
+    //             color: "#2CAEE3", // 0% 处的颜色
+    //           },
+    //           {
+    //             offset: 1,
+    //             color: "#2CAEE3", // 100% 处的颜色
+    //           },
+    //         ],
+    //         false
+    //       );
+    //     },
+    //   },
+    //   symbolPosition: "end",
+    //   data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+    // },
   ],
 };
 
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/monthlyAnalysis/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/monthlyAnalysis/assets/charts.js
index 09d1e5cc..847c5128 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/monthlyAnalysis/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/components/monthlyAnalysis/assets/charts.js
@@ -4,21 +4,15 @@ var data1 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15];
 var data2 = [5, 12, 4, 6, 7, 9, 10, 15, 3, 5, 6, 15];
 var options = {
   tooltip: {
-    show:true
-    // trigger: "axis",
-    // backgroundColor: 'rgba(17,95,182,0.5)',
-    // textStyle: {
-    //   color: "#fff"
-    // },
-    // formatter: function (params) {
-    //   return params[1].marker + '' + params[1].name + '\n' +
-    //     "<div>" +
-    //     "<span style='display:inline-block;border-radius:1px;width:10px;height:10px;background-color:#007AFF;option:0.5'></span>" +
-    //     "<span style=''> " + params[1].seriesName + ': ' + params[1].value + "\n" + ' </span>' +
-    //     "</div>" +
-    //     "<span style='display:inline-block;border-radius:1px;width:10px;height:10px;background-color:#FF9B61;'></span>" +
-    //     '' + "<span style=''> " + params[3].seriesName + ': ' + params[3].value;
-    // }
+    show: true,
+    formatter: function (params) {
+      console.log("params", params);
+      if (params.seriesName == "增收金额") {
+        return `<div>${params.marker} ${params.name} <span style="font-weight: bold;">${params.value} 万元</span></div>`;
+      } else {
+        return `<div>${params.marker} ${params.name} <span style="font-weight: bold;">${params.value} %</span></div>`;
+      }
+    },
   },
   grid: {
     left: "5%",
@@ -68,10 +62,11 @@ var options = {
   },
   yAxis: [
     {
-      min: 0,
-      max: 18,
-      minInterval: 1,
-      maxInterval: 1,
+      // min: 0,
+      // max: 18,
+      // minInterval: 1,
+      // maxInterval: 1,
+      type: "value",
       name: "(单位:万)",
       nameTextStyle: {
         align: "left",
@@ -107,9 +102,9 @@ var options = {
     {
       show: true,
       name: "",
-      min: 0,
-      max: 18,
-      splitNumber: 3,
+      // min: 0,
+      // max: 18,
+      // splitNumber: 3,
       nameTextStyle: {
         align: "left",
         color: "rgba(255,255,255,0.8)",
@@ -207,45 +202,46 @@ var options = {
       data: data1,
     },
 
-    {
-      name: "",
-      type: "pictorialBar",
-      symbolSize: [12, 12],
-      symbolOffset: [0, -4],
-      z: 5,
-      itemStyle: {
-        opacity: 1,
-        color: function (params) {
-          var a = params.name.slice(0, 2);
+    // {
+    //   name: "",
+    //   type: "pictorialBar",
+    //   symbolSize: [12, 12],
+    //   symbolOffset: [0, -4],
+    //   z: 5,
+    //   itemStyle: {
+    //     opacity: 1,
+    //     color: function (params) {
+    //       var a = params.name.slice(0, 2);
 
-          return new echarts.graphic.LinearGradient(
-            0,
-            0,
-            0,
-            1,
-            [
-              {
-                offset: 0,
-                color: "#00E4BB", // 0% 处的颜色
-              },
-              {
-                offset: 1,
-                color: "#00E4BB30", // 100% 处的颜色
-              },
-            ],
-            false
-          );
-        },
-      },
-      symbolPosition: "end",
-      data: data1,
-      tooltip: {
-        show:false}
-    },
+    //       return new echarts.graphic.LinearGradient(
+    //         0,
+    //         0,
+    //         0,
+    //         1,
+    //         [
+    //           {
+    //             offset: 0,
+    //             color: "#00E4BB", // 0% 处的颜色
+    //           },
+    //           {
+    //             offset: 1,
+    //             color: "#00E4BB30", // 100% 处的颜色
+    //           },
+    //         ],
+    //         false
+    //       );
+    //     },
+    //   },
+    //   symbolPosition: "end",
+    //   data: data1,
+    //   tooltip: {
+    //     show: false,
+    //   },
+    // },
     {
       name: "增涨率",
       z: 9,
-      yAxisIndex: 1,
+      // yAxisIndex: 1,
       type: "line",
       data: data2,
       symbol:
@@ -261,20 +257,21 @@ var options = {
       },
     },
 
-    {
-      name: "",
-      type: "bar",
-      barWidth: 12,
-      barGap: "-100%",
-      z: 0,
-      itemStyle: {
-        color: "#163F7A",
-        opacity: 0.7,
-      },
-      data: [18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18],
-      tooltip: {
-        show:false}
-    },
+    // {
+    //   name: "",
+    //   type: "bar",
+    //   barWidth: 12,
+    //   barGap: "-100%",
+    //   z: 0,
+    //   itemStyle: {
+    //     color: "#163F7A",
+    //     opacity: 0.7,
+    //   },
+    //   data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+    //   tooltip: {
+    //     show: false,
+    //   },
+    // },
   ],
 };
 
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/index.vue
index 44a6ea8f..89ea269f 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/maintenanceOperations/chargeableOperations/index.vue
@@ -1,196 +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 class="TrafficFlow">
+    <section class="foot">
+      <div class="content">
+        <div class="content-l">
+          <RoadNetwork />
+          <LaneTolls />
         </div>
-      </section>
-      <section class="foot">
-        <div class="content " >
-            <MonthlyAnalysis  class="content-mi" />
-            <DaylyAnalysis class="content-mi" />
+        <div class="content-l">
+          <VehicleTolls />
+          <TruckLaneTolls />
         </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(){
-         
-      }
-    }
-    
+        <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;
   }
-  </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 {
-      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-l {
+      width: calc(32.2%);
+      margin-right: 20px;
+      display: inline-flex;
+      flex-direction: column;
 
-      .content-r {
-        width: calc(33%);
-        display: inline-flex;
+      > div {
+        margin-bottom: 15px;
       }
+    }
 
-      .content-rm {
-        width: calc(33%);
-        margin-right:10px;
-      }
+    .content-r {
+      width: calc(33%);
+      display: inline-flex;
+    }
 
-      .content-mi {
-        width: calc(50%);
-     
-        margin-right:20px;
-      }
+    .content-rm {
+      width: calc(33%);
+      margin-right: 10px;
+    }
 
-      .content-mi:last-child {
-        margin-right:10px;
-      }
-  
-  
-      .content-m {
-        display: inline-flex;
-        width: 66%;
-        margin-right:20px;
-      }
+    .content-mi {
+      width: calc(50%);
 
-    
+      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;
-      }
+    .content-mi:last-child {
+      margin-right: 10px;
+    }
 
-      .foot-w {
-        width:100%;
+    .content-m {
+      display: inline-flex;
+      width: 66%;
+      margin-right: 20px;
+    }
+  }
 
-      }
-  
-      .foot-l {
-        width: 726px;
-      }
-      .foot-m {
-        width: 613px;
-      }
-      .foot-r {
-        width: 493px;
-      }
+  .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>
-  
\ No newline at end of file
+}
+</style>
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/TemperatureTrend/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/TemperatureTrend/assets/charts.js
index 5e5374bf..16c8f473 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/TemperatureTrend/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/TemperatureTrend/assets/charts.js
@@ -3,6 +3,9 @@ var options = {
   tooltip: {
     show: true,
     trigger: "axis",
+    valueFormatter: function (value) {
+      return value + " ℃";
+    },
   },
   color: "#FFD15C",
   grid: {
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/visibilityTrends/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/visibilityTrends/assets/charts.js
index 7f20425c..f44f97da 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/visibilityTrends/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/meteorologyCheck/components/weatherInfoQuery/components/visibilityTrends/assets/charts.js
@@ -4,11 +4,9 @@ var options = {
   tooltip: {
     show: true,
     trigger: "axis",
-    // backgroundColor: "rgba(0,0,0,.6)",
-    // borderColor: "rgba(147, 235, 248, .8)",
-    // textStyle: {
-    //    color: "#FFF",
-    // },
+    valueFormatter: function (value) {
+      return value + " M";
+    },
   },
   grid: {
     left: "0",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/assets/charts3.js b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/assets/charts3.js
index 8ae7a4b2..5a0bfc22 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/assets/charts3.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorAnalysis/components/changesIndicators/assets/charts3.js
@@ -21,6 +21,9 @@ let options = {
   tooltip: {
     show: true,
     trigger: "item",
+    valueFormatter: function (value) {
+      return value + " 指标";
+    },
   },
   grid: {
     left: 0,
@@ -57,7 +60,7 @@ let options = {
   yAxis: [
     {
       min: 0,
-      name: '(指标)',
+      name: "(指标)",
       nameTextStyle: {
         color: "#fff",
         fontSize: 10,
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js
index 8ab49afe..1013bb11 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js
@@ -70,7 +70,9 @@ var options = {
   },
   tooltip: {
     trigger: "item",
-    // formatter: '{b} : {c}:{d}'
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     orient: "vertical",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js
index 435b6e5b..d73c12da 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js
@@ -71,7 +71,9 @@ var options = {
   },
   tooltip: {
     trigger: "item",
-    // formatter: "{b} : {c}:{d}",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     orient: "vertical",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js
index 6b71da75..7359dcad 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js
@@ -97,7 +97,9 @@ var options = {
   },
   tooltip: {
     trigger: "item",
-    // formatter: "{b} : {c}:{d}",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     orient: "vertical",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js
index edac1849..9676e228 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/assets/charts3.js
@@ -21,17 +21,9 @@ let options = {
   tooltip: {
     show: true,
     trigger: "axis",
-    // axisPointer: {
-    //   // 坐标轴指示器,坐标轴触发有效
-    //   type: "shadow", // 默认为直线,可选为:'line' | 'shadow'
-    // },
-    // textStyle: {
-    //   color: "#fff",
-    //   fontSize: 14,
-    // },
-    // backgroundColor: "rgba(3, 31, 71, .0)", //设置背景颜色
-    // borderColor: "rgba(3, 31, 71, .0)",
-    // formatter: "健康监测<br>{b1}:{c1}人",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   grid: {
     left: "0",
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue
index ebc29771..42d071a2 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/nucleusThrough/index.vue
@@ -97,7 +97,7 @@ export default {
       margin-bottom: 10px;
       left: 20px;
       top: 2px;
-      z-index: 100000;
+      z-index: 0;
 
       div {
         white-space: nowrap;
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js
index 9991db10..e33b1f3d 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsDay/assets/charts.js
@@ -62,6 +62,9 @@ var options = {
   tooltip: {
     show: true,
     trigger: "axis",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     // orient: 'vertical',
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js
index c0b1c0e7..1b52e691 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/assets/charts.js
@@ -62,6 +62,9 @@ var options = {
   tooltip: {
     show: true,
     trigger: "axis",
+    valueFormatter: function (value) {
+      return value + " 起";
+    },
   },
   legend: {
     // orient: 'vertical',
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue
index 57d54279..aeace05d 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/postTrendsMonth/index.vue
@@ -99,7 +99,7 @@ export default {
       margin-bottom: 10px;
       left: 20px;
       top: 2px;
-      z-index: 100;
+      z-index: 0;
 
       div {
         white-space: nowrap;

From 2dba018b9c04c4fe71bbc533a6d825411c1381b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Mon, 11 Mar 2024 17:06:03 +0800
Subject: [PATCH 03/10] =?UTF-8?q?=E8=BE=96=E6=AE=B5=E7=AE=A1=E7=90=86,?=
 =?UTF-8?q?=E9=87=8C=E7=A8=8B=E8=81=94=E5=8A=A8=E8=AE=A1=E7=AE=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../views/emergencyAgencies/index.vue         |  5 +-
 .../views/jurisdictionalManagement/data.js    | 51 ++++++++++++++++++-
 2 files changed, 51 insertions(+), 5 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue
index 98f6f6a5..d3bea36a 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue
@@ -157,7 +157,6 @@ export default {
         params: {},
       })
         .then(({ data, code }) => {
-          console.log("Success", data);
           if (code != 200) return; //Message.error("详情获取失败");
           this.vehicleTypeList = data;
         })
@@ -223,7 +222,6 @@ export default {
               if (item.car.length > 0) {
                 for (var i = 0; i < item.car.length; i++) {
                   if (item.car[i].vehicleType == items.dictValue) {
-                    // let data =
                     data.push(items.dictLabel + "*" + item.car[i].carNum);
                     // item.cars = items.dictLabel + "*" + item.car[i].carNum;
                   }
@@ -231,8 +229,7 @@ export default {
               }
             });
           });
-          console.log(999, this.dataList);
-          console.log(999, data);
+          
           this.dataList.forEach((item) => {
             if (item.car.length > 0) {
               item.cars = data.join("、");
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js
index 23793e1f..88ca4ce7 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/data.js
@@ -1,11 +1,20 @@
 import { cloneDeep, merge } from "lodash";
 import * as PresetFormItems from "@screen/common/PresetFormItems.js";
+import { formList } from "../../../dispatch/EventDetailDialog/data";
 
 export const searchFormList = [
   PresetFormItems.startStation,
   PresetFormItems.endStation
 ];
 
+//里程计算
+const mileCal = (data) => {
+  const { startStakeMark, endStakeMark } = data;
+  const start = startStakeMark[0] + "." + Number(startStakeMark[1]);
+  const end = endStakeMark[0] + "." + Number(endStakeMark[1]);
+  data.mileage = (Number(end) - Number(start)).toFixed(3);
+}
+
 export const addEditFormList = [
   {
     label: "部门:",
@@ -38,11 +47,51 @@ export const addEditFormList = [
 
   merge(cloneDeep(PresetFormItems.startStation), {
     required: true,
+    options: {
+      options: [
+        {
+          ons: {
+            input(value, ...args) {
+              const { data, formList } = args.slice(-1)[0];
+              mileCal(data);
+            }
+          },
+        },
+        {
+          ons: {
+            input(value, ...args) {
+              const { data, formList } = args.slice(-1)[0];
+              mileCal(data);
+            }
+          },
+        },
+      ]
+    }
   }),
   merge(cloneDeep(PresetFormItems.endStation), {
     required: true,
+    options: {
+      options: [
+        {
+          ons: {
+            input(value, ...args) {
+              const { data, formList } = args.slice(-1)[0];
+              mileCal(data);
+            }
+          },
+        },
+        {
+          ons: {
+            input(value, ...args) {
+              const { data, formList } = args.slice(-1)[0];
+              mileCal(data);
+            }
+          },
+        },
+      ]
+    }
   }),
-  
+
   {
     label: "辖区路段编号:",
     key: "roadCode",

From 582f41aac754e1173ad64c498562789898b621c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Mon, 11 Mar 2024 17:11:38 +0800
Subject: [PATCH 04/10] =?UTF-8?q?=E5=BA=94=E6=80=A5=E6=9C=BA=E6=9E=84?=
 =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=95=91=E6=8F=B4=E5=8D=95=E4=BD=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../views/emergencyAgencies/components/AddNEditDialog.vue | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue
index beb6c59b..b6094c66 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue
@@ -133,10 +133,10 @@ export default {
             ]
           }
         }),
-        {
-          label: "救援单位:",
-          key: "rescueUnit"
-        },
+        // {
+        //   label: "救援单位:",
+        //   key: "rescueUnit"
+        // },
         {
           label: "描述:",
           key: "description",

From 350531edbc26fd17ef37b5ff79bb6881654a4a19 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Mon, 11 Mar 2024 17:28:41 +0800
Subject: [PATCH 05/10] =?UTF-8?q?=E5=BA=94=E6=80=A5=E4=BA=BA=E5=91=98,?=
 =?UTF-8?q?=E6=9C=BA=E6=9E=84,=E8=BF=94=E5=9B=9E=E6=95=B0=E6=8D=AE?=
 =?UTF-8?q?=E4=B8=AD=E5=8E=BB=E6=8E=89=20=E6=B5=8E=E8=8F=8F=E8=BF=90?=
 =?UTF-8?q?=E7=AE=A1=E4=B8=AD=E5=BF=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../views/firstResponders/components/AddNEditDialog.vue       | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/components/AddNEditDialog.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/components/AddNEditDialog.vue
index ace3ad75..068d724d 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/components/AddNEditDialog.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/firstResponders/components/AddNEditDialog.vue
@@ -115,8 +115,8 @@ export default {
           data: {}
         }),
 
-        // 机构
-        getSelectOptionsStation()
+        // 机构,返回数据中去掉 济菏运管中心
+        getSelectOptionsStation(2)
 
       ])
         .then(([post, organization]) => {

From 1459bb69f93d38cd439cd4abf7a7053d01428784 Mon Sep 17 00:00:00 2001
From: zhangzhang <1747194829@qq.com>
Date: Mon, 11 Mar 2024 18:14:34 +0800
Subject: [PATCH 06/10] =?UTF-8?q?=E6=9B=B4=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../components/AddNEditDialog.vue             | 207 ++++++++------
 .../views/emergencyAgencies/index.vue         |   7 +-
 .../components/postTrendsMonth/index.vue      |   2 +-
 .../components/eventQuery/assets/charts2.js   |   4 +-
 .../components/eventQuery/index.vue           | 256 +++++++++++++-----
 5 files changed, 309 insertions(+), 167 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue
index b6094c66..f832ace3 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/components/AddNEditDialog.vue
@@ -1,48 +1,56 @@
 <template>
   <Dialog v-model="modelVisible" :title="data ? '修改' : '新增'">
-    <div class='AddNEditDialog'>
-      <Form v-model="formData" class="form" ref="FormConfigRef" :formList="formList" column="1" labelWidth="90px" />
+    <div class="AddNEditDialog">
+      <Form
+        v-model="formData"
+        class="form"
+        ref="FormConfigRef"
+        :formList="formList"
+        column="1"
+        labelWidth="90px"
+      />
     </div>
 
     <template #footer>
-      <Button style="background-color: rgba(0, 179, 204, .3);" @click.native="modelVisible = false, submitting = false">
+      <Button
+        style="background-color: rgba(0, 179, 204, 0.3)"
+        @click.native="(modelVisible = false), (submitting = false)"
+      >
         取消
       </Button>
-      <Button @click.native="handleSubmit" :loading="submitting">
-        确定
-      </Button>
+      <Button @click.native="handleSubmit" :loading="submitting"> 确定 </Button>
     </template>
   </Dialog>
 </template>
 
 <script>
 import Dialog from "@screen/components/Dialog/index.vue";
-import Button from "@screen/components/Buttons/Button.vue"
-import Form from '@screen/components/FormConfig';
+import Button from "@screen/components/Buttons/Button.vue";
+import Form from "@screen/components/FormConfig";
 
 import * as PresetFormItems from "@screen/common/PresetFormItems.js";
 import request from "@/utils/request";
-import { CameraDirectionEnumList } from "@screen/utils/enum.js"
+import { CameraDirectionEnumList } from "@screen/utils/enum.js";
 import { Message } from "element-ui";
-import { cloneDeep, merge } from 'lodash';
+import { cloneDeep, merge } from "lodash";
 import { getSelectOptionsStation } from "@screen/pages/control/event/businessDataManagement/utils.js";
 
 export default {
-  name: 'AddNEditDialog',
+  name: "AddNEditDialog",
   components: {
     Dialog,
     Button,
-    Form
+    Form,
   },
   model: {
-    prop: 'visible',
-    event: "update:value"
+    prop: "visible",
+    event: "update:value",
   },
   props: {
     visible: Boolean,
-    data: Object
+    data: Object,
   },
-  inject: ['setCurrentPage'],
+  inject: ["setCurrentPage"],
   data() {
     return {
       submitting: false,
@@ -51,11 +59,11 @@ export default {
         {
           label: "父级:",
           key: "parentId",
-          type: 'select',
+          type: "select",
           options: {
             clearable: false,
-            options: []
-          }
+            options: [],
+          },
         },
         // {
         //   label: "机构类型2233:",
@@ -89,16 +97,16 @@ export default {
         {
           label: "机构名称:",
           key: "organizationName",
-          required: true
+          required: true,
         },
         {
           label: "方向:",
           key: "direction",
           required: true,
-          type: 'select',
+          type: "select",
           options: {
             options: [CameraDirectionEnumList[0], CameraDirectionEnumList[2]],
-          }
+          },
         },
         {
           label: "地址:",
@@ -113,25 +121,27 @@ export default {
                   {
                     message: "请补全桩号",
                     callback(value, data) {
-                      if (!value?.trim() && data.stakeMark[1]?.trim()) return false
-                      else return true
-                    }
-                  }
-                ]
+                      if (!value?.trim() && data.stakeMark[1]?.trim())
+                        return false;
+                      else return true;
+                    },
+                  },
+                ],
               },
               {
                 rules: [
                   {
                     message: "请补全桩号",
                     callback(value, data) {
-                      if (!value?.trim() && data.stakeMark[0]?.trim()) return false
-                      else return true
-                    }
-                  }
-                ]
+                      if (!value?.trim() && data.stakeMark[0]?.trim())
+                        return false;
+                      else return true;
+                    },
+                  },
+                ],
               },
-            ]
-          }
+            ],
+          },
         }),
         // {
         //   label: "救援单位:",
@@ -148,19 +158,19 @@ export default {
             autosize: { minRows: 6, maxRows: 6 },
             showWordLimit: true,
           },
-        }
-      ]
-    }
+        },
+      ],
+    };
   },
   computed: {
     modelVisible: {
       get() {
-        return this.visible
+        return this.visible;
       },
       set(val) {
-        this.$emit('update:value', val)
-      }
-    }
+        this.$emit("update:value", val);
+      },
+    },
   },
   watch: {
     modelVisible: {
@@ -168,72 +178,89 @@ export default {
       handler(bool) {
         if (!bool) return;
 
-        this.formData =
-          !this.data ? null : {
-            "parentId": this.data.dcOrganizations.parentId,
-            // "organizationType": this.data.dcOrganizations.organizationType,
-            "organizationName": this.data.dcOrganizations.organizationName,
-            "direction": this.data.dcOrganizations.direction,
-            "organizationAddress": this.data.dcOrganizations.organizationAddress,
-            "stakeMark": this.data.dcOrganizations.stakeMark ? [...(this.data.dcOrganizations.stakeMark || "").match(/[0-9]+/g)] : ["", ""],
-            "rescueUnit": this.data.dcOrganizations.rescueUnit,
-            "description": this.data.dcOrganizations.description
-          }
-
-        this.getOptions();
-      }
-    }
+        this.formData = !this.data
+          ? null
+          : {
+              parentId: this.data.dcOrganizations.parentId,
+              // "organizationType": this.data.dcOrganizations.organizationType,
+              organizationName: this.data.dcOrganizations.organizationName,
+              direction: this.data.dcOrganizations.direction,
+              organizationAddress:
+                this.data.dcOrganizations.organizationAddress,
+              stakeMark: this.data.dcOrganizations.stakeMark
+                ? [
+                    ...(this.data.dcOrganizations.stakeMark || "").match(
+                      /[0-9]+/g
+                    ),
+                  ]
+                : ["", ""],
+              rescueUnit: this.data.dcOrganizations.rescueUnit,
+              description: this.data.dcOrganizations.description,
+            };
+      },
+    },
   },
   methods: {
     async getOptions() {
-
       const result = await getSelectOptionsStation(1);
 
       this.formList[0].options.options = result;
-      this.formList[0].default = result[0]?.key;
+      this.formList[0].default = result[0].key;
+      this.formList[0].options.options.push({
+        disabled: false,
+        key: 0,
+        label: "无",
+      });
+      console.log(this.formList[0].options.options);
     },
     handleSubmit() {
-      this.$refs.FormConfigRef.validate()
-        .then((data) => {
-          this.submitting = true;
+      this.$refs.FormConfigRef.validate().then((data) => {
+        this.submitting = true;
 
-          if (this.data) data.id = this.data.dcOrganizations.id;
+        if (this.data) data.id = this.data.dcOrganizations.id;
 
-          if (typeof data.parentId != 'number') data.parentId = 0;
-          if (data.stakeMark[0]) {
-            data.stakeMark = `K${data.stakeMark[0]}+${data.stakeMark[1]}`;
-          }else{
-            data.stakeMark = '';
-          }
+        if (typeof data.parentId != "number") data.parentId = 0;
+        if (data.stakeMark[0]) {
+          data.stakeMark = `K${data.stakeMark[0]}+${data.stakeMark[1]}`;
+        } else {
+          data.stakeMark = "";
+        }
 
-          request({
-            url: `/business/organization`,
-            method: this.data ? 'PUT' : 'POST',
-            data
-          })
-            .then(result => {
-              if (result.code != 200) return Message.error(`提交失败!`);
+        request({
+          url: `/business/organization`,
+          method: this.data ? "PUT" : "POST",
+          data,
+        })
+          .then((result) => {
+            if (result.code != 200) return Message.error(`提交失败!`);
 
-              Message.success(`提交成功!`);
+            Message.success(`提交成功!`);
 
-              this.modelVisible = false;
+            this.modelVisible = false;
 
-              this.setCurrentPage(1)
-            })
-            .catch((err) => {
-              console.log("%c [ err ]-110-「DeviceControlDialog.vue」", "font-size:15px; background:#547bf2; color:#98bfff;", err);
-              Message.error(`提交失败!`);
-            })
-            .finally(() => {
-              this.submitting = false;
-            })
-        })
-    }
+            this.setCurrentPage(1);
+          })
+          .catch((err) => {
+            console.log(
+              "%c [ err ]-110-「DeviceControlDialog.vue」",
+              "font-size:15px; background:#547bf2; color:#98bfff;",
+              err
+            );
+            Message.error(`提交失败!`);
+          })
+          .finally(() => {
+            this.submitting = false;
+          });
+      });
+    },
   },
-}
+  mounted() {
+    this.getOptions();
+  },
+};
 </script>
 
-<style lang='scss' scoped>
+<style lang="scss" scoped>
 .AddNEditDialog {
   width: 450px;
   display: flex;
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue
index d3bea36a..98d242aa 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/emergencyAgencies/index.vue
@@ -131,11 +131,11 @@ export default {
         // },
         {
           key: "cars",
-          label: "驻点车辆",
+          label: "应急车辆",
         },
         {
           key: "employeesNum",
-          label: "驻点人员",
+          label: "应急人员",
           suffix: "人",
         },
       ],
@@ -183,6 +183,7 @@ export default {
     handleOpenDialogAddEdit(data) {
       this.addNEditDialogVisible = true;
       this.dialogData = data;
+      console.log("Dialog", data);
     },
 
     handleSearch(data) {
@@ -229,7 +230,7 @@ export default {
               }
             });
           });
-          
+
           this.dataList.forEach((item) => {
             if (item.car.length > 0) {
               item.cars = data.join("、");
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/index.vue
index 7d1a22ce..9a273147 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/postTrendsMonth/index.vue
@@ -324,7 +324,7 @@ export default {
       margin-bottom: 10px;
       left: 20px;
       top: 10px;
-      z-index: 100;
+      z-index: 0;
 
       div {
         white-space: nowrap;
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts2.js b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts2.js
index 40d15fd3..54813907 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts2.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/eventQuery/assets/charts2.js
@@ -132,8 +132,8 @@ var options = {
   },
   color: colorList,
   legend: {
-    top: 10,
-    right: 0,
+    top: 100,
+    right: 20,
     orient: "vertical", //改变排列方式
     icon: "circle", //改变legend小图标形状
     itemGap: 20, // 设置legend的间距
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 2a359adb..06a1b30a 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,35 +1,87 @@
 <template>
   <div class="congestion">
     <div class="board">
-      <ProgressBar class="keep-ratio" @selectItem="selectProgress" :dataList="dataList" :selectIndex="selectIndex"
-        :reset="reset" />
+      <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" />
-        <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">
+        <RadioGroup
+          :options="[
+            { 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>
         </el-select>
-        <el-select v-model="quarter" size="medium" v-if="type == 'quarter'" class="selectRoad-medium" placeholder="请选择">
-          <el-option v-for="item in quarterOptions" :key="item.value" :label="item.label" :value="item.value"
-            style="width: 140px">
+        <el-select
+          v-model="quarter"
+          size="medium"
+          v-if="type == 'quarter'"
+          class="selectRoad-medium"
+          placeholder="请选择"
+        >
+          <el-option
+            v-for="item in quarterOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value"
+            style="width: 140px"
+          >
           </el-option>
         </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>
-        <el-button class="btnReset" size="mini" icon="el-icon-refresh-left" @click="onReset">重置</el-button>
+        <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
+        >
+        <el-button
+          class="btnReset"
+          size="mini"
+          icon="el-icon-refresh-left"
+          @click="onReset"
+          >重置</el-button
+        >
       </div>
     </div>
 
@@ -43,14 +95,28 @@
 
       <div>
         <WgtTitle :title="'感知事件类型分析'"></WgtTitle>
-        <Empty v-show="!chart2List || chart2List.length <= 0" text="暂无数据..."></Empty>
-        <div v-show="chart2List || chart2List.length > 0" id="chart2" class="btnChart" />
+        <Empty
+          v-show="!chart2List || chart2List.length <= 0"
+          text="暂无数据..."
+        ></Empty>
+        <div
+          v-show="chart2List || chart2List.length > 0"
+          id="chart2"
+          class="btnChart"
+        />
       </div>
 
       <div>
         <WgtTitle :title="'桩号范围内事件分析趋势'"></WgtTitle>
-        <Empty v-show="!chart3List || chart3List.length <= 0" text="暂无数据..."></Empty>
-        <div v-show="chart3List || chart3List.length > 0" id="chart3" class="btnChart" />
+        <Empty
+          v-show="!chart3List || chart3List.length <= 0"
+          text="暂无数据..."
+        ></Empty>
+        <div
+          v-show="chart3List || chart3List.length > 0"
+          id="chart3"
+          class="btnChart"
+        />
       </div>
     </div>
   </div>
@@ -65,7 +131,7 @@ import chart1 from "./assets/charts";
 import chart2 from "./assets/charts2";
 import chart3 from "./assets/charts3";
 import ElQuarterPicker from "./ElQuarterPicker";
-import moment from 'moment';
+import moment from "moment";
 import {
   getWarningTrend,
   getWarningSectionType,
@@ -204,7 +270,7 @@ export default {
       ],
     };
   },
-  created() { },
+  created() {},
   methods: {
     selectProgress(item, index) {
       this.selectIndex = index;
@@ -255,18 +321,19 @@ export default {
           chart1.series[0].data = [];
           chart1.xAxis.data = [];
 
-
           //月份的单独处理
           if (this.type == "month") {
             let daysInMonth = moment(this.dateTime, "YYYY-MM").daysInMonth();
             let sData = {};
-            data.forEach(it => sData[parseInt(it.day.slice(-2))] = it.number)
-            let pData = []
+            data.forEach(
+              (it) => (sData[parseInt(it.day.slice(-2))] = it.number)
+            );
+            let pData = [];
             for (let index = 1; index <= daysInMonth; index++) {
               pData.push({
                 day: index,
-                number: sData[index] || 0
-              })
+                number: sData[index] || 0,
+              });
             }
             data = pData;
           }
@@ -278,15 +345,15 @@ export default {
               3: [7, 8, 9],
               4: [10, 11, 12],
             };
-            let sData = {}
-            data.forEach(it => sData[it.month] = it.number);
-            let pData = []
+            let sData = {};
+            data.forEach((it) => (sData[it.month] = it.number));
+            let pData = [];
             for (let index = 0; index < 3; index++) {
               let month = quarterMap[this.quarter][index];
               pData.push({
                 month: month,
-                number: sData[month] || 0
-              })
+                number: sData[month] || 0,
+              });
             }
             data = pData;
           }
@@ -515,10 +582,10 @@ export default {
       //   this.type = "date";
     },
     changeType() {
-      if (this.type == 'date') {
-        this.dateTime = moment(new Date()).format("YYYY-MM-DD")
+      if (this.type == "date") {
+        this.dateTime = moment(new Date()).format("YYYY-MM-DD");
       }
-    }
+    },
   },
   mounted() {
     setTimeout(() => {
@@ -569,28 +636,28 @@ export default {
 
         // 填充渐变颜色
         // 颜色断点
-        // var gr = context.createLinearGradient(247, 63, 450, 0);
-        // gr.addColorStop(1, 'rgba(92,197,255,0)');
-        // gr.addColorStop(0, 'rgba(92,197,255,0.5)');
-        // drawRoundRect(context, 267, 57, 140, 24, 12, gr)
+        var gr = context.createLinearGradient(247, 63, 450, 0);
+        gr.addColorStop(1, "rgba(92,197,255,0)");
+        gr.addColorStop(0, "rgba(92,197,255,0.5)");
+        drawRoundRect(context, 357, 98, 140, 24, 12, gr);
 
         // // 颜色断点
-        // var gr = context.createLinearGradient(247, 63, 450, 0);
-        // gr.addColorStop(1, 'rgba(92,197,255,0)');
-        // gr.addColorStop(0, 'rgba(92,197,255,0.5)');
-        // drawRoundRect(context, 267, 108, 140, 24, 12, gr)
+        var gr = context.createLinearGradient(247, 63, 450, 0);
+        gr.addColorStop(1, "rgba(92,197,255,0)");
+        gr.addColorStop(0, "rgba(92,197,255,0.5)");
+        drawRoundRect(context, 357, 130, 140, 24, 12, gr);
 
         // // 颜色断点
-        // var gr = context.createLinearGradient(240, 63, 450, 0);
-        // gr.addColorStop(1, 'rgba(92,197,255,0)');
-        // gr.addColorStop(0, 'rgba(92,197,255,0.5)');
-        // drawRoundRect(context, 267, 157, 140, 24, 12, gr)
+        var gr = context.createLinearGradient(240, 63, 450, 0);
+        gr.addColorStop(1, "rgba(92,197,255,0)");
+        gr.addColorStop(0, "rgba(92,197,255,0.5)");
+        drawRoundRect(context, 357, 162, 140, 24, 12, gr);
 
         // // 颜色断点
-        // var gr = context.createLinearGradient(240, 63, 450, 0);
-        // gr.addColorStop(1, 'rgba(92,197,255,0)');
-        // gr.addColorStop(0, 'rgba(92,197,255,0.5)');
-        // drawRoundRect(context, 267, 208, 140, 24, 12, gr)
+        var gr = context.createLinearGradient(240, 63, 450, 0);
+        gr.addColorStop(1, "rgba(92,197,255,0)");
+        gr.addColorStop(0, "rgba(92,197,255,0.5)");
+        drawRoundRect(context, 357, 194, 140, 24, 12, gr);
 
         // // 颜色断点
         // var gr = context.createLinearGradient(240, 63, 450, 0);
@@ -638,16 +705,21 @@ export default {
     justify-content: space-evenly;
     font-size: 14px;
 
-    >div {
+    > div {
       width: 33%;
       height: 470px;
-      background: linear-gradient(180deg,
-          rgba(6, 66, 88, 0.2) 0%,
-          #064258 100%);
+      background: linear-gradient(
+        180deg,
+        rgba(6, 66, 88, 0.2) 0%,
+        #064258 100%
+      );
       border: 1px solid;
-      border-image: linear-gradient(360deg,
+      border-image: linear-gradient(
+          360deg,
           rgba(55, 231, 255, 0.3),
-          rgba(55, 231, 255, 0)) 1 1;
+          rgba(55, 231, 255, 0)
+        )
+        1 1;
     }
 
     :nth-child(1) {
@@ -763,12 +835,54 @@ export default {
 </style>
 
 <style lang="scss">
-div.el-popover:has(> .el-date-picker) div .el-picker-panel__body .el-picker-panel__content table tr td.today span,
-div.el-popover:has(> .el-date-picker) div .el-picker-panel__body .el-picker-panel__content table tr td.today .cell,
-div.el-picker-panel.el-date-picker.el-popper div .el-picker-panel__body .el-picker-panel__content table tr td.today span,
-div.el-picker-panel.el-date-picker.el-popper div .el-picker-panel__body .el-picker-panel__content table tr td.today .cell,
-div.el-picker-panel.el-date-range-picker.el-popper div .el-picker-panel__body .el-picker-panel__content table tr td.today span,
-div.el-picker-panel.el-date-range-picker.el-popper div .el-picker-panel__body .el-picker-panel__content table tr td.today .cell {
+div.el-popover:has(> .el-date-picker)
+  div
+  .el-picker-panel__body
+  .el-picker-panel__content
+  table
+  tr
+  td.today
+  span,
+div.el-popover:has(> .el-date-picker)
+  div
+  .el-picker-panel__body
+  .el-picker-panel__content
+  table
+  tr
+  td.today
+  .cell,
+div.el-picker-panel.el-date-picker.el-popper
+  div
+  .el-picker-panel__body
+  .el-picker-panel__content
+  table
+  tr
+  td.today
+  span,
+div.el-picker-panel.el-date-picker.el-popper
+  div
+  .el-picker-panel__body
+  .el-picker-panel__content
+  table
+  tr
+  td.today
+  .cell,
+div.el-picker-panel.el-date-range-picker.el-popper
+  div
+  .el-picker-panel__body
+  .el-picker-panel__content
+  table
+  tr
+  td.today
+  span,
+div.el-picker-panel.el-date-range-picker.el-popper
+  div
+  .el-picker-panel__body
+  .el-picker-panel__content
+  table
+  tr
+  td.today
+  .cell {
   color: #fff;
 }
 </style>

From 4b43de85420061bc49bede3d291792ba717e3ce5 Mon Sep 17 00:00:00 2001
From: zhangzhang <1747194829@qq.com>
Date: Tue, 12 Mar 2024 11:30:18 +0800
Subject: [PATCH 07/10] =?UTF-8?q?=E6=9B=B4=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../components/InputSearch/index.vue          | 38 ++++++-----
 .../components/channelAnalytics/index.vue     | 63 +++++++++----------
 .../components/eventTypeAnalysis/index.vue    | 63 ++++++++++---------
 .../auditAnalytics/assets/charts.js           |  2 +-
 .../channelAnalytics/assets/charts.js         |  2 +-
 .../eventTypeAnalysis/assets/charts.js        |  2 +-
 6 files changed, 87 insertions(+), 83 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue b/ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue
index f5e4f510..36f75163 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/InputSearch/index.vue
@@ -23,8 +23,8 @@
           v-model="value"
           :placeholder="placeholder"
           clearable
-          @change="handleSearch"
-          ></ElInput>
+          @keyup.enter.native="handleSearch"
+        ></ElInput>
         <img src="./search.svg" v-show="!disable" @click="onOpenPop" />
       </div>
       <div
@@ -35,7 +35,7 @@
         @click="onOpenPop"
       >
         <span>{{ placeholder }}</span>
-        <img src="./search.svg"/>
+        <img src="./search.svg" />
       </div>
 
       <div style="width: 100%; max-height: 360px" v-show="visible">
@@ -128,24 +128,28 @@ export default {
       };
     },
   },
-  mounted(){
+  mounted() {
     // document.getElementById("app")
-    document.addEventListener("click" , ()=>{
-      if(!this.isClickedBtn){
-        setTimeout(() => {
-          this.visible = false;
-        }, 100)
-      }
-      this.isClickedBtn = false;
-    } , false)
+    document.addEventListener(
+      "click",
+      () => {
+        if (!this.isClickedBtn) {
+          setTimeout(() => {
+            this.visible = false;
+          }, 100);
+        }
+        this.isClickedBtn = false;
+      },
+      false
+    );
   },
 
   methods: {
-    onOpenPop(){
-        this.isClickedBtn = true;
-        this.visible = !this.visible;
+    onOpenPop() {
+      this.isClickedBtn = true;
+      this.visible = !this.visible;
     },
-    onClickMask(){
+    onClickMask() {
       this.visible = false;
     },
     handleShow() {
@@ -193,7 +197,7 @@ export default {
             console.log("catch");
           });
       }
-    }
+    },
   },
 };
 </script>
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/index.vue
index c328c6bb..d1f91e4e 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/channelAnalytics/index.vue
@@ -1,56 +1,52 @@
 <template>
-  <div class='congestion'>
+  <div class="congestion">
     <WgtTitle :title="'事件源分析'"></WgtTitle>
     <div class="board">
-      <div class="charts keep-ratio " id="channelAnalytics"></div>
+      <div class="charts keep-ratio" id="channelAnalytics"></div>
     </div>
   </div>
 </template>
-  
+
 <script>
 import WgtTitle from "@screen/pages/perception/widgets/title";
 import * as echarts from "echarts";
 import chartsStatistics from "./assets/charts";
-import { eventSourceRatio } from "@/api/event/governanceAnalysis"
+import { eventSourceRatio } from "@/api/event/governanceAnalysis";
 export default {
-  name: 'RailWayDay',
+  name: "RailWayDay",
   components: {
-    WgtTitle
+    WgtTitle,
   },
   data() {
-    return {
-
-    }
+    return {};
   },
 
-  created() {
-
-  },
+  created() {},
   methods: {
     getEventSourceRatio() {
       return eventSourceRatio().then((response) => {
-        console.log("response", response)
-        let data = []
-        let total = null
-        let nameData = []
+        console.log("response", response);
+        let data = [];
+        let total = null;
+        let nameData = [];
         const newObj = { value: 1, name: "" };
         for (let i = 0; i < response.data.length; i++) {
           data.push({
             value: response.data[i].num,
-            name: response.data[i].eventSourceName
-          })
+            name: response.data[i].eventSourceName,
+          });
           total += response.data[i].num;
         }
-        console.log("total", total)
+        console.log("total", total);
         for (let i = 0; i < data.length; i++) {
           //   if (i % 2 === 0) {
           //     data.splice(i + 1, 0, newObj)
           //   }
           if (data[i].name != "") {
-            nameData.push(data[i].name)
+            nameData.push(data[i].name);
           }
         }
-        console.log(6666, data, nameData)
+        console.log(6666, data, nameData);
         chartsStatistics.legend.formatter = function (name) {
           let tarValue = 0;
           for (let i = 0; i < response.data.length; i++) {
@@ -59,30 +55,30 @@ export default {
             }
           }
           var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
-          return `{text|${name}} {number|${percert}%}`;
+          return `{text|${name}} {number|${tarValue} 起  } {number|${percert}%}`;
         };
         chartsStatistics.legend.data = nameData;
         chartsStatistics.title[0].text = total;
         // chartsStatistics.tooltip.show = false;
         // chartsStatistics.series[1].data[0].value = total;
         chartsStatistics.series[2].data = data;
-      })
-    }
+      });
+    },
   },
   async mounted() {
-    await this.getEventSourceRatio()
+    await this.getEventSourceRatio();
     setTimeout(() => {
       this.$nextTick(() => {
-        var myChart = echarts.init(document.getElementById('channelAnalytics'));
+        var myChart = echarts.init(document.getElementById("channelAnalytics"));
 
         myChart.setOption(chartsStatistics);
       });
     });
   },
-}
+};
 </script>
-  
-<style lang='scss' scoped>
+
+<style lang="scss" scoped>
 .congestion {
   width: 100%;
 
@@ -94,11 +90,15 @@ export default {
     border-radius: 5px 5px 5px 5px;
     opacity: 1;
     border: 1px solid;
-    border-image: linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0)) 1 1;
+    border-image: linear-gradient(
+        360deg,
+        rgba(55, 231, 255, 0.3),
+        rgba(55, 231, 255, 0)
+      )
+      1 1;
     display: flex;
     justify-content: space-between;
     align-items: center;
-
   }
 }
 
@@ -107,4 +107,3 @@ export default {
   width: 100%;
 }
 </style>
-  
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/index.vue
index 1e9dc408..7018f8f7 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/eventTypeAnalysis/index.vue
@@ -1,53 +1,49 @@
 <template>
-  <div class='congestion'>
+  <div class="congestion">
     <WgtTitle :title="'事件类型分析'"></WgtTitle>
     <div class="board">
-      <div class="charts keep-ratio " id="eventTypeAnalysis"></div>
+      <div class="charts keep-ratio" id="eventTypeAnalysis"></div>
     </div>
   </div>
 </template>
-  
+
 <script>
 import WgtTitle from "@screen/pages/perception/widgets/title";
 import * as echarts from "echarts";
 import chartsStatistics from "./assets/charts";
-import { allEventNum } from "@/api/event/governanceAnalysis"
+import { allEventNum } from "@/api/event/governanceAnalysis";
 export default {
-  name: 'RailWayDay',
+  name: "RailWayDay",
   components: {
-    WgtTitle
+    WgtTitle,
   },
   data() {
-    return {
-
-    }
+    return {};
   },
 
-  created() {
-
-  },
+  created() {},
   methods: {
     getAllEventNum() {
       return allEventNum().then((response) => {
-        console.log("response", response)
-        let data = []
-        let total = null
-        let nameData = []
+        console.log("response", response);
+        let data = [];
+        let total = null;
+        let nameData = [];
         const newObj = { value: 1, name: "" };
         for (let i = 0; i < response.data.length; i++) {
           data.push({
             value: response.data[i].num,
-            name: response.data[i].eventName
-          })
+            name: response.data[i].eventName,
+          });
           total += response.data[i].num;
         }
-        console.log("total88", total)
+        console.log("total88", total);
         for (let i = 0; i < data.length; i++) {
           // if (i % 2 === 0) {
           //   data.splice(i + 1, 0, newObj)
           // }
           if (data[i].name != "") {
-            nameData.push(data[i].name)
+            nameData.push(data[i].name);
           }
         }
         chartsStatistics.legend.data = nameData;
@@ -59,27 +55,29 @@ export default {
             }
           }
           var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
-          return `{text|${name}} {number|${percert}%}`;
+          return `{text|${name}} {number|${tarValue} 起  }  {number|${percert}%}`;
         };
         chartsStatistics.title[0].text = total;
         chartsStatistics.series[2].data = data;
-      })
-    }
+      });
+    },
   },
   async mounted() {
-    await this.getAllEventNum()
+    await this.getAllEventNum();
     setTimeout(() => {
       this.$nextTick(() => {
-        var myChart = echarts.init(document.getElementById('eventTypeAnalysis'));
+        var myChart = echarts.init(
+          document.getElementById("eventTypeAnalysis")
+        );
 
         myChart.setOption(chartsStatistics);
       });
     });
   },
-}
+};
 </script>
-  
-<style lang='scss' scoped>
+
+<style lang="scss" scoped>
 .congestion {
   width: 100%;
 
@@ -91,11 +89,15 @@ export default {
     border-radius: 5px 5px 5px 5px;
     opacity: 1;
     border: 1px solid;
-    border-image: linear-gradient(360deg, rgba(55, 231, 255, 0.3), rgba(55, 231, 255, 0)) 1 1;
+    border-image: linear-gradient(
+        360deg,
+        rgba(55, 231, 255, 0.3),
+        rgba(55, 231, 255, 0)
+      )
+      1 1;
     display: flex;
     justify-content: space-between;
     align-items: center;
-
   }
 }
 
@@ -104,4 +106,3 @@ export default {
   width: 100%;
 }
 </style>
-  
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js
index 1013bb11..146c6fa8 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/auditAnalytics/assets/charts.js
@@ -117,7 +117,7 @@ var options = {
       }
       var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
       const arr = name + "  " + tarValue;
-      return `{text|${name}} {number|${percert}%}`;
+      return `{text|${name}} {number|${tarValue} 起  }  {number|${percert}%}`;
     },
     pageIconColor: "#fff",
     pageIconSize: 10,
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js
index d73c12da..5f48cc43 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/channelAnalytics/assets/charts.js
@@ -118,7 +118,7 @@ var options = {
       }
       var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
       const arr = name + "  " + tarValue;
-      return `{text|${name}} {number|${percert}%}`;
+      return `{text|${name}} {number|${tarValue} 起  }  {number|${percert}%}`;
     },
     pageIconColor: "#fff",
     pageIconSize: 10,
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js
index 7359dcad..4d9f3b62 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/publicService/components/eventTypeAnalysis/assets/charts.js
@@ -143,7 +143,7 @@ var options = {
       }
       var percert = total == 0 ? 0 : ((tarValue / total) * 100).toFixed(2);
       const arr = name + "  " + tarValue;
-      return `{text|${name}} {number|${percert}%}`;
+      return `{text|${name}} {number|${tarValue} 起  }  {number|${percert}%}`;
     },
     pageIconColor: "#fff",
     pageIconSize: 10,

From 2d171db9f0a1e3d11b724f3a73e1e156c8b8b388 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Tue, 12 Mar 2024 11:43:18 +0800
Subject: [PATCH 08/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9wss,=E6=91=84=E5=83=8F?=
 =?UTF-8?q?=E5=A4=B4=E5=9C=B0=E5=9D=80=E7=AD=89=E9=97=AE=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../RoadAndEvents/utils/httpList.js           | 24 ++++++++++++-------
 ruoyi-ui/src/views/websocket.vue              |  3 ++-
 ruoyi-ui/vue.config.js                        |  1 +
 3 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js
index 0001db2e..3f288ed5 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/Home/components/RoadAndEvents/utils/httpList.js
@@ -9,14 +9,20 @@ import request from "@/utils/request";
  * @param {1 | 2 | 3} media 参数说明: 1: http+flv; 2: rtmp; 3: hls
  * @returns
  */
-export function getCameraStream(camId, media = 1) {
-  return request({
-    url: "/video/externalVideoStreaming",
-    method: "get",
-    params: {
-      camId,
-    },
-  });
+export async function getCameraStream(camId, media = 1) {
+  let data = await request({
+      url: "/video/externalVideoStreaming",
+      method: "get",
+      params: {
+        camId,
+      },
+    });
+
+  if (data.code == 200){
+    data.data.liveUrl = "https://10.0.81.202/camera?target=" + data.data.liveUrl.substring(7);
+  }
+
+  return data;
 }
 
 /**
@@ -276,7 +282,7 @@ export function getEventTopicList(eventType) {
 
     request({
       url: `/business/trafficIncidents/getEventList/${eventType}`,
-      method: "get",
+      method: "post",
     })
       .then(({ code, data }) => {
         if (code != 200) {
diff --git a/ruoyi-ui/src/views/websocket.vue b/ruoyi-ui/src/views/websocket.vue
index ac7d4437..964ea251 100644
--- a/ruoyi-ui/src/views/websocket.vue
+++ b/ruoyi-ui/src/views/websocket.vue
@@ -30,7 +30,8 @@ export default {
       // console.log(location.hostname )
       // 建立 websocket 连接
       this.socket.initialize({
-        url: 'ws://' + location.hostname + ':' + port + path,
+        // url: 'ws://' + location.hostname + ':' + port + path,
+        url: 'wss://' + location.hostname + ':' + window.location.port || 80 + '/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,
diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js
index 388187f1..fd47c39e 100644
--- a/ruoyi-ui/vue.config.js
+++ b/ruoyi-ui/vue.config.js
@@ -31,6 +31,7 @@ module.exports = {
   devServer: {
     host: "0.0.0.0",
     port: port,
+    https: true,
     open: true,
     proxy: {
       // detail: https://cli.vuejs.org/config/#devserver-proxy

From 3fb99781d2bdf37162fa5a84538b0d31361134a2 Mon Sep 17 00:00:00 2001
From: hui <770260999@qq.com>
Date: Tue, 12 Mar 2024 14:47:14 +0800
Subject: [PATCH 09/10] =?UTF-8?q?=E6=83=85=E6=8A=A5=E6=9D=BF=E5=8F=91?=
 =?UTF-8?q?=E5=B8=83=E5=A4=9A=E4=B8=AA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ruoyi-ui/src/api/board/board.js               |   2 +-
 .../views/JiHeExpressway/mixins/InfoBoard.js  |   4 +-
 .../pages/service/board/boardData.json        |   1 -
 .../pages/service/board/index.vue             | 182 +++---------------
 ruoyi-ui/vue.config.js                        |   4 +-
 5 files changed, 31 insertions(+), 162 deletions(-)
 delete mode 100644 ruoyi-ui/src/views/JiHeExpressway/pages/service/board/boardData.json

diff --git a/ruoyi-ui/src/api/board/board.js b/ruoyi-ui/src/api/board/board.js
index 3f893fd9..4378d3cc 100644
--- a/ruoyi-ui/src/api/board/board.js
+++ b/ruoyi-ui/src/api/board/board.js
@@ -43,7 +43,7 @@ export function saveBoardReleaseLog(data) {
 
 export function publishToBoard(data) {
   return request({
-    url: '/business/board/publish',
+    url: '/business/board/batch/publish',
     method: 'post',
     data: data
   })
diff --git a/ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js b/ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
index 5d9b420e..f168c54d 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/mixins/InfoBoard.js
@@ -78,7 +78,7 @@ export default{
                     })
                 })
 
-                let data = { content: content, deviceId: this.selectedDevice.iotDeviceId }
+                let data = { content: content, deviceIdList: this.checkedDeviceIds }
 
                 if (IS_TESTING) {
                     // this.saveLog(content);
@@ -107,7 +107,7 @@ export default{
         //
         saveLog(content){
             let time = moment().format("YYYY-MM-DD HH:mm:ss");
-            let device = this.selectedDevice;
+            let device = this.selectedDevices;
             let data = {
                     "createBy": store.getters.name,
                     "createTime": time,
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/boardData.json b/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/boardData.json
deleted file mode 100644
index 881570aa..00000000
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/boardData.json
+++ /dev/null
@@ -1 +0,0 @@
-"{\"support\":{\"PROTOCOL_TYPE\":\"GUANGDIAN_V33\",\"FONT_SIZE\":\"3232,2424,1616\",\"DEVICEID\":\"102111101\",\"COLOR\":\"红色,绿色,蓝色,黄色\",\"FONT\":\"宋体,黑体,楷体\"},\"content\":[{\"ITEM000\":[{\"SPEED\":\"1\",\"FONT_SIZE\":\"3232\",\"ACTION\":\"1\",\"COLOR\":\"黄色\",\"STATE\":true,\"CONTENT\":\"进入隧道 请开大灯1\",\"COORDINATE\":\"063004\",\"FONT\":\"黑体\",\"STAY\":\"500\"}]}]}"
\ 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 cb8fa6b1..bcd95fe0 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
@@ -83,15 +83,21 @@
                   <el-checkbox-group
                     class="deviceList"
                     v-model="checkedDeviceIds"
-                    :max="2"
                     @change="____onSelectDevices"
                   >
                     <el-checkbox
                       v-for="(itm, index) in item.list"
                       :label="itm.iotDeviceId"
                       :key="index"
+                      :disabled="!itm.iotDeviceId || itm.iotDeviceId.includes('null') || itm.deviceState == 0 || itm.deviceState == null"
                     >
-                      <div class="title">{{ itm.deviceName }}</div>
+                      <el-tooltip content="设备未接入" placement="top" v-if="!itm.iotDeviceId || itm.iotDeviceId.includes('null_')">
+                        <div class="title">{{ itm.deviceName }}</div>
+                      </el-tooltip>
+                      <el-tooltip content="设备离线" placement="top" v-else-if="itm.deviceState == 0 || itm.deviceState == null">
+                        <div class="title">{{ itm.deviceName }}</div>
+                      </el-tooltip>
+                      <div v-else class="title">{{ itm.deviceName }}</div>
                       <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>
@@ -307,29 +313,12 @@
 <script>
 import Sortable from "sortablejs";
 import editInfo from "./editInfo";
-import boardData from "./boardData";
-import { getUserDeptId } from "@/api/system/user";
-import {
-  listTunnels,
-  devicessize,
-  information,
-  getBoardInfo,
-  getBoardEditInfo,
-  getboardSizeDic,
-  getBoardContentData,
-  deviceControl,
-} from "@/api/information/api.js";
 import {
-  uploadBoardEditInfo,
-  getAllVmsTemplate,
   addTemplate,
   addTemplateContent,
-  getBoardContent,
   deleteTemplate,
-  splicingBoard,
 } from "@/api/board/template";
 import {
-  invokedFunction,
   getDeviceRealtimeProperty,
 } from "@/api/device/device";
 import { getBoardList, getBoardDeviceInfo } from "@/api/board/board";
@@ -341,8 +330,6 @@ import BoardInfoEditor from "@screen/components/infoBoard/BoardInfoEditor";
 import vuescroll from "vuescroll";
 import scrollOptions from "@/common/scrollbar.js";
 
-import infoBoardUtils from "@screen/utils/infoBoard.js";
-
 import testDeviceList from "@screen/testData/deviceList.js";
 import testDeviceInfo from "@screen/testData/infoBoard.js";
 
@@ -365,13 +352,14 @@ export default {
 
   data() {
     return {
+      multiPublish: true,
       toggleIndex: 0,
       toRightCategory: "", //向右类别绑定
       arrowRightVisible: false, //向右类别弹窗
       loading: false,
       submitButton: false, //回读禁用
       selectedSize: "", //情报板设备 绑定
-      selectedDevice: {},
+      selectedDevices: [],
       boardSizeDic: {}, //情报板设备字典
       boardDirectionList: [], //方向
       userQueryParams: {
@@ -574,12 +562,11 @@ export default {
           if (!this.selectedSize) {
             this.selectedSize = item.otherConfig.screenSize;
           }
-          // if (!this.selectedDevice.deviceName) {
-          //   this.selectedDevice = item;
+          // if (!this.selectedDevices.deviceName) {
+          //   this.selectedDevices = item;
           // }
         });
         this.____onChangeSize();
-        // this.____getDeviceInfo();
       } else {
         getBoardList(param).then((res) => {
           res.data.forEach((item, index) => {
@@ -596,8 +583,8 @@ export default {
             if (!this.selectedSize) {
               this.selectedSize = item.otherConfig.screenSize;
             }
-            // if (!this.selectedDevice.deviceName) {
-            //   this.selectedDevice = item;
+            // if (!this.selectedDevices.deviceName) {
+            //   this.selectedDevices = item;
             // }
           });
           this.____onChangeSize();
@@ -605,22 +592,6 @@ export default {
         });
       }
     },
-
-    ____getDeviceInfo() {
-      if (IS_TESTING) {
-        this.selectedBdMsg = _.cloneDeep(testDeviceInfo.data["3A"].content);
-      } else {
-        if (!this.selectedDevice.iotDeviceId) {
-          return;
-        }
-
-        getBoardDeviceInfo(this.selectedDevice.iotDeviceId)
-          .then((res) => {
-            this.selectedBdMsg = res.data["3A"].content;
-          })
-          .catch((err) => {});
-      }
-    },
     ____forkDeviceInfo(deviceFrom) {
       //从目标设备取得信息
 
@@ -819,7 +790,7 @@ export default {
 
     // 发布信息
     ____onPublish() {
-      if (!this.selectedDevice.iotDeviceId) {
+      if (!this.selectedDevices.length) {
         this.$message.warning("请选择设备!");
         return;
       }
@@ -827,57 +798,33 @@ export default {
     },
 
     // 接收子组件form表单 修改
-    receiveForm(form) {
+    receiveForm(form)  {
       console.log(form, "接收子组件form表单 修改");
       this.contentList.splice(this.index_, 1, form);
       this.$forceUpdate();
       this.allVmsTemplate("no");
     },
 
-    // 全选
-    handleCheckAllChange(val) {
-      this.checkedDeviceIds = val ? this.deviceList : [];
-    },
-
     // 多选
     ____onSelectDevices(arr) {
-      if (arr.length == 0) {
-        this.selectedDevice = {};
+
+      this.selectedDevices = [];
+      if (this.checkedDeviceIds.length == 0) {
         return;
       }
-      this.checkedDeviceIds = [arr.pop()];
-      if (!this.checkedDeviceIds[0] || this.checkedDeviceIds[0].includes("null_")) {
-        this.$message.warning("设备未接入!");
-      }
-      this.selectedDevice = _.find(this.boardSizeDic[this.selectedSize].list, {
-        iotDeviceId: this.checkedDeviceIds[0],
+      
+      this.selectedDevices = _.filter(this.boardSizeDic[this.selectedSize].list, (item)=>{
+        return this.checkedDeviceIds.includes(item.iotDeviceId)
       });
-      // this.____forkDeviceInfo(this.selectedDevice);
+      
+      // this.____forkDeviceInfo(this.selectedDevices);
     },
-    // ____onCheckDeviceInfo(item) {
-    // this.selectedDevice = _.find(this.boardSizeDic[this.selectedSize].list, { iotDeviceId: value[0] });
-    // this.selectedDevice = item;
-    // this.selectedDevice = this.deviceList
-    // this.____forkDeviceInfo();
-
-    // this.checkedDeviceIds = value
-    // let val = JSON.parse(JSON.stringify(value))
-    // for (let itm of this.deviceList) {
-    //   if (val.indexOf(itm) > -1) {
-    //     this.checkAll = true
-    //   } else {
-    //     this.checkAll = false
-    //     return
-    //   }
-    // }
-    // this.$forceUpdate()
-    // },
+
     // 情报板列表手风琴
     ____onChangeSize(val) {
-      console.log("777777");
       this.____setAvailableTemplate();
       this.checkedDeviceIds = [];
-      this.selectedDevice = {};
+      this.selectedDevices = [];
       this.selectedBdMsg = [];
       // this.contentList = []
       // this.deviceList = []
@@ -1012,39 +959,6 @@ export default {
       return value;
     },
 
-    // 转颜色
-    getColorStyle(font) {
-      if (font == "黄色" || font == "yellow" || font == "4") {
-        return "#FFFF00";
-      } else if (font == "红色" || font == "red" || font == "1") {
-        return "#FF0000";
-      } else if (
-        font == "绿色" ||
-        font == "GreenYellow" ||
-        font == "000255000000" ||
-        font == "2"
-      ) {
-        return "#00FF00";
-      } else if (font == "蓝色" || font == "blue" || font == "3") {
-        return "#0000FF";
-      } else if (font == "7" || font == "white") {
-        return "#FFFFFF";
-      } else {
-        return "#" + font;
-      }
-    },
-
-    // 居中
-    getTextAlign(font) {
-      if (font == "0") {
-        return "left";
-      } else if (font == "1") {
-        return "right";
-      } else {
-        return "center";
-      }
-    },
-
     // 换算文字在模板的位置
     getCoordinate(coordinate, type, screenSize) {
       let width = "";
@@ -1082,50 +996,6 @@ export default {
         }
       }
     },
-    getFontStyle(font) {
-      if (font == "宋体") {
-        return "Simsun";
-      } else if (font == "黑体") {
-        return "SimHei";
-      } else if (font == "楷体") {
-        return "KaiTi";
-      } else {
-        return font;
-      }
-    },
-    getFont(font) {
-      if (font == "KaiTi" || font == "k") {
-        return "楷体";
-      } else if (font == "SimSun" || font == "s") {
-        return "宋体";
-      } else if (font == "SimHei" || font == "h") {
-        return "黑体";
-      } else if (font == "FangSong" || font == "f") {
-        return "仿宋";
-      } else if (font == "LiSu" || font == "l") {
-        return "隶书";
-      } else {
-        return font;
-      }
-    },
-    // //  上移
-    // moveTop(i, item) {
-    //   if (item && i) {
-    //     let obj = { ...this.contentList[i - 1] };
-    //     this.contentList.splice(i - 1, 1, item);
-    //     this.contentList.splice(i, 1, obj);
-    //     this.$forceUpdate();
-    //   }
-    // },
-    // // 下移
-    // moveBottom(i, item) {
-    //   if (item && typeof i === "number") {
-    //     let obj = { ...this.contentList[i + 1] };
-    //     this.contentList.splice(i + 1, 1, item);
-    //     this.contentList.splice(i, 1, obj);
-    //     this.$forceUpdate();
-    //   }
-    // },
     dialogClose() {
       this.showEmit = false;
       this.arrowRightVisible = false;
diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js
index 388187f1..25f5969a 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]: "",

From 103535e70e3b5a15cf272139f4e10ca7085dcc62 Mon Sep 17 00:00:00 2001
From: lau572 <1010031226@qq.com>
Date: Tue, 12 Mar 2024 14:58:09 +0800
Subject: [PATCH 10/10] =?UTF-8?q?wss=E5=9C=B0=E5=9D=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ruoyi-ui/src/views/websocket.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ruoyi-ui/src/views/websocket.vue b/ruoyi-ui/src/views/websocket.vue
index 964ea251..1fafe36b 100644
--- a/ruoyi-ui/src/views/websocket.vue
+++ b/ruoyi-ui/src/views/websocket.vue
@@ -31,7 +31,7 @@ export default {
       // 建立 websocket 连接
       this.socket.initialize({
         // url: 'ws://' + location.hostname + ':' + port + path,
-        url: 'wss://' + location.hostname + ':' + window.location.port || 80 + '/ws',
+        url: 'wss://' + location.hostname + ':' + window.location.port  + '/ws' || 80 + '/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,