yuan
2026-09-13 4d9ce4d87bcae1f27cffe03befaeb50eea69dde1
src/views/productionManagement/workOrderManagement/index.vue
@@ -133,7 +133,7 @@
          <el-input v-model.number="reportForm.quantity"
                    type="number"
                    min="0"
                    step="1"
                    step="0.001"
                    style="width: 300px"
                    placeholder="请输入生产合格数量"
                    @input="handleQuantityInput" />
@@ -336,16 +336,16 @@
      slot: "completionStatus",
      width: "140",
    },
    {
      label: "计划开始时间",
      prop: "planStartTime",
      width: "140",
    },
    {
      label: "计划结束时间",
      prop: "planEndTime",
      width: "140",
    },
    // {
    //   label: "计划开始时间",
    //   prop: "planStartTime",
    //   width: "140",
    // },
    // {
    //   label: "计划结束时间",
    //   prop: "planEndTime",
    //   width: "140",
    // },
    {
      label: "实际开始时间",
      prop: "actualStartTime",
@@ -446,7 +446,7 @@
    }
    const num = Number(value);
    // 整数且大于等于1
    if (isNaN(num) || !Number.isInteger(num) || num < 0) {
    if (isNaN(num) || num < 0) {
      callback(new Error("生产合格数量必须大于等于0"));
      return;
    }
@@ -461,7 +461,7 @@
    }
    const num = Number(value);
    // 整数且大于等于0
    if (isNaN(num) || !Number.isInteger(num) || num < 0) {
    if (isNaN(num) || num < 0) {
      callback(new Error("报废数量必须大于等于0"));
      return;
    }
@@ -487,17 +487,6 @@
    // 如果小于1,清除
    if (num < 0) {
      reportForm.quantity = null;
      return;
    }
    // 如果是小数取整数部分
    if (!Number.isInteger(num)) {
      const intValue = Math.floor(num);
      // 如果取整后小于1,清除
      if (intValue < 0) {
        reportForm.quantity = null;
        return;
      }
      reportForm.quantity = intValue;
      return;
    }
    reportForm.quantity = num;
@@ -544,6 +533,12 @@
    },
  });
  const { searchForm } = toRefs(data);
  // 数量运算保留6位小数,避免浮点减法出现 7.199999999999999 这类精度误差
  const toQuantity = val => {
    const n = Number(val);
    if (!Number.isFinite(n)) return 0;
    return parseFloat(n.toFixed(6));
  };
  const toProgressPercentage = val => {
    const n = Number(val);
    if (!Number.isFinite(n)) return 0;
@@ -675,7 +670,10 @@
    currentReportRowData.value = row;
    const planQuantity = Number(row.planQuantity || 0);
    const completeQuantity = Number(row.completeQuantity || 0);
    const remainingQuantity = Math.max(0, planQuantity - completeQuantity);
    const remainingQuantity = Math.max(
      0,
      toQuantity(planQuantity - completeQuantity)
    );
    reportForm.planQuantity = remainingQuantity;
    reportForm.quantity =
      row.quantity !== undefined && row.quantity !== null ? row.quantity : null;