vue3+vant 的showFailToast显示时间很短,设置了duration也不起作用,登录的时候无效,但是进入里面页面时有接口错误停留时间就正常
import { Toast, showFailToast } from 'vant'
// 响应拦截器
service.interceptors.response.use(
(response: AxiosResponse) => {
const params = new URLSearchParams(window.location.search);
const OpenID = params.get('OpenID'); // "abc123"
const APPID = params.get('APPID'); // "abc123"
console.log('OpenID', OpenID);
const { Status, Message, Data } = response.data
// 根据自定义错误码判断请求是否成功
if (OpenID) {
// 保存到 localStorage(也可以选择 sessionStorage)
localStorage.setItem('OpenID', OpenID);
console.log('✅ 已将 OpenID 保存到 localStorage:', OpenID);
} else {
console.log('⚠️ 当前 URL 中没有提供 OpenID 参数');
}
if (APPID) {
localStorage.setItem('APPID', APPID);
console.log('✅ 已将 APPID 保存到 localStorage:', APPID);
} else {
console.log('⚠️ 当前 URL 中没有提供 APPID 参数');
}
if (Status > 0 || Status === 0) {
// if (Data.CardID === 0) {
// console.log('该用户未绑卡');
// showFailToast('该用户未绑卡');
// return Promise.reject(new Error('该用户未绑卡'))
// } else {
// // 成功返回数据
// return Data
// }
}
else if (Status === -99) {
showFailToast({ message: '终端服务器正在维护或暂时不可用,请稍后再试', duration: 5000 });
// return Promise.reject(new Error('服务器异常'))
} else if (Status === -403) {
console.log('AppID信息错误 拒绝', Message);
showFailToast({ message: Message || 'AppID信息错误 拒绝', duration: 5000 });
}
else if (Status === -402) {
console.log('OpenID信息错误 拒绝', Message);
showFailToast({ message: Message || 'OpenID信息错误 拒绝', duration: 5000 });
} else {
console.log('操作失败-----', Message);
showFailToast({ message: Message || '操作失败', duration: 5000 })
}
return Data
},
}
)
//登录----
const handleLogin = async () => {
// if (!phone.value) {
// showToast('请输入手机号');
// return;
// }
if (!employeePass.value) {
showToast('请输入密码');
return;
}
if (!employeeNo.value) {
showToast('请输入用户编号');
return;
}
// 保存loading toast实例以便后续清除
const loadingToast = showLoadingToast({
message: '登录中...',
forbidClick: true,
});
const params = {
// phone: phone.value,
// password: password.value,
// appID: localStorage.getItem('APPID'),
appID: appID.value,
employeeNo: employeeNo.value,
employeeName: employeeName.value,
employeePass: employeePass.value,
// weChatOpenID: localStorage.getItem('OpenID'),
weChatOpenID: weChatOpenID.value,
};
console.log('登录参数:', JSON.stringify(params));
// 登录/绑定
await passageApi.getBindUser({
appID: appID.value,
employeeNo: employeeNo.value,
employeeName: employeeName.value,
employeePass: employeePass.value,
// weChatOpenID: localStorage.getItem('OpenID'),
weChatOpenID: weChatOpenID.value,
}).then(res => {
console.log('登录/绑定成功:', res);
if (res) {
try {
userStore.fetchCardInfo().then(() => {
console.log('登录---卡片信息获取成功', userStore.cardInfo);
}).catch((error) => {
console.log('卡片信息获取失败,将在首页再次尝试', error);
});
console.log('登录---卡片信息获取成功', userStore.cardInfo);
// 确保passageApi.getBindUser请求成功且userStore.cardInfo有内容后才跳转
if (userStore.cardInfo && Object.keys(userStore.cardInfo).length > 0) {
// 清除loading toast,然后跳转
loadingToast.close();
setTimeout(() => {
router.push({
name: "home",
});
}, 1000);
} else {
// 如果没有cardInfo,也需要清除loading toast
loadingToast.close();
}
} catch (error) {
console.log('卡片信息获取失败,将在首页再次尝试', error);
// 发生错误时也需要清除loading toast
loadingToast.close();
}
} else {
// 如果登录响应为空,也需要清除loading toast
loadingToast.close();
employeeNo.value = '';
employeePass.value = '';
}
}).catch(error => {
console.log('登录/绑定失败:', error);
// 发生错误时清除loading toast并显示错误信息
if (typeof loadingToast !== 'undefined') {
loadingToast.close();
}
// showToast(error.message || '登录失败,请稍后重试');
})
};