| | |
| | | }); |
| | | |
| | | // 打开弹框 |
| | | 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; |
| | |
| | | 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') { |
| | |
| | | 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) { |
| | |
| | | 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); |