yyb
2026-05-12 324f1e7a665780eb432c3494b0c9d2f694e4f749
src/pages/inventoryManagement/scanIn/index.vue
@@ -303,6 +303,11 @@
    item.operateQuantity = String(Math.max(0, n));
  };
  const hasEditableInboundItems = computed(() => {
    if (!recordList.value?.length) return false;
    return recordList.value.some(item => !isFullyStocked(item));
  });
  const formatCell = (item, row, idx) => {
    if (row.key === "index") {
      const v = item.index;
@@ -404,6 +409,7 @@
  };
  const handleSelectContact = data => {
    if (data?.source === "scanShip") return;
    const { stepIndex, contact } = data || {};
    if (stepIndex === null || stepIndex === undefined) return;
    const idx = Number(stepIndex);
@@ -426,6 +432,10 @@
      modal.msgError("缺少订单信息,请重新扫码");
      return;
    }
    if (!hasEditableInboundItems.value) {
      modal.msgError("该产品已经全部入库");
      return;
    }
    const salesLedgerProductList = buildSalesLedgerProductList(recordList.value);
    if (!hasAnyPositiveStockedQty(salesLedgerProductList)) {
      modal.msgError("请至少填写一行大于 0 的入库数量");
@@ -439,7 +449,10 @@
    }
    const runApi = currentSubmitConfig.runApi;
    const approveUserIds = stockApproverNodes.value.map(node => node.userId).join(",");
    const payload = currentSubmitConfig.payloadBuilder(salesLedgerProductList, approveUserIds);
    const payload = currentSubmitConfig.payloadBuilder(
      salesLedgerProductList,
      approveUserIds
    );
    try {
      submitLoading.value = true;
      modal.loading("提交中...");
@@ -571,6 +584,9 @@
  .module-icon {
    width: 140rpx;
    height: 140rpx;
    min-width: 140rpx;
    min-height: 140rpx;
    flex-shrink: 0;
    border-radius: 32rpx;
    display: flex;
    justify-content: center;
@@ -591,6 +607,8 @@
  .module-info {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
  }
  .module-label {