diff --git a/public/react/src/modules/courses/members/CourseGroupChooser.js b/public/react/src/modules/courses/members/CourseGroupChooser.js
index 7974b70dd..1a03c978f 100644
--- a/public/react/src/modules/courses/members/CourseGroupChooser.js
+++ b/public/react/src/modules/courses/members/CourseGroupChooser.js
@@ -2,8 +2,16 @@ import React, { useState, useEffect } from 'react'
import { trigger } from 'educoder'
import { Input, Checkbox } from "antd";
-function CourseGroupChooser({ course_groups, isAdminOrCreator, item, index, arg_course_groups, checkAllValue
- , coursesids, onCheckAllChange, joinCourseGroup }) {
+/**
+ arg_course_groups 选中的id数组
+ joinCourseGroup 选中时触发 joinCourseGroup(checkedValues, item, index) 传入item:数据对象,index: 数据对象index
+ checkAllValue 是否全选
+ onCheckAllChange 全选 onCheckAllChange(e, item, index)
+ course_groups 所有的group
+
+*/
+function CourseGroupChooser({ course_groups, isAdminOrCreator = true, item, index, arg_course_groups, checkAllValue, alwaysShow
+ , onCheckAllChange, joinCourseGroup }) {
const [state, setState] = useState({counter: 0})
const [search, setSearch] = useState('')
// useEffect(() => {
@@ -30,8 +38,15 @@ function CourseGroupChooser({ course_groups, isAdminOrCreator, item, index, arg_
that.state.checkAllArray[index] - checkAllValue
*/
+ console.log('arg_course_groups', arg_course_groups)
+
+
+ const urlStyle = {"lef":"tunset", minWidth: '262px'};
+ if (alwaysShow == true) {
+ urlStyle.display = 'block'
+ }
return (
-
+
{
course_groups && course_groups.length > 10?
(
@@ -41,15 +56,15 @@ function CourseGroupChooser({ course_groups, isAdminOrCreator, item, index, arg_
}
joinCourseGroup(checkedValues, item, index)}
- value={arg_course_groups.map(item => item.id)}
+ value={arg_course_groups.length && arg_course_groups[0].id ? arg_course_groups.map(item => item.id): arg_course_groups}
disabled={!isAdminOrCreator} className="mainGroup"
>
{course_groups && course_groups.length > 1 && -
{/* 防止被外面group包裹 */}
-
+ onCheckAllChange(e, item, index)} value={[checkAllValue]}>
onCheckAllChange(e, item, index)} onChange={() => {}}
+ value={true}
+ style={{ marginRight: '6px' }} onClick={() => {}}
>全选
}
@@ -60,9 +75,10 @@ function CourseGroupChooser({ course_groups, isAdminOrCreator, item, index, arg_
return(
-
- {item.name}
+
)
})
@@ -71,7 +87,7 @@ function CourseGroupChooser({ course_groups, isAdminOrCreator, item, index, arg_
trigger('groupAdd', coursesids)}
+ onClick={() => trigger('groupAdd')}
>添加分班...
diff --git a/public/react/src/modules/courses/members/modal/CourseGroupChooserModal.js b/public/react/src/modules/courses/members/modal/CourseGroupChooserModal.js
new file mode 100644
index 000000000..d03969629
--- /dev/null
+++ b/public/react/src/modules/courses/members/modal/CourseGroupChooserModal.js
@@ -0,0 +1,108 @@
+import React, { useState, useEffect, useRef } from 'react'
+import { trigger } from 'educoder'
+import { Input, Checkbox } from "antd";
+import CourseGroupChooser from '../CourseGroupChooser'
+import ModalWrapper from "../../common/ModalWrapper"
+import axios from 'axios'
+/**
+ arg_course_groups 选中的id数组
+ joinCourseGroup 选中时触发 joinCourseGroup(checkedValues, item, index) 传入item:数据对象,index: 数据对象index
+ checkAllValue 是否全选
+ onCheckAllChange 全选 onCheckAllChange(e, item, index)
+ course_groups 所有的group
+*/
+function CourseGroupChooserModal({ course_groups = [], isAdminOrCreator, item, index,
+ setVisible, visible, record = {}, props = {}, fetchAll
+ }) {
+ // , arg_course_groups, checkAllValue , onCheckAllChange, joinCourseGroup
+ const [checkAllValue, setCheckAllValue] = useState(true)
+ const [arg_course_groups, setArg_course_groups] = useState(course_groups.map(item => item.id))
+ const modalEl = useRef(null);
+ useEffect(() => {
+ setCheckAllValue(true)
+ setArg_course_groups(course_groups.map(item => item.id))
+ }, [course_groups, visible])
+
+ useEffect(() => {
+ if (visible != undefined) {
+ modalEl.current.setVisible(true)
+ }
+ }, [visible])
+
+ const joinCourseGroup = (checks) => {
+ setArg_course_groups(checks)
+ }
+ const onCheckAllChange = (e) => {
+ if (checkAllValue) {
+ setArg_course_groups([])
+ } else {
+ setArg_course_groups(course_groups.map(item => item.id))
+ }
+ setCheckAllValue(!checkAllValue)
+ }
+ const onOk = async () => {
+ console.log(checkAllValue, arg_course_groups)
+ let approval = 1
+ const courseId = props.match.params.coursesId
+ let url = `/courses/${courseId}/teacher_application_review.json`
+ const response = await axios.post(url, {
+ user_id: record.user_id,
+ application_id: record.application_id,
+ approval: approval,
+ group_id: arg_course_groups
+ })
+ props.showNotification(`已${approval == 1? '同意' : '拒绝'}`)
+ fetchAll(1)
+ modalEl.current.setVisible(false)
+ }
+ return (
+
+
+ {/*
+ */}
+ 确认同意TA的加入,并设置TA的分班管理权限
+
+
+
+ )
+}
+export default CourseGroupChooserModal
\ 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 72709b743..c6453b7e6 100644
--- a/public/react/src/modules/courses/members/teacherList.js
+++ b/public/react/src/modules/courses/members/teacherList.js
@@ -21,6 +21,7 @@ import { from } from "array-flatten";
// import AddStudentModal from './modal/AddStudentModal'
import AddGraduationGroupModal from './modal/AddGraduationGroupModal'
import AddAdminModal from './modal/AddAdminModal'
+import CourseGroupChooserModal from './modal/CourseGroupChooserModal'
import { ROLE_TEACHER_NUM, ROLE_ASSISTANT_NUM } from './common'
import CourseGroupChooser from './CourseGroupChooser'
@@ -101,8 +102,7 @@ function buildColumns(that) {
{...{course_groups, isAdminOrCreator, item, index, arg_course_groups,
checkAllValue: that.state.checkAllArray[index],
joinCourseGroup: that.joinCourseGroup,
- onCheckAllChange: that.onCheckAllChange,
- coursesids: that.props.coursesids }}
+ onCheckAllChange: that.onCheckAllChange}}
>}
}
@@ -212,24 +212,39 @@ class studentsList extends Component{
}
// approval 2 - 拒绝
onAgree = (record, approval = 1) => {
+ const isAdminOrCreator = this.props.isAdminOrCreator()
+ const { course_groups } = this.state
+ if (approval == 1 && isAdminOrCreator && course_groups && course_groups.length) {
+ this.setState({ clickRecord: record}, () => {
+ this.setGroupChooserModalVisible(true)
+ })
+ return;
+ }
const courseId = this.props.match.params.coursesId
let url = `/courses/${courseId}/teacher_application_review.json`
- axios.post(url, {
- user_id: record.user_id,
- application_id: record.application_id,
- approval: approval
- })
- .then((response) => {
- if (response.data.status == 0) {
- this.props.showNotification(`已${approval == 1? '同意' : '拒绝'}`)
- this.fetchAll(1)
+ this.props.confirm({
+ content: `是否确认${ approval == 1 ? '同意' : '拒绝'}TA的加入?`,
+ onOk: () => {
+ axios.post(url, {
+ user_id: record.user_id,
+ application_id: record.application_id,
+ approval: approval
+ })
+ .then((response) => {
+ if (response.data.status == 0) {
+ this.props.showNotification(`已${approval == 1? '同意' : '拒绝'}`)
+ this.fetchAll(1)
+ }
+ })
+ .catch(function (error) {
+ console.log(error);
+ });
}
})
- .catch(function (error) {
- console.log(error);
- });
+
+
}
onRefuse = (record) => {
this.onAgree(record, 2)
@@ -561,11 +576,15 @@ class studentsList extends Component{
this.fetchAll();
})
}
+ setGroupChooserModalVisible = (visible) => {
+ // 这里只会调用open
+ this.setState({groupChooserModalVisible: !this.state.groupChooserModalVisible})
+ }
render(){
const isAdmin = this.props.isAdmin()
const columns = buildColumns(this)
let {
- searchValue, checkBoxValues, checkAllValue,
+ searchValue, checkBoxValues, checkAllValue, course_groups,
groupList, total_count, teachers, order, page, apply_size, filterKey
}=this.state
@@ -647,6 +666,15 @@ class studentsList extends Component{
}
`}
+
+
{filterKey == '1' &&
{ isAdminOrTeacher && hasGraduationModule &&
已选 {checkBoxValues.length} 个 }
{ filterKey == '1' &&