yuan
2026-07-16 8f48b6ad96e6f7c88cd1e6ea80fcec66bcdc8155
src/views/productionManagement/workOrderManagement/index.vue
@@ -133,7 +133,7 @@
          <el-input v-model.number="reportForm.quantity"
                    type="number"
                    min="0"
                    step="0.1"
                    step="0.0001"
                    style="width: 300px"
                    placeholder="请输入生产合格数量"
                    @input="handleQuantityInput" />
@@ -143,7 +143,7 @@
          <el-input v-model.number="reportForm.scrapQty"
                    type="number"
                    min="0"
                    step="0.1"
                    step="0.0001"
                    style="width: 300px"
                    placeholder="请输入报废数量"
                    @input="handleScrapQtyInput" />
@@ -245,6 +245,7 @@
      <template #footer>
        <span class="dialog-footer">
          <el-button type="primary"
                     :loading="reportLoading"
                     @click="handleReport">确定</el-button>
          <el-button @click="reportDialogVisible = false">取消</el-button>
        </span>
@@ -414,6 +415,7 @@
  const transferCardQrUrl = ref("");
  const transferCardRowData = ref(null);
  const reportDialogVisible = ref(false);
  const reportLoading = ref(false);
  const fileDialogVisible = ref(false);
  const currentWorkOrderId = ref(null);
  const reportFormRef = ref(null);
@@ -421,7 +423,7 @@
  const reportForm = reactive({
    planQuantity: 0,
    quantity: null,
    scrapQty: null,
    scrapQty: 0,
    userName: "",
    workOrderId: "",
    reportWork: "",
@@ -528,6 +530,12 @@
    if (n <= 0) return 0;
    if (n >= 100) return 100;
    return Math.round(n);
  };
  const subtractQuantity = (minuend, subtrahend, precision = 4) => {
    const factor = 10 ** precision;
    const a = Math.round((Number(minuend) || 0) * factor);
    const b = Math.round((Number(subtrahend) || 0) * factor);
    return Math.max(0, (a - b) / factor);
  };
  const progressColor = percentage => {
    const p = toProgressPercentage(percentage);
@@ -651,20 +659,18 @@
      }
    }
    currentReportRowData.value = row;
    const planQuantity = Number(row.planQuantity || 0);
    const completeQuantity = Number(row.completeQuantity || 0);
    const remainingQuantity = Math.max(0, planQuantity - completeQuantity);
    reportForm.planQuantity = remainingQuantity;
    reportForm.planQuantity = subtractQuantity(
      row.planQuantity,
      row.completeQuantity
    );
    reportForm.quantity =
      row.quantity !== undefined && row.quantity !== null ? row.quantity : null;
    reportForm.productProcessRouteItemId = row.productProcessRouteItemId;
    reportForm.workOrderId = row.id;
    reportForm.reportWork = row.reportWork;
    reportForm.productMainId = row.productMainId;
    reportForm.scrapQty =
      row.scrapQty !== undefined && row.scrapQty !== null ? row.scrapQty : null;
    reportForm.productionOrderRoutingOperationId =
      row.productionOrderRoutingOperationId;
    reportForm.scrapQty = 0;
    reportForm.productionOrderRoutingOperationId = row.productionOrderRoutingOperationId;
    reportForm.productionOrderId = row.productionOrderId;
    if (row.type == 0) {
      reportForm.workHour = row.workHour || 0;
@@ -774,6 +780,7 @@
        productionOperationParamList: productionOperationParamList,
      };
      reportLoading.value = true;
      addProductMain(submitParams)
        .then(res => {
          proxy.$modal.msgSuccess("报工成功");
@@ -784,6 +791,9 @@
          ElMessageBox.alert("报工失败", "提示", {
            confirmButtonText: "确定",
          });
        })
        .finally(() => {
          reportLoading.value = false;
        });
    });
  };