Przeglądaj źródła

修改伙伴商订单分配问题以及订单报备部分

hurx 15 godzin temu
rodzic
commit
17a7a691df

+ 6 - 0
src/api/order/orderAssignmentLog/types.ts

@@ -107,6 +107,12 @@ export interface OrderSplitAssignForm extends BaseEntity {
   itemRules?: Array<OrderProductAssignRule>;
 
   remark?: string;
+
+  preparedStatus?: string;
+
+  preparedOrderId?: string | number;
+
+  attachmentUrl?: string;
 }
 
 export interface OrderProductAssignRule {

+ 3 - 3
src/api/partner/prepared/index.ts

@@ -1,8 +1,8 @@
 import request from '@/utils/request';
 import { AxiosPromise } from 'axios';
-import { 
-  PartnerPreparedVO, 
-  PartnerPreparedForm, 
+import {
+  PartnerPreparedVO,
+  PartnerPreparedForm,
   PartnerPreparedQuery,
   PartnerPreparedProductVO,
   PartnerPreparedProductForm,

+ 98 - 6
src/views/order/orderAssignment/splitAssignDialog.vue

@@ -130,6 +130,29 @@
             <el-table-column label="分配时间" prop="createTime" align="center" />
             <el-table-column label="分配人" prop="createName" align="center" />
             <el-table-column label="分配目标" prop="assigneeName" align="center" />
+            <el-table-column label="报备单号" prop="preparedOrderNo" align="center">
+              <template #default="scope">
+                {{ scope.row.preparedOrderNo || '-' }}
+              </template>
+            </el-table-column>
+            <el-table-column label="附件图片" prop="attachmentUrlStr" align="center" width="300">
+              <template #default="scope">
+                <!-- 1. 首先判断 attachmentUrlStr 是否有值 -->
+                <div v-if="scope.row.attachmentUrlStr" style="display: flex; flex-wrap: wrap">
+                  <el-image
+                    v-for="(imgUrl, index) in scope.row.attachmentUrlStr.split(',')"
+                    :key="index"
+                    :src="imgUrl"
+                    :preview-src-list="scope.row.attachmentUrlStr.split(',')"
+                    style="width: 50px; height: 50px; margin-right: 5px"
+                    fit="cover"
+                  >
+                  </el-image>
+                </div>
+                <!-- 2. 如果没有值,则显示一个占位提示 -->
+                <span v-else style="color: #999; font-size: 12px">无附件</span>
+              </template>
+            </el-table-column>
           </el-table>
         </el-tab-pane>
       </el-tabs>
@@ -165,12 +188,54 @@
             <div class="target-input-wrapper">
               <span class="required-mark">*</span>
               <span class="label">伙伴商: </span>
-              <el-select v-model="assignForm.targetId" :placeholder="'请选择伙伴商'" clearable filterable style="flex: 1">
+              <el-select
+                v-model="assignForm.targetId"
+                :placeholder="'请选择伙伴商'"
+                clearable
+                filterable
+                style="flex: 1"
+                @change="handlePartnerChange"
+              >
                 <el-option v-for="item in partnerList" :key="item.id" :label="item.name" :value="item.id" />
               </el-select>
             </div>
           </el-col>
         </el-row>
+
+        <el-row :gutter="20" style="margin-top: 20px" v-show="assignForm.targetType === 'bp'">
+          <el-col :span="12">
+            <div class="target-input-wrapper">
+              <span class="required-mark">*</span>
+              <span class="label">是否报备:</span>
+              <el-radio-group v-model="assignForm.preparedStatus" @change="handlePreparedStatusChange">
+                <el-radio v-for="dict in sys_platform_yes_no" :key="dict.value" :value="dict.value">{{ dict.label }}</el-radio>
+              </el-radio-group>
+            </div>
+          </el-col>
+          <el-col :span="12" v-show="assignForm.preparedStatus === '0'">
+            <div class="target-input-wrapper">
+              <span class="required-mark">*</span>
+              <span class="label">报备单号: </span>
+              <el-select v-model="assignForm.preparedOrderId" :placeholder="'请选择报备订单'" clearable filterable style="flex: 1">
+                <el-option v-for="item in preparedOrderList" :key="item.id" :label="item.preparedNo" :value="item.id" />
+              </el-select>
+            </div>
+          </el-col>
+          <el-col :span="12" v-show="assignForm.preparedStatus === '1'">
+            <div class="target-input-wrapper">
+              <span class="required-mark">*</span>
+              <span class="label">附件: </span>
+              <ImageUpload
+                v-model="assignForm.attachmentUrl"
+                :limit="5"
+                :file-size="5"
+                :file-type="['png', 'jpg', 'jpeg']"
+                :is-show-tip="false"
+                value-type="url"
+              />
+            </div>
+          </el-col>
+        </el-row>
       </div>
 
       <!-- 商品列表 -->
@@ -224,16 +289,16 @@
 </template>
 
 <script setup name="SplitAssignDialog" lang="ts">
+import ImageUpload from '@/components/ImageUpload/index.vue';
 import { getOrderMain } from '@/api/order/orderMain';
 import { listOrderAssignment } from '@/api/order/orderAssignmentLog';
 import { listPartnerMerchant } from '@/api/partner/merchant';
 import { listCustomerInfo } from '@/api/customer/customerFile/customerInfo';
-
 import { addOrderSplitAssign, addOrderAssignment } from '@/api/order/orderAssignmentLog';
 import { OrderSplitAssignForm, OrderProductAssignRule, OrderAssignmentForm } from '@/api/order/orderAssignmentLog/types';
-
+import { listPartnerPrepared } from '@/api/partner/prepared';
 const { proxy } = getCurrentInstance() as ComponentInternalInstance;
-const { sys_platform_code, order_assignment_status } = toRefs<any>(proxy?.useDict('sys_platform_code', 'order_assignment_status'));
+const { sys_platform_yes_no, order_assignment_status } = toRefs<any>(proxy?.useDict('sys_platform_yes_no', 'order_assignment_status'));
 
 const emit = defineEmits(['success']);
 
@@ -272,7 +337,10 @@ const orderInfo = ref<any>({
 const assignForm = reactive({
   targetType: 'bp', // 分配对象类型:bp-伙伴商
   targetId: '', // 分配目标ID
-  productList: [] as any[]
+  productList: [] as any[],
+  preparedStatus: '0',
+  preparedOrderId: undefined,
+  attachmentUrl: ''
 });
 
 // 供应商列表
@@ -300,6 +368,8 @@ const assignRecords = ref<any[]>([]);
 
 const assignmentStatus = ref('0');
 
+const preparedOrderList = ref<any[]>([]);
+
 /** 打开订单分配详情抽屉 */
 const open = async (orderId: string | number, status: string) => {
   reset();
@@ -352,7 +422,7 @@ const open = async (orderId: string | number, status: string) => {
 const loadrPartnerData = async () => {
   if (cachedPartnerList.value.length > 0) return;
   try {
-    const res: any = await listPartnerMerchant({ pageNum: 1, pageSize: 1000 });
+    const res: any = await listPartnerMerchant({ pageNum: 1, pageSize: 9999 });
     const list = res.rows || res.data || [];
     cachedPartnerList.value = list.map((item: any) => ({
       ...item,
@@ -415,6 +485,25 @@ const handleDrawerClose = (done: () => void) => {
   reset();
 };
 
+const handlePreparedStatusChange = (val: any) => {
+  if (val === '1') {
+    assignForm.preparedOrderId = undefined;
+  }
+};
+
+const handlePartnerChange = (val: any) => {
+  assignForm.preparedOrderId = undefined;
+  const queryParams = {
+    partnerId: val,
+    pageNum: 1,
+    pageSize: 100
+  };
+  listPartnerPrepared(queryParams)
+    .then((res: any) => {
+      preparedOrderList.value = res.rows;
+    })
+    .catch(() => {});
+};
 /** 待分配商品选择变化 */
 const handlePendingSelectionChange = (selection: any[]) => {
   selectedPendingProducts.value = selection;
@@ -495,6 +584,9 @@ const submitAssign = async () => {
     // 组装提交数据,只提交勾选的商品
     const submitData: OrderSplitAssignForm = {
       orderId: orderInfo.value.id, // 父订单ID
+      preparedOrderId: assignForm.preparedOrderId,
+      preparedStatus: assignForm.preparedStatus,
+      attachmentUrl: assignForm.attachmentUrl,
       itemRules: selectedAssignProducts.value.map(
         (product): OrderProductAssignRule => ({
           itemId: product.itemId, // 商品行ID

+ 8 - 1
src/views/partner/merchant/index.vue

@@ -66,7 +66,14 @@
       <pagination v-show="total > 0" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
     </el-card>
 
-    <el-drawer v-model="dialog.visible" :title="dialog.title" direction="rtl" size="60%" :before-close="handleDrawerClose">
+    <el-drawer
+      v-model="dialog.visible"
+      :title="dialog.title"
+      direction="rtl"
+      size="60%"
+      :before-close="handleDrawerClose"
+      :close-on-click-modal="true"
+    >
       <div class="drawer-tabs-wrapper">
         <el-tabs v-model="activeTab" class="drawer-tabs">
           <el-tab-pane label="基本信息" name="basic" />

+ 159 - 109
src/views/report/order/index.vue

@@ -3,7 +3,7 @@
     <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave">
       <div v-show="showSearch" class="mb-[10px]">
         <el-card shadow="hover">
-          <el-form ref="queryFormRef" :model="queryParams" :inline="true">
+          <el-form ref="queryFormRef" :model="queryParams" :inline="true" label-width="120">
             <el-form-item label="报备单号" prop="preparedNo">
               <el-input v-model="queryParams.preparedNo" placeholder="请输入" clearable @keyup.enter="handleQuery" />
             </el-form-item>
@@ -37,7 +37,7 @@
     <el-card shadow="hover">
       <template #header>
         <el-row :gutter="10">
-          <el-col :span="1.5">
+          <!-- <el-col :span="1.5">
             <el-button type="primary" plain icon="Plus" @click="handleAdd">新增报备</el-button>
           </el-col>
           <el-col :span="1.5">
@@ -45,18 +45,26 @@
           </el-col>
           <el-col :span="1.5">
             <el-button type="danger" plain :disabled="multiple" icon="Delete" @click="handleDelete()">删除</el-button>
-          </el-col>
+          </el-col> -->
           <el-col :span="1.5">
             <el-button type="warning" plain icon="Download" @click="handleExport">导出</el-button>
           </el-col>
-          <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar>
+          <!-- <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> -->
         </el-row>
       </template>
 
-      <el-table v-loading="loading" border :data="orderList" @selection-change="handleSelectionChange" row-key="id" :expand-row-keys="expandedRows" @expand-change="handleExpandChange">
+      <el-table
+        v-loading="loading"
+        border
+        :data="orderList"
+        @selection-change="handleSelectionChange"
+        row-key="id"
+        :expand-row-keys="expandedRows"
+        @expand-change="handleExpandChange"
+      >
         <el-table-column type="expand">
           <template #default="scope">
-            <div style="padding: 10px 50px; background: #f5f7fa;">
+            <div style="padding: 10px 50px; background: #f5f7fa">
               <el-table :data="scope.row.products || []" border size="small">
                 <el-table-column label="产品编号" prop="productNo" width="120" />
                 <el-table-column label="产品名称" prop="productName" min-width="150" />
@@ -75,7 +83,11 @@
         </el-table-column>
         <el-table-column label="金额" align="center" prop="amount" min-width="80" />
         <el-table-column label="创建时间" align="center" prop="createTime" min-width="160" />
-        <el-table-column label="报备到期日" align="center" prop="dueDate" min-width="120" />
+        <el-table-column label="报备到期日" align="center" prop="dueDate" min-width="120">
+          <template #default="scope">
+            <span>{{ parseTime(scope.row.dueDate, '{y}-{m}-{d}') }}</span>
+          </template>
+        </el-table-column>
         <el-table-column label="报备状态" align="center" prop="preparedStatus" min-width="80">
           <template #default="scope">
             <el-checkbox :model-value="scope.row.preparedStatus === 1" disabled />
@@ -88,7 +100,7 @@
         </el-table-column>
         <el-table-column label="操作" align="center" min-width="200">
           <template #default="scope">
-            <div style="display: flex; flex-wrap: wrap; gap: 4px; justify-content: center;">
+            <div style="display: flex; flex-wrap: wrap; gap: 4px; justify-content: center">
               <el-button link type="primary" @click="handleUpdate(scope.row)">编辑</el-button>
               <el-button link type="success" @click="handleSubmit(scope.row)">提交</el-button>
               <el-button link type="danger" @click="handleReject(scope.row)">驳回</el-button>
@@ -102,7 +114,7 @@
       <pagination v-show="total > 0" v-model:page="queryParams.pageNum" v-model:limit="queryParams.pageSize" :total="total" @pagination="getList" />
     </el-card>
 
-    <el-drawer v-model="dialog.visible" :title="dialog.title" direction="rtl" size="75%" @close="cancel">
+    <el-drawer v-model="dialog.visible" :title="dialog.title" direction="rtl" size="75%" @close="cancel" :close-on-click-modal="true">
       <el-form ref="orderFormRef" :model="form" :rules="rules" label-width="120px">
         <!-- 基本信息 -->
         <el-divider content-position="left">
@@ -135,7 +147,13 @@
           </el-col>
           <el-col :span="8">
             <el-form-item label="设计下单时间" prop="estimatedTime">
-              <el-date-picker v-model="form.estimatedTime" type="date" placeholder="请选择设计下单时间" value-format="YYYY-MM-DD" style="width: 100%" />
+              <el-date-picker
+                v-model="form.estimatedTime"
+                type="date"
+                placeholder="请选择设计下单时间"
+                value-format="YYYY-MM-DD"
+                style="width: 100%"
+              />
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -278,7 +296,7 @@
     </el-dialog>
 
     <!-- 商品选择抽屉 -->
-    <el-drawer v-model="productDrawer.visible" title="商品信息" direction="rtl" size="60%">
+    <el-drawer v-model="productDrawer.visible" title="商品信息" direction="rtl" size="60%" :close-on-click-modal="true">
       <div style="margin-bottom: 20px; display: flex; gap: 10px">
         <el-select v-model="productQuery.cooperationCode" placeholder="请选择" clearable style="width: 200px">
           <el-option v-for="dict in cooperation_code" :key="dict.value" :label="dict.label" :value="dict.value" />
@@ -289,7 +307,7 @@
         <el-button style="margin-left: auto">展开</el-button>
       </div>
 
-      <el-table :data="availableProducts" border @selection-change="handleProductSelectionChange" max-height="500">
+      <el-table :data="availableProducts" border @selection-change="handleProductSelectionChange" max-height="750">
         <el-table-column type="selection" width="55" align="center" />
         <el-table-column label="合作项目/平台" align="center" prop="cooperationCode" width="120" />
         <el-table-column label="商品编号" align="center" prop="productNo" width="120">
@@ -354,7 +372,7 @@
     </el-drawer>
 
     <!-- 附件查看抽屉 -->
-    <el-drawer v-model="attachmentDrawer.visible" title="查看附件" direction="rtl" size="50%">
+    <el-drawer v-model="attachmentDrawer.visible" title="查看附件" direction="rtl" size="50%" :close-on-click-modal="true">
       <el-table :data="attachmentDrawer.attachments" border style="width: 100%">
         <el-table-column label="附件名称" prop="name" width="150" />
         <el-table-column label="附件预览" align="center" width="200">
@@ -382,7 +400,18 @@
 
 <script setup name="OrderReport" lang="ts">
 import { getCurrentInstance, reactive, ref, toRefs, computed } from 'vue';
-import { listPartnerPrepared, getPartnerPrepared, addPartnerPrepared, updatePartnerPrepared, delPartnerPrepared, exportPartnerPrepared, listPartnerPreparedProduct, addPartnerPreparedProduct, delPartnerPreparedProduct, listSiteProducts } from '@/api/partner/prepared';
+import {
+  listPartnerPrepared,
+  getPartnerPrepared,
+  addPartnerPrepared,
+  updatePartnerPrepared,
+  delPartnerPrepared,
+  exportPartnerPrepared,
+  listPartnerPreparedProduct,
+  addPartnerPreparedProduct,
+  delPartnerPreparedProduct,
+  listSiteProducts
+} from '@/api/partner/prepared';
 import { PartnerPreparedVO, PartnerPreparedForm, PartnerPreparedQuery } from '@/api/partner/prepared/types';
 import { ComponentInternalInstance } from 'vue';
 import { getToken } from '@/utils/auth';
@@ -407,9 +436,7 @@ const expandedRows = ref<string[]>([]);
 const fileList = ref<any[]>([]);
 
 // 文件上传配置
-const uploadAction = computed(() =>
-  import.meta.env.VITE_APP_BASE_API + '/resource/oss/upload?clientid=' + import.meta.env.VITE_APP_CLIENT_ID
-);
+const uploadAction = computed(() => import.meta.env.VITE_APP_BASE_API + '/resource/oss/upload?clientid=' + import.meta.env.VITE_APP_CLIENT_ID);
 const uploadHeaders = computed(() => ({
   Authorization: 'Bearer ' + getToken()
 }));
@@ -448,31 +475,39 @@ async function handleExpandChange(row: any, expandedRowsList: any[]) {
 
 /** 提交按钮 */
 function handleSubmit(row: any) {
-  proxy?.$modal.confirm('是否确认提交该订单报备?').then(() => {
-    const updateData: PartnerPreparedForm = {
-      id: row.id,
-      preparedStatus: 0 // 提交后变为待审核
-    };
-    return updatePartnerPrepared(updateData);
-  }).then(() => {
-    proxy?.$modal.msgSuccess('提交成功');
-    getList();
-  }).catch(() => {});
+  proxy?.$modal
+    .confirm('是否确认提交该订单报备?')
+    .then(() => {
+      const updateData: PartnerPreparedForm = {
+        id: row.id,
+        preparedStatus: 0 // 提交后变为待审核
+      };
+      return updatePartnerPrepared(updateData);
+    })
+    .then(() => {
+      proxy?.$modal.msgSuccess('提交成功');
+      getList();
+    })
+    .catch(() => {});
 }
 
 /** 确认按钮 */
 function handleConfirm(row: any) {
-  proxy?.$modal.confirm('是否确认该订单报备?').then(() => {
-    const updateData: PartnerPreparedForm = {
-      id: row.id,
-      preparedStatus: 1, // 已通过
-      dealStatus: 2 // 已完成
-    };
-    return updatePartnerPrepared(updateData);
-  }).then(() => {
-    proxy?.$modal.msgSuccess('确认成功');
-    getList();
-  }).catch(() => {});
+  proxy?.$modal
+    .confirm('是否确认该订单报备?')
+    .then(() => {
+      const updateData: PartnerPreparedForm = {
+        id: row.id,
+        preparedStatus: 1, // 已通过
+        dealStatus: 2 // 已完成
+      };
+      return updatePartnerPrepared(updateData);
+    })
+    .then(() => {
+      proxy?.$modal.msgSuccess('确认成功');
+      getList();
+    })
+    .catch(() => {});
 }
 
 const data = reactive({
@@ -528,13 +563,15 @@ const auditFormRef = ref();
 
 function getList() {
   loading.value = true;
-  listPartnerPrepared(queryParams.value).then((res: any) => {
-    orderList.value = res.rows;
-    total.value = res.total;
-    loading.value = false;
-  }).catch(() => {
-    loading.value = false;
-  });
+  listPartnerPrepared(queryParams.value)
+    .then((res: any) => {
+      orderList.value = res.rows;
+      total.value = res.total;
+      loading.value = false;
+    })
+    .catch(() => {
+      loading.value = false;
+    });
 }
 
 function handleQuery() {
@@ -632,25 +669,29 @@ function submitForm() {
     if (valid) {
       if (form.value.id) {
         // 修改订单
-        updatePartnerPrepared(form.value).then(() => {
-          // 保存商品列表
-          return saveProductList(form.value.id as number);
-        }).then(() => {
-          proxy?.$modal.msgSuccess('修改成功');
-          dialog.value.visible = false;
-          getList();
-        });
+        updatePartnerPrepared(form.value)
+          .then(() => {
+            // 保存商品列表
+            return saveProductList(form.value.id as number);
+          })
+          .then(() => {
+            proxy?.$modal.msgSuccess('修改成功');
+            dialog.value.visible = false;
+            getList();
+          });
       } else {
         // 新增订单
-        addPartnerPrepared(form.value).then((res: any) => {
-          const orderId = res.data;
-          // 保存商品列表
-          return saveProductList(orderId);
-        }).then(() => {
-          proxy?.$modal.msgSuccess('新增成功');
-          dialog.value.visible = false;
-          getList();
-        });
+        addPartnerPrepared(form.value)
+          .then((res: any) => {
+            const orderId = res.data;
+            // 保存商品列表
+            return saveProductList(orderId);
+          })
+          .then(() => {
+            proxy?.$modal.msgSuccess('新增成功');
+            dialog.value.visible = false;
+            getList();
+          });
       }
     }
   });
@@ -659,7 +700,7 @@ function submitForm() {
 /** 保存商品列表 */
 async function saveProductList(partnerPreparedId: number) {
   if (!productList.value.length) return;
-  
+
   // 逐个保存商品(如果是新增的商品)
   for (const product of productList.value) {
     if (!product.id) {
@@ -739,30 +780,37 @@ function cancelAudit() {
 }
 
 function handleVerify(row: any) {
-  proxy?.$modal.confirm('是否确认核实该订单报备?').then(() => {
-    const updateData: PartnerPreparedForm = {
-      id: row.id,
-      preparedStatus: 1
-    };
-    return updatePartnerPrepared(updateData);
-  }).then(() => {
-    proxy?.$modal.msgSuccess('核实成功');
-    getList();
-  });
+  proxy?.$modal
+    .confirm('是否确认核实该订单报备?')
+    .then(() => {
+      const updateData: PartnerPreparedForm = {
+        id: row.id,
+        preparedStatus: 1
+      };
+      return updatePartnerPrepared(updateData);
+    })
+    .then(() => {
+      proxy?.$modal.msgSuccess('核实成功');
+      getList();
+    });
 }
 
 function handleReject(row: any) {
-  proxy?.$modal.confirm('是否确认驳回该订单报备?').then(() => {
-    const updateData: PartnerPreparedForm = {
-      id: row.id,
-      preparedStatus: 2,
-      reject: '驳回'
-    };
-    return updatePartnerPrepared(updateData);
-  }).then(() => {
-    proxy?.$modal.msgSuccess('驳回成功');
-    getList();
-  }).catch(() => {});
+  proxy?.$modal
+    .confirm('是否确认驳回该订单报备?')
+    .then(() => {
+      const updateData: PartnerPreparedForm = {
+        id: row.id,
+        preparedStatus: 2,
+        reject: '驳回'
+      };
+      return updatePartnerPrepared(updateData);
+    })
+    .then(() => {
+      proxy?.$modal.msgSuccess('驳回成功');
+      getList();
+    })
+    .catch(() => {});
 }
 
 function handleViewAttachment(row: any) {
@@ -824,29 +872,31 @@ function handleImportProduct() {
 }
 
 function searchProducts() {
-  listSiteProducts(productQuery.value).then((res: any) => {
-    availableProducts.value = (res.data?.rows || []).map((item: any) => ({
-      id: item.id,
-      cooperationCode: '--',
-      productNo: item.productNo,
-      platformNo: '--',
-      productImage: item.productImage,
-      productName: item.productName,
-      category: item.isSelf === 1 ? '自营商品' : '非自营商品',
-      unit: item.unitName || '包',
-      marketPrice: item.marketPrice,
-      memberPrice: item.memberPrice,
-      basePrice: item.minSellingPrice,
-      stockTotal: item.totalInventory || 0,
-      stockAvailable: item.nowInventory || 0,
-      stockCost: item.virtualInventory || 0,
-      shelfStatus: item.productStatus
-    }));
-    productTotal.value = res.data?.total || 0;
-  }).catch(() => {
-    availableProducts.value = [];
-    productTotal.value = 0;
-  });
+  listSiteProducts(productQuery.value)
+    .then((res: any) => {
+      availableProducts.value = (res.data?.rows || []).map((item: any) => ({
+        id: item.id,
+        cooperationCode: '--',
+        productNo: item.productNo,
+        platformNo: '--',
+        productImage: item.productImage,
+        productName: item.productName,
+        category: item.isSelf === 1 ? '自营商品' : '非自营商品',
+        unit: item.unitName || '包',
+        marketPrice: item.marketPrice,
+        memberPrice: item.memberPrice,
+        basePrice: item.minSellingPrice,
+        stockTotal: item.totalInventory || 0,
+        stockAvailable: item.nowInventory || 0,
+        stockCost: item.virtualInventory || 0,
+        shelfStatus: item.productStatus
+      }));
+      productTotal.value = res.data?.total || 0;
+    })
+    .catch(() => {
+      availableProducts.value = [];
+      productTotal.value = 0;
+    });
 }
 
 function resetProductQuery() {
@@ -868,7 +918,7 @@ function confirmAddProducts() {
     proxy?.$modal.msgWarning('请至少选择一个商品');
     return;
   }
-  
+
   let addedCount = 0;
   // 将选中的商品添加到产品列表
   selectedProducts.value.forEach((product: any) => {
@@ -890,7 +940,7 @@ function confirmAddProducts() {
       addedCount++;
     }
   });
-  
+
   if (addedCount > 0) {
     proxy?.$modal.msgSuccess(`成功添加 ${addedCount} 个商品`);
   } else {