Add Article filters to improve admin experience

This commit is contained in:
BrettonYe
2022-12-28 10:23:33 +08:00
committed by BrettonYe
parent 36ded5ba06
commit 2e0e3de42c
3 changed files with 57 additions and 5 deletions

View File

@@ -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)

View File

@@ -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) {

View File

@@ -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({