fix(form): 修复表单初始化和物料分类变更处理逻辑
This commit is contained in:
parent
092331c5c6
commit
70557ee3df
@ -20,7 +20,7 @@
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="物料分类编码" prop="matTypeCode" >
|
||||
<el-input v-model="formData.matTypeCode" placeholder="请输入物料分类编码" show-word-limit :disabled="formType === 'update'"/>
|
||||
<el-input v-model="formData.matTypeCode" placeholder="请输入物料分类编码" disabled show-word-limit />
|
||||
</el-form-item>
|
||||
<el-form-item label="最大流水号" prop="curMaxSeq" >
|
||||
<el-input v-model="formData.curMaxSeq" placeholder="请输入当前最大流水号" :disabled="formType === 'update'" show-word-limit/>
|
||||
|
||||
@ -175,7 +175,7 @@ const formRef = ref() // 表单 Ref
|
||||
const supplierList = ref<any[]>([]) //
|
||||
const supplierSelectList = ref<any[]>([])
|
||||
const supplierSelectLoading = ref(false);
|
||||
const isLoading = ref(false) // 是否正在加载数据,防止加载时触发watch
|
||||
const isInitialized = ref(false) // 是否已初始化完成,防止加载时触发watch
|
||||
const originalMatCate = ref() // 记录打开时的物料大类,用于判断是否用户主动修改
|
||||
|
||||
const remoteSupplierSearch = (query: string) => {
|
||||
@ -199,13 +199,15 @@ const open = async (type: string, id?: number) => {
|
||||
resetForm()
|
||||
// 修改时,设置数据
|
||||
formLoading.value = true
|
||||
isLoading.value = true
|
||||
isInitialized.value = false
|
||||
try {
|
||||
if (id) {
|
||||
const data = await MaterialApi.getMaterial(id)
|
||||
formData.value = data
|
||||
// 记录原始物料大类
|
||||
originalMatCate.value = data.matCate
|
||||
} else {
|
||||
originalMatCate.value = undefined
|
||||
}
|
||||
let params = {
|
||||
pageNo: 1,
|
||||
@ -218,7 +220,7 @@ const open = async (type: string, id?: number) => {
|
||||
} finally {
|
||||
formLoading.value = false
|
||||
nextTick(() => {
|
||||
isLoading.value = false
|
||||
isInitialized.value = true
|
||||
})
|
||||
}
|
||||
|
||||
@ -290,8 +292,8 @@ const handleSelectedSupplier = (newValue: any) => {
|
||||
|
||||
/** 监听物料类型变化,查询matcode并更新code */
|
||||
watch(() => formData.value.matCate, async (newVal) => {
|
||||
// 如果正在加载数据,不处理
|
||||
if (isLoading.value) {
|
||||
// 如果未初始化完成,不处理
|
||||
if (!isInitialized.value) {
|
||||
return
|
||||
}
|
||||
// 如果新值为空,清空编码
|
||||
@ -300,8 +302,8 @@ watch(() => formData.value.matCate, async (newVal) => {
|
||||
originalMatCate.value = undefined
|
||||
return
|
||||
}
|
||||
// 如果是编辑模式,且值没有变化(初始加载),不更新编码
|
||||
if (formType.value === 'update' && newVal === originalMatCate.value) {
|
||||
// 如果值没有变化(用户选择的是同一个值),不更新编码
|
||||
if (newVal === originalMatCate.value) {
|
||||
return
|
||||
}
|
||||
try {
|
||||
@ -311,6 +313,8 @@ watch(() => formData.value.matCate, async (newVal) => {
|
||||
} else {
|
||||
formData.value.code = null
|
||||
}
|
||||
// 更新原始值
|
||||
originalMatCate.value = newVal
|
||||
} catch (error) {
|
||||
console.error('查询matcode失败:', error)
|
||||
formData.value.code = null
|
||||
|
||||
Loading…
Reference in New Issue
Block a user