diff --git a/src/option/distribution/VehicleStowage.js b/src/option/distribution/VehicleStowage.js
index 2144dfaa..1896d0d9 100644
--- a/src/option/distribution/VehicleStowage.js
+++ b/src/option/distribution/VehicleStowage.js
@@ -762,3 +762,60 @@ export const orderDetailColumnList = [
     sortable: false,
   },
 ];
+
+/** 异常订单 */
+export const abnormalOrderColumnList = [
+  {
+    prop: 'waybillNo',
+    label: '运单号',
+    width: '130',
+    type: 30,
+    values: '',
+    checkarr: [],
+    fixed: true,
+    sortable: false,
+    head: false,
+  },
+  {
+    prop: 'orderCode',
+    label: '订单号',
+    width: '130',
+    type: 30,
+    values: '',
+    checkarr: [],
+    fixed: true,
+    sortable: false,
+    head: false,
+  },
+  {
+    prop: 'planNum',
+    label: '计划数',
+    width: '130',
+    type: 30,
+    values: '',
+    checkarr: [],
+    fixed: true,
+    sortable: false,
+    head: false,
+  },
+  {
+    prop: 'realNum',
+    label: '装车数',
+    width: '130',
+    type: 30,
+    values: '',
+    checkarr: [],
+    fixed: false,
+    sortable: false,
+  },
+  {
+    prop: 'handQuantity',
+    label: '在库数',
+    width: '130',
+    type: 30,
+    values: '',
+    checkarr: [],
+    fixed: false,
+    sortable: false,
+  },
+];
diff --git a/src/utils/print.js b/src/utils/print.js
index fa20edf3..dfb4a3c2 100644
--- a/src/utils/print.js
+++ b/src/utils/print.js
@@ -47,6 +47,13 @@ const print = (nodeList, type = 'deliveryPrint') => {
   // 初始化打印实例
   let LODOP = getLodop();
 
+  // const _count = LODOP.GET_PRINTER_COUNT();
+
+  // for (let index = 0; index < _count; index++) {
+  //   const name = LODOP.GET_PRINTER_NAME(index);
+  //   console.log('name :>> ', name);
+  // }
+
   // 当列表内没有元素时, 退出函数
   if (nodeList.length === 0) return;
 
@@ -68,13 +75,6 @@ const print = (nodeList, type = 'deliveryPrint') => {
 
 const newPrint = nodeName => {
   if (nodeName) return hwyPrintNew(nodeName);
-  // const nodeList = document.querySelectorAll('.el-dialog__body>div>div>div')
-
-  // for (const iterator of nodeList) {
-  //   //$Print(iterator)
-
-  //   console.log(iterator, 'iterator');
-  // }
 
   hwyPrintNew('.el-dialog__body>div>div>div');
 };
diff --git a/src/views/desk/DataBoard.vue b/src/views/desk/DataBoard.vue
index b86d8ec1..e7000ff1 100644
--- a/src/views/desk/DataBoard.vue
+++ b/src/views/desk/DataBoard.vue
@@ -905,13 +905,13 @@
                 () =>
                   handleDetails('trunklineCarsDataColumn', '干线车次统计 - 在途 - 车', {
                     tip: '在途',
-                    prop: 'inTransitNum',
+                    prop: 'onTheWayNum',
                   })
               "
             >
               <div class="data_box mb10">
                 <div class="data mr5px underline">
-                  {{ details.trunklineCarsDataInfo.inTransitNum || 0 }}
+                  {{ details.trunklineCarsDataInfo.onTheWayNum || 0 }}
                 </div>
                 <div class="">车</div>
               </div>
@@ -926,13 +926,13 @@
                 () =>
                   handleDetails('trunklineCarsDataColumn', '干线车次统计 - 作业 - 车', {
                     tip: '作业',
-                    prop: 'workNum',
+                    prop: 'workingNum',
                   })
               "
             >
               <div class="data_box mb10">
                 <div class="data mr5px underline">
-                  {{ details.trunklineCarsDataInfo.workNum || 0 }}
+                  {{ details.trunklineCarsDataInfo.workingNum || 0 }}
                 </div>
                 <div class="">车</div>
               </div>
@@ -947,13 +947,13 @@
                 () =>
                   handleDetails('trunklineCarsDataColumn', '干线车次统计 - 卸车完成 - 车', {
                     tip: '卸车完成',
-                    prop: 'unloadNum',
+                    prop: 'unloadCompleteNum',
                   })
               "
             >
               <div class="data_box mb10">
                 <div class="data mr5px underline">
-                  {{ details.trunklineCarsDataInfo.unloadNum || 0 }}
+                  {{ details.trunklineCarsDataInfo.unloadCompleteNum || 0 }}
                 </div>
                 <div class="">车</div>
               </div>
@@ -1841,10 +1841,10 @@ const details = reactive({
   },
   /** 干线车次数据 */
   trunklineCarsDataInfo: {
-    inTransitNum: 0,
+    onTheWayNum: 0,
     totalNum: 0,
-    unloadNum: 0,
-    workNum: 0,
+    unloadCompleteNum: 0,
+    workingNum: 0,
   },
   /** 异常卸车数据 */
   unloadAbnormalDataInfo: {
@@ -2136,7 +2136,7 @@ const initTrunklineHandOrderData = async () => {
 /** 请求干线车次数据 */
 const initTrunklineCarsData = async () => {
   const _obj: any = {};
-  const _keyArr = ['inTransitNum', 'totalNum', 'unloadNum', 'workNum'];
+  const _keyArr = ['onTheWayNum', 'totalNum', 'unloadCompleteNum', 'workingNum'];
   for (let i = 0; i < _keyArr.length; i++) {
     const value = _keyArr[i];
 
diff --git a/src/views/distribution/artery/VehicleArrivalManagement.vue b/src/views/distribution/artery/VehicleArrivalManagement.vue
index ad328fdc..002e2bb8 100644
--- a/src/views/distribution/artery/VehicleArrivalManagement.vue
+++ b/src/views/distribution/artery/VehicleArrivalManagement.vue
@@ -397,9 +397,9 @@
                   </el-dropdown-item>
 
                   <!-- 配载图片 -->
-                  <!-- <el-dropdown-item>
+                  <el-dropdown-item>
                     <el-text @click="handleShowVehicleImgs(slotProps.scope)"> 配载图片 </el-text>
-                  </el-dropdown-item> -->
+                  </el-dropdown-item>
                 </el-dropdown-menu>
               </template>
             </el-dropdown>
@@ -462,6 +462,40 @@
           </template>
         </tablecmt>
       </el-dialog>
+
+      <!-- 异常订单详情 -->
+      <el-dialog
+        title="异常订单详情"
+        v-model="details.popUpShow.abnormalOrderVisited"
+        width="80%"
+        :append-to-body="false"
+      >
+        <div class="flex-c-sb mb20">
+          <div class="abnormalTip flex1 mr20">订单计划数与在库数不一致,无法手动装车,请调整</div>
+
+          <el-button type="primary" icon="download" @click="handleExportAbnormal">导出</el-button>
+        </div>
+        <tablecmt
+          ref="abnormalOrderTableNode"
+          :columnList="details.abnormalOption.columnList"
+          :tableData="details.abnormalOption.data"
+          :isInitHeigt="false"
+          style="height: 50vh"
+        >
+          <template #default="slotProps">
+            <el-text
+              @click="
+                () => {
+                  const row = { ...slotProps.scope.row };
+                  row.id = row.loadId;
+                  handleGoWaybill({ row });
+                }
+              "
+              >{{ slotProps.scope.row.carsNo }}</el-text
+            >
+          </template>
+        </tablecmt>
+      </el-dialog>
     </div>
   </basic-container>
 
@@ -664,7 +698,11 @@ import {
   ChecksWhetherTheWarehouseIsSelected,
 } from '@/utils/util';
 import { columnList } from '@/option/distribution/VehicleArrivalManagement';
-import { packageColumnList, orderDetailColumnList } from '@/option/distribution/VehicleStowage';
+import {
+  packageColumnList,
+  orderDetailColumnList,
+  abnormalOrderColumnList,
+} from '@/option/distribution/VehicleStowage';
 import {
   postloadArriveCarsPageList,
   postloadArriveCarByLoadId,
@@ -709,6 +747,7 @@ Mydata.value = JSON.parse(localStorage.getItem('my_data')); //获取本地仓库
 
 const truckLoadingDetailNodeRef = ref();
 const searchOrderTableNode = ref();
+const abnormalOrderTableNode = ref();
 
 const details = reactive({
   /** 是否开启搜索 */
@@ -784,6 +823,8 @@ const details = reactive({
     unloadReport: false,
     /** 订单配载锁定详情 */
     searchOrderVisited: false,
+    /** 异常订单 */
+    abnormalOrderVisited: false,
   },
   /** 全屏 */
   fullscreenObj: {
@@ -841,6 +882,13 @@ const details = reactive({
     columnList: deepClone(orderDetailColumnList),
     searchText: '',
   },
+  /** 异常数据配置 */
+  abnormalOption: {
+    /** 异常订单表头 */
+    columnList: deepClone(abnormalOrderColumnList),
+    /** 异常数据 */
+    data: [],
+  },
 });
 
 const tableNode = ref();
@@ -1638,8 +1686,14 @@ const handleManualLoading = ({ row }) => {
         details.loadingObj.pageLoading = true;
 
         const response = await postManualLoadingloadId({ loadId: row.id });
-        if (response.data.code !== 200) return;
-        ElMessage.success(response.data.msg);
+        const { code, data, msg } = response.data;
+        if (code !== 200) return;
+        ElMessage.success(msg);
+
+        if (getObjType(data) === 'array' && data.length > 0) {
+          details.abnormalOption.data = data;
+          details.popUpShow.abnormalOrderVisited = true;
+        }
         onLoad();
       } catch (error) {
         console.log('error :>> ', error);
@@ -1810,6 +1864,23 @@ const searchOrder = async () => {
     details.loadingObj.searchOrder = false;
   }
 };
+
+/** 异常数据导出 */
+const handleExportAbnormal = () => {
+  const time = new Date().getTime();
+  exportExcelByDom(abnormalOrderTableNode.value.$el, '异常数据' + ' - ' + time + '.xlsx');
+};
+
+/** 配载图片 */
+const handleShowVehicleImgs = ({ row }) => {
+  $router.push({
+    path: '/distribution/artery/VehicleNodeImgs',
+    query: {
+      name: `${row.carsNo} - 节点图片`,
+      loadId: row.id,
+    },
+  });
+};
 </script>
 
 <style scoped lang="scss">
@@ -1909,4 +1980,31 @@ const searchOrder = async () => {
     position: absolute;
   }
 }
+
+// 异常提示
+.abnormalTip {
+  $abnormarlColor: #ff5722;
+  $margin: 20px;
+
+  color: $abnormarlColor;
+  display: flex;
+  align-items: center;
+  font-weight: bold;
+
+  &::before {
+    content: '';
+    height: 1px;
+    width: 20px;
+    background-color: $abnormarlColor;
+    margin-right: $margin;
+  }
+
+  &::after {
+    content: '';
+    height: 1px;
+    flex: 1;
+    margin-left: $margin;
+    background-color: $abnormarlColor;
+  }
+}
 </style>
diff --git a/src/views/distribution/artery/VehicleNodeImgs.vue b/src/views/distribution/artery/VehicleNodeImgs.vue
index 21d9f4d8..55c6c1a7 100644
--- a/src/views/distribution/artery/VehicleNodeImgs.vue
+++ b/src/views/distribution/artery/VehicleNodeImgs.vue
@@ -10,7 +10,7 @@
           :key="item.nodeId"
           :class="{
             VehicleLineNode_item: true,
-            notActive: false,
+            notActive: details.nowWarehoseIndex < index,
             choose: details.activeIndex === index,
           }"
           @click="() => handleCheckNode(item, index)"
@@ -34,74 +34,83 @@
 
       <!-- 图片容器 -->
       <div class="VehicleLineImgs_container">
-        <div class="mb20 align-center">
-          <div class="VehicleLineImgs_container_title">装车前图片</div>
+        <!-- 装车前图片 -->
+        <template v-if="details.activeIndex !== details.loadLineArr.length - 1">
+          <div class="mb20 align-center">
+            <div class="VehicleLineImgs_container_title">装车前图片</div>
 
-          <el-button
-            type="primary"
-            icon="edit"
-            @click="() => handleEdit('beforeLoad', beforeLoadImgArr, '装车前图片')"
+            <el-button
+              type="primary"
+              icon="edit"
+              @click="() => handleEdit('beforeLoad', beforeLoadImgArr, '装车前图片')"
+              v-if="details.myWarehouseId === details.loadLineArr[details.activeIndex]?.nodeId"
+            >
+              编辑
+            </el-button>
+          </div>
+          <div
+            class="VehicleLineImgs_container_list mb20"
+            v-for="(item, index) in beforeLoadImgArr"
+            :key="item.type + '-' + item.position"
           >
-            编辑
-          </el-button>
-        </div>
-        <div
-          class="VehicleLineImgs_container_list mb20"
-          v-for="(item, index) in beforeLoadImgArr"
-          :key="item.type + '-' + item.position"
-        >
-          <div class="title">{{ item.title }}</div>
+            <div class="title">{{ item.title }}</div>
 
-          <div class="item">
-            <el-image
-              v-for="(value, i) in item.imgArr"
-              :key="value.url"
-              style="width: 150px; height: 150px; margin: 5px; border-radius: 5px"
-              :src="value.url"
-              :zoom-rate="1.2"
-              :max-scale="7"
-              :min-scale="0.2"
-              :preview-src-list="item.imgArr.map(val => val.url)"
-              :initial-index="i"
-              fit="cover"
-            />
+            <div class="item">
+              <el-image
+                v-for="(value, i) in item.imgArr"
+                :key="value.url"
+                style="width: 150px; height: 150px; margin: 5px; border-radius: 5px"
+                :src="value.url"
+                :zoom-rate="1.2"
+                :max-scale="7"
+                :min-scale="0.2"
+                :preview-src-list="item.imgArr.map(val => val.url)"
+                :initial-index="i"
+                fit="cover"
+              />
+            </div>
           </div>
-        </div>
+        </template>
 
-        <div class="mb20 align-center">
-          <div class="VehicleLineImgs_container_title">发车前图片</div>
+        <!-- 发车前图片 -->
+        <template v-if="details.activeIndex !== details.loadLineArr.length - 1">
+          <div class="mb20 align-center">
+            <div class="VehicleLineImgs_container_title">发车前图片</div>
 
-          <el-button
-            type="primary"
-            icon="edit"
-            @click="() => handleEdit('boforeStart', boforeStartImgArr, '发车前图片')"
+            <el-button
+              type="primary"
+              icon="edit"
+              @click="() => handleEdit('boforeStart', boforeStartImgArr, '发车前图片')"
+              v-if="details.myWarehouseId === details.loadLineArr[details.activeIndex]?.nodeId"
+            >
+              编辑
+            </el-button>
+          </div>
+          <div
+            class="VehicleLineImgs_container_list mb20"
+            v-for="(item, index) in boforeStartImgArr"
+            :key="item.type + '-' + item.position"
           >
-            编辑
-          </el-button>
-        </div>
-        <div
-          class="VehicleLineImgs_container_list mb20"
-          v-for="(item, index) in boforeStartImgArr"
-          :key="item.type + '-' + item.position"
-        >
-          <div class="title">{{ item.title }}</div>
+            <div class="title">{{ item.title }}</div>
 
-          <div class="item">
-            <el-image
-              v-for="(value, i) in item.imgArr"
-              :key="value.url"
-              style="width: 150px; height: 150px; margin: 5px; border-radius: 5px"
-              :src="value.url"
-              :zoom-rate="1.2"
-              :max-scale="7"
-              :min-scale="0.2"
-              :preview-src-list="item.imgArr.map(val => val.url)"
-              :initial-index="i"
-              fit="cover"
-            />
+            <div class="item">
+              <el-image
+                v-for="(value, i) in item.imgArr"
+                :key="value.url"
+                style="width: 150px; height: 150px; margin: 5px; border-radius: 5px"
+                :src="value.url"
+                :zoom-rate="1.2"
+                :max-scale="7"
+                :min-scale="0.2"
+                :preview-src-list="item.imgArr.map(val => val.url)"
+                :initial-index="i"
+                fit="cover"
+              />
+            </div>
           </div>
-        </div>
+        </template>
 
+        <!-- 卸车前图片 -->
         <template v-if="details.activeIndex !== 0">
           <div class="mb20 align-center">
             <div class="VehicleLineImgs_container_title">卸车前图片</div>
@@ -110,6 +119,7 @@
               type="primary"
               icon="edit"
               @click="() => handleEdit('beforeUnload', beforeUnloadImgArr, '卸车前图片')"
+              v-if="details.myWarehouseId === details.loadLineArr[details.activeIndex]?.nodeId"
             >
               编辑
             </el-button>
@@ -205,7 +215,7 @@
 </template>
 
 <script setup lang="ts">
-import { ref, reactive, toRefs, computed, onMounted, nextTick } from 'vue';
+import { ref, reactive, toRefs, computed, onMounted, nextTick, watch } from 'vue';
 /** 获取字典 */
 import { getDictionaryBiz } from '@/api/system/dict';
 import { deepClone, getObjType, ChecksWhetherTheWarehouseIsSelected } from '@/utils/util';
@@ -243,6 +253,7 @@ type ImgArr = {
 type LoadItme = {
   nodeName?: string;
   nodeId?: string;
+  nowWarehouseId?: string;
   /** 装车前图片 */
   beforeLoadImgArr?: ImgArr;
   /** 发车前图片 */
@@ -263,6 +274,7 @@ const details = reactive({
   title: '',
   loadLineArr: [] as LoadItme[],
   activeIndex: 0,
+  nowWarehoseIndex: 0,
   /** 提交类型 */
   editType: 'beforeLoad' as 'beforeLoad' | 'boforeStart' | 'beforeUnload',
   /** 回显数据 */
@@ -288,6 +300,8 @@ const details = reactive({
   headers: {
     'Blade-Auth': 'bearer ' + getToken(),
   },
+  /** 当前用户选择的仓库 */
+  myWarehouseId: '',
 });
 
 // 装车前
@@ -363,6 +377,15 @@ const handleAddImg = (arr, addArr, isHavePosition = true) => {
   }
 };
 
+/** 获取当前用户的仓库id */
+const getWarehouseId = () => {
+  const myData = JSON.parse(localStorage.getItem('my_data') || '') || {};
+
+  details.myWarehouseId = myData.id;
+};
+
+getWarehouseId();
+
 /** 配载图片显示 */
 const initImgList = async () => {
   try {
@@ -373,11 +396,13 @@ const initImgList = async () => {
     details.loadLineArr = [];
     for (let i = 0; i < data.length; i++) {
       const value = data[i];
-      const { loadingObject, startObject, unloadObject, carsLoadLineEntity } = value;
+      const { loadingObject, startObject, unloadObject, carsLoadLineEntity, nowWarehouseId } =
+        value;
 
       const _obj: LoadItme = {
         nodeId: '',
         nodeName: '',
+        nowWarehouseId: '',
         beforeLoadImgArr: [
           {
             title: '车厢卫生',
@@ -468,6 +493,12 @@ const initImgList = async () => {
       if (getObjType(carsLoadLineEntity) === 'object') {
         _obj.nodeName = carsLoadLineEntity.nodeName;
         _obj.nodeId = carsLoadLineEntity.nodeId;
+        _obj.nowWarehouseId = nowWarehouseId;
+
+        if (details.myWarehouseId === _obj.nodeId) {
+          details.nowWarehoseIndex = i;
+          details.activeIndex = i;
+        }
       } else {
         ElMessage.warning('存在异常节点信息');
         return;
@@ -498,9 +529,10 @@ const initImgList = async () => {
   }
 };
 
-initImgList();
+// initImgList();
 
 const handleCheckNode = (item, index) => {
+  if (details.nowWarehoseIndex < index) return;
   details.activeIndex = index;
 };
 
@@ -643,6 +675,8 @@ const handleEditSubmit = async () => {
     details.loadingObj.imgEdit = false;
   }
 };
+
+watch(() => $route.fullPath, initImgList, { immediate: true });
 </script>
 
 <style lang="scss" scoped>
@@ -681,7 +715,7 @@ const handleEditSubmit = async () => {
 
   // 节点
   .VehicleLineNode_item {
-    $transition: all 0.3s;
+    $transition: all 1s;
     $activeColor: #0bc80b;
     $disabled: #808080 !important ;
 
@@ -702,8 +736,9 @@ const handleEditSubmit = async () => {
       }
 
       .VehicleLineNode_item_container {
-        background-color: #fff !important;
+        background-color: #f5f7fa !important;
         cursor: no-drop;
+        border-radius: 0;
       }
     }
 
diff --git a/src/views/distribution/artery/VehicleStowage.vue b/src/views/distribution/artery/VehicleStowage.vue
index e72b972a..adee79fc 100644
--- a/src/views/distribution/artery/VehicleStowage.vue
+++ b/src/views/distribution/artery/VehicleStowage.vue
@@ -367,9 +367,9 @@
                     </el-dropdown-item>
 
                     <!-- 配载图片 -->
-                    <!-- <el-dropdown-item>
+                    <el-dropdown-item>
                       <el-text @click="handleShowVehicleImgs(slotProps.scope)"> 配载图片 </el-text>
-                    </el-dropdown-item> -->
+                    </el-dropdown-item>
                   </el-dropdown-menu>
                 </template>
               </el-dropdown>
@@ -433,6 +433,40 @@
           </template>
         </tablecmt>
       </el-dialog>
+
+      <!-- 异常订单详情 -->
+      <el-dialog
+        title="异常订单详情"
+        v-model="details.popUpShow.abnormalOrderVisited"
+        width="80%"
+        :append-to-body="false"
+      >
+        <div class="flex-c-sb mb20">
+          <div class="abnormalTip flex1 mr20">订单计划数与在库数不一致,无法手动装车,请调整</div>
+
+          <el-button type="primary" icon="download" @click="handleExportAbnormal">导出</el-button>
+        </div>
+        <tablecmt
+          ref="abnormalOrderTableNode"
+          :columnList="details.abnormalOption.columnList"
+          :tableData="details.abnormalOption.data"
+          :isInitHeigt="false"
+          style="height: 50vh"
+        >
+          <template #default="slotProps">
+            <el-text
+              @click="
+                () => {
+                  const row = { ...slotProps.scope.row };
+                  row.id = row.loadId;
+                  handleGoWaybill({ row });
+                }
+              "
+              >{{ slotProps.scope.row.carsNo }}</el-text
+            >
+          </template>
+        </tablecmt>
+      </el-dialog>
     </div>
   </basic-container>
 
@@ -604,6 +638,7 @@ import {
   columnList,
   packageColumnList,
   orderDetailColumnList,
+  abnormalOrderColumnList,
 } from '@/option/distribution/VehicleStowage';
 import {
   postloadCarsPageList,
@@ -625,6 +660,7 @@ import { useRouter, useRoute } from 'vue-router';
 import { ElMessage, ElMessageBox } from 'element-plus';
 import print from '@/utils/print';
 import { dateNow } from '@/utils/date';
+import { exportExcelByDom } from '@/utils/export';
 
 const ArteryPrintTemplateV2 = defineAsyncComponent(
   () => import('@/components/ArteryPrintTemplateV2/ArteryPrintTemplateV2.vue')
@@ -646,6 +682,7 @@ console.log('Mydata :>> ', Mydata);
 const tableNodeRef = ref();
 const truckLoadingDetailNodeRef = ref();
 const searchOrderTableNode = ref();
+const abnormalOrderTableNode = ref();
 
 const details = reactive<any>({
   /** 是否开启搜索 */
@@ -719,6 +756,8 @@ const details = reactive<any>({
     listOfLoadedWagons: false,
     /** 订单配载锁定详情 */
     searchOrderVisited: false,
+    /** 异常订单 */
+    abnormalOrderVisited: false,
   },
   /** 列表Dom节点 */
   listNode: '',
@@ -755,6 +794,13 @@ const details = reactive<any>({
     columnList: deepClone(orderDetailColumnList),
     searchText: '',
   },
+  /** 异常数据配置 */
+  abnormalOption: {
+    /** 异常订单表头 */
+    columnList: deepClone(abnormalOrderColumnList),
+    /** 异常数据 */
+    data: [],
+  },
 });
 
 const loadStatus = reactive([
@@ -1480,8 +1526,15 @@ const handleManualLoading = ({ row }) => {
         details.loadingObj.pageLoading = true;
 
         const response = await postManualLoadingloadId({ loadId: row.id });
-        if (response.data.code !== 200) return;
-        ElMessage.success(response.data.msg);
+        const { code, data, msg } = response.data;
+        if (code !== 200) return;
+        ElMessage.success(msg);
+
+        if (getObjType(data) === 'array' && data.length > 0) {
+          details.abnormalOption.data = data;
+          details.popUpShow.abnormalOrderVisited = true;
+        }
+
         initOnload();
       } catch (error) {
         console.log('error :>> ', error);
@@ -1618,6 +1671,7 @@ const searchOrder = async () => {
   }
 };
 
+/** 配载图片 */
 const handleShowVehicleImgs = ({ row }) => {
   $router.push({
     path: '/distribution/artery/VehicleNodeImgs',
@@ -1627,6 +1681,12 @@ const handleShowVehicleImgs = ({ row }) => {
     },
   });
 };
+
+/** 异常数据导出 */
+const handleExportAbnormal = () => {
+  const time = new Date().getTime();
+  exportExcelByDom(abnormalOrderTableNode.value.$el, '异常数据' + ' - ' + time + '.xlsx');
+};
 </script>
 
 <style scoped lang="scss">
@@ -1751,4 +1811,31 @@ const handleShowVehicleImgs = ({ row }) => {
     position: absolute;
   }
 }
+
+// 异常提示
+.abnormalTip {
+  $abnormarlColor: #ff5722;
+  $margin: 20px;
+
+  color: $abnormarlColor;
+  display: flex;
+  align-items: center;
+  font-weight: bold;
+
+  &::before {
+    content: '';
+    height: 1px;
+    width: 20px;
+    background-color: $abnormarlColor;
+    margin-right: $margin;
+  }
+
+  &::after {
+    content: '';
+    height: 1px;
+    flex: 1;
+    margin-left: $margin;
+    background-color: $abnormarlColor;
+  }
+}
 </style>
diff --git a/src/views/wel/bulletinboard/bulletinboard.vue b/src/views/wel/bulletinboard/bulletinboard.vue
index 042d8099..39afbc58 100644
--- a/src/views/wel/bulletinboard/bulletinboard.vue
+++ b/src/views/wel/bulletinboard/bulletinboard.vue
@@ -1,8 +1,5 @@
 <template>
   <div class="el_top">
-    <div>
-      通知总数: <span>{{ announcements.length }}</span>
-    </div>
     <el-button class="el_t_button" @click="toggleAnnouncements">公告栏</el-button>
   </div>
   <transition name="slide">
@@ -15,14 +12,18 @@
           @click="showDetails(item, index)"
         >
           <span v-if="isToday(item.releaseTime)" class="red-dot"></span>
-          <h2><span>标题:</span>{{ item.title }}</h2>
+          <h2>{{ item.title }}</h2>
           <p class="date">时间:{{ item.releaseTime }}</p>
         </div>
 
         <el-empty description="暂无公告通知" v-if="!announcements.length" />
       </div>
+      <div class="footer">
+        <span>消息数: {{ announcements.length }}</span>
+      </div>
     </div>
   </transition>
+
   <el-dialog
     v-model="centerDialogVisible"
     :title="currentAnnouncement.title"
@@ -132,7 +133,7 @@ const toggleAnnouncements = () => {
 /* 顶部栏 */
 .el_top {
   display: flex;
-  justify-content: space-between;
+  justify-content: center;
   align-items: center;
   width: 100%;
   max-width: 600px;
@@ -145,7 +146,7 @@ const toggleAnnouncements = () => {
   position: relative;
 
   .el_t_button {
-    width: 120px;
+    width: 100%;
     height: 40px;
     background-color: #172e60;
     color: #fff;
@@ -293,4 +294,18 @@ const toggleAnnouncements = () => {
     margin: 0;
   }
 }
+.footer {
+  display: flex;
+  justify-content: flex-end;
+  padding-right: 6px;
+  span {
+    display: flex;
+    border: 1px solid;
+    padding: 4px;
+    font-size: 14px;
+    border-radius: 15px;
+    min-width: 80px;
+    justify-content: center;
+  }
+}
 </style>