spring
2 天以前 3ffdb76baf74089912a23c1f8f8112d5c8c1063b
src/views/procurementManagement/procurementLedger/index.vue
@@ -1474,6 +1474,22 @@
    if (type === "edit") {
      // 复制行数据
      productForm.value = { ...row };
      // el-radio-group 的 value 是布尔 true/false
      // 后端/表格数据可能是 0/1 或字符串,需做一次归一化,避免不回显/提交默认“否”
      const normalizeIsChecked = (val) => {
        if (val === true) return true;
        if (val === false) return false;
        if (val === 1 || val === "1") return true;
        if (val === 0 || val === "0") return false;
        if (typeof val === "string") {
          const s = val.trim().toLowerCase();
          if (["是", "yes", "true", "y"].includes(s)) return true;
          if (["否", "no", "false", "n"].includes(s)) return false;
        }
        return !!val;
      };
      productForm.value.isChecked = normalizeIsChecked(row?.isChecked);
      
      // 如果是从模板加载的数据,可能没有 productId 和 productModelId
      // 需要根据 productCategory 和 specificationModel 来查找对应的 ID
@@ -1532,10 +1548,26 @@
  };
  const getProductOptions = () => {
    return productTreeList().then(res => {
      productOptions.value = convertIdToValue(res);
      const tree = convertIdToValue(res);
      productOptions.value = filterOutSemiFinished(tree);
      return res;
    });
  };
  const filterOutSemiFinished = (nodes = []) => {
    return (nodes || [])
      .filter(node => {
        const label = String(node?.label ?? "");
        return !label.includes("半成品");
      })
      .map(node => {
        const next = { ...node };
        if (next.children && next.children.length > 0) {
          next.children = filterOutSemiFinished(next.children);
        }
        return next;
      });
  };
  const getModels = value => {
    if (value) {
      productForm.value.productCategory =