合并阿里云

dev_auth
杨树林 6 years ago
commit b80cde484e

@ -471,45 +471,45 @@ $(document).on('turbolinks:load', function(){
' </div>\n' + ' </div>\n' +
' <div id="small_panel_'+count+'" class="small_panel">\n' + ' <div id="small_panel_'+count+'" class="small_panel">\n' +
' <div class="row d-flex small_panel_item" attr_line="sub_new_new" count="1">\n' + ' <div class="row d-flex small_panel_item" attr_line="sub_new_new" count="1">\n' +
' <span class="col-1 mt-2 subName">第1阶段</span>\n' + ' <span class="mt-2 subName mr10">第1阶段</span>\n' +
' <div class="flex-1">\n' + ' <div class="flex-1">\n' +
' <div class="row">\n' + ' <div class="row">\n' +
' <span class="mt-2 ml20">有效时间:</span>\n' + ' <div class="row col-6"><span class="mt-2 ml20">有效时间:</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-4 no_padding">\n' +
' <input type="text" name="stage[][start_time]" id="stage__start_time" value="" autocomplete="off" class="section-start-time form-control" placeholder="有效开始时间">\n' + ' <input type="text" name="stage[][start_time]" id="stage__start_time" value="" autocomplete="off" class="section-start-time form-control" placeholder="有效开始时间">\n' +
' </div>\n' + ' </div>\n' +
' <span class="mt-2">~</span>\n' + ' <span class="mt-2">~</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-4 no_padding ">\n' +
' <input type="text" name="stage[][end_time]" id="stage__end_time" value="" autocomplete="off" class="section-end-time form-control" placeholder="有效结束时间">\n' + ' <input type="text" name="stage[][end_time]" id="stage__end_time" value="" autocomplete="off" class="section-end-time form-control" placeholder="有效结束时间">\n' +
' </div>\n' + ' </div></div>\n' +
' <span class="col-2 text-right mt-2 no_padding">总任务数:</span>\n' + ' <div class="row col-3"><span class="col-4 text-right mt-2 no_padding">总任务数:</span>\n' +
' <div class="col-1 no_padding input_small">\n' + ' <div class="col-6 no_padding ">\n' +
' <input type="number" class="form-control" onchange="change_total(this)" value="3" name="stage[][entry]">\n' + ' <input type="number" class="form-control" onchange="change_total(this)" value="3" name="stage[][entry]">\n' +
' </div>\n' + ' </div></div>\n' +
' <span class="col-1 text-right mt-2 no_padding">成绩来源:</span>\n' + ' <div class="row col-4"><span class="col-3 text-right mt-2 no_padding">成绩来源:</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-7 no_padding ">\n' +
' <select class="form-control" name="stage[][score_source]">\n' + ' <select class="form-control" name="stage[][score_source]">\n' +
' <option value="0">经验值</option>\n' + ' <option value="0">经验值</option>\n' +
' <option value="1">预测准确率</option>\n' + ' <option value="1">预测准确率</option>\n' +
' </select>\n' + ' </select>\n' +
' </div>\n' + ' </div></div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="row mt-2" id="task_Input_sub_new_new">\n' + ' <div class="row mt-2" id="task_Input_sub_new_new">\n' +
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务1</span>\n' + ' <span class="col-4 text-right mt-3 no_padding mr10">任务1</span>\n' +
' <div class="col-8">\n' + ' <div class="col-6 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务2</span>\n' + ' <span class="col-4 text-right mt-3 no_padding mr10">任务2</span>\n' +
' <div class="col-8">\n' + ' <div class="col-6 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务3</span>\n' + ' <span class="col-4 text-right mt-3 no_padding mr10">任务3</span>\n' +
' <div class="col-8">\n' + ' <div class="col-6 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +
@ -547,45 +547,45 @@ $(document).on('turbolinks:load', function(){
var html='<div class="row d-flex small_panel_item" attr_line="sub_'+index+'_'+count+'" count="'+count+'">\n' + var html='<div class="row d-flex small_panel_item" attr_line="sub_'+index+'_'+count+'" count="'+count+'">\n' +
' <span class="col-1 mt-2 subName">第'+showCount+'阶段</span>\n' + ' <span class="mr10 mt-2 subName">第'+showCount+'阶段</span>\n' +
' <div class="flex-1">\n' + ' <div class="flex-1">\n' +
' <div class="row">\n' + ' <div class="row">\n' +
' <span class="mt-2 ml20">有效时间:</span>\n' + ' <div class="row col-6"><span class="mt-2 ml20 mr10">有效时间:</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-4 no_padding ">\n' +
' <input type="text" name="stage[][start_time]" id="stage__start_time" value="" autocomplete="off" class="section-start-time form-control" placeholder="有效开始时间">\n' + ' <input type="text" name="stage[][start_time]" id="stage__start_time" value="" autocomplete="off" class="section-start-time form-control" placeholder="有效开始时间">\n' +
' </div>\n' + ' </div>\n' +
' <span class="mt-2">~</span>\n' + ' <span class="mt-2">~</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-4 no_padding ">\n' +
' <input type="text" name="stage[][end_time]" id="stage__end_time" value="" autocomplete="off" class="section-end-time form-control" placeholder="有效结束时间">\n' + ' <input type="text" name="stage[][end_time]" id="stage__end_time" value="" autocomplete="off" class="section-end-time form-control" placeholder="有效结束时间">\n' +
' </div>\n' + ' </div></div>\n' +
' <span class="col-2 text-right mt-2 no_padding">总任务数:</span>\n' + ' <div class="row col-3"><span class="col-4 text-right mt-2 no_padding mr10">总任务数:</span>\n' +
' <div class="col-1 no_padding input_small">\n' + ' <div class="col-6 no_padding ">\n' +
' <input type="number" class="form-control" onchange="change_total(this)" value="3" name="stage[][entry]">\n' + ' <input type="number" class="form-control" onchange="change_total(this)" value="3" name="stage[][entry]">\n' +
' </div>\n' + ' </div></div>\n' +
' <span class="col-1 text-right mt-2 no_padding">成绩来源:</span>\n' + ' <div class="row col-4"><span class="col-3 mr10 text-right mt-2 no_padding">成绩来源:</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-7 no_padding ">\n' +
' <select class="form-control" name="stage[][score_source]">\n' + ' <select class="form-control" name="stage[][score_source]">\n' +
' <option value="0">经验值</option>\n' + ' <option value="0">经验值</option>\n' +
' <option value="1">预测准确率</option>\n' + ' <option value="1">预测准确率</option>\n' +
' </select>\n' + ' </select>\n' +
' </div>\n' + ' </div></div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="row mt-2" id="task_Input_sub_'+index+'_'+count+'">\n'+ ' <div class="row mt-2" id="task_Input_sub_'+index+'_'+count+'">\n'+
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务1</span>\n' + ' <span class="col-4 text-right mt-3 no_padding mr10">任务1</span>\n' +
' <div class="col-8">\n' + ' <div class="col-6 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务2</span>\n' + ' <span class="col-4 text-right mt-3 no_padding mr10">任务2</span>\n' +
' <div class="col-8">\n' + ' <div class="col-6 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务3</span>\n' + ' <span class="col-4 text-right mt-3 no_padding mr10">任务3</span>\n' +
' <div class="col-8">\n' + ' <div class="col-6 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +
@ -633,8 +633,8 @@ function change_total(item) {
var html = ""; var html = "";
if(count > divCount){ if(count > divCount){
for(var i=0;i < count-divCount ;i++){ for(var i=0;i < count-divCount ;i++){
html+='<div class="col-4 row task_Input_div"><span class="col-3 text-center mt-3">任务'+(divCount+i+1)+'</span>\n' + html+='<div class="col-4 row task_Input_div"><span class="col-4 text-right mt-3 no_padding mr10">任务'+(divCount+i+1)+'</span>\n' +
'<div class="col-8">\n' + '<div class="col-6 no_padding">\n' +
'<input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + '<input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
'</div>\n' + '</div>\n' +
'</div>'; '</div>';
@ -688,45 +688,45 @@ function addNewTab(competition_id) {
' </div>\n' + ' </div>\n' +
' <div id="small_panel_'+count+'" class="small_panel">\n' + ' <div id="small_panel_'+count+'" class="small_panel">\n' +
' <div class="row d-flex small_panel_item" attr_line="sub_new_new" count="1">\n' + ' <div class="row d-flex small_panel_item" attr_line="sub_new_new" count="1">\n' +
' <span class="col-1 mt-2 subName">第1阶段</span>\n' + ' <span class="mt-2 subName mr10">第1阶段</span>\n' +
' <div class="flex-1">\n' + ' <div class="flex-1">\n' +
' <div class="row">\n' + ' <div class="row">\n' +
' <span class="mt-2 ml20">有效时间:</span>\n' + ' <div class="row col-6"><span class="mt-2 ml20 mr10">有效时间:</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-4 no_padding ">\n' +
' <input type="text" name="stage[][start_time]" id="stage__start_time" value="" autocomplete="off" class="section-start-time form-control" placeholder="有效开始时间">\n' + ' <input type="text" name="stage[][start_time]" id="stage__start_time" value="" autocomplete="off" class="section-start-time form-control" placeholder="有效开始时间">\n' +
' </div>\n' + ' </div>\n' +
' <span class="mt-2">~</span>\n' + ' <span class="mt-2">~</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-4 no_padding input_middle">\n' +
' <input type="text" name="stage[][end_time]" id="stage__end_time" value="" autocomplete="off" class="section-end-time form-control" placeholder="有效结束时间">\n' + ' <input type="text" name="stage[][end_time]" id="stage__end_time" value="" autocomplete="off" class="section-end-time form-control" placeholder="有效结束时间">\n' +
' </div>\n' + ' </div></div>\n' +
' <span class="col-2 text-right mt-2 no_padding">总任务数:</span>\n' + ' <div class="row col-3"><span class="col-4 text-right mt-2 no_padding mr10">总任务数:</span>\n' +
' <div class="col-1 no_padding input_small">\n' + ' <div class="col-6 no_padding ">\n' +
' <input type="number" class="form-control" onchange="change_total(this)" value="3" name="stage[][entry]">\n' + ' <input type="number" class="form-control" onchange="change_total(this)" value="3" name="stage[][entry]">\n' +
' </div>\n' + ' </div></div>\n' +
' <span class="col-1 text-right mt-2 no_padding">成绩来源:</span>\n' + ' <div class="row col-4"><span class="col-3 text-right mt-2 no_padding mr10">成绩来源:</span>\n' +
' <div class="col-2 no_padding input_middle">\n' + ' <div class="col-7 no_padding ">\n' +
' <select class="form-control" name="stage[][score_source]">\n' + ' <select class="form-control" name="stage[][score_source]">\n' +
' <option value="0">经验值</option>\n' + ' <option value="0">经验值</option>\n' +
' <option value="1">预测准确率</option>\n' + ' <option value="1">预测准确率</option>\n' +
' </select>\n' + ' </select>\n' +
' </div>\n' + ' </div></div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="row mt-2" id="task_Input_sub_new_new">\n' + ' <div class="row mt-2" id="task_Input_sub_new_new">\n' +
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务1</span>\n' + ' <span class="col-3 text-right mt-3 no_padding mr10">任务1</span>\n' +
' <div class="col-8">\n' + ' <div class="col-8 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务2</span>\n' + ' <span class="col-3 text-right mt-3 no_padding mr10">任务2</span>\n' +
' <div class="col-8">\n' + ' <div class="col-8 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +
' <div class="col-4 row task_Input_div">\n' + ' <div class="col-4 row task_Input_div">\n' +
' <span class="col-3 text-center mt-3">任务3</span>\n' + ' <span class="col-3 text-right no_padding mr10 mt-3">任务3</span>\n' +
' <div class="col-8">\n' + ' <div class="col-8 no_padding">\n' +
' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' + ' <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">\n' +
' </div>\n' + ' </div>\n' +
' </div>\n' + ' </div>\n' +

@ -87,5 +87,30 @@
.row:last-child{ .row:last-child{
border:none; border:none;
} }
.task_Input_div:nth-child(3n-2) > span.col-4{
flex: 0 0 81px;
max-width: 81px;
}
.task_Input_div:nth-child(3n-2){
flex: 0 0 50%;
max-width: 50%;
}
.task_Input_div:nth-child(3n-1){
flex: 0 0 25%;
max-width: 25%;
}
.task_Input_div:nth-child(3n){
flex: 0 0 33.3%;
max-width: 33.3%;
}
.task_Input_div:nth-child(3n) > span.col-4{
flex: 0 0 25%;
max-width: 25%;
}
.task_Input_div:nth-child(3n) > div.col-6{
flex: 0 0 58.3%;
max-width: 58.3%;
}
} }
} }

@ -386,34 +386,40 @@
<div id="small_panel_<%= index + 1 %>" class="small_panel"> <div id="small_panel_<%= index + 1 %>" class="small_panel">
<% stage.competition_stage_sections.each_with_index do |section, j| %> <% stage.competition_stage_sections.each_with_index do |section, j| %>
<div class="row d-flex small_panel_item" attr_line="sub_<%= index %>_<%= j %>" count="<%= j + 1 %>"> <div class="row d-flex small_panel_item" attr_line="sub_<%= index %>_<%= j %>" count="<%= j + 1 %>">
<span class="col-1 mt-2 subName">第<%= j + 1 %>阶段</span> <span class="mt-2 subName mr10">第<%= j + 1 %>阶段</span>
<div class="flex-1"> <div class="flex-1">
<div class="row"> <div class="row">
<span class="mt-2 ml20">有效时间:</span> <div class="row col-6">
<div class="col-2 no_padding input_middle"> <span class="ml20 mt-2 mr10">有效时间:</span>
<%= text_field_tag 'stage[][start_time]', section.start_time&.strftime('%Y-%m-%d %H:%M'), autocomplete: 'off', class: 'section-start-time form-control', placeholder: '有效开始时间' %> <div class="col-4 no_padding">
</div> <%= text_field_tag 'stage[][start_time]', section.start_time&.strftime('%Y-%m-%d %H:%M'), autocomplete: 'off', class: 'section-start-time form-control', placeholder: '有效开始时间' %>
<span class="mt-2">~</span> </div>
<div class="col-2 no_padding input_middle"> <span class="mt-2">~</span>
<%= text_field_tag 'stage[][end_time]', section.end_time&.strftime('%Y-%m-%d %H:%M'), autocomplete: 'off', class: 'section-end-time form-control', placeholder: '有效结束时间' %> <div class="col-4 no_padding">
<%= text_field_tag 'stage[][end_time]', section.end_time&.strftime('%Y-%m-%d %H:%M'), autocomplete: 'off', class: 'section-end-time form-control', placeholder: '有效结束时间' %>
</div>
</div> </div>
<span class="col-2 text-right mt-2 no_padding">总任务数:</span> <div class="row col-3">
<div class="col-1 no_padding input_small"> <span class="col-4 text-right mt-2 no_padding mr10">总任务数:</span>
<input type="number" class="form-control task_all" value="<%= section.entry %>" onchange="change_total(this)" name="stage[][entry]"/> <div class="col-6 no_padding">
<input type="number" class="form-control task_all" value="<%= section.entry %>" onchange="change_total(this)" name="stage[][entry]"/>
</div>
</div> </div>
<span class="col-1 text-right mt-2 no_padding">成绩来源:</span> <div class="row col-4">
<div class="col-2 no_padding input_middle"> <span class="col-3 text-right mt-2 no_padding mr10">成绩来源:</span>
<select class="form-control" name="stage[][score_source]"> <div class="col-7 no_padding">
<option value="0" <%= section.score_source == 0 ? "selected='selected'" : "" %>>经验值</option> <select class="form-control" name="stage[][score_source]">
<option value="1" <%= section.score_source == 1 ? "selected='selected'" : "" %>>预测准确率</option> <option value="0" <%= section.score_source == 0 ? "selected='selected'" : "" %>>经验值</option>
</select> <option value="1" <%= section.score_source == 1 ? "selected='selected'" : "" %>>预测准确率</option>
</select>
</div>
</div> </div>
</div> </div>
<div class="row mt-2" id="task_Input_sub_<%= index %>_<%= j %>"> <div class="row mt-2" id="task_Input_sub_<%= index %>_<%= j %>">
<% section.competition_entries.each_with_index do |entry, z| %> <% section.competition_entries.each_with_index do |entry, z| %>
<div class="col-4 row task_Input_div"> <div class="col-4 row task_Input_div">
<span class="col-3 text-center mt-3">任务<%= z+1 %></span> <span class="col-4 text-right mt-3 no_padding mr10">任务<%= z+1 %></span>
<div class="col-8"> <div class="col-6 no_padding">
<input type="text" class="form-control mt-2" value="<%= entry.shixun_identifier %>" name="stage[][identifiers][]" placeholder="请填写实训ID"> <input type="text" class="form-control mt-2" value="<%= entry.shixun_identifier %>" name="stage[][identifiers][]" placeholder="请填写实训ID">
</div> </div>
</div> </div>
@ -450,45 +456,51 @@
</div> </div>
<div id="small_panel_1" class="small_panel"> <div id="small_panel_1" class="small_panel">
<div class="row d-flex small_panel_item" attr_line="sub_new_new" count="1"> <div class="row d-flex small_panel_item" attr_line="sub_new_new" count="1">
<span class="col-1 mt-2 subName">第1阶段</span> <span class="mt-2 subName mr10">第1阶段</span>
<div class="flex-1"> <div class="flex-1">
<div class="row"> <div class="row">
<span class="mt-2 ml20">有效时间:</span> <div class="row col-6">
<div class="col-2 no_padding input_middle"> <span class="mt-2 ml20 mr10">有效时间:</span>
<%= text_field_tag 'stage[][start_time]', '', autocomplete: 'off', class: 'section-start-time form-control', placeholder: '有效开始时间' %> <div class="col-4 no_padding">
</div> <%= text_field_tag 'stage[][start_time]', '', autocomplete: 'off', class: 'section-start-time form-control', placeholder: '有效开始时间' %>
<span class="mt-2">~</span> </div>
<div class="col-2 no_padding input_middle"> <span class="mt-2">~</span>
<%= text_field_tag 'stage[][end_time]', '', autocomplete: 'off', class: 'section-end-time form-control', placeholder: '有效结束时间' %> <div class="col-4 no_padding">
<%= text_field_tag 'stage[][end_time]', '', autocomplete: 'off', class: 'section-end-time form-control', placeholder: '有效结束时间' %>
</div>
</div> </div>
<span class="col-2 text-right mt-2 no_padding">总任务数:</span> <div class="row col-3">
<div class="col-1 no_padding input_small"> <span class="col-4 text-right mt-2 no_padding mr10">总任务数:</span>
<input type="number" class="form-control task_all" onchange="change_total(this)" value="3" name="stage[][entry]"/> <div class="col-6 no_padding">
<input type="number" class="form-control task_all" onchange="change_total(this)" value="3" name="stage[][entry]"/>
</div>
</div> </div>
<span class="col-1 text-right mt-2 no_padding">成绩来源:</span> <div class="row col-4">
<div class="col-2 no_padding input_middle"> <span class="col-3 text-right mt-2 no_padding mr10">成绩来源:</span>
<select class="form-control" name="stage[][score_source]"> <div class="col-7 no_padding">
<option value="0">经验值</option> <select class="form-control" name="stage[][score_source]">
<option value="1">预测准确率</option> <option value="0">经验值</option>
</select> <option value="1">预测准确率</option>
</select>
</div>
</div> </div>
</div> </div>
<div class="row mt-2" id="task_Input_sub_new_new"> <div class="row mt-2" id="task_Input_sub_new_new">
<div class="col-4 row task_Input_div"> <div class="col-4 row task_Input_div">
<span class="col-3 text-center mt-3">任务1</span> <span class="col-4 text-right mt-3 no_padding mr10">任务1</span>
<div class="col-8"> <div class="col-6 no_padding">
<input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID"> <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">
</div> </div>
</div> </div>
<div class="col-4 row task_Input_div"> <div class="col-4 row task_Input_div">
<span class="col-3 text-center mt-3">任务2</span> <span class="col-4 text-right mt-3 no_padding mr10">任务2</span>
<div class="col-8"> <div class="col-6 no_padding">
<input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID"> <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">
</div> </div>
</div> </div>
<div class="col-4 row task_Input_div"> <div class="col-4 row task_Input_div">
<span class="col-3 text-center mt-3">任务3</span> <span class="col-4 text-right mt-3 no_padding mr10">任务3</span>
<div class="col-8"> <div class="col-6 no_padding">
<input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID"> <input type="text" class="form-control mt-2" name="stage[][identifiers][]" placeholder="请填写实训ID">
</div> </div>
</div> </div>

@ -960,7 +960,7 @@ class Registration extends React.Component {
<Breadcrumb separator=">"> <Breadcrumb separator=">">
<Breadcrumb.Item><Link to={"/competitions"}>在线竞赛</Link></Breadcrumb.Item> <Breadcrumb.Item><Link to={"/competitions"}>在线竞赛</Link></Breadcrumb.Item>
<Breadcrumb.Item><Link <Breadcrumb.Item><Link
to={`/competitions/${this.props.match.params.identifier}/common_header`}>{competition_name === undefined || competition_name === null || competition_name === "" ? "全国高校计算机大赛" : competition_name}</Link></Breadcrumb.Item> to={`/competitions/${this.props.match.params.identifier}`}>{competition_name === undefined || competition_name === null || competition_name === "" ? "全国高校计算机大赛" : competition_name}</Link></Breadcrumb.Item>
{/*<Breadcrumb.Item*/} {/*<Breadcrumb.Item*/}
{/* href={`/competitions/${this.props.match.params.identifier}/common_header`}></Breadcrumb.Item>*/} {/* href={`/competitions/${this.props.match.params.identifier}/common_header`}></Breadcrumb.Item>*/}
<Breadcrumb.Item>报名</Breadcrumb.Item> <Breadcrumb.Item>报名</Breadcrumb.Item>

@ -117,16 +117,14 @@ class CompetitionsIndex extends Component{
size="large" size="large"
dataSource={datas&&datas} dataSource={datas&&datas}
renderItem={(item,key) => ( renderItem={(item,key) => (
<a target="_blank" <a target="_blank" href={item.competition_status==="ended"?`/competitions/${item.identifier}`:item.competition_status==="nearly_published"?item.permission.editable==true?`/competitions/${item.identifier}`:null:item.competition_status==="progressing"?`/competitions/${item.identifier}`:null}
href={item.competition_status === "ended" ? `/competitions/${item.identifier}/common_header` : item.competition_status === "nearly_published" ? item.permission.editable == true ? `/competitions/${item.identifier}/common_header` : null : item.competition_status === "progressing" ? `/competitions/${item.identifier}/common_header` : null} className={item.competition_status==="ended"?"competitionstitlesshou":item.competition_status==="nearly_published"?
className={item.competition_status==="ended"?"competitionstitlesshou":item.competition_status==="nearly_published"? item.permission.editable==true?"competitionstitlesshou":"endedfont":"competitionstitlesshou"}
item.permission.editable == true ? "competitionstitlesshou" : "endedfont" : "competitionstitlesshou"}
> >
<div className={"CompetitionsList"} > <div className={"CompetitionsList"} >
{item.competition_status==="nearly_published"? {item.competition_status==="nearly_published"?
item.permission.editable == true ? "" : item.permission.editable==true?"":<div className={"CompetitionsListzhezhao"}>即将发布 敬请期待</div>:""}
<div className={"CompetitionsListzhezhao"}>即将发布 敬请期待</div> : ""}
{/*<div className={"CompetitionsListzhezhao"}>即将发布 敬请期待</div>*/} {/*<div className={"CompetitionsListzhezhao"}>即将发布 敬请期待</div>*/}
{/*{item.description===null||item.description===undefined||item.description===""?<style>*/} {/*{item.description===null||item.description===undefined||item.description===""?<style>*/}
{/*{*/} {/*{*/}
@ -175,9 +173,9 @@ class CompetitionsIndex extends Component{
> >
<List.Item.Meta <List.Item.Meta
title={<a className={item.competition_status==="ended"?"competitionstitlesshou":item.competition_status==="nearly_published"? title={<a className={item.competition_status==="ended"?"competitionstitlesshou":item.competition_status==="nearly_published"?
item.permission.editable == true ? "competitionstitlesshou" : "endedfont" : "competitionstitlesshou"}> item.permission.editable==true?"competitionstitlesshou":"endedfont":"competitionstitlesshou"}>
<a target="_blank" className={"competitionstitles"} <a target="_blank" className={"competitionstitles"}
href={item.competition_status === "ended" ? `/competitions/${item.identifier}/common_header` : item.competition_status === "nearly_published" ? item.permission.editable == true ? `/competitions/${item.identifier}/common_header` : null : item.competition_status === "progressing" ? `/competitions/${item.identifier}/common_header` : null} href={item.competition_status==="ended"?`/competitions/${item.identifier}`:item.competition_status==="nearly_published"? item.permission.editable==true?`/competitions/${item.identifier}`:null:item.competition_status==="progressing"?`/competitions/${item.identifier}`:null}
>{item.name}{item.sub_title===null?"":`——${item.sub_title}`}</a> >{item.name}{item.sub_title===null?"":`——${item.sub_title}`}</a>
{/*<span>{item.sub_title===null?"":*/} {/*<span>{item.sub_title===null?"":*/}
{/*<Tag className="competitionsrelative" color="#87d068">{item.sub_title}</Tag>}*/} {/*<Tag className="competitionsrelative" color="#87d068">{item.sub_title}</Tag>}*/}

@ -3,7 +3,6 @@ import { Breadcrumb,Layout,Table, Divider, Tag,Badge,Tooltip} from 'antd';
import { Link } from 'react-router-dom'; import { Link } from 'react-router-dom';
import axios from 'axios'; import axios from 'axios';
import NoneData from "../../courses/shixunHomework/shixunHomework";
import './Competitionteams.css'; import './Competitionteams.css';
const { Content } = Layout; const { Content } = Layout;

@ -6,7 +6,6 @@ import {markdownToHTML,getImageUrl} from 'educoder';
import CompetitionContents from './CompetitionContents'; import CompetitionContents from './CompetitionContents';
import CompetitionContentsChart from './CompetitionContentsChart'; import CompetitionContentsChart from './CompetitionContentsChart';
import CompetitionContentsMd from './CompetitionContentsMd'; import CompetitionContentsMd from './CompetitionContentsMd';
import NoneData from "../../courses/shixunHomework/shixunHomework";
import './CompetitionCommon.css'; import './CompetitionCommon.css';

@ -2,7 +2,7 @@ import React, { Component } from 'react';
import {Button,Layout} from 'antd'; import {Button,Layout} from 'antd';
import axios from 'axios'; import axios from 'axios';
import {markdownToHTML,getImageUrl,AttachmentList} from 'educoder'; import {markdownToHTML,getImageUrl,AttachmentList} from 'educoder';
import NoneData from "../../courses/shixunHomework/shixunHomework";
const { Header, Footer, Sider, Content } = Layout; const { Header, Footer, Sider, Content } = Layout;
class CompetitionContents extends Component{ class CompetitionContents extends Component{

@ -2,7 +2,6 @@ import React, { Component } from 'react';
import {Button,Layout,Tabs,Icon, Card, Avatar, Row, Col ,Table} from 'antd'; import {Button,Layout,Tabs,Icon, Card, Avatar, Row, Col ,Table} from 'antd';
import {markdownToHTML,getImageUrl} from 'educoder'; import {markdownToHTML,getImageUrl} from 'educoder';
import axios from 'axios'; import axios from 'axios';
import NoneData from "../../courses/shixunHomework/shixunHomework";
const { Content } = Layout; const { Content } = Layout;
const { TabPane } = Tabs; const { TabPane } = Tabs;

@ -69,7 +69,7 @@ class Competitions extends Component {
/> />
{/*新版竞赛详情页面*/} {/*新版竞赛详情页面*/}
<Route path="/competitions/:identifier/common_header" <Route path="/competitions/:identifier"
render={ render={
(props) => (<CompetitionCommon {...this.props} {...props} {...this.state} />) (props) => (<CompetitionCommon {...this.props} {...props} {...this.state} />)
} }

@ -414,7 +414,7 @@ class ShixunhomeWorkItem extends Component{
{ {
discussMessage && discussMessage.upper_category_name && discussMessage && discussMessage.upper_category_name &&
<ConditionToolTip title={discussMessage.upper_category_name} condition={ discussMessage.upper_category_name.length > 22 }> <ConditionToolTip title={discussMessage.upper_category_name} condition={ discussMessage.upper_category_name.length > 22 }>
{ <div className=" color-grey9 task-hide fr" style={discussMessage.time_status===1||discussMessage.time_status===2||discussMessage.time_status===3||discussMessage.time_status===4||discussMessage.time_status===5||discussMessage.time_status===6?{"maxWidth":"268px"}:{"maxWidth":"550px"}} title={discussMessage.upper_category_name}>所属目录{discussMessage.upper_category_name}</div>} { <div className=" color-grey9 task-hide fr" style={discussMessage.time_status===1||discussMessage.time_status===2||discussMessage.time_status===3||discussMessage.time_status===4||discussMessage.time_status===5||discussMessage.time_status===6?{"maxWidth":"216px"}:{"maxWidth":"550px"}} title={discussMessage.upper_category_name}>所属目录{discussMessage.upper_category_name}</div>}
</ConditionToolTip> </ConditionToolTip>
} }

@ -1,5 +1,5 @@
import React, {Component} from "react"; import React,{ Component } from "react";
import {Row, Col, Popover, Button, Icon} from "antd"; import {Row, Col,Popover,Button,Icon} from "antd";
import { import {
G2, G2,
Chart, Chart,
@ -16,20 +16,22 @@ import {
Util Util
} from "bizcharts"; } from "bizcharts";
class Dynamiclist extends Component { class Dynamiclist extends Component{
constructor(props) { constructor(props){
super(props); super(props);
this.state = {} this.state={
}
} }
render() { render(){
const data = [] const data = []
let {course_members} = this.props; let {course_members}=this.props;
if (course_members) { if(course_members){
if (course_members.length > 0) { if(course_members.length>0){
course_members.map((item, key) => { course_members.map((item,key)=>{
data.push({'name': item.user_name, '活跃度': item.total_score}) data.push({'name':item.user_name,'活跃度':item.total_score})
}) })
} }
} }
@ -59,31 +61,30 @@ class Dynamiclist extends Component {
</p> </p>
</div> </div>
); );
return ( return(
<React.Fragment> <React.Fragment>
<Row> <Row>
<Col span={12} className={"top10s"}>Top 10</Col> <Col span={12} className={"top10s"}>Top 10</Col>
<Col span={12} className={"Statisticsliboxjsgz"}> <Col span={12} className={"Statisticsliboxjsgz"}>
<span className={"mr10"}>计算规则</span> <span className={"mr10"}>计算规则</span>
<Popover placement="bottom" content={content} trigger="hover"> <Popover placement="bottom" title={"活动规则计算说明"} content={content} trigger="hover">
<Icon type="exclamation-circle"/> <Icon type="info-circle" />
</Popover> </Popover>
</Col> </Col>
</Row> </Row>
{/*scale={cols}*/} {/*scale={cols}*/}
<Chart height={400} data={data} forceFit> <Chart height={400} data={data} forceFit>
<Axis name="name"/> <Axis name="name" />
<Axis name="活跃度"/> <Axis name="活跃度" />
<Tooltip <Tooltip
crosshairs={{ crosshairs={{
type: "y" type: "y"
}} }}
/> />
<Geom type="interval" position="name*活跃度"/> <Geom type="interval" position="name*活跃度" />
</Chart> </Chart>
</React.Fragment> </React.Fragment>
) )
} }
} }
export default Dynamiclist; export default Dynamiclist;

@ -65,7 +65,7 @@
font-size: 16px; font-size: 16px;
} }
.Statisticsli { .Statisticsli{
clear: both; clear: both;
margin: 0; margin: 0;
padding: 5px 12px; padding: 5px 12px;
@ -80,7 +80,7 @@
transition: all 0.3s; transition: all 0.3s;
} }
.StatisticsMenubox { .StatisticsMenubox{
position: relative; position: relative;
margin: 0; margin: 0;
padding: 4px 0; padding: 4px 0;
@ -90,39 +90,42 @@
background-clip: padding-box; background-clip: padding-box;
border-radius: 4px; border-radius: 4px;
outline: none; outline: none;
-webkit-box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); -webkit-box-shadow: 0 2px 8px rgba(0,0,0,0.15);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); box-shadow: 0 2px 8px rgba(0,0,0,0.15);
-webkit-transform: translate3d(0, 0, 0); -webkit-transform: translate3d(0, 0, 0);
} }
.Statisticslibox li label { .Statisticslibox li label{
width: 200px; width: 200px;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
.Statisticslibox .ant-menu-item{
.Statisticslibox .ant-menu-item {
height: 20px; height: 20px;
line-height: 20px; line-height: 20px;
text-overflow: clip; text-overflow: clip;
} }
.top10s { .top10s{
font-size: 16px; font-size: 16px;
font-weight: bold; font-weight: bold;
color: rgba(51, 51, 51, 1); color: rgba(51,51,51,1);
} }
.Statisticsliboxjsgz { .Statisticsliboxjsgz{
font-size: 12px; font-size:12px;
color: rgba(51, 51, 51, 1); color:rgba(51,51,51,1);
text-align: right; text-align: right;
} }
.Statisticscircle p { .Statisticscircle p{
height: 30px; height: 30px;
font-size: 12px; font-size: 12px;
color: rgba(153, 153, 153, 1); color: rgba(153,153,153,1);
line-height: 30px; line-height: 20px;
}
.Statisticsmxxy{
font-size: 16px;
margin-left:15px;
} }

@ -1,10 +1,12 @@
import React,{ Component } from "react"; import React,{ Component } from "react";
import {Table, Pagination, Tooltip, Spin, Row, Col, Checkbox, Tabs, Menu, Dropdown, Icon, Input} from "antd"; import {Table, Pagination,Tooltip,Spin, Row, Col ,Checkbox,Tabs,Menu, Dropdown, Icon,Input} from "antd";
import {WordsBtn, on, off, trigger, getImageUrl, sortDirections} from 'educoder'; import { WordsBtn,on, off, trigger ,getImageUrl,sortDirections} from 'educoder';
import axios from'axios'; import axios from'axios';
import Dropdownbox from './Dropdownbox'; import Dropdownbox from './Dropdownbox';
import Dynamiclist from './Dynamiclist'; import Dynamiclist from './Dynamiclist';
import NoneData from "../../courses/coursesPublic/NoneData";
import './Statistics.css'; import './Statistics.css';
const { TabPane } = Tabs; const { TabPane } = Tabs;
class Statistics extends Component{ class Statistics extends Component{
constructor(props){ constructor(props){
@ -12,165 +14,163 @@ class Statistics extends Component{
this.state={ this.state={
nd1:60, nd1:60,
nd2:40, nd2:40,
nd3: 20, nd3:20,
data: undefined, data:undefined,
bomdata: undefined, bomdata:undefined,
topisSpin: true, topisSpin:true,
bomisSpin: true, bomisSpin:true,
sort: 'desc', sort:'desc',
course_groups: [], course_groups:[],
page: 1, page:1,
all_count: null, all_count:null,
activeKey: '1', activeKey:'1',
visible: false, visible: false,
group_ids: [], group_ids:[],
course_members: [] course_members:[]
} }
} }
componentDidMount() { componentDidMount() {
this.getdatas() this.getdatas()
} }
getdatas = () => { getdatas=()=>{
let {page, group_ids, sort} = this.state; let {page,group_ids,sort}=this.state;
let courseId = this.props.match.params.coursesId; let courseId=this.props.match.params.coursesId;
let url = `/courses/${courseId}/statistics.json`; let url=`/courses/${courseId}/statistics.json`;
axios.get(url).then((result) => { axios.get(url).then((result) => {
if (result) { if (result) {
this.setState({ this.setState({
data: result.data.top_scores, data:result.data.top_scores,
topisSpin: false topisSpin:false
}) })
} }
}).catch((error) => { }).catch((error) => {
console.log(error); console.log(error);
this.setState({ this.setState({
topisSpin: false, topisSpin:false,
}) })
}) })
let courseurl = `/courses/${courseId}/all_course_groups.json`; let courseurl=`/courses/${courseId}/all_course_groups.json`;
axios.get(courseurl).then((result) => { axios.get(courseurl).then((result) => {
if (result) { if (result) {
this.setState({ this.setState({
course_groups: result.data.course_groups course_groups:result.data.course_groups
}) })
let list = result.data.course_groups; let list=result.data.course_groups;
if (list.length > 0) { // if(list.length>0){
this.setState({ // this.setState({
group_ids: [list[0].id], // group_ids:[list[0].id],
}) // })
this.getwork_scoredata(page, [list[0].id], sort); // }
} this.getwork_scoredata(page,undefined,sort);
} }
}).catch((error) => { }).catch((error) => {
console.log(error); console.log(error);
}) })
} }
getDynamiclistdatas = (group_ids) => { getDynamiclistdatas=(group_ids)=>{
let courseId = this.props.match.params.coursesId; let courseId=this.props.match.params.coursesId;
let url = `/courses/${courseId}/act_score.json`; let url=`/courses/${courseId}/act_score.json`;
let data = { let data={
group_ids: group_ids, group_ids:group_ids,
} }
axios.get(url, { axios.get(url,{params:
params:
data data
}).then((result) => { }).then((result) => {
if (result) { if (result) {
this.setState({ this.setState({
course_members: result.data.course_members, course_members:result.data.course_members,
bomisSpin: false bomisSpin:false
}) })
} }
}).catch((error) => { }).catch((error) => {
console.log(error); console.log(error);
this.setState({ this.setState({
bomisSpin: false, bomisSpin:false,
}) })
}) })
} }
getwork_scoredata = (page, group_ids, sort) => { getwork_scoredata=(page,group_ids,sort)=>{
let {activeKey} = this.state; let {activeKey}=this.state;
this.setState({ this.setState({
page: page, page:page,
sort: sort, sort:sort,
group_ids: group_ids, group_ids:this.props.isStudent()===true?undefined:group_ids,
bomisSpin: true, bomisSpin:true,
}) })
if (activeKey === '1') { if(activeKey==='1'){
let courseId = this.props.match.params.coursesId; let courseId=this.props.match.params.coursesId;
let url = `/courses/${courseId}/work_score.json`; let url=`/courses/${courseId}/work_score.json`;
let data = { let data={
limit: 20, limit:20,
page: page, page:page,
group_ids: group_ids, group_ids:this.props.isStudent()===true?undefined:group_ids,
sort: sort sort:sort
} }
axios.get(url, { axios.get(url,{params:
params:
data data
}).then((result) => { }).then((result) => {
if (result) { if (result) {
this.setState({ this.setState({
bomdata: result.data.course_members, bomdata:result.data.course_members,
all_count: result.data.all_count, all_count:result.data.all_count,
bomisSpin: false bomisSpin:false
}) })
} }
}).catch((error) => { }).catch((error) => {
console.log(error); console.log(error);
this.setState({ this.setState({
bomisSpin: false, bomisSpin:false,
}) })
}) })
} else { }else{
this.getDynamiclistdatas(group_ids) this.getDynamiclistdatas(group_ids)
} }
} }
activeKey = (key) => { activeKey=(key)=>{
if (key === "1") { if(key==="1"){
let {page, group_ids, sort} = this.state; let {page,group_ids,sort}=this.state;
// this.getdatas() // this.getdatas()
this.getwork_scoredata(page, group_ids, sort) this.getwork_scoredata(page,group_ids,sort)
} else { }else{
let {group_ids} = this.state; let{group_ids}=this.state;
this.getDynamiclistdatas(group_ids) this.getDynamiclistdatas(group_ids)
} }
this.setState({ this.setState({
activeKey: key activeKey:key
}) })
} }
PaginationCourse = (pageNumber) => { PaginationCourse=(pageNumber)=>{
let {group_ids, sort} = this.state; let {group_ids,sort}=this.state;
this.getwork_scoredata(pageNumber, group_ids, sort); this.getwork_scoredata(pageNumber,group_ids,sort);
} }
derivefun = (url) => { derivefun=(url)=>{
let {group_ids} = this.state; let{group_ids}=this.state;
let data = { let data={
group_id: group_ids group_id:group_ids
} }
axios.get(url, { axios.get(url,{params:
params:
data data
}).then((response) => { }).then((response)=>{
if (response === undefined) { if(response === undefined){
return return
} }
if (response.data.status && response.data.status === -1) { if(response.data.status&&response.data.status===-1){
this.props.showNotification(response.data.message); this.props.showNotification(response.data.message);
} else if (response.data.status && response.data.status === -2) { }else if(response.data.status&&response.data.status===-2){
// if(response.data.message === "100"){ // if(response.data.message === "100"){
// // 已超出文件导出的上限数量100 ),建议: // // 已超出文件导出的上限数量100 ),建议:
// //
@ -186,7 +186,7 @@ class Statistics extends Component{
// }) // })
// } // }
this.props.showNotification(response.data.message); this.props.showNotification(response.data.message);
} else { }else {
// this.props.showNotification(`正在下载中`); // this.props.showNotification(`正在下载中`);
// window.open("/api"+url, '_blank'); // window.open("/api"+url, '_blank');
this.props.slowDownload(url); this.props.slowDownload(url);
@ -198,31 +198,31 @@ class Statistics extends Component{
// 筛选 // 筛选
handleTableChange = (pagination, filters, data) => { handleTableChange =(pagination, filters, data)=>{
let order = data.order; let order=data.order;
let {page, group_ids} = this.state; let {page,group_ids}=this.state;
if (order === "descend") { if(order==="descend"){
this.getwork_scoredata(page, group_ids, 'desc') this.getwork_scoredata(page,group_ids,'desc')
} else { }else{
this.getwork_scoredata(page, group_ids, 'asc') this.getwork_scoredata(page,group_ids,'asc')
} }
} }
render(){ render(){
let {nd1, nd2, nd3, data, bomdata} = this.state; let {nd1,nd2,nd3,data,bomdata,course_members}=this.state;
const columns = [ const columns = [
{ {
title: this.props.isAdmin() === true ? '序号' : '排名', title: this.props.isAdmin()===true?'序号':'排名',
dataIndex: 'index', dataIndex: 'index',
render: (text, record, index) => { render: (text, record,index) => {
return this.props.isAdmin() === true ? (this.state.page - 1) * 20 + index + 1 : record.rank return this.props.isAdmin()===true?(this.state.page - 1) * 20 + index + 1:record.rank
} }
}, },
{ {
title: '姓名', title: '姓名',
dataIndex: 'user_name', dataIndex:'user_name',
render: (text, record) => ( render: (text, record) => (
<span>{record.user_name}</span> <span>{record.user_name}</span>
) )
@ -231,68 +231,66 @@ class Statistics extends Component{
title: '分班', title: '分班',
dataIndex: 'course_group', dataIndex: 'course_group',
render: (text, record) => ( render: (text, record) => (
<span>{record.course_group}</span> <span >{record.course_group}</span>
) )
}, },
{ {
title: '实训作业', title: '实训作业',
dataIndex: 'practice_score', dataIndex: 'practice_score',
render: (text, record) => ( render: (text, record) => (
<span>{record.practice_score.toFixed(2)}</span> <span >{record.practice_score.toFixed(2)}</span>
) )
}, },
{ {
title: '普通作业', title: '普通作业',
dataIndex: 'common_score', dataIndex: 'common_score',
render: (text, record) => ( render: (text, record) => (
<span>{record.common_score.toFixed(2)}</span> <span >{record.common_score.toFixed(2)}</span>
) )
}, },
{ {
title: '分组作业', title: '分组作业',
dataIndex: 'group_score', dataIndex: 'group_score',
render: (text, record) => ( render: (text, record) => (
<span>{record.group_score.toFixed(2)}</span> <span >{record.group_score.toFixed(2)}</span>
) )
}, },
{ {
title: '毕设任务', title: '毕设任务',
dataIndex: 'graduation_score', dataIndex: 'graduation_score',
render: (text, record) => ( render: (text, record) => (
<span>{record.graduation_score.toFixed(2)}</span> <span >{record.graduation_score.toFixed(2)}</span>
) )
}, },
{ {
title: '试卷', title: '试卷',
dataIndex: 'exercise_score', dataIndex: 'exercise_score',
render: (text, record) => ( render: (text, record) => (
<span>{record.exercise_score}</span> <span >{record.exercise_score}</span>
) )
}, },
{ {
title: '总成绩', title: '总成绩',
dataIndex: 'total_score', dataIndex: 'total_score',
sorter: this.props.isAdmin() === true ? true : false, sorter: this.props.isAdmin()===true?true:false,
defaultSortOrder: 'descend', defaultSortOrder: 'descend',
sortDirections: sortDirections, sortDirections: sortDirections,
render: (text, record) => ( render: (text, record) => (
<span>{record.total_score.toFixed(2)}</span> <span >{record.total_score.toFixed(2)}</span>
) )
}, },
]; ];
let course_grouptype = false; let course_grouptype=false;
if (this.props && this.props.course_modules != undefined) { if(this.props&&this.props.course_modules!=undefined){
{ {this.props&&this.props.course_modules.map((item,key)=>{
this.props && this.props.course_modules.map((item, key) => { if(item.type==="course_group"){
if (item.type === "course_group") { course_grouptype=true
course_grouptype = true }
} })}
})
}
} }
if (course_grouptype === false) { if(course_grouptype===false){
columns.some((item, key) => { columns.some((item,key)=> {
if (item.title === "分班") { if (item.title === "分班") {
columns.splice(key, 1) columns.splice(key, 1)
return true return true
@ -317,168 +315,166 @@ class Statistics extends Component{
<Dropdownbox <Dropdownbox
{...this.props} {...this.props}
{...this.state} {...this.state}
postwork_scoredata={(group_idss) => this.getwork_scoredata(1, group_idss, 'desc')} postwork_scoredata={(group_idss)=>this.getwork_scoredata(1,group_idss,'desc')}
/> />
<a className={"ml20 ant-btn-link"} <a className={"ml20 ant-btn-link"} onClick={()=>this.derivefun(`/courses/${this.props.match.params.coursesId}/export_member_scores_excel.xlsx`)}>导出</a>
onClick={() => this.derivefun(`/courses/${this.props.match.params.coursesId}/export_member_scores_excel.xlsx`)}>导出</a>
</React.Fragment>; </React.Fragment>;
return( return(
<React.Fragment> <React.Fragment>
<div className="edu-back-white"> <div className="edu-back-white">
<Spin size="large" spinning={this.state.topisSpin}> <Spin size="large" spinning={this.state.topisSpin}>
<p className="clearfix padding30"> <p className="clearfix padding30">
<Row gutter={24}> <Row gutter={24}>
<Col> <Col className={"Statisticsmxxy"}>
明星学员 明星学员
</Col> </Col>
</Row> </Row>
<Row type="flex" justify="center" align="bottom"> <Row type="flex" justify="center" align="bottom">
{data && data.map((item, key) => { {data&&data.map((item,key)=>{
if (key === 3) { if(key===3){
return ( return(
<Col span={3}> <Col span={3}>
<li className="pr rankingss"> <li className="pr rankingss">
<a href={`/users/${item.user_login}`} className="color-dark"> <a href={`/users/${item.user_login}`} className="color-dark">
<img src={getImageUrl(`images/${item.avatar_url}`)}/> <img src={getImageUrl(`images/${item.avatar_url}`)}/>
</a> </a>
</li> </li>
</Col> </Col>
) )
} }
})} })}
{data && data.map((item, key) => { {data&&data.map((item,key)=>{
if (key === 1) { if(key===1){
return ( return(
<Col span={5}> <Col span={5}>
<li className="pr rankingss"> <li className="pr rankingss">
<a href={`/users/${item.user_login}`} className="color-dark"> <a href={`/users/${item.user_login}`} className="color-dark">
<img src={getImageUrl(`images/${item.avatar_url}`)} className={"mb10"}/> <img src={getImageUrl(`images/${item.avatar_url}`)} className={"mb10"}/>
</a> </a>
</li> </li>
<Col className={`height-${nd2}`}> <Col className={`height-${nd2}`}>
</Col>
</Col>
)
}
})}
{data && data.map((item, key) => {
if (key === 0) {
return (
<Col span={5} className={"relatives"}>
<li className="pr rankingss">
<img src="https://test-newweb.educoder.net/images/educoder/huangguan.png"
className="huangguans mb5"/>
<a href={`/users/${item.user_login}`} className="color-dark">
<img src={getImageUrl(`images/${item.avatar_url}`)} className={"mb10 mt5"}/>
</a>
</li>
<Col className={`height-${nd1}`}>
</Col>
</Col> </Col>
) </Col>
} )
}
})}
})}
{data && data.map((item, key) => {
if (key === 2) { {data&&data.map((item,key)=>{
return ( if(key===0){
<Col span={5}> return(
<li className="pr rankingss"> <Col span={5} className={"relatives"}>
<a href={`/users/${item.user_login}`} className="color-dark"> <li className="pr rankingss">
<img src={getImageUrl(`images/${item.avatar_url}`)} className={"mb10"}/> <img src="https://test-newweb.educoder.net/images/educoder/huangguan.png" className="huangguans mb5" />
</a> <a href={`/users/${item.user_login}`} className="color-dark">
</li> <img src={getImageUrl(`images/${item.avatar_url}`)} className={"mb10 mt5"}/>
<Col className={`height-${nd3}`}> </a>
</li>
</Col> <Col className={`height-${nd1}`}>
</Col> </Col>
) </Col>
} )
}
})} })}
{data&&data.map((item,key)=>{
if(key===2){
return(
<Col span={5}>
<li className="pr rankingss">
<a href={`/users/${item.user_login}`} className="color-dark">
<img src={getImageUrl(`images/${item.avatar_url}`)} className={"mb10"}/>
</a>
</li>
<Col className={`height-${nd3}`}>
{data && data.map((item, key) => {
if (key === 4) {
return (
<Col span={3}>
<li className="pr rankingss">
<a href={`/users/${item.user_login}`} className="color-dark">
<img src={getImageUrl(`images/${item.avatar_url}`)}/>
</a>
</li>
</Col> </Col>
) </Col>
} )
}
})} })}
</Row> {data&&data.map((item,key)=>{
if(key===4){
return(
<Col span={3}>
<li className="pr rankingss">
<a href={`/users/${item.user_login}`} className="color-dark">
<img src={getImageUrl(`images/${item.avatar_url}`)}/>
</a>
</li>
</Col>
)
}
})}
<Row className="mt10" type="flex" justify="center" align="bottom">
{data && data.map((item, key) => { </Row>
if (key === 3) {
return (
<Col span={3} className={"Statisticscenter"}> <Row className="mt10" type="flex" justify="center" align="bottom">
<Col>{item.user_name}</Col>
<Col>4th</Col> {data&&data.map((item,key)=>{
</Col> if(key===3){
) return(
} <Col span={3} className={"Statisticscenter"}>
})} <Col>{item.user_name}</Col>
{data && data.map((item, key) => { <Col>4th</Col>
if (key === 1) { </Col>
return ( )
<Col span={5} className={"Statisticscenter"}> }
<Col>{item.user_name}</Col> })}
<Col>2th</Col> {data&&data.map((item,key)=>{
</Col> if(key===1){
) return(
} <Col span={5} className={"Statisticscenter"}>
})} <Col>{item.user_name}</Col>
{data && data.map((item, key) => { <Col>2nd</Col>
if (key === 0) { </Col>
return ( )
<Col span={5} className={"Statisticscenter"}> }
<Col>{item.user_name}</Col> })}
<Col>1th</Col> {data&&data.map((item,key)=>{
</Col> if(key===0){
) return(
} <Col span={5} className={"Statisticscenter"}>
})} <Col>{item.user_name}</Col>
{data && data.map((item, key) => { <Col>1st</Col>
if (key === 2) { </Col>
return ( )
<Col span={5} className={"Statisticscenter"}> }
<Col>{item.user_name}</Col> })}
<Col>3th</Col> {data&&data.map((item,key)=>{
</Col> if(key===2){
) return(
} <Col span={5} className={"Statisticscenter"}>
})} <Col>{item.user_name}</Col>
{data && data.map((item, key) => { <Col>3rd</Col>
if (key === 4) { </Col>
return ( )
<Col span={3} className={"Statisticscenter"}> }
<Col>{item.user_name}</Col> })}
<Col>5th</Col> {data&&data.map((item,key)=>{
</Col> if(key===4){
) return(
} <Col span={3} className={"Statisticscenter"}>
})} <Col>{item.user_name}</Col>
<Col>5th</Col>
</Col>
)
}
})}
</Row> </Row>
</p> </p>
</Spin> </Spin>
</div> </div>
@ -494,31 +490,30 @@ class Statistics extends Component{
} }
.ant-table-thead > tr > th, .ant-table-tbody > tr > td { .ant-table-thead > tr > th, .ant-table-tbody > tr > td {
padding: 16px 0px; padding: 16px 0px;
text-align: center;
} }
` `
}</style> }</style>
<Tabs className="statisticsTabs" activeKey={this.state.activeKey} onChange={this.activeKey} <Tabs className="statisticsTabs" activeKey={this.state.activeKey} onChange={this.activeKey} tabBarExtraContent={this.props.isAdmin()===true?operations:""}>
tabBarExtraContent={this.props.isAdmin() === true ? operations : ""}> <TabPane tab="学习成绩" key="1" className={"statisticsTabs1"} >
<TabPane tab="学习成绩" key="1" className={"statisticsTabs1"}> {bomdata===undefined||bomdata===null?"":bomdata.length===0?<NoneData/>:<Table
<Table columns={columns}
columns={columns} dataSource={bomdata}
dataSource={bomdata} pagination={false}
pagination={false} onChange={this.handleTableChange}
onChange={this.handleTableChange} />}
/> </TabPane>
</TabPane> <TabPane tab="课堂活跃度" key="2">
<TabPane tab="课堂活跃度" key="2"> {course_members===undefined||course_members===null?"":course_members.length===0?<NoneData/>:<Dynamiclist
<Dynamiclist {...this.state}
{...this.state} {...this.props}
{...this.props} />}
/> </TabPane>
</TabPane> </Tabs>
</Tabs>
</Spin> </Spin>
</div> </div>
{this.state.all_count === undefined || this.state.all_count === null || this.state.activeKey === "2" ? '' : this.state.all_count > 20 && this.props.isAdmin() === true ? {this.state.all_count===undefined||this.state.all_count===null||this.state.activeKey==="2"?'':this.state.all_count >20&&this.props.isAdmin()===true?<div className="mb40 edu-txt-center padding20-30"
<div className="mb40 edu-txt-center padding20-30"
> >
@ -526,12 +521,12 @@ class Statistics extends Component{
showQuickJumper showQuickJumper
defaultCurrent={1} defaultCurrent={1}
pageSize={20} pageSize={20}
total={this.state.all_count === undefined ? 0 : this.state.all_count === null ? 0 : this.state.all_count} total={this.state.all_count===undefined?0:this.state.all_count===null?0:this.state.all_count}
current={this.state.page} current={this.state.page}
onChange={this.PaginationCourse} onChange={this.PaginationCourse}
/> />
</div> : ""} </div>:""}
</React.Fragment> </React.Fragment>
) )

@ -427,14 +427,14 @@ export default class TPMchallengesnew extends Component {
<Link to={go_back_url === undefined ? "" : go_back_url} <Link to={go_back_url === undefined ? "" : go_back_url}
className="color-grey-6 fr font-15 mt3">返回</Link> className="color-grey-6 fr font-15 mt3">返回</Link>
{ next_challenge===undefined?"":
<a href={next_challenge}className="fr color-blue mr15 mt4">下一关</a>
}
{ prev_challenge===undefined?"": { prev_challenge===undefined?"":
<a href={prev_challenge} className="fr color-blue mr15 mt4">上一关</a> <a href={prev_challenge} className="fr color-blue mr15 mt4">上一关</a>
} }
{ next_challenge===undefined?"":
<a href={next_challenge}className="fr color-blue mr15 mt4">下一关</a>
}
<a href={practice_url === undefined ? "" : practice_url} <a href={practice_url === undefined ? "" : practice_url}

Loading…
Cancel
Save