| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- // 管理后台主入口逻辑
- (function() {
- const ADMIN_USERNAME = 'admin';
- const ADMIN_PASSWORD = '123456'; // 简单密码,生产环境应使用更安全的方式
- let currentPage = 'users';
- let usersManager = null;
- let resourceManager = null;
- let pricingManager = null;
- // 初始化
- function init() {
- checkLogin();
- bindEvents();
- }
- // 检查登录状态(5小时免登录)
- function checkLogin() {
- const loginTime = localStorage.getItem('adminLoginTime');
- const isLoggedIn = localStorage.getItem('adminLoggedIn') === 'true';
-
- if (isLoggedIn && loginTime) {
- const now = Date.now();
- const loginTimestamp = parseInt(loginTime, 10);
- const fiveHours = 5 * 60 * 60 * 1000; // 5小时的毫秒数
-
- // 检查是否在5小时内
- if (now - loginTimestamp < fiveHours) {
- showMainPage();
- return;
- } else {
- // 超过5小时,清除登录状态
- localStorage.removeItem('adminLoggedIn');
- localStorage.removeItem('adminLoginTime');
- }
- }
-
- showLoginPage();
- }
- // 显示登录页
- function showLoginPage() {
- document.getElementById('loginPage').style.display = 'flex';
- document.getElementById('mainPage').style.display = 'none';
- }
- // 显示主页面
- function showMainPage() {
- document.getElementById('loginPage').style.display = 'none';
- document.getElementById('mainPage').style.display = 'flex';
- initManagers();
- switchPage('users');
- }
- // 初始化各个管理器(现在由各个页面自己初始化)
- function initManagers() {
- // 管理器现在由各个独立页面初始化
- // 这里保留函数以保持兼容性
- }
- // 获取 API 基础 URL(供子页面使用)
- window.getApiBaseUrl = function() {
- return getApiBaseUrl();
- }
- // 绑定事件
- function bindEvents() {
- // 登录表单
- const loginForm = document.getElementById('loginForm');
- if (loginForm) {
- loginForm.addEventListener('submit', handleLogin);
- }
- // 退出登录
- const logoutBtn = document.getElementById('logoutBtn');
- if (logoutBtn) {
- logoutBtn.addEventListener('click', handleLogout);
- }
- // 导航
- const navItems = document.querySelectorAll('.nav-item');
- navItems.forEach(item => {
- item.addEventListener('click', (e) => {
- e.preventDefault();
- const page = item.getAttribute('data-page');
- switchPage(page);
- });
- });
- // 自定义提示对话框
- const alertOk = document.getElementById('alertOk');
- const closeAlertModal = document.getElementById('closeAlertModal');
- if (alertOk) {
- alertOk.addEventListener('click', () => {
- document.getElementById('customAlertModal').style.display = 'none';
- });
- }
- if (closeAlertModal) {
- closeAlertModal.addEventListener('click', () => {
- document.getElementById('customAlertModal').style.display = 'none';
- });
- }
- }
- // 处理登录
- function handleLogin(e) {
- e.preventDefault();
-
- const username = document.getElementById('adminUsername').value;
- const password = document.getElementById('adminPassword').value;
- const errorDiv = document.getElementById('loginError');
-
- if (username === ADMIN_USERNAME && password === ADMIN_PASSWORD) {
- // 保存登录状态和登录时间戳
- localStorage.setItem('adminLoggedIn', 'true');
- localStorage.setItem('adminLoginTime', Date.now().toString());
- errorDiv.style.display = 'none';
- showMainPage();
- } else {
- errorDiv.textContent = '用户名或密码错误';
- errorDiv.style.display = 'block';
- }
- }
- // 处理退出登录
- function handleLogout() {
- if (confirm('确定要退出登录吗?')) {
- localStorage.removeItem('adminLoggedIn');
- localStorage.removeItem('adminLoginTime');
- showLoginPage();
- }
- }
- // 切换页面
- function switchPage(page) {
- currentPage = page;
-
- // 更新导航状态
- document.querySelectorAll('.nav-item').forEach(item => {
- item.classList.remove('active');
- if (item.getAttribute('data-page') === page) {
- item.classList.add('active');
- }
- });
- // 更新标题
- const titles = {
- 'users': '用户管理',
- 'resource-manager': '素材管理',
- 'pricing': '素材定价',
- 'currency': '充值与货币',
- 'product-pricing': '商品定价'
- };
- document.getElementById('pageTitle').textContent = titles[page] || '管理后台';
- // 切换 iframe 的 src
- const pageFrame = document.getElementById('pageFrame');
- if (pageFrame) {
- const pageMap = {
- 'users': 'page/users/users.html',
- 'resource-manager': 'page/resource-manager/resource-manager.html',
- 'pricing': 'page/pricing/pricing.html',
- 'currency': 'page/currency/currency.html',
- 'product-pricing': 'page/product-pricing/product-pricing.html'
- };
- const pagePath = pageMap[page] || pageMap['users'];
- pageFrame.src = pagePath;
- }
- }
- // 获取API基础URL
- function getApiBaseUrl() {
- // 明确使用 http://localhost:3000 作为API服务器地址
- return 'http://localhost:3000';
- }
- // 显示自定义提示
- window.showCustomAlert = function(message, type = 'info') {
- const alertModal = document.getElementById('customAlertModal');
- const alertMessage = document.getElementById('alertMessage');
- if (alertModal && alertMessage) {
- alertMessage.textContent = message;
- alertModal.style.display = 'flex';
-
- // 自动关闭
- setTimeout(() => {
- alertModal.style.display = 'none';
- }, 2000);
- } else {
- alert(message);
- }
- };
- // 页面加载完成后初始化
- if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', init);
- } else {
- init();
- }
- })();
|