|
@@ -311,9 +311,13 @@ const checkAndLoadMore = async () => {
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+// 是否正在执行初次加载(防止重复请求)
|
|
|
|
|
+let isInitialLoading = false;
|
|
|
|
|
+
|
|
|
// 加载更多数据
|
|
// 加载更多数据
|
|
|
const loadMore = async () => {
|
|
const loadMore = async () => {
|
|
|
- if (loadingMore.value || noMoreData.value || loading.value) return;
|
|
|
|
|
|
|
+ // 增加 isInitialLoading 检查,防止初次加载时触发 loadMore
|
|
|
|
|
+ if (loadingMore.value || noMoreData.value || loading.value || isInitialLoading) return;
|
|
|
|
|
|
|
|
loadingMore.value = true;
|
|
loadingMore.value = true;
|
|
|
|
|
|
|
@@ -361,9 +365,15 @@ const loadMore = async () => {
|
|
|
|
|
|
|
|
// 初次加载物料数据
|
|
// 初次加载物料数据
|
|
|
const getPickerCarList = async () => {
|
|
const getPickerCarList = async () => {
|
|
|
|
|
+ // 防止重复调用
|
|
|
|
|
+ if (isInitialLoading) return;
|
|
|
|
|
+ isInitialLoading = true;
|
|
|
|
|
+
|
|
|
loading.value = true;
|
|
loading.value = true;
|
|
|
currentStart.value = 0;
|
|
currentStart.value = 0;
|
|
|
noMoreData.value = false;
|
|
noMoreData.value = false;
|
|
|
|
|
+ // 立即清空列表,防止数据重复
|
|
|
|
|
+ carList.value = [];
|
|
|
|
|
|
|
|
const loginInfo = localStorage.getItem('#LoginInfo');
|
|
const loginInfo = localStorage.getItem('#LoginInfo');
|
|
|
if (loginInfo) {
|
|
if (loginInfo) {
|
|
@@ -408,6 +418,7 @@ const getPickerCarList = async () => {
|
|
|
showNotify({ type: 'danger', message: '获取领料车列表API调用失败' });
|
|
showNotify({ type: 'danger', message: '获取领料车列表API调用失败' });
|
|
|
} finally {
|
|
} finally {
|
|
|
loading.value = false;
|
|
loading.value = false;
|
|
|
|
|
+ isInitialLoading = false;
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -439,9 +450,12 @@ const deleteStock = () => {
|
|
|
deleteModalVisible.value = true;
|
|
deleteModalVisible.value = true;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+// 提交/删除中状态(与列表加载分开管理)
|
|
|
|
|
+const submitting = ref(false);
|
|
|
|
|
+
|
|
|
// 删除接口
|
|
// 删除接口
|
|
|
const deleteStockCarApi = async () => {
|
|
const deleteStockCarApi = async () => {
|
|
|
- loading.value = true;
|
|
|
|
|
|
|
+ submitting.value = true;
|
|
|
const params = {
|
|
const params = {
|
|
|
pickingCarIds: selectedIds.value,
|
|
pickingCarIds: selectedIds.value,
|
|
|
};
|
|
};
|
|
@@ -450,7 +464,7 @@ const deleteStockCarApi = async () => {
|
|
|
if (res.errorCode == 0) {
|
|
if (res.errorCode == 0) {
|
|
|
showNotify({ type: 'success', message: '删除成功' });
|
|
showNotify({ type: 'success', message: '删除成功' });
|
|
|
selectedIds.value = [];
|
|
selectedIds.value = [];
|
|
|
- getDatas();
|
|
|
|
|
|
|
+ await getDatas();
|
|
|
} else {
|
|
} else {
|
|
|
showNotify({ type: 'danger', message: res.errorMessage });
|
|
showNotify({ type: 'danger', message: res.errorMessage });
|
|
|
}
|
|
}
|
|
@@ -458,7 +472,7 @@ const deleteStockCarApi = async () => {
|
|
|
console.log('删除领料车API调用失败', error);
|
|
console.log('删除领料车API调用失败', error);
|
|
|
showNotify({ type: 'danger', message: '删除领料车API调用失败' });
|
|
showNotify({ type: 'danger', message: '删除领料车API调用失败' });
|
|
|
} finally {
|
|
} finally {
|
|
|
- loading.value = false;
|
|
|
|
|
|
|
+ submitting.value = false;
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
// 获取仓库列表
|
|
// 获取仓库列表
|
|
@@ -502,12 +516,12 @@ const handleDeleteCancel = () => {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 查询(重新搜索时重置列表)
|
|
// 查询(重新搜索时重置列表)
|
|
|
-const getDatas = () => {
|
|
|
|
|
|
|
+const getDatas = async () => {
|
|
|
// 滚动到顶部
|
|
// 滚动到顶部
|
|
|
if (cardGridWrapper.value) {
|
|
if (cardGridWrapper.value) {
|
|
|
cardGridWrapper.value.scrollTop = 0;
|
|
cardGridWrapper.value.scrollTop = 0;
|
|
|
}
|
|
}
|
|
|
- getPickerCarList();
|
|
|
|
|
|
|
+ await getPickerCarList();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 领料
|
|
// 领料
|
|
@@ -516,7 +530,7 @@ const submitStock = async () => {
|
|
|
showNotify({ type: 'danger', message: '请至少选择一个工装设备' });
|
|
showNotify({ type: 'danger', message: '请至少选择一个工装设备' });
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
- loading.value = true;
|
|
|
|
|
|
|
+ submitting.value = true;
|
|
|
const params = {
|
|
const params = {
|
|
|
pickingCarIds: selectedIds.value,
|
|
pickingCarIds: selectedIds.value,
|
|
|
};
|
|
};
|
|
@@ -527,7 +541,7 @@ const submitStock = async () => {
|
|
|
// 提交成功后清除选择项
|
|
// 提交成功后清除选择项
|
|
|
selectedIds.value = [];
|
|
selectedIds.value = [];
|
|
|
// 刷新列表数据
|
|
// 刷新列表数据
|
|
|
- getDatas();
|
|
|
|
|
|
|
+ await getDatas();
|
|
|
confirmModalVisible.value = true;
|
|
confirmModalVisible.value = true;
|
|
|
} else {
|
|
} else {
|
|
|
showNotify({ type: 'danger', message: res.errorMessage });
|
|
showNotify({ type: 'danger', message: res.errorMessage });
|
|
@@ -536,7 +550,7 @@ const submitStock = async () => {
|
|
|
console.log('生成领料单API调用失败', error);
|
|
console.log('生成领料单API调用失败', error);
|
|
|
showNotify({ type: 'danger', message: '生成领料单API调用失败' });
|
|
showNotify({ type: 'danger', message: '生成领料单API调用失败' });
|
|
|
} finally {
|
|
} finally {
|
|
|
- loading.value = false;
|
|
|
|
|
|
|
+ submitting.value = false;
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
onMounted(() => {
|
|
onMounted(() => {
|