gaoluyang
14 小时以前 214847db4baa5d6612e31f6b30689db84df908a0
feat(stock): 出库批次下拉增加客户与合同号信息展示
已修改3个文件
96 ■■■■■ 文件已修改
src/views/inventoryManagement/stockManagement/OilStockInDialog.vue 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.js 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/inventoryManagement/stockManagement/OilStockInDialog.vue
@@ -314,8 +314,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="车挂牌号"
                          prop="trailerPlateNo"
                          :rules="[{ required: true, message: '请输入车挂牌号', trigger: 'blur' }]">
                          prop="trailerPlateNo">
              <el-input v-model="formState.trailerPlateNo"
                        placeholder="请输入"
                        clearable />
src/views/inventoryManagement/stockManagement/OilStockOutDialog.vue
@@ -266,11 +266,23 @@
                         placeholder="请选择"
                         clearable
                         filterable
                         popper-class="batch-no-select-popper"
                         style="width: 100%">
                <!-- 批次号是选中值,客户/合同是帮忙辨认批次的附加信息 -->
                <el-option v-for="item in batchNoOptions"
                           :key="item"
                           :label="item"
                           :value="item" />
                           :key="item.batchNo"
                           :label="item.batchNo"
                           :value="item.batchNo">
                  <div class="batch-option">
                    <div class="batch-option-title">{{ item.batchNo }}</div>
                    <div class="batch-option-line">
                      客户名称:{{ item.customerName || "--" }}
                    </div>
                    <div class="batch-option-line">
                      销售合同号:{{ item.salesContractNo || "--" }}
                    </div>
                  </div>
                </el-option>
              </el-select>
            </el-form-item>
          </el-col>
@@ -482,10 +494,7 @@
          </el-col>
          <el-col :span="12">
            <el-form-item label="车挂牌号"
                          prop="trailerPlateNo"
                          :rules="isSalesOut
                ? [{ required: true, message: '请输入车挂牌号', trigger: 'blur' }]
                : []">
                          prop="trailerPlateNo">
              <el-input v-model="formState.trailerPlateNo"
                        placeholder="请输入"
                        clearable />
@@ -668,7 +677,7 @@
    autoOilProduct.value = "";
  };
  // 出库批次候选取该规格的入库批次
  // 出库批次候选取该规格的入库批次;除批次号外还带出批次的客户与合同,便于辨认
  const batchNoOptions = ref([]);
  // 销售类出库的可用量提示(上次剩余 + 当前库存)
  const availableQty = ref(null);
@@ -744,9 +753,29 @@
      productModelId,
    }).then(res => {
      const records = res?.data?.records || [];
      batchNoOptions.value = [
        ...new Set(records.map(item => item.batchNo).filter(Boolean)),
      ];
      // 同一批次可能有多条库存行,按批次号去重,缺客户/合同的用同批次其它行补齐
      const batchMap = new Map();
      records.forEach(item => {
        if (!item.batchNo) {
          return;
        }
        const exist = batchMap.get(item.batchNo);
        if (!exist) {
          batchMap.set(item.batchNo, {
            batchNo: item.batchNo,
            customerName: item.customerName || "",
            salesContractNo: item.salesContractNo || "",
          });
          return;
        }
        if (!exist.customerName && item.customerName) {
          exist.customerName = item.customerName;
        }
        if (!exist.salesContractNo && item.salesContractNo) {
          exist.salesContractNo = item.salesContractNo;
        }
      });
      batchNoOptions.value = [...batchMap.values()];
    });
  };
@@ -1457,6 +1486,24 @@
    }
  }
  // 出库批次下拉选项:小卡片样式
  .batch-option {
    padding: 8px 10px;
    .batch-option-title {
      font-size: 14px;
      font-weight: 600;
      color: #303133;
      margin-bottom: 4px;
    }
    .batch-option-line {
      font-size: 12px;
      color: #909399;
      line-height: 1.8;
    }
  }
  // 销售台账下拉选项:小卡片样式
  .ledger-option {
    padding: 8px 10px;
@@ -1576,4 +1623,24 @@
      }
    }
  }
  // 出库批次下拉面板(body 下,需全局样式)
  .batch-no-select-popper {
    .el-select-dropdown__item {
      height: auto;
      line-height: normal;
      padding: 4px 0;
    }
    .batch-option {
      border: 1px solid #e4e7ed;
      border-radius: 6px;
      background-color: #fafbfc;
      &:hover {
        border-color: #409eff;
        background-color: #f0f7ff;
      }
    }
  }
</style>
vite.config.js
@@ -8,11 +8,11 @@
  const { VITE_APP_ENV } = env;
  const baseUrl =
      env.VITE_APP_ENV === "development"
          ? "http://36.213.90.123:9017"
          ? "http://localhost:7005"
          : env.VITE_BASE_API;
  const javaUrl =
      env.VITE_APP_ENV === "development"
          ? "http://1.15.17.182:9049"
          ? "http://localhost:7005"
          : env.VITE_JAVA_API;
  return {
    define:{