src/views/qualityManagement/processInspection/components/formDia.vue
@@ -139,16 +139,8 @@
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="检测结果:"
                          prop="checkResult">
              <el-select v-model="form.checkResult" :disabled="isViewMode">
                <el-option label="合格"
                           value="合格" />
                <el-option label="不合格"
                           value="不合格" />
                <el-option label="部分合格"
                           value="部分合格" />
              </el-select>
            <el-form-item label="合格率:">
              <el-tag :type="passRateTagType">{{ passRateDisplayText }}</el-tag>
            </el-form-item>
          </el-col>
        </el-row>
@@ -250,7 +242,6 @@
      qualifiedQuantity: "",
      unqualifiedQuantity: "",
      checkCompany: "",
      checkResult: "",
    },
    rules: {
      checkTime: [{ required: true, message: "请输入", trigger: "blur" }],
@@ -264,13 +255,43 @@
      qualifiedQuantity: [{ required: true, message: "请输入", trigger: "blur" }],
      unqualifiedQuantity: [{ required: true, message: "请输入", trigger: "blur" }],
      checkCompany: [{ required: false, message: "请输入", trigger: "blur" }],
      checkResult: [{ required: true, message: "请输入", trigger: "change" }],
    },
  });
  const userList = ref([]);
  const { form, rules } = toRefs(data);
  // 是否为查看模式
  const isViewMode = computed(() => operationType.value === 'view');
  const passRateValue = computed(() => {
    const fromApi = form.value.passRate;
    if (fromApi != null && fromApi !== '') {
      const n = Number(fromApi);
      if (!Number.isNaN(n)) return n;
    }
    const qualified = Number(form.value.qualifiedQuantity) || 0;
    const unqualified = Number(form.value.unqualifiedQuantity) || 0;
    const total = qualified + unqualified;
    if (!total || total === 0) return null;
    return (qualified / total) * 100;
  });
  const passRateDisplayText = computed(() => {
    const params = passRateValue.value;
    if (params == null || params === '') return '—';
    const n = Number(params);
    if (Number.isNaN(n)) return '—';
    return `${n.toFixed(2)}%`;
  });
  const passRateTagType = computed(() => {
    const params = passRateValue.value;
    if (params == null || params === '') return 'info';
    const n = Number(params);
    if (Number.isNaN(n)) return 'info';
    if (n >= 100) return 'success';
    if (n >= 90) return 'warning';
    return 'danger';
  });
  // 编辑时:productMainId 或 purchaseLedgerId 任一有值则工序、数量置灰
  const processQuantityDisabled = computed(() => {
    const v = form.value || {};
@@ -338,7 +359,6 @@
      unit: "",
      quantity: "",
      checkCompany: "",
      checkResult: "",
    };
    testStandardOptions.value = [];
    tableData.value = [];
@@ -347,8 +367,8 @@
    if (operationType.value === "edit" || operationType.value === "view") {
      // 先保存 testStandardId,避免被清空
      const savedTestStandardId = row.testStandardId;
      // 先设置表单数据,但暂时清空 testStandardId,等选项加载完成后再设置
      form.value = { ...row, testStandardId: "" };
      const { passRate, ...rowWithoutPassRate } = row;
      form.value = { ...rowWithoutPassRate, testStandardId: "" };
      currentProductId.value = row.productId || 0;
      // 关键:编辑时加载规格型号下拉选项,才能反显 productModelId
      if (currentProductId.value) {