Merge branch 'dev_item_bank' of http://bdgit.educoder.net/Hjqreturn/educoder into dev_item_bank
commit
60808b21c9
@ -0,0 +1,5 @@
|
||||
class AddErrorTestSetIdForHackUserLastest < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :hack_user_codes, :error_test_set_id, :integer
|
||||
end
|
||||
end
|
After Width: | Height: | Size: 108 KiB |
After Width: | Height: | Size: 148 KiB |
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 362 KiB After Width: | Height: | Size: 374 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,51 @@
|
||||
import React, {Component} from "react";
|
||||
import {Link, NavLink} from 'react-router-dom';
|
||||
import {WordsBtn, ActionBtn,SnackbarHOC,getImageUrl} from 'educoder';
|
||||
import axios from 'axios';
|
||||
import {
|
||||
notification,
|
||||
Spin,
|
||||
Table,
|
||||
Pagination,
|
||||
Radio,
|
||||
Checkbox,
|
||||
Form,
|
||||
Input,
|
||||
Select,
|
||||
Cascader,
|
||||
Col, Row, InputNumber, DatePicker, AutoComplete,Button,Tag
|
||||
} from "antd";
|
||||
import './../questioncss/questioncom.css';
|
||||
import SingleEditor from './../component/SingleEditor';
|
||||
class Choicequestion extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
page:1,
|
||||
Knowpoints:[]
|
||||
}
|
||||
}
|
||||
//初始化
|
||||
componentDidMount(){
|
||||
|
||||
}
|
||||
|
||||
render() {
|
||||
let {page}=this.state;
|
||||
const { getFieldDecorator } = this.props.form;
|
||||
|
||||
return (
|
||||
<div className=" clearfix educontent Contentquestionbankstyle w100s w1200fpx mt19" >
|
||||
<SingleEditor>
|
||||
|
||||
</SingleEditor>
|
||||
</div>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
const Choicequestions = Form.create({ name: 'Choicequestions' })(Choicequestion);
|
||||
export default Choicequestions;
|
@ -0,0 +1,237 @@
|
||||
import React, {Component} from "react";
|
||||
import {Link, NavLink} from 'react-router-dom';
|
||||
import {WordsBtn, ActionBtn,SnackbarHOC,getImageUrl} from 'educoder';
|
||||
import axios from 'axios';
|
||||
import {
|
||||
notification,
|
||||
Spin,
|
||||
Table,
|
||||
Pagination,
|
||||
Tabs,
|
||||
Input,
|
||||
Popover
|
||||
} from "antd";
|
||||
import './../questioncss/questioncom.css';
|
||||
import NoneDatas from '../component/NoneDatas';
|
||||
import LoadingSpin from '../../../common/LoadingSpin';
|
||||
import Contentquestionbank from "./Contentquestionbank";
|
||||
import Listjihe from "./Listjihe";
|
||||
const { TabPane } = Tabs;
|
||||
const Search = Input.Search;
|
||||
class Contentpart extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
page:1,
|
||||
|
||||
}
|
||||
}
|
||||
//初始化
|
||||
componentDidMount(){
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
render() {
|
||||
let {page}=this.state;
|
||||
let {defaultActiveKey}=this.props;
|
||||
const content = (
|
||||
<div className="questiontypes" style={{
|
||||
width:'93px',
|
||||
height:'161px',
|
||||
}}>
|
||||
<p className="questiontype " onClick={()=>this.props.setitem_types("SINGLE")}>单选题</p>
|
||||
<p className="questiontypeheng" ></p>
|
||||
<p className="questiontype " onClick={()=>this.props.setitem_types("MULTIPLE")}>多选题</p>
|
||||
<p className="questiontypeheng"></p>
|
||||
<p className="questiontype " onClick={()=>this.props.setitem_types("JUDGMENT")}>判断题</p>
|
||||
<p className="questiontypeheng"></p>
|
||||
<p className="questiontype " onClick={()=>this.props.setitem_types("PROGRAM")}>编程题</p>
|
||||
<p className="questiontypeheng"></p>
|
||||
|
||||
</div>
|
||||
);
|
||||
const contents = (
|
||||
<div className="questiontypes" style={{
|
||||
width:'93px',
|
||||
height:'120px',
|
||||
}}>
|
||||
<p className="questiontype " onClick={()=>this.props.setdifficulty(1)}>简单</p>
|
||||
<p className="questiontypeheng"></p>
|
||||
<p className="questiontype " onClick={()=>this.props.setdifficulty(2)}>适中</p>
|
||||
<p className="questiontypeheng"></p>
|
||||
<p className="questiontype " onClick={()=>this.props.setdifficulty(3)}>困难</p>
|
||||
<p className="questiontypeheng"></p>
|
||||
</div>
|
||||
);
|
||||
|
||||
const buttonWidth = 70;
|
||||
//console.log("Contentpart");
|
||||
//console.log(this.props);
|
||||
return (
|
||||
<div className=" clearfix mt40">
|
||||
<div className="educontent mt10 pb20 w1200s">
|
||||
<div className="w1200ms contentparttit" style={{
|
||||
position: "relative",
|
||||
}}>
|
||||
<style>
|
||||
{
|
||||
`
|
||||
.contentparttit .ant-tabs-nav .ant-tabs-tab{
|
||||
margin: 10px 10px 10px 0 !important;
|
||||
}
|
||||
.contentparttit .ant-tabs-nav .ant-tabs-ink-bar{
|
||||
width: 31px !important;
|
||||
left: 14px;
|
||||
}
|
||||
`
|
||||
}
|
||||
</style>
|
||||
<Tabs defaultActiveKey={defaultActiveKey} onChange={(e)=>this.props.callback(e)}>
|
||||
<TabPane tab="公共" key="1">
|
||||
</TabPane>
|
||||
<TabPane tab="我的" key="0">
|
||||
</TabPane>
|
||||
</Tabs>
|
||||
|
||||
<div className=" mt19" style={{
|
||||
position:"absolute",
|
||||
top: "0px",
|
||||
right:" 0px",
|
||||
paddingRight: "20px",
|
||||
}}>
|
||||
<style>
|
||||
{
|
||||
`
|
||||
.xaxisreverseorder .ant-input-group-addon{
|
||||
width: 60px !important;
|
||||
|
||||
}
|
||||
|
||||
.xaxisreverseorder .ant-input-lg {
|
||||
height: 41px;}
|
||||
|
||||
.xaxisreverseorder .ant-popover{
|
||||
top: 348px !important;
|
||||
}
|
||||
|
||||
|
||||
.ant-popover-inner-content {
|
||||
padding:0px !important;
|
||||
}
|
||||
|
||||
`
|
||||
}
|
||||
</style>
|
||||
<div className="xaxisreverseorder">
|
||||
{
|
||||
defaultActiveKey===0||defaultActiveKey==="0"?
|
||||
<a href={'/question/newitem'}>
|
||||
<div className="newbutoon">
|
||||
<p className="newbutoontes" >新增</p>
|
||||
</div>
|
||||
</a>
|
||||
:""
|
||||
}
|
||||
<Popover placement="bottom" content={contents} trigger="click" visible={this.props.visiblemys} onVisibleChange={()=>this.props.handleVisibleChange(true)}>
|
||||
<div className=" sortinxdirection mr10">
|
||||
|
||||
<div className="subjecttit">
|
||||
难度
|
||||
</div>
|
||||
<i className="iconfont icon-sanjiaoxing-down font-12 lg ml7 icondowncolor"></i>
|
||||
</div>
|
||||
</Popover>
|
||||
|
||||
|
||||
|
||||
<Popover placement="bottom" content={content} trigger="click" visible={this.props.visiblemyss} onVisibleChange={()=>this.props.handleVisibleChanges(true)}>
|
||||
<div className="sortinxdirection mr40">
|
||||
<div className="subjecttit">
|
||||
题型
|
||||
</div>
|
||||
<i className="iconfont icon-sanjiaoxing-down font-12 lg ml7 icondowncolor"></i>
|
||||
</div>
|
||||
</Popover>
|
||||
<Search
|
||||
style={{ width: "347px",marginRight:"60px",}}
|
||||
placeholder="请输入题目名称、内容"
|
||||
enterButton
|
||||
size="large"
|
||||
onInput={(e)=>this.props.setdatafunsval(e)}
|
||||
onSearch={ (value)=>this.props.setdatafuns(value)} />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{/*内容*/}
|
||||
{
|
||||
this.props.Contentdata.items === undefined ||this.props.Contentdata.items === null||this.props.Contentdata.items.length===0 ?
|
||||
<div className=" w100s mb10"></div>
|
||||
:
|
||||
<div className=" w100s mb10">
|
||||
{
|
||||
defaultActiveKey===1||defaultActiveKey==="1"?
|
||||
<Contentquestionbank {...this.props} {...this.state} selectallquestionsonthispage={()=>this.props.selectallquestionsonthispage()}></Contentquestionbank>
|
||||
:""
|
||||
}
|
||||
{
|
||||
defaultActiveKey===0||defaultActiveKey==="0"?
|
||||
<Contentquestionbank {...this.props} {...this.state} selectallquestionsonthispage={()=>this.props.selectallquestionsonthispage()}></Contentquestionbank>
|
||||
:""
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
<div className="minheight">
|
||||
{/*列表集合*/}
|
||||
<div className=" w100s">
|
||||
{
|
||||
this.props.booljupyterurls===true?
|
||||
<LoadingSpin></LoadingSpin>
|
||||
:
|
||||
this.props.Contentdata.items === undefined ||this.props.Contentdata.items === null||this.props.Contentdata.items.length===0?
|
||||
<NoneDatas></NoneDatas>
|
||||
|
||||
|
||||
: this.props.Contentdata.items.map((object, index) => {
|
||||
return (
|
||||
<Listjihe {...this.state} {...this.props} items={object}
|
||||
getitem_basketss={(id)=>this.props.getitem_basketss(id)}
|
||||
getitem_baskets={(e)=>this.props.getitem_baskets(e)}
|
||||
showmodels={(e)=>this.props.showmodels(e)}
|
||||
showmodelysl={(e)=>this.props.showmodelysl(e)}>
|
||||
|
||||
</Listjihe>
|
||||
)
|
||||
})}
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
export default Contentpart
|
@ -0,0 +1,70 @@
|
||||
import React, {Component} from "react";
|
||||
import {Link, NavLink} from 'react-router-dom';
|
||||
import {WordsBtn, ActionBtn,SnackbarHOC,getImageUrl} from 'educoder';
|
||||
import axios from 'axios';
|
||||
import {
|
||||
notification,
|
||||
Spin,
|
||||
Table,
|
||||
Pagination,
|
||||
Radio,
|
||||
Checkbox
|
||||
} from "antd";
|
||||
import './../questioncss/questioncom.css';
|
||||
class Contentquestionbank extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
page:1,
|
||||
}
|
||||
}
|
||||
//初始化
|
||||
componentDidMount(){
|
||||
////console.log("componentDidMount");
|
||||
////console.log(this.state);
|
||||
////console.log(this.props);
|
||||
// let homeworkid = this.props.match.params.homeworkid;
|
||||
// let url = "/homework_commons/" + homeworkid + "/end_groups.json";
|
||||
// axios.get(url).then((response) => {
|
||||
// if (response.status === 200) {
|
||||
// this.setState({})
|
||||
// }
|
||||
// }).catch((error) => {
|
||||
// ////console.log(error)
|
||||
// });
|
||||
|
||||
}
|
||||
onChange=(e)=> {
|
||||
////console.log(`checked = ${e.target.checked}`);
|
||||
}
|
||||
|
||||
render() {
|
||||
let {page}=this.state;
|
||||
|
||||
return (
|
||||
|
||||
<div className=" clearfix mt5 Contentquestionbankstyle">
|
||||
<div className="educontent mt10 w100s">
|
||||
<div className="sortinxdirection w100s" >
|
||||
<div className="sortinxdirection w50s">
|
||||
<Checkbox onChange={()=>this.props.selectallquestionsonthispage()}></Checkbox>
|
||||
<p className="setequesbank ml20">选用本页全部试题</p>
|
||||
</div>
|
||||
<div className="xaxisreverseorder testpaper w50s">
|
||||
共{this.props.items_count?this.props.items_count:0}个试题
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
export default Contentquestionbank ;
|
@ -0,0 +1,604 @@
|
||||
import React, {Component} from "react";
|
||||
import {Link, NavLink} from 'react-router-dom';
|
||||
import {WordsBtn, ActionBtn, SnackbarHOC, getImageUrl} from 'educoder';
|
||||
import axios from 'axios';
|
||||
import {
|
||||
notification,
|
||||
Spin,
|
||||
Table,
|
||||
Pagination,
|
||||
Radio,
|
||||
Checkbox,
|
||||
Form,
|
||||
Input,
|
||||
Select,
|
||||
Cascader,
|
||||
Col, Row, InputNumber, DatePicker, AutoComplete, Button, Tag
|
||||
} from "antd";
|
||||
import './../questioncss/questioncom.css';
|
||||
|
||||
const InputGroup = Input.Group;
|
||||
const {Option} = Select;
|
||||
const options = [
|
||||
{
|
||||
value: '方向',
|
||||
label: '方向',
|
||||
children: [
|
||||
{
|
||||
value: '课程',
|
||||
label: '课程',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
value: 'jiangsu',
|
||||
label: 'Jiangsu',
|
||||
children: [
|
||||
{
|
||||
value: 'nanjing',
|
||||
label: 'Nanjing',
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
class Itembankstop extends Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.contentMdRef = React.createRef()
|
||||
this.state = {
|
||||
page: 1,
|
||||
Knowpoints: [],
|
||||
rbtx: undefined,
|
||||
rbkc: undefined,
|
||||
knowledgepoints: [],
|
||||
options: [],
|
||||
}
|
||||
}
|
||||
|
||||
//初始化
|
||||
componentDidMount() {
|
||||
try {
|
||||
this.props.getcontentMdRef(this);
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
this.setState({
|
||||
options: this.props.disciplmy
|
||||
})
|
||||
// knowledgepoints:this.props.knowledgepoints,
|
||||
|
||||
////console.log("componentDidMount");
|
||||
////console.log(this.state);
|
||||
////console.log(this.props);
|
||||
// let homeworkid = this.props.match.params.homeworkid;
|
||||
// let url = "/homework_commons/" + homeworkid + "/end_groups.json";
|
||||
// axios.get(url).then((response) => {
|
||||
// if (response.status === 200) {
|
||||
// this.setState({})
|
||||
// }
|
||||
// }).catch((error) => {
|
||||
// ////console.log(error)
|
||||
// });()
|
||||
// 题型
|
||||
|
||||
|
||||
}
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
|
||||
if (prevProps.item_banksedit !== this.props.item_banksedit) {
|
||||
if (this.props.item_banksedit.item_type) {
|
||||
this.handleFormtixing(this.props.item_banksedit.item_type);
|
||||
}
|
||||
if (this.props.item_banksedit.difficulty) {
|
||||
this.handleFormLayoutChange(this.props.item_banksedit.difficulty);
|
||||
}
|
||||
if (this.props.item_banksedit.tag_disciplines) {
|
||||
this.handletag_disciplinesChange(this.props.item_banksedit.tag_disciplines);
|
||||
}
|
||||
|
||||
if (this.props.item_banksedit.discipline &&this.props.item_banksedit.sub_discipline) {
|
||||
this.handdisciplinesChange(this.props.item_banksedit.discipline,this.props.item_banksedit.sub_discipline);
|
||||
}
|
||||
}
|
||||
if (prevProps.disciplmy !== this.props.disciplmy) {
|
||||
this.setState({
|
||||
options: this.props.disciplmy
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
handdisciplinesChange =(name,title)=>{
|
||||
this.setState({
|
||||
rbkc:[name.id,title.id]
|
||||
})
|
||||
this.props.form.setFieldsValue({
|
||||
rbkc: [name.id,title.id],
|
||||
});
|
||||
|
||||
if(this.props.item_banksedit.tag_disciplines.length===0){
|
||||
const didata = this.props.disciplinesdata;
|
||||
const knowledgepointsdata = [];
|
||||
|
||||
for (var i = 0; i < didata.length; i++) {
|
||||
//方向
|
||||
if (name.id === didata[i].id) {
|
||||
const fxdidata = didata[i].sub_disciplines;
|
||||
for (var j = 0; j < fxdidata.length; j++) {
|
||||
//课程
|
||||
if (title.id === fxdidata[j].id) {
|
||||
const zsddata = fxdidata[j].tag_disciplines;
|
||||
for (var k = 0; k < zsddata.length; k++) {
|
||||
//知识点
|
||||
knowledgepointsdata.push(zsddata[k]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
this.setState({
|
||||
Knowpoints: [],
|
||||
knowledgepoints: knowledgepointsdata,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
handletag_disciplinesChange = (data) => {
|
||||
try {
|
||||
var sju=data[data.length-1].name;
|
||||
this.setState({
|
||||
rbzsd:sju,
|
||||
Knowpoints:data,
|
||||
})
|
||||
this.props.form.setFieldsValue({
|
||||
rbzsd: sju,
|
||||
});
|
||||
}catch (e) {
|
||||
|
||||
}
|
||||
}
|
||||
onChange = (e) => {
|
||||
|
||||
}
|
||||
Getdatas = () => {
|
||||
return this.handleSubmits();
|
||||
}
|
||||
handleSubmits = () => {
|
||||
var data = [];
|
||||
this.props.form.validateFields((err, values) => {
|
||||
data = []
|
||||
if (!err) {
|
||||
// ////console.log("获取的form 数据");
|
||||
// ////console.log(values);
|
||||
data.push({
|
||||
rbnd: parseInt(values.rbnd)
|
||||
})
|
||||
data.push({
|
||||
rbtx: values.rbtx
|
||||
})
|
||||
data.push({
|
||||
rbzsd: this.state.Knowpoints
|
||||
})
|
||||
data.push({
|
||||
rbkc: values.rbkc
|
||||
})
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
return data;
|
||||
|
||||
}
|
||||
handleSubmit = (e) => {
|
||||
e.preventDefault();
|
||||
this.props.form.validateFields((err, values) => {
|
||||
if (!err) {
|
||||
////console.log("获取的form 数据");
|
||||
////console.log(values);
|
||||
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
handleFormLayoutChange = (value) => {
|
||||
//难度塞选
|
||||
////console.log("难度塞选");
|
||||
////console.log(value);
|
||||
this.props.form.setFieldsValue({
|
||||
rbnd: value + "",
|
||||
});
|
||||
this.setState({
|
||||
rbnd: value + "",
|
||||
})
|
||||
|
||||
}
|
||||
handleFormkechen = (value) => {
|
||||
//课程
|
||||
////console.log("课程");
|
||||
////console.log(value);
|
||||
var valuename = undefined;
|
||||
this.props.form.setFieldsValue({
|
||||
rbzsd: value,
|
||||
});
|
||||
|
||||
var arr = this.state.knowledgepoints;
|
||||
for (let data of arr) {
|
||||
if (data.id === value) {
|
||||
this.state.Knowpoints.push(data);
|
||||
valuename = data.name;
|
||||
}
|
||||
}
|
||||
|
||||
var tmp = JSON.parse(JSON.stringify(this.state.knowledgepoints));
|
||||
for (var i = 0; i < tmp.length; i++) {
|
||||
if (tmp[i].id === value) {
|
||||
this.state.knowledgepoints.splice(i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
this.setState({
|
||||
rbzsd: valuename,
|
||||
Knowpoints: this.state.Knowpoints,
|
||||
knowledgepoints: this.state.knowledgepoints,
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
handleFormzhishidian = (value) => {
|
||||
console.log("handleFormzhishidian 课程");
|
||||
console.log(value);
|
||||
|
||||
//课程
|
||||
this.props.form.setFieldsValue({
|
||||
rbkc: value,
|
||||
});
|
||||
this.setState({
|
||||
rbkc:value,
|
||||
})
|
||||
// console.log("handleFormzhishidian");
|
||||
// console.log(this.props.disciplinesdata);
|
||||
|
||||
const didata = this.props.disciplinesdata;
|
||||
const knowledgepointsdata = [];
|
||||
|
||||
for (var i = 0; i < didata.length; i++) {
|
||||
//方向
|
||||
if (value[0] === didata[i].id) {
|
||||
const fxdidata = didata[i].sub_disciplines;
|
||||
for (var j = 0; j < fxdidata.length; j++) {
|
||||
//课程
|
||||
if (value[1] === fxdidata[j].id) {
|
||||
const zsddata = fxdidata[j].tag_disciplines;
|
||||
for (var k = 0; k < zsddata.length; k++) {
|
||||
//知识点
|
||||
knowledgepointsdata.push(zsddata[k]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
this.setState({
|
||||
Knowpoints: [],
|
||||
knowledgepoints: knowledgepointsdata,
|
||||
})
|
||||
|
||||
this.props.form.setFieldsValue({
|
||||
rbzsd: undefined,
|
||||
});
|
||||
this.setState({
|
||||
rbzsd: undefined,
|
||||
})
|
||||
}
|
||||
|
||||
handleFormtixing = (value) => {
|
||||
//题型
|
||||
//console.log("题型");
|
||||
//console.log(value);
|
||||
this.setState({
|
||||
rbtx: value + "",
|
||||
})
|
||||
this.props.form.setFieldsValue({
|
||||
rbtx: value + "",
|
||||
});
|
||||
this.props.setitem_type(value);
|
||||
}
|
||||
preventDefault = (e) => {
|
||||
e.preventDefault();
|
||||
////console.log('Clicked! But prevent default.');
|
||||
}
|
||||
deletesobject = (item, index) => {
|
||||
var arr = this.state.Knowpoints;
|
||||
for (let data of arr) {
|
||||
if (data.id === item.id) {
|
||||
this.state.knowledgepoints.push(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var tmp = JSON.parse(JSON.stringify(this.state.Knowpoints));
|
||||
for (var i = 0; i < tmp.length; i++) {
|
||||
if (i >= index) {
|
||||
var pos = this.state.Knowpoints.indexOf(tmp[i]);
|
||||
this.state.Knowpoints.splice(pos, 1);
|
||||
}
|
||||
}
|
||||
|
||||
this.props.form.setFieldsValue({
|
||||
rbzsd: this.state.Knowpoints,
|
||||
});
|
||||
|
||||
|
||||
this.setState({
|
||||
Knowpoints: this.state.Knowpoints,
|
||||
})
|
||||
|
||||
if (this.state.Knowpoints.length === 0) {
|
||||
this.setState({
|
||||
rbzsd: undefined,
|
||||
})
|
||||
} else if (this.state.Knowpoints.length > 0) {
|
||||
try {
|
||||
const myknowda = this.state.Knowpoints;
|
||||
this.setState({
|
||||
rbzsd: myknowda[this.state.Knowpoints.length - 1].name,
|
||||
})
|
||||
} catch (e) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
let {page, options} = this.state;
|
||||
const {getFieldDecorator} = this.props.form;
|
||||
//console.log("renderrenderrender");
|
||||
//console.log(this.props.item_banksedit);
|
||||
//console.log("renderrenderrendersssss");
|
||||
//console.log(this.state.rbtx);
|
||||
return (
|
||||
|
||||
<div className=" clearfix educontent Contentquestionbankstyle w100s w1200fpx mt19">
|
||||
<style>
|
||||
{
|
||||
`
|
||||
.ant-form-item{
|
||||
margin-bottom: 0px !important;
|
||||
|
||||
|
||||
}
|
||||
.ant-form-explain{
|
||||
padding-left:0px !important;
|
||||
margin-top: 3px !important;
|
||||
}
|
||||
.ant-select-selection{
|
||||
height: 33px !important;
|
||||
}
|
||||
.ant-input-group{
|
||||
width:258px !important;
|
||||
}
|
||||
.ant-input {
|
||||
height: 33px !important;
|
||||
}
|
||||
|
||||
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within {
|
||||
outline: 0px solid rgba(24, 144, 255, 0.06) !important;
|
||||
}
|
||||
|
||||
`
|
||||
}
|
||||
</style>
|
||||
<div className="h12"></div>
|
||||
|
||||
<Form.Item
|
||||
label="课程"
|
||||
>
|
||||
{getFieldDecorator("rbkc",
|
||||
{
|
||||
rules: [{required: true, message: '请选择课程'}],
|
||||
}
|
||||
)(
|
||||
<div className="sortinxdirection">
|
||||
<InputGroup compact>
|
||||
<Cascader style={{width: '258px'}} value={this.state.rbkc} options={options} onChange={this.handleFormzhishidian}
|
||||
placeholder="请选择..."/>
|
||||
</InputGroup>
|
||||
|
||||
|
||||
{/*<div className="sortinxdirection" style={{*/}
|
||||
{/* height: "33px",*/}
|
||||
{/* lineHeight: "28px",*/}
|
||||
|
||||
{/*}}>*/}
|
||||
|
||||
{/* {this.state.Knowpoints === undefined ? "" : this.state.Knowpoints.map((object, index) => {*/}
|
||||
{/* return (*/}
|
||||
{/* <div className="mytags" style={{*/}
|
||||
{/* position: "relative",*/}
|
||||
{/* }}>*/}
|
||||
{/* <p className="w100s stestcen lh32">{object}</p>*/}
|
||||
{/* <i className="iconfont icon-roundclose font-25 lg ml7 icondowncolorss" onClick={()=>this.deletesobject(object,index)}></i>*/}
|
||||
{/* </div>*/}
|
||||
{/* )*/}
|
||||
{/* })}*/}
|
||||
|
||||
{/*</div>*/}
|
||||
</div>
|
||||
)}
|
||||
</Form.Item>
|
||||
<Form onSubmit={this.handleSubmit}>
|
||||
<Form.Item
|
||||
label="知识点"
|
||||
>
|
||||
{getFieldDecorator("rbzsd"
|
||||
)(
|
||||
<div className="sortinxdirection">
|
||||
<InputGroup compact>
|
||||
<Select style={{width: '258px'}} value={this.state.rbzsd} onChange={this.handleFormkechen}
|
||||
placeholder="请选择...">
|
||||
{this.state.knowledgepoints && this.state.knowledgepoints.map((object, index) => {
|
||||
return (
|
||||
<Option value={object.id}>{object.name}</Option>
|
||||
)
|
||||
})}
|
||||
</Select>
|
||||
</InputGroup>
|
||||
<div className="sortinxdirection" style={{
|
||||
height: "33px",
|
||||
lineHeight: "28px",
|
||||
|
||||
}}>
|
||||
|
||||
{this.state.Knowpoints === undefined ? "" : this.state.Knowpoints.map((object, index) => {
|
||||
return (
|
||||
<div className="mytags" style={{
|
||||
position: "relative",
|
||||
}}>
|
||||
<p className="w100s stestcen lh32">{object.name}</p>
|
||||
<i className="iconfont icon-roundclose font-25 lg ml7 icondowncolorss"
|
||||
onClick={() => this.deletesobject(object, index)}></i>
|
||||
</div>
|
||||
)
|
||||
})}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</Form.Item>
|
||||
|
||||
<Form.Item
|
||||
label="题型"
|
||||
>
|
||||
{getFieldDecorator("rbtx",
|
||||
{
|
||||
rules: [{required: true, message: '请选择题型'}],
|
||||
}
|
||||
)(
|
||||
<InputGroup compact>
|
||||
<Select style={{width: '258px'}} value={this.state.rbtx} onChange={this.handleFormtixing}
|
||||
placeholder="请选择...">
|
||||
<Option value="SINGLE">单选题</Option>
|
||||
<Option value="MULTIPLE">多选题</Option>
|
||||
<Option value="JUDGMENT">判断题</Option>
|
||||
<Option value="PROGRAM">编程题</Option>
|
||||
</Select>
|
||||
</InputGroup>
|
||||
)}
|
||||
</Form.Item>
|
||||
|
||||
|
||||
<style>
|
||||
{
|
||||
`
|
||||
.rbndclass .ant-radio-button-wrapper{
|
||||
width:106px !important;
|
||||
height:33px !important;
|
||||
background:#EEEEEE;
|
||||
border-radius:17px !important;
|
||||
color:#333333;
|
||||
text-align: center !important;
|
||||
border:0px !important;
|
||||
margin-right: 27px !important;
|
||||
margin-top: 6px !important;
|
||||
|
||||
}
|
||||
.rbndclass .ant-radio-button-wrapper-checked {
|
||||
width: 106px !important;
|
||||
height: 33px !important;
|
||||
background: #4CACFF !important;
|
||||
border-radius: 17px !important;
|
||||
text-align: center !important;
|
||||
border:0px !important;
|
||||
color: #ffffff !important;
|
||||
margin-right: 27px !important;
|
||||
margin-top: 6px!important;
|
||||
|
||||
}
|
||||
.rbndclass .ant-radio-button-wrapper:not(:first-child)::before{
|
||||
border:0px !important;
|
||||
width:0px !important;
|
||||
}
|
||||
|
||||
.rbndclass .ant-radio-button-wrapper{
|
||||
border:0px !important;
|
||||
}
|
||||
.rbndclass .ant-radio-group{
|
||||
border:0px !important;
|
||||
}
|
||||
.rbndclass .ant-radio-group label{
|
||||
border:0px !important;
|
||||
}
|
||||
|
||||
.rbndclass .ant-radio-group span{
|
||||
border:0px !important;
|
||||
}
|
||||
|
||||
ant-radio-button-wrapper:focus-within {
|
||||
outline: 0px solid #ffffff;
|
||||
}
|
||||
|
||||
`
|
||||
}
|
||||
</style>
|
||||
<div className="rbndclass">
|
||||
<Form.Item label="难度">
|
||||
{getFieldDecorator('rbnd',
|
||||
{
|
||||
rules: [{required: true, message: '请选择难度'}],
|
||||
}
|
||||
)(
|
||||
<Radio.Group value={this.state.rbnd} onChange={this.handleFormLayoutChange}>
|
||||
<Radio.Button value="1">简单</Radio.Button>
|
||||
<Radio.Button value="2">适中</Radio.Button>
|
||||
<Radio.Button value="3">困难</Radio.Button>
|
||||
</Radio.Group>,
|
||||
)}
|
||||
</Form.Item>
|
||||
</div>
|
||||
{/*<Form.Item>*/}
|
||||
{/* <Button type="primary" htmlType="submit" className="login-form-button">*/}
|
||||
{/* 提交*/}
|
||||
{/* </Button>*/}
|
||||
{/*</Form.Item>*/}
|
||||
|
||||
</Form>
|
||||
<div className="h20"></div>
|
||||
</div>
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const Itembankstops = Form.create({name: 'Itembankstops'})(Itembankstop);
|
||||
export default Itembankstops;
|
@ -0,0 +1,37 @@
|
||||
import React, { Component } from 'react';
|
||||
import { getImageUrl , getUrl } from 'educoder';
|
||||
|
||||
class NoneData extends Component{
|
||||
constructor(props) {
|
||||
super(props)
|
||||
}
|
||||
render(){
|
||||
const { style } = this.props;
|
||||
return(
|
||||
<div className="edu-tab-con-box clearfix edu-txt-center intermediatecenter" style={ style || { width:"100%",height:"100%"}}>
|
||||
<style>
|
||||
{`
|
||||
.edu-tab-con-box{
|
||||
padding:100px 0px;
|
||||
}
|
||||
.ant-modal-body .edu-tab-con-box{
|
||||
padding:0px!important;
|
||||
}
|
||||
img.edu-nodata-img{
|
||||
margin: 40px auto 20px;
|
||||
}
|
||||
.zenwuxgsj{
|
||||
font-size:17px;
|
||||
font-family:MicrosoftYaHei;
|
||||
color:rgba(136,136,136,1);
|
||||
}
|
||||
`}
|
||||
</style>
|
||||
<img className="edu-nodata-img mb20" src={getUrl("/images/educoder/nodata.png")}/>
|
||||
<p className="edu-nodata-p mb10 zenwuxgsj">暂无相关数据</p>
|
||||
<p className="edu-nodata-p mb20 mt4 zenwuxgsj">请选择试题进行组卷</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
export default NoneData;
|
@ -0,0 +1,36 @@
|
||||
import React, { Component } from 'react';
|
||||
import { getImageUrl , getUrl } from 'educoder';
|
||||
|
||||
class NoneDatas extends Component{
|
||||
constructor(props) {
|
||||
super(props)
|
||||
}
|
||||
render(){
|
||||
const { style } = this.props;
|
||||
return(
|
||||
<div className="edu-tab-con-box clearfix edu-txt-center intermediatecenter" style={ style || { width:"100%",height:"100%"}}>
|
||||
<style>
|
||||
{`
|
||||
.edu-tab-con-box{
|
||||
padding:100px 0px;
|
||||
}
|
||||
.ant-modal-body .edu-tab-con-box{
|
||||
padding:0px!important;
|
||||
}
|
||||
img.edu-nodata-img{
|
||||
margin: 40px auto 20px;
|
||||
}
|
||||
.zenwuxgsj{
|
||||
font-size:17px;
|
||||
font-family:MicrosoftYaHei;
|
||||
color:rgba(136,136,136,1);
|
||||
}
|
||||
`}
|
||||
</style>
|
||||
<img className="edu-nodata-img mb20" src={getUrl("/images/educoder/nodata.png")}/>
|
||||
<p className="edu-nodata-p mb10 zenwuxgsj">暂无相关数据</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
export default NoneDatas;
|
@ -0,0 +1,43 @@
|
||||
import React, { Component } from 'react';
|
||||
import {getImageUrl} from 'educoder';
|
||||
import { Modal} from 'antd';
|
||||
import axios from 'axios';
|
||||
import './../questioncss/questioncom.css'
|
||||
//立即申请试用
|
||||
class QuestionModal extends Component {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state={
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
|
||||
return(
|
||||
<Modal
|
||||
keyboard={false}
|
||||
closable={false}
|
||||
footer={null}
|
||||
destroyOnClose={true}
|
||||
title="提示"
|
||||
centered={true}
|
||||
visible={this.props.modalsType===undefined?false:this.props.modalsType}
|
||||
width="442px"
|
||||
>
|
||||
<div className="educouddiv">
|
||||
<div className={"tabeltext-alignleft mt10"}><p className="titiles">{this.props.titilesm}</p></div>
|
||||
<div className={"tabeltext-alignleft mt10"}><p className="titiles">{this.props.titiless}</p></div>
|
||||
<div className="clearfix mt30 edu-txt-center">
|
||||
<a className="task-btn mr30 w80" onClick={()=>this.props.modalCancel()}>取消</a>
|
||||
<a className="task-btn task-btn-orange w80" onClick={()=>this.props.setDownload()}>确定</a>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export default QuestionModal;
|
@ -0,0 +1,66 @@
|
||||
import React, { Component } from 'react';
|
||||
import {getImageUrl} from 'educoder';
|
||||
import { Modal} from 'antd';
|
||||
import axios from 'axios';
|
||||
import './../questioncss/questioncom.css'
|
||||
//立即申请试用
|
||||
class QuestionModals extends Component {
|
||||
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state={
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
|
||||
return(
|
||||
<Modal
|
||||
keyboard={false}
|
||||
closable={false}
|
||||
footer={null}
|
||||
destroyOnClose={true}
|
||||
title="提示"
|
||||
centered={true}
|
||||
visible={this.props.modalsTypes===undefined?false:this.props.modalsTypes}
|
||||
width="442px"
|
||||
>
|
||||
<div className="educouddiv">
|
||||
<div className={"tabeltext-alignleft mt10"}><p className="titiles">是否删除试题栏中{
|
||||
|
||||
this.props.titilesms&&this.props.titilesms==="SINGLE"?
|
||||
"单选题"
|
||||
:
|
||||
this.props.titilesms&&this.props.titilesms==="MULTIPLE"?
|
||||
"多选题"
|
||||
:
|
||||
this.props.titilesms&&this.props.titilesms==="JUDGMENT"?
|
||||
"判断题"
|
||||
:
|
||||
this.props.titilesms&&this.props.titilesms==="COMPLETION"?
|
||||
"填空题"
|
||||
:
|
||||
this.props.titilesms&&this.props.titilesms==="SUBJECTIVE"?
|
||||
"简答题"
|
||||
:
|
||||
this.props.titilesms&&this.props.titilesms==="PROGRAM"?
|
||||
"编程题"
|
||||
:
|
||||
this.props.titilesms&&this.props.titilesms==="PRACTICAL"?
|
||||
"实训题"
|
||||
:""
|
||||
|
||||
}</p></div>
|
||||
<div className="clearfix mt30 edu-txt-center">
|
||||
<a className="task-btn mr30 w80" onClick={()=>this.props.modalCancels()}>取消</a>
|
||||
<a className="task-btn task-btn-orange w80" onClick={()=>this.props.setDownloads(this.props.titilesms)}>确定</a>
|
||||
</div>
|
||||
</div>
|
||||
</Modal>
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
export default QuestionModals;
|
@ -0,0 +1,611 @@
|
||||
.w1200{
|
||||
width:1062px;
|
||||
height:177px;
|
||||
background:rgba(255,255,255,1);
|
||||
box-shadow:0px 6px 8px 0px rgba(0,0,0,0.03);
|
||||
border-radius:2px;
|
||||
}
|
||||
|
||||
.w1200dbl{
|
||||
width:1062px;
|
||||
min-height:60px;
|
||||
background:rgba(255,255,255,1);
|
||||
box-shadow:0px 6px 8px 0px rgba(0,0,0,0.03);
|
||||
border-radius:2px;
|
||||
}
|
||||
.w1200fpx{
|
||||
width:1200px;
|
||||
background:rgba(255,255,255,1);
|
||||
box-shadow:0px 6px 8px 0px rgba(0,0,0,0.03);
|
||||
border-radius:2px;
|
||||
}
|
||||
.w1200mss{
|
||||
width:1200px;
|
||||
}
|
||||
.w1200ms{
|
||||
width:1062px;
|
||||
}
|
||||
.w1200s{
|
||||
width:1062px;
|
||||
background:rgba(255,255,255,1);
|
||||
box-shadow:0px 6px 8px 0px rgba(0,0,0,0.03);
|
||||
border-radius:2px;
|
||||
}
|
||||
.h177{
|
||||
height: 177px;
|
||||
}
|
||||
/* 中间居中 */
|
||||
.intermediatecenter{
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
/* 简单居中 */
|
||||
.intermediatecenterysls{
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.spacearound{
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
|
||||
}
|
||||
.spacebetween{
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
/* 头顶部居中 */
|
||||
.topcenter{
|
||||
display: -webkit-flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* x轴正方向排序 */
|
||||
/* 一 二 三 四 五 六 七 八 */
|
||||
.sortinxdirection{
|
||||
display: flex;
|
||||
flex-direction:row;
|
||||
}
|
||||
/* x轴反方向排序 */
|
||||
/* 八 七 六 五 四 三 二 一 */
|
||||
.xaxisreverseorder{
|
||||
display: flex;
|
||||
flex-direction:row-reverse;
|
||||
}
|
||||
/* 垂直布局 正方向*/
|
||||
/* 一
|
||||
二
|
||||
三
|
||||
四
|
||||
五
|
||||
六
|
||||
七
|
||||
八 */
|
||||
.verticallayout{
|
||||
display: flex;
|
||||
flex-direction:column;
|
||||
}
|
||||
/* 垂直布局 反方向*/
|
||||
.reversedirection{
|
||||
display: flex;
|
||||
flex-direction:column-reverse;
|
||||
}
|
||||
.w100{
|
||||
width: 100px;
|
||||
}
|
||||
.mt21{
|
||||
margin-top: 21px;
|
||||
}
|
||||
.mt23{
|
||||
margin-top: 23px;
|
||||
}
|
||||
.mt19{
|
||||
margin-top: 19px;
|
||||
}
|
||||
.mt15{
|
||||
margin-top: 10px;
|
||||
}
|
||||
.h40{
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.tophom{
|
||||
padding-top: 33px;
|
||||
padding-bottom: 40px;
|
||||
padding-left: 26px;
|
||||
padding-right: 26px;
|
||||
}
|
||||
.tophoms{
|
||||
padding-top: 15px;
|
||||
padding-left: 26px;
|
||||
padding-right: 26px;
|
||||
}
|
||||
.borderwd{
|
||||
border: 1px solid #000000;
|
||||
}
|
||||
.borderwds{
|
||||
width: 1020px !important;
|
||||
background: #FFFFFF;
|
||||
border: 1px solid #DDDDDD;
|
||||
margin-left: 20px;
|
||||
min-height:150px;
|
||||
}
|
||||
.borderwds283{
|
||||
width: 1020px !important;
|
||||
min-height:283px;
|
||||
background:#F9F9F9;
|
||||
border:1px solid #DDDDDD;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.w64{
|
||||
width: 64px;
|
||||
}
|
||||
.w70{
|
||||
width: 70px !important;
|
||||
}
|
||||
|
||||
.tophomsembold{
|
||||
height:21px;
|
||||
font-size:16px;
|
||||
color:#333333;
|
||||
line-height:21px;
|
||||
}
|
||||
|
||||
.tophomsembolds{
|
||||
width:42px;
|
||||
height:19px;
|
||||
font-size:14px;
|
||||
font-family:MicrosoftYaHeiSemibold;
|
||||
color:rgba(51,51,51,1);
|
||||
line-height:31px;
|
||||
}
|
||||
/*Contentpart*/
|
||||
.contentparttit{
|
||||
padding-top: 10px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.subjecttit{
|
||||
width:28px;
|
||||
height:19px;
|
||||
font-size:14px;
|
||||
color:rgba(51,51,51,1);
|
||||
line-height: 42px;
|
||||
cursor:pointer;
|
||||
|
||||
}
|
||||
.ml55{
|
||||
margin-right: 55px;
|
||||
|
||||
}
|
||||
|
||||
.lg{
|
||||
line-height: 42px;
|
||||
}
|
||||
.ml7{
|
||||
margin-left: 7px;
|
||||
}
|
||||
|
||||
.icondowncolor{
|
||||
color:#9E9E9E;
|
||||
|
||||
}
|
||||
.icondowncolorss{
|
||||
color: #9E9E9E;
|
||||
position: absolute;
|
||||
top: -20px;
|
||||
right: -16px;
|
||||
}
|
||||
|
||||
.questiontype{
|
||||
width: 100%;
|
||||
font-size: 12px;
|
||||
color: #333333;
|
||||
line-height: 17px;
|
||||
text-align: center;
|
||||
padding: 11px;
|
||||
cursor:pointer;
|
||||
|
||||
}
|
||||
.questiontypes{
|
||||
width:37px;
|
||||
height:17px;
|
||||
font-size:12px;
|
||||
color:rgba(51,51,51,1);
|
||||
line-height:17px;
|
||||
cursor:pointer;
|
||||
|
||||
}
|
||||
.questiontypeheng{
|
||||
width:100%;
|
||||
height:1px;
|
||||
background: #EEEEEE;
|
||||
}
|
||||
.questiontype:hover{
|
||||
color: #4CACFF;
|
||||
}
|
||||
.questiontype:active{
|
||||
color: #4CACFF;
|
||||
}
|
||||
|
||||
.w100s{
|
||||
width:100%;
|
||||
}
|
||||
.stestcen{
|
||||
text-align: center;
|
||||
}
|
||||
.w70s{
|
||||
width:70%;
|
||||
}
|
||||
.w30s{
|
||||
width:70%;
|
||||
}
|
||||
.w50s{
|
||||
width: 50%;
|
||||
}
|
||||
.testpaper{
|
||||
font-size:12px;
|
||||
color:#888888;
|
||||
line-height:28px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.setequesbank{
|
||||
font-size:14px;
|
||||
color:#333333;
|
||||
line-height:28px;
|
||||
}
|
||||
|
||||
.Contentquestionbankstyle{
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
}
|
||||
|
||||
.pd20{
|
||||
padding-top: 20px;
|
||||
padding-bottom: 20px;
|
||||
padding-left: 30px;
|
||||
padding-right: 30px;
|
||||
}
|
||||
|
||||
/*listjihe*/
|
||||
.listjihetixing{
|
||||
color: #888888;
|
||||
font-size: 12px;
|
||||
line-height: 17px;
|
||||
}
|
||||
|
||||
.listjihetixings{
|
||||
color: #333333;
|
||||
font-size: 12px;
|
||||
line-height: 17px;
|
||||
}
|
||||
.listjihetixingstit{
|
||||
color: #333333;
|
||||
font-size: 14px;
|
||||
line-height: 17px;
|
||||
|
||||
}
|
||||
.listjihetixingstits{
|
||||
color: #333333;
|
||||
font-size: 14px;
|
||||
line-height:19px;
|
||||
margin-top: 19px;
|
||||
}
|
||||
|
||||
.updatetimes{
|
||||
color: #BBBBBB;
|
||||
font-size: 12px;
|
||||
}
|
||||
.mt22{
|
||||
margin-top: 22px;
|
||||
}
|
||||
.viewparsings{
|
||||
color:#4CACFF;
|
||||
font-size:12px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
.selection{
|
||||
width:88px;
|
||||
height:30px;
|
||||
background:#33BD8C;
|
||||
border-radius:4px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.selectionss{
|
||||
width:88px;
|
||||
height:30px;
|
||||
background:#eeeeee;
|
||||
border-radius:4px;
|
||||
text-align: center;
|
||||
line-height: 30px;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
.lh30{
|
||||
line-height: 30px;
|
||||
|
||||
|
||||
}
|
||||
|
||||
.analysis{
|
||||
height:19px;
|
||||
font-size:14px;
|
||||
color:#333333;
|
||||
line-height:19px;
|
||||
}
|
||||
|
||||
.testfondex{
|
||||
color: #808080;
|
||||
font-size: 14px;
|
||||
}
|
||||
.pb20{
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
.icontianjiadaohangcolor{
|
||||
color: #FFFFFF;
|
||||
}
|
||||
|
||||
.icontianjiadaohangcolors{
|
||||
color: #4CACFF;
|
||||
}
|
||||
.xiaoshou{
|
||||
cursor:pointer
|
||||
}
|
||||
.mt40{
|
||||
margin-top: 40px;
|
||||
}
|
||||
.mt42{
|
||||
margin-top: 42px;
|
||||
}
|
||||
.drawerbutton{
|
||||
width:88px;
|
||||
height:30px;
|
||||
background:#4CACFF;
|
||||
border-radius:4px;
|
||||
font-size:14px;
|
||||
color:#ffffff;
|
||||
line-height:30px;
|
||||
text-align: center;
|
||||
}
|
||||
.icondrawercolor{
|
||||
color: #979797;
|
||||
}
|
||||
|
||||
.mt25{
|
||||
margin-top: 25px;
|
||||
}
|
||||
.mb26{
|
||||
margin-bottom: 26px;
|
||||
}
|
||||
.drawernonedatadiv{
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.font-17{
|
||||
font-size: 17px;
|
||||
}
|
||||
.ml30{
|
||||
margin-right: 30px;
|
||||
}
|
||||
.mr25{
|
||||
margin-right: 25px;
|
||||
}
|
||||
.newbutoon{
|
||||
width:88px;
|
||||
height:42px;
|
||||
background:#33BD8C;
|
||||
line-height: 42px;
|
||||
border-radius:4px;
|
||||
|
||||
}
|
||||
|
||||
.newbutoontes{
|
||||
width:100%;
|
||||
height:42px;
|
||||
font-size:14px;
|
||||
color:#ffffff;
|
||||
line-height:42px;
|
||||
text-align: center;
|
||||
}
|
||||
.educouddiv {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.tabeltext-alignleftysl{
|
||||
font-size:14px;
|
||||
color:#000000;
|
||||
line-height:19px;
|
||||
|
||||
}
|
||||
.tabeltext-alignleftysltwo{
|
||||
font-size:14px;
|
||||
color:#848282;
|
||||
line-height:19px;
|
||||
|
||||
}
|
||||
|
||||
.publictask-btn{
|
||||
width:80px;
|
||||
height:34px;
|
||||
background:#CCCCCC;
|
||||
border-radius:4px;
|
||||
color: #ffffff;
|
||||
|
||||
}
|
||||
.publictask-btns{
|
||||
width:80px;
|
||||
height:34px;
|
||||
background:#4CACFF;
|
||||
border-radius:4px;
|
||||
color: #ffffff;
|
||||
}
|
||||
.w80{
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
.titiles{
|
||||
color: #333333;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.h12{
|
||||
height: 12px;
|
||||
min-height: 12px;
|
||||
}
|
||||
|
||||
.mt19{
|
||||
margin-top: 19px;
|
||||
}
|
||||
.mytags{
|
||||
width:106px;
|
||||
height:32px;
|
||||
border-radius:2px;
|
||||
border:1px solid #DDDDDD;
|
||||
margin-left: 20px;
|
||||
}
|
||||
.lh32{
|
||||
line-height: 32px;
|
||||
}
|
||||
|
||||
.h20{
|
||||
height: 20px;
|
||||
min-height: 20px;
|
||||
line-height: 20px;
|
||||
}
|
||||
.xingcolor{
|
||||
color: rgba(224, 64, 64, 1);
|
||||
}
|
||||
.xingtigan{
|
||||
font-size:14px;
|
||||
color:rgba(51, 51, 51, 1);
|
||||
}
|
||||
.mr4{
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.xingtigans{
|
||||
width:100%;
|
||||
font-size:14px;
|
||||
color:rgba(136,136,136,1);
|
||||
}
|
||||
|
||||
.bottomdivs{
|
||||
width:100%;
|
||||
height:55px;
|
||||
background:rgba(255,255,255,1);
|
||||
box-shadow:0px -2px 7px 0px rgba(1,6,22,0.04);
|
||||
}
|
||||
.mt50{
|
||||
margin-top: 50px;
|
||||
}
|
||||
|
||||
.divquxiao{
|
||||
width:88px;
|
||||
height:32px;
|
||||
background:rgba(255,255,255,1);
|
||||
border-radius:4px;
|
||||
border:1px solid rgba(204,204,204,1);
|
||||
}
|
||||
.divquxiaotest{
|
||||
width:100%;
|
||||
height:32px;
|
||||
font-size:12px;
|
||||
color:rgba(136,136,136,1);
|
||||
line-height:32px;
|
||||
text-align: center;
|
||||
}
|
||||
.divbaocuntests{
|
||||
width:100%;
|
||||
height:32px;
|
||||
font-size:12px;
|
||||
color:#ffffff;
|
||||
line-height:32px;
|
||||
text-align: center;
|
||||
}
|
||||
.divbaocun{
|
||||
width:88px;
|
||||
height:32px;
|
||||
background:rgba(76,172,255,1);
|
||||
border-radius:4px;
|
||||
}
|
||||
.sortzhenque{
|
||||
width:49px;
|
||||
height:33px;
|
||||
border-radius:2px;
|
||||
border:1px solid rgba(221,221,221,1);
|
||||
}
|
||||
|
||||
.sortzhenquetest{
|
||||
width:100%;
|
||||
height:33px;
|
||||
font-size:14px;
|
||||
color:rgba(51,51,51,1);
|
||||
line-height:33px;
|
||||
|
||||
}
|
||||
|
||||
.sortquxiao{
|
||||
|
||||
width:49px;
|
||||
height:33px;
|
||||
border-radius:2px;
|
||||
border:1px solid rgba(221,221,221,1);
|
||||
}
|
||||
.sortquxiaotest{
|
||||
width:100%;
|
||||
height:33px;
|
||||
font-size:14px;
|
||||
color:rgba(51,51,51,1);
|
||||
line-height:33px;
|
||||
}
|
||||
|
||||
.ml45{
|
||||
margin-left: 45px;
|
||||
}
|
||||
|
||||
.programcss{
|
||||
height: 251px;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.titlesttingcss{
|
||||
min-width: 100px;
|
||||
height:32px;
|
||||
line-height: 32px;
|
||||
background:rgba(76,172,255,1);
|
||||
border-radius:16px;
|
||||
text-align: center;
|
||||
color: #fff;
|
||||
}
|
||||
.titlesttingcssmy{
|
||||
min-width: 100px;
|
||||
height:32px;
|
||||
line-height: 32px;
|
||||
font-size:14px;
|
||||
color:rgba(51,51,51,1);
|
||||
text-align: center;
|
||||
}
|
||||
.minleng40{
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
.w60{
|
||||
width: 60px !important;
|
||||
}
|
||||
|
||||
.h30{
|
||||
min-height: 30px !important;
|
||||
}
|
||||
|
||||
.minheight{
|
||||
min-height: 500px !important;
|
||||
}
|
@ -0,0 +1,55 @@
|
||||
import React, {Component} from 'react';
|
||||
|
||||
import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom";
|
||||
|
||||
import Loadable from 'react-loadable';
|
||||
|
||||
import Loading from "../../../../Loading";
|
||||
|
||||
import Bottomsubmit from "../../../modals/Bottomsubmit";
|
||||
|
||||
|
||||
const TPMchallengestask = Loadable({
|
||||
loader: () => import('../../challengesnew/TPMchallengesnew'),
|
||||
loading: Loading,
|
||||
})
|
||||
|
||||
export default class TpmTaskIndex extends Component {
|
||||
constructor(props) {
|
||||
super(props)
|
||||
this.state = {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
componentDidMount() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
render() {
|
||||
// console.log(a.indexOf("vnc"))
|
||||
// console.log(b.indexOf("vnc"))
|
||||
|
||||
return (
|
||||
|
||||
<div>
|
||||
<Switch {...this.props}>
|
||||
{/*新建关卡*/}
|
||||
<Route path="/shixuns/:shixunId/challenges/new" render={
|
||||
(props) => (<TPMchallengestask {...this.props} {...props} {...this.state}/>)
|
||||
}></Route>
|
||||
|
||||
{/*编辑关卡*/}
|
||||
<Route path="/shixuns/:shixunId/challenges/:checkpointId/editcheckpoint" render={
|
||||
(props) => (<TPMchallengestask {...this.props} {...props} {...this.state} />)
|
||||
}></Route>
|
||||
</Switch>
|
||||
</div>
|
||||
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue