Преглед на файлове

Add Article filters to improve admin experience

BrettonYe преди 2 години
родител
ревизия
2e0e3de42c

+ 12 - 2
app/Http/Controllers/Admin/ArticleController.php

@@ -7,15 +7,25 @@ use App\Http\Requests\Admin\ArticleRequest;
 use App\Models\Article;
 use App\Services\ArticleService;
 use Exception;
+use Illuminate\Http\Request;
 use Illuminate\Http\UploadedFile;
 use Log;
 use Str;
 
 class ArticleController extends Controller
 {
-    public function index()
+    public function index(Request $request)
     { // 文章列表
-        return view('admin.article.index', ['articles' => Article::latest()->orderByDesc('sort')->paginate()->appends(request('page'))]);
+        $categories = Article::whereNotNull('category')->distinct()->get('category');
+        $articles = Article::query();
+        foreach (['id', 'category', 'language', 'type'] as $field) {
+            $request->whenFilled($field, function ($value) use ($articles, $field) {
+                $articles->where($field, $value);
+            });
+        }
+        $articles = $articles->latest()->orderByDesc('sort')->paginate()->appends($request->except('page'));
+
+        return view('admin.article.index', compact('articles', 'categories'));
     }
 
     public function store(ArticleRequest $request)

+ 1 - 1
app/Http/Controllers/Admin/SubscribeController.php

@@ -53,7 +53,7 @@ class SubscribeController extends Controller
             $query->whereBetween('request_time', [$request->input('start').' 00:00:00', $request->input('end').' 23:59:59']);
         }
 
-        $subscribeLogs = $query->latest()->paginate(20)->appends(\request('page'));
+        $subscribeLogs = $query->latest()->paginate(20)->appends($request->except('page'));
         foreach ($subscribeLogs as $log) {
             // 跳过上报多IP的
             if ($log->request_ip) {

+ 44 - 2
resources/views/admin/article/index.blade.php

@@ -14,6 +14,40 @@
                 @endcan
             </div>
             <div class="panel-body">
+                <form class="form-row">
+                    <div class="form-group col-xxl-1 col-lg-1 col-md-1 col-sm-4">
+                        <input type="number" class="form-control" name="id" value="{{Request::query('id')}}" placeholder="ID"/>
+                    </div>
+                    <div class="form-group col-xxl-1 col-lg-3 col-md-3 col-4">
+                        <select class="form-control" id="type" name="type">
+                            <option value="" hidden>类 型</option>
+                            <option value="1">文章</option>
+                            <option value="2">公告</option>
+                        </select>
+                    </div>
+                    <div class="form-group col-xxl-1 col-lg-3 col-md-3 col-4">
+                        <select class="form-control" id="category" name="category">
+                            <option value="" hidden>分 类</option>
+                            @foreach($categories as $category)
+                                <option value="{{$category->category}}">{{$category->category}}</option>
+                            @endforeach
+                        </select>
+                    </div>
+                    <div class="form-group col-xxl-1 col-lg-3 col-md-3 col-4">
+                        <select class="form-control" id="language" name="language">
+                            <option value="" hidden>语 言</option>
+                            @foreach (config('common.language') as $key => $value)
+                                <option value="{{$key}}">
+                                    <i class="fi fi-{{$value[1]}}"></i> <span style="padding: inherit;">{{$value[0]}}</span>
+                                </option>
+                            @endforeach
+                        </select>
+                    </div>
+                    <div class="form-group col-xxl-1 col-lg-3 col-md-3 col-4 btn-group">
+                        <button type="submit" class="btn btn-primary">搜 索</button>
+                        <a href="{{route('admin.article.index')}}" class="btn btn-danger">{{trans('common.reset')}}</a>
+                    </div>
+                </form>
                 <table class="text-md-center" data-toggle="table" data-mobile-responsive="true">
                     <thead class="thead-default">
                     <tr>
@@ -61,8 +95,8 @@
                                                 <i class="icon wb-edit"></i></a>
                                         @endcan
                                         @can('admin.article.destroy')
-                                            <button class="btn btn-outline-danger" onclick="delArticle('{{route('admin.article.destroy',$article->id)}}')">
-                                                <i class="icon wb-close"></i></button>
+                                            <a class="btn btn-outline-danger" href="javascript:delArticle('{{route('admin.article.destroy',$article->id)}}')">
+                                                <i class="icon wb-close"></i></a>
                                         @endcan
                                     </div>
                                 @endcanany
@@ -92,6 +126,14 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js"></script>
     @can('admin.article.destroy')
         <script>
+          $(document).ready(function() {
+            $('#id').val('{{Request::query('id')}}');
+            $('#type').val('{{Request::query('type')}}');
+            $('#category').val('{{Request::query('category')}}');
+            $('#language').val('{{Request::query('language')}}');
+            $('select').on('change', function() { this.form.submit(); });
+          });
+
           // 删除文章
           function delArticle(url) {
             swal.fire({