竞赛配置加映射关系字段,增加报名字段

This commit is contained in:
xiaoxiaoqiong 2022-05-19 17:41:49 +08:00
parent ca78b04f6e
commit 5b33da0aa5
5 changed files with 84 additions and 34 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -20,21 +20,21 @@
<%= form.text_field :identifier %>
</div>
<div class="field">
<%= form.label :content, "大赛介绍" %>
<%= form.text_area :content,rows: 5, :style=>'width:800px;' %>
<%= form.label :content, "大赛介绍" %>
<%= form.text_area :content, rows: 5, :style => 'width:800px;' %>
</div>
<div class="field">
<%= form.label :banner_url, "Banner图" %>
<%= form.text_field :banner_url, :style=>'width:800px;' %>
<%= form.text_field :banner_url, :style => 'width:800px;' %>
</div>
<div class="field">
<%= form.label :video_url, "视频地址" %>
<%= form.text_field :video_url, :style=>'width:800px;' %>
<%= form.text_field :video_url, :style => 'width:800px;' %>
</div>
<div class="field">
<%= form.label :enroll_template, "报名资料文件" %>
<%= form.text_field :enroll_template, :style=>'width:800px;' %>
<%= form.text_field :enroll_template, :style => 'width:800px;' %>
</div>
<div class="field">
<%= form.label :is_local, "是否内网环境" %>
@ -42,48 +42,55 @@
</div>
<div class="field">
<%= form.label :zones, "赛区(内网)" %>
<%= form.text_field :zones_local, :style=>'width:1200px;' %>
<%= form.label :zones, "赛区(内网)" %>
<%= form.text_field :zones_local, :style => 'width:1200px;' %>
</div>
<div class="field">
<%= form.label :zones, "赛区" %>
<%= form.text_field :zones, :style=>'width:1200px;' %>
<%= form.label :zones, "赛区" %>
<%= form.text_field :zones, :style => 'width:1200px;' %>
</div>
<div class="field">
<%= form.label :sub_competitions, "赛项" %>
<%= form.text_field :sub_competitions , :style=>'width:1200px;' %>
<%= form.label :sub_competitions, "赛项" %>
<%= form.text_field :sub_competitions, :style => 'width:1200px;' %>
</div>
<div class="field">
<%= form.label :enroll_date, "报名截止时间" %>
<%= form.text_field :enroll_date , :style=>'width:200px;' %>
<%= form.label :enroll_date, "报名截止时间" %>
<%= form.text_field :enroll_date, :style => 'width:200px;' %>
</div>
<div class="field">
<%= form.label :upload_date, "提交作品截止时间" %>
<%= form.text_field :upload_date , :style=>'width:200px;' %>
<%= form.label :upload_date, "提交作品截止时间" %>
<%= form.text_field :upload_date, :style => 'width:200px;' %>
</div>
<div class="field">
<%= form.label :guide, "赛事指南" %>
<%= form.text_area :guide, rows: 5, :style=>'width:1200px;' %>
<%= form.label :guide, "赛事指南" %>
<%= form.text_area :guide, rows: 5, :style => 'width:1200px;' %>
</div>
<div class="field">
<%= 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;' %>
</div>
<div class="field">
<%= 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;' %>
</div>
<div class="field">
<%= form.label :enroll_columns, "报名字段映射关系配置" %>
<%= form.text_field :enroll_columns, :style => 'width:1200px;' %>
</div>
<div class="actions" style="margin-top:10px;">
<a href="/managements/competition/customize" style="font-size: 28px;">>>前往定制竞赛管理页面</a>
<%#= form.submit("保存赛事")%>
<% if params["edit"].to_s == "enroll_columns" %>
<%= form.submit("保存赛事") %>
<% end %>
</div>
<% end %>

View File

@ -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