341 lines
15 KiB
HTML
341 lines
15 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="<?= session('lang', 'zh-cn') ?>">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
|
|
<title><?= $translations['title'] ?? '主页' ?></title>
|
|
<!-- 依 赖 样 式 -->
|
|
<link rel="stylesheet" href="/app/admin/component/pear/css/pear.css" />
|
|
<!-- 加 载 样 式 -->
|
|
<link rel="stylesheet" href="/app/admin/admin/css/loader.css" />
|
|
<!-- 布 局 样 式 -->
|
|
<link rel="stylesheet" href="/app/admin/admin/css/admin.css" />
|
|
<!-- 重置样式 -->
|
|
<link rel="stylesheet" href="/app/admin/admin/css/reset.css" />
|
|
<style>
|
|
.language-selector {
|
|
display: inline-block;
|
|
margin-right: 10px;
|
|
}
|
|
.language-selector .layui-form-item {
|
|
margin-bottom: 0;
|
|
}
|
|
.language-selector .layui-select {
|
|
width: 100px;
|
|
height: 30px;
|
|
line-height: 30px;
|
|
background-color: transparent;
|
|
border: none;
|
|
color: #fff;
|
|
}
|
|
.language-selector .layui-select option {
|
|
background-color: #fff;
|
|
color: #333;
|
|
}
|
|
.layui-nav-item .layui-this {
|
|
color: #2d8cf0!important;
|
|
}
|
|
</style>
|
|
</head>
|
|
<!-- 结 构 代 码 -->
|
|
<body class="layui-layout-body pear-admin">
|
|
<!-- 布 局 框 架 -->
|
|
<div class="layui-layout layui-layout-admin">
|
|
<!-- 顶 部 样 式 -->
|
|
<div class="layui-header">
|
|
<!-- 菜 单 顶 部 -->
|
|
<div class="layui-logo">
|
|
<!-- 图 标 -->
|
|
<img class="logo">
|
|
<!-- 标 题 -->
|
|
<span class="title"><?= $translations['system_name'] ?? 'Vehicle Data Platform' ?></span>
|
|
</div>
|
|
<!-- 顶 部 左 侧 功 能 -->
|
|
<ul class="layui-nav layui-layout-left">
|
|
<li class="collapse layui-nav-item" id="menu_but"><a href="#" id="menu_but1" class="layui-icon layui-icon-shrink-right"></a></li>
|
|
<li class="refresh layui-nav-item"><a href="#" class="layui-icon layui-icon-refresh-1" loading = 600></a></li>
|
|
<li class="layui-nav-item" id="main_href"><a href="http://dashboard.hesuu.com:25506/"><span class="title layui-this"><?= $translations['header_homepage'] ?? '数据大屏' ?></span></a></li>
|
|
</ul>
|
|
<!-- 多 系 统 菜 单 -->
|
|
<div id="control" class="layui-layout-control"></div>
|
|
<!-- 顶 部 右 侧 菜 单 -->
|
|
<ul class="layui-nav layui-layout-right">
|
|
<li class="layui-nav-item layui-hide-xs"><a href="#" class="menuSearch layui-icon layui-icon-search"></a></li>
|
|
<li class="layui-nav-item layui-hide-xs"><a href="#" class="fullScreen layui-icon layui-icon-screen-full"></a></li>
|
|
<li class="layui-nav-item layui-hide-xs message"></li>
|
|
<!-- 语言切换 -->
|
|
<li class="layui-nav-item layui-hide-xs">
|
|
<div class="language-selector">
|
|
<form class="layui-form">
|
|
<div class="layui-form-item">
|
|
<select name="language" id="language-select" lay-filter="language-select" class="layui-select">
|
|
<option value="zh-cn" <?= session('lang', 'zh-cn') === 'zh-cn' ? 'selected' : '' ?>>中文</option>
|
|
<option value="en" <?= session('lang', 'zh-cn') === 'en' ? 'selected' : '' ?>>English</option>
|
|
<option value="ru" <?= session('lang', 'zh-cn') === 'ru' ? 'selected' : '' ?>>Русский</option>
|
|
<option value="ar" <?= session('lang', 'zh-cn') === 'ar' ? 'selected' : '' ?>>العربية</option>
|
|
</select>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</li>
|
|
<li class="layui-nav-item user">
|
|
<!-- 头 像 -->
|
|
<a class="layui-icon layui-icon-username" href="javascript:;"></a>
|
|
<!-- 功 能 菜 单 -->
|
|
<dl class="layui-nav-child">
|
|
<dd><a href="javascript:void(0);" class="logout"><?= $translations['logout'] ?? '注销登录' ?></a></dd>
|
|
</dl>
|
|
</li>
|
|
<!-- 主 题 配 置 -->
|
|
<li class="layui-nav-item setting"><a href="#" class="layui-icon layui-icon-more-vertical"></a></li>
|
|
</ul>
|
|
</div>
|
|
<!-- 侧 边 区 域 -->
|
|
<div class="layui-side layui-bg-black">
|
|
<!-- 菜 单 顶 部 -->
|
|
<div class="layui-logo">
|
|
<!-- 图 标 -->
|
|
<img class="logo">
|
|
<!-- 标 题 -->
|
|
<a href="http://dashboard.hesuu.com:25506/"><span class="title"><?= $translations['system_name'] ?? 'Vehicle Data Platform' ?></span></a>
|
|
</div>
|
|
<!-- 菜 单 内 容 -->
|
|
<div class="layui-side-scroll">
|
|
<div id="sideMenu"></div>
|
|
</div>
|
|
</div>
|
|
<!-- 视 图 页 面 -->
|
|
<div class="layui-body">
|
|
<!-- 内 容 页 面 -->
|
|
<div id="content"></div>
|
|
</div>
|
|
<!-- 页脚 -->
|
|
<div class="layui-footer layui-text">
|
|
<span class="left">
|
|
<?= $translations['footer_text'] ?? 'Released under the MIT license.' ?>
|
|
</span>
|
|
<span class="center"></span>
|
|
</div>
|
|
<!-- 遮 盖 层 -->
|
|
<div class="pear-cover"></div>
|
|
<!-- 加 载 动 画 -->
|
|
<div class="loader-main">
|
|
<!-- 动 画 对 象 -->
|
|
<div class="loader"></div>
|
|
</div>
|
|
</div>
|
|
<!-- 移 动 端 便 捷 操 作 -->
|
|
<div class="pear-collapsed-pe collapse">
|
|
<a href="#" class="layui-icon layui-icon-shrink-right"></a>
|
|
</div>
|
|
<!-- 依 赖 脚 本 -->
|
|
<script src="/app/admin/component/layui/layui.js?v=2.8.12"></script>
|
|
<script src="/app/admin/component/pear/pear.js"></script>
|
|
<!-- 框 架 初 始 化 -->
|
|
<script>
|
|
// 初始化翻译
|
|
var translations = <?= json_encode($translations ?? []) ?>;
|
|
|
|
// Admin
|
|
window.Admin = {
|
|
Account: {},
|
|
Translations: translations
|
|
};
|
|
|
|
layui.use(["admin","jquery","popup","drawer","form","tab"], function() {
|
|
var $ = layui.$;
|
|
var admin = layui.admin;
|
|
var popup = layui.popup;
|
|
var drawer = layui.drawer;
|
|
var form = layui.form;
|
|
var tab = layui.tab;
|
|
|
|
// 设置菜单配置
|
|
admin.setConfigType("json");
|
|
admin.setConfigPath("/app/admin/rule/get");
|
|
|
|
// 初始化菜单
|
|
var config = {
|
|
logo: {
|
|
title: translations.system_name || 'Vehicle Data Platform',
|
|
image: "/app/admin/admin/images/logo.png",
|
|
href: "/"
|
|
},
|
|
menu: {
|
|
data: "/app/admin/rule/get",
|
|
method: "GET",
|
|
accordion: true,
|
|
collapse: false,
|
|
control: false,
|
|
controlWidth: 2000,
|
|
select: "1",
|
|
async: true
|
|
},
|
|
tab: {
|
|
enable: true,
|
|
keepState: true,
|
|
session: true,
|
|
preload: false,
|
|
max: "30",
|
|
index: {
|
|
id: "1",
|
|
href: "/app/admin/vehicle/index",
|
|
title: translations.title || "车辆管理"
|
|
}
|
|
},
|
|
theme: {
|
|
defaultColor: "2",
|
|
defaultMenu: "light-theme",
|
|
defaultHeader: "light-theme",
|
|
allowCustom: true,
|
|
banner: false
|
|
},
|
|
colors: [
|
|
{
|
|
id: "1",
|
|
color: "#36b368",
|
|
second: "#f0f9eb"
|
|
},
|
|
{
|
|
id: "2",
|
|
color: "#2d8cf0",
|
|
second: "#ecf5ff"
|
|
},
|
|
{
|
|
id: "3",
|
|
color: "#f6ad55",
|
|
second: "#fdf6ec"
|
|
},
|
|
{
|
|
id: "4",
|
|
color: "#f56c6c",
|
|
second: "#fef0f0"
|
|
},
|
|
{
|
|
id: "5",
|
|
color: "#3963bc",
|
|
second: "#ecf5ff"
|
|
}
|
|
],
|
|
other: {
|
|
keepLoad: "500",
|
|
autoHead: false,
|
|
footer: false
|
|
},
|
|
header: {
|
|
message: false
|
|
}
|
|
};
|
|
|
|
// 初始化 admin
|
|
admin.render(config, function() {
|
|
// 获取菜单数据
|
|
$.ajax({
|
|
url: '/app/admin/rule/get',
|
|
method: 'GET',
|
|
success: function(res) {
|
|
if (res.code === 0) {
|
|
// 创建菜单映射
|
|
var menuMap = {};
|
|
function processMenuItems(items) {
|
|
items.forEach(function(item) {
|
|
menuMap[item.id] = item;
|
|
if (item.children) {
|
|
processMenuItems(item.children);
|
|
}
|
|
});
|
|
}
|
|
processMenuItems(res.data);
|
|
|
|
// 更新所有标签页标题
|
|
$('.layui-tab-title li').each(function() {
|
|
var $tab = $(this);
|
|
var menuId = $tab.find('span').data('menu-id');
|
|
if (menuId && menuMap[menuId]) {
|
|
var menuItem = menuMap[menuId];
|
|
$tab.find('span')
|
|
.data('menu-id', menuItem.id)
|
|
.data('menu-key', menuItem.key)
|
|
.data('menu-pid', menuItem.pid)
|
|
.text(menuItem.title);
|
|
}
|
|
});
|
|
|
|
// 确保默认标签页使用正确的翻译
|
|
var defaultTab = $('.layui-tab-title li[lay-id="1"]');
|
|
if (defaultTab.length) {
|
|
defaultTab.find('span').text(translations.title || '车辆管理');
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
// 语言切换处理
|
|
form.on('select(language-select)', function(data) {
|
|
var lang = data.value;
|
|
$.ajax({
|
|
url: '/app/admin/language/switch',
|
|
method: 'POST',
|
|
data: { lang: lang },
|
|
success: function(res) {
|
|
if (res.code === 0) {
|
|
// 获取新的翻译
|
|
$.get('/app/admin/vehicle/getTranslations', function(newTranslations) {
|
|
// 更新全局翻译
|
|
window.Admin.Translations = newTranslations;
|
|
translations = newTranslations;
|
|
|
|
// 关闭所有标签页
|
|
$('.layui-tab-title li').each(function() {
|
|
var layid = $(this).attr('lay-id');
|
|
if (layid) {
|
|
$(this).find('.layui-tab-close').trigger('click');
|
|
}
|
|
});
|
|
|
|
// 刷新页面
|
|
window.location.reload();
|
|
});
|
|
} else {
|
|
popup.failure(res.msg);
|
|
}
|
|
},
|
|
error: function() {
|
|
popup.failure('切换语言失败');
|
|
}
|
|
});
|
|
});
|
|
|
|
// 登出逻辑
|
|
admin.logout(function(){
|
|
$.ajax({
|
|
url: "/app/admin/account/logout",
|
|
dataType: "json",
|
|
success: function (res) {
|
|
if (res.code) {
|
|
return popup.error(res.msg);
|
|
}
|
|
popup.success(Admin.Translations['logout_success'] || "注销成功", function(){
|
|
location.reload();
|
|
})
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
|
|
$.ajax({
|
|
url: "/app/admin/account/info",
|
|
dataType: 'json',
|
|
success: function (res) {
|
|
window.Admin.Account = res.data;
|
|
}
|
|
});
|
|
|
|
// 重新渲染表单
|
|
form.render();
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|