hurx 3 روز پیش
والد
کامیت
ff9cde1b48

+ 12 - 1
src/api/order/orderMain/index.ts

@@ -1,6 +1,6 @@
 import request from '@/utils/request';
 import { AxiosPromise } from 'axios';
-import { OrderMainVO, OrderMainForm, OrderMainQuery } from '@/api/order/orderMain/types';
+import { OrderMainVO, OrderMainForm, OrderMainQuery, OrderTreeVo } from '@/api/order/orderMain/types';
 
 /**
  * 查询订单主信息列表
@@ -136,3 +136,14 @@ export function changeStatus(id: string | number, orderStatus: string) {
     data: data
   });
 }
+
+/**
+ * 查询订单主信息详细
+ * @param id
+ */
+export const getOrderMainAndSubOrder = (id: string | number): AxiosPromise<OrderTreeVo> => {
+  return request({
+    url: '/order/orderMain/tree/' + id,
+    method: 'get'
+  });
+};

+ 25 - 0
src/api/order/orderMain/types.ts

@@ -284,6 +284,31 @@ export interface OrderMainVO {
   deliverProductList: any[];
 }
 
+export interface OrderProductSimpleVo {
+  id: string | number;
+  orderId: string | number;
+  productId: string | number;
+  productNo: string;
+  productName: string;
+  productUnit: string;
+  productImage: string;
+  orderPrice: number;
+  orderQuantity: number;
+  subtotal: number;
+  quantitySent: number;
+  unsentQuantity: number;
+  currentLevel: number;
+  assignmentStatus: string;
+  remark: string;
+}
+
+export interface OrderTreeVo extends OrderMainVO {
+  /** 该订单的商品列表 */
+  productList?: OrderProductSimpleVo[];
+  /** 子订单列表(递归结构) */
+  childOrders?: OrderTreeVo[];
+}
+
 export interface OrderMainForm extends BaseEntity {
   /**
    * 主键ID

+ 181 - 0
src/views/order/saleOrder/OrderTreeNode.vue

@@ -0,0 +1,181 @@
+<template>
+  <div
+    class="order-tree-node"
+    :class="`level-${orderData.currentLevel || 1}`"
+    :style="{ marginLeft: ((orderData.currentLevel || 1) - 1) * 24 + 'px' }"
+  >
+    <el-card class="node-card" shadow="hover">
+      <template #header>
+        <div class="card-header">
+          <el-tag :type="levelTagType" size="small">{{ levelLabel }}</el-tag>
+          <span class="order-no">{{ orderData.orderNo }}</span>
+          <dict-tag v-if="orderData.orderStatus" :options="orderStatusDict" :value="orderData.orderStatus" />
+          <span v-if="orderData.totalAmount" class="amount">¥{{ orderData.totalAmount }}</span>
+        </div>
+      </template>
+
+      <!-- 基本信息 -->
+      <el-descriptions :column="2" border class="custom-descriptions" size="small">
+        <el-descriptions-item label="订单编号">{{ orderData.orderNo }}</el-descriptions-item>
+        <el-descriptions-item v-if="orderData.parentOrderNo" label="关联单号">{{ orderData.parentOrderNo }}</el-descriptions-item>
+        <el-descriptions-item label="订单状态">
+          <dict-tag :options="orderStatusDict" :value="orderData.orderStatus" />
+        </el-descriptions-item>
+        <el-descriptions-item label="订单金额">¥{{ orderData.totalAmount || '--' }}</el-descriptions-item>
+        <el-descriptions-item label="运费">¥{{ (Number(orderData.shippingFee) || 0).toFixed(2) }}</el-descriptions-item>
+        <el-descriptions-item label="下单时间">{{ orderData.orderTime || '--' }}</el-descriptions-item>
+        <el-descriptions-item label="确认时间">{{ orderData.confirmTime || '--' }}</el-descriptions-item>
+        <el-descriptions-item label="签收时间">{{ orderData.receivingTime || '--' }}</el-descriptions-item>
+        <el-descriptions-item v-if="orderData.purchaseReason" label="采购事由">{{ orderData.purchaseReason }}</el-descriptions-item>
+        <el-descriptions-item v-if="orderData.remark" label="备注">{{ orderData.remark }}</el-descriptions-item>
+      </el-descriptions>
+
+      <!-- 商品列表 -->
+      <div v-if="products.length" class="section">
+        <h4 class="section-title">商品明细({{ products.length }}种)</h4>
+        <el-table :data="products" border style="width: 100%" size="small">
+          <el-table-column label="产品图片" width="100">
+            <template #default="scope">
+              <el-image v-if="scope.row.productImage" :src="scope.row.productImage" style="width: 60px; height: 60px" fit="cover" />
+              <span v-else>暂无图片</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="productNo" label="商品编号" />
+          <el-table-column prop="productName" label="商品信息" min-width="150" />
+          <el-table-column prop="productUnit" label="单位" />
+          <el-table-column prop="orderPrice" label="含税单价" />
+          <el-table-column prop="subtotal" label="小计" />
+          <el-table-column prop="orderQuantity" label="采购数量" />
+        </el-table>
+      </div>
+
+      <!-- 子订单 -->
+      <div v-if="orderData.childOrders && orderData.childOrders.length" class="section child-orders-section">
+        <h4 class="section-title">子订单({{ orderData.childOrders.length }}个)</h4>
+        <el-collapse v-model="activeChildNames">
+          <el-collapse-item v-for="child in orderData.childOrders" :key="child.id" :name="String(child.id)">
+            <template #title>
+              <div class="collapse-title">
+                <span>{{ child.orderNo }}</span>
+                <dict-tag :options="orderStatusDict" :value="child.orderStatus" />
+              </div>
+            </template>
+            <OrderTreeNode :order-data="child" />
+          </el-collapse-item>
+        </el-collapse>
+      </div>
+    </el-card>
+  </div>
+</template>
+
+<script setup lang="ts">
+import { ref, computed, inject } from 'vue';
+import type { OrderTreeVo } from '@/api/order/orderMain/types';
+
+defineOptions({ name: 'OrderTreeNode' });
+
+const props = defineProps<{
+  orderData: OrderTreeVo;
+}>();
+
+const orderStatusDict = inject<any[]>('orderStatusDict', []);
+
+const activeChildNames = ref<string[]>([]);
+
+const products = computed(() => {
+  return props.orderData.productList || [];
+});
+
+const currentLevel = computed(() => props.orderData.currentLevel || 1);
+
+const levelLabel = computed(() => {
+  const labels = ['', '一级订单', '二级订单', '三级订单', '四级订单', '五级订单'];
+  const lv = currentLevel.value;
+  return lv <= 5 ? labels[lv] : `${lv}级订单`;
+});
+
+const levelTagType = computed<'primary' | 'success' | 'warning' | 'info' | 'danger'>(() => {
+  const types = ['primary', 'success', 'warning', 'info', 'danger'] as const;
+  const lv = currentLevel.value;
+  return lv <= 5 ? types[lv - 1] || 'primary' : 'info';
+});
+</script>
+
+<style scoped lang="scss">
+.order-tree-node {
+  margin-bottom: 16px;
+
+  .node-card {
+    transition: box-shadow 0.3s;
+  }
+
+  &.level-1 :deep(.el-card) {
+    border-left: 4px solid #409eff;
+  }
+  &.level-2 :deep(.el-card) {
+    border-left: 4px solid #67c23a;
+  }
+  &.level-3 :deep(.el-card) {
+    border-left: 4px solid #e6a23c;
+  }
+  &.level-4 :deep(.el-card) {
+    border-left: 4px solid #909399;
+  }
+  &.level-5 :deep(.el-card) {
+    border-left: 4px solid #f56c6c;
+  }
+
+  &.level-1 .node-card {
+    background-color: #f0f9ff;
+  }
+  &.level-2 .node-card {
+    background-color: #f0fdf4;
+  }
+  &.level-3 .node-card {
+    background-color: #fffcf0;
+  }
+
+  .card-header {
+    display: flex;
+    align-items: center;
+    gap: 12px;
+
+    .order-no {
+      font-weight: 600;
+    }
+
+    .amount {
+      margin-left: auto;
+      color: #f56c6c;
+      font-weight: 600;
+    }
+  }
+
+  .section {
+    margin-top: 16px;
+  }
+
+  .section-title {
+    font-size: 14px;
+    font-weight: 600;
+    color: #303133;
+    margin: 0 0 8px;
+  }
+
+  .child-orders-section {
+    margin-top: 16px;
+  }
+
+  .collapse-title {
+    display: flex;
+    align-items: center;
+    gap: 8px;
+    font-weight: 500;
+  }
+
+  :deep(.custom-descriptions .el-descriptions__label) {
+    width: 140px;
+    white-space: nowrap;
+  }
+}
+</style>

+ 30 - 260
src/views/order/saleOrder/sendDetail.vue

@@ -8,9 +8,9 @@
         <el-descriptions-item label="项目/平台订单号" v-if="crrcExtInfo.crrcOrderNo">{{ crrcExtInfo.crrcOrderNo }}</el-descriptions-item>
         <el-descriptions-item label="发货单编号">{{ orderDetail.shipmentNo }}</el-descriptions-item>
         <el-descriptions-item label="订单总金额">{{ orderDetail.totalAmount }}</el-descriptions-item>
-        <el-descriptions-item label="支付状态">
+        <!-- <el-descriptions-item label="支付状态">
           <dict-tag :options="payment_status" :value="orderDetail.paymentStatus" />
-        </el-descriptions-item>
+        </el-descriptions-item> -->
         <el-descriptions-item label="订单状态">
           <dict-tag :options="order_status" :value="orderDetail.orderStatus" />
         </el-descriptions-item>
@@ -21,237 +21,13 @@
       </el-descriptions>
     </el-card>
 
-    <!-- 订单详情信息 -->
-    <el-card shadow="never" class="mb-2" v-if="!orderDetail.dataSource">
-      <template #header>
-        <span>订单基本信息</span>
-      </template>
-      <el-row :gutter="20">
-        <el-col :span="8">
-          <div class="detail-item">
-            <span class="label">归属公司:</span>
-            <span>{{ companyInfo.companyCode || '--' }},{{ companyInfo.companyName || '--' }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">业务人员:</span>
-            <span>{{ orderDetail.businessStaff }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">发票类型:</span>
-            <span>{{ orderDetail.invoiceType }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">发货仓库:</span>
-            <span>{{ warehouseInfo.warehouseName || '--' }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">采购事由:</span>
-            <span>{{ orderDetail.purchaseReason }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">订单备注:</span>
-            <span>{{ orderDetail.remark }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">分配备注:</span>
-            <span>{{ orderDetail.assigneeRemark }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">附件:</span>
-            <span>{{ orderDetail.attachmentPath || '' }}</span>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="detail-item">
-            <span class="label">客户名称:</span>
-            <span>{{ customerInfo.customerNo || '--' }},{{ customerInfo.customerName || '--' }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">客服人员:</span>
-            <span>{{ orderDetail.customerService }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">支付方式:</span>
-            <span>{{ getDictLabel(pay_method, orderDetail.payType) }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">费用类型:</span>
-            <span>{{ getDictLabel(fee_type, orderDetail.expenseType) }}</span>
-          </div>
-        </el-col>
-        <el-col :span="8">
-          <div class="detail-item">
-            <span class="label">所属项目:</span>
-            <span>{{ orderDetail.dataSource == 'zhongche' ? '中车' : '--' }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">业务部门:</span>
-            <span>{{ orderDetail.businessDept }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">下单部门:</span>
-            <span>{{ orderDetail.userDeptName }}</span>
-          </div>
-          <div class="detail-item">
-            <span class="label">订单状态:</span>
-            <span>{{ getDictLabel(order_status, orderDetail.orderStatus) }}</span>
-          </div>
-        </el-col>
-      </el-row>
-    </el-card>
-
-    <!-- 收货信息 -->
-    <el-card shadow="never" class="mb-2" v-if="!orderDetail.dataSource">
-      <template #header>
-        <span>收货信息</span>
-      </template>
-      <el-descriptions :column="2" border class="custom-descriptions">
-        <el-descriptions-item label="收货人姓名">{{ shippingAddress.consignee }}</el-descriptions-item>
-        <el-descriptions-item label="联系电话">{{ shippingAddress.phone }}</el-descriptions-item>
-        <el-descriptions-item label="收货地址">{{ shippingAddress.provincialCityCountry }} {{ shippingAddress.address }}</el-descriptions-item>
-      </el-descriptions>
-    </el-card>
-
-    <!-- 项目订单扩展信息 -->
-    <el-card v-if="orderDetail.dataSource" shadow="never" class="mb-2">
-      <template #header>
-        <span>项目订单扩展信息</span>
-      </template>
-      <el-descriptions :column="3" border class="custom-descriptions">
-        <el-descriptions-item label="收货人">{{ crrcExtInfo.receiverName || '--' }}</el-descriptions-item>
-        <el-descriptions-item label="收货人手机号" :span="2">{{ crrcExtInfo.mobile || '--' }}</el-descriptions-item>
-        <el-descriptions-item label="收货人邮箱">{{ crrcExtInfo.email || '--' }}</el-descriptions-item>
-        <el-descriptions-item label="收货地址" :span="2">
-          {{ crrcExtInfo.provinceName || '' }}-{{ crrcExtInfo.cityName || '' }}-{{ crrcExtInfo.countyName || '' }}-{{ crrcExtInfo.townName || '' }}-{{
-            crrcExtInfo.detailAddress || ''
-          }}
-        </el-descriptions-item>
-        <el-descriptions-item label="下单人姓名">{{ crrcExtInfo.buyerName || '--' }}</el-descriptions-item>
-        <el-descriptions-item label="下单人手机号" :span="2">{{ crrcExtInfo.buyerMobile || '--' }}</el-descriptions-item>
-        <el-descriptions-item label="采购单位名称" :span="3">{{ crrcExtInfo.purchaserName || '--' }}</el-descriptions-item>
-        <el-descriptions-item label="采购部门名称" :span="3">{{ crrcExtInfo.purchaserDeptName || '--' }}</el-descriptions-item>
-      </el-descriptions>
-    </el-card>
-
-    <!-- 商品明细 -->
-    <el-card shadow="never" class="mb-2">
-      <template #header>
-        <span>商品明细</span>
-      </template>
-      <el-table :data="productList" border style="width: 100%">
-        <el-table-column label="产品图片" width="100">
-          <template #default="scope">
-            <el-image v-if="scope.row.productImage" :src="scope.row.productImage" style="width: 60px; height: 60px" fit="cover" />
-            <span v-else>暂无图片</span>
-          </template>
-        </el-table-column>
-        <el-table-column prop="productNo" label="商品编号" />
-
-        <el-table-column prop="productName" label="商品信息" min-width="150" />
-        <el-table-column prop="taxRate" label="税率" align="center">
-          <template #default="scope"> 增值税{{ scope.row.taxRate }}% </template>
-        </el-table-column>
-        <el-table-column prop="productUnit" label="单位" />
-        <el-table-column prop="minSellingPrice" label="最低售价" />
-        <el-table-column prop="orderPrice" label="含税单价" />
-        <el-table-column prop="subtotal" label="小计" />
-        <el-table-column prop="orderQuantity" label="采购数量" />
-        <el-table-column prop="quantitySent" label="已发货数量" />
-        <el-table-column prop="unsentQuantity" label="未发货数量" />
-      </el-table>
-    </el-card>
-    <div class="mt-2 text-right" style="margin-right: 8px; margin-bottom: 10px">
-      <span
-        >商品数:{{ totalQuantity }} , 其中有 <span style="color: #f56c6c">{{ totalQuantitySent }} 已经发货</span></span
-      >
-    </div>
-    <!-- 信息汇总 -->
-    <el-card shadow="never" class="mb-2">
-      <template #header>
-        <div class="card-header">
-          <span>信息汇总</span>
-        </div>
-      </template>
-
-      <el-table :data="summaryData" border style="width: 100%">
-        <el-table-column prop="quantity" label="商品数量" align="center" />
-        <el-table-column prop="shippingFee" label="运费" align="center" />
-        <el-table-column prop="totalAmount" label="订单总金额" align="center" />
-        <el-table-column prop="payableAmount" label="应付款金额" align="center" />
-      </el-table>
-    </el-card>
-    <!-- 发货对话框 -->
-    <DeliverDialog
-      v-model="showDeliverDialog"
-      :order-id="currentOrderId"
-      :order-no="currentOrderNo"
-      :operate-type="operateType"
-      @success="handleDeliverSuccess"
-    />
-
-    <!-- 编辑发货信息对话框 -->
-    <!-- <EditDeliverDialog v-model="showEditDeliverDialog" :deliver-id="editDeliverId" @success="handleDeliverSuccess" /> -->
-    <!-- 发货信息 -->
-    <el-card shadow="never" class="mb-2" v-show="orderDetail.orderStatus != '0'">
-      <template #header>
-        <div class="card-header">
-          <span>发货信息:共{{ orderDeliverList.length }}个包裹</span>
-          <!-- <el-button type="primary" v-if="orderDetail.orderStatus == '2' || orderDetail.orderStatus == '3'" @click="handleAddDeliver(orderDetail)"
-            >添加发货信息</el-button
-          > -->
-        </div>
-      </template>
-      <el-card v-for="deliver in orderDeliverList" :key="deliver.id">
-        <div class="mb-2" style="background: #f3f3f3; padding: 10px">
-          <el-row :gutter="20" justify="space-between" align="middle">
-            <el-col :span="18">
-              <div style="display: flex; flex-wrap: wrap; gap: 16px">
-                <span>发货单号:{{ (deliver as any).deliverCode || '--' }}</span>
-                <span>发货时间:{{ (deliver as any).createTime || '--' }}</span>
-                <span>发货方式:{{ getDictLabel(deliver_method, deliver.deliverMethod || '--') }}</span>
-                <span v-if="deliver.deliverMethod == '0'">收货人:{{ deliver.deliverMan || '--' }}</span>
-                <span>手机:{{ deliver.phone || deliver.consigneePhone }}</span>
-                <span style="margin-left: 30px" v-if="deliver.deliverMethod == '1'">物流单号:{{ deliver.logisticNo || '--' }}</span>
-                <span style="margin-left: 20px">发货备注:{{ deliver.deliverRemark || '--' }}</span>
-              </div>
-            </el-col>
-            <el-col :span="6">
-              <div style="text-align: right">
-                <el-button type="primary" @click="handleEditDeliver(deliver)">编辑发货信息</el-button>
-                <el-button type="primary" v-if="deliver.deliverMethod == '0'" @click="handleEditLogistics(deliver)">变更物流状态</el-button>
-                <el-button type="primary" @click="handleViewLogistics(orderDetail)">查看物流</el-button>
-              </div>
-            </el-col>
-          </el-row>
-        </div>
-        <el-table :data="deliver.deliverProductList" border style="width: 100%">
-          <el-table-column label="产品编号" prop="productNo" align="center" />
-          <el-table-column label="商品名称" prop="productName" align="center" />
-          <el-table-column label="单位" prop="productUnit" align="center" />
-          <el-table-column label="发货数量" prop="deliverNum" align="center" />
-        </el-table>
-      </el-card>
-    </el-card>
-
-    <!-- A10备货信息 -->
-    <el-card shadow="never" class="mb-2">
+    <!-- 订单树结构 -->
+    <el-card v-loading="loading" shadow="never" class="mb-2">
       <template #header>
-        <div class="card-header">
-          <span>A10备货信息</span>
-        </div>
+        <span>订单明细</span>
       </template>
-
-      <el-table border style="width: 100%">
-        <el-table-column label="副点人员编号" align="center" />
-        <el-table-column label="单据编号" align="center" />
-        <el-table-column label="清货人员编号" align="center" />
-        <el-table-column label="配货人员编号" align="center" />
-        <el-table-column label="快递编号" align="center" />
-        <el-table-column label="快递单号" align="center" />
-        <el-table-column label="付款方式" align="center" />
-        <el-table-column label="库存记录单号" align="center" />
-        <el-table-column label="回签信息" align="center" />
-      </el-table>
+      <OrderTreeNode v-if="orderTreeData.id" :order-data="orderTreeData" />
+      <el-empty v-else-if="!loading" description="暂无订单数据" />
     </el-card>
 
     <!-- 底部按钮 -->
@@ -264,12 +40,12 @@
 </template>
 
 <script setup name="SendDetail" lang="ts">
-import { ref, computed, onMounted } from 'vue';
+import { ref, computed, onMounted, provide, watch } from 'vue';
 import DeliverDialog from './deliverDialog.vue';
 import { useRoute, useRouter } from 'vue-router';
-import { getOrderMain } from '@/api/order/orderMain';
-import { OrderMainVO } from '@/api/order/orderMain/types';
-import { listOrderProduct } from '@/api/order/orderProduct';
+import { getOrderMainAndSubOrder } from '@/api/order/orderMain';
+import { OrderMainVO, OrderTreeVo } from '@/api/order/orderMain/types';
+import OrderTreeNode from './OrderTreeNode.vue';
 import { OrderProductVO } from '@/api/order/orderProduct/types';
 import { DeliverProductVO } from '@/api/order/deliverProduct/types';
 import { listOrderDeliver } from '@/api/order/orderDeliver';
@@ -294,12 +70,22 @@ const { proxy } = getCurrentInstance() as ComponentInternalInstance;
 const { order_status, payment_status, fee_type, pay_method, deliver_method } = toRefs<any>(
   proxy?.useDict('order_status', 'payment_status', 'fee_type', 'pay_method', 'deliver_method')
 );
+
+// 向子组件注入字典数据
+provide('orderStatusDict', order_status);
+provide('paymentStatusDict', payment_status);
+provide('feeTypeDict', fee_type);
+provide('payMethodDict', pay_method);
 const route = useRoute();
 const router = useRouter();
 
 // 订单详情
 const orderDetail = ref<OrderMainVO>({} as OrderMainVO);
 
+// 订单树数据
+const orderTreeData = ref<OrderTreeVo>({} as OrderTreeVo);
+const loading = ref(false);
+
 // 仓库信息
 const warehouseInfo = ref<WarehouseVO>({} as WarehouseVO);
 
@@ -392,21 +178,21 @@ const getOrderDetail = async () => {
   }
 
   try {
-    const res = await getOrderMain(orderId as any);
+    loading.value = true;
+    const res = await getOrderMainAndSubOrder(orderId as any);
     orderDetail.value = res.data;
+    orderTreeData.value = res.data;
 
-    // 获取商品明细
-    if (orderDetail.value.orderProductList) {
+    // 获取商品明细(优先从树接口的 productList,其次从 orderProductList)
+    if ((orderDetail.value as any).productList) {
+      productList.value = (orderDetail.value as any).productList;
+    } else if (orderDetail.value.orderProductList) {
       productList.value = orderDetail.value.orderProductList;
-    } else if (orderDetail.value.id) {
-      await getProductList(orderDetail.value);
     }
 
     // 获取发货商品明细
     if (orderDetail.value.deliverProductList) {
       deliverProductList.value = orderDetail.value.deliverProductList;
-    } else if (orderDetail.value.id) {
-      await getDeliverProductList(orderDetail.value);
     }
 
     // 获取发货单及关联的物流商品信息
@@ -462,6 +248,8 @@ const getOrderDetail = async () => {
   } catch (error) {
     console.error('获取订单详情失败:', error);
     proxy?.$modal.msgError('获取订单详情失败');
+  } finally {
+    loading.value = false;
   }
 };
 
@@ -529,24 +317,6 @@ const handleEditLogistics = async (row?: any) => {
   statusLogDrawerRef.value?.openDrawer(row, currentOrderStatus);
 };
 
-// 获取商品明细列表
-const getProductList = async (orderDetail: OrderMainVO) => {
-  try {
-    productList.value = orderDetail.orderProductList || [];
-  } catch (error) {
-    console.error('获取商品明细失败:', error);
-  }
-};
-
-// 获取发货商品明细列表
-const getDeliverProductList = async (orderDetail: OrderMainVO) => {
-  try {
-    deliverProductList.value = orderDetail.deliverProductList || [];
-  } catch (error) {
-    console.error('获取发货商品明细失败:', error);
-  }
-};
-
 // 获取发货单列表
 const getOrderDeliverListData = async (orderId: string | number) => {
   try {