index.blade.php 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. @extends('admin.table_layouts')
  2. @section('content')
  3. <div class="page-content container-fluid">
  4. <x-admin.table-panel :title="trans('admin.menu.rule.list')" :theads="['#', trans('model.rule.attribute'), trans('model.rule.name'), trans('model.rule.pattern'), trans('common.action')]" :count="trans('admin.rule.counts', ['num' => $rules->total()])" :pagination="$rules->links()" :delete-config="['url' => route('admin.rule.destroy', 'PLACEHOLDER'), 'attribute' => trans('model.rule.attribute'), 'nameColumn' => 2]">
  5. @can('admin.rule.store')
  6. <x-slot:actions>
  7. <button class="btn btn-outline-primary" data-toggle="modal" data-target="#add">
  8. <i class="icon wb-plus" aria-hidden="true"></i> {{ trans('common.add') }}
  9. </button>
  10. </x-slot:actions>
  11. @endcan
  12. <x-slot:filters>
  13. <x-admin.filter.selectpicker class="col-xxl-1 col-md-3 col-4" name="type" :title="trans('model.rule.attribute')" :options="[
  14. 1 => trans('admin.rule.type.reg'),
  15. 2 => trans('admin.rule.type.domain'),
  16. 3 => trans('admin.rule.type.ip'),
  17. 4 => trans('admin.rule.type.protocol'),
  18. ]" />
  19. </x-slot:filters>
  20. <x-slot:tbody>
  21. @foreach ($rules as $rule)
  22. <tr>
  23. <td> {{ $rule->id }} </td>
  24. <td> {!! $rule->type_label !!} </td>
  25. <td>
  26. <input class="form-control" id="name_{{ $rule->id }}" name="name" type="text" value="{{ $rule->name }}" />
  27. </td>
  28. <td>
  29. <input class="form-control" id="pattern_{{ $rule->id }}" name="pattern" type="text" value="{{ $rule->pattern }}" />
  30. </td>
  31. <td>
  32. @canany(['admin.rule.update', 'admin.rule.destroy'])
  33. <div class="btn-group">
  34. @can('admin.rule.update')
  35. <button class="btn btn-sm btn-outline-primary" onclick="editRule('{{ $rule->id }}')">
  36. <i class="icon wb-edit"></i></button>
  37. @endcan
  38. @can('admin.rule.destroy')
  39. <button class="btn btn-sm btn-outline-danger" data-action="delete">
  40. <i class="icon wb-trash"></i></button>
  41. @endcan
  42. </div>
  43. @endcanany
  44. </td>
  45. </tr>
  46. @endforeach
  47. </x-slot:tbody>
  48. </x-admin.table-panel>
  49. </div>
  50. @can('admin.rule.store')
  51. <x-ui.modal id="add" form :title="trans('admin.action.add_item', ['attribute' => trans('model.rule.attribute')])" size="simple" position="center">
  52. <form class="modal-body form-horizontal" action="#" method="post">
  53. <div class="alert alert-danger" id="msg" style="display: none;"></div>
  54. <x-admin.form.select name="type" :label="trans('model.rule.attribute')" :options="[
  55. 1 => trans('admin.rule.type.reg'),
  56. 2 => trans('admin.rule.type.domain'),
  57. 3 => trans('admin.rule.type.ip'),
  58. 4 => trans('admin.rule.type.protocol'),
  59. ]" />
  60. <x-admin.form.input name="name" :label="trans('model.rule.name')" required />
  61. <x-admin.form.textarea name="pattern" :label="trans('model.rule.pattern')" input_grid="col-sm-8" required />
  62. </form>
  63. <x-slot:actions>
  64. <button class="btn btn-primary" type="button" onclick="addRule()">{{ trans('common.add') }}</button>
  65. </x-slot:actions>
  66. </x-ui.modal>
  67. @endcan
  68. @endsection
  69. @push('javascript')
  70. <script>
  71. @can('admin.rule.store')
  72. // 添加规则
  73. function addRule() {
  74. const data = collectFormData('#add form');
  75. ajaxPost("{{ route('admin.rule.store') }}", data, {
  76. success: function(ret) {
  77. handleResponse(ret, {
  78. showMessage: false,
  79. onSuccess: function() {
  80. $("#add").modal("hide");
  81. }
  82. });
  83. },
  84. error: function(xhr) {
  85. handleErrors(xhr, {
  86. default: 'element',
  87. form: '#add form',
  88. element: '#msg'
  89. });
  90. }
  91. });
  92. }
  93. @endcan
  94. @can('admin.rule.update')
  95. // 编辑规则
  96. function editRule(id) {
  97. ajaxPut(jsRoute('{{ route('admin.rule.update', 'PLACEHOLDER') }}', id), {
  98. name: $(`#name_${id}`).val(),
  99. pattern: $(`#pattern_${id}`).val()
  100. }, {
  101. error: function(xhr) {
  102. handleErrors(xhr, {
  103. form: 'tr:has(#name_' + id + ')'
  104. });
  105. }
  106. });
  107. }
  108. @endcan
  109. </script>
  110. @endpush