登录失败问题修复
This commit is contained in:
@@ -126,6 +126,7 @@ import { ref, inject, onMounted } from 'vue';
|
||||
import useUserStore from '@/stores/useUserStore';
|
||||
import useDictStore from '@/stores/useDictStore';
|
||||
import { tabbarManager } from '@/utils/tabbarManager';
|
||||
import { refreshWxLoginCode, takeWxLoginCode } from '@/utils/loginHelper';
|
||||
|
||||
const { $api } = inject('globalFunction');
|
||||
const { loginSetToken } = useUserStore();
|
||||
@@ -171,6 +172,10 @@ const open = () => {
|
||||
// 检查是否已同意协议
|
||||
const agreed = uni.getStorageSync('agreedToUserAgreement');
|
||||
agreedToAgreement.value = !!agreed;
|
||||
|
||||
// #ifdef MP-WEIXIN
|
||||
refreshWxLoginCode().catch(() => {});
|
||||
// #endif
|
||||
};
|
||||
|
||||
// 关闭弹窗
|
||||
@@ -212,84 +217,85 @@ const validateRole = () => {
|
||||
return true;
|
||||
};
|
||||
|
||||
const getPhoneNumber = (e) => {
|
||||
console.log('获取手机号:', e);
|
||||
console.log('userType.value', userType.value)
|
||||
|
||||
// 验证角色、机构类型和隐私协议
|
||||
const getPhoneNumber = async (e) => {
|
||||
if (!validateRole()) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (e.detail.errMsg === 'getPhoneNumber:ok') {
|
||||
uni.login({
|
||||
provider: 'weixin',
|
||||
success: (loginRes) => {
|
||||
console.log('微信登录code获取成功:', loginRes.code);
|
||||
const { encryptedData, iv } = e.detail;
|
||||
const code = loginRes.code; // 使用wx.login返回的code
|
||||
|
||||
// 调用后端接口进行登录
|
||||
uni.showLoading({ title: '登录中...' });
|
||||
|
||||
$api.createRequest('/app/appLogin', {
|
||||
code,
|
||||
encryptedData,
|
||||
iv,
|
||||
userType: userType.value,
|
||||
orgType: orgType.value
|
||||
}, 'post').then((resData) => {
|
||||
uni.hideLoading();
|
||||
console.log(resData, 'resume.idCard');
|
||||
if (resData.token) {
|
||||
// 登录成功,存储token
|
||||
loginSetToken(resData.token).then((resume) => {
|
||||
// 更新用户类型到缓存
|
||||
if (resData.isCompanyUser !== undefined) {
|
||||
console.log(resData.isCompanyUser, 'resData.isCompanyUser');
|
||||
const userInfo = uni.getStorageSync('userInfo') || {};
|
||||
userInfo.isCompanyUser = Number(resData.isCompanyUser); // 0-企业用户,1-求职者
|
||||
uni.setStorageSync('userInfo', userInfo);
|
||||
}
|
||||
|
||||
$api.msg('登录成功');
|
||||
// 刷新tabbar以显示正确的用户类型
|
||||
tabbarManager.refreshTabBar();
|
||||
close();
|
||||
emit('success');
|
||||
|
||||
// 根据用户类型跳转到不同的信息补全页面
|
||||
if (!resume.jobTitleId) {
|
||||
console.log(resume, 'resume.idCard');
|
||||
if (userType.value === 1 && !resData.idCard) {
|
||||
// 求职者跳转到个人信息补全页面
|
||||
uni.navigateTo({
|
||||
url: '/packageA/pages/complete-info/complete-info?step=1'
|
||||
});
|
||||
} else if (userType.value === 0 && !resData.idCard) {
|
||||
// 招聘者跳转到企业信息补全页面
|
||||
uni.navigateTo({
|
||||
url: '/packageA/pages/complete-info/company-info'
|
||||
});
|
||||
}
|
||||
}
|
||||
}).catch(() => {
|
||||
$api.msg('获取用户信息失败');
|
||||
});
|
||||
} else {
|
||||
// $api.msg('登录失败,请重试');
|
||||
$api.msg(resData.msg || '登录失败,请重试');
|
||||
}
|
||||
}).catch((err) => {
|
||||
uni.hideLoading();
|
||||
$api.msg(err.msg || '登录失败,请重试');
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取微信登录code失败:', err);
|
||||
$api.msg('获取登录信息失败,请重试');
|
||||
}
|
||||
});
|
||||
const { encryptedData, iv, code: wxPhoneCode } = e.detail;
|
||||
if (!encryptedData && !wxPhoneCode) {
|
||||
$api.msg('获取手机号失败');
|
||||
return;
|
||||
}
|
||||
|
||||
let loginCode = takeWxLoginCode();
|
||||
if (!loginCode) {
|
||||
if (encryptedData) {
|
||||
$api.msg('登录凭证未就绪,请关闭弹窗后重新打开再试');
|
||||
refreshWxLoginCode().catch(() => {});
|
||||
return;
|
||||
}
|
||||
try {
|
||||
loginCode = await refreshWxLoginCode();
|
||||
} catch {
|
||||
$api.msg('获取登录信息失败,请重试');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const requestParams = {
|
||||
code: loginCode,
|
||||
userType: userType.value,
|
||||
orgType: orgType.value
|
||||
};
|
||||
if (encryptedData && iv) {
|
||||
requestParams.encryptedData = encryptedData;
|
||||
requestParams.iv = iv;
|
||||
}
|
||||
if (wxPhoneCode) {
|
||||
requestParams.phoneCode = wxPhoneCode;
|
||||
}
|
||||
|
||||
uni.showLoading({ title: '登录中...' });
|
||||
try {
|
||||
const resData = await $api.createRequest('/app/appLogin', requestParams, 'post');
|
||||
if (resData.token) {
|
||||
await loginSetToken(resData.token).then((resume) => {
|
||||
if (resData.isCompanyUser !== undefined) {
|
||||
const userInfo = uni.getStorageSync('userInfo') || {};
|
||||
userInfo.isCompanyUser = Number(resData.isCompanyUser);
|
||||
uni.setStorageSync('userInfo', userInfo);
|
||||
}
|
||||
|
||||
$api.msg('登录成功');
|
||||
tabbarManager.refreshTabBar();
|
||||
close();
|
||||
emit('success');
|
||||
|
||||
if (!resume.jobTitleId) {
|
||||
if (userType.value === 1 && !resData.idCard) {
|
||||
uni.navigateTo({
|
||||
url: '/packageA/pages/complete-info/complete-info?step=1'
|
||||
});
|
||||
} else if (userType.value === 0 && !resData.idCard) {
|
||||
uni.navigateTo({
|
||||
url: '/packageA/pages/complete-info/company-info'
|
||||
});
|
||||
}
|
||||
}
|
||||
}).catch(() => {
|
||||
$api.msg('获取用户信息失败');
|
||||
});
|
||||
} else {
|
||||
$api.msg(resData.msg || '登录失败,请重试');
|
||||
}
|
||||
} catch (err) {
|
||||
$api.msg(err.msg || '登录失败,请重试');
|
||||
} finally {
|
||||
uni.hideLoading();
|
||||
refreshWxLoginCode().catch(() => {});
|
||||
}
|
||||
} else if (e.detail.errMsg === 'getPhoneNumber:fail user deny') {
|
||||
$api.msg('您取消了授权');
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user