164 lines
9.6 KiB
HTML
164 lines
9.6 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh">
|
|
|
|
<head>
|
|
<title>{$ htmlEncode .teaTitle}</title>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
|
|
{$if eq .teaFaviconFileId 0}
|
|
<link rel="shortcut icon" href="/images/favicon.png" />
|
|
{$else}
|
|
<link rel="shortcut icon" href="/ui/image/{$.teaFaviconFileId}" />
|
|
{$end}
|
|
<link rel="stylesheet" type="text/css" href="/_/@default/@layout.css" media="all" />
|
|
{$TEA.SEMANTIC}
|
|
<link rel="stylesheet" type="text/css" href="/_/@default/@layout_override.css" media="all" />
|
|
|
|
{$TEA.VUE}
|
|
{$echo "header"}
|
|
<!-- 品牌配置 -->
|
|
<script type="text/javascript">
|
|
window.BRAND_OFFICIAL_SITE = { $ jsonEncode .brandConfig.officialSite };
|
|
window.BRAND_DOCS_SITE = { $ jsonEncode .brandConfig.docsSite };
|
|
window.BRAND_DOCS_PREFIX = { $ jsonEncode .brandConfig.docsPathPrefix };
|
|
window.BRAND_PRODUCT_NAME = { $ jsonEncode .brandConfig.productName };
|
|
</script>
|
|
<script type="text/javascript" src="/js/config/brand.js"></script>
|
|
<script type="text/javascript" src="/_/@default/@layout.js"></script>
|
|
<script type="text/javascript" src="/js/components.js?v=v{$.teaVersion}"></script>
|
|
<script type="text/javascript" src="/js/utils.min.js"></script>
|
|
<script type="text/javascript" src="/js/sweetalert2/dist/sweetalert2.all.min.js"></script>
|
|
<script type="text/javascript" src="/js/date.tea.js"></script>
|
|
|
|
{$if not (eq .teaThemeBackgroundColor "")}
|
|
<style>
|
|
.top-nav.user-theme-enabled,
|
|
.main-menu.user-theme-enabled,
|
|
.main-menu.user-theme-enabled .menu {
|
|
background: #{$.teaThemeBackgroundColor} !important;
|
|
}
|
|
</style>
|
|
{$end}
|
|
<!-- 应用保存的主题颜色 -->
|
|
<script type="text/javascript">
|
|
(function () {
|
|
try {
|
|
var savedColor = null;
|
|
if (savedColor) {
|
|
var styleId = "theme-color-custom";
|
|
var styleEl = document.getElementById(styleId);
|
|
if (!styleEl) {
|
|
styleEl = document.createElement("style");
|
|
styleEl.id = styleId;
|
|
document.head.appendChild(styleEl);
|
|
}
|
|
styleEl.textContent = ".top-nav, .main-menu, .main-menu .menu { background: " + savedColor + " !important; } .main-menu .ui.labeled.menu.vertical.blue.inverted.tiny.borderless { background: " + savedColor + " !important; } .main-menu .ui.labeled.menu.vertical.blue.inverted.tiny.borderless .item { background: " + savedColor + " !important; } .main-menu .ui.labeled.menu.vertical.blue.inverted.tiny.borderless .sub-items { background: " + savedColor + " !important; } .main-menu .ui.labeled.menu.vertical.blue.inverted.tiny.borderless .sub-items .item { background: " + savedColor + " !important; } .main-menu .ui.menu .sub-items { background: " + savedColor + " !important; } .main-menu .ui.menu .sub-items .item { background: " + savedColor + " !important; } .main-menu .ui.labeled.menu .sub-items { background: " + savedColor + " !important; } .main-menu .ui.labeled.menu .sub-items .item { background: " + savedColor + " !important; } .main-menu .sub-items { background: " + savedColor + " !important; } .main-menu .sub-items .item { background: " + savedColor + " !important; } .ui.menu.blue.inverted { background: " + savedColor + " !important; } .ui.menu.blue.inverted .item { background: " + savedColor + " !important; } .ui.menu.vertical.blue.inverted { background: " + savedColor + " !important; } .ui.menu.vertical.blue.inverted .item { background: " + savedColor + " !important; } .ui.labeled.menu.vertical.blue.inverted { background: " + savedColor + " !important; } .ui.labeled.menu.vertical.blue.inverted .item { background: " + savedColor + " !important; } .main-menu .ui.labeled.menu.vertical.blue.inverted .item.active { background: rgba(230, 230, 230, 0.45) !important; } .main-menu .ui.menu .sub-items .item.active { background: rgba(230, 230, 230, 0.55) !important; }";
|
|
}
|
|
} catch (e) {
|
|
console.log("Failed to apply saved theme color:", e);
|
|
}
|
|
})();
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<div>
|
|
<!-- 顶部导航 -->
|
|
<div class="ui menu top-nav blue inverted small borderless" v-cloak="">
|
|
<a href="/dashboard" class="item">
|
|
<i class="ui icon leaf" v-if="teaLogoFileId == 0"></i><img v-if="teaLogoFileId > 0"
|
|
:src="'/ui/image/' + teaLogoFileId" style="width: auto;height: 1.6em" />
|
|
{{teaTitle}} <sup v-if="teaShowVersion">v{{teaVersion}}</sup>
|
|
</a>
|
|
|
|
<div class="right menu">
|
|
<a href="/messages" class="item" :class="{active:teaMenu == 'message'}">
|
|
<span v-if="globalMessageBadge > 0" class="blink hover-span"><i
|
|
class="icon bell"></i><span>消息({{globalMessageBadge}})</span></span>
|
|
<span v-if="globalMessageBadge == 0" class="hover-span"><i class="icon bell disabled"></i><span
|
|
class="disabled">消息(0)</span></span>
|
|
</a>
|
|
<a href="/settings/profile" class="item">
|
|
<i class="icon user" v-if="teaUserAvatar.length == 0"></i>
|
|
<img class="avatar" alt="" :src="teaUserAvatar" v-if="teaUserAvatar.length > 0" />
|
|
<span class="hover-span"><span class="disabled">{{teaUsername}}</span></span>
|
|
</a>
|
|
<a href="/docs" class="item" :class="{active: teaMenu == 'docs'}"><i class="icon file"></i><span
|
|
class="hover-span"><span>文档</span></span></a>
|
|
<!-- 自定义主题颜色 -->
|
|
<theme-color-picker v-if="false"></theme-color-picker>
|
|
<a href="/" class="item" v-show="teaShowIndexPage">
|
|
<i class="icon home"></i><span class="hover-span"><span>首页</span></span>
|
|
</a>
|
|
<a :href="Tea.url('logout')" class="item" title="安全退出登录"><i class="icon sign out"></i>
|
|
<span class="hover-span"><span class="disabled">退出</span></span>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 左侧主菜单 -->
|
|
<div class="main-menu" v-cloak="">
|
|
<div class="ui labeled menu vertical blue inverted tiny borderless">
|
|
<div class="item"></div>
|
|
<!--<a :href="Tea.url('dashboard')" class="item" :class="{active:teaMenu == 'dashboard'}">
|
|
<i class="ui dashboard icon"></i>
|
|
<span>仪表板</span>
|
|
</a>-->
|
|
|
|
<!-- 模块 -->
|
|
<div v-for="module in teaModules">
|
|
<a class="item" :href="Tea.url(module.code)"
|
|
:class="{active:teaMenu == module.code && teaSubMenu.length == 0, separator:module.code.length == 0}"
|
|
:style="(teaMenu == module.code && teaSubMenu.length == 0) ? 'background: rgba(230, 230, 230, 0.45) !important;' : ''">
|
|
<span v-if="module.code.length > 0">
|
|
<i class="window restore outline icon" v-if="module.icon == null"></i>
|
|
<i class="ui icon" v-if="module.icon != null" :class="module.icon"></i>
|
|
<span>{{module.name}}</span>
|
|
</span>
|
|
</a>
|
|
<div v-if="teaMenu == module.code" class="sub-items">
|
|
<a class="item" v-for="subItem in module.subItems" :href="subItem.url"
|
|
:class="{active:subItem.code == teaSubMenu}"
|
|
:style="(subItem.code == teaSubMenu) ? 'background: rgba(230, 230, 230, 0.55) !important;' : ''"
|
|
v-if="subItem.isOn == null || subItem.isOn === true">{{subItem.name}}<i
|
|
class="icon angle right"
|
|
v-if="subItem.name != '-' && subItem.code == teaSubMenu"></i></a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- 右侧主操作栏 -->
|
|
<div class="main"
|
|
:class="{'without-menu':teaSubMenus.menus == null || teaSubMenus.menus.length == 0 || (teaSubMenus.menus.length == 1 && teaSubMenus.menus[0].alwaysActive), 'without-secondary-menu':teaSubMenus.alwaysMenu == null || teaSubMenus.alwaysMenu.items.length <= 1, 'without-footer':!teaShowPageFooter}"
|
|
v-cloak="">
|
|
<!-- 操作菜单 -->
|
|
<div class="ui top menu tabular tab-menu small" v-if="teaTabbar.length > 0">
|
|
<a class="item" v-for="item in teaTabbar" :class="{'active':item.active,right:item.right}"
|
|
:href="item.url">
|
|
<var>{{item.name}}<span v-if="item.subName.length > 0">({{item.subName}})</span><i
|
|
class="icon small" :class="item.icon" v-if="item.icon != null && item.icon.length > 0"></i>
|
|
</var>
|
|
</a>
|
|
</div>
|
|
|
|
<!-- 功能区 -->
|
|
{$TEA.VIEW}
|
|
</div>
|
|
|
|
<!-- 底部 -->
|
|
<div id="footer" class="ui menu inverted light-blue borderless small"
|
|
v-if="teaShowPageFooter && teaPageFooterHTML.length == 0" v-cloak>
|
|
<a class="item" title="点击进入检查版本更新页面">{{teaName}} v{{teaVersion}}</a>
|
|
</div>
|
|
<div id="footer" class="ui menu inverted light-blue borderless small"
|
|
v-if="teaShowPageFooter && teaPageFooterHTML.length > 0" v-html="teaPageFooterHTML" v-cloak> </div>
|
|
</div>
|
|
|
|
{$echo "footer"}
|
|
|
|
</body>
|
|
|
|
</html>
|