Merge branch 'dev_aliyun' of http://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

video_transcode
cxt 5 years ago
commit 22d02e86ef

@ -0,0 +1,274 @@
commit 8e0cf3730ba50f5fb95773d7ed3bfeab51cff640 (HEAD -> forge)
Author: dingyongkang <837816638@qq.com>
Date: Tue Feb 25 17:14:50 2020 +0800
合并请求模块
commit b0d10c14dd86c0db5bfa37da24587687e7570b60
Merge: ba41688b4 8a3afcbf0
Author: dingyongkang <837816638@qq.com>
Date: Wed Feb 19 20:02:46 2020 +0800
工单模块
commit ba41688b4b6116d677585a826e53ee0a7c3c3f7d
Author: dingyongkang <837816638@qq.com>
Date: Wed Feb 19 19:33:48 2020 +0800
工单部分
commit 8a3afcbf00835d67725ea9464b9abac16eb2a89c
Merge: 57415df2a 30ef541d4
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Wed Feb 19 19:12:18 2020 +0800
Merge branch 'forge' of https://bdgit.educoder.net/Hjqreturn/educoder into forge
commit 57415df2aa48aebc0b29a3d4725a06dcdb63d742
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Wed Feb 19 19:11:50 2020 +0800
issue的问题修复及pull_request的问题修复
commit 30ef541d40a1c7063a20423e3b95c73da8e9bf8c
Merge: 21ce82e9c ded428147
Author: caicai8 <1149225589@qq.com>
Date: Wed Feb 19 17:38:45 2020 +0800
Merge branch 'forge' of https://bdgit.educoder.net/Hjqreturn/educoder into forge
commit 21ce82e9c15724fc3b10c02ab3d0b5ed6670e86e
Author: caicai8 <1149225589@qq.com>
Date: Wed Feb 19 17:38:41 2020 +0800
动态列表
commit ded4281470613992a416be8b383e863136e2cd81
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Wed Feb 19 17:30:53 2020 +0800
修改csv的乱码问题
commit a5a5add7d662377ebd0a8b3796b761f043232f4a
Merge: d4132a802 b435933a5
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Wed Feb 19 15:12:01 2020 +0800
Merge branch 'forge' of https://bdgit.educoder.net/Hjqreturn/educoder into forge
commit d4132a802e5afa2d5f79d4540827348b8395edb1
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Wed Feb 19 15:10:56 2020 +0800
分支切换添加loading
commit b435933a54709da3ab4e167d1657348cea359de1
Author: caicai8 <1149225589@qq.com>
Date: Wed Feb 19 15:04:46 2020 +0800
动态-分页
commit b10091130e3bea8ff989ccd018505d19eb4dec29
Merge: 92fea708c 0d060af2f
Author: caicai8 <1149225589@qq.com>
Date: Wed Feb 19 11:59:48 2020 +0800
Merge branch 'forge' of https://bdgit.educoder.net/Hjqreturn/educoder into forge
commit 92fea708c48a27cd2fddb7ebb096dddc248129ca
Author: caicai8 <1149225589@qq.com>
Date: Wed Feb 19 11:59:45 2020 +0800
文件
commit a93837a062dacec33a277d50f504de9bf037f687
Author: caicai8 <1149225589@qq.com>
Date: Wed Feb 19 11:59:35 2020 +0800
动态
commit 0d060af2f926dc92482a76346abfc94d09cd32d1
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Tue Feb 18 18:43:56 2020 +0800
前端bug修复和后端问题
commit 42e8a78477525c32d98d2299c3826f0dc4f6e38f
Merge: 64d920039 d9e89e6fb
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Tue Feb 18 16:16:49 2020 +0800
Merge branch 'forge' of https://bdgit.educoder.net/Hjqreturn/educoder into forge
commit 64d920039a51196fff20b813938969e3c326e1c6
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Tue Feb 18 16:16:24 2020 +0800
一些bug修改
commit d9e89e6fb7934d9e215dc1e7c7d1f61093154b9a
Author: caicai8 <1149225589@qq.com>
Date: Tue Feb 18 16:12:18 2020 +0800
branch
commit 43e9c90439890056c94a2265296bda2626aef447
Author: caicai8 <1149225589@qq.com>
Date: Tue Feb 18 14:56:09 2020 +0800
从分支页面跳转到分支提交页面
commit 2e42ad82cafa3c3a96813e517253d825dddf8e27
Merge: 9a2dd0456 d3a9af7bb
Author: caicai8 <1149225589@qq.com>
Date: Tue Feb 18 13:34:48 2020 +0800
Merge branch 'forge' of https://bdgit.educoder.net/Hjqreturn/educoder into forge
commit 9a2dd0456eb2e25490d697ad539ac0ccf7a047cf
Author: caicai8 <1149225589@qq.com>
Date: Tue Feb 18 13:34:43 2020 +0800
package
commit d3a9af7bb3b4e0600f5bb7a26a349fe87eb49bc5
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Tue Feb 18 10:54:38 2020 +0800
前端样式修改
commit 5feb1f6e53b325822d305bbfcd4a6c644d9039dd
Author: caicai8 <1149225589@qq.com>
Date: Mon Feb 17 16:38:53 2020 +0800
clone_url
commit 2eefb0ed381211ec250470202e686c2465807c7d
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Fri Feb 14 19:03:58 2020 +0800
前端部分修改
commit 9990e3b5c50aa0c9a2c1e9f7442fa85208fa6211
Merge: 0f97b2edd 6a41049e1
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Fri Feb 14 14:46:52 2020 +0800
Merge branch 'forge' of https://bdgit.educoder.net/Hjqreturn/educoder into forge
commit 0f97b2eddae2551be9c155adf318d800f5dd8e58
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Fri Feb 14 14:46:17 2020 +0800
前端样式修复
commit 6a41049e1de36eda58d728e7eba2285db2ac68fa
Author: Jasder <2053003901@@qq.com>
Date: Thu Feb 13 22:48:40 2020 +0800
ADD some count
commit 36860fe5c2995331e87d6437c48cacd9155f3a16
Merge: 1f2a0c0e6 00cb5c061
Author: Jasder <2053003901@@qq.com>
Date: Thu Feb 13 22:44:17 2020 +0800
Merge branch 'forge' of http://bdgit.educoder.net/Hjqreturn/educoder into forge
commit 00cb5c0610f63eae6d4139a9cf1c536f5e048833
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 18:53:01 2020 +0800
修改entry的错误
commit 1f2a0c0e61ad320d6c54de0721c46c02677c43b6
Merge: a72b4f682 5a8fcf994
Author: Jasder <2053003901@@qq.com>
Date: Thu Feb 13 18:51:14 2020 +0800
fic bug
commit 5a8fcf994fcce0829e620cb5dd507de93606ee33
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 18:09:10 2020 +0800
修改
commit a72b4f68276babbf6c65ea877266af4251ba3410
Merge: 9a2ff48de 36ccf249b
Author: Jasder <2053003901@@qq.com>
Date: Thu Feb 13 18:01:51 2020 +0800
FIC merge bug
commit 9a2ff48de8c3a3f9f9958489bbe235b1f72319f7
Author: Jasder <2053003901@@qq.com>
Date: Thu Feb 13 17:59:20 2020 +0800
FIX 404 page bug
commit 36ccf249bf68542b4b9324d89c478789db12887b
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 17:53:16 2020 +0800
注释current_laboratory
commit adc7da1a3c541ed263daf8793bdb9af1e736900c
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 17:47:49 2020 +0800
修改appconfig.js
commit 6e6649aa096921a994bed0119eafc288d5ac5a29
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 17:40:39 2020 +0800
注释get_user_info里的current_laboratory
commit a447a0d10229275ad6c51903762c2175b2afb743
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 17:23:57 2020 +0800
change current_laboratory is nill error
commit 567d20caea58782d1e99058cb76fb1e1307f7b09
Merge: d66c0c2f3 0408f89cb
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 17:15:29 2020 +0800
Merge branch 'forge' of https://bdgit.educoder.net/Hjqreturn/educoder into forge
commit d66c0c2f31b717ed3fed6bcff74318a682768635
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 17:14:59 2020 +0800
修改settings/show.json
commit 0408f89cb37041a92deea969619873849198d99c
Merge: ef807c8ec 8933a1a91
Author: Jasder <2053003901@@qq.com>
Date: Thu Feb 13 17:12:02 2020 +0800
Merge branch 'forge' of http://bdgit.educoder.net/Hjqreturn/educoder into forge
commit ef807c8ecfc5fd5f1129d6ab4d2f1a6c16333dbd
Author: Jasder <2053003901@@qq.com>
Date: Thu Feb 13 17:10:23 2020 +0800
ADD 工单pull_requests 数据统计
commit 8933a1a916baa4805ac45c1970542d25a447f703
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 16:45:27 2020 +0800
build
commit 05266a3c3ff2e03573337965c4580d7cc771e4fb
Author: sylor_huang@126.com <sylor_huang@126.com>
Date: Thu Feb 13 16:33:23 2020 +0800
issue标签和里程碑
commit e2550b9d741835e1e59eed25a17e004d62dd0919
Author: dingyongkang <837816638@qq.com>
Date: T

@ -0,0 +1,22 @@
#coding=utf-8
desc "纠正学生实训耗时不准的问题"
namespace :shixuns do
task correct_the_shixun_cost_time: :environment do
puts "myshixun_id: #{ENV['myshixun_id']}"
if ENV['myshixun_id'].present?
myshixun = Myshixun.find(ENV['myshixun_id'])
myshixun.games.where(status: 2).each do |game|
puts "open_time: #{game.open_time.to_i}"
puts "end_time: #{game.end_time.to_i}"
puts "game_id: #{game.id}"
cost_time = game.end_time.to_i - game.open_time.to_i
puts "cost_time: #{cost_time}"
game.update_attributes!(cost_time: cost_time)
end
end
end
end

@ -3,8 +3,9 @@ desc "统计每个学校使用数据"
namespace :static_all do
task :repo => :environment do
school_alls = School.includes(:courses, user_extensions: :user).all
proc_num = ENV['processes'].blank? ? 5 : ENV['processes'].to_i
school_alls.find_in_batches(batch_size: 50) do |schools|
Parallel.each(schools, in_processes: 5) do |school|
Parallel.each(schools, in_processes: proc_num) do |school|
puts("school_id: #{school.id}")
data = Schools::SchoolStatisticService.new(school)
sta_all = StaAll.find_or_initialize_by(school_id: school.id)

@ -98,12 +98,12 @@ class Boards extends Component{
this.fetchBoards()
this.fetchAll()
on('updateNavSuccess', this.updateNavSuccess)
// on('updateNavSuccess', this.updateNavSuccess)
}
componentWillUnmount() {
off('updateNavSuccess', this.updateNavSuccess)
}
// componentWillUnmount() {
// off('updateNavSuccess', this.updateNavSuccess)
// }
updateNavSuccess = () => {
this.fetchBoards()
if (this.props.match.params.boardId == this.state.boardid) {
@ -112,7 +112,7 @@ class Boards extends Component{
}
componentDidUpdate = (prevProps) => {
if ( prevProps.match.params.boardId != this.props.match.params.boardId ) {
if ( prevProps.match.params.boardId !== this.props.match.params.boardId ) {
this.setState({
isSpin:true
})

@ -499,7 +499,6 @@ class Coursesleftnav extends Component{
}
cannerNavmoda=()=>{
this.setState({
Navmodalnametype:false,
NavmodalValuetype:false,
@ -525,6 +524,7 @@ class Coursesleftnav extends Component{
}
saveNavmodapost=(url,value,positiontype,coursesId)=>{
axios.post(url,
{name:value}).then((result)=>{
if(result!=undefined){
@ -539,13 +539,13 @@ class Coursesleftnav extends Component{
if(positiontype==="files"){
this.updasaveNavmoda()
trigger('updateNavSuccess')
window.location.href=`/courses/${coursesId}/file/${result.data.category_id}`;
this.props.history.push(`/courses/${coursesId}/file/${result.data.category_id}`);
}
if(positiontype==="boards"){
this.updasaveNavmoda()
trigger('updateNavSuccess')
window.location.href=`/courses/${coursesId}/boards/${result.data.category_id}`;
this.props.history.push(`/courses/${coursesId}/boards/${result.data.category_id}`);
}
if(positiontype!="course_groups"){
@ -585,7 +585,6 @@ class Coursesleftnav extends Component{
}
saveNavmoda=()=>{
debugger;
let {Navmodaltypename,setnavid,NavmodalValue}=this.state;
let id =setnavid;
@ -950,17 +949,15 @@ class Coursesleftnav extends Component{
{/* ""*/}
{/*}*/}
{
Navmodalnametype===true?<style>
{
<style>
{
`
body {
width: calc(100%) !important;
width: calc(100%) !important;
}
`
}
</style>:""
}
</style>
<Modal
keyboard={false}
title={Navmodalname}

@ -269,13 +269,18 @@ class Addcourses extends Component{
this.props.history.push('/courses/2704/boards/8367/messages/42072')
return;
}
if(response.data.course_id!=undefined){
this.submitasyn(response.data.course_id)
}
notification.open({
message:"提示",
description:response.data.message
});
});
if(response.data.course_id!=undefined){
this.submitasyn(response.data.course_id)
}else{
// 无返回课程id则是选择的教师或者助教身份成功后跳转到课堂首页
// console.log(this.props);
// console.log(this.props.history.push);
window.location.href="/courses";
}
if(Addcoursestype===true){
this.props.hideAddcoursestype();
}

@ -73,8 +73,8 @@ class CoursesNew extends Component {
period: data.class_period===undefined?'':data.class_period===null?'':data.class_period===null?'':data.class_period==="null"?'':data.class_period+"",
credit: data.credit===undefined?'':data.credit===null?'':data.credit===null?'':data.credit==="null"?'':data.credit+"",
checkboxgroup: data.course_module_types,
Realnamecertification: data.authentication,
Professionalcertification:data.professional_certification,
// Realnamecertification: data.authentication,
// Professionalcertification:data.professional_certification,
endtime: data.end_date === undefined ? "" : moment(data.end_date, dateFormat),
school:data.school
@ -84,8 +84,8 @@ class CoursesNew extends Component {
datatime: data.end_date,
dataname:data.name,
is_public: data.is_public === 1 ? true : false,
Realnamecertification: data.authentication,
Professionalcertification:data.professional_certification,
// Realnamecertification: data.authentication,
// Professionalcertification:data.professional_certification,
addonAfteronelenone: data.class_period===undefined?'':data.class_period===null?'':data.class_period===null?'':data.class_period==="null"?'':data.class_period,
addonAfteronelentwo:data.credit===undefined?'':data.credit===null?'':data.credit===null?'':data.credit==="null"?'':data.credit,
@ -237,8 +237,8 @@ class CoursesNew extends Component {
end_date: datatime===undefined?"":datatime,
is_public: is_public === true || is_public === 1 ? 1 : 0,
course_module_types: values.checkboxgroup,
authentication: this.state.Realnamecertification,
professional_certification: this.state.Professionalcertification,
// authentication: this.state.Realnamecertification,
// professional_certification: this.state.Professionalcertification,
school:values.school
}
).then((response) => {
@ -313,8 +313,8 @@ class CoursesNew extends Component {
end_date: datatime===undefined?"":datatime,
is_public: is_public === true || is_public === 1 ? 1 : 0,
course_module_types: values.checkboxgroup,
authentication: this.state.Realnamecertification,
professional_certification: this.state.Professionalcertification,
// authentication: this.state.Realnamecertification,
// professional_certification: this.state.Professionalcertification,
school:values.school
}
).then((response) => {
@ -953,7 +953,7 @@ class CoursesNew extends Component {
)}
</Form.Item>
</div>
<div className="stud-class-set bor-bottom-greyE padding10200 coursenavbox height100px" >
{/* <div className="stud-class-set bor-bottom-greyE padding10200 coursenavbox height100px" >
<span className={"fl"}>
<Form.Item
label="加入课堂条件"
@ -978,7 +978,7 @@ class CoursesNew extends Component {
)}
</Form.Item>
</span>
</div>
</div> */}
<div className="stud-class-set padding10200 coursenavbox bor-bottom-greyE">
<Form.Item
label="公开设置"

@ -23,7 +23,7 @@ const App = (props) => {
total,
staticList,
changeParams,
initTotal
initTotal,
} = props;
// const [datas, setDatas] = useState([]);
// const [sortedInfo, setSortedInfo] = useState({});
@ -213,6 +213,7 @@ const App = (props) => {
}
];
useEffect(() => {
changeParams({
page: 1
@ -224,6 +225,7 @@ const App = (props) => {
pathId && staticList(pathId);
}
// const {
// study_count,
// course_study_count,
@ -334,8 +336,9 @@ const mapStateToProps = (state) => {
return {
subject_info,
other_info,
total
total,
}
};
const mapDispatchToProps = (dispatch) => ({

@ -729,7 +729,35 @@ class NewMyShixunModel extends Component {
}
//选用
// 不选用 Question.js页面也有个
NOgetitem_baskets=(data)=>{
let url="/examination_banks/cancel_items.json";
axios.post(url, data)
.then((result) => {
if (result.data.status == 0) {
var data = {
discipline_id:this.state.discipline_id,
sub_discipline_id:this.state.sub_discipline_id,
tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
};
this.getdatasy(data);
this.getbasket_listdata();
}
}).catch((error) => {
////console.log(error);
})
}
//选用 Question.js页面也有个
getitem_baskets=(data)=>{
//选用题型可以上传单个 或者多个题型
let url="";
@ -743,7 +771,6 @@ class NewMyShixunModel extends Component {
axios.post(url, data)
.then((result) => {
if (result.data.status == 0) {
// this.props.showNotification(`选用成功`);
var data = {
discipline_id:this.state.discipline_id,
sub_discipline_id:this.state.sub_discipline_id,
@ -758,9 +785,6 @@ class NewMyShixunModel extends Component {
};
this.getdatasy(data);
this.getbasket_listdata();
// this.setState({
// visible:true
// })
}
}).catch((error) => {
////console.log(error);
@ -845,7 +869,7 @@ class NewMyShixunModel extends Component {
}
//全选试题库
selectallquestionsonthispage=()=>{
selectallquestionsonthispage=(bool)=>{
var item_idsdata=[];
var arr= this.state.Contentdata.items;
@ -853,6 +877,10 @@ class NewMyShixunModel extends Component {
if(data.item_type==="PROGRAM"){
//编程题
if(data.choosed===true){
if(data.program_attr.status===1){
//已发布
item_idsdata.push(data.id);
}
}else{
//未选用
@ -866,7 +894,7 @@ class NewMyShixunModel extends Component {
}else{
//不是编程题
if(data.choosed===true){
item_idsdata.push(data.id);
}else{
//未选用
item_idsdata.push(data.id);
@ -878,10 +906,21 @@ class NewMyShixunModel extends Component {
item_ids:item_idsdata,
exam_id:this.props.exam_id===undefined?"":parseInt(this.props.exam_id),
}
this.getitem_baskets(data);
this.setState({
selectallquestionsonthispages:true,
})
if(bool===false){
this.getitem_baskets(data);
this.setState({
selectallquestionsonthispages:true,
})
}else{
this.NOgetitem_baskets(data);
this.setState({
selectallquestionsonthispages:false,
})
}
}
//全选的状态
@ -1040,7 +1079,7 @@ class NewMyShixunModel extends Component {
chakanjiexiboolindex={this.state.chakanjiexiboolindex}
chakanjiexibool={(e)=>this.chakanjiexibool(e)}
getitem_basketss={(id)=>this.getitem_basketss(id)}
selectallquestionsonthispage={()=>this.selectallquestionsonthispage()}
selectallquestionsonthispage={(bool)=>this.selectallquestionsonthispage(bool)}
getitem_baskets={(e)=>this.getitem_baskets(e)}
setdatafuns={(e) => this.setdatafuns(e)}
setdatafunsval={(e) => this.setdatafunsval(e)}

@ -659,9 +659,37 @@ class Question extends Component {
})
}
// 不选用 NewMyShixunModel.js 页面也有个
NOgetitem_baskets=(data)=>{
let url="/examination_banks/cancel_items.json";
axios.post(url, data)
.then((result) => {
if (result.data.status == 0) {
// this.props.showNotification(`选用成功`);
var data = {
discipline_id:this.state.discipline_id,
sub_discipline_id:this.state.sub_discipline_id,
tag_discipline_id:this.state.tag_discipline_id,
public: this.state.defaultActiveKey,
difficulty: this.state.difficulty,
item_type: this.state.item_type,
keyword: this.state.keywords,
page: this.state.page,
per_page:10,
};
this.getdatasy(data);
this.getbasket_listdata();
// this.setState({
// visible:true
// })
}
}).catch((error) => {
////console.log(error);
})
}
//选用
//选用 NewMyShixunModel.js 页面也有个
getitem_baskets=(data)=>{
//选用题型可以上传单个 或者多个题型
let url="/item_baskets.json";
@ -738,7 +766,7 @@ class Question extends Component {
}
//全选试题库
selectallquestionsonthispage=()=>{
selectallquestionsonthispage=(bool)=>{
var item_idsdata=[];
var arr= this.state.Contentdata.items;
@ -746,7 +774,10 @@ class Question extends Component {
if(data.item_type==="PROGRAM"){
//编程题
if(data.choosed===true){
if(data.program_attr.status===1){
//已发布
item_idsdata.push(data.id);
}
}else{
//未选用
if(data.program_attr.status===1){
@ -759,7 +790,7 @@ class Question extends Component {
}else{
//不是编程题
if(data.choosed===true){
item_idsdata.push(data.id);
}else{
//未选用
item_idsdata.push(data.id);
@ -770,10 +801,18 @@ class Question extends Component {
const data={
item_ids:item_idsdata
}
this.getitem_baskets(data);
this.setState({
selectallquestionsonthispages:true,
})
if(bool===false){
this.getitem_baskets(data);
this.setState({
selectallquestionsonthispages:true,
})
}else{
this.NOgetitem_baskets(data);
this.setState({
selectallquestionsonthispages:false,
})
}
}
//全选的状态
@ -1016,7 +1055,7 @@ class Question extends Component {
chakanjiexiboolindex={this.state.chakanjiexiboolindex}
chakanjiexibool={(e)=>this.chakanjiexibool(e)}
getitem_basketss={(id)=>this.getitem_basketss(id)}
selectallquestionsonthispage={()=>this.selectallquestionsonthispage()}
selectallquestionsonthispage={(bool)=>this.selectallquestionsonthispage(bool)}
getitem_baskets={(e)=>this.getitem_baskets(e)}
setdatafuns={(e) => this.setdatafuns(e)}
setdatafunsval={(e) => this.setdatafunsval(e)}
@ -1047,7 +1086,7 @@ class Question extends Component {
{
`
.ant-drawer-content-wrapper{
width: 200px !important;
width: 160px !important;
overflowhidden;
margin-top: 62px;
}
@ -1095,8 +1134,8 @@ class Question extends Component {
""
: <div className="sortinxdirection " >
<p
className="w50s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">单选题{'('}{single_questions_count}{')'}</p>
<p className="w50s intermediatecenterysls xaxisreverseorder"><i
className="w80s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">单选题{'('}{single_questions_count}{')'}</p>
<p className="w20s intermediatecenterysls xaxisreverseorder"><i
className="iconfont icon-shanchu1 font-14 lg lh30 icondrawercolor " onClick={()=>this.showQuestionModals("SINGLE")}></i></p>
</div>
}
@ -1106,8 +1145,8 @@ class Question extends Component {
:
<div className="sortinxdirection" >
<p
className="w50s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">多选题{'('}{multiple_questions_count}{')'}</p>
<p className="w50s intermediatecenterysls xaxisreverseorder"><i
className="w80s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">多选题{'('}{multiple_questions_count}{')'}</p>
<p className="w20s intermediatecenterysls xaxisreverseorder"><i
className="iconfont icon-shanchu1 font-14 lg lh30 icondrawercolor " onClick={()=>this.showQuestionModals("MULTIPLE")}></i></p>
</div>
}
@ -1117,8 +1156,8 @@ class Question extends Component {
:
<div className="sortinxdirection" >
<p
className="w50s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">判断题{'('}{judgement_questions_count}{')'}</p>
<p className="w50s intermediatecenterysls xaxisreverseorder"><i
className="w80s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">判断题{'('}{judgement_questions_count}{')'}</p>
<p className="w20s intermediatecenterysls xaxisreverseorder"><i
className="iconfont icon-shanchu1 font-14 lg lh30 icondrawercolor " onClick={()=>this.showQuestionModals("JUDGMENT")}></i></p>
</div>
}
@ -1128,8 +1167,8 @@ class Question extends Component {
:
<div className="sortinxdirection" >
<p
className="w50s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">填空题{'('}{completion_questions_count}{')'}</p>
<p className="w50s intermediatecenterysls xaxisreverseorder"><i
className="w80s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">填空题{'('}{completion_questions_count}{')'}</p>
<p className="w20s intermediatecenterysls xaxisreverseorder"><i
className="iconfont icon-shanchu1 font-14 lg lh30 icondrawercolor " onClick={()=>this.showQuestionModals("COMPLETION")}></i></p>
</div>
}
@ -1139,8 +1178,8 @@ class Question extends Component {
:
<div className="sortinxdirection" >
<p
className="w50s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">简答题{'('}{subjective_questions_count}{')'}</p>
<p className="w50s intermediatecenterysls xaxisreverseorder"><i
className="w80s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">简答题{'('}{subjective_questions_count}{')'}</p>
<p className="w20s intermediatecenterysls xaxisreverseorder"><i
className="iconfont icon-shanchu1 font-14 lg lh30 icondrawercolor " onClick={()=>this.showQuestionModals("SUBJECTIVE")}></i></p>
</div>
}
@ -1150,8 +1189,8 @@ class Question extends Component {
:
<div className="sortinxdirection">
<p
className="w50s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">实训题{'('}{practical_questions_count}{')'}</p>
<p className="w50s intermediatecenterysls xaxisreverseorder"><i
className="w80s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">实训题{'('}{practical_questions_count}{')'}</p>
<p className="w20s intermediatecenterysls xaxisreverseorder"><i
className="iconfont icon-shanchu1 font-14 lg lh30 icondrawercolor "></i></p>
</div>
}
@ -1161,8 +1200,8 @@ class Question extends Component {
:
<div className="sortinxdirection" >
<p
className="w50s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">编程题{'('}{program_questions_count}{')'}</p>
<p className="w50s intermediatecenterysls xaxisreverseorder"><i
className="w80s intermediatecenterysls sortinxdirection font-14 xiaoshou xiaoshoums">编程题{'('}{program_questions_count}{')'}</p>
<p className="w20s intermediatecenterysls xaxisreverseorder"><i
className="iconfont icon-shanchu1 font-14 lg lh30 icondrawercolor " onClick={()=>this.showQuestionModals("PROGRAM")}></i></p>
</div>
}

@ -22,6 +22,7 @@ import JudquestionEditor from "./component/JudquestionEditor";
import Bottomsubmit from "../../modules/modals/Bottomsubmit";
import { connect } from 'react-redux';
import actions from "../../redux/actions";
var restricte=false;
class Questionitem_banks extends Component {
constructor(props) {
super(props);
@ -37,7 +38,8 @@ class Questionitem_banks extends Component {
knowledgepoints: [],
disciplmy:[],
pages:1,
}
}
}
@ -309,6 +311,7 @@ class Questionitem_banks extends Component {
.then((result) => {
if (result.data.status == 0) {
// this.props.showNotification(`新增单选题成功`);
this.restricte=true;
this.props.history.replace('/question');
}
@ -320,6 +323,7 @@ class Questionitem_banks extends Component {
.then((result) => {
if (result.data.status == 0) {
// this.props.showNotification(`编辑单选题成功`);
this.restricte=true;
this.props.history.replace('/question');
@ -387,6 +391,7 @@ class Questionitem_banks extends Component {
.then((result) => {
if (result.data.status == 0) {
// this.props.showNotification(`新增多选题成功`);
this.restricte=true;
this.props.history.replace('/question');
@ -400,6 +405,7 @@ class Questionitem_banks extends Component {
.then((result) => {
if (result.data.status == 0) {
// this.props.showNotification(`编辑多选题成功`);
this.restricte=true;
this.props.history.replace('/question');
@ -454,6 +460,7 @@ class Questionitem_banks extends Component {
.then((result) => {
if (result.data.status == 0) {
// this.props.showNotification(`新增判断题成功`);
this.restricte=true;
this.props.history.replace('/question');
}
@ -466,6 +473,7 @@ class Questionitem_banks extends Component {
.then((result) => {
if (result.data.status == 0) {
// this.props.showNotification(`编辑判断题成功`);
this.restricte=true;
this.props.history.replace('/question');
}
@ -498,10 +506,12 @@ class Questionitem_banks extends Component {
let arrays=myrbkc.join(',');
// console.log("开始打印了");
// console.log(arrays);
// window.open( `/problems/new?difficult=${Getdatasdata[0].rbnd}&sub_discipline_id=${Getdatasdata[3].rbkc[1]}&tag_discipline_id=${arrays}&newoj=1&pages=${this.state.pages}`);
this.props.history.replace( `/problems/new?difficult=${Getdatasdata[0].rbnd}&sub_discipline_id=${Getdatasdata[3].rbkc[1]}&tag_discipline_id=${arrays}&newoj=1&pages=${this.state.pages}`);
this.restricte=true;
window.open(`/problems/new?difficult=${Getdatasdata[0].rbnd}&sub_discipline_id=${Getdatasdata[3].rbkc[1]}&tag_discipline_id=${arrays}&newoj=1&pages=${this.state.pages}`);
setTimeout(() => {
this.restricte=true;
}, 1000);
// this.props.history.replace( `/problems/new?difficult=${Getdatasdata[0].rbnd}&sub_discipline_id=${Getdatasdata[3].rbkc[1]}&tag_discipline_id=${arrays}&newoj=1&pages=${this.state.pages}`);
}
@ -517,17 +527,23 @@ class Questionitem_banks extends Component {
}
render() {
let {page, limit, count, Headertop, visible, placement, modalsType, item_type} = this.state;
let {page, limit, count, Headertop, visible, placement, modalsType, item_type,restricte} = this.state;
const params = this.props && this.props.match && this.props.match.params;
// ////console.log(params);
return (
<div>
<div id={"Itembankstopid"} className="newMain clearfix intermediatecenter "
>
<Prompt
when={true}
message={() => '你确定离开此页面吗?'}
/>
{
restricte===false?
<Prompt
when={true}
message={() => '你确定离开此页面吗?'}
/>
:
""
}
<style>
{

@ -229,6 +229,15 @@ class ChoquesEditor extends Component{
var texts;
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if(this.isNull(_text)===true){
return
}
if (!reg.test(_text)) {
// 处理编辑器内容为空
try {
@ -276,11 +285,28 @@ class ChoquesEditor extends Component{
toShowMode = () => {
}
isNull=( str )=>{
if ( str == "" ) return true;
var regu = "^[ ]+$";
var re = new RegExp(regu);
//为空或纯空格为 true 有值为false
console.log(re.test(str))
return re.test(str);
}
onContentChange=(value,quill)=>{
// debugger
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if(this.isNull(_text)===true){
this.setState({
question_titleysl:""
})
return
}
if (!reg.test(_text)) {
// 处理编辑器内容为空
try {
@ -304,6 +330,15 @@ class ChoquesEditor extends Component{
onContentChanges=(value,quill)=>{
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if(this.isNull(_text)===true){
this.setState({
question_titlesysl:""
})
return
}
if (!reg.test(_text)) {
// 处理编辑器内容为空
try {

@ -440,12 +440,12 @@ class Contentpart extends Component {
<div className=" w100s mb10">
{
defaultActiveKey===1||defaultActiveKey==="1"?
<Contentquestionbank {...this.props} {...this.state} selectallquestionsonthispage={()=>this.props.selectallquestionsonthispage()} ></Contentquestionbank>
<Contentquestionbank {...this.props} {...this.state} selectallquestionsonthispage={(bool)=>this.props.selectallquestionsonthispage(bool)} ></Contentquestionbank>
:""
}
{
defaultActiveKey===0||defaultActiveKey==="0"?
<Contentquestionbank {...this.props} {...this.state} selectallquestionsonthispage={()=>this.props.selectallquestionsonthispage()}></Contentquestionbank>
<Contentquestionbank {...this.props} {...this.state} selectallquestionsonthispage={(bool)=>this.props.selectallquestionsonthispage(bool)}></Contentquestionbank>
:""
}
</div>

@ -50,9 +50,9 @@ class Contentquestionbank extends Component {
<div className="sortinxdirection w50s">
{
selectionbools===true?
<Checkbox checked={this.props.selectallquestionsonthispages} onChange={()=>this.props.selectallquestionsonthispage()} disabled></Checkbox>
<Checkbox checked={this.props.selectallquestionsonthispages} onChange={()=>this.props.selectallquestionsonthispage(this.props.selectallquestionsonthispages)} ></Checkbox>
:
<Checkbox checked={this.props.selectallquestionsonthispages} onChange={()=>this.props.selectallquestionsonthispage()}></Checkbox>
<Checkbox checked={this.props.selectallquestionsonthispages} onChange={()=>this.props.selectallquestionsonthispage(this.props.selectallquestionsonthispages)}></Checkbox>
}
<p className="setequesbank ml20">选用本页全部试题</p>

@ -288,7 +288,15 @@ class JudquestionEditor extends Component{
})
}
isNull=( str )=>{
if ( str == "" ) return true;
var regu = "^[ ]+$";
var re = new RegExp(regu);
//为空或纯空格为 true 有值为false
console.log(re.test(str))
return re.test(str);
}
onContentChange=(value,quill)=>{
// console.log("这是题干赋值");
// console.log(value);
@ -297,6 +305,15 @@ class JudquestionEditor extends Component{
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
// console.log(_text);
// console.log(_text.length);
if(this.isNull(_text)===true){
this.setState({
question_titleysl:""
})
return
}
if (!reg.test(_text)) {
// 处理编辑器内容为空
try {
@ -324,6 +341,14 @@ class JudquestionEditor extends Component{
onContentChanges=(value,quill)=>{
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if(this.isNull(_text)===true){
this.setState({
question_titlesysl:""
})
return
}
if (!reg.test(_text)) {
// 处理编辑器内容为空
try {

@ -251,6 +251,11 @@ class SingleEditor extends Component{
var texts;
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if(this.isNull(_text)===true){
return
}
if (!reg.test(_text)) {
// 处理编辑器内容为空
try {
@ -296,11 +301,30 @@ class SingleEditor extends Component{
toShowMode = () => {
}
isNull=( str )=>{
if ( str == "" ) return true;
var regu = "^[ ]+$";
var re = new RegExp(regu);
//为空或纯空格为 true 有值为false
console.log(re.test(str))
return re.test(str);
}
onContentChange=(value,quill)=>{
var _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if(this.isNull(_text)===true){
this.setState({
question_titleysl:""
})
return
}
if (!reg.test(_text)) {
// 处理编辑器内容为空
try {
@ -323,6 +347,12 @@ class SingleEditor extends Component{
onContentChanges=(value,quill)=>{
const _text = quill.getText();
const reg = /^[\s\S]*.*[^\s][\s\S]*$/;
if(this.isNull(_text)===true){
this.setState({
question_titlesysl:""
})
return
}
if (!reg.test(_text)) {
// 处理编辑器内容为空
try {

@ -271,6 +271,12 @@
width:30%;
}
.w80s{
width:80%;
}
.w20s{
width:20%;
}
.w50s{
width: 50%;
@ -913,7 +919,7 @@
width: 40px !important;
position: absolute;
border-radius: 4px;
top: -50%;
top: -79%;
}
.shitikussmys{
width:29px !important;

@ -282,6 +282,34 @@ class Intecomponents extends Component {
}
preservation = () => {
let mylistcour=1;
try {
mylistcour=this.state.single_question_count+this.state.multiple_question_count+this.state.judgement_question_count+this.state.program_question_count
}catch (e) {
}
if(mylistcour===0){
this.props.showNotification(`没有题不能组卷`);
return;
}
let arraycour=1;
try {
arraycour=this.Judquestio.Getdatas()[3].rbdxt+this.Judquestio.Getdatas()[4].rbdxtx+ this.Judquestio.Getdatas()[5].rbpdt+this.Judquestio.Getdatas()[6].rbbct
}catch (e) {
}
if(arraycour===0){
this.props.showNotification(`没有设置题型及数量不能组卷`);
return;
}
if (this.Judquestio.Getdatas().length === 0) {
this.scrollToAnchor("Itembankstopid");
return;

@ -1075,21 +1075,21 @@ submittojoinclass=(value)=>{
`
}
</style>
{
Periofters===true?
<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>
:""
}
{/*{*/}
{/* Periofters===true?*/}
{/* <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

@ -268,7 +268,7 @@ body>.-task-title {
background: #EEEEEE;
}
.mystask-sidebar{
right: 220px !important;
right: 181px !important;
}
.mystask-sidebars{
right: 20px !important;

@ -53,8 +53,11 @@ class RepositoryAddFileupload_files extends Component {
if(info.file.response){
if(info.file.response.status===-1) {
this.props.showNotification(info.file.response.message)
this.props.showNotification(info.file.response.message);
return
}else{
this.props.showNotification("上传成功!");
return;
}
}
@ -62,7 +65,6 @@ class RepositoryAddFileupload_files extends Component {
fileList = fileList.map(file => {
if (file.response) {
if (file.response.status===0) {
}
}
return file;
@ -73,45 +75,54 @@ class RepositoryAddFileupload_files extends Component {
};
onAttachmentRemove=(info)=>{
let shixunId = this.props.match.params.shixunId;
let {message,filspath}=this.state;
if(message===""||message===undefined){
this.props.showNotification('删除文件请先填写提交信息');
return
}
console.log(info);
if(info.response){
let shixunId = this.props.match.params.shixunId;
let {message,filspath}=this.state;
if(message===""||message===undefined){
this.props.showNotification('删除文件请先填写提交信息');
return;
}
let matchpath =this.props.match.path;
let matchpath =this.props.match.path;
let Repositoryflag =undefined;
let Repositoryflag =undefined;
if( matchpath.indexOf("repository")>-1){
Repositoryflag =undefined;
}
if(matchpath.indexOf("secret_repository")>-1){
Repositoryflag =true;
}
if( matchpath.indexOf("repository")>-1){
Repositoryflag =undefined;
}
if(matchpath.indexOf("secret_repository")>-1){
Repositoryflag =true;
}
let newfilspath=filspath;
let newfilspath=filspath;
if(newfilspath===""){
newfilspath=info.name
}else{
newfilspath=filspath+"/"+info.name
}
const url = `/shixuns//${shixunId}/delete_git_file.json`;
axios.delete(url, { data: {
if(newfilspath===""){
newfilspath=info.name
}else{
newfilspath=filspath+"/"+info.name
}
const url = `/shixuns//${shixunId}/delete_git_file.json`;
axios.delete(url, { data: {
path:newfilspath,
message:message,
secret_repository:Repositoryflag
}})
.then((response) => {
if (response.data.status == 0) {
this.props.showNotification("删除成功")
if (response.data.status === 0) {
let fileList = this.state.fileList.filter(item=>item.uid !== info.uid);
this.setState({
fileList
})
this.props.showNotification("删除成功");
}
})
.catch(function (error) {
console.log(error);
});
}else{
this.props.showNotification("还未上传完成,无法进行删除操作!");
}
}
FormInput=(e)=>{
@ -195,7 +206,7 @@ class RepositoryAddFileupload_files extends Component {
return false
}
this.props.showNotification("上传成功")
// this.props.showNotification("上传成功");
},
};

@ -12,14 +12,15 @@ import { fetchStaticList } from "../../services/staticService";
export const staticList = (id) => {
return (dispatch, getState) => {
const { params, total_count, other_info } = getState().staticReducer;
if (total_count !== 0 && total_count === other_info.length) return;
// console.log('统计数据=====>>>>>', params);
// if (total_count !== 0 && total_count === other_info.length) return;
fetchStaticList(id, params).then(res => {
// console.log('统计数据=====>>>>>', res);
const {data} = res;
if (data.status === 0) {
dispatch({
type: types.GET_STATIC_INFO,
other_info:data.data.other_info,
payload: data.data
});
}

@ -38,12 +38,14 @@ const initalState = {
const staticReducer = (state = initalState, action) => {
const { payload = {}, type } = action;
const {subject_info, other_info = [], total = {}, total_count} = payload;
switch (type) {
case types.GET_STATIC_INFO:
return {
...state,
subject_info,
other_info: state.other_info.concat(other_info),
other_info,
// other_info: state.other_info.concat(other_info),
total,
total_count,
params: Object.assign({}, state.params, { page: state.params.page + 1 })

Loading…
Cancel
Save