From 7f55d647cabae0bdc7164f2e3b21e1efca1fdde0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Thu, 29 Feb 2024 09:35:19 +0800
Subject: [PATCH 1/8] =?UTF-8?q?=E8=BE=96=E6=AE=B5=E7=AE=A1=E7=90=86?=
 =?UTF-8?q?=E6=96=B0=E5=A2=9E,=E5=85=B6=E5=AE=9E=E6=A1=A9=E5=8F=B7?=
 =?UTF-8?q?=E5=BF=85=E5=A1=AB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../views/jurisdictionalManagement/data.js    | 72 ++-----------------
 1 file changed, 5 insertions(+), 67 deletions(-)

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 d4413bf8..23793e1f 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
@@ -36,75 +36,13 @@ export const addEditFormList = [
     required: true,
   },
 
-  merge(cloneDeep(PresetFormItems.station), {
-    required: false,
-    label: "起始桩号:",
-    options: {
-      options: [
-        {
-          rules: [
-            {
-              message: "请补全桩号",
-              callback(value, data) {
-                if (!value?.trim() && data.startStakeMark[1]?.trim())
-                  return false;
-                else return true;
-              },
-            },
-          ],
-          key: "startStakeMark[0]",
-        },
-        {
-          rules: [
-            {
-              message: "请补全桩号",
-              callback(value, data) {
-                if (!value?.trim() && data.startStakeMark[0]?.trim())
-                  return false;
-                else return true;
-              },
-            },
-          ],
-          key: "startStakeMark[1]",
-        },
-      ],
-    },
+  merge(cloneDeep(PresetFormItems.startStation), {
+    required: true,
   }),
-
-  merge(cloneDeep(PresetFormItems.station), {
-    required: false,
-    label: "结束桩号:",
-    options: {
-      options: [
-        {
-          rules: [
-            {
-              message: "请补全桩号",
-              callback(value, data) {
-                if (!value?.trim() && data.endStakeMark[1]?.trim())
-                  return false;
-                else return true;
-              },
-            },
-          ],
-          key: "endStakeMark[0]",
-        },
-        {
-          rules: [
-            {
-              message: "请补全桩号",
-              callback(value, data) {
-                if (!value?.trim() && data.endStakeMark[0]?.trim())
-                  return false;
-                else return true;
-              },
-            },
-          ],
-          key: "endStakeMark[1]",
-        },
-      ],
-    },
+  merge(cloneDeep(PresetFormItems.endStation), {
+    required: true,
   }),
+  
   {
     label: "辖区路段编号:",
     key: "roadCode",

From 6e32265b765e3cbdb4f06d80a99179d44069dbf6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Thu, 29 Feb 2024 09:52:05 +0800
Subject: [PATCH 2/8] =?UTF-8?q?=E8=BE=96=E6=AE=B5=E4=BF=A1=E6=81=AF?=
 =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=B1=E8=B4=A5=E9=97=AE=E9=A2=98=E4=BF=AE?=
 =?UTF-8?q?=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../views/jurisdictionalManagement/index.vue               | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/index.vue
index 49065515..adc321be 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/jurisdictionalManagement/index.vue
@@ -88,7 +88,7 @@ export default {
     AddNEditDialog,
     Button
   },
-  inject: ['getPagination', 'setTotal'],
+  inject: ['getPagination', 'setTotal', "setCurrentPage"],
   data() {
     return {
       searchFormList,
@@ -172,8 +172,9 @@ export default {
 
           Message.success("删除成功")
         })
-        .catch(() => {
-          Message.error("删除失败")
+        .catch((e) => {
+          console.log("辖段删除error:",e);
+          //Message.error("删除失败")
         })
     },
     handleAddEdit(bool, data) {

From 18946c6c4f907cf1b542a9f891cffc515a439680 Mon Sep 17 00:00:00 2001
From: zhangzhang <1747194829@qq.com>
Date: Thu, 29 Feb 2024 14:43:02 +0800
Subject: [PATCH 3/8] =?UTF-8?q?=E6=9B=B4=E6=94=B9bug?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../src/assets/styles/JiHeExpressway.scss     |  3 +-
 .../FormConfig/components/ElCheckboxGroup.vue | 42 ++++++++++++-------
 .../StatsDialogVisible/index.vue              | 22 +++++++---
 .../pages/service/board/index.vue             |  9 ++--
 4 files changed, 48 insertions(+), 28 deletions(-)

diff --git a/ruoyi-ui/src/assets/styles/JiHeExpressway.scss b/ruoyi-ui/src/assets/styles/JiHeExpressway.scss
index 87fb830d..36e5c973 100644
--- a/ruoyi-ui/src/assets/styles/JiHeExpressway.scss
+++ b/ruoyi-ui/src/assets/styles/JiHeExpressway.scss
@@ -81,12 +81,13 @@
     line-height: $inputHeight;
     padding: 0;
     width: 100%;
+    border: none;
 
     .el-input-number__decrease,
     .el-input-number__increase {
       width: 22px;
       height: $inputHeight;
-      background-color: #004a69;
+      background-color: #0D5F79;
       border: none;
       color: #fff;
 
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/components/ElCheckboxGroup.vue b/ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/components/ElCheckboxGroup.vue
index a67596fa..83fdefe0 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/components/ElCheckboxGroup.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/FormConfig/components/ElCheckboxGroup.vue
@@ -1,15 +1,26 @@
 <template>
-  <ElCheckboxGroup v-bind="$attrs" v-on="$listeners" class='ElCheckboxGroup' :style="{ gap }">
-    <ElCheckbox v-for="item in options" :disabled="item.disabled" :label="item[id] || item[label]"
-      :key="item[id] || item[label]">
-      <slot :name="item[id] || item[label]" :data="item">{{ item[label] }}</slot>
+  <ElCheckboxGroup
+    v-bind="$attrs"
+    v-on="$listeners"
+    class="ElCheckboxGroup"
+    :style="{ gap }"
+  >
+    <ElCheckbox
+      v-for="item in options"
+      :disabled="item.disabled"
+      :label="item[id] || item[label]"
+      :key="item[id] || item[label]"
+    >
+      <slot :name="item[id] || item[label]" :data="item">{{
+        item[label]
+      }}</slot>
     </ElCheckbox>
   </ElCheckboxGroup>
 </template>
 
 <script>
 export default {
-  name: 'ElCheckboxGroup_',
+  name: "ElCheckboxGroup_",
   props: {
     /**
      * {
@@ -19,24 +30,24 @@ export default {
      */
     options: {
       type: Array,
-      default: () => []
+      default: () => [],
     },
     id: {
       type: String,
-      default: 'key'
+      default: "key",
     },
     label: {
       type: String,
-      default: 'label'
+      default: "label",
     },
     gap: {
-      default: "24px"
-    }
-  }
-}
+      default: "24px",
+    },
+  },
+};
 </script>
 
-<style lang='scss' scoped>
+<style lang="scss" scoped>
 .ElCheckboxGroup {
   display: flex;
   flex-wrap: wrap;
@@ -47,6 +58,7 @@ export default {
       display: flex;
       align-items: center;
       gap: 6px;
+      width: 100px;
 
       .el-checkbox__input {
         line-height: 0;
@@ -54,10 +66,10 @@ export default {
         .el-checkbox__inner {
           width: 16px;
           height: 16px;
-          background: #0A3E54;
+          background: #0a3e54;
           border-radius: 2px 2px 2px 2px;
           opacity: 1;
-          border: 1px solid rgba(98, 224, 254, .6);
+          border: 1px solid rgba(98, 224, 254, 0.6);
 
           &::after {
             width: 4.5px;
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/StatsDialogVisible/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/StatsDialogVisible/index.vue
index 99ecaa4b..f49551b8 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/StatsDialogVisible/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/governanceAnalysis/components/auditAnalytics/StatsDialogVisible/index.vue
@@ -359,12 +359,22 @@ export default {
         }),
       ]).then((res) => {
         if (res[0].status === "fulfilled" && res[0].value.code == 200) {
-          this.searchFormList[2].options.options = res[0].value.data.map(
-            (item) => ({
-              key: item.id,
-              label: item.facilityName,
-            })
-          );
+          // this.searchFormList[2].options.options = res[0].value.data.map(
+          //   (item) => ({
+          //     key: item.id,
+          //     label: item.facilityName,
+          //   })
+          // );
+          let dataList = [];
+          res[0].value.data.forEach((item) => {
+            if (item.facilityType == 1) {
+              dataList.push({
+                key: item.id,
+                label: item.facilityName,
+              });
+            }
+          });
+          this.searchFormList[2].options.options = dataList;
           this.facilityIds = res[0].value.data.map((item) => item.id);
           // this.searchFormList[2].default = res[0].value.data.map(item => item.id)
           let currentMonth = moment().format("YYYY-MM");
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 05532ebe..5dbddb0c 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/service/board/index.vue
@@ -32,7 +32,6 @@
             </el-select>
           </el-form-item>
           <vuescroll :ops="scrollOptions" style="flex: 1; height: 0">
-            <!-- {{ boardSizeDic }} -->
             <el-collapse
               v-model="selectedSize"
               accordion
@@ -46,8 +45,6 @@
                 :name="key"
               >
                 <div v-if="item.list.length > 0">
-                  <!-- <el-checkbox style="width: 100%" :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选
-                    </el-checkbox> -->
                   <el-checkbox-group
                     class="checkbox"
                     v-model="checkedDeviceIds"
@@ -60,8 +57,6 @@
                       :key="index"
                     >
                       <div>{{ itm.deviceName }}</div>
-                      <!-- <el-tooltip :content="itm.ip" placement="top">
-                      </el-tooltip> -->
                       <el-tooltip content="回读当前信息" placement="right">
                         <el-button
                           class="el-icon-tickets huiduButton"
@@ -91,6 +86,7 @@
             <el-button
               class="btnInfoBoard"
               type="add"
+              :disabled="!selectedSize"
               @click.native="____onAddDeviceItem()"
               >添加信息</el-button
             >
@@ -570,7 +566,7 @@ export default {
         this.selectedBdMsg = _.cloneDeep(testDeviceInfo.data["3A"].content);
       } else {
         if (!deviceFrom.iotDeviceId) {
-          this.$message.warning("提示设备未接入!");
+          this.$message.warning("设备未接入!");
           return;
         }
         this.selectedBdMsg = [];
@@ -811,6 +807,7 @@ export default {
     // },
     // 情报板列表手风琴
     ____onChangeSize(val) {
+      console.log("777777");
       this.____setAvailableTemplate();
       this.checkedDeviceIds = [];
       this.selectedDevice = {};

From 55e63db4fad1935e4e603522515fbb2e4fbbd254 Mon Sep 17 00:00:00 2001
From: zhoule <zz221011@163.com>
Date: Thu, 29 Feb 2024 15:29:48 +0800
Subject: [PATCH 4/8] =?UTF-8?q?=E6=84=9F=E7=9F=A5=E4=BA=8B=E4=BB=B6?=
 =?UTF-8?q?=E7=9B=91=E6=B5=8B=E7=BB=9F=E8=AE=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../components/eventQuery/index.vue           | 212 +++++-------------
 1 file changed, 50 insertions(+), 162 deletions(-)

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 60366b91..6df8e7ad 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,126 +1,53 @@
 <template>
   <div class="congestion">
     <div class="board">
-      <ProgressBar
-        class="keep-ratio"
-        @selectItem="selectProgress"
-        :dataList="dataList"
-        :selectIndex="selectIndex"
-      />
+      <ProgressBar class="keep-ratio" @selectItem="selectProgress" :dataList="dataList" :selectIndex="selectIndex" />
       <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="请选择"
-        >
-          <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'
+        <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
-        >
+                ? '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>
 
     <div class="body">
       <div>
         <WgtTitle :title="'感知事件趋势分析'"></WgtTitle>
-        <Empty
-          v-show="!chart1List || chart1List.length <= 0"
-          text="暂无数据..."
-        ></Empty>
-        <div
-          v-show="chart1List || chart1List.length > 0"
-          id="chart1"
-          class="btnChart"
-        />
+        <Empty v-show="!chart1List || chart1List.length <= 0" text="暂无数据..."></Empty>
+        <div v-show="chart1List || chart1List.length > 0" id="chart1" class="btnChart" />
       </div>
 
       <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>
@@ -135,6 +62,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 {
   getWarningTrend,
   getWarningSectionType,
@@ -220,8 +148,8 @@ export default {
       dateTime: "2024",
       direction: "1",
       dataList: [],
-      selectIndex: 1,
-      selectId: 1,
+      selectIndex: 2,
+      selectId: 2,
       type: "year",
       chart1List: [],
       chart2List: [],
@@ -272,7 +200,7 @@ export default {
       ],
     };
   },
-  created() {},
+  created() { },
   methods: {
     selectProgress(item, index) {
       this.selectIndex = index;
@@ -284,7 +212,9 @@ export default {
       this.type = "year";
       this.dateTime = "2024";
       this.selectId = this.dataList[0].id;
-      this.selectIndex = 1;
+      this.selectId = 2;
+      this.selectIndex = 2;
+      this.searchQuery()
     },
     searchQuery() {
       let startTime = "";
@@ -541,6 +471,11 @@ export default {
       // if (this.type == "day")
       //   this.type = "date";
     },
+    changeType() {
+      if (this.type == 'date') {
+        this.dateTime = moment(new Date()).format("YYYY-MM-DD")
+      }
+    }
   },
   mounted() {
     setTimeout(() => {
@@ -660,21 +595,16 @@ 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) {
@@ -790,54 +720,12 @@ 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 4a43645204228a01c721d3eb985a2f7cd0ddf2e7 Mon Sep 17 00:00:00 2001
From: zhoule <zz221011@163.com>
Date: Thu, 29 Feb 2024 15:30:15 +0800
Subject: [PATCH 5/8] =?UTF-8?q?=E5=A4=84=E7=BD=AE=E6=B5=81=E7=A8=8B?=
 =?UTF-8?q?=E5=92=8C=E5=B8=B8=E7=94=A8=E8=AF=AD=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../TimeLine/LineClick/images/bg-active.svg   |  16 +
 .../TimeLine/LineClick/images/bg.svg          |  12 +
 .../components/TimeLine/LineClick/index.vue   | 274 ++++++++++++++++++
 .../commonPhrases/index.vue                   | 183 ++++++++++--
 .../disposalProcess/index.vue                 | 168 ++++++++---
 .../emergencyProcessManagement/index.vue      |  27 +-
 6 files changed, 617 insertions(+), 63 deletions(-)
 create mode 100644 ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/images/bg-active.svg
 create mode 100644 ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/images/bg.svg
 create mode 100644 ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/index.vue

diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/images/bg-active.svg b/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/images/bg-active.svg
new file mode 100644
index 00000000..3cb39038
--- /dev/null
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/images/bg-active.svg
@@ -0,0 +1,16 @@
+<svg width="83" height="26" viewBox = "min-x min-y width height" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Group 1142814474">
+<path id="Rectangle 3602" d="M10.25 25H6C3.23858 25 1 22.7614 1 20V6C1 3.23858 3.23858 1 6 1H10.25M74.75 25H77C79.7614 25 82 22.7614 82 20V6C82 3.23858 79.7614 1 77 1H74.75" stroke="url(#paint0_linear_308_581)" stroke-width="1.5"/>
+<path id="Rectangle 3618" d="M82 20V6C82 3.23858 79.7614 1 77 1H74.75H10.25H6C3.23858 1 1 3.23858 1 6V20C1 22.7614 3.23858 25 6 25H10.25H74.75H77C79.7614 25 82 22.7614 82 20Z" fill="url(#paint1_linear_308_581)"/>
+</g>
+<defs>
+<linearGradient id="paint0_linear_308_581" x1="40.0452" y1="5.58015" x2="40.0452" y2="24.4504" gradientUnits="userSpaceOnUse">
+<stop stop-color="#39D5BF"/>
+<stop offset="1" stop-color="#1FAED6"/>
+</linearGradient>
+<linearGradient id="paint1_linear_308_581" x1="41.5" y1="1" x2="41.5" y2="25" gradientUnits="userSpaceOnUse">
+<stop stop-color="#20AFD7" stop-opacity="0"/>
+<stop offset="1" stop-color="#39D5BF"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/images/bg.svg b/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/images/bg.svg
new file mode 100644
index 00000000..f9f3f9ae
--- /dev/null
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/images/bg.svg
@@ -0,0 +1,12 @@
+<svg width="83" height="26" viewBox="min-x min-y width height" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Group 1142814479">
+<path id="Rectangle 3602" d="M10.25 25H6C3.23858 25 1 22.7614 1 20V6C1 3.23858 3.23858 1 6 1H10.25M74.75 25H77C79.7614 25 82 22.7614 82 20V6C82 3.23858 79.7614 1 77 1H74.75" stroke="#CACACA" stroke-width="1.5"/>
+<path id="Rectangle 3618" d="M82 20V6C82 3.23858 79.7614 1 77 1H74.75H10.25H6C3.23858 1 1 3.23858 1 6V20C1 22.7614 3.23858 25 6 25H10.25H74.75H77C79.7614 25 82 22.7614 82 20Z" fill="url(#paint0_linear_308_590)"/>
+</g>
+<defs>
+<linearGradient id="paint0_linear_308_590" x1="41.5" y1="1" x2="41.5" y2="25" gradientUnits="userSpaceOnUse">
+<stop stop-color="#CACACA" stop-opacity="0"/>
+<stop offset="1" stop-color="#CACACA"/>
+</linearGradient>
+</defs>
+</svg>
diff --git a/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/index.vue b/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/index.vue
new file mode 100644
index 00000000..5a571264
--- /dev/null
+++ b/ruoyi-ui/src/views/JiHeExpressway/components/TimeLine/LineClick/index.vue
@@ -0,0 +1,274 @@
+<template>
+  <div :class='["TimeLine1", { "auto-size": autoSize }]' ref="TimeLine1Ref">
+    <!-- 节点 -->
+    <div class="node" v-for="(item, index) in data" :key="index" ref="nodeRefs">
+      <span class="top-label keep-ratio-bottom">
+        <slot name="bottom-label" :data="item">
+          {{ item.time }}
+        </slot>
+      </span>
+      <div class="center">
+        <div class="line" v-if="!index" :style="{ width: `${nodeLinesWidth[-1]}px` }" />
+        <div class="circle keep-ratio" :style="{ '--active-color': !item.isActive ? normalColor : activeColor }">
+        </div>
+        <div class="line" :style="{
+          width: `${nodeLinesWidth[index]}px`,
+          borderImage: getBorderImageStyle(item),
+        }" />
+      </div>
+      <slot name="bottom-label" :data="item">
+        <div class="bottom keep-ratio" @click="onClick(item)"
+          :style="{ backgroundImage: `url(${require(`./images/bg${item.isActive ? '-active' : ''}.svg`)})` }">
+          {{ item.label }}
+        </div>
+      </slot>
+    </div>
+
+  </div>
+</template>
+
+<script>
+
+function getPositionAtCenter(element) {
+  const { top, left } = element.getBoundingClientRect();
+
+  return {
+    x: left,
+    y: top
+  };
+}
+
+function getDistanceBetweenElements(domA, domB) {
+  const domAPosition = getPositionAtCenter(domA);
+  const domBPosition = getPositionAtCenter(domB);
+
+  return Math.hypot(domAPosition.x - domBPosition.x, domAPosition.y - domBPosition.y);
+}
+
+export default {
+  name: 'TimeLine1',
+  props: {
+    data: {
+      type: Array,
+      default: () => Array.from({ length: 15 }).map(() => ({
+        time: "16.36",
+        label: "阿发",
+        isActive: false
+      }))
+    },
+    activeColor: {
+      type: String,
+      default: "#39D5BF"
+    },
+    normalColor: {
+      type: String,
+      default: "#ccc"
+    },
+    lineActiveColor: {
+      type: String,
+      default: "linear-gradient(90deg, rgba(59, 216, 188, 1), rgba(29, 171, 215, 1)}) 2 2"
+    },
+    lineNormalColor: {
+      type: String,
+      default: null
+    },
+    // 自动适配宽度
+    autoSize: {
+      type: Boolean,
+      default: true
+    },
+    filterDistance: {
+      type: Function,
+      default: null
+    }
+  },
+  data() {
+    return {
+      nodeLinesWidth: {}
+    }
+  },
+  watch: {
+    data: {
+      handler(data) {
+        let needFilter = false
+        const nodeLinesWidth = [];
+
+        const filterDistance = num => needFilter ? this.filterDistance(num) : num;
+
+        const removeDistance = 20 + 4 * 2;
+
+        function getDistance(index) {
+          return filterDistance(getDistanceBetweenElements(
+            this.$refs.nodeRefs[index].querySelector('.center'),
+            this.$refs.nodeRefs[index + 1].querySelector('.center'))
+          ) - removeDistance
+        };
+
+        function getSpecialDistance(index) {
+          return filterDistance(getDistanceBetweenElements(
+            this.$refs.nodeRefs[index].parentElement,
+            this.$refs.nodeRefs[index].querySelector('.center'))
+          ) - removeDistance
+        }
+
+        const getLineWidths = () => {
+          nodeLinesWidth.length = 0;
+
+          data.forEach((_, index) => {
+            if (index === data.length - 1) {
+              if (this.autoSize) {
+                nodeLinesWidth[-1] = getSpecialDistance.call(this, 0)
+                nodeLinesWidth[data.length - 1] = getSpecialDistance.call(this, data.length - 1)
+              }
+
+              return
+            };
+
+            nodeLinesWidth[index] = getDistance.call(this, index);
+          });
+
+          this.nodeLinesWidth = nodeLinesWidth;
+        }
+
+        this.$nextTick(() => {
+          const timeLine1RefDom = this.$refs.TimeLine1Ref;
+          if (timeLine1RefDom.clientWidth != timeLine1RefDom.getBoundingClientRect().width) {
+            needFilter = true
+          }
+          getLineWidths();
+        })
+      },
+      immediate: true
+    }
+  },
+  methods: {
+    getBorderImageStyle(item) {
+      const linearColor = item.isActive ? (this.lineActiveColor || `${this.activeColor}, ${this.activeColor}`) : (this.lineNormalColor || `${this.normalColor}, ${this.normalColor}`)
+
+      return `linear-gradient(90deg, ${linearColor}) 2 2`
+    },
+    onClick(item) {
+      this.data.forEach(it => {
+        if (it.id == item.id) {
+          it.isActive = true;
+        } else {
+          it.isActive = false;
+        }
+      })
+      this.$emit('update:tableData', item.id);
+      // console.log('data', item)
+    }
+  }
+}
+</script>
+
+<style lang='scss' scoped>
+div.auto-size {
+  justify-content: space-between;
+  overflow: hidden;
+
+  .node {
+    flex: 1;
+    min-width: auto !important;
+
+    &:first-child,
+    &:last-child {
+      .line {
+        width: auto;
+      }
+    }
+  }
+}
+
+.TimeLine1 {
+  color: #fff;
+  width: auto;
+
+  font-size: 14px;
+  font-family: PingFang SC, PingFang SC;
+  font-weight: 400;
+  color: #FFFFFF;
+  display: flex;
+  flex-wrap: nowrap;
+  overflow: auto;
+  gap: 15px;
+  padding-left: 15px;
+
+  .node {
+    display: flex;
+    align-items: center;
+    // justify-content: center;
+    flex-direction: column;
+    gap: 3px;
+    min-width: 90px;
+
+    .top-label {
+      line-height: 16px;
+      height: 24px;
+    }
+
+    .center {
+      display: flex;
+      align-items: center;
+      justify-content: center;
+      gap: 6px;
+      position: relative;
+
+      .circle {
+        border: 1px solid var(--active-color, #39D5BF);
+        border-radius: 50%;
+        width: 15px;
+        height: 15px;
+        position: relative;
+
+        &::before {
+          content: "";
+          position: absolute;
+          width: 72%;
+          height: 72%;
+          border-radius: 50%;
+          left: 50%;
+          top: 50%;
+          transform: translate(-50%, -50%);
+          background-color: var(--active-color, #39D5BF);
+        }
+      }
+
+
+      .line {
+        position: absolute;
+        height: 0px;
+        opacity: 1;
+        border: 2px solid;
+        //border-image: linear-gradient(90deg, rgba(59, 216, 188, 1), rgba(29, 171, 215, 1)) 2 2;
+        border-image: linear-gradient(90deg, rgb(204, 204, 204), rgb(204, 204, 204)) 2 / 1 / 0 stretch;
+        
+        &:first-child {
+          right: calc(50% + 8px + 6px);
+        }
+
+        &:last-child {
+          left: calc(50% + 8px + 6px);
+        }
+      }
+    }
+
+    &:first-child,
+    &:last-child {
+      .line {
+        width: 60px;
+      }
+    }
+
+    .bottom {
+      line-height: 16px;
+      background-repeat: no-repeat;
+      background-size: 100% 100%;
+      min-width: 90px;
+      text-align: center;
+      padding: 6px 12px;
+      height: 27px;
+    }
+  }
+}
+</style>
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/commonPhrases/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/commonPhrases/index.vue
index 673193e6..f9a39d87 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/commonPhrases/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/commonPhrases/index.vue
@@ -1,17 +1,38 @@
 <template>
     <Dialog v-model="modelVisible" title="配置常用语">
-        <Button style="margin: 10px 0 20px 20px; width: 100px;" @click.native="onAdd">添加</Button>
+        <!-- <Button style="margin: 10px 0 20px 20px; width: 100px;" @click.native="onAdd">添加</Button> -->
+        <div class="header">
+            <el-form ref="form" label-width="120px">
+                <el-form-item label="事件类型">
+                    <el-select v-model="eventType" placeholder="请选择" style="width: 220px">
+                        <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div>
+            <TimeLine1 :data="process" @update:tableData="updateTableData" />
+        </div>
         <div class="EventDetail">
-            <Table :data="tableData">
-                <ElTableColumn prop="phrases" label="常用语" width="720" align="center">
+            <Table :data="getTableData()" :show-header="false">
+                <ElTableColumn label="步骤" width="110" align="center">
                     <template slot-scope="scope">
-                        <ElInput type="textarea" v-model="scope.row.phrases" :autosize="{ minRows: 2, maxRows: 2 }"
-                            :maxlength="150" showWordLimit placeholder="请输入常用语内容" />
+                        {{ `${scope.$index + 1}` }}
                     </template>
                 </ElTableColumn>
-                <ElTableColumn label="操作" width="110" align="center">
+                <ElTableColumn prop="phrases" label="常用语" width="550" align="center">
                     <template slot-scope="scope">
-                        <ElButton type="text" style="color: #ea4d2d;" @click.native="onDel(scope.$index)">删除</ElButton>
+                        <ElInput type="textarea" style="margin-top: 5px;" v-model="scope.row.phrases"
+                            :autosize="{ minRows: 2, maxRows: 2 }" :maxlength="150" showWordLimit placeholder="请输入常用语内容" />
+                    </template>
+                </ElTableColumn>
+                <ElTableColumn label="操作" width="160" align="center">
+                    <template slot-scope="scope">
+                        <ElButton class="elButton" icon="el-icon-plus" plain size="mini"
+                            @click.native="onAdd(scope.row.id)" />
+                        <ElButton class="elButton" icon="el-icon-delete" plain size="mini"
+                            @click.native="onDel(scope.$index)" />
                     </template>
                 </ElTableColumn>
             </Table>
@@ -30,6 +51,7 @@ import Dialog from "@screen/components/Dialog/index";
 import Table from '@screen/components/Table.vue';
 import Button from '@screen/components/Buttons/Button.vue';
 import request from "@/utils/request";
+import TimeLine1 from "@screen/components/TimeLine/LineClick/index";
 import { Message } from 'element-ui'
 
 
@@ -39,6 +61,7 @@ export default {
         Dialog,
         Button,
         Table,
+        TimeLine1
     },
     model: {
         prop: 'visible',
@@ -46,11 +69,66 @@ export default {
     },
     props: {
         visible: Boolean,
-        eventType: Number
+        eventType: Number,
+        // process: {
+        //     type: Array,
+        //     default: () => []
+        // }
     },
     data() {
         return {
-            tableData: []
+            tableData: [{
+                phrases: ''
+            }],
+            // eventType: 1,
+            options: [
+                {
+                    value: 1,
+                    label: '交通事故'
+                },
+                {
+                    value: 2,
+                    label: '车辆故障'
+                },
+                {
+                    value: 3,
+                    label: '交通管制'
+                },
+                {
+                    value: 4,
+                    label: '交通拥堵'
+                },
+                {
+                    value: 5,
+                    label: '非法上路'
+                },
+                {
+                    value: 6,
+                    label: '路障清除'
+                },
+                {
+                    value: 7,
+                    label: '施工建设'
+                },
+                {
+                    value: 8,
+                    label: '服务区异常'
+                },
+                {
+                    value: 9,
+                    label: '设施设备隐患'
+                },
+                {
+                    value: 10,
+                    label: '异常天气'
+                },
+                {
+                    value: 11,
+                    label: '其他事件'
+                }
+            ],
+            process: [],
+            id: 0
         }
     },
     computed: {
@@ -74,31 +152,79 @@ export default {
                 method: "get",
             }).then(result => {
                 if (result.code != 200) return Message.error(result.msg);
-
-                result.data.processConfigList?.forEach(it => {
-                    const phrs = it.commonPhrases.split(',');
-                    phrs?.forEach(phr => {
-                        if (phr && !this.tableData.find(op => op.phrases == phr)) this.tableData.push({ phrases: phr })
+                //流程列表
+                this.process = [];
+                this.tableData = [];
+                result.data.processConfigList?.forEach((it, index) => {
+                    let commonPhrasesArr = it.commonPhrases ? it.commonPhrases.split(',') : [''];
+                    let phrs = [];
+                    commonPhrasesArr?.forEach(phr => {
+                        phrs.push({ id: it.id, phrases: phr })
                     })
-
+                    this.process.push({
+                        ...it,
+                        phrs: phrs,
+                        label: it.processNode,
+                        isActive: index == 0 ? true : false,
+                    })
+                    if (index == 0) {
+                        this.id = it.id;
+                        this.tableData = phrs;
+                    }
                 })
 
             })
-
-
         },
-        onAdd() {
+        getTableData() {
+            let rows = this.process.find(item => item.id == this.id);
+            return rows?.phrs || [];
+        },
+        updateTableData(id = 1) {
+            this.id = id;
+            this.tableData = [];
+            let pros = this.process.find(item => item.id == id);
+            this.tableData = pros.phrs;
+        },
+        onAdd(id) {
             this.tableData.push({
+                id: id,
                 phrases: ''
             })
         },
         onDel(index) {
+            if (this.tableData.length <= 1) {
+                return Message.warning('最后一项不可删除!');
+            }
             this.tableData.splice(index, 1)
         },
         submitTable() {
-            this.$emit('update:phrasesData', this.tableData)
-            this.modelVisible = false;
-            console.log(this.tableData)
+            let data = []
+            this.process.forEach((lc) => {
+                let commonPhrases = [];
+                lc.phrs.forEach(phr => { if (phr.phrases) commonPhrases.push(phr.phrases) })
+                data.push({
+                    commonPhrases: commonPhrases.join(','),
+                    id: lc.id,
+                    eventType: lc.eventType,
+                    nodeNode: lc.nodeNode,
+                    processNode: lc.processNode
+                })
+            })
+            console.log('data', data)
+            // return;
+            request({
+                url: `/business/dcEventType/updateDcProcessConfig`,
+                method: "post",
+                data: {
+                    eventType: this.eventType,
+                    processConfigList: data
+                }
+            }).then(result => {
+                if (result.code != 200) return Message.error(result.msg);
+                Message.success(result.msg);
+                this.modelVisible = false;
+                this.$emit('reInitData', true)
+            })
         }
     }
 }
@@ -110,6 +236,7 @@ export default {
     gap: 9px;
     width: 836px;
     height: 768px;
+    margin-top: 20px;
     flex-direction: column;
 
     .video-pic {
@@ -118,5 +245,19 @@ export default {
         gap: 15px
     }
 }
+
+.elButton {
+    background: #2ba8c3;
+    border-radius: 2px 2px 2px 2px;
+    color: #FFFFFF;
+}
+
+.elButton:hover,
+.elButton:focus {
+    background: #2ba8c3;
+    border-radius: 2px 2px 2px 2px;
+    border-color: #FFFFFF;
+    color: #FFFFFF;
+}
 </style>
   
\ No newline at end of file
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/disposalProcess/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/disposalProcess/index.vue
index fdf49cf2..8ac44053 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/disposalProcess/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/disposalProcess/index.vue
@@ -1,34 +1,46 @@
 <template>
     <Dialog v-model="modelVisible" title="配置处置流程">
-        <Button style="margin: 10px 0 20px 20px; width: 100px;" @click.native="onAdd">添加</Button>
+        <div class="header">
+            <el-form ref="form" label-width="120px">
+                <el-form-item label="事件类型">
+                    <el-select v-model="eventType" placeholder="请选择" style="width: 220px">
+                        <el-option v-for="item in eventTypeOptions" :key="item.value" :label="item.label"
+                            :value="item.value">
+                        </el-option>
+                    </el-select>
+                </el-form-item>
+            </el-form>
+        </div>
         <div class="EventDetail">
-            <Table :data="tableData">
+            <Table :data="tableData" :show-header="false">
                 <ElTableColumn label="步骤" width="110" align="center">
                     <template slot-scope="scope">
-                        {{ `步骤${scope.$index + 1}` }}
+                        {{ `${scope.$index + 1}` }}
                     </template>
                 </ElTableColumn>
-                <ElTableColumn prop="phrases" label="处置流程" width="610" align="center">
+                <ElTableColumn prop="phrases" label="处置流程" width="570" align="center">
                     <template slot-scope="scope">
-                        <ElForm :model="scope.row" inline>
-                            <ElFormItem label="流程名称">
+                        <ElInput v-model="scope.row.processNode" placeholder="请输入流程名称" />
+                        <ElForm :model="scope.row" inline :ref="'scopeForm' + scope.$index">
+                            <!-- <ElFormItem label="流程名称" :rules="[{ required: true, message: '流程名称不能为空' }]">
                                 <ElInput v-model="scope.row.processNode" placeholder="请输入流程名称" />
-                            </ElFormItem>
-                            <ElFormItem label="常用语">
+                            </ElFormItem> -->
+                            <!-- <ElFormItem label="常用语">
                                 <ElSelect class="disposal-process-select" v-model="scope.row.commonPhrases" multiple
                                     :collapse-tags="true">
                                     <ElOption v-for="item in options" :key="item.key || item.value" :label="item.label"
                                         :value="item.key || item.value">
                                     </ElOption>
                                 </ElSelect>
-                            </ElFormItem>
+                            </ElFormItem> -->
                         </ElForm>
                         <!-- <Form :formList="formList" :dFormData="scope.row" label-width="100px" /> -->
                     </template>
                 </ElTableColumn>
-                <ElTableColumn label="操作" width="110" align="center">
+                <ElTableColumn label="操作" width="150" align="center">
                     <template slot-scope="scope">
-                        <ElButton type="text" style="color: #ea4d2d;" @click.native="onDel(scope.$index)">删除</ElButton>
+                        <ElButton class="elButton" icon="el-icon-plus" plain size="mini" @click.native="onAdd" />
+                        <ElButton class="elButton" icon="el-icon-delete" plain size="mini" @click.native="onDel(scope.$index)" />
                     </template>
                 </ElTableColumn>
             </Table>
@@ -73,7 +85,13 @@ export default {
     },
     data() {
         return {
-            tableData: [],
+            tableData: [{
+                id: '',
+                eventType: '',
+                nodeNode: '',
+                processNode: '',
+                commonPhrases: ''
+            }],
             formList: [
                 {
                     label: "流程名称:",
@@ -93,7 +111,53 @@ export default {
                     }
                 },
             ],
-            options: []
+            options: [],
+            eventTypeOptions: [
+                {
+                    value: 1,
+                    label: '交通事故'
+                },
+                {
+                    value: 2,
+                    label: '车辆故障'
+                },
+                {
+                    value: 3,
+                    label: '交通管制'
+                },
+                {
+                    value: 4,
+                    label: '交通拥堵'
+                },
+                {
+                    value: 5,
+                    label: '非法上路'
+                },
+                {
+                    value: 6,
+                    label: '路障清除'
+                },
+                {
+                    value: 7,
+                    label: '施工建设'
+                },
+                {
+                    value: 8,
+                    label: '服务区异常'
+                },
+                {
+                    value: 9,
+                    label: '设施设备隐患'
+                },
+                {
+                    value: 10,
+                    label: '异常天气'
+                },
+                {
+                    value: 11,
+                    label: '其他事件'
+                }
+            ]
         }
     },
     computed: {
@@ -113,33 +177,46 @@ export default {
         getProcess() {
             let addFlg = true;
             this.tableData = [];
-            this.phrasesData.forEach(it => {
-                this.options.push({
-                    key: it.phrases
-                })
-                addFlg = false;
-            })
+            // this.phrasesData.forEach(it => {
+            //     this.options.push({
+            //         key: it.phrases
+            //     })
+            //     addFlg = false;
+            // })
 
             request({
                 url: `/business/dcEventType/${this.eventType}`,
                 method: "get",
             }).then(result => {
                 if (result.code != 200) return Message.error(result.msg);
-                this.eventType = result.data.eventType;
-
-                result.data.processConfigList?.forEach(it => {
-                    const phrs = it.commonPhrases.split(',');
-                    if (addFlg) {
-                        phrs?.forEach(phr => {
-                            if (phr && !this.options.find(op => op.key == phr)) this.options.push({ key: phr })
-                        })
-                    }
-                    if (phrs && phrs[0]) {
-                        it.commonPhrases = phrs
-                    }
-                })
+                // this.eventType = result.data.eventType;
+
+                // result.data.processConfigList?.forEach(it => {
+                //     const phrs = it.commonPhrases.split(',');
+                //     if (addFlg) {
+                //         phrs?.forEach(phr => {
+                //             if (phr && !this.options.find(op => op.key == phr)) this.options.push({ key: phr })
+                //         })
+                //     }
+                //     if (phrs && phrs[0]) {
+                //         it.commonPhrases = phrs
+                //     }
+                // })
+
+                if (result.data.processConfigList.length > 0) {
+                    this.tableData = result.data.processConfigList;
+                } else {
+                    this.tableData = [
+                        {
+                            id: '',
+                            eventType: '',
+                            nodeNode: '',
+                            processNode: '',
+                            commonPhrases: ''
+                        }
+                    ]
+                }
 
-                this.tableData = result.data.processConfigList;
                 // console.log('this.tableData', this.tableData)
 
             })
@@ -149,26 +226,32 @@ export default {
         onAdd() {
             this.tableData.push({
                 // eventType: this.eventType,
-                commonPhrases: [],
+                commonPhrases: '',
                 processNode: '',
                 // nodeNode: 1
             })
         },
         onDel(index) {
+            if (this.tableData.length <= 1) {
+                return Message.warning('最后一项不可删除!');
+            }
             this.tableData.splice(index, 1)
         },
         submitTable() {
             let data = []
+            let flg = false;
             this.tableData.forEach((it, index) => {
+                if (!it.processNode) return flg = true;
                 data.push({
-                    commonPhrases: it.commonPhrases.join(','),
+                    commonPhrases: it.commonPhrases,
                     eventType: this.eventType,
                     nodeNode: index + 1,
                     processNode: it.processNode
                 })
             })
+            if (flg) return Message.error('节点名称不能为空');
             // console.log(data)
-
+            // return;
             request({
                 url: `/business/dcEventType/updateDcProcessConfig`,
                 method: "post",
@@ -202,6 +285,19 @@ export default {
         gap: 15px
     }
 }
+
+.elButton {
+    background: #2ba8c3;
+    border-radius: 2px 2px 2px 2px;
+    color: #FFFFFF;
+}
+.elButton:hover,
+.elButton:focus {
+    background: #2ba8c3;
+    border-radius: 2px 2px 2px 2px;
+    border-color: #FFFFFF;
+    color: #FFFFFF;
+}
 </style>
 
 <style lang="scss">
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/index.vue
index 8e20d1ca..3c3265af 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/emergencyProcessManagement/index.vue
@@ -28,16 +28,16 @@
         <ElTableColumn prop="processConfig" label="处置流程" />
         <ElTableColumn label="操作" width="210">
           <template slot-scope="scope">
-            <ElButton type="text" style="color: #00EBC1;" @click="showPhrases(scope.row.eventType)">常用语</ElButton>
             <ElButton type="text" style="color: #00D1FF;" @click="showDisposal(scope.row.eventType)">流程配置</ElButton>
+            <ElButton type="text" style="color: #00EBC1;" @click="showPhrases(scope.row)">常用语</ElButton>
           </template>
         </ElTableColumn>
       </Table>
     </div>
 
     <!-- 配置常用户弹窗 -->
-    <CommonPhrases :visible="isShowPhrases" :eventType="eventType" @update:value="onClosePhrases"
-      @update:phrasesData="onUpdatePhrasesData" />
+    <CommonPhrases :visible="isShowPhrases" :eventType="eventType" :process="process" @update:value="onClosePhrases"
+      @update:phrasesData="onUpdatePhrasesData" @reInitData="initData" />
     <!-- "流程配置"弹出框 -->
     <DisposalProcess :visible="isShowDisposal" :eventType="eventType" :phrasesData="phrasesData"
       @update:value="onCloseDisposal" @reInitData="initData" />
@@ -82,7 +82,8 @@ export default {
         pageSize: 20,
         pageNum: 1,
       },
-      phrasesData: []
+      phrasesData: [],
+      process: []
     }
   },
   created() {
@@ -110,9 +111,23 @@ export default {
       this.searchData.pageSize = pageSize;
       this.getData();
     },
-    showPhrases(eventType) {
+    showPhrases(data) {
+      if (data?.processConfigList.length <= 0) {
+        Message.warning('请先配置流程!');
+        return;
+      }
+      let process = []
+      data.processConfigList.forEach(it => {
+        process.push({
+          id: it.id,
+          commonPhrases: it.commonPhrases,
+          label: it.processNode,
+          isActive: false,
+        })
+      })
+      this.process = process;
       this.isShowPhrases = true;
-      this.eventType = eventType;
+      this.eventType = data.eventType;
     },
     showDisposal(eventType) {
       this.isShowDisposal = true;

From 833fdeba42a46066b3a420e455179f1c29230781 Mon Sep 17 00:00:00 2001
From: zhoule <zz221011@163.com>
Date: Thu, 29 Feb 2024 18:07:16 +0800
Subject: [PATCH 6/8] bug

---
 .../components/eventQuery/index.vue           |  59 +++++--
 .../components/railway/index.vue              |   5 +-
 .../components/railwayDay/assets/charts.js    |   2 +
 .../components/railwayDay/index.vue           |   8 +-
 .../components/IndicatorQuery/index.vue       | 162 +++---------------
 5 files changed, 79 insertions(+), 157 deletions(-)

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 6df8e7ad..732221aa 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
@@ -18,12 +18,12 @@
         </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'
-                  : ''
+            ? '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>
@@ -34,8 +34,9 @@
     <div class="body">
       <div>
         <WgtTitle :title="'感知事件趋势分析'"></WgtTitle>
-        <Empty v-show="!chart1List || chart1List.length <= 0" text="暂无数据..."></Empty>
-        <div v-show="chart1List || chart1List.length > 0" id="chart1" class="btnChart" />
+        <!-- <Empty v-show="!chart1List || chart1List.length <= 0" text="暂无数据..."></Empty> -->
+        <!-- <div v-show="chart1List || chart1List.length > 0" id="chart1" class="btnChart" />-->
+        <div id="chart1" class="btnChart" />
       </div>
 
       <div>
@@ -249,6 +250,43 @@ export default {
           let data = res.data;
           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 = []
+            for (let index = 1; index <= daysInMonth; index++) {
+              pData.push({
+                day: index,
+                number: sData[index] || 0
+              })
+            }
+            data = pData;
+          }
+          //季度单独处理
+          if (this.type == "quarter") {
+            let quarterMap = {
+              1: [1, 2, 3],
+              2: [4, 5, 6],
+              3: [7, 8, 9],
+              4: [10, 11, 12],
+            };
+            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
+              })
+            }
+            data = pData;
+          }
+
           if (data.length > 0) {
             const maxObject = data.reduce((prev, current) =>
               current.number > prev.number ? current : prev
@@ -261,10 +299,11 @@ export default {
                 xData.push(it.month + "月");
               }
               if (this.type == "month") {
-                xData.push(it.day.split("-")[2] + "日");
+                // xData.push(it.day.split("-")[2] + "日");
+                xData.push(it.day + "日");
               }
               if (this.type == "date") {
-                xData.push(it.time.split(" ")[1] + "时");
+                xData.push(it.time + "时");
               }
               if (this.type == "quarter") {
                 xData.push(it.month + "月");
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railway/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railway/index.vue
index 74e7399f..8138e20b 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railway/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railway/index.vue
@@ -52,9 +52,10 @@ export default {
 
             let texts = [];
             let datas = [];
-            data.forEach((it) => {
+            data.forEach((it,index) => {
+              if(index > 9) return;
               texts.push(it.sectionName);
-              datas.push(it.number);
+              datas.push(it.number2);
             });
 
             chartsStatistics.yAxis[0].data = texts;
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railwayDay/assets/charts.js b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railwayDay/assets/charts.js
index 2de31be1..0fb39268 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railwayDay/assets/charts.js
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railwayDay/assets/charts.js
@@ -82,6 +82,8 @@ var options = {
       show: true,
       color: "#fff",
       fontSize: 10,
+      // interval: 0, 
+      // rotate: -20
     },
   },
   yAxis: [
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railwayDay/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railwayDay/index.vue
index 8e043c37..dda2144c 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railwayDay/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/eventDetection/components/railwayDay/index.vue
@@ -47,15 +47,15 @@ export default {
               let texts = [];
               let datas = [];
               const maxObject = data.reduce((prev, current) =>
-                current.number > prev.number ? current : prev
+                current.number2 > prev.number2 ? current : prev
               );
 
               data.forEach((it) => {
                 texts.push(it.sectionName);
 
-                if (it.number == maxObject.number) {
+                if (it.number2 == maxObject.number2) {
                   datas.push({
-                    value: it.number,
+                    value: it.number2,
                     itemStyle: {
                       color: {
                         type: "linear",
@@ -80,7 +80,7 @@ export default {
                   });
                 } else {
                   datas.push({
-                    value: it.number,
+                    value: it.number2,
                     itemStyle: {
                       borderRadius: 6,
                     },
diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorQuery/index.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorQuery/index.vue
index e365ea3e..65b34ee1 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorQuery/index.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/perception/trafficSituation/components/IndicatorQuery/index.vue
@@ -36,7 +36,7 @@
     <!-- 分页 -->
     <div class="footer">
       <Pagination @current-change="getData" @size-change="onSizeChange" width="'100%'" :page-sizes="[10, 20, 30, 40, 50]"
-        :page-size="pageSize" :current-page.sync="pageNum" layout="total, sizes, prev, pager, next" :total="50">
+        :page-size="pageSize" :current-page.sync="pageNum" layout="total, sizes, prev, pager, next" :total="10">
       </Pagination>
     </div>
   </div>
@@ -61,164 +61,44 @@ export default {
     return {
       tableData: [{
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '大学城-长活'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '长湑-孝里'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '孝里-平阴北平阴北-平阴'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '平阴-平阴南'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '平阴南-东平'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '平明-平阴南'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '平明南-东平'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '孝里-平阴北平明北-平明'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '平阴-平阴南'
       }, {
         date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, , {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, , {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, , {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, , {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, , {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, , {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, , {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, , {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
-      }, {
-        date: '2023-12-31 13:00:00',
-        name: '2640.78m',
-        address: 'K100+000-K110+000'
+        name: '畅通',
+        address: '平阴-平阴南'
       },
       ],
       formList: [],

From b32b707aa637b51888c7095e913871838cf8289d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Thu, 29 Feb 2024 18:16:00 +0800
Subject: [PATCH 7/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8E=86=E5=8F=B2?=
 =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=97=A0=E6=B3=95=E5=85=B3=E9=97=AD=E9=97=AE?=
 =?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/OperateRecord.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/OperateRecord.vue
index d82f3f4e..061f189b 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/OperateRecord.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/OperateRecord.vue
@@ -6,8 +6,8 @@
       <div class="no-data" v-else>暂无操作记录</div>
 
       <div class="bottom">
-        <Button>确认</Button>
-        <Button :style="{ backgroundColor: '#C9C9C9' }"> 取消</Button>
+        <Button @click.native="$emit('close')">确认</Button>
+        <Button :style="{ backgroundColor: '#C9C9C9' }" @click.native="$emit('close')"> 取消</Button>
       </div>
     </div>
   </Dialog>

From 56b37d1d9ca98cb6242a05bafaf93448852d61dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=88=98=E6=9C=8B?= <lbp608@126.com>
Date: Thu, 29 Feb 2024 18:18:18 +0800
Subject: [PATCH 8/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=80=BC=E7=8F=AD?=
 =?UTF-8?q?=E4=BA=BA=E5=91=98=E4=BF=AE=E6=94=B9=E7=9B=B8=E5=85=B3=E9=97=AE?=
 =?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../components/ModifyDutyInformationTable.vue | 160 ++++++++++++------
 .../views/dutyOfficer/index.vue               |  11 +-
 2 files changed, 113 insertions(+), 58 deletions(-)

diff --git a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/ModifyDutyInformationTable.vue b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/ModifyDutyInformationTable.vue
index ee7b93cb..17b06b5c 100644
--- a/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/ModifyDutyInformationTable.vue
+++ b/ruoyi-ui/src/views/JiHeExpressway/pages/control/event/businessDataManagement/views/dutyOfficer/components/ModifyDutyInformationTable.vue
@@ -20,8 +20,9 @@
           <div :class="['line', { active: active == 'dayShift' }]">
             <p @click="active = 'dayShift'">白天值班:</p>
             <div>
-              <p v-for="(item, index) in dayShift" :key="`${item.id}_${index}`" @click="removeDutyPerson(item)">{{
-                item.name }}</p>
+              <p v-for="(item, index) in dayShift" :key="`${item.id}_${index}`" @click="removeDutyPerson(item)">
+                {{ item.name }}
+              </p>
               <div class="no-data" v-if="!dayShift.length">未添加人员</div>
             </div>
           </div>
@@ -29,8 +30,9 @@
           <div :class="['line', { active: active == 'graveyardShift' }]">
             <p @click="active = 'graveyardShift'">晚上值班:</p>
             <div>
-              <p v-for="(item, index) in graveyardShift" :key="`${index}_${item.id}`" @click="removeDutyPerson(item)">{{
-                item.name }}</p>
+              <p v-for="(item, index) in graveyardShift" :key="`${index}_${item.id}`" @click="removeDutyPerson(item)">
+                {{ item.name }}
+              </p>
               <div class="no-data" v-if="!graveyardShift.length">未添加人员</div>
             </div>
           </div>
@@ -141,7 +143,8 @@ export default {
   },
   methods: {
     chooseDutyPerson(item) {
-      const hasInserted = this[this.active].find(_item => _item.id === item.id);
+
+      const hasInserted = this[this.active].find(_item => _item.employeesId === item.id || _item.id === item.id);
 
       if (hasInserted) return Message.warning("人员已存在");
 
@@ -150,11 +153,11 @@ export default {
     removeDutyPerson(item) {
       const index = this[this.active].findIndex(_item => _item.id === item.id);
 
-      if (index === -1) return Message.warning("人员不存在");
+      if (index === -1) return;//Message.warning("人员不存在");
 
       this[this.active].splice(index, 1);
     },
-    getPeopleList(id) {
+    getPeopleList(stationId) {
       this.peopleList = [];
 
       this.dayShift = [];
@@ -163,32 +166,44 @@ export default {
       const closeMessage = loadingMessage({ message: "人员获取中..." });
 
       request({
-        // url: `/business/employees/list`,
-        // method: "GET",
-        // params: {
-        //   organizationId: id
-        // }
-        url: `/business/shifts/byStation`,
-        method: "POST",
-        data: {
-          station: this.data.station,
-          date: this.data.date,
+        url: `/business/employees/list`,
+        method: "GET",
+        params: {
+          organizationId: stationId
         }
-      })
-        .then((result) => {
-          if (result.code != 200) return Message.error("人员获取失败");
-          if (!result.data?.length) return Message.warning("该驻点下暂无人员");
+      }).then((result) => {
+        if (result.code != 200) return Message.error("人员获取失败");
+        if (!result.rows?.length) return Message.warning("该驻点下暂无人员");
 
-          Message.success("人员获取成功")
+        // Message.success("人员获取成功")
 
-          this.peopleList = result.data;
-        })
-        .catch((err) => {
+        this.peopleList = result.rows;
+      }).catch((err) => {
+        Message.error("人员获取失败")
+      }).finally(() => {
+        closeMessage();
+      })
+
+      //修改时,获取已排版人员列表
+      if (this.data) {
+        request({
+          url: `/business/shifts/byStation`,
+          method: "POST",
+          data: {
+            station: this.data.station,
+            date: this.data.date,
+          }
+        }).then((result) => {
+          console.log("result.data:", result.data);
+          this.dayShift = result.data.filter(item => item.scheduling === "1");
+          console.log("this.dayShift11:", this.dayShift);
+          this.graveyardShift = result.data.filter(item => item.scheduling === "2");
+        }).catch((err) => {
           Message.error("人员获取失败")
-        })
-        .finally(() => {
+        }).finally(() => {
           closeMessage();
         })
+      }
     },
     updateData(data) {
       return request({
@@ -197,13 +212,14 @@ export default {
         data: {
           date: data.date,
           employeesJson: [
-            ...this.dayShift.map(({ id }) => ({
-              employeesId: id,
+            ...this.dayShift.map((item) => ({
+              //添加和修改时,人员id字段来源不一样
+              employeesId: item.employeesId ? item.employeesId : item.id,
               scheduling: 1,
               station: data.station
             })),
-            ...this.graveyardShift.map(({ id }) => ({
-              employeesId: id,
+            ...this.graveyardShift.map((item) => ({
+              employeesId: item.employeesId ? item.employeesId : item.id,
               scheduling: 2,
               station: data.station
             })),
@@ -214,26 +230,24 @@ export default {
     async submit() {
       let data = this.data;
 
-      if (this.$refs.FormRef)
+      if (this.$refs.FormRef) {
         data = await this.$refs.FormRef.validate();
-      console.log("%c [ data ]-202-「ModifyDutyInformationTable.vue」", "font-size:15px; background:#9afce6; color:#deffff;", data, this.value2);
+      }
+      // console.log("%c [ data ]-202-「ModifyDutyInformationTable.vue」", "font-size:15px; background:#9afce6; color:#deffff;", data, this.value2);
 
-      const closeMessage = loadingMessage({ message: "正在保存值班信息..." });
+      const closeMessage = loadingMessage({ message: "正在保存值班信息111..." });
 
       if (!this.data) {
-        this.updateData(data)
-          .then((result) => {
-            console.log("%c [ result ]-217-「ModifyDutyInformationTable.vue」", "font-size:15px; background:#335cf6; color:#77a0ff;", result);
+        this.updateData(data).then((result) => {
+            // console.log("%c [ result ]-217-「ModifyDutyInformationTable.vue」", "font-size:15px; background:#335cf6; color:#77a0ff;", result);
             if (result.code != 200) return Message.error("保存失败");
 
             Message.success("保存成功");
 
             this.$emit('close')
-          })
-          .catch((err) => {
+          }).catch((err) => {
             Message.error("保存失败")
-          })
-          .finally(() => {
+          }).finally(() => {
             closeMessage();
           })
         return;
@@ -244,31 +258,71 @@ export default {
         (this.data.dayShift || []).forEach(item => {
           const findIndex = this.dayShift.findIndex(_item => _item.id === item.id);
 
-          if (findIndex === -1) deleteIds.push(item.delId)
+          if (findIndex === -1) deleteIds.push(item.id)
         });
         (this.data.graveyardShift || []).forEach(item => {
           const findIndex = this.graveyardShift.findIndex(_item => _item.id === item.id);
 
-          if (findIndex === -1) deleteIds.push(item.delId)
+
+          if (findIndex === -1) deleteIds.push(item.id)
         })
 
-        Promise.allSettled([
-          deleteIds?.length ? request({
+
+        // Promise.allSettled([
+        //   deleteIds?.length ? request({
+        //     url: `/business/shifts/${deleteIds.join()}`,
+        //     method: "DELETE",
+        //     data: {}
+        //   }) : Promise.resolve(),
+        //   this.updateData(this.data)
+        // ]).then(([del, update]) => {
+        //   if (del.status === 'rejected' && update.status === 'rejected') return Message.error("修改失败");
+        //   if (del.value?.code != '200' && update.value?.code != '200') return Message.error("修改失败");
+
+        //   this.$emit('close')
+        // }).finally(() => {
+        //   closeMessage();
+        // })
+
+        //如果有需要删除的人员,先删除,再更新
+        if(deleteIds?.length){
+          request({
             url: `/business/shifts/${deleteIds.join()}`,
             method: "DELETE",
             data: {}
-          }) : Promise.resolve(),
-          this.updateData(this.data)
-        ])
-          .then(([del, update]) => {
-            if (del.status === 'rejected' && update.status === 'rejected') return Message.error("修改失败");
-            if (del.value?.code != '200' && update.value?.code != '200') return Message.error("修改失败");
+          }).then((result) => {
+            if (result.code != 200) return Message.error("修改失败");
+
+            this.updateData(this.data).then((result) => {
+              if (result.code != 200) return Message.error("修改失败");
+
+              Message.success("修改成功");
+
+              this.$emit('close')
+            }).catch((err) => {
+              Message.error("修改失败")
+            }).finally(() => {
+              closeMessage();
+            })
+          }).catch((err) => {
+            Message.error("删除失败")
+          }).finally(() => {
+            closeMessage();
+          })
+        }else{
+          this.updateData(this.data).then((result) => {
+            if (result.code != 200) return Message.error("修改失败");
+
+            Message.success("修改成功");
 
             this.$emit('close')
-          })
-          .finally(() => {
+          }).catch((err) => {
+            Message.error("修改失败")
+          }).finally(() => {
             closeMessage();
           })
+        }
+        
       }
     }
   }
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 457d2d21..c5e3b6cc 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
@@ -217,11 +217,12 @@ export default {
 
       this.modifyDutyInformationTableVisible = bool;
 
-      this.dialogData = !data ? null : {
-        ...data,
-        dayShift: (data.dayShift || []).map(item => ({ ...item, delId: item.id, id: item.employeesId })),
-        graveyardShift: (data.graveyardShift || []).map(item => ({ ...item, id: item.employeesId }))
-      };
+      // this.dialogData = !data ? null : {
+      //   ...data,
+      //   dayShift: (data.dayShift || []).map(item => ({ ...item, delId: item.id, id: item.employeesId })),
+      //   graveyardShift: (data.graveyardShift || []).map(item => ({ ...item, id: item.employeesId }))
+      // };
+      this.dialogData = data;
     },
     handleExport() {
       exportFile({