diff --git a/app/controllers/admins/users_controller.rb b/app/controllers/admins/users_controller.rb index b5c5a1929..2839de169 100644 --- a/app/controllers/admins/users_controller.rb +++ b/app/controllers/admins/users_controller.rb @@ -28,7 +28,8 @@ class Admins::UsersController < Admins::BaseController def export params[:sort_by] = params[:sort_by].presence || 'created_on' params[:sort_direction] = params[:sort_direction].presence || 'desc' - + params[:time_type] = params[:time_type].presence || 'created_on' + users = Admins::UserQuery.call(params) @users = users.includes(:user_extension, projects: :members) filename = ["用户列表", Time.zone.now.strftime('%Y%m%d%H%M%S')].join('-') << '.xlsx' diff --git a/app/queries/admins/user_query.rb b/app/queries/admins/user_query.rb index 038ae1857..c4ba8e2dd 100644 --- a/app/queries/admins/user_query.rb +++ b/app/queries/admins/user_query.rb @@ -73,6 +73,21 @@ class Admins::UserQuery < ApplicationQuery school_name = params[:school_name].to_s.strip.presence users = users.joins(user_extension: :school).where('schools.name LIKE ?', "%#{school_name}%") if school_name + # 时间范围搜索 + if params[:start_time].present? && params[:end_time].present? + time_type = params[:time_type].presence || 'created_on' + time_type = 'created_on' unless %w[created_on last_login_on].include?(time_type) + users = users.where("#{time_type} >= ? AND #{time_type} <= ?", params[:start_time], params[:end_time]) + elsif params[:start_time].present? + time_type = params[:time_type].presence || 'created_on' + time_type = 'created_on' unless %w[created_on last_login_on].include?(time_type) + users = users.where("#{time_type} >= ?", params[:start_time]) + elsif params[:end_time].present? + time_type = params[:time_type].presence || 'created_on' + time_type = 'created_on' unless %w[created_on last_login_on].include?(time_type) + users = users.where("#{time_type} <= ?", params[:end_time]) + end + custom_sort(users, params[:sort_by], params[:sort_direction]) end end \ No newline at end of file diff --git a/app/views/admins/users/index.html.erb b/app/views/admins/users/index.html.erb index cc568c9ba..853849c79 100644 --- a/app/views/admins/users/index.html.erb +++ b/app/views/admins/users/index.html.erb @@ -45,7 +45,7 @@ <%= check_box_tag("bank_certification", true, false, id: "user_bank_certification", style: 'margin-left: 2px;') %> <%= submit_tag('搜索', class: 'btn btn-primary mr-3', style: 'margin-left:50px;', 'data-disable-with': '搜索中...') %> - 导出 + <%= javascript_void_link '导出', class:'btn btn-outline-primary export-action', style: 'margin-left:20px;', id: 'users-export', data: { toggle: 'modal', target: '.admin-export-user-modal'}, "data-disable_with":'导出中...' %> <% end %> <% if current_user.admin? %> @@ -61,13 +61,29 @@ <%= render partial: 'admins/users/shared/reward_grade_modal' %> <%= render partial: 'admins/users/shared/import_user_modal' %> +<%= render partial: 'admins/users/shared/export_modal' %>