diff --git a/app/controllers/colleges_controller.rb b/app/controllers/colleges_controller.rb index d95fd848..85a09d0b 100644 --- a/app/controllers/colleges_controller.rb +++ b/app/controllers/colleges_controller.rb @@ -1,7 +1,9 @@ # encoding: utf-8 class CollegesController < ApplicationController - before_filter :find_department, :only => [:statistics, :course_statistics, :student_shixun, :engineering_capability, :student_eval] + before_filter :find_department, :only => [:statistics, :course_statistics, :student_shixun, :engineering_capability, + :student_eval, :shixun_time, :shixun_report_count, :teachers, :shixun_chart_data, + :student_hot_evaluations] before_filter :manager_auth, :except => [:home, :get_home_data] include ApplicationHelper @@ -42,143 +44,128 @@ class CollegesController < ApplicationController end def statistics - logger.info("#########################{params}") - @teachers_count = User.find_by_sql("SELECT COUNT(users.`id`) AS teacher_count FROM users LEFT JOIN user_extensions ON users.id=user_extensions.user_id WHERE - user_extensions.`school_id` = #{@school.id} AND user_extensions.`identity` = 0").first.try(:teacher_count) - @students_count = User.find_by_sql("SELECT COUNT(users.`id`) AS student_count FROM users LEFT JOIN user_extensions ON users.id=user_extensions.user_id WHERE - user_extensions.`school_id` = #{@school.id} AND user_extensions.`identity` = 1").first.try(:student_count) - # Redo:这样做内存会卡死的 - # user_ids = User.find_by_sql("SELECT users.id FROM users LEFT JOIN user_extensions ON users.id=user_extensions.user_id WHERE user_extensions.`school_id` = #{@school.id}").map(&:id) - # Redo:是否直接使用count会更好 - all_course_ids = Course.where("id != 1309 and is_delete = 0 and school_id = #{@school.id}") - @courses_count = all_course_ids.size - - # Redo:对于量比较大的尽量不使用笛卡尔积 - # @shixuns_count = Shixun.where(:status => [2, 3], :user_id => user_ids).size - @shixuns_count = Shixun.find_by_sql("select count(s.id) as shixun_count from users u right join shixuns s on u.id=s.user_id and s.status in (2, 3) inner join user_extensions ue on - u.id=ue.user_id and ue.school_id=#{@school.id}").first.try(:shixun_count) - # @shixun_time_sum = (Game.where(:user_id => user_ids).pluck(:cost_time).sum / (24*60*60.0)).ceil - @shixun_time_sum = (Game.find_by_sql("select sum(g.cost_time) cost_time from users u RIGHT join games g on u.id=g.user_id inner join user_extensions ue on - u.id=ue.user_id and ue.school_id=#{@school.id}").first.try(:cost_time).to_i / (24 * 60 * 60.0)).ceil - - # select count(sw.id) from users u left join student_works sw on u.id=sw.user_id and sw.myshixun_id is not null and sw.work_status !=0 inner join user_extensions ue on u.id=ue.user_id and ue.school_id=117 ; - # @shixun_report_count = StudentWork.where("work_status != 0 and user_id in (#{user_ids.join(',').strip == "" ? -1 : user_ids.join(',')}) and myshixun_id is not null").count - @shixun_report_count = StudentWork.find_by_sql("SELECT count(*) as sw_count FROM `student_works` where user_id in (SELECT users.id FROM users RIGHT JOIN user_extensions ON users.id=user_extensions.user_id WHERE - user_extensions.`school_id`=#{@school.id}) and work_status between 1 and 2 and myshixun_id !=0").first.try(:sw_count) + # 教师、学生总数 + count_statistic = UserExtensions.where(school_id: @school.id).select('SUM(IF(identity=0, 1, 0)) AS teachers_count, SUM(IF(identity=1, 1, 0)) AS students_count').first + @teachers_count = count_statistic['teachers_count'] + @students_count = count_statistic['students_count'] + # 课堂总数 + @courses_count = Course.where(school_id: @school.id, is_delete: 0).where('id != 1309').count + # 实训总数 + @shixuns_count = Shixun.visible.joins('left join user_extensions on user_extensions.user_id = shixuns.user_id').where(user_extensions: { school_id: @school.id }).count + + respond_to do |format| + format.html {render :layout => "base_edu"} + end + end + + def shixun_time + time_sum = Game.joins('left join user_extensions on user_extensions.user_id = games.user_id').where(user_extensions: { school_id: @school.id }).sum(:cost_time) + shixun_time_sum = (time_sum / (24 * 60 * 60.0)).ceil + + render json: { shixun_time: shixun_time_sum } + end + + def shixun_report_count + shixun_report_count = StudentWork.where(work_status: [1, 2]).where('myshixun_id != 0') + .joins('left join user_extensions on user_extensions.user_id = student_works.user_id') + .where(user_extensions: { school_id: @school.id }).count + render json: { shixun_report_count: shixun_report_count } + end + + def teachers @teachers = User.find_by_sql("SELECT users.id, users.login, users.lastname, users.firstname, users.nickname, IFNULL((SELECT count(shixuns.id) FROM shixuns where shixuns.user_id =users.id group by shixuns.user_id), 0) AS publish_shixun_count, (SELECT count(c.id) FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.role in (1,2,3) and c.school_id = #{@school.id} AND m.user_id=users.id AND c.is_delete = 0) as course_count FROM `users`, user_extensions ue where users.id=ue.user_id and ue.identity=0 and ue.school_id=#{@school.id} ORDER BY publish_shixun_count desc, course_count desc, id desc LIMIT 10") # ).order("publish_shixun_count desc, experience desc").limit(10) @teachers = - @teachers.map do |teacher| - course_ids = Course.find_by_sql("SELECT c.id FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.role in (1,2,3) AND m.user_id=#{teacher.id} AND c.is_delete = 0 and c.school_id = #{@school.id}") - course_count = course_ids.size - homeworks = HomeworkCommon.where(:homework_type => 4, :course_id => course_ids.map(&:id)) - un_shixun_work_count = homeworks.where("publish_time > '#{Time.now}' or publish_time is null").count - shixun_work_count = homeworks.size - un_shixun_work_count - student_count = StudentsForCourse.where(:course_id => course_ids.map(&:id)).count - myshixun_ids = StudentWork.select("myshixun_id").where("homework_common_id in (#{homeworks.map(&:id).join(',').strip == "" ? -1 : homeworks.map(&:id).join(',')}) and myshixun_id is not null") - complete_myshixun = Myshixun.select("id").where(:status => 1, :id => myshixun_ids.map(&:myshixun_id)).size - all_myshixun = Myshixun.select("id").where(:id => myshixun_ids.map(&:myshixun_id)).size - complete_rate = all_myshixun == 0 ? 0 : ((complete_myshixun * 100) / all_myshixun).try(:round, 2).to_f - real_name = teacher.show_real_name - teacher = teacher.attributes.dup.merge({ - real_name: real_name, - course_count: course_count, - shixun_work_count: shixun_work_count, - un_shixun_work_count: un_shixun_work_count, - student_count: student_count, - complete_rate: complete_rate - }).to_json - JSON.parse(teacher) - end - - shixun_ids = HomeworkCommonsShixuns.find_by_sql("SELECT hcs.shixun_id FROM homework_commons_shixuns hcs, homework_commons hc - WHERE hc.course_id in (#{all_course_ids.map(&:id).join(',').strip == "" ? -1 : all_course_ids.map(&:id).join(',')}) - AND hcs.homework_common_id = hc.id").map(&:shixun_id) - shixun_tags = TagRepertoire.find_by_sql("SELECT tr.`name`, COUNT(str.shixun_id) as shixun_count FROM tag_repertoires tr, - shixun_tag_repertoires str WHERE tr.id = str.tag_repertoire_id AND str.shixun_id - IN (#{shixun_ids.join(',').strip == "" ? -1 : shixun_ids.join(',')}) GROUP BY tr.id - order by shixun_count desc") - all_shixun_count = shixun_tags.map(&:shixun_count).sum - other_count = all_shixun_count.to_i - shixun_tags[0..8].map(&:shixun_count).sum.to_i - @shixun_tags_name = [] - @shixun_tags_data = [] - shixun_tags[0..8].each do |tag| - @shixun_tags_name << tag.name - @shixun_tags_data << {value: tag.shixun_count, name: tag.name} - end - if shixun_tags.size > 9 - @shixun_tags_name << 'Others' - @shixun_tags_data << {value: other_count, name: 'Others'} + @teachers.map do |teacher| + course_ids = Course.find_by_sql("SELECT c.id FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.role in (1,2,3) AND m.user_id=#{teacher.id} AND c.is_delete = 0 and c.school_id = #{@school.id}") + course_count = course_ids.size + homeworks = HomeworkCommon.where(:homework_type => 4, :course_id => course_ids.map(&:id)) + un_shixun_work_count = homeworks.where("publish_time > '#{Time.now}' or publish_time is null").count + shixun_work_count = homeworks.size - un_shixun_work_count + student_count = StudentsForCourse.where(:course_id => course_ids.map(&:id)).count + myshixun_ids = StudentWork.select("myshixun_id").where("homework_common_id in (#{homeworks.map(&:id).join(',').strip == "" ? -1 : homeworks.map(&:id).join(',')}) and myshixun_id is not null") + complete_myshixun = Myshixun.select("id").where(:status => 1, :id => myshixun_ids.map(&:myshixun_id)).size + all_myshixun = Myshixun.select("id").where(:id => myshixun_ids.map(&:myshixun_id)).size + complete_rate = all_myshixun == 0 ? 0 : ((complete_myshixun * 100) / all_myshixun).try(:round, 2).to_f + real_name = teacher.show_real_name + teacher = teacher.attributes.dup.merge({ + real_name: real_name, + course_count: course_count, + shixun_work_count: shixun_work_count, + un_shixun_work_count: un_shixun_work_count, + student_count: student_count, + complete_rate: complete_rate + }).to_json + JSON.parse(teacher) + end + end + + def shixun_chart_data + shixun_ids = HomeworkCommonsShixuns.joins(homework_common: :course).where(courses: {school_id: @school.id, is_delete: 0}).where('courses.id != 1309').pluck('distinct shixun_id') + shixun_count_map = ShixunTagRepertoire.joins(:tag_repertoire).where(shixun_id: shixun_ids).group('tag_repertoires.name').order('count_shixun_id desc').count(:shixun_id) + + names = [] + data = [] + shixun_count_map.each do |name, count| + break if names.size == 9 + + names << name + data << { value: count, name: name } end - respond_to do |format| - format.html {render :layout => "base_edu"} + if shixun_count_map.keys.size > 9 + other_count = shixun_count_map.values[9..-1].reduce(:+) + names << 'Others' + data << { name: 'Others', value: other_count } end + + render json: { names: names, data: data } end # 在线课堂 def course_statistics - @courses = Course.find_by_sql("SELECT c.id, (select concat(lastname,firstname) from users u where u.id=c.tea_id) as username, - (select count(sfc.id) from students_for_courses sfc where c.id=sfc.course_id group by c.id) as student_count, - (select count(hc.id) from homework_commons hc where c.id=hc.course_id and hc.homework_type=4 group by c.id) as hcm_count, - (select count(hc.id) from homework_commons hc where c.id=hc.course_id and hc.homework_type in (1,3) group by c.id) as hcm_nonshixun_count, - (select count(e.id) from exercises e where c.id=e.course_id group by c.id) as exercises_count, - (select count(p.id) from polls p where c.id=p.course_id group by c.id) as polls_count, - (select count(a.id) from attachments a where c.id=a.container_id and a.container_type='Course' group by c.id) as attachments_count, - (select count(m.id) from messages m inner join boards b on b.id=m.board_id and b.parent_id=0 where b.course_id=c.id group by c.id) as messages_count, - c.tea_id, c.name, c.is_end, - (SELECT MAX(created_at) FROM `course_activities` ca WHERE ca.course_id = c.id) AS update_time - FROM `courses` c WHERE c.school_id = #{@school.id} and c.is_delete = 0") - - @courses.each do |course| - course[:evaluating_count] = Output.find_by_sql("select sum(g.evaluate_count) as evaluating_count from games g inner join - (select myshixun_id from student_works sw inner join homework_commons hc on sw.homework_common_id=hc.id and - sw.myshixun_id !=0 and hc.course_id=#{course.id} and homework_type=4) aa on g.myshixun_id=aa.myshixun_id").first.try(:evaluating_count).to_i - course[:task_count] = course.hcm_count.to_i + course.attachments_count.to_i + course.messages_count.to_i + course.hcm_nonshixun_count.to_i + course.exercises_count.to_i + course.polls_count.to_i - end - @courses = @courses.sort{|x,y| [y[:evaluating_count], y[:task_count]] <=> [x[:evaluating_count], x[:task_count]] } - @courses = @courses.sort_by { |course| course.is_end ? 1 : 0 } - - # SELECT c.id, (select concat(firstname,lastname) from users u where u.id=c.tea_id) as username, - # (select count(sfc.id) from students_for_courses sfc where c.id=sfc.course_id group by c.id) as student_count, - # (select count(hc.id) from homework_commons hc where c.id=hc.course_id and hc.homework_type=4 group by c.id) as hcm_count, - # c.tea_id, c.name, c.is_end, - # (SELECT MAX(created_at) FROM `course_activities` ca WHERE ca.course_id = c.id) AS update_time - # FROM `courses` c WHERE (c.school_id = 117 and c.is_delete = 0) ORDER BY update_time desc LIMIT 8 OFFSET 0 - - # @courses = Course.where("courses.school_id = #{@department.school_id} and courses.is_delete = 0").select("courses.id, courses.tea_id, courses.name, courses.is_end, - # (SELECT MAX(created_at) FROM `course_activities` WHERE course_activities.course_id = courses.id) AS update_time").order("update_time desc") - @courses = paginateHelper @courses, 8 - # @courses = @courses.includes(:student, :boards, :exercises, :polls, :attachments, :homework_commons, :teacher => [:user_extensions]) + courses = Course.where(school_id: @school.id, is_delete: 0) + + @obj_count = courses.count + + courses = courses.joins(shixun_homework_commons: :student_works) + .joins('join games on games.myshixun_id = student_works.myshixun_id') + .select('courses.id, courses.name, courses.is_end, sum(games.evaluate_count) evaluating_count') + .group('courses.id').order('is_end asc, evaluating_count desc') + + @obj_pages = Paginator.new @obj_count, 8, params['page'] + @courses = courses.limit(@obj_pages.per_page).offset(@obj_pages.offset) + + course_ids = @courses.map(&:id) + @student_count = StudentsForCourse.where(course_id: course_ids).group(:course_id).count + @shixun_work_count = HomeworkCommon.where(homework_type: 4, course_id: course_ids).group(:course_id).count + @attachment_count = Attachment.where(container_id: course_ids, container_type: 'Course').group(:container_id).count + @message_count = Message.joins(:board).where(boards: { parent_id: 0, course_id: course_ids }).group('boards.course_id').count + @active_time = CourseActivity.where(course_id: course_ids).group(:course_id).maximum(:created_at) + @exercise_count = Exercise.where(course_id: course_ids).group(:course_id).count + @poll_count = Poll.where(course_id: course_ids).group(:course_id).count + @other_work_count = HomeworkCommon.where(homework_type: [1,3], course_id: course_ids).group(:course_id).count end # 学生实训 def student_shixun - user_ids = User.find_by_sql("SELECT users.id FROM users, user_extensions WHERE users.id=user_extensions.user_id AND user_extensions.`school_id` = #{@school.id}").map(&:id) - @students = User.find_by_sql("SELECT users.id, users.login, users.lastname, users.firstname, users.nickname, users.grade, - users.experience, ue.student_id, (SELECT COUNT(myshixuns.id) FROM `myshixuns` WHERE myshixuns.user_id - = users.id AND myshixuns.status = 1 GROUP BY users.id) AS myshixun_count FROM users join user_extensions ue on - users.id = ue.user_id where ue.school_id = #{@school.id} AND ue.identity = 1 AND `users`.`type` IN ('User', 'AnonymousUser') ORDER BY experience DESC, myshixun_count DESC LIMIT 10") - - ## outputs基数过大,用inner join有奇效 - @shixun_tags = TagRepertoire.find_by_sql(%Q{ - select name, COUNT(outputs.id) AS test_count from outputs inner join ( - SELECT tr.id as trid, tr.`name` as name, games.id as id - FROM tag_repertoires tr, shixun_tag_repertoires str, games, myshixuns - WHERE tr.id = str.tag_repertoire_id - AND str.shixun_id = myshixuns.`shixun_id` - AND myshixuns.id = games.`myshixun_id` - AND myshixuns.`user_id` IN ( - SELECT users.id FROM users, user_extensions WHERE users.id=user_extensions.user_id AND user_extensions.`school_id` = #{@school.id} - ) - ) a on a.id = outputs.game_id and outputs.`test_set_position` = 1 group by trid - ORDER BY test_count DESC - LIMIT 10 - }) + @students = User.joins(:user_extensions).where(user_extensions: { school_id: @school.id, identity: 1 }).includes(:user_extensions).order('experience desc').limit(10) + + student_ids = @students.map(&:id) + @shixun_count = Myshixun.where(user_id: student_ids).group(:user_id).count + @study_shixun_count = Myshixun.where(user_id: student_ids, status: 0).group(:user_id).count + end + + def student_hot_evaluations + games = Game.joins(:myshixun).joins('join shixun_tag_repertoires str on str.shixun_id = myshixuns.shixun_id') + games = games.joins('join tag_repertoires tr on tr.id = str.tag_repertoire_id') + games = games.joins("join user_extensions ue on ue.user_id = myshixuns.user_id and ue.school_id = #{@school.id}") + evaluate_count_map = games.group('tr.name').reorder('sum_games_evaluate_count desc').limit(10).sum('games.evaluate_count') + render json: { names: evaluate_count_map.keys, values: evaluate_count_map.values } end # 工程能力 diff --git a/app/controllers/competitions_controller.rb b/app/controllers/competitions_controller.rb index 57ff871c..cd3a9ef6 100644 --- a/app/controllers/competitions_controller.rb +++ b/app/controllers/competitions_controller.rb @@ -327,9 +327,9 @@ class CompetitionsController < ApplicationController elsif @type == "决赛" # '92b7vt8x','a7fxenvc','wt2xfzny','xa4m9cng','tng6heyf','am5o73er','9fla2zry','fzp3iu4w','qlsy6xb4' # 预赛的实训id 第一阶段:1289,1373,1256 第二阶段:1488, 1453, 1487 第三阶段:1470, 1473, 1408 - shixun1_id = Shixun.where(:identifier => ['92b7vt8x','a7fxenvc','wt2xfzny']).pluck(:id) - shixun2_id = Shixun.where(:identifier => ['xa4m9cng','tng6heyf','am5o73er']).pluck(:id) - shixun3_id = Shixun.where(:identifier => ['9fla2zry','fzp3iu4w','qlsy6xb4']).pluck(:id) + shixun1_id = Shixun.where(:identifier => ['ftlc4x38']).pluck(:id) + shixun2_id = Shixun.where(:identifier => ['y9npgih2','ucqt7fw3','2p7ouzwk']).pluck(:id) + shixun3_id = Shixun.where(:identifier => ['fj49r7xv','gf2cvxfh','cmoxhtbs']).pluck(:id) end if @competition.competition_scores.where(:competition_stage_id => @stage.id).count == 0 @@ -385,7 +385,7 @@ class CompetitionsController < ApplicationController f_score = team.competition_scores.where(:competition_stage_id => final_stage.try(:id)).first # 预赛记录 p_score = team.competition_scores.where(:competition_stage_id => pre_stage.try(:id)).first - team[:s_score] = (f_score.try(:score).to_f * 0.85 + p_score.try(:score).to_f * 0.15).try(:round, 2) + team[:s_score] = (f_score.try(:score).to_f * 0.80 + p_score.try(:score).to_f * 0.20).try(:round, 2) team[:s_spend_time] = f_score.try(:cost_time).to_i + p_score.try(:cost_time).to_i end end diff --git a/app/controllers/ec_graduation_requirements_controller.rb b/app/controllers/ec_graduation_requirements_controller.rb index 091588cd..79c678de 100644 --- a/app/controllers/ec_graduation_requirements_controller.rb +++ b/app/controllers/ec_graduation_requirements_controller.rb @@ -50,9 +50,14 @@ class EcGraduationRequirementsController < ApplicationController @year = requirement.ec_year @template_major = admin_or_business? || @year.ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) requirement.update_attribute(:content, params[:requirement]) - requirement.ec_graduation_subitems.destroy_all + # requirement.ec_graduation_subitems.destroy_all params[:subitems].try(:each_with_index) do |sub, index| - EcGraduationSubitem.create(:content => sub, :position => index+1, :ec_graduation_requirement_id => requirement.id) + subitem = requirement.ec_graduation_subitems.where(position: index+1).first + if subitem.present? + subitem.update_attributes(:content => sub) + else + EcGraduationSubitem.create(:content => sub, :position => index+1, :ec_graduation_requirement_id => requirement.id) + end end @ec_graduation_requirements = requirement.ec_year.ec_graduation_requirements diff --git a/app/controllers/ec_graduation_subitems_controller.rb b/app/controllers/ec_graduation_subitems_controller.rb index b281e3f3..1248f450 100644 --- a/app/controllers/ec_graduation_subitems_controller.rb +++ b/app/controllers/ec_graduation_subitems_controller.rb @@ -82,9 +82,13 @@ class EcGraduationSubitemsController < ApplicationController # DELETE /ec_graduation_subitems/1.json def destroy @ec_graduation_subitem = EcGraduationSubitem.find(params[:id]) + @ec_graduation_requirement = @ec_graduation_subitem.ec_graduation_requirement + @ec_graduation_requirement.ec_graduation_subitems.where("position > #{@ec_graduation_subitem.position}").update_all("position = position - 1") + @ec_graduation_requirements = @ec_graduation_requirement.ec_year.ec_graduation_requirements @ec_graduation_subitem.destroy respond_to do |format| + format.js format.html { redirect_to ec_graduation_subitems_url } format.json { head :no_content } end diff --git a/app/controllers/ecloud_controller.rb b/app/controllers/ecloud_controller.rb index 3e02c579..ac303ce3 100644 --- a/app/controllers/ecloud_controller.rb +++ b/app/controllers/ecloud_controller.rb @@ -18,7 +18,7 @@ class EcloudController < ApplicationController skip_before_filter :verify_authenticity_token before_filter :save_para - before_filter :check_sign, only: [:ps_new, :ps_update, :bs_new, :bs_update] + # before_filter :check_sign, only: [:ps_new, :ps_update, :bs_new, :bs_update] before_filter :user_setup # before_filter :require_login, only: [:authorize] diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb index d07c7de1..b018e38d 100644 --- a/app/controllers/managements_controller.rb +++ b/app/controllers/managements_controller.rb @@ -179,6 +179,8 @@ class ManagementsController < ApplicationController if params[:search] if params[:search].to_i.to_s == params[:search].to_s myshixun_id = Game.where(:myshixun_id => params[:search].to_i).pluck(:myshixun_id) + game_myshixun_id = Game.where(:id => params[:search].to_i).pluck(:myshixun_id) + myshixun_id = myshixun_id + game_myshixun_id else myshixun_id = Game.where(:identifier => params[:search]).pluck(:myshixun_id) end diff --git a/app/models/tag_repertoire.rb b/app/models/tag_repertoire.rb index c33faa5c..7b7891e7 100644 --- a/app/models/tag_repertoire.rb +++ b/app/models/tag_repertoire.rb @@ -1,8 +1,8 @@ class TagRepertoire < ActiveRecord::Base # attr_accessible :title, :body belongs_to :sub_repertoire - has_many :shixuns, :through => :shixun_tag_repertoires has_many :shixun_tag_repertoires, :dependent => :destroy + has_many :shixuns, :through => :shixun_tag_repertoires has_many :memos, :through => :memo_tag_repertoires has_many :memo_tag_repertoires, :dependent => :destroy diff --git a/app/views/colleges/_course_statistics.html.erb b/app/views/colleges/_course_statistics.html.erb index 67e989f3..b8608dc0 100644 --- a/app/views/colleges/_course_statistics.html.erb +++ b/app/views/colleges/_course_statistics.html.erb @@ -20,13 +20,13 @@ <%= course_managers course.teachers %> <%= course.evaluating_count %> - <%= course.student_count.to_i %> - <%= course.hcm_count.to_i %> - <%= course.attachments_count.to_i %> - <%= course.messages_count.to_i %> - <%= course.hcm_nonshixun_count.to_i + course.exercises_count.to_i + course.polls_count.to_i %> + <%= @student_count.fetch(course.id, 0) %> + <%= @shixun_work_count.fetch(course.id, 0) %> + <%= @attachment_count.fetch(course.id, 0) %> + <%= @message_count.fetch(course.id, 0) %> + <%= @exercise_count.fetch(course.id, 0) + @poll_count.fetch(course.id, 0) + @other_work_count.fetch(course.id, 0) %> "><%= course.is_end ? "已结束" : "正在进行" %> - <%= format_time course.update_time %> + <%= format_time @active_time[course.id] %> <% end %> diff --git a/app/views/colleges/_student_shixun.html.erb b/app/views/colleges/_student_shixun.html.erb index f0999075..5fd310d1 100644 --- a/app/views/colleges/_student_shixun.html.erb +++ b/app/views/colleges/_student_shixun.html.erb @@ -21,8 +21,8 @@ <%= student.show_real_name %> <%= student.student_id %> - <%= student.myshixun_count %> - <%= student.myshixuns.where(:status => 0).count %> + <%= @shixun_count.fetch(student.id, 0) %> + <%= @study_shixun_count.fetch(student.id, 0) %> <%= student.grade %> <%= student.experience %> @@ -32,14 +32,15 @@ @@ -55,7 +55,13 @@ for(var i=0;i确定' pop_box_new(html, 500, 205); } - }) + }); $("input[name='subitems[]'],input[name='requirement']").live("input",function(){ $(this).removeClass("bor-red"); @@ -101,18 +107,18 @@ '

' + '' + ''+liNum+''+ - ''+ + ''+ ''+ ''+ '

'+ '

* '+liNum+'-1'+ - ''+ + ''+ '

'+ '

* '+liNum+'-2'+ - ''+ + ''+ '

'+ '

* '+liNum+'-3'+ - ''+ + ''+ '

'+ '

内容不能为空'+ '保存'+ @@ -121,6 +127,11 @@ ''; $(".ListTableLine").append(html); $("#requirementNew").find("input[name='requirement']").focus(); + var subInputs=document.getElementsByName("subitems[]"); + for (var i = 0; i < subInputs.length; i++) { + autoTextarea(subInputs[i], 0, 140); + } + autoTextarea(document.getElementsByName("requirement")[0], 0, 140); flagAdd=false; } @@ -128,8 +139,8 @@ //取消添加 function removePanel(value){ if(value!=undefined){ - $("#"+value).html($("#editFormContent").html()); - $("#editFormContent").remove(); + $("#"+value).show(); + // $("#editFormContent").remove(); } $("#form_data_for_requirements").remove(); flagAdd=true; @@ -141,9 +152,9 @@ console.log("#########type:"+ type) console.log("#########url:"+ url) - var requirement = $("input[name='requirement']").val(); + var requirement = $("textarea[name='requirement']").val(); if(requirement.trim() == ""){ - $("input[name='requirement']").addClass("bor-red"); + $("textarea[name='requirement']").addClass("bor-red"); $("#option_Item_notice").removeClass("none").html("内容不能为空"); return; } @@ -170,7 +181,7 @@ } }) console.log(in_vain); - $("input[name='requirement']").removeClass("bor-red"); + $("textarea[name='requirement']").removeClass("bor-red"); $("input[name='subitems[]']").removeClass("bor-red"); $("#option_Item_notice").addClass("none"); } diff --git a/app/views/layouts/_logined_header.html.erb b/app/views/layouts/_logined_header.html.erb index 66fc345d..d29a3893 100644 --- a/app/views/layouts/_logined_header.html.erb +++ b/app/views/layouts/_logined_header.html.erb @@ -1,9 +1,9 @@ -<%= link_to image_tag("/images/educoder/headNavLogo.png", alt:"高校智能化教学与实训平台", class:"logoimg fl ml25 mr60"), home_path %> +<%= link_to image_tag("/images/educoder/headNavLogo.png", alt:"高校智能化教学与实训平台", class:"logoimg fl mr30 ml25 mt10"), home_path %>

    -
  • "><%= link_to "首页", home_path %>
  • +
  • "><%= link_to "实践课程", subjects_path %>
  • "><%= link_to "翻转课堂", courses_path %>
  • diff --git a/app/views/layouts/_unlogin_header.html.erb b/app/views/layouts/_unlogin_header.html.erb index 2e12a992..bf00c8bc 100644 --- a/app/views/layouts/_unlogin_header.html.erb +++ b/app/views/layouts/_unlogin_header.html.erb @@ -1,11 +1,11 @@ -<%= link_to image_tag("/images/educoder/headNavLogo.png", alt:"高校智能化教学与实训平台", class:"logoimg fl ml25 mr60 "), home_path %> +<%= link_to image_tag("/images/educoder/headNavLogo.png", alt:"高校智能化教学与实训平台", class:"logoimg fl mr30 ml25 mt10"), home_path %>
      -
    • "><%= link_to "首页", home_path %>
    • +
    • "><%= link_to "实践课程", subjects_path %>
    • "><%= link_to "翻转课堂", courses_path %>
    • diff --git a/app/views/layouts/base_projects.html.erb b/app/views/layouts/base_projects.html.erb index 7baa3d3b..e0834667 100644 --- a/app/views/layouts/base_projects.html.erb +++ b/app/views/layouts/base_projects.html.erb @@ -23,7 +23,7 @@
      <%= render :partial => User.current.logged? ? 'layouts/logined_header' : 'layouts/unlogin_header' %>
      -
      +
      <%= render :partial => 'layouts/base_project_top' %>
      diff --git a/app/views/managements/_myshixun_list.html.erb b/app/views/managements/_myshixun_list.html.erb index bfcf3dc1..3d68f26f 100644 --- a/app/views/managements/_myshixun_list.html.erb +++ b/app/views/managements/_myshixun_list.html.erb @@ -13,7 +13,7 @@ <% @myshixuns.each do |myshixun| %> <% edu_giturl = "...." %> - <% gitlab_giturl = @g.project(myshixun.gpid).try(:http_url_to_repo) %> + <% gitlab_giturl = "https://git.educoder.net/#{myshixun.repo_name}.git" %> <%= myshixun.id %> <%= link_to myshixun.shixun.try(:name), myshixun_path(myshixun), :target => "_blank", :title => myshixun.shixun.try(:name) %> diff --git a/app/views/managements/video_applies/_video_apply_list.html.erb b/app/views/managements/video_applies/_video_apply_list.html.erb index d3cfc50d..b79cabc4 100644 --- a/app/views/managements/video_applies/_video_apply_list.html.erb +++ b/app/views/managements/video_applies/_video_apply_list.html.erb @@ -22,6 +22,7 @@
    • <%= video.title %> + <%= number_to_human_size(video.filesize) %>
    • <% if apply.pending? %> @@ -58,20 +59,22 @@ \ No newline at end of file diff --git a/app/views/welcome/_no_data.html.erb b/app/views/welcome/_no_data.html.erb index e3576008..a37aa535 100644 --- a/app/views/welcome/_no_data.html.erb +++ b/app/views/welcome/_no_data.html.erb @@ -1,4 +1,5 @@ -
      +<% style ||= '' %> +

      暂无数据哦~

      \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 22ea0bc4..b245e85c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1008,6 +1008,11 @@ RedmineApp::Application.routes.draw do ## oauth相关 get 'student_eval' get 'home' get 'get_home_data' + get 'shixun_time' + get 'shixun_report_count' + get 'teachers' + get 'shixun_chart_data' + get 'student_hot_evaluations' end collection do diff --git a/db/migrate/20190803022733_add_exec_time_to_evaluate_records.rb b/db/migrate/20190803022733_add_exec_time_to_evaluate_records.rb deleted file mode 100644 index 0b054e3c..00000000 --- a/db/migrate/20190803022733_add_exec_time_to_evaluate_records.rb +++ /dev/null @@ -1,5 +0,0 @@ -class AddExecTimeToEvaluateRecords < ActiveRecord::Migration - def change - add_column :evaluate_records, :exec_time, :integer - end -end diff --git a/lib/tasks/users.rake b/lib/tasks/users.rake index bfa0678c..c1a9da91 100644 --- a/lib/tasks/users.rake +++ b/lib/tasks/users.rake @@ -86,10 +86,11 @@ task :add_test_users => :environment do - (1..1000).each do |i| + (1..2000).each do |i| + puts i no = sprintf("%04d", i) - phone = "5160731#{no}" + phone = "6160731#{no}" us = UsersService.new user = us.register phone: phone, password: 'edu12345678' @@ -100,7 +101,7 @@ task :add_test_users => :environment do 平夏,凌旋,孤丝,怜寒,向萍,凡松,青丝,翠安,如天,凌雪,绮菱,代云,南莲,寻南,春文,香薇,冬灵,凌珍,采绿,天春,沛文, 紫槐,幻柏,采文,春梅,雪旋,盼海,映梦,安雁,映容,凝阳,访风,天亦,平绿,盼香,觅风,小霜,雪萍,半雪,山柳,谷雪,靖易, 白薇,梦菡,飞绿,如波,又晴,友易,香菱,冬亦,问雁,妙春,海冬,半安,平春,幼柏,秋灵,凝芙,念烟,白山,从灵,尔芙,迎蓉, - 念寒,翠绿,翠芙,靖儿,妙柏,千凝,小珍,天巧。妙旋,雪枫,夏菡,元绿,痴灵,绮琴,雨双,听枫,觅荷,凡之,晓凡,雅彤,香薇, + 念寒,翠绿,翠芙,靖儿,妙柏,千凝,小珍,天巧,妙旋,雪枫,夏菡,元绿,痴灵,绮琴,雨双,听枫,觅荷,凡之,晓凡,雅彤,香薇, 孤风,从安,绮彤,之玉,雨珍,幻丝,代梅,香波,青亦,元菱,海瑶,飞槐,听露,梦岚,幻竹,新冬,盼翠,谷云".split(",") lastname = l[rand(l.length)] + f[rand(f.length)] @@ -109,7 +110,7 @@ task :add_test_users => :environment do lastname: lastname, nickname: '', sex: 0, - mail: "00educoder#{no}@qq.com", + mail: "stueducoder#{no}@qq.com", identity: 1, te_technical_title: 0, pro_technical_title: 0, diff --git a/public/images/educoder/headNavLogo.png b/public/images/educoder/headNavLogo.png index 436d2349..8df93d54 100644 Binary files a/public/images/educoder/headNavLogo.png and b/public/images/educoder/headNavLogo.png differ diff --git a/public/javascripts/attachments.js b/public/javascripts/attachments.js index 0275558c..ba201074 100644 --- a/public/javascripts/attachments.js +++ b/public/javascripts/attachments.js @@ -502,8 +502,11 @@ function imageAddInputFiles(inputEl){ addInputFiles(inputEl) } -function addInputFiles(inputEl,btnId) { +function addInputFiles(inputEl,btnId) { // var clearedFileInput = $(inputEl).clone().val(''); + if($("#ajax-indicator").length>0){ + $("#ajax-indicator").show(); + } if (inputEl.files) { // if(inputEl.files.length >= 5){ // alert('一次选择的文件不能超过5个') @@ -527,6 +530,9 @@ function addInputFiles(inputEl,btnId) { if (count <= 0) count = 1; $('#upload_file_count').html("" + count + "" + $(inputEl).data('fileCount')); } + if($("#ajax-indicator").length>0){ + $("#ajax-indicator").hide(); + } } //clearedFileInput.insertAfter('#attachments_fields'); @@ -605,6 +611,9 @@ function uploadAndAttachFiles(files, inputEl,btnId) { addFile(inputEl, this, true,btnId); }); } + if($("#ajax-indicator").length>0){ + $("#ajax-indicator").hide(); + } } function uploadAndAttachFiles_board(files, inputEl, id,btnId) { diff --git a/public/javascripts/init_KindEditor.js b/public/javascripts/init_KindEditor.js index 76c02b44..2442031d 100644 --- a/public/javascripts/init_KindEditor.js +++ b/public/javascripts/init_KindEditor.js @@ -45,21 +45,21 @@ function nh_check_field(params){ if(params.content.isEmpty()){ result=false; } - if(params.content.html()!=params.textarea.html() || params.issubmit==true){ - params.textarea.html(params.content.html()); - params.content.sync(); - if(params.content.isEmpty()){ - params.contentmsg.html('内容不能为空'); - params.contentmsg.css({color:'#ff0000'}); - params.submit_btn.one('click', function(){ - params.form.submit(); - }); - }else{ - params.contentmsg.html('填写正确'); - params.contentmsg.css({color:'#008000'}); - } - params.contentmsg.show(); - } + // if(params.content.html()!=params.textarea.html() || params.issubmit==true){ + // params.textarea.html(params.content.html()); + // params.content.sync(); + // if(params.content.isEmpty()){ + // params.contentmsg.html('内容不能为空'); + // params.contentmsg.css({color:'#ff0000'}); + // params.submit_btn.one('click', function(){ + // params.form.submit(); + // }); + // }else{ + // params.contentmsg.html('填写正确'); + // params.contentmsg.css({color:'#008000'}); + // } + // params.contentmsg.show(); + // } } return result; } diff --git a/public/javascripts/init_activity_KindEditor.js b/public/javascripts/init_activity_KindEditor.js index 4c63d169..3e44c5f0 100644 --- a/public/javascripts/init_activity_KindEditor.js +++ b/public/javascripts/init_activity_KindEditor.js @@ -80,18 +80,18 @@ function nh_check_field(params){ if(params.content.isEmpty()){ result=false; } - if(params.content.html()!=params.textarea.html() || params.issubmit==true){ - params.textarea.html(params.content.html()); - params.content.sync(); - if(params.content.isEmpty() || /^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(params.textarea.html())){ - params.contentmsg.html('内容不能为空'); - params.contentmsg.css({color:'#ff0000'}); - }else{ - params.contentmsg.html('填写正确'); - params.contentmsg.css({color:'#008000'}); - } - params.contentmsg.show(); - } + // if(params.content.html()!=params.textarea.html() || params.issubmit==true){ + // params.textarea.html(params.content.html()); + // params.content.sync(); + // if(params.content.isEmpty() || /^\s*<\w*\s*\w*\=\"\w*\"\s*\w*\=\"\w*\:\s*\#\d*\;\s*\w*\-\w*\:\s*\w*\;\"\>[\u4e00-\u9fa5]*<\/\w*\>\s*$/.test(params.textarea.html())){ + // params.contentmsg.html('内容不能为空'); + // params.contentmsg.css({color:'#ff0000'}); + // }else{ + // params.contentmsg.html('填写正确'); + // params.contentmsg.css({color:'#008000'}); + // } + // params.contentmsg.show(); + // } } return result; } diff --git a/public/react/src/index.js b/public/react/src/index.js index 73bc2829..98130846 100644 --- a/public/react/src/index.js +++ b/public/react/src/index.js @@ -41,7 +41,7 @@ var proxy = "http://localhost:3000" // proxy = "http://testbdweb.trustie.net" // proxy = "http://testbdweb.educoder.net" // proxy ="http://192.168.2.63:3000" - proxy='http://localhost:3000' + proxy='http://47.96.87.25:48080' const requestMap={}; // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; // 如果需要支持重复的请求,考虑config里面自定义一个allowRepeat参考来控制 diff --git a/public/react/src/modules/ShCommunity/CommunityHome.js b/public/react/src/modules/ShCommunity/CommunityHome.js index d1f51fad..dc86f23a 100644 --- a/public/react/src/modules/ShCommunity/CommunityHome.js +++ b/public/react/src/modules/ShCommunity/CommunityHome.js @@ -66,7 +66,12 @@ class CommunityHome extends Component { } let xhslist=["路由交换","H3CNA","H3CNE","H3CSE-Routing&Switching","H3CTE","","","H3CNE-SDN","","H3CIE-Routing&SWitching"] return ( -
      +
      +
      { BannersUrl===""?"": diff --git a/public/react/src/modules/ec/css/ecCourseEvaluations.css b/public/react/src/modules/ec/css/ecCourseEvaluations.css index 11ee74bb..5931e9f8 100644 --- a/public/react/src/modules/ec/css/ecCourseEvaluations.css +++ b/public/react/src/modules/ec/css/ecCourseEvaluations.css @@ -233,7 +233,7 @@ input{ .newSystem .newtarget_scoreclass{ padding: 10px 0px !important; - margin: 0px 30px !important; + margin: 0px 20px !important; } .newSystem .newtarget_target{ @@ -558,4 +558,8 @@ a.TrainingLecturer:hover{ .mt60{ margin-top:60px; +} + +.SystemParameters{ + height:auto; } \ No newline at end of file diff --git a/public/react/src/modules/ec/ecCompletion_calculation/ecCompletion_calculation.js b/public/react/src/modules/ec/ecCompletion_calculation/ecCompletion_calculation.js index f76e065d..002bb0ab 100644 --- a/public/react/src/modules/ec/ecCompletion_calculation/ecCompletion_calculation.js +++ b/public/react/src/modules/ec/ecCompletion_calculation/ecCompletion_calculation.js @@ -556,7 +556,7 @@ class EcCompletionCalculation extends Component { { Spintype===true?}/>:"" } - { + { graduation_list.length===0&&Spintype===false?
    • {/* {item.ec_graduation_name} */} @@ -575,7 +575,7 @@ class EcCompletionCalculation extends Component { if(key===0){ return( -

      1300?168.6*(ec_course_targets_count+3):1200+"px"}}> +

      5 ? (76*(ec_course_targets_count+4)+380+15):1200+"px"}}> 毕业要求 {item.ec_subitem_content} 达成结果 @@ -595,7 +595,7 @@ class EcCompletionCalculation extends Component { Spintype===false?graduation_list.map((item,key)=>{ return( -

    • 1300?162*(ec_course_targets_count+3):1137+"px"}}> +
    • 5 ? (76*(ec_course_targets_count+4)+380):1200+"px"}}> {/* {item.ec_graduation_name} */} {key+1} {item.ec_subitem_content} @@ -621,7 +621,7 @@ class EcCompletionCalculation extends Component {
      -

      1200?(113*(total_rate_data+4.5))+63:1200+"px"}}> +

      5 ? (180 * total_rate_data+226+16) : 1200+"px"}}> {/*序号*/} 课程目标 {/*姓名*/} @@ -651,7 +651,7 @@ class EcCompletionCalculation extends Component { } { Spintype===true?}/>:"" } { - Spintype===false?

    • 1200?(113*(total_rate_data+4.5))+63:1200+"px"}}> + Spintype===false?
    • 5 ? (180 * total_rate_data+226+16) : 1200 + "px"}}> 占比 {/*colorTransparent*/} {/* 平均数 */} diff --git a/public/react/src/modules/ec/ecCourseEvaluations/ecCourseEvaluations.js b/public/react/src/modules/ec/ecCourseEvaluations/ecCourseEvaluations.js index 5a32d363..8f091f7b 100644 --- a/public/react/src/modules/ec/ecCourseEvaluations/ecCourseEvaluations.js +++ b/public/react/src/modules/ec/ecCourseEvaluations/ecCourseEvaluations.js @@ -54,7 +54,9 @@ class ecCourseEvaluations extends Component { checkevalue:undefined, isreload:false, newModallist:false, - isreloads:false + isreloads:false, + isSpin:false, + listSpin:false } } componentWillMount(){ @@ -90,7 +92,8 @@ class ecCourseEvaluations extends Component { let newec_course_id=this.props.match.params.ec_course_id; this.setState({ - ec_course_id:newec_course_id + ec_course_id:newec_course_id, + listSpin:true }) const url = `/ec_course_evaluations?ec_course_id=`+newec_course_id; axios.get(url, { @@ -110,7 +113,8 @@ class ecCourseEvaluations extends Component { course_url:response.data.course_url, ec_course_id:response.data.ec_course_id, ec_year_id:response.data.ec_year_id, - ecmanager: response.data.is_manager + ecmanager: response.data.is_manager, + listSpin:false }) } }).catch(function (error) { @@ -564,6 +568,7 @@ class ecCourseEvaluations extends Component { } sync_course_data=()=>{ + this.setState({listSpin:true}) let ec_course_id=this.props.match.params.ec_course_id; let Url ='/ec_course_achievement_methods/sync_course_data'; axios.post(Url, { @@ -577,14 +582,16 @@ class ecCourseEvaluations extends Component { this.setState({ // titlemessage: response.data.message+"(支撑关系变更)", Modallist: response.data.message, - Modallisttype:true + Modallisttype:true, + listSpin:false }) this.UpdateEvaluations(); }else if(response.data.status===-1){ this.setState({ // titlemessage: response.data.message+"(支撑关系变更)", Modallist: response.data.message, - Modallisttype:true + Modallisttype:true, + listSpin:false }) } @@ -595,6 +602,7 @@ class ecCourseEvaluations extends Component { } uploadfile=(file)=>{ + this.setState({listSpin:true}) let Url =`/ec_course_evaluations/`+file.data+`/import_score`; const form = new FormData(); form.append('file', file.file); @@ -607,7 +615,8 @@ class ecCourseEvaluations extends Component { Modallist: '已成功导入'+response.data.count+"条数据", Modallisttype:true, isreload:true, - isreloads:true + isreloads:true, + listSpin:false }) }else if(response.data.status===0){ // message.warning(response.data.message); @@ -616,7 +625,8 @@ class ecCourseEvaluations extends Component { Modallist:response.data.message, Modallisttype:true, isreload:false, - isreloads:false + isreloads:false, + listSpin:false }) } }).catch((error) => { @@ -656,6 +666,7 @@ class ecCourseEvaluations extends Component { saveassclasslist=()=>{ // 列表清空 //搜索框清空 + this.setState({isSpin:true}); let{checkevalue}=this.state; let ec_course_id=this.props.match.params.ec_course_id; @@ -672,7 +683,8 @@ class ecCourseEvaluations extends Component { this.setState({ Modallist: "关联失败", Modallisttype:true, - isreload:false + isreload:false, + isSpin:false }) }else if(response.data.status===0)[ this.setState({ @@ -682,7 +694,8 @@ class ecCourseEvaluations extends Component { assclassvalue:"", Modallist: "关联成功", Modallisttype:true, - isreload:true + isreload:true, + isSpin:false }) ] @@ -766,6 +779,7 @@ class ecCourseEvaluations extends Component { return (
      + } spinning={this.state.isSpin}> -
      +
      {/*课程考核标准*/} {/*(请在完成配置后,使用各项成绩 模板,将本学年所有参与的学生成绩数据导入系统)*/} @@ -930,308 +944,305 @@ class ecCourseEvaluations extends Component {
      + +
      +

      + + 名称 + 考核次数 + 支撑关系 + 考核分项名称 + + {/* 操作 */} + {ecmanager===false?"": + + + } + + + + 成绩导入状态 + + + 成绩来源 + + + 平均成绩导入模板 + + + 明细成绩导入模板 + +

      + } spinning={this.state.listSpin}> +
      + { + ec_course_evaluation_lists && ec_course_evaluation_lists.map((list,m)=>{ + + return( +
    • + {m+1} + +
      {list.name}
      +
      + +
      {list.evluation_count}
      +
      + +
      {list.status===1?"总成绩支撑":list.status===2?"分项成绩支撑":list.status}
      +
      + + + { + list.subitems.map((listchild,mk)=>{ + return ( + +
      {listchild.name} +
      +
      + ) + }) -
      - -

      - - 名称 - 考核次数 - 支撑关系 - 考核分项名称 - - {/* 操作 */} - {ecmanager===false?"": - - - } - - - - 成绩导入状态 - - - 成绩来源 - - - 平均成绩导入模板 - - - 明细成绩导入模板 - -

      -
      - { - ec_course_evaluation_lists===undefined? }/>:ec_course_evaluation_lists.map((list,m)=>{ + } + + + + {/*style={{display:list.is_course_type===false?'inline-block':'none'}}*/} + {/* editSubentry 编辑的 */} + +
      +
      + + + + +
      +
      您确定要删除吗?
      +
      +
      + 取消 + 确定 +
      +
      + + + +
      +
      +
      - return( -
    • - {m+1} - -
      {list.name}
      -
      - -
      {list.evluation_count}
      -
      - -
      {list.status===1?"总成绩支撑":list.status===2?"分项成绩支撑":list.status}
      -
      - - - { - list.subitems.map((listchild,mk)=>{ - return ( - -
      {listchild.name} -
      -
      - ) - }) - - } -
      - - - {/*style={{display:list.is_course_type===false?'inline-block':'none'}}*/} - {/* editSubentry 编辑的 */} - -
      -
      - - - - -
      -
      您确定要删除吗?
      -
      -
      - 取消 - 确定 -
      -
      - - - + + +
      + 模板下载
      -
      - - - - -
      - 模板下载 -
      - - -
      - - - - -
      模板下载
      -
      -
      - - -
      -
      - - - {ecmanager===false?成绩导入:成绩导入} - + + + + + + + +
      模板下载
      +
      +
      + + +
      +
      + + {ecmanager===false?成绩导入:成绩导入} + + +
      -
      - + - {ecmanager===false?"" - : -
      {list.import_status===true||list.is_course_type?"已导入":"未导入"}
      -
      } + {ecmanager===false?"" + : +
      {list.import_status===true||list.is_course_type?"已导入":"未导入"}
      +
      } -
      +
      - { + { - params===" " ? " " : params.map((item,key)=>{ + params===" " ? " " : params.map((item,key)=>{ + + return ( +
      +
      + +
      + 名称 + + + 考核次数 + + + + + 由单次考核总成绩支撑课程目标 +
      + 由单次考核的某分项成绩支撑课程目标 +
      +
      +
      + +
      + { + item.subitems.map((i,k)=>{ + return( +
      + 考核分项名称 + + + +
      + + + + + + + +
      +
      +
      + ) + }) + } - return ( -
      -
      - -
      - 名称 - - - 考核次数 - - - - - 由单次考核总成绩支撑课程目标 -
      - 由单次考核的某分项成绩支撑课程目标 -
      -
      -
      - { - item.subitems.map((i,k)=>{ - return( -
      - 考核分项名称 - - - -
      - - - - - - - -
      -
      -
      - ) - }) - } - +
      +
      保存
      +
      取消
      +
      + {Modallist}
      + ) + }) + } -
      -
      保存
      -
      取消
      -
      - {Modallist} -
      - ) - }) - } +
      -
      +
    • + ) + }) + } - - ) - }) - } + {ecmanager===false?"":
      - {ecmanager===false?"":
      + { - { + params===" " ? " " : params.map((item,key)=>{ - params===" " ? " " : params.map((item,key)=>{ + return ( +
      +
      - return ( -
      -
      +
      + 名称 + -
      - 名称 - + 考核次数 + - 考核次数 - + + + 由单次考核总成绩支撑课程目标 +
      + 由单次考核的某分项成绩支撑课程目标 +
      +
      +
      - - - 由单次考核总成绩支撑课程目标
      - 由单次考核的某分项成绩支撑课程目标 -
      -
      + { + item.subitems.map((i,k)=>{ + return( +
      + 考核分项名称 + + + +
      + + + + + + +
      - -
      - { - item.subitems.map((i,k)=>{ - return( -
      - 考核分项名称 - - - -
      - - - - - - - -
      -
      -
      - ) - }) - } -
      - {/* 新建 */} -
      保存
      -
      取消
      + +
      + ) + }) + } +
      + {/* 新建 */} +
      保存
      +
      取消
      +
      + {Modallist}
      - {Modallist} -
      -
      - ) - }) - } -
      - } -
      +
      + ) + }) + } +
      + } +
      +
      - - -
      - +
      {/**/} - - +
      ); } diff --git a/public/react/src/modules/ec/ecCourseSupportSetting/style.css b/public/react/src/modules/ec/ecCourseSupportSetting/style.css index f961452a..85646a47 100644 --- a/public/react/src/modules/ec/ecCourseSupportSetting/style.css +++ b/public/react/src/modules/ec/ecCourseSupportSetting/style.css @@ -28,7 +28,7 @@ } .SystemParameters { - height: 60px; + min-height: 60px; } p { diff --git a/public/react/src/modules/ec/ecCourseSupports/ecCourseSupports.js b/public/react/src/modules/ec/ecCourseSupports/ecCourseSupports.js index 26f9a167..ef0d4625 100644 --- a/public/react/src/modules/ec/ecCourseSupports/ecCourseSupports.js +++ b/public/react/src/modules/ec/ecCourseSupports/ecCourseSupports.js @@ -470,7 +470,7 @@ class ecCourseSupports extends Component { -
      +
      { + this.setState({isSpin:true}) let {majorschoollist}=this.state; let Url =majorschoollist.import_url; const form = new FormData(); @@ -132,7 +135,8 @@ class ecStudentList extends Component { // titlemessage: response.data.message+"(支撑关系变更)", Modallist: '已成功导入'+response.data.count+"条数据!", Modallisttype:true, - Modallisttypes:1 + Modallisttypes:1, + isSpin:false }) }else if(response.data.status===0){ // message.warning(response.data.message); @@ -140,7 +144,8 @@ class ecStudentList extends Component { // titlemessage: response.data.message+"(支撑关系变更)", Modallist:response.data.message, Modallisttype:true, - Modallisttypes:0 + Modallisttypes:0, + isSpin:false }) } }).catch((error) => { @@ -357,8 +362,8 @@ class ecStudentList extends Component { 删除
      }
      - -
      + +

      +
      diff --git a/public/stylesheets/css/public.css b/public/stylesheets/css/public.css index 0b1636c9..c93b8c1e 100644 --- a/public/stylesheets/css/public.css +++ b/public/stylesheets/css/public.css @@ -306,7 +306,7 @@ a.postReplyIcon:hover {background:url(../images/post_image_list.png) -40px -29px .postThemeWrap {width:655px; float:left;position: relative} .postLikeIcon {background:url(../images/post_image_list.png) 0px -42px no-repeat ;float:right; padding-left:18px; margin-top:3px; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;} .postLikeIcon:hover {background:url(../images/post_image_list.png) 0px -64px no-repeat ; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;} -a.AnnexBtn{ background: url(../images/homepage_icon2.png) 0px -343px no-repeat !important; height:20px; display:block; padding-left:20px; color:#888888; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;} +a.AnnexBtn{ line-height: 20px; background: url(../images/homepage_icon2.png) 0px -343px no-repeat !important; height:20px; display:block; padding-left:20px; color:#888888; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;} a:hover.AnnexBtn{background: url(../images/homepage_icon2.png) -90px -343px no-repeat !important; color:#3598db; -moz-transition :all 0s linear 0s; -webkit-transition :all 0s linear 0s; -o-transition:all 0s linear 0s; transition:all 0s linear 0s;} .postEdit {background:url(../images/post_image_list.png) 0px -94px no-repeat; width:18px; height:18px; display:block; float:left;} .postDelete {background:url(../images/post_image_list.png) -42px -93px no-repeat; width:18px; height:18px; display:block; float:right;} diff --git a/public/stylesheets/educoder/edu-all.css b/public/stylesheets/educoder/edu-all.css index e768d86d..d88c31c8 100644 --- a/public/stylesheets/educoder/edu-all.css +++ b/public/stylesheets/educoder/edu-all.css @@ -4,9 +4,9 @@ /*position: fixed;*/ top: 0px;left: 0px;z-index:1000;-moz-box-shadow: 0px 0px 12px rgba(0,0,0,0.1); /* 老的 Firefox */box-shadow: 0px 0px 12px rgba(0,0,0,0.1);} .newHeader .logoimg{ - margin-top: 16px; + margin-top: 13px; float: left; - width: 97px; + width: 40px; } .head-nav{float: left;width: 800px;text-align: center;height: 60px;box-sizing: border-box; min-width: 400px;} .head-nav ul#header-nav{position: absolute;top: 0px;z-index: 3;height: 60px;box-sizing: border-box;} @@ -612,13 +612,13 @@ p .activity-item:first-child{border-top: 1px solid #eee;} #competition-content img,#competition-db-content img,#ccfPage img{vertical-align: bottom;} #hnpage1{background: url('/images/educoder/competition/logo_1.jpg') no-repeat top center;min-height: 820px;} -#competition-header{background:#24292D;height: 60px;width: 100%;padding-right: 40px;box-sizing: border-box; +#competition-header{background:#24292D;height: 60px;width: 100%;padding-right: 25px;box-sizing: border-box; /*position: fixed;*/ top: 0px;left: 0px;width: 100%;z-index: 1000;} #competition-header .logoimg{ margin-top: 5px; float: left; - width: 97px;} + width: 40px;} .nav-game{position: relative;} .nav-game li{position: relative;float: left;width: 110px;height: 60px;line-height: 60px;text-align: center;box-sizing: border-box} @@ -673,7 +673,7 @@ a.enterLink{cursor: pointer;color: #418CCD!important;background: none!important; .second_code_2{min-height: 436px;} .second_code_3{min-height: 1460px;padding-top: 190px;box-sizing: border-box;position: relative} .second_code_4{min-height: 1459px;padding-top: 190px;box-sizing: border-box;position: relative} -.second_code_5{min-height: 2314px;padding-top: 190px;box-sizing: border-box;position: relative} +.second_code_5{min-height: 2384px;padding-top: 190px;box-sizing: border-box;position: relative} .second_code_6{min-height: 1060px;} .second_code_7{min-height: 1116px;} .second_code_8{min-height: 711px;} diff --git a/public/stylesheets/educoder/edu-main.css b/public/stylesheets/educoder/edu-main.css index aee805f4..5aa367ad 100644 --- a/public/stylesheets/educoder/edu-main.css +++ b/public/stylesheets/educoder/edu-main.css @@ -122,7 +122,7 @@ a.decoration{text-decoration: underline} .mr3{margin-right: 3px}.mr4{margin-right: 4px}.mr5{ margin-right: 5px;}.mr8{ margin-right: 8px;}.mr10{ margin-right: 10px;}.mr12{ margin-right:12px!important;}.mr15{ margin-right: 15px;}.mr18{ margin-right: 18px;}.mr20{ margin-right: 20px;}.mr24{ margin-right: 24px;}.mr25{ margin-right: 25px;}.mr30{ margin-right:30px;}.mr35{margin-right:35px;}.mr40{margin-right:40px;}.mr45{margin-right:45px;}.mr50{ margin-right: 50px;}.mr60{ margin-right:60px;}.mr70{ margin-right: 70px;}.mr75{ margin-right: 75px;}.mr80{ margin-right:80px;}.mr90{ margin-right:90px;}.mr100{ margin-right: 100px;}.mr110{ margin-right:110px;}.mr350{ margin-right:350px;} .pt1{ padding-top:1px;}.pt3{ padding-top:3px!important;}.pt5{ padding-top:5px!important;}.pt10{ padding-top:10px;}.pt15{ padding-top:15px;}.pt17{ padding-top:17px;}.pt20{ padding-top:20px!important;}.pt25{ padding-top:25px;}.pt30{ padding-top:30px;}.pt35{ padding-top:35px;}.pt37{ padding-top:37px;}.pt40{ padding-top:40px;}.pt47{ padding-top:47px;}.pt49{ padding-top:49px;}.pt50{ padding-top:50px;}.pt60{ padding-top:60px;}.pt70{ padding-top:70px;}.pt80{ padding-top:80px;}.pt90{ padding-top:90px;}.pt100{padding-top:100px;}.pt110{ padding-top:110px;}.pt120{ padding-top:120px;}.pt130{padding-top:130px;}.pt200{padding-top:200px;} -.pb3{ padding-bottom:3px!important;}.pb5{ padding-bottom:5px!important;}.pb10{ padding-bottom:10px;}.pb15{ padding-bottom:15px;}.pb20{ padding-bottom:20px;}.pb25{ padding-bottom:20px;}.pb25{ padding-bottom:20px;}.pb30{ padding-bottom:30px;}.pb35{ padding-bottom:35px;}.pb40{ padding-bottom:40px;}.pb47{ padding-bottom:47px;}.pb50{ padding-bottom:50px;}.pb60{ padding-bottom:60px;}.pb70{ padding-bottom:70px;}.pb80{ padding-bottom:80px;}.pb90{ padding-bottom:90px;}.pb100{ padding-bottom:100px;}.pb110{ padding-bottom:110px;}.pb155{ padding-bottom:155px;} +.pb3{ padding-bottom:3px!important;}.pb5{ padding-bottom:5px!important;}.pb10{ padding-bottom:10px;}.pb15{ padding-bottom:15px;}.pb20{ padding-bottom:20px;}.pb25{ padding-bottom:25px;}.pb30{ padding-bottom:30px;}.pb35{ padding-bottom:35px;}.pb40{ padding-bottom:40px;}.pb47{ padding-bottom:47px;}.pb50{ padding-bottom:50px;}.pb60{ padding-bottom:60px;}.pb70{ padding-bottom:70px;}.pb80{ padding-bottom:80px;}.pb90{ padding-bottom:90px;}.pb100{ padding-bottom:100px;}.pb110{ padding-bottom:110px;}.pb155{ padding-bottom:155px;} .pr2{ paddding-right:2px;}.pr5{ padding-right:5px;}.pr10{ padding-right:10px;}.pr15{ padding-right:15px;}.pr20{ padding-right:20px!important;}.pr30{ padding-right:30px!important;}.pr35{ padding-right:35px!important;}.pr42{ padding-right:42px;}.pr45{ padding-right:45px;}.pr48{ padding-right:48px;}.pr57{ padding-right:57px;}.pr60{ padding-right:60px;}.pr70{ padding-right:70px;}.pr72{ padding-right:72px;}.pr75{ padding-right:75px;}.pr88{ padding-right:88px;} .pl0{ padding-left:0px!important;}.pl2{ padding-left:2px;}.pl5{ padding-left:5px;}.pl7{ padding-left:7px;}.pl8{ padding-left:8px;}.pl10{ padding-left:10px;}.pl12{ padding-left:12px!important;}.pl15{ padding-left:15px;}.pl20{ padding-left:20px;}.pl22{ padding-left:22px;}.pl25{ padding-left:25px;}.pl28{ padding-left:28px;}.pl30{ padding-left:30px;}.pl33{padding-left: 33px}.pl35{ padding-left:35px;}.pl40{ padding-left:40px;}.pl42{ padding-left:42px;}.pl45{ padding-left:45px;}.pl50{ padding-left:50px;}.pl60{ padding-left:60px;}.pl70{padding-left:70px;}.pl75{padding-left:75px;}.pl80{padding-left:80px;}.pl88{ padding-left:88px;}.pl92{padding-left:92px;}.pl100{ padding-left:100px;} diff --git a/public/stylesheets/project.css b/public/stylesheets/project.css index f7a5b439..06564e50 100644 --- a/public/stylesheets/project.css +++ b/public/stylesheets/project.css @@ -1096,7 +1096,7 @@ a:hover.link_file_a{ background:url(../images/pic_file.png) 0 -25px no-repeat; c select.InputBox, input.InputBox, textarea.InputBox {border: 1px solid #D9D9D9;color: #888;height: 28px;line-height: 28px;padding-left: 5px;font-size: 14px;} .w713 {width: 713px;} a.BlueCirBtnMini{ display:block;width:40px; height:22px; background-color:#ffffff; line-height:24px; vertical-align:middle; text-align:center; border:1px solid #269ac9; color:#269ac9; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px;} -a.AnnexBtn{ background: url(images/homepage_icon2.png) 0px -343px no-repeat !important; width:70px; height:20px; display:block; padding-left:20px; color:#888888;} +a.AnnexBtn{ line-height: 20px; background: url(images/homepage_icon2.png) 0px -343px no-repeat !important; width:70px; height:20px; display:block; padding-left:20px; color:#888888;} a:hover.BlueCirBtnMini{ background:#269ac9; color:#fff;} .sticky_btn_cir{ background:#269ac9; padding:1px 10px; -moz-border-radius:2px; -webkit-border-radius:2px; border-radius:2px; color:#fff; font-weight:normal; font-size:12px;} .locked_btn_cir{background: url("../images/locked.png") 0 0 no-repeat; cursor: default;} @@ -1128,7 +1128,7 @@ a.postReplyIcon:hover {background:url(images/post_image_list.png) -40px -29px no .postThemeWrap {width:655px; float:left;position: relative} .postLikeIcon {background:url(images/post_image_list.png) 0px -42px no-repeat ;float:right; padding-left:18px; margin-top:3px;} .postLikeIcon:hover {background:url(images/post_image_list.png) 0px -64px no-repeat ;} -a.AnnexBtn{ background: url(images/homepage_icon2.png) 0px -343px no-repeat !important; width:70px; height:20px; display:block; padding-left:20px; color:#888888;} +a.AnnexBtn{ line-height: 20px; background: url(images/homepage_icon2.png) 0px -343px no-repeat !important; width:70px; height:20px; display:block; padding-left:20px; color:#888888;} a:hover.AnnexBtn{background: url(images/homepage_icon2.png) -90px -343px no-repeat !important; color:#3598db;} .postEdit {background:url(images/post_image_list.png) 0px -94px no-repeat; width:18px; height:18px; display:block; float:left;} .postDelete {background:url(images/post_image_list.png) -42px -93px no-repeat; width:18px; height:18px; display:block; float:right;}