diff --git a/activitylink/src/views/zhongchou/activity/index.vue b/activitylink/src/views/zhongchou/activity/index.vue index ae875d1..65c9de8 100644 --- a/activitylink/src/views/zhongchou/activity/index.vue +++ b/activitylink/src/views/zhongchou/activity/index.vue @@ -14,7 +14,7 @@
- + @@ -204,9 +204,9 @@ const fetchMarketList = async () => { } catch (error) { console.error('请求市场列表失败:', error) } -} - +}// 防抖标志 +const isSubmitting = ref(false); // 取消添加 const cancel = () => { centerDialogVisible.value = false; @@ -232,7 +232,15 @@ const addActivityShow = () => { const addForm = ref(); // 定义 addForm ref const addActivity = async () => { + // 防抖检查 + if (isSubmitting.value) { + ElMessage.warning('操作过于频繁,请稍后再试'); + return; + } + try { + isSubmitting.value = true; // 设置提交标志 + const valid = await new Promise((resolve, reject) => { addForm.value.validate(valid => { if (valid) { @@ -244,12 +252,14 @@ const addActivity = async () => { }); if (!valid) { + isSubmitting.value = false; // 重置提交标志 return; } // 验证活动名称是否包含空格(双重保险) if (!activity.value.activityName || activity.value.activityName.trim() === '') { ElMessage.error('活动名称不能为空'); + isSubmitting.value = false; // 重置提交标志 return; } @@ -257,6 +267,7 @@ const addActivity = async () => { const cleanedActivityName = activity.value.activityName.replace(/\s/g, ''); if (cleanedActivityName !== activity.value.activityName) { ElMessage.error('活动名称中不能包含空格'); + isSubmitting.value = false; // 重置提交标志 return; } @@ -283,6 +294,11 @@ const addActivity = async () => { } catch (error) { console.error('添加活动失败:', error); ElMessage.error('请求失败,请重试'); + } finally { + // 3秒后重置提交标志 + setTimeout(() => { + isSubmitting.value = false; + }, 3000); } };