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

dev_hjm
jingquan huang 6 years ago
commit e0ca649dfb

@ -81,6 +81,7 @@ class SubjectsController < ApplicationController
def show
@user = current_user
@is_creator = current_user.creator_of_subject?(@subject)
@is_manager = @user.manager_of_subject?(@subject)
# 合作团队
@members = @subject.subject_members.includes(:user)
@shixuns = @subject.shixuns.published.pluck(:id)
@ -281,7 +282,7 @@ class SubjectsController < ApplicationController
# 删除实训
# DELETE: /api/subejcts/:id/delete_member
def delete_member
tip_exception(403, "没权限操作") if !current_user.admin?
tip_exception(403, "没权限操作") unless current_user.manager_of_subject?(@subject)
tip_exception('用户id不能为空') if params[:user_id].blank?
user = @subject.subject_members.where(:user_id => params[:user_id], :role => 2).first
tip_exception("管理员用户不允许删除,或用户不存在") if user.blank?

@ -263,9 +263,9 @@ class User < ApplicationRecord
course&.course_members.exists?(user_id: id)
end
# 实训路径管理员创建者或admin
# 实训路径管理员
def creator_of_subject?(subject)
subject.user_id == id || admin?
subject.user_id == id
end
# 实训路径合作者、admin

@ -5,12 +5,12 @@ json.challenges_count @subject.subject_challenge_count
json.subject_score @subject.all_score
json.member_count @subject.member_count
json.allow_delete @is_creator && (@subject.status != 2 || @user.admin?)
json.allow_delete (@subject.status != 2 && @is_creator) || @user.admin?
json.publish_status publish_status(@subject, @is_creator, @user, @shixuns)
json.allow_statistics @user.manager_of_subject?(@subject)
json.allow_statistics @is_manager
json.allow_send @user.logged?
json.allow_visit @user.manager_of_subject?(@subject) || @user.admin? || @subject.status > 1
json.allow_add_member @user.manager_of_subject?(@subject)
json.allow_visit @subject.status > 1 || @is_manager
json.allow_add_member @is_manager
json.members @members do |member|
json.partial! 'subject_member', locals: { user: member.user }

@ -1,3 +1,4 @@
json.members @subject.subject_members do |member|
json.partial! 'subject_member', locals: { user: member.user }
json.role member.role
end

@ -5,6 +5,13 @@ import { BrowserRouter as Router, Route, Link } from "react-router-dom";
import { Spin } from 'antd';
class Loading extends Component {
componentDidUpdate(prevProps, prevState) {
if (!prevProps.error && this.props.error) {
console.log(this.props.error)
window.location.reload()
}
}
render() {
// Loading
return (

@ -119,17 +119,17 @@ class ListPageIndex extends Component{
{/*头部banner*/}
<CoursesBanner {...this.props}></CoursesBanner>
{mysearch!==undefined?
(
mysearch===true?
<Guide
setwindowlocal={(b)=>this.setwindowlocal(b)}
>
</Guide>
:""
)
:""
}
{/*{mysearch!==undefined?*/}
{/*(*/}
{/* mysearch===true?*/}
{/* <Guide*/}
{/* setwindowlocal={(b)=>this.setwindowlocal(b)}*/}
{/* >*/}
{/* </Guide>*/}
{/* :""*/}
{/* )*/}
{/* :""*/}
{/*}*/}
<div className="educontent clearfix" style={{flex: "1 0 auto"}}>
<div className="stud-class-set">

@ -246,9 +246,32 @@ class CoursesBanner extends Component {
})
var url = `/courses/${id}/duplicate_course.json`
axios.post(url).then((response) => {
if(response!==undefined){
window.location.href = "/courses/" + response.data.new_course_id+"/students";
}else {
this.modalCancel();
}
// window.location.href = "/courses/" + response.data.new_course_id;
window.location.href = "/courses/" + response.data.new_course_id+"/students";
})
}).catch(function (error) {
this.modalCancel();
console.log(252);
console.log(error);
});
// axios.interceptors.response.use((response) => {
// if (response != undefined)
// if (response && response.data.status === -1) {
// this.setState({
// antIcon: false,
// })
//
// }
// return response;
// }, (error) => {
// //TODO 这里如果样式变了会出现css不加载的情况
//
// });
}
if(this.state.metype===6){

@ -72,7 +72,8 @@ class ShixunStudentWork extends Component {
showmodel:false,
jobsettingsdata:undefined,
DownloadType:false,
DownloadMessageval:undefined
DownloadMessageval:undefined,
lunxun:true,
}
}
@ -121,6 +122,7 @@ class ShixunStudentWork extends Component {
getupdata=(pages)=>{
let {order,b_order,page,limit,group_infolist,search}=this.state;
var homeworkid = this.props.match.params.homeworkid;
let url = "/homework_commons/" + homeworkid + "/code_review_results.json";
@ -151,10 +153,10 @@ class ShixunStudentWork extends Component {
}
this.setState({
data: response.data,
datalist:datas
})
datalist:datas,
lunxun:false,
});
}
}
}
@ -174,7 +176,13 @@ class ShixunStudentWork extends Component {
description: response.data.message
});
}
setInterval(() => {
console.log("开始轮询了");
if(this.state.lunxun===true){
console.log("开始轮询了getupdata");
this.getupdatasysk();
}
}, 5000);
}).catch((error) => {
@ -186,6 +194,53 @@ class ShixunStudentWork extends Component {
this.setState({
shixuntypes:type[3]
})
};
getupdatasysk=(pages)=>{
let {order,b_order,page,limit,group_infolist,search}=this.state;
var homeworkid = this.props.match.params.homeworkid;
let url = "/homework_commons/" + homeworkid + "/code_review_results.json";
axios.get(url,{params:{
order:order,
sort:b_order,
page:pages===undefined?page:pages,
limit:limit,
group_ids:group_infolist,
search:search
},
paramsSerializer: function(params) {
return qs.stringify(params, {arrayFormat: 'brackets'})
}}).then((response) => {
if (response.data.status === undefined || response.data.status === 0) {
if(response.data!=undefined){
if(response.data.status!=-2){
let datas=[];
let list=response.data.users_reviews;
for(var i=0; i<list.length; i++){
datas.push({
number:i+1,
name:list[i].username,
stduynumber:list[i].student_id,
classroom:parseInt(list[i].code_rate),
operating:list[i].user_id
})
}
this.setState({
data: response.data,
datalist:datas,
lunxun:false,
});
}
}
}
}).catch((error) => {
console.log(error)
});
}
getcode_review_results=(order,b_order,page,limit,group_infolist,search)=>{

@ -24,7 +24,8 @@ function startechart(data){
// trigger: 'axis',
showDelay : 0,
formatter : function (params) {
if(params.name == data.username){
if(params.name === data.username){
return "姓名:"+data.username + "<br/>"+'学号: '+data.user_id + "<br/>"+'效率:'+ data.echart_data.myself_eff[1];
}else if (params.value.length > 1) {
/* return '学生ID: ' + params.value[2] + '<br/>'
@ -34,6 +35,7 @@ function startechart(data){
return params.name + ":" + params.value +" ";
}
},
axisPointer:{
show: true,
type : 'cross',
@ -106,7 +108,7 @@ function startechart(data){
markPoint : {
data : [
{
name: data.username,
name: data===undefined?"":data.username,
xAxis:data.echart_data===undefined?"":data.echart_data.myself_eff[0],
yAxis:data.echart_data===undefined?"":data.echart_data.myself_eff[1],
value:data.echart_data===undefined?"":data.echart_data.myself_eff[1],
@ -130,13 +132,13 @@ function startechart(data){
]
}
},
{
name:'二班',
type:'scatter',
data: data.echart_data===undefined?"":data.echart_data.myself_eff,
itemStyle:{
color:'#c23531'
}}
// {
// name:'二班',
// type:'scatter',
// data: data.echart_data===undefined?"":data.echart_data.myself_eff,
// itemStyle:{
// color:'#c23531'
// }}
]};
effChart.setOption(option);
@ -189,7 +191,7 @@ function startechart(data){
borderWidth: 1,
formatter: function (obj) {
var value = obj.value;
if(obj.name ==data.username){
if(obj.name ===data.username){
return "姓名:"+data.username + "<br/>"+'学号: '+data.user_id + "<br/>"+'得分:'+ data.echart_data===undefined?"":data.echart_data.myself_object[1];
}
@ -242,7 +244,7 @@ function startechart(data){
markPoint : {
data : [
{
name: data.username,
name: data===undefined?"":data.username,
xAxis: data.echart_data===undefined?"":data.echart_data.myself_object[0],
yAxis:data.echart_data===undefined?"":data.echart_data.myself_object[1],
value:data.echart_data===undefined?"":data.echart_data.myself_object[1]
@ -255,15 +257,15 @@ function startechart(data){
}
}
},
{
name: '能力1',
type: 'scatter',
data: data.echart_data===undefined?"":data.echart_data.myself_object,
itemStyle:itemStyle1,
symbolSize: function (val){
return Math.round(val[2]);
}
}
// {
// name: '能力1',
// type: 'scatter',
// data: data.echart_data===undefined?"":data.echart_data.myself_object,
// itemStyle:itemStyle1,
// symbolSize: function (val){
// return Math.round(val[2]);
// }
// }
]
};
// 使用刚指定的配置项和数据显示图表。
@ -368,7 +370,7 @@ class Shixunechart extends Component {
</div>
<div className="fl with65" style={{paddingLeft: "5%"}}>
<li className="mt5 mb5">{data&&data.username}</li>
<li className="mt5 mb5">{data&&data.user_id}</li>
<li className="mt5 mb5">{data!==undefined?"无":data.student_id===undefined?"无":data.student_id===null?"无":data.student_id}</li>
<li className="mt5 mb5 color-orange03"><span className="color-orange03">{data&&data.echart_data===undefined?"":data&&data.echart_data.myself_eff[1]}</span></li>
<li className="mt5 mb5 color-orange03"><span className="color-orange03">{data&&data.echart_data===undefined?"":data&&data.echart_data.myself_eff[0]}</span></li>
</div>
@ -394,7 +396,7 @@ class Shixunechart extends Component {
</div>
<div className="fl with65" style={{paddingLeft: "5%"}}>
<li className="mt5 mb5">{data&&data.username}</li>
<li className="mt5 mb5">{data&&data.user_id}</li>
<li className="mt5 mb5">{data!==undefined?"无":data.student_id===undefined?"无":data.student_id===null?"无":data.student_id}</li>
<li className="mt5 mb5 color-orange03"><span className="color-orange03">{data&&data.echart_data===undefined?"":data&&data.echart_data.myself_object[1]}</span></li>
</div>
</div>

@ -209,7 +209,7 @@ class DetailTop extends Component{
>删除路径</a>:""}
{
detailInfoList.publish_status===0&&detailInfoList.allow_statistics===true?
detailInfoList.publish_status===0&&detailInfoList.allow_add_member===true?
<a className="user_default_btn user_bluebg_btn font-18 fl ml40 userbluebgfont"
onClick={this.applyissuePath}
>申请发布</a>:""

@ -252,6 +252,10 @@ class PathDetailIndex extends Component{
let param={user_id:user_id};
axios.delete(url,{data:param}).then((response) => {
if(response.data.status===1){
if (this.props.current_user.user_id == user_id) {
this.props.history.push('/paths')
return;
}
this.props.showNotification(response.data.message)
this.setState({
Modalstype:false,

Loading…
Cancel
Save