diff --git a/public/react/config/webpack.config.dev.js b/public/react/config/webpack.config.dev.js index dfd54f38b..ceddbd81b 100644 --- a/public/react/config/webpack.config.dev.js +++ b/public/react/config/webpack.config.dev.js @@ -114,21 +114,21 @@ module.exports = { // First, run the linter. // It's important to do this before Babel processes the JS. // 上线然后要注释回来 - { - test: /\.(js|jsx|mjs)$/, - enforce: 'pre', - use: [ - { - options: { - formatter: eslintFormatter, - eslintPath: require.resolve('eslint'), - - }, - loader: require.resolve('eslint-loader'), - }, - ], - include: paths.appSrc, - }, + // { + // test: /\.(js|jsx|mjs)$/, + // enforce: 'pre', + // use: [ + // { + // options: { + // formatter: eslintFormatter, + // eslintPath: require.resolve('eslint'), + // + // }, + // loader: require.resolve('eslint-loader'), + // }, + // ], + // include: paths.appSrc, + // }, { // "oneOf" will traverse all following loaders until one will // match the requirements. When no loader matches it will fall diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTasksnew.js b/public/react/src/modules/courses/graduation/tasks/GraduationTasksnew.js index d1a5ae1d7..ae7d0aad8 100644 --- a/public/react/src/modules/courses/graduation/tasks/GraduationTasksnew.js +++ b/public/react/src/modules/courses/graduation/tasks/GraduationTasksnew.js @@ -278,20 +278,20 @@ class GraduationTasksnew extends Component { {/*内容*/} diff --git a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js index fe53c347c..3410b1fa5 100644 --- a/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js +++ b/public/react/src/modules/courses/graduation/tasks/GraduationTaskssettinglist.js @@ -101,7 +101,7 @@ class GraduationTaskssettinglist extends Component{ grouping: result.data.have_grouping === true ? worklists[i].grouping_name : null, submitstate: worklists[i].status === 0 ? "未提交" : worklists[i].status === 1 ? "按时提交" : worklists[i].status === 2 ? "延时提交" : "", turnovertime:worklists[i].update_time, - associationitems:result.data.have_grouping==false?"": {name:worklists[i].project_info === undefined ?"--": worklists[i].project_info.name,id:worklists[i].project_info.id}, + associationitems:result.data.have_grouping==false?"": {name:worklists[i].project_info === undefined ?"--": worklists[i].project_info.name,id:worklists[i].project_info===undefined?"":worklists[i].project_info.id}, teacherrating: worklists[i].teacher_comment_score, crossrating: {cross_comment_score:worklists[i].cross_comment_score,cross_comment_num:worklists[i].cross_comment_num}, finalscore: {work_score:worklists[i].final_score.work_score === null ? "--" : worklists[i].final_score.work_score, @@ -754,6 +754,7 @@ class GraduationTaskssettinglist extends Component{ }, { title: '操作', key: 'operation', + width:'100px', dataIndex: 'operation', className:'edu-txt-center', render: operation => ( diff --git a/public/react/src/modules/courses/graduation/tasks/index.js b/public/react/src/modules/courses/graduation/tasks/index.js index 10d71afe4..ae7494d9a 100644 --- a/public/react/src/modules/courses/graduation/tasks/index.js +++ b/public/react/src/modules/courses/graduation/tasks/index.js @@ -209,12 +209,14 @@ class GraduationTasks extends Component{ if (response.data.status == 0) { // {"status":1,"message":"删除成功"} this.fetchAll(search,page,order) + this.props.showNotification(response.data.message); + this.cancelmodel() this.setState({ - Modalstype:true, + Modalstype:false, Modalstopval:response.data.message, ModalsBottomval:"", ModalSave:this.cancelmodel, - Loadtype:true, + Loadtype:false, checkBoxValues:[], checkAllValue:false }) diff --git a/public/react/src/modules/tpm/TPMBanner.js b/public/react/src/modules/tpm/TPMBanner.js index 64c2b39dd..0def84c98 100644 --- a/public/react/src/modules/tpm/TPMBanner.js +++ b/public/react/src/modules/tpm/TPMBanner.js @@ -731,7 +731,7 @@ class TPMBanner extends Component { {/*>{shixunsDetails.task_operation===undefined?"":shixunsDetails.task_operation[0]}:""*/} {/*}*/} - {shixunsDetails.shixun_status === 0 && this.props.identity < 4 ? + {shixunsDetails.shixun_status === 0 && this.props.identity < 5 ? 申请发布 : "" } @@ -796,7 +796,7 @@ class TPMBanner extends Component { - {shixunsDetails.shixun_status === 1 && this.props.identity < 4 ? + {shixunsDetails.shixun_status === 1 && this.props.identity < 5 ? 撤销发布 : "" } @@ -877,16 +877,16 @@ class TPMBanner extends Component {
- + {this.props.identity < 8? Fork - + :""} - @@ -1099,7 +1099,7 @@ export default class TPMsettings extends Component { :"" } { - this.props.identity < 4 && this.state.status==0? + this.props.identity < 5 && this.state.status==0? this.operateshixuns(1)}> 删除实训 @@ -1332,7 +1332,7 @@ export default class TPMsettings extends Component { { - this.props.identity<4||this.props.power==true? + this.props.identity<5||this.props.power==true? 使用自定义脚本 : "" } diff --git a/public/react/src/modules/tpm/component/TPMright.css b/public/react/src/modules/tpm/component/TPMright.css index 63f718f26..9f2622eda 100644 --- a/public/react/src/modules/tpm/component/TPMright.css +++ b/public/react/src/modules/tpm/component/TPMright.css @@ -44,7 +44,8 @@ position:relative; } .newedboxheight{ - max-height:181px; + max-height:204px; + overflow-y: auto; } .newminheight{ /*max-height: 670px;*/ diff --git a/public/react/src/modules/tpm/shixunchild/Challenges/Challenges.js b/public/react/src/modules/tpm/shixunchild/Challenges/Challenges.js index ecc94e905..a0f354e4a 100644 --- a/public/react/src/modules/tpm/shixunchild/Challenges/Challenges.js +++ b/public/react/src/modules/tpm/shixunchild/Challenges/Challenges.js @@ -239,7 +239,7 @@ class Challenges extends Component {

简介 - @@ -262,7 +262,7 @@ class Challenges extends Component {

全部任务 - {this.props.identity < 4 && ChallengesDataList&&ChallengesDataList.shixun_status=== 0 ? + {this.props.identity < 5 && ChallengesDataList&&ChallengesDataList.shixun_status=== 0 ? : "" } - {this.props.identity < 4 && ChallengesDataList&&ChallengesDataList.shixun_status=== 0 ? + {this.props.identity < 5 && ChallengesDataList&&ChallengesDataList.shixun_status=== 0 ? 第{key+1}关 - {this.props.identity<4? + {this.props.identity<5? item.st === 1 ? this.startshixunCombat(this.props.identity, item.challenge_id, "/editquestion")} className="font-16 color05101a">{item.name} @@ -359,7 +359,7 @@ class Challenges extends Component { {item.delete_url != undefined && this.delOperations(item.challenge_id)} - style={{ display:this.props.user.admin===true?"block":this.props.identity < 4 && ChallengesDataList.shixun_status === 0 ? "block" : 'none' }} + style={{ display:this.props.user.admin===true?"block":this.props.identity < 5 && ChallengesDataList.shixun_status === 0 ? "block" : 'none' }} className="fl ring-op-green mr25"> @@ -371,7 +371,7 @@ class Challenges extends Component { {item.up_url != undefined && this.operations(item.challenge_id, "up")} - style={{ display:this.props.user.admin===true?"block":this.props.identity < 4 && ChallengesDataList.shixun_status === 0 ? "block" : 'none' }} + style={{ display:this.props.user.admin===true?"block":this.props.identity < 5 && ChallengesDataList.shixun_status === 0 ? "block" : 'none' }} className="fl ring-op-green mr25"> @@ -381,7 +381,7 @@ class Challenges extends Component { {item.down_url != undefined && this.operations(item.challenge_id, "down")} - style={{ display: this.props.user.admin===true?"block":this.props.identity < 4 && ChallengesDataList.shixun_status=== 0 ? "block" : 'none' }} + style={{ display: this.props.user.admin===true?"block":this.props.identity < 5 && ChallengesDataList.shixun_status=== 0 ? "block" : 'none' }} className="fl ring-op-green mr25"> @@ -393,7 +393,7 @@ class Challenges extends Component { item.st === 1 ? : item.status === 1 && newstatus === 1 ? - - this.startshixunCombat(false,undefined, item.open_game):""} + + this.startshixunCombat(false,undefined, item.open_game):""} style={{marginTop: '-2px'}}>直接挑战 : "" : "" @@ -462,9 +462,9 @@ class Challenges extends Component { { item.status === 0 ? - - this.startshixunCombat(false,undefined, item.open_game):""} + + this.startshixunCombat(false,undefined, item.open_game):""} style={{marginTop: '-2px'}}>直接挑战 : "" } diff --git a/public/react/src/modules/tpm/shixunchild/Collaborators/Collaborators.js b/public/react/src/modules/tpm/shixunchild/Collaborators/Collaborators.js index d4c8db05b..94036f5c0 100644 --- a/public/react/src/modules/tpm/shixunchild/Collaborators/Collaborators.js +++ b/public/react/src/modules/tpm/shixunchild/Collaborators/Collaborators.js @@ -1,546 +1,546 @@ -import React, { Component } from 'react'; - -import { Redirect } from 'react-router'; - -import {Modal, Button, Radio, Input, Checkbox,message} from 'antd'; - -import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; - -import PropTypes from 'prop-types'; - -import classNames from 'classnames'; - -import { CircularProgress } from 'material-ui/Progress'; - -import { getImageUrl, toPath } from 'educoder' - -import axios from 'axios'; - -import './Collaborators.css'; - -const $ = window.$; - -const RadioGroup = Radio.Group; - -const Search = Input.Search; - -class Collaborators extends Component { - constructor(props) { - super(props) - this.state = { - collaboratorList: [], - Collaboratorsvisible: false, - Collaboratorsvisibleadmin: false, - value: 1, - Searchadmin: [], - allChangechecked: false, - Collaboratorslist: [], - Collaboratorslisttype: false, - collaborators_deletetype: false, - collaborators_deletevalue: null, - onSearchcalue:"", - collaboratorListsum:10, - collaboratorListsumtype:true - } - } - componentDidMount() { - let id=this.props.match.params.shixunId; - - let collaborators=`/shixuns/`+id+`/collaborators.json`; - axios.get(collaborators).then((response)=> { - if(response.status===200){ - if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { - - }else{ - this.setState({ - collaboratorList: response.data - }); - } - - } - }).catch((error)=>{ - console.log(error) - }); - } - - updatacomponentDiddata = () => { - let id = this.props.match.params.shixunId; - - let collaborators = `/shixuns/` + id + `/collaborators.json`; - axios.get(collaborators).then((response) => { - if (response.status === 200) { - if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { - - }else{ - this.setState({ - collaboratorList: response.data - }); - } - } - }).catch((error) => { - console.log(error) - }); - } - CollaboratorsshowModal = (type) => { - if (type === "cooperation") { - this.setState({ - Collaboratorsvisibleadmin: false, - Collaboratorslist:[], - Searchadmin:[] - }); - } else if (type === "admin") { - this.setState({ - Collaboratorsvisible: false, - Collaboratorslist:[], - Searchadmin:[] - }); - } else if (type === "collaborators_deletetype") { - this.setState({ - collaborators_deletetype: false, - }); - } - } - - showCollaboratorsvisible = (type) => { - this.setState({ - Collaboratorslist: [], - Searchadmin:[], - onSearchcalue:"" - }) - let admintype = this.props.identity; - if (admintype>3) { - this.props.showSnackbar("您没有权限"); - return - } - if (type === "cooperation") { - this.setState({ - Collaboratorsvisibleadmin: true, - }); - } else if ("admin") { - let id = this.props.match.params.shixunId; - let url = "/shixuns/" + id + "/change_manager.json"; - axios.get(url).then((response) => { - if (response.status === 200) { - // this.setState({ - // Collaboratorsvisible: true - // }) - if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { - - }else{ - this.setState({ - Collaboratorsvisible: true, - Collaboratorslist: response.data - }) - } - } - }).catch((error) => { - console.log(error) - }); - - } - } - - onChange = (e) => { - this.setState({ - value: e.target.value, - }); - } - onSearchadmins=(e)=>{ - this.setState({ - onSearchcalue:e.target.value - }) - } - onSearchadmin = (value) => { - let {collaboratorList} = this.state; - if (value === "") { - this.setState({ - Searchadmin: [], - collaboratorList: collaboratorList - }) - } else { - let id = this.props.match.params.shixunId; - let url = "/shixuns/" + id + "/add_collaborators.json?search=" + value; - axios.get(url).then((response) => { - if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { - - }else{ - let newlist = response.data; - for (var i = 0; i < newlist.length; i++) { - newlist[i].checked = false - } - this.setState({ - Searchadmin: newlist, - collaboratorList: collaboratorList - }) - } - - }).catch((error) => { - console.log(error) - }); - } - - } - - selectChangenickname = (e, key) => { - let {Searchadmin} = this.state; - let newlist = Searchadmin; - for (var i = 0; i < newlist.length; i++) { - newlist[key].checked = e.target.checked - } - - let arrlist = []; - let alltype = false; - for (var z = 0; z < newlist.length; z++) { - if (newlist[z].checked === true) { - arrlist.push(newlist[z]) - } - } - - if (Searchadmin.length === arrlist.length) { - alltype = true - } else { - alltype = false - } - this.setState({ - Searchadmin: newlist, - allChangechecked: alltype - }) - - } - allChange = (e) => { - let {Searchadmin} = this.state; - let newlist = Searchadmin; - for (var i = 0; i < newlist.length; i++) { - newlist[i].checked = e.target.checked - } - this.setState({ - Searchadmin: newlist, - allChangechecked: e.target.checked - }) - } - submit_add_collaborators_form = () => { - let id = this.props.match.params.shixunId; - let {Searchadmin,collaboratorList} = this.state; - let newlist = Searchadmin; - let user_ids = [] - if (newlist.length === 0) { - this.setState({ - Collaboratorslisttype: true - }) - return - } - for (var i = 0; i < newlist.length; i++) { - if (newlist[i].checked === true) { - user_ids.push(newlist[i].user_id) - } - } - - for(var i=0; i { - this.updatacomponentDiddata(); - this.props.showSnackbar(response.data.message); - this.setState({ - Collaboratorsvisibleadmin: false, - Collaboratorslist:[], - Searchadmin:[] - }) - }).catch((error) => { - console.log(error) - }); - } - addadminredio = (e) => { - this.setState({ - addadminrediovalue: e - }) - - } - submit_addadminredio = () => { - let {addadminrediovalue} = this.state; - - let id = this.props.match.params.shixunId; - - let url = "/shixuns/" + id + "/change_manager.json"; - if(addadminrediovalue===undefined){ - this.setState({ - Collaboratorsvisible: false, - Collaboratorslist:[], - Searchadmin:[] - }); - this.props.showSnackbar("所选人员为空,没有更换成功"); - this.CollaboratorsshowModal("admin") - return - } - - - axios.post(url, { - user_id: addadminrediovalue - }).then((response) => { - this.setState({ - Collaboratorsvisible: false, - Collaboratorslist:[], - Searchadmin:[] - }); - this.updatacomponentDiddata(); - this.props.showSnackbar(response.data.message); - }).catch((error) => { - console.log(error) - }); - } - - collaborators_delete = (value) => { - this.setState({ - collaborators_deletetype: true, - collaborators_deletevalue: value - }) - - } - collaborators_deletes = () => { - let {collaborators_deletevalue} = this.state; - if (collaborators_deletevalue === null) { - return - } - let id = this.props.match.params.shixunId; - let url = "/shixuns/" + id + "/collaborators_delete.json?user_id=" + collaborators_deletevalue; - axios.delete(url).then((response) => { - this.props.showSnackbar(response.data.message); - this.updatacomponentDiddata(); - this.setState({ - collaborators_deletetype: false - }) - }).catch((error) => { - console.log(error) - }); - } - - loadMore=()=>{ - let {collaboratorList}=this.state; - this.setState({ - collaboratorListsum:collaboratorList.length, - collaboratorListsumtype:false - }) - } - render() { - let { - collaboratorList, - Collaboratorsvisible, - Collaboratorsvisibleadmin, - Searchadmin, - allChangechecked, - Collaboratorslist, - Collaboratorslisttype, - collaborators_deletetype, - onSearchcalue, - collaboratorListsum, - collaboratorListsumtype - } = this.state; - let {loadingContent} = this.props; - const radioStyle = { - display: 'block', - height: '30px', - lineHeight: '30px', - }; - // console.log(collaboratorList) - return ( - -

- this.showCollaboratorsvisible("cooperation")} - className="edu-default-btn edu-greenback-btn fr mr20 height40" - data-remote="true"> - + 添加合作者 - - this.showCollaboratorsvisible("admin")} - style={{display:this.props.identity===1?"block":"none"}} - data-remote="true" - className="edu-default-btn edu-greenback-btn fr mr20 height40">更换管理员 -

- - - -
- 选择的成员将会成为新的管理员
您将不再拥有管理员的权限,但您仍是合作团队的一员 -
- - -
-
    -
  • - - - { - Collaboratorslist.length === 0 ? "" : Collaboratorslist.map((item, key) => { - return ( - this.addadminredio(item.user_id)}>{item.name} - ) - }) - } - - -
  • -
-
- -
- this.CollaboratorsshowModal("admin")}>取消 - 确定 -
- -
- - - this.onSearchadmin(value)} - onInput={this.onSearchadmins} - style={{width: '100%'}} - /> - -
-

- 姓名 - 职位 - 单位 -

-
-
    - {Searchadmin.length === 0 ?
  • - 请试试搜索一下 -
  • : Searchadmin.map((item, key) => { - return ( -
  • - this.selectChangenickname(e, key)} - id={item.user_id}> - {item.nickname} - {item.identify} - {item.school_name} -
  • - ) - }) - - } -
-
-
- -
- - - 全选 -
- 请至少选择一个用户 -
-
- - -
- -
- this.CollaboratorsshowModal("cooperation")}>取消 - this.submit_add_collaborators_form()}>确定 -
-
- -
- { - collaboratorList===undefined?"":collaboratorList.map((item,key)=>{ - if(key - - 用户头像 -
-

- {item.user.name} - - {item.user.shixun_manager === true ? "(管理员)" : ""} -

- -

{item.user.identity}{item.user.school_name}

- -

- 发布  {item.user.user_shixuns_count} - {/*粉丝  */} - {/*{item.user.fans_count}*/} - {/**/} -

- -

{item.user.brief_introduction}

- - -
- - {item.user.shixun_manager === true ? "" : this.collaborators_delete(item.user.user_id)}>删除} - {/*取消关注*/} -
- - ) - } - }) - } - -
-
确定要删除吗?
-
-
- this.CollaboratorsshowModal("collaborators_deletetype")}>取消 - 确定 -
- -
-
- -
10&&collaboratorListsumtype===true?"":"none"} - style={{textAlign:'center',borderTop:'1px solid #eee'}}> - 加载更多 -
- - - - ); - } -} - -export default Collaborators; +import React, { Component } from 'react'; + +import { Redirect } from 'react-router'; + +import {Modal, Button, Radio, Input, Checkbox,message} from 'antd'; + +import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; + +import PropTypes from 'prop-types'; + +import classNames from 'classnames'; + +import { CircularProgress } from 'material-ui/Progress'; + +import { getImageUrl, toPath } from 'educoder' + +import axios from 'axios'; + +import './Collaborators.css'; + +const $ = window.$; + +const RadioGroup = Radio.Group; + +const Search = Input.Search; + +class Collaborators extends Component { + constructor(props) { + super(props) + this.state = { + collaboratorList: [], + Collaboratorsvisible: false, + Collaboratorsvisibleadmin: false, + value: 1, + Searchadmin: [], + allChangechecked: false, + Collaboratorslist: [], + Collaboratorslisttype: false, + collaborators_deletetype: false, + collaborators_deletevalue: null, + onSearchcalue:"", + collaboratorListsum:10, + collaboratorListsumtype:true + } + } + componentDidMount() { + let id=this.props.match.params.shixunId; + + let collaborators=`/shixuns/`+id+`/collaborators.json`; + axios.get(collaborators).then((response)=> { + if(response.status===200){ + if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { + + }else{ + this.setState({ + collaboratorList: response.data + }); + } + + } + }).catch((error)=>{ + console.log(error) + }); + } + + updatacomponentDiddata = () => { + let id = this.props.match.params.shixunId; + + let collaborators = `/shixuns/` + id + `/collaborators.json`; + axios.get(collaborators).then((response) => { + if (response.status === 200) { + if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { + + }else{ + this.setState({ + collaboratorList: response.data + }); + } + } + }).catch((error) => { + console.log(error) + }); + } + CollaboratorsshowModal = (type) => { + if (type === "cooperation") { + this.setState({ + Collaboratorsvisibleadmin: false, + Collaboratorslist:[], + Searchadmin:[] + }); + } else if (type === "admin") { + this.setState({ + Collaboratorsvisible: false, + Collaboratorslist:[], + Searchadmin:[] + }); + } else if (type === "collaborators_deletetype") { + this.setState({ + collaborators_deletetype: false, + }); + } + } + + showCollaboratorsvisible = (type) => { + this.setState({ + Collaboratorslist: [], + Searchadmin:[], + onSearchcalue:"" + }) + let admintype = this.props.identity; + if (admintype>3) { + this.props.showSnackbar("您没有权限"); + return + } + if (type === "cooperation") { + this.setState({ + Collaboratorsvisibleadmin: true, + }); + } else if ("admin") { + let id = this.props.match.params.shixunId; + let url = "/shixuns/" + id + "/change_manager.json"; + axios.get(url).then((response) => { + if (response.status === 200) { + // this.setState({ + // Collaboratorsvisible: true + // }) + if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { + + }else{ + this.setState({ + Collaboratorsvisible: true, + Collaboratorslist: response.data + }) + } + } + }).catch((error) => { + console.log(error) + }); + + } + } + + onChange = (e) => { + this.setState({ + value: e.target.value, + }); + } + onSearchadmins=(e)=>{ + this.setState({ + onSearchcalue:e.target.value + }) + } + onSearchadmin = (value) => { + let {collaboratorList} = this.state; + if (value === "") { + this.setState({ + Searchadmin: [], + collaboratorList: collaboratorList + }) + } else { + let id = this.props.match.params.shixunId; + let url = "/shixuns/" + id + "/add_collaborators.json?search=" + value; + axios.get(url).then((response) => { + if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { + + }else{ + let newlist = response.data; + for (var i = 0; i < newlist.length; i++) { + newlist[i].checked = false + } + this.setState({ + Searchadmin: newlist, + collaboratorList: collaboratorList + }) + } + + }).catch((error) => { + console.log(error) + }); + } + + } + + selectChangenickname = (e, key) => { + let {Searchadmin} = this.state; + let newlist = Searchadmin; + for (var i = 0; i < newlist.length; i++) { + newlist[key].checked = e.target.checked + } + + let arrlist = []; + let alltype = false; + for (var z = 0; z < newlist.length; z++) { + if (newlist[z].checked === true) { + arrlist.push(newlist[z]) + } + } + + if (Searchadmin.length === arrlist.length) { + alltype = true + } else { + alltype = false + } + this.setState({ + Searchadmin: newlist, + allChangechecked: alltype + }) + + } + allChange = (e) => { + let {Searchadmin} = this.state; + let newlist = Searchadmin; + for (var i = 0; i < newlist.length; i++) { + newlist[i].checked = e.target.checked + } + this.setState({ + Searchadmin: newlist, + allChangechecked: e.target.checked + }) + } + submit_add_collaborators_form = () => { + let id = this.props.match.params.shixunId; + let {Searchadmin,collaboratorList} = this.state; + let newlist = Searchadmin; + let user_ids = [] + if (newlist.length === 0) { + this.setState({ + Collaboratorslisttype: true + }) + return + } + for (var i = 0; i < newlist.length; i++) { + if (newlist[i].checked === true) { + user_ids.push(newlist[i].user_id) + } + } + + for(var i=0; i { + this.updatacomponentDiddata(); + this.props.showSnackbar(response.data.message); + this.setState({ + Collaboratorsvisibleadmin: false, + Collaboratorslist:[], + Searchadmin:[] + }) + }).catch((error) => { + console.log(error) + }); + } + addadminredio = (e) => { + this.setState({ + addadminrediovalue: e + }) + + } + submit_addadminredio = () => { + let {addadminrediovalue} = this.state; + + let id = this.props.match.params.shixunId; + + let url = "/shixuns/" + id + "/change_manager.json"; + if(addadminrediovalue===undefined){ + this.setState({ + Collaboratorsvisible: false, + Collaboratorslist:[], + Searchadmin:[] + }); + this.props.showSnackbar("所选人员为空,没有更换成功"); + this.CollaboratorsshowModal("admin") + return + } + + + axios.post(url, { + user_id: addadminrediovalue + }).then((response) => { + this.setState({ + Collaboratorsvisible: false, + Collaboratorslist:[], + Searchadmin:[] + }); + this.updatacomponentDiddata(); + this.props.showSnackbar(response.data.message); + }).catch((error) => { + console.log(error) + }); + } + + collaborators_delete = (value) => { + this.setState({ + collaborators_deletetype: true, + collaborators_deletevalue: value + }) + + } + collaborators_deletes = () => { + let {collaborators_deletevalue} = this.state; + if (collaborators_deletevalue === null) { + return + } + let id = this.props.match.params.shixunId; + let url = "/shixuns/" + id + "/collaborators_delete.json?user_id=" + collaborators_deletevalue; + axios.delete(url).then((response) => { + this.props.showSnackbar(response.data.message); + this.updatacomponentDiddata(); + this.setState({ + collaborators_deletetype: false + }) + }).catch((error) => { + console.log(error) + }); + } + + loadMore=()=>{ + let {collaboratorList}=this.state; + this.setState({ + collaboratorListsum:collaboratorList.length, + collaboratorListsumtype:false + }) + } + render() { + let { + collaboratorList, + Collaboratorsvisible, + Collaboratorsvisibleadmin, + Searchadmin, + allChangechecked, + Collaboratorslist, + Collaboratorslisttype, + collaborators_deletetype, + onSearchcalue, + collaboratorListsum, + collaboratorListsumtype + } = this.state; + let {loadingContent} = this.props; + const radioStyle = { + display: 'block', + height: '30px', + lineHeight: '30px', + }; + // console.log(collaboratorList) + return ( + +

+ this.showCollaboratorsvisible("cooperation")} + className="edu-default-btn edu-greenback-btn fr mr20 height40" + data-remote="true"> + + 添加合作者 + + this.showCollaboratorsvisible("admin")} + style={{display:this.props.identity===1?"block":"none"}} + data-remote="true" + className="edu-default-btn edu-greenback-btn fr mr20 height40">更换管理员 +

+ + + +
+ 选择的成员将会成为新的管理员
您将不再拥有管理员的权限,但您仍是合作团队的一员 +
+ + +
+
    +
  • + + + { + Collaboratorslist.length === 0 ? "" : Collaboratorslist.map((item, key) => { + return ( + this.addadminredio(item.user_id)}>{item.name} + ) + }) + } + + +
  • +
+
+ +
+ this.CollaboratorsshowModal("admin")}>取消 + 确定 +
+ +
+ + + this.onSearchadmin(value)} + onInput={this.onSearchadmins} + style={{width: '100%'}} + /> + +
+

+ 姓名 + 职位 + 单位 +

+
+
    + {Searchadmin.length === 0 ?
  • + 请试试搜索一下 +
  • : Searchadmin.map((item, key) => { + return ( +
  • + this.selectChangenickname(e, key)} + id={item.user_id}> + {item.nickname} + {item.identify} + {item.school_name} +
  • + ) + }) + + } +
+
+
+ +
+ + + 全选 +
+ 请至少选择一个用户 +
+
+ + +
+ +
+ this.CollaboratorsshowModal("cooperation")}>取消 + this.submit_add_collaborators_form()}>确定 +
+
+ +
+ { + collaboratorList===undefined?"":collaboratorList.map((item,key)=>{ + if(key + + 用户头像 +
+

+ {item.user.name} + + {item.user.shixun_manager === true ? "(管理员)" : ""} +

+ +

{item.user.identity}{item.user.school_name}

+ +

+ 发布  {item.user.user_shixuns_count} + {/*粉丝  */} + {/*{item.user.fans_count}*/} + {/**/} +

+ +

{item.user.brief_introduction}

+ + +
+ + {item.user.shixun_manager === true ? "" : this.collaborators_delete(item.user.user_id)}>删除} + {/*取消关注*/} +
+ + ) + } + }) + } + +
+
确定要删除吗?
+
+
+ this.CollaboratorsshowModal("collaborators_deletetype")}>取消 + 确定 +
+ +
+ + +
10&&collaboratorListsumtype===true?"":"none"} + style={{textAlign:'center',borderTop:'1px solid #eee'}}> + 加载更多 +
+ +
+ + ); + } +} + +export default Collaborators; diff --git a/public/react/src/modules/tpm/shixunchild/Propaedeutics/Propaedeu_tics.js b/public/react/src/modules/tpm/shixunchild/Propaedeutics/Propaedeu_tics.js index dc4ef6fb2..c90f151c5 100644 --- a/public/react/src/modules/tpm/shixunchild/Propaedeutics/Propaedeu_tics.js +++ b/public/react/src/modules/tpm/shixunchild/Propaedeutics/Propaedeu_tics.js @@ -1,110 +1,110 @@ -import React, { Component } from 'react'; - -import { Redirect } from 'react-router'; - -import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; - -import PropTypes from 'prop-types'; - -import classNames from 'classnames'; - -import { getImageUrl, toPath } from 'educoder'; - -import axios from 'axios'; - -import { CircularProgress } from 'material-ui/Progress'; - -const $ = window.$; - -class Propaedeutics extends Component { - constructor(props) { - super(props) - this.state={ - PropaedeuticsListcontent:undefined, - shixunId:undefined - } - } - - componentDidMount() { - let id = this.props.match.params.shixunId; - this.setState({ - shixunId:id - }) - let url="/shixuns/"+id+"/propaedeutics.json"; - axios.get(url).then((response) => { - - if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { - - }else{ - if(response.data.content[0]!=null){ - this.setState({ - PropaedeuticsListcontent:response.data.content[0] - }) - }else{ - this.setState({ - PropaedeuticsListcontent:"" - }) - } - } - }).catch((error) => { - console.log(error) - }); - - } - - updatamakedown=(id)=>{ - setTimeout(()=>{ - var shixunDescr = window.editormd.markdownToHTML(id, { - htmlDecode: "style,script,iframe", - taskList: true, - tex: true, - flowChart: true, - sequenceDiagram: true - }); - $("#"+id+" p:first").addClass("ReactMarkdown"); - $('#collaborators_list_info').show() - }, 200) - } - render() { - let {loadingContent} = this.props; - let {PropaedeuticsListcontent,shixunId}=this.state - - if(PropaedeuticsListcontent!=undefined){ - this.updatamakedown("ReactMarkdown") - } - - return ( - -

- -

- { - loadingContent ? - : -
- {PropaedeuticsListcontent===undefined?"": -

- - {PropaedeuticsListcontent === undefined ||PropaedeuticsListcontent === ""? -

-
-
- -

暂无数据哦~

-
-
-
- :} - -

- } -
- } -
- ); - } -} - -export default Propaedeutics; +import React, { Component } from 'react'; + +import { Redirect } from 'react-router'; + +import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; + +import PropTypes from 'prop-types'; + +import classNames from 'classnames'; + +import { getImageUrl, toPath } from 'educoder'; + +import axios from 'axios'; + +import { CircularProgress } from 'material-ui/Progress'; + +const $ = window.$; + +class Propaedeutics extends Component { + constructor(props) { + super(props) + this.state={ + PropaedeuticsListcontent:undefined, + shixunId:undefined + } + } + + componentDidMount() { + let id = this.props.match.params.shixunId; + this.setState({ + shixunId:id + }) + let url="/shixuns/"+id+"/propaedeutics.json"; + axios.get(url).then((response) => { + + if (response.data.status === 403||response.data.status === 401||response.data.status === 500) { + + }else{ + if(response.data.content[0]!=null){ + this.setState({ + PropaedeuticsListcontent:response.data.content[0] + }) + }else{ + this.setState({ + PropaedeuticsListcontent:"" + }) + } + } + }).catch((error) => { + console.log(error) + }); + + } + + updatamakedown=(id)=>{ + setTimeout(()=>{ + var shixunDescr = window.editormd.markdownToHTML(id, { + htmlDecode: "style,script,iframe", + taskList: true, + tex: true, + flowChart: true, + sequenceDiagram: true + }); + $("#"+id+" p:first").addClass("ReactMarkdown"); + $('#collaborators_list_info').show() + }, 200) + } + render() { + let {loadingContent} = this.props; + let {PropaedeuticsListcontent,shixunId}=this.state + + if(PropaedeuticsListcontent!=undefined){ + this.updatamakedown("ReactMarkdown") + } + + return ( + +

+ +

+ { + loadingContent ? + : +
+ {PropaedeuticsListcontent===undefined?"": +

+ + {PropaedeuticsListcontent === undefined ||PropaedeuticsListcontent === ""? +

+
+
+ +

暂无数据哦~

+
+
+
+ :} + +

+ } +
+ } +
+ ); + } +} + +export default Propaedeutics; diff --git a/public/react/src/modules/tpm/shixunchild/Repository/Repository.js b/public/react/src/modules/tpm/shixunchild/Repository/Repository.js index 2e38e0143..617681d5f 100644 --- a/public/react/src/modules/tpm/shixunchild/Repository/Repository.js +++ b/public/react/src/modules/tpm/shixunchild/Repository/Repository.js @@ -1,247 +1,255 @@ -import React, { Component } from 'react'; - -import { Redirect } from 'react-router'; - -import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; - -import PropTypes from 'prop-types'; - -import classNames from 'classnames'; - -import axios from 'axios'; - -import { trace, trace_collapse ,getImageUrl, toPath} from "educoder"; - -import RepositoryDirectories from './RepositoryDirectories' -const $ = window.$; - -// 点击按钮复制功能 -function jsCopy(){ - var e = document.getElementById("copy_rep_content"); - e.select(); - document.execCommand("Copy"); -} -/** - 提交记录 - 使用指南 - */ -class Repository extends Component { - constructor(props) { - super(props); - - } - componentDidMount() { - } - onRepoFileClick = (item) => { - - this.props.fetchRepo(item) - - } - render() { - let { match, author, git_url, lastest_commit, trees, commits,repositoryLoading, pathArray } = this.props; - if (!author) { - author = {} - } - let userauthority=false; - if(this.props.author!=undefined){ - userauthority=this.props.author.login===""||this.props.author.user_id===""||this.props.author.login===null||this.props.author.user_id===null; - } - - // console.log(commits) - return ( - - {/* jfinalshop/WebRoot */} - {/*
- - - 分支 1 - - Git使用指南 -
*/} - - { repositoryLoading ?
: - -
-
-
-
-
- {/*
- -
- -
- - - -
*/} - - Git使用指南 - -
- - - { - jsCopy() - }} data-tip-down="点击复制版本库地址" - className="fl ml5"> - - - - - {/* Git使用指南 */} - - - { $('#repository_url_tip').css('display') === 'none' - ? $('#repository_url_tip').show() - : $('#repository_url_tip').hide() }} - className="fl ml6 mt1"> - - -
- -
-

请上传当前实训中各个关卡涉及的所有文件
- 包括任务文件、执行文件,以及其他的必须文件

- 提交代码的方法:
- 1、在电脑上安装Git tortoise客户端,
-      或者其它熟悉的Git客户端
- 2、在Git客户端上向左侧的地址提交代码

- 注意:
- 请在Git客户端要求填写时,按照如下说明填写:
- * 用户名:使用您在本平台绑定的邮箱
- * 口令:使用您在本平台的登录口令 -

-
-

{ $('#repository_url_tip').hide(); }}>知道了

-
-
-
- -
-
- - - {/* 用户、最近提交时间 */} - { - trees === undefined || trees === null ?
-
- -

暂无数据哦~

-
-
: -
-
- {author.name} - {commits[0].author.name} - 提交于 - - {commits===undefined?"":commits[0].time} - :{commits===undefined?"":commits[0].title} - - - - 提交记录 - -
- -
-
- {/* 当前目录位置 */} - - -
- {trees.map((item, index) => { - return ( -
  • - - - this.onRepoFileClick(item)}> -  {item.name} - - -
  • - ) - })} -
    -
    -
    -
    - } - - {/* 当前分支的文件 */} - -
    -
    - } -
    - - ); - } -} -/* - 提交记录 -
    - { RepositoryList===undefined?"":RepositoryList.commits.map((item,key)=>{ - // {"email":"李暾","title":"2\n","id":"80cb6fc55a14bdd64a9c99913f416966238ed3de","time":"49年前"} - return( -
    -
    {item.email}
    -
    {item.title}
    -
    {item.id}
    -
    {item.time}
    -
    - ) - }) } -
    - - - -
  • - - - 1-1.py - -
  • - - - -*/ - -export default Repository; +import React, { Component } from 'react'; + +import { Redirect } from 'react-router'; + +import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; + +import PropTypes from 'prop-types'; + +import classNames from 'classnames'; + +import axios from 'axios'; + +import { trace, trace_collapse ,getImageUrl, toPath} from "educoder"; + +import RepositoryDirectories from './RepositoryDirectories' +const $ = window.$; + +// 点击按钮复制功能 +function jsCopy(){ + var e = document.getElementById("copy_rep_content"); + e.select(); + document.execCommand("Copy"); +} +/** + 提交记录 + 使用指南 + */ +class Repository extends Component { + constructor(props) { + super(props); + + } + componentDidMount() { + } + onRepoFileClick = (item) => { + + this.props.fetchRepo(item) + + } + render() { + let { match, author, git_url, lastest_commit, trees, commits,repositoryLoading, pathArray } = this.props; + if (!author) { + author = {} + } + let userauthority=false; + if(this.props.author!=undefined){ + userauthority=this.props.author.login===""||this.props.author.user_id===""||this.props.author.login===null||this.props.author.user_id===null; + } + + // console.log(commits) + return ( + + {/* jfinalshop/WebRoot */} + {/*
    + + + 分支 1 + + Git使用指南 +
    */} + + { repositoryLoading ?
    : + +
    +
    +
    +
    +
    + {/*
    + +
    + +
    + + + +
    */} + + Git使用指南 + +
    + + + { + jsCopy() + }} data-tip-down="点击复制版本库地址" + className="fl ml5"> + + + + + {/* Git使用指南 */} + + + { $('#repository_url_tip').css('display') === 'none' + ? $('#repository_url_tip').show() + : $('#repository_url_tip').hide() }} + className="fl ml6 mt1"> + + + + +
    +
    + +
    +
    + + + {/* 用户、最近提交时间 */} + { + trees === undefined || trees === null ?
    +
    + +

    暂无数据哦~

    +
    +
    : +
    +
    + {author.name} + {commits[0].author.name} + 提交于 + + {commits===undefined?"":commits[0].time} + :{commits===undefined?"":commits[0].title} + + + + 提交记录 + +
    + +
    +
    + {/* 当前目录位置 */} + + +
    + {trees.map((item, index) => { + return ( +
  • + + + this.onRepoFileClick(item)}> +  {item.name} + + +
  • + ) + })} +
    +
    +
    +
    + } + + {/* 当前分支的文件 */} + +
    +
    + } +
    + + ); + } +} +/* + 提交记录 +
    + { RepositoryList===undefined?"":RepositoryList.commits.map((item,key)=>{ + // {"email":"李暾","title":"2\n","id":"80cb6fc55a14bdd64a9c99913f416966238ed3de","time":"49年前"} + return( +
    +
    {item.email}
    +
    {item.title}
    +
    {item.id}
    +
    {item.time}
    +
    + ) + }) } +
    + + + +
  • + + + 1-1.py + +
  • + + + +*/ + +export default Repository;