import React, { Component } from "react"; import { Modal, Checkbox, Input, Spin, Select, Divider, Icon } from "antd"; import axios from 'axios' import ModalWrapper from "../../common/ModalWrapper" import InfiniteScroll from 'react-infinite-scroller'; import { ROLE_TEACHER_NUM, ROLE_ASSISTANT_NUM } from '../common' import { ConditionToolTip, ActionBtn } from 'educoder' import NoneData from '../../coursesPublic/NoneData' import AddGraduationGroupModal from './AddGraduationGroupModal' import SchoolSelect from '../../coursesPublic/form/SchoolSelect' const Option = Select.Option; const pageCount = 15; let timeout, currentValue class AddTeacherModal extends Component{ constructor(props){ super(props); this.state={ school_names: [], checkBoxValues: [], candidates: [], hasMore: true, loading: false, page: 1 } } fetchMemberList = (arg_page) => { const courseId = this.props.match.params.coursesId const page = arg_page || this.state.page; const { name, school_name } = this.state let url = `/courses/${courseId}/search_teacher_candidate.json` this.setState({ loading: true }) axios.post(url, { page: page, limit: pageCount, school_name: school_name || '', name: name || '' }) .then((response) => { if (!response.data.candidates || response.data.candidates.length == 0) { this.setState({ candidates: page == 1 ? response.data.candidates : this.state.candidates, page, loading: false, hasMore: false, }) } else { this.setState({ candidates: page == 1 ? response.data.candidates : this.state.candidates.concat(response.data.candidates), page, loading: false, hasMore: response.data.candidates.length == pageCount }) } }) .catch(function (error) { console.log(error); }); } componentDidMount() { } onAddGraduationGroupOk = () => { this.fetchOptions() } fetchOptions = () => { // add_teacher_popup const courseId = this.props.match.params.coursesId let url = `/courses/${courseId}/add_teacher_popup.json` axios.get(url, { }) .then((response) => { if (response.data.school_name) { this.setState({ school_name: response.data.school_name }, () => this.fetchMemberList()) } else { this.fetchMemberList() } if (response.data.graduation_groups) { this.setState({ graduation_groups: response.data.graduation_groups }) } if (response.data.course_groups) { this.setState({ course_groups: response.data.course_groups }) } }) .catch(function (error) { console.log(error); }); } setVisible = (visible) => { if (visible) { this.fetchOptions() } this.refs.modalWrapper.setVisible(visible) if (visible == false) { this.setState({ checkBoxValues: [] }) } } onSendOk = () => { const courseId = this.props.match.params.coursesId const url = `/courses/${courseId}/add_teacher.json` if (this.state.checkBoxValues.length == 0) { this.props.showNotification('请先在下面列表中选择要添加教师的成员') return } const params = { "user_list": this.state.checkBoxValues.map (item => { return { 'user_id': item }}) , // "graduation_group_id": "2", // "course_group_id": "820", "role": this.props.isTeacher ? ROLE_TEACHER_NUM : ROLE_ASSISTANT_NUM } const { graduationGroup, courseGroup } = this.state if (graduationGroup) { params.graduation_group_id = graduationGroup } if (courseGroup) { params.course_group_id = courseGroup } axios.post(url, params) .then((response) => { if (response.data.status == 0) { this.setVisible(false) this.props.showNotification('添加成功') this.props.addTeacherSuccess && this.props.addTeacherSuccess(params) } }) .catch(function (error) { console.log(error); }); } onOk = () => { this.onSendOk() } onCheckBoxChange = (checkBoxValues) => { this.setState({ checkBoxValues: checkBoxValues }) } handleInfiniteOnLoad = () => { this.fetchMemberList(this.state.page + 1) } onSearch = () => { this.fetchMemberList(1) } handleGradationGroupChange = (value) => { this.setState({ graduationGroup: value }) } handleCourseGroupChange = (value) => { this.setState({ courseGroup: value }) } onOrgNameChange = (value) => { // console.log('school_name: ', value) this.setState({ school_name: value }) } hasGraduationModule = () => { const { course_modules } = this.props; const result = course_modules && course_modules.filter( item => { return item.type == 'graduation' }) return result && result.length > 0 } render(){ const { candidates, checkBoxValues, loading, hasMore, name, school_name, school_names , graduationGroup, graduation_groups, courseGroup, course_groups } = this.state const { moduleName } = this.props return(
姓名: {this.setState({name: e.target.value})}} style={{ width: '200px', marginRight: '18px' }}> 单位: {/* */} this.fetchMemberList(1)} style={{ height: '30px', lineHeight: '30px', marginLeft: '10px', width: '70px'}} >搜索
{/* graduation_groups && !!graduation_groups.length */}

{ loading || candidates.length ?
{/* https://github.com/CassetteRocks/react-infinite-scroller/issues/70 */}
{ candidates && candidates.map( candidate => { return (

{/* "color":"#4c4c4c" */} 12 }> 12 }>

) }) }
{loading && hasMore && (
)}
: }
{ this.hasGraduationModule() &&
添加至答辩组:
} { course_groups && !!course_groups.length &&
管理权限:
}
) } } export default AddTeacherModal;