Merge branches 'dev_item_bank', 'dev_jupyter' and 'dev_new_shixunsrepository' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_new_shixunsrepository

dev_new_shixunsrepository
杨树明 5 years ago
commit f5df1595f1

@ -13,7 +13,7 @@ module GitHelper
content = GitService.file_content(repo_path: repo_path, path: path)
Rails.logger.info("git file content: content is #{content}")
#Rails.logger.info("git file content: content is #{content}")
decode_content = nil
if content.present?
content = content["content"] #6.24 -hs 这个为新增,因为当实训题里含有选择题时,这里会报错,undefined method `[]' for nil:NilClass
@ -25,6 +25,8 @@ module GitHelper
decode_content =
if cd["encoding"] == 'GB18030' && cd['confidence'] > 0.8
content.encode('UTF-8', 'GBK', {:invalid => :replace, :undef => :replace, :replace => ' '})
elsif cd['encoding'].blank?
raise("ERROR_UTF8")
else
content.force_encoding('UTF-8')
end
@ -34,7 +36,9 @@ module GitHelper
rescue Exception => e
Rails.logger.error(e.message)
raise Educoder::TipException.new("文档内容获取异常")
error_msg = e.message == "ERROR_UTF8" ? "文件无法预览" : "文档内容获取异常"
error_status = e.message == "ERROR_UTF8" ? -2 : -1
raise Educoder::TipException.new(error_status, error_msg)
end
end

@ -749,6 +749,8 @@ class GamesController < ApplicationController
# 针对web类型的实训
web_route = game_challenge.try(:web_route)
server_url = @game.get_server_url if web_route.present?
mirror_name = @shixun.mirror_name
e_record = EvaluateRecord.where(:identifier => sec_key).first
@ -776,7 +778,7 @@ class GamesController < ApplicationController
@base_date = {grade: grade, gold: score, experience: experience, status: game_status, had_done: had_done,
position: game_challenge.position, port: port, record_consume_time: record_consume_time,
mirror_name: mirror_name, picture: picture, web_route: web_route, star: @game.star,
next_game: next_game, prev_game: prev_game, max_mem: max_mem}
next_game: next_game, prev_game: prev_game, max_mem: max_mem, server_url: server_url}
end
# 记录实训花费的时间
@ -961,7 +963,7 @@ class GamesController < ApplicationController
begin
shixun = game.myshixun.shixun
shixun_tomcat = edu_setting('cloud_bridge')
service_host = edu_setting('vnc_url')
#service_host = edu_setting('vnc_url')
tpiGitURL = "#{edu_setting('git_address_domain')}/#{game.myshixun.repo_path}"
uri = "#{shixun_tomcat}/bridge/vnc/getvnc"
@ -971,14 +973,14 @@ class GamesController < ApplicationController
if res && res['code'].to_i != 0
raise("实训云平台繁忙繁忙等级99")
end
@vnc_url =
if request.subdomain == "pre-newweb" || request.subdomain == "test-newweb"
# 无域名版本
"http://#{service_host}:#{res['port']}/vnc_lite.html?password=headless"
else
# 有域名版本
"https://#{res['port']}.#{service_host}/vnc_lite.html?password=headless"
end
@vnc_url = res['showServer']
# if request.subdomain == "pre-newweb" || request.subdomain == "test-newweb"
# # 无域名版本
# "http://#{service_host}:#{res['port']}/vnc_lite.html?password=headless"
# else
# # 有域名版本
# "https://#{res['port']}.#{service_host}/vnc_lite.html?password=headless"
# end
@vnc_evaluate = shixun.vnc_evaluate
rescue Exception => e
Rails.logger.error(e.message)

@ -99,6 +99,7 @@ class MyshixunsController < ApplicationController
status = jsonTestDetails['status']
game_id = jsonTestDetails['buildID']
sec_key = jsonTestDetails['sec_key']
server_url = jsonTestDetails['showServer']
uid_logger_dubug("training_task_status start-#{game_id}-1#{Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")}")
resubmit = jsonTestDetails['resubmit']
@ -117,6 +118,10 @@ class MyshixunsController < ApplicationController
pics = params[:tpiRepoPath]
game.update_column(:picture_path, pics)
end
# 如果启动了服务则存在redis中供前端访问
if server_url.present?
game.set_server_key(server_url)
end
max_query_index = game.outputs ? (game.outputs.first.try(:query_index).to_i + 1) : 1
test_set_score = 0
unless jenkins_testsets.blank?

@ -3,6 +3,7 @@ class ShixunsController < ApplicationController
include ApplicationHelper
include ElasticsearchAble
include CoursesHelper
include GitCommon
before_action :require_login, :check_auth, except: [:download_file, :index, :menus, :show, :show_right, :ranking_list,
:discusses, :collaborators, :fork_list, :propaedeutics]
@ -878,7 +879,7 @@ class ShixunsController < ApplicationController
end
end
include GitCommon
def update_file
content = params[:content]

@ -29,6 +29,19 @@ class Game < ApplicationRecord
validates :identifier, uniqueness: true
# 服务器uri+port的redis的key
def server_key
"game_server_url_#{id}"
end
def set_server_key(server_url)
Rails.cache.write("#{server_key}", server_url, expires_in: 5.minute)
end
def get_server_url
Rails.cache.read(server_key)
end
# 根据得分比例来算实际得分(试卷、实训作业)
def real_score score
((final_score < 0 ? 0 : final_score).to_f / challenge.score) * score

@ -20,6 +20,7 @@ import {TPMIndexHOC} from "../tpm/TPMIndexHOC";
import NoneData from './component/NoneData';
import './questioncss/questioncom.css';
import Bottomsubmit from "../modals/Bottomsubmit";
import QuestionModalys from "./component/QuestionModalys";
//exam_id 试卷的id
class NewMyShixunModel extends Component {
@ -67,15 +68,28 @@ class NewMyShixunModel extends Component {
oj_status:null,
isVisible: false,
selectionbools:false,
chakanjiexiboolindex:"无",
}
}
chakanjiexibool=(index)=>{
if(this.state.chakanjiexiboolindex===index){
this.setState({
chakanjiexiboolindex:"无",
})
return
}
this.setState({
chakanjiexiboolindex:index,
})
}
setdiscipline_id=(discipline_id)=>{
this.setState({
discipline_id:discipline_id,
sub_discipline_id:null,
tag_discipline_id:null,
keywords:"",
keyword:"",
page:1,
per_page:10,
oj_status:null
@ -87,7 +101,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: null,
keyword: null,
page: this.state.page,
per_page:10,
oj_status:null,
@ -101,7 +115,7 @@ class NewMyShixunModel extends Component {
this.setState({
sub_discipline_id:sub_discipline_id,
tag_discipline_id:null,
keywords:"",
keyword:"",
page:1,
per_page:10,
oj_status:null
@ -113,7 +127,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords:null,
keyword:null,
page: 1,
per_page:10,
oj_status:null,
@ -125,7 +139,7 @@ class NewMyShixunModel extends Component {
settag_discipline_id=(tag_discipline_id)=>{
this.setState({
tag_discipline_id:tag_discipline_id,
keywords:"",
keyword:"",
page:1,
per_page:10,
oj_status:null
@ -137,7 +151,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: null,
keyword: null,
page: 1,
per_page:10,
oj_status:null,
@ -355,7 +369,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: pageNumber,
per_page:10,
oj_status:this.state.oj_status,
@ -463,7 +477,7 @@ class NewMyShixunModel extends Component {
visiblemys: false,
page: 1,
per_page:10,
keywords:"",
keyword:"",
oj_status:null
})
@ -474,7 +488,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: difficulty,
item_type: this.state.item_type,
keywords:null,
keyword:null,
page:1,
per_page:10,
oj_status:null,
@ -490,7 +504,7 @@ class NewMyShixunModel extends Component {
visiblemyss: false,
page: 1,
per_page:10,
keywords:"",
keyword:"",
oj_status:null
})
@ -503,7 +517,7 @@ class NewMyShixunModel extends Component {
item_type: item_type,
page: 1,
per_page:10,
keywords:null,
keyword:null,
oj_status:null,
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) => {
if (this.state.visiblemys === true) {
@ -541,13 +568,13 @@ class NewMyShixunModel extends Component {
setdatafunsval = (e) => {
this.setState({
keywords: e.target.value
keyword: e.target.value
})
}
setdatafuns = (value) => {
this.setState({
keywords: value,
keyword: value,
})
var data = {
discipline_id:this.state.discipline_id,
@ -556,7 +583,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: value,
keyword: value,
page: this.state.page,
per_page:10,
oj_status:this.state.oj_status,
@ -581,7 +608,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -607,7 +634,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -675,7 +702,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -706,7 +733,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -732,7 +759,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -805,7 +832,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
@ -842,7 +869,7 @@ class NewMyShixunModel extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
oj_status:oj_status,
@ -856,7 +883,8 @@ class NewMyShixunModel extends Component {
let {
page, per_page, items_count, Headertop, visible, placement, modalsType, modalsTypes,basket_list,
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;
const Datacount = completion_questions_count + judgement_questions_count
@ -914,7 +942,12 @@ class NewMyShixunModel extends Component {
setDownload={() => this.setDownload()}></QuestionModal>
:""
}
{
modalsTypeInaudit===true?
<QuestionModalys {...this.props}{...this.state} modalsType={modalsTypeInaudit} modalCancel={() => this.modalsTypeInauditbool()}
setDownload={() => this.modalsTypeInauditbool()}></QuestionModalys>
:""
}
{/*顶部*/}
<Headplugselections
@ -931,6 +964,8 @@ class NewMyShixunModel extends Component {
<Contentpart {...this.state} {...this.props}
exam_id={this.props.exam_id}
Isitapopup={"true"}
chakanjiexiboolindex={this.state.chakanjiexiboolindex}
chakanjiexibool={(e)=>this.chakanjiexibool(e)}
getitem_basketss={(id)=>this.getitem_basketss(id)}
selectallquestionsonthispage={()=>this.selectallquestionsonthispage()}
getitem_baskets={(e)=>this.getitem_baskets(e)}
@ -941,7 +976,10 @@ class NewMyShixunModel extends Component {
showmodels={(e) => this.showmodels(e)}
showmodelysl={(e) => this.showmodelysl(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?

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

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

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

@ -319,7 +319,9 @@ class Contentpart extends Component {
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)}>
showmodelysl={(e)=>this.props.showmodelysl(e)}
showmodelsInaudit={(e)=>this.props.showmodelsInaudit(e)}
>
</Listjihe>
)

@ -231,11 +231,16 @@ class Headplugselections extends Component {
{
disciplinesdata&&disciplinesdata.map((item,key)=>{
return(
<Dropdown getPopupContainer={trigger => trigger.parentNode} overlay={overlaymenu(item.sub_disciplines,item.id)} key={key} placement={item.id<4?"bottomRight":item.id>=8?"bottomLeft":"bottomCenter"}>
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"}>
<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>
</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>
</Dropdown>
)
})
}

@ -58,7 +58,7 @@ class Itembankstop extends Component {
NewknTypedel:false,
boolred:false,
boolnews:false,
sub_disciplineslength:1,
}
}
@ -463,15 +463,22 @@ class Itembankstop extends Component {
const didata = this.props.disciplinesdata;
const knowledgepointsdata = [];
var sub_disciplineslength=0;
for (var i = 0; i < didata.length; i++) {
//方向
if (value[0] === didata[i].id) {
const fxdidata = didata[i].sub_disciplines;
try {
sub_disciplineslength=fxdidata.length;
}catch (e) {
}
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]);
@ -491,6 +498,7 @@ class Itembankstop extends Component {
Knowpoints: [],
knowledgepoints: knowledgepointsdata,
knowledgepoints2:knowledgepointsdata,
sub_disciplineslength:sub_disciplineslength,
})
this.props.form.setFieldsValue({
@ -559,10 +567,15 @@ class Itembankstop extends Component {
}
NewknTypedeldel=(bool)=>{
if(this.state.rbkc===undefined || this.state.rbkc===null || this.state.rbkc===""){
this.props.showNotification(`请选择课程方向`);
return;
}
// if(this.state.sub_disciplineslength===undefined || this.state.sub_disciplineslength===null || this.state.sub_disciplineslength===0){
// this.props.showNotification(`无二级课程时没有新建入口`);
// return;
// }
this.setState({
NewknTypedel:bool
})
@ -723,20 +736,22 @@ class Itembankstop extends Component {
)}
</Form.Item>
</div>
<Form.Item
{
this.state.sub_disciplineslength===null || this.state.sub_disciplineslength===undefined||this.state.sub_disciplineslength===0?"":
<Form.Item
label="知识点"
>
>
{getFieldDecorator("rbzsd"
)(
<div className="sortinxdirection">
<Select style={{width: '270px'}} value={undefined} onChange={this.handleFormkechen}
placeholder="请选择...">
{knowledgepoints2 && knowledgepoints2.map((object, index) => {
return (
<Option key={object.id} value={object.id}>{object.name}</Option>
)
})}
</Select>
<Select style={{width: '270px'}} value={undefined} onChange={this.handleFormkechen}
placeholder="请选择...">
{knowledgepoints2 && knowledgepoints2.map((object, index) => {
return (
<Option key={object.id} value={object.id}>{object.name}</Option>
)
})}
</Select>
@ -746,7 +761,10 @@ class Itembankstop extends Component {
</div>
)}
</Form.Item>
</Form.Item>
}
{
this.state.Knowpoints===undefined||this.state.Knowpoints===null?"":
this.state.Knowpoints.length>0?

@ -23,7 +23,7 @@ const tagArrays = [
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'
]
//Paperreview_single.js Paperlibraryseeid_items.js
class Listjihe extends Component {
constructor(props) {
super(props);
@ -151,7 +151,10 @@ class Listjihe extends Component {
}catch (e) {
analysisnames=items&&items.analysis;
}
console.log(items.name);
console.log(itemsnamesy);
console.log(analysisnames);
return (
<div key={keindex}
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?
itemssname===null|| itemssname===undefined?"":
<QuillForEditor
readOnly={true}
value={itemssname}
@ -218,16 +222,20 @@ class Listjihe extends Component {
</p> :
items.item_type === "PROGRAM" ?
<p className="w100s listjihetixingstitssy sortinxdirection ">
<p className={"sortinxdirection mt15"}>
<p id={"itemsnamesyid"} className={"sortinxdirection mt15"}>
{
items&&items.program_attr&&items.program_attr.description?
<p className="programquill" style={{wordBreak: "break-word"}}
>
<QuillForEditor
readOnly={true}
value={itemsnamesy}
/>
{
itemsnamesy===null || itemsnamesy===undefined?
""
:
<QuillForEditor
readOnly={true}
value={itemsnamesy}
/>
}
</p>
:""
}
@ -346,7 +354,7 @@ class Listjihe extends Component {
this.props.Isitapopup&&this.props.Isitapopup==="true"?
""
:
<a href={`/problems/${items.program_attr.identifier}/edit`}>
<a target="_blank" href={`/problems/${items.program_attr.identifier}/edit`}>
<p className="viewparsings xiaoshou mr25">
<i className="iconfont icon-bianji2 font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
<span>编辑</span>
@ -366,16 +374,26 @@ class Listjihe extends Component {
{
items.public === false ?
items.item_type === "PROGRAM" ?
items.program_attr.status === 0 ?
""
:
items.apply===false?
<p className="viewparsings xiaoshou mr25" onClick={() => this.props.showmodels(items.id)}>
<i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
<span>公开</span>
</p>
:
(
items.program_attr.status === 0 ?
""
:
items.apply===false?
<p className="viewparsings xiaoshou mr25" onClick={() => this.props.showmodels(items.id)}>
<i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
<span>公开</span>
</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?
<p className="viewparsings xiaoshou mr25" onClick={() => this.props.showmodels(items.id)}>
<i className="iconfont icon-gongkai font-17 lg ml7 lh30 icontianjiadaohangcolors mr5"></i>
@ -433,7 +451,7 @@ class Listjihe extends Component {
</div>
<div className=" sortinxdirection mt15 yldxtit">
<p className=" testfondex yldxtit programquill"
<p id={"analysisnamesid"} className=" testfondex yldxtit programquill"
style={{wordBreak: "break-word"}}
>
{items ?
@ -442,6 +460,7 @@ class Listjihe extends Component {
""
:
items.analysis.length>0?
analysisnames===null || analysisnames===undefined?"":
<QuillForEditor
imgAttrs={{width: '60px', height: '30px'}}
readOnly={true}

@ -12,7 +12,15 @@ class PaperDeletModel extends Component {
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)=>{
// this.setState({
@ -20,6 +28,10 @@ class PaperDeletModel extends Component {
// })
// //console.log(e.target.value);
// //console.log(e.target.value.length);
if(this.isNull(e.target.value)===true){
this.props.showNotification('不能输入空格');
return
}
this.setState({
newkntypeinput: e.target.value
})
@ -60,7 +72,7 @@ class PaperDeletModel extends Component {
>
<div className="educouddiv">
<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 className="clearfix mt30 edu-txt-center">
<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;

@ -41,7 +41,7 @@ const options = [
],
},
];
//Itembankstop 题库的
//Itembankstop Intelligentcomponents 题库的
class Comthetestpaperst extends Component {
constructor(props) {
super(props);
@ -56,6 +56,7 @@ class Comthetestpaperst extends Component {
options: [],
NewknTypedel:false,
boolred:false,
sub_disciplineslength:1,
}
}
setboolred=(bool)=>{
@ -413,11 +414,16 @@ class Comthetestpaperst extends Component {
const didata = this.props.disciplinesdata;
const knowledgepointsdata = [];
var sub_disciplineslength=0;
for (var i = 0; i < didata.length; i++) {
//方向
if (value[0] === didata[i].id) {
const fxdidata = didata[i].sub_disciplines;
try {
sub_disciplineslength=fxdidata.length;
}catch (e) {
}
for (var j = 0; j < fxdidata.length; j++) {
//课程
if (value[1] === fxdidata[j].id) {
@ -441,6 +447,7 @@ class Comthetestpaperst extends Component {
Knowpoints: [],
knowledgepoints: knowledgepointsdata,
knowledgepoints2:knowledgepointsdata,
sub_disciplineslength:sub_disciplineslength,
})
this.props.form.setFieldsValue({
@ -686,34 +693,39 @@ class Comthetestpaperst extends Component {
</Form.Item>
</div>
</div>
<div className="zsdd">
<Form.Item
label="知识点"
>
{getFieldDecorator("rbzsd"
)(
<div className="sortinxdirection">
<InputGroup compact>
<Select style={{width: '258px'}} value={undefined} onChange={this.handleFormkechen}
placeholder="请选择...">
{knowledgepoints2 && knowledgepoints2.map((object, index) => {
return (
<Option key={object.id} value={object.id}>{object.name}</Option>
)
})}
</Select>
</InputGroup>
{
this.state.sub_disciplineslength===null || this.state.sub_disciplineslength===undefined||this.state.sub_disciplineslength===0?"":
<div className="zsdd">
<Form.Item
label="知识点"
>
{getFieldDecorator("rbzsd"
)(
<div className="sortinxdirection">
<InputGroup compact>
<Select style={{width: '258px'}} value={undefined} onChange={this.handleFormkechen}
placeholder="请选择...">
{knowledgepoints2 && knowledgepoints2.map((object, index) => {
return (
<Option key={object.id} value={object.id}>{object.name}</Option>
)
})}
</Select>
</InputGroup>
<img className=" ml22 zjzsdian xiaoshou" src={getImageUrl("images/educoder/zjzsd.png")} onClick={()=>this.NewknTypedeldel(true)}/>
<img className=" ml22 zjzsdian xiaoshou" src={getImageUrl("images/educoder/zjzsd.png")} onClick={()=>this.NewknTypedeldel(true)}/>
</div>
)}
</Form.Item>
</div>
)}
</Form.Item>
</div>
}
{
this.state.Knowpoints===undefined||this.state.Knowpoints===null?"":
this.state.Knowpoints.length>0?

@ -20,7 +20,9 @@ import Newknledpots from '../component/Newknledpots';
import Ldanxuan from './lntlligentpone';
const InputGroup = Input.Group;
const {Option} = Select;
//Itembankstop Comthetestpaperst 题库的
// Comthetestpaperst 题库的
// Itembankstop 题库的
class Intelligentcomponents extends Component {
constructor(props) {
super(props);
@ -35,7 +37,8 @@ class Intelligentcomponents extends Component {
options: [],
NewknTypedel:false,
boolred:false,
rbly:"1"
rbly:"1",
sub_disciplineslength:1,
}
}
setboolred=(bool)=>{
@ -310,11 +313,16 @@ class Intelligentcomponents extends Component {
const didata = this.props.disciplinesdata;
const knowledgepointsdata = [];
var sub_disciplineslength=0;
for (var i = 0; i < didata.length; i++) {
//方向
if (value[0] === didata[i].id) {
const fxdidata = didata[i].sub_disciplines;
try {
sub_disciplineslength=fxdidata.length;
}catch (e) {
}
for (var j = 0; j < fxdidata.length; j++) {
//课程
if (value[1] === fxdidata[j].id) {
@ -597,34 +605,38 @@ class Intelligentcomponents extends Component {
</Form.Item>
</div>
</div>
<div className="zsdd">
<Form.Item
label="知识点"
>
{getFieldDecorator("rbzsd"
)(
<div className="sortinxdirection">
<InputGroup compact>
<Select style={{width: '258px'}} value={undefined} onChange={this.handleFormkechen}
placeholder="请选择...">
{knowledgepoints2 && knowledgepoints2.map((object, index) => {
return (
<Option key={object.id} value={object.id}>{object.name}</Option>
)
})}
</Select>
</InputGroup>
<img className=" ml22 zjzsdian xiaoshou" src={getImageUrl("images/educoder/zjzsd.png")} onClick={()=>this.NewknTypedeldel(true)}/>
{
this.state.sub_disciplineslength === null || this.state.sub_disciplineslength === undefined || this.state.sub_disciplineslength === 0 ? "" :
<div className="zsdd">
<Form.Item
label="知识点"
>
{getFieldDecorator("rbzsd"
)(
<div className="sortinxdirection">
<InputGroup compact>
<Select style={{width: '258px'}} value={undefined} onChange={this.handleFormkechen}
placeholder="请选择...">
{knowledgepoints2 && knowledgepoints2.map((object, index) => {
return (
<Option key={object.id} value={object.id}>{object.name}</Option>
)
})}
</Select>
</InputGroup>
<img className=" ml22 zjzsdian xiaoshou" src={getImageUrl("images/educoder/zjzsd.png")} onClick={()=>this.NewknTypedeldel(true)}/>
</div>
)}
</Form.Item>
</div>
}
</div>
)}
</Form.Item>
</div>
{
this.state.Knowpoints===undefined||this.state.Knowpoints===null?"":
this.state.Knowpoints.length>0?

@ -950,6 +950,12 @@
.mr15{
margin-right: 15px;
}
.ant-modal-mask{
z-index: 6000 !important;
}
.ant-modal-wrap{
z-index: 6000 !important;
}
.fangdatwo{
background: #fefefe;
background-color: #fefefe;
@ -960,7 +966,7 @@
top:0px;
bottom: 0px;
left: 0px;
z-index: 999999;
z-index: 5000;
right: 0px;
}

@ -30,7 +30,7 @@ class Testpaperlibrary extends Component {
public:null,
difficulty:null,
item_type:null,
keywords:null,
keyword:null,
page:1,
per_page:10,
booljupyterurls:false,
@ -88,7 +88,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
keywords: null,
keyword: null,
per_page:10,
}
this.getdata(data);
@ -96,14 +96,14 @@ class Testpaperlibrary extends Component {
setdatafunsval = (e) => {
this.setState({
keywords: e.target.value
keyword: e.target.value
})
}
setdatafuns = (value) => {
this.setState({
keywords: value,
keyword: value,
})
var data={
page:this.state.page,
@ -112,7 +112,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
keywords: value,
keyword: value,
per_page:10,
}
this.getdata(data);
@ -121,7 +121,7 @@ class Testpaperlibrary extends Component {
this.setState({
defaultActiveKey: key,
difficulty:null,
keywords:null,
keyword:null,
page:1,
})
var data={
@ -131,7 +131,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id,
public: key,
difficulty:null,
keywords: null,
keyword: null,
per_page:10,
}
this.getdata(data);
@ -177,7 +177,7 @@ class Testpaperlibrary extends Component {
discipline_id:discipline_id,
sub_discipline_id:null,
tag_discipline_id:null,
keywords:null,
keyword:null,
page: 1,
per_page:10,
})
@ -187,7 +187,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:null,
public: this.state.defaultActiveKey,
difficulty: this.props.difficulty,
keywords: null,
keyword: null,
page: 1,
per_page:10,
};
@ -198,7 +198,7 @@ class Testpaperlibrary extends Component {
this.setState({
sub_discipline_id:sub_discipline_id,
tag_discipline_id:null,
keywords:null,
keyword:null,
page:1,
per_page:10,
})
@ -208,7 +208,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:null,
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
keywords: null,
keyword: null,
page:1,
per_page:10,
};
@ -218,7 +218,7 @@ class Testpaperlibrary extends Component {
settag_discipline_id=(tag_discipline_id)=>{
this.setState({
tag_discipline_id:tag_discipline_id,
keywords:null,
keyword:null,
page:1,
per_page:10,
})
@ -228,7 +228,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:tag_discipline_id,
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
keywords: null,
keyword: null,
page: 1,
per_page:10,
};
@ -284,7 +284,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
};
@ -310,7 +310,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
keywords: this.state.keywords,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
};
@ -325,7 +325,7 @@ class Testpaperlibrary extends Component {
showmodels = (id) => {
this.setState({
modalsType: true,
titilesm: "设为公开后,所有成员均可使用试卷",
titilesm: "在平台审核后,所有成员均可使用试题",
titiless: "是否设置为公开?",
titbool: true,
timuid: id
@ -353,7 +353,7 @@ class Testpaperlibrary extends Component {
this.setState({
difficulty: difficulty,
visiblemys: false,
keywords:"",
keyword:"",
page: 1,
per_page:10,
})
@ -364,7 +364,7 @@ class Testpaperlibrary extends Component {
tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey,
difficulty: difficulty,
keywords:null,
keyword:null,
page:1,
per_page:10,
};
@ -379,7 +379,7 @@ class Testpaperlibrary extends Component {
this.setState({
item_type: item_type,
visiblemyss: false,
keywords:null,
keyword:null,
page: 1,
per_page:10,
})
@ -391,7 +391,7 @@ class Testpaperlibrary extends Component {
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: item_type,
keywords:"",
keyword:"",
page: 1,
per_page:10,
};

@ -80,7 +80,7 @@ class Listjihe extends Component {
<img src={getImageUrl("images/educoder/shijuans.png")} className="imgtp"/>
</div>
<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">
<p className="sjtitles">试题数<span >{question_counts}</span></p>
<p className="sjtitles ml48">总分<span >{total_scores}</span></p>
@ -92,9 +92,15 @@ class Listjihe extends Component {
更新时间<span>{update_times}</span>
</p>
<p className='sjtitlesysl ml30'>
使用次数<span>{quotess}</span>
</p>
{
quotess===null||quotess===undefined||quotess===0?
""
:
<p className='sjtitlesysl ml30'>
使用次数<span>{quotess}</span>
</p>
}
{
defaultActiveKey===1||defaultActiveKey==="1"?
<p className='sjtitlesysl ml30'>

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

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

Loading…
Cancel
Save