huminmin
2026-07-15 a52ebf49d0a304697ec7af4f4c3e6b6e13f269e7
src/views/qualityManagement/nonconformingManagement/components/formDia.vue
@@ -122,10 +122,8 @@
              <el-select v-model="form.dealResult"
                         placeholder="请选择"
                         clearable>
                <el-option :label="item.label"
                           :value="item.value"
                           v-for="item in rejection_handling"
                           :key="item.value" />
                <el-option label="报工" value="报工" />
                <el-option label="报废" value="报废" />
              </el-select>
            </el-form-item>
          </el-col>
@@ -137,10 +135,12 @@
              <el-select v-model="form.dealType"
                         placeholder="请选择"
                         clearable
                         :disabled="!form.dealResult"
                         style="width: 100%">
                <el-option label="轻微返工" :value="0" />
                <el-option label="严重返工" :value="1" />
                <el-option label="报废" :value="2" />
                <el-option v-for="item in availableDealTypeOptions"
                           :key="item.value"
                           :label="item.label"
                           :value="item.value" />
              </el-select>
            </el-form-item>
          </el-col>
@@ -152,20 +152,6 @@
                               :precision="2"
                               style="width: 100%"
                               :disabled="form.dealType !== 0" />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="重新生成新单:"
                          prop="regenerateNewOrder">
              <el-select v-model="form.regenerateNewOrder"
                         placeholder="请选择"
                         clearable
                         style="width: 100%">
                <el-option label="否" :value="0" />
                <el-option label="是" :value="1" />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
@@ -239,7 +225,6 @@
  const dialogFormVisible = ref(false);
  const operationType = ref("");
  const { rejection_handling } = proxy.useDict("rejection_handling");
  const data = reactive({
    form: {
      checkTime: "",
@@ -255,7 +240,7 @@
      inspectType: "",
      defectivePhenomena: "",
      dealResult: "",
      dealType: 0,
      dealType: null,
      repairWorkHour: 0,
      regenerateNewOrder: 0,
      dealName: "",
@@ -280,14 +265,43 @@
  const modelOptions = ref([]);
  const userList = ref([]); // 检验员/处理人下拉列表
  const watermarkText = computed(() => {
    const userName = userStore.nickName || userStore.user?.nickName || "未知人员";
    const now = new Date();
    const pad = (n) => String(n).padStart(2, "0");
    return `不合格处理\n${userName}\n${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;
    return `天津市玮苓乐器有限公司\n${now.getFullYear()}-${pad(now.getMonth() + 1)}-${pad(now.getDate())} ${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}`;
  });
  watch(() => form.value.dealType, (val) => {
  const availableDealTypeOptions = computed(() => {
    if (form.value.dealResult === "报废") {
      return [{ label: "报废", value: 2 }];
    }
    if (form.value.dealResult === "报工") {
      return [
        { label: "轻微返工", value: 0 },
        { label: "严重返工", value: 1 },
      ];
    }
    return [];
  });
  watch(() => form.value.dealResult, val => {
    if (val === "报废") {
      form.value.dealType = 2;
      form.value.repairWorkHour = 0;
      return;
    }
    if (val === "报工" && form.value.dealType === 2) {
      form.value.dealType = null;
    }
  });
  watch(() => form.value.dealType, val => {
    if (val !== 0) {
      form.value.repairWorkHour = 0;
    }
    if (val === 2) {
      form.value.dealResult = "报废";
    }
    if ((val === 0 || val === 1) && !form.value.dealResult) {
      form.value.dealResult = "报工";
    }
  });
@@ -308,7 +322,7 @@
        dealName: "",
        dealTime: "",
        dealResult: "",
        dealType: 0,
        dealType: null,
        repairWorkHour: 0,
        regenerateNewOrder: 0,
        photoUrls: [],
@@ -327,19 +341,27 @@
    }
    getProductOptions();
    if (operationType.value === "edit") {
      getQualityUnqualifiedInfo(row.id).then(res => {
        const { inspectState, ...rest } = res.data || {};
        form.value = {
          ...rest,
          photoUrls: rest.photoUrls
        getQualityUnqualifiedInfo(row.id).then(res => {
          const { inspectState, ...rest } = res.data || {};
          form.value = {
            ...rest,
            photoUrls: rest.photoUrls
            ? String(rest.photoUrls).split(",").filter(Boolean).map((url, index) => ({
              name: `image-${index + 1}`,
              url,
            }))
              }))
            : [],
        };
      });
    }
          };
          if (Number(form.value.dealType) === 0) {
            form.value.regenerateNewOrder = 0;
          } else if (Number(form.value.dealType) === 1 || Number(form.value.dealType) === 2) {
            form.value.regenerateNewOrder = 1;
          }
          if (!form.value.dealResult) {
            form.value.dealResult = Number(form.value.dealType) === 2 ? "报废" : "报工";
          }
        });
      }
  };
  const getProductOptions = () => {
    productTreeList().then(res => {
@@ -392,6 +414,17 @@
      if (valid) {
        // 状态字段不在表单填写,也不传给后端
        const { inspectState, ...payload } = form.value || {};
        if (!payload.dealResult) {
          proxy.$modal.msgError("请选择处理结果");
          return;
        }
        if (payload.dealResult === "报工" && (payload.dealType === null || payload.dealType === undefined || payload.dealType === 2)) {
          proxy.$modal.msgError("报工时请选择轻微返工或严重返工");
          return;
        }
        if (payload.dealResult === "报废") {
          payload.dealType = 2;
        }
        if (payload.dealType === 0 && (!payload.repairWorkHour || payload.repairWorkHour <= 0)) {
          proxy.$modal.msgError("轻微返工必须填写大于0的修理工时");
          return;