refactor(auth): 重构登录逻辑和验证码处理

- 将Promise回调改为async/await语法
- 优化验证码获取和显示逻辑
- 移除不必要的防抖处理
- 简化登录成功后的跳转逻辑
- 添加验证码加载状态防止重复请求
- 改进验证码输入框的样式和交互
This commit is contained in:
zhangtao
2025-08-14 02:05:34 +08:00
parent d89111e220
commit da425d62d1
5 changed files with 144 additions and 150 deletions
+28 -40
View File
@@ -15,7 +15,7 @@ export const useUserStore = defineStore("user", () => {
const userInfo = ref<UserInfo | undefined>(getUserInfo());
// 账号密码登录
const login = (data: LoginFormData) => {
const login = async (data: LoginFormData) => {
return new Promise((resolve, reject) => {
AuthAPI.login(data)
.then((data: LoginResult) => {
@@ -30,49 +30,39 @@ export const useUserStore = defineStore("user", () => {
};
// 微信基础授权登录
const loginWithWxCode = (code: string) => {
return new Promise((resolve, reject) => {
AuthAPI.loginByWxMiniAppCode(code)
.then((data: LoginResult) => {
setAccessToken(data.access_token);
resolve(data);
})
.catch((error: any) => {
console.error("微信授权登录失败", error);
reject(error);
});
});
const loginWithWxCode = async (code: string) => {
try {
const data = await AuthAPI.loginByWxMiniAppCode(code);
setAccessToken(data.access_token);
return data;
} catch (error: any) {
console.error("微信授权登录失败", error);
throw error;
}
};
// 微信手机号授权登录
const loginWithWxPhone = (data: WxLoginData): Promise<any> => {
return new Promise((resolve, reject) => {
AuthAPI.loginByWxMiniAppPhone(data)
.then((result: LoginResult) => {
setAccessToken(result.access_token);
resolve(result);
})
.catch((error: any) => {
console.error("微信手机号登录失败", error);
reject(error);
});
});
const loginWithWxPhone = async (data: WxLoginData): Promise<any> => {
try {
const result = await AuthAPI.loginByWxMiniAppPhone(data);
setAccessToken(result.access_token);
return result;
} catch (error: any) {
console.error("微信手机号登录失败", error);
throw error;
}
};
// 获取用户信息
const getInfo = () => {
return new Promise((resolve, reject) => {
UserAPI.getCurrentUserInfo()
.then((data) => {
setUserInfo(data);
userInfo.value = data;
resolve(data);
})
.catch((error) => {
console.error("获取用户信息失败", error);
reject(error);
});
});
const getInfo = async () => {
try {
const userInfo = await UserAPI.getCurrentUserInfo();
setUserInfo(userInfo);
return userInfo;
} catch (error) {
console.error("获取用户信息失败", error);
return null;
}
};
// 登出
@@ -88,7 +78,6 @@ export const useUserStore = defineStore("user", () => {
clearTokens(); // 清除本地的 token
Storage.remove(USER_INFO_KEY); // 清除用户信息缓存
userInfo.value = undefined; // 清空用户信息
// 跳转到登录页面
uni.reLaunch({
url: "/pages/login/index",
@@ -99,7 +88,6 @@ export const useUserStore = defineStore("user", () => {
// 判断用户信息是否完整
const isUserInfoComplete = (): boolean => {
if (!userInfo.value) return false;
return !!(userInfo.value.username && userInfo.value.avatar);
};