fix: 处理二维码接口过多调用问题
This commit is contained in:
@@ -189,23 +189,28 @@ function stopPolling() {
|
||||
}
|
||||
|
||||
/** 刷新二维码 */
|
||||
async function handleRefresh() {
|
||||
isExpired.value = false;
|
||||
isQrCodeError.value = false;
|
||||
isScanned.value = false;
|
||||
isConfirming.value = false;
|
||||
stopPolling();
|
||||
// async function handleRefresh() {
|
||||
// isExpired.value = false;
|
||||
// isQrCodeError.value = false;
|
||||
// isScanned.value = false;
|
||||
// isConfirming.value = false;
|
||||
// stopPolling();
|
||||
//
|
||||
// const success = await fetchQRCodeInfo();
|
||||
// if (success) {
|
||||
// qrStart(shallowRef(600));
|
||||
// startStatusPolling();
|
||||
// }
|
||||
// else {
|
||||
// isQrCodeError.value = true;
|
||||
// stopPolling();
|
||||
// ElMessage.error('刷新二维码失败');
|
||||
// }
|
||||
// }
|
||||
|
||||
const success = await fetchQRCodeInfo();
|
||||
if (success) {
|
||||
qrStart(shallowRef(600));
|
||||
startStatusPolling();
|
||||
}
|
||||
else {
|
||||
isQrCodeError.value = true;
|
||||
stopPolling();
|
||||
ElMessage.error('刷新二维码失败');
|
||||
}
|
||||
/** 刷新二维码按钮 */
|
||||
async function handleRefresh() {
|
||||
await initQRCode();
|
||||
}
|
||||
|
||||
/** 启动状态轮询 */
|
||||
@@ -221,17 +226,41 @@ function startStatusPolling() {
|
||||
|
||||
/** 组件初始化 */
|
||||
onMounted(async () => {
|
||||
await initQRCode();
|
||||
// const success = await fetchQRCodeInfo();
|
||||
// if (success) {
|
||||
// qrStart();
|
||||
// startStatusPolling();
|
||||
// }
|
||||
// else {
|
||||
// isQrCodeError.value = true;
|
||||
// stopPolling();
|
||||
// ElMessage.error('初始化二维码失败');
|
||||
// }
|
||||
});
|
||||
|
||||
/** 初始化或刷新二维码 */
|
||||
async function initQRCode() {
|
||||
// 清理旧的定时器和轮询
|
||||
qrStop();
|
||||
confirmStop();
|
||||
stopPolling();
|
||||
|
||||
const success = await fetchQRCodeInfo();
|
||||
if (success) {
|
||||
qrStart();
|
||||
startStatusPolling();
|
||||
isExpired.value = false;
|
||||
isQrCodeError.value = false;
|
||||
isScanned.value = false;
|
||||
isConfirming.value = false;
|
||||
|
||||
qrStart(); // 重新开始倒计时
|
||||
startStatusPolling(); // 开始轮询
|
||||
}
|
||||
else {
|
||||
isQrCodeError.value = true;
|
||||
stopPolling();
|
||||
ElMessage.error('初始化二维码失败');
|
||||
ElMessage.error('获取二维码失败');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/** 组件卸载清理 */
|
||||
onBeforeUnmount(() => {
|
||||
|
||||
@@ -23,7 +23,7 @@ const loginFormType = computed(() => loginFromStore.LoginFormType);
|
||||
// 使用 defineModel 定义双向绑定的 visible(需 Vue 3.4+)
|
||||
const visible = defineModel<boolean>('visible');
|
||||
const showMask = ref(false); // 控制遮罩层显示的独立状态
|
||||
const isQrMode = ref(true);
|
||||
const isQrMode = ref(false);
|
||||
const userStore = useUserStore();
|
||||
const router = useRouter();
|
||||
const sessionStore = useSessionStore();
|
||||
@@ -56,6 +56,8 @@ function handleMaskClick() {
|
||||
// 过渡动画结束回调
|
||||
function onAfterLeave() {
|
||||
if (!visible.value) {
|
||||
isQrMode.value = false;
|
||||
|
||||
showMask.value = false; // 动画结束后隐藏遮罩
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user