1
heshaofeng
2026-01-13 1866b69e8f67e382a0a75268d63e6418c8ae02e7
ÏîÄ¿´úÂë/WIDESEA_WMSClient/src/extension/inbound/extend/OrderStockTake.vue
@@ -159,13 +159,13 @@
          >
            <el-input
              v-model.number="formData.actualQuantity"
              placeholder="请输入实际盘点数量(大于0)"
              placeholder="请输入实际盘点数量"
              type="number"
              clearable
              @keydown.enter="handleStockTakeComplete"
              :disabled="!formData.stockQuantity || loading"
              class="custom-input"
              :class="{ 'has-value': formData.actualQuantity }"
              :class="{ 'has-value': formData.actualQuantity !== '' }"
            ></el-input>
          </el-form-item>
        </el-form>
@@ -185,13 +185,7 @@
            type="primary"
            size="small"
            @click="handleStockTakeComplete"
            :disabled="
              loading ||
              !formData.boxNo.trim() ||
              !formData.barcode.trim() ||
              !formData.stockQuantity ||
              !formData.actualQuantity
            "
            :disabled="isFormCompleteDisabled"
            class="complete-btn"
          >
            <Check /> ç›˜ç‚¹å®Œæˆ
@@ -251,6 +245,20 @@
// æ£€æµ‹æ˜¯å¦ä¸ºç§»åŠ¨ç«¯
const isMobile = computed(() => {
  return window.innerWidth < 768;
});
// è®¡ç®—属性:盘点完成按钮是否禁用
const isFormCompleteDisabled = computed(() => {
  return (
    loading.value ||
    !formData.boxNo.trim() ||
    !formData.barcode.trim() ||
    !formData.stockQuantity ||
    formData.actualQuantity === "" ||
    formData.actualQuantity === null ||
    formData.actualQuantity === undefined ||
    Number(formData.actualQuantity) < 0 // å°äºŽ0时禁用,0是允许的
  );
});
// ç»„件挂载时聚焦到料箱号输入框
@@ -334,15 +342,18 @@
  }
};
// å®žé™…盘点数量验证(优化:有值时验证合法性)
// å®žé™…盘点数量验证:允许0,但不允许小于0
const validateActualQuantity = (rule, value, callback) => {
  if (value === null || value === undefined) {
    callback(new Error("请输入实际盘点数量"));
  } else if (value <= 0) {
    callback(new Error("实际盘点数量必须大于0"));
  } else if (!Number.isInteger(value)) {
    callback(new Error("实际盘点数量必须是整数"));
  } else {
  // ç©ºå€¼ç”±required规则处理,这里只验证数值合法性
  if (value === null || value === undefined || value === "") {
    callback(); // ç©ºå€¼ä¸åœ¨è¿™é‡Œæç¤ºï¼Œäº¤ç»™required规则
  }
  // éªŒè¯æ•°å€¼æ˜¯å¦å°äºŽ0
  else if (value < 0) {
    callback(new Error("实际盘点数量不能小于0"));
  }
  // éªŒè¯é€šè¿‡ï¼ˆå…è®¸0)
  else {
    callback();
  }
};
@@ -471,6 +482,12 @@
  const valid = await formRef.value.validate();
  if (!valid) return;
  // é¢å¤–检查实际盘点数量是否小于0
  if (formData.actualQuantity < 0) {
    ElMessage.error("实际盘点数量不能小于0");
    return;
  }
  const { boxNo, barcode, actualQuantity, stockQuantity } = formData;
  const receiptNo = orderNo.value;