Merge branch 'dev_aliyun' into dev_cxt2

dev_auth
cxt 5 years ago
commit 74301c52b1

@ -244,6 +244,7 @@ class CoursesController < ApplicationController
@rank = user_ids.index(current_user.id).to_i + 1
@course_members = @course_members.select{|member| member.user_id == current_user.id}
else
@all_count = @course_members.size
@course_members = paginate @course_members
end
end

@ -78,7 +78,6 @@ module ExportHelper
end
shixun_score += shixun_score_array.sum
shixun_score_array.push(shixun_score) #shixun_score_array的最后一行为总分
user_work_scores += user_info_array + shixun_score_array #单个用户的实训作业得分信息
#普通作业
if common_homeworks.size > 0
@ -94,7 +93,6 @@ module ExportHelper
end
common_score += common_score_array.sum
common_score_array.push(common_score) #shixun_score_array的最后一行为总分
user_work_scores += common_score_array #单个用户的普通作业得分信息
#分组作业
if group_homeworks.size > 0
@ -110,7 +108,6 @@ module ExportHelper
end
group_score += group_score_array.sum
group_score_array.push(group_score) #shixun_score_array的最后一行为总分
user_work_scores += group_score_array #单个用户的分组作业得分信息
#毕设作业
if tasks.size > 0
@ -126,7 +123,6 @@ module ExportHelper
end
task_score += task_score_array.sum
task_score_array.push(task_score)
user_work_scores += task_score_array #单个用户的分组作业得分信息
#试卷
if exercises.size > 0
@ -143,9 +139,9 @@ module ExportHelper
exercise_score += exercise_score_array.sum
exercise_score_array.push(exercise_score)
user_work_scores += exercise_score_array #单个用户的分组作业得分信息
total_user_scores = shixun_score + common_score + group_score + task_score + exercise_score
user_work_scores.push(total_user_scores) #个人的行内容添加总成绩
user_info_array.push(total_user_scores) #个人的行内容添加总成绩
user_work_scores += user_info_array + shixun_score_array + common_score_array + group_score_array + task_score_array + exercise_score_array
total_user_score_array.push(user_work_scores) # 全部成员的集合
end
@ -154,7 +150,7 @@ module ExportHelper
course_user_score_title = "学生总成绩"
score_title_cells = shixun_titles + common_titles + group_titles + task_titles + exercise_titles
score_title_counts = [shixun_titles.count,common_titles.count,group_titles.count,task_titles.count,exercise_titles.count]
score_cell_head = %w(序号 真实姓名 登录名 邮箱 学号 学校 分班) + score_title_cells + ["个人总成绩"]
score_cell_head = %w(序号 真实姓名 登录名 邮箱 学号 学校 分班 个人总成绩) + score_title_cells
@course_user_scores = [course_user_score_title,score_cell_head,score_title_counts,total_user_score_array]
#作业的全部集合

@ -20,7 +20,7 @@
<% subjects.each do |subject| %>
<tr class="subject-item-<%= subject.id %>">
<td class="text-left">
<%= link_to(subject.name, subject_path(subject), target: '_blank') %>
<%= link_to(subject.name, "/paths/#{subject.id}", target: '_blank') %>
<span class="badge badge-pill badge-success homepage-show-badge" style="<%= subject.homepage_show? ? '' : 'display:none' %>">首页</span>
<span class="badge badge-pill badge-info excellent-badge" style="<%= subject.excellent? ? '' : 'display:none' %>">金课</span>
</td>

@ -22,18 +22,19 @@ wb.styles do |s|
sheet.merge_cells("E1:E2")
sheet.merge_cells("F1:F2")
sheet.merge_cells("G1:G2")
sheet.merge_cells (Axlsx::cell_r(sheet_length-1,0) + ':' + Axlsx::cell_r(sheet_length-1,1)) #最后一行的合并
sheet.merge_cells("H1:H2")
# sheet.merge_cells (Axlsx::cell_r(sheet_length-1,0) + ':' + Axlsx::cell_r(sheet_length-1,1)) #最后一行的合并
sheet_first = sheet.rows.first #第一行
sheet_second = sheet.rows.second #第二行
work_head_title = %w(实训作业 普通作业 分组作业 毕设任务 试卷)
(0..(sheet_length-1)).each do |i|
if i <= 6 || i == sheet_length-1
if i <= 7
sheet_first.cells[i].value = sheet_title[i]
else
sheet_second.cells[i].value = sheet_title[i]
end
end
st_col = 7
st_col = 8
sheet_title_counts.each_with_index do |c,index|
end_col = (st_col + c - 1)
sheet.merge_cells sheet_first.cells[(st_col..end_col)]

@ -11,3 +11,4 @@ json.course_members @course_members.each do |member|
json.total_score member.score
json.rank @rank if @user_course_identity == Course::STUDENT
end
json.all_count @all_count

@ -70,6 +70,8 @@ class Registration extends React.Component {
members_count: 0,
mode: 0,
region_schools: [],
admin: false,
typeysl: 0,
}
}
@ -85,6 +87,9 @@ class Registration extends React.Component {
const {keyword, page, per_page} = this.state;
this.Getdata(keyword, page, per_page, this.props.user.admin);// 获取列表数据
this.GetenrollmentAPI();//获取我的报名配置
this.setState({
admin: this.props.user.admin
})
} catch (e) {
// const {keyword, page, per_page} = this.state;
// this.Getdata(keyword, page, per_page, this.props.isAdmin());
@ -107,6 +112,9 @@ class Registration extends React.Component {
this.GetenrollmentAPI();
//取模式
this.Getdataheader();
this.setState({
admin: this.props.user.admin
})
}
}
@ -281,17 +289,90 @@ class Registration extends React.Component {
}
} else {
this.setState({
type: 6,
data: result.data.my_teams,
count: result.data.count,
competition_teams: result.data.competition_teams,
personal: result.data.personal,
competition_name: result.data.competition_name,
members_count: result.data.members_count
if (this.props.user.admin === true) {
try {
if (result.data.competition_teams.length === 0) {
this.setState({
type: 6,
typeysl: 1,
data: result.data.competition_teams,
count: result.data.count,
competition_teams: result.data.competition_teams,
personal: result.data.personal,
competition_name: result.data.competition_name,
members_count: result.data.members_count,
})
} else {
this.setState({
type: 6,
typeysl: 0,
data: result.data.competition_teams,
count: result.data.count,
competition_teams: result.data.competition_teams,
personal: result.data.personal,
competition_name: result.data.competition_name,
members_count: result.data.members_count,
})
}
} catch (e) {
this.setState({
type: 6,
typeysl: 1,
data: result.data.competition_teams,
count: result.data.count,
competition_teams: result.data.competition_teams,
personal: result.data.personal,
competition_name: result.data.competition_name,
members_count: result.data.members_count,
})
}
} else {
try {
if (result.data.my_teams.length === 0) {
this.setState({
type: 6,
typeysl: 1,
data: result.data.my_teams,
count: result.data.count,
competition_teams: result.data.competition_teams,
personal: result.data.personal,
competition_name: result.data.competition_name,
members_count: result.data.members_count,
})
} else {
this.setState({
type: 6,
typeysl: 0,
data: result.data.my_teams,
count: result.data.count,
competition_teams: result.data.competition_teams,
personal: result.data.personal,
competition_name: result.data.competition_name,
members_count: result.data.members_count,
})
}
} catch (e) {
this.setState({
type: 6,
typeysl: 1,
data: result.data.my_teams,
count: result.data.count,
competition_teams: result.data.competition_teams,
personal: result.data.personal,
competition_name: result.data.competition_name,
members_count: result.data.members_count,
})
}
}
})
}
}
@ -824,7 +905,7 @@ class Registration extends React.Component {
render() {
const {page, mode, pages, limit, type, tmodalsType, tmodalsTypes, data, count, competition_teams, Newtit, itemiddata, messagePerbool, messageexitol, GetenrollmentAPI, loadingstate, pint, competition_name, mutiple_limited, teamutiple_limited, members_count} = this.state;
const {page, admin, typeysl, mode, pages, limit, type, tmodalsType, tmodalsTypes, data, count, competition_teams, Newtit, itemiddata, messagePerbool, messageexitol, GetenrollmentAPI, loadingstate, pint, competition_name, mutiple_limited, teamutiple_limited, members_count} = this.state;
return (
<div className="newMain clearfix newMainybot">
@ -894,15 +975,15 @@ class Registration extends React.Component {
></CompetitionMaxImg>
{/*大图结尾*/}
{/*没数据*/}
{
pint === 1 || pint === 3 ?
{admin === true ?
(pint === 1 || pint === 3 ?
<div style={{
marginTop: "22px"
}}>
<p>参赛总人数<span style={{color: "#459BE5"}}>{members_count}</span><span
style={{marginLeft: "5px"}}></span>
</p>
</div>
</div> : "")
: ""}
{/*列表*/}
{
@ -926,7 +1007,7 @@ class Registration extends React.Component {
</div>
: ""}
{
type === 1 ?
type === 1 || typeysl === 1 ?
<RegisNodata {...this.props} {...this.state} ></RegisNodata>
:
""

@ -1017,6 +1017,7 @@ class Coursesleftnav extends Component{
return(
<div key={key} >
<a>
{item.type!="statistics"?
<li title={item.name.length<7?"":item.name} onClick={(e)=>this.showsandians(e,key,item.category_url,1,item.id,item.type)} className={this.props.mainurl===item.category_url&&this.props.location.pathname===item.category_url?"liactive":"clearfix active"} onMouseLeave={(e)=>this.hidesandian(e,key)} onMouseEnter={(e)=>this.showsandian(e,key)}>
<a onClick={(e)=>this.showsandians(e,key,item.category_url,1,item.id,item.type)} className={ item.second_category===undefined?"fl ml20 pd0":item.second_category.length===0?"fl ml20 pd0":this.state.sandiantypes===key?"fl ml20 pd0 ebebeb":"fl ml20 pd0"}>
{
@ -1050,7 +1051,7 @@ class Coursesleftnav extends Component{
</Popover>:""}
</a>
</li>
</li>:""}
{/*下拉列表*/}
@ -1154,6 +1155,7 @@ class Coursesleftnav extends Component{
<div key={key}>
{/*<Tooltip placement="bottom" title={"点击空白处展开二级菜单,点击模块名字跳转到对应模块"}>*/}
<a >
{item.type!="statistics"?
<li className={this.props.mainurl===item.category_url&&this.props.location.pathname===item.category_url?"liactive":"clearfix active"}
onClick={(e)=>this.setnavid(e,key,item.id,item.type,item.category_url)} onMouseEnter={(e)=>this.showsandian(e,key)}
title={item.name.length<7?"":item.name}
@ -1177,7 +1179,7 @@ class Coursesleftnav extends Component{
<span className={this.props.location.pathname===item.category_url?"color-blue fr mr20 font-14":"fr mr20 color999 font-14"}>{item.task_count===0?"":item.task_count}</span>
</a>
</li>
</li>:""}
</a>
<ul style={{display:key===this.props.indexs?"":"none"}} class="droppableul">

@ -184,7 +184,8 @@ class Exercisestatisticalresult extends Component {
</style>
<div className="stud-class-set fafafa">
<li className="drop_down fr mt10 mr33 cursor" onClick={() => this.onSortTypeChange()}>
<li className="fl mt10 cursor zexercisetitle">统计详情</li>
<li className="drop_down fr mt10 cursor zexercisetitle" onClick={() => this.onSortTypeChange()}>
{/*{sort==="percent"?"正确率":sort==="type"?"题型":sort==="position"?"题序":""}*/}
{/*<i className="iconfont icon-xiajiantou font-12 ml2"></i>*/}
{/*<ul className="drop_down_normal">*/}
@ -208,6 +209,9 @@ class Exercisestatisticalresult extends Component {
.CACFF{
color:#4CACFF;
}
.C3333{
color:#333;
}
.bor-greyE{
border: 1px solid #EEEEEE!important;
}
@ -281,7 +285,7 @@ class Exercisestatisticalresult extends Component {
<div className="stud-class-set mb20 exerciseTable" key={key}>
<div className="clearfix edu-back-white poll_list" style={{padding: '20px'}}>
<div className="font-16 shixunreporttitle fl" style={{width:"1050px"}}>
<span className="CACFF">{item.ques_position+"."}{item.ques_type===0?"单选":item.ques_type===1?"多选":item.ques_type===2?"判断":item.ques_type===3?"填空":item.ques_type===4?"主观":item.ques_type===5?"实训":""}</span>
<span className="C3333">{item.ques_position+"."}{item.ques_type===0?"单选":item.ques_type===1?"多选":item.ques_type===2?"判断":item.ques_type===3?"填空":item.ques_type===4?"主观":item.ques_type===5?"实训":""}</span>
<div>
{/*Q{item.ques_position}*/}
{/* <div className={"markdown-body"} dangerouslySetInnerHTML={{__html: markdownToHTML1(item.ques_title).replace(/▁/g,"▁▁▁")}}></div> */}

@ -74,7 +74,7 @@ class OfficialAcademicTranscript extends Component {
</span>
),
}, {
title: '不及格(0-60)',
title: '不及格(得分 低于60%',
key: 'fail_counts',
dataIndex: 'fail_counts',
render: (text, record) => (
@ -83,7 +83,7 @@ class OfficialAcademicTranscript extends Component {
</span>
),
}, {
title: '及格(60-70)',
title: '及格(得分 60%~70%',
key: 'pass_counts',
dataIndex: 'pass_counts',
@ -93,7 +93,7 @@ class OfficialAcademicTranscript extends Component {
</span>
),
}, {
title: '良好(70-90)',
title: '良好(得分 70%~90%',
key: 'good_counts',
dataIndex: 'good_counts',
@ -103,7 +103,7 @@ class OfficialAcademicTranscript extends Component {
</span>
),
}, {
title: '优秀(90-100)',
title: '优秀(得分 90%~100%',
key: 'best_counts',
dataIndex: 'best_counts',
@ -167,6 +167,12 @@ class OfficialAcademicTranscript extends Component {
.exerctabel .ant-table-tbody > tr >td{
border:1px solid transparent;
}
.exerctabel .ant-table-thead > tr > th {
background: #fff !important;
border-top: 1px solid #F4F4F4;
border-bottom: 1px solid #F4F4F4 !important;
}
`}
</style>

@ -109,7 +109,22 @@ class Exercisetablesmubus extends Component {
return (
<div>
<style>{`
.Exermubu .ant-table-thead > tr > th {
background: #fff !important;
border-bottom: 1px solid #F4F4F4 !important;
}
.Exermubu .ant-table-thead .ant-table-column-title{
color:#999999;
}
.Exermubu .ant-table-tbody> tr > td{
border-bottom: transparent;
}
`}
</style>
{datas===undefined?"":<Table
className={"Exermubu"}

@ -1066,6 +1066,7 @@ class Studentshavecompletedthelist extends Component {
key: 'name',
align: 'center',
className: "edu-txt-center font-14",
render: (text, record) => (
<span>
{record.name==="--"?
@ -1082,6 +1083,8 @@ class Studentshavecompletedthelist extends Component {
key: 'stduynumber',
align: 'center',
className: "edu-txt-center font-14",
sorter: true,
sortDirections: sortDirections,
render: (text, record) => (
<span>
{record.stduynumber === "--" ?
@ -1135,6 +1138,9 @@ class Studentshavecompletedthelist extends Component {
key: 'updatetime',
align: 'center',
className: "edu-txt-center font-14",
sorter: true,
defaultSortOrder: 'descend',
sortDirections: sortDirections,
render: (text, record) => (
<span>
{record.updatetime==="--"?
@ -1183,6 +1189,8 @@ class Studentshavecompletedthelist extends Component {
key: 'efficiencyscore',
align: 'center',
className: "edu-txt-center font-14",
sorter: true,
sortDirections: sortDirections,
render: (text, record) => (
<span>
{record.efficiencyscore === "--" ?
@ -1233,7 +1241,7 @@ class Studentshavecompletedthelist extends Component {
</span>
)
},
],
],//columnsystwo 也会被columnsys当作参数接收
exercise_status:0,
order_type: "desc",
}
@ -2729,7 +2737,7 @@ class Studentshavecompletedthelist extends Component {
.ysltableows2 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 9px;
}
mysjysltable1 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
.mysjysltable1 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 9px;
}
`}</style>
@ -2840,7 +2848,7 @@ class Studentshavecompletedthelist extends Component {
.ysltableows2 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 9px;
}
mysjysltable2 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
.mysjysltable2 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 9px;
}
`}</style>
@ -2896,7 +2904,7 @@ class Studentshavecompletedthelist extends Component {
.ysltableows .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 9px;
}
mysjysltable3 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
.mysjysltable3 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 9px;
}
`
@ -2972,7 +2980,7 @@ class Studentshavecompletedthelist extends Component {
.ysltableowss .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 9px;
}
mysjysltable4 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
.mysjysltable4 .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 9px;
}
`}</style>

@ -372,3 +372,9 @@ textarea:read-only{
.myyslwidth {
min-width:1200px
}
.zexercisetitle{
font-size: 16px;
color: rgba(51,51,51,1);
min-width: 95px;
}

@ -1096,6 +1096,7 @@ class Listofworksstudentone extends Component {
className: 'font-14',
sorter: true,
sortDirections: sortDirections,
defaultSortOrder: 'descend',
render: (text, record) => (
<span>
{
@ -1425,6 +1426,7 @@ class Listofworksstudentone extends Component {
className: 'font-14',
sorter: true,
sortDirections: sortDirections,
defaultSortOrder: 'descend',
render: (text, record) => (
<span>
{

@ -127,7 +127,6 @@ class Trainingjobsetting extends Component {
end_timebool:false,
late_timesbool:false,
work_efficiencys:false,
task_pass: false, //是否允许跳关
}
// console.log("获取到的值")
// console.log("Trainingjobsetting")
@ -273,7 +272,6 @@ class Trainingjobsetting extends Component {
publish_timebool:publish_timebools,
end_timebool:end_timebools,
late_timesbool:late_timess,
task_pass: result.data.task_pass,
rules:array,
rulest:arrays,
rulesdata:rulesdatas,
@ -703,51 +701,33 @@ class Trainingjobsetting extends Component {
// console.log(e.target.checked);
}
//是否跳关设置
//数据表创建
onChangedatasheet = (e, index) => {
var challenge_settings = this.state.challenge_settings;
let {task_pass} = this.state;
if (task_pass === true) {
// 可以跳关
for (var i = 0; i < challenge_settings.length; i++) {
if (i === index) {
if (challenge_settings[i].checked === true) {
challenge_settings[i].checked = false
} else {
challenge_settings[i].checked = true
}
}
}
} else {
//不能跳关
var bool= false;
//先判断如果是点击的关口 checked 根据点击进行切换
for (var i = 0; i < challenge_settings.length; i++) {
if (i === index) {
if (challenge_settings[i].checked === true) {
challenge_settings[i].checked = false
bool=false;
} else {
challenge_settings[i].checked = true
bool=true;
}
}
}
//小于被选中的checked 都被选中 如果是大于被选中的checked 就全部隐藏掉
for (var i = 0; i < challenge_settings.length; i++) {
if(bool=== true){
if (i < index) {
challenge_settings[i].checked = true
}
}else{
if (i > index) {
challenge_settings[i].checked = false
}
}
var bool = false;
for (var i = 0; i < challenge_settings.length; i++) {
if (i === index) {
if (challenge_settings[i].checked === true) {
challenge_settings[i].checked = false
bool = false;
} else {
challenge_settings[i].checked = true
bool = true;
}
}
}
for (var i = 0; i < challenge_settings.length; i++) {
if (bool === true) {
if (i < index) {
challenge_settings[i].checked = true
}
} else {
if (i > index) {
challenge_settings[i].checked = false
}
}
}
}
}
// console.log(e.target.checked)
// console.log(index)
this.setState({
@ -2105,7 +2085,7 @@ class Trainingjobsetting extends Component {
const dataformat = 'YYYY-MM-DD HH:mm';
let {flagPageEdit, testscripttiptype, publish_timebool, end_timebool, late_timesbool, work_efficiencys, flagPageEdits, flagPageEditstwo, flagPageEditsbox, whethertopay, handclass, flagPageEditsthrees, flagPageEditsfor, rules, rulest, unifiedsetting, group_settings, course_group, unit_e_tip, borreds, borredss, unit_p_tip, end_time, late_time, score_open, publish_time, starttimetype, modalsType, modalsTopval, loadtype, modalSave, endtimetype, latetimetype, allowlate, latepenaltytype, jobsettingsdata, endOpen, mystyle, mystyles, task_pass} = this.state;
let {flagPageEdit, testscripttiptype, publish_timebool, end_timebool, late_timesbool, work_efficiencys, flagPageEdits, flagPageEditstwo, flagPageEditsbox, whethertopay, handclass, flagPageEditsthrees, flagPageEditsfor, rules, rulest, unifiedsetting, group_settings, course_group, unit_e_tip, borreds, borredss, unit_p_tip, end_time, late_time, score_open, publish_time, starttimetype, modalsType, modalsTopval, loadtype, modalSave, endtimetype, latetimetype, allowlate, latepenaltytype, jobsettingsdata, endOpen, mystyle, mystyles} = this.state;
// console.log(publish_timebool);
// console.log(!flagPageEditstwo);
const radioStyle = {
@ -2531,8 +2511,7 @@ class Trainingjobsetting extends Component {
</span>
</div>
<p className="ml20 mt15 c_grey font-13 " style={{color:"#666666"}}> 关卡名称<span
className="color-orange-tip font-14 ml10">{task_pass === false ? "(请选中需要学生完成的关卡,该实训不支持跳关学习)" : "(请选中需要学生完成的关卡,该实训支持跳关学习)"}</span>
</p>
className="color-grey-c font-14 ml10">(需要学生完成的任务请选中,暂不支持跳关选择)</span></p>
<div className="ml40 mt15" >
{this.state.challenge_settings === undefined ? "" : this.state.challenge_settings.map((object, index) => {
return (
@ -2549,7 +2528,6 @@ class Trainingjobsetting extends Component {
value={object.challenge_score}
/>
<span className="ml10" style={{color:"#999999"}}></span>
<span className="ml40">{object.difficulty}</span>
</li>
)
})}

@ -12,42 +12,138 @@ class Statistics extends Component{
nd1:60,
nd2:40,
nd3:20,
data:undefined
data:undefined,
bomdata:undefined,
topisSpin:true,
bomisSpin:true,
sort:'desc',
course_groups:[],
page:1
}
}
componentDidMount() {
this.setState({
isSpin:true,
})
let {page,group_ids,sort}=this.state;
let courseId=this.props.match.params.coursesId;
let url=`/courses/${courseId}/statistics.json`;
axios.get(url).then((result) => {
if (result) {
this.setState({
data:result.data.top_scores
data:result.data.top_scores,
topisSpin:false
})
}
}).catch((error) => {
console.log(error);
this.setState({
isSpins:false,
topisSpin:false,
})
})
let courseurl=`/courses/${courseId}/all_course_groups.json`;
axios.get(courseurl).then((result) => {
if (result) {
this.setState({
course_groups:result.data.course_groups
})
let list=result.data.course_groups;
if(list.length>0){
this.setState({
group_ids:[list[0].id],
})
this.getwork_scoredata(page,[list[0].id],sort);
}
}
}).catch((error) => {
console.log(error);
})
}
getwork_scoredata=(page,group_ids,sort)=>{
let courseId=this.props.match.params.coursesId;
let url=`/courses/${courseId}/work_score.json`;
let data={
limit:20,
page:page,
group_ids:group_ids,
sort:sort
}
axios.get(url,{params:
data
}).then((result) => {
if (result) {
this.setState({
bomdata:result.data.course_members,
bomisSpin:false
})
}
}).catch((error) => {
console.log(error);
this.setState({
bomisSpin:false,
})
})
}
callback=(key)=>{
console.log(key);
}
render(){
let {nd1,nd2,nd3,data}=this.state;
let {nd1,nd2,nd3,data,bomdata,course_groups}=this.state;
let course_grouptype=false
if(this.props&&this.props.course_modules!=undefined){
{this.props&&this.props.course_modules.map((item,key)=>{
if(item.type==="course_group"){
course_grouptype=true
}
})}
}
// const columns = [
// {
// title: 'Name',
// dataIndex: 'name',
// sorter: true,
// render: name => `${name.first} ${name.last}`,
// width: '20%',
// },
// {
// title: 'Gender',
// dataIndex: 'gender',
// filters: course_groups,
// width: '20%',
// },
// {
// title: 'Email',
// dataIndex: 'email',
// },
// ];
// console.log(bomdata)
//common_score: 0
// course_group: "威风威风急急急"
// exercise_score: "0.0"
// graduation_score: 0
// group_score: 0
// practice_score: 3232
// total_score: 3232
// user_login: "p40793521"
// user_name: "李明霞"
return(
<React.Fragment >
<div>
<div className="edu-back-white">
<Spin size="large" spinning={this.state.topisSpin}>
<p className="clearfix padding30">
<Row gutter={24}>
<Col>
@ -200,18 +296,26 @@ class Statistics extends Component{
</Row>
</p>
</Spin>
</div>
<div className="mt20 edu-back-white">
<Spin size="large" spinning={this.state.bomisSpin}>
<Tabs className="statisticsTabs" defaultActiveKey="1" onChange={this.callback}>
<TabPane tab="学习成绩" key="1" className={"statisticsTabs1"}>
Content of Tab Pane 1
{/*<Table*/}
{/*columns={columns}*/}
{/*dataSource={bomdata}*/}
{/*onChange={this.handleTableChange}*/}
{/*/>*/}
</TabPane>
<TabPane tab="课堂活跃度" key="2">
Content of Tab Pane 2
</TabPane>
</Tabs>
</Spin>
</div>
</div>
</React.Fragment>
)

Loading…
Cancel
Save