src/views/inventoryManagement/stockManagement/FrozenAndThaw.vue
@@ -28,7 +28,7 @@
            :label="operationType === 'frozen' ? '冻结数量:' : '解冻数量:'"
            prop="lockedQuantity"
        >
          <el-input-number v-model="formState.lockedQuantity" :step="1" :min="maxCount > 0 ? 1 : 0" precision="0" style="width: 100%" :max="maxCount" :disabled="maxCount < 1" />
          <el-input-number v-model="formState.lockedQuantity" :step="0.01" :min="0" precision="2" style="width: 100%" :max="maxCount" :disabled="maxCount < 1" />
        </el-form-item>
      </el-form>
@@ -43,7 +43,7 @@
</template>
<script setup>
import {ref, computed, getCurrentInstance, onMounted} from "vue";
import {ref, computed, watch, getCurrentInstance, onMounted} from "vue";
import {frozenStockInventory, thawStockInventory} from "@/api/inventoryManagement/stockInventory.js";
import {frozenStockUninventory, thawStockUninventory} from "@/api/inventoryManagement/stockUninventory.js";
@@ -73,15 +73,21 @@
  lockedQuantity: undefined,
});
const isShow = computed({
  get() {
    return props.visible;
  },
  set(val) {
    emit('update:visible', val);
  },
});
// 弹窗开关用本地状态管理:父级打开时同步为 true,本地关闭后通知父级
const isShow = ref(false);
watch(
  () => props.visible,
  val => {
    isShow.value = val;
  },
  { immediate: true }
);
const requestClose = () => {
  isShow.value = false;
  emit('update:visible', false);
};
let { proxy } = getCurrentInstance()
@@ -91,7 +97,7 @@
    lockedQuantity: undefined,
    type: undefined,
  };
  isShow.value = false;
  requestClose();
};
const maxCount = computed(() => {
@@ -118,67 +124,48 @@
}
const handleSubmit = () => {
  proxy.$refs["formRef"].validate(valid => {
    if (valid) {
      const data = Object.assign({}, formState.value);
      if (formState.value.type === 'qualified') {
        data.id = props.record.qualifiedId;
        // 冻结
        if (props.operationType === 'frozen') {
          frozenStockInventory(data).then(res => {
            if (res.code === 200) {
              // 关闭模态框
              isShow.value = false;
              // 告知父组件已完成
              emit('completed');
              proxy.$modal.msgSuccess("提交成功");
            } else {
              proxy.$modal.msgError(res.msg);
            }
          })
        } else {
          thawStockInventory(data).then(res => {
            if (res.code === 200) {
              // 关闭模态框
              isShow.value = false;
              // 告知父组件已完成
              emit('completed');
              proxy.$modal.msgSuccess("提交成功");
            } else {
              proxy.$modal.msgError(res.msg);
            }
          })
        }
  // 不依赖表单引用,直接手动校验
  if (!formState.value.type) {
    proxy.$modal.msgError("请选择库存类型");
    return;
  }
  const qty = Number(formState.value.lockedQuantity);
  if (!formState.value.lockedQuantity || qty <= 0) {
    proxy.$modal.msgError(
      `请输入${props.operationType === 'frozen' ? '冻结' : '解冻'}数量`
    );
    return;
  }
  if (qty > maxCount.value) {
    proxy.$modal.msgError(`数量不能超过${maxCount.value}`);
    return;
  }
  const data = Object.assign({}, formState.value);
  const doSubmit = (api, id) => {
    data.id = id;
    api(data).then(res => {
      if (res.code === 200) {
        requestClose();
        emit('completed');
        proxy.$modal.msgSuccess("提交成功");
      } else {
        data.id = props.record.unQualifiedId;
        if (props.operationType === 'frozen') {
          frozenStockUninventory(data).then(res => {
            if (res.code === 200) {
              // 关闭模态框
              isShow.value = false;
              // 告知父组件已完成
              emit('completed');
              proxy.$modal.msgSuccess("提交成功");
            } else {
              proxy.$modal.msgError(res.msg);
            }
          })
        } else {
          thawStockUninventory(data).then(res => {
            if (res.code === 200) {
              // 关闭模态框
              isShow.value = false;
              // 告知父组件已完成
              emit('completed');
              proxy.$modal.msgSuccess("提交成功");
            } else {
              proxy.$modal.msgError(res.msg);
            }
          })
        }
        proxy.$modal.msgError(res.msg);
      }
    }
  })
    });
  };
  if (formState.value.type === 'qualified') {
    doSubmit(
      props.operationType === 'frozen' ? frozenStockInventory : thawStockInventory,
      props.record.qualifiedId
    );
  } else {
    doSubmit(
      props.operationType === 'frozen' ? frozenStockUninventory : thawStockUninventory,
      props.record.unQualifiedId
    );
  }
};
onMounted(() => {