From 2de1014d4b65f7acddf25c3122b0450ded195b27 Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Fri, 6 Mar 2020 20:47:38 +0800
Subject: [PATCH 1/4] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../homework_commons_controller.rb | 1084 ++++++++---------
1 file changed, 515 insertions(+), 569 deletions(-)
diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb
index d4e7ae4a3..415207707 100644
--- a/app/controllers/homework_commons_controller.rb
+++ b/app/controllers/homework_commons_controller.rb
@@ -58,7 +58,7 @@ class HomeworkCommonsController < ApplicationController
end
@published_count = @user_course_identity < Course::STUDENT ? @homework_commons.homework_published.size :
- @homework_commons.size
+ @homework_commons.size
unless search.blank?
@homework_commons = @homework_commons.where("homework_commons.name like ?", "%#{search}%")
@@ -110,7 +110,7 @@ class HomeworkCommonsController < ApplicationController
if @homework_type == 4
@homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :homework_group_settings, :shixuns, :course_second_category, user: :user_extension)
elsif @homework_type == 3
- @homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :homework_group_settings, :homework_detail_group, :course_second_category, user: :user_extension)
+ @homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :homework_group_settings, :homework_detail_group, :course_second_category, user: :user_extension)
else
@homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :homework_group_settings, :course_second_category, user: :user_extension)
end
@@ -128,7 +128,7 @@ class HomeworkCommonsController < ApplicationController
if @homework.publish_time.blank? || (@homework.publish_time > Time.now)
@student_works = []
if (params[:format] == "xlsx") || (params[:format] == "zip")
- normal_status(-1,"作业未发布")
+ normal_status(-1, "作业未发布")
end
else
if @user_course_identity == Course::STUDENT
@@ -145,14 +145,14 @@ class HomeworkCommonsController < ApplicationController
# 学生已提交作品且补交(提交)已截止、作品公开、非匿评阶段
if @work&.work_status.to_i > 0 && (@homework.work_public || @homework.score_open) &&
- ((!@homework.anonymous_comment && @homework.end_or_late) || (@homework_detail_manual.comment_status > 4 && @homework.end_or_late))
+ ((!@homework.anonymous_comment && @homework.end_or_late) || (@homework_detail_manual.comment_status > 4 && @homework.end_or_late))
@student_works = student_works.where("student_works.user_id != #{@work.user_id}")
# 匿评、申诉阶段只能看到分配给自己的匿评作品
elsif @work&.work_status.to_i > 0 && @homework.anonymous_comment && @homework_detail_manual.comment_status > 2 && @homework_detail_manual.comment_status <= 4
@is_evaluation = true
@student_works = student_works.joins(:student_works_evaluation_distributions).where(
- "student_works_evaluation_distributions.user_id = #{@current_user.id}")
+ "student_works_evaluation_distributions.user_id = #{@current_user.id}")
else
@student_works = []
end
@@ -173,7 +173,7 @@ class HomeworkCommonsController < ApplicationController
unless params[:teacher_comment].blank?
student_work_ids = StudentWorksScore.where(student_work_id: @student_works.map(&:id)).pluck(:student_work_id)
if params[:teacher_comment].to_i == 0
- @student_works = @student_works.where.not(id: student_work_ids)
+ @student_works = @student_works.where.not(id: student_work_ids)
elsif params[:teacher_comment].to_i == 1
@student_works = @student_works.where(id: student_work_ids)
end
@@ -182,7 +182,7 @@ class HomeworkCommonsController < ApplicationController
# 作品状态 0: 未提交, 1 按时提交, 2 延迟提交
if params[:work_status].present?
params_work_status = params[:work_status]
- work_status = params_work_status.map{|status| status.to_i}
+ work_status = params_work_status.map {|status| status.to_i}
if @homework.homework_type == "practice"
@student_works = @student_works.where(compelete_status: work_status)
else
@@ -241,17 +241,17 @@ class HomeworkCommonsController < ApplicationController
if @user_course_identity >= Course::STUDENT
tip_exception(403, "无权限操作")
elsif @work_excel.blank? || @work_excel.size == 0
- normal_status(-1,"暂无用户提交!")
+ normal_status(-1, "暂无用户提交!")
elsif params[:export].present? && params[:export]
- normal_status(0,"正在下载中")
+ normal_status(0, "正在下载中")
else
respond_to do |format|
- format.xlsx{
+ format.xlsx {
set_export_cookies
- student_work_to_xlsx(@work_excel,@homework)
+ student_work_to_xlsx(@work_excel, @homework)
exercise_export_name = "#{current_user.real_name}_#{@course.name}_#{@homework.name}_#{Time.now.strftime('%Y%m%d_%H%M%S')}"
- render xlsx: "#{exercise_export_name.strip}",template: "homework_commons/works_list.xlsx.axlsx",locals:
- {table_columns: @work_head_cells,task_users: @work_cells_column}
+ render xlsx: "#{exercise_export_name.strip}", template: "homework_commons/works_list.xlsx.axlsx", locals:
+ {table_columns: @work_head_cells, task_users: @work_cells_column}
}
end
end
@@ -268,10 +268,10 @@ class HomeworkCommonsController < ApplicationController
if status == 0
if params[:export].present? && params[:export]
- normal_status(0,"正在下载中")
+ normal_status(0, "正在下载中")
else
respond_to do |format|
- format.zip{
+ format.zip {
set_export_cookies
zipfile = zip_homework_common @homework, zip_works
file = decode64(zipfile[0][:base64file])
@@ -289,33 +289,21 @@ class HomeworkCommonsController < ApplicationController
def update_score
tip_exception("作业还未发布,暂不能计算成绩") if @homework.publish_time.nil? || @homework.publish_time > Time.now
- begin
- @homework.update_homework_work_score
- normal_status("更新成功")
- rescue Exception => e
- uid_logger(e.message)
- tip_exception(e.message)
- raise ActiveRecord::Rollback
- end
+ @homework.update_homework_work_score
+ normal_status("更新成功")
end
def update_student_score
work = @homework.student_works.find_by(user_id: current_user.id)
myshixun = Myshixun.find_by(shixun_id: params[:shixun_id], user_id: current_user.id)
ActiveRecord::Base.transaction do
- begin
- if work && myshixun
- challenge_settings = @homework.homework_challenge_settings
- games = myshixun.games.where(challenge_id: challenge_settings.pluck(:challenge_id))
- HomeworksService.new.update_myshixun_work_score work, myshixun, games, @homework, challenge_settings
- normal_status("更新成功")
- else
- normal_status("还未开启挑战,暂不能更新成绩")
- end
- rescue Exception => e
- uid_logger(e.message)
- tip_exception(e.message)
- raise ActiveRecord::Rollback
+ if work && myshixun
+ challenge_settings = @homework.homework_challenge_settings
+ games = myshixun.games.where(challenge_id: challenge_settings.pluck(:challenge_id))
+ HomeworksService.new.update_myshixun_work_score work, myshixun, games, @homework, challenge_settings
+ normal_status("更新成功")
+ else
+ normal_status("还未开启挑战,暂不能更新成绩")
end
end
end
@@ -382,41 +370,35 @@ class HomeworkCommonsController < ApplicationController
end
ActiveRecord::Base.transaction do
- begin
- @homework = HomeworkCommon.new(homework_params)
- @homework.reference_answer = params[:reference_answer].to_s.strip
- @homework.homework_type = @homework_type
- @homework.user_id = current_user.id
- @homework.course_id = @course.id
-
- homework_detail_manual = HomeworkDetailManual.new
- @homework.homework_detail_manual = homework_detail_manual
- homework_detail_manual.te_proportion = 0.7
- homework_detail_manual.ta_proportion = 0.3
-
- if @homework_type == 3
- homework_detail_group = HomeworkDetailGroup.new(min_num: params[:min_num].to_i, max_num: params[:max_num].to_i,
- base_on_project: params[:base_on_project])
- @homework.homework_detail_group = homework_detail_group
- end
+ @homework = HomeworkCommon.new(homework_params)
+ @homework.reference_answer = params[:reference_answer].to_s.strip
+ @homework.homework_type = @homework_type
+ @homework.user_id = current_user.id
+ @homework.course_id = @course.id
+
+ homework_detail_manual = HomeworkDetailManual.new
+ @homework.homework_detail_manual = homework_detail_manual
+ homework_detail_manual.te_proportion = 0.7
+ homework_detail_manual.ta_proportion = 0.3
+
+ if @homework_type == 3
+ homework_detail_group = HomeworkDetailGroup.new(min_num: params[:min_num].to_i, max_num: params[:max_num].to_i,
+ base_on_project: params[:base_on_project])
+ @homework.homework_detail_group = homework_detail_group
+ end
- if @homework.save!
- homework_detail_manual.save! if homework_detail_manual
- homework_detail_group.save! if homework_detail_group
+ if @homework.save!
+ homework_detail_manual.save! if homework_detail_manual
+ homework_detail_group.save! if homework_detail_group
- # 作业描述的附件
- Attachment.associate_container(params[:attachment_ids], @homework.id, @homework.class) if params[:attachment_ids]
- # 作业参考答案的附件
- Attachment.associate_container(params[:reference_attachment_ids], @homework.id, @homework.class, 2) if params[:reference_attachment_ids]
+ # 作业描述的附件
+ Attachment.associate_container(params[:attachment_ids], @homework.id, @homework.class) if params[:attachment_ids]
+ # 作业参考答案的附件
+ Attachment.associate_container(params[:reference_attachment_ids], @homework.id, @homework.class, 2) if params[:reference_attachment_ids]
- HomeworksService.new.create_works_list(@homework, @course)
- else
- tip_exception("创建失败")
- end
- rescue Exception => e
- uid_logger(e.message)
- tip_exception(e.message)
- raise ActiveRecord::Rollback
+ HomeworksService.new.create_works_list(@homework, @course)
+ else
+ tip_exception("创建失败")
end
end
end
@@ -432,30 +414,25 @@ class HomeworkCommonsController < ApplicationController
end
ActiveRecord::Base.transaction do
- begin
- @homework.update_attributes!(homework_params)
- @homework.reference_answer = params[:reference_answer].to_s.strip
-
- if @homework.homework_type == "group"
- homework_detail_group = @homework.homework_detail_group
- param_min = params[:min_num].to_i
- param_max = params[:max_num].to_i
- homework_detail_group.min_num = @homework.has_commit_work ? [param_min, homework_detail_group.min_num].min : param_min
- homework_detail_group.max_num = @homework.has_commit_work ? [param_max, homework_detail_group.max_num].max : param_max
- homework_detail_group.base_on_project = params[:base_on_project] unless @homework.has_relate_project
- homework_detail_group.save!
- end
- # 作业描述的附件
- Attachment.associate_container(params[:attachment_ids], @homework.id, @homework.class) if params[:attachment_ids]
- # 作业参考答案的附件
- Attachment.associate_container(params[:reference_attachment_ids], @homework.id, @homework.class, 2) if params[:reference_attachment_ids]
-
- normal_status(0, "更新成功")
- rescue Exception => e
- uid_logger(e.message)
- tip_exception(e.message)
- raise ActiveRecord::Rollback
+ @homework.update_attributes!(homework_params)
+ @homework.reference_answer = params[:reference_answer].to_s.strip
+
+ if @homework.homework_type == "group"
+ homework_detail_group = @homework.homework_detail_group
+ param_min = params[:min_num].to_i
+ param_max = params[:max_num].to_i
+ homework_detail_group.min_num = @homework.has_commit_work ? [param_min, homework_detail_group.min_num].min : param_min
+ homework_detail_group.max_num = @homework.has_commit_work ? [param_max, homework_detail_group.max_num].max : param_max
+ homework_detail_group.base_on_project = params[:base_on_project] unless @homework.has_relate_project
+ homework_detail_group.save!
end
+ # 作业描述的附件
+ Attachment.associate_container(params[:attachment_ids], @homework.id, @homework.class) if params[:attachment_ids]
+ # 作业参考答案的附件
+ Attachment.associate_container(params[:reference_attachment_ids], @homework.id, @homework.class, 2) if params[:reference_attachment_ids]
+
+ normal_status(0, "更新成功")
+
end
end
@@ -467,304 +444,298 @@ class HomeworkCommonsController < ApplicationController
end
def update_settings
- begin
- # 课堂结束后不能再更新
- unless @course.is_end
-
- # 发布设置
- UpdateHomeworkPublishSettingService.call(@homework, publish_params)
-
- # 补交设置
- tip_exception("缺少allow_late参数") if params[:allow_late].nil?
- tip_exception("缺少late_penalty参数") if params[:allow_late] && params[:late_penalty].blank?
- tip_exception("缺少late_time参数") if params[:allow_late] && params[:late_time].blank?
-
- current_late_penalty = @homework.late_penalty
- if params[:allow_late]
- tip_exception("补交结束时间必须晚于截止时间") if params[:late_time] <= strf_time(@homework.end_time)
- tip_exception("补交结束时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @course.end_date.present? && params[:late_time] >
- strf_time(@course.end_date.end_of_day)
- tip_exception("迟交扣分不能小于0") if params[:late_penalty] && params[:late_penalty].to_i < 0
+ # 课堂结束后不能再更新
+ unless @course.is_end
+
+ # 发布设置
+ UpdateHomeworkPublishSettingService.call(@homework, publish_params)
+
+ # 补交设置
+ tip_exception("缺少allow_late参数") if params[:allow_late].nil?
+ tip_exception("缺少late_penalty参数") if params[:allow_late] && params[:late_penalty].blank?
+ tip_exception("缺少late_time参数") if params[:allow_late] && params[:late_time].blank?
+
+ current_late_penalty = @homework.late_penalty
+ if params[:allow_late]
+ tip_exception("补交结束时间必须晚于截止时间") if params[:late_time] <= strf_time(@homework.end_time)
+ tip_exception("补交结束时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @course.end_date.present? && params[:late_time] >
+ strf_time(@course.end_date.end_of_day)
+ tip_exception("迟交扣分不能小于0") if params[:late_penalty] && params[:late_penalty].to_i < 0
+
+ @homework.allow_late = true
+ @homework.late_time = params[:late_time]
+ @homework.late_penalty = params[:late_penalty].to_i
+ else
+ @homework.allow_late = false
+ @homework.late_penalty = 0
+ @homework.late_time = nil
+ end
- @homework.allow_late = true
- @homework.late_time = params[:late_time]
- @homework.late_penalty = params[:late_penalty].to_i
- else
- @homework.allow_late = false
- @homework.late_penalty = 0
- @homework.late_time = nil
+ # 迟交扣分有变动则更新迟交学生的成绩
+ late_penalty_change = @homework.late_penalty != current_late_penalty
+
+ if @homework.homework_type == "practice"
+
+ # 实训作业的评分设置
+ tip_exception("总分值不能为空") if params[:total_score].blank?
+ tip_exception("总分值不能小于0") if params[:total_score].to_i < 0
+ tip_exception("缺少answer_open_evaluation参数") if params[:answer_open_evaluation].nil?
+ tip_exception("缺少work_efficiency参数") if params[:work_efficiency].nil?
+ tip_exception("缺少eff_score参数") if params[:work_efficiency] && params[:eff_score].blank?
+ tip_exception("效率分不能小于等于0") if params[:work_efficiency] && params[:eff_score] && params[:eff_score].to_f <= 0
+ tip_exception("效率分不能大于总分值") if params[:work_efficiency] && params[:eff_score] && params[:eff_score].to_f.round(2) > params[:total_score].to_f.round(2)
+ tip_exception("缺少shixun_evaluation参数") if params[:shixun_evaluation].blank?
+ tip_exception("缺少challenge_settings参数") if params[:challenge_settings].blank?
+ # tip_exception("缺少challenge_id参数") if params[:challenge_settings][:challenge_id].blank?
+ # tip_exception("缺少challenge_score参数") if params[:challenge_settings][:challenge_score].blank?
+ # tip_exception("challenge_id参数的长度与challenge_score参数的长度不匹配") if
+ # params[:challenge_settings][:challenge_score].length != params[:challenge_settings][:challenge_id].length
+
+ sum_challenge_score = params[:challenge_settings].pluck(:challenge_score).reject(&:blank?)&.map {|score| score.to_f}.sum
+ total_score = params[:work_efficiency] ? (params[:eff_score].to_f + sum_challenge_score) : sum_challenge_score
+ tip_exception("分值之和必须等于总分值:#{params[:total_score]}分") if params[:total_score].to_f.round(2) != total_score.to_f.round(2)
+
+ current_eff_score = @homework.eff_score.to_f.round(2)
+ @homework.total_score = params[:total_score]
+ @homework.work_efficiency = params[:work_efficiency]
+ @homework.eff_score = params[:work_efficiency] ? params[:eff_score].to_f.round(2) : 0
+
+ update_eff_score = current_eff_score.round(2) != @homework.eff_score.round(2)
+
+ if @homework_detail_manual.answer_open_evaluation != params[:answer_open_evaluation]
+ @homework_detail_manual.answer_open_evaluation = params[:answer_open_evaluation]
+ score_change = true
end
- # 迟交扣分有变动则更新迟交学生的成绩
- late_penalty_change = @homework.late_penalty != current_late_penalty
-
- if @homework.homework_type == "practice"
-
- # 实训作业的评分设置
- tip_exception("总分值不能为空") if params[:total_score].blank?
- tip_exception("总分值不能小于0") if params[:total_score].to_i < 0
- tip_exception("缺少answer_open_evaluation参数") if params[:answer_open_evaluation].nil?
- tip_exception("缺少work_efficiency参数") if params[:work_efficiency].nil?
- tip_exception("缺少eff_score参数") if params[:work_efficiency] && params[:eff_score].blank?
- tip_exception("效率分不能小于等于0") if params[:work_efficiency] && params[:eff_score] && params[:eff_score].to_f <= 0
- tip_exception("效率分不能大于总分值") if params[:work_efficiency] && params[:eff_score] && params[:eff_score].to_f.round(2) > params[:total_score].to_f.round(2)
- tip_exception("缺少shixun_evaluation参数") if params[:shixun_evaluation].blank?
- tip_exception("缺少challenge_settings参数") if params[:challenge_settings].blank?
- # tip_exception("缺少challenge_id参数") if params[:challenge_settings][:challenge_id].blank?
- # tip_exception("缺少challenge_score参数") if params[:challenge_settings][:challenge_score].blank?
- # tip_exception("challenge_id参数的长度与challenge_score参数的长度不匹配") if
- # params[:challenge_settings][:challenge_score].length != params[:challenge_settings][:challenge_id].length
-
- sum_challenge_score = params[:challenge_settings].pluck(:challenge_score).reject(&:blank?)&.map{|score| score.to_f}.sum
- total_score = params[:work_efficiency] ? (params[:eff_score].to_f + sum_challenge_score) : sum_challenge_score
- tip_exception("分值之和必须等于总分值:#{params[:total_score]}分") if params[:total_score].to_f.round(2) != total_score.to_f.round(2)
-
- current_eff_score = @homework.eff_score.to_f.round(2)
- @homework.total_score = params[:total_score]
- @homework.work_efficiency = params[:work_efficiency]
- @homework.eff_score = params[:work_efficiency] ? params[:eff_score].to_f.round(2) : 0
-
- update_eff_score = current_eff_score.round(2) != @homework.eff_score.round(2)
-
- if @homework_detail_manual.answer_open_evaluation != params[:answer_open_evaluation]
- @homework_detail_manual.answer_open_evaluation = params[:answer_open_evaluation]
- score_change = true
- end
-
- @homework_detail_manual.shixun_evaluation = params[:shixun_evaluation].to_i
-
- if params[:challenge_settings]
- params[:challenge_settings].each do |challenge|
- setting = @homework.homework_challenge_settings.find_by(challenge_id: challenge[:challenge_id])
- score = challenge[:challenge_score]
- if setting && setting.score != score
- score_change = true
- setting.update_attributes!(score: score)
- elsif setting.blank?
- score_change = true
- HomeworkChallengeSetting.create!(homework_common_id: @homework.id, challenge_id: challenge[:challenge_id],
- shixun_id: @homework.homework_commons_shixun.try(:shixun_id), score: score)
- end
- end
+ @homework_detail_manual.shixun_evaluation = params[:shixun_evaluation].to_i
- if @homework.homework_challenge_settings.where.not(challenge_id: params[:challenge_settings].pluck(:challenge_id)).count > 0
+ if params[:challenge_settings]
+ params[:challenge_settings].each do |challenge|
+ setting = @homework.homework_challenge_settings.find_by(challenge_id: challenge[:challenge_id])
+ score = challenge[:challenge_score]
+ if setting && setting.score != score
score_change = true
- @homework.homework_challenge_settings.where.not(challenge_id: params[:challenge_settings].pluck(:challenge_id)).destroy_all
+ setting.update_attributes!(score: score)
+ elsif setting.blank?
+ score_change = true
+ HomeworkChallengeSetting.create!(homework_common_id: @homework.id, challenge_id: challenge[:challenge_id],
+ shixun_id: @homework.homework_commons_shixun.try(:shixun_id), score: score)
end
end
- # 公开设置
- tip_exception("缺少score_open参数") if params[:score_open].nil?
- @homework.score_open = params[:score_open]
-
- @homework.save!
- if score_change && @homework.end_or_late_none_group
- UpdateShixunWorkScoreJob.perform_later(@homework.id)
- elsif update_eff_score && (@homework.end_or_late_none_group || @homework.max_efficiency > 0)
- # 更新所有学生的效率分(作业允许补交且补交已截止 或者 作业不允许补交且提交已截止 或者作业已计算过效率分)
- HomeworksService.new.update_student_eff_score HomeworkCommon.find_by(id: @homework.id)
+ if @homework.homework_challenge_settings.where.not(challenge_id: params[:challenge_settings].pluck(:challenge_id)).count > 0
+ score_change = true
+ @homework.homework_challenge_settings.where.not(challenge_id: params[:challenge_settings].pluck(:challenge_id)).destroy_all
end
+ end
- # 更新迟交扣分
- if !(score_change || update_eff_score) && late_penalty_change
- @homework.student_works.where(work_status: 2).each do |work|
- work.late_penalty = @homework.late_penalty
- work.save!
- end
- end
+ # 公开设置
+ tip_exception("缺少score_open参数") if params[:score_open].nil?
+ @homework.score_open = params[:score_open]
- unless @homework.allow_late
- @homework.student_works.where(work_status: 2).update_all(work_status: 1)
- end
+ @homework.save!
+ if score_change && @homework.end_or_late_none_group
+ UpdateShixunWorkScoreJob.perform_later(@homework.id)
+ elsif update_eff_score && (@homework.end_or_late_none_group || @homework.max_efficiency > 0)
+ # 更新所有学生的效率分(作业允许补交且补交已截止 或者 作业不允许补交且提交已截止 或者作业已计算过效率分)
+ HomeworksService.new.update_student_eff_score HomeworkCommon.find_by(id: @homework.id)
+ end
- @homework_detail_manual.save!
- @homework.save!
- else
+ # 更新迟交扣分
+ if !(score_change || update_eff_score) && late_penalty_change
+ @homework.student_works.where(work_status: 2).each do |work|
+ work.late_penalty = @homework.late_penalty
+ work.save!
+ end
+ end
- # 普通和分组作业的匿评设置
- current_absence_penalty = @homework_detail_manual.absence_penalty
- current_appeal_penalty = @homework_detail_manual.appeal_penalty
-
- # 匿评未开启前可以更新:是否开启匿评、匿评开始时间、匿评数
- if @homework_detail_manual.comment_status < 3
- tip_exception("缺少anonymous_comment参数") if params[:anonymous_comment].nil?
- # anonymous_comment :true 是启用,false 是不启用
- if params[:anonymous_comment]
- tip_exception("匿评开启时间不能为空") if params[:evaluation_start].blank?
- tip_exception("匿评开启时间不能早于截止时间") if params[:evaluation_start] < strf_time(@homework.end_time)
- tip_exception("匿评结束时间不能为空") if params[:evaluation_end].blank?
- tip_exception("匿评截止时间必须晚于匿评开启时间") if params[:evaluation_end] <= params[:evaluation_start]
- tip_exception("匿评截止时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @course.end_date.present? && params[:evaluation_end] >
- strf_time(@course.end_date.end_of_day)
- tip_exception("匿评数必须为正整数") if params[:evaluation_num].blank? || params[:evaluation_num].to_i < 1
- tip_exception("缺评扣分不能为空") if params[:absence_penalty].blank?
- tip_exception("缺评扣分不能小于0") if params[:absence_penalty].to_i < 0
- tip_exception("缺评扣分不能大于100") if params[:absence_penalty].to_i > 100
- end
+ unless @homework.allow_late
+ @homework.student_works.where(work_status: 2).update_all(work_status: 1)
+ end
- @homework.anonymous_comment = params[:anonymous_comment]
- @homework_detail_manual.evaluation_start = !@homework.anonymous_comment ? nil : params[:evaluation_start]
- @homework_detail_manual.evaluation_num = !@homework.anonymous_comment ? 0 : params[:evaluation_num]
-
- # 不启用匿评时还原申诉设置和教师、助教的评分比例
- unless @homework.anonymous_comment
- @homework.anonymous_appeal = false
- @homework_detail_manual.appeal_time = nil
- @homework_detail_manual.appeal_penalty = 0
- @homework_detail_manual.te_proportion = 1
- @homework_detail_manual.ta_proportion = 0
- end
+ @homework_detail_manual.save!
+ @homework.save!
+ else
+ # 普通和分组作业的匿评设置
+ current_absence_penalty = @homework_detail_manual.absence_penalty
+ current_appeal_penalty = @homework_detail_manual.appeal_penalty
+
+ # 匿评未开启前可以更新:是否开启匿评、匿评开始时间、匿评数
+ if @homework_detail_manual.comment_status < 3
+ tip_exception("缺少anonymous_comment参数") if params[:anonymous_comment].nil?
+ # anonymous_comment :true 是启用,false 是不启用
+ if params[:anonymous_comment]
+ tip_exception("匿评开启时间不能为空") if params[:evaluation_start].blank?
+ tip_exception("匿评开启时间不能早于截止时间") if params[:evaluation_start] < strf_time(@homework.end_time)
+ tip_exception("匿评结束时间不能为空") if params[:evaluation_end].blank?
+ tip_exception("匿评截止时间必须晚于匿评开启时间") if params[:evaluation_end] <= params[:evaluation_start]
+ tip_exception("匿评截止时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @course.end_date.present? && params[:evaluation_end] >
+ strf_time(@course.end_date.end_of_day)
+ tip_exception("匿评数必须为正整数") if params[:evaluation_num].blank? || params[:evaluation_num].to_i < 1
+ tip_exception("缺评扣分不能为空") if params[:absence_penalty].blank?
+ tip_exception("缺评扣分不能小于0") if params[:absence_penalty].to_i < 0
+ tip_exception("缺评扣分不能大于100") if params[:absence_penalty].to_i > 100
end
- # 匿评未截止时可以更新匿评结束时间
- if @homework_detail_manual.comment_status < 4
- tip_exception("匿评结束时间不能为空") if @homework.anonymous_comment && params[:evaluation_end].blank?
- tip_exception("匿评截止时间必须晚于匿评开启时间") if @homework.anonymous_comment &&
- params[:evaluation_end] <= strf_time(@homework_detail_manual.evaluation_start)
- tip_exception("匿评截止时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @homework.anonymous_comment &&
- @course.end_date.present? && params[:evaluation_end] > strf_time(@course.end_date.end_of_day)
+ @homework.anonymous_comment = params[:anonymous_comment]
+ @homework_detail_manual.evaluation_start = !@homework.anonymous_comment ? nil : params[:evaluation_start]
+ @homework_detail_manual.evaluation_num = !@homework.anonymous_comment ? 0 : params[:evaluation_num]
- @homework_detail_manual.evaluation_end = !@homework.anonymous_comment ? nil : params[:evaluation_end]
+ # 不启用匿评时还原申诉设置和教师、助教的评分比例
+ unless @homework.anonymous_comment
+ @homework.anonymous_appeal = false
+ @homework_detail_manual.appeal_time = nil
+ @homework_detail_manual.appeal_penalty = 0
+ @homework_detail_manual.te_proportion = 1
+ @homework_detail_manual.ta_proportion = 0
end
- # 作业未结束可以更新缺评扣分
- tip_exception("缺评扣分不能为空") if @homework.anonymous_comment && params[:absence_penalty].blank?
- tip_exception("缺评扣分不能小于0") if @homework.anonymous_comment && params[:absence_penalty].to_i < 0
- tip_exception("缺评扣分不能大于100") if @homework.anonymous_comment && params[:absence_penalty].to_i > 100
- @homework_detail_manual.absence_penalty = !@homework.anonymous_comment ? 0 : params[:absence_penalty].to_i
+ end
+ # 匿评未截止时可以更新匿评结束时间
+ if @homework_detail_manual.comment_status < 4
+ tip_exception("匿评结束时间不能为空") if @homework.anonymous_comment && params[:evaluation_end].blank?
+ tip_exception("匿评截止时间必须晚于匿评开启时间") if @homework.anonymous_comment &&
+ params[:evaluation_end] <= strf_time(@homework_detail_manual.evaluation_start)
+ tip_exception("匿评截止时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @homework.anonymous_comment &&
+ @course.end_date.present? && params[:evaluation_end] > strf_time(@course.end_date.end_of_day)
- # 匿评申诉设置
- # 匿评申诉未开启前可以更新:是否启用匿评申诉
- if @homework_detail_manual.comment_status < 4 && @homework.anonymous_comment
- tip_exception("缺少anonymous_appeal参数") if params[:anonymous_appeal].nil?
- @homework.anonymous_appeal = params[:anonymous_appeal]
- end
+ @homework_detail_manual.evaluation_end = !@homework.anonymous_comment ? nil : params[:evaluation_end]
+ end
+ # 作业未结束可以更新缺评扣分
+ tip_exception("缺评扣分不能为空") if @homework.anonymous_comment && params[:absence_penalty].blank?
+ tip_exception("缺评扣分不能小于0") if @homework.anonymous_comment && params[:absence_penalty].to_i < 0
+ tip_exception("缺评扣分不能大于100") if @homework.anonymous_comment && params[:absence_penalty].to_i > 100
+ @homework_detail_manual.absence_penalty = !@homework.anonymous_comment ? 0 : params[:absence_penalty].to_i
- # 匿评申诉未结束前可以更新:匿评申诉结束时间
- if @homework_detail_manual.comment_status < 5
- tip_exception("匿评申诉结束时间不能为空") if @homework.anonymous_appeal && params[:appeal_time].blank?
- tip_exception("匿评开启时间不能早于匿评截止时间") if @homework.anonymous_appeal &&
- params[:appeal_time] <= strf_time(@homework_detail_manual.evaluation_end)
- tip_exception("匿评申诉结束不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @homework.anonymous_appeal &&
- @course.end_date.present? && params[:appeal_time] > strf_time(@course.end_date.end_of_day)
- @homework_detail_manual.appeal_time = @homework.anonymous_appeal ? params[:appeal_time] : nil
- end
+ # 匿评申诉设置
+ # 匿评申诉未开启前可以更新:是否启用匿评申诉
+ if @homework_detail_manual.comment_status < 4 && @homework.anonymous_comment
+ tip_exception("缺少anonymous_appeal参数") if params[:anonymous_appeal].nil?
+ @homework.anonymous_appeal = params[:anonymous_appeal]
+ end
- # 作业未结束可以更新违规匿评扣分
- tip_exception("违规匿评扣分不能为空") if @homework.anonymous_appeal && params[:appeal_penalty].blank?
- tip_exception("违规匿评扣分不能小于0") if @homework.anonymous_appeal && params[:appeal_penalty].to_i < 0
- tip_exception("违规匿评扣分不能大于100") if @homework.anonymous_appeal && params[:appeal_penalty].to_i > 100
- @homework_detail_manual.appeal_penalty = @homework.anonymous_appeal ? params[:appeal_penalty].to_i : 0
-
- # 如果缺评扣分的设置有变更且匿评已截止
- absence_penalty_change = current_absence_penalty != @homework_detail_manual.absence_penalty &&
- @homework_detail_manual.comment_status >= 4
- # 如果违规匿评扣分的设置有变更且匿评已截止
- appeal_penalty_change = current_appeal_penalty != @homework_detail_manual.appeal_penalty &&
- @homework_detail_manual.comment_status >= 4
-
- # 评分设置
- tip_exception("助教评分模式不能为空") if params[:ta_mode].blank?
-
- # 助教评分模式的变更
- ta_mode_change = @homework_detail_manual.ta_mode != params[:ta_mode].to_i
- @homework_detail_manual.ta_mode = params[:ta_mode].to_i
-
- # 最终成绩组成
- tip_exception("最终成绩组成模式不能为空") if params[:final_mode].nil?
-
- final_mode_change = @homework_detail_manual.final_mode != params[:final_mode]
- @homework_detail_manual.final_mode = params[:final_mode]
- if !@homework_detail_manual.final_mode
- tip_exception("教师评分比例不能为空") if params[:te_proportion].blank?
- te_proportion = params[:te_proportion].to_f.round(2)
- tip_exception("教师评分比例不能小于0") if te_proportion < 0
- tip_exception("助教评分比例不能为空") if params[:ta_proportion].blank?
- ta_proportion = params[:ta_proportion].to_f.round(2)
- tip_exception("助教评分比例不能小于0") if ta_proportion < 0
- if !@homework.anonymous_comment
- tip_exception("评分比例之和不能大于100") if (te_proportion + ta_proportion) > 1.0
- else
- tip_exception("学生评分比例不能为空") if params[:st_proportion].blank?
- st_proportion = params[:st_proportion].to_f.round(2)
- tip_exception("学生评分比例不能小于0") if st_proportion < 0
- tip_exception("评分比例之和不能大于100") if (te_proportion + ta_proportion + st_proportion) > 1.0
- end
- proportion_change = @homework_detail_manual.te_proportion.round(2) != te_proportion ||
- @homework_detail_manual.ta_proportion.round(2) != ta_proportion
- @homework_detail_manual.te_proportion = te_proportion
- @homework_detail_manual.ta_proportion = ta_proportion
+ # 匿评申诉未结束前可以更新:匿评申诉结束时间
+ if @homework_detail_manual.comment_status < 5
+ tip_exception("匿评申诉结束时间不能为空") if @homework.anonymous_appeal && params[:appeal_time].blank?
+ tip_exception("匿评开启时间不能早于匿评截止时间") if @homework.anonymous_appeal &&
+ params[:appeal_time] <= strf_time(@homework_detail_manual.evaluation_end)
+ tip_exception("匿评申诉结束不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @homework.anonymous_appeal &&
+ @course.end_date.present? && params[:appeal_time] > strf_time(@course.end_date.end_of_day)
+
+ @homework_detail_manual.appeal_time = @homework.anonymous_appeal ? params[:appeal_time] : nil
+ end
+
+ # 作业未结束可以更新违规匿评扣分
+ tip_exception("违规匿评扣分不能为空") if @homework.anonymous_appeal && params[:appeal_penalty].blank?
+ tip_exception("违规匿评扣分不能小于0") if @homework.anonymous_appeal && params[:appeal_penalty].to_i < 0
+ tip_exception("违规匿评扣分不能大于100") if @homework.anonymous_appeal && params[:appeal_penalty].to_i > 100
+ @homework_detail_manual.appeal_penalty = @homework.anonymous_appeal ? params[:appeal_penalty].to_i : 0
+
+ # 如果缺评扣分的设置有变更且匿评已截止
+ absence_penalty_change = current_absence_penalty != @homework_detail_manual.absence_penalty &&
+ @homework_detail_manual.comment_status >= 4
+ # 如果违规匿评扣分的设置有变更且匿评已截止
+ appeal_penalty_change = current_appeal_penalty != @homework_detail_manual.appeal_penalty &&
+ @homework_detail_manual.comment_status >= 4
+
+ # 评分设置
+ tip_exception("助教评分模式不能为空") if params[:ta_mode].blank?
+
+ # 助教评分模式的变更
+ ta_mode_change = @homework_detail_manual.ta_mode != params[:ta_mode].to_i
+ @homework_detail_manual.ta_mode = params[:ta_mode].to_i
+
+ # 最终成绩组成
+ tip_exception("最终成绩组成模式不能为空") if params[:final_mode].nil?
+
+ final_mode_change = @homework_detail_manual.final_mode != params[:final_mode]
+ @homework_detail_manual.final_mode = params[:final_mode]
+ if !@homework_detail_manual.final_mode
+ tip_exception("教师评分比例不能为空") if params[:te_proportion].blank?
+ te_proportion = params[:te_proportion].to_f.round(2)
+ tip_exception("教师评分比例不能小于0") if te_proportion < 0
+ tip_exception("助教评分比例不能为空") if params[:ta_proportion].blank?
+ ta_proportion = params[:ta_proportion].to_f.round(2)
+ tip_exception("助教评分比例不能小于0") if ta_proportion < 0
+ if !@homework.anonymous_comment
+ tip_exception("评分比例之和不能大于100") if (te_proportion + ta_proportion) > 1.0
else
- @homework_detail_manual.te_proportion = 1
- @homework_detail_manual.ta_proportion = 0
+ tip_exception("学生评分比例不能为空") if params[:st_proportion].blank?
+ st_proportion = params[:st_proportion].to_f.round(2)
+ tip_exception("学生评分比例不能小于0") if st_proportion < 0
+ tip_exception("评分比例之和不能大于100") if (te_proportion + ta_proportion + st_proportion) > 1.0
end
- # 公开属性设置
- tip_exception("缺少work_public参数") if params[:work_public].nil?
- tip_exception("缺少score_open参数") if params[:score_open].nil?
- tip_exception("缺少answer_public参数") if params[:answer_public].nil?
- @homework.work_public = params[:work_public]
- @homework.score_open = params[:score_open]
- @homework.answer_public = params[:answer_public]
-
- @homework_detail_manual.save!
- @homework.save!
-
- # 迟交扣分、缺评扣分、违规匿评扣分、助教评分模式变更、最终成绩组成、评分比例变更都需要更新学生成绩
- if late_penalty_change || absence_penalty_change || appeal_penalty_change || ta_mode_change ||
- final_mode_change || proportion_change
-
- student_works = @homework.student_works.has_committed
- work_ids = student_works.pluck(:id)
-
- student_works.each do |student_work|
- # 迟交扣分
- student_work.late_penalty = student_work.work_status == 1 ? 0 : @homework.late_penalty
-
- # 缺评扣分的更新 如果之前的作业缺评扣分为0,则需重新计算缺评次数
- if absence_penalty_change
- absence_penalty_count = current_absence_penalty == 0 ? student_work.absence_count :
- (student_work.absence_penalty / current_absence_penalty).to_i
- student_work.absence_penalty = absence_penalty_count * @homework_detail_manual.absence_penalty
- end
+ proportion_change = @homework_detail_manual.te_proportion.round(2) != te_proportion ||
+ @homework_detail_manual.ta_proportion.round(2) != ta_proportion
+ @homework_detail_manual.te_proportion = te_proportion
+ @homework_detail_manual.ta_proportion = ta_proportion
+ else
+ @homework_detail_manual.te_proportion = 1
+ @homework_detail_manual.ta_proportion = 0
+ end
- # 违规匿评扣分 如果之前的作业违规扣分为0,则需重新计算违规匿评次数
- if appeal_penalty_change
- appeal_penalty_count = current_appeal_penalty == 0 ? student_work.appeal_count :
- (student_work.appeal_penalty / current_appeal_penalty).to_i
- student_work.appeal_penalty = appeal_penalty_count * @homework_detail_manual.appeal_penalty
- end
+ # 公开属性设置
+ tip_exception("缺少work_public参数") if params[:work_public].nil?
+ tip_exception("缺少score_open参数") if params[:score_open].nil?
+ tip_exception("缺少answer_public参数") if params[:answer_public].nil?
+ @homework.work_public = params[:work_public]
+ @homework.score_open = params[:score_open]
+ @homework.answer_public = params[:answer_public]
+
+ @homework_detail_manual.save!
+ @homework.save!
+
+ # 迟交扣分、缺评扣分、违规匿评扣分、助教评分模式变更、最终成绩组成、评分比例变更都需要更新学生成绩
+ if late_penalty_change || absence_penalty_change || appeal_penalty_change || ta_mode_change ||
+ final_mode_change || proportion_change
+
+ student_works = @homework.student_works.has_committed
+ work_ids = student_works.pluck(:id)
+
+ student_works.each do |student_work|
+ # 迟交扣分
+ student_work.late_penalty = student_work.work_status == 1 ? 0 : @homework.late_penalty
+
+ # 缺评扣分的更新 如果之前的作业缺评扣分为0,则需重新计算缺评次数
+ if absence_penalty_change
+ absence_penalty_count = current_absence_penalty == 0 ? student_work.absence_count :
+ (student_work.absence_penalty / current_absence_penalty).to_i
+ student_work.absence_penalty = absence_penalty_count * @homework_detail_manual.absence_penalty
+ end
- # 助教模式变更且有助教评分记录时才更新
- if ta_mode_change && student_work.student_works_scores.where("reviewer_role = 2 AND score IS NOT NULL").count > 0
- student_work.teaching_asistant_score = student_work.ta_score @homework_detail_manual.ta_mode
- end
+ # 违规匿评扣分 如果之前的作业违规扣分为0,则需重新计算违规匿评次数
+ if appeal_penalty_change
+ appeal_penalty_count = current_appeal_penalty == 0 ? student_work.appeal_count :
+ (student_work.appeal_penalty / current_appeal_penalty).to_i
+ student_work.appeal_penalty = appeal_penalty_count * @homework_detail_manual.appeal_penalty
+ end
- student_work.save!
+ # 助教模式变更且有助教评分记录时才更新
+ if ta_mode_change && student_work.student_works_scores.where("reviewer_role = 2 AND score IS NOT NULL").count > 0
+ student_work.teaching_asistant_score = student_work.ta_score @homework_detail_manual.ta_mode
end
- end
+ student_work.save!
+ end
end
- normal_status(0, "更新成功")
- else
- tip_exception("课堂已结束不能再更新")
+
end
+ normal_status(0, "更新成功")
+ else
+ tip_exception("课堂已结束不能再更新")
+ end
# rescue ActiveRecord::RecordInvalid
# render_error("保存失败")
# rescue ApplicationService::Error => ex
# uid_logger(ex.message)
# render_error(ex.message)
# raise ActiveRecord::Rollback
- rescue Exception => e
- uid_logger(e.backtrace)
- tip_exception(e.message)
- raise ActiveRecord::Rollback
- end
end
# 选用实训
@@ -799,7 +770,7 @@ class HomeworkCommonsController < ApplicationController
@total_count = @shixuns.size
## 分页参数
- page = params[:page] || 1
+ page = params[:page] || 1
@shixuns = @shixuns.reorder("shixuns.created_at desc").includes(:challenges, user: [user_extension: :school]).page(page).per(10)
end
@@ -822,15 +793,15 @@ class HomeworkCommonsController < ApplicationController
def subjects
@tags = Repertoire.where(nil).order("updated_at desc")
# select = params[:select] # 路径导航类型
- select = params[:type] # 路径导航类型
+ select = params[:type] # 路径导航类型
reorder = params[:order] || "myshixun_count"
sort = params[:sort] || "desc"
search = params[:search]
## 分页参数
- page = params[:page] || 1
+ page = params[:page] || 1
limit = params[:limit] || 15
- offset = (page.to_i-1) * limit
+ offset = (page.to_i - 1) * limit
# 最热排序
if reorder == "myshixun_count"
@@ -903,8 +874,8 @@ class HomeworkCommonsController < ApplicationController
# 为实训作业创建与stage同名的子目录
category = CourseSecondCategory.find_by(name: stage.name, course_id: @course.id, category_type: "shixun_homework") ||
- CourseSecondCategory.create!(name: stage.name, course_id: @course.id, category_type: "shixun_homework",
- course_module_id: course_module.id, position: course_module.course_second_categories.count + 1)
+ CourseSecondCategory.create!(name: stage.name, course_id: @course.id, category_type: "shixun_homework",
+ course_module_id: course_module.id, position: course_module.course_second_categories.count + 1)
# 去掉不对当前用户的单位公开的实训,已发布的实训
stage.shixuns.no_jupyter.where(id: shixun_ids).unhidden.each do |shixun|
@@ -935,16 +906,14 @@ class HomeworkCommonsController < ApplicationController
if params[:detail].blank?
tip_exception("缺少截止时间参数") if params[:end_time].blank?
tip_exception("截止时间不能早于当前时间") if params[:end_time] <= strf_time(Time.now)
- tip_exception("截止时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if
- @course.end_date.present? && params[:end_time] > strf_time(@course.end_date.end_of_day)
+ tip_exception("截止时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @course.end_date.present? && params[:end_time] > strf_time(@course.end_date.end_of_day)
else
tip_exception("缺少分班截止时间参数") if params[:group_end_times].blank?
- group_end_times = params[:group_end_times].reject(&:blank?)&.map{|time| time.to_time}
+ group_end_times = params[:group_end_times].reject(&:blank?)&.map {|time| time.to_time}
tip_exception("截止时间和分班参数的个数不一致") if group_end_times.length != group_ids.length
group_end_times.each do |time|
tip_exception("分班截止时间不能早于当前时间") if time <= Time.now
- tip_exception("分班截止时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if
- @course.end_date.present? && time > @course.end_date.end_of_day
+ tip_exception("分班截止时间不能晚于课堂结束时间(#{@course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if @course.end_date.present? && time > @course.end_date.end_of_day
end
end
@@ -955,94 +924,89 @@ class HomeworkCommonsController < ApplicationController
publish_groups = charge_group_ids & group_ids if group_ids
# ActiveRecord::Base.transaction do
- begin
- homeworks.each do |homework|
- # 作业未发布时
- if homework.homework_detail_manual.try(:comment_status) == 0
- if !params[:group_ids].blank?
-
- # 全选即统一设置,unified_setting为true
- if @course.course_groups.where(id: publish_groups).size == @course.course_groups.size &&
- ((params[:detail] && group_end_times.min == group_end_times.max) || params[:detail].blank?)
- homework.homework_group_settings.destroy_all
- homework.unified_setting = true
- homework.end_time = params[:detail] ? group_end_times.max : params[:end_time]
- else
- homework.unified_setting = false
- # 创建作业分班设置:homework_group_setting
- homework.create_homework_group_settings
-
- # 选中的分班设置的发布时间改为当前时间,截止时间改为传的截止时间参数
- if params[:detail]
- group_ids.each_with_index do |group_id, index|
- homework.homework_group_settings.find_by(course_group_id: group_id)&.update_attributes!(publish_time: Time.now,
- end_time: group_end_times[index])
- end
- else
- homework.homework_group_settings.where(course_group_id: publish_groups).update_all(publish_time: Time.now,
- end_time: params[:end_time])
- end
- # 发消息
- tiding_group_ids = publish_groups
- end
- else
- homework.homework_group_settings.destroy_all
- # students = @course.students
- end
-
- homework.publish_time = Time.now
-
- # 截止时间的处理
- if homework.end_time.nil?
- homework.end_time = params[:detail] ? group_end_times.max : params[:end_time]
- elsif homework.max_group_end_time
- homework.end_time = homework.max_group_end_time
- end
- homework.homework_detail_manual.update_attributes!(comment_status: 1)
-
- if homework.course_act.blank?
- CourseActivity.create!(user_id: homework.user_id, course_id: homework.course_id, course_act: homework)
- end
- # 发消息
- HomeworkCommonPushNotifyJob.perform_later(homework.id, tiding_group_ids)
+ homeworks.each do |homework|
+ # 作业未发布时
+ if homework.homework_detail_manual.try(:comment_status) == 0
+ if !params[:group_ids].blank?
+
+ # 全选即统一设置,unified_setting为true
+ if @course.course_groups.where(id: publish_groups).size == @course.course_groups.size &&
+ ((params[:detail] && group_end_times.min == group_end_times.max) || params[:detail].blank?)
+ homework.homework_group_settings.destroy_all
+ homework.unified_setting = true
+ homework.end_time = params[:detail] ? group_end_times.max : params[:end_time]
else
+ homework.unified_setting = false
+ # 创建作业分班设置:homework_group_setting
homework.create_homework_group_settings
- none_publish_settings = homework.homework_group_settings.where(course_group_id: publish_groups).none_published
+ # 选中的分班设置的发布时间改为当前时间,截止时间改为传的截止时间参数
if params[:detail]
group_ids.each_with_index do |group_id, index|
- none_publish_settings.find_by(course_group_id: group_id)&.update_attributes!(publish_time: Time.now,
- end_time: group_end_times[index])
+ homework.homework_group_settings.find_by(course_group_id: group_id)&.update_attributes!(publish_time: Time.now,
+ end_time: group_end_times[index])
end
else
- none_publish_settings.update_all(publish_time: Time.now, end_time: params[:end_time])
+ homework.homework_group_settings.where(course_group_id: publish_groups).update_all(publish_time: Time.now,
+ end_time: params[:end_time])
end
-
- if homework.max_group_end_time
- homework.end_time = homework.max_group_end_time
- end
- HomeworkCommonPushNotifyJob.perform_later(homework.id, none_publish_settings.pluck(:course_group_id))
+ # 发消息
+ tiding_group_ids = publish_groups
end
+ else
+ homework.homework_group_settings.destroy_all
+ # students = @course.students
+ end
+ homework.publish_time = Time.now
- if homework.end_time > Time.now && homework.homework_detail_manual.try(:comment_status) > 1
- homework.homework_detail_manual.update_attributes!(comment_status: 1)
- end
+ # 截止时间的处理
+ if homework.end_time.nil?
+ homework.end_time = params[:detail] ? group_end_times.max : params[:end_time]
+ elsif homework.max_group_end_time
+ homework.end_time = homework.max_group_end_time
+ end
+ homework.homework_detail_manual.update_attributes!(comment_status: 1)
- # 补交结束时间
- homework.late_time = Time.at(homework.end_time.to_i + 30*24*3600) if homework.allow_late && homework.late_time.nil?
+ if homework.course_act.blank?
+ CourseActivity.create!(user_id: homework.user_id, course_id: homework.course_id, course_act: homework)
+ end
+ # 发消息
+ HomeworkCommonPushNotifyJob.perform_later(homework.id, tiding_group_ids)
+ else
+ homework.create_homework_group_settings
- homework.save!
+ none_publish_settings = homework.homework_group_settings.where(course_group_id: publish_groups).none_published
+ if params[:detail]
+ group_ids.each_with_index do |group_id, index|
+ none_publish_settings.find_by(course_group_id: group_id)&.update_attributes!(publish_time: Time.now,
+ end_time: group_end_times[index])
+ end
+ else
+ none_publish_settings.update_all(publish_time: Time.now, end_time: params[:end_time])
+ end
- # 更新学生状态及成绩(手动点击计算)
- # HomeworkPublishUpdateWorkStatusJob.perform_later(tiding_group_ids, homework.id)
+ if homework.max_group_end_time
+ homework.end_time = homework.max_group_end_time
end
- normal_status(0, "发布成功")
- rescue Exception => e
- uid_logger(e.message)
- tip_exception("发布失败")
- raise ActiveRecord::Rollback
+ HomeworkCommonPushNotifyJob.perform_later(homework.id, none_publish_settings.pluck(:course_group_id))
end
+
+
+ if homework.end_time > Time.now && homework.homework_detail_manual.try(:comment_status) > 1
+ homework.homework_detail_manual.update_attributes!(comment_status: 1)
+ end
+
+ # 补交结束时间
+ homework.late_time = Time.at(homework.end_time.to_i + 30 * 24 * 3600) if homework.allow_late && homework.late_time.nil?
+
+ homework.save!
+
+ # 更新学生状态及成绩(手动点击计算)
+ # HomeworkPublishUpdateWorkStatusJob.perform_later(tiding_group_ids, homework.id)
+ end
+ normal_status(0, "发布成功")
+
# end
end
@@ -1051,9 +1015,9 @@ class HomeworkCommonsController < ApplicationController
charge_ids = @course.charge_group_ids(@current_user)
if @homework.end_immediately charge_ids
# 可立即截止的分班:统一设置则是用户管理的所有分班,否则是当前用户管理的分班中已发布且未截止的
- charge_group_ids = @course.charge_group_ids(@current_user) # 当前用户管理的分班
+ charge_group_ids = @course.charge_group_ids(@current_user) # 当前用户管理的分班
group_ids = @homework.unified_setting ? charge_group_ids :
- @homework.homework_group_settings.where(course_group_id: charge_group_ids).published_no_end.pluck(:course_group_id)
+ @homework.homework_group_settings.where(course_group_id: charge_group_ids).published_no_end.pluck(:course_group_id)
@course_groups = @course.course_groups.where(id: group_ids)
else
tip_exception("没有可截止的分班")
@@ -1074,56 +1038,50 @@ class HomeworkCommonsController < ApplicationController
group_ids = params[:group_ids]&.reject(&:blank?)&.map(&:to_i)
end_groups = charge_group_ids & group_ids if group_ids
- begin
- homeworks.each do |homework|
- ActiveRecord::Base.transaction do
- homework_detail_manual = homework.homework_detail_manual
-
- # 分组设置
- if !params[:group_ids].blank?
- # 确保之前是统一设置或者有新创建的分班的数据一致性
- homework.create_homework_group_settings
+ homeworks.each do |homework|
+ ActiveRecord::Base.transaction do
+ homework_detail_manual = homework.homework_detail_manual
- homework.unified_setting = false if homework.unified_setting && end_groups.length != @course.course_groups_count
+ # 分组设置
+ if !params[:group_ids].blank?
+ # 确保之前是统一设置或者有新创建的分班的数据一致性
+ homework.create_homework_group_settings
- # 已发布且未截止的分班
- none_end_settings = homework.homework_group_settings.where(course_group_id: end_groups).published_no_end
+ homework.unified_setting = false if homework.unified_setting && end_groups.length != @course.course_groups_count
- none_end_settings.update_all(end_time: time)
- student_works = homework.student_works.where(user_id: course_students.where(course_group_id: none_end_settings.
- pluck(:course_group_id)).pluck(:user_id)).has_committed if homework.homework_type == "practice"
+ # 已发布且未截止的分班
+ none_end_settings = homework.homework_group_settings.where(course_group_id: end_groups).published_no_end
- homework.end_time = homework.max_group_end_time
- if homework.end_time > time && homework_detail_manual.try(:comment_status) > 1
- homework_detail_manual.update_attributes!(comment_status: 1)
- end
+ none_end_settings.update_all(end_time: time)
+ student_works = homework.student_works.where(user_id: course_students.where(course_group_id: none_end_settings.
+ pluck(:course_group_id)).pluck(:user_id)).has_committed if homework.homework_type == "practice"
- # 统一设置
- elsif homework.unified_setting
- student_works = homework.student_works.has_committed if homework.homework_type == "practice"
- homework.end_time = time
+ homework.end_time = homework.max_group_end_time
+ if homework.end_time > time && homework_detail_manual.try(:comment_status) > 1
+ homework_detail_manual.update_attributes!(comment_status: 1)
end
- # homework_detail_manual.update_attributes!(comment_status: 2) if homework.end_time <= time
+ # 统一设置
+ elsif homework.unified_setting
+ student_works = homework.student_works.has_committed if homework.homework_type == "practice"
+ homework.end_time = time
+ end
+
+ # homework_detail_manual.update_attributes!(comment_status: 2) if homework.end_time <= time
- # 实训作业的作品需要计算是否迟交
- if homework.homework_type == "practice"
- # shixun = homework.shixuns.first
- # homework_challenge_settings = homework.homework_challenge_settings
- unless student_works.blank?
- student_works.joins(:myshixun).where("myshixuns.status != 1").update_all(late_penalty: homework.late_penalty) if homework.allow_late
- end
+ # 实训作业的作品需要计算是否迟交
+ if homework.homework_type == "practice"
+ # shixun = homework.shixuns.first
+ # homework_challenge_settings = homework.homework_challenge_settings
+ unless student_works.blank?
+ student_works.joins(:myshixun).where("myshixuns.status != 1").update_all(late_penalty: homework.late_penalty) if homework.allow_late
end
- homework.save!
end
- HomeworkEndUpdateScoreJob.perform_later(homework.id) if !homework.allow_late && homework.end_time <= time
+ homework.save!
end
- normal_status(0, "更新成功")
- rescue Exception => e
- uid_logger(e.message)
- tip_exception("操作失败")
- raise ActiveRecord::Rollback
+ HomeworkEndUpdateScoreJob.perform_later(homework.id) if !homework.allow_late && homework.end_time <= time
end
+ normal_status(0, "更新成功")
end
def set_public
@@ -1156,19 +1114,13 @@ class HomeworkCommonsController < ApplicationController
# 删除多个作业
def multi_destroy
ActiveRecord::Base.transaction do
- begin
- homeworks = @course.homework_commons.where(id: params[:homework_ids])
- homeworks.destroy_all
-
- # 这些写是因为model中的关联删除无法删除is_delete=0的作品
- StudentWork.where(homework_common_id: homeworks.pluck(:id)).destroy_all
- normal_status(0, "删除成功")
-
- rescue Exception => e
- uid_logger(e.message)
- tip_exception("删除失败")
- raise ActiveRecord::Rollback
- end
+ homeworks = @course.homework_commons.where(id: params[:homework_ids])
+ homeworks.destroy_all
+
+ # 这些写是因为model中的关联删除无法删除is_delete=0的作品
+ StudentWork.where(homework_common_id: homeworks.pluck(:id)).destroy_all
+ normal_status(0, "删除成功")
+
end
end
@@ -1178,41 +1130,35 @@ class HomeworkCommonsController < ApplicationController
homeworks.each do |homework|
ActiveRecord::Base.transaction do
- begin
- homework_bank = current_user.homework_banks.find_by(homework_common_id: homework.id)
- if homework_bank.present?
- # 如果作业加入过题库则更新参数
- if homework_bank.homework_type == 1
- homework_bank.update_attributes!(name: homework.name, description: homework.description,
- reference_answer: homework.reference_answer, course_list_id: @course.course_list_id)
- elsif homework_bank.homework_type == 3
- homework_detail_group = homework.homework_detail_group
- homework_bank.update_attributes!(name: homework.name, description: homework.description,
- reference_answer: homework.reference_answer, course_list_id: @course.course_list_id,
- min_num: homework_detail_group.min_num, max_num: homework_detail_group.max_num,
- base_on_project: homework_detail_group.base_on_project)
- end
-
- # 附件的更新
- homework_bank.attachments.destroy_all
- homework.attachments.each do |attachment|
- att = attachment.copy
- att.author_id = homework_bank.user_id
- att.copy_from = attachment.id
- homework_bank.attachments << att
- end
- else
- new_homework_bank = add_to_homework_bank_f homework
- new_homework_bank.save!
+ homework_bank = current_user.homework_banks.find_by(homework_common_id: homework.id)
+ if homework_bank.present?
+ # 如果作业加入过题库则更新参数
+ if homework_bank.homework_type == 1
+ homework_bank.update_attributes!(name: homework.name, description: homework.description,
+ reference_answer: homework.reference_answer, course_list_id: @course.course_list_id)
+ elsif homework_bank.homework_type == 3
+ homework_detail_group = homework.homework_detail_group
+ homework_bank.update_attributes!(name: homework.name, description: homework.description,
+ reference_answer: homework.reference_answer, course_list_id: @course.course_list_id,
+ min_num: homework_detail_group.min_num, max_num: homework_detail_group.max_num,
+ base_on_project: homework_detail_group.base_on_project)
+ end
- homework.update_attributes!(homework_bank_id: new_homework_bank.id)
+ # 附件的更新
+ homework_bank.attachments.destroy_all
+ homework.attachments.each do |attachment|
+ att = attachment.copy
+ att.author_id = homework_bank.user_id
+ att.copy_from = attachment.id
+ homework_bank.attachments << att
end
+ else
+ new_homework_bank = add_to_homework_bank_f homework
+ new_homework_bank.save!
- rescue Exception => e
- uid_logger(e.message)
- tip_exception(e.message)
- raise ActiveRecord::Rollback
+ homework.update_attributes!(homework_bank_id: new_homework_bank.id)
end
+
end
end
normal_status(0, "加入成功")
@@ -1229,7 +1175,7 @@ class HomeworkCommonsController < ApplicationController
# 班级作品查重
def homework_code_repeat
- tip_exception(-1,"分班id不能为空!") if params[:group_ids].nil?
+ tip_exception(-1, "分班id不能为空!") if params[:group_ids].nil?
shixun = @homework.shixuns.take
# 通过代码文件来判断语言
language = shixun.challenges.practice_type.pluck(:path).first
@@ -1247,16 +1193,16 @@ class HomeworkCommonsController < ApplicationController
games.each do |game|
game.game_codes.each do |game_code|
code_infos << {
- path: game_code.path,
- content: Base64.urlsafe_encode64(game_code.new_code.to_s, padding: false),
- passed_time: game.end_time.try(:strftime, '%Y-%m-%d %H:%M:%S')
+ path: game_code.path,
+ content: Base64.urlsafe_encode64(game_code.new_code.to_s, padding: false),
+ passed_time: game.end_time.try(:strftime, '%Y-%m-%d %H:%M:%S')
}
end
end
if code_infos.size != 0
user_lists << {
- user_id: user_id,
- code_info: code_infos
+ user_id: user_id,
+ code_info: code_infos
}
end
end
@@ -1270,13 +1216,13 @@ class HomeworkCommonsController < ApplicationController
normal_status("代码查重成功")
else
if result.status == 1
- tip_exception(-4,"代码查重异常,请稍后重试")
+ tip_exception(-4, "代码查重异常,请稍后重试")
else
- tip_exception(-3,"正在查重,请在几分钟后刷新页面查看结果")
+ tip_exception(-3, "正在查重,请在几分钟后刷新页面查看结果")
end
end
else
- tip_exception(-2,"平台目前支持java、python语言的查重
其他语言正在规划中,敬请期待")
+ tip_exception(-2, "平台目前支持java、python语言的查重
其他语言正在规划中,敬请期待")
end
end
@@ -1295,23 +1241,23 @@ class HomeworkCommonsController < ApplicationController
student_works = @homework.student_works.where("work_status > 0")
# 按分班id搜索
user_ids =
- if params[:group_ids]
- # 筛选了分班
- group_student_ids = @course.course_members.where(course_group_id: params[:group_ids]).pluck(:user_id)
- student_works.where(:user_id => group_student_ids).pluck(:user_id)
+ if params[:group_ids]
+ # 筛选了分班
+ group_student_ids = @course.course_members.where(course_group_id: params[:group_ids]).pluck(:user_id)
+ student_works.where(:user_id => group_student_ids).pluck(:user_id)
+ else
+ # 如果当前用户有分班 显示分班内的学生,没有则显示全部
+ user_ids = @course.user_group_students(current_user.id).pluck(:user_id)
+ if user_ids.present?
+ student_works.where(:user_id => user_ids).pluck(:user_id)
else
- # 如果当前用户有分班 显示分班内的学生,没有则显示全部
- user_ids = @course.user_group_students(current_user.id).pluck(:user_id)
- if user_ids.present?
- student_works.where(:user_id => user_ids).pluck(:user_id)
- else
- student_works.pluck(:user_id)
- end
+ student_works.pluck(:user_id)
end
+ end
# 查询作品数总数
@all_reviews_count = user_ids.count
@users_reviews = @homework.homework_review_results.where("code_rate >= 50.0")
- .where(:user_id => user_ids).joins(user: :user_extension)
+ .where(:user_id => user_ids).joins(user: :user_extension)
# 按学号和姓名搜索
if params[:search]
@users_reviews = @users_reviews.where("concat(lastname, firstname) like :keyword or student_id like :keyword", keyword: "%#{params[:search]}%")
@@ -1325,9 +1271,9 @@ class HomeworkCommonsController < ApplicationController
# 如果未分班被查重过,则显示未分班列
@non_course_group =
- if @homework.homework_group_reviews.where(course_group_id: 0).count > 0
- @course.course_members.where(role: 4, course_group_id: 0).count
- end
+ if @homework.homework_group_reviews.where(course_group_id: 0).count > 0
+ @course.course_members.where(role: 4, course_group_id: 0).count
+ end
# 最新一次的查重时间
@last_review_time = format_time @homework.homework_group_reviews.last.try(:created_at)
@@ -1353,38 +1299,38 @@ class HomeworkCommonsController < ApplicationController
homework_challenge_settings = @homework.homework_challenge_settings
@challenges = @shixun.challenges.where(id: homework_challenge_settings.pluck(:challenge_id), st: 0)
@challenges =
- @challenges.map do |challenge|
- code_rate = 0
- game_codes = results.code_info.select {|info| challenge.path.split(";").include?(info.origin_path)}
- # 先判断用户该关卡是否查重了 取多个待补充文件的平均值
- if game_codes.count > 0
- code_rate += game_codes.map(&:rate).sum / challenge.path.split(";").length
- end
- logger.info("#####game_codes: #{game_codes}")
- #target = game_codes.count > 0 ? game_codes[0].target_user_id : nil
- # 作品完成时间
- game = challenge.games.find_by(user_id: @user.id)
- end_time = game.end_time
- # 用户关卡的得分
- all_score = homework_challenge_settings.find_by(challenge_id: challenge.id).try(:score).to_f
- final_score = @student_work.work_challenge_score game, all_score, challenge.id
- # 抄袭用户
- copy_user = User.find_by_id(game_codes[0].try(:target_user_id))
- copy_end_time = copy_user.games.find_by(challenge_id: challenge.id).try(:end_time) if copy_user.present?
- # 代码部分
- code_list = []
- challenge.path.split(";").each do |path|
- if code_info.select{|info| path == info.origin_path}.size > 0
- info = code_info.select{|info| path == info.origin_path}[0]
- code_list << {path: path, origin_content: info.origin_content, target_content: info.target_content}
- end
+ @challenges.map do |challenge|
+ code_rate = 0
+ game_codes = results.code_info.select {|info| challenge.path.split(";").include?(info.origin_path)}
+ # 先判断用户该关卡是否查重了 取多个待补充文件的平均值
+ if game_codes.count > 0
+ code_rate += game_codes.map(&:rate).sum / challenge.path.split(";").length
+ end
+ logger.info("#####game_codes: #{game_codes}")
+ #target = game_codes.count > 0 ? game_codes[0].target_user_id : nil
+ # 作品完成时间
+ game = challenge.games.find_by(user_id: @user.id)
+ end_time = game.end_time
+ # 用户关卡的得分
+ all_score = homework_challenge_settings.find_by(challenge_id: challenge.id).try(:score).to_f
+ final_score = @student_work.work_challenge_score game, all_score, challenge.id
+ # 抄袭用户
+ copy_user = User.find_by_id(game_codes[0].try(:target_user_id))
+ copy_end_time = copy_user.games.find_by(challenge_id: challenge.id).try(:end_time) if copy_user.present?
+ # 代码部分
+ code_list = []
+ challenge.path.split(";").each do |path|
+ if code_info.select {|info| path == info.origin_path}.size > 0
+ info = code_info.select {|info| path == info.origin_path}[0]
+ code_list << {path: path, origin_content: info.origin_content, target_content: info.target_content}
end
- # TODO: 这里本来应该前端做的,但是现在页面已经刷不开了。
- {code_rate: code_rate, copy_user_id: copy_user.try(:id), end_time: end_time, final_score: final_score,
- all_score: all_score, copy_end_time: copy_end_time, copy_username: copy_user.try(:full_name),
- username: game.user.full_name, code_list: code_list, subject: challenge.subject, position: challenge.position,
- id: challenge.id}
end
+ # TODO: 这里本来应该前端做的,但是现在页面已经刷不开了。
+ {code_rate: code_rate, copy_user_id: copy_user.try(:id), end_time: end_time, final_score: final_score,
+ all_score: all_score, copy_end_time: copy_end_time, copy_username: copy_user.try(:full_name),
+ username: game.user.full_name, code_list: code_list, subject: challenge.subject, position: challenge.position,
+ id: challenge.id}
+ end
else
if results.status == 1
@@ -1461,8 +1407,8 @@ class HomeworkCommonsController < ApplicationController
user_rate = 0
# 计算每个关卡的相似度
challenges.each do |challenge|
- game_codes = results.user_lists.select{|user_list| user_list.user_id == user &&
- challenge.path.split(";").include?(user_list.origin_path)}
+ game_codes = results.user_lists.select {|user_list| user_list.user_id == user &&
+ challenge.path.split(";").include?(user_list.origin_path)}
# 先判断用户该关卡是否查重了 取多个待补充文件的平均值
if game_codes.count > 0
user_rate += game_codes.map(&:rate).sum / challenge.path.split(";").length
From ea9925f2b092b26c05343acba8d309ba1ee2e4f7 Mon Sep 17 00:00:00 2001
From: cxt <853663049@qq.com>
Date: Fri, 6 Mar 2020 20:48:58 +0800
Subject: [PATCH 2/4] =?UTF-8?q?=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/controllers/examination_banks_controller.rb | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/controllers/examination_banks_controller.rb b/app/controllers/examination_banks_controller.rb
index cc34d9fea..3df11a432 100644
--- a/app/controllers/examination_banks_controller.rb
+++ b/app/controllers/examination_banks_controller.rb
@@ -36,8 +36,8 @@ class ExaminationBanksController < ApplicationController
end
current_user.item_baskets.destroy_all
+ render_ok({exam_id: exam.id})
end
- render_ok
rescue ApplicationService::Error => ex
render_error(ex.message)
end
From 17ef1d3a2af2425c6f73e2428384ffef63cdffb2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com>
Date: Fri, 6 Mar 2020 21:08:28 +0800
Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=A2=98=E5=BA=93?=
=?UTF-8?q?=E5=8F=AF=E4=BB=A5=E8=BE=93=E5=85=A5=E7=A9=BA=E6=A0=BC?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../question/component/ChoquesEditor.js | 73 +++++--------------
.../question/component/JudquestionEditor.js | 60 +++++----------
.../question/component/SingleEditor.js | 64 ++++++----------
public/react/src/modules/tpm/NewHeader.js | 30 ++++----
4 files changed, 78 insertions(+), 149 deletions(-)
diff --git a/public/react/src/modules/question/component/ChoquesEditor.js b/public/react/src/modules/question/component/ChoquesEditor.js
index 725817d17..d2a0b231b 100644
--- a/public/react/src/modules/question/component/ChoquesEditor.js
+++ b/public/react/src/modules/question/component/ChoquesEditor.js
@@ -229,22 +229,9 @@ class ChoquesEditor extends Component{
var texts;
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
-
-
-
-
- if(this.isNull(_text)===true){
-
- return
- }
-
if (!reg.test(_text)) {
// 处理编辑器内容为空
- try {
- texts=JSON.stringify(value);
- }catch (e) {
texts="";
- }
} else {
if(_text.length>=500){
var result = _text.substring(0,450);
@@ -298,66 +285,46 @@ class ChoquesEditor extends Component{
// debugger
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
-
- if(this.isNull(_text)===true){
- this.setState({
- question_titleysl:""
- })
- return
- }
-
-
if (!reg.test(_text)) {
// 处理编辑器内容为空
- try {
- this.setState({
- question_titleysl: JSON.stringify(value)
- })
- }catch (e) {
this.setState({
question_titleysl:""
})
- }
} else {
// 提交到后台的内容需要处理一下;
- let texts="";
- texts = JSON.stringify(value);
- this.setState({
- question_titleysl:texts
- })
+ try {
+ let texts = JSON.stringify(value);
+ this.setState({
+ question_titleysl:texts
+ })
+ }catch (e) {
+ this.setState({
+ question_titleysl:""
+ })
+ }
}
}
onContentChanges=(value,quill)=>{
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
-
-
- if(this.isNull(_text)===true){
- this.setState({
- question_titlesysl:""
- })
- return
- }
-
if (!reg.test(_text)) {
// 处理编辑器内容为空
- try {
- this.setState({
- question_titlesysl: JSON.stringify(value)
- })
- }catch (e) {
this.setState({
question_titlesysl:""
})
- }
} else {
// 提交到后台的内容需要处理一下;
- let texts="";
+ try {
+ let texts = JSON.stringify(value);
+ this.setState({
+ question_titlesysl:texts
+ })
+ }catch (e) {
+ this.setState({
+ question_titlesysl:""
+ })
+ }
- texts = JSON.stringify(value);
- this.setState({
- question_titlesysl:texts
- })
}
}
diff --git a/public/react/src/modules/question/component/JudquestionEditor.js b/public/react/src/modules/question/component/JudquestionEditor.js
index 603fbd6e7..868700c6b 100644
--- a/public/react/src/modules/question/component/JudquestionEditor.js
+++ b/public/react/src/modules/question/component/JudquestionEditor.js
@@ -303,72 +303,50 @@ class JudquestionEditor extends Component{
// console.log(quill);
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
- // console.log(_text);
- // console.log(_text.length);
- if(this.isNull(_text)===true){
- this.setState({
- question_titleysl:""
- })
- return
- }
-
if (!reg.test(_text)) {
// 处理编辑器内容为空
- try {
this.setState({
- question_titleysl:JSON.stringify(value)
+ question_titleysl:""
+ })
+ // console.log("空");
+ } else {
+ // 提交到后台的内容需要处理一下;
+ try {
+ let texts = JSON.stringify(value);
+ this.setState({
+ question_titleysl:texts
})
}catch (e) {
this.setState({
question_titleysl:""
})
}
-
- // console.log("空");
- } else {
- // console.log("有");
-
- // 提交到后台的内容需要处理一下;
- let texts="";
- texts = JSON.stringify(value);
- this.setState({
- question_titleysl:texts
- })
}
}
onContentChanges=(value,quill)=>{
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
-
- if(this.isNull(_text)===true){
- this.setState({
- question_titlesysl:""
- })
- return
- }
if (!reg.test(_text)) {
// 处理编辑器内容为空
- try {
- this.setState({
- question_titlesysl:JSON.stringify(value)
- })
- }catch (e) {
this.setState({
question_titlesysl:""
})
- }
-
} else {
// 提交到后台的内容需要处理一下;
- let texts="";
+ try {
- texts = JSON.stringify(value);
- this.setState({
- question_titlesysl:texts
- })
+ let texts = JSON.stringify(value);
+ this.setState({
+ question_titlesysl:texts
+ })
+ }catch (e) {
+ this.setState({
+ question_titlesysl:""
+ })
+ }
}
}
render() {
diff --git a/public/react/src/modules/question/component/SingleEditor.js b/public/react/src/modules/question/component/SingleEditor.js
index 464eb19e0..fab9170b8 100644
--- a/public/react/src/modules/question/component/SingleEditor.js
+++ b/public/react/src/modules/question/component/SingleEditor.js
@@ -140,7 +140,13 @@ class SingleEditor extends Component{
// this.refs['titleEditor'].showError()
this.props.showNotification('请您输入题干');
return editordata;
+ }else{
+ console.log("question_titleysl");
+ console.log(question_titleysl);
}
+
+
+
for(let i = 0; i < question_choices.length; i++) {
if (!question_choices[i]) {
// this.refs[`optionEditor${i}`].showError()
@@ -244,6 +250,7 @@ class SingleEditor extends Component{
this.setState({ standard_answers })
}
onOptionContentChange = (value,quill,index) => {
+ debugger
if (index >= this.state.question_choices.length) {
// TODO 新建,然后删除CD选项,再输入题干,会调用到这里,且index是3
return;
@@ -251,18 +258,9 @@ class SingleEditor extends Component{
var texts;
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
-
-
- if(this.isNull(_text)===true){
- return
- }
if (!reg.test(_text)) {
// 处理编辑器内容为空
- try {
- texts= JSON.stringify(value)
- }catch (e) {
texts="";
- }
} else {
if(_text.length>=500){
var result = _text.substring(0,450);
@@ -315,61 +313,47 @@ class SingleEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
-
- if(this.isNull(_text)===true){
- this.setState({
- question_titleysl:""
- })
- return
- }
-
-
-
if (!reg.test(_text)) {
// 处理编辑器内容为空
- try {
- this.setState({
- question_titleysl: JSON.stringify(value)
- })
- }catch (e) {
this.setState({
question_titleysl:""
})
- }
} else {
+ try {
let texts = JSON.stringify(value);
- this.setState({
- question_titleysl:texts
- })
+ this.setState({
+ question_titleysl:texts===undefined|| null?"":texts
+ })
+ }catch (e) {
+ this.setState({
+ question_titleysl:""
+ })
+ }
}
}
onContentChanges=(value,quill)=>{
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
- if(this.isNull(_text)===true){
- this.setState({
- question_titlesysl:""
- })
- return
- }
+
if (!reg.test(_text)) {
// 处理编辑器内容为空
+ this.setState({
+ question_titlesysl:""
+ })
+ } else {
try {
+ let texts = JSON.stringify(value);
this.setState({
- question_titlesysl:JSON.stringify(value)
+ question_titlesysl:texts===undefined|| null?"":texts
})
}catch (e) {
this.setState({
question_titlesysl:""
})
}
- } else {
- let texts = JSON.stringify(value);
- this.setState({
- question_titlesysl:texts
- })
+
}
}
handleShowImage = (url) => {
diff --git a/public/react/src/modules/tpm/NewHeader.js b/public/react/src/modules/tpm/NewHeader.js
index 8d3c85378..dccdbc5a7 100644
--- a/public/react/src/modules/tpm/NewHeader.js
+++ b/public/react/src/modules/tpm/NewHeader.js
@@ -1075,21 +1075,21 @@ submittojoinclass=(value)=>{
`
}
- {/*{*/}
- {/* Periofters===true?*/}
- {/*