146 lines
2.9 KiB
JavaScript
146 lines
2.9 KiB
JavaScript
/**
|
|
* 登录页面
|
|
*/
|
|
const request = require('../../utils/request.js');
|
|
const storage = require('../../utils/storage.js');
|
|
|
|
const app = getApp();
|
|
|
|
Page({
|
|
data: {
|
|
username: '',
|
|
password: '',
|
|
captchaCode: '',
|
|
captchaUuid: '',
|
|
captchaImg: '',
|
|
captchaEnabled: false,
|
|
loading: false,
|
|
},
|
|
|
|
onLoad() {
|
|
// 检查是否已登录
|
|
if (app.isLoggedIn()) {
|
|
this._goToIndex();
|
|
return;
|
|
}
|
|
// 获取验证码配置
|
|
this._checkCaptcha();
|
|
},
|
|
|
|
/**
|
|
* 检查验证码是否启用
|
|
*/
|
|
async _checkCaptcha() {
|
|
try {
|
|
const res = await request.captchaImage();
|
|
if (res.img) {
|
|
this.setData({
|
|
captchaEnabled: true,
|
|
captchaImg: 'data:image/png;base64,' + res.img,
|
|
captchaUuid: res.uuid,
|
|
});
|
|
}
|
|
} catch (err) {
|
|
console.log('[Login] 验证码获取失败,可能未启用');
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 刷新验证码
|
|
*/
|
|
refreshCaptcha() {
|
|
this._checkCaptcha();
|
|
},
|
|
|
|
/**
|
|
* 用户名输入
|
|
*/
|
|
onUsernameInput(e) {
|
|
this.setData({ username: e.detail.value });
|
|
},
|
|
|
|
/**
|
|
* 密码输入
|
|
*/
|
|
onPasswordInput(e) {
|
|
this.setData({ password: e.detail.value });
|
|
},
|
|
|
|
/**
|
|
* 验证码输入
|
|
*/
|
|
onCaptchaInput(e) {
|
|
this.setData({ captchaCode: e.detail.value });
|
|
},
|
|
|
|
/**
|
|
* 登录
|
|
*/
|
|
async handleLogin() {
|
|
const { username, password, captchaCode, captchaUuid, captchaEnabled } = this.data;
|
|
|
|
// 验证输入
|
|
if (!username) {
|
|
wx.showToast({ title: '请输入用户名', icon: 'none' });
|
|
return;
|
|
}
|
|
if (!password) {
|
|
wx.showToast({ title: '请输入密码', icon: 'none' });
|
|
return;
|
|
}
|
|
if (captchaEnabled && !captchaCode) {
|
|
wx.showToast({ title: '请输入验证码', icon: 'none' });
|
|
return;
|
|
}
|
|
|
|
this.setData({ loading: true });
|
|
|
|
try {
|
|
// 登录请求
|
|
const loginRes = await request.login(username, password, captchaCode, captchaUuid);
|
|
const token = loginRes.token;
|
|
|
|
// 获取用户信息
|
|
const infoRes = await request.getInfo();
|
|
const user = infoRes.user;
|
|
|
|
// 保存登录信息
|
|
app.setLoginInfo({
|
|
token: token,
|
|
userId: user.userId,
|
|
userName: user.userName,
|
|
phonenumber: user.phonenumber,
|
|
avatar: user.avatar,
|
|
});
|
|
|
|
wx.showToast({ title: '登录成功', icon: 'success' });
|
|
|
|
// 跳转首页
|
|
setTimeout(() => {
|
|
this._goToIndex();
|
|
}, 500);
|
|
|
|
} catch (err) {
|
|
console.error('[Login] 登录失败:', err);
|
|
wx.showToast({
|
|
title: err.message || '登录失败',
|
|
icon: 'none',
|
|
});
|
|
// 刷新验证码
|
|
if (this.data.captchaEnabled) {
|
|
this._checkCaptcha();
|
|
}
|
|
} finally {
|
|
this.setData({ loading: false });
|
|
}
|
|
},
|
|
|
|
/**
|
|
* 跳转首页
|
|
*/
|
|
_goToIndex() {
|
|
wx.reLaunch({
|
|
url: '/pages/index/index',
|
|
});
|
|
},
|
|
}); |