159 lines
6.6 KiB
PHP
159 lines
6.6 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="csrf-token" content="{{ csrf_token() }}">
|
|
<title>{{ $title ?? 'NASA' }}</title>
|
|
@vite(['resources/css/app.css', 'resources/js/app.js'])
|
|
</head>
|
|
<body>
|
|
<div class="mac-app-wrapper pc-menu-open" id="sAppWrapper">
|
|
|
|
<header class="mac-statusbar" id="sMacStatusbar">
|
|
<div class="mac-sb-section">
|
|
<div class="mac-global-trigger" id="sGlobalMenuBtn" title="切换菜单侧边栏">☰</div>
|
|
<span class="mac-sb-divider"></span>
|
|
<span class="mac-sb-pill"><span class="status-dot secure"></span> Engine Running</span>
|
|
<span class="mac-sb-text">Env: <strong>Prod</strong></span>
|
|
<span class="mac-sb-divider"></span>
|
|
<span class="mac-sb-text">Laravel <strong>v11.36.1</strong></span>
|
|
</div>
|
|
|
|
<div class="mac-sb-section justify-center"></div>
|
|
|
|
<div class="mac-sb-section justify-end">
|
|
|
|
<a class="text-muted" href="/nasa/auth/out"><span class="mac-sb-text">退出</span></a>
|
|
<!--
|
|
<span class="mac-sb-text">Nginx vhost: <span style="font-family:'SF Mono'">active</span></span>
|
|
<span class="mac-sb-divider"></span>
|
|
<span class="mac-sb-text">DB: <strong class="text-success">Connected</strong></span>
|
|
<span class="mac-sb-divider"></span>
|
|
<span class="mac-sb-text" style="font-variant-numeric: tabular-nums;">UTC+8 18:35</span>
|
|
-->
|
|
</div>
|
|
</header>
|
|
|
|
<div class="mac-main-body">
|
|
<aside class="mac-sidebar" id="sMacSidebar">
|
|
<div class="mac-sidebar-top">
|
|
@foreach($aNavInfo["aTopMenus"] as $sGroup => $aTopMenus)
|
|
@if (!empty($sGroup))
|
|
<div class="mac-meta-title">{{ __('menu.'.$sGroup) }}</div>
|
|
@endif
|
|
@foreach($aTopMenus as $aTopMenu)
|
|
<a href="{{ $aTopMenu['sUrl'] }}">
|
|
<div class="mac-item {{ $aTopMenu['sPermissionSlug'] == $aNavInfo['aMenuPath']['TOP_BAR']['sPermissionSlug'] ? 'active-no-sub' : '' }}">
|
|
{{ $aTopMenu["sName"] }}
|
|
</div>
|
|
</a>
|
|
@endforeach
|
|
@endforeach
|
|
</div>
|
|
<!--
|
|
<div class="mac-sidebar-bottom">
|
|
<div class="mac-item"><span>⚙️</span> 设置</div>
|
|
</div>
|
|
-->
|
|
</aside>
|
|
|
|
@if(isset($aNavInfo['aMenuPath']['SIDEBAR_MENU']))
|
|
<aside class="mac-sidebar-second" id="sMacSidebarSecond">
|
|
<div class="mac-sidebar-top">
|
|
@foreach($aNavInfo["aSubMenus"] as $sGroup => $sSubMenus)
|
|
@if (!empty($sGroup))
|
|
<div class="mac-meta-title">{{ __('menu.'.$sGroup) }}</div>
|
|
@endif
|
|
@foreach($sSubMenus as $aSubMenu)
|
|
<a href="{{ $aSubMenu['sUrl'] }}">
|
|
<div class="mac-item {{ $aSubMenu['sPermissionSlug'] == $aNavInfo['aMenuPath']['SIDEBAR_MENU']['sPermissionSlug'] ? 'active' : '' }}">
|
|
{{ $aSubMenu["sName"] }}
|
|
</div>
|
|
</a>
|
|
@endforeach
|
|
@endforeach
|
|
</div>
|
|
</aside>
|
|
@endif
|
|
|
|
<main class="mac-stage">
|
|
@if (!empty($aNavInfo["aTabMenus"]) && count($aNavInfo["aTabMenus"]) >= 1)
|
|
<div class="mac-sub-navbar">
|
|
@foreach ($aNavInfo["aTabMenus"] as $aTabMenu)
|
|
<a href="{{ $aTabMenu['sUrl'] }}">
|
|
<div class="mac-sub-nav-item {{ isset($aNavInfo['aMenuPath']['INNER_PAGE_TAB']) && $aTabMenu['sPermissionSlug'] == $aNavInfo['aMenuPath']['INNER_PAGE_TAB']['sPermissionSlug'] ? 'active' : '' }}">
|
|
{{ $aTabMenu['sName'] }}
|
|
</div>
|
|
</a>
|
|
@endforeach
|
|
</div>
|
|
@endif
|
|
<div class="mac-stage-container">
|
|
{{ $slot }}
|
|
</div>
|
|
</main>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
const oMenuBtn = document.getElementById('sGlobalMenuBtn');
|
|
const oAppWrapper = document.getElementById('sAppWrapper');
|
|
|
|
if (oMenuBtn && oAppWrapper) {
|
|
oMenuBtn.addEventListener('click', function (e) {
|
|
e.stopPropagation();
|
|
if (window.innerWidth < 768) {
|
|
oAppWrapper.classList.toggle('mobile-menu-open');
|
|
oAppWrapper.classList.remove('pc-menu-open');
|
|
} else {
|
|
oAppWrapper.classList.toggle('pc-menu-open');
|
|
oAppWrapper.classList.remove('mobile-menu-open');
|
|
}
|
|
});
|
|
|
|
const oStage = document.querySelector('.mac-stage');
|
|
if (oStage) {
|
|
oStage.addEventListener('click', function () {
|
|
if (oAppWrapper.classList.contains('mobile-menu-open')) {
|
|
oAppWrapper.classList.remove('mobile-menu-open');
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|
|
<button hidden class="js-tom-alert-global js-tom-alert-trigger"
|
|
tom-alert-msg=""
|
|
tom-alert-confirm="false"
|
|
tom-alert-icon-visible="false"
|
|
tom-alert-border-variant="false"
|
|
></button>
|
|
|
|
<button hidden class="js-tom-alert-success-simple js-tom-alert-trigger"
|
|
tom-alert-type="success"
|
|
tom-alert-msg=""
|
|
tom-alert-confirm="false"
|
|
tom-alert-icon-visible="false"
|
|
tom-alert-border-variant="false"
|
|
></button>
|
|
|
|
<div class="tom-alert" tabindex="-1" hidden>
|
|
<div class="tom-alert-inner">
|
|
<div class="tom-alert-header" hidden>
|
|
<a class="text-muted js-tom-alert-close">✕</a>
|
|
</div>
|
|
<div class="tom-alert-body flex-align-center">
|
|
<div class="tom-alert-icon"></div>
|
|
<div class="tom-alert-msg"></div>
|
|
</div>
|
|
<div class="tom-alert-footer">
|
|
<button class="mac-btn-secondary js-tom-alert-cancel">取消</button>
|
|
<button class="mac-btn-primary js-tom-alert-submit">确定</button>
|
|
</div>
|
|
</div>
|
|
</div>
|