Merge branch 'dev_item_bank' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_jupyter

dev_jupyter
杨树林 5 years ago
commit b42d960e35

@ -20,6 +20,7 @@ import {TPMIndexHOC} from "../tpm/TPMIndexHOC";
import NoneData from './component/NoneData'; import NoneData from './component/NoneData';
import './questioncss/questioncom.css'; import './questioncss/questioncom.css';
import Bottomsubmit from "../modals/Bottomsubmit"; import Bottomsubmit from "../modals/Bottomsubmit";
import QuestionModalys from "./component/QuestionModalys";
//exam_id 试卷的id //exam_id 试卷的id
class NewMyShixunModel extends Component { class NewMyShixunModel extends Component {
@ -67,15 +68,28 @@ class NewMyShixunModel extends Component {
oj_status:null, oj_status:null,
isVisible: false, isVisible: false,
selectionbools:false, selectionbools:false,
chakanjiexiboolindex:"无",
} }
} }
chakanjiexibool=(index)=>{
if(this.state.chakanjiexiboolindex===index){
this.setState({
chakanjiexiboolindex:"无",
})
return
}
this.setState({
chakanjiexiboolindex:index,
})
}
setdiscipline_id=(discipline_id)=>{ setdiscipline_id=(discipline_id)=>{
this.setState({ this.setState({
discipline_id:discipline_id, discipline_id:discipline_id,
sub_discipline_id:null, sub_discipline_id:null,
tag_discipline_id:null, tag_discipline_id:null,
keywords:"", keyword:"",
page:1, page:1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -87,7 +101,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: null, keyword: null,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
oj_status:null, oj_status:null,
@ -101,7 +115,7 @@ class NewMyShixunModel extends Component {
this.setState({ this.setState({
sub_discipline_id:sub_discipline_id, sub_discipline_id:sub_discipline_id,
tag_discipline_id:null, tag_discipline_id:null,
keywords:"", keyword:"",
page:1, page:1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -113,7 +127,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords:null, keyword:null,
page: 1, page: 1,
per_page:10, per_page:10,
oj_status:null, oj_status:null,
@ -125,7 +139,7 @@ class NewMyShixunModel extends Component {
settag_discipline_id=(tag_discipline_id)=>{ settag_discipline_id=(tag_discipline_id)=>{
this.setState({ this.setState({
tag_discipline_id:tag_discipline_id, tag_discipline_id:tag_discipline_id,
keywords:"", keyword:"",
page:1, page:1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -137,7 +151,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: null, keyword: null,
page: 1, page: 1,
per_page:10, per_page:10,
oj_status:null, oj_status:null,
@ -355,7 +369,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: pageNumber, page: pageNumber,
per_page:10, per_page:10,
oj_status:this.state.oj_status, oj_status:this.state.oj_status,
@ -463,7 +477,7 @@ class NewMyShixunModel extends Component {
visiblemys: false, visiblemys: false,
page: 1, page: 1,
per_page:10, per_page:10,
keywords:"", keyword:"",
oj_status:null oj_status:null
}) })
@ -474,7 +488,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: difficulty, difficulty: difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords:null, keyword:null,
page:1, page:1,
per_page:10, per_page:10,
oj_status:null, oj_status:null,
@ -490,7 +504,7 @@ class NewMyShixunModel extends Component {
visiblemyss: false, visiblemyss: false,
page: 1, page: 1,
per_page:10, per_page:10,
keywords:"", keyword:"",
oj_status:null oj_status:null
}) })
@ -503,7 +517,7 @@ class NewMyShixunModel extends Component {
item_type: item_type, item_type: item_type,
page: 1, page: 1,
per_page:10, per_page:10,
keywords:null, keyword:null,
oj_status:null, oj_status:null,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id), exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
}; };
@ -524,6 +538,19 @@ class NewMyShixunModel extends Component {
} }
} }
showmodelsInaudit = (e) => {
this.setState({
modalsTypeInaudit: true,
titilesm: "公开申请已提交,请等待管理员的审核",
titiless: "我们将在1-2个工作日内完成审核",
})
};
modalsTypeInauditbool=()=>{
this.setState({
modalsTypeInaudit:false,
})
}
handleVisibleChanges = (boll) => { handleVisibleChanges = (boll) => {
if (this.state.visiblemys === true) { if (this.state.visiblemys === true) {
@ -541,13 +568,13 @@ class NewMyShixunModel extends Component {
setdatafunsval = (e) => { setdatafunsval = (e) => {
this.setState({ this.setState({
keywords: e.target.value keyword: e.target.value
}) })
} }
setdatafuns = (value) => { setdatafuns = (value) => {
this.setState({ this.setState({
keywords: value, keyword: value,
}) })
var data = { var data = {
discipline_id:this.state.discipline_id, discipline_id:this.state.discipline_id,
@ -556,7 +583,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: value, keyword: value,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
oj_status:this.state.oj_status, oj_status:this.state.oj_status,
@ -581,7 +608,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id), exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -607,7 +634,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id), exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -675,7 +702,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id), exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -706,7 +733,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id), exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -732,7 +759,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id), exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -805,7 +832,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id), exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -842,7 +869,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
oj_status:oj_status, oj_status:oj_status,
@ -856,7 +883,8 @@ class NewMyShixunModel extends Component {
let { let {
page, per_page, items_count, Headertop, visible, placement, modalsType, modalsTypes,basket_list, page, per_page, items_count, Headertop, visible, placement, modalsType, modalsTypes,basket_list,
completion_questions_count, judgement_questions_count, multiple_questions_count, practical_questions_count, completion_questions_count, judgement_questions_count, multiple_questions_count, practical_questions_count,
program_questions_count, single_questions_count, subjective_questions_count,selectionbools program_questions_count, single_questions_count, subjective_questions_count,selectionbools,
modalsTypeInaudit
} = this.state; } = this.state;
const Datacount = completion_questions_count + judgement_questions_count const Datacount = completion_questions_count + judgement_questions_count
@ -914,7 +942,12 @@ class NewMyShixunModel extends Component {
setDownload={() => this.setDownload()}></QuestionModal> setDownload={() => this.setDownload()}></QuestionModal>
:"" :""
} }
{
modalsTypeInaudit===true?
<QuestionModalys {...this.props}{...this.state} modalsType={modalsTypeInaudit} modalCancel={() => this.modalsTypeInauditbool()}
setDownload={() => this.modalsTypeInauditbool()}></QuestionModalys>
:""
}
{/*顶部*/} {/*顶部*/}
<Headplugselections <Headplugselections
@ -931,6 +964,8 @@ class NewMyShixunModel extends Component {
<Contentpart {...this.state} {...this.props} <Contentpart {...this.state} {...this.props}
exam_id={this.props.exam_id} exam_id={this.props.exam_id}
Isitapopup={"true"} Isitapopup={"true"}
chakanjiexiboolindex={this.state.chakanjiexiboolindex}
chakanjiexibool={(e)=>this.chakanjiexibool(e)}
getitem_basketss={(id)=>this.getitem_basketss(id)} getitem_basketss={(id)=>this.getitem_basketss(id)}
selectallquestionsonthispage={()=>this.selectallquestionsonthispage()} selectallquestionsonthispage={()=>this.selectallquestionsonthispage()}
getitem_baskets={(e)=>this.getitem_baskets(e)} getitem_baskets={(e)=>this.getitem_baskets(e)}
@ -941,7 +976,10 @@ class NewMyShixunModel extends Component {
showmodels={(e) => this.showmodels(e)} showmodels={(e) => this.showmodels(e)}
showmodelysl={(e) => this.showmodelysl(e)} showmodelysl={(e) => this.showmodelysl(e)}
callback={(e) => this.callback(e)} callback={(e) => this.callback(e)}
setoj_status={(e)=>this.setoj_status(e)}></Contentpart> setoj_status={(e)=>this.setoj_status(e)}
showmodelsInaudit={(e)=>this.showmodelsInaudit(e)}
></Contentpart>
{ {
items_count&&items_count>10? items_count&&items_count>10?

@ -26,6 +26,7 @@ const tagArray = [
] ]
//单选题 //单选题
//Paperlibraryseeid_items.js Listjihe.js
class Paperreview_single extends Component { class Paperreview_single extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -89,6 +90,7 @@ class Paperreview_single extends Component {
}catch (e) { }catch (e) {
itemsnamesy=objectsingle&&objectsingle.program_attr&&objectsingle.program_attr.description; itemsnamesy=objectsingle&&objectsingle.program_attr&&objectsingle.program_attr.description;
} }
var fenshul=(objectsingle.score+"分");
return ( return (
<div key={indexxy} <div key={indexxy}
@ -150,25 +152,32 @@ class Paperreview_single extends Component {
> >
({objectsingle.score}) ({objectsingle.score})
</div> </div>
<div className="ml10 lh28 listjihetixingstit markdown-body cretitlecolrlist " style={{wordBreak: "break-word"}}
dangerouslySetInnerHTML={{__html: markdownToHTML(objectsingle.name).replace(/▁/g, "▁▁▁")}}> <div id={"titessone"} className="ml10 lh28 listjihetixingstit markdown-body cretitlecolrlist " style={{wordBreak: "break-word"}}
dangerouslySetInnerHTML={{__html: markdownToHTML(fenshul+objectsingle.name).replace(/▁/g, "▁▁▁")}}>
</div> </div>
</div> </div>
: :
<div className="w100s sortinxdirection"> <div className="w100s sortinxdirection titesstwos">
<div className="tites lh28 listjihetixingstit markdown-body cretitlecolrlist " style={{wordBreak: "break-word", <div id={"titesstwo"} className="tites titesstwostest lh28 listjihetixingstit markdown-body cretitlecolrlist " style={{wordBreak: "break-word",
minWidth:"32px" minWidth:"32px"
}} }}
> >
({objectsingle.score}) ({objectsingle.score})
</div> </div>
<div className="ml10 lh28 listjihetixingstit cretitlecolrlist programquill" style={{wordBreak: "break-word"}} <div className={objectsingle.score<10?" lh28 listjihetixingstit text-indents40 cretitlecolrlist programquill":objectsingle.score<100?" lh28 listjihetixingstit text-indents44 cretitlecolrlist programquill":" lh28 listjihetixingstit text-indents50 cretitlecolrlist programquill" }style={{wordBreak: "break-word"}}
> >
{
itemssname===null|| itemssname===undefined?
""
:
<QuillForEditor <QuillForEditor
readOnly={true} readOnly={true}
value={itemssname} value={itemssname}
/> />
}
</div> </div>
</div> </div>
@ -202,10 +211,16 @@ class Paperreview_single extends Component {
objectsingle&&objectsingle.program_attr&&objectsingle.program_attr.description? objectsingle&&objectsingle.program_attr&&objectsingle.program_attr.description?
<p className="programquill" style={{wordBreak: "break-word"}} <p className="programquill" style={{wordBreak: "break-word"}}
> >
{
itemsnamesy===null || itemsnamesy===undefined?
""
:
<QuillForEditor <QuillForEditor
readOnly={true} readOnly={true}
value={itemsnamesy} value={itemsnamesy}
/> />
}
</p> </p>
: :
""} ""}

@ -20,6 +20,7 @@ import {TPMIndexHOC} from "../tpm/TPMIndexHOC";
import NoneData from './component/NoneData'; import NoneData from './component/NoneData';
import './questioncss/questioncom.css'; import './questioncss/questioncom.css';
import SiderBars from "../question/component/SiderBars"; import SiderBars from "../question/component/SiderBars";
import QuestionModalys from "./component/QuestionModalys";
class Question extends Component { class Question extends Component {
constructor(props) { constructor(props) {
@ -32,6 +33,7 @@ class Question extends Component {
visible: false, visible: false,
placement: 'right', placement: 'right',
modalsType: false, modalsType: false,
modalsTypeInaudit:false,
modalsTypes:false, modalsTypes:false,
titilesm: "在平台审核后,所有成员均可使用试题", titilesm: "在平台审核后,所有成员均可使用试题",
titiless: "是否设置为公开?", titiless: "是否设置为公开?",
@ -92,7 +94,7 @@ class Question extends Component {
discipline_id:discipline_id, discipline_id:discipline_id,
sub_discipline_id:null, sub_discipline_id:null,
tag_discipline_id:null, tag_discipline_id:null,
keywords:"", keyword:"",
page:1, page:1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -104,7 +106,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: null, keyword: null,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -117,7 +119,7 @@ class Question extends Component {
this.setState({ this.setState({
sub_discipline_id:sub_discipline_id, sub_discipline_id:sub_discipline_id,
tag_discipline_id:null, tag_discipline_id:null,
keywords:"", keyword:"",
page:1, page:1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -129,7 +131,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords:null, keyword:null,
page: 1, page: 1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -140,7 +142,7 @@ class Question extends Component {
settag_discipline_id=(tag_discipline_id)=>{ settag_discipline_id=(tag_discipline_id)=>{
this.setState({ this.setState({
tag_discipline_id:tag_discipline_id, tag_discipline_id:tag_discipline_id,
keywords:"", keyword:"",
page:1, page:1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -152,7 +154,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: null, keyword: null,
page: 1, page: 1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -213,12 +215,19 @@ class Question extends Component {
} }
//刷新加载 //刷新加载
getdata = (data) => { getdata = (data,bool) => {
const url = `/item_banks.json`; const url = `/item_banks.json`;
if(bool){
this.setState({
selectionbools:false,
})
}else {
this.setState({ this.setState({
booljupyterurls:true, booljupyterurls:true,
selectionbools:false, selectionbools:false,
}) })
}
axios.get((url), {params: data}).then((response) => { axios.get((url), {params: data}).then((response) => {
setTimeout(()=>{ setTimeout(()=>{
this.setState({ this.setState({
@ -335,7 +344,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: pageNumber, page: pageNumber,
per_page:10, per_page:10,
oj_status:this.state.oj_status oj_status:this.state.oj_status
@ -389,6 +398,16 @@ class Question extends Component {
timuid: id timuid: id
}) })
}; };
showmodelsInaudit = (e) => {
this.setState({
modalsTypeInaudit: true,
titilesm: "公开申请已提交,请等待管理员的审核",
titiless: "我们将在1-2个工作日内完成审核",
})
};
showmodelysl = (id) => { showmodelysl = (id) => {
this.setState({ this.setState({
modalsType: true, modalsType: true,
@ -398,7 +417,11 @@ class Question extends Component {
timuid: id timuid: id
}) })
}; };
modalsTypeInauditbool=()=>{
this.setState({
modalsTypeInaudit:false,
})
}
modalCancel = () => { modalCancel = () => {
this.setState({ this.setState({
@ -443,7 +466,7 @@ class Question extends Component {
visiblemys: false, visiblemys: false,
page: 1, page: 1,
per_page:10, per_page:10,
keywords:"", keyword:"",
oj_status:null oj_status:null
}) })
@ -454,7 +477,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: difficulty, difficulty: difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords:null, keyword:null,
page:1, page:1,
per_page:10, per_page:10,
oj_status:null oj_status:null
@ -469,7 +492,7 @@ class Question extends Component {
visiblemyss: false, visiblemyss: false,
page: 1, page: 1,
per_page:10, per_page:10,
keywords:"", keyword:"",
oj_status:null oj_status:null
}) })
@ -482,7 +505,7 @@ class Question extends Component {
item_type: item_type, item_type: item_type,
page: 1, page: 1,
per_page:10, per_page:10,
keywords:null, keyword:null,
oj_status:null oj_status:null
}; };
@ -519,13 +542,13 @@ class Question extends Component {
setdatafunsval = (e) => { setdatafunsval = (e) => {
this.setState({ this.setState({
keywords: e.target.value keyword: e.target.value
}) })
} }
setdatafuns = (value) => { setdatafuns = (value) => {
this.setState({ this.setState({
keywords: value, keyword: value,
}) })
var data = { var data = {
discipline_id:this.state.discipline_id, discipline_id:this.state.discipline_id,
@ -534,7 +557,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: value, keyword: value,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
oj_status:this.state.oj_status oj_status:this.state.oj_status
@ -558,11 +581,11 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
}; };
this.getdata(data); this.getdata(data,true);
} }
}) })
.catch(function (error) { .catch(function (error) {
@ -583,11 +606,11 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
}; };
this.getdata(data); this.getdata(data,true);
} }
}).catch((error) => { }).catch((error) => {
////console.log(error); ////console.log(error);
@ -643,7 +666,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
}; };
@ -673,7 +696,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
}; };
@ -741,7 +764,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
}; };
@ -777,7 +800,7 @@ class Question extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: this.state.item_type, item_type: this.state.item_type,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
oj_status:oj_status oj_status:oj_status
@ -792,7 +815,8 @@ class Question extends Component {
let { let {
page, per_page, items_count, Headertop, visible, placement, modalsType, modalsTypes,basket_list, page, per_page, items_count, Headertop, visible, placement, modalsType, modalsTypes,basket_list,
completion_questions_count, judgement_questions_count, multiple_questions_count, practical_questions_count, completion_questions_count, judgement_questions_count, multiple_questions_count, practical_questions_count,
program_questions_count, single_questions_count, subjective_questions_count,selectionbools program_questions_count, single_questions_count, subjective_questions_count,selectionbools,
modalsTypeInaudit
} = this.state; } = this.state;
const Datacount = completion_questions_count + judgement_questions_count const Datacount = completion_questions_count + judgement_questions_count
@ -852,6 +876,12 @@ class Question extends Component {
setDownload={() => this.setDownload()}></QuestionModal> setDownload={() => this.setDownload()}></QuestionModal>
:"" :""
} }
{
modalsTypeInaudit===true?
<QuestionModalys {...this.props}{...this.state} modalsType={modalsTypeInaudit} modalCancel={() => this.modalsTypeInauditbool()}
setDownload={() => this.modalsTypeInauditbool()}></QuestionModalys>
:""
}
@ -920,7 +950,9 @@ class Question extends Component {
showmodels={(e) => this.showmodels(e)} showmodels={(e) => this.showmodels(e)}
showmodelysl={(e) => this.showmodelysl(e)} showmodelysl={(e) => this.showmodelysl(e)}
callback={(e) => this.callback(e)} callback={(e) => this.callback(e)}
setoj_status={(e)=>this.setoj_status(e)}></Contentpart> setoj_status={(e)=>this.setoj_status(e)}
showmodelsInaudit={(e)=>this.showmodelsInaudit(e)}
></Contentpart>
{ {
items_count&&items_count>10? items_count&&items_count>10?

@ -465,7 +465,7 @@ class Questionitem_banks extends Component {
sub_discipline_id: Getdatasdata[3].rbkc[1], sub_discipline_id: Getdatasdata[3].rbkc[1],
tag_discipline_id: myrbkc, tag_discipline_id: myrbkc,
}); });
this.props.history.replace('/problems/new'); window.open("/problems/new");
} }

@ -230,7 +230,11 @@ class ChoquesEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/; const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if (!reg.test(_text)) { if (!reg.test(_text)) {
// 处理编辑器内容为空 // 处理编辑器内容为空
try {
texts=JSON.stringify(value);
}catch (e) {
texts=""; texts="";
}
} else { } else {
if(_text.length>=301){ if(_text.length>=301){
var result = _text.substring(0,300); var result = _text.substring(0,300);
@ -269,9 +273,15 @@ class ChoquesEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/; const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if (!reg.test(_text)) { if (!reg.test(_text)) {
// 处理编辑器内容为空 // 处理编辑器内容为空
try {
this.setState({
question_titleysl: JSON.stringify(value)
})
}catch (e) {
this.setState({ this.setState({
question_titleysl:"" question_titleysl:""
}) })
}
} else { } else {
// 提交到后台的内容需要处理一下; // 提交到后台的内容需要处理一下;
var texts=""; var texts="";
@ -293,9 +303,15 @@ class ChoquesEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/; const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if (!reg.test(_text)) { if (!reg.test(_text)) {
// 处理编辑器内容为空 // 处理编辑器内容为空
try {
this.setState({
question_titlesysl: JSON.stringify(value)
})
}catch (e) {
this.setState({ this.setState({
question_titlesysl:"" question_titlesysl:""
}) })
}
} else { } else {
// 提交到后台的内容需要处理一下; // 提交到后台的内容需要处理一下;
var texts=""; var texts="";

@ -319,7 +319,9 @@ class Contentpart extends Component {
getitem_basketss={(id)=>this.props.getitem_basketss(id)} getitem_basketss={(id)=>this.props.getitem_basketss(id)}
getitem_baskets={(e)=>this.props.getitem_baskets(e)} getitem_baskets={(e)=>this.props.getitem_baskets(e)}
showmodels={(e)=>this.props.showmodels(e)} showmodels={(e)=>this.props.showmodels(e)}
showmodelysl={(e)=>this.props.showmodelysl(e)}> showmodelysl={(e)=>this.props.showmodelysl(e)}
showmodelsInaudit={(e)=>this.props.showmodelsInaudit(e)}
>
</Listjihe> </Listjihe>
) )

@ -231,11 +231,16 @@ class Headplugselections extends Component {
{ {
disciplinesdata&&disciplinesdata.map((item,key)=>{ disciplinesdata&&disciplinesdata.map((item,key)=>{
return( return(
item.sub_disciplines.length>0?
<Dropdown getPopupContainer={trigger => trigger.parentNode} overlay={ overlaymenu(item.sub_disciplines,item.id)} key={key} placement={item.id<4?"bottomRight":item.id>=8?"bottomLeft":"bottomCenter"}> <Dropdown getPopupContainer={trigger => trigger.parentNode} overlay={ overlaymenu(item.sub_disciplines,item.id)} key={key} placement={item.id<4?"bottomRight":item.id>=8?"bottomLeft":"bottomCenter"}>
<li key={key} className={parseInt(shixunsearchAllvalue)===item.id?"shaiItem shixun_repertoire active":"shaiItem shixun_repertoire"} value={item.id} onClick={()=>this.shixunsearchAll(item.id)}> <li key={key} className={parseInt(shixunsearchAllvalue)===item.id?"shaiItem shixun_repertoire active":"shaiItem shixun_repertoire"} value={item.id} onClick={()=>this.shixunsearchAll(item.id)}>
{item.name} {item.name}
</li> </li>
</Dropdown> </Dropdown>
:
<li key={key} className={parseInt(shixunsearchAllvalue)===item.id?"shaiItem shixun_repertoire active":"shaiItem shixun_repertoire"} value={item.id} onClick={()=>this.shixunsearchAll(item.id)}>
{item.name}
</li>
) )
}) })
} }

@ -58,7 +58,7 @@ class Itembankstop extends Component {
NewknTypedel:false, NewknTypedel:false,
boolred:false, boolred:false,
boolnews:false, boolnews:false,
sub_disciplineslength:1,
} }
} }
@ -463,15 +463,22 @@ class Itembankstop extends Component {
const didata = this.props.disciplinesdata; const didata = this.props.disciplinesdata;
const knowledgepointsdata = []; const knowledgepointsdata = [];
var sub_disciplineslength=0;
for (var i = 0; i < didata.length; i++) { for (var i = 0; i < didata.length; i++) {
//方向 //方向
if (value[0] === didata[i].id) { if (value[0] === didata[i].id) {
const fxdidata = didata[i].sub_disciplines; const fxdidata = didata[i].sub_disciplines;
try {
sub_disciplineslength=fxdidata.length;
}catch (e) {
}
for (var j = 0; j < fxdidata.length; j++) { for (var j = 0; j < fxdidata.length; j++) {
//课程 //课程
if (value[1] === fxdidata[j].id) { if (value[1] === fxdidata[j].id) {
const zsddata = fxdidata[j].tag_disciplines; const zsddata = fxdidata[j].tag_disciplines;
for (var k = 0; k < zsddata.length; k++) { for (var k = 0; k < zsddata.length; k++) {
//知识点 //知识点
knowledgepointsdata.push(zsddata[k]); knowledgepointsdata.push(zsddata[k]);
@ -491,6 +498,7 @@ class Itembankstop extends Component {
Knowpoints: [], Knowpoints: [],
knowledgepoints: knowledgepointsdata, knowledgepoints: knowledgepointsdata,
knowledgepoints2:knowledgepointsdata, knowledgepoints2:knowledgepointsdata,
sub_disciplineslength:sub_disciplineslength,
}) })
this.props.form.setFieldsValue({ this.props.form.setFieldsValue({
@ -559,10 +567,15 @@ class Itembankstop extends Component {
} }
NewknTypedeldel=(bool)=>{ NewknTypedeldel=(bool)=>{
if(this.state.rbkc===undefined || this.state.rbkc===null || this.state.rbkc===""){ if(this.state.rbkc===undefined || this.state.rbkc===null || this.state.rbkc===""){
this.props.showNotification(`请选择课程方向`); this.props.showNotification(`请选择课程方向`);
return; return;
} }
// if(this.state.sub_disciplineslength===undefined || this.state.sub_disciplineslength===null || this.state.sub_disciplineslength===0){
// this.props.showNotification(`无二级课程时没有新建入口`);
// return;
// }
this.setState({ this.setState({
NewknTypedel:bool NewknTypedel:bool
}) })
@ -723,6 +736,8 @@ class Itembankstop extends Component {
)} )}
</Form.Item> </Form.Item>
</div> </div>
{
this.state.sub_disciplineslength===null || this.state.sub_disciplineslength===undefined||this.state.sub_disciplineslength===0?"":
<Form.Item <Form.Item
label="知识点" label="知识点"
> >
@ -747,6 +762,9 @@ class Itembankstop extends Component {
</div> </div>
)} )}
</Form.Item> </Form.Item>
}
{ {
this.state.Knowpoints===undefined||this.state.Knowpoints===null?"": this.state.Knowpoints===undefined||this.state.Knowpoints===null?"":
this.state.Knowpoints.length>0? this.state.Knowpoints.length>0?

@ -187,6 +187,13 @@ class JudquestionEditor extends Component{
}catch (e) { }catch (e) {
} }
const params = this.props && this.props.match && this.props.match.params;
if(JSON.stringify(params) === "{}"){
//新增
this.setState({
zqda:"0"
})
}
} }
componentDidUpdate(prevProps) { componentDidUpdate(prevProps) {
@ -282,14 +289,29 @@ class JudquestionEditor extends Component{
} }
onContentChange=(value,quill)=>{ onContentChange=(value,quill)=>{
// console.log("这是题干赋值");
// console.log(value);
// console.log(quill);
const _text = quill.getText(); const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/; const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
// console.log(_text);
// console.log(_text.length);
if (!reg.test(_text)) { if (!reg.test(_text)) {
// 处理编辑器内容为空 // 处理编辑器内容为空
try {
this.setState({
question_titleysl:JSON.stringify(value)
})
}catch (e) {
this.setState({ this.setState({
question_titleysl:"" question_titleysl:""
}) })
}
// console.log("空");
} else { } else {
// console.log("有");
// 提交到后台的内容需要处理一下; // 提交到后台的内容需要处理一下;
var texts=""; var texts="";
if(_text.length>=1001){ if(_text.length>=1001){
@ -310,9 +332,16 @@ class JudquestionEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/; const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if (!reg.test(_text)) { if (!reg.test(_text)) {
// 处理编辑器内容为空 // 处理编辑器内容为空
try {
this.setState({
question_titlesysl:JSON.stringify(value)
})
}catch (e) {
this.setState({ this.setState({
question_titlesysl:"" question_titlesysl:""
}) })
}
} else { } else {
// 提交到后台的内容需要处理一下; // 提交到后台的内容需要处理一下;
var texts=""; var texts="";

@ -23,7 +23,7 @@ const tagArrays = [
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
] ]
//Paperreview_single.js Paperlibraryseeid_items.js
class Listjihe extends Component { class Listjihe extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -151,7 +151,10 @@ class Listjihe extends Component {
}catch (e) { }catch (e) {
analysisnames=items&&items.analysis; analysisnames=items&&items.analysis;
} }
console.log(items.name);
console.log(itemsnamesy);
console.log(analysisnames);
return ( return (
<div key={keindex} <div key={keindex}
className={chakanjiexiboolindex === keindex ? "w100s borderwds283 pd20 mb20 listjihecolors" : "w100s borderwds pd20 mb20 listjihecolors"}> className={chakanjiexiboolindex === keindex ? "w100s borderwds283 pd20 mb20 listjihecolors" : "w100s borderwds pd20 mb20 listjihecolors"}>
@ -190,6 +193,7 @@ class Listjihe extends Component {
"" ""
: :
items.name.length>0? items.name.length>0?
itemssname===null|| itemssname===undefined?"":
<QuillForEditor <QuillForEditor
readOnly={true} readOnly={true}
value={itemssname} value={itemssname}
@ -218,16 +222,20 @@ class Listjihe extends Component {
</p> : </p> :
items.item_type === "PROGRAM" ? items.item_type === "PROGRAM" ?
<p className="w100s listjihetixingstitssy sortinxdirection "> <p className="w100s listjihetixingstitssy sortinxdirection ">
<p className={"sortinxdirection mt15"}> <p id={"itemsnamesyid"} className={"sortinxdirection mt15"}>
{ {
items&&items.program_attr&&items.program_attr.description? items&&items.program_attr&&items.program_attr.description?
<p className="programquill" style={{wordBreak: "break-word"}} <p className="programquill" style={{wordBreak: "break-word"}}
> >
{
itemsnamesy===null || itemsnamesy===undefined?
""
:
<QuillForEditor <QuillForEditor
readOnly={true} readOnly={true}
value={itemsnamesy} value={itemsnamesy}
/> />
}
</p> </p>
:"" :""
} }
@ -311,8 +319,8 @@ class Listjihe extends Component {
{ {
items.choosed === true ? items.choosed === true ?
<p className="selectionss xiaoshou" onClick={() => this.Selectingpracticaltrainings(items.id)}> <p className="selectionss xiaoshou" onClick={() => this.Selectingpracticaltrainings(items.id)}>
<i className="iconfont icon-jianhao font-12 lg ml7 lh30 icontianjiadaohangcolor mr5"></i> {/*<i className="iconfont icon-jianhao font-12 lg ml7 lh30 icontianjiadaohangcolor mr5"></i>*/}
<span className="mr15 lh30">撤销</span></p> <span className=" lh30">撤销</span></p>
: :
items.item_type === "PROGRAM" ? items.item_type === "PROGRAM" ?
items.program_attr.status === 0 ? items.program_attr.status === 0 ?
@ -366,6 +374,7 @@ class Listjihe extends Component {
{ {
items.public === false ? items.public === false ?
items.item_type === "PROGRAM" ? items.item_type === "PROGRAM" ?
(
items.program_attr.status === 0 ? items.program_attr.status === 0 ?
"" ""
: :
@ -375,15 +384,32 @@ class Listjihe extends Component {
<span>公开</span> <span>公开</span>
</p> </p>
: :
(
items.public==true?
"" ""
:
<p className="viewparsings xiaoshou mr25" onClick={(e) => this.props.showmodelsInaudit(e)}>
<i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
<span>公开审核中</span>
</p>
)
)
:items.apply===false? :items.apply===false?
<p className="viewparsings xiaoshou mr25" onClick={() => this.props.showmodels(items.id)}> <p className="viewparsings xiaoshou mr25" onClick={() => this.props.showmodels(items.id)}>
<i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i> <i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
<span>公开</span> <span>公开</span>
</p> </p>
: :
(
items.public==true?
"" ""
: :
<p className="viewparsings xiaoshou mr25" onClick={(e) => this.props.showmodelsInaudit(e)}>
<i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
<span>公开审核中</span>
</p>
)
:
"" ""
} }
@ -433,7 +459,12 @@ class Listjihe extends Component {
</div> </div>
<div className=" sortinxdirection mt15 yldxtit"> <div className=" sortinxdirection mt15 yldxtit">
<p className=" testfondex yldxtit programquill" <p className=" testfondex yldxtit "
style={{wordBreak: "break-word"}}
>
解析
</p>
<p id={"analysisnamesid"} className="wt930px testfondex yldxtit programquill"
style={{wordBreak: "break-word"}} style={{wordBreak: "break-word"}}
> >
{items ? {items ?
@ -442,6 +473,7 @@ class Listjihe extends Component {
"" ""
: :
items.analysis.length>0? items.analysis.length>0?
analysisnames===null || analysisnames===undefined?"":
<QuillForEditor <QuillForEditor
imgAttrs={{width: '60px', height: '30px'}} imgAttrs={{width: '60px', height: '30px'}}
readOnly={true} readOnly={true}

@ -12,7 +12,15 @@ class PaperDeletModel extends Component {
newkntypeinput:"" newkntypeinput:""
} }
} }
isNull=( str )=>{
if ( str == "" ) return true;
var regu = "^[ ]+$";
var re = new RegExp(regu);
//为空或纯空格为 true    有值为false
console.log(re.test(str))
return re.test(str);
}
handleChange=(e)=>{ handleChange=(e)=>{
// this.setState({ // this.setState({
@ -20,6 +28,10 @@ class PaperDeletModel extends Component {
// }) // })
// //console.log(e.target.value); // //console.log(e.target.value);
// //console.log(e.target.value.length); // //console.log(e.target.value.length);
if(this.isNull(e.target.value)===true){
this.props.showNotification('不能输入空格');
return
}
this.setState({ this.setState({
newkntypeinput: e.target.value newkntypeinput: e.target.value
}) })
@ -60,7 +72,7 @@ class PaperDeletModel extends Component {
> >
<div className="educouddiv"> <div className="educouddiv">
<div className={this.props.boolred===true?"tabeltext-alignleft mt10 inpustred":"tabeltext-alignleft mt10"}> <div className={this.props.boolred===true?"tabeltext-alignleft mt10 inpustred":"tabeltext-alignleft mt10"}>
<Input onInput={this.handleChange} maxLength={16} onBlur={this.mysinputOnBlur } onFocus={this.inputOnFocus }/> <Input onInput={this.handleChange} maxLength={15} onBlur={this.mysinputOnBlur } onFocus={this.inputOnFocus }/>
</div> </div>
<div className="clearfix mt30 edu-txt-center"> <div className="clearfix mt30 edu-txt-center">
<a className="task-btn mr30 w80" onClick={()=>this.props.NewknTypedeldel(false)}>取消</a> <a className="task-btn mr30 w80" onClick={()=>this.props.NewknTypedeldel(false)}>取消</a>

@ -0,0 +1,42 @@
import React, { Component } from 'react';
import {getImageUrl} from 'educoder';
import { Modal} from 'antd';
import axios from 'axios';
import './../questioncss/questioncom.css'
//立即申请试用
class QuestionModalys 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 task-btn-orange w80" onClick={()=>this.props.setDownload()}>知道啦</a>
</div>
</div>
</Modal>
)
}
}
export default QuestionModalys;

@ -253,7 +253,11 @@ class SingleEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/; const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if (!reg.test(_text)) { if (!reg.test(_text)) {
// 处理编辑器内容为空 // 处理编辑器内容为空
try {
texts= JSON.stringify(value)
}catch (e) {
texts=""; texts="";
}
} else { } else {
if(_text.length>=301){ if(_text.length>=301){
var result = _text.substring(0,300); var result = _text.substring(0,300);
@ -291,9 +295,15 @@ class SingleEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/; const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if (!reg.test(_text)) { if (!reg.test(_text)) {
// 处理编辑器内容为空 // 处理编辑器内容为空
try {
this.setState({
question_titleysl: JSON.stringify(value)
})
}catch (e) {
this.setState({ this.setState({
question_titleysl:"" question_titleysl:""
}) })
}
} else { } else {
// 提交到后台的内容需要处理一下; // 提交到后台的内容需要处理一下;
@ -322,9 +332,15 @@ class SingleEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/; const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if (!reg.test(_text)) { if (!reg.test(_text)) {
// 处理编辑器内容为空 // 处理编辑器内容为空
try {
this.setState({
question_titlesysl:JSON.stringify(value)
})
}catch (e) {
this.setState({ this.setState({
question_titlesysl:"" question_titlesysl:""
}) })
}
} else { } else {
var texts=""; var texts="";
if(_text.length>=1001){ if(_text.length>=1001){

@ -41,7 +41,7 @@ const options = [
], ],
}, },
]; ];
//Itembankstop 题库的 //Itembankstop Intelligentcomponents 题库的
class Comthetestpaperst extends Component { class Comthetestpaperst extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -56,6 +56,7 @@ class Comthetestpaperst extends Component {
options: [], options: [],
NewknTypedel:false, NewknTypedel:false,
boolred:false, boolred:false,
sub_disciplineslength:1,
} }
} }
setboolred=(bool)=>{ setboolred=(bool)=>{
@ -413,11 +414,16 @@ class Comthetestpaperst extends Component {
const didata = this.props.disciplinesdata; const didata = this.props.disciplinesdata;
const knowledgepointsdata = []; const knowledgepointsdata = [];
var sub_disciplineslength=0;
for (var i = 0; i < didata.length; i++) { for (var i = 0; i < didata.length; i++) {
//方向 //方向
if (value[0] === didata[i].id) { if (value[0] === didata[i].id) {
const fxdidata = didata[i].sub_disciplines; const fxdidata = didata[i].sub_disciplines;
try {
sub_disciplineslength=fxdidata.length;
}catch (e) {
}
for (var j = 0; j < fxdidata.length; j++) { for (var j = 0; j < fxdidata.length; j++) {
//课程 //课程
if (value[1] === fxdidata[j].id) { if (value[1] === fxdidata[j].id) {
@ -441,6 +447,7 @@ class Comthetestpaperst extends Component {
Knowpoints: [], Knowpoints: [],
knowledgepoints: knowledgepointsdata, knowledgepoints: knowledgepointsdata,
knowledgepoints2:knowledgepointsdata, knowledgepoints2:knowledgepointsdata,
sub_disciplineslength:sub_disciplineslength,
}) })
this.props.form.setFieldsValue({ this.props.form.setFieldsValue({
@ -686,6 +693,9 @@ class Comthetestpaperst extends Component {
</Form.Item> </Form.Item>
</div> </div>
</div> </div>
{
this.state.sub_disciplineslength===null || this.state.sub_disciplineslength===undefined||this.state.sub_disciplineslength===0?"":
<div className="zsdd"> <div className="zsdd">
<Form.Item <Form.Item
label="知识点" label="知识点"
@ -714,6 +724,8 @@ class Comthetestpaperst extends Component {
)} )}
</Form.Item> </Form.Item>
</div> </div>
}
{ {
this.state.Knowpoints===undefined||this.state.Knowpoints===null?"": this.state.Knowpoints===undefined||this.state.Knowpoints===null?"":
this.state.Knowpoints.length>0? this.state.Knowpoints.length>0?

@ -20,7 +20,9 @@ import Newknledpots from '../component/Newknledpots';
import Ldanxuan from './lntlligentpone'; import Ldanxuan from './lntlligentpone';
const InputGroup = Input.Group; const InputGroup = Input.Group;
const {Option} = Select; const {Option} = Select;
//Itembankstop Comthetestpaperst 题库的 // Comthetestpaperst 题库的
// Itembankstop 题库的
class Intelligentcomponents extends Component { class Intelligentcomponents extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -35,7 +37,8 @@ class Intelligentcomponents extends Component {
options: [], options: [],
NewknTypedel:false, NewknTypedel:false,
boolred:false, boolred:false,
rbly:"1" rbly:"1",
sub_disciplineslength:1,
} }
} }
setboolred=(bool)=>{ setboolred=(bool)=>{
@ -310,11 +313,16 @@ class Intelligentcomponents extends Component {
const didata = this.props.disciplinesdata; const didata = this.props.disciplinesdata;
const knowledgepointsdata = []; const knowledgepointsdata = [];
var sub_disciplineslength=0;
for (var i = 0; i < didata.length; i++) { for (var i = 0; i < didata.length; i++) {
//方向 //方向
if (value[0] === didata[i].id) { if (value[0] === didata[i].id) {
const fxdidata = didata[i].sub_disciplines; const fxdidata = didata[i].sub_disciplines;
try {
sub_disciplineslength=fxdidata.length;
}catch (e) {
}
for (var j = 0; j < fxdidata.length; j++) { for (var j = 0; j < fxdidata.length; j++) {
//课程 //课程
if (value[1] === fxdidata[j].id) { if (value[1] === fxdidata[j].id) {
@ -597,6 +605,8 @@ class Intelligentcomponents extends Component {
</Form.Item> </Form.Item>
</div> </div>
</div> </div>
{
this.state.sub_disciplineslength === null || this.state.sub_disciplineslength === undefined || this.state.sub_disciplineslength === 0 ? "" :
<div className="zsdd"> <div className="zsdd">
<Form.Item <Form.Item
label="知识点" label="知识点"
@ -625,6 +635,8 @@ class Intelligentcomponents extends Component {
)} )}
</Form.Item> </Form.Item>
</div> </div>
}
{ {
this.state.Knowpoints===undefined||this.state.Knowpoints===null?"": this.state.Knowpoints===undefined||this.state.Knowpoints===null?"":
this.state.Knowpoints.length>0? this.state.Knowpoints.length>0?

@ -705,6 +705,9 @@
font-size: 14px; font-size: 14px;
} }
.testfondexsysl{
width:5% !important;
}
.yldxtits{ .yldxtits{
color: #888888; color: #888888;
font-size: 14px; font-size: 14px;
@ -712,7 +715,9 @@
.mt25{ .mt25{
margin-top: 25px; margin-top: 25px;
} }
.wt930px{
width: 930px !important;
}
.postitonrelati{ .postitonrelati{
position: relative; position: relative;
} }
@ -950,6 +955,12 @@
.mr15{ .mr15{
margin-right: 15px; margin-right: 15px;
} }
.ant-modal-mask{
z-index: 6000 !important;
}
.ant-modal-wrap{
z-index: 6000 !important;
}
.fangdatwo{ .fangdatwo{
background: #fefefe; background: #fefefe;
background-color: #fefefe; background-color: #fefefe;
@ -960,7 +971,7 @@
top:0px; top:0px;
bottom: 0px; bottom: 0px;
left: 0px; left: 0px;
z-index: 999999; z-index: 5000;
right: 0px; right: 0px;
} }
@ -1066,3 +1077,18 @@
.lh34{ .lh34{
line-height: 34px !important; line-height: 34px !important;
} }
.titesstwos{
position: relative;
}
.titesstwostest{
position: absolute;
}
.text-indents40{
text-indent:40px
}
.text-indents44{
text-indent:44px
}
.text-indents50{
text-indent: 50px
}

@ -18,6 +18,7 @@ import SiderBar from "../tpm/SiderBar";
import Headplugselections from "../question/component/Headplugselections"; import Headplugselections from "../question/component/Headplugselections";
import QuestionModal from "./component/QuestionModal"; import QuestionModal from "./component/QuestionModal";
import QuestionModals from "./component/QuestionModals"; import QuestionModals from "./component/QuestionModals";
import QuestionModalys from "./component/QuestionModalys";
class Testpaperlibrary extends Component { class Testpaperlibrary extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -30,7 +31,7 @@ class Testpaperlibrary extends Component {
public:null, public:null,
difficulty:null, difficulty:null,
item_type:null, item_type:null,
keywords:null, keyword:null,
page:1, page:1,
per_page:10, per_page:10,
booljupyterurls:false, booljupyterurls:false,
@ -40,6 +41,7 @@ class Testpaperlibrary extends Component {
modalsTypes:false, modalsTypes:false,
modalsType:false, modalsType:false,
timuid:0, timuid:0,
modalsTypeInaudit:false,
} }
} }
getContainer = () => { getContainer = () => {
@ -88,7 +90,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id, tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
keywords: null, keyword: null,
per_page:10, per_page:10,
} }
this.getdata(data); this.getdata(data);
@ -96,14 +98,14 @@ class Testpaperlibrary extends Component {
setdatafunsval = (e) => { setdatafunsval = (e) => {
this.setState({ this.setState({
keywords: e.target.value keyword: e.target.value
}) })
} }
setdatafuns = (value) => { setdatafuns = (value) => {
this.setState({ this.setState({
keywords: value, keyword: value,
}) })
var data={ var data={
page:this.state.page, page:this.state.page,
@ -112,7 +114,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id, tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
keywords: value, keyword: value,
per_page:10, per_page:10,
} }
this.getdata(data); this.getdata(data);
@ -121,7 +123,7 @@ class Testpaperlibrary extends Component {
this.setState({ this.setState({
defaultActiveKey: key, defaultActiveKey: key,
difficulty:null, difficulty:null,
keywords:null, keyword:null,
page:1, page:1,
}) })
var data={ var data={
@ -131,18 +133,23 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id, tag_discipline_id:this.state.tag_discipline_id,
public: key, public: key,
difficulty:null, difficulty:null,
keywords: null, keyword: null,
per_page:10, per_page:10,
} }
this.getdata(data); this.getdata(data);
} }
//获取数据 //获取数据
getdata=(data)=>{ getdata=(data,bool)=>{
const url = `/examination_banks.json`; const url = `/examination_banks.json`;
if(bool){
}else {
this.setState({ this.setState({
booljupyterurls:true, booljupyterurls:true,
}) })
}
axios.get((url), {params: data}).then((response) => { axios.get((url), {params: data}).then((response) => {
setTimeout(()=>{ setTimeout(()=>{
this.setState({ this.setState({
@ -177,7 +184,7 @@ class Testpaperlibrary extends Component {
discipline_id:discipline_id, discipline_id:discipline_id,
sub_discipline_id:null, sub_discipline_id:null,
tag_discipline_id:null, tag_discipline_id:null,
keywords:null, keyword:null,
page: 1, page: 1,
per_page:10, per_page:10,
}) })
@ -187,7 +194,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:null, tag_discipline_id:null,
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.props.difficulty, difficulty: this.props.difficulty,
keywords: null, keyword: null,
page: 1, page: 1,
per_page:10, per_page:10,
}; };
@ -198,7 +205,7 @@ class Testpaperlibrary extends Component {
this.setState({ this.setState({
sub_discipline_id:sub_discipline_id, sub_discipline_id:sub_discipline_id,
tag_discipline_id:null, tag_discipline_id:null,
keywords:null, keyword:null,
page:1, page:1,
per_page:10, per_page:10,
}) })
@ -208,7 +215,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:null, tag_discipline_id:null,
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
keywords: null, keyword: null,
page:1, page:1,
per_page:10, per_page:10,
}; };
@ -218,7 +225,7 @@ class Testpaperlibrary extends Component {
settag_discipline_id=(tag_discipline_id)=>{ settag_discipline_id=(tag_discipline_id)=>{
this.setState({ this.setState({
tag_discipline_id:tag_discipline_id, tag_discipline_id:tag_discipline_id,
keywords:null, keyword:null,
page:1, page:1,
per_page:10, per_page:10,
}) })
@ -228,7 +235,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:tag_discipline_id, tag_discipline_id:tag_discipline_id,
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
keywords: null, keyword: null,
page: 1, page: 1,
per_page:10, per_page:10,
}; };
@ -284,11 +291,11 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id, tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
}; };
this.getdata(data); this.getdata(data,true);
} }
}).catch((error) => { }).catch((error) => {
////console.log(error); ////console.log(error);
@ -310,11 +317,11 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id, tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
keywords: this.state.keywords, keyword: this.state.keywords,
page: this.state.page, page: this.state.page,
per_page:10, per_page:10,
}; };
this.getdata(data); this.getdata(data,true);
} }
}) })
.catch(function (error) { .catch(function (error) {
@ -325,8 +332,8 @@ class Testpaperlibrary extends Component {
showmodels = (id) => { showmodels = (id) => {
this.setState({ this.setState({
modalsType: true, modalsType: true,
titilesm: "设为公开后,所有成员均可使用试卷", titilesm: "在平台审核后,所有成员均可使用试卷",
titiless: "是否设置为公开", titiless: "是否设置为公开",
titbool: true, titbool: true,
timuid: id timuid: id
}) })
@ -337,7 +344,19 @@ class Testpaperlibrary extends Component {
} }
showmodelsInaudit = (e) => {
this.setState({
modalsTypeInaudit: true,
titilesm: "公开申请已提交,请等待管理员的审核",
titiless: "我们将在1-2个工作日内完成审核",
})
};
modalsTypeInauditbool=()=>{
this.setState({
modalsTypeInaudit:false,
})
}
showmodelysl = (id) => { showmodelysl = (id) => {
this.setState({ this.setState({
@ -353,7 +372,7 @@ class Testpaperlibrary extends Component {
this.setState({ this.setState({
difficulty: difficulty, difficulty: difficulty,
visiblemys: false, visiblemys: false,
keywords:"", keyword:"",
page: 1, page: 1,
per_page:10, per_page:10,
}) })
@ -364,7 +383,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id, tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: difficulty, difficulty: difficulty,
keywords:null, keyword:null,
page:1, page:1,
per_page:10, per_page:10,
}; };
@ -379,7 +398,7 @@ class Testpaperlibrary extends Component {
this.setState({ this.setState({
item_type: item_type, item_type: item_type,
visiblemyss: false, visiblemyss: false,
keywords:null, keyword:null,
page: 1, page: 1,
per_page:10, per_page:10,
}) })
@ -391,7 +410,7 @@ class Testpaperlibrary extends Component {
public: this.state.defaultActiveKey, public: this.state.defaultActiveKey,
difficulty: this.state.difficulty, difficulty: this.state.difficulty,
item_type: item_type, item_type: item_type,
keywords:"", keyword:"",
page: 1, page: 1,
per_page:10, per_page:10,
}; };
@ -403,7 +422,7 @@ class Testpaperlibrary extends Component {
render() { render() {
let{Headertop,items_count,page,per_page,modalsTypes,modalsType}=this.state; let{Headertop,items_count,page,per_page,modalsTypes,modalsType,modalsTypeInaudit}=this.state;
const isysladmins=this.props&&this.props.current_user&&this.props.current_user.admin?this.props.current_user.admin:false; const isysladmins=this.props&&this.props.current_user&&this.props.current_user.admin?this.props.current_user.admin:false;
const is_teacher=this.props&&this.props.current_user&&this.props.current_user.is_teacher?this.props.current_user.is_teacher:false; const is_teacher=this.props&&this.props.current_user&&this.props.current_user.is_teacher?this.props.current_user.is_teacher:false;
@ -424,6 +443,12 @@ class Testpaperlibrary extends Component {
setDownload={() => this.setDownload()}></QuestionModal> setDownload={() => this.setDownload()}></QuestionModal>
:"" :""
} }
{
modalsTypeInaudit===true?
<QuestionModalys {...this.props}{...this.state} modalsType={modalsTypeInaudit} modalCancel={() => this.modalsTypeInauditbool()}
setDownload={() => this.modalsTypeInauditbool()}></QuestionModalys>
:""
}
{/*试卷库*/} {/*试卷库*/}
<SiderBar <SiderBar
{...this.props} {...this.props}
@ -452,6 +477,8 @@ class Testpaperlibrary extends Component {
callback={(key)=>this.callback(key)} callback={(key)=>this.callback(key)}
setdatafunsval={(key)=>this.setdatafunsval(key)} setdatafunsval={(key)=>this.setdatafunsval(key)}
setdifficulty={(bool)=>this.setdifficulty(bool)} setdifficulty={(bool)=>this.setdifficulty(bool)}
showmodelsInaudit={(e)=>this.showmodelsInaudit(e)}
> >
</Contentpart> </Contentpart>

@ -222,6 +222,7 @@ class Contentpart extends Component {
showmodels={(e)=>this.props.showmodels(e)} showmodels={(e)=>this.props.showmodels(e)}
showmodelysl={(e)=>this.props.showmodelysl(e)} showmodelysl={(e)=>this.props.showmodelysl(e)}
Isitapopup={this.props.Isitapopup} Isitapopup={this.props.Isitapopup}
showmodelsInaudit={(e)=>this.props.showmodelsInaudit(e)}
> >
</Listjihe> </Listjihe>

@ -80,7 +80,7 @@ class Listjihe extends Component {
<img src={getImageUrl("images/educoder/shijuans.png")} className="imgtp"/> <img src={getImageUrl("images/educoder/shijuans.png")} className="imgtp"/>
</div> </div>
<div className="w100s verticallayout ml20" > <div className="w100s verticallayout ml20" >
<div className="w100s " > <p className="sjtitle xiaoshou" onClick={()=>this.gotoseesj(items.id)}>{names}</p></div> <div className="w100s " > <a className="sjtitle xiaoshou " title={names} onClick={()=>this.gotoseesj(items.id)}><p className="maxnamewidth100s">{names}</p></a></div>
<div className="w100s sortinxdirection mt9"> <div className="w100s sortinxdirection mt9">
<p className="sjtitles">试题数<span >{question_counts}</span></p> <p className="sjtitles">试题数<span >{question_counts}</span></p>
<p className="sjtitles ml48">总分<span >{total_scores}</span></p> <p className="sjtitles ml48">总分<span >{total_scores}</span></p>
@ -92,9 +92,15 @@ class Listjihe extends Component {
更新时间<span>{update_times}</span> 更新时间<span>{update_times}</span>
</p> </p>
{
quotess===null||quotess===undefined||quotess===0?
""
:
<p className='sjtitlesysl ml30'> <p className='sjtitlesysl ml30'>
使用次数<span>{quotess}</span> 使用次数<span>{quotess}</span>
</p> </p>
}
{ {
defaultActiveKey===1||defaultActiveKey==="1"? defaultActiveKey===1||defaultActiveKey==="1"?
<p className='sjtitlesysl ml30'> <p className='sjtitlesysl ml30'>
@ -127,12 +133,21 @@ class Listjihe extends Component {
} }
{ {
items.public === false ? items.apply===false?
<p className="viewparsings xiaoshou mr25 " onClick={() => this.props.showmodels(items.id)}> <p className="viewparsings xiaoshou mr25 " onClick={() => this.props.showmodels(items.id)}>
<i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i> <i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
<span>公开</span> <span>公开</span>
</p> </p>
:"" :
(
items.public==true?
""
:
<p className="viewparsings xiaoshou mr25" onClick={(e) => this.props.showmodelsInaudit(e)}>
<i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
<span>公开审核中</span>
</p>
)
} }
</div> </div>
:""} :""}

@ -24,6 +24,7 @@ const tagArray = [
] ]
//单选题 //单选题
//Paperreview_single.js Listjihe.js
class Paperlibraryseeid_items extends Component { class Paperlibraryseeid_items extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
@ -160,10 +161,16 @@ class Paperlibraryseeid_items extends Component {
</div> </div>
<div className="ml10 lh28 listjihetixingstit cretitlecolrlist programquill" style={{wordBreak: "break-word"}} <div className="ml10 lh28 listjihetixingstit cretitlecolrlist programquill" style={{wordBreak: "break-word"}}
> >
{
itemssname===null || itemssname===undefined?
""
:
<QuillForEditor <QuillForEditor
readOnly={true} readOnly={true}
value={itemssname} value={itemssname}
/> />
}
</div> </div>
</div> </div>
@ -196,10 +203,16 @@ class Paperlibraryseeid_items extends Component {
objectsingle&&objectsingle.program_attr&&objectsingle.program_attr.description? objectsingle&&objectsingle.program_attr&&objectsingle.program_attr.description?
<p className="programquill" style={{wordBreak: "break-word"}} <p className="programquill" style={{wordBreak: "break-word"}}
> >
{
itemsnamesy===null|| itemsnamesy===undefined?
""
:
<QuillForEditor <QuillForEditor
readOnly={true} readOnly={true}
value={itemsnamesy} value={itemsnamesy}
/> />
}
</p> </p>
: :
""} ""}

@ -0,0 +1,42 @@
import React, { Component } from 'react';
import {getImageUrl} from 'educoder';
import { Modal} from 'antd';
import axios from 'axios';
import './../../question/questioncss/questioncom.css'
//立即申请试用
class QuestionModalys 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 task-btn-orange w80" onClick={()=>this.props.setDownload()}>知道啦</a>
</div>
</div>
</Modal>
)
}
}
export default QuestionModalys;

@ -927,3 +927,10 @@
color:rgba(51,51,51,1); color:rgba(51,51,51,1);
line-height:19px; line-height:19px;
} }
.maxnamewidth100s{
max-width: 774px;
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
cursor: default;
}

@ -940,10 +940,9 @@ submittojoinclass=(value)=>{
width:'93px', width:'93px',
height:'80px', height:'80px',
}}> }}>
<a href={'/question'} ><p className="questiontype">试题库</p></a> <a href={'/question'} className={"popovertests"} ><p className="questiontype">试题库</p></a>
<p className="questiontypeheng"></p>
<a href={'/paperlibrary'} ><p className="questiontype">试卷库</p></a>
<p className="questiontypeheng"></p> <p className="questiontypeheng"></p>
<a href={'/paperlibrary'} className={"popovertests"} ><p className="questiontype">试卷库</p></a>
</div> </div>
); );
return ( return (
@ -951,7 +950,7 @@ submittojoinclass=(value)=>{
<div className="newHeaders" id="nHeader" > <div className="newHeaders" id="nHeader" >
<style>{ <style>{
` `
body .questionbanks .ant-popover-inner-content { body #yslpopovers .ant-popover-inner-content{
padding:0px !important; padding:0px !important;
} }
` `
@ -1037,6 +1036,12 @@ submittojoinclass=(value)=>{
<style> <style>
{ {
` `
.questiontype{
color:#010101 !important;
}
.popovertests{
color:#010101 !important;
}
.queyppors { .queyppors {
top: 63px !important; top: 63px !important;
} }
@ -1047,17 +1052,17 @@ submittojoinclass=(value)=>{
` `
} }
</style> </style>
{/*<li className={`pr questionbanks`}>*/} <li className={`pr questionbanks`} >
{/* <Popover placement="bottom" content={contents} trigger="click" >*/} <Popover className="queyppors" id={"yslpopovers"} placement="bottom" content={contents} trigger="click" >
{/* <div className=" sortinxdirection mr10">*/} <div className=" sortinxdirection mr10">
{/* <div style={{*/} <div style={{
{/* color:"#fff"*/} color:"#fff"
{/* }}>*/} }}>
{/* 题库*/} 题库
{/* </div>*/} </div>
{/* </div>*/} </div>
{/* </Popover>*/} </Popover>
{/*</li>*/} </li>
<li <li
style={{display: this.props.Headertop === undefined ? 'none' : this.props.Headertop.auth === null ? 'none' : 'block'}} style={{display: this.props.Headertop === undefined ? 'none' : this.props.Headertop.auth === null ? 'none' : 'block'}}

Loading…
Cancel
Save