| @@ -2,7 +2,11 @@ class Admins::OrganizationsController < Admins::BaseController | |||||
| before_action :finder_org, except: [:index] | before_action :finder_org, except: [:index] | ||||
| def 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 | end | ||||
| def show | def show | ||||
| @@ -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 | |||||
| @@ -1,6 +1,15 @@ | |||||
| <% define_admin_breadcrumbs do %> | <% define_admin_breadcrumbs do %> | ||||
| <% add_admin_breadcrumb('组织管理', admins_organizations_path) %> | <% add_admin_breadcrumb('组织管理', admins_organizations_path) %> | ||||
| <% end %> | <% end %> | ||||
| <div class="box search-form-container user-list-form"> | |||||
| <%= 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 %> | |||||
| </div> | |||||
| <div class="box admin-list-container organizations-list-container"> | <div class="box admin-list-container organizations-list-container"> | ||||
| <%= render partial: 'admins/organizations/shared/org_list', locals: { organizations: @orgs } %> | <%= render partial: 'admins/organizations/shared/org_list', locals: { organizations: @orgs } %> | ||||
| @@ -1 +1 @@ | |||||
| $('.users-list-container').html("<%= j( render partial: 'admins/organizations/shared/org_list', locals: { organizations: @orgs } ) %>"); | |||||
| $('.organizations-list-container').html("<%= j( render partial: 'admins/organizations/shared/org_list', locals: { organizations: @orgs } ) %>"); | |||||
| @@ -2,6 +2,7 @@ | |||||
| <thead class="thead-light"> | <thead class="thead-light"> | ||||
| <tr> | <tr> | ||||
| <th width="4%">序号</th> | <th width="4%">序号</th> | ||||
| <th width="4%">ID</th> | |||||
| <th width="8%" class="text-left">login</th> | <th width="8%" class="text-left">login</th> | ||||
| <th width="8%" class="text-left">昵称</th> | <th width="8%" class="text-left">昵称</th> | ||||
| <th width="10%"><%= sort_tag('创建于', name: 'created_on', path: admins_organizations_path) %></th> | <th width="10%"><%= sort_tag('创建于', name: 'created_on', path: admins_organizations_path) %></th> | ||||
| @@ -15,6 +16,7 @@ | |||||
| <% organizations.each_with_index do |org, index| %> | <% organizations.each_with_index do |org, index| %> | ||||
| <tr class="org-item-<%= org.id %>"> | <tr class="org-item-<%= org.id %>"> | ||||
| <td><%= list_index_no((params[:page] || 1).to_i, index) %></td> | <td><%= list_index_no((params[:page] || 1).to_i, index) %></td> | ||||
| <td><%= org.id %></td> | |||||
| <td class="text-left"> | <td class="text-left"> | ||||
| <%= link_to "/#{org.login}", target: '_blank' do %> | <%= link_to "/#{org.login}", target: '_blank' do %> | ||||
| <%= overflow_hidden_span org.login, width: 100 %> | <%= overflow_hidden_span org.login, width: 100 %> | ||||