From 9130111b2c97743bd4b17287fa9d52845f0c4bf9 Mon Sep 17 00:00:00 2001 From: cxt Date: Fri, 6 Jan 2017 15:00:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=9E=E8=B5=9B=E6=8F=90=E4=BA=A4=E7=9A=84?= =?UTF-8?q?=E8=AF=84=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contestant_works_controller.rb | 27 ++++++-- app/controllers/works_controller.rb | 2 +- app/helpers/application_helper.rb | 4 ++ app/helpers/contestant_works_helper.rb | 11 ++- app/models/contestant_work_score.rb | 1 + app/models/user.rb | 7 ++ .../contestant_works/_add_score.html.erb | 9 +-- .../_contest_evaluation_group.html.erb | 9 +++ .../_contest_evaluation_group_work.html.erb | 68 +++++++++++++++++++ .../_contest_evaluation_title.html.erb | 29 ++++++++ .../_contest_evaluation_un_group.html.erb | 25 ++++--- ..._contest_evaluation_un_group_work.html.erb | 45 +++++++++--- .../_contest_evaluation_un_title.html.erb | 63 ++++++++--------- .../_contest_evaluation_un_work.html.erb | 40 ++++++++--- .../_contest_evaluation_work.html.erb | 33 +++++++++ .../_contestant_work_list.html.erb | 12 +++- .../_contestant_work_score.html.erb | 10 ++- app/views/contestant_works/_show.html.erb | 24 +++---- app/views/contestant_works/add_score.js.erb | 4 +- app/views/contestant_works/show.js.erb | 2 +- ...4520_add_judge_score_to_contestant_work.rb | 5 ++ public/stylesheets/css/contest.css | 27 +++++++- 22 files changed, 349 insertions(+), 108 deletions(-) create mode 100644 app/views/contestant_works/_contest_evaluation_group.html.erb create mode 100644 app/views/contestant_works/_contest_evaluation_group_work.html.erb create mode 100644 app/views/contestant_works/_contest_evaluation_title.html.erb create mode 100644 app/views/contestant_works/_contest_evaluation_work.html.erb create mode 100644 db/migrate/20170106024520_add_judge_score_to_contestant_work.rb diff --git a/app/controllers/contestant_works_controller.rb b/app/controllers/contestant_works_controller.rb index fd4e3264b..777d87cd8 100644 --- a/app/controllers/contestant_works_controller.rb +++ b/app/controllers/contestant_works_controller.rb @@ -48,10 +48,13 @@ class ContestantWorksController < ApplicationController @all_homework_commons = @contest.works.order("created_at desc") @is_teacher = User.current.admin_of_contest?(@contest) || User.current.admin? @is_judge = User.current.judge_of_contest?(@contest) + @is_evaluation = @is_judge && @contestwork.work_status == 3 && @contestwork.online_evaluation @show_all = false - if @is_teacher || @is_judge + is_judge_open = @is_judge && (!@contestwork.online_evaluation || (@contestwork.online_evaluation && @contestwork.work_status == 4)) + is_contestant_open = User.current.contestant_of_contest?(@contest) && ((!@contestwork.online_evaluation && @contestwork.work_status == 2 && @contestwork.score_open) || (@contestwork.online_evaluation && @contestwork.work_status == 4 && @contestwork.score_open)) + if @is_teacher || is_judge_open || is_contestant_open # if @order == 'lastname' # @stundet_works = search_homework_member @homework.student_works.no_copy.select("student_works.*,student_works.work_score as score").joins(:user).order("CONVERT(lastname USING gbk) COLLATE gbk_chinese_ci #{@b_sort}, login #{@b_sort}"),@name # elsif @order == 'student_id' @@ -60,7 +63,15 @@ class ContestantWorksController < ApplicationController @stundet_works = @contestwork.contestant_works.no_copy.select("contestant_works.*,contestant_works.work_score as score").includes(:user => {:user_extensions => []}, :project => {}, :contestant_work_scores => {}).order("#{@order} #{@b_sort}") #end @show_all = true - elsif User.current.member_of_contest?(@contest) + elsif @is_evaluation + if @contestwork.work_detail_manual.evaluation_num == -1 + @stundet_works = @contestwork.contestant_works.no_copy.select("contestant_works.*,contestant_works.work_score as score").includes(:user => {:user_extensions => []}, :project => {}, :contestant_work_scores => {}).order("#{@order} #{@b_sort}") + else + @stundet_works = User.current.contestant_work_evaluation_distributions.map(&:contestant_work).select { |cwork| cwork.work_id == @contestwork.id} + end + elsif User.current.judge_of_contest?(@contest) + @stundet_works = [] + elsif User.current.contestant_of_contest?(@contest) if @contestwork.work_type == 3 pro = @contestwork.contestant_work_projects.where(:user_id => User.current.id).first if pro.nil? @@ -95,9 +106,10 @@ class ContestantWorksController < ApplicationController end def show - #@score = student_work_score @work,User.current + @score = ContestantWorkScore.where(:user_id => User.current.id,:contestant_work_id => @work.id,:reviewer_role => 2).last + @is_evaluation = User.current.judge_of_contest?(@contest) && @contestwork.work_status == 3 && @contestwork.online_evaluation @is_teacher = User.current.admin_of_contest?(@contest) || User.current.judge_of_contest?(@contest) || User.current.admin? - if @contestwork.work_status == 3 && User.current.judge_of_contest?(@contest) && @contestwork.online_evaluation + if @is_evaluation @student_work_scores = @work.contestant_work_scores.where("user_id = #{User.current.id} and reviewer_role = 2").order("updated_at desc") else @student_work_scores = contestant_work_score_record(@work) @@ -368,9 +380,10 @@ class ContestantWorksController < ApplicationController def add_score @is_last = params[:is_last] == "true" - @is_teacher = User.current.admin_of_contest?(@contest) || User.current.judge_of_contest?(@contest) || User.current.admin? + @is_evaluation = User.current.judge_of_contest?(@contest) && @contestwork.work_status == 3 && @contestwork.online_evaluation + #@is_teacher = User.current.admin_of_contest?(@contest) || User.current.judge_of_contest?(@contest) || User.current.admin? #老师、教辅可以随时评分,学生只能在匿评作业的匿评阶段进行评分 - render_403 and return unless User.current.judge_of_contest?(@contest) && @contestwork.work_status == 3 + render_403 and return unless @is_evaluation @is_last_a = @work.contestant_work_scores.empty? @new_score = ContestantWorkScore.new @new_score.score = params[:score].to_i @@ -403,6 +416,8 @@ class ContestantWorksController < ApplicationController @contestwork.update_column('updated_at', Time.now) update_contest_activity(@contestwork.class,@contestwork.id) update_user_activity(@contestwork.class,@contestwork.id) + judge_score = ContestantWorkScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM contestant_work_scores WHERE contestant_work_id = #{@work.id} AND reviewer_role = 2 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") + @work.judge_score = judge_score.first.score.nil? ? nil : judge_score.first.score.try(:round, 2).to_f if @work.save @work = @contestwork.contestant_works.select("contestant_works.*,contestant_works.work_score as score").where(:id => @work.id).first @count = @contestwork.contestant_works.has_committed.count diff --git a/app/controllers/works_controller.rb b/app/controllers/works_controller.rb index 75a30ba57..f56703bc7 100644 --- a/app/controllers/works_controller.rb +++ b/app/controllers/works_controller.rb @@ -257,11 +257,11 @@ class WorksController < ApplicationController score_valid = params[:score_valid].to_i == 1 ? true : false if score_valid != @contestwork.score_valid @contestwork.score_valid = score_valid + @contestwork.save @contestwork.contestant_works.has_committed.each do |c_work| c_work.save end end - @contestwork.save if params[:student_path] && params[:student_path] == "true" redirect_to contestant_works_path(:work => @contestwork.id) else diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 415913e93..e7fed44fb 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -3964,6 +3964,10 @@ def get_cw_status contest_work end elsif contest_work.work_status == 2 str += '提交已截止' + elsif contest_work.work_status == 3 + str += '在线评审中' + elsif contest_work.work_status == 4 + str += '评审已截止' end str end diff --git a/app/helpers/contestant_works_helper.rb b/app/helpers/contestant_works_helper.rb index aa60c304b..bbe9394b3 100644 --- a/app/helpers/contestant_works_helper.rb +++ b/app/helpers/contestant_works_helper.rb @@ -18,15 +18,14 @@ module ContestantWorksHelper def set_final_score contestwork, contestant_work if contestwork.online_evaluation if contestwork.score_valid - if ContestantWorkScore.find_by_sql("SELECT * FROM (SELECT * FROM contestant_work_scores WHERE contestant_work_id = #{contestant_work.id} AND reviewer_role = 2 ORDER BY created_at DESC) AS t GROUP BY user_id").count < 2 - judge_score = ContestantWorkScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM contestant_work_scores WHERE contestant_work_id = #{contestant_work.id} AND reviewer_role = 2 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") + contestant_work.work_score = contestant_work.judge_score + else + if ContestantWorkScore.find_by_sql("SELECT * FROM (SELECT * FROM contestant_work_scores WHERE contestant_work_id = #{contestant_work.id} AND reviewer_role = 2 ORDER BY created_at DESC) AS t GROUP BY user_id").count <= 2 + contestant_work.work_score = contestant_work.judge_score else judge_score = ContestantWorkScore.find_by_sql("SELECT (SUM(score)-MIN(score)-MAX(score))/(COUNT(score)-2) AS score FROM (SELECT * FROM (SELECT * FROM contestant_work_scores WHERE contestant_work_id = #{contestant_work.id} AND reviewer_role = 2 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") + contestant_work.work_score = judge_score.first.score.try(:round, 2).to_f end - @work.work_score = judge_score.first.score.try(:round, 2).to_f - else - judge_score = ContestantWorkScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM contestant_work_scores WHERE contestant_work_id = #{contestant_work.id} AND reviewer_role = 2 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") - @work.work_score = judge_score.first.score.try(:round, 2).to_f end else contestant_work.work_score = nil diff --git a/app/models/contestant_work_score.rb b/app/models/contestant_work_score.rb index 8aa29024f..6113a84b5 100644 --- a/app/models/contestant_work_score.rb +++ b/app/models/contestant_work_score.rb @@ -2,6 +2,7 @@ class ContestantWorkScore < ActiveRecord::Base belongs_to :contestant_work belongs_to :user attr_accessible :comment, :reviewer_role, :score, :contestant_work_id, :user_id + acts_as_attachable has_many :journals_for_messages end diff --git a/app/models/user.rb b/app/models/user.rb index ff7caff9d..135ffb0f2 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -114,6 +114,13 @@ class User < Principal has_many :apply_homeworks, :dependent => :destroy has_many :apply_resources, :dependent => :destroy #end + #竞赛 + has_many :contests, :dependent => :destroy + has_many :works, :dependent => :destroy + has_many :contestant_works, :dependent => :destroy + has_many :contestant_work_evaluation_distributions, :dependent => :destroy + has_many :contestant_work_scores + has_many :contestant_work_projects has_and_belongs_to_many :groups, :after_add => Proc.new {|user, group| group.user_added(user)}, :after_remove => Proc.new {|user, group| group.user_removed(user)} diff --git a/app/views/contestant_works/_add_score.html.erb b/app/views/contestant_works/_add_score.html.erb index 09eea4808..22f3bb008 100644 --- a/app/views/contestant_works/_add_score.html.erb +++ b/app/views/contestant_works/_add_score.html.erb @@ -1,4 +1,4 @@ -<%= form_for('new_form', :remote => true, :method => :post,:url => add_score_contestant_works_path(work.id),:id=>'add_score_'+work.id.to_s) do |f|%> +<%= form_for('new_form', :remote => true, :method => :post,:url => add_score_contestant_work_path(work.id),:id=>'add_score_'+work.id.to_s) do |f|%>
  • 评价: <%= f.text_area 'user_message', :class => 'hwork_ping_text', :id => 'score_comment_'+work.id.to_s, :placeholder => l(:text_caracters_maximum,:count=>500),:maxlength => 500 %> @@ -40,11 +40,4 @@ $('#about_hwork_'+id).html(''); } } - function submit_teacher_score(id){ - if (first_click_score) { - first_click_score = false; - $("#work_submit_"+id).parent().parent().submit(); - hideModal(); - } - } \ No newline at end of file diff --git a/app/views/contestant_works/_contest_evaluation_group.html.erb b/app/views/contestant_works/_contest_evaluation_group.html.erb new file mode 100644 index 000000000..2e72597d9 --- /dev/null +++ b/app/views/contestant_works/_contest_evaluation_group.html.erb @@ -0,0 +1,9 @@ +
    + <% @stundet_works.each_with_index do |student_work, i| %> +
    + <%= render :partial => 'contest_evaluation_group_work', :locals => {:student_work => student_work} %> +
    +
    + <% end %> +
    +
    \ No newline at end of file diff --git a/app/views/contestant_works/_contest_evaluation_group_work.html.erb b/app/views/contestant_works/_contest_evaluation_group_work.html.erb new file mode 100644 index 000000000..b4ce3b3b5 --- /dev/null +++ b/app/views/contestant_works/_contest_evaluation_group_work.html.erb @@ -0,0 +1,68 @@ +
    +
    + + + + <% if student_work.work_status %> + <%= get_status student_work.work_status %> + <% end %> + + + 评分 +
    + <% if @contestwork.work_detail_group.base_on_project %> +
    + 关联项目: +
    + <% if student_work.project.status != 9 && (student_work.project.is_public || User.current.member_of?(student_work.project) || User.current.admin? || User.current.admin_of_contest?(@contestwork.contest) || User.current.judge_of_contest?(@contestwork.contest)) %> + <%= link_to student_work.project.name, project_path(student_work.project.id), :class => 'link-blue fl hidden', :style => "max-width:550px;", :title => "项目名称", :target => "_blank" %> + <% elsif student_work.project.status != 9 %> + + <% else %> + <% end %> + <% project = student_work.project %> +
    + + + +

    <%= project.name %><%= project.status == 9 ? "(已删除)" : ""%>

    + +

    + 创建者:<%= project.creater %>成员数量:<%= project.members.count %>

    + <% project_score = project.project_score %> +

    项目综合得分:<%= project.status == 9 ? 0 : static_project_score(project_score).to_i %>

    + + <% if project.status != 9 %> +

    = 代码提交得分 + issue得分 + 资源得分 + 帖子得分

    + +

    = <%= (project_score.changeset_num||0) * 4 %> + + <%= project_score.issue_num * 4 + project_score.issue_journal_num %> + <%= project_score.attach_num * 5 %> + + <%= project_score.board_num * 2 + project_score.board_message_num + project_score.news_num %>

    + <% end %> +
    +
    +
    + <% end %> +
    +
    +
    +
    + 提交时间:<%= format_date(student_work.commit_time) %> + 人数:<%=student_work.contestant_work_projects.count %>人 + +
    +
    我的评分: + <% my_score = ContestantWorkScore.where(:user_id => User.current.id,:contestant_work_id => student_work.id,:reviewer_role => 2).last %> + <%= my_score.nil? ? "--" : format("%.1f",my_score.score)%> +
    +
    +
    +
    + + \ No newline at end of file diff --git a/app/views/contestant_works/_contest_evaluation_title.html.erb b/app/views/contestant_works/_contest_evaluation_title.html.erb new file mode 100644 index 000000000..67e2683ad --- /dev/null +++ b/app/views/contestant_works/_contest_evaluation_title.html.erb @@ -0,0 +1,29 @@ + + + + + + + + + + <%# end %> + <% @stundet_works.each_with_index do |student_work, i| %> + <% score_open = true %> + + <%= render :partial => "contest_evaluation_work", :locals => {:student_work => student_work, :index => i, :score_open => score_open} %> + + + + <% end %> +
    序号  + 姓名 + + 提交时间 + + 我的评分 + +
    +
    +
    +
    \ No newline at end of file diff --git a/app/views/contestant_works/_contest_evaluation_un_group.html.erb b/app/views/contestant_works/_contest_evaluation_un_group.html.erb index 9e75e4132..4a8c8a130 100644 --- a/app/views/contestant_works/_contest_evaluation_un_group.html.erb +++ b/app/views/contestant_works/_contest_evaluation_un_group.html.erb @@ -1,9 +1,16 @@ -
    - <% @stundet_works.each_with_index do |student_work, i| %> -
    - <%= render :partial => 'contest_evaluation_un_group_work', :locals => {:student_work => student_work} %> -
    -
    - <% end %> -
    -
    \ No newline at end of file +<% if @is_judge && @contestwork.online_evaluation && @contestwork.work_status < 3 %> +
    +
    +

    在线评审启动之前,无法查看具体作品

    +
    +<% else %> +
    + <% @stundet_works.each_with_index do |student_work, i| %> +
    + <%= render :partial => 'contest_evaluation_un_group_work', :locals => {:student_work => student_work} %> +
    +
    + <% end %> +
    +
    +<% end %> \ No newline at end of file diff --git a/app/views/contestant_works/_contest_evaluation_un_group_work.html.erb b/app/views/contestant_works/_contest_evaluation_un_group_work.html.erb index 603d0e788..b75319ae3 100644 --- a/app/views/contestant_works/_contest_evaluation_un_group_work.html.erb +++ b/app/views/contestant_works/_contest_evaluation_un_group_work.html.erb @@ -1,13 +1,14 @@
    - - - - <% if student_work.work_status %> - <%= get_status student_work.work_status %> - <% end %> + + + + <% if student_work.work_status %> + <%= get_status student_work.work_status %> + <% end %> + - + 查看
    <% if @contestwork.work_detail_group.base_on_project %>
    @@ -45,13 +46,37 @@
    -
    +
    提交时间:<%= format_date(student_work.commit_time) %> 人数:<%=student_work.contestant_work_projects.count %>人
    -
    评委评分:--
    -
    最终成绩:--
    +
    评委评分: + <%=student_work.judge_score.nil? ? "--" : format("%.1f",student_work.judge_score) %> + <% unless student_work.judge_score.nil? %> + (<%= student_work.contestant_work_scores.where(:reviewer_role => 2).group_by(&:user_id).count%>) + <% end %> +
    +
    最终成绩: + <%=student_work.work_score.nil? ? "--" : format("%.1f",student_work.work_score) %> + <% unless student_work.work_score.nil? %> +
    + + + 评委平均分 +  <%= format("%.1f",student_work.judge_score < 0 ? 0 : student_work.judge_score)%> 
    + <% if !@contestwork.score_valid && student_work.contestant_work_scores.where(:reviewer_role => 2).group_by(&:user_id).count > 2 %> + <% work_scores = student_work.contestant_work_scores.where(:reviewer_role => 2).order("score desc") %> + 去除最高分 +  <%= format("%.1f",work_scores.first.score < 0 ? 0 : work_scores.first.score) %> 
    + 去除最低分 +  <%= format("%.1f",work_scores.last.score < 0 ? 0 : work_scores.last.score) %> 
    + <% end %> + 作品最终成绩为 +  <%= format("%.1f",student_work.work_score < 0 ? 0 : student_work.work_score)%> 
    +
    + <% end %> +
    diff --git a/app/views/contestant_works/_contest_evaluation_un_title.html.erb b/app/views/contestant_works/_contest_evaluation_un_title.html.erb index fe31d49f6..a7ce211ce 100644 --- a/app/views/contestant_works/_contest_evaluation_un_title.html.erb +++ b/app/views/contestant_works/_contest_evaluation_un_title.html.erb @@ -1,34 +1,30 @@ - - <%# if @homework.homework_type == 1 %> - <%#= render :partial => 'evaluation_un_common_title' %> - <%# elsif @homework.homework_type == 2 %> - <%#= render :partial => 'evaluation_un_pro_title' %> - <%# elsif @homework.homework_type == 3 %> - <%#= render :partial => 'evaluation_un_group_title' %> - <%# else %> - - - - - - - - - - - - - <%# end %> - <% @stundet_works.each_with_index do |student_work, i| %> +<%# end %> +<% if @is_judge && @contestwork.online_evaluation && @contestwork.work_status < 3 %> +
    +
    +

    在线评审启动之前,无法查看具体作品

    +
    +<% else %> +
    序号  - 姓名 - - - 状态 - - 评委评分 - - 最终成绩 -
    + + + + + + + + + + <% @stundet_works.each_with_index do |student_work, i| %> <% score_open = true %> <%= render :partial => "contest_evaluation_un_work", :locals => {:student_work => student_work, :index => i, :score_open => score_open} %> @@ -38,5 +34,6 @@ - <% end %> -
    序号  + 姓名 + + 提交时间 + + 评委评分 + + 最终成绩 + +
    \ No newline at end of file + <% end %> + +<% end %> diff --git a/app/views/contestant_works/_contest_evaluation_un_work.html.erb b/app/views/contestant_works/_contest_evaluation_un_work.html.erb index 163e87f40..bf24966a9 100644 --- a/app/views/contestant_works/_contest_evaluation_un_work.html.erb +++ b/app/views/contestant_works/_contest_evaluation_un_work.html.erb @@ -3,24 +3,42 @@ <%= link_to(image_tag(url_to_avatar(student_work.user),:width =>"40",:height => "40",:style => "display:block;"),user_path(student_work.user), :target => '_blank') %> - + <%= link_to student_work.user.show_name ,user_path(student_work.user), :target => '_blank' %> - - - - <% if student_work.work_status%> - <%=get_status student_work.work_status %> + <%=format_time student_work.commit_time %> + + + <%=student_work.judge_score.nil? ? "--" : format("%.1f",student_work.judge_score) %> + <% unless student_work.judge_score.nil? %> + (<%= student_work.contestant_work_scores.where(:reviewer_role => 2).group_by(&:user_id).count%>) <% end %> - - -- - - - -- + + <%=student_work.work_score.nil? ? "--" : format("%.1f",student_work.work_score) %> + <% unless student_work.work_score.nil? %> +
    + + + 评委平均分 +  <%= format("%.1f",student_work.judge_score < 0 ? 0 : student_work.judge_score)%> 
    + <% if !@contestwork.score_valid && student_work.contestant_work_scores.where(:reviewer_role => 2).group_by(&:user_id).count > 2 %> + <% work_scores = student_work.contestant_work_scores.where(:reviewer_role => 2).order("score desc") %> + 去除最高分 +  <%= format("%.1f",work_scores.first.score < 0 ? 0 : work_scores.first.score) %> 
    + 去除最低分 +  <%= format("%.1f",work_scores.last.score < 0 ? 0 : work_scores.last.score) %> 
    + <% end %> + 作品最终成绩为 +  <%= format("%.1f",student_work.work_score < 0 ? 0 : student_work.work_score)%> 
    +
    + <% end %> + + + 查看
    diff --git a/app/views/contestant_works/_contest_evaluation_work.html.erb b/app/views/contestant_works/_contest_evaluation_work.html.erb new file mode 100644 index 000000000..ea821efc3 --- /dev/null +++ b/app/views/contestant_works/_contest_evaluation_work.html.erb @@ -0,0 +1,33 @@ + + <%=index + 1 %> + + <%= link_to(image_tag(url_to_avatar(student_work.user),:width =>"40",:height => "40",:style => "display:block;"),user_path(student_work.user), :target => '_blank') %> + + + <%= link_to student_work.user.show_name ,user_path(student_work.user), :target => '_blank' %> + + + + <%=format_time student_work.commit_time %> + + + <% my_score = ContestantWorkScore.where(:user_id => User.current.id,:contestant_work_id => student_work.id,:reviewer_role => 2).last %> + + <%= my_score.nil? ? "--" : format("%.1f",my_score.score)%> + + + 评分 + +
    + +<%# end %> + + diff --git a/app/views/contestant_works/_contestant_work_list.html.erb b/app/views/contestant_works/_contestant_work_list.html.erb index 041bbf8f5..f2df6c1e6 100644 --- a/app/views/contestant_works/_contestant_work_list.html.erb +++ b/app/views/contestant_works/_contestant_work_list.html.erb @@ -38,9 +38,17 @@
    <% if @contestwork.work_type != 3%> - <%= render :partial => "contest_evaluation_un_title"%> + <% if @is_evaluation && !@stundet_works.empty? %> + <%= render :partial => "contest_evaluation_title"%> + <% else%> + <%= render :partial => "contest_evaluation_un_title"%> + <% end%> <% else %> - <%= render :partial => "contest_evaluation_un_group"%> + <% if @is_evaluation && !@stundet_works.empty? %> + <%= render :partial => "contest_evaluation_group"%> + <% else %> + <%= render :partial => "contest_evaluation_un_group"%> + <% end%> <% end %>
    diff --git a/app/views/contestant_works/_contestant_work_score.html.erb b/app/views/contestant_works/_contestant_work_score.html.erb index 78997527f..6bcdf0d69 100644 --- a/app/views/contestant_works/_contestant_work_score.html.erb +++ b/app/views/contestant_works/_contestant_work_score.html.erb @@ -1,16 +1,14 @@
      - <% show_real_name = @is_teacher || score.user == User.current || score.reviewer_role != 3 %> - <%= link_to image_tag(url_to_avatar(show_real_name ? score.user : ""), :width => "34", :height => "34"), show_real_name ? user_path(score.user) : "javascript:void(0)",:class => "ping_pic fl" %> - <% show_real_score = @contestwork.score_open || @is_teacher || score.contestant_work.user == User.current || score.user == User.current %> + <%= link_to image_tag(url_to_avatar(score.user), :width => "34", :height => "34"), user_path(score.user), :class => "ping_pic fl" %>
      - <%= link_to show_real_name ? score.user.show_name : "匿名", show_real_name ? user_path(score.user) : "javascript:void(0)", :title => show_real_name ? score.user.show_name : "匿评用户", :class => "linkBlue fl" %> + <%= link_to score.user.show_name, user_path(score.user), :title => score.user.show_name, :class => "linkBlue fl" %> - (<%= student_work_score_role score%>) + (评委) <% unless score.score.nil? %> 评分: - <%= show_real_score ? score.score : "**" %>分 + <%= score.score %>分 <% end %> diff --git a/app/views/contestant_works/_show.html.erb b/app/views/contestant_works/_show.html.erb index c570ea565..5b40b0f7d 100644 --- a/app/views/contestant_works/_show.html.erb +++ b/app/views/contestant_works/_show.html.erb @@ -75,15 +75,15 @@ <% end%>
      - - - - - - - - - +
    • + <% if @is_evaluation %> + +
      + <%= render :partial => 'add_score',:locals => {:work => work,:score => score,:is_member_work => is_member_work}%> +
      + <% end%> +
      +
    @@ -104,9 +104,9 @@ <% end %> - - - +
    + <%= render :partial => 'contestant_work_score_records', :locals => {:student_work_scores => student_work_scores, :is_member_work => is_member_work} %> +
    收起 diff --git a/app/views/contestant_works/add_score.js.erb b/app/views/contestant_works/add_score.js.erb index 2750ae178..4700b443d 100644 --- a/app/views/contestant_works/add_score.js.erb +++ b/app/views/contestant_works/add_score.js.erb @@ -9,9 +9,9 @@ var num = $("#work_num_<%= @work.id%>").html(); $("#score_list_<%= @work.id%>").removeAttr("style"); <% if @contestwork.work_type == 3 %> -$("#student_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'contest_evaluation_un_group_work', :locals => {:student_work => @work}) %>"); +$("#student_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'contest_evaluation_group_work', :locals => {:student_work => @work}) %>"); <% else %> -$("tr[id='student_work_<%= @work.id%>']").replaceWith("<%= escape_javascript(render :partial => 'contest_evaluation_un_work',:locals => {:student_work => @work, :index => 1, :score_open => score_open}) %>"); +$("tr[id='student_work_<%= @work.id%>']").replaceWith("<%= escape_javascript(render :partial => 'contest_evaluation_work',:locals => {:student_work => @work, :index => 1, :score_open => score_open}) %>"); $("#work_num_<%= @work.id%>").html(num); <% end %> diff --git a/app/views/contestant_works/show.js.erb b/app/views/contestant_works/show.js.erb index 840573201..749613f0b 100644 --- a/app/views/contestant_works/show.js.erb +++ b/app/views/contestant_works/show.js.erb @@ -4,6 +4,6 @@ if($("#about_hwork_<%= @work.id%>").children().length > 0){ else{ $(".about_hwork").html(""); - $("#about_hwork_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'show',:locals => {:work =>@work}) %>"); + $("#about_hwork_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'show',:locals => {:work =>@work, :score => @score, :student_work_scores => @student_work_scores}) %>"); $('#score_<%= @work.id%>').peSlider({range: 'min'}); } \ No newline at end of file diff --git a/db/migrate/20170106024520_add_judge_score_to_contestant_work.rb b/db/migrate/20170106024520_add_judge_score_to_contestant_work.rb new file mode 100644 index 000000000..76bb5c1a0 --- /dev/null +++ b/db/migrate/20170106024520_add_judge_score_to_contestant_work.rb @@ -0,0 +1,5 @@ +class AddJudgeScoreToContestantWork < ActiveRecord::Migration + def change + add_column :contestant_works, :judge_score, :integer + end +end diff --git a/public/stylesheets/css/contest.css b/public/stylesheets/css/contest.css index 1a179f79b..3f62bd956 100644 --- a/public/stylesheets/css/contest.css +++ b/public/stylesheets/css/contest.css @@ -29,7 +29,25 @@ p.pro_new_grey{ line-height: 1.9; } .undis {display:none;} .game-dis {display:block;} /* 竞赛*/ -.banner-game { width: 968px; height: 110px;} +.banner-game { width: 968px; height: 110px; position: relative; overflow: hidden;} +.banner-inner { + display: block; + position: absolute; + left: 0; + top: 100%; + width: 100%; + height: 100%; + background: #000; + text-align: center; + opacity: 0.3; + -moz-transition: top ease 200ms; + -o-transition: top ease 200ms; + -webkit-transition: top ease 200ms; + transition: top ease 200ms; +} +a.banner-notice {position: absolute; font-size: 16px; line-height: 20px; top: 152px; left: 394px; color: #fff; padding:2px 5px;} +.banner-game:hover .banner-inner { top: 0;} +.banner-game:hover .banner-notice { top: 42px;} .sy_new_table tbody tr td.game-text-right{ text-align: right;} .sy_new_table tbody tr td.game-text-left{ text-align: left;} .game-setting-h3{ width: 100%; height: 40px; line-height: 40px; font-size: 14px; color: #666; font-weight: normal; background: #fff; border-bottom: 10px solid #eaebec;} @@ -40,3 +58,10 @@ p.pro_new_grey{ line-height: 1.9; } .contestRightBanner {width:718px; margin:0px auto; float:right; background-color: #ffffff; padding:10px 15px;} .sy_new_table tbody tr th{ height:40px; line-height:40px; border-bottom:1px solid #e5e5e5; color:#888;} + +.contest-score-tip {width:140px; color:#666; position:absolute; padding:3px 5px; border:1px solid #eaeaea; right:-223px; top:18px; background-color:#ffffff; line-height:20px; box-shadow:0px 2px 8px rgba(146, 153, 169, 0.5); white-space:nowrap;} +.contest-score-tip em {display:block; border-width:8px; position:absolute; top:6px; left:-16px; border-style:dashed solid dashed dashed; border-color:transparent #eaeaea transparent transparent; font-size:0; line-height:0;} +.contest-score-tip font {display:block; border-width:8px; position:absolute; top:6px; left:-15px; border-style:dashed solid dashed dashed; border-color:transparent #FFF transparent transparent; font-size:0; line-height:0;} +.contest-group-score-tip {width:140px; color:#666; position:absolute; padding:3px 5px; border:1px solid #eaeaea; right:-193px; top:-4px; background-color:#ffffff; line-height:20px; box-shadow:0px 2px 8px rgba(146, 153, 169, 0.5); white-space:nowrap;} +.contest-group-score-tip em {display:block; border-width:8px; position:absolute; top:6px; left:-16px; border-style:dashed solid dashed dashed; border-color:transparent #eaeaea transparent transparent; font-size:0; line-height:0;} +.contest-group-score-tip font {display:block; border-width:8px; position:absolute; top:6px; left:-15px; border-style:dashed solid dashed dashed; border-color:transparent #FFF transparent transparent; font-size:0; line-height:0;}