diff --git a/app/controllers/competition_infos_controller.rb b/app/controllers/competition_infos_controller.rb index ded887e6d..de900f9fb 100644 --- a/app/controllers/competition_infos_controller.rb +++ b/app/controllers/competition_infos_controller.rb @@ -93,14 +93,15 @@ class CompetitionInfosController < ApplicationController #导出功能 format.xlsx { set_export_cookies - competition_users = params[:upload].to_s == "true" ? competition_users.where(status: [2]) : competition_users.where(status: [1, 2]) - @table_columns = @competition_info.is_local? ? %w(ID 参赛单位 参赛负责人 职务 军衔 电话 赛区 赛项 课题来源 成员) : %w(ID 参赛单位 参赛负责人 电话 赛区 赛项 成员) + competition_users = params[:upload].to_s == "true" ? competition_users.where(status: [2, 3]) : competition_users.where(status: [1, 2, 3]) + @table_columns = @competition_info.enroll_fileds.keys @table_columns = @table_columns + %w(作品下载链接) if params[:upload].to_s == "true" @export_infos = [] competition_users.each do |u| - info_array = @competition_info.is_local? ? [u.id, u.org_name, u.leader, u.org_job, u.org_rank, u.phone, u.zone, u.sub_competition, u.subject_source_type == 0 ? "自主提报" : u.subject_source_name, - u.members_to_string] : [u.id, u.org_name, u.leader, u.phone, u.zone, u.sub_competition, - u.members_to_string] + info_array = [] + @competition_info.enroll_fileds.values.each do |val| + info_array.push(u.send "#{val}") + end if params[:upload].to_s == "true" info_array = info_array + [u.attachments.blank? ? "" : "#{EduSetting.get('host_name')}/#{download_url(u.attachments.first)}"] end @@ -111,7 +112,7 @@ class CompetitionInfosController < ApplicationController render xlsx: "#{export_name.strip}", template: "competition_infos/enroll_list.xlsx.axlsx", locals: { table_columns: @table_columns, export_infos: @export_infos } } format.zip { - competition_users = params[:upload].to_s == "true" ? competition_users.where(status: [2]) : competition_users.where(status: [1, 2]) + competition_users = params[:upload].to_s == "true" ? competition_users.where(status: [2,3]) : competition_users.where(status: [1, 2, 3]) Rails.logger.info("######_______________########competition_users.size: #{competition_users.size}") service = Competition::ZipWorkFileService.new(competition_users, "files") send_file service.zip, filename: service.filename, type: 'application/zip' @@ -121,7 +122,7 @@ class CompetitionInfosController < ApplicationController def enroll_template competition_users = CompetitionUser.where(competition_info: @competition_info.id).order("updated_at desc") - competition_users = competition_users.where(status: [1, 2]).where("competition_users.enroll_template_id is not null") + competition_users = competition_users.where(status: [1, 2, 3]).where("competition_users.enroll_template_id is not null") zones = @competition_info.manager_zones(current_user) if params[:zone].present? competition_users = zones.include?(params[:zone].to_s) ? competition_users.where(zone: params[:zone].to_s) : competition_users.where(zone: []) @@ -150,7 +151,7 @@ class CompetitionInfosController < ApplicationController def enroll_status_update competition_user = CompetitionUser.find_by(competition_info: @competition_info.id, user_id: params[:user_id]) tip_exception "未找到该报名用户" if competition_user.blank? - tip_exception "状态参数错误" unless ['0', '1'].include?(params[:status].to_s) + tip_exception "状态参数错误" unless ['0', '1', '2'].include?(params[:status].to_s) competition_user.update_attributes!(status: params[:status].to_i) render_ok end @@ -204,7 +205,7 @@ class CompetitionInfosController < ApplicationController attachment.save end end - competition_user.update_attributes!(status: 2) + competition_user.update_attributes!(status: 3) render_ok end @@ -225,7 +226,7 @@ class CompetitionInfosController < ApplicationController #赛事风采 def statistics - @competition_users = @competition_info.competition_users.where(status: [1, 2]) + @competition_users = @competition_info.competition_users.where(status: [1, 2, 3]) @upload_count = @competition_users.joins("join attachments on attachments.container_type='CompetitionUser' and attachments.container_id = competition_users.id").count end @@ -233,12 +234,13 @@ class CompetitionInfosController < ApplicationController def enroll_params params.permit(:org_name, :org_job, :org_rank, :leader, :zone, :sub_competition, :phone, - :subject_source_type, :subject_source_name, :enroll_template_id) + :subject_source_type, :subject_source_name, :enroll_template_id, :mail, :ext1, :ext2, :ext3) end def competition_info_params params.require(:competition_info).permit(:title, :zones, :zones_local, :sub_competitions, :identifier, :content, - :video_url, :is_local, :manager_ids, :upload_date, :enroll_date, :guide, :about_us, :banner_url, :enroll_template) + :video_url, :is_local, :manager_ids, :upload_date, :enroll_date, :guide, :about_us, + :banner_url, :enroll_template, :enroll_columns) end def find_competition diff --git a/app/models/competition_info.rb b/app/models/competition_info.rb index ab8fcbd5e..ea5e6fb97 100644 --- a/app/models/competition_info.rb +++ b/app/models/competition_info.rb @@ -19,6 +19,9 @@ # guide :text(65535) # about_us :text(65535) # banner_url :string(255) +# enroll_template :string(255) +# admin_data :text(65535) +# enroll_columns :text(65535) # # Indexes # @@ -76,4 +79,23 @@ class CompetitionInfo < ApplicationRecord false end + def enroll_fileds + hash={} + hash.merge!({ "ID" => "id" }) + hash.merge!({ "参赛单位" => "org_name" }) + hash.merge!({ "参赛负责人" => "leader" }) + hash.merge!({ "职务" => "org_job" }) if self.is_local? + hash.merge!({ "军衔" => "org_rank" }) if self.is_local? + hash.merge!({ "电话" => "phone" }) + hash.merge!({ "赛区" => "zone" }) + hash.merge!({ "赛项" => "sub_competition" }) + hash.merge!({ "课题来源" => "subject_source_from" }) if self.is_local? + hash.merge!({ "成员" => "members_to_string" }) + + self.enroll_columns.present? && self.enroll_columns.is_a?(String) ? JSON.parse(self.enroll_columns) : hash + rescue => err + Rails.logger.info("enroll_columns is not json,error:#{err}") + hash + end + end diff --git a/app/models/competition_user.rb b/app/models/competition_user.rb index 5168e5dd7..96e963987 100644 --- a/app/models/competition_user.rb +++ b/app/models/competition_user.rb @@ -17,6 +17,12 @@ # members :text(65535) # created_at :datetime not null # updated_at :datetime not null +# status :integer default(0) +# enroll_template_id :integer +# mail :string(255) +# ext1 :string(255) +# ext2 :string(255) +# ext3 :string(255) # # Indexes # @@ -51,4 +57,8 @@ class CompetitionUser < ApplicationRecord end str.join(";") end + + def subject_source_from + self.subject_source_type == 0 ? "自主提报" : self.subject_source_name + end end diff --git a/app/views/competition_infos/_form.html.erb b/app/views/competition_infos/_form.html.erb index 998200cf7..f26a15ae3 100644 --- a/app/views/competition_infos/_form.html.erb +++ b/app/views/competition_infos/_form.html.erb @@ -20,21 +20,21 @@ <%= form.text_field :identifier %>