spring
2 天以前 20dbdee5a002544f6a4e12b5e39e338052418782
src/pages/production/wire/report/reportManage.vue
@@ -272,6 +272,9 @@
const oneLength = ref();
const allChildDataList = ref<any[]>([]);
const wireDetail = ref<any>(null);
const isMonofil = ref();
const meterWeight = ref();
const totalWeight = ref();
// 新增弹框相关
const addDialogVisible = ref(false);
@@ -344,20 +347,33 @@
const handleAdd = () => {
  const lastChild = childList.value[childList.value.length - 1];
  // 从详情数据中获取米重
  const meterWeight =
  // 从详情数据中获取米重,优先使用传入的参数
  const meterWeightValue =
    Number(meterWeight.value) ||
    Number(wireDetail.value?.meterWeight) ||
    Number(wireDetail.value?.weight) ||
    Number(wireDetail.value?.theoryWeight) ||
    0;
  // 如果是成品单丝,根据公式自动计算盘长:(totalWeight/meterWeight)*1000
  let calculatedLength = "";
  if (
    isMonofil.value &&
    (isMonofil.value === 1 || isMonofil.value === "1" || isMonofil.value === true)
  ) {
    const totalWeightValue = Number(totalWeight.value) || 0;
    if (totalWeightValue > 0 && meterWeightValue > 0) {
      calculatedLength = ((totalWeightValue / meterWeightValue) * 1000).toFixed(2);
    }
  }
  // 初始化新数据,如果有最后一条数据,使用其值作为默认值
  newChildData.value = {
    dishModel: lastChild?.dishModel || "",
    actuallyLength: lastChild?.actuallyLength || "",
    actuallyLength: calculatedLength || lastChild?.actuallyLength || "",
    actuallyWeight: lastChild?.actuallyWeight || "",
    isJoint: lastChild?.isJoint || 0,
    meterWeight: meterWeight,
    meterWeight: meterWeightValue,
  };
  addDialogVisible.value = true;
@@ -530,28 +546,68 @@
  }
};
// 自动计算实际重量
// 自动计算实际重量(根据长度)
const handleCalculateWeight = (row: any) => {
  // 从 newChildData 对象中获取米重
  const meterWeight = Number(row.meterWeight) || 0;
  const meterWeightValue = Number(row.meterWeight) || 0;
  const actuallyLength = Number(row.actuallyLength);
  if (meterWeight > 0 && actuallyLength > 0) {
    const calculatedWeight = (meterWeight * actuallyLength) / 1000;
  if (meterWeightValue > 0 && actuallyLength > 0) {
    const calculatedWeight = (meterWeightValue * actuallyLength) / 1000;
    row.actuallyWeight = Number(calculatedWeight.toFixed(3));
  }
  console.log("row", meterWeight, actuallyLength);
  console.log("row", meterWeightValue, actuallyLength);
};
// 监听实际长度变化,自动计算重量
// 自动计算实际长度(根据重量,仅成品单丝)
const handleCalculateLength = (row: any) => {
  // 如果是成品单丝,根据重量计算长度
  if (
    isMonofil.value &&
    (isMonofil.value === 1 || isMonofil.value === "1" || isMonofil.value === true)
  ) {
    const meterWeightValue = Number(meterWeight.value) || Number(row.meterWeight) || 0;
    const actuallyWeight = Number(row.actuallyWeight);
    if (meterWeightValue > 0 && actuallyWeight > 0) {
      const calculatedLength = (actuallyWeight / meterWeightValue) * 1000;
      row.actuallyLength = Number(calculatedLength.toFixed(2));
    }
  }
};
// 监听实际长度变化,自动计算重量(非成品单丝时)
watch(
  () => newChildData.value.actuallyLength,
  (newValue, oldValue) => {
    console.log("实际长度变化:", { newValue, oldValue, newChildData: newChildData.value });
    if (newValue && String(newValue).trim() !== "") {
    console.log("实际长度变化:", { newValue, oldValue, isMonofil: isMonofil.value });
    // 如果不是成品单丝,才根据长度计算重量
    if (
      newValue &&
      String(newValue).trim() !== "" &&
      !(
        isMonofil.value &&
        (isMonofil.value === 1 || isMonofil.value === "1" || isMonofil.value === true)
      )
    ) {
      // 使用 nextTick 确保 v-model 已经更新
      nextTick(() => {
        handleCalculateWeight(newChildData.value);
      });
    }
  },
  { immediate: false, deep: true }
);
// 监听实际重量变化,自动计算长度(仅成品单丝)
watch(
  () => newChildData.value.actuallyWeight,
  (newValue, oldValue) => {
    console.log("实际重量变化:", { newValue, oldValue, isMonofil: isMonofil.value });
    if (newValue && String(newValue).trim() !== "") {
      // 使用 nextTick 确保 v-model 已经更新
      nextTick(() => {
        handleCalculateLength(newChildData.value);
      });
    }
  },
@@ -571,6 +627,11 @@
    supplier: options.supplier,
  };
  // 接收传递的参数
  isMonofil.value = options.isMonofil;
  meterWeight.value = options.meterWeight;
  totalWeight.value = options.totalWeight;
  await getDetailData(options.wireId);
  await getData();
});