style: 优化防抖样式

This commit is contained in:
chenchun
2025-08-01 17:58:07 +08:00
parent 3f8e6e48c0
commit 17f9ac6d54
2 changed files with 61 additions and 26 deletions

View File

@@ -27,6 +27,9 @@ const startAnimate=()=>{
window.addEventListener('resize', () => {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
centerX = canvas.width / 2;
centerY = canvas.height / 2;
drawStars();
});
createStars(props.number??1000);
@@ -69,7 +72,7 @@ function drawStars() {
function animate() {
drawStars();
// requestAnimationFrame(animate);
// requestAnimationFrame(animate); // 注释掉动画循环以节省性能
}

View File

@@ -12,6 +12,10 @@ const route = useRoute();
const registerFormRef = ref();
//验证码弹窗
const codeDialogVisible=ref(false);
//防止重复点击
const isSending=ref(false);
//防止重复注册
const isRegistering=ref(false);
// 获取图片验证码
const codeImageURL = computed(() => useUserStore().codeImageURL);
@@ -49,14 +53,26 @@ const registerRules = reactive({
});
const register = async (formEl) => {
if (!formEl) return;
// 防止重复点击
if (isRegistering.value) {
ElMessage({
message: "正在注册中,请稍候...",
type: "warning",
duration: 1000,
});
return;
}
await formEl.validate(async (valid) => {
if (valid) {
try {
if (registerForm.password !== passwordConfirm.value) {
ElMessage.error("两次密码输入不一致");
return;
}
isRegistering.value = true;
await registerFun(registerForm);
//注册成功返回登录
handleSignInNow();
@@ -66,6 +82,8 @@ const register = async (formEl) => {
type: "error",
duration: 2000,
});
} finally {
isRegistering.value = false;
}
}
});
@@ -102,38 +120,52 @@ const handleSignInNow=()=>{
router.push("/login");
}
const captcha = async () => {
// 防止重复点击
if (isSending.value) return;
// 立即关闭弹窗,防止用户连续点击
codeDialogVisible.value = false;
if (registerForm.email!==""&&phoneForm.code!=="")
{
phoneForm.email=registerForm.email;
const { data } = await getCodeEmail(phoneForm);
registerForm.uuid = data.uuid;
codeDialogVisible.value=false;
ElMessage({
message: `已向${registerForm.email}发送验证码,请注意查收`,
type: "success",
});
isDisabledCode.value = true;
let time = 60; //定义剩下的秒数
let timer = setInterval(function () {
if (time == 0) {
//清除定时器和复原按钮
clearInterval(timer);
codeInfo.value = "发送验证码";
time = 60; //这个10是重新开始
} else {
codeInfo.value = "剩余" + time + "秒";
time--;
}
}, 1000);
isSending.value = true;
try {
phoneForm.email=registerForm.email;
const { data } = await getCodeEmail(phoneForm);
registerForm.uuid = data.uuid;
ElMessage({
message: `已向${registerForm.email}发送验证码,请注意查收`,
type: "success",
});
isDisabledCode.value = true;
let time = 60; //定义剩下的秒数
let timer = setInterval(function () {
if (time == 0) {
//清除定时器和复原按钮
clearInterval(timer);
codeInfo.value = "发送验证码";
time = 60; //这个10是重新开始
isSending.value = false;
} else {
codeInfo.value = "剩余" + time + "秒";
time--;
}
}, 1000);
} catch (error) {
isSending.value = false;
ElMessage({
message: "发送失败,请重试",
type: "error",
});
}
}
else
{
ElMessage({
message: `请先输入手机号`,
message: `请先输入邮箱和图片验证码`,
type: "warning",
});
}
};
</script>
@@ -202,7 +234,7 @@ const captcha = async () => {
</div>
</el-form>
<div class="left-btn">
<button type="button" class="btn-login" @click="register(registerFormRef)">注册</button>
<button type="button" class="btn-login" :disabled="isRegistering" @click="register(registerFormRef)">{{ isRegistering ? '注册中...' : '注册' }}</button>
<button type="button" class="btn-reg" @click="handleSignInNow">前往登录</button>
</div>
</div>