Files
ai_dianshang/web/assets/js/login.js
2025-11-28 15:18:10 +08:00

209 lines
6.5 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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);
}