diff --git a/app/assets/javascripts/admins/laboratory_shixuns/index.js b/app/assets/javascripts/admins/laboratory_shixuns/index.js index f7f41c4d8..5fd4c2d72 100644 --- a/app/assets/javascripts/admins/laboratory_shixuns/index.js +++ b/app/assets/javascripts/admins/laboratory_shixuns/index.js @@ -63,16 +63,23 @@ $(document).on('turbolinks:load', function() { theme: 'bootstrap4', placeholder: '请输入实训名称/创建者检索', multiple: true, - minimumInputLength: 1, + closeOnSelect: false, ajax: { delay: 500, url: '/admins/laboratories/' + laboratoryId + '/shixuns_for_select', dataType: 'json', data: function(params){ - return { keyword: params.term }; + return { keyword: params.term, page: params.page || 1, per_page: 20 }; }, - processResults: function(data){ - return { results: data.shixuns } + processResults: function(data, params){ + params.page = params.page || 1; + + return { + results: data.shixuns, + pagination: { + more: (params.page * 20) < data.count + } + }; } }, templateResult: function (item) { diff --git a/app/assets/javascripts/admins/laboratory_subjects/index.js b/app/assets/javascripts/admins/laboratory_subjects/index.js index fda0d075f..a8b229d1f 100644 --- a/app/assets/javascripts/admins/laboratory_subjects/index.js +++ b/app/assets/javascripts/admins/laboratory_subjects/index.js @@ -85,16 +85,23 @@ $(document).on('turbolinks:load', function() { theme: 'bootstrap4', placeholder: '请输入课程名称/创建者检索', multiple: true, - minimumInputLength: 1, + closeOnSelect: false, ajax: { delay: 500, url: '/admins/laboratories/' + laboratoryId + '/subjects_for_select', dataType: 'json', data: function(params){ - return { keyword: params.term }; + return { keyword: params.term, page: params.page || 1, per_page: 20 } }, - processResults: function(data){ - return { results: data.subjects } + processResults: function(data, params){ + params.page = params.page || 1; + + return { + results: data.subjects, + pagination: { + more: (params.page * 20) < data.count + } + }; } }, templateResult: function (item) { diff --git a/app/controllers/admins/laboratories_controller.rb b/app/controllers/admins/laboratories_controller.rb index d75b2e11f..716275468 100644 --- a/app/controllers/admins/laboratories_controller.rb +++ b/app/controllers/admins/laboratories_controller.rb @@ -26,10 +26,12 @@ class Admins::LaboratoriesController < Admins::BaseController keyword = params[:keyword].to_s.strip if keyword.present? - like_sql = 'shixuns.name LIKE :keyword OR CONCAT(users.lastname, users.firstname) LIKE :keyword' - shixuns = shixuns.joins(:user).where(like_sql, keyword: "%#{keyword}%") + like_sql = 'shixuns.name LIKE :keyword OR CONCAT(users.lastname, users.firstname) LIKE :keyword '\ + 'OR mirror_repositories.name LIKE :keyword' + shixuns = shixuns.joins(:user, :mirror_repositories).where(like_sql, keyword: "%#{keyword}%") end + @count = shixuns.count @shixuns = paginate(shixuns.includes(:user)) end @@ -44,6 +46,7 @@ class Admins::LaboratoriesController < Admins::BaseController subjects = subjects.joins(:user).where(like_sql, keyword: "%#{keyword}%") end + @count = subjects.count @subjects = paginate(subjects.includes(:user)) end diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 5dd001f5a..dd8c7c5c0 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -1141,7 +1141,7 @@ class CoursesController < ApplicationController # 如果在该课堂已经存在学生身份,且邀请码为分班邀请码,则将其直接加入分班 existing_student.update_attributes(course_group_id: course_group.id) if course_group.present? else - correspond_teacher_exist = current_user.teacher_of_course? course + correspond_teacher_exist = current_user.none_admin_teacher_of_course? course new_student = CourseMember.new(user_id: current_user.id, course_id: course.id, role: 4) new_student.is_active = 0 if correspond_teacher_exist diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 2f616ec71..681684295 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -612,13 +612,27 @@ class ExercisesController < ApplicationController def adjust_score exercise_user = @exercise.exercise_users.find_by!(user_id: params[:user_id]) tip_exception("已提交的作品请去评阅页进行调分") if exercise_user.commit_status == 1 - tip_exception("分数不能为空") if params[:score].blank? - tip_exception("分数不能超过0-#{@exercise.question_scores}") if params[:score].to_f < 0 || params[:score].to_f.round(1) > @exercise.question_scores.round(1) + if @exercise.subjective_score > 0 + tip_exception("主观题成绩不能为空") if params[:subject_score].blank? + tip_exception("主观题成绩不能小于零") if params[:subject_score].to_f < 0 + tip_exception("主观题成绩不能大于总分值:#{@exercise.subjective_score}分") if params[:subject_score].to_f.round(1) > @exercise.subjective_score.round(1) + end + + if @exercise.objective_score > 0 + tip_exception("客观题成绩不能为空") if params[:objective_score].blank? + tip_exception("客观题成绩不能小于零") if params[:objective_score].to_f < 0 + tip_exception("客观题成绩不能大于总分值:#{@exercise.objective_score}分") if params[:objective_score].to_f.round(1) > @exercise.objective_score.round(1) + end ActiveRecord::Base.transaction do start_at_time = exercise_user.start_at || Time.now - exercise_user.update_attributes!(start_at: start_at_time, end_at: Time.now, status: 1, commit_status: 1, score: params[:score].to_f.round(2), commit_method: 5) - ExerciseUserScore.create!(exercise_id: @exercise.id, exercise_user_id: exercise_user.id, score: params[:score], comment: params[:comment]) + subjective_score = @exercise.subjective_score > 0 ? params[:subject_score].to_f.round(2) : 0 + objective_score = @exercise.objective_score > 0 ? params[:objective_score].to_f.round(2) : 0 + score = subjective_score + objective_score + exercise_user.update_attributes!(start_at: start_at_time, end_at: Time.now, status: 1, commit_status: 1, score: score, + subjective_score: subjective_score, objective_score: objective_score, commit_method: 5) + ExerciseUserScore.create!(exercise_id: @exercise.id, exercise_user_id: exercise_user.id, + subjective_score: subjective_score, objective_score: objective_score) normal_status("操作成功") end end diff --git a/app/controllers/graduation_tasks_controller.rb b/app/controllers/graduation_tasks_controller.rb index 864eac3f5..e8ad221be 100644 --- a/app/controllers/graduation_tasks_controller.rb +++ b/app/controllers/graduation_tasks_controller.rb @@ -149,6 +149,7 @@ class GraduationTasksController < ApplicationController else respond_to do |format| format.xlsx{ + set_export_cookies graduation_work_to_xlsx(@work_excel,@task,current_user) task_export_name_ = "#{current_user.real_name}_#{@course.name}_#{@task.name}_#{Time.now.strftime('%Y%m%d_%H%M%S')}" render xlsx: "#{task_export_name_.strip}",template: "graduation_tasks/tasks_list.xlsx.axlsx",locals: {table_columns:@head_cells_column, task_users:@task_cells_column} diff --git a/app/controllers/graduation_works_controller.rb b/app/controllers/graduation_works_controller.rb index d50885313..67f21e85c 100644 --- a/app/controllers/graduation_works_controller.rb +++ b/app/controllers/graduation_works_controller.rb @@ -379,8 +379,9 @@ class GraduationWorksController < ApplicationController end def adjust_score - tip_exception("分数不能为空") if params[:score].blank? - tip_exception("分数不能超过0-100") if params[:score].to_f < 0 || params[:score].to_f > 100 + tip_exception("成绩不能为空") if params[:score].blank? + tip_exception("成绩不能小于零") if params[:score].to_f < 0 + tip_exception("成绩不能大于100") if params[:score].to_f.round(1) > 100 ActiveRecord::Base.transaction do begin # 分数不为空的历史评阅都置为失效 diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 6d627df33..2b7b489f1 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -160,7 +160,7 @@ class HomeworkCommonsController < ApplicationController # 作品状态 0: 未提交, 1 按时提交, 2 延迟提交 if params[:work_status].present? - params_work_status = request.get? ? params[:work_status].split(",") : params[:work_status] + params_work_status = params[:work_status] work_status = params_work_status.map{|status| status.to_i} all_student_works = @student_works.left_joins(:myshixun) @student_works = all_student_works.where(work_status: work_status) @@ -171,7 +171,7 @@ class HomeworkCommonsController < ApplicationController # 分班情况 unless params[:course_group].blank? - group_ids = request.get? ? params[:course_group].split(",") : params[:course_group] + group_ids = params[:course_group] group_user_ids = @course.students.where(course_group_id: group_ids).pluck(:user_id) # 有分组只可能是老师身份查看列表 @student_works = @student_works.where(user_id: group_user_ids) diff --git a/app/controllers/messages_controller.rb b/app/controllers/messages_controller.rb index 3a8a25133..57a5c7fad 100644 --- a/app/controllers/messages_controller.rb +++ b/app/controllers/messages_controller.rb @@ -103,17 +103,19 @@ class MessagesController < ApplicationController return normal_status(403, "您没有权限进行该操作") if current_user != @message.author && !current_user.teacher_of_course?(@message.board.course) begin - email_notify = @message.email_notify ? 1 : @board.course.email_notify && params[:email_notify] + board = @message.board&.course&.boards.find_by!(id: params[:select_board_id]) + + email_notify = @message.email_notify ? 1 : @message.board&.course.email_notify && params[:email_notify] send_email = !@message.email_notify && email_notify - h = {is_md: true, email_notify: email_notify} + h = {is_md: true, email_notify: email_notify, board_id: board&.id} m_params = message_params.merge(h) @message.update_attributes(m_params) Attachment.associate_container(params[:attachment_ids], @message.id, @message.class.name) @message.update_content(params[:content]) - notify_course_students(@message, @board.course) if send_email + notify_course_students(@message, @message.board&.course) if send_email rescue Exception => e uid_logger_error(e.message) - tip_exception("修改失败") + tip_exception(e.message) raise ActiveRecord::Rollback end end diff --git a/app/controllers/student_works_controller.rb b/app/controllers/student_works_controller.rb index c45bca268..de764992b 100644 --- a/app/controllers/student_works_controller.rb +++ b/app/controllers/student_works_controller.rb @@ -533,10 +533,9 @@ class StudentWorksController < ApplicationController # 作品调分 def adjust_score - tip_exception("分数不能为空") if params[:score].blank? - tip_exception("分数不能超过0-100") if @homework.homework_type != "practice" && (params[:score].to_f < 0 || params[:score].to_f.round(1) > 100.round(1)) - tip_exception("已提交的作品请去评阅页进行调分") if @homework.homework_type == "practice" && @work.work_status > 0 - tip_exception("分数不能超过总分值#{@homework.total_score}") if @homework.homework_type == "practice" && (params[:score].to_f < 0 || params[:score].to_f.round(1) > @homework.total_score.round(1)) + tip_exception("成绩不能为空") if params[:score].blank? + tip_exception("成绩不能小于零") if params[:score].to_f < 0 + tip_exception("成绩不能大于100") if params[:score].to_f.round(1) > 100 ActiveRecord::Base.transaction do begin # 分数不为空的历史评阅都置为失效 diff --git a/app/models/user.rb b/app/models/user.rb index 5d9ccd0ba..abab82927 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -287,6 +287,11 @@ class User < ApplicationRecord course.course_members.exists?(user_id: id, role: [1,2,3], is_active: 1) || admin? || business? end + # 课堂的老师(创建者、老师、助教),不考虑超管和运营人员 + def none_admin_teacher_of_course?(course) + course.course_members.exists?(user_id: id, role: [1,2,3], is_active: 1) + end + # 课堂的老师(创建者、老师、助教),不用考虑当前身份 def teacher_of_course_non_active?(course) course.course_members.exists?(user_id: id, role: [1,2,3]) diff --git a/app/views/admins/laboratories/shixuns_for_select.json.jbuilder b/app/views/admins/laboratories/shixuns_for_select.json.jbuilder index de4f14cf8..872391bb6 100644 --- a/app/views/admins/laboratories/shixuns_for_select.json.jbuilder +++ b/app/views/admins/laboratories/shixuns_for_select.json.jbuilder @@ -1,3 +1,4 @@ +json.count @count json.shixuns do json.array! @shixuns do |shixun| json.extract! shixun, :id, :name, :status diff --git a/app/views/admins/laboratories/subjects_for_select.json.jbuilder b/app/views/admins/laboratories/subjects_for_select.json.jbuilder index c35f0255b..2395eb30c 100644 --- a/app/views/admins/laboratories/subjects_for_select.json.jbuilder +++ b/app/views/admins/laboratories/subjects_for_select.json.jbuilder @@ -1,3 +1,4 @@ +json.count @count json.subjects do json.array! @subjects do |subject| json.extract! subject, :id, :name, :status diff --git a/app/views/admins/shared/_sidebar.html.erb b/app/views/admins/shared/_sidebar.html.erb index a1dab9afe..f78b52ac7 100644 --- a/app/views/admins/shared/_sidebar.html.erb +++ b/app/views/admins/shared/_sidebar.html.erb @@ -1,10 +1,10 @@ <% sidebar_collapse = request.cookies['admin_sidebar_collapse'].to_s == 'true' %>