This commit is contained in:
User 2025-04-18 10:14:11 +08:00
parent b54791bb95
commit 29b19bcc43
1 changed files with 36 additions and 50 deletions

View File

@ -206,7 +206,7 @@ class ApplicationFormSignup
return self.cipher_stage_num.index(cipher)
end
def display_serial_number
display_format_string(self.serial_number,4)
display_format_string(self.serial_number,4)
end
def display_format_string(num, str_length)
return format("%0#{str_length}d", num)
@ -227,28 +227,23 @@ class ApplicationFormSignup
all_fields = application_form.application_form_signup_field_sets.map do |set|
field_name = set.field_name
next if set.disabled || except_fields.include?(field_name)
value = self.send(field_name) rescue nil
localize = self.fields[field_name].options[:localize]
value = self.respond_to?(field_name) ? self.send(field_name) : nil
field = self.fields[field_name] rescue nil # 先检查字段是否存在
next if field.nil? # 防止 nil 出现
localize = field.options&.dig(:localize) # 安全调用
next if value.nil? && !localize
if field_name == "status"
value = I18n.t("application_form.registration_status_#{value}")
elsif localize && field_name != "unit"
values = self.send("#{field_name}_translations").select{|k,v| v.present?}
value = ""
if values.count == 0
next
elsif values.count == 1
value = values.values.first
else
last_idx = values.count - 1
values.each_with_index do |(l, v), i|
value += (I18n.t(l) + ": " + v )
if i != last_idx
value += "<br>"
end
end
end
values = self.send("#{field_name}_translations").select { |_, v| v.present? }
next if values.empty?
value = values.map { |l, v| "#{I18n.t(l)}: #{v}" }.join("<br>")
end
{
"field_name"=>field_name,
"title"=>set.name[locale],
@ -259,44 +254,35 @@ class ApplicationFormSignup
field_names = self.class::DefaultEnableFields
all_fields = field_names.map do |field_name|
next if except_fields.include?(field_name)
value = self.send(field_name) rescue nil
next if value.nil?
value = self.respond_to?(field_name) ? self.send(field_name) : nil
field = self.fields[field_name] rescue nil
next if field.nil?
field_name_trans = I18n.t("application_form_signup.#{field_name}")
if field_name == "status"
I18n.t("application_form.registration_status_#{value}")
elsif self.fields[field_name].options[:localize]
values = self.send("#{field_name}_translations").select{|k,v| v.present?}
value = ""
if values.count == 0
next
elsif values.count == 1
value = values.values.first
else
last_idx = values.count - 1
values.each_with_index do |(l, v), i|
value += (I18n.t(l) + ": " + v )
if i != last_idx
value += "<br>"
end
end
end
value = I18n.t("application_form.registration_status_#{value}")
elsif field.options&.dig(:localize)
values = self.send("#{field_name}_translations").select { |_, v| v.present? }
next if values.empty?
value = values.map { |l, v| "#{I18n.t(l)}: #{v}" }.join("<br>")
end
{
"field_name"=>field_name,
"title"=> field_name_trans,
"value"=> value
}
end.compact
{
"field_name" => field_name,
"title" => field_name_trans,
"value" => value
}
end.compact
end
application_form.application_form_signup_fields.asc(:_id).each do |rf|
application_form_signup_value = rf.application_form_signup_values.where(:application_form_signup_id=>self.id).last
if application_form_signup_value
value = application_form_signup_value.get_field_value rescue nil
if value
all_fields << value
end
end
value = rf.application_form_signup_values.where(application_form_signup_id: self.id).last&.get_field_value
all_fields << value if value.present?
end
return all_fields
end
end