|
|
|
@ -3,7 +3,7 @@ import React, { Component } from 'react';
|
|
|
|
|
import MonacoEditor from 'react-monaco-editor';
|
|
|
|
|
|
|
|
|
|
//MonacoDiffEditor 对比模式
|
|
|
|
|
import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal,Icon,DatePicker,Breadcrumb,Upload,Button,notification, Tooltip} from 'antd';
|
|
|
|
|
import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal,Icon,DatePicker,Breadcrumb,Upload,Button,notification, Tooltip,Tabs} from 'antd';
|
|
|
|
|
|
|
|
|
|
// import "antd/dist/antd.css";
|
|
|
|
|
|
|
|
|
@ -23,6 +23,8 @@ let path = getUrl("/editormd/lib/")
|
|
|
|
|
|
|
|
|
|
const $ = window.$;
|
|
|
|
|
|
|
|
|
|
const { TabPane } = Tabs;
|
|
|
|
|
|
|
|
|
|
let timeout;
|
|
|
|
|
|
|
|
|
|
let currentValue;
|
|
|
|
@ -1647,788 +1649,20 @@ export default class TPMsettings extends Component {
|
|
|
|
|
}
|
|
|
|
|
const dateFormat = 'YYYY-MM-DD HH:mm:ss';
|
|
|
|
|
let operateauthority=this.props.identity===1?true:this.props.identity<5&&this.state.status==0?true:false;
|
|
|
|
|
|
|
|
|
|
const operations = <Button>Extra Action</Button>;
|
|
|
|
|
return (
|
|
|
|
|
<div className="educontent mt30 mb50" id="shixun_settings_show" onClick={this.bigopens}>
|
|
|
|
|
<Breadcrumb separator=">" className={"mb20"}>
|
|
|
|
|
<Breadcrumb.Item href={"/shixuns/"+this.props.match.params.shixunId+"/challenges"}>实训详情</Breadcrumb.Item>
|
|
|
|
|
<Breadcrumb.Item>配置</Breadcrumb.Item>
|
|
|
|
|
</Breadcrumb>
|
|
|
|
|
|
|
|
|
|
<div className="edu-back-white mb10">
|
|
|
|
|
<div className="padding30 bor-bottom-greyE clearfix">
|
|
|
|
|
<span className="fl font-16">配置</span>
|
|
|
|
|
{
|
|
|
|
|
this.props.identity===1&&this.state.status==2?
|
|
|
|
|
<a className="edu-default-btn edu-blueline-btn ml20 fr"
|
|
|
|
|
onClick={()=>this.operateshixuns(2)}>
|
|
|
|
|
永久关闭
|
|
|
|
|
</a>:""
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
this.props.identity < 5 && this.state.status==0?
|
|
|
|
|
<a className="edu-default-btn edu-blueline-btn ml20 fr"
|
|
|
|
|
onClick={()=>this.operateshixuns(1)}>
|
|
|
|
|
删除实训
|
|
|
|
|
</a>:""
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
this.props.identity == 1 && this.state.status == 2 ?
|
|
|
|
|
<a className="edu-default-btn edu-blueline-btn ml20 fr"
|
|
|
|
|
onClick={()=>this.operateshixuns(1)}>
|
|
|
|
|
删除实训
|
|
|
|
|
</a>:""
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
<Modal
|
|
|
|
|
keyboard={false}
|
|
|
|
|
title="提示"
|
|
|
|
|
visible={operateshixunstype}
|
|
|
|
|
closable={false}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<div className="task-popup-content">
|
|
|
|
|
{delType===1?<p className="task-popup-text-center font-16 pb20">是否确认删除 ?</p>:<p className="task-popup-text-center font-16 pb20">关闭后,<br/>用户不能再开始挑战了是否确认关闭 ?</p>}
|
|
|
|
|
</div>
|
|
|
|
|
<div className="task-popup-submit clearfix">
|
|
|
|
|
<a onClick={this.hideoperateshixuns} className="task-btn fl">取消</a>
|
|
|
|
|
{delType===1?<a className="task-btn task-btn-orange fr" onClick={this.shixunsdel}>确定</a>:<a className="task-btn task-btn-orange fr" onClick={this.shixunsclose}>确定</a>}
|
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="padding40-20">
|
|
|
|
|
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">实训名称</p>
|
|
|
|
|
|
|
|
|
|
<div className="df">
|
|
|
|
|
<span className="mr30 color-orange pt10">*</span>
|
|
|
|
|
<div className="flex1">
|
|
|
|
|
<div>
|
|
|
|
|
{settingsData === undefined ? "" :
|
|
|
|
|
<Input placeholder="请输入实训名称,最多60个字符" className={shixunnametype === true ? "input-100-45 greyInput bor-red" : "input-100-45 greyInput"} maxLength="60" value={name}
|
|
|
|
|
onInput={this.shixunsname}/>}
|
|
|
|
|
</div>
|
|
|
|
|
<div className={shixunnametype === true ? "color-orange fl" : "color-orange fl none"}>
|
|
|
|
|
<span id="shixun_name_notice"><i className="fa fa-exclamation-circle mr3"></i>必填项</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="edu-back-white mb10 padding40-20">
|
|
|
|
|
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">简介</p>
|
|
|
|
|
|
|
|
|
|
<div className="padding10-20 edu-back-greyf5 radius4" id="shixundescription">
|
|
|
|
|
<textarea style={{display: 'none'}} id="evaluate_script_shows" name="content"> </textarea>
|
|
|
|
|
<div className="CodeMirror cm-s-defualt">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<p id="e_tip_shixundescriptionQuestion" className="edu-txt-right color-grey-cd font-12"></p>
|
|
|
|
|
<p id="e_tips_shixundescriptionQuestion" className="edu-txt-right color-grey-cd font-12"></p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="edu-back-white mb10 padding40-20 clearfix" >
|
|
|
|
|
<div className="clearfix">
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">技术平台</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div className="clearfix mb20">
|
|
|
|
|
<span className="color-orange fl mr20">*</span>
|
|
|
|
|
<div className="width15 fl mr20"
|
|
|
|
|
// onMouseLeave={operateauthority?this.bigopens:""}
|
|
|
|
|
>
|
|
|
|
|
<Select placeholder="请选择主类别" value={choice_main_type === "" ? undefined : choice_main_type}
|
|
|
|
|
style={{width: 180}}
|
|
|
|
|
onChange={operateauthority?this.bigClass:""}
|
|
|
|
|
// onMouseEnter={this.bigopen}
|
|
|
|
|
// onMouseLeave={this.bigopens}
|
|
|
|
|
disabled={operateauthority?false:true}
|
|
|
|
|
// onMouseEnter={operateauthority?this.bigopen:""}
|
|
|
|
|
onSelect={operateauthority?this.bigopens:""}
|
|
|
|
|
// open={opers}
|
|
|
|
|
optionFilterProp="children"
|
|
|
|
|
filterOption={(input, option) =>
|
|
|
|
|
option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
|
|
}
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
settingsData === undefined ? "" : settingsData.shixun.main_type.map((item, key) => {
|
|
|
|
|
return (
|
|
|
|
|
<Option value={item.id} key={key} >
|
|
|
|
|
<Tooltip placement="right" title={item.description=== ""?"无描述":item.description} >
|
|
|
|
|
{item.type_name}
|
|
|
|
|
</Tooltip>
|
|
|
|
|
</Option>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
</Select>
|
|
|
|
|
<p
|
|
|
|
|
className="edu-txt-left font-12"
|
|
|
|
|
style={{display:operateauthority?"block":'none'}}
|
|
|
|
|
>
|
|
|
|
|
列表中没有?
|
|
|
|
|
<a className="color-blue" onClick={this.post_apply}>申请新建</a>
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<Modal
|
|
|
|
|
keyboard={false}
|
|
|
|
|
title="申请新建"
|
|
|
|
|
visible={postapplyvisible}
|
|
|
|
|
closable={false}
|
|
|
|
|
footer={null}
|
|
|
|
|
width={850}
|
|
|
|
|
heigth={720}
|
|
|
|
|
>
|
|
|
|
|
<div>
|
|
|
|
|
<li className="clearfix ml82" >
|
|
|
|
|
<label className="fl mt10 "><span
|
|
|
|
|
className="color-red fl mt3">*</span>语言: </label>
|
|
|
|
|
<textarea className="fl task-form-80 task-height-150"
|
|
|
|
|
style={{width:'89%',height:'100px'}}
|
|
|
|
|
onInput={this.setlanguagewrite}
|
|
|
|
|
value={this.state.languagewrite}
|
|
|
|
|
placeholder="请填写该镜像是基于什么语言:示例:Python"
|
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
|
</li>
|
|
|
|
|
<div className={"color-red shixunspanred"}>{this.state.languagewritetype===true?"请填写该镜像语言":""}</div>
|
|
|
|
|
<li className="clearfix ml1">
|
|
|
|
|
<label className="panel-form-label fl ml50"><span
|
|
|
|
|
className="color-red fl mt3">*</span>系统环境: </label>
|
|
|
|
|
<textarea className="fl task-form-80 task-height-150 "
|
|
|
|
|
onInput={this.setsystemenvironment}
|
|
|
|
|
style={{height:'100px'}}
|
|
|
|
|
value={this.state.systemenvironment}
|
|
|
|
|
placeholder="请填写该镜像是基于什么linux系统环境,代码运行环境"
|
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
|
</li>
|
|
|
|
|
<div className={"color-red shixunspanred"}>{this.state.systemenvironmenttype===true?"请填写该镜像语言系统环境":""}</div>
|
|
|
|
|
<li className="clearfix">
|
|
|
|
|
<label className="fl mt10" ><span
|
|
|
|
|
className="color-red fl mt3">*</span>测试代码运行方式: </label>
|
|
|
|
|
|
|
|
|
|
<textarea className="fl task-form-80 task-height-150 "
|
|
|
|
|
onInput={this.settestcoderunmode}
|
|
|
|
|
value={this.state.testcoderunmode}
|
|
|
|
|
style={{height:'100px'}}
|
|
|
|
|
placeholder="请填写该镜像中测试代码运行方式"
|
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
|
</li>
|
|
|
|
|
<div className={"color-red shixunspanred"}>{this.state.testcoderunmodetype===true?"请填写该镜像测试代码运行方式":""}</div>
|
|
|
|
|
<li className="clearfix ml50">
|
|
|
|
|
<label className="panel-form-label fl mt-5"><span
|
|
|
|
|
className="color-red fl">*</span>测试代码: </label>
|
|
|
|
|
<div className="mt10" style={{
|
|
|
|
|
display: "inline-block"
|
|
|
|
|
}}>
|
|
|
|
|
<Upload {...uploadProps} >
|
|
|
|
|
<Icon type="upload" className="fl mt3" > </Icon>
|
|
|
|
|
<span className="color-blue fl cdefault">上传附件</span>
|
|
|
|
|
<span className="color-grey-c fl ml10 ">(单个文件50M以内)</span>
|
|
|
|
|
</Upload>
|
|
|
|
|
</div>
|
|
|
|
|
</li>
|
|
|
|
|
<div className={"color-red shixunspanred"}>
|
|
|
|
|
{this.state.attachmentidstype===true?"请上传附件":""}
|
|
|
|
|
</div>
|
|
|
|
|
<li className="edu-txt-center clearfix ">
|
|
|
|
|
<a className="pop_close task-btn mr30"
|
|
|
|
|
onClick={() => this.sendhideModaly()}
|
|
|
|
|
>取消</a>
|
|
|
|
|
<Button type="primary" onClick={()=>this.sendsure_apply()}
|
|
|
|
|
className="task-btn task-btn-orange">确定</Button>
|
|
|
|
|
</li>
|
|
|
|
|
<div className="cl"></div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</Modal>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Modal
|
|
|
|
|
keyboard={false}
|
|
|
|
|
title="提示"
|
|
|
|
|
visible={postapplytitle}
|
|
|
|
|
closable={false}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<div>
|
|
|
|
|
<div className="task-popup-content"><p
|
|
|
|
|
className="task-popup-text-center font-16"><span
|
|
|
|
|
className="font-17 mt10">新建申请已提交,请等待管理员的审核</span></p>
|
|
|
|
|
<li className="font-14 mt15 color-grey-6 edu-txt-center">我们将在1-2个工作日内与您联系
|
|
|
|
|
</li>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="task-popup-OK clearfix">
|
|
|
|
|
<a className="task-btn task-btn-orange" onClick={this.yeshidemodel}>知道啦</a>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="width15 fl pr mr20"
|
|
|
|
|
// onMouseLeave={operateauthority?this.bigopens:""}
|
|
|
|
|
>
|
|
|
|
|
<Select mode="multiple" placeholder="请选择小类别"
|
|
|
|
|
value={choice_small_type.length===0||choice_small_type[0]===""||choice_small_type===[]?undefined:choice_small_type}
|
|
|
|
|
style={{width: 180,height:30}}
|
|
|
|
|
disabled={operateauthority?false:true}
|
|
|
|
|
// onChange={operateauthority?this.littleClass:""}
|
|
|
|
|
onDeselect={operateauthority?this.Deselectlittle:""}
|
|
|
|
|
// onMouseEnter={operateauthority?this.bigopensmal:""}
|
|
|
|
|
onSelect={operateauthority?this.littleClass:""}
|
|
|
|
|
defaultOpen={false}
|
|
|
|
|
// open={opensmail}
|
|
|
|
|
>
|
|
|
|
|
{
|
|
|
|
|
settingsData === undefined ? "" : settingsData.shixun.small_type.map((item, key) => {
|
|
|
|
|
return(
|
|
|
|
|
<Option value={item.id} key={key}>
|
|
|
|
|
<Tooltip placement="right" title={item.description=== ""?"无描述":item.description} >
|
|
|
|
|
{item.type_name}
|
|
|
|
|
</Tooltip>
|
|
|
|
|
</Option>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
</Select>
|
|
|
|
|
</div>
|
|
|
|
|
<div style={{width: ' 57px '}} className="fl">
|
|
|
|
|
<span className={shixunmaintype === true ? "color-orange mt8" : "color-orange mt8 none"}
|
|
|
|
|
id="shixun_name_notice"><i
|
|
|
|
|
className="fa fa-exclamation-circle mr3"></i>必填项</span>
|
|
|
|
|
</div>
|
|
|
|
|
{/*<p className="fl ml10 color-grey-9 mt5">请在配置页面完成后续的评测脚本设置操作</p>*/}
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
{/*</div>*/}
|
|
|
|
|
{/*<div className="edu-back-white mb10 padding40-20 clearfix" >*/}
|
|
|
|
|
<div className="clearfix"
|
|
|
|
|
// onMouseLeave={operateauthority?this.bigopens:""}
|
|
|
|
|
>
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">评测脚本</p>
|
|
|
|
|
<div className="pl35">
|
|
|
|
|
<Select placeholder="请选择选择脚本"
|
|
|
|
|
style={{width: 180}}
|
|
|
|
|
className="fl"
|
|
|
|
|
disabled={operateauthority?false:true}
|
|
|
|
|
// onMouseEnter={operateauthority?this.sbigopen:""}
|
|
|
|
|
onSelect={operateauthority?this.bigopens:""}
|
|
|
|
|
// open={operss}
|
|
|
|
|
value={choice_standard_scripts === undefined||choice_standard_scripts === null ? undefined :choice_standard_scripts.id===undefined?choice_standard_scripts:choice_standard_scripts.id}
|
|
|
|
|
onChange={operateauthority?this.SelectScput:""}>
|
|
|
|
|
{
|
|
|
|
|
standard_scripts === undefined ? "" : standard_scripts.map((item, key) => {
|
|
|
|
|
return (
|
|
|
|
|
<Option value={parseInt(item.id)} name={item.scptname} key={key}>{item.scptname}</Option>
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
</Select>
|
|
|
|
|
<Modal
|
|
|
|
|
keyboard={false}
|
|
|
|
|
title="提示"
|
|
|
|
|
visible={standard_scriptsModal}
|
|
|
|
|
closable={false}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<div className="task-popup-content">
|
|
|
|
|
<p className="task-popup-text-center font-16">原有脚本将被新的脚本覆盖,无法撤销</p>
|
|
|
|
|
<p className="task-popup-text-center font-16">是否确认执行覆盖操作</p>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="task-popup-submit clearfix mt10">
|
|
|
|
|
<a onClick={()=>this.hidestandard_scriptsModal()} className="task-btn fl">取消</a>
|
|
|
|
|
<a className="task-btn task-btn-orange fr" onClick={()=>this.get_mirror_script()}>确定</a>
|
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
|
|
|
|
|
|
|
|
|
<Modal
|
|
|
|
|
keyboard={false}
|
|
|
|
|
title="提示"
|
|
|
|
|
visible={standard_scriptsModals}
|
|
|
|
|
closable={false}
|
|
|
|
|
footer={null}
|
|
|
|
|
>
|
|
|
|
|
<div className="task-popup-content"><p className="task-popup-text-center font-16">评测脚本生成成功!</p></div>
|
|
|
|
|
<div className="task-popup-sure clearfix">
|
|
|
|
|
<a className="task-btn task-btn-orange" onClick={()=>this.hidestandard_scriptsModal()} >确定</a>
|
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
this.props.identity<5||this.props.power==true?
|
|
|
|
|
<a onClick={this.showModal} id="define_template"
|
|
|
|
|
className="color-orange-tip ml20 mt1 fl">使用自定义脚本</a> : ""
|
|
|
|
|
}
|
|
|
|
|
<div className="ml6 fl pr"
|
|
|
|
|
style={{display:operateauthority?'block':"none"}}
|
|
|
|
|
>
|
|
|
|
|
<a onClick={()=>this.testscripttip(0)}><img
|
|
|
|
|
src={getImageUrl("images/educoder/problem.png") }/></a>
|
|
|
|
|
<div className="invite-tip clearfix none " id="test_script_tip"
|
|
|
|
|
style={{top: '33px', right: '-6px',width: '322px',zIndex: '10',display: testscripttiptype===true?'block':"none"}}>
|
|
|
|
|
<span className="top-black-trangle"></span>
|
|
|
|
|
<div className="padding20 invitecontent clearfix">
|
|
|
|
|
<p className="font-12 edu-txt-left">
|
|
|
|
|
使用自定义模板,平台无法自动更新脚本,<br/>
|
|
|
|
|
请在关卡创建完后手动更新脚本中的必填参<br/>
|
|
|
|
|
数和以下2个数组元素:<br/>
|
|
|
|
|
challengeProgramNames<br/>
|
|
|
|
|
sourceClassNames<br/><br/>
|
|
|
|
|
示例:有2个关卡的实训<br/><br/>
|
|
|
|
|
各关卡的待编译文件为:<br/>
|
|
|
|
|
src/step1/HelloWorld.java<br/>
|
|
|
|
|
src/step2/Other.java<br/><br/>
|
|
|
|
|
各关卡的编译后生成的执行文件为:<br/>
|
|
|
|
|
step1.HelloWorld<br/>
|
|
|
|
|
step2.Other<br/><br/>
|
|
|
|
|
则数组元素更新如下:<br/>
|
|
|
|
|
challengeProgramNames=("src/step1/<br/>
|
|
|
|
|
HelloWorld.java" "src/step2/Other.java")<br/>
|
|
|
|
|
sourceClassNames=("step1.HelloWorld<br/>
|
|
|
|
|
" "step2.Other")<br/><br/>
|
|
|
|
|
其它参数可按实际需求定制
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
<p className="inviteTipbtn with100 fl">
|
|
|
|
|
<a onClick={()=>this.testscripttip(1)}>知道了</a>
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<Modal
|
|
|
|
|
keyboard={false}
|
|
|
|
|
title="自定义模板"
|
|
|
|
|
visible={this.state.visibleTemplate}
|
|
|
|
|
onCancel={this.handleCancelTemplate}
|
|
|
|
|
onOk={this.hideModalTemplate}
|
|
|
|
|
okText="确认"
|
|
|
|
|
cancelText="取消"
|
|
|
|
|
>
|
|
|
|
|
<div>
|
|
|
|
|
<li className="clearfix mb15">
|
|
|
|
|
<label className="panel-form-label fl"><span
|
|
|
|
|
className="color-orange mr5">*</span>执行命令:</label>
|
|
|
|
|
<textarea className="task-form-80 task-height-150 panel-box-sizing fl mt10"
|
|
|
|
|
onInput={this.Executiveorder}
|
|
|
|
|
value={Executiveordervalue}
|
|
|
|
|
style={{width:'100%'}}
|
|
|
|
|
id="executive_command"
|
|
|
|
|
>
|
|
|
|
|
</textarea>
|
|
|
|
|
<p className="-text-danger fl mt5"
|
|
|
|
|
id="executive_command_notice"
|
|
|
|
|
style={{display: Executivetyoe === false ? "none" : "block"}}
|
|
|
|
|
>执行命令不能为空</p>
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
<li className="clearfix mb15">
|
|
|
|
|
<label className="panel-form-label fl">编译命令:</label>
|
|
|
|
|
<textarea className="task-form-80 task-height-150 panel-box-sizing fl mt10"
|
|
|
|
|
value={Compilecommandvalue}
|
|
|
|
|
onInput={this.Compilecommand}
|
|
|
|
|
id="compile_command"
|
|
|
|
|
style={{width:'100%'}}
|
|
|
|
|
>
|
|
|
|
|
</textarea>
|
|
|
|
|
</li>
|
|
|
|
|
</div>
|
|
|
|
|
</Modal>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="mt30 clearfix df">
|
|
|
|
|
<div
|
|
|
|
|
className={operateauthority===false?'nonemodel':""}
|
|
|
|
|
></div>
|
|
|
|
|
<span className="color-orange fl mr30">*</span>
|
|
|
|
|
<div className="flex1">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div className="fl" style={{border:'1px solid #ccc'}}>
|
|
|
|
|
{/*<textarea className={"shixunmemoMDdiv"} value={shixunmemoMDvalue} onInput={this.getshixunmemoMDvalue} name="content">*/}
|
|
|
|
|
{/*</textarea>*/}
|
|
|
|
|
<MonacoEditor
|
|
|
|
|
height="450"
|
|
|
|
|
width="1100"
|
|
|
|
|
language={this.state.language}
|
|
|
|
|
value={shixunmemoMDvalue}
|
|
|
|
|
options={ {
|
|
|
|
|
selectOnLineNumbers: true
|
|
|
|
|
}}
|
|
|
|
|
onChange={operateauthority===true?this.getshixunmemoMDvalue:""}
|
|
|
|
|
// onChange={this.getshixunmemoMDvalue}
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{/*<div className="padding10-20 edu-back-greyf5 radius4 fl "*/}
|
|
|
|
|
{/*id="shixunmemoMDs"*/}
|
|
|
|
|
{/*style={{display:operateauthority?'none':"block"}}*/}
|
|
|
|
|
{/*>*/}
|
|
|
|
|
{/*{evaluate_script===undefined?"":evaluate_script}*/}
|
|
|
|
|
|
|
|
|
|
{/*</div>*/}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div className="clearfix"
|
|
|
|
|
style={{display:operateauthority?'block':"none"}}
|
|
|
|
|
>
|
|
|
|
|
<div className="fl">
|
|
|
|
|
<span className={evaluate_scripttype === true ? "color-orange fl" : "color-orange fl none"} id="shixun_name_notice">
|
|
|
|
|
<i className="fa fa-exclamation-circle mr3"></i>必填项</span>
|
|
|
|
|
</div>
|
|
|
|
|
<p id="e_tip_shixunmemoMDQuestion" className="edu-txt-right color-grey-cd font-12 pdr20 fr"
|
|
|
|
|
style={{display:operateauthority?'block':"none"}}
|
|
|
|
|
></p>
|
|
|
|
|
<p id="e_tips_shixunmemoMDQuestion" className="edu-txt-right color-grey-cd font-12 pdr20 fr"
|
|
|
|
|
style={{display:operateauthority?'block':"none"}}
|
|
|
|
|
></p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{/*<div className="edu-back-white mb10 padding40-20 clearfix">*/}
|
|
|
|
|
{/*<span className="color-orange fl mr20">*</span>*/}
|
|
|
|
|
|
|
|
|
|
{/*<p className="color-grey-6 font-16 mb30">程序最大执行时间</p>*/}
|
|
|
|
|
|
|
|
|
|
{/*<Input className="mr10 fl" placeholder="请输入程序最大执行时间" maxLength="60" style={{width: '20%'}}*/}
|
|
|
|
|
{/*onInput={this.Timevalue} value={exec_time === undefined ? "" : exec_time}/> <span*/}
|
|
|
|
|
{/*className="fl mr10 ml20">秒</span>*/}
|
|
|
|
|
|
|
|
|
|
{/*<div style={{width: ' 57px '}} className="fl">*/}
|
|
|
|
|
{/*<span className={exec_timetype === true ? "color-orange mt8" : "color-orange mt8 none"}*/}
|
|
|
|
|
{/*id="shixun_name_notice"><i*/}
|
|
|
|
|
{/*className="fa fa-exclamation-circle mr3"></i>必填项</span>*/}
|
|
|
|
|
{/*</div>*/}
|
|
|
|
|
{/*</div>*/}
|
|
|
|
|
|
|
|
|
|
{/* <div className="edu-back-white mb10 padding40-20 clearfix" id="pod_exist_time">
|
|
|
|
|
<span className="color-orange fl mr20">*</span>
|
|
|
|
|
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">Pod存活时间</p>
|
|
|
|
|
|
|
|
|
|
<Input className="mr10 fl" placeholder="请输入pod存活时间" maxLength="60" style={{width: '20%'}}
|
|
|
|
|
onInput={this.onPodExistTimeChange} value={pod_exist_time === undefined ? "" : pod_exist_time}/> <span
|
|
|
|
|
className="fl mr10 ml20">秒</span>
|
|
|
|
|
|
|
|
|
|
<div style={{width: ' 57px '}} className="fl">
|
|
|
|
|
<span className={pod_exist_timetype === true ? "color-orange mt8" : "color-orange mt8 none"}
|
|
|
|
|
id="shixun_name_notice"><i
|
|
|
|
|
className="fa fa-exclamation-circle mr3"></i>必填项</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div> */}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div className="edu-back-white mb10 padding40-20">
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">命令行</p>
|
|
|
|
|
<RadioGroup onChange={this.SelectshixunCommand} value={webssh}>
|
|
|
|
|
<Radio className="radioStyle" value={0}><span>无命令行窗口</span> <span className="color-grey-9">(选中则不给学员的实践任务提供命令窗口)</span></Radio>
|
|
|
|
|
<Radio className="radioStyle" value={1}><span>命令行练习窗口</span> <span className="color-grey-9">(选中则给学员提供用于练习操作的命令行窗口)</span></Radio>
|
|
|
|
|
<Radio className="radioStyle" value={2}><span>命令行评测窗口</span> <span className="color-grey-9">(选中则给学员提供用于关卡评测的命令行窗口)</span></Radio>
|
|
|
|
|
<Checkbox style={{display:SelectTheCommandtype||webssh===2?"block":"none"}} className={"ml36"} checked={this.state.multi_webssh} onChange={this.SelectTheCommandonChange}>
|
|
|
|
|
多个命令行窗口<span className="color-grey-9">(选中则允许学员同时开启多个命令行窗口)</span>
|
|
|
|
|
</Checkbox>
|
|
|
|
|
</RadioGroup>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="edu-back-white mb10 padding40-20" style={{display:this.props.identity===1?"block":this.state.status===2&&newuse_scope===0||this.state.status===1&&newuse_scope===0?"none":"block"}}>
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">公开程度</p>
|
|
|
|
|
<RadioGroup onChange={this.SelectOpenpublic} value={use_scope}>
|
|
|
|
|
<Radio className="radioStyle" value={0}><span>对所有公开</span> <span className="color-grey-9">(选中则所有已被试用授权的用户可以学习)</span></Radio>
|
|
|
|
|
<Radio className="radioStyle" value={1}><span>对指定单位公开</span> <span className="color-grey-9">(选中则下方指定单位的已被试用授权的用户可以学习)</span></Radio>
|
|
|
|
|
</RadioGroup>
|
|
|
|
|
|
|
|
|
|
<div className="clearfix none" id="unit-all" style={{display: scopetype === false ? 'none' : 'block'}}>
|
|
|
|
|
<div className="fl ml25">
|
|
|
|
|
<div className="fl" id="unit-input-part" style={{width:'100%'}}>
|
|
|
|
|
<div id="person-unit" className="fl pr mr10">
|
|
|
|
|
<div className="shixunScopeInput fl" >
|
|
|
|
|
<Select
|
|
|
|
|
style={{width:'200px'}}
|
|
|
|
|
placeholder="请输入并选择单位名称"
|
|
|
|
|
onChange={(value)=>this.shixunScopeInput(value)}
|
|
|
|
|
onSearch={this.shixunHandleSearch}
|
|
|
|
|
showSearch
|
|
|
|
|
defaultActiveFirstOption={false}
|
|
|
|
|
showArrow={false}
|
|
|
|
|
filterOption={false}
|
|
|
|
|
notFoundContent={null}
|
|
|
|
|
className={scope_partmenttype===true?"bor-red":""}
|
|
|
|
|
// ifd={key}
|
|
|
|
|
>
|
|
|
|
|
{options}
|
|
|
|
|
</Select>
|
|
|
|
|
</div>
|
|
|
|
|
<span className="color-grey-9">(搜索并选中添加单位名称)</span>
|
|
|
|
|
</div>
|
|
|
|
|
{/*<a className="white-btn fl mt1 use_scope-btn newuse_scope-btn"*/}
|
|
|
|
|
{/*onClick={this.adduse_scopeinput}>+*/}
|
|
|
|
|
{/*添加</a>*/}
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div style={{width:'100%'}}>
|
|
|
|
|
<div className="mt20 clearfix" id="task_tag_content">
|
|
|
|
|
{
|
|
|
|
|
scope_partment===undefined?"":scope_partment.map((item,key)=>{
|
|
|
|
|
|
|
|
|
|
return(
|
|
|
|
|
<li className="task_tag_span" key={key}><span>{item}</span>
|
|
|
|
|
<a style={{ color: 'rgba(0,0,0,.25)' }}
|
|
|
|
|
onClick={(key)=>this.deleteScopeInput(key)}
|
|
|
|
|
// style={{display:this.props.status===2&&this.props.identity>1||this.props.status===1&&this.props.identity>1===true?"none":"block"}}
|
|
|
|
|
>
|
|
|
|
|
{this.props.identity===1?"x":this.state.status===2&&scope_partment===scope_partments||this.state.status===1&&scope_partment===scope_partments?"":"×"}
|
|
|
|
|
</a>
|
|
|
|
|
</li>
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
</div>
|
|
|
|
|
{/*{*/}
|
|
|
|
|
{/*scope_partment===undefined?"":scope_partment.map((item,key)=>{*/}
|
|
|
|
|
{/*return(*/}
|
|
|
|
|
{/*<div className="shixunScopeInput fl" key={key}>*/}
|
|
|
|
|
{/*<Input*/}
|
|
|
|
|
{/*style={{width:'200px'}}*/}
|
|
|
|
|
{/*key={key}*/}
|
|
|
|
|
{/*className=""*/}
|
|
|
|
|
{/*suffix={<Icon type="close-circle" onClick={(key)=>this.deleteScopeInput(key)} style={{ color: 'rgba(0,0,0,.25)' }} />}*/}
|
|
|
|
|
{/*value={item}*/}
|
|
|
|
|
{/*/>*/}
|
|
|
|
|
{/*</div>*/}
|
|
|
|
|
|
|
|
|
|
{/*)*/}
|
|
|
|
|
{/*})*/}
|
|
|
|
|
{/*}*/}
|
|
|
|
|
</div>
|
|
|
|
|
<span className={scope_partmenttype===true?"color-orange ml20 fl":"color-orange ml20 fl none"} id="public_unit_notice">
|
|
|
|
|
<i className="fa fa-exclamation-circle mr3"></i>
|
|
|
|
|
请选择需要公开的单位
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="edu-back-white mb10 padding40-20 clearfix">
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">发布信息</p>
|
|
|
|
|
|
|
|
|
|
<div className="clearfix"
|
|
|
|
|
// onMouseLeave={this.bigopens}
|
|
|
|
|
>
|
|
|
|
|
<span className="color-orange fl mr20">*</span>
|
|
|
|
|
<span className="color-grey-6 fl" style={{minWidth: '95px'}}>面向学员:</span>
|
|
|
|
|
|
|
|
|
|
<div className="with15 fl pr ">
|
|
|
|
|
<Select placeholder="请选择学员类别"
|
|
|
|
|
style={{width: 180}}
|
|
|
|
|
value={trainee}
|
|
|
|
|
onChange={this.Selecttrainee}
|
|
|
|
|
// onMouseEnter={this.sbigopenss}
|
|
|
|
|
onSelect={this.sbigopensss}
|
|
|
|
|
// open={opersss}
|
|
|
|
|
>
|
|
|
|
|
<Option value={1}>初级学员</Option>
|
|
|
|
|
<Option value={2}>中级学员</Option>
|
|
|
|
|
<Option value={3}>高级学员</Option>
|
|
|
|
|
<Option value={4}>顶级学员</Option>
|
|
|
|
|
</Select>
|
|
|
|
|
</div>
|
|
|
|
|
<span className="fl ml20 color-grey">实训难易度定位,不限定用户群体</span>
|
|
|
|
|
<div style={{width: ' 57px '}} className="fl ml15">
|
|
|
|
|
<span className={traineetype === true ? "color-orange mt8" : "color-orange mt8 none"}
|
|
|
|
|
id="shixun_name_notice"><i
|
|
|
|
|
className="fa fa-exclamation-circle mr3"></i>必填项</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>复制:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={can_copy === undefined ? false : can_copy} onChange={this.can_copy}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10">(勾选则允许已认证的教师复制该实训)</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>跳关:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={task_pass === undefined ? false : task_pass} onChange={this.task_pass}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10">(勾选则允许学员跳关挑战实训)</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>测试集解锁:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={test_set_permission === undefined ? false : test_set_permission}
|
|
|
|
|
onChange={this.test_set_permission}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10">勾选则允许学员通过金币解锁查看测试集内容</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{!code_hidden && !hide_code && <div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>代码开放修改:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={code_edit_permission === undefined ? false : code_edit_permission}
|
|
|
|
|
onChange={this.code_edit_permission}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10" >勾选则学员可以修改版本库目录中的任意文件内容</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>}
|
|
|
|
|
|
|
|
|
|
<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>隐藏代码窗口:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={hide_code === undefined ? false : hide_code} onChange={this.hide_code}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10">勾选则对学员隐藏代码窗口</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>代码目录隐藏:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={code_hidden === undefined ? false : code_hidden}
|
|
|
|
|
onChange={this.code_hidden}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10" >勾选则对学员隐藏版本库目录</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{ (vnc || webssh == 2) && <div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>私密版本库:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={is_secret_repository === undefined ? false : is_secret_repository}
|
|
|
|
|
onChange={this.is_secret_repository}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10" >勾选则启用私密版本库,学员页面不能查看该版本库目录</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>}
|
|
|
|
|
|
|
|
|
|
<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>禁用复制粘贴:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={forbid_copy === undefined ? false : forbid_copy}
|
|
|
|
|
onChange={this.forbid_copy}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10" >勾选则对学员页面不能使用复制和粘贴功能</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>开启时间:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<DatePicker
|
|
|
|
|
showToday={false}
|
|
|
|
|
showTime={{ format: 'HH:mm' }}
|
|
|
|
|
format="YYYY-MM-DD HH:mm"
|
|
|
|
|
width={178}
|
|
|
|
|
locale={locale}
|
|
|
|
|
disabledTime={disabledDateTime}
|
|
|
|
|
disabledDate={disabledDate}
|
|
|
|
|
placeholder="请选择开启时间"
|
|
|
|
|
value={opening_time===null||opening_time===""?"":moment(opening_time, dateFormat)}
|
|
|
|
|
onChange={this.onChangeTimePicker}
|
|
|
|
|
dropdownClassName="hideDisable"
|
|
|
|
|
/>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10" >(为空,则学员在实训发布后,能随时开启实训挑战;否则,学员在开启时间后,才能开启实训挑战)</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{this.props.identity<3?<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>VNC图形化:</span>
|
|
|
|
|
<span className="fl mt5">
|
|
|
|
|
<Checkbox checked={vnc === undefined ? false : vnc} onChange={this.shixun_vnc}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10" >勾选则给学员的实践任务提供Ubuntu系统图形化实践窗口,否则不提供</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>:""}
|
|
|
|
|
{this.props.identity<3 && vnc ?<div className="clearfix mt20 ml30">
|
|
|
|
|
<span className="color-grey-6 mt5 fl" style={{minWidth: '95px'}}>VNC图形化评测:</span>
|
|
|
|
|
<span className="fl mt5 ml5">
|
|
|
|
|
<Checkbox checked={vnc_evaluate === undefined ? false : vnc_evaluate} onChange={this.shixun_vnc_evaluate}></Checkbox>
|
|
|
|
|
<label style={{top:'6px'}} className="color-grey-9 ml10" >勾选则在学员的VNC图形化页面中,开启评测功能</label>
|
|
|
|
|
</span>
|
|
|
|
|
</div>:""}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
{this.props.identity<3?<div className="edu-back-white padding40-20 mb20">
|
|
|
|
|
<p className="color-grey-6 font-16 mb30">服务配置</p>
|
|
|
|
|
{ shixun_service_configs&&shixun_service_configs.map((item,key)=>{
|
|
|
|
|
|
|
|
|
|
return(
|
|
|
|
|
<div key={key}>
|
|
|
|
|
<div id="5">
|
|
|
|
|
<div className="color-grey-6 font-16 mt30 mb20" id="shixun_scenario_type_name">
|
|
|
|
|
<span className={"fl"}>{item.name}</span>
|
|
|
|
|
{/*<span className={"fr mr40"} onClick={()=>this.Deselectlittle(item.mirror_repository_id)}><i className="fa fa-times-circle color-grey-c font-16 fl"></i></span>*/}
|
|
|
|
|
</div>
|
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
|
<label className="panel-form-label fl">CPU(核):</label>
|
|
|
|
|
<div className="pr fl with80 status_con">
|
|
|
|
|
<input type="text" value={item.cpu_limit} onInput={(e)=>this.setConfigsInputs(e,key,1)}
|
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
|
</div>
|
|
|
|
|
<div className="cl"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
|
<label className="panel-form-label fl">最低CPU(核):</label>
|
|
|
|
|
<div className="pr fl with80 status_con">
|
|
|
|
|
<input type="text" value={item.lower_cpu_limit} onInput={(e)=>this.setConfigsInputs(e,key,2)}
|
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
|
</div>
|
|
|
|
|
<div className="cl"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
|
<label className="panel-form-label fl">内存限制(M):</label>
|
|
|
|
|
<div className="pr fl with80 status_con">
|
|
|
|
|
<input type="text" value={item.memory_limit} onInput={(e)=>this.setConfigsInputs(e,key,3)}
|
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
|
</div>
|
|
|
|
|
<div className="cl"></div>
|
|
|
|
|
</div>
|
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
|
<label className="panel-form-label fl">内存要求(M):</label>
|
|
|
|
|
<div className="pr fl with20 status_con">
|
|
|
|
|
<input type="text" value={item.request_limit} onInput={(e)=>this.setConfigsInputs(e,key,4)}
|
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
|
</div>
|
|
|
|
|
<label className="panel-form-label fl" style={{width: '48%'}}>温馨提示:纯编程类型实训建议使用默认值,对于大数据等建议使用最大内存的30%</label>
|
|
|
|
|
<div className="cl"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
})}
|
|
|
|
|
</div> :""}
|
|
|
|
|
|
|
|
|
|
<p>
|
|
|
|
|
{
|
|
|
|
|
// this.props.identity<4&&this.props.status==0?
|
|
|
|
|
this.props.identity<5?
|
|
|
|
|
<div className="clearfix mt30">
|
|
|
|
|
<a className="defalutSubmitbtn fl mr20"
|
|
|
|
|
onClick={this.submit_edit_shixun}>保存</a>
|
|
|
|
|
<a href={"/shixuns/" + shixunsID + "/challenges"} className="defalutCancelbtn fl">取消</a>
|
|
|
|
|
</div> :""
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
<div className="educontent mt30 mb50">
|
|
|
|
|
<Tabs tabBarExtraContent={operations}>
|
|
|
|
|
<TabPane tab="Tab 1" key="1">
|
|
|
|
|
Content of tab 1
|
|
|
|
|
</TabPane>
|
|
|
|
|
<TabPane tab="Tab 2" key="2">
|
|
|
|
|
Content of tab 2
|
|
|
|
|
</TabPane>
|
|
|
|
|
<TabPane tab="Tab 3" key="3">
|
|
|
|
|
Content of tab 3
|
|
|
|
|
</TabPane>
|
|
|
|
|
</Tabs>
|
|
|
|
|
</div>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|