From 1f507498af2384a563ec9742cad25ca6db50522a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Wed, 18 Dec 2019 16:50:29 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/courses/poll/PollNew.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/poll/PollNew.js b/public/react/src/modules/courses/poll/PollNew.js index 8740a9bbf..3b50695e8 100644 --- a/public/react/src/modules/courses/poll/PollNew.js +++ b/public/react/src/modules/courses/poll/PollNew.js @@ -866,6 +866,7 @@ class PollNew extends Component { let newarr = [...arr]; newarr.splice(indexo, 1); if(bool === true) { + console.log("shangchu1"); this.setState({ adddom: newarr, q_countst: 0, @@ -878,6 +879,8 @@ class PollNew extends Component { }) }else{ + console.log("shangchu2"); + this.setState({ adddom: newarr, q_countst: 0, @@ -1416,6 +1419,7 @@ class PollNew extends Component { } if(bool === true){ + console.log("tianjiadao1"); this.setState({ q_countst: 1, bindingid:undefined, @@ -1423,6 +1427,7 @@ class PollNew extends Component { newoption: false, }) }else { + console.log("tianjiadao2"); this.setState({ q_countst: 1, Newdisplay:false, @@ -2018,6 +2023,7 @@ class PollNew extends Component { if (result.data.status === 0) { this.props.showNotification(`已完成`); thiss.thisinitializationdatanew(); + console.log("已完成了了了1"); this.setState({ Newdisplay:false, newoption: false, @@ -2109,6 +2115,7 @@ class PollNew extends Component { axios.put(url,datay).then((result) => { try { if (result.data.status === 0) { + console.log("编辑题目成功1"); this.props.showNotification(`编辑题目成功`); thiss.thisinitializationdatanew(); this.setState({ @@ -3609,7 +3616,7 @@ class PollNew extends Component { { this.state.Newdisplay === true?
- {this.state.adddom === undefined ? "" : this.state.adddom.map((itemo, indexo) => { + {this.state.adddom === undefined ? "publishtimeids123123" : this.state.adddom.map((itemo, indexo) => { // console.log('打印this.state.adddom') // console.log(this.state.adddom); let arrid = itemo.question.id; From dbd1fa02bbb57919e04307dc95ea95240e2f96d9 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Wed, 18 Dec 2019 17:19:51 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E5=AD=A6=E6=A0=A1=E7=BB=9F=E8=AE=A1?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E7=9A=84=E6=8E=A5=E5=8F=A3=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/colleges_controller.rb | 8 ++++-- .../colleges/course_statistics.json.jbuilder | 11 ++++++++ .../colleges/student_shixun.json.jbuilder | 10 +++++++ app/views/colleges/teachers.json.jbuilder | 11 ++++++++ config/routes.rb | 26 +++++++++---------- 5 files changed, 51 insertions(+), 15 deletions(-) create mode 100644 app/views/colleges/course_statistics.json.jbuilder create mode 100644 app/views/colleges/student_shixun.json.jbuilder create mode 100644 app/views/colleges/teachers.json.jbuilder diff --git a/app/controllers/colleges_controller.rb b/app/controllers/colleges_controller.rb index 4c33ad5e5..71009d2dd 100644 --- a/app/controllers/colleges_controller.rb +++ b/app/controllers/colleges_controller.rb @@ -1,7 +1,7 @@ class CollegesController < ApplicationController include PaginateHelper - layout 'college' + # layout 'college' before_action :require_login before_action :check_college_present! @@ -21,6 +21,7 @@ class CollegesController < ApplicationController # 实训总数 @shixuns_count = Shixun.visible.joins('left join user_extensions on user_extensions.user_id = shixuns.user_id') .where(user_extensions: { school_id: current_school.id }).count + render json: { teachers_count: @teachers_count, students_count: @students_count, courses_count: @courses_count, shixuns_count: @shixuns_count } end def shixun_time @@ -43,6 +44,8 @@ class CollegesController < ApplicationController (SELECT count(c.id) FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.user_id=users.id AND m.role in (1,2,3) and c.school_id = #{current_school.id} AND c.is_delete = 0) as course_count FROM `users`, user_extensions ue where ue.school_id=#{current_school.id} and users.id=ue.user_id and ue.identity=0 ORDER BY publish_shixun_count desc, course_count desc, id desc LIMIT 10") # ).order("publish_shixun_count desc, experience desc").limit(10) + @teacher_count = UserExtension.where(school_id: current_school.id) + .select('SUM(IF(identity=0, 1, 0)) AS teachers_count').first.teachers_count @teachers = @teachers.map do |teacher| course_ids = Course.find_by_sql("SELECT c.id FROM courses c, course_members m WHERE c.id != 1309 and m.course_id = c.id AND m.role in (1,2,3) AND m.user_id=#{teacher.id} AND c.is_delete = 0 and c.school_id = #{current_school.id}") @@ -94,11 +97,11 @@ class CollegesController < ApplicationController def course_statistics courses = Course.where(school_id: current_school.id, is_delete: 0).where.not(id: 1309) + @course_count = courses.size courses = courses.left_joins(practice_homeworks: { student_works: { myshixun: :games } }) .select('courses.id, courses.name, courses.is_end, sum(games.evaluate_count) evaluating_count') .group('courses.id').order('is_end asc, evaluating_count desc') - params[:per_page] = 8 @courses = paginate courses course_ids = @courses.map(&:id) @@ -114,6 +117,7 @@ class CollegesController < ApplicationController # 学生实训 def student_shixun + @student_count = User.joins(:user_extension).where(user_extensions: { school_id: current_school.id, identity: 1 }).count @students = User.joins(:user_extension).where(user_extensions: { school_id: current_school.id, identity: 1 }).includes(:user_extension).order('experience desc').limit(10) student_ids = @students.map(&:id) diff --git a/app/views/colleges/course_statistics.json.jbuilder b/app/views/colleges/course_statistics.json.jbuilder new file mode 100644 index 000000000..fcc83177a --- /dev/null +++ b/app/views/colleges/course_statistics.json.jbuilder @@ -0,0 +1,11 @@ +json.courses @courses do |course| + json.(course, :id, :name, :is_end, :evaluating_count) + json.teachers course.teacher_users.map(&:real_name).join('、') + json.student_count @student_count.fetch(course.id, 0) + json.shixun_work_count @shixun_work_count.fetch(course.id, 0) + json.attachment_count @attachment_count.fetch(course.id, 0) + json.message_count @message_count.fetch(course.id, 0) + json.other_work_count @exercise_count.fetch(course.id, 0) + @poll_count.fetch(course.id, 0) + @other_work_count.fetch(course.id, 0) + json.activity_time @active_time[course.id]&.strftime('%Y-%m-%d %H:%M') +end +json.course_count @course_count \ No newline at end of file diff --git a/app/views/colleges/student_shixun.json.jbuilder b/app/views/colleges/student_shixun.json.jbuilder new file mode 100644 index 000000000..431603afa --- /dev/null +++ b/app/views/colleges/student_shixun.json.jbuilder @@ -0,0 +1,10 @@ +json.teachers @students do |student| + json.login student.login + json.name student.real_name + json.student_id student.student_id + json.shixun_count @shixun_count.fetch(student.id, 0) + json.study_shixun_count @study_shixun_count.fetch(student.id, 0) + json.grade student.grade + json.experience student.experience +end +json.student_count @student_count \ No newline at end of file diff --git a/app/views/colleges/teachers.json.jbuilder b/app/views/colleges/teachers.json.jbuilder new file mode 100644 index 000000000..29b383fa4 --- /dev/null +++ b/app/views/colleges/teachers.json.jbuilder @@ -0,0 +1,11 @@ +json.teachers @teachers do |teacher| + json.login teacher['login'] + json.name teacher['real_name'] + json.course_count teacher['course_count'] + json.shixun_work_count teacher['shixun_work_count'] + json.un_shixun_work_count teacher['un_shixun_work_count'] + json.student_count teacher['student_count'] + json.complete_rate teacher['complete_rate'] + json.publish_shixun_count teacher['publish_shixun_count'] +end +json.teacher_count @teacher_count \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 2ef60b45f..e15b216ce 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -977,6 +977,19 @@ Rails.application.routes.draw do post :entry end end + + resources :colleges, only: [] do + member do + get :statistics + get :course_statistics + get :student_shixun + get :shixun_time + get :shixun_report_count + get :teachers + get :shixun_chart_data + get :student_hot_evaluations + end + end end namespace :admins do @@ -1287,19 +1300,6 @@ Rails.application.routes.draw do end end - resources :colleges, only: [] do - member do - get :statistics - get :course_statistics - get :student_shixun - get :shixun_time - get :shixun_report_count - get :teachers - get :shixun_chart_data - get :student_hot_evaluations - end - end - resources :partners, only: [] do member do get :customers From 51326c616038c9655cf9629a3c2d9ba3d6338685 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Wed, 18 Dec 2019 17:39:01 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E5=AE=9E=E8=AE=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/educoder/shixunnodata.png | Bin 0 -> 37239 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/educoder/shixunnodata.png diff --git a/public/images/educoder/shixunnodata.png b/public/images/educoder/shixunnodata.png new file mode 100644 index 0000000000000000000000000000000000000000..e4df446ca07cdf0c1bef1abdc073e48616271afc GIT binary patch literal 37239 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 Date: Wed, 18 Dec 2019 17:46:14 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E8=B6=85=E7=AE=A1=E7=9A=84=E5=8D=95?= =?UTF-8?q?=E4=BD=8D=E5=88=97=E8=A1=A8=E6=97=A0=E6=B3=95=E6=8C=89=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E6=95=B0=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admins/schools_controller.rb | 2 +- app/queries/admins/school_query.rb | 1 + app/views/admins/schools/shared/_list.html.erb | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/admins/schools_controller.rb b/app/controllers/admins/schools_controller.rb index 7e1626d98..8c4f1d59e 100644 --- a/app/controllers/admins/schools_controller.rb +++ b/app/controllers/admins/schools_controller.rb @@ -5,7 +5,7 @@ class Admins::SchoolsController < Admins::BaseController schools = Admins::SchoolQuery.call(params) - @schools = paginate schools.includes(:user_extensions) + @schools = paginate schools school_ids = @schools.map(&:id) @department_count = Department.where(school_id: school_ids).group(:school_id).count diff --git a/app/queries/admins/school_query.rb b/app/queries/admins/school_query.rb index 888cded97..3206f0858 100644 --- a/app/queries/admins/school_query.rb +++ b/app/queries/admins/school_query.rb @@ -17,6 +17,7 @@ class Admins::SchoolQuery < ApplicationQuery if keyword schools = schools.where('schools.name LIKE ?', "%#{keyword}%") end + schools = schools.left_joins(:user_extensions).select('schools.*, IFNULL(count(user_extensions.user_id),0) users_count').group('schools.id') custom_sort schools, params[:sort_by], params[:sort_direction] end end \ No newline at end of file diff --git a/app/views/admins/schools/shared/_list.html.erb b/app/views/admins/schools/shared/_list.html.erb index ff0b17992..dd0a054e3 100644 --- a/app/views/admins/schools/shared/_list.html.erb +++ b/app/views/admins/schools/shared/_list.html.erb @@ -33,7 +33,7 @@ <%= school.province %> <%= school.city %> <%= school.address %> - <%= school.user_extensions.count %> + <%= school.users_count %> <%= @department_count.fetch(school.id, 0) %> <%= school.created_at&.strftime('%Y-%m-%d %H:%M') %>