Files
ai_dianshang/web/assets/js/login.js

209 lines
6.5 KiB
JavaScript
Raw Normal View History

2025-11-28 15:18:10 +08:00
// Login Page JavaScript
$(document).ready(function() {
initLoginPage();
initTestAccount();
});
function initLoginPage() {
bindLoginEvents();
checkLoginStatus();
}
// 初始化测试账号
function initTestAccount() {
const users = JSON.parse(localStorage.getItem('users') || '[]');
// 检查是否已存在测试账号
const testUser = users.find(u => u.email === 'test@vizee.com');
if (!testUser) {
// 创建测试账号
const defaultTestUser = {
firstName: '测试',
lastName: '用户',
email: 'test@vizee.com',
password: '123456',
registerTime: new Date().toISOString()
};
users.push(defaultTestUser);
localStorage.setItem('users', JSON.stringify(users));
console.log('测试账号已创建test@vizee.com / 123456');
}
}
// 绑定事件
function bindLoginEvents() {
// 切换到注册表单
$('#showRegister').on('click', function(e) {
e.preventDefault();
$('#loginForm').hide();
$('#registerForm').show();
});
// 切换到登录表单
$('#showLogin').on('click', function(e) {
e.preventDefault();
$('#registerForm').hide();
$('#loginForm').show();
});
// 登录表单提交
$('#loginForm form').on('submit', function(e) {
e.preventDefault();
handleLogin();
});
// 注册表单提交
$('#registerForm form').on('submit', function(e) {
e.preventDefault();
handleRegister();
});
// 社交登录
$('.btn-google').on('click', function() {
Toast.info(i18n.t('feature_coming_soon') || '功能开发中...');
});
$('.btn-wechat').on('click', function() {
Toast.info(i18n.t('feature_coming_soon') || '功能开发中...');
});
}
// 检查登录状态
function checkLoginStatus() {
const user = localStorage.getItem('currentUser');
if (user) {
// 已登录检查是否有重定向URL
const redirectUrl = localStorage.getItem('redirectUrl');
if (redirectUrl) {
localStorage.removeItem('redirectUrl');
window.location.href = redirectUrl;
} else {
// 跳转到用户中心
window.location.href = 'user-center.html';
}
}
}
// 处理登录
function handleLogin() {
const email = $('#loginEmail').val().trim();
const password = $('#loginPassword').val().trim();
if (!email || !password) {
Toast.warning(i18n.t('please_fill_all_fields') || '请填写所有字段');
return;
}
if (!isValidEmail(email)) {
Toast.error(i18n.t('invalid_email') || '请输入有效的邮箱地址');
return;
}
// 显示加载状态
const $btn = $('#loginForm button[type="submit"]');
const originalText = $btn.text();
$btn.prop('disabled', true).text(i18n.t('logging_in') || '登录中...');
// 调用后端登录API
UserAPI.login(email, password)
.then(function(data) {
// 登录成功 - 保存后端返回的完整用户信息
const currentUser = {
...data.user, // 展开后端返回的完整用户对象包括phone, avatar, gender等
token: data.token,
loginTime: new Date().toISOString()
};
localStorage.setItem('currentUser', JSON.stringify(currentUser));
// 更新用户图标显示
if (typeof window.updateUserIcon === 'function') {
window.updateUserIcon();
}
Toast.success(i18n.t('login_success') || '登录成功!');
// 检查是否有重定向URL
setTimeout(() => {
const redirectUrl = localStorage.getItem('redirectUrl');
if (redirectUrl) {
localStorage.removeItem('redirectUrl');
window.location.href = redirectUrl;
} else {
window.location.href = 'user-center.html';
}
}, 500);
})
.catch(function(error) {
// 登录失败
console.error('登录失败:', error);
Toast.error(error.message || i18n.t('login_failed') || '登录失败,请检查邮箱和密码');
$btn.prop('disabled', false).text(originalText);
});
}
// 处理注册
function handleRegister() {
const firstName = $('#registerFirstName').val().trim();
const lastName = $('#registerLastName').val().trim();
const email = $('#registerEmail').val().trim();
const password = $('#registerPassword').val().trim();
const confirmPassword = $('#registerConfirmPassword').val().trim();
if (!firstName || !lastName || !email || !password || !confirmPassword) {
Toast.warning(i18n.t('please_fill_all_fields') || '请填写所有字段');
return;
}
if (!isValidEmail(email)) {
Toast.error(i18n.t('invalid_email') || '请输入有效的邮箱地址');
return;
}
if (password.length < 6) {
Toast.error(i18n.t('password_too_short') || '密码长度至少6个字符');
return;
}
if (password !== confirmPassword) {
Toast.error(i18n.t('password_not_match') || '两次输入的密码不一致');
return;
}
// 显示加载状态
const $btn = $('#registerForm button[type="submit"]');
const originalText = $btn.text();
$btn.prop('disabled', true).text(i18n.t('registering') || '注册中...');
// 调用后端注册API
const nickname = firstName + ' ' + lastName;
UserAPI.register(email, password, nickname)
.then(function(data) {
// 注册成功
Toast.success(i18n.t('register_success') || '注册成功!请登录');
// 切换到登录表单
$('#registerForm').hide();
$('#loginForm').show();
$('#loginEmail').val(email);
$btn.prop('disabled', false).text(originalText);
})
.catch(function(error) {
// 注册失败
console.error('注册失败:', error);
Toast.error(error.message || i18n.t('register_failed') || '注册失败,请稍后重试');
$btn.prop('disabled', false).text(originalText);
});
}
// 验证邮箱格式
function isValidEmail(email) {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return emailRegex.test(email);
}