spring
20 小时以前 20dbdee5a002544f6a4e12b5e39e338052418782
fix: 完成成品单丝报工逻辑
已修改6个文件
140 ■■■■ 文件已修改
src/components/product_card/index.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/manifest.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/production/detail/wireDetail.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/production/list/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/production/wire/report/reportManage.vue 85 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/production/wire/report/wire.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/product_card/index.vue
@@ -3,6 +3,13 @@
    <template #title>
      <view class="flex justify-between w-full">
        <text class="font-medium text-[#252525]">设备编号: {{ data[map.deviceModel] }}</text>
        <wd-tag
          :color="data[map.isMonofil] == 1 ? '#0D867F' : '#e6a23c'"
          :bg-color="data[map.isMonofil] == 1 ? '#E7F4EC' : '#fdf6ec'"
        >
          <text class="text-xs">{{ data[map.isMonofil] == 1 ? "成品" : "半成品" }}</text>
        </wd-tag>
        <!-- #fdf6ec #e6a23c-->
        <wd-tag color="#0D867F" bg-color="#E7F4EC">
          <text class="text-xs">{{ data[map.model] }}</text>
        </wd-tag>
@@ -60,6 +67,19 @@
        </view>
      </wd-col>
    </wd-row>
    <wd-row class="my-2" v-if="data.type === '拉丝' && data.contractNo && data[map.isMonofil] == 1">
      <wd-col :span="24">
        <view class="flex">
          <view class="icon_box">
            <wd-icon name="folder" color="#0D867F"></wd-icon>
          </view>
          <text class="text-[#646874] mx-2">
            重量:
            <text class="text-[#252525]">{{ data.totalWeight }} kg</text>
          </text>
        </view>
      </wd-col>
    </wd-row>
    <wd-row class="my-2">
      <wd-col :span="12">
        <view class="flex">
src/manifest.json
@@ -2,7 +2,7 @@
    "name" : "线缆上报",
    "appid" : "__UNI__F64E0A4",
    "description" : "",
    "versionName" : "1.0.26",
    "versionName" : "1.0.27",
    "versionCode" : "100",
    "transformPx" : false,
    /* 5+App特有相关 */
src/pages/production/detail/wireDetail.vue
@@ -11,6 +11,8 @@
        unAmount: 'unAmount',
        poleModel: 'poleModel',
        contractNo: 'contractNo',
        isMonofil: 'isMonofil',
        totalWeight: 'totalWeight',
      }"
    />
    <view class="mx-3">
@@ -57,6 +59,9 @@
  oneLength: undefined,
  poleModel: undefined,
  contractNo: undefined,
  isMonofil: undefined,
  totalWeight: undefined,
  meterWeight: undefined,
  type: "拉丝",
});
const detailData = ref<any>({});
@@ -75,6 +80,9 @@
  cardData.oneLength = data.oneLength;
  cardData.poleModel = data.poleModel;
  cardData.contractNo = data.contractNo;
  cardData.isMonofil = data.isMonofil;
  cardData.totalWeight = data.totalWeight;
  cardData.meterWeight = data.meterWeight;
  cardData.type = data.type || "拉丝";
};
@@ -127,8 +135,14 @@
  }
  // 如果有 prepareId,正常跳转
  const isMonofil =
    cardData.isMonofil !== undefined && cardData.isMonofil !== null ? cardData.isMonofil : "";
  const meterWeight =
    cardData.meterWeight !== undefined && cardData.meterWeight !== null ? cardData.meterWeight : "";
  const totalWeight =
    cardData.totalWeight !== undefined && cardData.totalWeight !== null ? cardData.totalWeight : "";
  uni.navigateTo({
    url: `/pages/production/wire/report/wire?id=${paramsId.value}&model=${cardData.model}&oneLength=${cardData.oneLength}`,
    url: `/pages/production/wire/report/wire?id=${paramsId.value}&model=${cardData.model}&oneLength=${cardData.oneLength}&isMonofil=${isMonofil}&meterWeight=${meterWeight}&totalWeight=${totalWeight}`,
  });
};
src/pages/production/list/index.vue
@@ -43,6 +43,8 @@
  unit: "unit",
  poleModel: "poleModel",
  contractNo: "contractNo",
  isMonofil: "isMonofil",
  totalWeight: "totalWeight",
});
const props = defineProps({
  api: {
@@ -103,6 +105,8 @@
      map.unAmount = "unAmount";
      map.poleModel = "poleModel";
      map.contractNo = "contractNo";
      map.isMonofil = "isMonofil";
      map.totalWeight = "totalWeight";
    }
    if (data.data.total == 0) {
      pagingRef.value.complete(true);
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();
});
src/pages/production/wire/report/wire.vue
@@ -221,6 +221,9 @@
const paramsId = ref();
const model = ref();
const oneLength = ref();
const isMonofil = ref();
const meterWeight = ref();
const totalWeight = ref();
// 父级数据列表
const parentDataList = ref<any[]>([]);
@@ -518,8 +521,11 @@
  }
  // 跳转到报工管理页面
  const isMonofilParam = isMonofil.value !== undefined && isMonofil.value !== null ? isMonofil.value : "";
  const meterWeightParam = meterWeight.value !== undefined && meterWeight.value !== null ? meterWeight.value : "";
  const totalWeightParam = totalWeight.value !== undefined && totalWeight.value !== null ? totalWeight.value : "";
  uni.navigateTo({
    url: `/pages/production/wire/report/reportManage?wireId=${paramsId.value}&parentId=${parentRow.id}&poleNumber=${parentRow.poleNumber}&poleModel=${parentRow.poleModel}&polePackageNumber=${parentRow.polePackageNumber}&poleWeight=${parentRow.poleWeight}&supplier=${parentRow.supplier || ""}`,
    url: `/pages/production/wire/report/reportManage?wireId=${paramsId.value}&parentId=${parentRow.id}&poleNumber=${parentRow.poleNumber}&poleModel=${parentRow.poleModel}&polePackageNumber=${parentRow.polePackageNumber}&poleWeight=${parentRow.poleWeight}&supplier=${parentRow.supplier || ""}&isMonofil=${isMonofilParam}&meterWeight=${meterWeightParam}&totalWeight=${totalWeightParam}`,
  });
};
@@ -612,6 +618,11 @@
onLoad(async (options: any) => {
  paramsId.value = options.id;
  model.value = options.model;
  oneLength.value = options.oneLength;
  isMonofil.value = options.isMonofil;
  meterWeight.value = options.meterWeight;
  totalWeight.value = options.totalWeight;
  await getDetailData(options.id);
  await loadSupplierDict();
  await getData();