spring
8 天以前 61449dbf92441b41e37c1d519e8662cca998ff6a
src/views/qualityManagement/processInspection/components/formDia.vue
@@ -43,28 +43,27 @@
          <el-col :span="12">
            <el-form-item label="指标选择:" prop="testStandardId">
              <el-select
                v-model="form.testStandardId"
                placeholder="请选择指标"
                clearable
                @change="handleTestStandardChange"
                style="width: 100%"
                  v-model="form.testStandardId"
                  placeholder="请选择指标"
                  clearable
                  @change="handleTestStandardChange"
                  style="width: 100%"
              >
                <el-option
                  v-for="item in testStandardOptions"
                  :key="item.id"
                  :label="item.standardName || item.standardNo"
                  :value="item.id"
                    v-for="item in testStandardOptions"
                    :key="item.id"
                    :label="item.standardName || item.standardNo"
                    :value="item.id"
                />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="单位:" prop="unit">
              <el-input v-model="form.unit" placeholder="请输入" disabled/>
            <el-form-item label="料号:" prop="materialCode">
              <el-input v-model="form.materialCode" placeholder="请输入" disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="不良数量:" prop="defectiveQuantity">
              <el-input-number
@@ -80,18 +79,33 @@
              />
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="单位:" prop="unit">
              <el-input v-model="form.unit" placeholder="请输入" disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="合格数量:" prop="qualifiedQuantity">
              <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.qualifiedQuantity" placeholder="请输入" clearable :precision="2" disabled/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="不良原因:" prop="defectiveReason">
              <el-select v-model="form.defectiveReason" placeholder="请选择" clearable style="width: 100%">
                <el-option
                  v-for="dict in defective_reason"
                  :key="dict.value"
                  :label="dict.label"
                  :value="dict.value"
                    v-for="dict in defective_reason"
                    :key="dict.value"
                    :label="dict.label"
                    :value="dict.value"
                />
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="数量:" prop="quantity">
              <el-input-number :step="0.01" :min="0" style="width: 100%" v-model="form.quantity" placeholder="请输入" clearable :precision="2" :disabled="operationType !== 'add'"/>
@@ -104,22 +118,21 @@
              <el-input v-model="form.checkCompany" placeholder="请输入" clearable/>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="检验员:" prop="checkName">
              <el-select v-model="form.checkName" placeholder="请选择" clearable>
                <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
                           :value="item.nickName"/>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
            <el-form-item label="检测结果:" prop="checkResult">
              <el-select v-model="form.checkResult">
                <el-option label="合格" value="合格" />
                <el-option label="不合格" value="不合格" />
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="30">
          <el-col :span="12">
            <el-form-item label="检验员:" prop="checkName">
                     <el-select v-model="form.checkName" placeholder="请选择" clearable>
                        <el-option v-for="item in userList" :key="item.nickName" :label="item.nickName"
                                        :value="item.nickName"/>
                     </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="12">
@@ -187,6 +200,7 @@
    model: "",
    testStandardId: "",
    unit: "",
    materialCode: "",
    quantity: "",
    defectiveQuantity: "",
    defectiveReason: "",
@@ -256,15 +270,24 @@
// 监听不良数量变化,自动更新数量
// 当 defectiveQuantity 增加时,quantity 减少;当 defectiveQuantity 减少时,quantity 增加
watch(() => form.value.defectiveQuantity, (newVal, oldVal) => {
  const newDefectiveQty = Number(newVal) || 0;
  const oldDefectiveQty = Number(oldVal) || 0;
  const currentQuantity = Number(form.value.quantity) || 0;
  // 计算变化量:新值 - 旧值
  const changeAmount = newDefectiveQty - oldDefectiveQty;
  // quantity 反向变化
  form.value.quantity = Number((currentQuantity - changeAmount).toFixed(2));
  if (newVal > form.value.quantity) {
    form.value.defectiveQuantity = form.value.quantity;
  }
  form.value.qualifiedQuantity = Number((form.value.quantity - newVal).toFixed(2));
});
// 监听总数量变化,自动更新合格数量
watch(() => form.value.quantity, (newVal, oldVal) => {
  const totalQty = Number(newVal) || 0;
  const defectiveQty = Number(form.value.defectiveQuantity) || 0;
  // 确保不良数量不超过总数量
  if (defectiveQty > totalQty) {
    form.value.defectiveQuantity = totalQty;
  }
  // 计算合格数量
  form.value.qualifiedQuantity = Number((totalQty - defectiveQty).toFixed(2));
});
// 打开弹框
@@ -294,6 +317,7 @@
      model: "",
      testStandardId: "",
      unit: "",
    materialCode: "",
      quantity: "",
      checkCompany: "",
      checkResult: "",
@@ -378,6 +402,7 @@
const getModels = (value) => {
  form.value.productModelId = undefined;
  form.value.unit = undefined;
  form.value.materialCode = undefined;
  modelOptions.value = [];
  currentProductId.value = value
  form.value.productName = findNodeById(productOptions.value, value);
@@ -392,6 +417,7 @@
const handleChangeModel = (value) => {
  form.value.model = modelOptions.value.find(item => item.id == value)?.model || '';
  form.value.unit = modelOptions.value.find(item => item.id == value)?.unit || '';
  form.value.materialCode = modelOptions.value.find(item => item.id == value)?.materialCode || '';
}
const findNodeById = (nodes, productId) => {