diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index e60e37bce..aa9ddebf0 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -81,8 +81,6 @@ class AccountsController < ApplicationController return normal_status(-2, "错误的账号或密码") end - @user.update_column(:last_login_on, Time.now) - successful_authentication(@user) session[:user_id] = @user.id @@ -124,7 +122,7 @@ class AccountsController < ApplicationController set_autologin_cookie(user) UserAction.create(:action_id => user.try(:id), :action_type => "Login", :user_id => user.try(:id), :ip => request.remote_ip) - + user.update_column(:last_login_on, Time.now) # 注册完成后有一天的试用申请(先去掉) # UserDayCertification.create(user_id: user.id, status: 1) end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 7aa89dbd7..359661d4b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -39,6 +39,7 @@ class ApplicationController < ActionController::Base @user_course_identity = current_user.course_identity(@course) if @user_course_identity > Course::STUDENT && @course.is_public == 0 tip_exception(401, "..") unless User.current.logged? + check_account tip_exception(409, "您没有权限进入") end uid_logger("###############user_course_identity:#{@user_course_identity}") @@ -189,8 +190,8 @@ class ApplicationController < ActionController::Base # 资料是否完善 def check_account if !current_user.profile_completed? - info_url = '/account/profile' - tip_exception(402, info_url) + #info_url = '/account/profile' + tip_exception(402, nil) end end diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb index fdaa30305..ebce98b62 100644 --- a/app/controllers/challenges_controller.rb +++ b/app/controllers/challenges_controller.rb @@ -1,5 +1,5 @@ class ChallengesController < ApplicationController - before_action :require_login, :check_auth + before_action :require_login, :check_auth, except: [:index] before_action :find_shixun, only: [:new, :create, :index] skip_before_action :verify_authenticity_token, only: [:create, :update, :create_choose_question, :crud_answer] before_action :find_challenge, only: [:edit, :show, :update, :create_choose_question, :index_down, :index_up, @@ -155,6 +155,7 @@ class ChallengesController < ApplicationController @editable = @shixun.status == 0 # before_action:有判断权限,如果没发布,则肯定是管理人员 @user = current_user + @shixun.increment!(:visits) end def show diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 8ea6df506..6aaa04f12 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -49,30 +49,12 @@ class CoursesController < ApplicationController @user = current_user # 根据分类查询课堂(全部,我的,最新,最热) @order = params[:order].present? ? params[:order] : "all" - order_str = @order != "course_members_count" && @order != "created_at" ? "updated_at" : @order - - # if @order == "all" - # @course = Course.where(is_delete: 0, is_hidden: 0).select("select c.name, c.id, s.name, u.login, ifnull(concat(u.lastname,u.firstname), - # u.login), s.name from courses c, users u, user_extensions ue, schools s where c.is_delete=0 and - # c.tea_id=u.id and u.id=ue.user_id and ue.school_id=s.id") - - # @courses = Course.where(is_delete: 0, is_hidden: 0) - # .order("courses.id = 1309 desc, courses.created_at desc") - - # @courses = Course.where(is_delete: 0, is_hidden: 0).select("courses.id, courses.tea_id, courses.name, courses.exercises_count, courses.polls_count, - # courses.is_public, courses.is_end, courses.visits, courses.course_members_count,courses.homework_commons_count,(SELECT MAX(created_at) - # FROM `course_activities` WHERE course_activities.course_id = courses.id) AS a") - # .order("courses.id = 1309 desc, a desc") - if @order == "mine" - tip_exception(401, "..") unless current_user.logged? - @courses = Course.joins(:course_members) - .where("is_delete = 0 AND is_hidden = 0 AND course_members.user_id = ?", @user.id).distinct - elsif @order == "created_at" - # REDO:Extension - @courses = Course.where(is_delete: 0, is_hidden: 0, is_end: 0).distinct + if @order == "visits" + order_str = "courses.id = 1309 DESC, courses.visits DESC" + @courses = Course.where(is_delete: 0, is_hidden: 0) else - # REDO:Extension - @courses = Course.where(is_delete: 0, is_hidden: 0).distinct + order_str = "courses.id = 1309 DESC, courses.homepage_show DESC, courses.created_at desc" + @courses = Course.where(is_delete: 0, is_hidden: 0, is_end: 0) end # 根据搜索关键字进一步筛选 @@ -92,7 +74,7 @@ class CoursesController < ApplicationController .where("#{sql}", keyword: "%#{params[:search]}%").distinct end @courses_count = @courses.count("courses.id") - @courses = @courses.order("courses.id = 1309 DESC, courses.#{order_str} DESC") + @courses = @courses.order(order_str) # 分页 page = params[:page] || 1 diff --git a/app/controllers/discusses_controller.rb b/app/controllers/discusses_controller.rb index 4af27b919..6ddf71ba4 100644 --- a/app/controllers/discusses_controller.rb +++ b/app/controllers/discusses_controller.rb @@ -1,5 +1,6 @@ class DiscussesController < ApplicationController LIMIT = 10 + before_action :require_login, only: [:create, :reply, :hidden, :reward_code, :plus, :destroy] before_action :find_container, only: [:index, :hidden] before_action :find_discuss, except: [:create, :index, :new_message, :reward_code, :forum_discusses, :plus] diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 603a59920..59b807860 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -1347,6 +1347,7 @@ class HomeworkCommonsController < ApplicationController def group_list @page = params[:page] || 1 @limit = params[:limit] || 10 + @course_member_count = @course.course_groups.count @course_groups = @course.course_groups.page(@page).per(@limit) @ungroup_user_ids = @course.course_members.ungroup_students.pluck(:user_id) end diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index 3145636df..fb999b879 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -2,7 +2,8 @@ class ShixunsController < ApplicationController include ShixunsHelper include ApplicationHelper - before_action :require_login, :check_auth, except: [:download_file, :index, :menus] + before_action :require_login, :check_auth, except: [:download_file, :index, :menus, :show, :show_right, :ranking_list, + :discusses, :collaborators, :fork_list, :propaedeutics] before_action :check_account, only: [:new, :create, :shixun_exec] diff --git a/app/controllers/stages_controller.rb b/app/controllers/stages_controller.rb index 3967554aa..b0b072f83 100644 --- a/app/controllers/stages_controller.rb +++ b/app/controllers/stages_controller.rb @@ -1,5 +1,5 @@ class StagesController < ApplicationController - before_action :require_login, :check_auth + before_action :require_login, :check_auth, except: [:index] before_action :find_subject, only: [:create, :index] before_action :find_stage, only: [:update, :destroy, :edit, :up_position, :down_position] before_action :allowed, except: [:index] @@ -18,7 +18,7 @@ class StagesController < ApplicationController @stage.position = @subject.stages.count + 1 @stage.save! unless params[:shixun_id].blank? - shixuns = Shixun.where(id: params[:shixun_id]) + shixuns = Shixun.where(id: params[:shixun_id]).order("field(id, #{params[:shixun_id].join(",")})") shixuns.each do |shixun| StageShixun.create!(stage_id: @stage.id, subject_id: @subject.id, shixun_id: shixun.id, position: @stage.stage_shixuns.count + 1) end diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index 396c0900e..825040528 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -1,7 +1,7 @@ class SubjectsController < ApplicationController - before_action :require_login, :check_auth, except: [:index] + before_action :require_login, :check_auth, except: [:index, :show] # before_action :check_auth, except: [:index] - before_action :check_account, only: [:new, :create] + before_action :check_account, except: [:index, :show] before_action :find_subject, except: [:index, :create, :new, :append_to_stage] before_action :allowed, only: [:update, :edit, :destroy, :publish, :cancel_publish, :cancel_has_publish, :search_members, :add_subject_members, :statistics, :shixun_report, :school_report, diff --git a/app/models/searchable/dependents/user.rb b/app/models/searchable/dependents/user.rb index bb55d0530..e77bc9a40 100644 --- a/app/models/searchable/dependents/user.rb +++ b/app/models/searchable/dependents/user.rb @@ -17,6 +17,7 @@ module Searchable::Dependents::User # reindex subject created_subjects.each(&:reindex) + subjects.each(&:reindex) end end end \ No newline at end of file diff --git a/app/models/searchable/subject.rb b/app/models/searchable/subject.rb index abefcd6dc..a0036c200 100644 --- a/app/models/searchable/subject.rb +++ b/app/models/searchable/subject.rb @@ -27,6 +27,7 @@ module Searchable::Subject { author_name: user.real_name, author_school_name: user.school_name, + member_user_names: users.map(&:real_name).join(' ') } end diff --git a/app/models/shixun.rb b/app/models/shixun.rb index 61d15de55..1839edf93 100644 --- a/app/models/shixun.rb +++ b/app/models/shixun.rb @@ -246,6 +246,10 @@ class Shixun < ApplicationRecord Game.joins(:myshixun).where(user_id: user.id, status: 2, myshixuns: { shixun_id: id }).count end + def has_web_route? + self.mirror_name.include?('JavaWeb') || self.mirror_name.include?('PHP') && self.mirror_name.include?('Mysql') || self.mirror_name.include?('Web') + end + private def send_tiding diff --git a/app/services/concerns/elasticsearch_able.rb b/app/services/concerns/elasticsearch_able.rb index e93f9c537..eb7d4de04 100644 --- a/app/services/concerns/elasticsearch_able.rb +++ b/app/services/concerns/elasticsearch_able.rb @@ -29,6 +29,7 @@ module ElasticsearchAble subject_stages: { type: 'plain' }, content: { type: 'plain' }, descendants_contents: { type: 'plain' }, + member_user_names: { type: 'plain' } } } end diff --git a/app/templates/shared/main.css b/app/templates/shared/main.css index 48fd91b15..67d43dc6c 100644 --- a/app/templates/shared/main.css +++ b/app/templates/shared/main.css @@ -1,781 +1,781 @@ -/*整体公用样式--------------主题颜色为蓝色#459be5,字体颜色为#05101a*/ -@charset "utf-8"; -body{font-size:14px; line-height:2.0;background:#fafafa!important;font-family: "微软雅黑","宋体"; color:#05101a;height: 100%;position: relative; -} -html,body{height:100%;} -body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td,span{ margin:0; padding:0;} -table,input,textarea,select,button {outline: none;border-radius: 3px; font-family: "微软雅黑","宋体"; font-size:14px;line-height:1.9;border:1px solid #eaeaea;background: #FFFFff; color:#05101A;} -textarea{resize: none;} -/*设置input框的placehoder的字体颜色*/ -input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color: #cccccc} -input::-moz-placeholder,textarea::-moz-placeholder { color:#cccccc;} -input::-moz-placeholder,textarea::-moz-placeholder { color:#cccccc;} -input::-ms-input-placeholder,textarea::-ms-input-placeholder {color:#cccccc;} - -div,img,tr,td,table{ border:0;} -a:link,a:visited{text-decoration:none; color:#05101a;} -a:hover {color:#459be5;} -ol, ul, li {list-style-type: none;} -select:disabled,input:disabled{background-color: #EEEEEE;} -/*万能清除浮动*/ -.clearfix:after{clear:both;content:".";display:block;font-size:0;height:0;line-height:0;visibility:hidden;} -.clearfix{clear:both;zoom:1} -.cl{ clear: both; overflow: hidden;} -/*通用浮动*/ -.fl{ float: left!important;} -.fr{ float: right!important;} -/*pre标签换行*/ -.break-word{word-break: break-all;word-wrap: break-word;} -.break-word-firefox{white-space: pre-wrap !important;word-break: break-all;} -/*文字左右两端对齐*/ -.justify{text-align: justify} -.indent{text-indent: 2em;} - -.edu-name-dark{ max-width:100px; display: block; } -.edu-info-dark{ max-width:345px; display: block; } -.edu-max-h200{ height:200px; overflow: auto;} -.edu-h260{ height:260px;} -.edu-h270{ height:270px;} -.edu-h310{ height:310px;} -.edu-position{ position: relative;} -.edu-h200-auto{ max-height:200px; overflow:auto;} -.edu-h300-auto{ max-height:300px; overflow:auto;} -.edu-h350-auto{ max-height:350px; overflow:auto;} -.edu-h280-auto{ height:280px; overflow:auto;} -.edu-txt-w240{ width:240px; display: block;} -.edu-txt-w280{ width:280px; display: block;} -.edu-txt-w320{ width:320px; display: block;} -.edu-txt-w200{ width:200px; display: block;} -a.edu-txt-w280,.edu-txt-w280{ width:280px; display: inline-block;text-align: center} -a.edu-txt-w190,.edu-txt-w190{ width:190px; display: inline-block;text-align: center} -a.edu-txt-w160,.edu-txt-w160{ width:160px; display: inline-block;text-align: center} -a.edu-txt-w140,.edu-txt-w140{ width:141px; display: inline-block;text-align: center} -a.edu-txt-w130,.edu-txt-w130{ width:130px; display: inline-block;text-align: center} -a.edu-txt-w120,.edu-txt-w120{ width:120px; display: inline-block;text-align: center} -a.edu-txt-w100,.edu-txt-w100{ width:100px; display: inline-block;text-align: center} -a.edu-txt-w90,.edu-txt-w90{ width:90px; display: inline-block;text-align: center} -a.edu-txt-w80,.edu-txt-w80{ width:80px; display: inline-block;text-align: center} - -/*超过隐藏*/ -.overellipsis{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;} -.task-hide{overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} -.task-hide-2{overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;} -/*隐藏*/ -.none{display: none} -.block{ display:block;} - -.boxsizing{box-sizing: border-box} - - -/*字体icon均为18px*/ -.iconfont{font-size: 18px!important;} -/*通用文字大小样式*/ -.font-n{font-weight: normal!important;} -.font-bd{font-weight: bold;} -.font-n{font-weight: normal;} -.font-12{ font-size: 12px!important;} -.font-13{ font-size: 13px!important;} -.font-14{ font-size: 14px!important;} -.font-15{ font-size: 15px!important;} -.font-16{ font-size: 16px!important;} -.font-17{ font-size: 17px!important;} -.font-18{ font-size: 18px!important;} -.font-20{ font-size: 20px!important;} -.font-22{ font-size: 22px!important;} -.font-24{ font-size: 24px!important;} -.font-26{ font-size: 26px!important;} -.font-28{ font-size: 28px!important;} -.font-30{ font-size: 30px!important;} -.font-32{ font-size: 32px!important;} -.font-36{ font-size: 36px!important;} -.font-50{ font-size: 50px!important;} -.font-60{ font-size: 60px!important;} -.font-70{ font-size: 70px!important;} - -/*a标签的下划线*/ -a.decoration{text-decoration: underline} - -/*表单*/ -.panel-form-label{ display:inline-block; width:10%; min-width:90px; text-align:right; line-height:40px; font-weight: normal; } - -/*通用内外边距*/ -.mt-10{ margin-top:-10px;}.mt-3{ margin-top:-3px;}.mt0{ margin-top:0px!important;} .mt1{ margin-top:1px;}.mt2{ margin-top:2px;}.mt3{ margin-top:3px;}.mt4{ margin-top:4px;}.mt5{ margin-top:5px!important;}.mt6{ margin-top:6px;}.mt7{ margin-top:7px!important;}.mt8{ margin-top:8px;}.mt9{ margin-top:9px;}.mt10{ margin-top:10px!important;}.mt12{ margin-top:12px;}.mt13{ margin-top:13px;}.mt14{ margin-top:14px;}.mt15{ margin-top:15px!important;}.mt16{ margin-top:16px;}.mt17{ margin-top:17px;}.mt18{ margin-top:18px;}.mt20{ margin-top:20px!important;}.mt22{ margin-top:22px!important;}.mt23{ margin-top:23px!important;}.mt24{ margin-top:24px!important;}.mt25{ margin-top:25px;}.mt28{ margin-top:28px;}.mt30{ margin-top:30px!important;}.mt34{ margin-top:34px!important;}.mt35{ margin-top:35px!important;}.mt36{ margin-top:36px!important;}.mt40{ margin-top:40px;}.mt45{ margin-top:45px;}.mt46{ margin-top:46px;}.mt50{ margin-top:50px;!important;}.mt56{ margin-top:56px;!important;}.mt60{ margin-top:60px;}.mt70{ margin-top:70px;}.mt80{ margin-top:80px;}.mt95{ margin-top:95px;}.mt100{ margin-top:100px;}.mt110{ margin-top:110px;}.mt120{ margin-top:120px;}.mt130{ margin-top:130px;}.mt140{ margin-top:140px;}.mt150{ margin-top:150px;}.mt160{ margin-top:160px;} -.mb0{margin-bottom: 0px!important;}.mb3{ margin-bottom: 3px;}.mb5{ margin-bottom: 5px;}.mb7{ margin-bottom: 7px;}.mb10{ margin-bottom: 10px;}.mb11{ margin-bottom: 11px;}.mb14{ margin-bottom: 14px;}.mb15{ margin-bottom: 15px;}.mb16{ margin-bottom: 16px;}.mb20{ margin-bottom: 20px!important;}.mb25{ margin-bottom: 25px;}.mb26{ margin-bottom: 26px;}.mb28{ margin-bottom: 28px;}.mb30{ margin-bottom: 30px!important;}.mb40{ margin-bottom: 40px!important;}.mb50{ margin-bottom: 50px!important;}.mb60{ margin-bottom: 60px!important;}.mb70{ margin-bottom: 70px!important;}.mb80{ margin-bottom: 80px!important;}.mb90{ margin-bottom: 90px!important;}.mb100{ margin-bottom: 100px!important;}.mb110{ margin-bottom: 110px;} -.ml-3{ margin-left: -3px;}.ml1{margin-left: 1px;}.ml2{margin-left: 2px;}.ml3{margin-left: 3px;}.ml4{margin-left: 4px;}.ml5{ margin-left: 5px;}.ml6{ margin-left: 6px;}.ml10{ margin-left: 10px;}.ml12{ margin-left:12px!important;}.ml13{ margin-left:13px!important;}.ml15{ margin-left: 15px;}.ml18{ margin-left: 18px;}.ml20{ margin-left: 20px;}.ml22{ margin-left: 22px;}.ml25{ margin-left: 25px;}.ml30{ margin-left: 30px;}.ml33{ margin-left: 33px;}.ml35{ margin-left:35px;}.ml40{margin-left:40px;}.ml42{margin-left:42px;}.ml45{ margin-left: 45px;}.ml50{ margin-left: 50px;}.ml55{ margin-left: 55px;}.ml60{ margin-left: 60px;}.ml72{ margin-left: 72px;}.ml73{ margin-left: 73px;}.ml75{ margin-left: 75px;}.ml80{ margin-left: 80px;}.ml85{margin-left:85px;}.ml95{ margin-left: 95px;}.ml115{margin-left: 115px}.ml123{ margin-left: 123px;}.ml150{ margin-left: 150px;}.ml180{ margin-left: 180px;}.ml230{ margin-left: 230px;}.ml240{margin-left: 240px;}.ml250{ margin-left: 250px;}.ml290{ margin-left: 290px;} -.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;} -.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;} -.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;}.pl15{ padding-left:15px;}.pl20{ padding-left:20px;}.pl22{ padding-left:22px;}.pl25{ padding-left:25px;}.pl28{ padding-left:28px;}.pl30{ padding-left:30px !important;}.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;} -.pr2{ paddding-right:2px;}.pr5{ padding-right:5px;}.pr7{ padding-right:7px;}.pr10{ padding-right:10px;}.pr15{ padding-right:15px;}.pr20{ padding-right:20px!important;}.pr25{ padding-right:25px!important;}.pr30{ padding-right:30px!important;}.pr40{ padding-right:40px;}.pr42{ padding-right:42px;}.pr45{ padding-right:45px;}.pr60{padding-right:60px;}.pr75{padding-right:75px;} - - -.padding5-10{padding:5px 10px;box-sizing: border-box} -.padding5-20{padding:5px 20px;box-sizing: border-box} -.padding10{padding: 10px;box-sizing: border-box} -.padding15{padding: 15px;box-sizing: border-box} -.padding20{padding: 20px;box-sizing: border-box} -.padding10-20{padding: 10px 20px;box-sizing: border-box} -.padding10-15{padding: 10px 15px;box-sizing: border-box} -.padding10-25{padding: 10px 25px;box-sizing: border-box} -.padding10-30{padding: 10px 30px;box-sizing: border-box} - -.padding15-20{padding: 15px 20px;box-sizing: border-box} -.padding15-25{padding: 15px 25px;box-sizing: border-box} - -.padding20-40{padding: 20px 40px;box-sizing: border-box} -.padding20-30{padding: 20px 30px;box-sizing: border-box} -.padding20-15{padding: 20px 15px;box-sizing: border-box} -.padding20-10{padding: 20px 10px;box-sizing: border-box} - -.padding30{padding: 30px;box-sizing: border-box} -.padding30-20{padding: 30px 20px;box-sizing: border-box} -.padding30-40{padding: 30px 40px;box-sizing: border-box} - -.padding40{padding: 40px;box-sizing: border-box} -.padding40-30{padding: 40px 30px;box-sizing: border-box} -.padding40-20{padding: 40px 20px;box-sizing: border-box} - -.margin10{margin:10px;} -.margin15{margin:15px;} -.margin20{margin:20px;} - -/*行高*/ -.lineh-12{line-height: 12px} -.lineh-15{line-height: 15px} -.lineh-17{line-height: 17px} -.lineh-20{line-height: 20px} -.lineh-25{line-height: 25px} -.lineh-30{line-height: 30px} -.lineh-35{line-height: 35px} -.lineh-40{line-height: 40px} - -/*pre标签换行*/ -.break_word{word-break: break-all;word-wrap: break-word;} -.break_word_firefox{white-space: pre-wrap !important;word-break: break-all;} -/*定位*/ -.pr{position: relative} -.df {display:flex;display: -webkit-flex;display: -ms-flex;} -.flex1{flex: 1;} -/*去掉IE input框输入时自带的清除按钮*/ -input::-ms-clear{display:none;} -/*自定义滚动条宽度*/ -::-webkit-scrollbar {width:7px;height:10px;background-color: #F5F5F5; } -::-webkit-scrollbar-track {-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);background-color: #F5F5F5;} -::-webkit-scrollbar-thumb {-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);background-color: #dadada;} - - -.newContainer{ min-height:100%; height: auto !important; height: 100%; /*IE6不识别min-height*/position: relative;} -.educontent{width: 1200px;margin:0px auto;box-sizing: border-box}/*中间部分宽度固定为1200*/ -.newMain{ margin: 0 auto; padding-bottom: 235px; min-width:1200px;padding-top: 60px}/*padding-bottom根据底部的高度而定*/ - -/*高度*/ -.height-100{height: 100%;} -/*文本位置*/ -.edu-txt-center{ text-align: center!important;} -.edu-txt-left{ text-align: left!important;} -.edu-txt-right{ text-align: right!important;} - -/*背景颜色*/ -.edu-back-white{background-color:#FFFFff; } -.edu-back-greyf5{background-color: #f5f5f5!important;} -.edu-back-skyblue{background: #F4FAFF;} -.edu-back-blue{background-color:#459be6!important; } -.edu-back-blue-txt{background-color:#F7FBFF!important; } -.edu-bg-light-blue{ background:#f7f9fd; padding:5px;}/*发送实训弹框*/ -/*常用字体*/ -/*红色*/ -.color-red{color: #FF0000!important;} -/*白色*/ -.color-white{color: #ffffff!important;} -/*黑色*/ -.color-dark{color: #05101a!important;} -/*灰色*/ -.color-grey-name{color: #1A0B00!important;} -.color-grey-fa{color: #FAFAFA!important;} -.color-grey-3{color: #333!important;} -.color-grey-eb{color: #EBEBEB!important;} -.color-grey-c{color: #ccc!important;} -.color-grey-cd{color: #cdcdcd!important;} -.color-grey-9{color: #999999!important;} -.color-grey-98{color: #989898!important;} -.color-grey-8{color: #888!important;} -.color-grey-6{color: #666!important;} -.color-grey-4d{color: #4d4d4d!important;} -.color-grey-B2{color: #B2B2B2!important;} -.color-grey-B3{color: #B3B3B3!important;} -.color-grey-B4{color: #B4B4B4!important;} -.color-grey-74{color: #747A7F!important;} - - -a.color-grey-name:hover,a.color-dark:hover,a.color-grey-6:hover,a.color-grey-3:hover{color: #4cacff!important;} -a.color-grey-9:hover,a.color-grey-8:hover,a.color-grey-c:hover{color: #111C24!important;} -/*蓝色*/ -.color-blue{color: #4CACFF!important;}/*主*/ -.color-blue_4C{color: #4CACFF!important;} -a.color-blue:hover,a.color-blue_4C:hover{color: #459BE6!important;} -/*橙色*/ -.color-orange{color: #ff6800!important;}/*辅助文字*/ -.color-orange-tip{color: #FF954C!important;}/*提示文字*/ -a.color-orange:hover,a.color-orange-tip:hover{color: #F06200!important;} -/*黄色*/ -.color-yellow{color: #EFC003!important;} -.color-yellow-ff{color: #FFA800!important} -/*绿色*/ -.color-green{color: #29BD8B!important;} -a.color-green:hover{color: #28AC7F!important;} -/*红色*/ -.color-red-dd{color: #DD1717!important;} -a.color-red-dd:hover{color: #C61616!important;} -/*圆角*/ -.radius{border-radius: 50%;} -.radius4{border-radius: 4px;} -.radius2{border-radius: 2px;} - - -/*绿色圆形--例如:实训路径详情的编辑icon的背景*/ -.ring-green{width: 18px;height: 18px;display: block;border-radius: 50%;background-color: #29BD8B;text-align: center;} -.ring-op-green{width: 18px;height: 18px;display: block;border-radius: 50%;background-color: rgba(41,189,139,0.6);text-align: center;} -.ring-grey{width: 18px;height: 18px;line-height: 18px;display: block;border-radius: 50%;background-color:rgba(204,204,204,0.5);text-align: center;} -.ring-blue{width: 18px;height: 18px;display: block;border-radius: 50%;background-color: #4CACFF;text-align: center;} - -.ring-orange{background-color: #FF6800;display: block;padding: 0px 3px;height: 18px;box-sizing: border-box;min-width: 18px;text-align: center;line-height: 18px;border-radius: 50%;color:#fff;font-size: 12px;} - -/*左侧label内容右对齐*/ -.label-right{min-width:75px;text-align: right;height: 35px;line-height: 35px;float: left; } - - -/*输入框样式---------宽度为百分比*/ -.input-flex-30{flex: 1;height: 30px;padding: 5px;box-sizing: border-box;} -.input-flex-35{flex: 1;height: 35px;padding: 5px;box-sizing: border-box;} -.input-flex-40{flex: 1;height: 40px;padding: 5px;box-sizing: border-box;} -.input-100-35{width: 100%;height: 35px;padding: 5px;box-sizing: border-box;} -.input-100-40{width: 100%;height: 40px;padding: 5px;box-sizing: border-box;} -.input-100-45{width: 100%;height: 45px;padding: 5px;box-sizing: border-box;} -.input-90-35{width: 90%;height: 35px;padding: 5px;box-sizing: border-box;} -.input-60-40{width: 60%;height: 40px;padding: 5px;box-sizing: border-box;} -.input-60-35{width: 60%;height: 35px;padding: 5px;box-sizing: border-box;} -.input-50-35{width: 50%;height: 35px;padding: 5px;box-sizing: border-box;} -.input-50-40{width: 50%;height: 40px;padding: 5px;box-sizing: border-box;} -.input-50-45{width: 50%;height: 45px;padding: 5px;box-sizing: border-box;} -.input-48-45{width: 48%;height: 45px;padding: 5px;box-sizing: border-box;} -/*输入框为灰色背景,获取焦点时背景变白色*/ -.greyInput{background-color: #F5F5F5;outline: none} -.greyInput:focus{background-color: #fff; border: 1px solid #ddd;} - -/*输入框样式---------宽度为固定长度*/ -.winput-240-45{width: 240px;height: 45px;padding: 5px;box-sizing: border-box;} -.winput-240-40{width: 240px;height: 40px;padding: 5px;box-sizing: border-box;} -.winput-240-35{width: 240px;height: 35px;padding: 5px;box-sizing: border-box;} -.winput-240-30{width: 240px;height: 30px;padding: 5px;box-sizing: border-box;} -.winput-190-45{width: 190px;height: 45px;padding: 5px;box-sizing: border-box;} -.winput-200-35{width: 200px;height: 35px;padding: 5px;box-sizing: border-box;} -.winput-120-40{width: 120px;height: 40px;padding: 5px;box-sizing: border-box;} -.winput-120-35{width: 120px;height: 35px;padding: 5px;box-sizing: border-box;} -.winput-120-30{width: 120px;height: 30px;padding: 5px;box-sizing: border-box;} -.winput-115-40{width: 115px;height: 40px;padding: 5px;box-sizing: border-box;} -.winput-90-40{width: 90px;height: 40px;padding: 5px;box-sizing: border-box;} -.winput-90-35{width: 90px;height: 35px;padding: 5px;box-sizing: border-box;} -.winput-240-100{width: 240px;height: 100px;padding: 5px;box-sizing: border-box;} -/*输入框样式---------高度固定*/ -.winput-90-100{width: 90%;height: 100px;padding: 5px;box-sizing: border-box;} -.winput-100-130{width: 100%;height: 130px;padding: 5px;box-sizing: border-box;} -.winput-100-150{width: 100%;height: 150px;padding: 5px;box-sizing: border-box;} -.winput-100-200{width: 100%;height: 200px;padding: 5px;box-sizing: border-box;} -.winput-90-100{width: 90%;height: 100px;padding: 5px;box-sizing: border-box;} -/*百分比宽度*/ -.width100{width: 100%;} -.width90{width: 90%;} -.width89{width: 89%;} -.width80{width: 80%;} -.width70{width: 70%;} -.width60{width: 60%;} -.width50{width: 50%;} -.width40{width: 40%;} -.width30{width: 30%;} -.width20{width: 20%;} -.width15{width: 15%;} -.width10{width: 10%;} - -/*固定大小的宽度*/ -.wid100{width: 100px;display: block} -.wid120{width: 120px;display: block} -.wid90{min-width: 90px!important;display: block} -a.edu-txt-w280,.edu-txt-w280{ width:280px; display: inline-block;text-align: center} -a.edu-txt-w200,.edu-txt-w200{ width:200px; display: inline-block;text-align: center} -a.edu-txt-w190,.edu-txt-w190{ width:190px; display: inline-block;text-align: center} -a.edu-txt-w160,.edu-txt-w160{ width:160px; display: inline-block;text-align: center} -a.edu-txt-w140,.edu-txt-w140{ width:141px; display: inline-block;text-align: center} -a.edu-txt-w130,.edu-txt-w130{ width:130px; display: inline-block;text-align: center} -a.edu-txt-w120,.edu-txt-w120{ width:120px; display: inline-block;text-align: center} -a.edu-txt-w100,.edu-txt-w100{ width:100px; display: inline-block;text-align: center} -a.edu-txt-w90,.edu-txt-w90{ width:90px; display: inline-block;text-align: center} -a.edu-txt-w80,.edu-txt-w80{ width:80px; display: inline-block;text-align: center} -a.edu-txt-w40,.edu-txt-w40{ width:40px; display: inline-block;text-align: center} - -/*最小高度*/ -.minH-40{min-height: 490px;} -.minH-280{min-height: 280px;} -.minH-400{min-height: 400px;} -.minH-440{min-height: 440px;} -.minH-500{min-height: 500px;} -.minH-560{min-height: 560px;} -/*超出高度出现滚动条--纵向*/ -.over260{max-height: 260px;overflow-y: auto} -.over210{height: 210px;overflow-y: auto} -.over280{height: 280px;overflow-y: auto} -.over170{min-height: 170px;max-height: 170px;overflow-y: auto} - -/*---------------tab公用边框-----------------*/ -.border-bottom-orange{border-bottom: 2px solid #FC7033!important;} -.bor-bottom-orange{border-bottom: 1px solid #FF9e6a!important;} -.bor-bottom-greyE{border-bottom: 1px solid #EEEEEE!important;} -.bor-left-greyE{border-left: 1px solid #EEEEEE!important;} -.bor-top-greyE{border-top: 1px solid #EEEEEE!important;} -.bor-right-greyE{border-right: 1px solid #EEEEEE!important;} -.bor-left-greyC{border-left: 1px solid #CCC!important;} -.bor-top-greyC{border-top: 1px solid #CCC!important;} -/*---------------边框-----------------*/ -.bor-gray-c{border:1px solid #ccc;} -.bor-grey-e{border:1px solid #eee;} -.bor-grey-d{border:1px solid #ddd;} -.bor-grey01{border:1px solid #E6EAEB;} -.bor-orange{border:1px solid #FF7500;} -.bor-blue{border:1px solid #5faee3;} -.bor-red{border:1px solid #db0505;} -.bor-none{border:none;} -.bor-outnone{outline:none; border:0px;} - -a.decoration{text-decoration: underline!important;} - -/*下拉菜单*/ -.edu-menu-panel{position: relative;cursor: pointer} -.edu-menu-list{position: absolute;padding: 5px 0px;box-shadow: 0 2px 8px 0 rgba(0,0,0,.2);display: none;width: 120px;background: #FFFFff;right: -5px;border-radius:0px 0px 4px 4px;color: #05101a; font-size: 14px;z-index: 9} -.edu-menu-list li{width: 100%;padding:0px 15px;box-sizing: border-box;height: 35px;line-height: 35px;cursor: pointer;} - -.edu-menuSmall-list{position: absolute;padding: 5px 0px;box-shadow: 0 2px 8px 0 rgba(0,0,0,.2);display: none;width: 100px;background: #FFFFff;right: -5px;border-radius:0px 0px 4px 4px;color: #05101a; font-size: 14px;z-index: 9} -.edu-menuSmall-list li{width: 100%;padding:0px 10px;box-sizing: border-box;height: 30px;line-height: 30px;cursor: pointer;font-size: 12px;} - -.edu-menu-list li a,.edu-menuSmall-list li a{width: 100%;height: 100%;display: block;color: #323232;} -.edu-menu-panel:hover i,.edu-menu-panel:hover{color: #4cacff;} -.edu-menu-panel:hover .edu-menu-list,.edu-menu-panel:hover .edu-menuSmall-list{display: block} -.edu-menu-list li:hover,.edu-menuSmall-list li:hover{background: #4CACFF;} -.edu-menu-list li:hover a,.edu-menuSmall-list li:hover a{color: #fff!important;} -.currentName{display: block;width: 100%;padding:0px 15px;height: 40px;line-height: 40px;font-size: 16px;box-sizing: border-box;cursor: default} -.ul-leftline:after{position: absolute;top:0px;content: "";width: 1px;background-color: #eee;height: 100%;right: 0px;} -.overPart{width: 240px;height: 30px;position: absolute;right: 0;top: -27px;background: transparent;} -/*滑块验证*/ -.drag_slider{ position: relative; background-color: #e8e8e8; width:100%; height: 45px;color: #999999; line-height: 45px; text-align: center;border-radius: 4px;} -.drag_slider .handler{ border-radius: 4px 0px 0px 4px;position: absolute; top: 0px; left: 0px; width: 50px; height: 43px; border: 1px solid #eee; cursor: move;} -.handler_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;} -.handler_ok_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;} -.drag_slider .drag_bg{ background-color: #29bd8b; height: 45px; width: 0px;} -.drag_slider .drag_text{border-radius: 4px 0px 0px 4px;position: absolute; top: 0px; width: 100%; -moz-user-select: none; -webkit-user-select: none; user-select: none; -o-user-select:none; -ms-user-select:none;} - -/*tip公共样式的设置:*/ -.-task-title{opacity:0;position:absolute;left:0;top:0;display:none;z-index:100000;} /*1*/ -.data-tip-down,.data-tip-left,.data-tip-right,.data-tip-top{ position:relative; box-shadow:0px 0px 8px #000; background:#000; color:#fff; max-width:300px;/*2*/ - word-wrap: break-word; text-align:center; border-radius:4px; padding:0 10px; border:1px solid #000; display:none; }/*3*/ -.data-tip-down:after,.data-tip-down:before,.data-tip-left:before,.data-tip-right:before,.data-tip-left:after,.data-tip-right:after,.data-tip-top:after,.data-tip-top:before{/*4*/ - position: absolute;content:''; width:0; height:0;}/*5*/ -.data-tip-down:after,.data-tip-down:before{left: 45%;top:-10px;/*6*/ - border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 10px solid #000; }/*7*/ -.data-tip-down:before{top:-11px;border-bottom:10px solid #000;}/*8*/ -.data-tip-left:after,.data-tip-left:before{left: -10px;top:50%; margin-top:-5px;/*9*/ - border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-right: 10px solid #000; }/*10*/ -.data-tip-left:before{ left: -12px;border-right: 10px solid #000; }/*11*/ -.data-tip-right:after,.data-tip-right:before{right: -10px; top:50%; margin-top:-5px;/*12*/ - border-top: 5px solid transparent;border-bottom: 5px solid transparent; border-left: 10px solid #000; }/*13*/ -.data-tip-right:before{ right: -10px;border-left: 10px solid #000; }/*14*/ -.data-tip-top:after,.data-tip-top:before{left: 45%;bottom:-10px;border-left: 5px solid transparent; - border-right: 5px solid transparent;border-top: 10px solid #000;} -.data-tip-top:before{bottom:-11px;} - - -/*左右两栏排列、固定左右宽度----------ul*/ -ul.abouttable{margin: 0px auto;width: 440px;} -ul.abouttable li{width: 100%;} -ul.abouttable li .rz-label{min-width: 150px;height: 45px;line-height: 45px;text-align: right;color: #adadad;} -ul.abouttable li .second-label{min-width: 150px;height: 40px;line-height: 40px;text-align: right;color: #adadad;} -ul.abouttable li .minh-label{min-width: 150px;height: 28px;line-height: 28px;text-align: right;color: #adadad;} - - - -/* table--------------------------------*/ - -/* table-1底部边框 */ -.edu-pop-table{ width: 100%; border:1px solid #eee; border-bottom:none; background:#fff; color:#888;cursor: default} -.edu-pop-table tr{ height:40px; } -.edu-pop-table tr.edu-bg-grey{ background:#f5f5f5;} -.edu-txt-center{ text-align: center;}.edu-txt-left{ text-align: left;}.edu-txt-right{ text-align: right;} -.edu-pop-table tr th{ color:#333;border-bottom:1px solid #eee; } -.edu-pop-table tr td{border-bottom:1px solid #eee;} -.edu-pop-table.table-line tr td,.edu-pop-table.table-line tr th{ border-right:1px solid #eee;} -.edu-pop-table.table-line tr td:last-child,.edu-pop-table.table-line tr th:last-child{border-right:none;} -/*th行有背景颜色且table无边框*/ -.edu-pop-table.head-color thead tr{background: #fafbfb} -.edu-pop-table.head-color{border: none} -.edu-pop-table.head-color tr:last-child td {border: none} -/*--表格行间隔背景颜色-*/ -.edu-pop-table.interval-td{border-bottom: 1px solid #eee;} -.edu-pop-table.interval-td thead tr{background: #fafbfb} -.edu-pop-table.interval-td tbody tr:nth-child(even){background: #fafbfb} -.edu-pop-table.interval-td tbody tr td{border: none} -/*--表格行间隔背景颜色(th也没有边框)-*/ -.edu-pop-table.interval-all{border:none;border-bottom: 1px solid #eee;} -.edu-pop-table.interval-all thead th{border: none} -.edu-pop-table.interval-all thead tr{background: #fafbfb} -.edu-pop-table.interval-all tbody tr:nth-child(even){background: #fafbfb} -.edu-pop-table.interval-all tbody tr td{border: none;padding:5px 0px} -/*--表格行移入背景颜色-*/ -.edu-pop-table.hover-td tbody tr:hover{background: #EFF9FD}/*悬浮颜色为天蓝色*/ -.edu-pop-table.hover-td_1 tbody tr:hover{background:#FCF2EC}/*悬浮颜色为浅橙色*/ -/* table-2全边框 */ -.edu-pop-table-all{ width: 100%; border:1px solid #eee; background:#fff; color:#888;border-collapse: collapse} -.edu-pop-table-all tr{ height:30px; } -.edu-pop-table-all tr.edu-bg-grey{ background:#f5f5f5;} -.edu-pop-table-all tr th{ color:#333;border:1px solid #eee; } -.edu-pop-table-all tr td{border:1px solid #eee;padding: 5px} -/*table无边框、无背景颜色*/ -.allNone{background: none!important;cursor: default;border-bottom:none!important;} -.allNone tr{height: 30px!important;} - -/*数据为空公共页面*/ -img.edu-nodata-img{ width:300px; margin:50px auto 20px; display: block;} -.edu-nodata-p{ font-size: 20px; text-align: center; color:#999;border-bottom:none!important;padding-left: 18px;box-sizing: border-box;} - -/*输入为空或者错误的提示*/ -.input-none{box-shadow: 0px 0px 2px rgba(0,0,0,0.1);} -.notice{height: 25px;margin-left: 150px;} -.input-none + .notice span{display: block} - -/*列表里菜单icon移入*/ -.edu-position-hide{ position: absolute; top:15px; left:-20px; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); background:#fff;z-index:1001; padding:5px 0;z-index: 999999;} -.edu-position-hide li a{ display:inline-block; height: 30px; width: 100px; line-height: 30px; text-align: center; font-size:12px!important; } -.edu-position-hide li a:hover{ background:#F1F1F1; color:#05101A;} -.edu-position-hidebox i{ color:#bcbcbc;} -.edu-position-hidebox i:hover{ color:#4CACFF;} -.edu-position-hidebox a{ color:#05101A;} -.edu-position-hidebox:hover .edu-position-hide{ display: block;} - -/*搜索(灰色背景、点击变白色)*/ -.seekPanel > input{width: 100%;height: 30px;line-height: 30px;background-color: #f4f4f4;border:1px solid #eaeaea;padding: 0px 30px 0px 5px ;box-sizing: border-box;outline: none;} -.seekPanel > input:focus{background-color: #fff;} -.seekPanel > i{position: absolute;right: 7px;top: -1px;} -/*-------------------------------------------公用按钮:以white-btn(或者edu-default-btn无padding)为基础,宽度和高度可以用padding填充,颜色用edu-color-btn,begin-----------------------------------------*/ -/*按钮*/ -/*默认按钮*/ -/*长条形按钮*/ -.default_btn{display: block;border-radius: 5px ;background: #f4f4f4;color: #cfcfcf!important;text-align: center;width: 102px;box-sizing: border-box} -/*正常按钮*/ -.white-btn{text-align:center;cursor: pointer;display: inline-block;padding: 0px 8px;border: 1px solid #ccc;color: #666;letter-spacing: 1px;font-size: 14px;height: 26px;line-height: 26px;border-radius: 3px;} -a.white-btn.orange-btn{border: 1px solid #FF7500;color: #FF7500!important;} -a.white-btn.orange-btn:hover{border: 1px solid #F06200;color: #F06200!important;} - -.defalutGreyBorder{display: block;padding: 0px 10px;border:1px solid #ccc;height: 30px;line-height: 30px;border-radius: 4px;} -a.task-btn{cursor: pointer;display: inline-block;border: none;padding: 0 12px;color: #fff;background: #CDCDCD !important;letter-spacing: 1px;text-align: center;font-size: 14px;height: 30px;line-height: 30px;border-radius: 2px; font-weight: 400;} -/*最新按钮:以个人主页为例-------------因高度和宽度都已经固定,后续不再支持使用,*/ -.user_default_btn{cursor: pointer;font-size: 14px;display: block;width: 120px;text-align: center;height: 40px;line-height: 40px!important;border-radius: 4px;box-sizing: border-box} -.user_orange_btn{color: #fff!important;background-color: #FF6800;}/*橙色签到按钮*/ -.user_orange_btn:hover{background-color:#F06200;} -.user_grey_btn{color: #fff!important;background-color: #CCCCCC;cursor: default}/*灰色已经签到按钮*/ -.user_private_btn{color:#646464!important;background-color: #fff;border: 1px solid #989898}/*灰色私信、互相关注按钮*/ -.user_private_btn:hover{color: #B2B2B2!important;border: 1px solid #B2B2B2;} -.btn_auto{border-radius: 5px ;background: #fff;padding: 0px 18px;} - -/*可共用按钮,需添加padding或者边框*/ -.edu-default-btn{display: block;border-radius: 4px;} -a.edu-focus-btn{padding: 0px 10px;height: 30px;line-height: 30px;border: 1px solid #b2b2b2;color: #b2b2b2!important;} -a.edu-focus-btn:hover{border: 1px solid #666;color: #666!important;} - -a.edu-greenback-btn{padding: 0px 10px;background: #29BD8B;color: #fff!important;border: 1px solid #29BD8B;} -a.edu-greenline-btn{padding: 0px 10px;color: #29BD8B!important;border: 1px solid #29BD8B;} -a.edu-greenback-btn:hover{background-color: #28AC7F;} -a.edu-greenline-btn:hover{border:1px solid #28AC7F;color: #28AC7F!important;} - -a.edu-blueback-btn{padding: 0px 10px;background: #4CACFF;color: #fff!important;border: 1px solid #4CACFF;} -a.edu-blueline-btn{padding: 0px 10px;color: #4CACFF!important;border: 1px solid #4CACFF;} -a.edu-blueback-btn:hover{background-color: #459BE6;} -a.edu-blueline-btn:hover{border:1px solid #459BE6;color: #459BE6!important;} - -a.edu-orangeback-btn{background-color: #ff7500;color: #fff!important;border:1px solid #FF7500} -a.edu-orangeback-btn:hover{background-color: #F06200;} -a.edu-orangeline-btn{color: #FF7500!important;border:1px solid #FF7500} -a.edu-orangeline-btn:hover{color: #F06200!important;border:1px solid #F06200} - -a.edu-greyback-btn{padding: 0px 10px;background: #CCCCCC;color: #fff!important;border: 1px solid #CCCCCC;} -a.edu-greyback-btn:hover{background-color: #B2B2B2;} -a.edu-greyshallowline-btn{padding: 0px 10px;color: #999!important;border:1px solid #CFCFCF} -a.edu-greyline-btn{padding: 0px 10px;background: #fff;color: #666!important;border: 1px solid #eaeaea;line-height: 33px;height: 33px;} -a.edu-greyline-btn:hover,a.edu-greyshallowline-btn:hover{border:1px solid #B2B2B2;color:#B2B2B2!important;} - -/*新建页面的提交和取消按钮*/ -.defalutCancelbtn{display: block;border: 1px solid #CDCDCD;background-color: #fafafa;color: #999!important;width: 120px;text-align: center;height: 30px;line-height: 30px;border-radius: 2px; - width: 130px; - height: 40px; - background: rgba(77,124,254,0); - border: 1px solid rgba(76, 172, 255, 1); - border-radius: 4px; - line-height: 40px; - font-size: 16px; - font-family: MicrosoftYaHei; - font-weight: 400; - color: rgba(76,172,255,1) !important; -} -.defalutCancelbtn:hover{border:1px solid #B2B2B2;color: #B2B2B2!important;} -.defalutSubmitbtn{ - display: block;border: 1px solid #4CACFF;background-color: #4CACFF;color: #fff!important;width: 120px;text-align: center;line-height: 40px;border-radius: 2px; - width: 130px; - height: 40px; - background: rgba(76,172,255,1); - border-radius: 4px; - font-size: 16px; - font-family: MicrosoftYaHei; - font-weight: 400; - color: rgba(255,255,255,1); -} -.defalutSubmitbtn:hover{background-color: #459BE6;border: 1px solid #459BE6;} -/*-------------------------------------------公用按钮:以white-btn(或者edu-default-btn无padding)为基础,宽度和高度可以用padding填充,颜色用edu-color-btn,end-----------------------------------------*/ - -/*可点击按钮---蓝色*/ -.use_btn{background: #4cacff;color:#fff!important;} -a.task-btn-orange{background: #4CACFF!important; color:#fff!important;} -a:hover.task-btn-orange{background: #459BE6;} -/*可点击按钮---蓝色---蓝色边框*/ -.user_blue_btn{border: 1px solid #4CACFF;color: #4CACFF!important;} -/*可点击按钮---蓝色---蓝色背景*/ -a.user_bluebg_btn{background-color:#4CACFF;color: #fff;} -a.user_orangebg_btn{background-color:#FF6800;color: #fff;} -a.user_greybg_btn{background-color:#747A7F;color: #fff;} - - -.pointer{cursor: pointer} -.cdefault{cursor: default} - - -/*md编辑器恢复被覆盖样式*/ -.new_li li{ list-style-type: disc!important; } -.new_li ol li{ list-style-type: decimal!important; } -.new_li li{ margin-bottom: 0!important; } - -/*搜索框*/ -#pollingPanel{position: relative;width: 248px;height: 32px;} -#pollingPanel > input{width: 100%;height: 100%;border:1px solid #eaeaea;border-radius: 4px;padding: 0px 30px 0px 5px;box-sizing: border-box;background-color: #F4F4F4;} -#pollingPanel > input:focus{background-color: #fff;outline: none;} -#pollingPanel > a{position: absolute;right: 10px;top:0px;} - -/* 弹框 */ -.popupAll{width: 100%;height: 100%;position: fixed;z-index: 99998;background-color: rgba(5,16,26,0.6);left: 0;top:0;} -.task-popup{ width: 30%;background: #fff; border:1px solid #e8e8e8; border-radius:10px;} -.task-popup-text-center{ text-align: center; color: #333;} -.task-popup-title{ border-bottom: 1px solid #eee; padding:0px 15px;text-align: center;box-sizing: border-box;line-height: 70px;height: 70px; border-radius: 10px 10px 0px 0px;font-size: 16px;font-weight: bold; } -.task-popup-content{ padding:15px;} -.task-popup-submit{ margin:0px auto 15px; width: 160px;} -.task-popup-sure{ margin:0px auto 15px; width: 54px;} -.task-popup-right-sure{margin:0px auto 15px;text-align: center} -.task-popup-OK{ margin:15px auto; text-align: center} -.task-popup-bggrey{ background:#fff; color:#333;} -#closeIcon{position: absolute;color:#fefefe} -/* 模板弹框 20170407byLB */ -#task_popup_box{ background:#fff;padding-bottom:15px;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px;box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);} -.task_popup_top{background:#ccc;height:40px;-webkit-border-radius: 5px 5px 0px 0px;-moz-border-radius: 5px 5px 0px 0px;-o-border-radius: 5px 5px 0px 0px;border-radius: 5px 5px 0px 0px;} -.task_popup_top h3{ font-size:14px; color:#333; line-height:40px; padding-left:10px; } -a.task_icons_close{width:20px; height:20px;display:block;background: url(../images/popup/sy_icons_close.png) 0 0px no-repeat; margin:8px 10px 0 0;} -a:hover.task_icons_close{background: url(../images/popup/sy_icons_close.png) -40px 0px no-repeat;} -.task_popup_con{ padding:20px;} -/* 模板弹框 20161013byLB */ -#muban_popup_box{ background:#fff;padding-bottom:15px;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px;box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);} -.muban_popup_top{background:#3b94d6;height:40px;-webkit-border-radius: 5px 5px 0px 0px;-moz-border-radius: 5px 5px 0px 0px;-o-border-radius: 5px 5px 0px 0px;border-radius: 5px 5px 0px 0px;} -.muban_popup_top h3{ font-size:16px; color:#fff; font-weight:normal; line-height:40px; padding-left:10px; } -a.muban_icons_close{width:20px; height:20px;display:block;background: url(/images/sy/sy_icons_close.png) 0 0px no-repeat; margin:8px 10px 0 0;} -a:hover.muban_icons_close{background: url(/images/sy/sy_icons_close.png) -40px 0px no-repeat;} -#muban_popup_box input,#muban_pwopup_box select{ border:1px solid #c8c8c8; height: 28px; color: #888;} -#muban_popup_box label.pop_box_label{width: 100px; text-align: right; display: inline-block;} -input.radio-width90{ width: 90px; } -#muban_popup_box label.pop_box_label_l {width: 100px; text-align: left; display: inline-block;} - - -/*提示条*/ -.alert{ padding:10px;border: 1px solid transparent; text-align: center;} -.alert-blue{ background-color: #d9edf7;border-color: #bce8f1; color: #3a87ad;} -.alert-orange{ background-color: #fff9e9;border-color: #f6d0b1; color:#ee4a20;} -.task-close{padding: 0;cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; font-size: 21px; font-weight: bold;line-height: 1; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.3;} -.taskclose:hover{opacity: 0.5;} -.alert-red{background-color: #f2dede;border-color: #eed3d7; color: #d14f4d; text-align: left!important;} - -/*搜索的下拉列表*/ -.search_down_list a{display: block;height: 28px;line-height: 28px;padding: 0px 5px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;} -.search_down_list a:hover{background: #fafafa;} - -/*白色色块--类似个人主页-学习-里面的tab*/ -.white-panel{border-radius: 2px;width: 100%;margin: 0px auto;box-sizing: border-box;padding-left: 25px;} -.white-panel li{width: 118px;height: 48px;line-height: 48px;text-align: center;color: #05101A;float: left;cursor: pointer;border:1px solid #fff;} -.white-panel li a{display: block;width: 100%;} -.white-panel li.active{border-radius: 24px;border:1px solid #4CACFF;color:#4CACFF; } -.white-panel li.active a{color:#4CACFF; } - - -/* 个人主页翻页 */ -.pages_user_show a:hover,.pages_user_show li.active a{ background-color:#4CACFF; color:#fff;border: 1px solid #4CACFF;} -.pages_user_show a{border-radius: 2px; display: inline-block;border:1px solid #d1d1d1;background-color:#fff; color:#888; float:left;text-align:center; padding:2px 10px; line-height:1.9; margin: 0 5px;} -.pages_user_show li{float: left; list-style-type: none;} -.pages_user_show ul li{list-style-type: none !important;} -.pages_user_show ul li a{color:#888} -.page_GO{text-align:center;width: 80px;border-radius: 2px;margin-left: 5px;height: 33px;padding: 0px 5px;box-sizing: border-box;float: left;border:1px solid #d1d1d1;} -/* 小翻页 */ -.pages_little_show a:hover,.pages_little_show li.active a{ background-color:#4CACFF;; color:#fff!important;border:1px solid #4CACFF} -.pages_little_show a{ display: inline-block;border:1px solid #d1d1d1; color:#888!important; float:left;text-align:center; padding:3px 3px; line-height:1.9; margin: 0 2px; font-size: 12px;} -.pages_little_show li{float: left;} - -/*左右排版结构:参考个人主页的经验值和金币等页面*/ -.leftPanel{width: 22%;float: left;} -.leftPanel li.nav{padding:10px 0px;box-sizing: border-box;} -.leftPanel li.nav a{padding-left: 40px;display: block;width: 100%;box-sizing: border-box;border-left: 2px solid #fff;height: 24px;line-height: 24px;} -.leftPanel li.nav.active a{border-left: 2px solid #4CACFF;} -.rightPanel{width:78%;float: right;} - -/*个人主页,认证的圆圈*/ -.ringauto{width: 20px;height: 20px;line-height: 20px;text-align: center;border-radius: 50%;background-color: #F4FAFF;margin-right:5px;} - -/*-------------------个人主页:右侧提示区域--------------------------*/ -.-task-sidebar{position:fixed;width:40px;height:180px;right:0;bottom:30px;z-index: 10;} -.-task-sidebar div{height: 40px;line-height: 40px;box-sizing: border-box;width:40px;background:#4CACFF;color:#fff;font-size:20px;text-align:center;margin-bottom:5px;border-radius: 4px;} -.-task-sidebar div i{ color:#fff;} -.-task-sidebar div i:hover{color: #fff!important;} -.gotop{background-color: rgba(208,207,207,0.5)!important;padding: 0px!important;} -.-task-desc{background:#494949;width:90px;line-height: 36px;text-align: center; - position: absolute;color: #fff;font-size: 13px;z-index: 999999;opacity: 0;} -.-task-desc div{position: absolute;top:10px;right: -7px;height: 13px;} -.-task-desc div img{float: left} - - -/***** loading ******/ -/*****载入中******/ -#ajax-indicator { - position: absolute; /* fixed not supported by IE*/ - background-color:#eee; - border: 1px solid #bbb; - top:35%; - left:40%; - width:20%; - /*height:5%;*/ - font-weight:bold; - text-align:center; - padding:0.6em; - z-index:100000; - opacity: 0.5; -} - -html>body #ajax-indicator { position: fixed; } - -#ajax-indicator span{ - color:#fff; - color: #333333; - background-position: 0% 40%; - background-repeat: no-repeat; - background-image: url(/images/loading.gif); - padding-left: 26px; - vertical-align: bottom; - z-index:100000; -} -/*最新、最热*/ -.bestChoose.active{color: #4CACFF;} - - -/*实训路径选择实训*/ -.edu-filter-cir-grey{color: #666!important;width: auto;padding:0px 15px; font-size:14px !important; text-align: center;background: #f3f3f3;border-radius: 10px;display: block; height:25px; line-height:25px;} -.edu-filter-cir-grey:hover{background: #4cacff; color: #ffffff!important;} -.edu-filter-cir-grey.active{background: #4cacff; color: #ffffff!important; font-size: 14px !important;} - - -.with10{ width: 10%;box-sizing: border-box}.with12{ width: 12%;box-sizing: border-box}.with13{ width: 13%;box-sizing: border-box}.with14{ width: 14%;box-sizing: border-box}.with15{ width: 15%;box-sizing: border-box} -.with20{ width: 20%;box-sizing: border-box}.with22{ width: 22%;box-sizing: border-box}.with23{ width: 23%;box-sizing: border-box}.with25{ width: 25%;box-sizing: border-box} -.with30{ width: 30%;box-sizing: border-box}.with35{ width: 35%;box-sizing: border-box} -.with40{ width: 40%;box-sizing: border-box}.with45{ width: 45%;box-sizing: border-box}.with49{ width: 49%;box-sizing: border-box} -.with50{ width: 50%;box-sizing: border-box}.with55{ width: 55%;box-sizing: border-box} -.with52{ width: 52%;box-sizing: border-box}.with48{ width: 48%;box-sizing: border-box} -.with60{ width: 60%;box-sizing: border-box}.with65{ width: 65%;box-sizing: border-box} -.with70{ width: 70%;box-sizing: border-box}.with73{ width: 73%;box-sizing: border-box}.with75{ width: 75%;box-sizing: border-box}.with77{ width: 77%;box-sizing: border-box}.with78{ width: 78%;box-sizing: border-box} -.with80{ width: 80%;box-sizing: border-box}.with85{ width: 85%;box-sizing: border-box} -.with87{ width: 87%;box-sizing: border-box}.with90{ width: 90%;box-sizing: border-box}.with95{ width: 95%;box-sizing: border-box} -.with100{ width: 100%;} - -.transform-90{ - transform:rotate(-90deg); - -ms-transform:rotate(-90deg); /* IE 9 */ - -moz-transform:rotate(-90deg); /* Firefox */ - -webkit-transform:rotate(-90deg); /* Safari 和 Chrome */ - -o-transform:rotate(-90deg); -} - -.newplayVedio{ - font-size: 86px !important; -} -.icon-qizhi{ - font-size:30px !important; -} -.icon-31{ - font-size: 68px !important; -} - -/*置顶*/ -.btn-cir {display: inline-block;padding: 0px 5px;border-radius: 25px;line-height: 20px;font-size: 12px;} -.btn-cir-red{background:red;color: #fff; font-weight: normal;cursor: default} -.btn-cir-red:hover{background:red;color: #fff!important;} -.btn-cir-grey{background: #e1e1e1;color: #8c8c8c;font-weight: normal;border: 1px solid #e1e1e1} - -/*动态标签*/ -.edu-filter-btn{cursor: default;display: inline-block; padding:0px 9px; color:#666; background:#fff; text-align: center; border-radius:10px; font-size:12px; height:18px; line-height:18px;} -.edu-filter-btn-blue{border:1px solid #3498db; color:#3498db;} -.edu-filter-btn-orange{border:1px solid #ff6800; color:#ff6800!important;}/*提交中、评阅中*/ -.edu-filter-btn-red{border:1px solid #DD1717; color:#DD1717;}/*已截止、未开启补交*/ -.edu-filter-btn-green{border:1px solid #29BD8B; color:#29BD8B!important;}/*申诉中、已开启补交*/ -.edu-filter-btn-appeal{border:1px solid #FF4343; color:#FF4343!important;}/*申诉中*/ -.edu-filter-btn-yellow{border:1px solid #ef9324; color:#ef9324;} -.edu-filter-btn-danger{background:#d72e36; color:#fff;} -.edu-filter-btn-late{border:1px solid #3fbcff; color: #3fbcff;} -.edu-filter-btn-no-late{border:1px solid #747A7F;color: #747A7F;}/*未发布*/ -.edu-filter-btn-end{border: 1px solid #999999;color: #999999;}/*已结束*/ -/*动态按钮*/ -.edu-activity-orange{background-color:#FF6800;color:#fff!important;cursor: pointer;border: 1px solid #ff6800;}/*修改作品、补交作品、立即补交、补交附件*/ -.edu-activity-blue{background-color:#4CACFF;color:#fff!important;cursor: pointer;border: 1px solid #4CACFF;}/*开始实战、开始答题、继续答题、继续实战、提交作品*/ -.edu-activity-grey{background-color:#747A7F;color:#fff!important;cursor: pointer;border: 1px solid #747A7F;}/*匿评作品*/ -.edu-activity-green{background-color:#29BD8B;color:#fff!important;cursor: pointer;border: 1px solid #29BD8B;}/*查看作品、查看实战、查看答题*/ -.edu-activity-light-grey{background-color:#cbcbcb;color:#fff!important;cursor: pointer;border: 1px solid #cbcbcb;}/*取消关联*/ -/*课堂设置页面*/ -.course-ul-nav{width: 100%;border-bottom: 1px solid #EBEBEB;} -.course-ul-nav a{display: inline-block;padding: 20px;font-size: 18px;text-align: center;width: 94px;position: relative} -.course-ul-nav a.active,.course-ul-nav a:hover{color: #4CACFF;} -.course-ul-nav a.active:after{content: '';width: 94px;left: 20px;bottom: 0px;height: 2px;background-color: #4CACFF;position: absolute} - -/*-----下拉框--------*/ -.down-select{display:none;position: absolute;z-index: 10;left: 0px;width: 100%;overflow-y: auto;background: #fff;max-height: 200px;border:1px solid #eee;} -.down-select p{height: 35px;line-height: 35px;padding-left: 5px;cursor: pointer} -.down-select p:hover{background: #f3f4f6} - - - -.paddingLeft28{padding-left:28px;} - -.ant-modal-header{ - border-radius: 10px; -} - -.color656565{ - color:#656565; -} - -.colorC8161D{ - color:#C8161D; -} - -.bor-reds{ - border:1px solid #FF0000!important; - border-radius: 4px; - border-top-left-radius: 4px; - border-top-right-radius: 4px; - border-bottom-right-radius: 4px; - border-bottom-left-radius: 4px; +/*整体公用样式--------------主题颜色为蓝色#459be5,字体颜色为#05101a*/ +@charset "utf-8"; +body{font-size:14px; line-height:2.0;background:#fafafa!important;font-family: "微软雅黑","宋体"; color:#05101a;height: 100%;position: relative; +} +html,body{height:100%;} +body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fieldset,legend,button,input,textarea,th,td,span{ margin:0; padding:0;} +table,input,textarea,select,button {outline: none;border-radius: 3px; font-family: "微软雅黑","宋体"; font-size:14px;line-height:1.9;border:1px solid #eaeaea;background: #FFFFff; color:#05101A;} +textarea{resize: none;} +/*设置input框的placehoder的字体颜色*/ +input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color: #cccccc} +input::-moz-placeholder,textarea::-moz-placeholder { color:#cccccc;} +input::-moz-placeholder,textarea::-moz-placeholder { color:#cccccc;} +input::-ms-input-placeholder,textarea::-ms-input-placeholder {color:#cccccc;} + +div,img,tr,td,table{ border:0;} +a:link,a:visited{text-decoration:none; color:#05101a;} +a:hover {color:#459be5;} +ol, ul, li {list-style-type: none;} +select:disabled,input:disabled{background-color: #EEEEEE;} +/*万能清除浮动*/ +.clearfix:after{clear:both;content:".";display:block;font-size:0;height:0;line-height:0;visibility:hidden;} +.clearfix{clear:both;zoom:1} +.cl{ clear: both; overflow: hidden;} +/*通用浮动*/ +.fl{ float: left!important;} +.fr{ float: right!important;} +/*pre标签换行*/ +.break-word{word-break: break-all;word-wrap: break-word;} +.break-word-firefox{white-space: pre-wrap !important;word-break: break-all;} +/*文字左右两端对齐*/ +.justify{text-align: justify} +.indent{text-indent: 2em;} + +.edu-name-dark{ max-width:100px; display: block; } +.edu-info-dark{ max-width:345px; display: block; } +.edu-max-h200{ height:200px; overflow: auto;} +.edu-h260{ height:260px;} +.edu-h270{ height:270px;} +.edu-h310{ height:310px;} +.edu-position{ position: relative;} +.edu-h200-auto{ max-height:200px; overflow:auto;} +.edu-h300-auto{ max-height:300px; overflow:auto;} +.edu-h350-auto{ max-height:350px; overflow:auto;} +.edu-h280-auto{ height:280px; overflow:auto;} +.edu-txt-w240{ width:240px; display: block;} +.edu-txt-w280{ width:280px; display: block;} +.edu-txt-w320{ width:320px; display: block;} +.edu-txt-w200{ width:200px; display: block;} +a.edu-txt-w280,.edu-txt-w280{ width:280px; display: inline-block;text-align: center} +a.edu-txt-w190,.edu-txt-w190{ width:190px; display: inline-block;text-align: center} +a.edu-txt-w160,.edu-txt-w160{ width:160px; display: inline-block;text-align: center} +a.edu-txt-w140,.edu-txt-w140{ width:141px; display: inline-block;text-align: center} +a.edu-txt-w130,.edu-txt-w130{ width:130px; display: inline-block;text-align: center} +a.edu-txt-w120,.edu-txt-w120{ width:120px; display: inline-block;text-align: center} +a.edu-txt-w100,.edu-txt-w100{ width:100px; display: inline-block;text-align: center} +a.edu-txt-w90,.edu-txt-w90{ width:90px; display: inline-block;text-align: center} +a.edu-txt-w80,.edu-txt-w80{ width:80px; display: inline-block;text-align: center} + +/*超过隐藏*/ +.overellipsis{overflow: hidden;white-space: nowrap;text-overflow: ellipsis;} +.task-hide{overflow:hidden; white-space: nowrap; text-overflow:ellipsis;} +.task-hide-2{overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2;} +/*隐藏*/ +.none{display: none} +.block{ display:block;} + +.boxsizing{box-sizing: border-box} + + +/*字体icon均为18px*/ +.iconfont{font-size: 18px!important;} +/*通用文字大小样式*/ +.font-n{font-weight: normal!important;} +.font-bd{font-weight: bold;} +.font-n{font-weight: normal;} +.font-12{ font-size: 12px!important;} +.font-13{ font-size: 13px!important;} +.font-14{ font-size: 14px!important;} +.font-15{ font-size: 15px!important;} +.font-16{ font-size: 16px!important;} +.font-17{ font-size: 17px!important;} +.font-18{ font-size: 18px!important;} +.font-20{ font-size: 20px!important;} +.font-22{ font-size: 22px!important;} +.font-24{ font-size: 24px!important;} +.font-26{ font-size: 26px!important;} +.font-28{ font-size: 28px!important;} +.font-30{ font-size: 30px!important;} +.font-32{ font-size: 32px!important;} +.font-36{ font-size: 36px!important;} +.font-50{ font-size: 50px!important;} +.font-60{ font-size: 60px!important;} +.font-70{ font-size: 70px!important;} + +/*a标签的下划线*/ +a.decoration{text-decoration: underline} + +/*表单*/ +.panel-form-label{ display:inline-block; width:10%; min-width:90px; text-align:right; line-height:40px; font-weight: normal; } + +/*通用内外边距*/ +.mt-10{ margin-top:-10px;}.mt-3{ margin-top:-3px;}.mt0{ margin-top:0px!important;} .mt1{ margin-top:1px;}.mt2{ margin-top:2px;}.mt3{ margin-top:3px;}.mt4{ margin-top:4px;}.mt5{ margin-top:5px!important;}.mt6{ margin-top:6px;}.mt7{ margin-top:7px!important;}.mt8{ margin-top:8px;}.mt9{ margin-top:9px;}.mt10{ margin-top:10px!important;}.mt12{ margin-top:12px;}.mt13{ margin-top:13px;}.mt14{ margin-top:14px;}.mt15{ margin-top:15px!important;}.mt16{ margin-top:16px;}.mt17{ margin-top:17px;}.mt18{ margin-top:18px;}.mt20{ margin-top:20px!important;}.mt22{ margin-top:22px!important;}.mt23{ margin-top:23px!important;}.mt24{ margin-top:24px!important;}.mt25{ margin-top:25px;}.mt28{ margin-top:28px;}.mt30{ margin-top:30px!important;}.mt34{ margin-top:34px!important;}.mt35{ margin-top:35px!important;}.mt36{ margin-top:36px!important;}.mt40{ margin-top:40px;}.mt45{ margin-top:45px;}.mt46{ margin-top:46px;}.mt50{ margin-top:50px;!important;}.mt56{ margin-top:56px;!important;}.mt60{ margin-top:60px;}.mt70{ margin-top:70px;}.mt80{ margin-top:80px;}.mt95{ margin-top:95px;}.mt100{ margin-top:100px;}.mt110{ margin-top:110px;}.mt120{ margin-top:120px;}.mt130{ margin-top:130px;}.mt140{ margin-top:140px;}.mt150{ margin-top:150px;}.mt160{ margin-top:160px;} +.mb0{margin-bottom: 0px!important;}.mb3{ margin-bottom: 3px;}.mb5{ margin-bottom: 5px;}.mb7{ margin-bottom: 7px;}.mb10{ margin-bottom: 10px;}.mb11{ margin-bottom: 11px;}.mb14{ margin-bottom: 14px;}.mb15{ margin-bottom: 15px;}.mb16{ margin-bottom: 16px;}.mb20{ margin-bottom: 20px!important;}.mb25{ margin-bottom: 25px;}.mb26{ margin-bottom: 26px;}.mb28{ margin-bottom: 28px;}.mb30{ margin-bottom: 30px!important;}.mb40{ margin-bottom: 40px!important;}.mb50{ margin-bottom: 50px!important;}.mb60{ margin-bottom: 60px!important;}.mb70{ margin-bottom: 70px!important;}.mb80{ margin-bottom: 80px!important;}.mb90{ margin-bottom: 90px!important;}.mb100{ margin-bottom: 100px!important;}.mb110{ margin-bottom: 110px;} +.ml-3{ margin-left: -3px;}.ml1{margin-left: 1px;}.ml2{margin-left: 2px;}.ml3{margin-left: 3px;}.ml4{margin-left: 4px;}.ml5{ margin-left: 5px;}.ml6{ margin-left: 6px;}.ml10{ margin-left: 10px;}.ml12{ margin-left:12px!important;}.ml13{ margin-left:13px!important;}.ml15{ margin-left: 15px;}.ml18{ margin-left: 18px;}.ml20{ margin-left: 20px;}.ml22{ margin-left: 22px;}.ml25{ margin-left: 25px;}.ml30{ margin-left: 30px;}.ml33{ margin-left: 33px;}.ml35{ margin-left:35px;}.ml40{margin-left:40px;}.ml42{margin-left:42px;}.ml45{ margin-left: 45px;}.ml50{ margin-left: 50px;}.ml55{ margin-left: 55px;}.ml60{ margin-left: 60px;}.ml72{ margin-left: 72px;}.ml73{ margin-left: 73px;}.ml75{ margin-left: 75px;}.ml80{ margin-left: 80px;}.ml85{margin-left:85px;}.ml95{ margin-left: 95px;}.ml115{margin-left: 115px}.ml123{ margin-left: 123px;}.ml150{ margin-left: 150px;}.ml180{ margin-left: 180px;}.ml230{ margin-left: 230px;}.ml240{margin-left: 240px;}.ml250{ margin-left: 250px;}.ml290{ margin-left: 290px;} +.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;} +.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;} +.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;}.pl15{ padding-left:15px;}.pl20{ padding-left:20px;}.pl22{ padding-left:22px;}.pl25{ padding-left:25px;}.pl28{ padding-left:28px;}.pl30{ padding-left:30px !important;}.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;} +.pr2{ paddding-right:2px;}.pr5{ padding-right:5px;}.pr7{ padding-right:7px;}.pr10{ padding-right:10px;}.pr15{ padding-right:15px;}.pr20{ padding-right:20px!important;}.pr25{ padding-right:25px!important;}.pr30{ padding-right:30px!important;}.pr40{ padding-right:40px;}.pr42{ padding-right:42px;}.pr45{ padding-right:45px;}.pr60{padding-right:60px;}.pr75{padding-right:75px;} + + +.padding5-10{padding:5px 10px;box-sizing: border-box} +.padding5-20{padding:5px 20px;box-sizing: border-box} +.padding10{padding: 10px;box-sizing: border-box} +.padding15{padding: 15px;box-sizing: border-box} +.padding20{padding: 20px;box-sizing: border-box} +.padding10-20{padding: 10px 20px;box-sizing: border-box} +.padding10-15{padding: 10px 15px;box-sizing: border-box} +.padding10-25{padding: 10px 25px;box-sizing: border-box} +.padding10-30{padding: 10px 30px;box-sizing: border-box} + +.padding15-20{padding: 15px 20px;box-sizing: border-box} +.padding15-25{padding: 15px 25px;box-sizing: border-box} + +.padding20-40{padding: 20px 40px;box-sizing: border-box} +.padding20-30{padding: 20px 30px;box-sizing: border-box} +.padding20-15{padding: 20px 15px;box-sizing: border-box} +.padding20-10{padding: 20px 10px;box-sizing: border-box} + +.padding30{padding: 30px;box-sizing: border-box} +.padding30-20{padding: 30px 20px;box-sizing: border-box} +.padding30-40{padding: 30px 40px;box-sizing: border-box} + +.padding40{padding: 40px;box-sizing: border-box} +.padding40-30{padding: 40px 30px;box-sizing: border-box} +.padding40-20{padding: 40px 20px;box-sizing: border-box} + +.margin10{margin:10px;} +.margin15{margin:15px;} +.margin20{margin:20px;} + +/*行高*/ +.lineh-12{line-height: 12px} +.lineh-15{line-height: 15px} +.lineh-17{line-height: 17px} +.lineh-20{line-height: 20px} +.lineh-25{line-height: 25px} +.lineh-30{line-height: 30px} +.lineh-35{line-height: 35px} +.lineh-40{line-height: 40px} + +/*pre标签换行*/ +.break_word{word-break: break-all;word-wrap: break-word;} +.break_word_firefox{white-space: pre-wrap !important;word-break: break-all;} +/*定位*/ +.pr{position: relative} +.df {display:flex;display: -webkit-flex;display: -ms-flex;} +.flex1{flex: 1;} +/*去掉IE input框输入时自带的清除按钮*/ +input::-ms-clear{display:none;} +/*自定义滚动条宽度*/ +::-webkit-scrollbar {width:7px;height:10px;background-color: #F5F5F5; } +::-webkit-scrollbar-track {-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);background-color: #F5F5F5;} +::-webkit-scrollbar-thumb {-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);background-color: #dadada;} + + +.newContainer{ min-height:100%; height: auto !important; height: 100%; /*IE6不识别min-height*/position: relative;} +.educontent{width: 1200px;margin:0px auto;box-sizing: border-box}/*中间部分宽度固定为1200*/ +.newMain{ margin: 0 auto; padding-bottom: 235px; min-width:1200px;}/*padding-bottom根据底部的高度而定*/ + +/*高度*/ +.height-100{height: 100%;} +/*文本位置*/ +.edu-txt-center{ text-align: center!important;} +.edu-txt-left{ text-align: left!important;} +.edu-txt-right{ text-align: right!important;} + +/*背景颜色*/ +.edu-back-white{background-color:#FFFFff; } +.edu-back-greyf5{background-color: #f5f5f5!important;} +.edu-back-skyblue{background: #F4FAFF;} +.edu-back-blue{background-color:#459be6!important; } +.edu-back-blue-txt{background-color:#F7FBFF!important; } +.edu-bg-light-blue{ background:#f7f9fd; padding:5px;}/*发送实训弹框*/ +/*常用字体*/ +/*红色*/ +.color-red{color: #FF0000!important;} +/*白色*/ +.color-white{color: #ffffff!important;} +/*黑色*/ +.color-dark{color: #05101a!important;} +/*灰色*/ +.color-grey-name{color: #1A0B00!important;} +.color-grey-fa{color: #FAFAFA!important;} +.color-grey-3{color: #333!important;} +.color-grey-eb{color: #EBEBEB!important;} +.color-grey-c{color: #ccc!important;} +.color-grey-cd{color: #cdcdcd!important;} +.color-grey-9{color: #999999!important;} +.color-grey-98{color: #989898!important;} +.color-grey-8{color: #888!important;} +.color-grey-6{color: #666!important;} +.color-grey-4d{color: #4d4d4d!important;} +.color-grey-B2{color: #B2B2B2!important;} +.color-grey-B3{color: #B3B3B3!important;} +.color-grey-B4{color: #B4B4B4!important;} +.color-grey-74{color: #747A7F!important;} + + +a.color-grey-name:hover,a.color-dark:hover,a.color-grey-6:hover,a.color-grey-3:hover{color: #4cacff!important;} +a.color-grey-9:hover,a.color-grey-8:hover,a.color-grey-c:hover{color: #111C24!important;} +/*蓝色*/ +.color-blue{color: #4CACFF!important;}/*主*/ +.color-blue_4C{color: #4CACFF!important;} +a.color-blue:hover,a.color-blue_4C:hover{color: #459BE6!important;} +/*橙色*/ +.color-orange{color: #ff6800!important;}/*辅助文字*/ +.color-orange-tip{color: #FF954C!important;}/*提示文字*/ +a.color-orange:hover,a.color-orange-tip:hover{color: #F06200!important;} +/*黄色*/ +.color-yellow{color: #EFC003!important;} +.color-yellow-ff{color: #FFA800!important} +/*绿色*/ +.color-green{color: #29BD8B!important;} +a.color-green:hover{color: #28AC7F!important;} +/*红色*/ +.color-red-dd{color: #DD1717!important;} +a.color-red-dd:hover{color: #C61616!important;} +/*圆角*/ +.radius{border-radius: 50%;} +.radius4{border-radius: 4px;} +.radius2{border-radius: 2px;} + + +/*绿色圆形--例如:实训路径详情的编辑icon的背景*/ +.ring-green{width: 18px;height: 18px;display: block;border-radius: 50%;background-color: #29BD8B;text-align: center;} +.ring-op-green{width: 18px;height: 18px;display: block;border-radius: 50%;background-color: rgba(41,189,139,0.6);text-align: center;} +.ring-grey{width: 18px;height: 18px;line-height: 18px;display: block;border-radius: 50%;background-color:rgba(204,204,204,0.5);text-align: center;} +.ring-blue{width: 18px;height: 18px;display: block;border-radius: 50%;background-color: #4CACFF;text-align: center;} + +.ring-orange{background-color: #FF6800;display: block;padding: 0px 3px;height: 18px;box-sizing: border-box;min-width: 18px;text-align: center;line-height: 18px;border-radius: 50%;color:#fff;font-size: 12px;} + +/*左侧label内容右对齐*/ +.label-right{min-width:75px;text-align: right;height: 35px;line-height: 35px;float: left; } + + +/*输入框样式---------宽度为百分比*/ +.input-flex-30{flex: 1;height: 30px;padding: 5px;box-sizing: border-box;} +.input-flex-35{flex: 1;height: 35px;padding: 5px;box-sizing: border-box;} +.input-flex-40{flex: 1;height: 40px;padding: 5px;box-sizing: border-box;} +.input-100-35{width: 100%;height: 35px;padding: 5px;box-sizing: border-box;} +.input-100-40{width: 100%;height: 40px;padding: 5px;box-sizing: border-box;} +.input-100-45{width: 100%;height: 45px;padding: 5px;box-sizing: border-box;} +.input-90-35{width: 90%;height: 35px;padding: 5px;box-sizing: border-box;} +.input-60-40{width: 60%;height: 40px;padding: 5px;box-sizing: border-box;} +.input-60-35{width: 60%;height: 35px;padding: 5px;box-sizing: border-box;} +.input-50-35{width: 50%;height: 35px;padding: 5px;box-sizing: border-box;} +.input-50-40{width: 50%;height: 40px;padding: 5px;box-sizing: border-box;} +.input-50-45{width: 50%;height: 45px;padding: 5px;box-sizing: border-box;} +.input-48-45{width: 48%;height: 45px;padding: 5px;box-sizing: border-box;} +/*输入框为灰色背景,获取焦点时背景变白色*/ +.greyInput{background-color: #F5F5F5;outline: none} +.greyInput:focus{background-color: #fff; border: 1px solid #ddd;} + +/*输入框样式---------宽度为固定长度*/ +.winput-240-45{width: 240px;height: 45px;padding: 5px;box-sizing: border-box;} +.winput-240-40{width: 240px;height: 40px;padding: 5px;box-sizing: border-box;} +.winput-240-35{width: 240px;height: 35px;padding: 5px;box-sizing: border-box;} +.winput-240-30{width: 240px;height: 30px;padding: 5px;box-sizing: border-box;} +.winput-190-45{width: 190px;height: 45px;padding: 5px;box-sizing: border-box;} +.winput-200-35{width: 200px;height: 35px;padding: 5px;box-sizing: border-box;} +.winput-120-40{width: 120px;height: 40px;padding: 5px;box-sizing: border-box;} +.winput-120-35{width: 120px;height: 35px;padding: 5px;box-sizing: border-box;} +.winput-120-30{width: 120px;height: 30px;padding: 5px;box-sizing: border-box;} +.winput-115-40{width: 115px;height: 40px;padding: 5px;box-sizing: border-box;} +.winput-90-40{width: 90px;height: 40px;padding: 5px;box-sizing: border-box;} +.winput-90-35{width: 90px;height: 35px;padding: 5px;box-sizing: border-box;} +.winput-240-100{width: 240px;height: 100px;padding: 5px;box-sizing: border-box;} +/*输入框样式---------高度固定*/ +.winput-90-100{width: 90%;height: 100px;padding: 5px;box-sizing: border-box;} +.winput-100-130{width: 100%;height: 130px;padding: 5px;box-sizing: border-box;} +.winput-100-150{width: 100%;height: 150px;padding: 5px;box-sizing: border-box;} +.winput-100-200{width: 100%;height: 200px;padding: 5px;box-sizing: border-box;} +.winput-90-100{width: 90%;height: 100px;padding: 5px;box-sizing: border-box;} +/*百分比宽度*/ +.width100{width: 100%;} +.width90{width: 90%;} +.width89{width: 89%;} +.width80{width: 80%;} +.width70{width: 70%;} +.width60{width: 60%;} +.width50{width: 50%;} +.width40{width: 40%;} +.width30{width: 30%;} +.width20{width: 20%;} +.width15{width: 15%;} +.width10{width: 10%;} + +/*固定大小的宽度*/ +.wid100{width: 100px;display: block} +.wid120{width: 120px;display: block} +.wid90{min-width: 90px!important;display: block} +a.edu-txt-w280,.edu-txt-w280{ width:280px; display: inline-block;text-align: center} +a.edu-txt-w200,.edu-txt-w200{ width:200px; display: inline-block;text-align: center} +a.edu-txt-w190,.edu-txt-w190{ width:190px; display: inline-block;text-align: center} +a.edu-txt-w160,.edu-txt-w160{ width:160px; display: inline-block;text-align: center} +a.edu-txt-w140,.edu-txt-w140{ width:141px; display: inline-block;text-align: center} +a.edu-txt-w130,.edu-txt-w130{ width:130px; display: inline-block;text-align: center} +a.edu-txt-w120,.edu-txt-w120{ width:120px; display: inline-block;text-align: center} +a.edu-txt-w100,.edu-txt-w100{ width:100px; display: inline-block;text-align: center} +a.edu-txt-w90,.edu-txt-w90{ width:90px; display: inline-block;text-align: center} +a.edu-txt-w80,.edu-txt-w80{ width:80px; display: inline-block;text-align: center} +a.edu-txt-w40,.edu-txt-w40{ width:40px; display: inline-block;text-align: center} + +/*最小高度*/ +.minH-40{min-height: 490px;} +.minH-280{min-height: 280px;} +.minH-400{min-height: 400px;} +.minH-440{min-height: 440px;} +.minH-500{min-height: 500px;} +.minH-560{min-height: 560px;} +/*超出高度出现滚动条--纵向*/ +.over260{max-height: 260px;overflow-y: auto} +.over210{height: 210px;overflow-y: auto} +.over280{height: 280px;overflow-y: auto} +.over170{min-height: 170px;max-height: 170px;overflow-y: auto} + +/*---------------tab公用边框-----------------*/ +.border-bottom-orange{border-bottom: 2px solid #FC7033!important;} +.bor-bottom-orange{border-bottom: 1px solid #FF9e6a!important;} +.bor-bottom-greyE{border-bottom: 1px solid #EEEEEE!important;} +.bor-left-greyE{border-left: 1px solid #EEEEEE!important;} +.bor-top-greyE{border-top: 1px solid #EEEEEE!important;} +.bor-right-greyE{border-right: 1px solid #EEEEEE!important;} +.bor-left-greyC{border-left: 1px solid #CCC!important;} +.bor-top-greyC{border-top: 1px solid #CCC!important;} +/*---------------边框-----------------*/ +.bor-gray-c{border:1px solid #ccc;} +.bor-grey-e{border:1px solid #eee;} +.bor-grey-d{border:1px solid #ddd;} +.bor-grey01{border:1px solid #E6EAEB;} +.bor-orange{border:1px solid #FF7500;} +.bor-blue{border:1px solid #5faee3;} +.bor-red{border:1px solid #db0505;} +.bor-none{border:none;} +.bor-outnone{outline:none; border:0px;} + +a.decoration{text-decoration: underline!important;} + +/*下拉菜单*/ +.edu-menu-panel{position: relative;cursor: pointer} +.edu-menu-list{position: absolute;padding: 5px 0px;box-shadow: 0 2px 8px 0 rgba(0,0,0,.2);display: none;width: 120px;background: #FFFFff;right: -5px;border-radius:0px 0px 4px 4px;color: #05101a; font-size: 14px;z-index: 9} +.edu-menu-list li{width: 100%;padding:0px 15px;box-sizing: border-box;height: 35px;line-height: 35px;cursor: pointer;} + +.edu-menuSmall-list{position: absolute;padding: 5px 0px;box-shadow: 0 2px 8px 0 rgba(0,0,0,.2);display: none;width: 100px;background: #FFFFff;right: -5px;border-radius:0px 0px 4px 4px;color: #05101a; font-size: 14px;z-index: 9} +.edu-menuSmall-list li{width: 100%;padding:0px 10px;box-sizing: border-box;height: 30px;line-height: 30px;cursor: pointer;font-size: 12px;} + +.edu-menu-list li a,.edu-menuSmall-list li a{width: 100%;height: 100%;display: block;color: #323232;} +.edu-menu-panel:hover i,.edu-menu-panel:hover{color: #4cacff;} +.edu-menu-panel:hover .edu-menu-list,.edu-menu-panel:hover .edu-menuSmall-list{display: block} +.edu-menu-list li:hover,.edu-menuSmall-list li:hover{background: #4CACFF;} +.edu-menu-list li:hover a,.edu-menuSmall-list li:hover a{color: #fff!important;} +.currentName{display: block;width: 100%;padding:0px 15px;height: 40px;line-height: 40px;font-size: 16px;box-sizing: border-box;cursor: default} +.ul-leftline:after{position: absolute;top:0px;content: "";width: 1px;background-color: #eee;height: 100%;right: 0px;} +.overPart{width: 240px;height: 30px;position: absolute;right: 0;top: -27px;background: transparent;} +/*滑块验证*/ +.drag_slider{ position: relative; background-color: #e8e8e8; width:100%; height: 45px;color: #999999; line-height: 45px; text-align: center;border-radius: 4px;} +.drag_slider .handler{ border-radius: 4px 0px 0px 4px;position: absolute; top: 0px; left: 0px; width: 50px; height: 43px; border: 1px solid #eee; cursor: move;} +.handler_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTEyNTVEMURGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTEyNTVEMUNGMkVFMTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2MTc5NzNmZS02OTQxLTQyOTYtYTIwNi02NDI2YTNkOWU5YmUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+YiRG4AAAALFJREFUeNpi/P//PwMlgImBQkA9A+bOnfsIiBOxKcInh+yCaCDuByoswaIOpxwjciACFegBqZ1AvBSIS5OTk/8TkmNEjwWgQiUgtQuIjwAxUF3yX3xyGIEIFLwHpKyAWB+I1xGSwxULIGf9A7mQkBwTlhBXAFLHgPgqEAcTkmNCU6AL9d8WII4HOvk3ITkWJAXWUMlOoGQHmsE45ViQ2KuBuASoYC4Wf+OUYxz6mQkgwAAN9mIrUReCXgAAAABJRU5ErkJggg==") no-repeat center;} +.handler_ok_bg{ background: #fff url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NTc3MiwgMjAxNC8wMS8xMy0xOTo0NDowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0ZDhlNWY5My05NmI0LTRlNWQtOGFjYi03ZTY4OGYyMTU2ZTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDlBRDI3NjVGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDlBRDI3NjRGMkQ2MTFFNEI5NDBCMjQ2M0ExMDQ1OUYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDphNWEzMWNhMC1hYmViLTQxNWEtYTEwZS04Y2U5NzRlN2Q4YTEiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NGQ4ZTVmOTMtOTZiNC00ZTVkLThhY2ItN2U2ODhmMjE1NmU2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+k+sHwwAAASZJREFUeNpi/P//PwMyKD8uZw+kUoDYEYgloMIvgHg/EM/ptHx0EFk9I8wAoEZ+IDUPiIMY8IN1QJwENOgj3ACo5gNAbMBAHLgAxA4gQ5igAnNJ0MwAVTsX7IKyY7L2UNuJAf+AmAmJ78AEDTBiwGYg5gbifCSxFCZoaBMCy4A4GOjnH0D6DpK4IxNSVIHAfSDOAeLraJrjgJp/AwPbHMhejiQnwYRmUzNQ4VQgDQqXK0ia/0I17wJiPmQNTNBEAgMlQIWiQA2vgWw7QppBekGxsAjIiEUSBNnsBDWEAY9mEFgMMgBk00E0iZtA7AHEctDQ58MRuA6wlLgGFMoMpIG1QFeGwAIxGZo8GUhIysmwQGSAZgwHaEZhICIzOaBkJkqyM0CAAQDGx279Jf50AAAAAABJRU5ErkJggg==") no-repeat center;} +.drag_slider .drag_bg{ background-color: #29bd8b; height: 45px; width: 0px;} +.drag_slider .drag_text{border-radius: 4px 0px 0px 4px;position: absolute; top: 0px; width: 100%; -moz-user-select: none; -webkit-user-select: none; user-select: none; -o-user-select:none; -ms-user-select:none;} + +/*tip公共样式的设置:*/ +.-task-title{opacity:0;position:absolute;left:0;top:0;display:none;z-index:100000;} /*1*/ +.data-tip-down,.data-tip-left,.data-tip-right,.data-tip-top{ position:relative; box-shadow:0px 0px 8px #000; background:#000; color:#fff; max-width:300px;/*2*/ + word-wrap: break-word; text-align:center; border-radius:4px; padding:0 10px; border:1px solid #000; display:none; }/*3*/ +.data-tip-down:after,.data-tip-down:before,.data-tip-left:before,.data-tip-right:before,.data-tip-left:after,.data-tip-right:after,.data-tip-top:after,.data-tip-top:before{/*4*/ + position: absolute;content:''; width:0; height:0;}/*5*/ +.data-tip-down:after,.data-tip-down:before{left: 45%;top:-10px;/*6*/ + border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 10px solid #000; }/*7*/ +.data-tip-down:before{top:-11px;border-bottom:10px solid #000;}/*8*/ +.data-tip-left:after,.data-tip-left:before{left: -10px;top:50%; margin-top:-5px;/*9*/ + border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-right: 10px solid #000; }/*10*/ +.data-tip-left:before{ left: -12px;border-right: 10px solid #000; }/*11*/ +.data-tip-right:after,.data-tip-right:before{right: -10px; top:50%; margin-top:-5px;/*12*/ + border-top: 5px solid transparent;border-bottom: 5px solid transparent; border-left: 10px solid #000; }/*13*/ +.data-tip-right:before{ right: -10px;border-left: 10px solid #000; }/*14*/ +.data-tip-top:after,.data-tip-top:before{left: 45%;bottom:-10px;border-left: 5px solid transparent; + border-right: 5px solid transparent;border-top: 10px solid #000;} +.data-tip-top:before{bottom:-11px;} + + +/*左右两栏排列、固定左右宽度----------ul*/ +ul.abouttable{margin: 0px auto;width: 440px;} +ul.abouttable li{width: 100%;} +ul.abouttable li .rz-label{min-width: 150px;height: 45px;line-height: 45px;text-align: right;color: #adadad;} +ul.abouttable li .second-label{min-width: 150px;height: 40px;line-height: 40px;text-align: right;color: #adadad;} +ul.abouttable li .minh-label{min-width: 150px;height: 28px;line-height: 28px;text-align: right;color: #adadad;} + + + +/* table--------------------------------*/ + +/* table-1底部边框 */ +.edu-pop-table{ width: 100%; border:1px solid #eee; border-bottom:none; background:#fff; color:#888;cursor: default} +.edu-pop-table tr{ height:40px; } +.edu-pop-table tr.edu-bg-grey{ background:#f5f5f5;} +.edu-txt-center{ text-align: center;}.edu-txt-left{ text-align: left;}.edu-txt-right{ text-align: right;} +.edu-pop-table tr th{ color:#333;border-bottom:1px solid #eee; } +.edu-pop-table tr td{border-bottom:1px solid #eee;} +.edu-pop-table.table-line tr td,.edu-pop-table.table-line tr th{ border-right:1px solid #eee;} +.edu-pop-table.table-line tr td:last-child,.edu-pop-table.table-line tr th:last-child{border-right:none;} +/*th行有背景颜色且table无边框*/ +.edu-pop-table.head-color thead tr{background: #fafbfb} +.edu-pop-table.head-color{border: none} +.edu-pop-table.head-color tr:last-child td {border: none} +/*--表格行间隔背景颜色-*/ +.edu-pop-table.interval-td{border-bottom: 1px solid #eee;} +.edu-pop-table.interval-td thead tr{background: #fafbfb} +.edu-pop-table.interval-td tbody tr:nth-child(even){background: #fafbfb} +.edu-pop-table.interval-td tbody tr td{border: none} +/*--表格行间隔背景颜色(th也没有边框)-*/ +.edu-pop-table.interval-all{border:none;border-bottom: 1px solid #eee;} +.edu-pop-table.interval-all thead th{border: none} +.edu-pop-table.interval-all thead tr{background: #fafbfb} +.edu-pop-table.interval-all tbody tr:nth-child(even){background: #fafbfb} +.edu-pop-table.interval-all tbody tr td{border: none;padding:5px 0px} +/*--表格行移入背景颜色-*/ +.edu-pop-table.hover-td tbody tr:hover{background: #EFF9FD}/*悬浮颜色为天蓝色*/ +.edu-pop-table.hover-td_1 tbody tr:hover{background:#FCF2EC}/*悬浮颜色为浅橙色*/ +/* table-2全边框 */ +.edu-pop-table-all{ width: 100%; border:1px solid #eee; background:#fff; color:#888;border-collapse: collapse} +.edu-pop-table-all tr{ height:30px; } +.edu-pop-table-all tr.edu-bg-grey{ background:#f5f5f5;} +.edu-pop-table-all tr th{ color:#333;border:1px solid #eee; } +.edu-pop-table-all tr td{border:1px solid #eee;padding: 5px} +/*table无边框、无背景颜色*/ +.allNone{background: none!important;cursor: default;border-bottom:none!important;} +.allNone tr{height: 30px!important;} + +/*数据为空公共页面*/ +img.edu-nodata-img{ width:300px; margin:50px auto 20px; display: block;} +.edu-nodata-p{ font-size: 20px; text-align: center; color:#999;border-bottom:none!important;padding-left: 18px;box-sizing: border-box;} + +/*输入为空或者错误的提示*/ +.input-none{box-shadow: 0px 0px 2px rgba(0,0,0,0.1);} +.notice{height: 25px;margin-left: 150px;} +.input-none + .notice span{display: block} + +/*列表里菜单icon移入*/ +.edu-position-hide{ position: absolute; top:15px; left:-20px; box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5); background:#fff;z-index:1001; padding:5px 0;z-index: 999999;} +.edu-position-hide li a{ display:inline-block; height: 30px; width: 100px; line-height: 30px; text-align: center; font-size:12px!important; } +.edu-position-hide li a:hover{ background:#F1F1F1; color:#05101A;} +.edu-position-hidebox i{ color:#bcbcbc;} +.edu-position-hidebox i:hover{ color:#4CACFF;} +.edu-position-hidebox a{ color:#05101A;} +.edu-position-hidebox:hover .edu-position-hide{ display: block;} + +/*搜索(灰色背景、点击变白色)*/ +.seekPanel > input{width: 100%;height: 30px;line-height: 30px;background-color: #f4f4f4;border:1px solid #eaeaea;padding: 0px 30px 0px 5px ;box-sizing: border-box;outline: none;} +.seekPanel > input:focus{background-color: #fff;} +.seekPanel > i{position: absolute;right: 7px;top: -1px;} +/*-------------------------------------------公用按钮:以white-btn(或者edu-default-btn无padding)为基础,宽度和高度可以用padding填充,颜色用edu-color-btn,begin-----------------------------------------*/ +/*按钮*/ +/*默认按钮*/ +/*长条形按钮*/ +.default_btn{display: block;border-radius: 5px ;background: #f4f4f4;color: #cfcfcf!important;text-align: center;width: 102px;box-sizing: border-box} +/*正常按钮*/ +.white-btn{text-align:center;cursor: pointer;display: inline-block;padding: 0px 8px;border: 1px solid #ccc;color: #666;letter-spacing: 1px;font-size: 14px;height: 26px;line-height: 26px;border-radius: 3px;} +a.white-btn.orange-btn{border: 1px solid #FF7500;color: #FF7500!important;} +a.white-btn.orange-btn:hover{border: 1px solid #F06200;color: #F06200!important;} + +.defalutGreyBorder{display: block;padding: 0px 10px;border:1px solid #ccc;height: 30px;line-height: 30px;border-radius: 4px;} +a.task-btn{cursor: pointer;display: inline-block;border: none;padding: 0 12px;color: #fff;background: #CDCDCD !important;letter-spacing: 1px;text-align: center;font-size: 14px;height: 30px;line-height: 30px;border-radius: 2px; font-weight: 400;} +/*最新按钮:以个人主页为例-------------因高度和宽度都已经固定,后续不再支持使用,*/ +.user_default_btn{cursor: pointer;font-size: 14px;display: block;width: 120px;text-align: center;height: 40px;line-height: 40px!important;border-radius: 4px;box-sizing: border-box} +.user_orange_btn{color: #fff!important;background-color: #FF6800;}/*橙色签到按钮*/ +.user_orange_btn:hover{background-color:#F06200;} +.user_grey_btn{color: #fff!important;background-color: #CCCCCC;cursor: default}/*灰色已经签到按钮*/ +.user_private_btn{color:#646464!important;background-color: #fff;border: 1px solid #989898}/*灰色私信、互相关注按钮*/ +.user_private_btn:hover{color: #B2B2B2!important;border: 1px solid #B2B2B2;} +.btn_auto{border-radius: 5px ;background: #fff;padding: 0px 18px;} + +/*可共用按钮,需添加padding或者边框*/ +.edu-default-btn{display: block;border-radius: 4px;} +a.edu-focus-btn{padding: 0px 10px;height: 30px;line-height: 30px;border: 1px solid #b2b2b2;color: #b2b2b2!important;} +a.edu-focus-btn:hover{border: 1px solid #666;color: #666!important;} + +a.edu-greenback-btn{padding: 0px 10px;background: #29BD8B;color: #fff!important;border: 1px solid #29BD8B;} +a.edu-greenline-btn{padding: 0px 10px;color: #29BD8B!important;border: 1px solid #29BD8B;} +a.edu-greenback-btn:hover{background-color: #28AC7F;} +a.edu-greenline-btn:hover{border:1px solid #28AC7F;color: #28AC7F!important;} + +a.edu-blueback-btn{padding: 0px 10px;background: #4CACFF;color: #fff!important;border: 1px solid #4CACFF;} +a.edu-blueline-btn{padding: 0px 10px;color: #4CACFF!important;border: 1px solid #4CACFF;} +a.edu-blueback-btn:hover{background-color: #459BE6;} +a.edu-blueline-btn:hover{border:1px solid #459BE6;color: #459BE6!important;} + +a.edu-orangeback-btn{background-color: #ff7500;color: #fff!important;border:1px solid #FF7500} +a.edu-orangeback-btn:hover{background-color: #F06200;} +a.edu-orangeline-btn{color: #FF7500!important;border:1px solid #FF7500} +a.edu-orangeline-btn:hover{color: #F06200!important;border:1px solid #F06200} + +a.edu-greyback-btn{padding: 0px 10px;background: #CCCCCC;color: #fff!important;border: 1px solid #CCCCCC;} +a.edu-greyback-btn:hover{background-color: #B2B2B2;} +a.edu-greyshallowline-btn{padding: 0px 10px;color: #999!important;border:1px solid #CFCFCF} +a.edu-greyline-btn{padding: 0px 10px;background: #fff;color: #666!important;border: 1px solid #eaeaea;line-height: 33px;height: 33px;} +a.edu-greyline-btn:hover,a.edu-greyshallowline-btn:hover{border:1px solid #B2B2B2;color:#B2B2B2!important;} + +/*新建页面的提交和取消按钮*/ +.defalutCancelbtn{display: block;border: 1px solid #CDCDCD;background-color: #fafafa;color: #999!important;width: 120px;text-align: center;height: 30px;line-height: 30px;border-radius: 2px; + width: 130px; + height: 40px; + background: rgba(77,124,254,0); + border: 1px solid rgba(76, 172, 255, 1); + border-radius: 4px; + line-height: 40px; + font-size: 16px; + font-family: MicrosoftYaHei; + font-weight: 400; + color: rgba(76,172,255,1) !important; +} +.defalutCancelbtn:hover{border:1px solid #B2B2B2;color: #B2B2B2!important;} +.defalutSubmitbtn{ + display: block;border: 1px solid #4CACFF;background-color: #4CACFF;color: #fff!important;width: 120px;text-align: center;line-height: 40px;border-radius: 2px; + width: 130px; + height: 40px; + background: rgba(76,172,255,1); + border-radius: 4px; + font-size: 16px; + font-family: MicrosoftYaHei; + font-weight: 400; + color: rgba(255,255,255,1); +} +.defalutSubmitbtn:hover{background-color: #459BE6;border: 1px solid #459BE6;} +/*-------------------------------------------公用按钮:以white-btn(或者edu-default-btn无padding)为基础,宽度和高度可以用padding填充,颜色用edu-color-btn,end-----------------------------------------*/ + +/*可点击按钮---蓝色*/ +.use_btn{background: #4cacff;color:#fff!important;} +a.task-btn-orange{background: #4CACFF!important; color:#fff!important;} +a:hover.task-btn-orange{background: #459BE6;} +/*可点击按钮---蓝色---蓝色边框*/ +.user_blue_btn{border: 1px solid #4CACFF;color: #4CACFF!important;} +/*可点击按钮---蓝色---蓝色背景*/ +a.user_bluebg_btn{background-color:#4CACFF;color: #fff;} +a.user_orangebg_btn{background-color:#FF6800;color: #fff;} +a.user_greybg_btn{background-color:#747A7F;color: #fff;} + + +.pointer{cursor: pointer} +.cdefault{cursor: default} + + +/*md编辑器恢复被覆盖样式*/ +.new_li li{ list-style-type: disc!important; } +.new_li ol li{ list-style-type: decimal!important; } +.new_li li{ margin-bottom: 0!important; } + +/*搜索框*/ +#pollingPanel{position: relative;width: 248px;height: 32px;} +#pollingPanel > input{width: 100%;height: 100%;border:1px solid #eaeaea;border-radius: 4px;padding: 0px 30px 0px 5px;box-sizing: border-box;background-color: #F4F4F4;} +#pollingPanel > input:focus{background-color: #fff;outline: none;} +#pollingPanel > a{position: absolute;right: 10px;top:0px;} + +/* 弹框 */ +.popupAll{width: 100%;height: 100%;position: fixed;z-index: 99998;background-color: rgba(5,16,26,0.6);left: 0;top:0;} +.task-popup{ width: 30%;background: #fff; border:1px solid #e8e8e8; border-radius:10px;} +.task-popup-text-center{ text-align: center; color: #333;} +.task-popup-title{ border-bottom: 1px solid #eee; padding:0px 15px;text-align: center;box-sizing: border-box;line-height: 70px;height: 70px; border-radius: 10px 10px 0px 0px;font-size: 16px;font-weight: bold; } +.task-popup-content{ padding:15px;} +.task-popup-submit{ margin:0px auto 15px; width: 160px;} +.task-popup-sure{ margin:0px auto 15px; width: 54px;} +.task-popup-right-sure{margin:0px auto 15px;text-align: center} +.task-popup-OK{ margin:15px auto; text-align: center} +.task-popup-bggrey{ background:#fff; color:#333;} +#closeIcon{position: absolute;color:#fefefe} +/* 模板弹框 20170407byLB */ +#task_popup_box{ background:#fff;padding-bottom:15px;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px;box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);} +.task_popup_top{background:#ccc;height:40px;-webkit-border-radius: 5px 5px 0px 0px;-moz-border-radius: 5px 5px 0px 0px;-o-border-radius: 5px 5px 0px 0px;border-radius: 5px 5px 0px 0px;} +.task_popup_top h3{ font-size:14px; color:#333; line-height:40px; padding-left:10px; } +a.task_icons_close{width:20px; height:20px;display:block;background: url(../images/popup/sy_icons_close.png) 0 0px no-repeat; margin:8px 10px 0 0;} +a:hover.task_icons_close{background: url(../images/popup/sy_icons_close.png) -40px 0px no-repeat;} +.task_popup_con{ padding:20px;} +/* 模板弹框 20161013byLB */ +#muban_popup_box{ background:#fff;padding-bottom:15px;-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px;box-shadow: 0px 2px 8px rgba(146, 153, 169, 0.5);} +.muban_popup_top{background:#3b94d6;height:40px;-webkit-border-radius: 5px 5px 0px 0px;-moz-border-radius: 5px 5px 0px 0px;-o-border-radius: 5px 5px 0px 0px;border-radius: 5px 5px 0px 0px;} +.muban_popup_top h3{ font-size:16px; color:#fff; font-weight:normal; line-height:40px; padding-left:10px; } +a.muban_icons_close{width:20px; height:20px;display:block;background: url(/images/sy/sy_icons_close.png) 0 0px no-repeat; margin:8px 10px 0 0;} +a:hover.muban_icons_close{background: url(/images/sy/sy_icons_close.png) -40px 0px no-repeat;} +#muban_popup_box input,#muban_pwopup_box select{ border:1px solid #c8c8c8; height: 28px; color: #888;} +#muban_popup_box label.pop_box_label{width: 100px; text-align: right; display: inline-block;} +input.radio-width90{ width: 90px; } +#muban_popup_box label.pop_box_label_l {width: 100px; text-align: left; display: inline-block;} + + +/*提示条*/ +.alert{ padding:10px;border: 1px solid transparent; text-align: center;} +.alert-blue{ background-color: #d9edf7;border-color: #bce8f1; color: #3a87ad;} +.alert-orange{ background-color: #fff9e9;border-color: #f6d0b1; color:#ee4a20;} +.task-close{padding: 0;cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; font-size: 21px; font-weight: bold;line-height: 1; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.3;} +.taskclose:hover{opacity: 0.5;} +.alert-red{background-color: #f2dede;border-color: #eed3d7; color: #d14f4d; text-align: left!important;} + +/*搜索的下拉列表*/ +.search_down_list a{display: block;height: 28px;line-height: 28px;padding: 0px 5px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;} +.search_down_list a:hover{background: #fafafa;} + +/*白色色块--类似个人主页-学习-里面的tab*/ +.white-panel{border-radius: 2px;width: 100%;margin: 0px auto;box-sizing: border-box;padding-left: 25px;} +.white-panel li{width: 118px;height: 48px;line-height: 48px;text-align: center;color: #05101A;float: left;cursor: pointer;border:1px solid #fff;} +.white-panel li a{display: block;width: 100%;} +.white-panel li.active{border-radius: 24px;border:1px solid #4CACFF;color:#4CACFF; } +.white-panel li.active a{color:#4CACFF; } + + +/* 个人主页翻页 */ +.pages_user_show a:hover,.pages_user_show li.active a{ background-color:#4CACFF; color:#fff;border: 1px solid #4CACFF;} +.pages_user_show a{border-radius: 2px; display: inline-block;border:1px solid #d1d1d1;background-color:#fff; color:#888; float:left;text-align:center; padding:2px 10px; line-height:1.9; margin: 0 5px;} +.pages_user_show li{float: left; list-style-type: none;} +.pages_user_show ul li{list-style-type: none !important;} +.pages_user_show ul li a{color:#888} +.page_GO{text-align:center;width: 80px;border-radius: 2px;margin-left: 5px;height: 33px;padding: 0px 5px;box-sizing: border-box;float: left;border:1px solid #d1d1d1;} +/* 小翻页 */ +.pages_little_show a:hover,.pages_little_show li.active a{ background-color:#4CACFF;; color:#fff!important;border:1px solid #4CACFF} +.pages_little_show a{ display: inline-block;border:1px solid #d1d1d1; color:#888!important; float:left;text-align:center; padding:3px 3px; line-height:1.9; margin: 0 2px; font-size: 12px;} +.pages_little_show li{float: left;} + +/*左右排版结构:参考个人主页的经验值和金币等页面*/ +.leftPanel{width: 22%;float: left;} +.leftPanel li.nav{padding:10px 0px;box-sizing: border-box;} +.leftPanel li.nav a{padding-left: 40px;display: block;width: 100%;box-sizing: border-box;border-left: 2px solid #fff;height: 24px;line-height: 24px;} +.leftPanel li.nav.active a{border-left: 2px solid #4CACFF;} +.rightPanel{width:78%;float: right;} + +/*个人主页,认证的圆圈*/ +.ringauto{width: 20px;height: 20px;line-height: 20px;text-align: center;border-radius: 50%;background-color: #F4FAFF;margin-right:5px;} + +/*-------------------个人主页:右侧提示区域--------------------------*/ +.-task-sidebar{position:fixed;width:40px;height:180px;right:0;bottom:30px;z-index: 10;} +.-task-sidebar div{height: 40px;line-height: 40px;box-sizing: border-box;width:40px;background:#4CACFF;color:#fff;font-size:20px;text-align:center;margin-bottom:5px;border-radius: 4px;} +.-task-sidebar div i{ color:#fff;} +.-task-sidebar div i:hover{color: #fff!important;} +.gotop{background-color: rgba(208,207,207,0.5)!important;padding: 0px!important;} +.-task-desc{background:#494949;width:90px;line-height: 36px;text-align: center; + position: absolute;color: #fff;font-size: 13px;z-index: 999999;opacity: 0;} +.-task-desc div{position: absolute;top:10px;right: -7px;height: 13px;} +.-task-desc div img{float: left} + + +/***** loading ******/ +/*****载入中******/ +#ajax-indicator { + position: absolute; /* fixed not supported by IE*/ + background-color:#eee; + border: 1px solid #bbb; + top:35%; + left:40%; + width:20%; + /*height:5%;*/ + font-weight:bold; + text-align:center; + padding:0.6em; + z-index:100000; + opacity: 0.5; +} + +html>body #ajax-indicator { position: fixed; } + +#ajax-indicator span{ + color:#fff; + color: #333333; + background-position: 0% 40%; + background-repeat: no-repeat; + background-image: url(/images/loading.gif); + padding-left: 26px; + vertical-align: bottom; + z-index:100000; +} +/*最新、最热*/ +.bestChoose.active{color: #4CACFF;} + + +/*实训路径选择实训*/ +.edu-filter-cir-grey{color: #666!important;width: auto;padding:0px 15px; font-size:14px !important; text-align: center;background: #f3f3f3;border-radius: 10px;display: block; height:25px; line-height:25px;} +.edu-filter-cir-grey:hover{background: #4cacff; color: #ffffff!important;} +.edu-filter-cir-grey.active{background: #4cacff; color: #ffffff!important; font-size: 14px !important;} + + +.with10{ width: 10%;box-sizing: border-box}.with12{ width: 12%;box-sizing: border-box}.with13{ width: 13%;box-sizing: border-box}.with14{ width: 14%;box-sizing: border-box}.with15{ width: 15%;box-sizing: border-box} +.with20{ width: 20%;box-sizing: border-box}.with22{ width: 22%;box-sizing: border-box}.with23{ width: 23%;box-sizing: border-box}.with25{ width: 25%;box-sizing: border-box} +.with30{ width: 30%;box-sizing: border-box}.with35{ width: 35%;box-sizing: border-box} +.with40{ width: 40%;box-sizing: border-box}.with45{ width: 45%;box-sizing: border-box}.with49{ width: 49%;box-sizing: border-box} +.with50{ width: 50%;box-sizing: border-box}.with55{ width: 55%;box-sizing: border-box} +.with52{ width: 52%;box-sizing: border-box}.with48{ width: 48%;box-sizing: border-box} +.with60{ width: 60%;box-sizing: border-box}.with65{ width: 65%;box-sizing: border-box} +.with70{ width: 70%;box-sizing: border-box}.with73{ width: 73%;box-sizing: border-box}.with75{ width: 75%;box-sizing: border-box}.with77{ width: 77%;box-sizing: border-box}.with78{ width: 78%;box-sizing: border-box} +.with80{ width: 80%;box-sizing: border-box}.with85{ width: 85%;box-sizing: border-box} +.with87{ width: 87%;box-sizing: border-box}.with90{ width: 90%;box-sizing: border-box}.with95{ width: 95%;box-sizing: border-box} +.with100{ width: 100%;} + +.transform-90{ + transform:rotate(-90deg); + -ms-transform:rotate(-90deg); /* IE 9 */ + -moz-transform:rotate(-90deg); /* Firefox */ + -webkit-transform:rotate(-90deg); /* Safari 和 Chrome */ + -o-transform:rotate(-90deg); +} + +.newplayVedio{ + font-size: 86px !important; +} +.icon-qizhi{ + font-size:30px !important; +} +.icon-31{ + font-size: 68px !important; +} + +/*置顶*/ +.btn-cir {display: inline-block;padding: 0px 5px;border-radius: 25px;line-height: 20px;font-size: 12px;} +.btn-cir-red{background:red;color: #fff; font-weight: normal;cursor: default} +.btn-cir-red:hover{background:red;color: #fff!important;} +.btn-cir-grey{background: #e1e1e1;color: #8c8c8c;font-weight: normal;border: 1px solid #e1e1e1} + +/*动态标签*/ +.edu-filter-btn{cursor: default;display: inline-block; padding:0px 9px; color:#666; background:#fff; text-align: center; border-radius:10px; font-size:12px; height:18px; line-height:18px;} +.edu-filter-btn-blue{border:1px solid #3498db; color:#3498db;} +.edu-filter-btn-orange{border:1px solid #ff6800; color:#ff6800!important;}/*提交中、评阅中*/ +.edu-filter-btn-red{border:1px solid #DD1717; color:#DD1717;}/*已截止、未开启补交*/ +.edu-filter-btn-green{border:1px solid #29BD8B; color:#29BD8B!important;}/*申诉中、已开启补交*/ +.edu-filter-btn-appeal{border:1px solid #FF4343; color:#FF4343!important;}/*申诉中*/ +.edu-filter-btn-yellow{border:1px solid #ef9324; color:#ef9324;} +.edu-filter-btn-danger{background:#d72e36; color:#fff;} +.edu-filter-btn-late{border:1px solid #3fbcff; color: #3fbcff;} +.edu-filter-btn-no-late{border:1px solid #747A7F;color: #747A7F;}/*未发布*/ +.edu-filter-btn-end{border: 1px solid #999999;color: #999999;}/*已结束*/ +/*动态按钮*/ +.edu-activity-orange{background-color:#FF6800;color:#fff!important;cursor: pointer;border: 1px solid #ff6800;}/*修改作品、补交作品、立即补交、补交附件*/ +.edu-activity-blue{background-color:#4CACFF;color:#fff!important;cursor: pointer;border: 1px solid #4CACFF;}/*开始实战、开始答题、继续答题、继续实战、提交作品*/ +.edu-activity-grey{background-color:#747A7F;color:#fff!important;cursor: pointer;border: 1px solid #747A7F;}/*匿评作品*/ +.edu-activity-green{background-color:#29BD8B;color:#fff!important;cursor: pointer;border: 1px solid #29BD8B;}/*查看作品、查看实战、查看答题*/ +.edu-activity-light-grey{background-color:#cbcbcb;color:#fff!important;cursor: pointer;border: 1px solid #cbcbcb;}/*取消关联*/ +/*课堂设置页面*/ +.course-ul-nav{width: 100%;border-bottom: 1px solid #EBEBEB;} +.course-ul-nav a{display: inline-block;padding: 20px;font-size: 18px;text-align: center;width: 94px;position: relative} +.course-ul-nav a.active,.course-ul-nav a:hover{color: #4CACFF;} +.course-ul-nav a.active:after{content: '';width: 94px;left: 20px;bottom: 0px;height: 2px;background-color: #4CACFF;position: absolute} + +/*-----下拉框--------*/ +.down-select{display:none;position: absolute;z-index: 10;left: 0px;width: 100%;overflow-y: auto;background: #fff;max-height: 200px;border:1px solid #eee;} +.down-select p{height: 35px;line-height: 35px;padding-left: 5px;cursor: pointer} +.down-select p:hover{background: #f3f4f6} + + + +.paddingLeft28{padding-left:28px;} + +.ant-modal-header{ + border-radius: 10px; +} + +.color656565{ + color:#656565; +} + +.colorC8161D{ + color:#C8161D; +} + +.bor-reds{ + border:1px solid #FF0000!important; + border-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; } \ No newline at end of file diff --git a/app/views/challenges/edit.json.jbuilder b/app/views/challenges/edit.json.jbuilder index 2774b5a05..5ae15cf67 100644 --- a/app/views/challenges/edit.json.jbuilder +++ b/app/views/challenges/edit.json.jbuilder @@ -13,6 +13,7 @@ elsif @tab == 1 # 评测设置的编辑模式 json.(@challenge, :id, :path, :exec_path, :show_type, :original_picture_path, :expect_picture_path, :picture_path, :web_route, :test_set_score, :test_set_average) + json.has_web_route @shixun.has_web_route? json.test_sets @challenge.test_sets do |set| json.hidden (set.is_public ? 0 : 1) json.(set, :input, :output, :score) diff --git a/app/views/courses/search_teacher_candidate.json.jbuilder b/app/views/courses/search_teacher_candidate.json.jbuilder index 49109b729..af3310fb7 100644 --- a/app/views/courses/search_teacher_candidate.json.jbuilder +++ b/app/views/courses/search_teacher_candidate.json.jbuilder @@ -3,6 +3,7 @@ json.candidates do json.id user.id json.name user.real_name json.nickname user.nickname + json.login user.login json.school_name user.user_extension.school.try(:name) json.school_id user.user_extension.school.try(:id) json.added @course.course_member?(user.id, [1, 2, 3]) diff --git a/app/views/homework_commons/group_list.json.jbuilder b/app/views/homework_commons/group_list.json.jbuilder index aa951bf7d..61464f2c1 100644 --- a/app/views/homework_commons/group_list.json.jbuilder +++ b/app/views/homework_commons/group_list.json.jbuilder @@ -7,7 +7,8 @@ json.group_list do end end # 未分班展示情况放在最后 -if @course_groups.count != (@page.to_i - 1)*@limit.to_i && @course_groups.count < @limit.to_i +if (@course_groups.count != 0 && @course_groups.count < @limit.to_i) || + ((@page.to_i - 1)*@limit.to_i == @course_member_count && @course_groups.count == 0) ungroup_work_count = homework_ungroup_works_count(@homework, @ungroup_user_ids) if ungroup_work_count > 0 json.ungroup_list do diff --git a/app/views/memos/_memo.json.jbuilder b/app/views/memos/_memo.json.jbuilder index f0ac5cd3d..a09b7f293 100644 --- a/app/views/memos/_memo.json.jbuilder +++ b/app/views/memos/_memo.json.jbuilder @@ -1,5 +1,6 @@ json.memo do json.id memo.id + json.forum_id memo.forum_id json.subject memo.subject json.is_md memo.is_md json.content memo.content @@ -9,6 +10,6 @@ json.memo do json.tag memo.tag_repertoires.map(&:name) json.time memo.created_at json.replies_count memo.all_replies_count - json.user_praise memo.praise_treads.user_liker(@user.try(:id)).count > 0 ? true : false + json.user_praise memo.praise_treads.user_liker(@user.try(:id)).count > 0 json.memo_praise_count memo.praise_treads.liker.count end diff --git a/app/views/users/homepage_info.json.jbuilder b/app/views/users/homepage_info.json.jbuilder index 1621448f3..3fabd110b 100644 --- a/app/views/users/homepage_info.json.jbuilder +++ b/app/views/users/homepage_info.json.jbuilder @@ -16,7 +16,7 @@ json.college_identifier @user.college_identifier json.followed User.current.watched?(@user) if @user.logged_user? - json.can_apply_trial @user.can_apply_trial? + #json.can_apply_trial @user.can_apply_trial? json.attendance_signed @user.attendance_signed? json.tomorrow_attendance_gold @user.tomorrow_attendance_gold end diff --git a/db/migrate/20190806062209_second_mofidy_ke_contents_for_md.rb b/db/migrate/20190806062209_second_mofidy_ke_contents_for_md.rb index 3ba6f67f5..c8068e049 100644 --- a/db/migrate/20190806062209_second_mofidy_ke_contents_for_md.rb +++ b/db/migrate/20190806062209_second_mofidy_ke_contents_for_md.rb @@ -1,64 +1,64 @@ class SecondMofidyKeContentsForMd < ActiveRecord::Migration[5.2] include ActionView::Helpers::SanitizeHelper def change - def ke_transform_to_md content - return content if content.blank? - s_contents = sanitize(content, tags: %w(img a span table td tr tbody pre), attributes: %w(src href target style)) - s_contents.gsub(">\n<", "><").gsub(/^\n/, "").gsub(" ", " ").gsub(/(\n)+/, "
") - .gsub("\t", "    ").gsub("\n", "").gsub(" ", " ").gsub(/()+/, "
") - - end - - # 作业 - HomeworkCommon.find_each do |hc| - description = ke_transform_to_md hc.description - reference_answer = ke_transform_to_md hc.reference_answer - explanation = ke_transform_to_md hc.explanation - hc.update_attributes(description: description, reference_answer: reference_answer, explanation: explanation) - end - - # 作业题库 - HomeworkBank.find_each do |hb| - description = ke_transform_to_md hb.description - reference_answer = ke_transform_to_md hb.reference_answer - hb.update_attributes(description: description, reference_answer: reference_answer) - end - - # 毕业任务 - GraduationTask.find_each do |gt| - description = ke_transform_to_md gt.description - gt.update_column(:description, description) - end - - # 毕设选题 - GraduationTopic.find_each do |gt| - description = ke_transform_to_md gt.description - gt.update_column(:description, description) - end - - # 毕设作品 - GraduationWork.find_each do |gw| - description = ke_transform_to_md gw.description - gw.update_column(:description, description) - end - - # 毕设任务题库 - GtaskBank.find_each do |gb| - description = ke_transform_to_md gb.description - gb.update_column(:description, description) - end - - # 毕设选题题库 - GtopicBank.find_each do |gb| - description = ke_transform_to_md gb.description - gb.update_column(:description, description) - end - - # 交流问答 - Memo.find_each do |m| - content = ke_transform_to_md m.content - m.update_column(:content, content) - end + # def ke_transform_to_md content + # return content if content.blank? + # s_contents = sanitize(content, tags: %w(img a span table td tr tbody pre), attributes: %w(src href target style)) + # s_contents.gsub(">\n<", "><").gsub(/^\n/, "").gsub(" ", " ").gsub(/(\n)+/, "
") + # .gsub("\t", "    ").gsub("\n", "").gsub(" ", " ").gsub(/()+/, "
") + # + # end + # + # # 作业 + # HomeworkCommon.find_each do |hc| + # description = ke_transform_to_md hc.description + # reference_answer = ke_transform_to_md hc.reference_answer + # explanation = ke_transform_to_md hc.explanation + # hc.update_attributes(description: description, reference_answer: reference_answer, explanation: explanation) + # end + # + # # 作业题库 + # HomeworkBank.find_each do |hb| + # description = ke_transform_to_md hb.description + # reference_answer = ke_transform_to_md hb.reference_answer + # hb.update_attributes(description: description, reference_answer: reference_answer) + # end + # + # # 毕业任务 + # GraduationTask.find_each do |gt| + # description = ke_transform_to_md gt.description + # gt.update_column(:description, description) + # end + # + # # 毕设选题 + # GraduationTopic.find_each do |gt| + # description = ke_transform_to_md gt.description + # gt.update_column(:description, description) + # end + # + # # 毕设作品 + # GraduationWork.find_each do |gw| + # description = ke_transform_to_md gw.description + # gw.update_column(:description, description) + # end + # + # # 毕设任务题库 + # GtaskBank.find_each do |gb| + # description = ke_transform_to_md gb.description + # gb.update_column(:description, description) + # end + # + # # 毕设选题题库 + # GtopicBank.find_each do |gb| + # description = ke_transform_to_md gb.description + # gb.update_column(:description, description) + # end + # + # # 交流问答 + # Memo.find_each do |m| + # content = ke_transform_to_md m.content + # m.update_column(:content, content) + # end end end diff --git a/db/migrate/20190806063903_third_modify_ke_for_student_work.rb b/db/migrate/20190806063903_third_modify_ke_for_student_work.rb index 7af64bac1..0b1be8d00 100644 --- a/db/migrate/20190806063903_third_modify_ke_for_student_work.rb +++ b/db/migrate/20190806063903_third_modify_ke_for_student_work.rb @@ -1,17 +1,17 @@ class ThirdModifyKeForStudentWork < ActiveRecord::Migration[5.2] include ActionView::Helpers::SanitizeHelper def change - def ke_transform_to_md content - return content if content.blank? - s_contents = sanitize(content, tags: %w(img a span table td tr tbody pre), attributes: %w(src href target style)) - s_contents.gsub(">\n<", "><").gsub(/^\n/, "").gsub(" ", " ").gsub(/(\n)+/, "
") - .gsub("\t", "    ").gsub("\n", "").gsub(" ", " ").gsub(/()+/, "
") - end - - # 学生的作品 过滤掉一些描述的ke图片的作品 - StudentWork.where("description is not null and LENGTH(description) < 1000000").find_each do |sw| - description = ke_transform_to_md sw.description - sw.update_column(:description, description) - end + # def ke_transform_to_md content + # return content if content.blank? + # s_contents = sanitize(content, tags: %w(img a span table td tr tbody pre), attributes: %w(src href target style)) + # s_contents.gsub(">\n<", "><").gsub(/^\n/, "").gsub(" ", " ").gsub(/(\n)+/, "
") + # .gsub("\t", "    ").gsub("\n", "").gsub(" ", " ").gsub(/()+/, "
") + # end + # + # # 学生的作品 过滤掉一些描述的ke图片的作品 + # StudentWork.where("description is not null and LENGTH(description) < 1000000").find_each do |sw| + # description = ke_transform_to_md sw.description + # sw.update_column(:description, description) + # end end end diff --git a/public/editormd/lib/marked.min.js b/public/editormd/lib/marked.min.js index 636c21b01..519296797 100644 --- a/public/editormd/lib/marked.min.js +++ b/public/editormd/lib/marked.min.js @@ -2,6 +2,10 @@ * marked v0.3.3 - a markdown parser * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) * https://github.com/chjj/marked + + 备注,这个改动没启用,只是做个记录: + br不转成br + 加了个 if (cap[0] != '
' && cap[0] != '
') { out+=this.options.sanitize?escape(cap[0]):cap[0]; } */ (function(){var block={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:noop,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:noop,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:noop,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};block.bullet=/(?:[*+-]|\d+\.)/;block.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;block.item=replace(block.item,"gm")(/bull/g,block.bullet)();block.list=replace(block.list)(/bull/g,block.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+block.def.source+")")();block.blockquote=replace(block.blockquote)("def",block.def)();block._tag="(?!(?:"+"a|em|strong|small|s|cite|q|dfn|abbr|data|time|code"+"|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo"+"|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b";block.html=replace(block.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,block._tag)();block.paragraph=replace(block.paragraph)("hr",block.hr)("heading",block.heading)("lheading",block.lheading)("blockquote",block.blockquote)("tag","<"+block._tag)("def",block.def)();block.normal=merge({},block);block.gfm=merge({},block.normal,{fences:/^ *(`{3,}|~{3,}) *(\S+)? *\n([\s\S]+?)\s*\1 *(?:\n+|$)/,paragraph:/^/});block.gfm.paragraph=replace(block.paragraph)("(?!","(?!"+block.gfm.fences.source.replace("\\1","\\2")+"|"+block.list.source.replace("\\1","\\3")+"|")();block.tables=merge({},block.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/});function Lexer(options){this.tokens=[];this.tokens.links={};this.options=options||marked.defaults;this.rules=block.normal;if(this.options.gfm){if(this.options.tables){this.rules=block.tables}else{this.rules=block.gfm}}}Lexer.rules=block;Lexer.lex=function(src,options){var lexer=new Lexer(options);return lexer.lex(src)};Lexer.prototype.lex=function(src){src=src.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n");return this.token(src,true)};Lexer.prototype.token=function(src,top,bq){var src=src.replace(/^ +$/gm,""),next,loose,cap,bull,b,item,space,i,l;while(src){if(cap=this.rules.newline.exec(src)){src=src.substring(cap[0].length);if(cap[0].length>1){this.tokens.push({type:"space"})}}if(cap=this.rules.code.exec(src)){src=src.substring(cap[0].length);cap=cap[0].replace(/^ {4}/gm,"");this.tokens.push({type:"code",text:!this.options.pedantic?cap.replace(/\n+$/,""):cap});continue}if(cap=this.rules.fences.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"code",lang:cap[2],text:cap[3]});continue}if(cap=this.rules.heading.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:"heading",depth:cap[1].length,text:cap[2]});continue}if(top&&(cap=this.rules.nptable.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/\n$/,"").split("\n")};for(i=0;i ?/gm,"");this.token(cap,top,true);this.tokens.push({type:"blockquote_end"});continue}if(cap=this.rules.list.exec(src)){src=src.substring(cap[0].length);bull=cap[2];this.tokens.push({type:"list_start",ordered:bull.length>1});cap=cap[0].match(this.rules.item);next=false;l=cap.length;i=0;for(;i1&&b.length>1)){src=cap.slice(i+1).join("\n")+src;i=l-1}}loose=next||/\n\n(?!\s*$)/.test(item);if(i!==l-1){next=item.charAt(item.length-1)==="\n";if(!loose){loose=next}}this.tokens.push({type:loose?"loose_item_start":"list_item_start"});this.token(item,false,bq); this.tokens.push({type:"list_item_end"})}this.tokens.push({type:"list_end"});continue}if(cap=this.rules.html.exec(src)){src=src.substring(cap[0].length);this.tokens.push({type:this.options.sanitize?"paragraph":"html",pre:cap[1]==="pre"||cap[1]==="script"||cap[1]==="style",text:cap[0]});continue}if((!bq&&top)&&(cap=this.rules.def.exec(src))){src=src.substring(cap[0].length);this.tokens.links[cap[1].toLowerCase()]={href:cap[2],title:cap[3]};continue}if(top&&(cap=this.rules.table.exec(src))){src=src.substring(cap[0].length);item={type:"table",header:cap[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:cap[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:cap[3].replace(/(?: *\| *)?\n$/,"").split("\n")};for(i=0;i])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:noop,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:__|[\s\S])+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:noop,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/;inline.link=replace(inline.link)("inside",inline._inside)("href",inline._href)();inline.reflink=replace(inline.reflink)("inside",inline._inside)();inline.normal=merge({},inline);inline.pedantic=merge({},inline.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/});inline.gfm=merge({},inline.normal,{escape:replace(inline.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:replace(inline.text)("]|","~]|")("|","|https?://|")()});inline.breaks=merge({},inline.gfm,{br:replace(inline.br)("{2,}","*")(),text:replace(inline.gfm.text)("{2,}","*")()});function InlineLexer(links,options){this.options=options||marked.defaults;this.links=links;this.rules=inline.normal;this.renderer=this.options.renderer||new Renderer;this.renderer.options=this.options;if(!this.links){throw new Error("Tokens array requires a `links` property.")}if(this.options.gfm){if(this.options.breaks){this.rules=inline.breaks}else{this.rules=inline.gfm}}else{if(this.options.pedantic){this.rules=inline.pedantic}}}InlineLexer.rules=inline;InlineLexer.output=function(src,links,options){var inline=new InlineLexer(links,options);return inline.output(src)};InlineLexer.prototype.output=function(src){var out="",link,text,href,cap;while(src){if(cap=this.rules.escape.exec(src)){src=src.substring(cap[0].length);out+=cap[1];continue}if(cap=this.rules.autolink.exec(src)){src=src.substring(cap[0].length);if(cap[2]==="@"){text=cap[1].charAt(6)===":"?this.mangle(cap[1].substring(7)):this.mangle(cap[1]);href=this.mangle("mailto:")+text}else{text=escape(cap[1]);href=text}out+=this.renderer.link(href,null,text);continue}if(!this.inLink&&(cap=this.rules.url.exec(src))){src=src.substring(cap[0].length);text=escape(cap[1]);href=text;out+=this.renderer.link(href,null,text);continue}if(cap=this.rules.tag.exec(src)){if(!this.inLink&&/^/i.test(cap[0])){this.inLink=false}}src=src.substring(cap[0].length);out+=this.options.sanitize?escape(cap[0]):cap[0];continue}if(cap=this.rules.link.exec(src)){src=src.substring(cap[0].length);this.inLink=true;out+=this.outputLink(cap,{href:cap[2],title:cap[3]});this.inLink=false;continue}if((cap=this.rules.reflink.exec(src))||(cap=this.rules.nolink.exec(src))){src=src.substring(cap[0].length);link=(cap[2]||cap[1]).replace(/\s+/g," ");link=this.links[link.toLowerCase()];if(!link||!link.href){out+=cap[0].charAt(0);src=cap[0].substring(1)+src;continue}this.inLink=true;out+=this.outputLink(cap,link);this.inLink=false;continue}if(cap=this.rules.strong.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.strong(this.output(cap[2]||cap[1]));continue}if(cap=this.rules.em.exec(src)){src=src.substring(cap[0].length);out+=this.renderer.em(this.output(cap[2]||cap[1]));continue diff --git a/public/images/educoder/library-default-cover.png b/public/images/educoder/library-default-cover.png new file mode 100644 index 000000000..d54b8df0c Binary files /dev/null and b/public/images/educoder/library-default-cover.png differ diff --git a/public/react/config/webpack.config.dev.js b/public/react/config/webpack.config.dev.js index 15e7e6bef..81afdb70b 100644 --- a/public/react/config/webpack.config.dev.js +++ b/public/react/config/webpack.config.dev.js @@ -29,7 +29,7 @@ const env = getClientEnvironment(publicUrl); module.exports = { // You may want 'eval' instead if you prefer to see the compiled output in DevTools. // See the discussion in https://github.com/facebookincubator/create-react-app/issues/343.s - devtool: "source-map", // 开启调试 + devtool: "cheap-module-eval-source-map", // 开启调试 // These are the "entry points" to our application. // This means they will be the "root" imports that are included in JS bundle. // The first two entry points enable "hot" CSS and auto-refreshes for JS. diff --git a/public/react/config/webpack.config.prod.js b/public/react/config/webpack.config.prod.js index 0abd707af..7b9795e80 100644 --- a/public/react/config/webpack.config.prod.js +++ b/public/react/config/webpack.config.prod.js @@ -301,8 +301,8 @@ module.exports = { }, warnings: false, compress: { - drop_debugger: false, - drop_console: false + drop_debugger: true, + drop_console: true } } }), diff --git a/public/react/public/css/edu-all.css b/public/react/public/css/edu-all.css index 48b102ce3..b401dd24a 100644 --- a/public/react/public/css/edu-all.css +++ b/public/react/public/css/edu-all.css @@ -96,7 +96,9 @@ em.vertical-line{display: inline-block;width: 2px;background: #999;height: 10px} /*块状列表*/ .square-list{width: 100%;box-sizing: border-box;margin-top:20px} .square-Item{position: relative;width:280px;margin-right: 26px;margin-bottom: 26px;float: left;border-radius: 6px;background-color:#fff;box-shadow: 0px 0px 12px rgba(0,0,0,0.1); } -.square-Item:hover{bottom: 3px; box-shadow: 0px 0px 12px rgba(0,0,0,0.3);} +.square-Item:hover{ + /*bottom: 3px;*/ + box-shadow: 0px 0px 12px rgba(0,0,0,0.3);} .square-Item:hover .closeSquare{display: block} .square-Item:nth-child(4n+0){margin-right: 0px;} .square-Item .square-img{display: block;width: 100%} diff --git a/public/react/src/AppConfig.js b/public/react/src/AppConfig.js index c7bd7d307..c09a2cbe7 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -10,7 +10,6 @@ broadcastChannelOnmessage('refreshPage', () => { }) function locationurl(list){ - debugger if (window.location.port === "3007") { } else { @@ -43,6 +42,10 @@ export function initAxiosInterceptors(props) { // proxy = "http://testbdweb.educoder.net" // proxy = "https://testeduplus2.educoder.net" proxy="http://47.96.87.25:48080" + + // wy + // proxy="http://192.168.2.63:3001" + // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; // 如果需要支持重复的请求,考虑config里面自定义一个allowRepeat参考来控制 diff --git a/public/react/src/common/components/LinkAfterLogin.js b/public/react/src/common/components/LinkAfterLogin.js index d0df08f0a..e7365abba 100644 --- a/public/react/src/common/components/LinkAfterLogin.js +++ b/public/react/src/common/components/LinkAfterLogin.js @@ -8,7 +8,15 @@ class LinkAfterLogin extends Component { } checkAuth = () => { if (this.props.checkIfLogin()) { - this.props.history.push(this.props.to) + if(this.props.checkProfileComplete){ + if(this.props.checkIfProfileCompleted()){ + this.props.history.push(this.props.to) + }else{ + this.props.showProfileCompleteDialog(); + } + }else{ + this.props.history.push(this.props.to) + } } else { this.props.showLoginDialog() } diff --git a/public/react/src/common/educoder.js b/public/react/src/common/educoder.js index 2074e495a..194d5ff89 100644 --- a/public/react/src/common/educoder.js +++ b/public/react/src/common/educoder.js @@ -59,4 +59,8 @@ export { default as Clappr } from './components/media/Clappr' -export { default as ImageLayerHook } from './hooks/ImageLayerHook' \ No newline at end of file +export { default as ImageLayerHook } from './hooks/ImageLayerHook' + + +// 外部 +export { default as CBreadcrumb } from '../modules/courses/common/CBreadcrumb' diff --git a/public/react/src/context/TPIContextProvider.js b/public/react/src/context/TPIContextProvider.js index 0f2f68a75..006c0af49 100644 --- a/public/react/src/context/TPIContextProvider.js +++ b/public/react/src/context/TPIContextProvider.js @@ -498,7 +498,7 @@ pop_box_new(htmlvalue, 480, 182); return resData } - fetchAll(stageId) { + fetchAll(stageId, noTimeout) { if (window.__fetchAllFlag == true ) { console.log('TPIContextProvider call fetchAll repeatly!') @@ -544,6 +544,13 @@ pop_box_new(htmlvalue, 480, 182); return; } if (response.data.status == 404) { + // 如果第一次发生404,则隔1s后再调用一次本接口;(因为ucloud主从同步可能有延迟) + if (!noTimeout) { + setTimeout(() => { + this.fetchAll(stageId, true) + }, 1000) + return; + } window.location.href = '/myshixuns/not_found' return; } diff --git a/public/react/src/modules/courses/Index.js b/public/react/src/modules/courses/Index.js index 017a36765..83f6679f7 100644 --- a/public/react/src/modules/courses/Index.js +++ b/public/react/src/modules/courses/Index.js @@ -787,17 +787,17 @@ class CoursesIndex extends Component{ {/* }*/} {/*>*/} {/*实训学生作品列表已公布*/} - () - } - > - {/*实训学生作品列表已公布*/} - () - } - > + {/* ()*/} + {/* }*/} + {/* >*/} + {/*/!*实训学生作品列表已公布*!/*/} + {/* ()*/} + {/* }*/} + {/*>*/} diff --git a/public/react/src/modules/courses/ListPageIndex.js b/public/react/src/modules/courses/ListPageIndex.js index 9f12f6434..8c87c8731 100644 --- a/public/react/src/modules/courses/ListPageIndex.js +++ b/public/react/src/modules/courses/ListPageIndex.js @@ -68,7 +68,7 @@ class ListPageIndex extends Component{ constructor(props) { super(props); this.state={ - yslGuideone:true, + yslGuideone:null, } } @@ -96,8 +96,8 @@ class ListPageIndex extends Component{ } render() { let {yslGuideone} =this.state; - console.log("98"); - console.log(yslGuideone); + // console.log("98"); + // console.log(yslGuideone); return (
diff --git a/public/react/src/modules/courses/busyWork/CommonWorkList.js b/public/react/src/modules/courses/busyWork/CommonWorkList.js index 9224e7eb2..10bbca9f3 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkList.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkList.js @@ -85,9 +85,9 @@ function buildColumns(that, student_works) { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap', - width: '98px', + width: '74px', margin: '0 auto' - }} title={text}> + }} title={text && text.length > 5 ? text : ''}> {/* */} {text} @@ -104,8 +104,8 @@ function buildColumns(that, student_works) { render: (text, record) => ( 12 ? text : ''} + style={{color:'#9A9A9A', 'text-overflow': 'ellipsis', 'white-space': 'nowrap', 'width': '98px', display: 'block', overflow: 'hidden' , margin: '0 auto', cursor: 'default'}} >{record.student_id} @@ -136,7 +136,7 @@ function buildColumns(that, student_works) { render: (text, record) => ( - {record.work_group} + {record.work_group} ), }) @@ -150,8 +150,9 @@ function buildColumns(that, student_works) { render: (project_info, record) => ( - {project_info && project_info.name && {project_info.name}} ), @@ -184,7 +185,7 @@ function buildColumns(that, student_works) { )}, }, { - width: 150, + width: 106, title: '更新时间', dataIndex: 'update_time', key: 'update_time', @@ -249,7 +250,8 @@ function buildColumns(that, student_works) { */ columns.push({ width: 84, - title:
匿评
评分
, + // title:
匿评
评分
, + title:
匿评评分
, key: 'student_score', dataIndex: 'student_score', @@ -323,7 +325,7 @@ function buildColumns(that, student_works) { } if (isAdminOrStudent || that.props.work_public == true) { columns.push({ - width: 92, + width: 72, title: '操作', key: 'operation', dataIndex: 'operation', @@ -614,6 +616,7 @@ class CommonWorkList extends Component{ ref="checkCodeModal" {...this.props} > + tr > th, .workListContent .ant-table-tbody > tr > td { + padding: 10px 1px; + } `}
{ isAdmin &&
    @@ -742,6 +749,9 @@ class CommonWorkList extends Component{ border-bottom: none; } .studentTable .ant-table-tbody { background: '#F1F9FF' } + .studentTable table, .stageTable table{ + font-size: 13px !important; + } `} { isStudent &&StudentData===undefined?"":StudentData===undefined?"": [55, 56], }; } +function disabledDateFunc(current) { + return current && current < moment().endOf('day').subtract(1, 'days'); +} // 类似页面 http://localhost:3007/courses/1309/graduation/graduation_tasks/48/76/setting class CommonWorkSetting extends Component{ @@ -1093,6 +1096,7 @@ class CommonWorkSetting extends Component{ onChange={this.onChangeTimeend} disabled={this.props.isSuperAdmin()?false:end_time_type===true?true:false} disabled={moment(this.state.init_end_time) < moment() || noAuth} + disabledDate={disabledDateFunc} // disabledDate={ (end_time) => // { @@ -1166,6 +1170,7 @@ class CommonWorkSetting extends Component{ disabledTime={disabledDateTime} // || moment(init_late_time) < moment() disabled={!allow_late || noAuth } + disabledDate={disabledDateFunc} // disabledDate={ (late_time) => // { // const end_time = this.state.end_time @@ -1247,6 +1252,8 @@ class CommonWorkSetting extends Component{ onChange={this.onChangeEvaluationEnd} disabledTime={disabledDateTime} disabled={(anonymous_comment && !noAuth ? false : true) || moment(init_evaluation_end) < moment()} + disabledDate={disabledDateFunc} + // disabledDate={ (evaluation_end) => // { // const evaluation_start = this.state.evaluation_start @@ -1335,6 +1342,7 @@ class CommonWorkSetting extends Component{ dropdownClassName="hideDisable" showTime={{ format: 'HH:mm' }} disabledTime={disabledDateTime} + disabledDate={disabledDateFunc} showToday={false} locale={locale} format={dateFormat} diff --git a/public/react/src/modules/courses/common/CBreadcrumb.js b/public/react/src/modules/courses/common/CBreadcrumb.js index aafab3a4f..d9d91f4be 100644 --- a/public/react/src/modules/courses/common/CBreadcrumb.js +++ b/public/react/src/modules/courses/common/CBreadcrumb.js @@ -8,7 +8,7 @@ class CBreadcrumb extends Component{ } render(){ - let { items, className }=this.props; + let { items, className, separator }=this.props; return(

    { items && items.map( (item, index) => { @@ -18,7 +18,10 @@ class CBreadcrumb extends Component{ if (item.to) { return {item.name} - > + {separator ? + {separator} : + > + } } else { return {item.name} diff --git a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js index afe7b606a..2ab4228bb 100644 --- a/public/react/src/modules/courses/coursesDetail/CoursesBanner.js +++ b/public/react/src/modules/courses/coursesDetail/CoursesBanner.js @@ -2,7 +2,7 @@ import React, {Component} from 'react'; import {Link} from "react-router-dom"; import axios from 'axios'; import {getImageUrl, trigger, on, off} from 'educoder'; -import { Tooltip, message,Popover} from 'antd'; +import { Tooltip, message,Popover,Breadcrumb} from 'antd'; import CoursesListType from '../coursesPublic/CoursesListType'; import AccountProfile from"../../user/AccountProfile"; import Addcourses from '../coursesPublic/Addcourses'; @@ -353,8 +353,8 @@ class CoursesBanner extends Component { {AccountProfiletype===true?this.hideAccountProfile()} - {...this.state} {...this.props} + {...this.state} />:""} @@ -489,23 +489,42 @@ class CoursesBanner extends Component {

      -
    • - - 教师 - {coursedata.teacher_count} - -
    • + + + + 教师 {coursedata.teacher_count} + + + 学生 {coursedata.student_count} + + {coursedata.credit===null?"": + 学分 {coursedata.credit} + } + + + {/*
    • */} + {/**/} + {/*教师*/} + {/*{coursedata.teacher_count}*/} + {/**/} + {/*
    • */} -
    • - - 学生 - - {coursedata.student_count} - - -
    • + {/*
    • */} + {/**/} + {/*学生*/} + {/**/} + {/*{coursedata.student_count}*/} + {/**/} + {/**/} + {/*
    • */} {/*
    • */} {/**/} @@ -514,13 +533,13 @@ class CoursesBanner extends Component { {/**/} {/*
    • */} - {coursedata.credit===null?"":
    • - - 学分 - {coursedata.credit} - -
    • } + {/*{coursedata.credit===null?"":
    • */} + {/**/} + {/*学分*/} + {/*{coursedata.credit}*/} + {/**/} + {/*
    • }*/} {/*{coursedata.course_end===true?
    • */} {/*已结束*/} diff --git a/public/react/src/modules/courses/coursesHome/CoursesHome.js b/public/react/src/modules/courses/coursesHome/CoursesHome.js index 962413e54..2cf7aca90 100644 --- a/public/react/src/modules/courses/coursesHome/CoursesHome.js +++ b/public/react/src/modules/courses/coursesHome/CoursesHome.js @@ -16,7 +16,7 @@ class CoursesHome extends Component{ this.state = { limit:16, page:1, - order:"all", + order:"created_at", coursesHomelist:undefined, search:"", } @@ -118,25 +118,25 @@ class CoursesHome extends Component{
    diff --git a/public/react/src/modules/courses/coursesPublic/Addcourses.js b/public/react/src/modules/courses/coursesPublic/Addcourses.js index a9d30f2b6..8c9709fee 100644 --- a/public/react/src/modules/courses/coursesPublic/Addcourses.js +++ b/public/react/src/modules/courses/coursesPublic/Addcourses.js @@ -248,7 +248,7 @@ class Addcourses extends Component{ }else{ - notification.open({ + response.data.message && notification.open({ message:"提示", description:response.data.message }); diff --git a/public/react/src/modules/courses/coursesPublic/PathModal.js b/public/react/src/modules/courses/coursesPublic/PathModal.js index 43901c87a..07ce55024 100644 --- a/public/react/src/modules/courses/coursesPublic/PathModal.js +++ b/public/react/src/modules/courses/coursesPublic/PathModal.js @@ -122,16 +122,20 @@ class PathModal extends Component{ contentViewScrolledit=(e)=>{ //滑动到底判断 + const {shixunmodallist} = this.state; if(e.currentTarget.scrollHeight-e.currentTarget.scrollTop===e.currentTarget.clientHeight){ - let {Searchvalue,type,page,shixunpathlist}=this.state; - let newpage=page+1 - this.funshixunpathlist(Searchvalue,type,true,newpage) - this.setState({ - page:newpage - }) - + if(shixunmodallist.subject_list.length===0){ + return; + }else{ + let {Searchvalue,type,page,shixunpathlist}=this.state; + let newpage=page+1 + this.funshixunpathlist(Searchvalue,type,true,newpage) + this.setState({ + page:newpage + }) + } } } @@ -288,17 +292,19 @@ class PathModal extends Component{
  • - +
  • {item.shixun_count}
  • {item.myshixun_count}
  • - +
  • 详情
  • diff --git a/public/react/src/modules/courses/coursesPublic/ShixunModal.js b/public/react/src/modules/courses/coursesPublic/ShixunModal.js index 1ae63da90..2a53cf104 100644 --- a/public/react/src/modules/courses/coursesPublic/ShixunModal.js +++ b/public/react/src/modules/courses/coursesPublic/ShixunModal.js @@ -100,17 +100,21 @@ class ShixunModal extends Component{ } contentViewScrolledit=(e)=>{ - + const {shixunmodallist}=this.state; //滑动到底判断 - if(e.currentTarget.scrollHeight-e.currentTarget.scrollTop===e.currentTarget.clientHeight){ - let {Searchvalue,type,page}=this.state; - let newpage=page+1 - this.setupdatalist(Searchvalue,type,true,newpage) - this.setState({ - page:newpage - }) - } - + if(e.currentTarget.scrollHeight-e.currentTarget.scrollTop===e.currentTarget.clientHeight) { + + if (shixunmodallist.shixun_list.length === 0) { + return; + } else { + let {Searchvalue, type, page} = this.state; + let newpage = page + 1 + this.setupdatalist(Searchvalue, type, true, newpage) + this.setState({ + page: newpage + }) + } + } } //搜索 diff --git a/public/react/src/modules/courses/css/Courses.css b/public/react/src/modules/courses/css/Courses.css index 47db2f595..b6388b1e7 100644 --- a/public/react/src/modules/courses/css/Courses.css +++ b/public/react/src/modules/courses/css/Courses.css @@ -477,9 +477,9 @@ a.white-btn.use_scope-btn:hover{ } .pathInfobox li{ margin-right: 20px; - height: 15px; + height: 20px; /*overflow: hidden;*/ - line-height: 15px; + line-height: 20px; } .width70f{ width: 70px; diff --git a/public/react/src/modules/courses/exercise/ExerciseReviewAndAnswer.js b/public/react/src/modules/courses/exercise/ExerciseReviewAndAnswer.js index 778829d72..c2c9b7bcf 100644 --- a/public/react/src/modules/courses/exercise/ExerciseReviewAndAnswer.js +++ b/public/react/src/modules/courses/exercise/ExerciseReviewAndAnswer.js @@ -526,7 +526,7 @@ class ExerciseReviewAndAnswer extends Component{ height: 28px; } `} -

    + {/*

    */} - { users && users.length ?
    + { loading || users.length ?
    {/* https://github.com/CassetteRocks/react-infinite-scroller/issues/70 */}
    12 }> diff --git a/public/react/src/modules/courses/members/modal/AddTeacherModal.js b/public/react/src/modules/courses/members/modal/AddTeacherModal.js index 7dfda8c11..720ca870f 100644 --- a/public/react/src/modules/courses/members/modal/AddTeacherModal.js +++ b/public/react/src/modules/courses/members/modal/AddTeacherModal.js @@ -205,7 +205,7 @@ class AddTeacherModal extends Component{ {` .demo-loading-container { position: absolute; - bottom: 93px; + bottom: 210px; width: 82%; text-align: center; } @@ -219,8 +219,7 @@ class AddTeacherModal extends Component{ } .df span.label { margin-right: 8px; - text-align: right; - margin-left: 12px; + text-align: left; } .df .ant-input-affix-wrapper { width: 32%; @@ -232,11 +231,11 @@ class AddTeacherModal extends Component{ `}
    - 姓名: + 姓名: {this.setState({name: e.target.value})}} - style={{ width: '200px'}}> + style={{ width: '200px', marginRight: '18px' }}> - 单位: + 单位: 搜索
    {/* graduation_groups && !!graduation_groups.length */} - { this.hasGraduationModule() &&
    - 答辩组: - -
    } - { course_groups && !!course_groups.length &&
    - 管理权限: - -
    } +

    @@ -296,7 +265,7 @@ class AddTeacherModal extends Component{

    - { candidates && candidates.length ?
    + { loading || candidates.length ?
    {/* https://github.com/CassetteRocks/react-infinite-scroller/issues/70 */}
    + {/* "color":"#4c4c4c" */} 12 }> - + @@ -339,6 +314,40 @@ class AddTeacherModal extends Component{
    : } +
    + { this.hasGraduationModule() &&
    + 添加至答辩组: + +
    } + + { course_groups && !!course_groups.length &&
    + 管理权限: + +
    } +
    ) } diff --git a/public/react/src/modules/courses/poll/PollInfo.js b/public/react/src/modules/courses/poll/PollInfo.js index 8429595c9..dfbfd3a74 100644 --- a/public/react/src/modules/courses/poll/PollInfo.js +++ b/public/react/src/modules/courses/poll/PollInfo.js @@ -305,7 +305,7 @@ class PollInfo extends Component{ let isStudent=this.props.isStudent(); return(
    -

    + {/*

    */} { console.log(error) @@ -179,7 +180,7 @@ class CommitSummary extends Component{ - 取消 + 取消
    diff --git a/public/react/src/modules/courses/shixunHomework/Guide.js b/public/react/src/modules/courses/shixunHomework/Guide.js index a4ca9b373..d501b2ab5 100644 --- a/public/react/src/modules/courses/shixunHomework/Guide.js +++ b/public/react/src/modules/courses/shixunHomework/Guide.js @@ -21,21 +21,32 @@ class Guide extends Component { } componentDidMount() { + // 1366x768 + // var mywidthone=7; - var mywidthone=0; + var mywidthone=0; if(window.screen.width===1024){ mywidthone=1; } - if(window.screen.width===1280){ + else if(window.screen.width===1280){ mywidthone=2; } - if(window.screen.width===1440){ + else if(window.screen.width===1440){ mywidthone=3; } - if(window.screen.width===1680){ + else if(window.screen.width===1680){ mywidthone=4; } - if(window.screen.width===1920){ + else if(window.screen.width===1920){ + mywidthone=5; + } + else if(window.screen.width===1366){ + mywidthone=6; + } + else if(window.screen.width===1600){ + mywidthone=7; + } + else{ mywidthone=5; } this.setState({ @@ -54,8 +65,9 @@ class Guide extends Component { render() { let {page,mywidth}=this.state; // console.log("屏幕宽度"); - // console.log(window.screen.width); - // console.log(mywidth); + console.log(window.screen.width); + console.log(mywidth); + return (
    -
    +
    {datajs === undefined ? "" :
    {teacherdata === undefined ? "" : teacherdata.commit_count === undefined ? "" : teacherdata.commit_count}已交{teacherdata === undefined ? "" : teacherdata.uncommit_count}未交 + className="color-orange-tip">{teacherdata === undefined ? "0" : teacherdata.commit_count === undefined ? "0" : teacherdata.commit_count}已交{teacherdata === undefined ? "0" : teacherdata.uncommit_count}未交 {teacherdata === undefined ? "" : teacherdata.left_time === undefined ? "" : teacherdata.left_time === null ? "" : {teacherdata.left_time.status} } @@ -2723,15 +2966,30 @@ class Listofworksstudentone extends Component { -
    -
    - {data === undefined ? "222222" :
    + {data === undefined ? "" :
    -
    +
    +
    {data === undefined ? "" :
    } {JSON.stringify(datas) !== "[]" ?
    -
    - {teacherdata === undefined ? "" : teacherdata.commit_count === undefined ? "" : teacherdata.commit_count} + {teacherdata === undefined ? "0" : teacherdata.commit_count === undefined ? "0" : teacherdata.commit_count} 已交 - {teacherdata === undefined ? "" : teacherdata.uncommit_count}未交 + {teacherdata === undefined ? "0" : teacherdata.uncommit_count}未交 {teacherdata === undefined ? "" : teacherdata.left_time === undefined ? "" : teacherdata.left_time === null ? "" : {teacherdata.left_time.status}} {teacherdata === undefined ? "0" : teacherdata.left_time === undefined ? "0" : teacherdata.left_time === null ? "0" : @@ -2913,14 +3190,29 @@ class Listofworksstudentone extends Component {
    -
    -
    +
    {datas === undefined ? "" :
    } - { - teacherdata && teacherdata.work_count && teacherdata.work_count > limit ? -
    - -
    - : "" - } + + { + teacherdata && teacherdata.work_count && teacherdata.work_count > limit ? +
    + +
    + : "" + } :
    diff --git a/public/react/src/modules/courses/shixunHomework/ShixunHomeworkPage.js b/public/react/src/modules/courses/shixunHomework/ShixunHomeworkPage.js index c827d73cd..ccf6c4547 100644 --- a/public/react/src/modules/courses/shixunHomework/ShixunHomeworkPage.js +++ b/public/react/src/modules/courses/shixunHomework/ShixunHomeworkPage.js @@ -132,7 +132,7 @@ class ShixunHomeworkPage extends Component {
    -
    +

    diff --git a/public/react/src/modules/courses/shixunHomework/ShixunStudentWork.js b/public/react/src/modules/courses/shixunHomework/ShixunStudentWork.js index 97bc651ea..511c40d61 100644 --- a/public/react/src/modules/courses/shixunHomework/ShixunStudentWork.js +++ b/public/react/src/modules/courses/shixunHomework/ShixunStudentWork.js @@ -783,7 +783,9 @@ class ShixunStudentWork extends Component { + style={{paddingTop: '4px',float: 'left', + maxWidth: '1020px'}} + > {data&&data.group_info === undefined ? "" : data&&data.group_info.map((item, key) => { return ( diff --git a/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js b/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js index 565121e1b..5a98a974d 100644 --- a/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js +++ b/public/react/src/modules/courses/shixunHomework/ShixunWorkReport.js @@ -75,10 +75,15 @@ class ShixunWorkReport extends Component { let homeworkid=this.props.match.params.homeworkid; let url = `/student_works/${homeworkid}/shixun_work_report.json` axios.get(url).then((result) => { + if (result.data.status === 403||result.data.status === 401||result.data.status === 407||result.data.status === 408) { + + }else{ this.setState({ data:result.data, spinning:false }) + } + }).catch((error) => { console.log(error) this.setState({ @@ -109,8 +114,15 @@ class ShixunWorkReport extends Component { this.props.history.push(this.props.current_user.first_category_url); } } + + goback = () => { + + this.props.history.goBack() + } render() { let{data} =this.state; + console.log(data) + console.log(this.props) let category_id=data===undefined?"":data.category===null?"":data.category.category_id; let homework_common_id=data===undefined?"":data.homework_common_id; let homeworkid=this.props.match.params.homeworkid; @@ -147,9 +159,10 @@ class ShixunWorkReport extends Component { {/*className="fr color-blue font-16"*/} {/*onClick={()=>this.confirmysl(`/student_works/${homeworkid}/export_shixun_work_report.pdf`)}*/} {/*>导出实训报告数据 : ""}*/} + {/*返回*/}

    -
    +
    总体评价
    diff --git a/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js b/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js index b9aac1e6a..38ab63a4f 100644 --- a/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js +++ b/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js @@ -305,7 +305,7 @@ class ShixunhomeWorkItem extends Component{ } { - this.props.isStudent? {discussMessage.name}:"" } @@ -313,7 +313,7 @@ class ShixunhomeWorkItem extends Component{ { this.props.isNotMember===true? this.props.discussMessage.private_icon===true? {discussMessage.name} - : {discussMessage.name}:"" } diff --git a/public/react/src/modules/courses/shixunHomework/Shixunworkdetails/ShixunWorkModal.js b/public/react/src/modules/courses/shixunHomework/Shixunworkdetails/ShixunWorkModal.js index cc9586577..977b459d4 100644 --- a/public/react/src/modules/courses/shixunHomework/Shixunworkdetails/ShixunWorkModal.js +++ b/public/react/src/modules/courses/shixunHomework/Shixunworkdetails/ShixunWorkModal.js @@ -132,13 +132,14 @@ class ShixunWorkModal extends Component{ onChange=(e)=>{ let{group_list}=this.state; - let {data}=this.props; if(e.target.checked===true){ if(data&&data.length===0){ let id=[] group_list.forEach((item,key)=>{ - id.push(item.id) + if(item.works_count!=0){ + id.push(item.id) + } }) this.setState({ group_ids:id, @@ -147,7 +148,9 @@ class ShixunWorkModal extends Component{ }else{ let id=[] group_list.forEach((item,key)=>{ - id.push(item.id) + if(item.works_count!=0){ + id.push(item.id) + } }) this.setState({ group_ids:id, @@ -161,6 +164,9 @@ class ShixunWorkModal extends Component{ }) } + + + } @@ -189,7 +195,7 @@ class ShixunWorkModal extends Component{ // message:"提示", // description: response.data.message // }); - this.props.history.replace(`/courses/${this.props.match.params.coursesId}/shixun_homeworks/${this.props.match.params.homeworkid}/student_work?tab=2`); + window.location.href=`/courses/${this.props.match.params.coursesId}/shixun_homeworks/${this.props.match.params.homeworkid}/student_work?tab=2`; }else if(response.data.status === -1){ notification.open({ message:"提示", @@ -302,6 +308,7 @@ class ShixunWorkModal extends Component{ }
    {onChangetype===true?"清除":"全选"} + {/*有效作品都为0*/}
    diff --git a/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js b/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js index cb3ce3af5..9b86483df 100644 --- a/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js +++ b/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js @@ -79,14 +79,14 @@ class TraineetraininginformationModal extends Component { return str; } render() { - console.log(83); - console.log(this.props.boolgalist); + // console.log(83); + // console.log(this.props.boolgalist); const columns = [ { title: '关卡', dataIndex: 'number', key: 'number', - width: 92, + width:"91px", align: "center", render: (text, record) => ( @@ -98,7 +98,7 @@ class TraineetraininginformationModal extends Component { title: '完成时间', dataIndex: 'name', key: 'name', - width: 178, + width:"150px", align: "center", render: (text, record) => ( @@ -113,7 +113,7 @@ class TraineetraininginformationModal extends Component { title: '', dataIndex: 'complete_status', key: 'complete_status', - width: 100, + width:"87px", align: "center", render: (text, record) => ( @@ -127,7 +127,7 @@ class TraineetraininginformationModal extends Component { title: '耗时', dataIndex: 'stduynumber', key: 'stduynumber', - width: 92, + width:"150px", align: "center", render: (text, record) => ( @@ -138,7 +138,7 @@ class TraineetraininginformationModal extends Component { { title: '经验值', key: 'classroom', - width: 92, + dataIndex: 'classroom', align: "center", render: (text, record) => ( @@ -147,7 +147,7 @@ class TraineetraininginformationModal extends Component { ), } - ] + ]; const columnss = [ { @@ -155,7 +155,7 @@ class TraineetraininginformationModal extends Component { dataIndex: 'number', key: 'number', align: "center", - width: "117px", + width:"119px", render: (text, record) => ( {record.number} @@ -166,7 +166,7 @@ class TraineetraininginformationModal extends Component { title: '完成时间', dataIndex: 'name', key: 'name', - width: "203px", + width:"174px", align: "center", render: (text, record) => ( @@ -179,7 +179,7 @@ class TraineetraininginformationModal extends Component { dataIndex: 'stduynumber', key: 'stduynumber', align: "center", - width: "117px", + width:"119px", render: (text, record) => ( {record.stduynumber} @@ -191,14 +191,14 @@ class TraineetraininginformationModal extends Component { key: 'classroom', dataIndex: 'classroom', align: "center", - width: "117px", + render: (text, record) => ( {record.classroom} ), } - ] + ]; return (
    @@ -209,6 +209,8 @@ class TraineetraininginformationModal extends Component { visible={this.props.visible} footer={null} onCancel={this.Cancel} + maskClosable={false} + destroyOnClose={true} >
    @@ -252,7 +254,18 @@ class TraineetraininginformationModal extends Component { { ` .ant-table-body{ overflow: hidden !important; - }` + } + .edu-table .ant-table-tbody > tr > td { + height: 58px; + } + .edu-table .ant-table-thead > tr > th{ + height: 58px; + } + + .edu-table .ant-table-header { + overflow: hidden !important; + } + ` } @@ -263,24 +276,33 @@ class TraineetraininginformationModal extends Component { columns={columns} loading={false} pagination={false} - onChange={this.TablePagination} />}
    :
    +
    {this.props.game_list === undefined ? "" :
    } @@ -302,7 +324,15 @@ class TraineetraininginformationModal extends Component { { ` .ant-table-body{ overflow: hidden !important; - }` + } + .edu-table .ant-table-tbody > tr > td { + height: 58px; + } + .edu-table .ant-table-thead > tr > th{ + height: 58px; + } + + ` } @@ -313,24 +343,32 @@ class TraineetraininginformationModal extends Component { columns={columnss} loading={false} pagination={false} - onChange={this.TablePagination} />} :
    +
    {this.props.game_list === undefined ? "" :
    } diff --git a/public/react/src/modules/courses/shixunHomework/guide.css b/public/react/src/modules/courses/shixunHomework/guide.css index b815b2937..efd7709aa 100755 --- a/public/react/src/modules/courses/shixunHomework/guide.css +++ b/public/react/src/modules/courses/shixunHomework/guide.css @@ -20,7 +20,7 @@ right: 0; bottom: 0; - background-color: rgba(0, 0, 0, 0.8); + background-color: rgba(0, 0, 0, 0.4); transition: all .3s ease-out; display: flex; justify-content: center; @@ -236,15 +236,19 @@ } .ysldiv11680{ - margin-top: 11%; - margin-left: 13%; - margin-right: 10%; + margin-top: 11.5%; + margin-left: 13%; + margin-right: 9%; +} +.ysldiv11600{ + margin-top: 12%; + margin-left: 11%; + margin-right: 7%; } .ysldiv11440{ margin-top: 14%; margin-left: 7%; margin-right: 3%; - height: 60%; } .ysldiv11280{ @@ -253,6 +257,12 @@ margin-right: 0%; height: 60%; } +.ysldiv11366{ + margin-top: 15%; + margin-left: 5%; + margin-right: 2%; + height: 60%; +} .ysldiv11024{ margin-top: 20%; margin-left: 0%; @@ -270,16 +280,19 @@ } .ysldiv21680{ - margin-top: 11%; - margin-left: 45%; + margin-top: 11.5%; + margin-left: 45%; + margin-right: 20%; +} +.ysldiv21600{ + margin-top: 12%; + margin-left: 47%; margin-right: 20%; - height: 24%; } .ysldiv21440{ margin-top: 14%; margin-left: 47%; margin-right: 17%; - height: 25%; } .ysldiv21280{ @@ -288,6 +301,12 @@ margin-right: 14%; height: 25%; } +.ysldiv21366{ + margin-top: 15%; + margin-left: 51%; + margin-right: 14%; + height: 23%; +} .ysldiv21024{ margin-top: 20%; margin-left: 61%; @@ -303,12 +322,17 @@ } .ysldiv31680{ - margin-top: 11%; - margin-left: 14%; + margin-top: 11.5%; + margin-left: 14%; + margin-right: 45%; +} +.ysldiv31600{ + margin-top: 12%; + margin-left: 12%; margin-right: 45%; } .ysldiv31440{ - margin-top: 13%; + margin-top: 13.5%; margin-left: 8%; margin-right: 44%; } @@ -318,6 +342,11 @@ margin-left: 3%; margin-right: 44%; } +.ysldiv31366{ + margin-top: 14%; + margin-left: 6%; + margin-right: 43%; +} .ysldiv31024{ margin-top: 18%; margin-left: 1%; @@ -327,27 +356,37 @@ /*目录管理*/ .ysldiv41900{ - margin-top: 18%; + margin-top: 16%; margin-left: 19%; - margin-right: 28%; + margin-right: 29%; } .ysldiv41680{ - margin-top: 21%; + margin-top: 18%; margin-left: 14%; + margin-right: 24%; +} +.ysldiv41600{ + margin-top: 19%; + margin-left: 12%; margin-right: 23%; } .ysldiv41440{ - margin-top: 24%; + margin-top: 21%; margin-left: 8%; - margin-right: 19%; + margin-right: 20%; } .ysldiv41280{ - margin-top: 27%; + margin-top: 24%; margin-left: 3%; margin-right: 17%; } +.ysldiv41366{ + margin-top: 22%; + margin-left: 6%; + margin-right: 20%; +} .ysldiv41024{ margin-top: 29%; margin-left: 0%; @@ -356,27 +395,37 @@ /*导航排序*/ .ysldiv51900{ - margin-top: 18%; + margin-top: 16%; margin-left: 18%; margin-right: 42%; } .ysldiv51680{ - margin-top: 20%; - margin-left: 13%; - margin-right: 41%; + margin-top: 18%; + margin-left: 13%; + margin-right: 40%; +} +.ysldiv51600{ + margin-top: 19%; + margin-left: 11%; + margin-right: 39%; } .ysldiv51440{ - margin-top: 24%; + margin-top: 21%; margin-left: 7%; - margin-right: 38%; + margin-right: 39%; } .ysldiv51280{ - margin-top: 27%; + margin-top: 24%; margin-left: 2%; margin-right: 38%; } +.ysldiv51366{ + margin-top: 22%; + margin-left: 5%; + margin-right: 39%; +} .ysldiv51024{ margin-top: 34%; margin-left: -1%; @@ -395,6 +444,11 @@ margin-left: 31%; margin-right: 14%; } +.ysldiv61600{ + margin-top: 19%; + margin-left: 30%; + margin-right: 12%; +} .ysldiv61440{ margin-top: 21%; margin-left: 28%; @@ -407,6 +461,12 @@ margin-right: 3%; height: 53%; } +.ysldiv61366{ + margin-top: 22%; + margin-left: 26%; + margin-right: 6%; + height: 53%; +} .ysldiv61024{ margin-top: 26%; margin-left: 27%; diff --git a/public/react/src/modules/courses/shixunHomework/shixunreport/Coursesshixundetails.js b/public/react/src/modules/courses/shixunHomework/shixunreport/Coursesshixundetails.js index 529a4646b..23f6d1e48 100644 --- a/public/react/src/modules/courses/shixunHomework/shixunreport/Coursesshixundetails.js +++ b/public/react/src/modules/courses/shixunHomework/shixunreport/Coursesshixundetails.js @@ -44,7 +44,7 @@ class Coursesshixundetails extends Component { data&&data.forEach((item,key)=>{ datas.push({ number: item.position, - name: item.output_detail + name: item.output_detail=== ""||item.output_detail===null?"暂无数据":item.output_detail }) }) diff --git a/public/react/src/modules/courses/shixunHomework/shixunreport/OfficialAcademicTranscript.js b/public/react/src/modules/courses/shixunHomework/shixunreport/OfficialAcademicTranscript.js index c7c3b67e4..e2cefe247 100644 --- a/public/react/src/modules/courses/shixunHomework/shixunreport/OfficialAcademicTranscript.js +++ b/public/react/src/modules/courses/shixunHomework/shixunreport/OfficialAcademicTranscript.js @@ -177,6 +177,8 @@ class OfficialAcademicTranscript extends Component { } .TaskForms{ width: 500px; + text-align: left !important; + padding: 16px !important; } .TaskForms.ant-table-header-column{ width: 100%; diff --git a/public/react/src/modules/courses/shixunHomework/shixunreport/Shixunechart.js b/public/react/src/modules/courses/shixunHomework/shixunreport/Shixunechart.js index dff7c6859..c12ec13d5 100644 --- a/public/react/src/modules/courses/shixunHomework/shixunreport/Shixunechart.js +++ b/public/react/src/modules/courses/shixunHomework/shixunreport/Shixunechart.js @@ -12,6 +12,7 @@ function startechart(data){ var option = { title: { text: '工作效率', + subtext: '工作效率=log(实训总得分/实训总耗时)' }, grid:{ left: '3%', @@ -61,7 +62,7 @@ function startechart(data){ yAxis: [ { type : "value", - name : " 实训总得分/实训总耗时", + name : " ", nameGap: 20, nameTextStyle: { color: '#000', @@ -169,6 +170,7 @@ function startechart(data){ var option1 = { title: { text: '能力值', + subtext: '能力值(实训获得经验值/实训评测次数)' }, backgroundColor: '#fff', color: [ @@ -212,7 +214,7 @@ function startechart(data){ }, yAxis: { type: 'value', - name: " 实训获得经验值/实训评测次数", + name: " ", nameLocation: 'end', nameGap: 20, nameTextStyle: { @@ -356,7 +358,7 @@ class Shixunechart extends Component { `} -
    +
  • 姓名
  • diff --git a/public/react/src/modules/courses/shixunHomework/style.css b/public/react/src/modules/courses/shixunHomework/style.css index ce937e597..f2b0c39ed 100644 --- a/public/react/src/modules/courses/shixunHomework/style.css +++ b/public/react/src/modules/courses/shixunHomework/style.css @@ -1,39 +1,56 @@ -.ant-checkbox-group > div .boardsList{ - /* border-top: 1px solid #ebebeb; */ - padding:10px 0px 20px!important; -} -.ant-checkbox-group > div:first-child .boardsList{ - border-top: none; -} -.boardsList .contentSection { - flex: 1; - margin-left: 15px; -} - - -.ant-select-selection--single,.ant-select-selection__rendered{ - height: 40px; - line-height: 40px; -} - -.ant-input:focus + .ant-input-group-addon{ - background-color: #fff!important; -} -.ant-input-group-addon{ - color: #666!important; - font-size: 12px; - border: 1px solid #d9d9d9!important; - border-left: none!important; -} - -.courseForm .ant-form-item-label{ - margin-left: unset; -} - -/* 毕设选题列表 */ -.TopicDetailTable .topHead{background-color: #F5F5F5;height: 56px;color: #666666;padding:0px 30px} -.TopicDetailTable .topHead span,.TopicDetailTable .bottomBody li span{display: block;float: left;justify-content: center;align-items: center;display: -webkit-flex;height: 56px;} -.TopicDetailTable .bottomBody{padding:0px 30px} -.TopicDetailTable .bottomBody li{border-bottom: 1px solid #eee;clear: both;} -.TopicDetailTable .bottomBody li:last-child{border-bottom: none;} - +.ant-checkbox-group > div .boardsList{ + /* border-top: 1px solid #ebebeb; */ + padding:10px 0px 20px!important; +} +.ant-checkbox-group > div:first-child .boardsList{ + border-top: none; +} +.boardsList .contentSection { + flex: 1; + margin-left: 15px; +} + + +.ant-select-selection--single,.ant-select-selection__rendered{ + height: 40px; + line-height: 40px; +} + +.ant-input:focus + .ant-input-group-addon{ + background-color: #fff!important; +} +.ant-input-group-addon{ + color: #666!important; + font-size: 12px; + border: 1px solid #d9d9d9!important; + border-left: none!important; +} + +.courseForm .ant-form-item-label{ + margin-left: unset; +} + +/* 毕设选题列表 */ +.TopicDetailTable .topHead{background-color: #F5F5F5;height: 56px;color: #666666;padding:0px 30px} +.TopicDetailTable .topHead span,.TopicDetailTable .bottomBody li span{display: block;float: left;justify-content: center;align-items: center;display: -webkit-flex;height: 56px;} +.TopicDetailTable .bottomBody{padding:0px 30px} +.TopicDetailTable .bottomBody li{border-bottom: 1px solid #eee;clear: both;} +.TopicDetailTable .bottomBody li:last-child{border-bottom: none;} + +.maxnamewidth100{ + max-width: 100px; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + cursor: default; +} +.maxnamewidth110{ + max-width: 110px; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + cursor: default; +} +.ysyslxh{ + background: #fafafa; +} \ No newline at end of file diff --git a/public/react/src/modules/forums/MemoDetail.js b/public/react/src/modules/forums/MemoDetail.js index 78242866e..d3007c433 100644 --- a/public/react/src/modules/forums/MemoDetail.js +++ b/public/react/src/modules/forums/MemoDetail.js @@ -22,8 +22,11 @@ import {ImageLayerOfCommentHOC} from '../page/layers/ImageLayerOfCommentHOC' import MemoDetailKEEditor from './MemoDetailKEEditor' import MemoDetailMDEditor from './MemoDetailMDEditor' -import { bytesToSize } from 'educoder' +import { bytesToSize, CBreadcrumb } from 'educoder' import { Tooltip } from 'antd' + +// import CBreadcrumb from '../courses/common/CBreadcrumb' +import { typeNameMap2 } from './MemoNew' const $ = window.$ function urlStringify(params) { let noParams = true; @@ -682,6 +685,13 @@ class MemoDetail extends Component { memo.isDetailPage = true; // TODO 图片上传地址 return ( + +
    {/* fl with100 */} } { - detailInfoList === undefined ? "" : detailInfoList.progress === null ? "" : + this.props.checkIfLogin()===false?"":detailInfoList === undefined ? "" : detailInfoList.progress === null ? "" :

    我的进展 diff --git a/public/react/src/modules/paths/PathDetail/addCollaborators.js b/public/react/src/modules/paths/PathDetail/addCollaborators.js index c828f1589..6100ab2f6 100644 --- a/public/react/src/modules/paths/PathDetail/addCollaborators.js +++ b/public/react/src/modules/paths/PathDetail/addCollaborators.js @@ -1,216 +1,213 @@ -import React, { Component } from 'react'; -import { Modal,Checkbox,Input } from "antd"; -import axios from 'axios'; - -const Search = Input.Search; -const CheckboxGroup = Checkbox.Group; -class addCollaborators extends Component{ - constructor(props){ - super(props); - this.state = { - addPartner:false, - page:1, - partnerList:undefined, - search:'', - partnerListid:[], - checkAll: false, - optionss:[] - } - } - addBox=()=>{ - - this.setState({ - addPartner:true, - search:"", - page:1, - partnerList:undefined, - optionss:[] - }) - this.searchList("") - - } - hideAddBox=()=>{ - this.setState({ - addPartner:false, - optionss:[], - partnerListid:[] - }) - } - // 搜索框输入 - changeSearchValue=(e)=>{ - this.setState({ - search: e.target.value - }) - } - // 回车搜索--搜索成功后page为1 - searchList=()=>{ - let id=this.props.match.params.pathId; - let {search,page}=this.state; - let url='/paths/'+id+'/search_members.json?search='+search+"&page="+page; - axios.post(url).then((result)=>{ - if(result.status==200){ - let list=result.data.users; - let optionss=[] - for(var i=0; i{ - console.log(error); - }) - } - - - SaveAddBox=()=>{ - let {partnerListid} =this.state; - let id=this.props.match.params.pathId; - let url="/paths/"+id+"/add_subject_members.json" - axios.post(url,{ - user_ids:partnerListid - }).then((response) => { - if(response.status==200){ - this.setState({ - addPartner:false, - optionss:[], - partnerListid:[] - }) - this.props.updatadetailInfoLists(); - } - }).catch((error) => { - console.log(error) - }); - } - - addCollaboratorsid=(id)=>{ - this.setState({ - partnerListid:id - }) - } - - onCheckAllChange = (e) => { - let {optionss} =this.state; - - if(e.target.checked===true){ - this.setState({ - checkAll: e.target.checked, - partnerListid:optionss - }); - }else{ - this.setState({ - checkAll: e.target.checked, - partnerListid:[] - }); - } - - } - - contentViewScroll=(e)=>{ - //滑动到底判断 - if(e.currentTarget.scrollHeight-e.currentTarget.scrollTop===e.currentTarget.clientHeight){ - // console.log("到达底部"); - - let id=this.props.match.params.pathId; - let {search,page,partnerList,optionss}=this.state; - let newpage=page+1; - let url='/paths/'+id+'/search_members.json?search='+search+"&page="+newpage; - - axios.post(url).then((result)=>{ - if(result.status==200){ - let list=result.data.users; - let newlist=partnerList; - for(var j=0; j{ - console.log(error); - }) - - } - - } - - render(){ - let {addPartner,search,partnerList,optionss,checkAll,partnerListid} = this.state; - - return( -

    - { - this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_add_member===true? - + 添加合作者 - :"" - } - - -
    -
    - this.searchList(search)} /> -
    -

    - - 姓名 - 昵称 - 职位 - 单位 -

    -
      - - { - partnerList && partnerList.map((item,key)=>{ - return( -
    • - - {item.user_name} - {item.nickname} - {item.identity} - {item.school_name} -
    • - ) - }) - } -
      -
    -
    - 取消 - 确定 -
    -
    -
    -
    - ) - } -} +import React, { Component } from 'react'; +import { Modal,Checkbox,Input } from "antd"; +import axios from 'axios'; + +const Search = Input.Search; +const CheckboxGroup = Checkbox.Group; +class addCollaborators extends Component{ + constructor(props){ + super(props); + this.state = { + addPartner:false, + page:1, + partnerList:undefined, + search:'', + partnerListid:[], + checkAll: false, + optionss:[] + } + } + addBox=()=>{ + + this.setState({ + addPartner:true, + search:"", + page:1, + partnerList:undefined, + optionss:[] + }) + this.searchList("") + + } + hideAddBox=()=>{ + this.setState({ + addPartner:false, + optionss:[], + partnerListid:[] + }) + } + // 搜索框输入 + changeSearchValue=(e)=>{ + this.setState({ + search: e.target.value + }) + } + // 回车搜索--搜索成功后page为1 + searchList=()=>{ + let id=this.props.match.params.pathId; + let {search,page}=this.state; + let url='/paths/'+id+'/search_members.json?search='+search+"&page="+page; + axios.post(url).then((result)=>{ + if(result.status==200){ + let list=result.data.users; + let optionss=[] + for(var i=0; i{ + console.log(error); + }) + } + + + SaveAddBox=()=>{ + let {partnerListid} =this.state; + let id=this.props.match.params.pathId; + let url="/paths/"+id+"/add_subject_members.json" + axios.post(url,{ + user_ids:partnerListid + }).then((response) => { + if(response.status==200){ + this.setState({ + addPartner:false, + optionss:[], + partnerListid:[] + }) + this.props.updatadetailInfoLists(); + } + }).catch((error) => { + console.log(error) + }); + } + + addCollaboratorsid=(id)=>{ + this.setState({ + partnerListid:id + }) + } + + onCheckAllChange = (e) => { + let {optionss} =this.state; + + if(e.target.checked===true){ + this.setState({ + checkAll: e.target.checked, + partnerListid:optionss + }); + }else{ + this.setState({ + checkAll: e.target.checked, + partnerListid:[] + }); + } + + } + + contentViewScroll=(e)=>{ + //滑动到底判断 + if(e.currentTarget.scrollHeight-e.currentTarget.scrollTop===e.currentTarget.clientHeight){ + // console.log("到达底部"); + + let id=this.props.match.params.pathId; + let {search,page,partnerList,optionss}=this.state; + let newpage=page+1; + let url='/paths/'+id+'/search_members.json?search='+search+"&page="+newpage; + + axios.post(url).then((result)=>{ + if(result.status==200){ + let list=result.data.users; + let newlist=partnerList; + for(var j=0; j{ + console.log(error); + }) + + } + + } + + render(){ + let {addPartner,search,partnerList,optionss,checkAll,partnerListid} = this.state; + + return( + this.props.detailInfoList===undefined?"":this.props.detailInfoList.allow_add_member===true? +
    + + 添加合作者 + +
    +
    + this.searchList(search)} /> +
    +

    + + 姓名 + 昵称 + 职位 + 单位 +

    +
      + + { + partnerList && partnerList.map((item,key)=>{ + return( +
    • + + {item.user_name} + {item.nickname} + {item.identity} + {item.school_name} +
    • + ) + }) + } +
      +
    +
    + 取消 + 确定 +
    +
    +
    +
    :"" + + ) + } +} export default addCollaborators; \ No newline at end of file diff --git a/public/react/src/modules/paths/PathDetail/sendPanel.js b/public/react/src/modules/paths/PathDetail/sendPanel.js index 2f9059a18..ae7dd5b00 100644 --- a/public/react/src/modules/paths/PathDetail/sendPanel.js +++ b/public/react/src/modules/paths/PathDetail/sendPanel.js @@ -27,9 +27,27 @@ class sendPanel extends Component{ //发送至 SentToLesson =() =>{ - this.setState({ - sentShixunPath:true - }) + let id=this.props.detailInfoList.id; + let url="/paths/"+id+"/choose_course.json"; + axios.get(url).then((result)=>{ + if(result.status==200){ + + if (result.data.status === 403||result.data.status === 402||result.data.status === 407||result.data.status === 408) { + + }else{ + this.setState({ + sendToCourseList:result.data, + sentShixunPath:true + }) + } + + } + }).catch((error)=>{ + console.log(error); + }) + // this.setState({ + // sentShixunPath:true + // }) } //隐藏发送至弹框 hideSenttothevalue =()=>{ @@ -99,17 +117,17 @@ class sendPanel extends Component{ } componentDidMount(){ - let id=this.props.detailInfoList.id; - let url="/paths/"+id+"/choose_course.json"; - axios.get(url).then((result)=>{ - if(result.status==200){ - this.setState({ - sendToCourseList:result.data - }) - } - }).catch((error)=>{ - console.log(error); - }) + // let id=this.props.detailInfoList.id; + // let url="/paths/"+id+"/choose_course.json"; + // axios.get(url).then((result)=>{ + // if(result.status==200){ + // this.setState({ + // sendToCourseList:result.data + // }) + // } + // }).catch((error)=>{ + // console.log(error); + // }) } cardsModalcancel=()=>{ diff --git a/public/react/src/modules/paths/ShixunPathSearch.js b/public/react/src/modules/paths/ShixunPathSearch.js index da19e0521..3cba8e33f 100644 --- a/public/react/src/modules/paths/ShixunPathSearch.js +++ b/public/react/src/modules/paths/ShixunPathSearch.js @@ -14,7 +14,7 @@ class ShixunPathSearch extends Component{ constructor(props) { super(props) this.state = { - order:"publish_time", + order:"updated_at", select:0, search:"", page:1, @@ -126,20 +126,20 @@ class ShixunPathSearch extends Component{
    { diff --git a/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js b/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js index ba8655d9b..12894603a 100644 --- a/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js +++ b/public/react/src/modules/projectPackages/PackageIndex/PackageConcent.js @@ -204,14 +204,14 @@ class PackageConcent extends Component {
    {isRender===true?this.Modifyloginvalue()} - {...this.state} {...this.props} + {...this.state} />:""} {AccountProfiletype===true?this.hideAccountProfile()} - {...this.state} {...this.props} + {...this.state} />:""}
    diff --git a/public/react/src/modules/tpm/NewHeader.js b/public/react/src/modules/tpm/NewHeader.js index 56b386288..b816448e0 100644 --- a/public/react/src/modules/tpm/NewHeader.js +++ b/public/react/src/modules/tpm/NewHeader.js @@ -8,7 +8,7 @@ import PropTypes from 'prop-types'; // /images/educoder/icon/search.svg -import { getImageUrl, toPath } from 'educoder' +import { getImageUrl, toPath ,trigger,broadcastChannelPostMessage} from 'educoder' import axios from 'axios'; @@ -30,8 +30,6 @@ import 'antd/lib/input/style/index.css'; import './TPMIndex.css'; -import { trigger, broadcastChannelPostMessage } from 'educoder'; - const $ = window.$ // TODO 这部分脚本从公共脚本中直接调用 @@ -316,6 +314,7 @@ class NewHeader extends Component { // this.setState({ // isRender:true // }) + broadcastChannelPostMessage('refreshPage') window.location.href = "/"; } }).catch((error) => { @@ -649,7 +648,7 @@ submittojoinclass=(value)=>{ return ( -
    +
    {isRender===true?this.Modifyloginvalue()} @@ -659,10 +658,10 @@ submittojoinclass=(value)=>{ {AccountProfiletype===true?this.hideAccountProfile()} - {...this.state} {...this.props} + {...this.state} />:""} - + 高校智能化教学与实训平台 @@ -806,11 +805,11 @@ submittojoinclass=(value)=>{ <%= link_to '注册', user_join_path, :className => "ml5" %> */} { user===undefined? - + this.educoderlogin()} className="mr5 color-white">登录 注册 - :user.login===""? + :user.login===""? this.educoderlogin()} className="mr5 color-white">登录 注册 @@ -881,9 +880,9 @@ submittojoinclass=(value)=>{ />:""} {/* /courses/join_course_multi_role */} - {/*
  • */} +
  • 加入项目 - {/*
  • */} + {tojoinitemtype===true?{ - let id = this.props.match.params.shixunId; + if(this.props.checkIfLogin()===false){ + this.props.showLoginDialog() + return + } + if(this.props.current_user&&this.props.current_user.profile_completed===false){ + this.setState({ + AccountProfiletype:true + }) + return + } + let id = this.props.match.params.shixunId; let url="/shixuns/" + id +"/search_user_courses.json"; this.setState({ Senttothetype:true @@ -384,6 +394,11 @@ class TPMBanner extends Component { //开始实战按钮 startshixunCombat=(id, reset)=>{ + if(this.props.checkIfLogin()===false){ + this.props.showLoginDialog() + return + } + if(this.props.current_user&&this.props.current_user.profile_completed===false){ this.setState({ AccountProfiletype:true @@ -471,7 +486,22 @@ class TPMBanner extends Component { }) } - render() { + + showonMouseOver=()=>{ + $("#ratePanel").show(); + this.setState({ + showradios:true + }) + } + + hideonMouseOut=()=>{ + $("#ratePanel").hide(); + this.setState({ + showradios:false + }) + } + + render() { let { Forkvisible, Senttothetype, @@ -541,21 +571,6 @@ class TPMBanner extends Component { // } // } // } - - - - $("#commentsStar").hover(()=>{ - $("#ratePanel").show(); - this.setState({ - showradios:true - }) - },()=>{ - $("#ratePanel").hide(); - this.setState({ - showradios:false - }) - }) - const radioStyle = { display: 'block', height: '30px', @@ -571,8 +586,8 @@ class TPMBanner extends Component { {AccountProfiletype===true?this.hideAccountProfile()} - {...this.state} {...this.props} + {...this.state} />:""} @@ -617,12 +632,12 @@ class TPMBanner extends Component { -
    +
    this.showonMouseOver()} onMouseOut={()=>this.hideonMouseOut()}>
    学员评分
    -
    +
    this.hideonMouseOut()}>
    @@ -638,7 +653,7 @@ class TPMBanner extends Component {
    -
    +
    {showradios === true ? @@ -900,18 +915,25 @@ class TPMBanner extends Component {
    {this.state.Senttothevcaluetype===true?
    请选择你要发送的课堂
    :""} -
    - 12 ? "block" : "none"}} +
    12 ? "block" : "none"}}> + +
    - 确定 +
    +
    +
    +
    + 取消 + 确定 +
    - 取消 -
    + +
    diff --git a/public/react/src/modules/tpm/TPMIndexHOC.js b/public/react/src/modules/tpm/TPMIndexHOC.js index 0361b090f..b18b2b1c7 100644 --- a/public/react/src/modules/tpm/TPMIndexHOC.js +++ b/public/react/src/modules/tpm/TPMIndexHOC.js @@ -10,6 +10,8 @@ import axios from 'axios'; import './TPMIndex.css' import LoginDialog from '../login/LoginDialog'; +import AccountProfile from '../user/AccountProfile'; + import Trialapplication from "../login/Trialapplication"; // import "antd/dist/antd.css"; // import '../../css/educoder/edu-common.css' @@ -33,14 +35,14 @@ if (!window['indexHOCLoaded']) { // $('head').append($('') // .attr('href', `${_url_origin}/stylesheets/educoder/antd.min.css?1525440977`)); $('head').append($('') - .attr('href', `${_url_origin}/stylesheets/css/edu-common.css?7`)); + .attr('href', `${_url_origin}/stylesheets/css/edu-common.css?6`)); $('head').append($('') - .attr('href', `${_url_origin}/stylesheets/educoder/edu-main.css?7`)); + .attr('href', `${_url_origin}/stylesheets/educoder/edu-main.css?6`)); // index.html有加载 $('head').append($('') - .attr('href', `${_url_origin}/stylesheets/educoder/edu-all.css?7`)); + .attr('href', `${_url_origin}/stylesheets/educoder/edu-all.css?6`)); // $('head').append($('') @@ -76,7 +78,8 @@ export function TPMIndexHOC(WrappedComponent) { Footerdown:undefined, coursedata: {}, - isRender: false + isRender: false, + AccountProfiletype: false } } @@ -300,11 +303,26 @@ export function TPMIndexHOC(WrappedComponent) { isRender: true }) } + checkIfLogin = () => { return this.state.current_user && this.state.current_user.login != '' } + + hideAccountProfile = () => { + this.setState({ + AccountProfiletype: false + }) + } + showProfileCompleteDialog = () => { + this.setState({ + AccountProfiletype: true + }) + } + checkIfProfileCompleted = () => { + return this.state.current_user && this.state.current_user.profile_completed + } render() { - let{Headertop,Footerdown, isRender}=this.state; + let{Headertop,Footerdown, isRender, AccountProfiletype}=this.state; const common = { isSuperAdmin:this.isSuperAdmin, isAdminOrCreator:this.isAdminOrCreator, @@ -319,14 +337,21 @@ export function TPMIndexHOC(WrappedComponent) { showLoginDialog: this.showLoginDialog, checkIfLogin: this.checkIfLogin, + showProfileCompleteDialog: this.showProfileCompleteDialog, + checkIfProfileCompleted: this.checkIfProfileCompleted, } return (
    {isRender===true ? this.hideLoginDialog()} - {...this.state} {...this.props} + {...this.state} /> : ""} + {AccountProfiletype===true ? this.hideAccountProfile()} + {...this.props} + {...this.state} + />:""} {/* 注释掉了1440 影响到了手机屏幕的展示 */} diff --git a/public/react/src/modules/tpm/TPMsettings/TPMsettings.js b/public/react/src/modules/tpm/TPMsettings/TPMsettings.js index 2e34bcffb..7285c9a39 100644 --- a/public/react/src/modules/tpm/TPMsettings/TPMsettings.js +++ b/public/react/src/modules/tpm/TPMsettings/TPMsettings.js @@ -3,7 +3,7 @@ import React, { Component } from 'react'; import MonacoEditor from 'react-monaco-editor'; //MonacoDiffEditor 对比模式 -import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal,Icon,DatePicker,Breadcrumb} from 'antd'; +import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal,Icon,DatePicker,Breadcrumb,Upload,Button,notification} from 'antd'; // import "antd/dist/antd.css"; @@ -15,7 +15,7 @@ import axios from 'axios'; import './css/TPMsettings.css'; -import { getImageUrl, toPath, getUrl } from 'educoder'; +import { getImageUrl, toPath, getUrl ,appendFileSizeToUploadFileAll} from 'educoder'; let origin = getUrl(); @@ -30,7 +30,7 @@ let currentValue; const Option = Select.Option; const RadioGroup = Radio.Group; - +const confirm = Modal.confirm; // 处理整点 半点 // 取传入时间往后的第一个半点 export function handleDateStrings(dateString) { @@ -207,6 +207,7 @@ export default class TPMsettings extends Component { constructor(props) { super(props) this.state = { + fileList: [], commandLine: 0, Openpublic: 0, settingsData: undefined, @@ -268,7 +269,8 @@ export default class TPMsettings extends Component { pod_exist_time: undefined, pod_exist_timetype: false, shixunmemoMDvalue:"", - language:"" + language:"", + deleteisnot:true } } descriptionMD=(initValue, id)=> { @@ -1011,32 +1013,168 @@ export default class TPMsettings extends Component { }) } - sendsure_apply = () => { - let {sendsure_applyvalue} = this.state; - let url = "/shixuns/apply_shixun_mirror.json"; - axios.post(url, { - note: sendsure_applyvalue - }).then((response) => { - if (response.status === 200) { - if (response.data.status == 1) { - this.setState({ - postapplyvisible: false, - postapplytitle: true - }) - } + setlanguagewrite = (e)=>{ + this.setState({ + languagewrite: e.target.value + }) + } - } - }).catch((error) => { - console.log(error) - }); + setsystemenvironment = (e) => { + this.setState({ + systemenvironment: e.target.value + }) + } - } + settestcoderunmode = (e) => { + this.setState({ + testcoderunmode: e.target.value + }) - sendhideModaly = () => { - this.setState({ - postapplyvisible: false - }) - } + } + + sendsure_apply = () => { + let {languagewrite,systemenvironment,testcoderunmode} = this.state; + // console.log("点击确定") + // console.log("languagewrite"+languagewrite); + // console.log("systemenvironment"+systemenvironment); + // console.log("testcoderunmode"+testcoderunmode); + + // let attachment_ids = undefined + // if (this.state.fileList) { + // attachment_ids = this.state.fileList.map(item => { + // return item.response ? item.response.id : item.id + // }) + // } + if(languagewrite === undefined || languagewrite === "" ){ + // this.props.showNotification(`请填写该镜像是基于什么语言`); + this.setState({ + languagewritetype:true + }) + return + } + if(systemenvironment === undefined || systemenvironment === ""){ + // this.props.showNotification(`请填写该镜像是基于什么语言系统环境`); + this.setState({ + systemenvironmenttype:true + }) + return; + + } + if(testcoderunmode === undefined || testcoderunmode === "") { + // this.props.showNotification(`请填写该镜像中测试代码运行方式`); + this.setState({ + testcoderunmodetype:true + }) + return; + } + var attachment_ids=undefined; + if (this.state.fileList) { + attachment_ids = this.state.fileList.map(item => { + return item.response ? item.response.id : item.id + }) + } + + if( attachment_ids === undefined || attachment_ids.length===0){ + + // notification.open( + // { + // message: '提示', + // description: + // '请上传附件!', + // + // } + // ) + this.setState({ + attachmentidstype:true + }) + return; + } + // console.log("attachment_ids"+attachment_ids); + + // alert(languagewrite +" "+systemenvironment +" "+testcoderunmode + " "+attachment_ids); + + var data={ + language:languagewrite, + runtime:systemenvironment, + run_method:testcoderunmode, + attachment_id:attachment_ids[0], + } + var url =`/shixuns/apply_shixun_mirror.json`; + axios.post(url,data + ).then((response) => { + + try { + if (response.data) { + // const { id } = response.data; + // if (id) { + if(this.state.file !== undefined){ + console.log("549"); + // this.deleteAttachment(this.state.file); + this.setState({ + file:undefined, + deleteisnot:true, + languagewrite:"", + systemenvironment:"", + testcoderunmode:"", + fileList:[] + }) + }else { + this.setState({ + file:undefined, + deleteisnot:true, + languagewrite:"", + systemenvironment:"", + testcoderunmode:"", + fileList:[] + }) + } + // this.props.showNotification('提交成功!'); + notification.open( + { + message: '提示', + description: + '提交成功!', + + } + ) + this.sendhideModaly() + // this.props.history.push(`/courses/${cid}/graduation_topics`); + // } + } + }catch (e) { + + } + + }) + + } + + sendhideModaly = () => { + this.setState({ + postapplyvisible: false, + }) + if(this.state.file !== undefined){ + console.log("580"); + // this.deleteAttachment(this.state.file); + this.setState({ + file:undefined, + deleteisnot:true, + languagewrite:"", + systemenvironment:"", + testcoderunmode:"", + fileList:[] + }) + }else { + this.setState({ + file:undefined, + deleteisnot:true, + languagewrite:"", + systemenvironment:"", + testcoderunmode:"", + fileList:[] + }) + } + } yeshidemodel = () => { this.setState({ @@ -1198,29 +1336,80 @@ export default class TPMsettings extends Component { }) } + handleChange = (info) => { + console.log("handleChange1"); + let {fileList}=this.state; + if(fileList.length===0){ + let fileLists = info.fileList; + this.setState({ fileList:fileLists, + deleteisnot:false}); + } + + } + + onAttachmentRemove = (file) => { + confirm({ + title: '确定要删除这个附件吗?', + okText: '确定', + cancelText: '取消', + // content: 'Some descriptions', + onOk: () => { + console.log("665") + this.deleteAttachment(file) + }, + onCancel() { + console.log('Cancel'); + }, + }); + return false; + } + + deleteAttachment = (file) => { + console.log(file); + let id=file.response ==undefined ? file.id : file.response.id + const url = `/attachments/${id}.json` + axios.delete(url, { + }) + .then((response) => { + if (response.data) { + const { status } = response.data; + if (status == 0) { + // console.log('--- success') + + this.setState((state) => { + + const index = state.fileList.indexOf(file); + const newFileList = state.fileList.slice(); + newFileList.splice(index, 1); + return { + fileList: newFileList, + deleteisnot:true + }; + }); + } + } + }) + .catch(function (error) { + console.log(error); + }); + } + + - render() { + render() { let { postapplyvisible, - sendsure_applyvalue, postapplytitle, shixunnametype, shixunmaintype, evaluate_scripttype, - exec_timetype, traineetype, standard_scripts, - description, - evaluate_script, name, settingsData, webssh, use_scope, - shixunsstatus, shixunsID, - exec_time, - pod_exist_time, - pod_exist_timetype, can_copy, choice_standard_scripts, Executiveordervalue, @@ -1241,19 +1430,15 @@ export default class TPMsettings extends Component { standard_scriptsModal, standard_scriptsModals, SelectTheCommandtype, - status, - opers, - operss, - opersss, testscripttiptype, operateshixunstype, opening_time, - opensmail, scope_partmenttype, newuse_scope, scope_partments, shixunmemoMDvalue,delType, - shixun_service_configs + shixun_service_configs, + fileList, } = this.state; let options; @@ -1265,7 +1450,45 @@ export default class TPMsettings extends Component { ) }) } + const uploadProps = { + width: 600, + fileList, + multiple: true, + // https://github.com/ant-design/ant-design/issues/15505 + // showUploadList={false},然后外部拿到 fileList 数组自行渲染列表。 + // showUploadList: false, + action: `${getUrl()}/api/attachments.json`, + onChange: this.handleChange, + onRemove: this.onAttachmentRemove, + beforeUpload: (file) => { + // console.log('beforeUpload', file.name); + const isLt150M = file.size / 1024 / 1024 < 50; + if (!isLt150M) { + // this.props.showNotification(`文件大小必须小于50MB`); + notification.open( + { + message: '提示', + description: + '文件大小必须小于50MB', + } + ) + } + if(this.state.file !== undefined){ + console.log("763") + this.setState({ + file:file + }) + }else { + this.setState({ + file:file + }) + } + + console.log("handleChange2"); + return isLt150M; + }, + } const dateFormat = 'YYYY-MM-DD HH:mm:ss'; let operateauthority=this.props.identity===1?true:this.props.identity<5&&this.state.status==0?true:false; @@ -1391,13 +1614,13 @@ export default class TPMsettings extends Component { }) } - {/**/} - {/*列表中没有?*/} - {/*申请新建*/} - {/*

    */} +

    + 列表中没有? + 申请新建 +

    -
  • - +
  • + + style={{width:'89%',height:'100px'}} + onInput={this.setlanguagewrite} + value={this.state.languagewrite} + placeholder="请填写该镜像是基于什么语言:示例:Python" + id="demand_info"> +
  • +
    {this.state.languagewritetype===true?"请填写该镜像语言":""}
    +
  • + + +
  • +
    {this.state.systemenvironmenttype===true?"请填写该镜像语言系统环境":""}
    +
  • + + + +
  • +
    {this.state.testcoderunmodetype===true?"请填写该镜像测试代码运行方式":""}
    +
  • + +
    + + + 上传附件 + (单个文件50M以内) + +
    +
  • +
    + {this.state.attachmentidstype===true?"请上传附件":""} +
    +
  • + this.sendhideModaly()} + >取消 +
  • - this.sendsure_apply()} - className="task-btn task-btn-orange fr mr12">确定 - this.sendhideModaly()} - >取消
    +
    + + + { - this.setState({ + + + this.setState({ CreatePracticesendtype:true }) @@ -237,17 +239,18 @@ export default class TPMchallengesnew extends Component { exec_time:exec_time }).then((response) => { if (response.data.status === 1) { - $("html").animate({ scrollTop: 0 }) + // $("html").animate({ scrollTop: 0 }) - this.setState({ - setopen: true, - CreatePracticesendtype:false, - tab2url: "/shixuns/" + id + "/challenges/"+response.data.challenge_id+"/tab=2", - tab3url: "/shixuns/" + id + "/challenges/"+response.data.challenge_id+"/tab=3", - }) + window.location.href=`/shixuns/${id}/challenges/${response.data.challenge_id}/editcheckpoint`; + // this.setState({ + // setopen: true, + // CreatePracticesendtype:false, + // tab2url: "/shixuns/" + id + "/challenges/"+response.data.challenge_id+"/tab=2", + // tab3url: "/shixuns/" + id + "/challenges/"+response.data.challenge_id+"/tab=3", + // }) } - this.props.showSnackbar(response.data.messages); + // this.props.showSnackbar(response.data.messages); }).catch((error) => { console.log(error) }); diff --git a/public/react/src/modules/tpm/challengesnew/TPMevaluation.js b/public/react/src/modules/tpm/challengesnew/TPMevaluation.js index 16c7cfedf..985a838fb 100644 --- a/public/react/src/modules/tpm/challengesnew/TPMevaluation.js +++ b/public/react/src/modules/tpm/challengesnew/TPMevaluation.js @@ -124,7 +124,8 @@ export default class TPMevaluation extends Component { handpathopt:false, scorevalue:false, markvalue:true, - scoretype:undefined + scoretype:undefined, + web_route:null } } @@ -215,6 +216,8 @@ export default class TPMevaluation extends Component { position: response.data.position, //int 关卡位置,导航栏中的第几关 scorevalue:response.data.test_set_score, markvalue:response.data.test_set_average, + web_route:response.data.web_route, + has_web_route:response.data.has_web_route }) this.evaluationoninputvalueonload(); if(response.data.power===false){ @@ -579,7 +582,7 @@ export default class TPMevaluation extends Component { $('textarea[autoHeight]').autoHeight(); } submitarbitrationevaluation=()=>{ - let{evaluationlist,shixunfilepath,shixunfilepathplay,shixunfileexpectpicturepath,shixunfilestandardpicturepath,shixunfilepicturepath,pathoptionvalue,scorevalue,markvalue}=this.state; + let{evaluationlist,shixunfilepath,shixunfilepathplay,shixunfileexpectpicturepath,shixunfilestandardpicturepath,shixunfilepicturepath,pathoptionvalue,scorevalue,markvalue,web_route}=this.state; let newscorevalue; @@ -647,7 +650,8 @@ export default class TPMevaluation extends Component { expect_picture_path:shixunfilestandardpicturepath, picture_path:shixunfilepicturepath, test_set_score:newscorevalue, - test_set_average:markvalue + test_set_average:markvalue, + web_route:web_route===null?undefined:web_route }, test_set:evaluationlist } @@ -741,6 +745,12 @@ export default class TPMevaluation extends Component { }); } + + updatewebroute=(e)=>{ + this.setState({ + web_route:e.target.value + }) + } render() { let { @@ -768,10 +778,11 @@ export default class TPMevaluation extends Component { next_challenge, StudentTaskPapers, StudentTaskDocs, - handpathopt, + web_route, scorevalue, markvalue, - scoretype + scoretype, + has_web_route } = this.state; let tab1url="/shixuns/" + shixunId + "/challenges/"+checkpointId+"/editcheckpoint"; @@ -978,6 +989,20 @@ export default class TPMevaluation extends Component {
    + {pathoptionvalue===4&&web_route!=null||pathoptionvalue===4&&has_web_route===true?
    +
    +

    Web路由

    +
    +
    + this.updatewebroute(e)} + placeholder="网站类型实训,请填写Web路由地址。例:java/mypage"/> +
    +
    +
    +
    :""} {pathoptionvalue===1||pathoptionvalue===5||pathoptionvalue===6?
    diff --git a/public/react/src/modules/tpm/newshixuns/Newshixuns.js b/public/react/src/modules/tpm/newshixuns/Newshixuns.js index 790402a22..14f5d7a5e 100644 --- a/public/react/src/modules/tpm/newshixuns/Newshixuns.js +++ b/public/react/src/modules/tpm/newshixuns/Newshixuns.js @@ -2,7 +2,7 @@ import React, {Component} from 'react'; import {TPMIndexHOC} from '../TPMIndexHOC'; -import {SnackbarHOC} from 'educoder'; +import {SnackbarHOC,appendFileSizeToUploadFileAll} from 'educoder'; import {Input, Select, Radio, Checkbox, Modal, Icon, DatePicker,Upload,Button,message,Form,notification} from 'antd'; @@ -635,16 +635,20 @@ class Newshixuns extends Component { // this.deleteAttachment(this.state.file); this.setState({ file:undefined, + deleteisnot:true, languagewrite:"", systemenvironment:"", testcoderunmode:"", + fileList:[] }) }else { this.setState({ file:undefined, + deleteisnot:true, languagewrite:"", systemenvironment:"", testcoderunmode:"", + fileList:[] }) } // this.props.showNotification('提交成功!'); @@ -676,16 +680,20 @@ class Newshixuns extends Component { // this.deleteAttachment(this.state.file); this.setState({ file:undefined, + deleteisnot:true, languagewrite:"", systemenvironment:"", testcoderunmode:"", + fileList:[] }) }else { this.setState({ file:undefined, + deleteisnot:true, languagewrite:"", systemenvironment:"", testcoderunmode:"", + fileList:[] }) } } @@ -752,10 +760,16 @@ class Newshixuns extends Component { // 附件相关 START handleChange = (info) => { + let {fileList}=this.state; console.log("handleChange1"); - let fileList = info.fileList; - this.setState({ fileList:fileList, - deleteisnot:false}); + if(fileList.length===0){ + let fileLists = info.fileList; + this.setState({ + // fileList:appendFileSizeToUploadFileAll(fileList), + fileList:fileLists, + deleteisnot:false}); + } + } onAttachmentRemove = (file) => { confirm({ @@ -837,7 +851,6 @@ class Newshixuns extends Component { } render() { const { getFieldDecorator } = this.props.form; - const thiss=this; let {testcoderunmode ,systemenvironment,languagewrite,deleteisnot, fileList,TimePickervalue, scope_partmenttype, opensmail, newshixunlist, name, scope_partment, departmentslist, postapplyvisible, sendsure_applyvalue, postapplytitle, shixun_nametype, main_types, trainee_types, SelectTheCommandtype, opers, datalisttype, onSearchvalue} = this.state; let options if (departmentslist != undefined) { @@ -871,14 +884,13 @@ class Newshixuns extends Component { } ) } - if(thiss.state.file !== undefined){ + if(this.state.file !== undefined){ console.log("763") - // thiss.deleteAttachment(thiss.state.file); - thiss.setState({ + this.setState({ file:file }) }else { - thiss.setState({ + this.setState({ file:file }) } @@ -1004,7 +1016,7 @@ class Newshixuns extends Component { > {/*
    */}
    -
  • +
  • {this.state.languagewritetype===true?"请填写该镜像语言":""}
    -
  • +