nodeList.blade.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. @extends('user.layouts')
  2. @section('css')
  3. <script src="//at.alicdn.com/t/font_682457_e6aq10jsbq0yhkt9.js" type="text/javascript"></script>
  4. <link href="/assets/global/fonts/font-awesome/font-awesome.min.css" type="text/css" rel="stylesheet">
  5. <link href="/assets/global/vendor/webui-popover/webui-popover.min.css" type="text/css" rel="stylesheet">
  6. @endsection
  7. @section('content')
  8. <!-- BEGIN CONTENT BODY -->
  9. <div class="page-content container-fluid">
  10. <div class="row">
  11. @foreach($nodeList as $node)
  12. <div class="col-xxl-3 col-xl-4 col-sm-6">
  13. <div class="card card-inverse card-shadow bg-white">
  14. <div class="card-block p-30 row">
  15. <div class="col-4">
  16. <svg class="w-p100 text-center" aria-hidden="true">
  17. <use
  18. xlink:href="@if($node->country_code)#icon-{{$node->country_code}}@else #icon-un @endif"></use>
  19. </svg>
  20. </div>
  21. <div class="col-8 text-break text-right">
  22. <p class="font-size-20 blue-600">
  23. @if($node->offline)
  24. <i class="red-600 icon wb-warning" data-content="线路不稳定/维护中" data-trigger="hover"
  25. data-toggle="popover" data-placement="top"></i>
  26. @endif
  27. @if($node->traffic_rate != 1)
  28. <i class="green-600 icon wb-info-circle"
  29. data-content="{{$node->traffic_rate}} 倍流量消耗" data-trigger="hover"
  30. data-toggle="popover" data-placement="top"></i>
  31. @endif
  32. {{$node->name}}
  33. <span
  34. class="badge badge-pill font-size-10 up m-0 @if($node->labels->label_id == 1) badge-success @elseif($node->labels->label_id == 7) badge-danger @else badge-info @endif">{{$node->labels->labelInfo->name}}</span>
  35. </p>
  36. <blockquote>
  37. {{$node->desc}}
  38. </blockquote>
  39. <p class="font-size-14">
  40. <button class="btn btn-sm btn-outline-info"
  41. onclick="getInfo('{{$node->id}}','code')"><i id="code{{$node->id}}"
  42. class="icon fa-code"></i>
  43. </button>
  44. <button class="btn btn-sm btn-outline-info"
  45. onclick="getInfo('{{$node->id}}','qrcode')"><i id="qrcode{{$node->id}}"
  46. class="icon fa-qrcode"></i>
  47. </button>
  48. <button class="btn btn-sm btn-outline-info"
  49. onclick="getInfo('{{$node->id}}','text')"><i id="text{{$node->id}}"
  50. class="icon fa-list"></i>
  51. </button>
  52. </p>
  53. <p class="text-muted">
  54. <span>电信: {{$node->ct>0 ?$node->ct.' ms' :'无数据'}} </span>
  55. <span>联通: {{$node->cu>0 ?$node->cu.' ms' :'无数据'}} </span>
  56. <br>
  57. <span>移动: {{$node->cm>0 ?$node->cm.' ms' :'无数据'}} </span>
  58. <span>香港: {{$node->hk>0 ?$node->hk.' ms' :'无数据'}} </span>
  59. </p>
  60. </div>
  61. </div>
  62. </div>
  63. </div>
  64. @endforeach
  65. </div>
  66. </div>
  67. @endsection @section('script')
  68. <script src="/assets/global/vendor/matchheight/jquery.matchHeight-min.js" type="text/javascript"></script>
  69. <script src="/assets/global/js/Plugin/matchheight.js" type="text/javascript"></script>
  70. <script src="/assets/custom/Plugin/jquery-qrcode/jquery.qrcode.min.js" type="text/javascript"></script>
  71. <script src="/assets/global/js/Plugin/webui-popover.js" type="text/javascript"></script>
  72. <script type="text/javascript">
  73. $(function () {
  74. $('.card').matchHeight();
  75. });
  76. function getInfo(id, type) {
  77. const oldClass = $("#" + type + id).attr("class");
  78. $.ajax({
  79. type: "POST",
  80. url: '/nodeList',
  81. data: {_token: '{{csrf_token()}}', id: id, type: type},
  82. beforeSend: function () {
  83. $("#" + type + id).removeAttr("class").addClass("icon wb-loop icon-spin");
  84. },
  85. success: function (ret) {
  86. if (ret.status === 'success') {
  87. switch (type) {
  88. case 'code':
  89. swal.fire({
  90. html: '<textarea class="form-control" rows="8" readonly="readonly">' + ret.data + '</textarea>' +
  91. '<a href="' + ret.data + '" class="btn btn-danger btn-block mt-10">打开' + ret.title + '</a>',
  92. showConfirmButton: false
  93. });
  94. break;
  95. case 'qrcode':
  96. swal.fire({
  97. title: '{{trans('home.scan_qrcode')}}',
  98. html: '<div id="qrcode"></div>',
  99. onBeforeOpen: () => {
  100. $("#qrcode").qrcode({text: ret.data});
  101. },
  102. showConfirmButton: false
  103. });
  104. break;
  105. case 'text':
  106. swal.fire({
  107. title: '{{trans('home.setting_info')}}',
  108. html: '<textarea class="form-control" rows="12" readonly="readonly">' + ret.data + '</textarea>',
  109. showConfirmButton: false
  110. });
  111. break;
  112. default:
  113. swal.fire({title: ret.title, text: ret.data});
  114. }
  115. }
  116. },
  117. complete: function () {
  118. $("#" + type + id).removeAttr("class").addClass(oldClass);
  119. }
  120. });
  121. }
  122. </script>
  123. @endsection