|
|
@ -5,6 +5,7 @@ import CourseLayoutcomponent from '../common/CourseLayoutComponent'
|
|
|
|
|
|
|
|
|
|
|
|
import Titlesearchsection from '../common/titleSearch/TitleSearchSection'
|
|
|
|
import Titlesearchsection from '../common/titleSearch/TitleSearchSection'
|
|
|
|
import ColorCountText from '../common/titleSearch/ColorCountText'
|
|
|
|
import ColorCountText from '../common/titleSearch/ColorCountText'
|
|
|
|
|
|
|
|
import update from 'immutability-helper'
|
|
|
|
|
|
|
|
|
|
|
|
import { WordsBtn, ConditionToolTip, on, off } from 'educoder'
|
|
|
|
import { WordsBtn, ConditionToolTip, on, off } from 'educoder'
|
|
|
|
import axios from 'axios'
|
|
|
|
import axios from 'axios'
|
|
|
@ -28,6 +29,7 @@ const pageSize = 20;
|
|
|
|
function buildColumns(that) {
|
|
|
|
function buildColumns(that) {
|
|
|
|
const isAdmin = that.props.isAdmin()
|
|
|
|
const isAdmin = that.props.isAdmin()
|
|
|
|
const isAdminOrCreator = that.props.isAdminOrCreator();
|
|
|
|
const isAdminOrCreator = that.props.isAdminOrCreator();
|
|
|
|
|
|
|
|
const isAdminOrTeacher = that.props.isAdminOrTeacher()
|
|
|
|
const { course_groups } = that.state
|
|
|
|
const { course_groups } = that.state
|
|
|
|
const columns = [{
|
|
|
|
const columns = [{
|
|
|
|
title: '',
|
|
|
|
title: '',
|
|
|
@ -55,7 +57,8 @@ function buildColumns(that) {
|
|
|
|
title: '角色',
|
|
|
|
title: '角色',
|
|
|
|
dataIndex: 'role',
|
|
|
|
dataIndex: 'role',
|
|
|
|
key: 'role',
|
|
|
|
key: 'role',
|
|
|
|
}, {
|
|
|
|
}]
|
|
|
|
|
|
|
|
that.course_groups && that.course_groups.length && columns.push({
|
|
|
|
title: <Tooltip title="仅能批阅指定分班的作品">管理权限</Tooltip>,
|
|
|
|
title: <Tooltip title="仅能批阅指定分班的作品">管理权限</Tooltip>,
|
|
|
|
width: 230,
|
|
|
|
width: 230,
|
|
|
|
key: 'course_groups',
|
|
|
|
key: 'course_groups',
|
|
|
@ -70,7 +73,7 @@ function buildColumns(that) {
|
|
|
|
const noGroups = (!course_groups || course_groups.length == 0);
|
|
|
|
const noGroups = (!course_groups || course_groups.length == 0);
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<ConditionToolTip title={`暂未有分班信息,不能操作`} condition={noGroups}>
|
|
|
|
<ConditionToolTip title={`暂未有分班信息,不能操作`} condition={noGroups}>
|
|
|
|
<span className="drop_down" style={{color: '#29BD8B'}}>
|
|
|
|
<span className="drop_down" style={{color: '#29BD8B', display: 'inline-block'}}>
|
|
|
|
{ arg_course_groups.length == 0 ? '不限' : arg_course_groups.map(item => item.name).join(', ') }
|
|
|
|
{ arg_course_groups.length == 0 ? '不限' : arg_course_groups.map(item => item.name).join(', ') }
|
|
|
|
{ isAdmin &&
|
|
|
|
{ isAdmin &&
|
|
|
|
<React.Fragment>
|
|
|
|
<React.Fragment>
|
|
|
@ -83,7 +86,7 @@ function buildColumns(that) {
|
|
|
|
</p>):
|
|
|
|
</p>):
|
|
|
|
''
|
|
|
|
''
|
|
|
|
}
|
|
|
|
}
|
|
|
|
<Checkbox.Group onChange={(checkedValues) => that.joinCourseGroup(checkedValues, item)}
|
|
|
|
<Checkbox.Group onChange={(checkedValues) => that.joinCourseGroup(checkedValues, item, index)}
|
|
|
|
value={arg_course_groups.map(item => item.id)}
|
|
|
|
value={arg_course_groups.map(item => item.id)}
|
|
|
|
disabled={!isAdminOrCreator}
|
|
|
|
disabled={!isAdminOrCreator}
|
|
|
|
>
|
|
|
|
>
|
|
|
@ -108,7 +111,7 @@ function buildColumns(that) {
|
|
|
|
</ConditionToolTip>)
|
|
|
|
</ConditionToolTip>)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
,
|
|
|
|
,
|
|
|
|
}];
|
|
|
|
});
|
|
|
|
if (that.hasGraduationModule()) {
|
|
|
|
if (that.hasGraduationModule()) {
|
|
|
|
columns.push({
|
|
|
|
columns.push({
|
|
|
|
title: '答辩组',
|
|
|
|
title: '答辩组',
|
|
|
@ -121,7 +124,7 @@ function buildColumns(that) {
|
|
|
|
),
|
|
|
|
),
|
|
|
|
})
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (isAdminOrCreator) {
|
|
|
|
if (isAdminOrTeacher) {
|
|
|
|
columns.push({
|
|
|
|
columns.push({
|
|
|
|
title: '操作',
|
|
|
|
title: '操作',
|
|
|
|
key: 'action',
|
|
|
|
key: 'action',
|
|
|
@ -136,11 +139,12 @@ function buildColumns(that) {
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<span>
|
|
|
|
<span>
|
|
|
|
<WordsBtn onClick={() => that.onDelete(record)} style={'grey'}>删除</WordsBtn>
|
|
|
|
{record.role != ROLE_ADMIN && <WordsBtn onClick={() => that.onDelete(record)} style={'grey'}>删除</WordsBtn>}
|
|
|
|
<Divider type="vertical" />
|
|
|
|
{(record.role == ROLE_TEACHER || record.role == ROLE_TEACHER_ASSISTANT || isAdminOrCreator) && record.role != ROLE_ADMIN
|
|
|
|
|
|
|
|
&& <Divider type="vertical" />}
|
|
|
|
{ record.role == ROLE_TEACHER ? <a style={{color: '#4CACFF'}} onClick={() => that.changeToAssistant(record)}>变更为助教</a> : '' }
|
|
|
|
{ record.role == ROLE_TEACHER ? <a style={{color: '#4CACFF'}} onClick={() => that.changeToAssistant(record)}>变更为助教</a> : '' }
|
|
|
|
{ record.role == ROLE_TEACHER_ASSISTANT ? <a style={{color: '#4CACFF'}} onClick={() => that.changeToTeacher(record)}>变更为教师</a> : '' }
|
|
|
|
{ record.role == ROLE_TEACHER_ASSISTANT ? <a style={{color: '#4CACFF'}} onClick={() => that.changeToTeacher(record)}>变更为教师</a> : '' }
|
|
|
|
{ record.role == ROLE_ADMIN ? <a style={{color: '#4CACFF'}} onClick={() => that.showChangeAdminModal(record)}>更换管理员</a> : '' }
|
|
|
|
{ record.role == ROLE_ADMIN && isAdminOrCreator ? <a style={{color: '#4CACFF', marginLeft: '44px'}} onClick={() => that.showChangeAdminModal(record)}>更换管理员</a> : '' }
|
|
|
|
|
|
|
|
|
|
|
|
</span> )
|
|
|
|
</span> )
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -237,8 +241,13 @@ class studentsList extends Component{
|
|
|
|
})
|
|
|
|
})
|
|
|
|
.then((response) => {
|
|
|
|
.then((response) => {
|
|
|
|
if (response.data.course_groups && response.data.course_groups.length) {
|
|
|
|
if (response.data.course_groups && response.data.course_groups.length) {
|
|
|
|
|
|
|
|
let course_groups_map = {}
|
|
|
|
|
|
|
|
response.data.course_groups.forEach(item => {
|
|
|
|
|
|
|
|
course_groups_map[item.id] = item.name
|
|
|
|
|
|
|
|
})
|
|
|
|
this.setState({
|
|
|
|
this.setState({
|
|
|
|
course_groups: response.data.course_groups,
|
|
|
|
course_groups: response.data.course_groups,
|
|
|
|
|
|
|
|
course_groups_map
|
|
|
|
})
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -247,7 +256,7 @@ class studentsList extends Component{
|
|
|
|
console.log(error);
|
|
|
|
console.log(error);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
joinCourseGroup = (ids, item) => {
|
|
|
|
joinCourseGroup = (ids, item, index) => {
|
|
|
|
console.log('join ', ids, item)
|
|
|
|
console.log('join ', ids, item)
|
|
|
|
|
|
|
|
|
|
|
|
const courseId = this.props.match.params.coursesId
|
|
|
|
const courseId = this.props.match.params.coursesId
|
|
|
@ -262,7 +271,12 @@ class studentsList extends Component{
|
|
|
|
.then((response) => {
|
|
|
|
.then((response) => {
|
|
|
|
if (response.data.status == 0) {
|
|
|
|
if (response.data.status == 0) {
|
|
|
|
this.props.showNotification('修改成功')
|
|
|
|
this.props.showNotification('修改成功')
|
|
|
|
this.fetchAll()
|
|
|
|
const newArray = ids.map((item) => {return {id: item, name: this.state.course_groups_map[item]}});
|
|
|
|
|
|
|
|
this.setState(
|
|
|
|
|
|
|
|
(prevState) => ({
|
|
|
|
|
|
|
|
teachers : update(prevState.teachers, {[ this.state.page == 1 ? index - this.state.application_list.length : index]: { course_groups: {$set: newArray }}})
|
|
|
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
// this.fetchAll()
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
@ -560,7 +574,7 @@ class studentsList extends Component{
|
|
|
|
<ul className="drop_down_normal">
|
|
|
|
<ul className="drop_down_normal">
|
|
|
|
<li onClick={() => this.onSortTypeChange(ORDER_BY_NAME)} >姓名排序</li>
|
|
|
|
<li onClick={() => this.onSortTypeChange(ORDER_BY_NAME)} >姓名排序</li>
|
|
|
|
<li onClick={() => this.onSortTypeChange(ORDER_BY_DATE)} style={{width: '125px'}}>加入时间排序</li>
|
|
|
|
<li onClick={() => this.onSortTypeChange(ORDER_BY_DATE)} style={{width: '125px'}}>加入时间排序</li>
|
|
|
|
<li onClick={() => this.onSortTypeChange(ORDER_BY_GRADUATION_GROUP)} >答辩组排序</li>
|
|
|
|
{this.hasGraduationModule() && <li onClick={() => this.onSortTypeChange(ORDER_BY_GRADUATION_GROUP)} >答辩组排序</li>}
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
</div> }
|
|
|
|
</div> }
|
|
|
|