layouts.blade.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  1. @extends('_layout')
  2. @section('title', sysConfig('website_name'))
  3. @section('layout_css')
  4. @yield('css')
  5. @endsection
  6. @section('body_class', 'dashboard')
  7. @section('layout_content')
  8. <nav class="site-navbar navbar navbar-default navbar-fixed-top navbar-mega {{config('theme.navbar.inverse')}} {{config('theme.navbar.skin')}}" role="navigation">
  9. <div class="navbar-header">
  10. <button type="button" class="navbar-toggler hamburger hamburger-close navbar-toggler-left hided" data-toggle="menubar">
  11. <span class="sr-only">{{trans('common.toggle_action', ['action' => trans('common.function.navigation')])}}</span>
  12. <span class="hamburger-bar"></span>
  13. </button>
  14. <button type="button" class="navbar-toggler collapsed" data-target="#site-navbar-collapse" data-toggle="collapse">
  15. <i class="icon wb-more-horizontal" aria-hidden="true"></i>
  16. </button>
  17. <div class="navbar-brand navbar-brand-center">
  18. <img src="{{sysConfig('website_logo')? asset(sysConfig('website_logo')) :'/assets/images/logo64.png'}}" class="navbar-brand-logo" alt="logo"/>
  19. <span class="navbar-brand-text hidden-xs-down"> {{sysConfig('website_name')}}</span>
  20. </div>
  21. </div>
  22. <div class="navbar-container container-fluid">
  23. <div class="collapse navbar-collapse navbar-collapse-toolbar" id="site-navbar-collapse">
  24. <ul class="nav navbar-toolbar">
  25. <li class="nav-item hidden-float" id="toggleMenubar">
  26. <a class="nav-link" data-toggle="menubar" href="#" role="button">
  27. <i class="icon hamburger hamburger-arrow-left">
  28. <span class="sr-only">{{trans('common.toggle_action', ['action' => trans('common.function.menubar')])}}</span>
  29. <span class="hamburger-bar"></span>
  30. </i>
  31. </a>
  32. </li>
  33. <li class="nav-item hidden-sm-down">
  34. <a class="nav-link icon icon-fullscreen" data-toggle="fullscreen" href="#" role="button">
  35. <span class="sr-only">{{trans('common.toggle_action', ['action' => trans('common.function.fullscreen')])}}</span>
  36. </a>
  37. </li>
  38. </ul>
  39. <ul class="nav navbar-toolbar navbar-right navbar-toolbar-right">
  40. <li class="nav-item dropdown">
  41. <a class="nav-link navbar-avatar" data-toggle="dropdown" href="#" aria-expanded="false" data-animation="scale-up" role="button">
  42. <span class="avatar avatar-online">
  43. <img src="/assets/images/avatar.svg" alt="..."/>
  44. <i></i>
  45. </span>
  46. </a>
  47. <div class="dropdown-menu" role="menu">
  48. <a class="dropdown-item" href="{{route('home')}}" role="menuitem">
  49. <i class="icon wb-settings" aria-hidden="true"></i>
  50. 个人中心
  51. </a>
  52. <div class="dropdown-divider" role="presentation"></div>
  53. <a class="dropdown-item" href="{{route('logout')}}" role="menuitem">
  54. <i class="icon wb-power" aria-hidden="true"></i>
  55. {{trans('auth.logout')}}
  56. </a>
  57. </div>
  58. </li>
  59. </ul>
  60. </div>
  61. </div>
  62. </nav>
  63. <div class="site-menubar {{config('theme.sidebar')}}">
  64. <div class="site-menubar-body">
  65. <ul class="site-menu" data-plugin="menu">
  66. @can('admin.index')
  67. <li class="site-menu-item {{request()->routeIs('admin.index') ? 'active open' : ''}}">
  68. <a href="{{route('admin.index')}}">
  69. <i class="site-menu-icon wb-dashboard" aria-hidden="true"></i>
  70. <span class="site-menu-title">管理中心</span>
  71. </a>
  72. </li>
  73. @endcan
  74. @canany(['admin.user.index', 'admin.user.group.index', 'admin.log.credit', 'admin.subscribe.index'])
  75. <li class="site-menu-item has-sub {{request()->routeIs('admin.user.*', 'admin.log.credit', 'admin.subscribe.*') ? 'active open' : ''}}">
  76. <a href="javascript:void(0)">
  77. <i class="site-menu-icon wb-user" aria-hidden="true"></i>
  78. <span class="site-menu-title">用户系统</span>
  79. </a>
  80. <ul class="site-menu-sub">
  81. @can('admin.user.index')
  82. <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' : ''}}">
  83. <a href="{{route('admin.user.index')}}">
  84. <span class="site-menu-title">用户管理</span>
  85. </a>
  86. </li>
  87. @endcan
  88. @can('admin.user.group.index')
  89. <li class="site-menu-item {{request()->routeIs('admin.user.group.*') ? 'active open' : ''}}">
  90. <a href="{{route('admin.user.group.index')}}">
  91. <span class="site-menu-title">用戶分组</span>
  92. </a>
  93. </li>
  94. @endcan
  95. @can('admin.log.credit')
  96. <li class="site-menu-item {{request()->routeIs('admin.log.credit') ? 'active open' : ''}}">
  97. <a href="{{route('admin.log.credit')}}">
  98. <span class="site-menu-title">余额变动</span>
  99. </a>
  100. </li>
  101. @endcan
  102. @can('admin.subscribe.index')
  103. <li class="site-menu-item {{request()->routeIs('admin.subscribe.*')? 'active open' : ''}}">
  104. <a href="{{route('admin.subscribe.index')}}">
  105. <span class="site-menu-title">订阅管理</span>
  106. </a>
  107. </li>
  108. @endcan
  109. </ul>
  110. </li>
  111. @endcanany
  112. @canany(['admin.permission.index', 'admin.role.index'])
  113. <li class="site-menu-item has-sub {{request()->routeIs('admin.permission.*', 'admin.role.*') ? 'active open' : ''}}">
  114. <a href="javascript:void(0)">
  115. <i class="site-menu-icon wb-users" aria-hidden="true"></i>
  116. <span class="site-menu-title">权限系统</span>
  117. </a>
  118. <ul class="site-menu-sub">
  119. @can('admin.permission.index')
  120. <li class="site-menu-item {{request()->routeIs('admin.permission.*') ? 'active open' : ''}}">
  121. <a href="{{route('admin.permission.index')}}">
  122. <span class="site-menu-title">权限列表</span>
  123. </a>
  124. </li>
  125. @endcan
  126. @can('admin.role.index')
  127. <li class="site-menu-item {{request()->routeIs('admin.role.*') ? 'active open' : ''}}">
  128. <a href="{{route('admin.role.index')}}">
  129. <span class="site-menu-title">角色列表</span>
  130. </a>
  131. </li>
  132. @endcan
  133. </ul>
  134. </li>
  135. @endcanany
  136. @canany(['admin.ticket.index', 'admin.article.index', 'admin.marketing.push', 'admin.marketing.email'])
  137. <li class="site-menu-item has-sub {{request()->routeIs('admin.ticket.*', 'admin.article.*', 'admin.marketing.*')? 'active open' : ''}}">
  138. <a href="javascript:void(0)">
  139. <i class="site-menu-icon wb-chat-working" aria-hidden="true"></i>
  140. <span class="site-menu-title">客服系统</span>
  141. @can('admin.ticket.index')
  142. @php
  143. $openTicket = App\Models\Ticket::whereStatus(0)->count()
  144. @endphp
  145. @if($openTicket > 0)
  146. <div class="site-menu-badge">
  147. <span class="badge badge-pill badge-success">{{$openTicket}}</span>
  148. </div>
  149. @endif
  150. @endcan
  151. </a>
  152. <ul class="site-menu-sub">
  153. @can('admin.ticket.index')
  154. <li class="site-menu-item {{request()->routeIs('admin.ticket.*') ? 'active open' : ''}}">
  155. <a href="{{route('admin.ticket.index')}}">
  156. <span class="site-menu-title">服务工单</span>
  157. @if($openTicket > 0)
  158. <div class="site-menu-label">
  159. <span class="badge badge-danger badge-round mr-25">{{$openTicket}}</span>
  160. </div>
  161. @endif
  162. </a>
  163. </li>
  164. @endcan
  165. @can('admin.article.index')
  166. <li class="site-menu-item {{request()->routeIs('admin.article.*')? 'active open' : ''}}">
  167. <a href="{{route('admin.article.index')}}">
  168. <span class="site-menu-title">文章管理</span>
  169. </a>
  170. </li>
  171. @endcan
  172. @can('admin.marketing.push')
  173. <li class="site-menu-item {{request()->routeIs('admin.marketing.push') ? 'active open' : ''}}">
  174. <a href="{{route('admin.marketing.push')}}">
  175. <span class="site-menu-title">消息推送</span>
  176. </a>
  177. </li>
  178. @endcan
  179. @can('admin.marketing.email')
  180. <li class="site-menu-item {{request()->routeIs('admin.marketing.email') ? 'active open' : ''}}">
  181. <a href="{{route('admin.marketing.email')}}">
  182. <span class="site-menu-title">邮件群发</span>
  183. </a>
  184. </li>
  185. @endcan
  186. </ul>
  187. </li>
  188. @endcanany
  189. @canany(['admin.node.index', 'admin.node.auth.index', 'admin.node.cert.index'])
  190. <li class="site-menu-item has-sub {{request()->routeIs('admin.node.*') ? 'active open' : ''}}">
  191. <a href="javascript:void(0)">
  192. <i class="site-menu-icon wb-grid-4" aria-hidden="true"></i>
  193. <span class="site-menu-title">线路系统</span>
  194. </a>
  195. <ul class="site-menu-sub">
  196. @can('admin.node.index')
  197. <li class="site-menu-item {{request()->routeIs('admin.node.index', 'admin.node.create', 'admin.node.edit')? 'active open' : ''}}">
  198. <a href="{{route('admin.node.index')}}">
  199. <span class="site-menu-title">线路管理</span>
  200. </a>
  201. </li>
  202. @endcan
  203. @can('admin.node.auth.index')
  204. <li class="site-menu-item {{request()->routeIs('admin.node.auth.*') ? 'active open' : ''}}">
  205. <a href="{{route('admin.node.auth.index')}}">
  206. <span class="site-menu-title">线路授权</span>
  207. </a>
  208. </li>
  209. @endcan
  210. @can('admin.node.cert.index')
  211. <li class="site-menu-item {{request()->routeIs('admin.node.cert.*') ? 'active open' : ''}}">
  212. <a href="{{route('admin.node.cert.index')}}">
  213. <span class="site-menu-title">证书列表</span>
  214. </a>
  215. </li>
  216. @endcan
  217. </ul>
  218. </li>
  219. @endcanany
  220. @canany(['admin.rule.index', 'admin.rule.group.index', 'admin.rule.log'])
  221. <li class="site-menu-item has-sub {{request()->routeIs('admin.rule.*') ? 'active open' : ''}}">
  222. <a href="javascript:void(0)">
  223. <i class="site-menu-icon wb-eye" aria-hidden="true"></i>
  224. <span class="site-menu-title">审计规则</span>
  225. </a>
  226. <ul class="site-menu-sub">
  227. @can('admin.rule.index')
  228. <li class="site-menu-item {{request()->routeIs('admin.rule.index') ? 'active open' : ''}}">
  229. <a href="{{route('admin.rule.index')}}">
  230. <span class="site-menu-title">规则列表</span>
  231. </a>
  232. </li>
  233. @endcan
  234. @can('admin.rule.group.index')
  235. <li class="site-menu-item {{request()->routeIs('admin.rule.group.*') ? 'active open' : ''}}">
  236. <a href="{{route('admin.rule.group.index')}}">
  237. <span class="site-menu-title">规则分组</span>
  238. </a>
  239. </li>
  240. @endcan
  241. @can('admin.rule.log')
  242. <li class="site-menu-item {{request()->routeIs('admin.rule.log') ? 'active open' : ''}}">
  243. <a href="{{route('admin.rule.log')}}">
  244. <span class="site-menu-title">触发记录</span>
  245. </a>
  246. </li>
  247. @endcan
  248. </ul>
  249. </li>
  250. @endcanany
  251. @canany(['admin.goods.index', 'admin.coupon.index', 'admin.order'])
  252. <li class="site-menu-item has-sub {{request()->routeIs('admin.goods.*', 'admin.coupon.*', 'admin.order') ? 'active open' : ''}}">
  253. <a href="javascript:void(0)">
  254. <i class="site-menu-icon wb-shopping-cart" aria-hidden="true"></i>
  255. <span class="site-menu-title">商品系统</span>
  256. </a>
  257. <ul class="site-menu-sub">
  258. @can('admin.goods.index')
  259. <li class="site-menu-item {{request()->routeIs('admin.goods.*') ? 'active open' : ''}}">
  260. <a href="{{route('admin.goods.index')}}">
  261. <span class="site-menu-title">商品管理</span>
  262. </a>
  263. </li>
  264. @endcan
  265. @can('admin.coupon.index')
  266. <li class="site-menu-item {{request()->routeIs('admin.coupon.*') ? 'active open' : ''}}">
  267. <a href="{{route('admin.coupon.index')}}">
  268. <span class="site-menu-title">卡券管理</span>
  269. </a>
  270. </li>
  271. @endcan
  272. @can('admin.order')
  273. <li class="site-menu-item {{request()->routeIs('admin.order') ? 'active open' : ''}}">
  274. <a href="{{route('admin.order')}}">
  275. <span class="site-menu-title">商品订单</span>
  276. </a>
  277. </li>
  278. @endcan
  279. </ul>
  280. </li>
  281. @endcanany
  282. @canany(['admin.invite.index', 'admin.aff.index', 'admin.aff.rebate'])
  283. <li class="site-menu-item has-sub {{request()->routeIs('admin.invite.*', 'admin.aff.*') ? 'active open' : ''}}">
  284. <a href="javascript:void(0)">
  285. <i class="site-menu-icon wb-thumb-up" aria-hidden="true"></i>
  286. <span class="site-menu-title">推广系统</span>
  287. @can('admin.aff.index')
  288. @php
  289. $openApply = App\Models\ReferralApply::whereStatus(0)->count()
  290. @endphp
  291. @if($openApply > 0)
  292. <div class="site-menu-badge">
  293. <span class="badge badge-pill badge-success">{{$openApply}}</span>
  294. </div>
  295. @endif
  296. @endcan
  297. </a>
  298. <ul class="site-menu-sub">
  299. @can('admin.invite.index')
  300. <li class="site-menu-item {{request()->routeIs('admin.invite.index') ? 'active open' : ''}}">
  301. <a href="{{route('admin.invite.index')}}">
  302. <span class="site-menu-title">邀请管理</span>
  303. </a>
  304. </li>
  305. @endcan
  306. @can('admin.aff.index')
  307. <li class="site-menu-item {{request()->routeIs('admin.aff.index', 'admin.aff.detail') ? 'active open' : ''}}">
  308. <a href="{{route('admin.aff.index')}}">
  309. <span class="site-menu-title">提现管理</span>
  310. @if($openApply > 0)
  311. <div class="site-menu-label">
  312. <span class="badge badge-danger badge-round mr-25">{{$openApply}}</span>
  313. </div>
  314. @endif
  315. </a>
  316. </li>
  317. @endcan
  318. @can('admin.aff.rebate')
  319. <li class="site-menu-item {{request()->routeIs('admin.aff.rebate') ? 'active open' : ''}}">
  320. <a href="{{route('admin.aff.rebate')}}">
  321. <span class="site-menu-title">返利流水</span>
  322. </a>
  323. </li>
  324. @endcan
  325. </ul>
  326. </li>
  327. @endcanany
  328. @canany(['admin.log.traffic', 'admin.log.flow', 'admin.log.ban', 'admin.log.ip', 'admin.log.online', 'admin.log.notify', 'admin.payment.callback'])
  329. <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' : ''}}">
  330. <a href="javascript:void(0)">
  331. <i class="site-menu-icon wb-calendar" aria-hidden="true"></i>
  332. <span class="site-menu-title">日志系统</span>
  333. </a>
  334. <ul class="site-menu-sub">
  335. @can('admin.log.traffic')
  336. <li class="site-menu-item {{request()->routeIs('admin.log.traffic') ? 'active open' : ''}}">
  337. <a href="{{route('admin.log.traffic')}}">
  338. <span class="site-menu-title">流量使用</span>
  339. </a>
  340. </li>
  341. @endcan
  342. @can('admin.log.flow')
  343. <li class="site-menu-item {{request()->routeIs('admin.log.flow') ? 'active open' : ''}}">
  344. <a href="{{route('admin.log.flow')}}">
  345. <span class="site-menu-title">流量变动</span>
  346. </a>
  347. </li>
  348. @endcan
  349. @can('admin.log.ban')
  350. <li class="site-menu-item {{request()->routeIs('admin.log.ban') ? 'active open' : ''}}">
  351. <a href="{{route('admin.log.ban')}}">
  352. <span class="site-menu-title">封禁记录</span>
  353. </a>
  354. </li>
  355. @endcan
  356. @can('admin.log.ip')
  357. <li class="site-menu-item {{request()->routeIs('admin.log.ip') ? 'active open' : ''}}">
  358. <a href="{{route('admin.log.ip')}}">
  359. <span class="site-menu-title">在线记录</span>
  360. </a>
  361. </li>
  362. @endcan
  363. @can('admin.log.online')
  364. <li class="site-menu-item {{request()->routeIs('admin.log.online') ? 'active open' : ''}}">
  365. <a href="{{route('admin.log.online')}}">
  366. <span class="site-menu-title">在线监控</span>
  367. </a>
  368. </li>
  369. @endcan
  370. @can('admin.log.notify')
  371. <li class="site-menu-item {{request()->routeIs('admin.log.notify') ? 'active open' : ''}}">
  372. <a href="{{route('admin.log.notify')}}">
  373. <span class="site-menu-title">通知记录</span>
  374. </a>
  375. </li>
  376. @endcan
  377. @can('admin.payment.callback')
  378. <li class="site-menu-item {{request()->routeIs('admin.payment.callback') ? 'active open' : ''}}">
  379. <a href="{{route('admin.payment.callback')}}">
  380. <span class="site-menu-title">支付回调</span>
  381. </a>
  382. </li>
  383. @endcan
  384. @can('admin.log.viewer')
  385. <li class="site-menu-item {{request()->routeIs('admin.log.viewer') ? 'active open' : ''}}">
  386. <a href="{{route('admin.log.viewer')}}" target="_blank">
  387. <span class="site-menu-title">系统运行</span>
  388. </a>
  389. </li>
  390. @endcan
  391. </ul>
  392. </li>
  393. @endcanany
  394. @canany(['admin.tools.decompile', 'admin.tools.convert', 'admin.tools.import', 'admin.tools.analysis'])
  395. <li class="site-menu-item has-sub {{request()->routeIs('admin.tools.*') ? 'active open' : ''}}">
  396. <a href="javascript:void(0)">
  397. <i class="site-menu-icon wb-briefcase" aria-hidden="true"></i>
  398. <span class="site-menu-title">工具箱</span>
  399. </a>
  400. <ul class="site-menu-sub">
  401. @can('admin.tools.decompile')
  402. <li class="site-menu-item {{request()->routeIs('admin.tools.decompile') ? 'active open' : ''}}">
  403. <a href="{{route('admin.tools.decompile')}}">
  404. <span class="site-menu-title">反解析</span>
  405. </a>
  406. </li>
  407. @endcan
  408. @can('admin.tools.convert')
  409. <li class="site-menu-item {{request()->routeIs('admin.tools.convert') ? 'active open' : ''}}">
  410. <a href="{{route('admin.tools.convert')}}">
  411. <span class="site-menu-title">格式转换</span>
  412. </a>
  413. </li>
  414. @endcan
  415. @can('admin.tools.import')
  416. <li class="site-menu-item {{request()->routeIs('admin.tools.import') ? 'active open' : ''}}">
  417. <a href="{{route('admin.tools.import')}}">
  418. <span class="site-menu-title">数据导入</span>
  419. </a>
  420. </li>
  421. @endcan
  422. @can('admin.tools.analysis')
  423. <li class="site-menu-item {{request()->routeIs('admin.tools.analysis') ? 'active open' : ''}}">
  424. <a href="{{route('admin.tools.analysis')}}">
  425. <span class="site-menu-title">日志分析</span>
  426. </a>
  427. </li>
  428. @endcan
  429. </ul>
  430. </li>
  431. @endcanany
  432. @canany(['admin.config.filter.index', 'admin.config', 'admin.system.index'])
  433. <li class="site-menu-item has-sub {{request()->routeIs('admin.config.*', 'admin.system.index') ? 'active open' : ''}}">
  434. <a href="javascript:void(0)">
  435. <i class="site-menu-icon wb-settings" aria-hidden="true"></i>
  436. <span class="site-menu-title">设置</span>
  437. </a>
  438. <ul class="site-menu-sub">
  439. @can('admin.config.filter.index')
  440. <li class="site-menu-item {{request()->routeIs('admin.config.filter.index') ? 'active open' : ''}}">
  441. <a href="{{route('admin.config.filter.index')}}">
  442. <span class="site-menu-title">邮箱后缀管理</span>
  443. </a>
  444. </li>
  445. @endcan
  446. @can('admin.config')
  447. <li class="site-menu-item {{request()->routeIs('admin.config.common.*') ? 'active open' : ''}}">
  448. <a href="{{route('admin.config')}}">
  449. <span class="site-menu-title">通用配置</span>
  450. </a>
  451. </li>
  452. @endcan
  453. @can('admin.system.index')
  454. <li class="site-menu-item {{request()->routeIs('admin.system.index') ? 'active open' : ''}}">
  455. <a href="{{route('admin.system.index')}}">
  456. <span class="site-menu-title">系统设置</span>
  457. </a>
  458. </li>
  459. @endcan
  460. </ul>
  461. </li>
  462. @endcanany
  463. </ul>
  464. </div>
  465. </div>
  466. <div class="page">
  467. <!--[if lt IE 8]>
  468. <p class="browserupgrade">您正在使用 <strong>过时/老旧</strong> 的浏览器。 为了您的使用体验,请
  469. <a href="http://browsehappy.com/">升级您的浏览器</a> <br/>You are using an <strong>outdated</strong> browser. Please
  470. <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.
  471. </p>
  472. <![endif]-->
  473. @yield('content')
  474. </div>
  475. @endsection
  476. @section('layout_javascript')
  477. <!--[if lt IE 11]>
  478. <script src="/assets/custom/sweetalert2/polyfill.min.js"></script>
  479. <![endif]-->
  480. <script src="/assets/custom/sweetalert2/sweetalert2.all.min.js"></script>
  481. @yield('javascript')
  482. @endsection