|
|
@ -62,7 +62,8 @@ class Shixuninformation extends Component {
|
|
|
|
shixunName:this.props.data.shixun.name,
|
|
|
|
shixunName:this.props.data.shixun.name,
|
|
|
|
trainee:this.props.data.shixun.trainee,
|
|
|
|
trainee:this.props.data.shixun.trainee,
|
|
|
|
choice_main_type:this.props.data.shixun.choice_main_type,
|
|
|
|
choice_main_type:this.props.data.shixun.choice_main_type,
|
|
|
|
choice_small_type:this.props.data.shixun.choice_small_type
|
|
|
|
choice_small_type:this.props.data.shixun.choice_small_type,
|
|
|
|
|
|
|
|
choice_standard_scripts:this.props.data.shixun.choice_standard_scripts,
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
this.props.form.setFieldsValue({
|
|
|
|
this.props.form.setFieldsValue({
|
|
|
@ -315,7 +316,7 @@ class Shixuninformation extends Component {
|
|
|
|
let operateauthority=this.props.identity===1?true:this.props.identity<5&&this.props.data.shixun.status==0?true:false;
|
|
|
|
let operateauthority=this.props.identity===1?true:this.props.identity<5&&this.props.data.shixun.status==0?true:false;
|
|
|
|
console.log(operateauthority)
|
|
|
|
console.log(operateauthority)
|
|
|
|
const {getFieldDecorator} = this.props.form;
|
|
|
|
const {getFieldDecorator} = this.props.form;
|
|
|
|
const {newshixunlist, languagewrite, systemenvironment, testcoderunmode, fileList, postapplytitle, postapplyvisible, shixunmemoMDvalue} = this.state;
|
|
|
|
const {newshixunlist, languagewrite, systemenvironment, testcoderunmode, fileList, choice_standard_scripts, postapplyvisible, shixunmemoMDvalue} = this.state;
|
|
|
|
const {shixun_service_configs}=this.props;
|
|
|
|
const {shixun_service_configs}=this.props;
|
|
|
|
const uploadProps = {
|
|
|
|
const uploadProps = {
|
|
|
|
width: 600,
|
|
|
|
width: 600,
|
|
|
@ -366,139 +367,140 @@ class Shixuninformation extends Component {
|
|
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
return (
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<Form>
|
|
|
|
<div className="educontent mb50 edu-back-white padding10-20">
|
|
|
|
<Form.Item
|
|
|
|
<Form>
|
|
|
|
label="名称"
|
|
|
|
<Form.Item
|
|
|
|
style={{"borderBottom": 'none'}}
|
|
|
|
label="名称"
|
|
|
|
className="mt15"
|
|
|
|
style={{"borderBottom": 'none'}}
|
|
|
|
>
|
|
|
|
className="mt15"
|
|
|
|
{getFieldDecorator('name', {
|
|
|
|
>
|
|
|
|
rules: [{
|
|
|
|
{getFieldDecorator('name', {
|
|
|
|
required: true, message: '请输入选题名称',
|
|
|
|
rules: [{
|
|
|
|
}, {
|
|
|
|
required: true, message: '请输入选题名称',
|
|
|
|
max: 60, message: '请输入名称,最大限制60个字符',
|
|
|
|
}, {
|
|
|
|
}, {
|
|
|
|
max: 60, message: '请输入名称,最大限制60个字符',
|
|
|
|
whitespace: true, message: '请勿输入空格'
|
|
|
|
}, {
|
|
|
|
}],
|
|
|
|
whitespace: true, message: '请勿输入空格'
|
|
|
|
})(
|
|
|
|
}],
|
|
|
|
<Input placeholder="请输入名称,最大限制60个字符"
|
|
|
|
})(
|
|
|
|
className={"input-100-45 greyInput"}
|
|
|
|
<Input placeholder="请输入名称,最大限制60个字符"
|
|
|
|
onInput={this.shixunNameInput} autoComplete="off"
|
|
|
|
className={"input-100-45 greyInput"}
|
|
|
|
addonAfter={`${String(!this.state.shixunName ? 0 : this.state.shixunName.length)}/${this.state.NAME_COUNT}`}
|
|
|
|
onInput={this.shixunNameInput} autoComplete="off"
|
|
|
|
className="newViewAfter"/>
|
|
|
|
addonAfter={`${String(!this.state.shixunName ? 0 : this.state.shixunName.length)}/${this.state.NAME_COUNT}`}
|
|
|
|
)}
|
|
|
|
className="newViewAfter"/>
|
|
|
|
</Form.Item>
|
|
|
|
)}
|
|
|
|
|
|
|
|
</Form.Item>
|
|
|
|
<Form.Item
|
|
|
|
|
|
|
|
label="简介"
|
|
|
|
<Form.Item
|
|
|
|
style={{"borderBottom": 'none', 'marginBottom': '0px'}}
|
|
|
|
label="简介"
|
|
|
|
className="chooseDes pr"
|
|
|
|
style={{"borderBottom": 'none', 'marginBottom': '0px'}}
|
|
|
|
>
|
|
|
|
className="chooseDes pr"
|
|
|
|
<TPMMDEditor ref={this.contentMdRef} placeholder="请输入简介" mdID={'courseContentMD'}
|
|
|
|
>
|
|
|
|
refreshTimeout={1500}
|
|
|
|
<TPMMDEditor ref={this.contentMdRef} placeholder="请输入简介" mdID={'courseContentMD'}
|
|
|
|
className="courseMessageMD"
|
|
|
|
refreshTimeout={1500}
|
|
|
|
// initValue={this.state.description === null ? "" : this.state.description}
|
|
|
|
className="courseMessageMD"
|
|
|
|
></TPMMDEditor>
|
|
|
|
// initValue={this.state.description === null ? "" : this.state.description}
|
|
|
|
</Form.Item>
|
|
|
|
></TPMMDEditor>
|
|
|
|
|
|
|
|
</Form.Item>
|
|
|
|
|
|
|
|
|
|
|
|
<Form.Item
|
|
|
|
|
|
|
|
label={"难易度"}
|
|
|
|
<Form.Item
|
|
|
|
style={{"borderBottom": 'none'}}
|
|
|
|
label={"难易度"}
|
|
|
|
className="chooseDes pr"
|
|
|
|
style={{"borderBottom": 'none'}}
|
|
|
|
>
|
|
|
|
className="chooseDes pr"
|
|
|
|
{getFieldDecorator('trainee', {
|
|
|
|
>
|
|
|
|
rules: [{required: true, message: '请选择难易度'}],
|
|
|
|
{getFieldDecorator('trainee', {
|
|
|
|
})(
|
|
|
|
rules: [{required: true, message: '请选择难易度'}],
|
|
|
|
<div className="with15 fl pr">
|
|
|
|
|
|
|
|
<Select placeholder="请选择难易度"
|
|
|
|
|
|
|
|
style={{width: 180}}
|
|
|
|
|
|
|
|
onChange={this.Selectthestudent}
|
|
|
|
|
|
|
|
value={this.state.trainee}
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<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>
|
|
|
|
|
|
|
|
</Form.Item>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Form.Item
|
|
|
|
|
|
|
|
label={"实验环境"}
|
|
|
|
|
|
|
|
style={{"borderBottom": 'none', 'width': '18%', 'float': 'left'}}
|
|
|
|
|
|
|
|
className="chooseDes pr"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{getFieldDecorator('selectleft', {
|
|
|
|
|
|
|
|
rules: [{required: true, message: '请选择主类别'}],
|
|
|
|
|
|
|
|
})(
|
|
|
|
})(
|
|
|
|
<div className="width100 fl mr20">
|
|
|
|
<div className="with15 fl pr">
|
|
|
|
<Select placeholder="请选择主类别" value={this.state.choice_main_type === "" ? undefined : this.state.choice_main_type}
|
|
|
|
<Select placeholder="请选择难易度"
|
|
|
|
style={{width: 180}}
|
|
|
|
style={{width: 180}}
|
|
|
|
onChange={operateauthority?this.bigClass:""}
|
|
|
|
onChange={this.Selectthestudent}
|
|
|
|
optionFilterProp="children"
|
|
|
|
value={this.state.trainee}
|
|
|
|
filterOption={(input, option) =>
|
|
|
|
|
|
|
|
option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
>
|
|
|
|
>
|
|
|
|
|
|
|
|
<Option value={1}>初级</Option>
|
|
|
|
{
|
|
|
|
<Option value={2}>中级</Option>
|
|
|
|
this.props.data === undefined ? "" : this.props.data.shixun.main_type.map((item, key) => {
|
|
|
|
<Option value={3}>中高级</Option>
|
|
|
|
return (
|
|
|
|
<Option value={4}>高级</Option>
|
|
|
|
<Option value={item.id} key={key} >
|
|
|
|
|
|
|
|
<Tooltip placement="right" title={item.description=== ""?"无描述":item.description} >
|
|
|
|
|
|
|
|
{item.type_name}
|
|
|
|
|
|
|
|
</Tooltip>
|
|
|
|
|
|
|
|
</Option>
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
</Select>
|
|
|
|
</Select>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
)}
|
|
|
|
)}
|
|
|
|
</div>
|
|
|
|
<span className="fl ml20 color-grey">(实训的难易程度)</span>
|
|
|
|
</Form.Item>
|
|
|
|
</Form.Item>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Form.Item
|
|
|
|
|
|
|
|
label={"实验环境"}
|
|
|
|
|
|
|
|
style={{"borderBottom": 'none', 'width': '18%', 'float': 'left'}}
|
|
|
|
|
|
|
|
className="chooseDes pr"
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
<div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{getFieldDecorator('selectleft', {
|
|
|
|
|
|
|
|
rules: [{required: true, message: '请选择主类别'}],
|
|
|
|
|
|
|
|
})(
|
|
|
|
|
|
|
|
<div className="width100 fl mr20">
|
|
|
|
|
|
|
|
<Select placeholder="请选择主类别" value={this.state.choice_main_type === "" ? undefined : this.state.choice_main_type}
|
|
|
|
|
|
|
|
style={{width: 180}}
|
|
|
|
|
|
|
|
onChange={operateauthority?this.bigClass:""}
|
|
|
|
|
|
|
|
optionFilterProp="children"
|
|
|
|
|
|
|
|
filterOption={(input, option) =>
|
|
|
|
|
|
|
|
option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
this.props.data === undefined ? "" : this.props.data.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>
|
|
|
|
|
|
|
|
|
|
|
|
<Form.Item
|
|
|
|
</div>
|
|
|
|
style={{"borderBottom": 'none', 'width': '61%', 'float': 'left', 'marginTop': '40px'}}
|
|
|
|
)}
|
|
|
|
className="chooseDes pr"
|
|
|
|
</div>
|
|
|
|
>
|
|
|
|
</Form.Item>
|
|
|
|
<div className=" fl pr mr20">
|
|
|
|
|
|
|
|
{getFieldDecorator('selectright', {
|
|
|
|
|
|
|
|
rules: [{required: true, message: '请选择小类别'}],
|
|
|
|
<Form.Item
|
|
|
|
})(
|
|
|
|
style={{"borderBottom": 'none', 'width': '61%', 'float': 'left', 'marginTop': '40px'}}
|
|
|
|
<div className=" fl pr mr20">
|
|
|
|
className="chooseDes pr"
|
|
|
|
<Select placeholder="请选择小类别"
|
|
|
|
>
|
|
|
|
onChange={this.selectright}
|
|
|
|
<div className=" fl pr mr20">
|
|
|
|
value={this.state.choice_small_type.length===0||this.state.choice_small_type[0]===""||this.state.choice_small_type===[]?undefined:this.state.choice_small_type}
|
|
|
|
{getFieldDecorator('selectright', {
|
|
|
|
style={{width: 180,height:30}}
|
|
|
|
rules: [{required: true, message: '请选择小类别'}],
|
|
|
|
disabled={operateauthority?false:true}
|
|
|
|
})(
|
|
|
|
onDeselect={operateauthority?this.Deselectlittle:""}
|
|
|
|
<div className=" fl pr mr20">
|
|
|
|
onSelect={operateauthority?this.littleClass:""}
|
|
|
|
<Select placeholder="请选择小类别"
|
|
|
|
defaultOpen={false}
|
|
|
|
onChange={this.selectright}
|
|
|
|
>
|
|
|
|
value={this.state.choice_small_type.length===0||this.state.choice_small_type[0]===""||this.state.choice_small_type===[]?undefined:this.state.choice_small_type}
|
|
|
|
{
|
|
|
|
style={{width: 180,height:30}}
|
|
|
|
this.props.data === undefined ? "" : this.props.data.shixun.small_type.map((item, key) => {
|
|
|
|
disabled={operateauthority?false:true}
|
|
|
|
return(
|
|
|
|
onDeselect={operateauthority?this.Deselectlittle:""}
|
|
|
|
<Option value={item.id} key={key}>
|
|
|
|
onSelect={operateauthority?this.littleClass:""}
|
|
|
|
<Tooltip placement="right" title={item.description=== ""?"无描述":item.description} >
|
|
|
|
defaultOpen={false}
|
|
|
|
{item.type_name}
|
|
|
|
>
|
|
|
|
</Tooltip>
|
|
|
|
{
|
|
|
|
</Option>
|
|
|
|
this.props.data === undefined ? "" : this.props.data.shixun.small_type.map((item, key) => {
|
|
|
|
)
|
|
|
|
return(
|
|
|
|
})
|
|
|
|
<Option value={item.id} key={key}>
|
|
|
|
}
|
|
|
|
<Tooltip placement="right" title={item.description=== ""?"无描述":item.description} >
|
|
|
|
</Select>
|
|
|
|
{item.type_name}
|
|
|
|
</div>
|
|
|
|
</Tooltip>
|
|
|
|
)}
|
|
|
|
</Option>
|
|
|
|
<span className="fl ml20 color-grey lineh-20">
|
|
|
|
)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
</Select>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
<span className="fl ml20 color-grey lineh-20">
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<div className={"font-12"}>
|
|
|
|
<div className={"font-12"}>
|
|
|
|
已安装软件:hadoop3.1.0、jdk1.8;
|
|
|
|
已安装软件:hadoop3.1.0、jdk1.8;
|
|
|
@ -508,44 +510,49 @@ class Shixuninformation extends Component {
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</Form.Item>
|
|
|
|
</Form.Item>
|
|
|
|
|
|
|
|
|
|
|
|
<div className={"both"}></div>
|
|
|
|
<div className={"both"}></div>
|
|
|
|
<div className=" color-grey lineh-20 mb20">
|
|
|
|
<div className=" color-grey lineh-20 mb20">
|
|
|
|
没有实验环境?
|
|
|
|
没有实验环境?
|
|
|
|
<a className="color-blue" onClick={this.post_apply}> 申请新建</a>
|
|
|
|
<a className="color-blue" onClick={this.post_apply}> 申请新建</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Form.Item
|
|
|
|
<Form.Item
|
|
|
|
label={"评测脚本"}
|
|
|
|
label={"评测脚本"}
|
|
|
|
style={{"borderBottom": 'none'}}
|
|
|
|
style={{"borderBottom": 'none'}}
|
|
|
|
className="chooseDes pr"
|
|
|
|
className="chooseDes pr"
|
|
|
|
>
|
|
|
|
>
|
|
|
|
{getFieldDecorator('select123', {
|
|
|
|
{getFieldDecorator('select123', {
|
|
|
|
rules: [{required: true, message: '请选择评测脚本'}],
|
|
|
|
rules: [{required: true, message: '请选择评测脚本'}],
|
|
|
|
})(
|
|
|
|
})(
|
|
|
|
<div className="with15 fl pr">
|
|
|
|
<div className="with15 fl pr">
|
|
|
|
<Select placeholder="请选择评测脚本"
|
|
|
|
<Select placeholder="请选择选择脚本"
|
|
|
|
style={{width: 180}}
|
|
|
|
style={{width: 180}}
|
|
|
|
onChange={this.Selectthestudent}
|
|
|
|
className="fl"
|
|
|
|
>
|
|
|
|
disabled={operateauthority?false:true}
|
|
|
|
<Option value={1}>初级</Option>
|
|
|
|
value={choice_standard_scripts === undefined||choice_standard_scripts === null ? undefined :choice_standard_scripts.id===undefined?choice_standard_scripts:choice_standard_scripts.id}
|
|
|
|
<Option value={2}>中级</Option>
|
|
|
|
onChange={operateauthority?this.SelectScput:""}>
|
|
|
|
<Option value={3}>中高级</Option>
|
|
|
|
{
|
|
|
|
<Option value={4}>高级</Option>
|
|
|
|
this.props.data === undefined ? "" : this.props.data.shixun.standard_scripts.map((item, key) => {
|
|
|
|
</Select>
|
|
|
|
return (
|
|
|
|
|
|
|
|
<Option value={parseInt(item.id)} name={item.scptname} key={key}>{item.scptname}</Option>
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
})
|
|
|
|
)}
|
|
|
|
}
|
|
|
|
<span className="fl ml20 color-blue">
|
|
|
|
</Select>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
)}
|
|
|
|
|
|
|
|
<span className="fl ml20 color-blue">
|
|
|
|
使用自定义脚本
|
|
|
|
使用自定义脚本
|
|
|
|
<span className={"color-grey ml10"} onClick={()=>this.testscripttip(0)}>
|
|
|
|
<span className={"color-grey ml10"} onClick={()=>this.testscripttip(0)}>
|
|
|
|
<Icon type="exclamation-circle"/>
|
|
|
|
<Icon type="exclamation-circle"/>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<div className="invite-tip clearfix none " id="test_script_tip"
|
|
|
|
<div className="invite-tip clearfix none " id="test_script_tip"
|
|
|
|
style={{top: '33px', left: '-15px',width: '450px',zIndex: '10',display: this.state.testscripttiptype===true?'block':"none"}}>
|
|
|
|
style={{top: '33px', left: '-15px',width: '450px',zIndex: '10',display: this.state.testscripttiptype===true?'block':"none"}}>
|
|
|
|
<style>
|
|
|
|
<style>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
`
|
|
|
|
`
|
|
|
@ -583,199 +590,179 @@ class Shixuninformation extends Component {
|
|
|
|
</p>
|
|
|
|
</p>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</Form.Item>
|
|
|
|
</Form.Item>
|
|
|
|
|
|
|
|
|
|
|
|
<div className="mt30 clearfix df">
|
|
|
|
<div className="mt30 clearfix df">
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
className={operateauthority === false ? 'nonemodel' : ""}
|
|
|
|
className={operateauthority === false ? 'nonemodel' : ""}
|
|
|
|
></div>
|
|
|
|
></div>
|
|
|
|
<div className="flex1">
|
|
|
|
<div className="flex1">
|
|
|
|
<div className="fl" style={{border: '1px solid #ccc'}}>
|
|
|
|
<div className="fl" style={{border: '1px solid #ccc'}}>
|
|
|
|
<MonacoEditor
|
|
|
|
<MonacoEditor
|
|
|
|
height="450"
|
|
|
|
height="450"
|
|
|
|
width="1150"
|
|
|
|
width="1150"
|
|
|
|
language={this.state.language}
|
|
|
|
language={this.state.language}
|
|
|
|
value={shixunmemoMDvalue}
|
|
|
|
value={shixunmemoMDvalue}
|
|
|
|
options={{
|
|
|
|
options={{
|
|
|
|
selectOnLineNumbers: true
|
|
|
|
selectOnLineNumbers: true
|
|
|
|
}}
|
|
|
|
}}
|
|
|
|
onChange={this.getshixunmemoMDvalue}
|
|
|
|
onChange={this.getshixunmemoMDvalue}
|
|
|
|
// onChange={this.getshixunmemoMDvalue}
|
|
|
|
// onChange={this.getshixunmemoMDvalue}
|
|
|
|
/>
|
|
|
|
/>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</Form>
|
|
|
|
</Form>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span className="ant-form-text mt20" >私密版本库:
|
|
|
|
<span className="ant-form-text mt20" >私密版本库:
|
|
|
|
<Checkbox>(若需要对学员隐藏部分版本库内容时,请选中;选中即启用私密版本库,请将需要对学员隐藏的文件存储在私密版本库)</Checkbox>
|
|
|
|
<Checkbox>(若需要对学员隐藏部分版本库内容时,请选中;选中即启用私密版本库,请将需要对学员隐藏的文件存储在私密版本库)</Checkbox>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
{this.props.identity<3?<div className="edu-back-white padding40-20 mb20">
|
|
|
|
{this.props.identity<3?<div className="edu-back-white padding40-20 mb20">
|
|
|
|
<p className="color-grey-6 font-16 mb30">服务配置</p>
|
|
|
|
<p className="color-grey-6 font-16 mb30">服务配置</p>
|
|
|
|
{ shixun_service_configs&&shixun_service_configs.map((item,key)=>{
|
|
|
|
{ shixun_service_configs&&shixun_service_configs.map((item,key)=>{
|
|
|
|
|
|
|
|
|
|
|
|
return(
|
|
|
|
return(
|
|
|
|
<div key={key}>
|
|
|
|
<div key={key}>
|
|
|
|
<div id="5">
|
|
|
|
<div id="5">
|
|
|
|
<div className="color-grey-6 font-16 mt30 mb20" id="shixun_scenario_type_name">
|
|
|
|
<div className="color-grey-6 font-16 mt30 mb20" id="shixun_scenario_type_name">
|
|
|
|
<span className={"fl"}>{item.name}</span>
|
|
|
|
<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>*/}
|
|
|
|
{/*<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>
|
|
|
|
<div className="cl"></div>
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
</div>
|
|
|
|
<label className="panel-form-label fl">CPU(核):</label>
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
<div className="pr fl with80 status_con">
|
|
|
|
<label className="panel-form-label fl">最低CPU(核):</label>
|
|
|
|
<input type="text" value={item.cpu_limit} onInput={(e)=>this.setConfigsInputs(e,key,1)}
|
|
|
|
<div className="pr fl with80 status_con">
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
<input type="text" value={item.lower_cpu_limit} onInput={(e)=>this.setConfigsInputs(e,key,2)}
|
|
|
|
</div>
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
<div className="cl"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="cl"></div>
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
</div>
|
|
|
|
<label className="panel-form-label fl">最低CPU(核):</label>
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
<div className="pr fl with80 status_con">
|
|
|
|
<label className="panel-form-label fl">内存限制(M):</label>
|
|
|
|
<input type="text" value={item.lower_cpu_limit} onInput={(e)=>this.setConfigsInputs(e,key,2)}
|
|
|
|
<div className="pr fl with80 status_con">
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
<input type="text" value={item.memory_limit} onInput={(e)=>this.setConfigsInputs(e,key,3)}
|
|
|
|
</div>
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
<div className="cl"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div className="cl"></div>
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
</div>
|
|
|
|
<label className="panel-form-label fl">内存限制(M):</label>
|
|
|
|
<div className="clearfix mb5">
|
|
|
|
<div className="pr fl with80 status_con">
|
|
|
|
<label className="panel-form-label fl">内存要求(M):</label>
|
|
|
|
<input type="text" value={item.memory_limit} onInput={(e)=>this.setConfigsInputs(e,key,3)}
|
|
|
|
<div className="pr fl with20 status_con">
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
<input type="text" value={item.request_limit} onInput={(e)=>this.setConfigsInputs(e,key,4)}
|
|
|
|
</div>
|
|
|
|
className="panel-box-sizing task-form-100 task-height-40" placeholder="请输入类别名称" />
|
|
|
|
<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>
|
|
|
|
<label className="panel-form-label fl" style={{width: '48%'}}>温馨提示:纯编程类型实训建议使用默认值,对于大数据等建议使用最大内存的30%</label>
|
|
|
|
|
|
|
|
<div className="cl"></div>
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
})}
|
|
|
|
})}
|
|
|
|
</div> :""}
|
|
|
|
</div> :""}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{postapplyvisible === true ? <style>
|
|
|
|
{postapplyvisible === true ? <style>
|
|
|
|
{
|
|
|
|
{
|
|
|
|
`
|
|
|
|
`
|
|
|
|
body{
|
|
|
|
body{
|
|
|
|
overflow: hidden !important;
|
|
|
|
overflow: hidden !important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
`
|
|
|
|
`
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style> : ""}
|
|
|
|
</style> : ""}
|
|
|
|
|
|
|
|
|
|
|
|
<Modal
|
|
|
|
<Modal
|
|
|
|
keyboard={false}
|
|
|
|
keyboard={false}
|
|
|
|
title="申请新建"
|
|
|
|
title="申请新建"
|
|
|
|
visible={postapplyvisible}
|
|
|
|
visible={postapplyvisible}
|
|
|
|
closable={false}
|
|
|
|
closable={false}
|
|
|
|
footer={null}
|
|
|
|
footer={null}
|
|
|
|
width={850}
|
|
|
|
width={850}
|
|
|
|
heigth={720}
|
|
|
|
heigth={720}
|
|
|
|
>
|
|
|
|
>
|
|
|
|
<div>
|
|
|
|
<div>
|
|
|
|
<li className="clearfix ml82">
|
|
|
|
<li className="clearfix ml82">
|
|
|
|
<label className="fl mt10 "><span
|
|
|
|
<label className="fl mt10 "><span
|
|
|
|
className="color-red fl mt3">*</span>语言: </label>
|
|
|
|
className="color-red fl mt3">*</span>语言: </label>
|
|
|
|
<textarea
|
|
|
|
<textarea
|
|
|
|
className={this.state.languagewritetype === true ? "fl task-form-80 task-height-150 bor-reds" : "fl task-form-80 task-height-150"}
|
|
|
|
className={this.state.languagewritetype === true ? "fl task-form-80 task-height-150 bor-reds" : "fl task-form-80 task-height-150"}
|
|
|
|
style={{width: '89%', height: '100px'}}
|
|
|
|
style={{width: '89%', height: '100px'}}
|
|
|
|
onInput={this.setlanguagewrite}
|
|
|
|
onInput={this.setlanguagewrite}
|
|
|
|
value={languagewrite}
|
|
|
|
value={languagewrite}
|
|
|
|
placeholder="请填写该镜像是基于什么语言:示例:Python"
|
|
|
|
placeholder="请填写该镜像是基于什么语言:示例:Python"
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
<div className={"color-red shixunspanred"}>{this.state.languagewritetype === true ? "请填写该镜像语言" : ""}</div>
|
|
|
|
<div className={"color-red shixunspanred"}>{this.state.languagewritetype === true ? "请填写该镜像语言" : ""}</div>
|
|
|
|
<li className="clearfix ml1">
|
|
|
|
<li className="clearfix ml1">
|
|
|
|
<label className="panel-form-label fl ml50"><span
|
|
|
|
<label className="panel-form-label fl ml50"><span
|
|
|
|
className="color-red fl mt3">*</span>系统环境: </label>
|
|
|
|
className="color-red fl mt3">*</span>系统环境: </label>
|
|
|
|
<textarea
|
|
|
|
<textarea
|
|
|
|
className={this.state.systemenvironmenttype === true ? "fl task-form-80 task-height-150 bor-reds" : "fl task-form-80 task-height-150"}
|
|
|
|
className={this.state.systemenvironmenttype === true ? "fl task-form-80 task-height-150 bor-reds" : "fl task-form-80 task-height-150"}
|
|
|
|
onInput={this.setsystemenvironment}
|
|
|
|
onInput={this.setsystemenvironment}
|
|
|
|
style={{height: '100px'}}
|
|
|
|
style={{height: '100px'}}
|
|
|
|
value={systemenvironment}
|
|
|
|
value={systemenvironment}
|
|
|
|
placeholder="请填写该镜像是基于什么linux系统环境,代码运行环境"
|
|
|
|
placeholder="请填写该镜像是基于什么linux系统环境,代码运行环境"
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
className={"color-red shixunspanred"}>{this.state.systemenvironmenttype === true ? "请填写该镜像语言系统环境" : ""}</div>
|
|
|
|
className={"color-red shixunspanred"}>{this.state.systemenvironmenttype === true ? "请填写该镜像语言系统环境" : ""}</div>
|
|
|
|
<li className="clearfix">
|
|
|
|
<li className="clearfix">
|
|
|
|
<label className="fl mt10"><span
|
|
|
|
<label className="fl mt10"><span
|
|
|
|
className="color-red fl mt3">*</span>测试代码运行方式: </label>
|
|
|
|
className="color-red fl mt3">*</span>测试代码运行方式: </label>
|
|
|
|
|
|
|
|
|
|
|
|
<textarea
|
|
|
|
<textarea
|
|
|
|
className={this.state.testcoderunmodetype === true ? "fl task-form-80 task-height-150 bor-reds" : "fl task-form-80 task-height-150"}
|
|
|
|
className={this.state.testcoderunmodetype === true ? "fl task-form-80 task-height-150 bor-reds" : "fl task-form-80 task-height-150"}
|
|
|
|
onInput={this.settestcoderunmode}
|
|
|
|
onInput={this.settestcoderunmode}
|
|
|
|
value={testcoderunmode}
|
|
|
|
value={testcoderunmode}
|
|
|
|
style={{height: '100px'}}
|
|
|
|
style={{height: '100px'}}
|
|
|
|
placeholder="请填写该镜像中测试代码运行方式"
|
|
|
|
placeholder="请填写该镜像中测试代码运行方式"
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
id="demand_info"></textarea>
|
|
|
|
</li>
|
|
|
|
</li>
|
|
|
|
<div
|
|
|
|
<div
|
|
|
|
className={"color-red shixunspanred"}>{this.state.testcoderunmodetype === true ? "请填写该镜像测试代码运行方式" : ""}</div>
|
|
|
|
className={"color-red shixunspanred"}>{this.state.testcoderunmodetype === true ? "请填写该镜像测试代码运行方式" : ""}</div>
|
|
|
|
<li className="clearfix ml50">
|
|
|
|
<li className="clearfix ml50">
|
|
|
|
<label className="panel-form-label fl mt-5"><span
|
|
|
|
<label className="panel-form-label fl mt-5"><span
|
|
|
|
className="color-red fl">*</span>测试代码: </label>
|
|
|
|
className="color-red fl">*</span>测试代码: </label>
|
|
|
|
<div className="mt10" style={{
|
|
|
|
<div className="mt10" style={{
|
|
|
|
display: "inline-block"
|
|
|
|
display: "inline-block"
|
|
|
|
}}>
|
|
|
|
}}>
|
|
|
|
<Upload {...uploadProps}>
|
|
|
|
<Upload {...uploadProps}>
|
|
|
|
<Icon type="upload" className="fl mt3"> </Icon>
|
|
|
|
<Icon type="upload" className="fl mt3"> </Icon>
|
|
|
|
<span className="color-blue fl cdefault">上传附件</span>
|
|
|
|
<span className="color-blue fl cdefault">上传附件</span>
|
|
|
|
<span className="color-grey-c fl ml10 ">(单个文件50M以内)</span>
|
|
|
|
<span className="color-grey-c fl ml10 ">(单个文件50M以内)</span>
|
|
|
|
|
|
|
|
|
|
|
|
</Upload>
|
|
|
|
</Upload>
|
|
|
|
</div>
|
|
|
|
</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>
|
|
|
|
|
|
|
|
{/*</Form>*/}
|
|
|
|
|
|
|
|
</Modal>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Bottomsubmit url={`/shixuns/${this.props.match.params.shixunId}/challenges`} onSubmits={ this.sendsure_apply}/>
|
|
|
|
|
|
|
|
<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>
|
|
|
|
</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>
|
|
|
|
</div>
|
|
|
|
<div className="task-popup-OK clearfix">
|
|
|
|
{/*</Form>*/}
|
|
|
|
<a className="task-btn task-btn-orange"
|
|
|
|
</Modal>
|
|
|
|
onClick={this.yeshidemodel}>知道啦</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<Bottomsubmit url={`/shixuns/${this.props.match.params.shixunId}/challenges`} onSubmits={ this.sendsure_apply}/>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
</Modal>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|