From 81d38a670c5b0ce1c989cfd4f15668ea842797f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Thu, 27 Jun 2019 09:20:18 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/config/webpack.config.dev.js | 30 +++++++++---------- public/react/src/AppConfig.js | 4 +-- .../graduation/tasks/GraduationTasksnew.js | 28 ++++++++--------- .../modules/courses/graduation/tasks/index.js | 6 ++-- public/react/src/modules/tpm/TPMBanner.js | 10 +++---- 5 files changed, 40 insertions(+), 38 deletions(-) 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/AppConfig.js b/public/react/src/AppConfig.js index 8b7eb02d6..a164828ef 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -30,8 +30,8 @@ export function initAxiosInterceptors(props) { var proxy = "http://localhost:3000" // proxy = "http://testbdweb.trustie.net" // proxy = "http://testbdweb.educoder.net" - proxy = "https://testeduplus2.educoder.net" - //proxy="http://47.96.87.25:48080" + //proxy = "https://testeduplus2.educoder.net" + proxy="http://47.96.87.25:48080" // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; // 如果需要支持重复的请求,考虑config里面自定义一个allowRepeat参考来控制 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/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..1a5ec22b4 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 < 6? Fork - + :""} - Date: Thu, 27 Jun 2019 09:59:25 +0800 Subject: [PATCH 2/5] bug --- public/react/src/AppConfig.js | 4 +- .../courses/common/button/CheckAllGroup.js | 13 ++- .../courses/poll/PollDetailTabForth.js | 84 ++++++++++--------- .../courses/poll/PollDetailTabForthRules.js | 64 +++++++------- .../courses/poll/PollDetailTabThird.js | 4 +- .../src/modules/courses/poll/PollInfo.js | 28 +++++-- .../src/modules/courses/poll/PollListItem.js | 4 + 7 files changed, 121 insertions(+), 80 deletions(-) diff --git a/public/react/src/AppConfig.js b/public/react/src/AppConfig.js index 8b7eb02d6..a164828ef 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -30,8 +30,8 @@ export function initAxiosInterceptors(props) { var proxy = "http://localhost:3000" // proxy = "http://testbdweb.trustie.net" // proxy = "http://testbdweb.educoder.net" - proxy = "https://testeduplus2.educoder.net" - //proxy="http://47.96.87.25:48080" + //proxy = "https://testeduplus2.educoder.net" + proxy="http://47.96.87.25:48080" // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; // 如果需要支持重复的请求,考虑config里面自定义一个allowRepeat参考来控制 diff --git a/public/react/src/modules/courses/common/button/CheckAllGroup.js b/public/react/src/modules/courses/common/button/CheckAllGroup.js index b8a548447..b19b684f7 100644 --- a/public/react/src/modules/courses/common/button/CheckAllGroup.js +++ b/public/react/src/modules/courses/common/button/CheckAllGroup.js @@ -41,13 +41,20 @@ class CheckAllGroup extends Component{ const { checkAll, checkedValues } = this.state; return (
  • + {label} 不限 - { - options.length > 1 && - } +
    + { + options.length > 1 && + } +
  • ) } diff --git a/public/react/src/modules/courses/poll/PollDetailTabForth.js b/public/react/src/modules/courses/poll/PollDetailTabForth.js index 01366c2f9..3dff2bc87 100644 --- a/public/react/src/modules/courses/poll/PollDetailTabForth.js +++ b/public/react/src/modules/courses/poll/PollDetailTabForth.js @@ -1,7 +1,7 @@ import React,{ Component } from "react"; import {Form,Checkbox,DatePicker,Button,Input,Select,Tooltip} from "antd"; -import { handleDateString } from 'educoder'; +import { handleDateString,ConditionToolTip } from 'educoder'; import PollDetailTabForthRules from './PollDetailTabForthRules' import HomeworkModal from "../coursesPublic/HomeworkModal"; @@ -585,48 +585,56 @@ class PollDetailTabForth extends Component{
    发布时间: -
    - -

    - { - unit_p_tip && unit_p_tip != "" ? { unit_p_tip }:"" - } -

    -
    +
    + + + + + +

    + { + unit_p_tip && unit_p_tip != "" ? { unit_p_tip }:"" + } +

    +
    (学生收到问卷的时间)
    截止时间:
    - - + + + + + +

    { unit_e_tip && unit_e_tip != "" ? { unit_e_tip }:"" diff --git a/public/react/src/modules/courses/poll/PollDetailTabForthRules.js b/public/react/src/modules/courses/poll/PollDetailTabForthRules.js index 4193cdc62..2f3621844 100644 --- a/public/react/src/modules/courses/poll/PollDetailTabForthRules.js +++ b/public/react/src/modules/courses/poll/PollDetailTabForthRules.js @@ -390,20 +390,24 @@ class PollDetailTabForthRules extends Component{

    - this.changeRulePublishTime(e, date,r)} - showTime={{ format: 'HH:mm' }} - format="YYYY-MM-DD HH:mm" - disabledTime={disabledDateTime} - disabled={ rule.e_timeflag ===undefined?rule.publish_time===null?false:!flagPageEdit:rule.p_timeflag == true ? true : !flagPageEdit} - style={{"height":"42px",width:'100%'}} - > + + + this.changeRulePublishTime(e, date,r)} + showTime={{ format: 'HH:mm' }} + format="YYYY-MM-DD HH:mm" + disabledTime={disabledDateTime} + disabled={ rule.e_timeflag ===undefined?rule.publish_time===null?false:!flagPageEdit:rule.p_timeflag == true ? true : !flagPageEdit} + style={{"height":"42px",width:'100%'}} + > + +

    { rule.publish_flag && rule.publish_flag!=""?{rule.publish_flag}:"" @@ -411,20 +415,24 @@ class PollDetailTabForthRules extends Component{

    - this.changeRuleEndTime(e, date,r)} - showTime={{ format: 'HH:mm' }} - format="YYYY-MM-DD HH:mm" - disabledTime={disabledDateTime} - disabled={ rule.e_timeflag ===undefined?rule.publish_time===null?false:!flagPageEdit:rule.e_timeflag == true ? true : !flagPageEdit} - style={{"height":"42px"}} - > + + + this.changeRuleEndTime(e, date,r)} + showTime={{ format: 'HH:mm' }} + format="YYYY-MM-DD HH:mm" + disabledTime={disabledDateTime} + disabled={ rule.e_timeflag ===undefined?rule.publish_time===null?false:!flagPageEdit:rule.e_timeflag == true ? true : !flagPageEdit} + style={{"height":"42px"}} + > + +

    { rule.end_flag && rule.end_flag!=""?{rule.end_flag}:"" diff --git a/public/react/src/modules/courses/poll/PollDetailTabThird.js b/public/react/src/modules/courses/poll/PollDetailTabThird.js index 5d9a01fb8..c3994c7c0 100644 --- a/public/react/src/modules/courses/poll/PollDetailTabThird.js +++ b/public/react/src/modules/courses/poll/PollDetailTabThird.js @@ -70,9 +70,9 @@ class PollDetailTabThird extends Component{

    {item.question.question_number}、{map[item.question.question_type]} - { item.question.is_necessary==1 ? 必答:"" } + { item.question.is_necessary==1 ? 必答:选答 } { item.question.question_type == 2 ? - + { item.question.min_choices == item.question.max_choices ? "可选"+item.question.max_choices+"项" : "可选"+item.question.min_choices+"-"+item.question.max_choices+"项" diff --git a/public/react/src/modules/courses/poll/PollInfo.js b/public/react/src/modules/courses/poll/PollInfo.js index 7177cb6b9..8256e3710 100644 --- a/public/react/src/modules/courses/poll/PollInfo.js +++ b/public/react/src/modules/courses/poll/PollInfo.js @@ -185,9 +185,11 @@ class PollInfo extends Component{ flag=answers.indexOf(a_id) > -1?true:false; answers= type == 1 ? answers[0] : answers; }else{ - flag=answers==a_id?true:false; + flag = answers==a_id?true:false; + } + if(answers && (answers.length>0 || answers !="")){ + this.postAnswer(q_id,answers,flag ? inputs.text : "",key); } - this.postAnswer(q_id,answers,flag ? inputs.text : "",key); } //提交主观题 @@ -379,13 +381,21 @@ class PollInfo extends Component{

    {item.question.question_number}、{map[item.question.question_type]} - { item.question.is_necessary==1 ? 必答:"" } + { item.question.is_necessary==1 ? 必答:选答 } + { item.question.question_type == 2 ? + + { + item.question.min_choices == item.question.max_choices ? "可选"+item.question.max_choices+"项" : + "可选"+item.question.min_choices+"-"+item.question.max_choices+"项" + } + :"" + }
  • {item.question.question_title}
  • { //单选 item.question.question_type==1 && - + { item.question.answers && item.question.answers.map((i,k)=>{ return( @@ -422,7 +432,12 @@ class PollInfo extends Component{ { //多选 item.question.question_type==2 && - this.ChangeOptionMuntil(value,item.question.id,key)} disabled={isAdmin?true:false} defaultValue={item.question.poll_answer_ids} className="answerList" name={key}> + this.ChangeOptionMuntil(value,item.question.id,key)} + disabled={isAdmin || (isStudent && poll && poll.user_poll_status == 1)?true:false} + defaultValue={item.question.poll_answer_ids} + className="answerList" + name={key}> { item.question.answers && item.question.answers.map((i,k)=>{ return( @@ -466,14 +481,13 @@ class PollInfo extends Component{ { j.id == item.question.id ? - + : "" } ) }) } -
    } diff --git a/public/react/src/modules/courses/poll/PollListItem.js b/public/react/src/modules/courses/poll/PollListItem.js index 3ebb6eb73..8c1d814ed 100644 --- a/public/react/src/modules/courses/poll/PollListItem.js +++ b/public/react/src/modules/courses/poll/PollListItem.js @@ -45,6 +45,10 @@ class PollListItem extends Component{ item.lock_status === 0 ? :"" } + { + isStudent && ((item.polls_status == 1 && (item.current_status ==0 ||item.current_status ==2)) || (item.polls_status==3 && item.current_status==2)) ? + 未提交:"" + }

    { From 3c4151ce65a3031fe0b29494fb37f3e556d5f499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Thu, 27 Jun 2019 10:09:19 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TraineetraininginformationModal.js | 2 ++ public/react/src/modules/tpm/NewHeader.js | 2 +- .../src/modules/tpm/newshixuns/Newshixuns.js | 36 +++++++++++++------ 3 files changed, 29 insertions(+), 11 deletions(-) diff --git a/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js b/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js index 10db61e1b..a0486095e 100644 --- a/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js +++ b/public/react/src/modules/courses/shixunHomework/TraineetraininginformationModal.js @@ -80,6 +80,8 @@ class TraineetraininginformationModal extends Component { } render() { var columns; + console.log(83); + console.log(this.props.boolgalist); if(this.props.boolgalist&&this.props.boolgalist === true) { columns = [ { diff --git a/public/react/src/modules/tpm/NewHeader.js b/public/react/src/modules/tpm/NewHeader.js index 294339b54..f43991599 100644 --- a/public/react/src/modules/tpm/NewHeader.js +++ b/public/react/src/modules/tpm/NewHeader.js @@ -625,7 +625,7 @@ submittojoinclass=(value)=>{ {/* />*/} {/* :""*/} {/*}*/} - + this.cancelModulationModels()} >

    {/*<%= link_to image_tag("/images/educoder/logo.png", alt:"高校智能化教学与实训平台", className:"logoimg"), home_path %>*/} diff --git a/public/react/src/modules/tpm/newshixuns/Newshixuns.js b/public/react/src/modules/tpm/newshixuns/Newshixuns.js index aa5b62a0a..3dca1ad2b 100644 --- a/public/react/src/modules/tpm/newshixuns/Newshixuns.js +++ b/public/react/src/modules/tpm/newshixuns/Newshixuns.js @@ -181,6 +181,7 @@ class Newshixuns extends Component { systemenvironment:undefined, testcoderunmode:undefined, file:undefined, + deleteisnot:true, } } @@ -547,7 +548,7 @@ class Newshixuns extends Component { // if (id) { if(this.state.file !== undefined){ console.log("549"); - this.deleteAttachment(this.state.file); + // this.deleteAttachment(this.state.file); this.setState({ file:undefined, languagewrite:"", @@ -579,7 +580,7 @@ class Newshixuns extends Component { }) if(this.state.file !== undefined){ console.log("580"); - this.deleteAttachment(this.state.file); + // this.deleteAttachment(this.state.file); this.setState({ file:undefined, languagewrite:"", @@ -655,7 +656,8 @@ class Newshixuns extends Component { handleChange = (info) => { console.log("handleChange1"); let fileList = info.fileList; - this.setState({ fileList }); + this.setState({ fileList:fileList, + deleteisnot:false}); } onAttachmentRemove = (file) => { confirm({ @@ -686,11 +688,13 @@ class Newshixuns extends Component { // console.log('--- success') this.setState((state) => { + const index = state.fileList.indexOf(file); const newFileList = state.fileList.slice(); newFileList.splice(index, 1); return { fileList: newFileList, + deleteisnot:true }; }); } @@ -736,7 +740,7 @@ class Newshixuns extends Component { render() { const { getFieldDecorator } = this.props.form; const thiss=this; - let {testcoderunmode ,systemenvironment,languagewrite, fileList,TimePickervalue, scope_partmenttype, opensmail, newshixunlist, name, scope_partment, departmentslist, postapplyvisible, sendsure_applyvalue, postapplytitle, shixun_nametype, main_types, trainee_types, SelectTheCommandtype, opers, operss, onSearchvalue} = this.state; + let {testcoderunmode ,systemenvironment,languagewrite,deleteisnot, fileList,TimePickervalue, scope_partmenttype, opensmail, newshixunlist, name, scope_partment, departmentslist, postapplyvisible, sendsure_applyvalue, postapplytitle, shixun_nametype, main_types, trainee_types, SelectTheCommandtype, opers, operss, onSearchvalue} = this.state; let options if (departmentslist != undefined) { options = this.state.departmentslist.map((d, k) => { @@ -764,7 +768,7 @@ class Newshixuns extends Component { } if(thiss.state.file !== undefined){ console.log("763") - thiss.deleteAttachment(thiss.state.file); + // thiss.deleteAttachment(thiss.state.file); thiss.setState({ file:file }) @@ -797,6 +801,7 @@ class Newshixuns extends Component { // return isLt50M; // }, // }; + return (
    @@ -934,12 +939,23 @@ class Newshixuns extends Component { {/* rules:[{*/} {/* }]*/} {/* })(*/} - - - 上传附件 - (单个文件50M以内) + { + deleteisnot=== true? + + + 上传附件 + (单个文件50M以内) + + + : + + + 上传附件 + (单个文件50M以内) + + + } - {/* )*/} {/* }*/} {/**/} From df8aa59ffa61dd3dd5e141b12d78d6202764b124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=9E=97?= <904079904@qq.com> Date: Thu, 27 Jun 2019 10:09:43 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/AppConfig.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/react/src/AppConfig.js b/public/react/src/AppConfig.js index 8b7eb02d6..bae157ef7 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -30,8 +30,8 @@ export function initAxiosInterceptors(props) { var proxy = "http://localhost:3000" // proxy = "http://testbdweb.trustie.net" // proxy = "http://testbdweb.educoder.net" - proxy = "https://testeduplus2.educoder.net" - //proxy="http://47.96.87.25:48080" + // proxy = "https://testeduplus2.educoder.net" + proxy="http://47.96.87.25:48080" // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; // 如果需要支持重复的请求,考虑config里面自定义一个allowRepeat参考来控制 From 156abe2c7bb36f975aa8607afdd7a12e96a505e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Thu, 27 Jun 2019 10:11:24 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=20=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tasks/GraduationTaskssettinglist.js | 3 +- public/react/src/modules/tpm/TPMBanner.js | 2 +- .../modules/tpm/TPMsettings/TPMsettings.js | 8 +- .../src/modules/tpm/component/TPMright.css | 3 +- .../tpm/shixunchild/Challenges/Challenges.js | 30 +- .../Collaborators/Collaborators.js | 1092 ++++++++--------- .../Propaedeutics/Propaedeu_tics.js | 220 ++-- .../tpm/shixunchild/Repository/Repository.js | 502 ++++---- 8 files changed, 935 insertions(+), 925 deletions(-) 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/tpm/TPMBanner.js b/public/react/src/modules/tpm/TPMBanner.js index 1a5ec22b4..0def84c98 100644 --- a/public/react/src/modules/tpm/TPMBanner.js +++ b/public/react/src/modules/tpm/TPMBanner.js @@ -877,7 +877,7 @@ class TPMBanner extends Component {
    - {this.props.identity < 6? + {this.props.identity < 8? @@ -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.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} -
    • - ) - }) - - } -
    -
    -
    - -
    - - - 全选 -
    - 请至少选择一个用户 -
    -
    - - -
    - - -
    - -
    - { - 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)}>删除} - {/*取消关注*/} -
    - - ) - } - }) - } - -
    -
    确定要删除吗?
    -
    - - -
    -
    - -
    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.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} +
    • + ) + }) + + } +
    +
    +
    + +
    + + + 全选 +
    + 请至少选择一个用户 +
    +
    + + +
    + + +
    + +
    + { + 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)}>删除} + {/*取消关注*/} +
    + + ) + } + }) + } + +
    +
    确定要删除吗?
    +
    + + +
    +
    + +
    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;