From e12dead6c8c5dd7d78b813a2418f229005e960a8 Mon Sep 17 00:00:00 2001 From: wolfcode Date: Thu, 17 Jul 2025 18:17:09 +0800 Subject: [PATCH] feat(admin): add role filter functionality- Implement role-based filtering for admin list - Add sidebar with role options for filtering - Update table to support 'find_in_set' operation for filtering-Enhance user experience by adding 'Reset' functionality --- app/admin/view/system/admin/index.html | 35 ++++++++++++++++++----- app/common/controller/AdminController.php | 4 +++ public/static/admin/js/system/admin.js | 21 +++++++++++++- 3 files changed, 52 insertions(+), 8 deletions(-) diff --git a/app/admin/view/system/admin/index.html b/app/admin/view/system/admin/index.html index e895a25..c9fbf88 100644 --- a/app/admin/view/system/admin/index.html +++ b/app/admin/view/system/admin/index.html @@ -1,12 +1,33 @@
- -
+ +
+
+
+

角色列表

+
    +
  • +
    全部
    +
  • + {volist name="auth_list" id="vo"} +
  • +
    {$vo}
    +
  • + {/volist} +
+
+
+
+ +
+
+
+
diff --git a/app/common/controller/AdminController.php b/app/common/controller/AdminController.php index a08e6a2..01d0d5a 100644 --- a/app/common/controller/AdminController.php +++ b/app/common/controller/AdminController.php @@ -7,6 +7,7 @@ use app\admin\traits\Curd; use app\BaseController; use app\common\constants\AdminConstant; use app\common\traits\JumpTrait; +use think\facade\Db; use think\facade\View; use think\helper\Str; use think\response\Json; @@ -199,6 +200,9 @@ class AdminController extends BaseController case 'in': $where[] = [$key, 'IN', $val]; break; + case 'find_in_set': + $where[] = ['', 'exp', Db::raw("FIND_IN_SET(:param,$key)", ['param' => $val])]; + break; case 'range': [$beginTime, $endTime] = explode(' - ', $val); $where[] = [$key, '>=', strtotime($beginTime)]; diff --git a/public/static/admin/js/system/admin.js b/public/static/admin/js/system/admin.js index 8489913..bfb90b7 100644 --- a/public/static/admin/js/system/admin.js +++ b/public/static/admin/js/system/admin.js @@ -16,7 +16,7 @@ define(["jquery", "easy-admin"], function ($, ea) { index: function () { - ea.table.render({ + let _table = ea.table.render({ init: init, cols: [[ {type: "checkbox"}, @@ -58,6 +58,25 @@ define(["jquery", "easy-admin"], function ($, ea) { ]], }); + $('body').on('click', '[data-table-reset]', function () { + $('.layui-menu li').removeClass('layui-menu-item-checked').animate( + {}, 0, () => $('.layui-menu li:eq(0)').addClass('layui-menu-item-checked') + ) + }) + layui.util.on({ + authSearch: function (e) { + let auth_id = $(this).data('auth_id') + $('.layui-menu li').removeClass('layui-menu-item-checked').animate( + {}, 0, () => $(this).parents('li').addClass('layui-menu-item-checked') + ) + let _where = auth_id ? { + filter: JSON.stringify({auth_ids: auth_id}), + op: JSON.stringify({auth_ids: 'find_in_set'}) + } : {} + _table.reload({where: _where}) + }, + }) + ea.listen(); }, add: function () {