Merge branch 'develop' into dev_partners

Conflicts:
	app/views/managements/_partner_customer_list.html.erb
dev_partners
caishi 6 years ago
commit dac1d99f9e

@ -63,8 +63,8 @@ gem 'elasticsearch-rails'
gem 'oauth2'
# xlsx
gem 'axlsx', '3.0.0.pre'
gem 'axlsx_rails', '0.3.0'
# gem 'axlsx', '3.0.0.pre'
# gem 'axlsx_rails', '0.3.0'
#Ruby 2.2+ has removed test/unit from the core library.
if RUBY_VERSION>='2.2'

@ -2,7 +2,7 @@
class ChallengesController < ApplicationController
layout "base_shixun"
# 如要添加或修改before_filter时请将handle_openi_request这个before_filter放至第一位
#before_filter :handle_openi_request, if: -> { user_login_and_from_openi? }, only: [:index]
# before_filter :handle_openi_request, if: -> { user_login_and_from_openi? }, only: [:index]
before_filter :check_authentication, :except => [:index]
before_filter :find_shixun, :only => [:index, :new, :create, :destroy, :challenge_build, :update_evaluation, :add_choose_question, :new_choose_question,
:choose_type_show, :edit_choose_question, :update_choose_question, :destroy_challenge_choose]

@ -31,9 +31,9 @@ class CollegesController < ApplicationController
end
def verification_school_identifier
school = School.where(:identifier => params[:identifier]).first
status = school.present? ? 1 : 0
render :json => {status: status}
schools = School.where(identifier: params[:identifier])
schools = schools.where('id != ?', params[:school_id]) if params[:school_id].present?
render :json => { status: schools.exists? ? 1 : 0 }
end
def online_school

@ -2394,9 +2394,10 @@ class CoursesController < ApplicationController
sheet1[4,0] = "排名"
sheet1[4,1] = "学生姓名"
sheet1[4,2] = "昵称"
sheet1[4,3] = "学号"
sheet1[4,4] = "分班"
current_col = 4
sheet1[4,3] = "邮箱"
sheet1[4,4] = "学号"
sheet1[4,5] = "分班"
current_col = 5
homeworks.where(:homework_type => 4).each do |homework|
sheet1[4,current_col+=1] = "#{homework.name}"
end
@ -2428,6 +2429,7 @@ class CoursesController < ApplicationController
sheet1[count_row,column]= i+1
sheet1[count_row,column+=1] = member.user.show_real_name
sheet1[count_row,column+=1] = member.user.login
sheet1[count_row,column+=1] = member.user.mail
sheet1[count_row,column+=1] = member.user.user_extensions.student_id
sheet1[count_row,column+=1] = member.course_group_id == 0 ? "暂无" : member.course_group.name
# current_col = 5

@ -30,9 +30,9 @@ class HomeworkCommonController < ApplicationController
@homework_type = params[:homework_type].to_i
@is_teacher = User.current.logged? && (User.current.admin? || User.current.allowed_to?(:as_teacher,@course))
if @search
@homework_commons = @course.homework_commons.where(:homework_type => @homework_type).where("homework_commons.name like '%#{@search}%'").includes(:homework_detail_manual, :homework_group_settings, :student_works)
@homework_commons = @course.homework_commons.where(:homework_type => @homework_type).where("homework_commons.name like '%#{@search}%'")
else
@homework_commons = @course.homework_commons.where(:homework_type => @homework_type).includes(:homework_detail_manual, :homework_group_settings, :student_works)
@homework_commons = @course.homework_commons.where(:homework_type => @homework_type)
end
if @is_teacher
@homework_commons = @homework_commons
@ -72,6 +72,9 @@ class HomeworkCommonController < ApplicationController
@is_new = params[:is_new]
@homeworks = paginateHelper @homework_commons,15
@homeworks = @homework_type == 4 ? @homeworks.includes(:homework_detail_manual, :homework_group_settings, [homework_commons_shixuns: :shixun]) :
@homeworks.includes(:homework_detail_manual, :homework_group_settings)
#设置at已读
=begin
ids = @homeworks.inject([]) do |ids, homework|

@ -4,8 +4,8 @@ class Managements::SchoolsController < Managements::BaseController
def statistics
@sub_type = 1
params[:sort_by] = :teacher_count if params[:sort_by].blank?
params[:sort_direction] = :desc if params[:sort_direction].blank?
params[:sort_by] = params[:sort_by].presence || :teacher_count
params[:sort_direction] = params[:sort_direction].presence || :desc
service = Management::SchoolReportService.new(params)
@obj_count, @schools = service.call
@ -20,8 +20,8 @@ class Managements::SchoolsController < Managements::BaseController
def data_grow
@sub_type = 2
params[:data_type] ||= 'grow'
params[:sort_by] = :teacher_increase_count if params[:sort_by].blank?
params[:sort_direction] = :desc if params[:sort_direction].blank?
params[:sort_by] = params[:sort_by].presence || :teacher_increase_count
params[:sort_direction] = params[:sort_direction].presence || :desc
service = Management::SchoolDataGrowService.new(params)
@grow_summary = service.grow_summary
@ -31,7 +31,7 @@ class Managements::SchoolsController < Managements::BaseController
end
def data_contrast
params[:contrast_column] = :teacher_increase_count if params[:contrast_column].blank?
params[:contrast_column] = params[:contrast_column].presence || :teacher_increase_count
params[:sort_direction] ||= :desc
params[:sort_by] = :percentage

@ -851,6 +851,15 @@ class ManagementsController < ApplicationController
@front_js = eva.front_js
end
def evaluate_simple
page = params[:page]
@recodes = EvaluateRecord.where("created_at > ?", Time.now - 1.days).reorder("consume_time desc")
@recodes_count = @recodes.size
@record_pages = Paginator.new @recodes_count, 20, page || 1
@offset ||= @record_pages.offset
@recodes = paginateHelper @recodes, 20
end
# 评测时间列表
def evaluate_records
shixun_tomcat = Redmine::Configuration['shixun_tomcat']
@ -866,7 +875,7 @@ class ManagementsController < ApplicationController
keyword = params[:keyword]
limit = 20
if search
if search.present?
if "u_name" == keyword
@evaluate_recods = EvaluateRecord.joins("join users u on evaluate_records.user_id = u.id").where("concat(u.lastname, u.firstname) like '%#{search}%'")
# @evaluate_recods = EvaluateRecord.where(user_id: User.where("concat(lastname, firstname) like '%#{search}%'").pluck(:id))
@ -875,7 +884,12 @@ class ManagementsController < ApplicationController
# @evaluate_recods = EvaluateRecord.where(user_id: UserExtensions.where(school_id: School.where("name like '%#{search}%'").pluck(:id)).pluck(:user_id))
end
else
@evaluate_recods = EvaluateRecord.where("0=0")
@evaluate_recods = EvaluateRecord.where(nil)
end
if params[:beginTime].present?
endTime = params[:endTime].present? ? params[:endTime] : Time.now
@evaluate_recods = @evaluate_recods.where("created_at >= ? and created_at <= ?", params[:beginTime], endTime)
end
@evaluate_recods_count = @evaluate_recods.count
@ -1267,7 +1281,8 @@ end
if school.present?
customer = Customer.new(school_id: s)
customer.save!
PartnerCustomer.create(partner_id: partner_id,customer_id: customer.id )
PartnerCustomer.create!(partner_id: partner_id,customer_id: customer.id )
school.update_attributes(customer_id: customer.id)
end
end
render :json => {status: 1, message: "创建成功!"}
@ -1503,7 +1518,7 @@ end
if search.blank?
@schools = School.where("0=0")
else
@schools = School.where("name like '%#{search}%'")
@schools = School.where("name like ?", "%#{search}%")
end
if params[:index] == '8'
@schools = @schools.reorder("created_at #{@sx_order}")
@ -2928,7 +2943,7 @@ end
attachment.save
path = attachment.disk_directory
name = attachment.disk_filename
if name.split(".").last == "xls" || name.split(".").last == "xlsx"
if name.split(".").last == "xlsx"
# lists = readXlsData("files/baolong.xlsx")
lists = readXlsData("files/#{path}/#{name}")
school_id = nil
@ -4193,7 +4208,7 @@ end
sheet1 = book.create_worksheet :name => "course"
blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
sheet1.row(0).default_format = blue
sheet1.row(0).concat(["ID","课堂名称","成员","资源","普通作业"," 实训作业","试卷","私有","状态","创建者单位","创建者","动态时间","创建时间"])
sheet1.row(0).concat(["ID","课堂名称","成员","资源","普通作业"," 实训作业","试卷","评测次数", "私有","状态","创建者单位","创建者","动态时间","创建时间"])
count_row = 1
courses.each do |course|
school = course.teacher.try(:user_extensions).try(:school).try(:name).blank? ? "--" : course.teacher.school_name
@ -4205,12 +4220,13 @@ end
sheet1[count_row,4] = course.homework_commons.where(:homework_type => 1).count
sheet1[count_row,5] = course.homework_commons.where(:homework_type => 4).count
sheet1[count_row,6] = course.exercises.count
sheet1[count_row,7] = course.is_public.to_i == 1 ? '否' : '是'
sheet1[count_row,8] = course.is_end ? "已结束" : "正在进行"
sheet1[count_row,9] = school
sheet1[count_row,10] = teacher_name
sheet1[count_row,11] = format_time(course.updatetime)
sheet1[count_row,12] = format_time(course.created_at)
sheet1[count_row,7] = course.evaluate_count
sheet1[count_row,8] = course.is_public.to_i == 1 ? '否' : '是'
sheet1[count_row,9] = course.is_end ? "已结束" : "正在进行"
sheet1[count_row,10] = school
sheet1[count_row,11] = teacher_name
sheet1[count_row,12] = format_time(course.updatetime)
sheet1[count_row,13] = format_time(course.created_at)
count_row += 1
end
book.write xls_report

@ -466,7 +466,8 @@ class MyshixunsController < ApplicationController
end
# taskId 即返回的game id
# 返回结果params [:stauts] 0 表示成功,其它则失败
# 返回结果params [:stauts] 0 表示运行结果成功,其它则失败
# compile_success 1 表示成功; 0表示编译失败; -1 表示创建pod失败 -2 表示克隆代码失败
# msg 错误信息
# output 为测试用户编译输出结果
# myshixun:status 1为完成实训
@ -474,7 +475,7 @@ class MyshixunsController < ApplicationController
# resubmit 1表示已通关后重新评测0表示非重新评测
# retry_status 0初始值1重新评测失败2重新评测成功
# tpiRepoPath 中间层图片的workspace路径
# params[:jsonTestDetails] = '{"buildID":"19284","compileSuccess":"1",
# params[:jsonTestDetails] = '{"buildID":"19284","compileSuccess":"1","createPodStatus": "1", "downloadStatus": "1",
# "msg":[{"caseId":"1","expectedOutput":"MSAyIDMNCg","input":"MiAzIDE","output":"MSAyIDMNCg","passed":"1"},
# {"caseId":"2","expectedOutput":"LTMgMSA2DQo","input":"LTMgNiAx","output":"LTMgMSA2DQo","passed":"1"},
# {"caseId":"3","expectedOutput":"LTcgLTUgLTMNCg","input":"LTcgLTMgLTU","output":"LTcgLTUgLTMNCg","passed":"1"}],
@ -496,7 +497,19 @@ class MyshixunsController < ApplicationController
resubmit = jsonTestDetails['resubmit']
outPut = tran_base64_decode64(jsonTestDetails['outPut'])
jenkins_testsets = jsonTestDetails['msg']
compile_success = jsonTestDetails['compileSuccess']
compile_success = jsonTestDetails['compileSuccess']
# # 创建pod的状态 0 失败 1 成功
# create_pod_status = jsonTestDetails['createPodStatus']
# # 克隆代码的装填 0 失败 1 成功
# clone_code_status = jsonTestDetails['downloadStatus']
# # 1表示编译成功0 表示运行异常; -1 表示克隆代码失败; -2 表示创建pod失败
# compile_success = if clone_code_status == "0"
# -1
# elsif create_pod_status == "0"
# -2
# else
# jsonTestDetails['compileSuccess']
# end
# message = Base64.decode64(params[:msg]) unless params[:msg].blank?
logger.info(outPut)
game = Game.find(game_id)

@ -196,12 +196,14 @@ class OauthController < ApplicationController
UserExtensions.create!(user_id: user.id, school_id: School.first.id, identity: 4, gender: 0)
openi = Openi.create!(user_id: user.id, openi_user_id: openi_user_id, avatar_url: avatar_url, login: login, name: name, email: email)
openi.user = user
openi.save!
end
end
self.logged_user = openi.user if openi.present? && openi.user.present?
original_url = params[:original_url]
if current_user.logged?
if User.current.logged?
redirect_to original_url
else
redirect_to signin_path

@ -586,9 +586,9 @@ class StudentWorkController < ApplicationController
if @stundet_works.size != 0
if @order == "student_id"
@stundet_works = @stundet_works.includes(:user => {:user_extensions => []}, :project => {}, :student_works_scores => {}).order("user_extensions.student_id #{@b_sort}")
@stundet_works = @stundet_works.includes(:user => {:user_extensions => []}).order("user_extensions.student_id #{@b_sort}")
else
@stundet_works = @stundet_works.includes(:user => {:user_extensions => []}, :project => {}, :student_works_scores => {}).order("#{@order} #{@b_sort}")
@stundet_works = @stundet_works.order("#{@order} #{@b_sort}")
end
end
@ -609,6 +609,16 @@ class StudentWorkController < ApplicationController
@student_work_pages = Paginator.new @student_work_count, @limit, @page
@offset ||= @student_work_pages.offset
@stundet_works = paginateHelper @stundet_works, @limit
if @stundet_works.size != 0
@stundet_works = if @homework.homework_type == 1
@stundet_works.includes(:student_works_scores, [user: :user_extensions])
elsif @homework.homework_type == 3
@stundet_works.includes(:student_works_scores, [project: :project_score], [user: :user_extensions])
elsif @homework.homework_type == 4
@stundet_works.includes(:student_works_scores, [myshixun: :games], [user: :user_extensions])
end
@members = @course.members.where(user_id: @stundet_works.pluck(:user_id)).select([:user_id, :course_group_id])
end
respond_to do |format|
format.js
format.html { render :layout => 'base_edu'}

@ -2,7 +2,7 @@
class SubjectsController < ApplicationController
layout 'base_subject'
# 如要添加或修改before_filter时请将handle_openi_request这个before_filter放至第一位
#before_filter :handle_openi_request, if: -> { user_login_and_from_openi? }, only: [:show]
before_filter :handle_openi_request, if: -> { user_login_and_from_openi? }, only: [:show]
before_filter :require_login, :except => [:show, :index]
before_filter :check_authentication, :except => [:show, :index]
before_filter :find_subject, :except => [:index, :new, :create, :create_subject, :new_subject, :append_to_stage, :send_to_course]

@ -191,7 +191,7 @@ module ApplicationHelper
# 分班
def member_group_name members, user_id
member = members.where(:user_id => user_id).first
member = members.find_by_user_id(user_id)
group_name = member.try(:course_group_id).to_i == 0 ? '未分班' : member.course_group.name
end
@ -269,12 +269,12 @@ module ApplicationHelper
end
# 实训作品列表的提交状态
def list_work_status work, homework, member
def list_work_status work, homework, course_group_id
if work.work_status == 0
str = "未提交"
else
if work.compelete_status == 0
setting_time = homework_group_setting homework, member.try(:course_group_id)
setting_time = homework_group_setting homework, course_group_id
end_time = setting_time.end_time.present? ? setting_time.end_time : homework.end_time
if end_time > Time.now || (homework.allow_late && !homework.course.is_end)
str = "正在提交"
@ -1317,11 +1317,11 @@ module ApplicationHelper
def had_commit_studentwork_count homework_common
member = homework_common.course.members.where(:user_id => User.current.id).first
student_works = homework_common.student_works
if member.present? && member.teacher_course_groups.count > 0
if member.present? && member.teacher_course_groups.size > 0
group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id)
student_works = student_works.where(:user_id => group_students)
end
student_works.where("work_status !=?", 0).count
student_works.where("work_status !=?", 0).size
end
# 实训作业的有效作品数
@ -1357,11 +1357,11 @@ module ApplicationHelper
def had_uncommit_studentwork_count homework_common
member = homework_common.course.members.where(:user_id => User.current.id).first
student_works = homework_common.student_works
if member.present? && member.teacher_course_groups.count > 0
if member.present? && member.teacher_course_groups.size > 0
group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id)
student_works = student_works.where(:user_id => group_students)
end
student_works.where("work_status =?", 0).count
student_works.where("work_status =?", 0).size
end
# 未评阅
@ -1369,12 +1369,12 @@ module ApplicationHelper
#count = StudentWorksScore.find_by_sql("SELECT count(distinct student_work_id) as count FROM student_works_scores sws, student_works sw, homework_commons hc where hc.id =#{homework_common.id} and sw.homework_common_id=hc.id and sw.is_delete = 0 and sws.student_work_id = sw.id and sws.user_id=#{User.current.id};").first.try(:count).to_i
member = homework_common.course.members.where(:user_id => User.current.id).first
student_works = homework_common.student_works
if member.present? && member.teacher_course_groups.count > 0
if member.present? && member.teacher_course_groups.size > 0
group_students = homework_common.course.members.where(:course_group_id => member.teacher_course_groups.pluck(:course_group_id)).map(&:user_id)
student_works = student_works.where(:user_id => group_students)
end
has_comment = StudentWorksScore.where(:student_work_id => student_works.map(&:id), :reviewer_role => [1, 2]).group_by(&:student_work_id).count
student_count = student_works.count
has_comment = StudentWorksScore.where(:student_work_id => student_works.map(&:id), :reviewer_role => [1, 2]).group_by(&:student_work_id).size
student_count = student_works.size
return student_count - has_comment
end
@ -6568,7 +6568,7 @@ def update_shixun_work_status homework
else
setting = homework.homework_group_settings.where("publish_time < '#{Time.now}'")
if setting.blank?
student_works = student_works.where("0=1")
student_works = student_works.none
else
users = homework.course.members.where(:course_group_id => setting.map(&:course_group_id))
student_works = student_works.where(:user_id => users.map(&:user_id))
@ -6578,7 +6578,7 @@ def update_shixun_work_status homework
myshixuns = Myshixun.where(:shixun_id => shixun.id, :user_id => student_works.map(&:user_id))
myshixuns.each do |myshixun|
work = student_works.where(:user_id => myshixun.user_id).first
member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{work.user_id}").first
member = homework.course.members.find_by(:user_id => work.user_id)
setting_time = homework_group_setting homework, member.try(:course_group_id)
games = myshixun.games.where(:challenge_id => challeng_ids)
myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil
@ -7220,8 +7220,8 @@ def search_work_member works,name
select_works = works
else
name = name.downcase
select_works = works.select{ |work| work.user.user_extensions[:student_id].to_s.downcase.include?(name) || (work.user[:lastname].to_s.downcase + work.user[:firstname].to_s.downcase).include?(name)
}
select_works = works.joins(user: :user_extensions).where("concat(lastname, firstname) like ?
or student_id like ?", "%#{name}%", "%#{name}%")
end
select_works
end

@ -46,7 +46,7 @@ module SubjectsHelper
content = if (shixun.status == 2 && !shixun.hidden) || User.current.manager_of_shixun?(shixun)
content_before = "<a href=\"#{shixun_path(shixun)}\" class=\"mr30 color-blue_4C shixun_detail pointer fl none\" target=\"_blank\">查看详情</a>"
if User.current.try(:mail).blank?
%Q{<a class="btn_auto user_bluebg_btn fl none" onclick="sure_box_redirect_without_newtab_btn('#{security_settings_path}', '开启实训,请先绑定邮箱','绑定邮箱');" id = "shixun_operation">开始实战</a>}
%Q{<a class="btn_auto user_bluebg_btn fl none" onclick="sure_box_redirect_without_newtab_btn('#{my_account_path}', '开启实训,请先绑定邮箱','绑定邮箱');" id = "shixun_operation">开始实战</a>}
elsif shixun.challenges_count > 0
if is_modify.blank?
%Q{#{link_to '开始实战', shixun_exec_shixun_path(shixun, :is_subject => subject.id), :class => "btn_auto user_bluebg_btn fl none", :id => "shixun_operation", :target => "_blank"}}

@ -24,6 +24,14 @@ class Challenge < ActiveRecord::Base
scope :choose_type, lambda{where(st: 1)}
scope :practice_type, lambda{where(st: 0)}
def shixun_done_new
self.games.select{|game| game.status == 2 }.size
end
def shixun_running_new
self.games.select{|game| game.status != 2 }.size
end
def game_difficulty
str = "简单"
case self.difficulty

@ -500,6 +500,15 @@ class Course < ActiveRecord::Base
end
end
# 课堂实训作业的评测次数
def evaluate_count
course_user_ids = self.members.map(&:user_id)
shixun_ids = self.homework_commons.joins(:homework_commons_shixuns).where(homework_type: 4).pluck(:shixun_id)
return 0 if shixun_ids.blank?
Game.joins(:challenge).where(challenges: {shixun_id: shixun_ids}, games: {user_id: course_user_ids}).sum(:evaluate_count)
end
#课程动态公共表记录
def act_as_course_activity
self.course_acts << CourseActivity.new(:user_id => self.tea_id,:course_id => self.id)

@ -150,7 +150,7 @@ class HomeworkCommon < ActiveRecord::Base
# 作业的实训
def shixun
Shixun.find(self.homework_commons_shixuns.try(:shixun_id))
homework_commons_shixuns.shixun
end
# 作业实训过关的数目

@ -1,7 +1,7 @@
class Output < ActiveRecord::Base
# attr_accessible :title, :body
# actual_output 编程题:实际输出, 选择题: 用户提交的答案(如: 014 对应用户选择为A B E
# compile_success 1 表示程序未报错,有正常输出, 0.表示程序抛异常了,报错!
# compile_success 1 表示程序未报错,有正常输出, 0.表示程序抛异常了,报错! -1 表示克隆代码失败; -2 表示创建pod失败
default_scope :order => 'query_index desc'
belongs_to :game
#belongs_to :challenge_choose

@ -92,12 +92,12 @@ class GamesService
sql =
if max_query_index > 0
"SELECT
b.actual_output, b.out_put, b.result, b.compile_success, a.is_public, a.input, a.output
b.code, b.actual_output, b.out_put, b.result, b.compile_success, a.is_public, a.input, a.output
FROM
(SELECT position, input, output, challenge_id, is_public FROM test_sets where challenge_id=#{game_challenge.id}) a
LEFT JOIN
(SELECT
result, test_set_position, g.challenge_id, o.actual_output, o.out_put, o.compile_success
result, test_set_position, g.challenge_id, o.actual_output, o.out_put, o.compile_success, o.code
FROM
outputs o left join games g on g.id=o.game_id
WHERE
@ -153,9 +153,10 @@ class GamesService
actual_output = test_set.attributes.count > 4 ? test_set.try(:actual_output) : nil
result = test_set.attributes.count > 4 ? test_set.try(:result) : nil
compile_success = test_set.attributes.count > 4 ? test_set.try(:compile_success) : nil
status = test_set.attributes.count > 4 ? test_set.try(:code) : nil
#actual_output = Base64.encode64(actual_output)
actual_output = (compile_success.to_s == "0" ? "编译失败,请在测试结果中查看具体的错误信息" : actual_output)
actual_output = (compile_success.to_s == "0" && status.to_s == "-1" ? "编译失败,请在测试结果中查看具体的错误信息" : actual_output)
public_result = {:is_public => (test_set.is_public ? 1 : 0), :result => result,
:actual_output => actual_output, :compile_success => compile_success}
@ -317,7 +318,7 @@ class GamesService
max_query_index = game.query_index - 1
# 区分评测过未评测过,未评测过按需求取数据
if max_query_index > 0
qurey_test_sets = TestSet.find_by_sql("SELECT o.actual_output, o.out_put, o.result, o.compile_success, o.test_set_position, o.query_index,t.is_public,t.input, t.output, g.id as game_id, c.id as challenge_id FROM outputs o,games g ,challenges c,test_sets t where
qurey_test_sets = TestSet.find_by_sql("SELECT o.code, o.actual_output, o.out_put, o.result, o.compile_success, o.test_set_position, o.query_index,t.is_public,t.input, t.output, g.id as game_id, c.id as challenge_id FROM outputs o,games g ,challenges c,test_sets t where
g.id=#{game.id} and o.query_index=#{max_query_index} and g.id = o.game_id and c.id= g.challenge_id and t.challenge_id = c.id and t.position =o.test_set_position order by o.query_index
")
else
@ -837,7 +838,8 @@ class GamesService
max_query_index = game.query_index - 1
# 区分评测过未评测过,未评测过按需求取数据
if max_query_index > 0
qurey_test_sets = TestSet.find_by_sql("SELECT o.actual_output,o.result, o.compile_success, o.test_set_position, o.query_index,t.is_public,t.input, t.output, g.id as game_id, c.id as challenge_id FROM outputs o,games g ,challenges c,test_sets t where
qurey_test_sets = TestSet.find_by_sql("SELECT o.code, o.actual_output,o.result, o.compile_success, o.test_set_position,
o.query_index,t.is_public,t.input, t.output, g.id as game_id, c.id as challenge_id FROM outputs o,games g ,challenges c,test_sets t where
g.id=#{game.id} and o.query_index=#{max_query_index} and g.id = o.game_id and c.id= g.challenge_id and t.challenge_id = c.id and t.position =o.test_set_position order by o.query_index
")
else

@ -60,9 +60,11 @@ module ZipService
bid_homework_path << file_name
digests << Trustie::Utils.digest(file_name)
end
# file_name = "#{Time.now.strftime("%Y%m%d%H:%M:%S").to_s}-#{exercise.course_id}-#{exercise.exercise_name}-#{exercise_user.user.user_extensions.student_id}-#{exercise_user.user.show_name}" + ".pdf"
out_file_name = "#{Time.now.strftime("%Y%m%d%H%M%S").to_s}-#{exercise.course_id}-#{exercise.exercise_name}.zip"
out_file_name.gsub!(" ", "-")
out_file_name.gsub!("/", "_")
out_file = find_or_pack(exercise.id, exercise.user_id, digests.sort){
zipping("#{Time.now.strftime("%Y%m%d%H%M%S").to_s}-#{exercise.course_id}-#{exercise.exercise_name}.zip",
zipping(out_file_name,
bid_homework_path, OUTPUT_FOLDER)
}
[{files:[out_file.file_path], count: 1, index: 1,
@ -89,8 +91,11 @@ module ZipService
digests << Trustie::Utils.digest(file_name)
end
end
out_file_name = "#{Time.now.strftime("%Y%m%d%H%M%S").to_s}-#{homework_common.course_id}-#{homework_common.name}.zip"
out_file_name.gsub!(" ", "-")
out_file_name.gsub!("/", "_")
out_file = find_or_pack(homework_common.id, homework_common.user_id, digests.sort){
zipping("#{Time.now.strftime("%Y%m%d%H%M%S").to_s}-#{homework_common.course_id}-#{homework_common.name}.zip",
zipping(out_file_name,
bid_homework_path, OUTPUT_FOLDER)
}
[{files:[out_file.file_path], count: 1, index: 1,
@ -188,6 +193,7 @@ module ZipService
# file_name = "#{exercise.course_id}-#{exercise.exercise_name}-#{exercise_user.user.user_extensions.student_id}-#{exercise_user.user.show_real_name}" + ".pdf"
# file_name = "#{Time.now.strftime("%Y%m%d%H%M%S").to_s}-#{exercise.course_id}-#{exercise.id}-#{exercise_user.user.user_extensions.student_id}" + ".pdf"
file_name.gsub!(" ", "-")
file_name.gsub!("/", "_")
kit.to_file("#{OUTPUT_FOLDER}/#{file_name}")
out_file = "#{OUTPUT_FOLDER}/#{file_name}"
out_file
@ -200,6 +206,7 @@ module ZipService
# file_name = "#{homework.course_id}-#{homework.name}-#{student_work.user.user_extensions.student_id}-#{student_work.user.show_real_name}" + ".pdf"
# file_name = "#{Time.now.strftime("%Y%m%d%H%M%S").to_s}-#{homework.course_id}-#{homework.id}-#{student_work.user.user_extensions.student_id}" + ".pdf"
file_name.gsub!(" ", "-")
file_name.gsub!("/", "_")
kit.to_file("#{OUTPUT_FOLDER}/#{file_name}")
out_file = "#{OUTPUT_FOLDER}/#{file_name}"
out_file

@ -49,8 +49,9 @@
<%= javascript_include_tag 'attachments' %>
<style>
.ui-widget-content{
height: 16px;
width: 200px;
/*height: 16px;*/
/*width: 200px;*/
top: 320px !important;
float: left;
margin: 5px 10px 0px 10px;
}

@ -73,8 +73,8 @@
</div>
<div class="clearfix pl28">
<span class="task-colspan"><%= shixun_done(@shixun, challenge.position).to_i %>&nbsp;人完成挑战</span>
<span class="task-colspan"><%= shixun_running(@shixun, challenge.position).to_i %>&nbsp;人正在挑战</span>
<span class="task-colspan"><%= challenge.shixun_done_new.to_i %>&nbsp;人完成挑战</span>
<span class="task-colspan"><%= challenge.shixun_running_new.to_i %>&nbsp;人正在挑战</span>
<% if challenge.st != 0 %>
<span class="task-colspan"><span class="colspan-grey">经验值&nbsp;<%= challenge.choose_score %></span></span>
<% else %>
@ -86,7 +86,7 @@
<% if @current_myshixun %>
<% current_game = challenge.games.where(:user_id => User.current).first %>
<% case current_game.try(:status) %>
<% when 0, 1 %>
<% when 0, 1 %>
<% if @current_modify %>
<a href='javascript:void(0)' class="edu-default-btn edu-blueback-btn fr" onclick="begin_sXun('<%= @current_myshixun.try(:id) %>')">直接挑战</a>
<% else %>
@ -96,7 +96,7 @@
<a href="<%= operation_shixun_path(@shixun, :myshixun_id => @current_myshixun.try(:id)) %>" data-remote="true" class="edu-default-btn edu-blueline-btn fr">已完成</a>
<% when 3, nil %>
<% if @shixun.task_pass %>
<a href='javascript:void(0)' class="edu-default-btn edu-blueback-btn fr" onclick="begin_sXun('<%= @current_myshixun.try(:id) %>')">直接挑战</a>
<a href='<%= myshixun_game_path(current_game, :myshixun_id => @current_myshixun.try(:id)) %>' class="edu-default-btn edu-blueback-btn fr" >直接挑战</a>
<% else %>
<a href="javascript:void(0)" data-tip-down="请先完成前序关卡" class="edu-default-btn edu-greyback-btn fr">直接挑战</a>
<% end %>

@ -35,7 +35,7 @@
<li>实训</li>
<li>实训报告</li>
<li>学员实战时间</li>
<li>云主机</li>
<!-- <li>云主机</li>-->
</div>
<div class="base_status_value">
<li><span><%= @teachers_count %></span>人</li>
@ -44,7 +44,7 @@
<li><span><%= @shixuns_count %></span>个</li>
<li><span><%= @shixun_report_count %></span>个</li>
<li><span data-tip-down="所有学员的实训耗时之和"><span><%= @shixun_time_sum %></span>天</span></li>
<li><span><%= @department.present? ? @department.host_count.to_i : @school.departments.first.try(:host_count).to_i %></span>台</li>
<!-- <li><span><%#= @department.present? ? @department.host_count.to_i : @school.departments.first.try(:host_count).to_i %></span>台</li>-->
</div>
</div>

@ -15,12 +15,12 @@
<%= graduation_requirements > 0 ? graduation_requirements : @btn_text %>
</a>
</span>
<span class="column-5 fl">
<% students = year.ec_year_students.count %>
<a href="<%= student_lists_ec_major_school_ec_year_path(year, :ec_major_school_id => @major_school) %>" class="<%= students > 0 ? '' : 'color-blue' %>">
<%= students > 0 ? students : @btn_text %>
</a>
</span>
<!--<span class="column-5 fl">-->
<!--<%# students = year.ec_year_students.count %>-->
<!--<a href="<%#= student_lists_ec_major_school_ec_year_path(year, :ec_major_school_id => @major_school) %>" class="<%#= students > 0 ? '' : 'color-blue' %>">-->
<!--<%#= students > 0 ? students : @btn_text %>-->
<!--</a>-->
<!--</span>-->
<span class="column-5 fl">
<% courses = year.ec_courses.count %>
<a href="<%= ec_course_setting_ec_major_school_ec_year_path(year, :ec_major_school_id => @major_school) %>" class="<%= courses > 0 ? '' : 'color-blue' %>">

@ -4,21 +4,26 @@
</p>
<div>
<div style="position: relative">
<p class="clearfix padding20-30 bor-bottom-greyE edu-back-white">
<span class="fl font-18"><%= @major.name %></span>
<ul class="clearfix padding20-30 bor-bottom-greyE edu-back-white">
<li class="fl">
<p class="font-18 clearfix">
<span class="fl"><%= @major.name %></span>
<% if @major.schools && User.current.admin? %>
<i class="iconfont icon-youjiantou font-14 newxiajiantou fl ml20" ></i>
<ul class="edu-menu-list" id="ecmajorschools">
<% @major.schools.each do |school| %>
<% ec_major_school = school.ec_major_schools.where(:ec_major_id => @major.id).first %>
<li><a href="<%= ec_major_school_path(ec_major_school) %>" target="_blank" ><%= school.name %></a></li>
<% end %>
</ul>
<% end %>
</p>
<p><span class="color-grey-9 mr10">请选择添加参与认证的学生界别,多个界别分次添加</span><a href="javascript:void(0)" onclick="elasticLayer(3528);" class="color-blue">查看详情</a></p>
</li>
<% if @major_manager %>
<a href="javascript:void(0)" class="fr white-btn edu-blueback-btn mt4" onclick="addAcademicYear();">添加届别</a>
<a href="javascript:void(0)" class="fr white-btn edu-blueback-btn mt25" onclick="addAcademicYear();">添加届别</a>
<% end %>
<% if @major.schools && User.current.admin? %>
<i class="iconfont icon-youjiantou font-14 newxiajiantou" ></i>
<ul class="edu-menu-list" id="ecmajorschools">
<% @major.schools.each do |school| %>
<% ec_major_school = school.ec_major_schools.where(:ec_major_id => @major.id).first %>
<li><a href="<%= ec_major_school_path(ec_major_school) %>" target="_blank" ><%= school.name %></a></li>
<% end %>
</ul>
<% end %>
</p>
</ul>
</div>
<div class="clearfix padding20-30 edu-back-white">
<div class="fr" id="pollingPanel">
@ -31,7 +36,7 @@
<span class="column-1">届别</span>
<span class="column-5 fl">培养目标</span>
<span class="column-5 fl">毕业要求</span>
<span class="column-5 fl">学生</span>
<!--<span class="column-5 fl">学生</span>-->
<span class="column-5 fl">课程体系</span>
<span class="column-6 fl lineh-20">课程目标<br/>(达成情况)</span>
<span class="column-5 fl edu-txt-center lineh-20">毕业要求指标点<br/>(达成情况)</span>

@ -1,9 +1,10 @@
<!-------------------------------------课程列表begin---------------------------------->
<div class="educontent mb50">
<%= render :partial => "ecs/ec_top_navigation" %>
<p class="clearfix padding20-30 bor-bottom-greyE edu-back-white">
<span class="fl font-18">课程体系(<%= @ec_courses.count %></span>
</p>
<ul class="clearfix padding20-30 bor-bottom-greyE edu-back-white">
<li class="font-18">课程体系(<%= @ec_courses.count %></li>
<p><span class="color-grey-9 mr10">提供模板支持课程信息导入,亦可直接新增课程;并继续完成每门课程的评估机制配置</span><a href="javascript:void(0)" onclick="elasticLayer(3533);" class="color-blue">查看详情</a></p>
</ul>
<p class="padding20-30 edu-back-white clearfix">
<span class="mr30">温馨提醒:请下载课程模板(<a href="<%= @file_url %>" class="color-green"><i class="iconfont icon-fujian mr5 color-green font-16"></i>点击下载</a>),将本届所有参与认证的课程名称导入系统,以便录入教学活动相关数据</span>
<%= file_field_tag 'attachments[dummy][file]',

@ -10,12 +10,15 @@
<div class="educontent mb50">
<%= render :partial => "ecs/ec_top_navigation" %>
<div class="edu-back-white minH-560 mb50 pb20">
<p class="clearfix padding20-30 bor-bottom-greyE">
<span class="fl font-18">毕业要求(及其指标点)</span>
<ul class="clearfix padding20-30 bor-bottom-greyE">
<li class="fl">
<p class="font-18">毕业要求(及其指标点)</p>
<p><span class="color-grey-9 mr10">请结合本专业特色修改毕业要求文字描述及指标点需完全覆盖12项通用标准</span><a href="javascript:void(0)" onclick="elasticLayer(3530);" class="color-blue">查看详情</a></p>
</li>
<% if @template_major || @ec_major_school.template_major %>
<%=link_to "导出毕业要求", graduation_requirement_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id, :format => 'xls'), :class => "fr white-btn edu-blueback-btn" %>
<%=link_to "导出毕业要求", graduation_requirement_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id, :format => 'xls'), :class => "fr white-btn edu-blueback-btn mt25" %>
<% end %>
</p>
</ul>
<div class="ListTableLine">
<p class="clearfix">
<span class="column-second">指标点</span>

@ -1,12 +1,15 @@
<div class="educontent mb50">
<%= render :partial => "ecs/ec_top_navigation" %>
<div class="minH-560 edu-back-white mb50">
<p class="clearfix padding20-30 bor-bottom-greyE">
<span class="fl font-18">毕业要求对培养目标的支撑</span>
<ul class="clearfix padding20-30 bor-bottom-greyE">
<li class="fl">
<p class="font-18">毕业要求对培养目标的支撑</p>
<p><span class="color-grey-9 mr10">用矩阵图的形式说明本专业毕业要求对培养目标的支撑关系,鼠标左键单击单元格即可</span><a href="javascript:void(0)" onclick="elasticLayer(3531);" class="color-blue">查看详情</a></p>
</li>
<% if @template_major || @ec_major_school.template_major %>
<%=link_to "导出矩阵", requirement_vs_objective_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id, :format => 'xls'), :class => "fr white-btn edu-blueback-btn" %>
<%=link_to "导出矩阵", requirement_vs_objective_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id, :format => 'xls'), :class => "fr white-btn edu-blueback-btn mt25" %>
<% end %>
</p>
</ul>
<div class="padding30">
<p class="clearfix mb20">
<span class="fl mr30"><i class="iconfont icon-gouxuan color-green font-16 mr5"></i>表示支撑</span>

@ -1,12 +1,15 @@
<div class="educontent mb50">
<%= render :partial => "ecs/ec_top_navigation" %>
<div class="minH-560 edu-back-white mb50">
<p class="clearfix padding20-30 bor-bottom-greyE">
<span class="fl font-18">毕业要求对通用标准的支撑</span>
<ul class="clearfix padding20-30 bor-bottom-greyE">
<li class="fl">
<p class="font-18">毕业要求对通用标准的支撑</p>
<p><span class="color-grey-9 mr10">用矩阵图的形式说明本专业毕业要求对12项通用标准的覆盖关系鼠标左键单击单元格即可</span><a href="javascript:void(0)" onclick="elasticLayer(3532);" class="color-blue">查看详情</a></p>
</li>
<% if @template_major || @ec_major_school.template_major %>
<%=link_to "导出矩阵", requirement_vs_standard_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id, :format => 'xls'), :class => "fr white-btn edu-blueback-btn" %>
<%=link_to "导出矩阵", requirement_vs_standard_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id, :format => 'xls'), :class => "fr white-btn edu-blueback-btn mt25" %>
<% end %>
</p>
</ul>
<div class="padding30">
<p class="clearfix mb20">
<span class="fl mr30"><i class="iconfont icon-gouxuan color-green font-16 mr5"></i>表示支撑</span>

@ -2,12 +2,15 @@
<%= render :partial => "ecs/ec_top_navigation" %>
<div class="mb50 mb50">
<p class="edu-back-white clearfix padding20-30 bor-bottom-greyE">
<span class="fl font-18">培养目标</span>
<ul class="edu-back-white clearfix padding20-30 bor-bottom-greyE">
<li class="fl">
<p class=" font-18">培养目标</p>
<p><span class="color-grey-9 mr10">请结合本专业特色修改培养目标文字描述及目标分解</span><a href="javascript:void(0)" onclick="elasticLayer(3529);" class="color-blue">查看详情</a></p>
</li>
<% if @template_major || @ec_major_school.template_major %>
<a href="<%= training_objectives_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id, :format => "xls") %>" class="fr white-btn edu-blueback-btn mt4">导出培养目标</a>
<a href="<%= training_objectives_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id, :format => "xls") %>" class="fr white-btn edu-blueback-btn mt25">导出培养目标</a>
<% end %>
</p>
</ul>
<div class="edu-back-white padding20-30" id="training_objective_contents">
<%= render :partial => "training_objective_contents" %>
</div>

@ -45,12 +45,16 @@
<a class="<%= ['requirement_vs_standard'].include?(params[:action]) ? "ecmarginleft ecTitleFFF ml22":"ecTitle" %>">4</a>
<a class="<%= ['requirement_vs_standard'].include?(params[:action]) ? "ecTitlefontFFF":"ecTitlefont" %>" href="<%= requirement_vs_standard_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id) %>">毕业要求 vs 通用标准</a>
</li>
<li class="<%= ['student_lists'].include?(params[:action]) ? "ecimgs3" : "ecimgs" %>">
<a class="<%= ['student_lists'].include?(params[:action]) ? "ecmarginleft ecTitleFFF ml22":"ecTitle" %>">5</a>
<a class="<%= ['student_lists'].include?(params[:action]) ? "ecTitlefontFFF":"ecTitlefont" %>" href="<%= student_lists_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id) %>">学生</a>
</li>
<li class="<%= ['ec_course_setting'].include?(params[:action]) ? "ecimgs3" : "ecimgs" %>">
<a class="<%= ['ec_course_setting'].include?(params[:action]) ? "ecmarginleft ecTitleFFF ml12":"ecTitle" %>">5</a>
<a class="<%= ['ec_course_setting'].include?(params[:action]) ? "ecmarginleft ecTitleFFF ml12":"ecTitle" %>">6</a>
<a class="<%= ['ec_course_setting'].include?(params[:action]) ? "ecTitlefontFFF":"ecTitlefont" %>" href="<%= ec_course_setting_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id) %>">课程体系</a>
</li>
<li class="<%= ['requirement_vs_course'].include?(params[:action]) ? "ecimgs3" : "ecimgs" %>">
<a class="<%= ['requirement_vs_course'].include?(params[:action]) ? "ecmarginleft ecTitleFFF ml12":"ecTitle" %>">6</a>
<a class="<%= ['requirement_vs_course'].include?(params[:action]) ? "ecmarginleft ecTitleFFF ml12":"ecTitle" %>">7</a>
<a class="<%= ['requirement_vs_course'].include?(params[:action]) ? "ecTitlefontFFF":"ecTitlefont" %>" href="<%= requirement_vs_courses_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id) %>">课程体系 vs 毕业要求</a>
</li>
<li class="ecimgs">

@ -19,12 +19,15 @@
<% end %>
<div class="educontent mb30">
<p class="clearfix padding20-30 bor-bottom-greyE edu-back-white">
<span class="fl font-18">专业列表</span>
<ul class="clearfix padding20-30 bor-bottom-greyE edu-back-white">
<li class="fl">
<p class="font-18">专业列表</p>
<p><span class="color-grey-9 mr10">请添加参与认证的专业名称</span><a href="javascript:void(0)" onclick="elasticLayer(3527);" class="color-blue">查看详情</a></p>
</li>
<% if @is_school_manager %>
<a href="javascript:void(0)" class="fr white-btn edu-blueback-btn" onclick="addNewMajorPanel();">添加专业</a>
<a href="javascript:void(0)" class="fr white-btn edu-blueback-btn mt25" onclick="addNewMajorPanel();">添加专业</a>
<% end %>
</p>
</ul>
<div class="clearfix padding20-30 bor-bottom-greyE edu-back-white">
<span class="fl font-12 mt5">
<span class="color-orange-tip mr3" id="search_major_count"><%= @obj_count %></span>

@ -164,7 +164,7 @@
<% if exercise_question.question_type == 5 %>
<p class="pl15 pr15 mb10"><%= exercise_question.shixun.name %></p>
<% end %>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= sanitize exercise_question.question_title %></div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= exercise_question.question_title.html_safe %></div>
<% case exercise_question.question_type %>
<% when 1 %>
<div class="pl15 pr15 mb15">

@ -142,7 +142,7 @@
<% if exercise_question.question_type == 5 %>
<p class="pl15 pr15 mb10"><%= exercise_question.shixun.name %></p>
<% end %>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= sanitize exercise_question.question_title %></div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= exercise_question.question_title.html_safe %></div>
<% case exercise_question.question_type %>
<% when 1 %>
<div class="pl15 pr15 mb15">

@ -15,7 +15,7 @@
</p>
<% end %>
</div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= sanitize exercise_question.question_title%></div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= exercise_question.question_title.html_safe%></div>
<div class="pl15 pr15 mb10">
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<li class="clearfix">

@ -15,7 +15,7 @@
</p>
<% end %>
</div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= sanitize exercise_question.question_title %></div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= exercise_question.question_title.html_safe %></div>
<div class="pl15 pr15 mb10">
<% exercise_question.exercise_choices.reorder("choice_position").each_with_index do |exercise_choice,index| %>
<li class="clearfix">

@ -15,7 +15,7 @@
</p>
<% end %>
</div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= sanitize exercise_question.question_title %></div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= exercise_question.question_title.html_safe %></div>
<div class="clearfix bor-top-greyE padding15 answer_con">
<p>参考答案:</p>
<div class="justify font-14" style="padding: 0; padding-left: 10px;" id="exercise_answer_text_<%= exercise_question.id %>">

@ -15,7 +15,7 @@
</p>
<% end %>
</div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= sanitize exercise_question.question_title %></div>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word"><%= exercise_question.question_title.html_safe %></div>
<div class="pl15 pr15 pt10 pb10 bor-top-greyE">
<% exercise_question.exercise_standard_answers.reorder("created_at").each_with_index do |exercise_choice,index| %>
<span class="">候选答案<%= convert_to_chi_num(index+1) %></span>

@ -259,7 +259,7 @@
<p class="pl15 pr15 mb10"><%= exercise_question.shixun.name %></p>
<% end %>
<div class="pl15 pr15 justify upload_img table_maxWidth break_word">
<%= sanitize exercise_question.question_title %>
<%= exercise_question.question_title.html_safe %>
</div>
<% case exercise_question.question_type %>
<% when 1 %>

@ -61,22 +61,22 @@
<% end %>
<% end %>
<%# elsif homework_common.homework_type != 4 %>
<% else %>
<% if had_commit_studentwork_count(homework_common) > 0 %>
<span class="ml50 fl">
<%= link_to had_commit_studentwork_count(homework_common), student_work_index_path(:homework => homework_common.id), :class => 'color-orange03 mr5', :target => '_blank' %>
已交
</span>
<%# else %>
<%# if had_commit_studentwork_count(homework_common) > 0 %>
<!-- <span class="ml50 fl">-->
<%#= link_to had_commit_studentwork_count(homework_common), student_work_index_path(:homework => homework_common.id), :class => 'color-orange03 mr5', :target => '_blank' %>
<!-- 已交-->
<!-- </span>-->
<%# if homework_common.homework_type == 4 %>
<!--<span class="ml50">-->
<!--<a href="javascript:void(0);" class="color-orange03 mr5" style="cursor: default"><%#= homework_common.pass_game_count %></a>通关-->
<!--</span>-->
<%# end %>
<span class="ml50 fl">
<%= link_to had_uncommit_studentwork_count(homework_common), student_work_index_path(:homework => homework_common.id), :class => 'color-orange03 mr5', :target => '_blank' %>
未交
</span>
<% end %>
<!-- <span class="ml50 fl">-->
<%#= link_to had_uncommit_studentwork_count(homework_common), student_work_index_path(:homework => homework_common.id), :class => 'color-orange03 mr5', :target => '_blank' %>
<!-- 未交-->
<!-- </span>-->
<%# end %>
<%# elsif homework_common.homework_type == 4 && homework_common.homework_commons_shixuns.shixun %>
<%# had_passed_count = had_passed_changllenge_count(homework_common.homework_commons_shixuns.shixun, User.current) %>
<%# challenge_count = homework_common.homework_commons_shixuns.shixun.challenges.count %>
@ -129,7 +129,7 @@
<%= link_to "创建项目", new_project_path(:host=>Setting.host_name, :course_id => homework_common.course_id), :class => 'white-btn orange-btn fr mr10 mt8', :target => "_blank" %>
<% end %>
<% elsif homework_common.homework_type == 4 && homework_common.homework_commons_shixuns.shixun %>
<%= link_to "实训详情", shixun_path(Shixun.find(homework_common.homework_commons_shixuns.shixun_id)), :target => "_blank", :class => 'white-btn orange-btn fr mr10 mt8' %>
<%= link_to "实训详情", shixun_path(homework_common.homework_commons_shixuns.shixun.try(:identifier)), :target => "_blank", :class => 'white-btn orange-btn fr mr10 mt8' %>
<% end %>
<% if @is_teacher %>
@ -148,7 +148,7 @@
<li>
<%= link_to '立即发布', publish_notice_homework_common_path(homework_common), :remote => true %>
</li>
<% elsif (homework_common.homework_detail_manual.try(:comment_status) == 1 || homework_common.homework_detail_manual.try(:comment_status) == 2) && homework_common.end_time > Time.now %>
<% elsif (homework_common.homework_detail_manual.try(:comment_status) == 1 || homework_common.homework_detail_manual.try(:comment_status) == 2) && homework_common.end_time && homework_common.end_time > Time.now %>
<li>
<%= link_to '立即截止', end_notice_homework_common_path(homework_common), :remote => true %>
</li>

@ -13,9 +13,9 @@
</li>
<% unless course_board.children.empty? %>
<ul>
<% course_board.children.reorder("position asc").each do |board| %>
<% course_board.children.includes(:messages).reorder("position asc").each do |board| %>
<li id="board_children_<%= board.id %>" class="clearfix">
<% count = board ? board.messages.count : 0 %>
<% count = board ? board.messages.size : 0 %>
<a href="<%= course_boards_path(@course, :board_id => board.id) %>" class="fl"><span class="fl ml38 devide_class task-hide" data-tip-down="<%=board.name %>"><%=board.name %></span>
<% if count > 0 %>
<span class="fr mr30 courseNewNum"><%= count %></span>

@ -17,9 +17,9 @@
</a>
</li>
<% end %>
<% @course.course_groups.each do |group| %>
<% @course.course_groups.includes(:members).each do |group| %>
<li id="course_group_<%=group.id %>" class="clearfix">
<% count = group.members.count %>
<% count = group.members.size %>
<a href="<%= students_course_path(@course, :group_id => group.id) %>" class="fl"><span class="fl ml38 devide_class task-hide" data-tip-down="<%=group.name %>"><%=group.name %></span>
<% if count > 0 %>
<span class="fl ml10 color-grey-9 font-12 groupNum"><%= count %></span>

@ -9,6 +9,7 @@
<th width="6%">普通作业</th>
<th width="5%">实训作业</th>
<th width="4%">试卷</th>
<th width="6%">评测次数</th>
<th width="4%">私有</th>
<th width="7%">状态</th>
<th width="8%" class="edu-txt-left">创建者单位</th>
@ -28,6 +29,7 @@
<td><%= course.homework_commons.where(:homework_type => 1).count %></td>
<td><%= course.homework_commons.where(:homework_type => 4).count %></td>
<td><%= course.exercises.count %></td>
<td><%= course.evaluate_count %></td>
<td><%= course.is_public.to_i == 1 ? '--' : '√' %></td>
<td><%= course.is_end ? "已结束" : "正在进行" %></td>
<td class="edu-txt-left"><%= course.teacher.try(:user_extensions).try(:school).try(:name).blank? ? "--" : course.teacher.try(:user_extensions).try(:school) %></td>

@ -16,13 +16,14 @@
<th width="12%">开始时间<i class="fa fa-long-arrow-down color-light-green ml5" ></i></th>
<th width="12%">结束时间</th>
<th width="8%">耗时</th>
<th width="10%">评测者</th>
<th width="8%">最大执行时间</th>
<th width="8%">评测者</th>
<th width="10%">评测者单位</th>
<th width="5%">耗时详细</th>
</tr>
</thead>
<tbody>
<% @evaluate_recods.each do |record| %>
<% @evaluate_recods.includes(:shixun).each do |record| %>
<tr>
<td><%= record.id %></td>
<td><a href="/tasks/<%= record.game.try(:identifier) %>" target="_blank"><%= record.game.try(:identifier) %></a></td>
@ -33,6 +34,7 @@
<td><%= record.created_at.strftime('%Y-%m-%d %H:%M:%S') %></td>
<td><%= record.updated_at.strftime('%Y-%m-%d %H:%M:%S') %></td>
<td><%= record.try(:consume_time) %></td>
<td><%= record.shixun.exec_time %></td>
<td class="task-hide" title="<%= record.user.show_real_name %>">
<%= link_to record.user.show_real_name, user_path(record.user), :target => "_blank" %>
</td>

@ -1,19 +1,23 @@
<li class="clearfix tableHead">
<span>序号</span>
<span>客户名称</span>
<span>操作</span>
<span><a href="<%= customers_list_managements_path(:partner_id => @current_partner.try(:id)) %>"s
<span>
<a href="<%= customers_list_managements_path(:partner_id => @current_partner.try(:id)) %>"
data-remote="true" class="color-blue">+添加</a>
</span>
<span>添加时间</span>
</li>
<% @current_partner.try(:customers).try(:each_with_index) do |customer, index| %>
<li>
<span><%= index + 1 %></span>
<span class="task-hide"><%= customer.school.name %></span>
<a href="<%= customer.school.statistic_url %>" target="_blank" class="color-blue"><%= customer.school.name %></a>
<span>
<a href="javascript:void(0)" onclick="delete_confirm_box_2('<%= delete_customers_managements_path(customer: customer.id, partner_id: @current_partner.try(:id)) %>',
'确定要删除该客户吗')" class="color-grey-9">删除</a>
</span>
<a href="javascript:void(0)" onclick="delete_confirm_box_2('<%= delete_customers_managements_path(customer: customer.id, partner_id: @current_partner.try(:id)) %>',
'确定要删除该客户吗')" class="color-grey-9">删除</a>
</span>
<span>
<%= format_time customer.created_at %>
</span>
</li>
<% end %>
<% end %>

@ -4,7 +4,7 @@
<div class="fr mr10 edu-menu-panel mt5">
<i class="iconfont icon-sandian color-grey-9 font-14"></i>
<ul class="edu-menuSmall-list edu-txt-center">
<li><a href="<%= partners_managements_path(:partner => partner) %>">查看</a></li>
<li><a href="<%= partner_list_cooperate_path partner %>">查看</a></li>
<li><a href="javascript:void(0)" onclick="delPartners('<%= delete_partner_managements_path(:partner_id => partner) %>');">删除</a></li>
</ul>
</div>

@ -51,15 +51,15 @@
</span>
<span>
<input type="checkbox" name="reasons[]" value="其他" id="reject-reason-7" class="ml5 mr5 magic-checkbox" style="float:left; margin-top: 8px;"/>
<input type="checkbox" name="reasons[]" value="其他" id="reject-reason-7" data-type="other" class="ml5 mr5 magic-checkbox" style="float:left; margin-top: 8px;"/>
<label for="reject-reason-7" class="color4C4C4C">其他</label>
</span>
</li>
<li class="clearfix mt10">
<label class="panel-form-label fl">备注说明:</label>
<textarea class="remarktextarea fl panel-box-sizing candiate_answer" name="reject_description" placeholder="为选择的撤销原因补充备注说明...."></textarea>
<label class="panel-form-label fl reject-description-label">备注说明<span class="color-red" style="display: none;">*</span></label>
<textarea class="remarktextarea fl panel-box-sizing candiate_answer" name="reject_description" placeholder="为选择的撤销原因补充备注说明(当选择原因“其他”,备注说明必填)..."></textarea>
</li>
<li class="ml20 error color-red" style="display: none;"></li>
@ -79,8 +79,23 @@
var modal = $(".modal.reject-auth-modal");
var form = modal.find("#reject-auth-form");
var applyIdInput = form.find("input[name='apply_id']");
var rejectDescriptionSpan = form.find(".reject-description-label span");
var needRejectDescription = false;
var error = modal.find(".error");
modal.on("click", "input[name='reasons[]']", function(){
var checkbox = $(this);
if (checkbox.data("type") != "other") { return; }
if (checkbox.prop("checked")) {
needRejectDescription = true;
rejectDescriptionSpan.show();
} else {
needRejectDescription = false;
rejectDescriptionSpan.hide();
}
});
modal.on('click', '.submit-btn', function(){
if (!formValid()) { return; }
form.submit();
@ -88,8 +103,13 @@
var formValid = function () {
error.html("").hide();
if (form.find("input[name='reasons[]']:checked").length == 0 || form.find("textarea[name='reject_description']").val() == '') {
error.html("原因和说明不能为空,请完善后再确认提交").show();
if (form.find("input[name='reasons[]']:checked").length == 0) {
error.html("撤销原因不能为空,请完善后再确认提交").show();
return false;
}
if (needRejectDescription && form.find("textarea[name='reject_description']").val() == '') {
error.html("备注说明不能为空,请完善后再确认提交").show();
return false;
}
@ -100,6 +120,8 @@
applyIdInput.val('');
form.find("textarea[name='reject_description']").val('');
form.find("input[name='reasons[]']").each(function(){this.checked=false;})
needRejectDescription = false;
rejectDescriptionSpan.hide();
modal.hide();
};
// 隐藏弹窗

@ -15,7 +15,7 @@
</li>
<li class="clearfix mb5">
<% if !user.try(:user_extensions).school_id.blank? && user.try(:user_extensions).try(:school) %>
<span><%= user.try(:user_extensions).school.name %><%= user.try(:user_extensions).department ? ' - '+user.try(:user_extensions).department.name.to_s : '' %></span>
<a href="<%= user.try(:user_extensions).school.statistic_url %>" target="_blank" class="color-blue"><%= user.try(:school_name) %><%= user.try(:user_extensions).department ? ' - '+user.try(:user_extensions).department.name.to_s : '' %></a>
<% end %>
<% if user.try(:user_extensions) && user.try(:user_extensions).identity %>
<span class="ml30"><%= user.identity %></span>

@ -38,7 +38,9 @@
</li>
<% if authorization.status == 2 %>
<li><span class="color-red">原因:</span><span><%= authorization.reason.blank? ? "空" : authorization.reason %></span></li>
<li><span class="color-red">备注说明:</span><span><%= authorization.reject_description.blank? ? "空" : authorization.reject_description %></span></li>
<% if authorization.reject_description.present? %>
<li><span class="color-red">备注说明:</span><span><%= authorization.reject_description %></span></li>
<% end %>
<% end %>
</ul>
</div>

@ -1,14 +1,21 @@
<div class="edu-class-container">
<%= form_tag(url_for(evaluate_records_managements_path),:id=>"evaluate_records",:method => "post",:remote=>true) do %>
<div class="edu-con-top clearfix xmt10">
<div class="edu-con-top clearfix mb20 bor-grey-e mt10">
<select class="fl task-form-15 task-height-30" style="margin:20px 0px 10px 25px;width: 11%" name="keyword" id="condition">
<option value="u_name">评测者姓名搜索</option>
<option value="s_name">评测者单位搜索</option>
</select>
<input class="fl task-form-20 task-height-30 mt20 ml20" name="search" maxlength="40" placeholder="输入关键字进行搜索" type="text" id="Look_name">
<li class="fl mt20">
<span class="mr10 ml10 font-14">开始时间</span>
<input type="text" name="beginTime" placeholder="请选择开始时间" class="winput-150-30 mr10"/>
<input type="text" name="endTime" placeholder="请选择结束时间" class="winput-150-30"/>
</li>
<a href="javascript:void(0);" class="fl task-btn task-btn-orange ml5 mt20" onclick="$('#evaluate_records').submit();">搜索</a>
<a href="javascript:clearSearchCondition()" class="fl task-btn ml5 mt2 mt20" id="clear_contents">清除</a>
</div>
<% end %>
</div>
<div class="edu-con-bg01 mt15" id="evaluate_records_list">
<%= render :partial => "evaluate_records_list" %>
</div>
@ -19,4 +26,17 @@
$("#Look_name").val("");
$.get('<%= evaluate_records_managements_path() %>');
}
$("input[name='beginTime']").datetimepicker({
allowBlank:true,
lang:'ch',
format:'Y-m-d H:i',
validateOnBlur:false
});
$("input[name='endTime']").datetimepicker({
allowBlank:true,
lang:'ch',
format:'Y-m-d H:i',
validateOnBlur:false
});
</script>

@ -0,0 +1,78 @@
<% if false %>
<style>
.manage_ol ol li{list-style-type: disc;}
</style>
<div class="task-popup" style="width:400px;">
<div class=" task-popup-title clearfix task-popup-bggrey">
<h3 class="fl ">耗时详情</h3>
<a href="javascript:void(0)" id="closeIcon" style="top: -48px;right: -20px;z-index: 100000;"><i class="iconfont icon-shanchudiao"></i></a>
</div>
<div class="task_popup_con manage_ol">
<ol class="pl30">
<li>总耗时:<%= @consume_time %></li>
<li>作品更新:<%= @student_work %></li>
<li>文件更新:<%= @file_update %></li>
<li>中间层总耗时:<%= @brige %></li>
<li class="ml15">pull代码<%= @git_pull %></li>
<li class="ml15">pod启动<%= @create_pod %></li>
<li class="ml15">pod执行<%= @pod_execute %></li>
<li>中间层回传:<%= @return_back %>--中间层出结果传Educoder</li>
<li>前端轮询:<%= @front_js %>--局部数据查询Js轮询</li>
<li>回调结果存储:<%= @test_cases %></li>
</ol>
</div>
</div>
<% end %>
<% if @recodes.present? %>
<div class="edu-con-bg01 mt15" id="evaluate_records_list">
<table class="edu-pop-table edu-txt-center" cellpadding="0" cellspacing="0" style="table-layout: fixed">
<thead>
<tr>
<th width="5%">序号</th>
<th width="10%">总耗时<i class="fa fa-long-arrow-down color-light-green ml5" ></i></th>
<th width="5%">作品更新</th>
<th width="5%">文件更新</th>
<th width="10%">中间层总耗时</th>
<th width="5%">pull代码</th>
<th width="5%">pod启动</th>
<th width="5%">pod执行</th>
<th width="10%">中间层回传</th>
<th width="5%">前端轮询</th>
<th width="10%">回调结果存储</th>
<th width="15%">创建时间</th>
<th width="15%">实训名称</th>
</tr>
</thead>
<tbody>
<% @recodes.each_with_index do |record, index| %>
<tr>
<td><%= index %></td>
<td><%= record.consume_time %></td>
<td><%= record.student_work %></td>
<td><%= record.file_update %></td>
<td><%= record.brige %></td>
<td><%= record.git_pull %></td>
<td><%= record.create_pod %></td>
<td><%= record.pod_execute %></td>
<td><%= record.return_back %></td>
<td><%= record.front_js %></td>
<td><%= record.test_cases %></td>
<td><%= format_time record.created_at %></td>
<td><%= link_to record.shixun.try(:name), task_path(record.game), :target => "_blank", :title => "#{record.shixun.try(:name)}" %></td>
</tr>
<% end %>
</tbody>
</table>
<div style="text-align:center;" class="new_expand">
<div class="pages_user_show" style="width:auto; display:inline-block;margin: 18px 0;">
<ul id="homework_pository_ref_pages">
<%= pagination_links_full @record_pages, @recodes_count, :per_page_links => false, :remote => false, :flag => true, :is_new => true %>
</ul>
<div class="cl"></div>
</div>
</div>
</div>
<% end %>

@ -1,3 +1,5 @@
<% if @status == 1 %>
notice_box("导入成功");
<% else %>
notice_box("导入失败只支持xlsx文件");
<% end %>

@ -3,7 +3,8 @@
<% if params[:grow_begin_date].present? %>
<%= params[:grow_date_input] %>
<% else %>
昨日至今日,
<%= (Time.current - 5.hour).beginning_of_day.ago(1.days).strftime('%Y-%m-%d') %> 05:00至
<%= (Time.current - 5.hour).beginning_of_day.strftime('%Y-%m-%d') %> 05:00
<% end %>
新增教师<span class="color-red"><%= @grow_summary.teacher_increase_count || 0 %></span>人,
新增学生<span class="color-red"><%= @grow_summary.student_increase_count || 0 %></span>人,

@ -4,9 +4,9 @@ wb.add_worksheet(name: '统计总表') do |sheet|
@schools.each do |school|
sheet.add_row([
school['id'].to_s, school['name'].to_s, (school['teacher_count'] || 0).to_s, (school['student_count'] || 0).to_s,
(school['course_count'] || 0).to_s, (school['active_course_count'] || 0).to_s, (school['homework_count'] || 0).to_s,
(school['other_homework_count'] || 0).to_s, format_time(school['nearly_course_time'])
school[:id].to_s, school[:name].to_s, (school[:teacher_count] || 0).to_s, (school[:student_count] || 0).to_s,
(school[:course_count] || 0).to_s, (school[:active_course_count] || 0).to_s, (school[:homework_count] || 0).to_s,
(school[:other_homework_count] || 0).to_s, format_time(school[:nearly_course_time])
])
end
end

@ -41,7 +41,7 @@
formatTime:'H:i',
formatDate:'Y-m-d',
validateOnBlur:false,
step:30
step:10
});
$('#notice_end_time').datetimepicker({
allowBlank:true,
@ -50,7 +50,7 @@
formatTime:'H:i',
formatDate:'Y-m-d',
validateOnBlur:false,
step:30
step:10
});
});

@ -130,7 +130,10 @@
if($("#unit_head_route").val().trim() !=""){
$.ajax({
url: "<%= verification_school_identifier_colleges_path %>",
data: {identifier: $("#unit_head_route").val().trim()},
data: {
school_id: <%= @school.id %>,
identifier: $("#unit_head_route").val().trim()
},
async:false,
success: function (data) {
if(data.status == 0){

@ -59,9 +59,9 @@
<a href="javascript:void(0);" class="fl task-btn task-btn-orange ml5 mt5" onclick="$('#management_search_user').submit();">搜索</a>
<a href="javascript:void(0);" class="fl task-btn ml5 mt5" id="clear_contents">清除</a>
</div>
<!--<div class="fr">-->
<!--<a href="javascript:void(0);" onclick="import_student_accounts();" class="white-btn orange-btn">+&nbsp;导入学生账号</a>-->
<!--</div>-->
<div class="fr">
<a href="javascript:void(0);" onclick="import_student_accounts();" class="white-btn orange-btn">+&nbsp;导入学生账号</a>
</div>
<div class="mt5 fr">
<input type="checkbox" class="magic-checkbox" id="only_t">
<label for="only_t" class="mr10 fl">只看T</label>

@ -103,7 +103,7 @@
<% if @trail_authentication.status == 1 %>
sure_box_redirect_without_newtab("<%= user_path(@user) %>", "试用申请已被接受");
<% elsif @trail_authentication.status == 2 %>
sure_box_redirect_without_newtab_btn("<%= my_account_path %>", "试用申请已被拒绝<br/>原因:<%= @trail_authentication.reason %>", "重新申请");
sure_box_redirect_without_newtab_btn("<%= my_account_path %>", "试用申请已被拒绝<br/>原因:<%= [@trail_authentication.reason, @trail_authentication.reject_description].join('') %>", "重新申请");
<% end %>
<% end %>

@ -28,7 +28,8 @@
<td>
<a href="/users/<%= (student_work.user.try(:login)) %>" class="color-grey3"><%= student_work.user.show_real_name %></a>
</td>
<% group_name = new_member_group_name @course.id, student_work.user_id %>
<% group_id = @members.select{|m|m.user_id==student_work.user_id}.first.try(:course_group_id) %>
<% group_name = group_id.to_i == 0 ? '未分班' : @course.course_groups.find_by_id(group_id).name %>
<td title="<%= group_name %>">
<span class="task-hide" style="display: block;max-width: 120px;"><%= group_name %></span>
</td>

@ -33,7 +33,8 @@
<td>
<a href="/users/<%= (student_work.user.try(:login)) %>" class="color-grey3"><%= student_work.user.show_real_name %></a>
</td>
<% group_name = member_group_name @homework.course.members, student_work.user_id %>
<% group_id = @members.select{|m|m.user_id==student_work.user_id}.first.try(:course_group_id) %>
<% group_name = group_id.to_i == 0 ? '未分班' : @course.course_groups.find_by_id(group_id).name %>
<td title="<%= group_name %>">
<span class="task-hide" style="display: block;max-width: 120px;"><%= group_name %></span>
</td>

@ -25,8 +25,8 @@
<td>
<a href="/users/<%= (student_work.user.try(:login)) %>" class="color-grey3"><%= student_work.user.show_real_name %></a>
</td>
<% member = Member.find_by_sql("select course_group_id from members where course_id = #{@homework.course_id} and user_id = #{student_work.user_id}").first %>
<% group_name = member.try(:course_group_id).to_i == 0 ? '未分班' : member.course_group.name %>
<% group_id = @members.select{|m|m.user_id==student_work.user_id}.first.try(:course_group_id) %>
<% group_name = group_id.to_i == 0 ? '未分班' : @course.course_groups.find_by_id(group_id).name %>
<td title="<%= group_name %>">
<span class="task-hide"><%= group_name %></span>
</td>
@ -35,7 +35,7 @@
<%= student_id %>
</td>
<td>
<% status = list_work_status student_work, @homework, member %>
<% status = list_work_status student_work, @homework, group_id %>
<span class='<%= status == "未提交" ? "" : ((status == "按时提交" || status == "正在提交") ? "color-light-green" : "color-red") %>'><%= status %></span>
</td>
<td data-tip-down='<%= student_work.compelete_status == 0 ? "还未完成" : (student_work.compelete_status == 2 ? "已于发布前完成作品" : "自发布#{work_spend_time(student_work.cost_time)}后提交了最终作品") %>'>

@ -71,7 +71,7 @@
<a href="javascript:void(0);" class="tab_type">参考答案</a>
</li>
<% end %>
<% if @is_teacher && @homework.homework_type == 4 && @homework.homework_group_reviews.count > 0 %>
<% if @is_teacher && @homework.homework_type == 4 && @homework.homework_group_reviews.size > 0 %>
<li id="edu-tab-nav-5" index="5">
<a href="javascript:void(0);" class="tab_type">
查重结果
@ -100,16 +100,16 @@
<% end %>
<%= link_to "导出成绩", student_work_index_path(:homework => @homework.id, :order => @order, :sort => @b_sort, :name => @name, :group => @group, :comment => @comment, :status => @status, :format => 'xls'), :class => 'fr mt3 ml15 white-btn orange-btn', :id => "export_student_work" %>
<% if @homework.homework_detail_manual.try(:comment_status) == 0 || @homework.homework_group_settings.where("publish_time is null or publish_time > '#{Time.now}'").count > 0 %>
<% if @homework.homework_detail_manual.try(:comment_status) == 0 || @homework.homework_group_settings.where("publish_time is null or publish_time > '#{Time.now}'").size > 0 %>
<%= link_to '立即发布', publish_notice_homework_common_path(@homework), :remote => true, :class => "white-btn orange-btn fr ml15 mt3" %>
<% end %>
<% if (@homework.homework_detail_manual.try(:comment_status) == 1 && @homework.end_time > Time.now) || @homework.homework_group_settings.where("publish_time < '#{Time.now}' and end_time > '#{Time.now}'").count > 0 %>
<% if (@homework.homework_detail_manual.try(:comment_status) == 1 && @homework.end_time > Time.now) || @homework.homework_group_settings.where("publish_time < '#{Time.now}' and end_time > '#{Time.now}'").size > 0 %>
<%= link_to '立即截止', end_notice_homework_common_path(@homework), :remote => true, :class => "white-btn orange-btn fr ml15 mt3" %>
<% end %>
<% if @homework.publish_time.present? && @homework.publish_time < Time.now && @homework.end_time > Time.now && (@homework.homework_type == 1 || @homework.homework_type == 3) %>
<a href="javascript:void(0)" class="white-btn orange-btn fr ml15 mt3" onclick="cancel_publish('<%= cancel_publish_homework_common_path(@homework) %>')">撤销发布</a>
<% end %>
<% if @homework.homework_type == 4 && @homework.publish_time.present? && @homework.publish_time < Time.now && @homework.homework_group_reviews.count == 0 %>
<% if @homework.homework_type == 4 && @homework.publish_time.present? && @homework.publish_time < Time.now && @homework.homework_group_reviews.size == 0 %>
<a href="<%= homework_code_repeat_homework_common_path(@homework) %>" data-remote="true" class="fr white-btn edu-greenline-btn ml15 mt3">代码查重</a>
<% end %>
</div>
@ -185,7 +185,7 @@
<span class="fl mr25">
<a href="javascript:void(0);" id="comment_no_limit" class="<%= @comment.blank? ? 'check_on' : '' %> pl10 pr10">不限</a>
</span>
<% has_comment = StudentWorksScore.where(:student_work_id => student_works.map(&:id), :reviewer_role => [1, 2]).group_by(&:student_work_id).count %>
<% has_comment = StudentWorksScore.where(:student_work_id => student_works.map(&:id), :reviewer_role => [1, 2]).group_by(&:student_work_id).size %>
<input id="not_comment" class="magic-checkbox fl" type="checkbox" value="0" name="comment[]" <%= !@comment.blank? && @comment.include?('0') ? 'checked' : '' %>>
<label for="not_comment" class="fl mr25">未评(<%= @student_work_count - has_comment %>)</label>
<input id="has_comment" class="magic-checkbox fl" type="checkbox" value="1" name="comment[]" <%= !@comment.blank? && @comment.include?('1') ? 'checked' : '' %>>
@ -198,11 +198,11 @@
<a href="javascript:void(0);" id="status_no_limit" class="<%= @status.blank? ? 'check_on' : '' %> pl10 pr10">不限</a>
</span>
<input id="work_status_1" class="magic-checkbox fl" type="checkbox" value="0" name="status[]" <%= !@status.blank? && @status.include?('0') ? 'checked' : '' %>>
<label for="work_status_1" class="fl mr25">未提交(<%= @all_student_works.where(:work_status => 0).count %>)</label>
<label for="work_status_1" class="fl mr25">未提交(<%= @all_student_works.where(:work_status => 0).size %>)</label>
<input id="work_status_2" class="magic-checkbox fl" type="checkbox" value="1" name="status[]" <%= !@status.blank? && @status.include?('1') ? 'checked' : '' %>>
<label for="work_status_2" class="fl mr25">按时提交(<%= student_works.where(:work_status => 1).count %>)</label>
<label for="work_status_2" class="fl mr25">按时提交(<%= student_works.where(:work_status => 1).size %>)</label>
<input id="work_status_3" class="magic-checkbox fl" type="checkbox" value="2" name="status[]" <%= !@status.blank? && @status.include?('2') ? 'checked' : '' %>>
<label for="work_status_3" class="fl mr25">延时提交(<%= student_works.where(:work_status => 2).count %>)</label>
<label for="work_status_3" class="fl mr25">延时提交(<%= student_works.where(:work_status => 2).size %>)</label>
</li>
<li class="clearfix">
<span class="fl mr10 color-grey-8">分班情况:</span>
@ -210,9 +210,9 @@
<a href="javascript:void(0);" id="group_no_limit" class="<%= @group.blank? ? 'check_on' : '' %> pl10 pr10">不限</a>
</span>
<p class="fl pb10" style="display: block;max-width: 995px;">
<% groups.each do |group| %>
<% groups.includes(:members).each do |group| %>
<input id="group_<%= group.id %>" class="magic-checkbox fl" type="checkbox" value="<%= group.id %>" name="group[]" <%= !@group.blank? && @group.include?(group.id) ? 'checked' : '' %>>
<label for="group_<%= group.id %>" class="fl mr25"><%= group.name %>(<%= group.members.count %>)</label>
<label for="group_<%= group.id %>" class="fl mr25"><%= group.name %>(<%= group.members.size %>)</label>
<% end %>
<% if !@group_teacher %>
<input id="group_0" class="magic-checkbox fl" type="checkbox" value="0" name="group[]">
@ -255,7 +255,7 @@
<% my_work = cur_user_works_for_homework @homework %>
<% if @homework.homework_detail_manual.comment_status == 3 %>
<% unless my_work.nil? %>
<% if my_work.user.student_works_evaluation_distributions.where(:student_work_id => @homework.student_works.map(&:id)).count != 0 %>
<% if my_work.user.student_works_evaluation_distributions.where(:student_work_id => @homework.student_works.map(&:id)).size != 0 %>
<span class="edu-filter-btn edu-filter-btn-orange mb15">你在匿评开启之前提交了作品,你的作品正在匿评中</span>
<% else %>
<span class="edu-filter-btn edu-filter-btn-orange mb15">你在匿评开启之后才提交作品,你的作品没有参与匿评</span>
@ -278,8 +278,8 @@
<% end %>
<p class="color-grey-8 font-12 clearfix mb15">
<span class=""><%= @homework.student_works.where("work_status != 0").count %> 已交</span>
<span class="ml30"><%= @homework.course.student.count - @homework.student_works.where("work_status != 0").size %>
<span class=""><%= @homework.student_works.where("work_status != 0").size %> 已交</span>
<span class="ml30"><%= @homework.course.student.size - @homework.student_works.where("work_status != 0").size %>
未交</span>
<% if @homework.homework_detail_manual %>
<% if @homework.homework_detail_manual.comment_status == 1 %>

@ -37,7 +37,7 @@
<% if comment_status == 0 || activity.homework_group_settings.where("publish_time is null or publish_time > '#{Time.now}'").count > 0 %>
<li><%= link_to '立即发布', publish_notice_homework_common_path(activity), :remote => true %></li>
<% end %>
<% if (comment_status == 1 && activity.end_time > Time.now) || activity.homework_group_settings.where("publish_time < '#{Time.now}' and end_time > '#{Time.now}'").count > 0 %>
<% if (comment_status == 1 && activity.end_time && activity.end_time > Time.now) || activity.homework_group_settings.where("publish_time < '#{Time.now}' and end_time > '#{Time.now}'").count > 0 %>
<li><%= link_to '立即截止', end_notice_homework_common_path(activity), :remote => true %></li>
<% end %>
<li><%= link_to "导出成绩", student_work_index_path(:homework => activity, :format => 'xls'), :id => "export_student_work" %></li>

@ -1,3 +1,4 @@
console.log("<%= @user_picture.present? %>")
<% if @user_picture.present? %>
$("#picture_display").html('<%= j (render :partial => 'games/picture_display') %>');
$("#picture_display").show();

@ -523,6 +523,7 @@ RedmineApp::Application.routes.draw do ## oauth相关
resources :managements do
collection do
get 'evaluate_simple'
get 'hidden_course'
match 'training_2018',:via=>[:get,:post]
get 'update_pay_status'

@ -0,0 +1,20 @@
class MigrateExerciseAnswerScore < ActiveRecord::Migration
def up
exercise = Exercise.where(:id => 1527).first
if exercise.present?
exercise.exercise_users.each do |exercise_user|
score = 0
exercise.exercise_questions.each do |question|
ExerciseShixunAnswer.where(exercise_question_id: question.id, user_id: exercise_user.user_id).each do |answer|
score += answer.score
end
end
exercise_user.update_attributes(objective_score: score, score: score)
end
end
end
def down
end
end

@ -1113,13 +1113,17 @@ function _initZoomCheck() {
if (!IsPC()) { // 手机端不需要提示
return;
}
var isNormalZoom = Math.round(window.devicePixelRatio * 100) === 100
var ratio = Math.round(window.devicePixelRatio * 100);
// A value of 1 indicates a classic 96 DPI (76 DPI on some platforms) display, while a value of 2 is expected for HiDPI/Retina displays
// 有个显示器默认值是1.25
var isNormalZoom = ratio === 100 || ratio === 200 || ratio === 125
if (!isNormalZoom) {
suofang();
}
$(window).resize(function() {
var isNormalZoom = Math.round(window.devicePixelRatio * 100) === 100
var ratio = Math.round(window.devicePixelRatio * 100);
var isNormalZoom = ratio === 100 || ratio === 200 || ratio === 125
if (!isNormalZoom) {
suofang();
} else {
@ -1225,3 +1229,19 @@ $(document).bind('ajaxError', function(event, xhr, settings) {
}
});
/** tpm实训开启按钮不允许多次点击 END */
//工程认证各个页面的查看详情弹层
function elasticLayer(forumId){
var html='<div class="layerContent"><div class="educontent">' +
'<p class="clearfix pt25 pb25 color-grey-3 bor-bottom-greyE"><span class="fl font-24">工程教育专业认证【培养目标】</span>' +
'<a href="javascript:void(0)" onclick="removeElasticLayer();" class="fr font-16 mt5">返回</a></p>' +
'</div></div>'
$(".newMain").after(html).hide();
document.body.addEventListener('touchmove',bodyScroll,false);
$('body').css({'position':'fixed',"width":"100%"});
}
function removeElasticLayer(){
$(".layerContent").remove();
$(".newMain").show();
}

@ -3089,17 +3089,17 @@ a.singlepublishtwo{
.MajorName > i:hover{color: #4CACFF}
/*培养目标*/
#traningNav{margin-bottom: 0px!important;}
#traningNav>li{float: left;padding:0px 30px 30px 30px;font-size: 16px;}
#traningNav>li{float: left;padding:0px 30px 30px 30px;font-size: 15px;}
#traningNav>li>a,#traningNav li>i{color: #666!important;position: relative}
#traningNav>li.active > a,#traningNav li.active > i{color: #05101A!important;}
#traningNav>li.active > a:after{content: '';position: absolute;width: 64px;left: 50%;margin-left: -32px;height: 2px;background-color: #05101A;bottom: -35px;}
#traningNav>li>.ecTitle {width: 20px;height: 20px;border: 1px solid rgba(65, 140, 205, 1);border-radius: 50%;text-align: center;
line-height: 20px;display: inline-block;color: rgba(65, 140, 205, 1) !important;margin-right: 8px;}
#traningNav>li>.ecTitle {width: 16px;height: 16px;border: 1px solid rgba(65, 140, 205, 1);border-radius: 50%;text-align: center;
line-height: 16px;display: inline-block;color: rgba(65, 140, 205, 1) !important;margin-right: 8px;font-size: 12px}
#traningNav>li>.ecTitlefont:hover{color: rgba(65, 140, 205, 1) !important;}
.ecimgs{height: 90px;line-height: 90px;box-sizing: border-box;}
#traningNav>li>.ecTitlefontFFF{color:#fff!important;}
#traningNav>li>.ecTitleFFF {width: 20px;height: 20px;border: 1px solid #fff;border-radius: 50%;text-align: center;line-height: 20px;
#traningNav>li>.ecTitleFFF {width: 16px;height: 16px;border: 1px solid #fff;border-radius: 50%;text-align: center;line-height: 16px;font-size: 12px;
display: inline-block;color: #fff !important;margin-right: 8px;}
.traningNavs>li {padding: 0px 10px 30px 12px !important;}
.ecimgs1{background: url("/images/educoder/auth/1.png");background-repeat: no-repeat;background-size: 100% 100%;-moz-background-size: 100% 100%;

@ -903,4 +903,13 @@ html>body #ajax-indicator { position: fixed; }
margin-left: 20px;
text-indent: 25px;
min-height: 100px;
}
/*工程认证 各页面公用弹层*/
.layerContent{
margin: 0 auto;
padding-bottom: 235px;
min-width: 1200px;
padding-top: 60px;
}
Loading…
Cancel
Save