gaoluyang
2026-05-15 df15f94ac6ec48154f802475794fbe0c15052794
src/views/inventoryManagement/dispatchLog/Record.vue
@@ -465,33 +465,26 @@
const handleEdit = async (row) => {
  dialogType.value = 'edit';
  resetForm();
  // 填充表单数据
  formState.value = {
    id: row.id,
    productId: row.productId,
    productModelId: row.productModelId,
    productName: row.productName,
    productModelName: row.model,
    unit: row.unit,
    type: props.type === '0' ? 'qualified' : 'unqualified',
    qualitity: row.stockOutNum,
    batchNo: row.batchNo,
    warehouseInfoId: row.warehouseInfoId,
    recordType: row.recordType,
    remark: row.remark || "",
    maxStock: 0,
  };
  // 先加载所有数据,最后再赋值 formState
  let loadedWarehouseList = [];
  let loadedBatchNoList = [];
  let loadedBatchNoStockMap = {};
  let loadedMaxStock = 0;
  let loadedRawBatchNoMaps = {};
  // 编辑时加载仓库列表
  if (row.warehouseInfoId) {
    const allWarehouses = await loadWarehouseList();
    const currentWarehouse = allWarehouses.find(w => String(w.id) === String(row.warehouseInfoId));
    if (currentWarehouse) {
      warehouseList.value = [{
      loadedWarehouseList = [{
        id: currentWarehouse.id,
        warehouseName: currentWarehouse.warehouseName || currentWarehouse.name || currentWarehouse.warehouseCode || `仓库${currentWarehouse.id}`
      }];
    }
  }
  // 编辑时查询产品库存
  if (row.productModelId) {
    try {
@@ -510,23 +503,34 @@
        console.log('产品数据:', product);
        console.log('batchNoMaps:', product.batchNoMaps);
        if (product.batchNoMaps && Object.keys(product.batchNoMaps).length > 0) {
          rawBatchNoMaps.value = product.batchNoMaps;
          loadedRawBatchNoMaps = product.batchNoMaps;
          // 获取所有仓库信息用于反显名称
          const allWarehouses = await loadWarehouseList();
          const warehouseMap = {};
          allWarehouses.forEach(w => {
            warehouseMap[w.id] = w.warehouseName || w.name || w.warehouseCode || `仓库${w.id}`;
          });
          // 构建仓库列表
          warehouseList.value = Object.keys(product.batchNoMaps).map(warehouseInfoId => ({
          // 构建仓库列表,确保包含当前记录的仓库
          const warehouseIds = Object.keys(product.batchNoMaps);
          // 如果当前记录的仓库不在 product.batchNoMaps 中,添加进去
          if (row.warehouseInfoId && !warehouseIds.some(id => String(id) === String(row.warehouseInfoId))) {
            warehouseIds.push(String(row.warehouseInfoId));
          }
          loadedWarehouseList = warehouseIds.map(warehouseInfoId => ({
            id: warehouseInfoId,
            warehouseName: warehouseMap[warehouseInfoId] || `仓库${warehouseInfoId}`
          }));
          console.log('当前仓库ID:', row.warehouseInfoId);
          console.log('该仓库的batchNoMaps:', product.batchNoMaps[row.warehouseInfoId]);
          // 如果当前有仓库ID,解析该仓库的批号库存
          if (row.warehouseInfoId && product.batchNoMaps[row.warehouseInfoId]) {
            const batchArray = product.batchNoMaps[row.warehouseInfoId];
          // 如果当前有仓库ID,解析该仓库的批号库存(处理类型不匹配问题)
          let batchArray = null;
          if (row.warehouseInfoId) {
            // 尝试多种方式获取批号数据
            batchArray = product.batchNoMaps[row.warehouseInfoId] ||
                        product.batchNoMaps[String(row.warehouseInfoId)] ||
                        product.batchNoMaps[Number(row.warehouseInfoId)];
          }
          if (batchArray) {
            console.log('batchArray:', batchArray);
            const batchMap = {};
            const batches = [];
@@ -537,48 +541,73 @@
              batches.push(batchNo);
              batchMap[batchNo] = stock;
            });
            batchNoList.value = batches;
            batchNoStockMap.value = batchMap;
            loadedBatchNoList = batches;
            loadedBatchNoStockMap = batchMap;
            console.log('batchMap:', batchMap);
            console.log('当前批号:', row.batchNo);
            // 设置当前批号的库存
            if (row.batchNo && batchMap[row.batchNo] !== undefined) {
              formState.value.maxStock = batchMap[row.batchNo];
              console.log('设置maxStock为:', formState.value.maxStock);
              loadedMaxStock = batchMap[row.batchNo];
              console.log('设置maxStock为:', loadedMaxStock);
            } else {
              console.log('未找到当前批号的库存');
              formState.value.maxStock = 0;
              loadedMaxStock = 0;
            }
          } else {
            console.log('未找到当前仓库的batchNoMaps');
            batchNoList.value = row.batchNo ? [row.batchNo] : [];
            batchNoStockMap.value = {};
            formState.value.maxStock = 0;
            loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
            loadedBatchNoStockMap = {};
            loadedMaxStock = 0;
          }
        } else {
          console.log('产品没有batchNoMaps');
          batchNoList.value = row.batchNo ? [row.batchNo] : [];
          batchNoStockMap.value = {};
          formState.value.maxStock = 0;
          loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
          loadedBatchNoStockMap = {};
          loadedMaxStock = 0;
        }
      } else {
        console.log('接口返回数据异常:', res);
        batchNoList.value = row.batchNo ? [row.batchNo] : [];
        batchNoStockMap.value = {};
        formState.value.maxStock = 0;
        loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
        loadedBatchNoStockMap = {};
        loadedMaxStock = 0;
      }
    } catch (error) {
      console.error('查询产品库存失败', error);
      batchNoList.value = row.batchNo ? [row.batchNo] : [];
      batchNoStockMap.value = {};
      formState.value.maxStock = 0;
      loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
      loadedBatchNoStockMap = {};
      loadedMaxStock = 0;
    }
  } else {
    console.log('没有productModelId');
    batchNoList.value = row.batchNo ? [row.batchNo] : [];
    batchNoStockMap.value = {};
    formState.value.maxStock = 0;
    loadedBatchNoList = row.batchNo ? [row.batchNo] : [];
    loadedBatchNoStockMap = {};
    loadedMaxStock = 0;
  }
  // 所有数据加载完成后,一次性赋值
  warehouseList.value = loadedWarehouseList;
  batchNoList.value = loadedBatchNoList;
  batchNoStockMap.value = loadedBatchNoStockMap;
  rawBatchNoMaps.value = loadedRawBatchNoMaps;
  // 最后赋值 formState,确保仓库列表已经准备好
  // 注意:将 warehouseInfoId 转换为字符串,确保与 warehouseList 中的 id 类型匹配
  formState.value = {
    id: row.id,
    productId: row.productId,
    productModelId: row.productModelId,
    productName: row.productName,
    productModelName: row.model,
    unit: row.unit,
    type: props.type === '0' ? 'qualified' : 'unqualified',
    qualitity: row.stockOutNum,
    batchNo: row.batchNo,
    warehouseInfoId: row.warehouseInfoId != null ? String(row.warehouseInfoId) : null,
    recordType: row.recordType,
    remark: row.remark || "",
    maxStock: loadedMaxStock,
  };
  // 所有数据加载完成后再显示弹窗
  dialogVisible.value = true;
};