style: 优化防抖样式
This commit is contained in:
@@ -27,6 +27,9 @@ const startAnimate=()=>{
|
|||||||
window.addEventListener('resize', () => {
|
window.addEventListener('resize', () => {
|
||||||
canvas.width = window.innerWidth;
|
canvas.width = window.innerWidth;
|
||||||
canvas.height = window.innerHeight;
|
canvas.height = window.innerHeight;
|
||||||
|
centerX = canvas.width / 2;
|
||||||
|
centerY = canvas.height / 2;
|
||||||
|
drawStars();
|
||||||
});
|
});
|
||||||
|
|
||||||
createStars(props.number??1000);
|
createStars(props.number??1000);
|
||||||
@@ -69,7 +72,7 @@ function drawStars() {
|
|||||||
|
|
||||||
function animate() {
|
function animate() {
|
||||||
drawStars();
|
drawStars();
|
||||||
// requestAnimationFrame(animate);
|
// requestAnimationFrame(animate); // 注释掉动画循环以节省性能
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ const route = useRoute();
|
|||||||
const registerFormRef = ref();
|
const registerFormRef = ref();
|
||||||
//验证码弹窗
|
//验证码弹窗
|
||||||
const codeDialogVisible=ref(false);
|
const codeDialogVisible=ref(false);
|
||||||
|
//防止重复点击
|
||||||
|
const isSending=ref(false);
|
||||||
|
//防止重复注册
|
||||||
|
const isRegistering=ref(false);
|
||||||
|
|
||||||
// 获取图片验证码
|
// 获取图片验证码
|
||||||
const codeImageURL = computed(() => useUserStore().codeImageURL);
|
const codeImageURL = computed(() => useUserStore().codeImageURL);
|
||||||
@@ -49,14 +53,26 @@ const registerRules = reactive({
|
|||||||
});
|
});
|
||||||
const register = async (formEl) => {
|
const register = async (formEl) => {
|
||||||
if (!formEl) return;
|
if (!formEl) return;
|
||||||
|
|
||||||
|
// 防止重复点击
|
||||||
|
if (isRegistering.value) {
|
||||||
|
ElMessage({
|
||||||
|
message: "正在注册中,请稍候...",
|
||||||
|
type: "warning",
|
||||||
|
duration: 1000,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
await formEl.validate(async (valid) => {
|
await formEl.validate(async (valid) => {
|
||||||
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
try {
|
try {
|
||||||
if (registerForm.password !== passwordConfirm.value) {
|
if (registerForm.password !== passwordConfirm.value) {
|
||||||
ElMessage.error("两次密码输入不一致");
|
ElMessage.error("两次密码输入不一致");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isRegistering.value = true;
|
||||||
await registerFun(registerForm);
|
await registerFun(registerForm);
|
||||||
//注册成功返回登录
|
//注册成功返回登录
|
||||||
handleSignInNow();
|
handleSignInNow();
|
||||||
@@ -66,6 +82,8 @@ const register = async (formEl) => {
|
|||||||
type: "error",
|
type: "error",
|
||||||
duration: 2000,
|
duration: 2000,
|
||||||
});
|
});
|
||||||
|
} finally {
|
||||||
|
isRegistering.value = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -102,38 +120,52 @@ const handleSignInNow=()=>{
|
|||||||
router.push("/login");
|
router.push("/login");
|
||||||
}
|
}
|
||||||
const captcha = async () => {
|
const captcha = async () => {
|
||||||
|
// 防止重复点击
|
||||||
|
if (isSending.value) return;
|
||||||
|
|
||||||
|
// 立即关闭弹窗,防止用户连续点击
|
||||||
|
codeDialogVisible.value = false;
|
||||||
|
|
||||||
if (registerForm.email!==""&&phoneForm.code!=="")
|
if (registerForm.email!==""&&phoneForm.code!=="")
|
||||||
{
|
{
|
||||||
phoneForm.email=registerForm.email;
|
isSending.value = true;
|
||||||
const { data } = await getCodeEmail(phoneForm);
|
try {
|
||||||
registerForm.uuid = data.uuid;
|
phoneForm.email=registerForm.email;
|
||||||
codeDialogVisible.value=false;
|
const { data } = await getCodeEmail(phoneForm);
|
||||||
ElMessage({
|
registerForm.uuid = data.uuid;
|
||||||
message: `已向${registerForm.email}发送验证码,请注意查收`,
|
ElMessage({
|
||||||
type: "success",
|
message: `已向${registerForm.email}发送验证码,请注意查收`,
|
||||||
});
|
type: "success",
|
||||||
isDisabledCode.value = true;
|
});
|
||||||
let time = 60; //定义剩下的秒数
|
isDisabledCode.value = true;
|
||||||
let timer = setInterval(function () {
|
let time = 60; //定义剩下的秒数
|
||||||
if (time == 0) {
|
let timer = setInterval(function () {
|
||||||
//清除定时器和复原按钮
|
if (time == 0) {
|
||||||
clearInterval(timer);
|
//清除定时器和复原按钮
|
||||||
codeInfo.value = "发送验证码";
|
clearInterval(timer);
|
||||||
time = 60; //这个10是重新开始
|
codeInfo.value = "发送验证码";
|
||||||
} else {
|
time = 60; //这个10是重新开始
|
||||||
codeInfo.value = "剩余" + time + "秒";
|
isSending.value = false;
|
||||||
time--;
|
} else {
|
||||||
}
|
codeInfo.value = "剩余" + time + "秒";
|
||||||
}, 1000);
|
time--;
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
} catch (error) {
|
||||||
|
isSending.value = false;
|
||||||
|
ElMessage({
|
||||||
|
message: "发送失败,请重试",
|
||||||
|
type: "error",
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ElMessage({
|
ElMessage({
|
||||||
message: `请先输入手机号`,
|
message: `请先输入邮箱和图片验证码`,
|
||||||
type: "warning",
|
type: "warning",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -202,7 +234,7 @@ const captcha = async () => {
|
|||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="left-btn">
|
<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>
|
<button type="button" class="btn-reg" @click="handleSignInNow">前往登录</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user