buhuazhen
2026-05-27 955c05d19906b0c37c295935943f623bba04995b
src/views/qualityManagement/rawMaterialInspection/components/formDia.vue
@@ -228,7 +228,7 @@
});
// 打开弹框
const openDialog = async (type, row, defaultCheckResult = "", defaultCheckName = "") => {
const openDialog = async (type, row, defaultCheckResult = "", defaultCheckName = "", defaultTestStandardId = "", defaultCheckCompany = "", defaultQualityInspectParams = []) => {
  operationType.value = type;
  getOptions().then((res) => {
    supplierList.value = res.data;
@@ -254,14 +254,19 @@
    productId: "",
    productModelId: "",
    model: "",
    testStandardId: "",
    testStandardId: defaultTestStandardId || "",
    unit: "",
    quantity: "",
    checkCompany: "",
    checkCompany: defaultCheckCompany || "",
    checkResult: defaultCheckResult || "",
  }
  testStandardOptions.value = [];
  tableData.value = [];
  // 如果从检验弹窗传入了参数数据,直接使用;否则清空
  if (defaultQualityInspectParams && defaultQualityInspectParams.length > 0) {
    tableData.value = defaultQualityInspectParams;
  } else {
    tableData.value = [];
  }
  // 先确保产品树已加载,否则编辑时产品/规格型号无法反显
  await getProductOptions();
  if (operationType.value === 'edit') {
@@ -273,8 +278,15 @@
      form.value.checkResult = defaultCheckResult;
    }
    // 如果传入了默认检验员,覆盖row中的值(优先使用传入的检验员)
    console.log('formDia checkName debug:', { defaultCheckName, rowCheckName: row.checkName });
    form.value.checkName = defaultCheckName || row.checkName || "";
    // 如果传入了默认指标选择,覆盖row中的值
    if (defaultTestStandardId) {
      form.value.testStandardId = defaultTestStandardId;
    }
    // 如果传入了默认检测单位,覆盖row中的值
    if (defaultCheckCompany) {
      form.value.checkCompany = defaultCheckCompany;
    }
    currentProductId.value = row.productId || 0
    // 关键:编辑时加载规格型号下拉选项,才能反显 productModelId
    if (currentProductId.value) {
@@ -290,37 +302,35 @@
        modelOptions.value = [];
      }
    }
    // 编辑模式下,先加载指标选项,然后加载参数列表
    // 编辑模式下,先加载指标选项
    if (currentProductId.value) {
      // 先加载指标选项
      let params = {
        productId: currentProductId.value,
        inspectType: 0
      }
      qualityInspectDetailByProductId(params).then(res => {
        testStandardOptions.value = res.data || [];
        // 使用 nextTick 和 setTimeout 确保选项已经渲染到 DOM
        nextTick(() => {
          setTimeout(() => {
            // 如果编辑数据中有 testStandardId,则设置并加载对应的参数
            if (savedTestStandardId) {
              // 确保类型匹配(item.id 可能是数字或字符串)
              const matchedOption = testStandardOptions.value.find(item =>
            // 如果从检验弹窗传入了参数数据,直接使用;否则加载原参数数据
            if (defaultQualityInspectParams && defaultQualityInspectParams.length > 0) {
              // 已经在上面设置了 tableData,这里只需要设置 testStandardId
              if (defaultTestStandardId) {
                form.value.testStandardId = defaultTestStandardId;
              }
            } else if (savedTestStandardId) {
              // 没有传入参数数据,使用原有逻辑
              const matchedOption = testStandardOptions.value.find(item =>
                item.id == savedTestStandardId || String(item.id) === String(savedTestStandardId)
              );
              if (matchedOption) {
                // 确保使用匹配项的 id(保持类型一致)
                form.value.testStandardId = matchedOption.id;
                // 编辑保留原检验值,直接拉取原参数数据
                getQualityInspectParamList(row.id);
              } else {
                // 如果找不到匹配项,尝试直接使用原值
                console.warn('未找到匹配的指标选项,testStandardId:', savedTestStandardId, '可用选项:', testStandardOptions.value);
                form.value.testStandardId = savedTestStandardId;
                getQualityInspectParamList(row.id);
              }
            } else {
              // 否则使用旧的逻辑
              getQualityInspectParamList(row.id);
            }
          }, 100);