From 31d5e0ccc2217ebfcf5419e1e8a1801fddb07be6 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Thu, 10 Oct 2019 17:13:21 +0800 Subject: [PATCH 01/12] tea --- .../modules/courses/members/ChangeRolePop.js | 0 .../modules/courses/members/studentsList.js | 2 +- .../modules/courses/members/teacherList.js | 37 ++++++++++++++----- 3 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 public/react/src/modules/courses/members/ChangeRolePop.js diff --git a/public/react/src/modules/courses/members/ChangeRolePop.js b/public/react/src/modules/courses/members/ChangeRolePop.js new file mode 100644 index 000000000..e69de29bb diff --git a/public/react/src/modules/courses/members/studentsList.js b/public/react/src/modules/courses/members/studentsList.js index 1b0b19d6f..cba7dbf54 100644 --- a/public/react/src/modules/courses/members/studentsList.js +++ b/public/react/src/modules/courses/members/studentsList.js @@ -1,5 +1,5 @@ import React,{ Component } from "react"; -import { Input,Checkbox,Table, Pagination, Modal,Menu ,Spin, Tooltip , Divider } from "antd"; +import { Input,Checkbox,Table, Pagination, Modal,Menu ,Spin, Tooltip , Divider, Popconfirm } from "antd"; import ClipboardJS from 'clipboard' import '../css/Courses.css' import '../css/members.css' diff --git a/public/react/src/modules/courses/members/teacherList.js b/public/react/src/modules/courses/members/teacherList.js index 86ae7aa0b..d3f4521b3 100644 --- a/public/react/src/modules/courses/members/teacherList.js +++ b/public/react/src/modules/courses/members/teacherList.js @@ -1,5 +1,5 @@ import React,{ Component } from "react"; -import { Input,Checkbox,Table, Divider, Tooltip,Spin, Menu } from "antd"; +import { Input,Checkbox,Table, Divider, Tooltip,Spin, Menu, Popconfirm } from "antd"; import CourseLayoutcomponent from '../common/CourseLayoutComponent' import NoneData from "../coursesPublic/NoneData" @@ -150,15 +150,34 @@ function buildColumns(that) { ) } else { return ( - - {record.role != ROLE_ADMIN && that.onDelete(record)} style={'grey'}>删除} - {(record.role == ROLE_TEACHER || record.role == ROLE_TEACHER_ASSISTANT || isAdminOrCreator) && record.role != ROLE_ADMIN - && } - { record.role == ROLE_TEACHER ? that.changeToAssistant(record)}>变更为助教 : '' } - { record.role == ROLE_TEACHER_ASSISTANT ? that.changeToTeacher(record)}>变更为教师 : '' } - { record.role == ROLE_ADMIN && isAdminOrCreator ? that.showChangeAdminModal(record)}>更换管理员 : '' } + + 删除 + + 管理员 + 助教 + 学生 + + } + > + 修改角色 + + + + + // + // {record.role != ROLE_ADMIN && that.onDelete(record)} style={'grey'}>删除} + // {(record.role == ROLE_TEACHER || record.role == ROLE_TEACHER_ASSISTANT || isAdminOrCreator) && record.role != ROLE_ADMIN + // && } + // { record.role == ROLE_TEACHER ? that.changeToAssistant(record)}>变更为助教 : '' } + // { record.role == ROLE_TEACHER_ASSISTANT ? that.changeToTeacher(record)}>变更为教师 : '' } + // { record.role == ROLE_ADMIN && isAdminOrCreator ? that.showChangeAdminModal(record)}>更换管理员 : '' } - ) + // + ) } }, From e67b8e3404cc61a3087603e469478f093937d0b8 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Fri, 11 Oct 2019 09:56:04 +0800 Subject: [PATCH 02/12] style2 --- public/react/src/common/course/WordsBtn.js | 14 ++++++++++---- .../src/modules/courses/members/teacherList.js | 15 +++++++++------ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/public/react/src/common/course/WordsBtn.js b/public/react/src/common/course/WordsBtn.js index 58b000338..85a85cfb6 100644 --- a/public/react/src/common/course/WordsBtn.js +++ b/public/react/src/common/course/WordsBtn.js @@ -8,15 +8,21 @@ class WordsBtn extends Component { } render() { - let{to, href,targets}=this.props + let{to, href,targets, style2 }=this.props return( { to==undefined&&targets==undefined ? - {this.props.children}: - targets!=undefined? {this.props.children} + {this.props.children}: + targets!=undefined? {this.props.children} : - {this.props.children} + {this.props.children} } ) diff --git a/public/react/src/modules/courses/members/teacherList.js b/public/react/src/modules/courses/members/teacherList.js index d3f4521b3..1dd8cd3f9 100644 --- a/public/react/src/modules/courses/members/teacherList.js +++ b/public/react/src/modules/courses/members/teacherList.js @@ -117,7 +117,7 @@ function buildColumns(that) { const hasGraduationModule = that.hasGraduationModule() if (hasGraduationModule && showSorter) { columns.push({ - title: '答辩组', + title: '所在答辩组', // width: 90, sorter: showSorter, sortDirections: sortDirections, @@ -141,6 +141,9 @@ function buildColumns(that) { width: 150, align:'center', render: (text, record) => { + const isAdmin = record.role == ROLE_ADMIN + const isTeacher = record.role == ROLE_TEACHER + const isAssitant = record.role == ROLE_TEACHER_ASSISTANT if (record.application_id) { return ( @@ -151,19 +154,19 @@ function buildColumns(that) { } else { return ( - 删除 + that.onDelete(record)} style={'grey'}>删除 - 管理员 - 助教 + 管理员 + 助教 学生 } > - 修改角色 + 修改角色 From d2b2384b9477a93980933c05a4549a81eb0fd900 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Fri, 11 Oct 2019 11:05:16 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=95=99=E5=B8=88=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/courses/members/ChangeRolePop.js | 72 +++++++++++++++++++ .../modules/courses/members/teacherList.js | 18 ++++- 2 files changed, 88 insertions(+), 2 deletions(-) diff --git a/public/react/src/modules/courses/members/ChangeRolePop.js b/public/react/src/modules/courses/members/ChangeRolePop.js index e69de29bb..44dfc28fc 100644 --- a/public/react/src/modules/courses/members/ChangeRolePop.js +++ b/public/react/src/modules/courses/members/ChangeRolePop.js @@ -0,0 +1,72 @@ +import React, { useState, useEffect } from 'react' +import { trigger, WordsBtn } from 'educoder' +import { Input, Checkbox, Popconfirm } from "antd"; +import axios from 'axios' + +/** + 角色数组, CREATOR: 创建者, PROFESSOR: 教师, ASSISTANT_PROFESSOR: 助教, STUDENT: 学生 +*/ +function ChangeRolePop({ member_roles = [], record, courseId, onChangeRoleSuccess, showNotification }) { + const [checkBoxRoles, setCheckBoxRoles] = useState(member_roles) + useEffect(() => { + setCheckBoxRoles(member_roles) + }, [member_roles]) + function onCheckBoxChange(val) { + console.log(val) + + const isTeacher = checkBoxRoles.indexOf('PROFESSOR') + const isAssitant = checkBoxRoles.indexOf('ASSISTANT_PROFESSOR') + const isTeacherNew = val.indexOf('PROFESSOR') + const isAssitantNew = val.indexOf('ASSISTANT_PROFESSOR') + if (isTeacherNew > -1 && isTeacher == -1 && isAssitantNew > -1) { + val.splice(isAssitantNew, 1) + } + if (isAssitantNew > -1 && isAssitant == -1 && isTeacherNew > -1) { + val.splice(isTeacherNew, 1) + } + + setCheckBoxRoles(val) + } + function onCancel() { + setCheckBoxRoles(member_roles) + } + const onConfirm = async () => { + if (checkBoxRoles && checkBoxRoles.length == 0) { + showNotification('请至少选择一个角色') + return; + } + const url = `/courses/${courseId}/change_member_role.json` + const response = await axios.post(url, { + roles: checkBoxRoles, + user_id: record.user_id + }) + if (response.data.status == 0) { + onChangeRoleSuccess() + } + console.log(response) + } + const isAdmin = checkBoxRoles.indexOf('CREATOR') != -1 + const isTeacher = checkBoxRoles.indexOf('PROFESSOR') != -1 + const isAssitant = checkBoxRoles.indexOf('ASSISTANT_PROFESSOR') != -1 + const isStudent = checkBoxRoles.indexOf('STUDENT') != -1 + return ( + + {isAdmin && 管理员} + {!isAdmin && 教师} + 助教 + 学生 + + } + > + 修改角色 + + ) +} +export default ChangeRolePop \ No newline at end of file diff --git a/public/react/src/modules/courses/members/teacherList.js b/public/react/src/modules/courses/members/teacherList.js index 1dd8cd3f9..72b667300 100644 --- a/public/react/src/modules/courses/members/teacherList.js +++ b/public/react/src/modules/courses/members/teacherList.js @@ -24,6 +24,7 @@ import AddAdminModal from './modal/AddAdminModal' import CourseGroupChooserModal from './modal/CourseGroupChooserModal' import { ROLE_TEACHER_NUM, ROLE_ASSISTANT_NUM } from './common' import CourseGroupChooser from './CourseGroupChooser' +import ChangeRolePop from './ChangeRolePop' const Search = Input.Search; const ROLE_ADMIN = "管理员" @@ -38,6 +39,8 @@ function buildColumns(that) { const isAdminOrTeacher = that.props.isAdminOrTeacher() const { course_groups, filterKey } = that.state const showSorter = filterKey == '1' + const courseId = that.props.match.params.coursesId + const columns = [{ title: '序号', dataIndex: 'name', @@ -152,10 +155,18 @@ function buildColumns(that) { that.onAgree(record)} style={{color: '#4CACFF'}}>同意 ) } else { + return ( that.onDelete(record)} style={'grey'}>删除 - + {/* 修改角色 - + */} @@ -366,6 +377,9 @@ class studentsList extends Component{ console.log(error); }); } + onChangeRoleSuccess = () => { + this.fetchAll() + } fetchAll = async (argPage) => { this.setState({ isSpin:true From 3ed24f333d611fa69ad87defdfee4671b4045584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Fri, 11 Oct 2019 11:09:59 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=AE=9E=E8=AE=AD?= =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E6=8F=8F=E8=BF=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/modules/courses/shixunHomework/ShixunhomeWorkItem.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js b/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js index 557e1ca89..4ebe801c5 100644 --- a/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js +++ b/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js @@ -354,8 +354,8 @@ class ShixunhomeWorkItem extends Component{ {/* {discussMessage.author.name} */} { discussMessage.author && {discussMessage.author} } - {discussMessage.commit_count===undefined?"":{discussMessage.commit_count} 已交} - {discussMessage.uncommit_count===undefined?"":{discussMessage.uncommit_count} 未交} + {discussMessage.commit_count===undefined?"":{discussMessage.commit_count} 已开始做题} + {discussMessage.uncommit_count===undefined?"":{discussMessage.uncommit_count} 未开始做题} {/*{discussMessage.replies_count} 3 未评*/} { From 4846cb348747d9491ea886802a338c06729a38bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Fri, 11 Oct 2019 11:24:46 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/modules/courses/shixunHomework/ShixunhomeWorkItem.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js b/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js index 4ebe801c5..8b63a3471 100644 --- a/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js +++ b/public/react/src/modules/courses/shixunHomework/ShixunhomeWorkItem.js @@ -381,7 +381,7 @@ class ShixunhomeWorkItem extends Component{ { discussMessage && discussMessage.upper_category_name && 22 }> - { {discussMessage.upper_category_name}} + { {discussMessage.upper_category_name}} } From 94852128f519468448c4c1eb22bff8b2520c9c39 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Fri, 11 Oct 2019 11:29:52 +0800 Subject: [PATCH 06/12] add_commit_method_to exercise_user --- app/controllers/admins/shixun_settings_controller.rb | 2 +- app/controllers/exercises_controller.rb | 3 ++- app/jobs/end_exercise_calculate_job.rb | 3 ++- app/models/exercise_user.rb | 1 + app/models/shixun.rb | 1 + app/tasks/exercise_publish_task.rb | 6 ++++-- app/views/exercises/_exercise_user.json.jbuilder | 1 + app/views/exercises/_user_exercise_info.json.jbuilder | 1 + .../20191011030441_add_commit_method_to_exercise_user.rb | 5 +++++ 9 files changed, 18 insertions(+), 5 deletions(-) create mode 100644 db/migrate/20191011030441_add_commit_method_to_exercise_user.rb diff --git a/app/controllers/admins/shixun_settings_controller.rb b/app/controllers/admins/shixun_settings_controller.rb index 0ccd5725d..9202ccce6 100644 --- a/app/controllers/admins/shixun_settings_controller.rb +++ b/app/controllers/admins/shixun_settings_controller.rb @@ -92,6 +92,6 @@ class Admins::ShixunSettingsController < Admins::BaseController end def setting_params - params.permit(:use_scope,:excute_time,:close,:status,:can_copy,:webssh,:hidden,:homepage_show,:task_pass,:code_hidden,:id,tag_repertoires:[]) + params.permit(:use_scope,:excute_time,:close,:status,:can_copy,:webssh,:hidden,:homepage_show,:task_pass,:code_hidden,:page_no, :id,tag_repertoires:[]) end end diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index f2e8508f0..30f09cc64 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -1088,7 +1088,8 @@ class ExercisesController < ApplicationController :end_at => Time.now, :objective_score => objective_score, :score => total_score, - :subjective_score => subjective_score + :subjective_score => subjective_score, + :commit_method => @answer_committed_user&.commit_method.to_i > 0 ? @answer_committed_user&.commit_method.to_i : params[:commit_method].to_i } @answer_committed_user.update_attributes(commit_option) CommitExercsieNotifyJobJob.perform_later(@exercise.id, current_user.id) diff --git a/app/jobs/end_exercise_calculate_job.rb b/app/jobs/end_exercise_calculate_job.rb index 39d8bb1db..b6d8e491e 100644 --- a/app/jobs/end_exercise_calculate_job.rb +++ b/app/jobs/end_exercise_calculate_job.rb @@ -19,7 +19,8 @@ class EndExerciseCalculateJob < ApplicationJob :end_at => Time.now, :objective_score => objective_score, :score => total_score, - :subjective_score => user_sub_score + :subjective_score => user_sub_score, + :commit_method => user&.commit_method.to_i > 0 ? user&.commit_method.to_i : 4 } user.update_attributes(commit_option) end diff --git a/app/models/exercise_user.rb b/app/models/exercise_user.rb index 84f042b25..0f2e8456e 100644 --- a/app/models/exercise_user.rb +++ b/app/models/exercise_user.rb @@ -1,4 +1,5 @@ class ExerciseUser < ApplicationRecord + # commit_method 0 为默认, 1为学生的手动提交,2为倒计时结束后自动提交,3为试卷定时截止的自动提交, 4为教师手动的立即截止 belongs_to :user belongs_to :exercise diff --git a/app/models/shixun.rb b/app/models/shixun.rb index 4912ea15a..0cdb2e82b 100644 --- a/app/models/shixun.rb +++ b/app/models/shixun.rb @@ -1,5 +1,6 @@ class Shixun < ApplicationRecord include Searchable::Shixun + attr_accessor :page_no #管理员页面 实训配置更新状态时,需要接受page_no参数 # status: 0:编辑 1:申请发布 2:正式发布 3:关闭 -1:软删除 # hide_code: 隐藏代码窗口 diff --git a/app/tasks/exercise_publish_task.rb b/app/tasks/exercise_publish_task.rb index 220512664..a7b533d05 100644 --- a/app/tasks/exercise_publish_task.rb +++ b/app/tasks/exercise_publish_task.rb @@ -66,7 +66,8 @@ class ExercisePublishTask :end_at => Time.now, :objective_score => s_score, :score => total_score, - :subjective_score => subjective_score + :subjective_score => subjective_score, + :commit_method => exercise_user&.commit_method.to_i > 0 ? exercise_user&.commit_method.to_i : 3 } exercise_user.update_attributes(commit_option) end @@ -108,7 +109,8 @@ class ExercisePublishTask :end_at => Time.now, :objective_score => s_score, :score => total_score, - :subjective_score => subjective_score + :subjective_score => subjective_score, + :commit_method => exercise_user&.commit_method.to_i > 0 ? exercise_user&.commit_method.to_i : 3 } exercise_user.update_attributes(commit_option) end diff --git a/app/views/exercises/_exercise_user.json.jbuilder b/app/views/exercises/_exercise_user.json.jbuilder index d41fb9e20..5f00bbd70 100644 --- a/app/views/exercises/_exercise_user.json.jbuilder +++ b/app/views/exercises/_exercise_user.json.jbuilder @@ -8,6 +8,7 @@ json.user_group_name ex_user_info[:user_group_name] json.student_id ex_user_info[:student_id] json.commit_status ex_user_info[:commit_status] json.end_at ex_user_info[:end_at] +json.commit_method exercise_user&.commit_method.to_i if subjective_type == 1 json.objective_score ex_user_info[:ex_object_score] json.subjective_score ex_user_info[:ex_subject_score] diff --git a/app/views/exercises/_user_exercise_info.json.jbuilder b/app/views/exercises/_user_exercise_info.json.jbuilder index 0d21cc593..bdac3a985 100644 --- a/app/views/exercises/_user_exercise_info.json.jbuilder +++ b/app/views/exercises/_user_exercise_info.json.jbuilder @@ -9,6 +9,7 @@ json.exercise_answer_user do json.user_id ex_answerer.id json.login ex_answerer.login if exercise_user.present? + json.commit_method exercise_user&.commit_method.to_i json.start_at exercise_user.start_at json.score exercise_user.score.present? ? exercise_user.score.round(1).to_s : "0.0" end diff --git a/db/migrate/20191011030441_add_commit_method_to_exercise_user.rb b/db/migrate/20191011030441_add_commit_method_to_exercise_user.rb new file mode 100644 index 000000000..060e5eb5f --- /dev/null +++ b/db/migrate/20191011030441_add_commit_method_to_exercise_user.rb @@ -0,0 +1,5 @@ +class AddCommitMethodToExerciseUser < ActiveRecord::Migration[5.2] + def change + add_column :exercise_users, :commit_method, :integer, :default => 0 + end +end From 0629bc15af5cf4801e873f9bca2b052d248a81d7 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Fri, 11 Oct 2019 13:49:08 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E8=AF=95=E5=8D=B7=E7=9A=84=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/exercises_controller.rb | 35 ++++++++++++++++++------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 8f7d43196..e76148f20 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -1077,12 +1077,22 @@ class ExercisesController < ApplicationController def commit_exercise ActiveRecord::Base.transaction do begin - if @user_course_identity > Course::ASSISTANT_PROFESSOR #为学生时 - objective_score = calculate_student_score(@exercise,current_user)[:total_score] - subjective_score = @answer_committed_user.subjective_score - total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score - total_score = objective_score + total_score_subjective_score - commit_option = { + can_commit_exercise = false + if (@user_course_identity > Course::ASSISTANT_PROFESSOR) && params[:commit_method].present? #为学生时 + if params[:commit_method].to_i == 2 #自动提交时 + user_left_time = get_exercise_left_time(@exercise,current_user) + if user_left_time.to_i <= 0 + can_commit_exercise = true + end + else + can_commit_exercise = true + end + if can_commit_exercise + objective_score = calculate_student_score(@exercise,current_user)[:total_score] + subjective_score = @answer_committed_user.subjective_score + total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score + total_score = objective_score + total_score_subjective_score + commit_option = { :status => 1, :commit_status => 1, :end_at => Time.now, @@ -1090,10 +1100,15 @@ class ExercisesController < ApplicationController :score => total_score, :subjective_score => subjective_score, :commit_method => @answer_committed_user&.commit_method.to_i > 0 ? @answer_committed_user&.commit_method.to_i : params[:commit_method].to_i - } - @answer_committed_user.update_attributes(commit_option) - CommitExercsieNotifyJobJob.perform_later(@exercise.id, current_user.id) - normal_status(0,"试卷提交成功!") + } + @answer_committed_user.update_attributes(commit_option) + CommitExercsieNotifyJobJob.perform_later(@exercise.id, current_user.id) + normal_status(0,"试卷提交成功!") + else + normal_status(-1,"提交失败,请重试!") + end + else + normal_status(-1,"提交失败,请重试!") end rescue Exception => e uid_logger_error(e.message) From c4c7380162ff70c491aba83bbb81f5986a216862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Fri, 11 Oct 2019 13:58:54 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=A4=E5=8D=B7?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/courses/exercise/ExerciseReviewAndAnswer.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/public/react/src/modules/courses/exercise/ExerciseReviewAndAnswer.js b/public/react/src/modules/courses/exercise/ExerciseReviewAndAnswer.js index f45de9b64..59072a862 100644 --- a/public/react/src/modules/courses/exercise/ExerciseReviewAndAnswer.js +++ b/public/react/src/modules/courses/exercise/ExerciseReviewAndAnswer.js @@ -129,7 +129,9 @@ class ExerciseReviewAndAnswer extends Component{ autoCommitExercise=()=>{ let eId=this.props.match.params.Id; let url=`/exercises/${eId}/commit_exercise.json`; - axios.post(url).then((result)=>{ + axios.post(url,{ + commit_method:2 + }).then((result)=>{ if(result){ this.setState({ Modalstype:true, @@ -139,6 +141,7 @@ class ExerciseReviewAndAnswer extends Component{ ModalSave:this.sureCommit, Loadtype:true }) + this.props.showNotification(`${result.data.message}`); } }).catch((error)=>{ console.log(error); @@ -485,7 +488,9 @@ class ExerciseReviewAndAnswer extends Component{ //交卷 let eId=this.props.match.params.Id; let url=`/exercises/${eId}/commit_exercise.json`; - axios.post(url).then((result)=>{ + axios.post(url,{ + commit_method:1 + }).then((result)=>{ if(result){ this.setState({ Modalstype:false, From 4761f518d789b52f23d0831664bf44e44559df01 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Fri, 11 Oct 2019 14:00:11 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../react/src/modules/courses/css/members.css | 4 + .../modules/courses/members/studentsList.css | 3 + .../modules/courses/members/studentsList.js | 124 +++++++++++++----- 3 files changed, 100 insertions(+), 31 deletions(-) create mode 100644 public/react/src/modules/courses/members/studentsList.css diff --git a/public/react/src/modules/courses/css/members.css b/public/react/src/modules/courses/css/members.css index 67524d130..ab7effaa0 100644 --- a/public/react/src/modules/courses/css/members.css +++ b/public/react/src/modules/courses/css/members.css @@ -84,4 +84,8 @@ text-overflow:ellipsis; white-space:nowrap; cursor: default; +} + +.changeRolePop .ant-checkbox-group { + width: 230px !important; } \ No newline at end of file diff --git a/public/react/src/modules/courses/members/studentsList.css b/public/react/src/modules/courses/members/studentsList.css new file mode 100644 index 000000000..49a81fa32 --- /dev/null +++ b/public/react/src/modules/courses/members/studentsList.css @@ -0,0 +1,3 @@ +.stu_table .ant-table-thead > tr > th, .stu_table .ant-table-tbody > tr > td { + padding: 14px 8px; +} \ No newline at end of file diff --git a/public/react/src/modules/courses/members/studentsList.js b/public/react/src/modules/courses/members/studentsList.js index cba7dbf54..5f614cfbc 100644 --- a/public/react/src/modules/courses/members/studentsList.js +++ b/public/react/src/modules/courses/members/studentsList.js @@ -14,6 +14,8 @@ import _ from 'lodash' import NoneData from "../coursesPublic/NoneData" import DownloadMessageysl from "../../modals/DownloadMessageysl"; import CreateGroupByImportModal from './modal/CreateGroupByImportModal' +import ChangeRolePop from './ChangeRolePop' +import "./studentsList.css" const Search =Input.Search; const TYPE_STUDENTS = 1 @@ -22,6 +24,7 @@ const TYPE_COURSE_GOURP_CHILD = 3 const buildColumns = (that,isParent) => { const { course_groups , sortedInfo } = that.state let showSorter = isParent==true + const courseId = that.props.match.params.coursesId const columns=[{ title: '序号', dataIndex: 'id', @@ -32,19 +35,21 @@ const buildColumns = (that,isParent) => { render: (id, student, index) => { return (that.state.page - 1) * 20 + index + 1 } - }, { - title: '用户id', - dataIndex: 'login', - key: 'login', - align:'center', - width:"10%", - className:"color-grey-6", - render: (login, record) => { - return 10 ? login : ''} - >{login} - } - }, { + }, + // { + // title: '用户id', + // dataIndex: 'login', + // key: 'login', + // align:'center', + // width:"10%", + // className:"color-grey-6", + // render: (login, record) => { + // return 10 ? login : ''} + // >{login} + // } + // }, + { title: '姓名', dataIndex: 'name', key: 'name', @@ -69,14 +74,45 @@ const buildColumns = (that,isParent) => { return 10 ? student_id : ''} style={{maxWidth: '160px'}} >{student_id} } - }]; + } + , { + title: '手机号', + dataIndex: 'user_phone', + key: 'user_phone', + align:'center', + width:"10%", + className:"color-grey-6", + // sorter: true, + // sortDirections: sortDirections, + // sortOrder: sortedInfo.columnKey === 'user_phone' && sortedInfo.order, + render: (user_phone, record) => { + return 10 ? user_phone : ''} + style={{maxWidth: '160px'}} >{user_phone} + } + } + , { + title: '邮箱', + dataIndex: 'user_mail', + key: 'user_mail', + align:'center', + width:"10%", + className:"color-grey-6", + // sorter: true, + // sortDirections: sortDirections, + // sortOrder: sortedInfo.columnKey === 'user_mail' && sortedInfo.order, + render: (user_mail, record) => { + return 10 ? user_mail : ''} + style={{maxWidth: '160px'}} >{user_mail} + } + } + ]; if (course_groups && course_groups.length) { columns.push({ title: '分班', dataIndex: 'course_group_name', key: 'course_group_name', align:'center', - width:"40%", + width:"25%", className:"color-grey-6", sorter:showSorter, sortDirections: sortDirections, @@ -95,14 +131,36 @@ const buildColumns = (that,isParent) => { const isAdmin = that.props.isAdmin() if (isAdmin) { columns.unshift({ - title: '', - dataIndex: 'check', - key: 'check', - render: (text, item) => { - return - }, - width:"5%" - }) + title: '', + dataIndex: 'check', + key: 'check', + render: (text, item) => { + return + }, + width:"5%" + }) + + columns.push({ + title: '操作', + key: 'action', + width: '18%', + align:'center', + render: (text, record) => { + return ( + + that.onDelete(record)} style={'grey'}>删除学生 + + + ) + }, + }) + } return columns; @@ -242,7 +300,9 @@ class studentsList extends Component{ onChange=()=>{ } - + onChangeRoleSuccess = () => { + this.fetchAll() + } componentDidMount() { this.setState({ isSpin:true @@ -451,11 +511,13 @@ class studentsList extends Component{ } } // 多选 - onDelete = () => { - const len = this.state.checkBoxValues.length - if (len == 0) { - this.props.showNotification('请先从列表选择要删除的学生') - return; + onDelete = (record) => { + if (!record) { + const len = this.state.checkBoxValues.length + if (len == 0) { + this.props.showNotification('请先从列表选择要删除的学生') + return; + } } this.props.confirm({ @@ -465,7 +527,7 @@ class studentsList extends Component{ let id = this.props.match.params.coursesId let url=`/courses/${id}/delete_from_course.json`; axios.post((url), { - students: this.state.checkBoxValues.map(item => {return {course_member_id: item} }), + students: [{course_member_id: record.user_id}] // this.state.checkBoxValues.map(item => {return {course_member_id: item} }), }).then((result)=>{ if (result.data.status == 0) { this.props.showNotification('删除成功') @@ -701,7 +763,7 @@ class studentsList extends Component{
{isAdmin && 已选 {checkBoxValues.length} 个}
- {isAdmin &&
  • 删除
  • } + {/* {isAdmin &&
  • 删除
  • } */} {isAdmin &&
  • 移动到...
      From 213157d542ec73d313e00df13400571c1890356b Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Fri, 11 Oct 2019 14:17:54 +0800 Subject: [PATCH 10/12] course_member_id --- public/react/src/modules/courses/members/studentsList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/members/studentsList.js b/public/react/src/modules/courses/members/studentsList.js index 5f614cfbc..c4d4abbda 100644 --- a/public/react/src/modules/courses/members/studentsList.js +++ b/public/react/src/modules/courses/members/studentsList.js @@ -527,7 +527,7 @@ class studentsList extends Component{ let id = this.props.match.params.coursesId let url=`/courses/${id}/delete_from_course.json`; axios.post((url), { - students: [{course_member_id: record.user_id}] // this.state.checkBoxValues.map(item => {return {course_member_id: item} }), + students: [{course_member_id: record.course_member_id}] // this.state.checkBoxValues.map(item => {return {course_member_id: item} }), }).then((result)=>{ if (result.data.status == 0) { this.props.showNotification('删除成功') From fb95ef4d18adde4a1d3cacbf4670310cf18d58b1 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Fri, 11 Oct 2019 14:22:04 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E5=AE=BD=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/modules/courses/members/studentsList.css | 2 +- public/react/src/modules/courses/members/studentsList.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/public/react/src/modules/courses/members/studentsList.css b/public/react/src/modules/courses/members/studentsList.css index 49a81fa32..ebab316a0 100644 --- a/public/react/src/modules/courses/members/studentsList.css +++ b/public/react/src/modules/courses/members/studentsList.css @@ -1,3 +1,3 @@ .stu_table .ant-table-thead > tr > th, .stu_table .ant-table-tbody > tr > td { - padding: 14px 8px; + padding: 14px 6px; } \ No newline at end of file diff --git a/public/react/src/modules/courses/members/studentsList.js b/public/react/src/modules/courses/members/studentsList.js index 5f614cfbc..9a4f4be3b 100644 --- a/public/react/src/modules/courses/members/studentsList.js +++ b/public/react/src/modules/courses/members/studentsList.js @@ -143,7 +143,7 @@ const buildColumns = (that,isParent) => { columns.push({ title: '操作', key: 'action', - width: '18%', + width: '20%', align:'center', render: (text, record) => { return ( From 6b0f8d1a9e2f6e4b1dacd89725273c4eda0e277e Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Fri, 11 Oct 2019 14:31:53 +0800 Subject: [PATCH 12/12] stu --- public/react/src/modules/courses/members/studentsList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/members/studentsList.js b/public/react/src/modules/courses/members/studentsList.js index 2d26cff91..e3859345a 100644 --- a/public/react/src/modules/courses/members/studentsList.js +++ b/public/react/src/modules/courses/members/studentsList.js @@ -814,7 +814,7 @@ class studentsList extends Component{
  • - {!this.state.isSpin && + {students && students.length &&
    }