Files
asset_assistant/frontend/asset-assistant-system/index.html
2025-11-12 17:33:40 +08:00

189 lines
5.2 KiB
HTML
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.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>资产管理系统 - 主页</title>
<!-- 引入外部依赖 -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<!-- 引入自定义配置和组件 -->
<script src="../assets/js/config/system.js"></script>
<script src="../assets/js/config/menu.js"></script>
<script src="../assets/js/core/auth.js"></script>
<script src="../assets/js/core/message.js"></script>
<script src="../assets/js/core/loading.js"></script>
<script src="../assets/js/components/sidebar.js"></script>
<!-- 引入样式 -->
<link rel="stylesheet" href="../assets/css/dark-theme.css">
<link rel="stylesheet" href="../assets/css/common.css">
<style>
.app-container {
display: flex;
height: 100vh;
overflow: hidden;
}
.header {
height: 60px;
background-color: var(--bg-light-color);
border-bottom: 1px solid var(--border-color);
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20px;
position: relative;
z-index: 10;
}
.logo {
display: flex;
align-items: center;
}
.logo-icon {
font-size: 24px;
color: var(--primary-color);
margin-right: 10px;
}
.logo-text {
font-size: 18px;
font-weight: bold;
color: var(--text-primary);
}
.user-info {
display: flex;
align-items: center;
}
.username {
margin-right: 15px;
color: var(--text-primary);
}
.logout-btn {
background-color: var(--error-color);
}
.logout-btn:hover {
background-color: #D32F2F;
}
.content-wrapper {
display: flex;
flex-direction: column;
flex: 1;
overflow: hidden;
}
.main-content {
flex: 1;
overflow-y: auto;
padding: 20px;
}
.page-container {
width: 100%;
height: 100%;
}
</style>
</head>
<body class="dark-theme">
<div class="app-container">
<!-- 侧边栏 -->
<div class="sidebar" id="sidebar"></div>
<!-- 主内容区 -->
<div class="content-wrapper">
<!-- 顶部导航 -->
<div class="header">
<div class="logo">
<span class="logo-icon">💎</span>
<span class="logo-text">资产管理系统</span>
</div>
<div class="user-info">
<span class="username" id="username">管理员</span>
<button class="btn logout-btn" id="logout-btn">退出登录</button>
</div>
</div>
<!-- 页面内容容器 -->
<div class="main-content">
<div class="page-container" id="page-container">
<!-- 页面内容将通过路由加载 -->
</div>
</div>
</div>
</div>
<script>
// 初始化前验证登录状态
Auth.checkLogin();
$(document).ready(() => {
// 初始化侧边栏
Sidebar.init($('#sidebar'));
// 初始化页面加载(默认加载数据概览)
const defaultUrl = 'modules/dashboard.html';
loadPage(defaultUrl);
// 退出登录事件
$('#logout-btn').on('click', () => {
if (confirm('确定要退出登录吗?')) {
Auth.logout();
}
});
// 菜单链接点击事件拦截默认跳转实现AJAX加载
$('#sidebar').on('click', '.menu-link', (e) => {
e.preventDefault();
const url = $(e.currentTarget).attr('href');
if (url) {
loadPage(url);
}
});
/**
* 加载页面内容
* @param {string} url - 页面URL
*/
function loadPage(url) {
const container = $('#page-container');
try {
Loading.show('加载页面中...');
// 加载页面内容
container.load(url, (response, status, xhr) => {
Loading.hide();
if (status === 'success') {
// 更新浏览器历史记录
history.pushState({ url }, '', url);
Message.success('页面加载成功');
} else {
// 错误处理和重试
container.html(`
<div class="error-page card">
<h3 style="color: var(--error-color); margin-bottom: 15px;">页面加载失败</h3>
<p>错误信息: ${xhr.statusText}</p>
<button class="btn btn-info" id="retry-btn" data-url="${url}">重试</button>
</div>
`);
Message.error(`页面加载失败: ${xhr.statusText}`);
}
});
} catch (error) {
Loading.hide();
Message.error('页面加载异常,请重试');
console.error('页面加载错误:', error);
}
}
// 重试按钮事件
$(document).on('click', '#retry-btn', (e) => {
const url = $(e.currentTarget).data('url');
loadPage(url);
});
// 监听浏览器前进后退事件
window.addEventListener('popstate', (e) => {
if (e.state && e.state.url) {
loadPage(e.state.url);
}
});
});
</script>
</body>
</html>