You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.5 KiB
61 lines
2.5 KiB
5 years ago
|
class Admins::ShixunSettingsController < Admins::BaseController
|
||
|
|
||
|
def index
|
||
|
params[:sort_by] = params[:sort_by].presence || 'created_on'
|
||
|
params[:sort_direction] = params[:sort_direction].presence || 'desc'
|
||
|
shixuns = Admins::ShixunSettingsQuery.call(params)
|
||
|
@editing_shixuns = shixuns.where(status:0).size
|
||
|
@pending_shixuns = shixuns.where(status:1).size
|
||
|
@processed_shixuns = shixuns.where(status:2).size
|
||
|
@closed_shixuns = shixuns.where(status:3).size
|
||
|
@shixuns_type_check = MirrorRepository.select(:id,:type_name).pluck(:type_name,:id)
|
||
|
|
||
|
@can_copy = params[:can_copy] || "0"
|
||
|
@params_page = params[:page] || 1
|
||
|
@shixuns = paginate shixuns.preload(:user,:challenges)
|
||
|
|
||
|
respond_to do |format|
|
||
|
format.js
|
||
|
format.html
|
||
|
format.xls{
|
||
|
filename = "实训详情_#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}.xls"
|
||
|
send_data(shixun_list_xls(@shixuns), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
|
||
|
}
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
def shixun_list_xls shixuns
|
||
|
xls_report = StringIO.new
|
||
|
book = Spreadsheet::Workbook.new
|
||
|
sheet1 = book.create_worksheet :name => "sheet"
|
||
|
blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
|
||
|
sheet1.row(0).default_format = blue
|
||
|
sheet1.row(0).concat(["实训ID","实训名称","技术平台", "Fork源", "实践任务","选择题任务","挑战人数", "通关人数", "状态","创建者", "单位", "职业", "关卡序号","关卡名称","技能标签"])
|
||
|
count_row = 1
|
||
|
shixuns.find_each do |shixun|
|
||
|
sheet1[count_row, 0] = shixun.identifier
|
||
|
sheet1[count_row, 1] = shixun.name
|
||
|
sheet1[count_row, 2] = shixun.shixun_main_name
|
||
|
sheet1[count_row, 3] = shixun.fork_identifier
|
||
|
sheet1[count_row, 4] = shixun.challenges.practice_type.count
|
||
|
sheet1[count_row, 5] = shixun.challenges.choose_type.count
|
||
|
sheet1[count_row, 6] = shixun.myshixuns.count
|
||
|
sheet1[count_row, 7] = shixun.myshixuns.finished.count
|
||
|
sheet1[count_row, 8] = shixun.shixun_status
|
||
|
sheet1[count_row, 9] = shixun.owner.show_real_name
|
||
|
sheet1[count_row, 10] = shixun.owner.school_name
|
||
|
sheet1[count_row, 11] = shixun.owner.identity
|
||
|
shixun.challenges.each do |challenge|
|
||
|
sheet1[count_row, 12] = "第#{challenge.position}关"
|
||
|
sheet1[count_row, 13] = challenge.subject
|
||
|
sheet1[count_row, 14] = challenge.tags_show
|
||
|
count_row += 1
|
||
|
end
|
||
|
count_row += 1
|
||
|
end
|
||
|
book.write xls_report
|
||
|
xls_report.string
|
||
|
end
|
||
|
end
|