diff --git a/src/api/waybill/orderPackageListDetails.js b/src/api/waybill/orderPackageListDetails.js
index ccaf4f3c..4671896b 100644
--- a/src/api/waybill/orderPackageListDetails.js
+++ b/src/api/waybill/orderPackageListDetails.js
@@ -51,11 +51,11 @@ export const postIncomingPackageByBussiness = data => {
 /**
  * 获取二维码
  */
-export const getShowAdvancePackgeCode = params => {
+export const getShowAdvancePackgeCode = data => {
   return request({
     url: '/api/logpm-trunkline/advanceDetail/showAdvancePackgeCode',
-    method: 'get',
-    params,
+    method: 'post',
+    data,
   });
 };
 
diff --git a/src/option/reportforms/CreateOrderTimelinessRatioReport.js b/src/option/reportforms/CreateOrderTimelinessRatioReport.js
index 8f6561d3..70a2a7d1 100644
--- a/src/option/reportforms/CreateOrderTimelinessRatioReport.js
+++ b/src/option/reportforms/CreateOrderTimelinessRatioReport.js
@@ -650,6 +650,18 @@ export const columnListDetails = [
     head: false,
     isshowSummary: false, //开启统计
   },
+  {
+    prop: 'incomingTime',
+    label: '入库时间',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+    isshowSummary: false, //开启统计
+  },
   {
     prop: 'waybillStatusName',
     label: '是否开单',
diff --git a/src/option/reportforms/Mainlinedeliverydetails.js b/src/option/reportforms/Mainlinedeliverydetails.js
index 275493f2..3fb72dc4 100644
--- a/src/option/reportforms/Mainlinedeliverydetails.js
+++ b/src/option/reportforms/Mainlinedeliverydetails.js
@@ -322,7 +322,7 @@ export const columnList = [
   {
     prop: 'createUserName',
     label: '创建人',
-    type: 1,
+    type:1,
     values: '',
     width: '150',
     checkarr: [],
diff --git a/src/option/reportforms/PackageTransferTimePageReport.js b/src/option/reportforms/PackageTransferTimePageReport.js
index 14ae9279..727f31e2 100644
--- a/src/option/reportforms/PackageTransferTimePageReport.js
+++ b/src/option/reportforms/PackageTransferTimePageReport.js
@@ -163,3 +163,157 @@ export const columnList = [
     head: false,
   },
 ];
+
+export const columnListByZero = [
+  {
+    prop: '',
+    label: '复选框',
+    type: 0,
+    width: 55,
+    fixed: true,
+  },
+  {
+    prop: '',
+    label: '序号',
+    type: 12,
+    values: '',
+    width: 55,
+    fixed: true,
+  },
+  {
+    prop: 'businessLine',
+    label: '事业线',
+    type: 1,
+    values: '',
+    width: '180',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'departureWarehouseName',
+    label: '始发仓',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'destinationWarehouseName',
+    label: '目的仓',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'warehouseName',
+    label: '中转仓',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'brand',
+    label: '品牌',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'incomingNum',
+    label: '中转入库件数',
+    type: 6,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+    isshowSummary: true, //开启统计
+  },
+  {
+    prop: 'outNum',
+    label: '中转出库件数',
+    type: 6,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+    isshowSummary: true, //开启统计
+  },
+  {
+    prop: 'noOutNum',
+    label: '未出库件数',
+    type: 6,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+    isshowSummary: true, //开启统计
+  },
+  {
+    prop: 'outOnTimeNum',
+    label: '中转准时出库件数',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+    isshowSummary: true, //开启统计
+  },
+  {
+    prop: 'outOnTimeRate',
+    label: '中转准时出库率',
+    type: 6,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'avgTime',
+    label: '平均中转时效(小时)',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+  {
+    prop: 'hoursTime',
+    label: '标准时效(小时)',
+    type: 1,
+    values: '',
+    width: '150',
+    checkarr: [],
+    fixed: false,
+    sortable: true,
+    head: false,
+  },
+];
diff --git a/src/views/aftersales/aftersalesWorkOrderend.vue b/src/views/aftersales/aftersalesWorkOrderend.vue
index 51591590..d3f734fb 100644
--- a/src/views/aftersales/aftersalesWorkOrderend.vue
+++ b/src/views/aftersales/aftersalesWorkOrderend.vue
@@ -190,7 +190,8 @@
                     </div>
                     <div class="maxBox" style="flex: 1">
                       <span class="title">说明:</span>
-                      <el-input v-model="item.description" placeholder="请输入说明 " clearable :rows="2" disabled />
+                      <el-input   type="textarea"
+                      :autosize="{ minRows: 1, maxRows: 10 }" v-model="item.description" placeholder="请输入说明 " clearable :rows="2" disabled />
                     </div>
                   </div>
                 </div>
diff --git a/src/views/distribution/artery/VehicleStowageZeroLoading.vue b/src/views/distribution/artery/VehicleStowageZeroLoading.vue
index 8d907f64..fb185b9c 100644
--- a/src/views/distribution/artery/VehicleStowageZeroLoading.vue
+++ b/src/views/distribution/artery/VehicleStowageZeroLoading.vue
@@ -574,7 +574,7 @@ const handleZeroLoad = async ({ row }, type) => {
   for (let i = 0; i < details.zeroItem.zeroPackageList.length; i++) {
     const item = details.zeroItem.zeroPackageList[i];
 
-    item.enterNum = item.loadingNum || item.stockNum || 0;
+    item.enterNum = item.loadingNum || 0;
     item.maxNum = (item.loadingNum || 0) + (item.stockNum || 0);
 
     console.log('item :>> ', item);
@@ -586,9 +586,6 @@ const handleZeroLoad = async ({ row }, type) => {
 /** 卸车 -- 零担 -- 提交 */
 const handleZeroUnLoadSubmit = async () => {
   try {
-    details.popUpShow.transferVisited = false;
-    details.loadingObj.pageLoading = true;
-
     // let res: any = {};
 
     const submitData = {
@@ -610,6 +607,11 @@ const handleZeroUnLoadSubmit = async () => {
     submitData.enterNum = _loadingNum;
 
     if (submitData.enterNum === 0) return ElMessage.warning('装车总数为零,请填写需要装车的数据');
+    else if (submitData.enterNum > details.zeroItem.planNum)
+      return ElMessage.warning('总装车数大于计划处,请调整');
+
+    details.popUpShow.transferVisited = false;
+    details.loadingObj.pageLoading = true;
 
     const res = await postLoadingZero(submitData);
 
diff --git a/src/views/distribution/artery/directGoMarketDetails.vue b/src/views/distribution/artery/directGoMarketDetails.vue
index 58c3fdfb..8d33026d 100644
--- a/src/views/distribution/artery/directGoMarketDetails.vue
+++ b/src/views/distribution/artery/directGoMarketDetails.vue
@@ -353,7 +353,6 @@
         style="width: 100%"
         :precision="0"
         :max="details.zeroItem.num"
-        readonly
         :controls="false"
         v-model="details.zeroItem.enterNum"
       />
diff --git a/src/views/distribution/artery/truckLoadingDetails.vue b/src/views/distribution/artery/truckLoadingDetails.vue
index 592a4a26..72a5fec6 100644
--- a/src/views/distribution/artery/truckLoadingDetails.vue
+++ b/src/views/distribution/artery/truckLoadingDetails.vue
@@ -1328,7 +1328,7 @@ const printOrder = async ({ row }) => {
     details.loadingObj.pageLoading = true;
 
     let qr = {
-      orderPackageCodes: row.scanCode,
+      orderPackageCodes: [row.scanCode],
     };
 
     details.html = '';
@@ -1404,7 +1404,7 @@ const handleBatchBarcode = async () => {
     _arr.length > 0 &&
       _promiseArr.push(
         getShowAdvancePackgeCode({
-          orderPackageCodes: _arr.map(val => val.scanCode).join(','),
+          orderPackageCodes: _arr.map(val => val.scanCode),
         }).then(res => {
           const { code, data } = res.data;
           if (code !== 200 || getObjType(data.moldList) !== 'array') return;
diff --git a/src/views/distribution/deliverylist/distributionDeliveryListedt.vue b/src/views/distribution/deliverylist/distributionDeliveryListedt.vue
index 0f0f5f88..b91350ab 100644
--- a/src/views/distribution/deliverylist/distributionDeliveryListedt.vue
+++ b/src/views/distribution/deliverylist/distributionDeliveryListedt.vue
@@ -156,7 +156,7 @@
                 icon="el-icon-view"
                 @click="viewAbnormalLoading(slotProps.scope.row)"
                 v-if="slotProps.scope.row.isHaveAbnormalPackage == '2'"
-                >异常审核
+                >异常记录
               </el-text>
 
               <el-text
@@ -825,7 +825,7 @@
     <MyPrint :html="html" v-model="dialogVisibleF" width="70%"></MyPrint>
 
     <el-dialog
-      title="异常包件列表"
+      title="异常记录"
       v-model="abnormalBox"
       width="67%"
       append-to-body
diff --git a/src/views/distribution/inventory/CreateOrder.vue b/src/views/distribution/inventory/CreateOrder.vue
index 052a810d..1ada6ad8 100644
--- a/src/views/distribution/inventory/CreateOrder.vue
+++ b/src/views/distribution/inventory/CreateOrder.vue
@@ -3882,6 +3882,19 @@ const handleSubmit = (formEl: FormInstance | undefined) => {
           val.deliveryPrice = !isNumber(val.deliveryPrice) ? 0 : val.deliveryPrice;
           val.pickupPrice = !isNumber(val.pickupPrice) ? 0 : val.pickupPrice;
           val.subtotalFreight = !isNumber(val.subtotalFreight) ? 0 : val.subtotalFreight;
+
+          if (val.chargeType === 2 && val.volume === 0) {
+            return ElMessage({
+              message: '请填写方数',
+              type: 'warning',
+            });
+          }
+          if (val.chargeType === 3 && val.weight === 0) {
+            return ElMessage({
+              message: '请填写重量',
+              type: 'warning',
+            });
+          }
         }
 
         // if (!(details.query.totalFreight > 0)) {
diff --git a/src/views/distribution/inventory/delivery/Unstoreddetails.vue b/src/views/distribution/inventory/delivery/Unstoreddetails.vue
index 0f852193..f68a8fb9 100644
--- a/src/views/distribution/inventory/delivery/Unstoreddetails.vue
+++ b/src/views/distribution/inventory/delivery/Unstoreddetails.vue
@@ -438,7 +438,7 @@ const printOrder = async row => {
     details.loadingObj.list = true;
     details.html = '';
     let qr = {
-      orderPackageCodes: row.orderPackageCode,
+      orderPackageCodes: [row.orderPackageCode],
     };
     const res = await getShowAdvancePackgeCode(qr);
     const { code, data } = res.data;
@@ -463,7 +463,7 @@ const handleBatchBarcode = async () => {
     details.loadingObj.list = true;
 
     let qr = {
-      orderPackageCodes: details.selectionList.map(val => val.orderPackageCode).join(','),
+      orderPackageCodes: details.selectionList.map(val => val.orderPackageCode),
     };
 
     const res = await getShowAdvancePackgeCode(qr);
diff --git a/src/views/distribution/signfor/distributionSignfortreat.vue b/src/views/distribution/signfor/distributionSignfortreat.vue
index f2ccf13a..cc632a71 100644
--- a/src/views/distribution/signfor/distributionSignfortreat.vue
+++ b/src/views/distribution/signfor/distributionSignfortreat.vue
@@ -162,7 +162,7 @@
               size="small"
               v-if="slotProps.scope.row.abnormalLoadedNumber > 0"
               @click="viewAbnormalLoading(slotProps.scope)"
-              >异 常 审 核</el-text
+              >异 常 记 录</el-text
             >
             <!-- v-if="
                 slotProps.scope.row.sijiSigningStatus == '司机已签收' &&
@@ -478,7 +478,7 @@
     v-model="columnList"
   ></edittablehead>
   <el-dialog
-    title="异常装车包件列表"
+    title="异常记录"
     v-model="abnormalBox"
     width="50%"
     :before-close="beforeClose"
diff --git a/src/views/reportforms/CreateOrderTimelinessRatioReport.vue b/src/views/reportforms/CreateOrderTimelinessRatioReport.vue
index cb9a9cc0..8c691e3b 100644
--- a/src/views/reportforms/CreateOrderTimelinessRatioReport.vue
+++ b/src/views/reportforms/CreateOrderTimelinessRatioReport.vue
@@ -86,6 +86,7 @@
         <!-- 头部左侧按钮模块 -->
         <div class="avue-crud__left">
           <el-button type="primary" icon="Download" @click="ExportData"> 导出 </el-button>
+          <el-button type="primary" icon="Download" @click="ExportDetailData"> 明细导出 </el-button>
         </div>
         <!-- 头部右侧按钮模块 -->
         <div class="avue-crud__right">
@@ -162,6 +163,7 @@ import { postFindbusinessLine } from '@/api/reportforms/SalesDepartmentIncomeRep
 import {
   postOpenTimePage,
   postOpenTimeExport,
+  postOpenTimeDetailExport,
 } from '@/api/reportforms/CreateOrderTimelinessRatioReport';
 import { getListName } from '@/api/basicdata/basicdataVehicle';
 import {
@@ -488,6 +490,37 @@ const ExportData = async () => {
   }
 };
 
+// 明细导出
+const ExportDetailData = async () => {
+  try {
+    details.loadingObj.list = true;
+
+    const submitData: any = {};
+
+    // 时间周期
+    if (getObjType(details.query.timeArr) === 'array' && details.query.timeArr.length > 0) {
+      submitData.startTimeStr = details.query.timeArr[0];
+      submitData.endTimeStr = details.query.timeArr[1];
+
+      const start = new Date(submitData.startTimeStr).getTime();
+      const end = new Date(submitData.endTimeStr).getTime();
+
+      if (end - start + 1000 * 60 * 60 * 24 > 1000 * 60 * 60 * 24 * 31)
+        return ElMessage.warning('时间不能大于31天');
+    }
+
+    const res = await postOpenTimeDetailExport(submitData);
+    const { status, data } = res;
+    if (status !== 200) return;
+    const time = new Date().getTime();
+    downloadXls(data, '开单及时率报表 -' + time + '.xlsx');
+  } catch (error) {
+    console.log('error :>> ', error);
+  } finally {
+    details.loadingObj.list = false;
+  }
+};
+
 /** 跳转详情 */
 const handleJumpDetail = (row, column) => {
   if (!row[column.property]) return;
diff --git a/src/views/reportforms/PackageTransferTimePageReport.vue b/src/views/reportforms/PackageTransferTimePageReport.vue
index 2c3fd58b..0b6a51ab 100644
--- a/src/views/reportforms/PackageTransferTimePageReport.vue
+++ b/src/views/reportforms/PackageTransferTimePageReport.vue
@@ -173,8 +173,9 @@
         <el-tab-pane label="零担" name="zero">
           <!-- 列表模块 -->
           <tablecmt
+            columnListName="columnListByZero"
             ref="tableNodeRef2"
-            :columnList="details.columnList"
+            :columnList="details.columnListByZero"
             :tableData="details.data"
             @inputTxt="inputsc"
             @timeCheck="timesc"
@@ -192,7 +193,6 @@
           </tablecmt>
         </el-tab-pane>
       </el-tabs>
-
       <!-- 分页模块 -->
       <div class="avue-crud__pagination flex-c-sb" style="width: 100%">
         <div style="font-size: 14px">勾选数量: {{ selectionList.length }}</div>
@@ -219,6 +219,14 @@
     :columnList="details.columnList"
     v-model="details.columnList"
   ></edittablehead>
+
+  <edittablehead
+    columnListName="columnListByZero"
+    @closce="showdrawerByZero"
+    :drawerShow="details.drawerShowByZero"
+    :columnList="details.columnListByZero"
+    v-model="details.columnListByZero"
+  ></edittablehead>
 </template>
 
 <script setup lang="ts">
@@ -252,7 +260,7 @@ import {
 } from '@/utils/util';
 import { useRouter } from 'vue-router';
 import { ElMessage, ElMessageBox } from 'element-plus';
-import { columnList } from '@/option/reportforms/PackageTransferTimePageReport';
+import { columnList, columnListByZero } from '@/option/reportforms/PackageTransferTimePageReport';
 
 // 获取路由实例
 const $router = useRouter();
@@ -298,6 +306,7 @@ const details = reactive<any>({
     },
   ],
   columnList: deepClone(columnList),
+  columnListByZero: deepClone(columnListByZero),
   data: [],
   /** 头部搜索配置 */
   titleSearchOption: [],
@@ -313,6 +322,7 @@ const details = reactive<any>({
   selectionList: [],
   /** 是否显示设置表格 */
   drawerShow: false,
+  drawerShowByZero: false,
   /** 分页参数 */
   page: {
     pageNum: 1,
@@ -466,6 +476,11 @@ const showdrawer = (_flag?: boolean) => {
   details.drawerShow = _flag;
 };
 
+/** 展开列表控件 */
+const showdrawerByZero = (_flag?: boolean) => {
+  details.drawerShowByZero = _flag;
+};
+
 /** 是否开启搜索区 */
 const searchHide = () => {
   details.search = !details.search;
diff --git a/src/views/warehouse/prewarehousing/PreStoragePackage.vue b/src/views/warehouse/prewarehousing/PreStoragePackage.vue
index 31ec564d..81a04b0c 100644
--- a/src/views/warehouse/prewarehousing/PreStoragePackage.vue
+++ b/src/views/warehouse/prewarehousing/PreStoragePackage.vue
@@ -353,7 +353,7 @@ const handleShowQrCode = async ({ row }) => {
     details.loadingObj.pageLoading = true;
 
     let qr = {
-      orderPackageCodes: row.orderPackageCode,
+      orderPackageCodes: [row.orderPackageCode],
     };
     details.html = '';
     const res = await getShowAdvancePackgeCode(qr);
@@ -393,7 +393,7 @@ const handleBatchShowQrCode = async () => {
     });
     // return
     let qr = {
-      orderPackageCodes: checkcode.join(','),
+      orderPackageCodes: checkcode,
     };
     details.html = '';
     const res = await getShowAdvancePackgeCode(qr);
diff --git a/src/views/waybill/CreateZeroOrder.vue b/src/views/waybill/CreateZeroOrder.vue
index 7da6c06d..511d1a3d 100644
--- a/src/views/waybill/CreateZeroOrder.vue
+++ b/src/views/waybill/CreateZeroOrder.vue
@@ -2981,6 +2981,19 @@ const handleSubmit = async (formEl: FormInstance | undefined) => {
             val.deliveryPrice = !isNumber(val.deliveryPrice) ? 0 : val.deliveryPrice;
             val.pickupPrice = !isNumber(val.pickupPrice) ? 0 : val.pickupPrice;
             val.subtotalFreight = !isNumber(val.subtotalFreight) ? 0 : val.subtotalFreight;
+
+            if (val.chargeType === 2 && val.volume === 0) {
+              return ElMessage({
+                message: '请填写方数',
+                type: 'warning',
+              });
+            }
+            if (val.chargeType === 3 && val.weight === 0) {
+              return ElMessage({
+                message: '请填写重量',
+                type: 'warning',
+              });
+            }
           }
 
           // if (!(details.query.totalFreight > 0)) return ElMessage.warning('请输入大于零的运费');
diff --git a/src/views/waybill/orderPackageList.vue b/src/views/waybill/orderPackageList.vue
index 5f16d893..451d337d 100644
--- a/src/views/waybill/orderPackageList.vue
+++ b/src/views/waybill/orderPackageList.vue
@@ -847,7 +847,7 @@ const handleBatchBarcode = async () => {
     details.loadingObj.pageLoading = true;
 
     let qr = {
-      orderPackageCodes: details.selectionList.map(val => val.orderPackageCode).join(','),
+      orderPackageCodes: details.selectionList.map(val => val.orderPackageCode),
     };
     details.html = '';
 
@@ -878,7 +878,7 @@ const printOrder = async ({ row }) => {
     details.loadingObj.pageLoading = true;
     details.html = '';
     let qr = {
-      orderPackageCodes: row.orderPackageCode,
+      orderPackageCodes: [row.orderPackageCode],
     };
     const res = await getShowAdvancePackgeCode(qr);
     const { code, data } = res.data;
diff --git a/src/views/waybill/orderPackageListDetails.vue b/src/views/waybill/orderPackageListDetails.vue
index b91e6956..0c15638f 100644
--- a/src/views/waybill/orderPackageListDetails.vue
+++ b/src/views/waybill/orderPackageListDetails.vue
@@ -739,7 +739,7 @@ const printOrder = async ({ row }) => {
     details.loadingObj.pageLoading = true;
     details.html = '';
     let qr = {
-      orderPackageCodes: row.orderPackageCode,
+      orderPackageCodes: [row.orderPackageCode],
     };
     const res = await getShowAdvancePackgeCode(qr);
     const { code, data } = res.data;
@@ -907,7 +907,7 @@ const handleBatchBarcode = async () => {
     details.loadingObj.pageLoading = true;
 
     let qr = {
-      orderPackageCodes: details.selectionList.map(val => val.orderPackageCode).join(','),
+      orderPackageCodes: details.selectionList.map(val => val.orderPackageCode),
     };
 
     const res = await getShowAdvancePackgeCode(qr);
diff --git a/src/views/waybill/orderPackageListDetailsByMarket.vue b/src/views/waybill/orderPackageListDetailsByMarket.vue
index 70dca818..afa30692 100644
--- a/src/views/waybill/orderPackageListDetailsByMarket.vue
+++ b/src/views/waybill/orderPackageListDetailsByMarket.vue
@@ -717,7 +717,7 @@ const printOrder = async ({ row }) => {
     details.loadingObj.pageLoading = true;
     details.html = '';
     let qr = {
-      orderPackageCodes: row.orderPackageCode,
+      orderPackageCodes: [row.orderPackageCode],
     };
     const res = await getShowAdvancePackgeCode(qr);
     const { code, data } = res.data;
@@ -886,7 +886,7 @@ const handleBatchBarcode = async () => {
     details.loadingObj.pageLoading = true;
 
     let qr = {
-      orderPackageCodes: details.selectionList.map(val => val.orderPackageCode).join(','),
+      orderPackageCodes: details.selectionList.map(val => val.orderPackageCode),
     };
 
     const res = await getShowAdvancePackgeCode(qr);
diff --git a/src/views/wel/bulletinboard/bulletinboard.vue b/src/views/wel/bulletinboard/bulletinboard.vue
index 39afbc58..28cbea7f 100644
--- a/src/views/wel/bulletinboard/bulletinboard.vue
+++ b/src/views/wel/bulletinboard/bulletinboard.vue
@@ -5,33 +5,23 @@
   <transition name="slide">
     <div class="announcement-board" v-if="isShow">
       <div class="announcement-content" v-loading="loading">
-        <div
-          class="announcement-item"
-          v-for="(item, index) in announcements"
-          :key="item.id"
-          @click="showDetails(item, index)"
-        >
+        <div class="announcement-item" v-for="(item, index) in announcements" :key="item.id"
+          @click="showDetails(item, index)">
           <span v-if="isToday(item.releaseTime)" class="red-dot"></span>
           <h2>{{ item.title }}</h2>
           <p class="date">时间:{{ item.releaseTime }}</p>
         </div>
 
-        <el-empty description="暂无公告通知" v-if="!announcements.length" />
+        <el-empty description="暂无公告通知" v-if="!announcements?.length" />
       </div>
       <div class="footer">
-        <span>消息数: {{ announcements.length }}</span>
+        <span>消息数: {{ announcements?.length || 0 }}</span>
       </div>
     </div>
   </transition>
 
-  <el-dialog
-    v-model="centerDialogVisible"
-    :title="currentAnnouncement.title"
-    width="60%"
-    center
-    style="min-height: 500px"
-    class="el_announcement"
-  >
+  <el-dialog v-model="centerDialogVisible" :title="currentAnnouncement.title" width="60%" center
+    style="min-height: 500px" class="el_announcement">
     <p>
       <span class="time">时间: {{ currentAnnouncement.releaseTime }}</span> <br />
       <span class="category">分类:{{ currentAnnouncement.categoryName }}</span>
@@ -39,11 +29,13 @@
     <div v-html="currentAnnouncement.content" class="content"></div>
     <template #footer>
       <div class="dialog-footer">
-        <el-button type="primary" @click="Previous"
-          ><el-icon><DArrowLeft /></el-icon> 上一条
+        <el-button type="primary" @click="Previous"><el-icon>
+            <DArrowLeft />
+          </el-icon> 上一条
         </el-button>
-        <el-button type="primary" @click="next"
-          >下一条<el-icon><DArrowRight /></el-icon>
+        <el-button type="primary" @click="next">下一条<el-icon>
+            <DArrowRight />
+          </el-icon>
         </el-button>
       </div>
     </template>
@@ -172,6 +164,7 @@ const toggleAnnouncements = () => {
   border-radius: 8px;
   overflow: hidden;
   position: relative;
+
   .announcement-content {
     padding: 0 10px;
     height: 450px;
@@ -219,6 +212,7 @@ const toggleAnnouncements = () => {
     .content {
       display: flex;
       align-items: center;
+
       p {
         font-size: 14px;
         color: #555;
@@ -230,6 +224,7 @@ const toggleAnnouncements = () => {
         white-space: nowrap; // 溢出不换行
       }
     }
+
     .date {
       font-size: 12px;
       color: #999;
@@ -241,6 +236,7 @@ const toggleAnnouncements = () => {
 
 /* 响应式设计 */
 @media (max-width: 768px) {
+
   .el_top,
   .announcement-board {
     width: 90%;
@@ -288,16 +284,19 @@ const toggleAnnouncements = () => {
   display: flex;
   justify-content: space-evenly;
   transform: translate(-56%, 0);
+
   button {
     width: 150px;
     height: 50px;
     margin: 0;
   }
 }
+
 .footer {
   display: flex;
   justify-content: flex-end;
   padding-right: 6px;
+
   span {
     display: flex;
     border: 1px solid;