From 6de76e5be7159e8d808f800373cebd395377b16b Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Tue, 22 Oct 2019 14:19:23 +0800
Subject: [PATCH] =?UTF-8?q?=E7=AB=9E=E8=B5=9B=E8=B6=85=E7=AE=A1=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../javascripts/admins/enroll_lists/index.js | 2 +-
.../admins/enroll_lists_controller.rb | 4 ++-
.../competitions/competitions_controller.rb | 9 ++----
.../admins/enroll_lists/export.xlsx.axlsx | 29 +++++++++++++++++++
app/views/admins/enroll_lists/index.html.erb | 2 +-
config/routes.rb | 4 ++-
...0127_migrate_competition_score_stage_id.rb | 7 +++++
7 files changed, 46 insertions(+), 11 deletions(-)
create mode 100644 app/views/admins/enroll_lists/export.xlsx.axlsx
create mode 100644 db/migrate/20191022030127_migrate_competition_score_stage_id.rb
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/config/routes.rb b/config/routes.rb
index b2037ff78..63450239c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1023,7 +1023,9 @@ Rails.application.routes.draw do
end
resources :competition_settings, only: [:index, :update]
- resources :enroll_lists, only: [:index]
+ resources :enroll_lists, only: [:index] do
+ get :export, on: :collection
+ end
end
resources :weapp_carousels, only: [:index, :create, :update, :destroy] do
diff --git a/db/migrate/20191022030127_migrate_competition_score_stage_id.rb b/db/migrate/20191022030127_migrate_competition_score_stage_id.rb
new file mode 100644
index 000000000..0eefbac48
--- /dev/null
+++ b/db/migrate/20191022030127_migrate_competition_score_stage_id.rb
@@ -0,0 +1,7 @@
+class MigrateCompetitionScoreStageId < ActiveRecord::Migration[5.2]
+ def change
+ change_column_default :competition_scores, :competition_stage_id, 0
+
+ CompetitionScore.where("competition_stage_id is null").update_all(competition_stage_id: 0)
+ end
+end