diff --git a/app/controllers/attendances_controller.rb b/app/controllers/attendances_controller.rb index 256e651e8..412b3bee6 100644 --- a/app/controllers/attendances_controller.rb +++ b/app/controllers/attendances_controller.rb @@ -79,8 +79,26 @@ class AttendancesController < ApplicationController new_end_time = "#{params[:attendance_date]} #{params[:end_time]}".to_time @attendance.update!(update_params) - # 如果历史签到变为了正在签到,将未创建的学生签到数据补上 - if a_end_time < Time.current && new_end_time > Time.current + old_group_ids = @attendance.course_attendance_groups.pluck(:course_group_id) + unless old_group_ids.include?(0) + all_groups_ids = old_group_ids + params[:group_ids] + # 如果新增的的分班加上之前的分班是课堂的全部分班,则只需创建一条记录 + if all_groups_ids.uniq.count == @course.course_groups_count + @attendance.course_attendance_groups.destroy_all + @attendance.course_attendance_groups.create!(course_group_id: 0, course_id: @attendance.course_id) + new_group = true + else + new_group_ids = params[:group_ids] - old_group_ids + new_group_ids.each do |group_id| + @attendance.course_attendance_groups.create!(course_group_id: group_id, course_id: @attendance.course_id) + new_group = true + end + end + + end + + # 如果新增了分班或者历史签到变为了正在签到,将未创建的学生签到数据补上 + if new_group || (a_end_time < Time.current && new_end_time > Time.current) create_absence_student_data end render_ok diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index c5cae99c4..b6fdf8ea9 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -17,7 +17,7 @@ class SubjectsController < ApplicationController include CustomSortable def index - subjects = Weapps::SubjectQuery.call(current_laboratory, params) + subjects = Weapps::SubjectQuery.call(current_laboratory, params, "web") @subject_count = subjects.map(&:id).size @subjects = paginate subjects.includes(:shixuns, :repertoire) end diff --git a/app/controllers/tidings_controller.rb b/app/controllers/tidings_controller.rb index 91d6c095d..91836a12a 100644 --- a/app/controllers/tidings_controller.rb +++ b/app/controllers/tidings_controller.rb @@ -12,7 +12,7 @@ class TidingsController < ApplicationController case params[:type] when 'notice' then 'System' when 'apply' then 'Apply' - when 'course' then %w(HomeworkCommon Exercise Poll GraduationTask GraduationTopic) + when 'course' then %w(HomeworkCommon Exercise Poll GraduationTask GraduationTopic PublishCourseVideo) when 'project' then 'Project' when 'interaction' then %w(Comment Mentioned Praise Fan) when 'project_package' then %w(Created Destroyed Bidding BiddingEnd BiddingWon BiddingLost) @@ -25,6 +25,8 @@ class TidingsController < ApplicationController tidings = tidings.where(container_type: 'ProjectPackage') if params[:type] == 'project_package' + + @count = tidings.count @tidings = paginate(tidings.order(created_at: :desc), per_page: 10) end diff --git a/app/controllers/weapps/subjects_controller.rb b/app/controllers/weapps/subjects_controller.rb index e5c3eb316..e1e50cc40 100644 --- a/app/controllers/weapps/subjects_controller.rb +++ b/app/controllers/weapps/subjects_controller.rb @@ -4,7 +4,7 @@ class Weapps::SubjectsController < Weapps::BaseController # 首页 def index - subjects = Weapps::SubjectQuery.call(current_laboratory, params) + subjects = Weapps::SubjectQuery.call(current_laboratory, params, "wechat") @subject_count = subjects.map(&:id).size @subjects = paginate subjects end diff --git a/app/decorators/tiding_decorator.rb b/app/decorators/tiding_decorator.rb index 8d266b7df..4e640a28b 100644 --- a/app/decorators/tiding_decorator.rb +++ b/app/decorators/tiding_decorator.rb @@ -403,6 +403,8 @@ module TidingDecorator def video_content if tiding_type == 'System' I18n.t(locale_format(tiding_type, status), reason: extra) % container.try(:title) + elsif tiding_type == 'PublishCourseVideo' + I18n.t(locale_format(tiding_type)) % [belong_container&.name] else I18n.t(locale_format(tiding_type)) % [container.try(:title) || extra] end @@ -419,4 +421,5 @@ module TidingDecorator def hack_content I18n.t(locale_format(parent_container_type)) % (container&.name || extra) end + end diff --git a/app/helpers/exercises_helper.rb b/app/helpers/exercises_helper.rb index 26125ae23..fab9e98cd 100644 --- a/app/helpers/exercises_helper.rb +++ b/app/helpers/exercises_helper.rb @@ -993,4 +993,11 @@ module ExercisesHelper } exercise_user.update!(commit_option) end + + def has_comment? exercise_user, question_ids + exercise_answer_ids = exercise_user.user.exercise_answers.where(exercise_question_id: question_ids).pluck(:id) + exercise_shixun_answer_ids = exercise_user.user.exercise_shixun_answers.where(exercise_question_id: question_ids).pluck(:id) + exercise_user.commit_status == 1 && (exercise_user.exercise_user_scores.size > 0 || exercise_user.subjective_score >= 0.0 || + ExerciseAnswerComment.where(exercise_answer_id: exercise_answer_ids).or(ExerciseAnswerComment.where(exercise_shixun_answer_id: exercise_shixun_answer_ids)).exists?) + end end diff --git a/app/jobs/course_video_uploaded_job.rb b/app/jobs/course_video_uploaded_job.rb new file mode 100644 index 000000000..71dfaa600 --- /dev/null +++ b/app/jobs/course_video_uploaded_job.rb @@ -0,0 +1,25 @@ +class CourseVideoUploadedJob < ApplicationJob + queue_as :notify + + def perform(video_id) + video = Video.select("id, user_id").find_by(id: video_id) + course_ids = video&.course_videos&.pluck(:course_id) + + return unless course_ids.present? + + course_members = CourseMember.where(course_id: course_ids, role: 'STUDENT').select("user_id, course_id") + Tiding.bulk_insert do |worker| + course_members.find_each do |m| + worker.add( + user_id: m.user_id, + tiding_type: 'PublishCourseVideo', + trigger_user_id: video.user_id, + container_id: video.id, + container_type: 'Video', + belong_container_type: 'Course', + belong_container_id: m.course_id) + end + end + end + +end diff --git a/app/models/collection.rb b/app/models/collection.rb index 53d2b0f8b..4ed77db60 100644 --- a/app/models/collection.rb +++ b/app/models/collection.rb @@ -1,4 +1,7 @@ class Collection < ApplicationRecord belongs_to :user belongs_to :container, polymorphic: true, optional: true + + scope :shixuns, -> {where(container_type: 'Shixun')} + scope :subjects, -> {where(container_type: 'Subject')} end diff --git a/app/models/user.rb b/app/models/user.rb index b909d6dd6..531782ac0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -48,8 +48,6 @@ class User < ApplicationRecord has_many :course_messages has_many :courses, foreign_key: 'tea_id', dependent: :destroy - has_many :collections, dependent: :destroy - #试卷 has_many :exercise_banks, :dependent => :destroy has_many :exercise_users, :dependent => :destroy @@ -119,6 +117,11 @@ class User < ApplicationRecord has_many :manage_course_members, -> { teachers_and_admin }, class_name: 'CourseMember' has_many :manage_courses, through: :manage_course_members, source: :course + has_many :collections, dependent: :destroy + has_many :shixun_collections, -> { shixuns }, class_name: 'Collection' + has_many :subject_collections, -> { subjects }, class_name: 'Collection' + + # 关注 # has_many :be_watchers, foreign_key: :user_id, dependent: :destroy # 我的关注 # has_many :be_watcher_users, through: :be_watchers, dependent: :destroy # 我关注的用户 @@ -421,6 +424,10 @@ class User < ApplicationRecord end end + def is_collect? container + collections.where(container: container).exists? + end + # 实训用户身份 def shixun_identity(shixun) @identity = diff --git a/app/queries/weapps/subject_query.rb b/app/queries/weapps/subject_query.rb index 180176ce2..ca0c437a9 100644 --- a/app/queries/weapps/subject_query.rb +++ b/app/queries/weapps/subject_query.rb @@ -2,13 +2,20 @@ class Weapps::SubjectQuery < ApplicationQuery include CustomSortable attr_reader :params - def initialize(current_laboratory, params) + def initialize(current_laboratory, params, device) @current_laboratory = current_laboratory @params = params + @device = device end def call - subjects = @current_laboratory.subjects.unhidden.publiced.show_moblied + Rails.logger.info("##### @device: #{@device}") + subjects = + if @device == "wechat" + @current_laboratory.subjects.unhidden.publiced.show_moblied + else + @current_laboratory.subjects.unhidden.publiced + end # 课程体系的过滤 if params[:sub_discipline_id].present? diff --git a/app/services/shixuns/create_shixun_service.rb b/app/services/shixuns/create_shixun_service.rb index 2a66cf2fb..c3a46285e 100644 --- a/app/services/shixuns/create_shixun_service.rb +++ b/app/services/shixuns/create_shixun_service.rb @@ -12,6 +12,7 @@ class CreateShixunService < ApplicationService identifier = Util::UUID.generate_identifier(Shixun, 8) shixun.identifier= identifier shixun.user_id = user.id + shixun.can_copy = 1 main_mirror = MirrorRepository.find params[:main_type] sub_mirrors = MirrorRepository.where(id: params[:sub_type]) begin diff --git a/app/services/users/shixun_service.rb b/app/services/users/shixun_service.rb index b13b0ab1f..7e95cda84 100644 --- a/app/services/users/shixun_service.rb +++ b/app/services/users/shixun_service.rb @@ -24,15 +24,17 @@ class Users::ShixunService user.study_shixuns.where(shixuns: {id: laboratory.shixuns}) when 'manage' then laboratory.shixuns.where(id: user.shixuns) + when 'collect' then + laboratory.shixuns.where(id: user.shixun_collections.pluck(:container_id)) else - ids = user.study_shixuns.pluck(:id) + user.shixuns.pluck(:id) + ids = user.study_shixuns.pluck(:id) + user.shixuns.pluck(:id) + user.shixun_collections.pluck(:container_id) laboratory.shixuns.where(id: ids) end end def status_filter(relations) case params[:category] - when 'study' then + when 'study', 'collect' then study_shixun_status_filter(relations) when 'manage' then manage_shixun_status_filter(relations) @@ -97,7 +99,7 @@ class Users::ShixunService end case params[:category] - when 'study' then + when 'study', 'collect' then relations.order("myshixuns.#{sort_by} #{sort_direction}") when 'manage' then relations.order("shixuns.#{sort_by} #{sort_direction}") diff --git a/app/services/users/subject_service.rb b/app/services/users/subject_service.rb index d0b995c8e..a8b9b32fb 100644 --- a/app/services/users/subject_service.rb +++ b/app/services/users/subject_service.rb @@ -25,10 +25,13 @@ class Users::SubjectService Subject.joins(stage_shixuns: { shixun: :myshixuns }).where(myshixuns: { user_id: user.id }) when 'manage' then Subject.joins(:subject_members).where(subject_members: { user_id: user.id }) + when 'collect' then + Subject.where(id: user.subject_collections.pluck(:container_id)) else study_subject_ids = StageShixun.where(shixun_id: user.myshixuns.pluck(:shixun_id)).pluck(:subject_id) manage_subject_ids = user.subject_members.pluck(:subject_id) - Subject.where(id: study_subject_ids + manage_subject_ids) + collect_subject_ids = user.subject_collections.pluck(:container_id) + Subject.where(id: study_subject_ids + manage_subject_ids + collect_subject_ids) end end @@ -45,7 +48,7 @@ class Users::SubjectService return relations unless self_or_admin? case params[:category] - when 'study' then + when 'study', 'collect' then study_subject_status_filter(relations) when 'manage' then manage_subject_status_filter(relations) diff --git a/app/services/videos/batch_publish_service.rb b/app/services/videos/batch_publish_service.rb index 3ddc54967..543497e9e 100644 --- a/app/services/videos/batch_publish_service.rb +++ b/app/services/videos/batch_publish_service.rb @@ -52,6 +52,7 @@ class Videos::BatchPublishService < ApplicationService if param[:course_id].present? video.video_applies.create!(status: "agreed") + CourseVideoUploadedJob.perform_later(video.id) if video.transcoded else video.video_applies.create! end diff --git a/app/services/videos/dispatch_callback_service.rb b/app/services/videos/dispatch_callback_service.rb index 4ff94a1c4..49b1d5935 100644 --- a/app/services/videos/dispatch_callback_service.rb +++ b/app/services/videos/dispatch_callback_service.rb @@ -22,6 +22,7 @@ class Videos::DispatchCallbackService < ApplicationService when 'StreamTranscodeComplete' then # 转码完成 #return if video.play_url.present? video.update!(play_url: params['FileUrl'], transcoded: true) + CourseVideoUploadedJob.perform_later(video.id) if video.video_applies.exists?(status: 'agreed') #通过的情况基本上是课堂视频 when 'DeleteMediaComplete' #完成云端视频删除 video.update_column(:delete_state, Video::FINISH_DELETE) end diff --git a/app/views/exercises/_exercise_user.json.jbuilder b/app/views/exercises/_exercise_user.json.jbuilder index 5f00bbd70..acaa07e98 100644 --- a/app/views/exercises/_exercise_user.json.jbuilder +++ b/app/views/exercises/_exercise_user.json.jbuilder @@ -14,4 +14,5 @@ if subjective_type == 1 json.subjective_score ex_user_info[:ex_subject_score] end json.score ex_user_info[:score] -json.review_status ex_user_info[:teacher_review] #教师是否评阅,评阅则为true,否则为false \ No newline at end of file +json.review_status ex_user_info[:teacher_review] #教师是否评阅,评阅则为true,否则为false +json.has_comment has_comment?(exercise_user, question_ids) \ No newline at end of file diff --git a/app/views/exercises/exercise_lists.json.jbuilder b/app/views/exercises/exercise_lists.json.jbuilder index 8230ef7c7..5cbb63595 100644 --- a/app/views/exercises/exercise_lists.json.jbuilder +++ b/app/views/exercises/exercise_lists.json.jbuilder @@ -37,7 +37,8 @@ end if @current_user_ex_answers.present? json.current_answer_user do json.partial! "exercises/exercise_user",locals: {exercise_user:@current_user_ex_answers.first, subjective_type:@subjective_type, - user_status:@exercise_current_user_status, exercise:@exercise} + user_status:@exercise_current_user_status, exercise:@exercise, + question_ids: @exercise.exercise_questions.pluck(:id)} end end @@ -45,7 +46,8 @@ if @exercise_users_list.present? json.exercise_users do json.array! @exercise_users_list.each do |exercise_user| json.partial! "exercises/exercise_user",locals: {exercise_user:exercise_user, subjective_type:@subjective_type, - user_status:@exercise_current_user_status, exercise:@exercise} + user_status:@exercise_current_user_status, exercise:@exercise, + question_ids: @exercise.exercise_questions.pluck(:id)} end end else diff --git a/app/views/shixuns/show.json.jbuilder b/app/views/shixuns/show.json.jbuilder index 4a0c3ebd6..404acb4fa 100644 --- a/app/views/shixuns/show.json.jbuilder +++ b/app/views/shixuns/show.json.jbuilder @@ -1,5 +1,7 @@ json.fork_from @fork_from json.identity User.current.shixun_identity(@shixun) +json.is_collect User.current&.is_collect?(@shixun) + json.power @power json.partial! 'shixuns/top', locals: { shixun: @shixun, current_myshixun: @current_myshixun } json.secret_repository @shixun.shixun_secret_repository.present? diff --git a/app/views/subjects/show.json.jbuilder b/app/views/subjects/show.json.jbuilder index d25437f0a..577424fb4 100644 --- a/app/views/subjects/show.json.jbuilder +++ b/app/views/subjects/show.json.jbuilder @@ -5,6 +5,8 @@ json.challenges_count @subject.subject_challenge_count json.subject_score @subject.all_score json.member_count @subject.member_count +json.is_collect @user&.is_collect?(@subject) + json.allow_delete (@subject.status != 2 && @is_creator) || @user.admin? json.publish_status publish_status(@subject, @is_manager) json.public_status public_status(@subject, @is_manager, @user) diff --git a/config/locales/tidings/zh-CN.yml b/config/locales/tidings/zh-CN.yml index cda146780..5eb6ee759 100644 --- a/config/locales/tidings/zh-CN.yml +++ b/config/locales/tidings/zh-CN.yml @@ -236,6 +236,7 @@ System: 1_end: "你提交的发布视频申请:%s,审核已通过" 2_end: "你提交的发布视频申请:%s,审核未通过
原因:%{reason}" + PublishCourseVideo_end: "在课堂 %s 发布了视频,观看视频可以增加平时分哦~" PublicCourseStart_end: "你报名参与的开放课程:%s,将于%s正式开课" SubjectStartCourse_end: "您创建的开放课程:%s 已达到开课人数要求。您可以在24小时内自主开设新一期课程。如果超过24小时未开课,平台将自动开课并复制您上一期的课程内容。" LiveLink_end: "%s 直播将于30分钟后开始" diff --git a/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js b/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js index 070ceeed2..b8880c6f2 100644 --- a/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js +++ b/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js @@ -1244,19 +1244,19 @@ class Studentshavecompletedthelist extends Component { (//助教是否有权限 this.props.assistant_auth&&this.props.assistant_auth===true? this.Adjustment(record.user_id)}>评阅 + target="_blank" onClick={() => this.Adjustment(record.user_id)}>{record.has_comment===true?"已评阅":"评阅"} : (//是否截止 this.props.Commonheadofthetestpaper && this.props.Commonheadofthetestpaper.exercise_status===3? this.Adjustment(record.user_id)}>评阅 + target="_blank" onClick={() => this.Adjustment(record.user_id)}>{record.has_comment===true?"已评阅":"评阅"} : -- ) ) : this.Adjustment(record.user_id)}>评阅 + target="_blank" onClick={() => this.Adjustment(record.user_id)}>{record.has_comment===true?"已评阅":"评阅"} ) :record.submitstate === "已提交"? (//是否助教 @@ -1581,8 +1581,9 @@ class Studentshavecompletedthelist extends Component { efficiencyscore: exercise_users[i].score === null ? "--" : exercise_users[i].score === "" ? "--" : exercise_users[i].score, objective_score: exercise_users[i].objective_score === null ? "--" : exercise_users[i].objective_score === "" ? "--" : exercise_users[i].objective_score, subjective_score:exercise_users[i].subjective_score === null ? "--" : exercise_users[i].subjective_score === "" ? "--" : exercise_users[i].subjective_score, - operating: "评阅", + operating:exercise_users[i].has_comment===true?"已评阅":"评阅", commit_method:exercise_users[i].commit_method, + has_comment:exercise_users[i].has_comment }) } else { datalist.push({ @@ -1599,8 +1600,9 @@ class Studentshavecompletedthelist extends Component { efficiencyscore: exercise_users[i].score === null ? "--" : exercise_users[i].score === "" ? "--" : exercise_users[i].score, objective_score: exercise_users[i].objective_score === null ? "--" : exercise_users[i].objective_score === "" ? "--" : exercise_users[i].objective_score, subjective_score:exercise_users[i].subjective_score === null ? "--" : exercise_users[i].subjective_score === "" ? "--" : exercise_users[i].subjective_score, - operating: "--", - commit_method:exercise_users[i].commit_method + operating:exercise_users[i].has_comment===true?"已评阅":"--", + commit_method:exercise_users[i].commit_method, + has_comment:exercise_users[i].has_comment }) } @@ -1670,8 +1672,9 @@ class Studentshavecompletedthelist extends Component { efficiencyscore: exercise_users[i].score === null ? "--" : exercise_users[i].score === "" ? "--" : exercise_users[i].score, objective_score: exercise_users[i].objective_score === null ? "--" : exercise_users[i].objective_score === "" ? "--" : exercise_users[i].objective_score, subjective_score:exercise_users[i].subjective_score === null ? "--" : exercise_users[i].subjective_score === "" ? "--" : exercise_users[i].subjective_score, - operating: "查看", + operating:exercise_users[i].has_comment===true?"已评阅":"查看", commit_method:exercise_users[i].commit_method, + has_comment:exercise_users[i].has_comment }) noclassroom = exercise_users[i].user_group_name; } @@ -1817,9 +1820,10 @@ class Studentshavecompletedthelist extends Component { efficiencyscore: exercise_users[i].score === undefined ? "--" : exercise_users[i].score === null ? "--" : exercise_users[i].score === "" ? "--" : exercise_users[i].score, objective_score: exercise_users[i].objective_score === null ? "--" : exercise_users[i].objective_score === "" ? "--" : exercise_users[i].objective_score, subjective_score:exercise_users[i].subjective_score === null ? "--" : exercise_users[i].subjective_score === "" ? "--" : exercise_users[i].subjective_score, - finalscore: "评阅", + finalscore:exercise_users[i].has_comment===true?"已评阅":"评阅", user_id: exercise_users[i].user_id, - commit_method:exercise_users[i].commit_method + commit_method:exercise_users[i].commit_method, + has_comment:exercise_users[i].has_comment }) } else { datalist.push({ @@ -1836,9 +1840,10 @@ class Studentshavecompletedthelist extends Component { efficiencyscore: exercise_users[i].score === undefined ? "--" : exercise_users[i].score === null ? "--" : exercise_users[i].score === "" ? "--" : exercise_users[i].score, objective_score: exercise_users[i].objective_score === null ? "--" : exercise_users[i].objective_score === "" ? "--" : exercise_users[i].objective_score, subjective_score:exercise_users[i].subjective_score === null ? "--" : exercise_users[i].subjective_score === "" ? "--" : exercise_users[i].subjective_score, - finalscore: "--", + finalscore:exercise_users[i].has_comment===true?"已评阅":"--", user_id: exercise_users[i].user_id, - commit_method:exercise_users[i].commit_method + commit_method:exercise_users[i].commit_method, + has_comment:exercise_users[i].has_comment }) indexi++; } diff --git a/public/react/src/modules/courses/signin/model/Createsignmodel.js b/public/react/src/modules/courses/signin/model/Createsignmodel.js index 99f616204..111e029c4 100644 --- a/public/react/src/modules/courses/signin/model/Createsignmodel.js +++ b/public/react/src/modules/courses/signin/model/Createsignmodel.js @@ -36,7 +36,8 @@ const CollectionCreateForm = Form.create({ name: 'form_in_modal' })( start_time:"", end_time:"", attendance_date:"", - newmode:null + newmode:null, + groupstype:false } } @@ -54,7 +55,8 @@ const CollectionCreateForm = Form.create({ name: 'form_in_modal' })( end_time: date }); } - componentDidMount() { + getgroup_idss=(course_groups)=>{ + let newcourse_groups=course_groups; if(this.props.type==="edit"){ let newlist=[] if(this.props.attendancesdata.groups.length>0){ @@ -63,15 +65,26 @@ const CollectionCreateForm = Form.create({ name: 'form_in_modal' })( }) } - console.log(this.props.attendancesdata.start_time) - // console.log() + newlist.map((item,key)=>{ + newcourse_groups.map((i,k)=>{ + if(i.id===item){ + i.disabled=true + } + }) + }) + // console.log(newlist) + // this.setState({ + // + // }) this.setState({ attendance_date: this.props.attendancesdata.attendance_date, start_time:new Date(this.props.attendancesdata.start_time), end_time:new Date(this.props.attendancesdata.end_time), newmode:this.props.attendancesdata.mode, + course_groups:newcourse_groups, + groupstype:newlist.length===0?true:false }) @@ -85,6 +98,8 @@ const CollectionCreateForm = Form.create({ name: 'form_in_modal' })( }else{ this.setState({ start_time: new Date("2000-01-01T09:00:00.000+08:00"), + course_groups:newcourse_groups, + groupstype:false }) this.props.form.setFieldsValue({ @@ -92,15 +107,15 @@ const CollectionCreateForm = Form.create({ name: 'form_in_modal' })( }); } + } + componentDidMount() { const coursesId=this.props.match.params.coursesId; let newurl=`/courses/${coursesId}/all_course_groups.json`; axios.get(newurl).then((response) => { + this.getgroup_idss(response.data.course_groups) + }) - this.setState({ - course_groups:response.data.course_groups - }) - }) } @@ -226,7 +241,7 @@ const CollectionCreateForm = Form.create({ name: 'form_in_modal' })( } render() { const { visible,form ,setRadio,Radiolist,hideCreatesign,editvisible} = this.props; - let {course_groups,newmode}=this.state; + let {course_groups,newmode,groupstype}=this.state; const { getFieldDecorator } = form; const { Option } = Select; const formItemLayout = { @@ -268,13 +283,13 @@ const CollectionCreateForm = Form.create({ name: 'form_in_modal' })( {getFieldDecorator('group_ids')( - 0?"不选择分班时默认选择全部学生":'暂无分班,将默认选择课堂全部学生'} getPopupContainer={trigger => trigger.parentNode} + disabled={this.props&&this.props.type==="edit"&&this.state.groupstype===true?true:false} > {course_groups.map((item,key)=>{ return( - + ) })} diff --git a/public/react/src/modules/paths/PathDetail/DetailTop.js b/public/react/src/modules/paths/PathDetail/DetailTop.js index bf43c0759..b72edfc81 100644 --- a/public/react/src/modules/paths/PathDetail/DetailTop.js +++ b/public/react/src/modules/paths/PathDetail/DetailTop.js @@ -441,6 +441,40 @@ class DetailTop extends Component{ }) } + setCollect=()=>{ + let pathid=this.props.match.params.pathId; + let url ="/collections.json"; + axios.post(url,{ + container_id:pathid, + container_type:"Subject" + }).then((result)=>{ + const status = result.data.status + if(status===0){ + this.props.getlistdatas() + this.props.showNotification(result.data.message); + } + }).catch((error)=>{ + console.log(error); + }) + } + + cancelCollect=()=>{ + let pathid=this.props.match.params.pathId; + let url=`/collections/cancel.json`; + axios.delete(url,{ data:{ + container_id:pathid, + container_type:"Subject" + }}).then((response) => { + const status = response.data.status + if(status===0){ + this.props.getlistdatas() + this.props.showNotification(response.data.message); + } + }).catch((error) => { + console.log(error) + }) + } + render(){ let{detailInfoList}=this.props; let{Modalstype,Modalstopval,cardsModalcancel,putappointmenttype,Modalsbottomval,cardsModalsavetype,loadtype,getappointmenttype,openpathss,cancel_publics,cancel_has_publics,applyissuePaths}=this.state; @@ -628,6 +662,8 @@ class DetailTop extends Component{ style={{'width':'65px'}} >删除:""} + + {detailInfoList===undefined?"":detailInfoList.allow_statistics===true? :"" } + + {this.props&&this.props.user.login=== ""?"":detailInfoList&&detailInfoList.is_collect===false?this.setCollect()} + style={{'width':'65px'}} + className="fr font-18 color-white kaike mr20 kkbths" > + 收藏 + :""} + + { + this.props&&this.props.user.login=== ""?"":detailInfoList&&detailInfoList.is_collect===true? + this.cancelCollect()}> 取消收藏 + :"" + } + + diff --git a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js index 03f3b9652..99fd08aa9 100644 --- a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js +++ b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js @@ -116,9 +116,9 @@ class PathDetailIndex extends Component{ members:items, items }); - console.log(this.state.members) - console.log("items 数组数组数组数组") - console.log(items) + // console.log(this.state.members) + // console.log("items 数组数组数组数组") + // console.log(items) } cardsModalcancel=()=>{ this.setState({ diff --git a/public/react/src/modules/tpm/TPMBanner.js b/public/react/src/modules/tpm/TPMBanner.js index 7527357c0..25dcd3bd9 100644 --- a/public/react/src/modules/tpm/TPMBanner.js +++ b/public/react/src/modules/tpm/TPMBanner.js @@ -806,6 +806,43 @@ class TPMBanner extends Component { } } + + setCollect=()=>{ + let id = this.props.match.params.shixunId; + let url ="/collections.json"; + axios.post(url,{ + container_id:id, + container_type:"Shixun" + }).then((result)=>{ + const status = result.data.status + if(status===0){ + debugger + this.props.getcomponentdidmount() + this.props.showNotification(result.data.message); + } + }).catch((error)=>{ + console.log(error); + }) + } + + cancelCollect=()=>{ + let id = this.props.match.params.shixunId; + let url=`/collections/cancel.json`; + axios.delete(url,{ data:{ + container_id:id, + container_type:"Shixun" + }}).then((response) => { + const status = response.data.status + if(status===0){ + debugger + this.props.getcomponentdidmount() + this.props.showNotification(response.data.message); + } + }).catch((error) => { + console.log(error) + }) + } + render() { let { Forkvisible, @@ -1235,6 +1272,23 @@ class TPMBanner extends Component { } + {console.log(this.props)} + {this.props&&this.props.user&&this.props.user.login=== ""?"":shixunsDetails&&shixunsDetails.is_collect===false? + this.setCollect()} + className="fr kaike kkbths mr20 font-18" + // style={{'width':'65px'}} + > + 收藏 + :"" + } + + {this.props&&this.props.user&&this.props.user.login=== ""?"":shixunsDetails&&shixunsDetails.is_collect===true? + this.cancelCollect()} + className="fr kaike kkbths mr20 font-18" + > + 取消收藏 + :"" + } - Fork + 复制实训 @@ -1357,7 +1411,7 @@ class TPMBanner extends Component { } {Forkvisible===true? {!!shixunsDetails.fork_num && - + {shixunsDetails.fork_num} } diff --git a/public/react/src/modules/tpm/TPMIndex.js b/public/react/src/modules/tpm/TPMIndex.js index 3e8dc1cd8..674d2eef0 100644 --- a/public/react/src/modules/tpm/TPMIndex.js +++ b/public/react/src/modules/tpm/TPMIndex.js @@ -192,6 +192,7 @@ class TPMIndex extends Component { } getcomponentdidmount=()=>{ + let userid=this.props.user&&this.props.user.user_id; let getnewTPMsettings=this.props.user&&this.props.user.user_id+'newTPMsettings'; let newTPMsettings=window.localStorage.getItem(getnewTPMsettings) diff --git a/public/react/src/modules/user/usersInfo/InfosPath.js b/public/react/src/modules/user/usersInfo/InfosPath.js index c3a1aaa23..c03c7541f 100644 --- a/public/react/src/modules/user/usersInfo/InfosPath.js +++ b/public/react/src/modules/user/usersInfo/InfosPath.js @@ -222,6 +222,9 @@ class InfosPath extends Component{
  • this.changeCategory("study")} className={is_current ? "font-16 w66" : "font-16 w80"}>{is_current ? "我" : "TA"}学习的
  • +
  • this.changeCategory("collect")} + className={is_current ? "font-16 w66" : "font-16 w80"}>{is_current ? "我" : "TA"}收藏的