index.blade.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. @extends('admin.layouts')
  2. @section('css')
  3. <link href="/assets/global/vendor/bootstrap-table/bootstrap-table.min.css" rel="stylesheet">
  4. @endsection
  5. @section('content')
  6. <div class="page-content container-fluid">
  7. <div class="panel">
  8. <div class="panel-heading">
  9. <h3 class="panel-title">{{ trans('admin.aff.title') }}</h3>
  10. </div>
  11. <div class="panel-body">
  12. <form class="form-row">
  13. <div class="form-group col-lg-2 col-sm-4">
  14. <input type="text" class="form-control" name="username" value="{{Request::query('username')}}" placeholder="{{ trans('model.user.username') }}"/>
  15. </div>
  16. <div class="form-group col-lg-2 col-sm-4">
  17. <select class="form-control" name="status" id="status" onchange="this.form.submit()">
  18. <option value="" hidden>{{ trans('common.status.attribute') }}</option>
  19. <option value="-1">{{ trans('common.status.rejected') }}</option>
  20. <option value="0">{{ trans('common.status.review') }}</option>
  21. <option value="1">{{ trans('common.status.reviewed') }}</option>
  22. <option value="2">{{ trans('common.status.paid') }}</option>
  23. </select>
  24. </div>
  25. <div class="form-group col-lg-1 col-sm-4 btn-group">
  26. <button type="submit" class="btn btn-primary">{{ trans('common.search') }}</button>
  27. <a href="{{route('admin.aff.index')}}" class="btn btn-danger">{{ trans('common.reset') }}</a>
  28. </div>
  29. </form>
  30. <table class="text-md-center" data-toggle="table" data-mobile-responsive="true">
  31. <thead class="thead-default">
  32. <tr>
  33. <th> #</th>
  34. <th> {{ trans('model.referral.created_at') }}</th>
  35. <th> {{ trans('model.referral.user') }}</th>
  36. <th> {{ trans('model.referral.amount') }}</th>
  37. <th> {{ trans('common.status.attribute') }}</th>
  38. <th> {{ trans('model.aff.updated_at') }}</th>
  39. <th> {{ trans('common.action') }}</th>
  40. </tr>
  41. </thead>
  42. <tbody>
  43. @foreach($applyList as $apply)
  44. <tr>
  45. <td> {{$apply->id}} </td>
  46. <td> {{$apply->created_at}} </td>
  47. <td>
  48. @if(empty($apply->user))
  49. 【{{trans('common.deleted_item', ['attribute' => trans('common.account')])}}】
  50. @else
  51. @can('admin.user.index')
  52. <a href="{{route('admin.user.index', ['id'=>$apply->user_id])}}" target="_blank">
  53. {{$apply->user->username}}
  54. </a>
  55. @else
  56. {{$apply->user->username}}
  57. @endcan
  58. @endif
  59. </td>
  60. <td> {{$apply->amount_tag}} </td>
  61. <td>
  62. @if($apply->status === -1)
  63. <span class="badge badge-lg badge-danger"> {{ trans('common.status.rejected') }} </span>
  64. @elseif($apply->status === 0)
  65. <span class="badge badge-lg badge-info"> {{ trans('common.status.review') }} </span>
  66. @elseif($apply->status === 2)
  67. <span class="badge badge-lg badge-success"> {{ trans('common.status.paid') }} </span>
  68. @else
  69. <span class="badge badge-lg badge-default"> {{ trans('common.status.payment_pending') }} </span>
  70. @endif
  71. </td>
  72. <td> {{$apply->created_at === $apply->updated_at ? '' : $apply->updated_at}} </td>
  73. <td>
  74. @canany(['admin.aff.setStatus', 'admin.aff.detail'])
  75. <div class="btn-group">
  76. @can('admin.aff.setStatus')
  77. @if($apply->status === 0)
  78. <a href="javascript:setStatus('{{$apply->id}}','1')" class="btn btn-sm btn-success">
  79. <i class="icon wb-check" aria-hidden="true"></i>{{ trans('common.status.pass') }}
  80. </a>
  81. <a href="javascript:setStatus('{{$apply->id}}','-1')" class="btn btn-sm btn-danger">
  82. <i class="icon wb-close" aria-hidden="true"></i>{{ trans('common.status.reject') }}
  83. </a>
  84. @elseif($apply->status === 1)
  85. @can('admin.user.updateCredit')
  86. <a href="javascript:handleUserCredit('{{$apply->user->id}}','{{$apply->amount}}', '{{$apply->id}}','2')" class="btn
  87. btn-sm
  88. btn-success">
  89. <i id="makePayment_{{$apply->id}}" class="icon wb-payment"
  90. aria-hidden="true"></i> {{ trans('common.status.send_to_credit') }}
  91. </a>
  92. @endcan
  93. <a href="javascript:setStatus('{{$apply->id}}', '2')" class="btn btn-sm btn-primary">
  94. <i class="icon wb-check-circle" aria-hidden="true"></i> {{ trans('common.status.paid') }}
  95. </a>
  96. @endif
  97. @endcan
  98. @can('admin.aff.detail')
  99. <a href="{{route('admin.aff.detail', $apply->id)}}" class="btn btn-sm btn-default">
  100. <i class="icon wb-search"></i></a>
  101. @endcan
  102. </div>
  103. @endcanany
  104. </td>
  105. </tr>
  106. @endforeach
  107. </tbody>
  108. </table>
  109. </div>
  110. <div class="panel-footer">
  111. <div class="row">
  112. <div class="col-sm-4">
  113. {!! trans('admin.aff.apply_counts', ['num' => $applyList->total()]) !!}
  114. </div>
  115. <div class="col-sm-8">
  116. <nav class="Page navigation float-right">
  117. {{$applyList->links()}}
  118. </nav>
  119. </div>
  120. </div>
  121. </div>
  122. </div>
  123. </div>
  124. @endsection
  125. @section('javascript')
  126. <script src="/assets/global/vendor/bootstrap-table/bootstrap-table.min.js"></script>
  127. <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js"></script>
  128. <script>
  129. $(document).ready(function() {
  130. $('#status').val({{Request::query('status')}});
  131. });
  132. @can('admin.aff.setStatus')
  133. // 更改状态
  134. function setStatus(id, status) {
  135. $.ajax({
  136. method: 'PUT',
  137. url: '{{route('admin.aff.setStatus','')}}/' + id,
  138. data: {
  139. _token: '{{csrf_token()}}',
  140. status: status,
  141. },
  142. dataType: 'json',
  143. success: function(ret) {
  144. if (ret.status === 'success') {
  145. swal.fire({
  146. title: ret.message,
  147. icon: 'success',
  148. timer: 1000,
  149. showConfirmButton: false,
  150. }).then(() => window.location.reload());
  151. } else {
  152. swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
  153. }
  154. },
  155. error: function(data) {
  156. let str = '';
  157. const errors = data.responseJSON;
  158. if ($.isEmptyObject(errors) === false) {
  159. $.each(errors.errors, function(index, value) {
  160. str += '<li>' + value + '</li>';
  161. });
  162. swal.fire({
  163. title: '{{ trans('admin.hint') }}',
  164. html: str,
  165. icon: 'error',
  166. confirmButtonText: '{{ trans('common.confirm') }}',
  167. });
  168. }
  169. },
  170. });
  171. }
  172. @endcan
  173. @can('admin.user.updateCredit')
  174. // 余额充值
  175. function handleUserCredit(uid, amount, aid, status) {
  176. $.ajax({
  177. url: '{{route('admin.user.updateCredit', '')}}/' + uid,
  178. method: 'POST',
  179. data: {_token: '{{csrf_token()}}', amount: amount, description: '{{ trans('admin.aff.referral') }}'},
  180. beforeSend: function() {
  181. $('#makePayment_' + aid).removeClass('wb-payment').addClass('wb-loop icon-spin');
  182. },
  183. success: function(ret) {
  184. if (ret.status === 'success') {
  185. swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => {
  186. setStatus(aid, status);
  187. });
  188. } else {
  189. swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
  190. }
  191. },
  192. error: function() {
  193. $('#msg').show().html('{{ trans('common.request_failed') }}');
  194. },
  195. complete: function() {
  196. },
  197. });
  198. }
  199. @endcan
  200. </script>
  201. @endsection