匿评成绩的申诉功能

This commit is contained in:
cxt 2016-12-16 11:01:58 +08:00
parent ea6078ee5f
commit 710c06e41a
19 changed files with 287 additions and 13 deletions

View File

@ -351,6 +351,18 @@ class StudentWorkController < ApplicationController
# 作品评论消息状态更新 # 作品评论消息状态更新
journals_for_teacher = CourseMessage.where("user_id =? and course_id =? and course_message_type =? and viewed =?", User.current.id, @homework.course, "JournalsForMessage", 0) journals_for_teacher = CourseMessage.where("user_id =? and course_id =? and course_message_type =? and viewed =?", User.current.id, @homework.course, "JournalsForMessage", 0)
journals_for_teacher.update_all(:viewed => true) journals_for_teacher.update_all(:viewed => true)
#匿评申诉消息状态更新
if params[:show_work_id]
work = @homework.student_works.where("id = #{params[:show_work_id].to_i}").first
if work && !work.student_works_scores.where("reviewer_role = 3 and appeal_status != 0").blank?
score_ids = "(" + work.student_works_scores.where("reviewer_role = 3 and appeal_status != 0").map{|score| score.id}.join(",") + ")"
score_appeal_ids = StudentWorksScoresAppeal.where("student_works_score_id in #{score_ids}").blank? ? "(-1)" : "(" + StudentWorksScoresAppeal.where("student_works_score_id in #{score_ids}").map{|score_appeal| score_appeal.id}.join(",") + ")"
anonymous_appeal =AppliedMessage.where("user_id =? and applied_id in #{score_appeal_ids} and applied_type =? and viewed =?", User.current.id, 'StudentWorksScoresAppeal', 0)
anonymous_appeal.update_all(:viewed => true)
appeal_message = CourseMessage.where("user_id =? and course_id =? and course_message_id in #{score_appeal_ids} and course_message_type =? and viewed =?", User.current.id, @homework.course, "StudentWorksScoresAppeal", 0)
appeal_message.update_all(:viewed => true)
end
end
################################################################################################################## ##################################################################################################################
@order,@b_sort,@name,@group = params[:order] || "score",params[:sort] || "desc",params[:name].to_s.strip || "",params[:group] @order,@b_sort,@name,@group = params[:order] || "score",params[:sort] || "desc",params[:name].to_s.strip || "",params[:group]
@homework_commons = @course.homework_commons.where("publish_time <= ?",Time.now.strftime("%Y-%m-%d")).order("created_at desc") @homework_commons = @course.homework_commons.where("publish_time <= ?",Time.now.strftime("%Y-%m-%d")).order("created_at desc")
@ -697,6 +709,16 @@ class StudentWorkController < ApplicationController
end end
def show def show
#匿评申诉消息状态更新
if @work && !@work.student_works_scores.where("reviewer_role = 3 and appeal_status != 0").blank?
score_ids = "(" + @work.student_works_scores.where("reviewer_role = 3 and appeal_status != 0").map{|score| score.id}.join(",") + ")"
score_appeal_ids = StudentWorksScoresAppeal.where("student_works_score_id in #{score_ids}").blank? ? "(-1)" : "(" + StudentWorksScoresAppeal.where("student_works_score_id in #{score_ids}").map{|score_appeal| score_appeal.id}.join(",") + ")"
anonymous_appeal =AppliedMessage.where("user_id =? and applied_id in #{score_appeal_ids} and applied_type =? and viewed =?", User.current.id, 'StudentWorksScoresAppeal', 0)
anonymous_appeal.update_all(:viewed => true)
appeal_message = CourseMessage.where("user_id =? and course_id =? and course_message_id in #{score_appeal_ids} and course_message_type =? and viewed =?", User.current.id, @homework.course, "StudentWorksScoresAppeal", 0)
appeal_message.update_all(:viewed => true)
end
@score = student_work_score @work,User.current @score = student_work_score @work,User.current
@is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin? @is_teacher = User.current.allowed_to?(:as_teacher,@course) || User.current.admin?
if @homework.homework_detail_manual.comment_status == 2 && !@is_teacher && @work.user != User.current if @homework.homework_detail_manual.comment_status == 2 && !@is_teacher && @work.user != User.current
@ -853,7 +875,7 @@ class StudentWorkController < ApplicationController
end end
when 3 #学生评分 学生评分显示平均分 when 3 #学生评分 学生评分显示平均分
#@work.student_score = @work.student_works_scores.where(:reviewer_role => 3).average(:score).try(:round, 2).to_f #@work.student_score = @work.student_works_scores.where(:reviewer_role => 3).average(:score).try(:round, 2).to_f
stu_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{@work.id} AND reviewer_role = 3 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a") stu_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{@work.id} AND reviewer_role = 3 AND appeal_status != 3 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a")
@work.student_score = stu_score.first.score.try(:round, 2).to_f @work.student_score = stu_score.first.score.try(:round, 2).to_f
if @is_group_leader if @is_group_leader
add_score_to_member @work, @homework, @new_score add_score_to_member @work, @homework, @new_score
@ -1079,6 +1101,62 @@ class StudentWorkController < ApplicationController
end end
end end
def appeal_anonymous_score
@student_work_score = StudentWorksScore.where("id = #{params[:score_id].to_i}").first
@is_last = params[:is_last]
if @student_work_score
@student_work_score.update_column('appeal_status', 1)
score_appeal = StudentWorksScoresAppeal.create(:user_id => User.current.id, :student_works_score_id => @student_work_score.id, :comment => params[:appeal][:comment], :appeal_status => 1)
course = @student_work_score.student_work.homework_common.course
course.members.includes(:member_roles).where("member_roles.role_id in (3, 7, 9)").each do |member|
AppliedMessage.create(:user_id => member.user_id, :status => 0, :viewed => 0, :applied_id => score_appeal.id, :applied_type => 'StudentWorksScoresAppeal', :applied_user_id => User.current.id)
end
CourseMessage.create(:user_id => @student_work_score.user_id, :course_id => course.id, :viewed => false,:course_message_id=> score_appeal.id,:course_message_type=>'StudentWorksScoresAppeal',:status=>1)
end
@homework = @student_work_score.student_work.homework_common
@is_teacher = User.current.allowed_to?(:as_teacher, course) || User.current.admin?
end
def alert_appeal_box
@student_work_score = StudentWorksScore.where("id = #{params[:score_id].to_i}").first
@is_last = params[:is_last]
end
def deal_appeal_score
@student_work_score = StudentWorksScore.where("id = #{params[:score_id].to_i}").first
@is_last = params[:is_last]
if @student_work_score
@student_work_score.update_column('appeal_status', params[:status].to_i)
score_appeal = @student_work_score.student_works_scores_appeal
score_appeal.applied_messages.update_all(:status => params[:status].to_i == 2 ? 3 : (params[:status].to_i == 3 ? 1 : 2))
if params[:status].to_i == 3 || params[:status].to_i == 4
homework = @student_work_score.student_work.homework_common
if params[:status].to_i == 3
# 申诉成功后 扣匿评学生的违规匿评扣分
sw = homework.student_works.where("user_id = #{@student_work_score.user_id}").first
sw.update_attribute("appeal_penalty", homework.homework_detail_manual.appeal_penalty + sw.appeal_penalty)
# 申诉成功 重新计算申诉者的匿评分
work = @student_work_score.student_work
if work.student_works_scores.where("reviewer_role = 3 AND appeal_status != 3").count > 0
stu_score = StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM (SELECT * FROM (SELECT * FROM student_works_scores WHERE student_work_id = #{@student_work_score.student_work_id} AND reviewer_role = 3 AND appeal_status != 3 ORDER BY created_at DESC) AS t GROUP BY user_id) AS a")
work.student_score = stu_score.first.score.try(:round, 2).to_f
else
work.student_score = nil
end
@student_work_score.student_work.save
end
course = homework.course
CourseMessage.create(:user_id => @student_work_score.user_id, :course_id => course.id, :viewed => false,:course_message_id=> score_appeal.id,:course_message_type=>'StudentWorksScoresAppeal',:status=>params[:status].to_i,:apply_result =>User.current.id)
CourseMessage.create(:user_id => score_appeal.user_id, :course_id => course.id, :viewed => false,:course_message_id=> score_appeal.id,:course_message_type=>'StudentWorksScoresAppeal',:status=>params[:status].to_i,:apply_result =>User.current.id)
end
@homework = @student_work_score.student_work.homework_common
@is_teacher = User.current.allowed_to?(:as_teacher, course) || User.current.admin?
@work = @student_work_score.student_work
@is_group_leader = !@work.student_work_projects.empty?
end
end
def forbidden_anonymous_comment def forbidden_anonymous_comment
@homework.update_column('anonymous_comment', @homework.anonymous_comment == 0 ? 1 : 0) @homework.update_column('anonymous_comment', @homework.anonymous_comment == 0 ? 1 : 0)
homework_detail_manual = @homework.homework_detail_manual homework_detail_manual = @homework.homework_detail_manual

View File

@ -1,5 +1,5 @@
class AppliedMessage < ActiveRecord::Base class AppliedMessage < ActiveRecord::Base
# status: 0表示未批准 status1表示已批准 status 2表示已拒绝 # status: 0表示未批准 status1表示已批准 status 2表示已拒绝; status: 3撤销
attr_accessible :applied_id, :applied_type, :status, :user_id, :viewed, :applied_user_id, :role, :project_id, :name attr_accessible :applied_id, :applied_type, :status, :user_id, :viewed, :applied_user_id, :role, :project_id, :name
belongs_to :applied ,:polymorphic => true belongs_to :applied ,:polymorphic => true

View File

@ -5,6 +5,8 @@ class CourseMessage < ActiveRecord::Base
# HomeworkCommonstatus # HomeworkCommonstatus
# nil发布了作业 1作业截止时间到了提醒2:开启匿评; 3关闭匿评 4匿评开始失败 5申请引用作业, 6:申请结果 # nil发布了作业 1作业截止时间到了提醒2:开启匿评; 3关闭匿评 4匿评开始失败 5申请引用作业, 6:申请结果
# apply_user_id: 申请者的用户id # apply_user_id: 申请者的用户id
# StudentWorksScoresAppeal: status:
# 1: 申诉中, 2申诉撤销 3申诉成功 4申诉被拒绝
attr_accessible :course_id, :course_message_id, :course_message_type, :user_id, :viewed, :content, :status, :apply_user_id, :apply_result attr_accessible :course_id, :course_message_id, :course_message_type, :user_id, :viewed, :content, :status, :apply_user_id, :apply_result
# 多态 虚拟关联 # 多态 虚拟关联

View File

@ -8,6 +8,7 @@ class StudentWorksScore < ActiveRecord::Base
belongs_to :student_work belongs_to :student_work
has_many :journals_for_messages, :as => :jour, :dependent => :destroy has_many :journals_for_messages, :as => :jour, :dependent => :destroy
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
has_one :student_works_scores_appeal, :dependent => :destroy
acts_as_attachable acts_as_attachable

View File

@ -1,3 +1,7 @@
class StudentWorksScoresAppeal < ActiveRecord::Base class StudentWorksScoresAppeal < ActiveRecord::Base
attr_accessible :appeal_status, :comment, :student_works_score_id, :user_id attr_accessible :appeal_status, :comment, :student_works_score_id, :user_id
has_many :course_messages, :class_name =>'CourseMessage', :as => :course_message, :dependent => :destroy
has_many :applied_messages, :class_name => 'AppliedMessage', :as => :applied, :dependent => :destroy
belongs_to :student_works_score
belongs_to :user
end end

View File

@ -110,6 +110,7 @@ class User < Principal
has_many :student_works_evaluation_distributions, :dependent => :destroy has_many :student_works_evaluation_distributions, :dependent => :destroy
has_many :student_works_scores, :dependent => :destroy has_many :student_works_scores, :dependent => :destroy
has_many :student_work_projects, :dependent => :destroy has_many :student_work_projects, :dependent => :destroy
has_many :student_works_scores_appeals, :dependent => :destroy
has_many :apply_homeworks, :dependent => :destroy has_many :apply_homeworks, :dependent => :destroy
has_many :apply_resources, :dependent => :destroy has_many :apply_resources, :dependent => :destroy
#end #end

View File

@ -70,6 +70,13 @@
<li><a href="<%=student_work_index_path(:homework => ma.course_message.homework_common_id, :show_work_id => ma.course_message_id) %>" target="_blank" title="<%=ma.course_message.user.show_name %>同学 重新提交了作品:<%=ma.course_message.name %>"><span class="shadowbox_news_user"><%=ma.course_message.user.show_name %>同学 </span>重新提交了作品:<%=ma.course_message.name %></a></li> <li><a href="<%=student_work_index_path(:homework => ma.course_message.homework_common_id, :show_work_id => ma.course_message_id) %>" target="_blank" title="<%=ma.course_message.user.show_name %>同学 重新提交了作品:<%=ma.course_message.name %>"><span class="shadowbox_news_user"><%=ma.course_message.user.show_name %>同学 </span>重新提交了作品:<%=ma.course_message.name %></a></li>
<% elsif ma.course_message_type == "StudentWork" && ma.status == 2 %> <% elsif ma.course_message_type == "StudentWork" && ma.status == 2 %>
<li><a href="<%=student_work_index_path(:homework => ma.course_message.homework_common_id, :show_work_id => ma.course_message_id) %>" target="_blank" title="<%=ma.course_message.user.show_name %>同学 追加新附件了:作业标题:<%=ma.course_message.homework_common.name %>"><span class="shadowbox_news_user"><%=ma.course_message.user.show_name %>同学 </span>追加新附件了:作业标题:<%=ma.course_message.homework_common.name %></a></li> <li><a href="<%=student_work_index_path(:homework => ma.course_message.homework_common_id, :show_work_id => ma.course_message_id) %>" target="_blank" title="<%=ma.course_message.user.show_name %>同学 追加新附件了:作业标题:<%=ma.course_message.homework_common.name %>"><span class="shadowbox_news_user"><%=ma.course_message.user.show_name %>同学 </span>追加新附件了:作业标题:<%=ma.course_message.homework_common.name %></a></li>
<% elsif ma.course_message_type == "StudentWorksScoresAppeal" && ma.course_message && ma.status == 1 %>
<% student_work = ma.course_message.student_works_score.student_work %>
<li><a href="<%=student_work_index_path(:homework => student_work.homework_common_id, :show_work_id => student_work.id, :tab => 2) %>" target="_blank" title="匿名用户 对您的评阅发起申诉:<%=student_work.homework_common.name %>"><span class="shadowbox_news_user">匿名用户</span> 对您的评阅发起申诉:<%=student_work.homework_common.name %></a></li>
<% elsif ma.course_message_type == "StudentWorksScoresAppeal" && ma.course_message && (ma.status == 3 || ma.status == 4) %>
<% deal_user = User.find ma.apply_result %>
<% student_work = ma.course_message.student_works_score.student_work %>
<li><a href="<%=student_work_index_path(:homework => student_work.homework_common_id, :show_work_id => student_work.id, :tab => 2) %>" target="_blank" title="<%= deal_user.show_name%> <%= ma.status == 3 ? '接受申诉' : '拒绝申诉' %><%=student_work.homework_common.name %>"><span class="shadowbox_news_user"><%= deal_user.show_name%></span> <%= ma.status == 3 ? '接受申诉' : '拒绝申诉' %><%=student_work.homework_common.name %></a></li>
<% elsif ma.course_message_type == "Course" %> <% elsif ma.course_message_type == "Course" %>
<li><a href="<%=course_path(ma.course_message) %>" target="_blank" title="系统提示 您成功创建了班级:班级名称:<%=ma.course_message.name %>"><span class="shadowbox_news_user">系统提示 </span>您成功创建了班级:班级名称:<%=ma.course_message.name %></a></li> <li><a href="<%=course_path(ma.course_message) %>" target="_blank" title="系统提示 您成功创建了班级:班级名称:<%=ma.course_message.name %>"><span class="shadowbox_news_user">系统提示 </span>您成功创建了班级:班级名称:<%=ma.course_message.name %></a></li>
<% elsif ma.course_message_type == "JoinCourseRequest" %> <% elsif ma.course_message_type == "JoinCourseRequest" %>
@ -115,6 +122,12 @@
<% content = "<span class='shadowbox_news_user'>系统提示:</span>“#{ma.name}”的申请,经确认为无效的单位信息,已被删除,请重新编辑您的单位资料。谢谢!" %> <% content = "<span class='shadowbox_news_user'>系统提示:</span>“#{ma.name}”的申请,经确认为无效的单位信息,已被删除,请重新编辑您的单位资料。谢谢!" %>
<%= link_to content.html_safe, { :controller=> "my",:action => "account", :flag => 1, :applied_message_id => ma.id }, :title => "系统提示:“#{ma.name}”的申请,经确认为无效的单位信息,已被删除,请重新编辑您的单位资料。谢谢!", :target => '_blank'%> <%= link_to content.html_safe, { :controller=> "my",:action => "account", :flag => 1, :applied_message_id => ma.id }, :title => "系统提示:“#{ma.name}”的申请,经确认为无效的单位信息,已被删除,请重新编辑您的单位资料。谢谢!", :target => '_blank'%>
</li> </li>
<% elsif ma.applied_type == "StudentWorksScoresAppeal" %>
<li>
<% homework = ma.applied.student_works_score.student_work.homework_common %>
<% content = '<span class="shadowbox_news_user">'+User.find(ma.applied_user_id).show_name+' </span>申诉匿评成绩:'+"“"+homework.name+"”" %>
<%= link_to content.html_safe, student_work_index_path(:homework => homework.id, :show_work_id => ma.applied.student_works_score.student_work_id, :tab => 2), :title => "#{User.find(ma.applied_user_id).show_name}申诉匿评成绩:“#{homework.name}”", :target => '_blank' %>
</li>
<% end %> <% end %>
<% elsif ma.class == ForgeMessage %> <% elsif ma.class == ForgeMessage %>
<% if ma.forge_message_type == "AppliedProject" %> <% if ma.forge_message_type == "AppliedProject" %>

View File

@ -94,7 +94,7 @@
<em></em> <em></em>
<font></font> <font></font>
现共有 现共有
<span class="c_red">&nbsp;<%= student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count%>&nbsp;</span> <span class="c_red">&nbsp;<%= student_work.student_works_scores.where("reviewer_role = 3 and appeal_status != 3").group_by(&:user_id).count%>&nbsp;</span>
名学生进行了匿评,平均分为 名学生进行了匿评,平均分为
<span class="c_red">&nbsp;<%= format("%.1f",student_work.student_score)%>&nbsp;</span>分。 <span class="c_red">&nbsp;<%= format("%.1f",student_work.student_score)%>&nbsp;</span>分。
</div> </div>
@ -115,7 +115,7 @@
<em></em> <em></em>
<font></font> <font></font>
作品最终评分为 作品最终评分为
<span class="c_red">&nbsp;<%= student_work.final_score%>&nbsp;</span>分<br/> <span class="c_red">&nbsp;<%= score %>&nbsp;</span>分<br/>
迟交扣分 迟交扣分
<span class="c_red">&nbsp; <span class="c_red">&nbsp;
<%= student_work.late_penalty %> <%= student_work.late_penalty %>

View File

@ -1,6 +1,6 @@
<% user_ids = student_work.student_work_projects.empty? ? "(-1)" : "(" + student_work.student_work_projects.map{|st| st.user_id}.join(",") + ")" %> <% user_ids = student_work.student_work_projects.empty? ? "(-1)" : "(" + student_work.student_work_projects.map{|st| st.user_id}.join(",") + ")" %>
<% student_work_groups = @homework.student_works.where("user_id in #{user_ids}").order("created_at asc") %> <% student_work_groups = @homework.student_works.where("user_id in #{user_ids}").order("created_at asc") %>
<% anon_count = student_work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count %> <% anon_count = student_work.student_works_scores.where("reviewer_role = 3 and appeal_status != 3").group_by(&:user_id).count %>
<% student_work_groups.each_with_index do |st, j| %> <% student_work_groups.each_with_index do |st, j| %>
<% score_open = @is_teacher || @homework.score_open == 1 || st.user == User.current %> <% score_open = @is_teacher || @homework.score_open == 1 || st.user == User.current %>
<div class="syllabus_class_box" id="student_work_<%= st.id%>" style="background-color:#fff;"> <div class="syllabus_class_box" id="student_work_<%= st.id%>" style="background-color:#fff;">

View File

@ -0,0 +1,40 @@
<div id="muban_popup_box" style="width:530px;">
<div class="muban_popup_top">
<h3 class="fl">匿评成绩申诉</h3>
<a href="javascript:void(0);" class="muban_icons_close fr"></a>
<div class="cl"></div>
</div>
<%= form_for('appeal',:url =>{:controller => 'student_work',:action => 'appeal_anonymous_score',:score_id => @student_work_score.id, :is_last => @is_last},
:method => "post", :remote => true) do |f|%>
<div class="muban_popup_con clear">
<div class="clear mt15 ml20">
<label style="vertical-align: top;"><span class="c_red" style="vertical-align: top;">*</span>申诉理由:</label>
<%= f.text_area 'comment', :id => 'appeal_comment', :style => 'height: 70px; width: 414px;', :placeholder => "请输入你的申诉理由最多250个字符。",:maxlength => 250 %>
<p id="notice_notes" class="c_red none" style="margin-left: 68px;">请输入申诉理由</p>
<div class="alert alert-orange mb10 mt10 mr20">
教师或者助教将受到您的申诉<br/>
申诉被接受后,此匿评成绩将被废弃,且评阅人的作品将被违规扣分
</div>
<div class="cl"></div>
<a href="javascript:void(0);" class="fr sy_btn_blue mr20" onclick="score_appeal_submit();">确定</a>
<a href="javascript:void(0);" class="fr sy_btn_grey mr5" onclick="hideModal();">取消</a>
</div>
</div>
<% end%>
</div>
<script type="text/javascript">
var first_click = true;
function score_appeal_submit(){
if(first_click) {
if ($.trim($("#appeal_comment").val()) != "") {
first_click = false;
$('#notice_notes').hide();
$('#muban_popup_box').find('form').submit();
} else {
$('#notice_notes').show();
}
}
}
</script>

View File

@ -53,6 +53,14 @@
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<% if @is_evaluation && !@stundet_works.empty? %>
<div class="alert alert-orange mb10 f14">
不参与匿评将直接影响作业成绩,请按照事实进行评分<br/>
<p class="sy_cgrey">为了保障匿评的公平,允许学生对不合理的匿评成绩进行申诉</p>
<p class="sy_cgrey">若您给出了不合理的匿评成绩,并被申诉成功,您自己的作品将被匿评违规扣分</p>
</div>
<% end %>
<div class="fl"> <div class="fl">
<% if @homework.homework_type != 3%> <% if @homework.homework_type != 3%>
<% if @is_evaluation && !@stundet_works.empty? %> <% if @is_evaluation && !@stundet_works.empty? %>
@ -61,7 +69,7 @@
<%= render :partial => "evaluation_un_title"%> <%= render :partial => "evaluation_un_title"%>
<% end%> <% end%>
<% else %> <% else %>
<% if !@is_teacher && @is_evaluation && !@stundet_works.empty? %> <% if @is_evaluation && !@stundet_works.empty? %>
<%= render :partial => "evaluation_title"%> <%= render :partial => "evaluation_title"%>
<% else %> <% else %>
<%= render :partial => "evaluation_un_group"%> <%= render :partial => "evaluation_un_group"%>

View File

@ -14,7 +14,20 @@
</a> </a>
<% end %> <% end %>
<a href="javascript:void(0);" class="fr linkBlue mr5" onclick="$('#add_score_reply_<%= score.id%>').slideToggle();">回复</a> <a href="javascript:void(0);" class="fr linkBlue mr5" onclick="$('#add_score_reply_<%= score.id%>').slideToggle();">回复</a>
<span class=" fr c_grey mr20"> <% if @homework.anonymous_appeal == 1 %>
<% if score.student_work.user == User.current && score.reviewer_role == 3 && score.appeal_status == 0 %>
<a href="<%=alert_appeal_box_student_work_index_path(:score_id => score.id,:is_last => is_last) %>" data-remote="true" class="fr linkBlue mr10">申诉</a>
<% elsif score.reviewer_role == 3 && score.appeal_status == 1 %>
<span class="c_red fr mr10">申诉中</span>
<% elsif score.reviewer_role == 3 && score.appeal_status == 2 %>
<span class="c_red fr mr10">申诉已撤销</span>
<% elsif score.reviewer_role == 3 && score.appeal_status == 3 %>
<span class="c_red fr mr10">申诉成功</span>
<% elsif score.reviewer_role == 3 && score.appeal_status == 4 %>
<span class="c_red fr mr10">申诉失败</span>
<% end %>
<% end %>
<span class="fr c_grey mr20">
<%=format_time score.updated_at %> <%=format_time score.updated_at %>
</span> </span>
<div class="cl mb5"></div> <div class="cl mb5"></div>
@ -31,6 +44,24 @@
<%= render :partial => 'add_score_reply',:locals => {:score => score,:is_last => is_last}%> <%= render :partial => 'add_score_reply',:locals => {:score => score,:is_last => is_last}%>
</div> </div>
<div class="cl"></div> <div class="cl"></div>
<% unless score.student_works_scores_appeal.nil? %>
<div class="ping_back mt10" style="border-top: 1px dashed #CCCCCC; padding-top: 10px;">
<span class="fl">申诉</span>
<% if score.appeal_status == 1 && score.student_work.user == User.current %>
<a href="javascript:void(0)" onclick="deal_appeal_score(<%=score.id %>, 2);" class="fr linkBlue mr5 ml20">撤销申诉</a>
<% elsif @is_teacher && score.appeal_status == 1 %>
<a href="javascript:void(0)" onclick="deal_appeal_score(<%=score.id %>, 3);" class="fr linkBlue mr5">接受</a>
<a href="javascript:void(0)" onclick="deal_appeal_score(<%=score.id %>, 4);" class="fr linkBlue mr10 ml20">拒绝</a>
<% end %>
<span class="fr c_grey">
<%=format_time score.student_works_scores_appeal.updated_at %>
</span>
<div class="cl mb5"></div>
<p class="break_word">
申诉理由:<%= score.student_works_scores_appeal.comment%>
</p>
</div>
<% end %>
<div id="replay_histroy_<%= score.id%>"> <div id="replay_histroy_<%= score.id%>">
<% score.journals_for_messages.order("created_on desc").each do |jour|%> <% score.journals_for_messages.order("created_on desc").each do |jour|%>
@ -41,3 +72,25 @@
<div class="cl"></div> <div class="cl"></div>
</div> </div>
</ul> </ul>
<script>
function deal_appeal_score(score_id, status){
if(status == '2'){
var htmlvalue = '<div id="muban_popup_box" style="width:400px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f14">撤销后将不能再对该成绩发起申诉</p><p class="text_c mt10 f14">您是否确认撤销申诉</p><div class="cl"></div>'+
'<a href="/student_work/deal_appeal_score?is_last=true&score_id='+ score_id + '&status=2" class="fr sy_btn_blue mr135 mt10" data-remote="true">确&nbsp;&nbsp;定</a>'+
'<a href="javascript:void(0);" class="fr sy_btn_grey mt10 mr10" onclick="hideModal();">取&nbsp;&nbsp;消</a></div></div>';
}else if(status == '3'){
var htmlvalue = '<div id="muban_popup_box" style="width:400px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f14">此匿评成绩将被废弃,且评阅人的作品将被违规扣分</p><p class="text_c mt10 f14">您是否确定接受</p><div class="cl"></div>'+
'<a href="/student_work/deal_appeal_score?is_last=true&score_id='+ score_id + '&status=3" class="fr sy_btn_blue mr135 mt10" data-remote="true">确&nbsp;&nbsp;定</a>'+
'<a href="javascript:void(0);" class="fr sy_btn_grey mt10 mr10" onclick="hideModal();">取&nbsp;&nbsp;消</a></div></div>';
}else if(status == '4'){
var htmlvalue = '<div id="muban_popup_box" style="width:400px;"><div class="muban_popup_top"><h3 class="fl">提示</h3><a href="javascript:void(0);" class="muban_icons_close fr"></a></div>'+
'<div class="clear mt15"><p class="text_c f14">此匿评成绩将被认为合理</p><p class="text_c mt10 f14">您是否确定拒绝</p><div class="cl"></div>'+
'<a href="/student_work/deal_appeal_score?is_last=true&score_id='+ score_id + '&status=4" class="fr sy_btn_blue mr135 mt10" data-remote="true">确&nbsp;&nbsp;定</a>'+
'<a href="javascript:void(0);" class="fr sy_btn_grey mt10 mr10" onclick="hideModal();">取&nbsp;&nbsp;消</a></div></div>';
}
pop_box_new(htmlvalue, 400, 180);
}
</script>

View File

@ -19,7 +19,7 @@ $("#score_list_<%= @work.id%>").removeAttr("style");
$("#student_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'evaluation_un_group_work', :locals => {:student_work => @work}) %>"); $("#student_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'evaluation_un_group_work', :locals => {:student_work => @work}) %>");
$("#group_member_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'group_member_work', :locals => {:student_work => @work}) %>"); $("#group_member_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'group_member_work', :locals => {:student_work => @work}) %>");
<% else %> <% else %>
<% anon_count = @work.student_works_scores.where(:reviewer_role => 3).group_by(&:user_id).count %> <% anon_count = @work.student_works_scores.where("reviewer_role = 3 and appeal_status != 3").group_by(&:user_id).count %>
$("#student_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'evaluation_un_group_member_work', :locals => {:st => @work, :anon_count => anon_count, :score_open => score_open}) %>"); $("#student_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'evaluation_un_group_member_work', :locals => {:st => @work, :anon_count => anon_count, :score_open => score_open}) %>");
<% end %> <% end %>
<% else %> <% else %>

View File

@ -0,0 +1,2 @@
var htmlvalue = "<%=escape_javascript(render :partial => 'student_work/score_appeal_box') %>";
pop_box_new(htmlvalue, 530, 400);

View File

@ -0,0 +1,2 @@
hideModal();
$("#work_score_<%= @student_work_score.id%>").html("<%= escape_javascript(render :partial => 'student_work_score',:locals => {:score => @student_work_score,:is_last => @is_last}) %>");

View File

@ -0,0 +1,22 @@
hideModal();
<% if params[:status].to_i == 3 %>
<% score_open = @is_teacher || @homework.score_open == 1 || @work.user == User.current %>
<% if @is_teacher %>
<% if @homework.homework_type == 3 %>
<% if @is_group_leader %>
$("#student_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'evaluation_un_group_work', :locals => {:student_work => @work}) %>");
$("#group_member_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'group_member_work', :locals => {:student_work => @work}) %>");
<% else %>
<% anon_count = @work.student_works_scores.where("reviewer_role = 3 and appeal_status != 3").group_by(&:user_id).count %>
$("#student_work_<%= @work.id%>").html("<%= escape_javascript(render :partial => 'evaluation_un_group_member_work', :locals => {:st => @work, :anon_count => anon_count, :score_open => score_open}) %>");
<% end %>
<% else %>
$("tr[id='student_work_<%= @work.id%>']").replaceWith("<%= escape_javascript(render :partial => 'evaluation_un_work',:locals => {:student_work => @work, :index => 1, :score_open => score_open}) %>");
$("#work_num_<%= @work.id%>").html(num);
<% end %>
<% else %>
$("tr[id='student_work_<%= @work.id%>']").replaceWith("<%= escape_javascript(render :partial => 'evaluation_work',:locals => {:student_work => @work, :index => 1, :score_open => score_open}) %>");
$("#work_num_<%= @work.id%>").html(num);
<% end%>
<% end %>
$("#work_score_<%= @student_work_score.id%>").html("<%= escape_javascript(render :partial => 'student_work_score',:locals => {:score => @student_work_score,:is_last => @is_last}) %>");

View File

@ -25,5 +25,23 @@
<ul class="homepageNewsList fl" id="applied_project_<%= ma.id %>"> <ul class="homepageNewsList fl" id="applied_project_<%= ma.id %>">
<%= render :partial => "users/applied_project_content", :locals =>{:ma => ma} %> <%= render :partial => "users/applied_project_content", :locals =>{:ma => ma} %>
</ul> </ul>
<!-- 匿评成绩申诉 -->
<% elsif ma && ma.applied_type == "StudentWorksScoresAppeal" %>
<ul class="homepageNewsList fl">
<% applied_user = User.find(ma.applied_user_id) %>
<li class="homepageNewsPortrait fl">
<%= link_to image_tag(url_to_avatar(applied_user), :width => "30", :height => "30"), user_path(applied_user), :target => '_blank' %>
</li>
<li class="homepageNewsPubType fl">
<%=link_to applied_user.show_name, user_path(applied_user), :class => "newsBlue homepageNewsPublisher", :target => '_blank' %>
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">申诉匿评成绩:</span>
</li>
<li class="homepageNewsContent fl">
<% homework = ma.applied.student_works_score.student_work.homework_common %>
<%= link_to homework.name, student_work_index_path(:homework => homework.id, :show_work_id => ma.applied.student_works_score.student_work_id, :tab => 2), :class => "#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %>
</li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %>
</li>
</ul>
<% end %> <% end %>
<% end %> <% end %>

View File

@ -550,11 +550,8 @@
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">重新提交了作品:</span> <span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">重新提交了作品:</span>
</li> </li>
<li class="homepageNewsContent fl"> <li class="homepageNewsContent fl">
<%= link_to "作业标题:" + ma.course_message.name, student_work_index_path(:homework => ma.course_message.homework_common_id, :show_work_id => ma.course_message_id), <%= link_to "作业标题:" + ma.course_message.name, student_work_index_path(:homework => ma.course_message.homework_common_id, :show_work_id => ma.course_message_id, :tab => 2),
:class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %>
<%#= link_to truncate(ma.course_message.name,:length=>25)+'(失败原因提交作品的人数低于2人)', student_work_index_path(:homework => ma.course_message.id), :class => "#{ma.viewed == 0 ? "c_red" : "newsGrey "}" %>
<!--:onmouseover => "message_titile_show($(this),event)",-->
<!--:onmouseout => "message_titile_hide($(this))" %>-->
</li> </li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
</ul> </ul>
@ -571,7 +568,7 @@
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">追加新附件了:</span> <span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">追加新附件了:</span>
</li> </li>
<li class="homepageNewsContent fl"> <li class="homepageNewsContent fl">
<%= link_to "作业标题:" + ma.course_message.homework_common.name, student_work_index_path(:homework => ma.course_message.homework_common_id, :show_work_id => ma.course_message_id), <%= link_to "作业标题:" + ma.course_message.homework_common.name, student_work_index_path(:homework => ma.course_message.homework_common_id, :show_work_id => ma.course_message_id, :tab => 2),
:class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %> :class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %>
<!--:onmouseover => "message_titile_show($(this),event)",--> <!--:onmouseover => "message_titile_show($(this),event)",-->
<!--:onmouseout => "message_titile_hide($(this))" %>--> <!--:onmouseout => "message_titile_hide($(this))" %>-->
@ -579,6 +576,36 @@
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li> <li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
</ul> </ul>
<% end %> <% end %>
<!-- 匿评申诉 -->
<% if ma.course_message_type == "StudentWorksScoresAppeal" && ma.course_message %>
<ul class="homepageNewsList fl">
<li class="homepageNewsPortrait fl">
<%=link_to image_tag(url_to_avatar(""), :width => "30", :height => "30"), "javascript:void(0);", :target => '_blank' %>
</li>
<li class="homepageNewsPubType fl">
<% if ma.status == 1 %>
<span class="newsBlue homepageNewsPublisher">匿名用户</span>
<% elsif ma.status == 3 || ma.status == 4 %>
<% deal_user = User.find ma.apply_result %>
<%= link_to deal_user.show_name, user_path(deal_user), :class => "newsBlue homepageNewsPublisher", :target => '_blank' %>
<% end %>
<span class="<%= ma.viewed == 0 ? "homepageNewsTypeNotRead fl" : "homepageNewsType fl" %>">
<% if ma.status == 1 %>
对您的评阅发起申诉:
<% elsif ma.status == 3 %>
接受申诉:
<% elsif ma.status == 4 %>
拒绝申诉:
<% end %>
</span>
</li>
<li class="homepageNewsContent fl">
<%= link_to ma.course_message.student_works_score.student_work.homework_common.name, student_work_index_path(:homework => ma.course_message.student_works_score.student_work.homework_common_id, :show_work_id => ma.course_message.student_works_score.student_work_id, :tab => 2),
:class =>"#{ma.viewed == 0 ? "newsBlack" : "newsGrey"}", :target => '_blank' %>
</li>
<li class="homepageNewsTime fl"><%= time_tag(ma.created_at).html_safe %> </li>
</ul>
<% end %>
<!-- 创建课程消息 --> <!-- 创建课程消息 -->
<% if ma.course_message_type == "Course" && ma.course_message %> <% if ma.course_message_type == "Course" && ma.course_message %>
<ul class="homepageNewsList fl"> <ul class="homepageNewsList fl">

View File

@ -353,6 +353,9 @@ RedmineApp::Application.routes.draw do
get 'work_canrepeat' get 'work_canrepeat'
get 'get_user_infor' get 'get_user_infor'
post 'add_group_member' post 'add_group_member'
post 'appeal_anonymous_score'
get 'alert_appeal_box'
get 'deal_appeal_score'
end end
end end