invite.blade.php 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. @extends('admin.table_layouts')
  2. @section('content')
  3. <div class="page-content container-fluid">
  4. <div class="row">
  5. <div class="col-md-4">
  6. <div class="card">
  7. <div class="card-block">
  8. <h4 class="card-title cyan-600"><i class="icon wb-plus"></i>
  9. {{ trans('common.generate_item', ['attribute' => trans('user.invite.attribute')]) }}
  10. </h4>
  11. <x-alert type="info" :message="trans('user.invite.tips', ['num' => 10, 'days' => sysConfig('user_invite_days')])" />
  12. @can('admin.invite.create')
  13. <button class="btn btn-primary btn-animate btn-animate-side" type="button" onclick="makeInvite()">
  14. <i class="icon wb-plus"></i> {{ trans('common.generate') }}
  15. </button>
  16. @endcan
  17. </div>
  18. </div>
  19. </div>
  20. <div class="col-md-8">
  21. <div class="panel">
  22. <div class="panel-heading">
  23. <h4 class="panel-title cyan-600">
  24. <i class="icon wb-extension"></i>{{ trans('user.invite.attribute') }}
  25. </h4>
  26. @can('admin.invite.export')
  27. <div class="panel-actions">
  28. <button class="btn btn-primary" onclick="exportInvite()">{{ trans('admin.massive_export') }}</button>
  29. </div>
  30. @endcan
  31. </div>
  32. <div class="panel-body">
  33. <table class="text-md-center" data-toggle="table" data-mobile-responsive="true">
  34. <thead class="thead-default">
  35. <tr>
  36. <th> #</th>
  37. <th> {{ trans('user.invite.attribute') }} </th>
  38. <th> {{ trans('common.available_date') }} </th>
  39. <th> {{ trans('user.inviter') }}</th>
  40. <th> {{ trans('common.status.attribute') }} </th>
  41. <th> {{ trans('user.invitee') }} </th>
  42. </tr>
  43. </thead>
  44. <tbody>
  45. @foreach ($inviteList as $invite)
  46. <tr>
  47. <td> {{ $invite->id }} </td>
  48. <td>
  49. <a class="mt-clipboard" data-clipboard-action="copy"
  50. data-clipboard-text="{{ route('register', ['code' => $invite->code]) }}"
  51. href="javascript:void(0)">{{ $invite->code }}</a>
  52. </td>
  53. <td> {{ $invite->dateline }} </td>
  54. <td>
  55. {{ $invite->inviter_id === null ? trans('admin.system_generate') : $invite->inviter->username ?? '【' . trans('common.deleted_item', ['attribute' => trans('common.account')]) . '】' }}
  56. </td>
  57. <td>
  58. {!! $invite->status_label !!}
  59. </td>
  60. <td>
  61. {{ $invite->status === 1 ? $invite->invitee->username ?? '【' . trans('common.deleted_item', ['attribute' => trans('common.account')]) . '】' : '' }}
  62. </td>
  63. </tr>
  64. @endforeach
  65. </tbody>
  66. </table>
  67. </div>
  68. <div class="panel-footer">
  69. <div class="row">
  70. <div class="col-md-4">
  71. {!! trans('user.invite.counts', ['num' => $inviteList->total()]) !!}
  72. </div>
  73. <div class="col-md-8">
  74. <nav class="Page navigation float-right">
  75. {{ $inviteList->links() }}
  76. </nav>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. </div>
  83. </div>
  84. @endsection
  85. @push('javascript')
  86. <script src="/assets/custom/clipboardjs/clipboard.min.js"></script>
  87. <script>
  88. @can('admin.invite.create')
  89. // 生成邀请码
  90. function makeInvite() {
  91. $.ajax({
  92. method: 'POST',
  93. url: '{{ route('admin.invite.create') }}',
  94. dataType: 'json',
  95. data: {
  96. _token: '{{ csrf_token() }}'
  97. },
  98. success: function(ret) {
  99. if (ret.status === 'success') {
  100. swal.fire({
  101. title: ret.message,
  102. icon: 'success',
  103. timer: 1000,
  104. showConfirmButton: false,
  105. }).then(() => window.location.reload());
  106. } else {
  107. swal.fire({
  108. title: ret.message,
  109. icon: 'error'
  110. }).then(() => window.location.reload());
  111. }
  112. },
  113. });
  114. return false;
  115. }
  116. @endcan
  117. @can('admin.invite.export')
  118. // 导出邀请码
  119. function exportInvite() {
  120. swal.fire({
  121. title: '{{ trans('admin.hint') }}',
  122. text: '{{ trans('admin.confirm.export') }}',
  123. icon: 'question',
  124. showCancelButton: true,
  125. cancelButtonText: '{{ trans('common.close') }}',
  126. confirmButtonText: '{{ trans('common.confirm') }}',
  127. }).then((result) => {
  128. if (result.value) {
  129. window.location.href = '{{ route('admin.invite.export') }}';
  130. }
  131. });
  132. }
  133. @endcan
  134. const clipboard = new ClipboardJS('.mt-clipboard');
  135. clipboard.on('success', function() {
  136. swal.fire({
  137. title: '{{ trans('common.copy.success') }}',
  138. icon: 'success',
  139. timer: 1300,
  140. showConfirmButton: false,
  141. });
  142. });
  143. clipboard.on('error', function() {
  144. swal.fire({
  145. title: '{{ trans('common.copy.failed') }}',
  146. icon: 'error',
  147. timer: 1500,
  148. showConfirmButton: false,
  149. });
  150. });
  151. </script>
  152. @endpush