diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 591494141..17188c6f8 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -26,18 +26,22 @@ class CoursesController < ApplicationController :base_info, :get_historical_courses, :create_group_by_importing_file, :attahcment_category_list,:export_member_scores_excel, :duplicate_course, :switch_to_teacher, :switch_to_assistant, :switch_to_student, :exit_course, - :informs, :update_informs, :join_excellent_course, :online_learning] + :informs, :update_informs, :join_excellent_course, :online_learning, + :update_task_position, :tasks_list] before_action :teacher_allowed, only: [:update, :destroy, :settings, :search_teacher_candidate, :transfer_to_course_group, :delete_from_course, :search_users, :add_students_by_search, :get_historical_courses, :add_teacher_popup, :add_teacher] before_action :admin_allowed, only: [:set_invite_code_halt, :set_public_or_private, :change_course_admin, - :set_course_group, :create_group_by_importing_file, :update_informs] + :set_course_group, :create_group_by_importing_file, :update_informs, + :update_task_position, :tasks_list] before_action :teacher_or_admin_allowed, only: [:graduation_group_list, :create_graduation_group, :join_graduation_group, :change_course_teacher, :export_member_scores_excel, :course_group_list, :teacher_application_review, :apply_teachers, :delete_course_teacher] before_action :validate_course_name, only: [:create, :update] before_action :find_board, only: :board_list before_action :validate_page_size, only: :mine + before_action :course_tasks, only: [:tasks_list, :update_task_position] + before_action :find_container, only: [:update_task_position] if RUBY_PLATFORM =~ /linux/ require 'simple_xlsx_reader' @@ -100,7 +104,12 @@ class CoursesController < ApplicationController # GET /courses/new def new @course = Course.new - normal_status("成功") + unless params[:subject_id].blank? + subject = Subject.find_by(id: params[:subject_id], excellent: 1) + render :json => {status: 0, course_name: "#{subject&.name}第#{subject&.courses&.count.to_i + 1}期"} + else + normal_status("成功") + end end # Get /courses/:id/settings @@ -906,15 +915,17 @@ class CoursesController < ApplicationController # 邀请码验证 return normal_status(-1, "邀请码不能为空") if params[:invite_code].blank? invite_code = params[:invite_code] - course = Course.find_by(invite_code: invite_code, is_delete: 0, invite_code_halt: 0, is_end: 0) + course = Course.find_by(invite_code: invite_code, is_delete: 0, invite_code_halt: 0) course_group = CourseGroup.find_by(invite_code: invite_code) if course.blank? return normal_status(-1, "邀请码无效") if course_group.blank? - course = Course.find_by(id: course_group.course_id, is_delete: 0, invite_code_halt: 0, is_end: 0) + course = Course.find_by(id: course_group.course_id, is_delete: 0, invite_code_halt: 0) return normal_status(-1, "邀请码无效") if course.blank? end + return normal_status(-1, "课堂已结束,无法加入") if course.is_end + # 实名认证和职业认证的身份判断 return normal_status(-1, "该课堂要求成员完成实名和职业认证") if course.authentication && course.professional_certification && (!current_user.authentication || !current_user.professional_certification) @@ -1115,6 +1126,44 @@ class CoursesController < ApplicationController render_ok(count: count, courses: courses.select(:id, :name).as_json) end + def tasks_list + case params[:container_type] + when 'shixun_homework' + @tasks = @course.practice_homeworks + when 'common_homework' + @tasks = @course.normal_homeworks + when 'group_homework' + @tasks = @course.group_homeworks + when 'exercise' + @tasks = @course.exercises + when 'poll' + @tasks = @course.polls + when 'graduation_topic' + @tasks = @course.graduation_topics + when 'graduation_task' + @tasks = @course.graduation_tasks + when 'attachment' + @tasks = @course.attachments + else + tip_exception("请指定任务类型") + end + end + + def update_task_position + tip_exception("缺少position参数") if params[:position].blank? + unless params[:position].to_i == @task.position + if params[:position].to_i < @task.position + @tasks.where("position < #{@task.position} and position >= ?", params[:position]).update_all("position = position + 1") + else + @tasks.where("position > #{@task.position} and position <= ?", params[:position]).update_all("position = position - 1") + end + @task.update_attributes(position: params[:position]) + normal_status(0, "移动成功") + else + normal_status(-1, "位置没有变化") + end + end + private # Use callbacks to share common setup or constraints between actions. @@ -1175,6 +1224,48 @@ class CoursesController < ApplicationController end end + def course_tasks + case params[:container_type] + when 'shixun_homework' + @tasks = @course.practice_homeworks + when 'common_homework' + @tasks = @course.normal_homeworks + when 'group_homework' + @tasks = @course.group_homeworks + when 'exercise' + @tasks = @course.exercises + when 'poll' + @tasks = @course.polls + when 'graduation_topic' + @tasks = @course.graduation_topics + when 'graduation_task' + @tasks = @course.graduation_tasks + when 'attachment' + @tasks = @course.attachments + else + tip_exception("请指定任务类型") + end + end + + def find_container + case params[:container_type] + when 'shixun_homework', 'common_homework', 'group_homework' + @task = HomeworkCommon.find_by(id: params[:container_id]) + when 'exercise' + @task = Exercise.find_by(id: params[:container_id]) + when 'poll' + @task = Poll.find_by(id: params[:container_id]) + when 'graduation_topic' + @task = GraduationTopic.find_by(id: params[:container_id]) + when 'graduation_task' + @task = GraduationTask.find_by(id: params[:container_id]) + when 'attachment' + @task = Attachment.find_by(id: params[:container_id]) + else + tip_exception("container_type参数有误") + end + end + def student_act_score group_id, search sql_select = %Q{SELECT cm.*,( SELECT SUM(student_works.work_score) diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 5d1733983..eb3576f24 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -37,8 +37,6 @@ class HomeworkCommonsController < ApplicationController @category = @main_category.course_second_categories.find_by(id: params[:category]) tip_exception("子目录id有误") if !@category.present? @homework_commons = @homework_commons.where(course_second_category_id: params[:category]) - elsif @homework_type == 4 - @homework_commons = @homework_commons end @all_count = @homework_commons.size diff --git a/app/models/course.rb b/app/models/course.rb index b7bea6ec0..baed1efe6 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -32,7 +32,12 @@ class Course < ApplicationRecord has_many :teacher_course_members, -> { teachers_and_admin }, class_name: 'CourseMember' has_many :teacher_users, through: :teacher_course_members, source: :user has_many :course_messages, dependent: :destroy + has_many :homework_commons, dependent: :destroy + has_many :normal_homeworks, -> { normals }, class_name: 'HomeworkCommon' + has_many :group_homeworks, -> { groups }, class_name: 'HomeworkCommon' + has_many :practice_homeworks, -> { practices }, class_name: 'HomeworkCommon' + has_many :homework_group_settings has_many :graduation_works, dependent: :destroy diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index f198a7143..332aff045 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -12,6 +12,7 @@ class HomeworkCommon < ApplicationRecord belongs_to :course, counter_cache: true belongs_to :homework_bank, optional: true + belongs_to :user has_many :homework_challenge_settings, dependent: :destroy has_one :homework_commons_shixun, dependent: :destroy @@ -48,6 +49,9 @@ class HomeworkCommon < ApplicationRecord scope :search_homework_type, lambda {|num| where(homework_type:num)} scope :unified_setting, -> {where("unified_setting = ? ", 1)} + scope :normals, -> {where(homework_type: %i[normal]).order("position desc")} + scope :groups, -> {where(homework_type: %i[group]).order("position desc")} + scope :practices, -> {where(homework_type: %i[practice]).order("position desc")} # 是否显示参考答案 def view_answer identity, user_id diff --git a/app/views/courses/tasks_list.json.jbuilder b/app/views/courses/tasks_list.json.jbuilder new file mode 100644 index 000000000..29de925a6 --- /dev/null +++ b/app/views/courses/tasks_list.json.jbuilder @@ -0,0 +1,7 @@ +json.tasks @tasks.each do |task| + json.user_name task.user.real_name + json.task_id task.id + json.task_name task.name + json.category task.course_second_category&.name + json.position task.position +end \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 4e7b19687..80c4d4237 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -352,6 +352,8 @@ Rails.application.routes.draw do post 'update_informs' get 'online_learning' post 'join_excellent_course' + get 'tasks_list' + post 'update_task_position' end collection do diff --git a/db/migrate/20190820021047_migrate_course_task_position.rb b/db/migrate/20190820021047_migrate_course_task_position.rb new file mode 100644 index 000000000..cf1b633bd --- /dev/null +++ b/db/migrate/20190820021047_migrate_course_task_position.rb @@ -0,0 +1,13 @@ +class MigrateCourseTaskPosition < ActiveRecord::Migration[5.2] + def change + add_column :homework_commons, :position, :integer, :default => 0 + + Course.find_each do |course| + puts course.id + course.practice_homeworks.order("IF(ISNULL(homework_commons.publish_time),0,1), homework_commons.publish_time DESC, + homework_commons.created_at DESC").reverse.each_with_index do |homework, index| + homework.update_columns(position: index + 1) + end + end + end +end diff --git a/public/react/src/App.js b/public/react/src/App.js index 95b2853d6..2b62d1907 100644 --- a/public/react/src/App.js +++ b/public/react/src/App.js @@ -19,6 +19,7 @@ import Trialapplicationysl from './modules/login/Trialapplicationysl'; import Trialapplicationreview from './modules/user/Trialapplicationreview'; import Addcourses from "./modules/courses/coursesPublic/Addcourses"; import AccountProfile from "./modules/user/AccountProfile"; +import Certifiedprofessional from "./modules/modals/Certifiedprofessional" import Trialapplication from './modules/login/Trialapplication' import NotFoundPage from './NotFoundPage' @@ -305,7 +306,7 @@ class App extends Component { - + {/**/} diff --git a/public/react/src/modules/courses/coursesPublic/Addcourses.js b/public/react/src/modules/courses/coursesPublic/Addcourses.js index 8c9709fee..87a0899d7 100644 --- a/public/react/src/modules/courses/coursesPublic/Addcourses.js +++ b/public/react/src/modules/courses/coursesPublic/Addcourses.js @@ -213,7 +213,13 @@ class Addcourses extends Component{ student:student } ).then((response) => { + console.log(217); + console.log(response); if(response === undefined){ + this.setState({ + Addcoursestype:false, + isSpin:false + }); return } if(response.data.status===0){ @@ -254,7 +260,7 @@ class Addcourses extends Component{ }); this.setState({ Addcoursestype:false - }) + }); if(Addcoursestype===true){ this.props.hideAddcoursestype(); } @@ -273,7 +279,8 @@ class Addcourses extends Component{ isSpin:false }) }).catch((error) => { - console.log(error) + console.log(error); + console.log("报错了报错报错了"); this.setState({ isSpin:false }) diff --git a/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js b/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js index 921834b80..3906b090d 100644 --- a/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js +++ b/public/react/src/modules/courses/exercise/Studentshavecompletedthelist.js @@ -1182,7 +1182,7 @@ class Studentshavecompletedthelist extends Component { }) } - this.Searchdatasys(this.state.order, this.state.commit_status, this.state.review, this.state.checkedValuesineinfo, this.state.searchtext, pageNumber, 20); + this.Searchdatasys(this.state.order, this.state.course_groupyslstwo, this.state.review, this.state.checkedValuesineinfo, this.state.searchtext, pageNumber, 20); } paginationonChanges = (pageNumber) => { diff --git a/public/react/src/modules/courses/new/Goldsubject.js b/public/react/src/modules/courses/new/Goldsubject.js index 418a57fd0..0fe39bcd1 100644 --- a/public/react/src/modules/courses/new/Goldsubject.js +++ b/public/react/src/modules/courses/new/Goldsubject.js @@ -169,10 +169,12 @@ class Goldsubject extends Component { // console.log(user_school); this.props.form.setFieldsValue({ school:user_school, + starttime:moment(new Date(),dateFormat), }); this.setState({ school:user_school, Whethertocreateanewclassroom:true, + datatimetwo: moment(new Date(),dateFormat), }); this.handleSearchschool(user_school); } @@ -830,7 +832,7 @@ class Goldsubject extends Component { {getFieldDecorator("checkboxgroup", { initialValue: [ - "announcement","online_learning","shixun_homework", "exercise", + "announcement","online_learning","shixun_homework","common_homework", ], })( diff --git a/public/react/src/modules/modals/Certifiedprofessional.js b/public/react/src/modules/modals/Certifiedprofessional.js index a7c06c31e..ff29a5ade 100644 --- a/public/react/src/modules/modals/Certifiedprofessional.js +++ b/public/react/src/modules/modals/Certifiedprofessional.js @@ -1,6 +1,7 @@ import React, { Component } from 'react'; import { Modal} from 'antd'; import axios from 'axios'; +import certfed from './certfed.css'; //认证职业 class Certifiedprofessional extends Component { @@ -70,12 +71,24 @@ class Certifiedprofessional extends Component { centered={true} visible={this.state.mydisplay} width="600px" + heigth="307px" >
-

请在完成条件后重试

-
+

请在完成条件后重试

+
+
+ + 未实名认证 +
+
+ + 未职业认证 +
+
+
diff --git a/public/react/src/modules/modals/certfed.css b/public/react/src/modules/modals/certfed.css new file mode 100644 index 000000000..66a847b36 --- /dev/null +++ b/public/react/src/modules/modals/certfed.css @@ -0,0 +1,21 @@ +.yslcenter +{ + display: flex; + justify-content:center; + display: flex; + flex-direction:column; +} +.yslcentercerlfed +{ display: flex; + justify-content:center; + display: flex; + flex-direction:row; +} +.fontsizecoirlysl{ + color: #333333; + font-size: 16px; +} +.fontsizecoirlysltwo{ + font-size: 14px; + color: #979797; +} \ No newline at end of file