diff --git a/app/assets/javascripts/admins/enroll_lists/index.js b/app/assets/javascripts/admins/enroll_lists/index.js index 04bd95070..f53b82f41 100644 --- a/app/assets/javascripts/admins/enroll_lists/index.js +++ b/app/assets/javascripts/admins/enroll_lists/index.js @@ -3,7 +3,7 @@ $(document).on('turbolinks:load', function() { let search_form = $(".search-form"); //导出 $(".competition-enroll-list-form").on("click","#enroll-lists-export",function () { - window.location.href = "/admins/competitions/"+$(this).attr("data-competition-id")+"/enroll_lists.xls?" + search_form.serialize(); + window.location.href = "/admins/competitions/"+$(this).attr("data-competition-id")+"/enroll_lists/export.xlsx?" + search_form.serialize(); }); } }); \ No newline at end of file diff --git a/app/controllers/admins/enroll_lists_controller.rb b/app/controllers/admins/enroll_lists_controller.rb index 135ef55ae..fb7cec9b0 100644 --- a/app/controllers/admins/enroll_lists_controller.rb +++ b/app/controllers/admins/enroll_lists_controller.rb @@ -22,7 +22,9 @@ class Admins::EnrollListsController < Admins::BaseController def export default_sort('created_at', 'desc') @enroll_lists = Admins::CompetitionEnrollListQuery.call(current_competition, params) - + @enroll_lists = @enroll_lists.preload(competition_team: [:user, :teachers], user: { user_extension: :school }) + @competition_scores = current_competition.competition_scores.where(competition_stage_id: 0).order("score desc, cost_time desc").pluck(:competition_team_id) + @personal = current_competition.personal? filename = ["#{current_competition.name}竞赛报名列表", Time.zone.now.strftime('%Y-%m-%d%H:%M:%S')].join('-') << '.xlsx' render xlsx: 'export', filename: filename end diff --git a/app/controllers/competitions/competitions_controller.rb b/app/controllers/competitions/competitions_controller.rb index a17564737..659346966 100644 --- a/app/controllers/competitions/competitions_controller.rb +++ b/app/controllers/competitions/competitions_controller.rb @@ -106,13 +106,8 @@ class Competitions::CompetitionsController < Competitions::BaseController @stage = @competition.competition_stages.find_by(id: params[:stage_id]) end - if @competition.identifier == "gcc-annotation-2018" - @records = @competition.competition_teams.joins(:competition_scores) - .select("competition_teams.*, score, cost_time").order("score desc, cost_time desc") - else - @records = @competition.competition_teams.joins(:competition_scores).where(competition_scores: {competition_stage_id: @stage&.id.to_i}) - .select("competition_teams.*, score, cost_time").order("score desc, cost_time desc") - end + @records = @competition.competition_teams.joins(:competition_scores).where(competition_scores: {competition_stage_id: @stage&.id.to_i}) + .select("competition_teams.*, score, cost_time").order("score desc, cost_time desc") current_team_ids = @competition.team_members.where(user_id: current_user.id).pluck(:competition_team_id).uniq @user_ranks = @records.select{|com_team| current_team_ids.include?(com_team.id)} diff --git a/app/views/admins/enroll_lists/export.xlsx.axlsx b/app/views/admins/enroll_lists/export.xlsx.axlsx new file mode 100644 index 000000000..b6f403ab8 --- /dev/null +++ b/app/views/admins/enroll_lists/export.xlsx.axlsx @@ -0,0 +1,29 @@ +wb = xlsx_package.workbook +wb.add_worksheet(name: '报名列表') do |sheet| + sheet.add_row %w(序号 战队ID 战队名称 创建者 指导老师 队员姓名 职业 手机号 邮箱 学号 实名认证 职业认证 队员学校 地区 报名时间 排名) + + @enroll_lists.each_with_index do |member, index| + team = member.competition_team + member_user = member.user + rank = @competition_scores.length > 0 ? @competition_scores.index(member.competition_team_id).to_i + 1 : "--" + data = [ + index + 1, + member.competition_team_id, + @personal ? "--" : team.name, + team.user.real_name, + @personal ? "--" : team.teachers_info, + member_user.real_name, + member_user.identity, + member_user.phone, + member_user.mail, + member_user.student_id, + member_user.authentication ? "√" : "", + member_user.professional_certification ? "√" : "", + member_user.school_name, + member_user.school_province, + member.created_at.strftime('%Y-%m-%d %H:%M'), + rank + ] + sheet.add_row(data) + end +end \ No newline at end of file diff --git a/app/views/admins/enroll_lists/index.html.erb b/app/views/admins/enroll_lists/index.html.erb index 95787d54c..636479377 100644 --- a/app/views/admins/enroll_lists/index.html.erb +++ b/app/views/admins/enroll_lists/index.html.erb @@ -24,7 +24,7 @@ <%= link_to "清除", admins_competition_enroll_lists_path(@competition), class: "btn btn-default",'data-disable-with': '清除中...' %> <% end %> - 导出 + 导出 diff --git a/app/views/admins/myshixuns/shared/_list.html.erb b/app/views/admins/myshixuns/shared/_list.html.erb index 78e42d58b..89ad535c5 100644 --- a/app/views/admins/myshixuns/shared/_list.html.erb +++ b/app/views/admins/myshixuns/shared/_list.html.erb @@ -17,14 +17,10 @@ <% myshixuns.each do |myshixun| %>