diff --git a/app/controllers/admins/organizations_controller.rb b/app/controllers/admins/organizations_controller.rb index 4e40a509e..35fb4dee8 100644 --- a/app/controllers/admins/organizations_controller.rb +++ b/app/controllers/admins/organizations_controller.rb @@ -2,7 +2,11 @@ class Admins::OrganizationsController < Admins::BaseController before_action :finder_org, except: [:index] def index - @orgs = paginate Organization.all + params[:sort_by] = params[:sort_by].presence || 'created_on' + params[:sort_direction] = params[:sort_direction].presence || 'desc' + + orgs = Admins::OrganizationQuery.call(params) + @orgs = paginate orgs end def show diff --git a/app/queries/admins/organization_query.rb b/app/queries/admins/organization_query.rb new file mode 100644 index 000000000..09dbab9e3 --- /dev/null +++ b/app/queries/admins/organization_query.rb @@ -0,0 +1,21 @@ +class Admins::OrganizationQuery < ApplicationQuery + include CustomSortable + attr_reader :params + sort_columns :created_on, :last_login_on, :experience, :grade, default_by: :created_on, default_direction: :desc + + def initialize(params) + @params = params + end + + def call + orgs = Organization.all + # 关键字检索 + keyword = params[:keyword].to_s.strip.presence + if keyword + sql = 'nickname LIKE :keyword OR login LIKE :keyword' + orgs = orgs.where(sql, keyword: "%#{keyword}%") + end + + custom_sort(orgs, params[:sort_by], params[:sort_direction]) + end +end \ No newline at end of file diff --git a/app/views/admins/organizations/index.html.erb b/app/views/admins/organizations/index.html.erb index 7c96b57ee..7cd2ba8fa 100644 --- a/app/views/admins/organizations/index.html.erb +++ b/app/views/admins/organizations/index.html.erb @@ -1,6 +1,15 @@ <% define_admin_breadcrumbs do %> <% add_admin_breadcrumb('组织管理', admins_organizations_path) %> <% end %> +
+ <%= form_tag(admins_organizations_path, method: :get, class: 'form-inline search-form flex-1', remote: true) do %> + + <%= text_field_tag(:keyword, params[:keyword], class: 'form-control col-sm-2 ml-3', placeholder: 'login/昵称') %> + + <%= submit_tag('搜索', class: 'btn btn-primary ml-3', 'data-disable-with': '搜索中...') %> + <% end %> + +
<%= render partial: 'admins/organizations/shared/org_list', locals: { organizations: @orgs } %> diff --git a/app/views/admins/organizations/index.js.erb b/app/views/admins/organizations/index.js.erb index 7e750ecf9..5cf62a739 100644 --- a/app/views/admins/organizations/index.js.erb +++ b/app/views/admins/organizations/index.js.erb @@ -1 +1 @@ -$('.users-list-container').html("<%= j( render partial: 'admins/organizations/shared/org_list', locals: { organizations: @orgs } ) %>"); \ No newline at end of file +$('.organizations-list-container').html("<%= j( render partial: 'admins/organizations/shared/org_list', locals: { organizations: @orgs } ) %>"); \ No newline at end of file diff --git a/app/views/admins/organizations/shared/_org_list.html.erb b/app/views/admins/organizations/shared/_org_list.html.erb index b8fac30d0..9f3f857e8 100644 --- a/app/views/admins/organizations/shared/_org_list.html.erb +++ b/app/views/admins/organizations/shared/_org_list.html.erb @@ -2,6 +2,7 @@ 序号 + ID login 昵称 <%= sort_tag('创建于', name: 'created_on', path: admins_organizations_path) %> @@ -15,6 +16,7 @@ <% organizations.each_with_index do |org, index| %> <%= list_index_no((params[:page] || 1).to_i, index) %> + <%= org.id %> <%= link_to "/#{org.login}", target: '_blank' do %> <%= overflow_hidden_span org.login, width: 100 %>