diff --git a/src/admin/Bootstrap.Admin/Components/EditPageBase.cs b/src/admin/Bootstrap.Admin/Components/EditPageBase.cs index 4f8c561b..6bf0df74 100644 --- a/src/admin/Bootstrap.Admin/Components/EditPageBase.cs +++ b/src/admin/Bootstrap.Admin/Components/EditPageBase.cs @@ -34,7 +34,7 @@ namespace Bootstrap.Admin.Components /// 查询按钮回调方法 /// [Parameter] - public Func>? OnQuery { get; set; } + public Func>? OnQuery { get; set; } /// /// 获得/设置 TableHeader 实例 @@ -78,12 +78,24 @@ namespace Bootstrap.Admin.Components [Parameter] public RenderFragment? EditTemplate { get; set; } + /// + /// 获得/设置 SearchTemplate 实例 + /// + [Parameter] + public RenderFragment? SearchTemplate { get; set; } + /// /// 获得/设置 是否固定表头 默认为 false 不固定表头 /// [Parameter] public bool FixedHeader { get; set; } + /// + /// 获得/设置 是否显示搜索框 默认为 false 不显示搜索框 + /// + [Parameter] + public bool ShowSearch { get; set; } + /// /// 获得/设置 Table 实例 /// @@ -107,6 +119,12 @@ namespace Bootstrap.Admin.Components [Parameter] public Func OnSave { get; set; } = item => false; + /// + /// 重置搜索条件回调方法 + /// + [Parameter] + public Action OnResetSearch { get; set; } = () => { }; + /// /// 删除按钮回调方法 /// @@ -148,24 +166,13 @@ namespace Bootstrap.Admin.Components } } - /// - /// 查询方法 - /// - protected void Query() - { - // 查询控件按钮触发此事件 - if (OnQuery != null && Table != null) - { - Table.Query(OnQuery.Invoke(1, Table.PageItems)); - } - } - /// /// 分页查询方法 /// /// /// + /// /// - protected QueryData QueryData(int pageIndex, int pageItems) => OnQuery?.Invoke(pageIndex, pageItems) ?? new QueryData(); + protected QueryData QueryData(int pageIndex, int pageItems, string searchText) => OnQuery?.Invoke(pageIndex, pageItems, searchText) ?? new QueryData(); } } diff --git a/src/admin/Bootstrap.Admin/Components/ModalBase.cs b/src/admin/Bootstrap.Admin/Components/ModalBase.cs index e7cdf8c3..a887d8bd 100644 --- a/src/admin/Bootstrap.Admin/Components/ModalBase.cs +++ b/src/admin/Bootstrap.Admin/Components/ModalBase.cs @@ -1,6 +1,7 @@ using Bootstrap.Admin.Extensions; using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; +using System; namespace Bootstrap.Admin.Components { @@ -71,10 +72,18 @@ namespace Bootstrap.Admin.Components { if (firstRender) { - JSRuntime.InitModal(); + JSRuntime.InitModal(Id); } } + /// + /// OnParametersSet 方法 + /// + protected override void OnParametersSet() + { + if (string.IsNullOrEmpty(Id)) throw new InvalidOperationException("Modal Component Id property must be set"); + } + /// /// 输出窗口大小样式 /// diff --git a/src/admin/Bootstrap.Admin/Components/TableBase.cs b/src/admin/Bootstrap.Admin/Components/TableBase.cs index 7f8313fe..af41822f 100644 --- a/src/admin/Bootstrap.Admin/Components/TableBase.cs +++ b/src/admin/Bootstrap.Admin/Components/TableBase.cs @@ -49,6 +49,12 @@ namespace Bootstrap.Admin.Components [Parameter] public RenderFragment? EditTemplate { get; set; } + /// + /// 获得/设置 SearchTemplate 实例 + /// + [Parameter] + public RenderFragment? SearchTemplate { get; set; } + /// /// 获得/设置 表格 Toolbar 按钮模板 /// @@ -129,7 +135,7 @@ namespace Bootstrap.Admin.Components /// 点击翻页回调方法 /// [Parameter] - public Func>? OnQuery { get; set; } + public Func>? OnQuery { get; set; } /// /// 新建按钮回调方法 @@ -143,6 +149,15 @@ namespace Bootstrap.Admin.Components [Parameter] public Action? OnEdit { get; set; } + /// + /// 高级查询按钮点击时调用此方法 + /// + protected void AdvancedSearchClick() + { + // 弹出高级查询弹窗 + SearchModal?.Toggle(); + } + /// /// 保存按钮回调方法 /// @@ -178,11 +193,22 @@ namespace Bootstrap.Admin.Components /// protected Modal? ConfirmModal { get; set; } + /// + /// 高级查询弹窗 + /// + protected Modal? SearchModal { get; set; } + #nullable disable /// /// 获得/设置 EditModel 实例 /// protected TItem EditModel { get; set; } + + /// + /// 获得/设置 QueryModel 实例 + /// + [Parameter] + public TItem QueryModel { get; set; } #nullable restore /// @@ -204,7 +230,7 @@ namespace Bootstrap.Admin.Components if (OnAdd != null) EditModel = OnAdd.Invoke(); if (OnQuery != null) { - var queryData = OnQuery.Invoke(1, DefaultPageItems); + var queryData = OnQuery.Invoke(1, DefaultPageItems, SearchText); Items = queryData.Items; TotalCount = queryData.TotalCount; } @@ -215,11 +241,8 @@ namespace Bootstrap.Admin.Components /// protected override async System.Threading.Tasks.Task OnAfterRenderAsync(bool firstRender) { - if (FixedHeader) - { - // 调用客户端脚本 resetWith - await JSRuntime.InitTableAsync(RetrieveId(), firstRender); - } + // 调用客户端脚本 + await JSRuntime.InitTableAsync(RetrieveId(), firstRender); } /// @@ -336,9 +359,12 @@ namespace Bootstrap.Admin.Components StateHasChanged(); } - private void Query() + /// + /// 查询按钮调用此方法 + /// + protected void Query() { - if (OnQuery != null) Query(OnQuery.Invoke(PageIndex, PageItems)); + if (OnQuery != null) Query(OnQuery.Invoke(PageIndex, PageItems, SearchText)); } /// @@ -389,5 +415,51 @@ namespace Bootstrap.Admin.Components /// 获取 Id 字符串 /// public string RetrieveId() => $"{Id}_table"; + + /// + /// 重置搜索按钮回调方法 + /// + [Parameter] + public Action? OnResetSearch { get; set; } + + /// + /// 重置查询方法 + /// + protected void ResetSearchClick() + { + OnResetSearch?.Invoke(); + SearchClick(); + } + + /// + /// 查询方法 + /// + protected void SearchClick() + { + // 查询控件按钮触发此事件 + PageIndex = 1; + Query(); + } + + /// + /// 获得/设置 搜索关键字 + /// + [Parameter] + public string SearchText { get; set; } = ""; + + /// + /// 获得/设置 搜索关键字改变事件 + /// + [Parameter] + public EventCallback SearchTextChanged { get; set; } + + /// + /// 重置搜索按钮调用此方法 + /// + protected void ClearSearchClick() + { + SearchText = ""; + Query(); + } } } diff --git a/src/admin/Bootstrap.Admin/Extensions/JSRuntimeExtensions.cs b/src/admin/Bootstrap.Admin/Extensions/JSRuntimeExtensions.cs index 0da63861..938ad6b0 100644 --- a/src/admin/Bootstrap.Admin/Extensions/JSRuntimeExtensions.cs +++ b/src/admin/Bootstrap.Admin/Extensions/JSRuntimeExtensions.cs @@ -51,7 +51,8 @@ namespace Bootstrap.Admin.Extensions /// 修复 Modal 组件 /// /// - public static void InitModal(this IJSRuntime? jSRuntime) => jSRuntime.InvokeVoidAsync("$.initModal"); + /// + public static void InitModal(this IJSRuntime? jSRuntime, string id) => jSRuntime.InvokeVoidAsync("$.initModal", id); /// /// 修复 Modal 组件 diff --git a/src/admin/Bootstrap.Admin/Pages/Admin/Dicts.razor b/src/admin/Bootstrap.Admin/Pages/Admin/Dicts.razor index 94567e6c..714bbf0d 100644 --- a/src/admin/Bootstrap.Admin/Pages/Admin/Dicts.razor +++ b/src/admin/Bootstrap.Admin/Pages/Admin/Dicts.razor @@ -1,10 +1,10 @@ @inherits DictsBase - + - - + diff --git a/src/admin/Bootstrap.Admin/Pages/Admin/Groups.razor b/src/admin/Bootstrap.Admin/Pages/Admin/Groups.razor index 1c15e147..f7a15252 100644 --- a/src/admin/Bootstrap.Admin/Pages/Admin/Groups.razor +++ b/src/admin/Bootstrap.Admin/Pages/Admin/Groups.razor @@ -1,6 +1,6 @@ @inherits GroupsBase - + diff --git a/src/admin/Bootstrap.Admin/Pages/Admin/Menus.razor b/src/admin/Bootstrap.Admin/Pages/Admin/Menus.razor index 0fafa7d7..c3b7e874 100644 --- a/src/admin/Bootstrap.Admin/Pages/Admin/Menus.razor +++ b/src/admin/Bootstrap.Admin/Pages/Admin/Menus.razor @@ -1,6 +1,6 @@ @inherits MenusBase - + diff --git a/src/admin/Bootstrap.Admin/Pages/Admin/Roles.razor b/src/admin/Bootstrap.Admin/Pages/Admin/Roles.razor index cb1851c4..6b3f7ca9 100644 --- a/src/admin/Bootstrap.Admin/Pages/Admin/Roles.razor +++ b/src/admin/Bootstrap.Admin/Pages/Admin/Roles.razor @@ -1,6 +1,6 @@ @inherits RolesBase - + diff --git a/src/admin/Bootstrap.Admin/Pages/Admin/Users.razor b/src/admin/Bootstrap.Admin/Pages/Admin/Users.razor index a171efe4..7416ad07 100644 --- a/src/admin/Bootstrap.Admin/Pages/Admin/Users.razor +++ b/src/admin/Bootstrap.Admin/Pages/Admin/Users.razor @@ -1,6 +1,6 @@ @inherits UsersBase - + diff --git a/src/admin/Bootstrap.Admin/Pages/Components/DictsBase.cs b/src/admin/Bootstrap.Admin/Pages/Components/DictsBase.cs index 9778ad86..1178fb36 100644 --- a/src/admin/Bootstrap.Admin/Pages/Components/DictsBase.cs +++ b/src/admin/Bootstrap.Admin/Pages/Components/DictsBase.cs @@ -34,12 +34,14 @@ namespace Bootstrap.Pages.Admin.Components /// /// 页码 /// 每页显示数据条目数量 - protected override QueryData Query(int pageIndex, int pageItems) + /// + protected override QueryData Query(int pageIndex, int pageItems, string searchText) { var data = DataAccess.DictHelper.RetrieveDicts(); if (QueryModel.Define != -1) data = data.Where(d => d.Define == QueryModel.Define); if (!string.IsNullOrEmpty(QueryModel.Name)) data = data.Where(d => d.Name.Contains(QueryModel.Name, StringComparison.OrdinalIgnoreCase)); if (!string.IsNullOrEmpty(QueryModel.Category)) data = data.Where(d => d.Category.Contains(QueryModel.Category, StringComparison.OrdinalIgnoreCase)); + if (!string.IsNullOrEmpty(searchText)) data = data.Where(d => d.Category.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.Name.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.Code.Contains(searchText, StringComparison.OrdinalIgnoreCase)); var totalCount = data.Count(); var items = data.Skip((pageIndex - 1) * pageItems).Take(pageItems); return new QueryData() { Items = items, TotalCount = totalCount, PageIndex = pageIndex, PageItems = pageItems }; @@ -54,5 +56,15 @@ namespace Bootstrap.Pages.Admin.Components /// 删除方法 /// protected override bool Delete(IEnumerable items) => DataAccess.DictHelper.Delete(items.Select(item => item.Id ?? "")); + + /// + /// 重置搜索方法 + /// + protected void ResetSearch() + { + QueryModel.Define = -1; + QueryModel.Category = ""; + QueryModel.Name = ""; + } } } diff --git a/src/admin/Bootstrap.Admin/Pages/Components/GroupsBase.cs b/src/admin/Bootstrap.Admin/Pages/Components/GroupsBase.cs index 2ac7fade..6379c3af 100644 --- a/src/admin/Bootstrap.Admin/Pages/Components/GroupsBase.cs +++ b/src/admin/Bootstrap.Admin/Pages/Components/GroupsBase.cs @@ -16,11 +16,13 @@ namespace Bootstrap.Pages.Admin.Components /// /// 页码 /// 每页显示数据条目数量 - protected override QueryData Query(int pageIndex, int pageItems) + /// + protected override QueryData Query(int pageIndex, int pageItems, string searchText) { var data = GroupHelper.Retrieves(); if (!string.IsNullOrEmpty(QueryModel.GroupName)) data = data.Where(d => d.GroupName.Contains(QueryModel.GroupName, StringComparison.OrdinalIgnoreCase)); if (!string.IsNullOrEmpty(QueryModel.Description)) data = data.Where(d => d.Description != null && d.Description.Contains(QueryModel.Description, StringComparison.OrdinalIgnoreCase)); + if (!string.IsNullOrEmpty(searchText)) data = data.Where(d => d.GroupName.Contains(searchText, StringComparison.OrdinalIgnoreCase) || (d.Description ?? "").Contains(searchText, StringComparison.OrdinalIgnoreCase)); var totalCount = data.Count(); var items = data.Skip((pageIndex - 1) * pageItems).Take(pageItems); return new QueryData() { Items = items, TotalCount = totalCount, PageIndex = pageIndex, PageItems = pageItems }; @@ -36,6 +38,15 @@ namespace Bootstrap.Pages.Admin.Components /// protected override bool Delete(IEnumerable groups) => GroupHelper.Delete(groups.Select(item => item.Id ?? "")); + /// + /// 重置搜索方法 + /// + protected void ResetSearch() + { + QueryModel.GroupName = ""; + QueryModel.Description = ""; + } + /// /// 分配用户方法 /// diff --git a/src/admin/Bootstrap.Admin/Pages/Components/MenusBase.cs b/src/admin/Bootstrap.Admin/Pages/Components/MenusBase.cs index f10307a6..37cd2ff4 100644 --- a/src/admin/Bootstrap.Admin/Pages/Components/MenusBase.cs +++ b/src/admin/Bootstrap.Admin/Pages/Components/MenusBase.cs @@ -115,7 +115,8 @@ namespace Bootstrap.Pages.Admin.Components /// /// 页码 /// 每页显示数据条目数量 - protected override QueryData Query(int pageIndex, int pageItems) + /// + protected override QueryData Query(int pageIndex, int pageItems, string searchText) { var data = MenuHelper.RetrieveMenusByUserName(UserName); if (!string.IsNullOrEmpty(QueryModel.Name)) data = data.Where(d => d.Name.Contains(QueryModel.Name, StringComparison.OrdinalIgnoreCase)); @@ -123,6 +124,7 @@ namespace Bootstrap.Pages.Admin.Components if (!string.IsNullOrEmpty(QueryModel.Category)) data = data.Where(d => d.Category == QueryModel.Category); if (QueryModel.IsResource != -1) data = data.Where(d => d.IsResource == QueryModel.IsResource); if (!string.IsNullOrEmpty(QueryModel.Application)) data = data.Where(d => d.Application.Equals(QueryModel.Application, StringComparison.OrdinalIgnoreCase)); + if (!string.IsNullOrEmpty(searchText)) data = data.Where(d => d.Name.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.ParentName.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.Category.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.Application.Contains(searchText, StringComparison.OrdinalIgnoreCase)); var totalCount = data.Count(); var items = data.Skip((pageIndex - 1) * pageItems).Take(pageItems); return new QueryData() { Items = items, TotalCount = totalCount, PageIndex = pageIndex, PageItems = pageItems }; @@ -153,6 +155,18 @@ namespace Bootstrap.Pages.Admin.Components /// 删除方法 /// protected override bool Delete(IEnumerable items) => MenuHelper.Delete(items.Select(item => item.Id ?? "")); + + /// + /// 重置搜索方法 + /// + protected void ResetSearch() + { + QueryModel.Name = ""; + QueryModel.ParentName = ""; + QueryModel.Category = ""; + QueryModel.IsResource = -1; + QueryModel.Application = ""; + } /// /// 分配角色方法 diff --git a/src/admin/Bootstrap.Admin/Pages/Components/QueryPageBase.cs b/src/admin/Bootstrap.Admin/Pages/Components/QueryPageBase.cs index 28bf17b3..6981f52c 100644 --- a/src/admin/Bootstrap.Admin/Pages/Components/QueryPageBase.cs +++ b/src/admin/Bootstrap.Admin/Pages/Components/QueryPageBase.cs @@ -26,7 +26,8 @@ namespace Bootstrap.Pages.Admin.Components /// /// 页码 /// 每页显示数据条目数量 - protected abstract QueryData Query(int pageIndex, int pageItems); + /// + protected abstract QueryData Query(int pageIndex, int pageItems, string searchText); /// /// OnParametersSet 方法 diff --git a/src/admin/Bootstrap.Admin/Pages/Components/RolesBase.cs b/src/admin/Bootstrap.Admin/Pages/Components/RolesBase.cs index 19fabb1d..c26ebb16 100644 --- a/src/admin/Bootstrap.Admin/Pages/Components/RolesBase.cs +++ b/src/admin/Bootstrap.Admin/Pages/Components/RolesBase.cs @@ -16,11 +16,13 @@ namespace Bootstrap.Pages.Admin.Components /// /// 页码 /// 每页显示数据条目数量 - protected override QueryData Query(int pageIndex, int pageItems) + /// + protected override QueryData Query(int pageIndex, int pageItems, string searchText) { var data = RoleHelper.Retrieves(); if (!string.IsNullOrEmpty(QueryModel.RoleName)) data = data.Where(d => d.RoleName.Contains(QueryModel.RoleName, StringComparison.OrdinalIgnoreCase)); if (!string.IsNullOrEmpty(QueryModel.Description)) data = data.Where(d => d.Description != null && d.Description.Contains(QueryModel.Description, StringComparison.OrdinalIgnoreCase)); + if (!string.IsNullOrEmpty(searchText)) data = data.Where(d => d.RoleName.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.Description.Contains(searchText, StringComparison.OrdinalIgnoreCase)); var totalCount = data.Count(); var items = data.Skip((pageIndex - 1) * pageItems).Take(pageItems); return new QueryData() { Items = items, TotalCount = totalCount, PageIndex = pageIndex, PageItems = pageItems }; @@ -35,6 +37,15 @@ namespace Bootstrap.Pages.Admin.Components /// 删除方法 /// protected override bool Delete(IEnumerable items) => RoleHelper.Delete(items.Select(item => item.Id ?? "")); + + /// + /// 重置搜索方法 + /// + protected void ResetSearch() + { + QueryModel.RoleName = ""; + QueryModel.Description = ""; + } /// /// 分配用户方法 diff --git a/src/admin/Bootstrap.Admin/Pages/Components/UsersBase.cs b/src/admin/Bootstrap.Admin/Pages/Components/UsersBase.cs index e4c52bd4..880ccee7 100644 --- a/src/admin/Bootstrap.Admin/Pages/Components/UsersBase.cs +++ b/src/admin/Bootstrap.Admin/Pages/Components/UsersBase.cs @@ -16,11 +16,13 @@ namespace Bootstrap.Pages.Admin.Components /// /// 页码 /// 每页显示数据条目数量 - protected override QueryData Query(int pageIndex, int pageItems) + /// + protected override QueryData Query(int pageIndex, int pageItems, string searchText) { var data = UserHelper.Retrieves(); if (!string.IsNullOrEmpty(QueryModel.UserName)) data = data.Where(d => d.UserName.Contains(QueryModel.UserName, StringComparison.OrdinalIgnoreCase)); if (!string.IsNullOrEmpty(QueryModel.DisplayName)) data = data.Where(d => d.DisplayName.Contains(QueryModel.DisplayName, StringComparison.OrdinalIgnoreCase)); + if (!string.IsNullOrEmpty(searchText)) data = data.Where(d => d.UserName.Contains(searchText, StringComparison.OrdinalIgnoreCase) || d.DisplayName.Contains(searchText, StringComparison.OrdinalIgnoreCase)); var totalCount = data.Count(); var items = data.Skip((pageIndex - 1) * pageItems).Take(pageItems); return new QueryData() { Items = items, TotalCount = totalCount, PageIndex = pageIndex, PageItems = pageItems }; @@ -35,6 +37,15 @@ namespace Bootstrap.Pages.Admin.Components /// 删除方法 /// protected override bool Delete(IEnumerable users) => UserHelper.Delete(users.Select(item => item.Id ?? "")); + + /// + /// 重置搜索方法 + /// + protected void ResetSearch() + { + QueryModel.UserName = ""; + QueryModel.DisplayName = ""; + } /// /// 分配部门方法 diff --git a/src/admin/Bootstrap.Admin/Shared/EditPage.razor b/src/admin/Bootstrap.Admin/Shared/EditPage.razor index b3c25c51..b0b15fec 100644 --- a/src/admin/Bootstrap.Admin/Shared/EditPage.razor +++ b/src/admin/Bootstrap.Admin/Shared/EditPage.razor @@ -1,15 +1,12 @@ @typeparam TItem @inherits EditPageBase - - @QueryBody?.Invoke(context) -
查询结果
- +
@TableToolbarTemplate @@ -29,6 +26,9 @@ @EditTemplate?.Invoke(context) + + @QueryBody?.Invoke(context) +
diff --git a/src/admin/Bootstrap.Admin/Shared/Table.razor b/src/admin/Bootstrap.Admin/Shared/Table.razor index 8b2be987..fc313b63 100644 --- a/src/admin/Bootstrap.Admin/Shared/Table.razor +++ b/src/admin/Bootstrap.Admin/Shared/Table.razor @@ -2,14 +2,37 @@ @inherits TableBase
-
- - - - - - @TableToolbarTemplate - +
+
+ + + + + + @TableToolbarTemplate + +
+
+ +
+
+
+ +
+ + + +
+
+
@@ -152,4 +175,24 @@ + + + +
+ @SearchTemplate?.Invoke(QueryModel) +
+
+
+ + + + +
+ diff --git a/src/admin/Bootstrap.Admin/wwwroot/css/blazor.css b/src/admin/Bootstrap.Admin/wwwroot/css/blazor.css index 903523db..ec71690b 100644 --- a/src/admin/Bootstrap.Admin/wwwroot/css/blazor.css +++ b/src/admin/Bootstrap.Admin/wwwroot/css/blazor.css @@ -105,10 +105,6 @@ nav .dropdown .nav-link-close.dropdown-toggle:after { vertical-align: text-bottom; } -.card-body .bootstrap-table { - margin-top: 0rem; -} - .bs-bars { margin-bottom: 0.625rem; } @@ -130,6 +126,22 @@ nav .dropdown .nav-link-close.dropdown-toggle:after { margin-bottom: 0; } + .bootstrap-table .fixed-table-toolbar:after { + display: block; + content: ""; + clear: both; + } + + .bootstrap-table .fixed-table-toolbar .bs-bars, + .bootstrap-table .fixed-table-toolbar .search, + .bootstrap-table .fixed-table-toolbar .columns { + margin-top: 10px; + } + + .bootstrap-table .fixed-table-toolbar .columns-right { + margin-left: 5px; + } + .bootstrap-table .fixed-table-header { overflow: hidden; } diff --git a/src/admin/Bootstrap.Admin/wwwroot/js/ba.blazor.js b/src/admin/Bootstrap.Admin/wwwroot/js/ba.blazor.js index 4e00d06c..a6ced40c 100644 --- a/src/admin/Bootstrap.Admin/wwwroot/js/ba.blazor.js +++ b/src/admin/Bootstrap.Admin/wwwroot/js/ba.blazor.js @@ -108,8 +108,8 @@ $('[data-toggle="tooltip"]').tooltip(); $('.sidebar').addNiceScroll().autoScrollSidebar(); }, - initModal: function () { - $('.modal').appendTo($('body')); + initModal: function (id) { + $('#' + id).appendTo($('body')); }, initToast: function (id) { $('#' + id).appendTo($('body')); @@ -168,31 +168,61 @@ var $table = $('#' + id); var $fixedBody = $table.parents('.fixed-table-body'); - if (firstRender) { - // calc height - $.resetTableHeight($fixedBody); + // 固定表头设置 + if ($fixedBody.length === 1) { + if (firstRender) { + // calc height + $.resetTableHeight($fixedBody); - // modify scroll - $table.parent().overlayScrollbars({ - className: 'os-theme-dark', - scrollbars: { - autoHide: 'leave', - autoHideDelay: 100 - } - }); + // modify scroll + $table.parent().overlayScrollbars({ + className: 'os-theme-dark', + scrollbars: { + autoHide: 'leave', + autoHideDelay: 100 + } + }); + } + + var $tableContainer = $table.parents('.table-wrapper'); + var $tableHeader = $tableContainer.find('.fixed-table-header table'); + $.resetTableWidth($table, $tableHeader); + + if (firstRender) { + $tableContainer.find('.fixed-table-body').removeClass('invisible'); + + $(window).on('resize', function () { + $.resetTableWidth($table, $tableHeader); + $.resetTableHeight($fixedBody); + }); + } } - var $tableContainer = $table.parents('.table-wrapper'); - var $tableHeader = $tableContainer.find('.fixed-table-header table'); - $.resetTableWidth($table, $tableHeader); - + // set search toolbar if (firstRender) { - $tableContainer.find('.fixed-table-body').removeClass('invisible'); + var $search = $table.parents('.bootstrap-table').find('.fixed-table-toolbar').find('.search'); + if ($search.length === 1) { + $searchInput = $search.find('.search-input').tooltip({ + sanitize: false, + title: '
输入任意字符串全局搜索
Enter 搜索 ESC 清除搜索
', + html: true + }); - $(window).on('resize', function () { - $.resetTableWidth($table, $tableHeader); - $.resetTableHeight($fixedBody); - }); + // 支持键盘回车搜索 + $searchInput.on('keyup', function (event) { + if (event.keyCode === 13 || event.keyCode === 27) { + // ENTER + var $buttons = $(this).next(); + var $search = $buttons.find(':first'); + if ($search.length === 1) { + if (event.keyCode === 13) { + $search.trigger('click'); + } + else $search.next().trigger('click'); + } + } + }); + } } } });