2020-07-22 22:19:39 +08:00
|
|
|
<!DOCTYPE html>
|
2020-08-21 12:32:16 +08:00
|
|
|
<html lang="zh">
|
2020-07-22 22:19:39 +08:00
|
|
|
<head>
|
2023-12-14 19:57:02 +08:00
|
|
|
<title>{$ htmlEncode .teaTitle}</title>
|
2020-07-22 22:19:39 +08:00
|
|
|
<meta charset="UTF-8"/>
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
|
2021-02-25 20:54:30 +08:00
|
|
|
{$if eq .teaFaviconFileId 0}
|
2020-07-22 22:19:39 +08:00
|
|
|
<link rel="shortcut icon" href="/images/favicon.png"/>
|
2021-02-25 20:54:30 +08:00
|
|
|
{$else}
|
|
|
|
|
<link rel="shortcut icon" href="/ui/image/{$.teaFaviconFileId}"/>
|
|
|
|
|
{$end}
|
2020-07-22 22:19:39 +08:00
|
|
|
<link rel="stylesheet" type="text/css" href="/_/@default/@layout.css" media="all"/>
|
|
|
|
|
{$TEA.SEMANTIC}
|
2020-09-23 18:43:38 +08:00
|
|
|
|
2020-07-22 22:19:39 +08:00
|
|
|
{$TEA.VUE}
|
|
|
|
|
{$echo "header"}
|
|
|
|
|
<script type="text/javascript" src="/_/@default/@layout.js"></script>
|
2021-11-22 12:08:53 +08:00
|
|
|
<script type="text/javascript" src="/js/components.js"></script>
|
2023-06-09 17:29:14 +08:00
|
|
|
<script type="text/javascript" src="/js/utils.min.js"></script>
|
2023-06-28 09:14:07 +08:00
|
|
|
<script type="text/javascript" src="/js/sweetalert2/dist/sweetalert2.all.min.js" async></script>
|
2020-10-01 16:01:04 +08:00
|
|
|
<script type="text/javascript" src="/js/date.tea.js"></script>
|
2023-12-13 10:29:50 +08:00
|
|
|
<script type="text/javascript" src="/js/langs/base.js?v={$ .teaVersion}"></script>
|
|
|
|
|
<script type="text/javascript" src="/js/langs/{$.teaLang}.js?v={$ .teaVersion}"></script>
|
|
|
|
|
<link rel="stylesheet" type="text/css" href="/js/langs/{$.teaLang}.css?v={$ .teaVersion}"/>
|
2021-08-29 14:00:59 +08:00
|
|
|
|
|
|
|
|
<link rel="stylesheet" type="text/css" href="/_/@default/@layout_override.css" media="all"/>
|
2020-07-22 22:19:39 +08:00
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
<!-- 顶部导航 -->
|
2021-07-13 14:28:06 +08:00
|
|
|
<div class="ui menu top-nav blue inverted small borderless" :class="(teaTheme == null || teaTheme.length == 0) ? 'theme2': teaTheme" v-cloak="">
|
2020-07-22 22:19:39 +08:00
|
|
|
<a href="/" class="item">
|
2021-03-09 14:45:16 +08:00
|
|
|
<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>
|
2020-07-22 22:19:39 +08:00
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<div class="right menu">
|
2021-01-17 16:47:29 +08:00
|
|
|
<!-- 集群同步 -->
|
2021-01-27 22:59:46 +08:00
|
|
|
<a href="" class="item" v-if="teaCheckNodeTasks && doingNodeTasks.isUpdated" @click.prevent="showNodeTasks()">
|
|
|
|
|
<span v-if="!doingNodeTasks.isDoing && !doingNodeTasks.hasError" class="hover-span"><i class="icon cloud disabled"></i><span class="disabled">已同步节点</span></span>
|
|
|
|
|
<span v-if="doingNodeTasks.isDoing && !doingNodeTasks.hasError" class="hover-span rotate"><i class="icon cloud"></i><span>正在同步节点...</span></span>
|
|
|
|
|
<span v-if="doingNodeTasks.hasError" class="red"><i class="icon cloud"></i>节点同步失败</span>
|
|
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<!-- DNS同步 -->
|
|
|
|
|
<a href="" class="item" v-if="teaCheckDNSTasks && doingDNSTasks.isUpdated" @click.prevent="showDNSTasks()">
|
|
|
|
|
<span v-if="!doingDNSTasks.isDoing && !doingDNSTasks.hasError" class="hover-span"><i class="icon globe disabled"></i><span class="disabled">已同步DNS</span></span>
|
|
|
|
|
<span v-if="doingDNSTasks.isDoing && !doingDNSTasks.hasError" class="hover-span rotate"><i class="icon globe"></i><span>正在同步DNS...</span></span>
|
|
|
|
|
<span v-if="doingDNSTasks.hasError" class="red"><i class="icon globe"></i>DNS同步失败</span>
|
2021-01-17 16:47:29 +08:00
|
|
|
</a>
|
|
|
|
|
|
|
|
|
|
<!-- 消息 -->
|
2021-02-03 11:18:41 +08:00
|
|
|
<a href="" class="item" :class="{active:teaMenu == 'message'}" @click.prevent="showMessages()">
|
|
|
|
|
<span v-if="globalMessageBadge > 0" class="blink hover-span"><i class="icon bell"></i><span>消息({{globalMessageBadge}}) </span></span>
|
2021-01-28 11:35:22 +08:00
|
|
|
<span v-if="globalMessageBadge == 0" class="hover-span"><i class="icon bell disabled"></i><span class="disabled">消息(0)</span></span>
|
|
|
|
|
</a>
|
2021-01-17 16:47:29 +08:00
|
|
|
|
|
|
|
|
<!-- 用户信息 -->
|
2020-11-22 15:34:13 +08:00
|
|
|
<a href="/settings/profile" class="item">
|
2020-07-22 22:19:39 +08:00
|
|
|
<i class="icon user" v-if="teaUserAvatar.length == 0"></i>
|
|
|
|
|
<img class="avatar" alt="" :src="teaUserAvatar" v-if="teaUserAvatar.length > 0"/>
|
2021-03-29 17:47:10 +08:00
|
|
|
<span class="hover-span"><span class="disabled">{{teaUsername}}</span></span>
|
2020-07-22 22:19:39 +08:00
|
|
|
</a>
|
2021-01-17 16:47:29 +08:00
|
|
|
|
2023-12-12 11:47:41 +08:00
|
|
|
<a href="" class="item" title="switch language" @click.prevent="switchLang"><i class="icon language"></i> </a>
|
|
|
|
|
|
2021-07-12 10:21:17 +08:00
|
|
|
<!-- 背景颜色 -->
|
2021-07-12 10:27:35 +08:00
|
|
|
<a href="" class="item" title="点击切换界面风格" @click.prevent="changeTheme()"><i class="icon adjust"></i></a>
|
2021-07-12 10:21:17 +08:00
|
|
|
|
2021-09-06 08:53:51 +08:00
|
|
|
<!-- 企业版 -->
|
2021-09-16 09:21:44 +08:00
|
|
|
<!-- <a :href="'/settings/authority'" class="item" title="商业版" :v-if="teaIsPlus"><i class="icon gem outline yellow"></i></a>-->
|
2021-09-05 11:10:07 +08:00
|
|
|
|
2021-01-17 16:47:29 +08:00
|
|
|
<!-- 退出登录 -->
|
2021-03-29 17:47:10 +08:00
|
|
|
<a :href="Tea.url('logout')" class="item" title="安全退出登录"><i class="icon sign out"></i>
|
|
|
|
|
<span class="hover-span"><span class="disabled">退出登录</span></span>
|
|
|
|
|
</a>
|
2020-07-22 22:19:39 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 左侧主菜单 -->
|
2021-07-13 14:28:06 +08:00
|
|
|
<div class="main-menu" :class="(teaTheme == null || teaTheme.length == 0) ? 'theme2': teaTheme" v-cloak="">
|
2020-07-22 22:19:39 +08:00
|
|
|
<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>-->
|
|
|
|
|
|
|
|
|
|
<!-- 模块 -->
|
2020-11-10 15:40:22 +08:00
|
|
|
<div v-for="module in teaModules">
|
2021-04-28 14:56:19 +08:00
|
|
|
<a class="item" :href="Tea.url(module.code)" :class="{active:teaMenu == module.code && teaSubMenu.length == 0, separator:module.code.length == 0, expend: teaMenu == module.code}" v-if="module.isOn !== false">
|
2020-11-10 15:40:22 +08:00
|
|
|
<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>
|
2021-06-23 13:12:33 +08:00
|
|
|
<span class="module-name">{{module.name}}</span>
|
2020-11-10 15:40:22 +08:00
|
|
|
</span>
|
2021-03-28 14:47:21 +08:00
|
|
|
<div class="subtitle" v-if="module.subtitle != null && module.subtitle.length > 0">{{module.subtitle}}</div>
|
2020-11-10 15:40:22 +08:00
|
|
|
</a>
|
|
|
|
|
<div v-if="teaMenu == module.code" class="sub-items">
|
2022-05-12 11:04:37 +08:00
|
|
|
<a class="item" :class="{separator:subItem.name == '-'}" v-for="subItem in module.subItems" v-if="subItem.isOn !== false" :href="subItem.url"><i class="icon angle right" v-if="subItem.name != '-' && subItem.code == teaSubMenu"></i> <span v-if="subItem.name != '-'">{{subItem.name}}</span>
|
2022-02-14 08:58:31 +08:00
|
|
|
<span class="ui label tiny red" v-if="subItem.badge != null && subItem.badge > 0">
|
|
|
|
|
<span v-if="subItem.badge < 100">{{subItem.badge}}</span>
|
|
|
|
|
<span v-else>99+</span>
|
|
|
|
|
</span>
|
2021-10-15 12:54:23 +08:00
|
|
|
</a>
|
2020-11-10 15:40:22 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
2020-07-22 22:19:39 +08:00
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 右侧主操作栏 -->
|
2021-01-24 14:41:43 +08:00
|
|
|
<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':!teaShowOpenSourceInfo}" v-cloak="">
|
2020-07-22 22:19:39 +08:00
|
|
|
<!-- 操作菜单 -->
|
2023-05-27 14:44:39 +08:00
|
|
|
<div class="ui top menu tabular tab-menu small" v-if="teaTabbar.length > 1">
|
2023-05-27 17:05:17 +08:00
|
|
|
<a class="item" v-for="item in teaTabbar" :class="{'active':item.isActive && !item.isDisabled, right:item.isRight, title: item.isTitle, icon: item.icon != null && item.icon.length > 0, disabled: item.isDisabled}" :href="item.url">
|
2020-10-11 10:51:13 +08:00
|
|
|
<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>
|
2023-05-27 17:05:17 +08:00
|
|
|
<var v-if="item.isTitle && typeof _data.node == 'object'">{{node.name}}</var>
|
|
|
|
|
<div class="bottom-indicator" v-if="item.isActive && !item.isTitle"></div>
|
2020-07-22 22:19:39 +08:00
|
|
|
</a>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 功能区 -->
|
2021-10-08 14:36:57 +08:00
|
|
|
<div class="main-box">
|
|
|
|
|
{$TEA.VIEW}
|
|
|
|
|
<div class="clear"></div>
|
|
|
|
|
</div>
|
2020-07-22 22:19:39 +08:00
|
|
|
</div>
|
2020-10-15 16:41:32 +08:00
|
|
|
|
|
|
|
|
<!-- 底部 -->
|
2022-04-22 10:38:03 +08:00
|
|
|
{$template "/footer"}
|
2020-07-22 22:19:39 +08:00
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{$echo "footer"}
|
|
|
|
|
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|