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 %>
- <%= form.label :content, "大赛介绍" %> - <%= form.text_area :content,rows: 5, :style=>'width:800px;' %> + <%= form.label :content, "大赛介绍" %> + <%= form.text_area :content, rows: 5, :style => 'width:800px;' %>
<%= form.label :banner_url, "Banner图" %> - <%= form.text_field :banner_url, :style=>'width:800px;' %> + <%= form.text_field :banner_url, :style => 'width:800px;' %>
<%= form.label :video_url, "视频地址" %> - <%= form.text_field :video_url, :style=>'width:800px;' %> + <%= form.text_field :video_url, :style => 'width:800px;' %>
<%= form.label :enroll_template, "报名资料文件" %> - <%= form.text_field :enroll_template, :style=>'width:800px;' %> + <%= form.text_field :enroll_template, :style => 'width:800px;' %>
<%= form.label :is_local, "是否内网环境" %> @@ -42,48 +42,55 @@
- <%= form.label :zones, "赛区(内网)" %> - <%= form.text_field :zones_local, :style=>'width:1200px;' %> + <%= form.label :zones, "赛区(内网)" %> + <%= form.text_field :zones_local, :style => 'width:1200px;' %>
- <%= form.label :zones, "赛区" %> - <%= form.text_field :zones, :style=>'width:1200px;' %> + <%= form.label :zones, "赛区" %> + <%= form.text_field :zones, :style => 'width:1200px;' %>
- <%= form.label :sub_competitions, "赛项" %> - <%= form.text_field :sub_competitions , :style=>'width:1200px;' %> + <%= form.label :sub_competitions, "赛项" %> + <%= form.text_field :sub_competitions, :style => 'width:1200px;' %>
- <%= form.label :enroll_date, "报名截止时间" %> - <%= form.text_field :enroll_date , :style=>'width:200px;' %> + <%= form.label :enroll_date, "报名截止时间" %> + <%= form.text_field :enroll_date, :style => 'width:200px;' %>
- <%= form.label :upload_date, "提交作品截止时间" %> - <%= form.text_field :upload_date , :style=>'width:200px;' %> + <%= form.label :upload_date, "提交作品截止时间" %> + <%= form.text_field :upload_date, :style => 'width:200px;' %>
- <%= form.label :guide, "赛事指南" %> - <%= form.text_area :guide, rows: 5, :style=>'width:1200px;' %> + <%= form.label :guide, "赛事指南" %> + <%= form.text_area :guide, rows: 5, :style => 'width:1200px;' %>
- <%= form.label :about_us, "联系我们" %> - <%= form.text_area :about_us, rows: 5, :style=>'width:1200px;' %> + <%= form.label :about_us, "联系我们" %> + <%= form.text_area :about_us, rows: 5, :style => 'width:1200px;' %>
- <%= form.label :manager_ids, "管理员配置(配置方式:用户id:赛区名称,用户id:赛区名称)" %> - <%= form.text_field :manager_ids, :style=>'width:1200px;' %> + <%= form.label :manager_ids, "管理员配置(配置方式:用户id:赛区名称,用户id:赛区名称)" %> + <%= form.text_field :manager_ids, :style => 'width:1200px;' %> +
+ +
+ <%= form.label :enroll_columns, "报名字段映射关系配置" %> + <%= form.text_field :enroll_columns, :style => 'width:1200px;' %>
>>前往定制竞赛管理页面 - <%#= form.submit("保存赛事")%> + <% if params["edit"].to_s == "enroll_columns" %> + <%= form.submit("保存赛事") %> + <% end %>
<% end %> diff --git a/db/migrate/20220519090249_add_competition_user_filed.rb b/db/migrate/20220519090249_add_competition_user_filed.rb new file mode 100644 index 000000000..2caa4cec0 --- /dev/null +++ b/db/migrate/20220519090249_add_competition_user_filed.rb @@ -0,0 +1,9 @@ +class AddCompetitionUserFiled < ActiveRecord::Migration[5.2] + def change + add_column :competition_infos, :enroll_columns, :text + add_column :competition_users, :mail, :string + add_column :competition_users, :ext1, :string + add_column :competition_users, :ext2, :string + add_column :competition_users, :ext3, :string + end +end