mirror of
https://github.com/ProxyPanel/ProxyPanel.git
synced 2026-04-13 07:59:20 +00:00
489 lines
30 KiB
PHP
489 lines
30 KiB
PHP
@extends('_layout')
|
|
@section('title', sysConfig('website_name'))
|
|
@section('layout_css')
|
|
@yield('css')
|
|
@endsection
|
|
@section('body_class', 'dashboard')
|
|
@section('layout_content')
|
|
<nav class="site-navbar navbar navbar-default navbar-fixed-top navbar-mega navbar-inverse bg-indigo-600" role="navigation">
|
|
<div class="navbar-header">
|
|
<button type="button" class="navbar-toggler hamburger hamburger-close navbar-toggler-left hided" data-toggle="menubar">
|
|
<span class="sr-only">Toggle navigation</span>
|
|
<span class="hamburger-bar"></span>
|
|
</button>
|
|
<button type="button" class="navbar-toggler collapsed" data-target="#site-navbar-collapse" data-toggle="collapse">
|
|
<i class="icon wb-more-horizontal" aria-hidden="true"></i>
|
|
</button>
|
|
<div class="navbar-brand navbar-brand-center">
|
|
<img src="{{sysConfig('website_logo')? asset(sysConfig('website_logo')) :'/assets/images/logo64.png'}}" class="navbar-brand-logo" alt="logo"/>
|
|
<span class="navbar-brand-text hidden-xs-down"> {{sysConfig('website_name')}}</span>
|
|
</div>
|
|
</div>
|
|
<div class="navbar-container container-fluid">
|
|
<div class="collapse navbar-collapse navbar-collapse-toolbar" id="site-navbar-collapse">
|
|
<ul class="nav navbar-toolbar">
|
|
<li class="nav-item hidden-float" id="toggleMenubar">
|
|
<a class="nav-link" data-toggle="menubar" href="#" role="button">
|
|
<i class="icon hamburger hamburger-arrow-left">
|
|
<span class="sr-only">菜单</span>
|
|
<span class="hamburger-bar"></span>
|
|
</i>
|
|
</a>
|
|
</li>
|
|
<li class="nav-item hidden-sm-down">
|
|
<a class="nav-link icon icon-fullscreen" data-toggle="fullscreen" href="#" role="button">
|
|
<span class="sr-only">全屏</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
<ul class="nav navbar-toolbar navbar-right navbar-toolbar-right">
|
|
<li class="nav-item dropdown">
|
|
<a class="nav-link navbar-avatar" data-toggle="dropdown" href="#" aria-expanded="false" data-animation="scale-up" role="button">
|
|
<span class="avatar avatar-online">
|
|
<img src="/assets/images/avatar.svg" alt="..."/>
|
|
<i></i>
|
|
</span>
|
|
</a>
|
|
<div class="dropdown-menu" role="menu">
|
|
<a class="dropdown-item" href="/" role="menuitem">
|
|
<i class="icon wb-settings" aria-hidden="true"></i>
|
|
个人中心
|
|
</a>
|
|
<div class="dropdown-divider" role="presentation"></div>
|
|
<a class="dropdown-item" href="{{route('logout')}}" role="menuitem">
|
|
<i class="icon wb-power" aria-hidden="true"></i>
|
|
{{trans('home.logout')}}
|
|
</a>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
<div class="site-menubar site-menubar-light">
|
|
<div class="site-menubar-body">
|
|
<ul class="site-menu" data-plugin="menu">
|
|
@can('admin.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.index') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.index')}}">
|
|
<i class="site-menu-icon wb-dashboard" aria-hidden="true"></i>
|
|
<span class="site-menu-title">管理中心</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@canany(['admin.user.index', 'admin.user.group.index', 'admin.log.credit', 'admin.subscribe.index'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.user.*', 'admin.log.credit', 'admin.subscribe.*') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-user" aria-hidden="true"></i>
|
|
<span class="site-menu-title">用户系统</span>
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.user.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.user.index', 'admin.user.edit', 'admin.user.monitor', 'admin.user.online', 'admin.user.online', 'admin.user.export') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.user.index')}}">
|
|
<span class="site-menu-title">用户管理</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.user.group.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.user.group.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.user.group.index')}}">
|
|
<span class="site-menu-title">用戶分组</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.log.credit')
|
|
<li class="site-menu-item {{request()->routeIs('admin.log.credit') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.log.credit')}}">
|
|
<span class="site-menu-title">余额变动</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.subscribe.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.subscribe.*')? 'active open' : ''}}">
|
|
<a href="{{route('admin.subscribe.index')}}">
|
|
<span class="site-menu-title">订阅管理</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.permission.index', 'admin.role.index'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.permission.*', 'admin.role.*') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-users" aria-hidden="true"></i>
|
|
<span class="site-menu-title">权限系统</span>
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.permission.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.permission.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.permission.index')}}">
|
|
<span class="site-menu-title">权限列表</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.role.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.role.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.role.index')}}">
|
|
<span class="site-menu-title">角色列表</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.ticket.index', 'admin.article.index', 'admin.marketing.push', 'admin.marketing.email'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.ticket.*', 'admin.article.*', 'admin.marketing.*')? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-chat-working" aria-hidden="true"></i>
|
|
<span class="site-menu-title">客服系统</span>
|
|
@can('admin.ticket.index')
|
|
@php
|
|
$openTicket = App\Models\Ticket::whereStatus(0)->count()
|
|
@endphp
|
|
@if($openTicket > 0)
|
|
<div class="site-menu-badge">
|
|
<span class="badge badge-pill badge-success">{{$openTicket}}</span>
|
|
</div>
|
|
@endif
|
|
@endcan
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.ticket.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.ticket.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.ticket.index')}}">
|
|
<span class="site-menu-title">服务工单</span>
|
|
@if($openTicket > 0)
|
|
<div class="site-menu-label">
|
|
<span class="badge badge-danger badge-round mr-25">{{$openTicket}}</span>
|
|
</div>
|
|
@endif
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.article.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.article.*')? 'active open' : ''}}">
|
|
<a href="{{route('admin.article.index')}}">
|
|
<span class="site-menu-title">文章管理</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.marketing.push')
|
|
<li class="site-menu-item {{request()->routeIs('admin.marketing.push') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.marketing.push')}}">
|
|
<span class="site-menu-title">消息推送</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.marketing.email')
|
|
<li class="site-menu-item {{request()->routeIs('admin.marketing.email') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.marketing.email')}}">
|
|
<span class="site-menu-title">邮件群发</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.node.index', 'admin.node.auth.index', 'admin.node.cert.index', 'admin.node.pingLog'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.node.*') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-grid-4" aria-hidden="true"></i>
|
|
<span class="site-menu-title">线路系统</span>
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.node.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.node.index', 'admin.node.create', 'admin.node.edit')? 'active open' : ''}}">
|
|
<a href="{{route('admin.node.index')}}">
|
|
<span class="site-menu-title">线路管理</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.node.auth.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.node.auth.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.node.auth.index')}}">
|
|
<span class="site-menu-title">线路授权</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.node.cert.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.node.cert.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.node.cert.index')}}">
|
|
<span class="site-menu-title">证书列表</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.node.pingLog')
|
|
<li class="site-menu-item {{request()->routeIs('admin.node.pingLog') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.node.pingLog')}}">
|
|
<span class="site-menu-title">测速日志</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.rule.index', 'admin.rule.group.index', 'admin.rule.log'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.rule.*') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-eye" aria-hidden="true"></i>
|
|
<span class="site-menu-title">审计规则</span>
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.rule.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.rule.index') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.rule.index')}}">
|
|
<span class="site-menu-title">规则列表</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.rule.group.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.rule.group.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.rule.group.index')}}">
|
|
<span class="site-menu-title">规则分组</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.rule.log')
|
|
<li class="site-menu-item {{request()->routeIs('admin.rule.log') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.rule.log')}}">
|
|
<span class="site-menu-title">触发记录</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.goods.index', 'admin.coupon.index', 'admin.order'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.goods.*', 'admin.coupon.*', 'admin.order') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-shopping-cart" aria-hidden="true"></i>
|
|
<span class="site-menu-title">商品系统</span>
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.goods.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.goods.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.goods.index')}}">
|
|
<span class="site-menu-title">商品管理</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.coupon.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.coupon.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.coupon.index')}}">
|
|
<span class="site-menu-title">卡券管理</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.order')
|
|
<li class="site-menu-item {{request()->routeIs('admin.order') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.order')}}">
|
|
<span class="site-menu-title">商品订单</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.invite.index', 'admin.aff.index', 'admin.aff.rebate'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.invite.*', 'admin.aff.*') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-thumb-up" aria-hidden="true"></i>
|
|
<span class="site-menu-title">推广系统</span>
|
|
@can('admin.aff.index')
|
|
@php
|
|
$openApply = App\Models\ReferralApply::whereStatus(0)->count()
|
|
@endphp
|
|
@if($openApply > 0)
|
|
<div class="site-menu-badge">
|
|
<span class="badge badge-pill badge-success">{{$openApply}}</span>
|
|
</div>
|
|
@endif
|
|
@endcan
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.invite.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.invite.index') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.invite.index')}}">
|
|
<span class="site-menu-title">邀请管理</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.aff.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.aff.index', 'admin.aff.detail') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.aff.index')}}">
|
|
<span class="site-menu-title">提现管理</span>
|
|
@if($openApply > 0)
|
|
<div class="site-menu-label">
|
|
<span class="badge badge-danger badge-round mr-25">{{$openApply}}</span>
|
|
</div>
|
|
@endif
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.aff.rebate')
|
|
<li class="site-menu-item {{request()->routeIs('admin.aff.rebate') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.aff.rebate')}}">
|
|
<span class="site-menu-title">返利流水</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.log.traffic', 'admin.log.flow', 'admin.log.ban', 'admin.log.ip', 'admin.log.online', 'admin.log.notify', 'admin.payment.callback'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.log.traffic', 'admin.log.flow', 'admin.log.ban', 'admin.log.ip', 'admin.log.online', 'admin.log.notify', 'admin.payment.callback') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-calendar" aria-hidden="true"></i>
|
|
<span class="site-menu-title">日志系统</span>
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.log.traffic')
|
|
<li class="site-menu-item {{request()->routeIs('admin.log.traffic') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.log.traffic')}}">
|
|
<span class="site-menu-title">流量使用</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.log.flow')
|
|
<li class="site-menu-item {{request()->routeIs('admin.log.flow') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.log.flow')}}">
|
|
<span class="site-menu-title">流量变动</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.log.ban')
|
|
<li class="site-menu-item {{request()->routeIs('admin.log.ban') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.log.ban')}}">
|
|
<span class="site-menu-title">封禁记录</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.log.ip')
|
|
<li class="site-menu-item {{request()->routeIs('admin.log.ip') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.log.ip')}}">
|
|
<span class="site-menu-title">在线记录</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.log.online')
|
|
<li class="site-menu-item {{request()->routeIs('admin.log.online') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.log.online')}}">
|
|
<span class="site-menu-title">在线监控</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.log.notify')
|
|
<li class="site-menu-item {{request()->routeIs('admin.log.notify') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.log.notify')}}">
|
|
<span class="site-menu-title">通知记录</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.payment.callback')
|
|
<li class="site-menu-item {{request()->routeIs('admin.payment.callback') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.payment.callback')}}">
|
|
<span class="site-menu-title">支付回调</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.log.viewer')
|
|
<li class="site-menu-item {{request()->routeIs('admin.log.viewer') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.log.viewer')}}" target="_blank">
|
|
<span class="site-menu-title">系统运行</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.tools.decompile', 'admin.tools.convert', 'admin.tools.import', 'admin.tools.analysis'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.tools.*') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-briefcase" aria-hidden="true"></i>
|
|
<span class="site-menu-title">工具箱</span>
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.tools.decompile')
|
|
<li class="site-menu-item {{request()->routeIs('admin.tools.decompile') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.tools.decompile')}}">
|
|
<span class="site-menu-title">反解析</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.tools.convert')
|
|
<li class="site-menu-item {{request()->routeIs('admin.tools.convert') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.tools.convert')}}">
|
|
<span class="site-menu-title">格式转换</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.tools.import')
|
|
<li class="site-menu-item {{request()->routeIs('admin.tools.import') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.tools.import')}}">
|
|
<span class="site-menu-title">数据导入</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.tools.analysis')
|
|
<li class="site-menu-item {{request()->routeIs('admin.tools.analysis') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.tools.analysis')}}">
|
|
<span class="site-menu-title">日志分析</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
@canany(['admin.config.filter.index', 'admin.config', 'admin.system.index'])
|
|
<li class="site-menu-item has-sub {{request()->routeIs('admin.config.*', 'admin.system.index') ? 'active open' : ''}}">
|
|
<a href="javascript:void(0)">
|
|
<i class="site-menu-icon wb-settings" aria-hidden="true"></i>
|
|
<span class="site-menu-title">设置</span>
|
|
</a>
|
|
<ul class="site-menu-sub">
|
|
@can('admin.config.filter.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.config.filter.index') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.config.filter.index')}}">
|
|
<span class="site-menu-title">邮箱后缀管理</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.config')
|
|
<li class="site-menu-item {{request()->routeIs('admin.config.common.*') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.config')}}">
|
|
<span class="site-menu-title">通用配置</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
@can('admin.system.index')
|
|
<li class="site-menu-item {{request()->routeIs('admin.system.index') ? 'active open' : ''}}">
|
|
<a href="{{route('admin.system.index')}}">
|
|
<span class="site-menu-title">系统设置</span>
|
|
</a>
|
|
</li>
|
|
@endcan
|
|
</ul>
|
|
</li>
|
|
@endcanany
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="page">
|
|
<!--[if lt IE 8]>
|
|
<p class="browserupgrade">您正在使用 <strong>过时/老旧</strong> 的浏览器。 为了您的使用体验,请
|
|
<a href="http://browsehappy.com/">升级您的浏览器</a> <br/>You are using an <strong>outdated</strong> browser. Please
|
|
<a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.
|
|
</p>
|
|
<![endif]-->
|
|
@yield('content')
|
|
</div>
|
|
@endsection
|
|
@section('layout_javascript')
|
|
<!--[if lt IE 11]>
|
|
<script src="/assets/custom/sweetalert2/polyfill.min.js"></script>
|
|
<![endif]-->
|
|
<script src="/assets/custom/sweetalert2/sweetalert2.all.min.js"></script>
|
|
@yield('javascript')
|
|
@endsection |