import React, {Component} from 'react'; import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom'; import axios from 'axios'; import moment from 'moment'; import {SnackbarHOC, WordsBtn} from 'educoder'; import {TPMIndexHOC} from '../tpm/TPMIndexHOC'; import competition from './comcss/competition.css'; import {Button, Pagination, message, Spin, Breadcrumb} from 'antd'; import Registrationitem from './Registrationitem'; import RegisNodata from './RegisNodata'; import CompetitionMaxImg from './CompetitionMaxImg'; import RegistrationSearch from './RegistrationSearch'; import RegisListview from './RegisListview'; import RegisListviewdata from './RegisListviewdata'; import PersonModal from './competmodal/PersonModal'; import MessagePersonModal from './competmodal/MessagePersonModal'; import PersonalModalteam from './competmodal/PersonalModalteam'; import PersonalCompetititem from './personal/PersonalCompetititem'; import ExittheteamModel from './competmodal/ExittheteamModel'; // 团队竞赛报名无报名 class Registration extends React.Component { /*** *"personal": false, // 是否为个人赛 *"enroll_ended": false, // 报名是否截止 *"enrolled: false, // 是否已经报名 *"teacher_staff": { // 为空表示不支持老师报名 *"member_staff": { // 为空表示不支持学生报名 * personal// 是否是个人赛 * **/ constructor(props) { super(props) this.state = { loadingstate: false, pages: 1, limit: 20, type: 7, tmodalsType: false, tmodalsTypes: false, Newtit: true, keyword: "", page: 1, per_page: 20, data: [], competition_teams: [], count: 0, GetenrollmentAPI: undefined, personal: false, enroll_ended: false, enrolled: false, teacher_staff: null, member_staff: null, messagePer: "提示", messagePerbool: false, intpermessages: "确认", messageexit: "提示", messageexitol: false, exitintpermessages: "是否确认退出战队?", itemid: undefined, itemiddata: [], pint: 0, competition_name: undefined, mutiple_limited: false, teamutiple_limited: false, members_count: 0, } } componentDidMount() { // console.log(this.props); // //////console.log("componentDidMount Registration"); // //// //////console.log("调用子组件 "); // //////console.log(this.props.isAdmin()); // //// //////console.log(this.props.isAdmin()) try { const {keyword, page, per_page} = this.state; this.Getdata(keyword, page, per_page, this.props.user.admin); this.GetenrollmentAPI(); } catch (e) { // const {keyword, page, per_page} = this.state; // this.Getdata(keyword, page, per_page, this.props.isAdmin()); // this.GetenrollmentAPI(); } } componentDidUpdate = (prevProps) => { if (prevProps.user != this.props.user) { // console.log("componentDidUpdate"); // console.log(this.props); ////console.log("Registration"); ////console.log("componentDidUpdate"); ////console.log(this.props.user.admin); const {keyword, page, per_page} = this.state; this.Getdata(keyword, page, per_page, this.props.user.admin); this.GetenrollmentAPI(); } } //获取报名配置API GetenrollmentAPI = () => { // console.log("调用了GetenrollmentAPI"); const url = `/competitions/${this.props.match.params.identifier}/competition_staff.json`; axios.get((url)).then((result) => { if (result) { if (result.data) { //// //////console.log("获取报名配置API"); //// //////console.log(result); this.setState({ GetenrollmentAPI: result.data, personal: result.data.personal, enroll_ended: result.data.enroll_ended, enrolled: result.data.enrolled, teacher_staff: result.data.teacher_staff === undefined || result.data.teacher_staff === null ? null : result.data.teacher_staff, member_staff: result.data.member_staff === undefined || result.data.member_staff === null ? null : result.data.member_staff, }) try { if (result.data.member_staff) { this.setState({ mutiple_limited: result.data.member_staff.mutiple_limited, }) } } catch (e) { } try { if (result.data.teacher_staff) { this.setState({ teamutiple_limited: result.data.teacher_staff.mutiple_limited }) } } catch (e) { } if (result.data.personal === true) { if (result.data.enroll_ended === true) { this.setState({ pint: 0 }) } else if (result.data.enrolled === true) { this.setState({ pint: 2 }) } else if (result.data.enrolled === false) { this.setState({ pint: 1 }) } } } } }).catch((error) => { console.log("GetenrollmentAPI"); console.log(error); }) } Getdata = (keyword, page, per_page, admin) => { //搜索关键字 keyword //页数 page //分页 per_page const datas = { keyword: keyword, page: page, per_page: per_page, }; let url = `/competitions/${this.props.match.params.identifier}/competition_teams.json`; axios.get((url), {params: datas}).then((result) => { if (result) { if (result.data) { //// //////console.log(result);\ if (result.data.personal === false) { //不是个人赛 if (result.data.my_teams.length === 0) { // 没有创建数据的 if (admin === true) { //管理员 this.setState({ type: 4, count: result.data.count, data: result.data.my_teams, competition_teams: result.data.competition_teams, personal: result.data.personal, competition_name: result.data.competition_name, members_count: result.data.members_count }) } else { //普通账号 this.setState({ type: 1, count: result.data.count, data: result.data.my_teams, competition_teams: result.data.competition_teams, personal: result.data.personal, competition_name: result.data.competition_name, members_count: result.data.members_count }) } } else { //有数据的 if (admin === true) { if (result.data.my_teams[0].manage_permission === true) { this.setState({ type: 5, data: result.data.my_teams, count: result.data.count, competition_teams: result.data.competition_teams, personal: result.data.personal, competition_name: result.data.competition_name, members_count: result.data.members_count }) } else { this.setState({ type: 4, data: result.data.my_teams, count: result.data.count, competition_teams: result.data.competition_teams, personal: result.data.personal, competition_name: result.data.competition_name, members_count: result.data.members_count }) } } else { if (result.data.my_teams[0].manage_permission === true) { //普通账号true 为创建了竞赛 this.setState({ type: 2, data: result.data.my_teams, count: result.data.count, personal: result.data.personal, competition_name: result.data.competition_name, members_count: result.data.members_count }) } else { //普通账号true 加入了竞赛 this.setState({ type: 3, data: result.data.my_teams, count: result.data.count, personal: result.data.personal, competition_name: result.data.competition_name, members_count: result.data.members_count }) } } } } else { this.setState({ type: 6, data: result.data.my_teams, count: result.data.count, competition_teams: result.data.competition_teams, personal: result.data.personal, competition_name: result.data.competition_name, members_count: result.data.members_count }) } } } this.setState({ loadingstate: false, }) }).catch((error) => { if (admin === true) { //管理员 this.setState({ type: 4, count: 0, competition_teams: [], data: [], loadingstate: false, }) } else { //普通账号 this.setState({ type: 1, count: 0, competition_teams: [], data: [], loadingstate: false, }) } }) } // Getdatatype5 = (keyword, page, per_page, admin) => { // //搜索关键字 keyword // //页数 page // //分页 per_page // const datas = { // keyword: keyword, // page: page, // per_page: per_page, // }; // let url = `/competitions/${this.props.match.params.identifier}/competition_teams.json`; // axios.get((url), {params: datas}).then((result) => { // this.setState({ // loadingstate: false, // }) // if (result) { // if (result.data) { // //// //////console.log(result); // if (result.data.personal === false) { // //不是个人赛 // ////console.log("Getdatatype5"); // ////console.log(result.data.my_teams.length); // if (result.data.my_teams.length === 0) { // // 没有创建数据的 // //管理员 // ////console.log("a"); // ////console.log(this.state.competition_teams); // ////console.log(result.data.competition_teams); // this.setState({ // type: 4, // count: result.data.count, // competition_teams: result.data.competition_teams, // data: result.data.my_teams, // personal: result.data.personal, // competition_name: result.data.competition_name, // members_count:result.data.members_count // // // }) // } else { // //有数据的 // ////console.log("b"); // // if (result.data.my_teams[0].manage_permission === true) { // this.setState({ // type: 5, // data: result.data.my_teams, // count: result.data.count, // competition_teams: result.data.competition_teams, // personal: result.data.personal, // competition_name: result.data.competition_name, // members_count:result.data.members_count // // // }) // } else { // ////console.log("c"); // // this.setState({ // type: 4, // data: result.data.my_teams, // count: result.data.count, // competition_teams: result.data.competition_teams, // personal: result.data.personal, // competition_name: result.data.competition_name, // members_count:result.data.members_count // // // }) // } // } // } else { // //团队赛 // //////console.log("d"); // // this.setState({ // type: 6, // data: result.data.my_teams, // count: result.data.count, // competition_teams: result.data.competition_teams, // personal: result.data.personal, // competition_name: result.data.competition_name, // members_count:result.data.members_count // // // }) // } // // } // } // // }).catch((error) => { // ////console.log("k"); // // ////console.log(error); // ////console.log("报错了"); // if (admin === true) { // //管理员 // this.setState({ // count: 0, // competition_teams: [], // data: [], // loadingstate: false, // }) // } else { // //普通账号 // this.setState({ // count: 0, // competition_teams: [], // data: [], // loadingstate: false, // }) // } // }) // } //团队竞赛翻页 paginationonChangestwo = (pageNumber) => { this.setState({ pages: pageNumber, loadingstate: true, }) const {keyword, per_page} = this.state; this.Getdata(keyword, pageNumber, per_page, this.props.user.admin); }; /** * 加入战队 * */ Jointheteam = () => { if (this.props.user.is_teacher === true) { try { if (this.props.teamutiple_limited === true) { if (this.state.enrolled === true) { //已经报名 this.setState({ messagePerbool: true, intpermessages: "你已经报名,不能重复报名" }) return; } } } catch (e) { } } else { try { if (this.props.mutiple_limited === true) { if (this.state.enrolled === true) { //已经报名 this.setState({ messagePerbool: true, intpermessages: "你已经报名,不能重复报名" }) return; } } } catch (e) { } } if (this.state.enroll_ended === true) { //报名截止 this.setState({ messagePerbool: true, intpermessages: "报名已截止,无需报名" }) return } if (this.props.user.is_teacher === true) { //老师 if (this.state.teacher_staff === null) { //禁止老师 this.setState({ messagePerbool: true, intpermessages: "已禁止老师报名" }) return; } this.setState({ tmodalsTypes: true }) } else { //学生 if (this.state.member_staff === null) { //禁止学生 this.setState({ messagePerbool: true, intpermessages: "已禁止学生报名" }) return; } this.setState({ tmodalsTypes: true }) } // this.setState({ // tmodalsTypes: true // }) } /** * 创建战队 **/ Createateam = () => { // if (this.props.user.is_teacher === true) { try { if (this.props.teamutiple_limited === true) { if (this.state.enrolled === true) { //已经报名 this.setState({ messagePerbool: true, intpermessages: "你已经报名,不能重复报名" }) return; } } } catch (e) { } } else { try { if (this.props.mutiple_limited === true) { if (this.state.enrolled === true) { //已经报名 this.setState({ messagePerbool: true, intpermessages: "你已经报名,不能重复报名" }) return; } } } catch (e) { } } if (this.state.enroll_ended === true) { //报名截止 this.setState({ messagePerbool: true, intpermessages: "报名已截止,无需报名" }) return } if (this.props.user.is_teacher === true) { //老师 if (this.state.teacher_staff === null) { //禁止老师 this.setState({ messagePerbool: true, intpermessages: "已禁止老师报名" }) return; } this.setState({ tmodalsType: true, Newtit: true, }) } else { //学生 if (this.state.member_staff === null) { //禁止学生 this.setState({ messagePerbool: true, intpermessages: "已禁止学生报名" }) return; } this.setState({ tmodalsType: true, Newtit: true, }) } } //编辑战队 Createateamedit = (data) => { this.setState({ tmodalsType: true, Newtit: false, itemiddata: data }) } Tmoconfirm = (bool) => { //boolfalse 取消 true 确认 this.setState({ tmodalsTypes: false }) if (bool) { //确认 this.Refreshteam(); } else { //取消 } } //创建战队确认 Tmoconfirm1 = (bool) => { //boolfalse 取消 true 确认 this.setState({ tmodalsType: false }) if (bool) { //确认 this.Refreshteam(); } else { //取消 } } //自定义弹框按钮 messagePerboolbuton = () => { this.setState({ messagePerbool: false }) } //显示退出战队弹框 Exittheteamshow = (itemid, bool) => { if (bool === true) { this.setState({ messageexitol: true, itemid: itemid, exitintpermessages: "是否确认删除战队", }) } else { this.setState({ messageexitol: true, itemid: itemid, exitintpermessages: "是否确认退出战队", }) } }; //刷新战队 Refreshteam = () => { const {keyword, page, per_page} = this.state; this.Getdata(keyword, page, per_page, this.props.user.admin); this.GetenrollmentAPI(); } //退出战队 Exittheteam = (bool) => { // //////console.log(this.state.itemid); if (bool) { this.setState({ messageexitol: true }) let url = `/competitions/${this.props.match.params.identifier}/competition_teams/${this.state.itemid}/leave.json`; axios.post(url).then((response) => { if (response) { if (response.data) { //////console.log("退出战队"); //////console.log(response); this.Refreshteam(); this.setState({ messageexitol: false }) } } }).catch((error) => { //////console.log(error) }); } else { this.setState({ messageexitol: false }) } } //搜索战队 RegistrationSearchvalue = (value) => { ////console.log("RegistrationSearchvalue"); ////console.log(this.props.user.admin); this.setState({ pages: 1, limit: 20, }) this.Getdata(value, 1, 20, this.props.user.admin); } //个人竞赛 // /competitions/:identifier/competition_teams.json Personalregistration = () => { let {teacher_staff, member_staff, data, enroll_ended, enrolled} = this.state; if (enroll_ended === true) { //已截止 this.props.showNotification(`报名已截止`); return; } if (enrolled === true) { this.props.showNotification(`你已经报名,不能重复报名!`); return; } const url = `/competitions/${this.props.match.params.identifier}/competition_teams.json`; axios.post(url).then((response) => { if (response) { if (response.data) { this.props.showNotification(`报名成功,预祝您夺得桂冠!`); this.Refreshteam(); } } }).catch((error) => { }); } render() { const {page, pages, limit, type, tmodalsType, tmodalsTypes, data, count, competition_teams, Newtit, itemiddata, messagePerbool, messageexitol, GetenrollmentAPI, loadingstate, pint, competition_name, mutiple_limited, teamutiple_limited, members_count} = this.state; return (
参赛总人数:{members_count}人