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

dev_aliyun_beta
杨树林 6 years ago
commit b07eb7c83c

@ -172,17 +172,17 @@ class FilesController < ApplicationController
attachment_ids.each do |attachment_id| attachment_ids.each do |attachment_id|
ori = Attachment.find_by_id(attachment_id) ori = Attachment.find_by_id(attachment_id)
# 同一个资源可以多次发送到课堂 # 同一个资源可以多次发送到课堂
# @course.attachments.each do |att| @course.attachments.each do |att|
# @exist = false @exist = false
# if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from if att.id == ori.id || (!att.copy_from.nil? && !ori.copy_from.nil? && att.copy_from == ori.copy_from) || att.copy_from == ori.id || att.id == ori.copy_from
# att.created_on = Time.now att.created_on = Time.now
# att.save att.save
# @exist = true @exist = true
# break break
# end end
# end end
#
# next if @exist next if @exist
attach_copied_obj = ori.copy attach_copied_obj = ori.copy
attach_copied_obj.container = @course attach_copied_obj.container = @course
attach_copied_obj.created_on = Time.now attach_copied_obj.created_on = Time.now

File diff suppressed because one or more lines are too long

@ -27721,6 +27721,7 @@ $(document).on('turbolinks:load', function(){
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
if ($('body.admins-identity-authentications-index-page').length > 0) { if ($('body.admins-identity-authentications-index-page').length > 0) {
var $searchFrom = $('.identity-authentication-list-form'); var $searchFrom = $('.identity-authentication-list-form');
$searchFrom.find('select[name="status"]').val('pending');
$searchFrom.on('click', '.search-form-tab', function(){ $searchFrom.on('click', '.search-form-tab', function(){
var $link = $(this); var $link = $(this);
@ -27732,14 +27733,160 @@ $(document).on('turbolinks:load', function() {
$searchFrom.find('.status-filter').show(); $searchFrom.find('.status-filter').show();
} else { } else {
$searchFrom.find('.status-filter').hide(); $searchFrom.find('.status-filter').hide();
$searchFrom.find('select[name="status"]').val('pending');
} }
}); });
} }
}) })
; ;
$(document).on('turbolinks:load', function() {
if ($('body.admins-mirror-repositories-edit-page, body.admins-mirror-repositories-update-page').length > 0) {
var $form = $('form.edit-mirror');
$form.validate({
errorElement: 'span',
errorClass: 'danger text-danger',
rules: {
"mirror_repository[type_name]": {
required: true
}
}
});
$form.submit(function(e){
if(!$form.valid()){ e.preventDefault(); }
});
}
});
$(document).on('turbolinks:load', function() {
if ($('body.admins-mirror-repositories-index-page').length > 0) {
}
});
$(document).on('turbolinks:load', function() {
$('.admin-modal-container').on('show.bs.modal', '.modal.admin-choose-mirror-modal', function(){
var $modal = $('.modal.admin-choose-mirror-modal');
var $form = $modal.find('form.admin-choose-mirror-form');
var validateForm = function(){
var checkedValue = $form.find('input[name="mirror_number"]:checked').val();
if(checkedValue == undefined){
$modal.find('.error').html('必须选择一种镜像保存!');
return false;
}
return true;
}
$modal.on('click', '.submit-btn', function(){
$form.find('.error').html('');
var url = $form.attr('action');
if (validateForm()) {
$.ajax({
method: 'POST',
dataType: 'script',
url: url,
data: $form.serialize(),
}).done(function(){
$modal.modal('hide');
});
}
});
})
});
$(document).on('turbolinks:load', function() {
var $modal = $('.modal.admin-replace-mirror-modal');
if ($modal.length > 0) {
var $form = $modal.find('form.admin-replace-mirror-form');
var $mirrorIdInput = $modal.find('.modal-body input[name="mirror_id"]');
var $mirrorSelect = $modal.find('.new-mirror-select');
var setMirror = function(id, name){
$mirrorIdInput.val(id);
$form.find('.mirror-id-container').html(id);
$form.find('.mirror-name-container').html(name);
}
$form.validate({
errorElement: 'span',
errorClass: 'danger text-danger',
rules: {
new_mirror_id: {
required: true
},
},
messages: {
new_mirror_id: {
required: '请选择新镜像'
}
}
});
// modal ready fire
$modal.on('show.bs.modal', function (event) {
var $link = $(event.relatedTarget);
var mirrorId = $link.data('id');
var mirrorName = $link.data('name');
setMirror(mirrorId, mirrorName);
$mirrorSelect.select2('val', ' ');
});
$modal.on('hide.bs.modal', function () {
setMirror('', '');
$mirrorSelect.select2('val', ' ');
$('#new_mirror_id-error').remove();
});
$mirrorSelect.select2({
theme: 'bootstrap4',
placeholder: '输入要合并的镜像名',
minimumInputLength: 1,
ajax: {
url: '/admins/mirror_repositories/for_select',
dataType: 'json',
data: function(params){
return { keyword: params.term };
},
processResults: function(data){
return { results: data.mirrors }
}
},
templateResult: function (item) {
if(!item.id || item.id === '') return item.text;
return item.name;
},
templateSelection: function(item){
if (item.id) {
$('#new_mirror_id-error').remove();
$('#new_mirror_id').val(item.id);
}
return item.name || item.text;
}
});
$modal.on('click', '.submit-btn', function(){
$form.find('.error').html('');
if ($form.valid()) {
var url = $form.data('url');
$.ajax({
method: 'POST',
dataType: 'script',
url: url,
data: $form.serialize(),
}).done(function(){
$modal.modal('hide');
});
}
});
}
});
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
if ($('body.admins-professional-authentications-index-page').length > 0) { if ($('body.admins-professional-authentications-index-page').length > 0) {
var $searchFrom = $('.professional-authentication-list-form'); var $searchFrom = $('.professional-authentication-list-form');
$searchFrom.find('select[name="status"]').val('pending');
$searchFrom.on('click', '.search-form-tab', function(){ $searchFrom.on('click', '.search-form-tab', function(){
var $link = $(this); var $link = $(this);
@ -27751,6 +27898,7 @@ $(document).on('turbolinks:load', function() {
$searchFrom.find('.status-filter').show(); $searchFrom.find('.status-filter').show();
} else { } else {
$searchFrom.find('.status-filter').hide(); $searchFrom.find('.status-filter').hide();
$searchFrom.find('select[name="status"]').val('pending');
} }
}); });
} }
@ -27905,6 +28053,7 @@ $(document).on('turbolinks:load', function() {
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
if ($('body.admins-shixun-authorizations-index-page').length > 0) { if ($('body.admins-shixun-authorizations-index-page').length > 0) {
var $searchFrom = $('.shixun-authorization-list-form'); var $searchFrom = $('.shixun-authorization-list-form');
$searchFrom.find('select[name="status"]').val('pending');
$searchFrom.on('click', '.search-form-tab', function(){ $searchFrom.on('click', '.search-form-tab', function(){
var $link = $(this); var $link = $(this);
@ -27916,6 +28065,7 @@ $(document).on('turbolinks:load', function() {
$searchFrom.find('.status-filter').show(); $searchFrom.find('.status-filter').show();
} else { } else {
$searchFrom.find('.status-filter').hide(); $searchFrom.find('.status-filter').hide();
$searchFrom.find('select[name="status"]').val('pending');
} }
}); });
} }
@ -27940,6 +28090,7 @@ $(document).on('turbolinks:load', function(){
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
if ($('body.admins-subject-authorizations-index-page').length > 0) { if ($('body.admins-subject-authorizations-index-page').length > 0) {
var $searchFrom = $('.subject-authorization-list-form'); var $searchFrom = $('.subject-authorization-list-form');
$searchFrom.find('select[name="status"]').val('pending');
$searchFrom.on('click', '.search-form-tab', function(){ $searchFrom.on('click', '.search-form-tab', function(){
var $link = $(this); var $link = $(this);
@ -27951,6 +28102,7 @@ $(document).on('turbolinks:load', function() {
$searchFrom.find('.status-filter').show(); $searchFrom.find('.status-filter').show();
} else { } else {
$searchFrom.find('.status-filter').hide(); $searchFrom.find('.status-filter').hide();
$searchFrom.find('select[name="status"]').val('pending');
} }
}); });
} }
@ -28267,8 +28419,11 @@ $(document).on('turbolinks:load', function(){
// flash alert提示框自动关闭 // flash alert提示框自动关闭
if($('.admin-alert-container .alert').length > 0){ if($('.admin-alert-container .alert').length > 0){
setTimeout(function(){ setTimeout(function(){
$('.admin-alert-container .alert').alert('close'); $('.admin-alert-container .alert:not(.alert-danger)').alert('close');
}, 2000); }, 2000);
setTimeout(function(){
$('.admin-alert-container .alert.alert-danger').alert('close');
}, 5000);
} }
}); });

@ -18403,3 +18403,23 @@ label.error {
-webkit-box-flex: 1; -webkit-box-flex: 1;
flex: 1; flex: 1;
} }
/* line 52, app/assets/stylesheets/admin.scss */
.font-12 {
font-size: 12px !important;
}
/* line 53, app/assets/stylesheets/admin.scss */
.font-14 {
font-size: 14px !important;
}
/* line 54, app/assets/stylesheets/admin.scss */
.font-16 {
font-size: 16px !important;
}
/* line 55, app/assets/stylesheets/admin.scss */
.font-18 {
font-size: 18px !important;
}

@ -18403,6 +18403,26 @@ label.error {
-webkit-box-flex: 1; -webkit-box-flex: 1;
flex: 1; flex: 1;
} }
/* line 52, app/assets/stylesheets/admin.scss */
.font-12 {
font-size: 12px !important;
}
/* line 53, app/assets/stylesheets/admin.scss */
.font-14 {
font-size: 14px !important;
}
/* line 54, app/assets/stylesheets/admin.scss */
.font-16 {
font-size: 16px !important;
}
/* line 55, app/assets/stylesheets/admin.scss */
.font-18 {
font-size: 18px !important;
}
@charset "UTF-8"; @charset "UTF-8";
/* line 1, app/assets/stylesheets/admins/common.scss */ /* line 1, app/assets/stylesheets/admins/common.scss */
.admin-body-container { .admin-body-container {

@ -27721,6 +27721,7 @@ $(document).on('turbolinks:load', function(){
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
if ($('body.admins-identity-authentications-index-page').length > 0) { if ($('body.admins-identity-authentications-index-page').length > 0) {
var $searchFrom = $('.identity-authentication-list-form'); var $searchFrom = $('.identity-authentication-list-form');
$searchFrom.find('select[name="status"]').val('pending');
$searchFrom.on('click', '.search-form-tab', function(){ $searchFrom.on('click', '.search-form-tab', function(){
var $link = $(this); var $link = $(this);
@ -27732,14 +27733,160 @@ $(document).on('turbolinks:load', function() {
$searchFrom.find('.status-filter').show(); $searchFrom.find('.status-filter').show();
} else { } else {
$searchFrom.find('.status-filter').hide(); $searchFrom.find('.status-filter').hide();
$searchFrom.find('select[name="status"]').val('pending');
} }
}); });
} }
}) })
; ;
$(document).on('turbolinks:load', function() {
if ($('body.admins-mirror-repositories-edit-page, body.admins-mirror-repositories-update-page').length > 0) {
var $form = $('form.edit-mirror');
$form.validate({
errorElement: 'span',
errorClass: 'danger text-danger',
rules: {
"mirror_repository[type_name]": {
required: true
}
}
});
$form.submit(function(e){
if(!$form.valid()){ e.preventDefault(); }
});
}
});
$(document).on('turbolinks:load', function() {
if ($('body.admins-mirror-repositories-index-page').length > 0) {
}
});
$(document).on('turbolinks:load', function() {
$('.admin-modal-container').on('show.bs.modal', '.modal.admin-choose-mirror-modal', function(){
var $modal = $('.modal.admin-choose-mirror-modal');
var $form = $modal.find('form.admin-choose-mirror-form');
var validateForm = function(){
var checkedValue = $form.find('input[name="mirror_number"]:checked').val();
if(checkedValue == undefined){
$modal.find('.error').html('必须选择一种镜像保存!');
return false;
}
return true;
}
$modal.on('click', '.submit-btn', function(){
$form.find('.error').html('');
var url = $form.attr('action');
if (validateForm()) {
$.ajax({
method: 'POST',
dataType: 'script',
url: url,
data: $form.serialize(),
}).done(function(){
$modal.modal('hide');
});
}
});
})
});
$(document).on('turbolinks:load', function() {
var $modal = $('.modal.admin-replace-mirror-modal');
if ($modal.length > 0) {
var $form = $modal.find('form.admin-replace-mirror-form');
var $mirrorIdInput = $modal.find('.modal-body input[name="mirror_id"]');
var $mirrorSelect = $modal.find('.new-mirror-select');
var setMirror = function(id, name){
$mirrorIdInput.val(id);
$form.find('.mirror-id-container').html(id);
$form.find('.mirror-name-container').html(name);
}
$form.validate({
errorElement: 'span',
errorClass: 'danger text-danger',
rules: {
new_mirror_id: {
required: true
},
},
messages: {
new_mirror_id: {
required: '请选择新镜像'
}
}
});
// modal ready fire
$modal.on('show.bs.modal', function (event) {
var $link = $(event.relatedTarget);
var mirrorId = $link.data('id');
var mirrorName = $link.data('name');
setMirror(mirrorId, mirrorName);
$mirrorSelect.select2('val', ' ');
});
$modal.on('hide.bs.modal', function () {
setMirror('', '');
$mirrorSelect.select2('val', ' ');
$('#new_mirror_id-error').remove();
});
$mirrorSelect.select2({
theme: 'bootstrap4',
placeholder: '输入要合并的镜像名',
minimumInputLength: 1,
ajax: {
url: '/admins/mirror_repositories/for_select',
dataType: 'json',
data: function(params){
return { keyword: params.term };
},
processResults: function(data){
return { results: data.mirrors }
}
},
templateResult: function (item) {
if(!item.id || item.id === '') return item.text;
return item.name;
},
templateSelection: function(item){
if (item.id) {
$('#new_mirror_id-error').remove();
$('#new_mirror_id').val(item.id);
}
return item.name || item.text;
}
});
$modal.on('click', '.submit-btn', function(){
$form.find('.error').html('');
if ($form.valid()) {
var url = $form.data('url');
$.ajax({
method: 'POST',
dataType: 'script',
url: url,
data: $form.serialize(),
}).done(function(){
$modal.modal('hide');
});
}
});
}
});
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
if ($('body.admins-professional-authentications-index-page').length > 0) { if ($('body.admins-professional-authentications-index-page').length > 0) {
var $searchFrom = $('.professional-authentication-list-form'); var $searchFrom = $('.professional-authentication-list-form');
$searchFrom.find('select[name="status"]').val('pending');
$searchFrom.on('click', '.search-form-tab', function(){ $searchFrom.on('click', '.search-form-tab', function(){
var $link = $(this); var $link = $(this);
@ -27751,6 +27898,7 @@ $(document).on('turbolinks:load', function() {
$searchFrom.find('.status-filter').show(); $searchFrom.find('.status-filter').show();
} else { } else {
$searchFrom.find('.status-filter').hide(); $searchFrom.find('.status-filter').hide();
$searchFrom.find('select[name="status"]').val('pending');
} }
}); });
} }
@ -27905,6 +28053,7 @@ $(document).on('turbolinks:load', function() {
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
if ($('body.admins-shixun-authorizations-index-page').length > 0) { if ($('body.admins-shixun-authorizations-index-page').length > 0) {
var $searchFrom = $('.shixun-authorization-list-form'); var $searchFrom = $('.shixun-authorization-list-form');
$searchFrom.find('select[name="status"]').val('pending');
$searchFrom.on('click', '.search-form-tab', function(){ $searchFrom.on('click', '.search-form-tab', function(){
var $link = $(this); var $link = $(this);
@ -27916,6 +28065,7 @@ $(document).on('turbolinks:load', function() {
$searchFrom.find('.status-filter').show(); $searchFrom.find('.status-filter').show();
} else { } else {
$searchFrom.find('.status-filter').hide(); $searchFrom.find('.status-filter').hide();
$searchFrom.find('select[name="status"]').val('pending');
} }
}); });
} }
@ -27940,6 +28090,7 @@ $(document).on('turbolinks:load', function(){
$(document).on('turbolinks:load', function() { $(document).on('turbolinks:load', function() {
if ($('body.admins-subject-authorizations-index-page').length > 0) { if ($('body.admins-subject-authorizations-index-page').length > 0) {
var $searchFrom = $('.subject-authorization-list-form'); var $searchFrom = $('.subject-authorization-list-form');
$searchFrom.find('select[name="status"]').val('pending');
$searchFrom.on('click', '.search-form-tab', function(){ $searchFrom.on('click', '.search-form-tab', function(){
var $link = $(this); var $link = $(this);
@ -27951,6 +28102,7 @@ $(document).on('turbolinks:load', function() {
$searchFrom.find('.status-filter').show(); $searchFrom.find('.status-filter').show();
} else { } else {
$searchFrom.find('.status-filter').hide(); $searchFrom.find('.status-filter').hide();
$searchFrom.find('select[name="status"]').val('pending');
} }
}); });
} }
@ -28267,8 +28419,11 @@ $(document).on('turbolinks:load', function(){
// flash alert提示框自动关闭 // flash alert提示框自动关闭
if($('.admin-alert-container .alert').length > 0){ if($('.admin-alert-container .alert').length > 0){
setTimeout(function(){ setTimeout(function(){
$('.admin-alert-container .alert').alert('close'); $('.admin-alert-container .alert:not(.alert-danger)').alert('close');
}, 2000); }, 2000);
setTimeout(function(){
$('.admin-alert-container .alert.alert-danger').alert('close');
}, 5000);
} }
}); });

@ -280,6 +280,10 @@ class CommonWorkAppraise extends Component{
</React.Fragment> </React.Fragment>
})} })}
</div> </div>
{isAdmin && <div className="font-12 color-grey-9">
<span >温馨提示</span>
点击其他组员的姓名可以快速评阅TA的作品
</div>}
</div> </div>
</div> </div>

@ -563,7 +563,7 @@ class CommonWorkList extends Component{
late_penalty, absence_penalty, appeal_penalty late_penalty, absence_penalty, appeal_penalty
,end_immediately ,publish_immediately ,end_immediately ,publish_immediately
, homework_id, visible, work_group, project_info , homework_id, visible, work_group, project_info, is_leader
} =this.state; } =this.state;
@ -610,7 +610,7 @@ class CommonWorkList extends Component{
}else{ }else{
StudentData=isStudent ? [{ id, user_name, user_login, student_id, group_name, work_status, update_time, teacher_score, teaching_asistant_score, student_score, StudentData=isStudent ? [{ id, user_name, user_login, student_id, group_name, work_status, update_time, teacher_score, teaching_asistant_score, student_score,
ultimate_score, work_score, student_comment_count, appeal_all_count, appeal_deal_count, ultimate_score, work_score, student_comment_count, appeal_all_count, appeal_deal_count,
late_penalty, absence_penalty, appeal_penalty, project_info, late_penalty, absence_penalty, appeal_penalty, project_info, is_leader,
work_group, isMine: true }] : [] work_group, isMine: true }] : []
} }
const columns = buildColumns(this, student_works, StudentData) const columns = buildColumns(this, student_works, StudentData)
@ -695,8 +695,8 @@ class CommonWorkList extends Component{
<CheckAllGroup options={options_teacher_comment} label={'你的评阅:'} onChange={this.teacherCommentOptionChange}></CheckAllGroup> <CheckAllGroup options={options_teacher_comment} label={'你的评阅:'} onChange={this.teacherCommentOptionChange}></CheckAllGroup>
<CheckAllGroup options={options_status} label={'作品状态:'} onChange={this.statusOptionChange}></CheckAllGroup> <CheckAllGroup options={options_status} label={'作品状态:'} onChange={this.statusOptionChange}></CheckAllGroup>
{options_course_group.length > 1 && <CheckAllGroup options={options_course_group} label={'分班情况:'} onChange={this.courseGroupOptionChange} checkboxGroupStyle={{width: '980px'}}></CheckAllGroup>}
{isGroup && <CheckAllGroup options={options_member_work} label={'组内角色:'} onChange={this.memberWorkChange}></CheckAllGroup>} {isGroup && <CheckAllGroup options={options_member_work} label={'组内角色:'} onChange={this.memberWorkChange}></CheckAllGroup>}
{options_course_group.length > 1 && <CheckAllGroup options={options_course_group} label={'分班情况:'} onChange={this.courseGroupOptionChange} checkboxGroupStyle={{width: '980px'}}></CheckAllGroup>}
{/* value={search} */} {/* value={search} */}

@ -4,7 +4,7 @@ import {Link} from 'react-router-dom';
import axios from 'axios'; import axios from 'axios';
import _ from 'lodash' import _ from 'lodash'
import { WordsBtn, getUploadActionUrl, appendFileSizeToUploadFile, appendFileSizeToUploadFileAll } from 'educoder'; import { WordsBtn, getUploadActionUrl, appendFileSizeToUploadFile, appendFileSizeToUploadFileAll, ConditionToolTip } from 'educoder';
import Modals from '../../modals/Modals'; import Modals from '../../modals/Modals';
import TPMMDEditor from '../../tpm/challengesnew/TPMMDEditor'; import TPMMDEditor from '../../tpm/challengesnew/TPMMDEditor';
import LeaderIcon from './common/LeaderIcon' import LeaderIcon from './common/LeaderIcon'
@ -724,13 +724,13 @@ render(){
<div className={"ml20"} style={{width:"100%"}}> <div className={"ml20"} style={{width:"100%"}}>
<div className={"members fl"} <div className={"members workPost fl"}
onScroll={this.contentViewScroll}> onScroll={this.contentViewScroll}>
<CheckboxGroup value={task_status} onChange={this.funtaskstatus} style={{ paddingTop: '4px'}}> <CheckboxGroup value={task_status} onChange={this.funtaskstatus} style={{ paddingTop: '4px'}}>
{members.map((item,key)=>{ {members.map((item,key)=>{
return( return(
<div key={key} style={{ <div key={key} style={{
width: '375px', // width: '375px',
height: '30px' height: '30px'
}}> }}>
<Checkbox value={item.user_id} key={item.user_id} checked={parseInt(task_status[key])===item.user_id?true:false} <Checkbox value={item.user_id} key={item.user_id} checked={parseInt(task_status[key])===item.user_id?true:false}
@ -740,7 +740,7 @@ render(){
<div className={"fl ml20 color-grey-9 overflowHidden1"} style={{ maxWidth: '147px' }} <div className={"fl ml20 color-grey-9 overflowHidden1"} style={{ maxWidth: '147px' }}
title={item.group_name && item.group_name.length > 9 ? item.group_name : ''} title={item.group_name && item.group_name.length > 9 ? item.group_name : ''}
>{item.group_name}</div> >{item.group_name}</div>
<div className={"fl ml20 color-grey-9 overflowHidden1"} style={{ maxWidth: '84px' }} <div className={"fl ml20 color-grey-9 overflowHidden1"} style={{ maxWidth: '99px' }}
title={item.student_id && item.student_id.length > 12 ? item.student_id : ''} title={item.student_id && item.student_id.length > 12 ? item.student_id : ''}
>{item.student_id}</div> >{item.student_id}</div>
<div className={"fl ml20"}>{item.commit_status===true?<span className={"color-orange"}>已提交</span> :""}</div> <div className={"fl ml20"}>{item.commit_status===true?<span className={"color-orange"}>已提交</span> :""}</div>
@ -761,26 +761,30 @@ render(){
} }
.members .leaderIcon { .members .leaderIcon {
} }
.workPost.members {
width: 452px;
}
`}</style> `}</style>
<div className={"members fl"}> <div className={"members workPost fl"}>
{selectmemberslist&&selectmemberslist.map((item,key)=>{ {selectmemberslist&&selectmemberslist.map((item,key)=>{
const _is_leader = (item.is_leader || !this.isEdit && key==0)
return( return(
<div key={key} style={{ <div key={key} style={{
width: '375px', // width: '375px',
height: '30px', height: '30px',
display:item.user_name===undefined?"none":"" display:item.user_name===undefined?"none":""
}}> }}>
<Tooltip placement="bottom" title={item.user_nam}> <ConditionToolTip placement="bottom" title={'组长'} condition={_is_leader && item.user_name.length > 5}>
<div className={"fl ml5 fonthidden"} style={{width: '68px'}}> <div className={"fl ml5 fonthidden"} style={{width: '98px', color: `${item.user_name.length > 5 && _is_leader ? '#4CACFF' : 'inherit'}`}}>
{item.user_name}{ (item.is_leader || !this.isEdit && key==0) && <LeaderIcon className="leaderIcon" small={true}></LeaderIcon>} {item.user_name}{ item.user_name.length <= 5 && _is_leader && <LeaderIcon className="leaderIcon" small={true}></LeaderIcon>}
</div> </div>
</Tooltip> </ConditionToolTip>
<div className={"fl ml40 color-grey-9 overflowHidden1"} style={{ maxWidth: '147px' }} <div className={"fl ml20 color-grey-9 overflowHidden1"} style={{ maxWidth: '147px' }}
title={item.group_name && item.group_name.length > 9 ? item.group_name : ''} title={item.group_name && item.group_name.length > 9 ? item.group_name : ''}
>{item.group_name}</div> >{item.group_name}</div>
<div className={"fl ml40 color-grey-9 overflowHidden1"} style={{ maxWidth: '84px' }} <div className={"fl ml20 color-grey-9 overflowHidden1"} style={{ maxWidth: '99px' }}
title={item.student_id && item.student_id.length > 12 ? item.student_id : ''} title={item.student_id && item.student_id.length > 12 ? item.student_id : ''}
>{item.student_id}</div> >{item.student_id}</div>
{item.user_id != this.props.current_user.user_id ? {item.user_id != this.props.current_user.user_id ?

@ -8,8 +8,9 @@ export default function LeaderIcon(props = {}) {
icon = <div className={_className} style={{ icon = <div className={_className} style={{
height: '14px', height: '14px',
'line-height': '14px', 'line-height': '14px',
width: '24px', // width: '24px',
padding: 0, transform: 'scale(0.833)',
padding: '0px 5px',
'margin-top': '-2px', 'margin-top': '-2px',
'margin-left': '2px', 'margin-left': '2px',
'vertical-align': 'middle', }}>组长</div> 'vertical-align': 'middle', }}>组长</div>

@ -711,8 +711,12 @@ class GraduationTaskssettinglist extends Component{
title: '姓名', title: '姓名',
dataIndex: 'name', dataIndex: 'name',
key: 'name', key: 'name',
className:'edu-txt-center',
className:'edu-txt-center' render: (text, record) => (
<span>
<div style={{color:'#9A9A9A'}} className={"studentname"} title={record.name}>{record.name}</div>
</span>
),
}, { }, {
title: '学号', title: '学号',
dataIndex: 'stduynumber', dataIndex: 'stduynumber',
@ -720,7 +724,7 @@ class GraduationTaskssettinglist extends Component{
className:'edu-txt-center', className:'edu-txt-center',
render: (text, record) => ( render: (text, record) => (
<span> <span>
<a style={{color:'#9A9A9A'}}>{record.stduynumber}</a> <div style={{color:'#9A9A9A'}} className={"studentnumber"} title={record.stduynumber}>{record.stduynumber}</div>
</span> </span>
), ),
}, { }, {
@ -935,6 +939,7 @@ class GraduationTaskssettinglist extends Component{
if(taskslistdata&&taskslistdata.have_grouping===false){ if(taskslistdata&&taskslistdata.have_grouping===false){
columns.some((item,key)=> { columns.some((item,key)=> {
if (item.title === "分组") { if (item.title === "分组") {
columns.splice(key, 1) columns.splice(key, 1)
@ -964,10 +969,35 @@ class GraduationTaskssettinglist extends Component{
.ant-table-tbody>tr>td, .ant-table-thead>tr>th{ .ant-table-tbody>tr>td, .ant-table-thead>tr>th{
padding: 16px 10px padding: 16px 10px
} }
` `
} }
</style> </style>
{taskslistdata&&taskslistdata.have_grouping===true||
taskslistdata&&taskslistdata.have_project===true||
taskslistdata&&taskslistdata.cross_comment===true?<style>
{
`
.studentnumber{
text-overflow: ellipsis;
white-space: nowrap;
width: 105px;
display: block;
overflow: hidden;
margin: 0px auto;
cursor: default;
}
.studentname{
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 90px;
margin: 0px auto;
}
`
}</style>:""}
{/*提示*/} {/*提示*/}
<Modals <Modals
modalsType={Modalstype} modalsType={Modalstype}
@ -1210,22 +1240,25 @@ class GraduationTaskssettinglist extends Component{
{taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.length!=0?<li className="clearfix"> {taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.length!=0?<li className="clearfix">
<span className="fl mr10 color-grey-8">分班情况</span> <span className="fl mr10 color-grey-8">分班情况</span>
<div className="fl mr25">
<a id="graduation_comment_no_limit" className={course_group===null||course_group===undefined?"pl10 pr10 check_on":"pl10 pr10 "} onClick={()=>this.groupgroup([])}>不限</a>
</div>
<div className="fl groupList" style={{maxWidth: '945px'}}>
<CheckboxGroup value={course_group} onChange={(e)=>this.groupgroup(e,taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.length)} style={{width: '1000px', paddingTop: '4px'}}>
{taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.map((item,key)=>{
return(
<span key={key} className={"mt10"}>
<Checkbox value={item.course_group_id} key={item.course_group_id} className="fl ">{item.group_group_name}
<span>({item.count})</span>
</Checkbox>
</span>
)
})}
</CheckboxGroup>
</div>
<CheckboxGroup value={course_group} onChange={(e)=>this.groupgroup(e,taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.length)} style={{width: '1000px', paddingTop: '4px'}}>
<span className="fl mr25">
<a id="graduation_comment_no_limit" className={course_group===null||course_group===undefined?"pl10 pr10 check_on":"pl10 pr10 "} onClick={()=>this.groupgroup([])}>不限</a>
</span>
{taskslistdata.search_assistants&&taskslistdata.search_assistants.course_group_info.map((item,key)=>{
return(
<span key={key} className={"mt10"}>
<Checkbox value={item.course_group_id} key={item.course_group_id} className="fl ">{item.group_group_name}
<span>({item.count})</span>
</Checkbox>
</span>
)
})}
</CheckboxGroup>
</li>:""} </li>:""}

@ -411,9 +411,7 @@ export default class TPMquestion extends Component {
window.location.href = '/shixuns/'+this.props.match.params.shixunId+'/challenges/'+this.props.match.params.checkpointId+'/editquestion'; window.location.href = '/shixuns/'+this.props.match.params.shixunId+'/challenges/'+this.props.match.params.checkpointId+'/editquestion';
} }
questionadd=()=>{ questionadd=()=>{
$('html').animate({
scrollTop: 10
}, 200);
let{questionaddarray}=this.state; let{questionaddarray}=this.state;
let questionaddsums=questionaddarray.length; let questionaddsums=questionaddarray.length;
@ -431,15 +429,13 @@ export default class TPMquestion extends Component {
} }
}) })
questionaddarrays.push({type:0,choose_id:0}); questionaddarrays.push({type:0,choose_id:0});
this.setState({ this.setState({
activetype:0, activetype:0,
questionaddarray:questionaddarrays, questionaddarray:questionaddarrays,
questionaddtype:true, questionaddtype:true,
editquestionaddtype:false,
newquestionaddtype:true, newquestionaddtype:true,
editquestionaddtype:false,
questionlists:[{str:"A",val:"",type:false},{str:"B",val:"",type:false},{str:"C",val:"",type:false},{str:"D",val:"",type:false}], questionlists:[{str:"A",val:"",type:false},{str:"B",val:"",type:false},{str:"C",val:"",type:false},{str:"D",val:"",type:false}],
answeshixunsGroup: 1, answeshixunsGroup: 1,
answeoptions:[10,20], answeoptions:[10,20],
@ -447,17 +443,17 @@ export default class TPMquestion extends Component {
shixunssanswerkillvalue:"", shixunssanswerkillvalue:"",
shixunsskillanswerlist:[], shixunsskillanswerlist:[],
contentMdRefval:"", contentMdRefval:"",
newquestioMDMdContval:"" newquestioMDMdContval:"",
}) })
// setTimeout(() => { setTimeout(() => {
// this.newquestioMDMdCont.current.setValue('') this.newquestioMDMdRef.current.setValue('')
// this.newquestioMDMdRef.current.setValue('') }, 1000)
// setTimeout(() => {
// }, 2000) this.newquestioMDMdCont.current.setValue('')
}, 1500)
this.shixunsautoHeight() // this.shixunsautoHeight()
} }
editquestionlists=(newquestionlists)=>{ editquestionlists=(newquestionlists)=>{
@ -592,6 +588,10 @@ export default class TPMquestion extends Component {
} }
answer_subit=(sumtype,challenge_choose_id)=>{ answer_subit=(sumtype,challenge_choose_id)=>{
$('html').animate({
scrollTop:10
}, 500);
let {challenge_id,questionlists,shixunsskillanswerlist,answeonshixunsmark,answeshixunsGroup,questionaddarray} =this.state; let {challenge_id,questionlists,shixunsskillanswerlist,answeonshixunsmark,answeshixunsGroup,questionaddarray} =this.state;
if(challenge_id===undefined){ if(challenge_id===undefined){
message.error("关卡id为空"); message.error("关卡id为空");
@ -679,6 +679,7 @@ export default class TPMquestion extends Component {
let id = this.props.match.params.shixunId; let id = this.props.match.params.shixunId;
let checkpointId=this.props.match.params.checkpointId
let url; let url;
if(sumtype==="edit"){ if(sumtype==="edit"){
let newquestioMDvalue = this.neweditanswerRef.current.getValue().trim(); let newquestioMDvalue = this.neweditanswerRef.current.getValue().trim();
@ -781,7 +782,9 @@ export default class TPMquestion extends Component {
description: description:
'新建成功,请点击右侧加号继续添加', '新建成功,请点击右侧加号继续添加',
}); });
// this.getanswer_subitlist() window.location.href=`/shixuns/${id}/challenges/${checkpointId}/editquestion/${response.data.challenge_choose_id}`;
// this.getanswer_subitlist()
// this.gochooseid("/shixuns/"+this.props.match.params.shixunId+"/challenges/"+this.props.match.params.checkpointId+"/editquestion"+"/"+response.data.challenge_choose_id) // this.gochooseid("/shixuns/"+this.props.match.params.shixunId+"/challenges/"+this.props.match.params.checkpointId+"/editquestion"+"/"+response.data.challenge_choose_id)
}).catch((error) => { }).catch((error) => {
console.log(error) console.log(error)
@ -817,7 +820,8 @@ export default class TPMquestion extends Component {
neweditanswerRefval:'', neweditanswerRefval:'',
editanswersRefval:'' editanswersRefval:''
}) })
this.newquestioMDMdRef.current.setValue('')
this.newquestioMDMdCont.current.setValue('')
}else{ }else{
let id = this.props.match.params.shixunId; let id = this.props.match.params.shixunId;
let url ='/shixuns/'+id+'/challenges/'+challenge_id+'/edit_choose_question.json?choose_id='+challenge_choose_id; let url ='/shixuns/'+id+'/challenges/'+challenge_id+'/edit_choose_question.json?choose_id='+challenge_choose_id;
@ -920,6 +924,7 @@ export default class TPMquestion extends Component {
<Option key={d} id={k}>{d}</Option> <Option key={d} id={k}>{d}</Option>
) )
}) })
return ( return (
<React.Fragment> <React.Fragment>
<div className="educontent mt30 mb30"> <div className="educontent mt30 mb30">

@ -4,6 +4,8 @@ import {Input, Select, Radio, Checkbox, Popconfirm, message, Modal,Tooltip} from
import {BrowserRouter as Router, Route, Link, Switch} from "react-router-dom"; import {BrowserRouter as Router, Route, Link, Switch} from "react-router-dom";
import axios from 'axios';
import TPMMDEditor from '../../tpm/challengesnew/TPMMDEditor'; import TPMMDEditor from '../../tpm/challengesnew/TPMMDEditor';
const Option = Select.Option; const Option = Select.Option;
@ -21,7 +23,17 @@ export default class TpmQuestionEdit extends Component {
componentDidMount() { componentDidMount() {
} }
delecbtns=()=>{
let url=`/shixuns/${this.props.match.params.shixunId}/challenges/${this.props.match.params.checkpointId}/destroy_challenge_choose.json`;
axios.delete((url), { data: {
choose_id:this.props.match.params.choose_id
}})
.then((result)=>{
if(result.data.status===1){
window.location.href=`/shixuns/${this.props.match.params.shixunId}/challenges/${this.props.match.params.checkpointId}/editquestion`;
}
})
}
render() { render() {
@ -202,6 +214,9 @@ export default class TpmQuestionEdit extends Component {
onClick={()=>this.props.answer_subit()}>提交</a> onClick={()=>this.props.answer_subit()}>提交</a>
<a href={this.props.go_back_url} <a href={this.props.go_back_url}
className="defalutCancelbtn fl">取消</a> className="defalutCancelbtn fl">取消</a>
<a onClick={()=>this.delecbtns()}
className="delectshixuncdbtn fr">删除</a>
</div> </div>
</div> </div>

@ -35,7 +35,7 @@ export default class TpmQuestionNew extends Component {
<span className="mr30 color-orange pt10">*</span> <span className="mr30 color-orange pt10">*</span>
<div className="flex1 mr20"> <div className="flex1 mr20">
<TPMMDEditor ref={this.props.newquestioMDMdRef} placeholder="请输入选择题的题干内容" mdID={'newquestioMDid'} refreshTimeout={1500} <TPMMDEditor ref={this.props.newquestioMDMdRef} placeholder="请输入选择题的题干内容" mdID={'newquestioMDid'} refreshTimeout={1500}
watch={true} className="courseMessageMD" initValue={this.props.contentMdRefval}></TPMMDEditor> needRecreate={true} watch={true} className="courseMessageMD" initValue={this.props.contentMdRefval}></TPMMDEditor>
</div> </div>
@ -108,7 +108,7 @@ export default class TpmQuestionNew extends Component {
<div className={"df"}> <div className={"df"}>
<div className={"flex1 mr20"}> <div className={"flex1 mr20"}>
<TPMMDEditor ref={this.props.newquestioMDMdCont} placeholder="请输入各个选项的具体解析或其他相关信息" mdID={'newquestioMDMdConts'} refreshTimeout={1500} <TPMMDEditor ref={this.props.newquestioMDMdCont} placeholder="请输入各个选项的具体解析或其他相关信息" mdID={'newquestioMDMdConts'} refreshTimeout={1500}
watch={true} className="courseMessageMD" initValue={this.props.newquestioMDMdContval}></TPMMDEditor> needRecreate={true} watch={true} className="courseMessageMD" initValue={this.props.newquestioMDMdContval}></TPMMDEditor>
</div> </div>
<div className={"choose_names"} style={{display:this.props.newquestioMDvaluetypes===true?"block":"none"}}> <div className={"choose_names"} style={{display:this.props.newquestioMDvaluetypes===true?"block":"none"}}>
<span className="color-orange mt8 fl" id="choose_name" style={{display: 'inline'}}><i className="fa fa-exclamation-circle mr3"></i></span> <span className="color-orange mt8 fl" id="choose_name" style={{display: 'inline'}}><i className="fa fa-exclamation-circle mr3"></i></span>

@ -1,132 +1,124 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import {Link} from 'react-router-dom'; import {Link} from 'react-router-dom';
import {Tooltip,Menu} from 'antd'; import {Tooltip,Menu} from 'antd';
import {getImageUrl} from 'educoder'; import {getImageUrl} from 'educoder';
import "./usersInfo.css" import "./usersInfo.css"
import "../../courses/css/members.css" import "../../courses/css/members.css"
import "../../courses/css/Courses.css" import "../../courses/css/Courses.css"
import { LinkAfterLogin } from 'educoder' import { LinkAfterLogin } from 'educoder'
class InfosBanner extends Component{ class InfosBanner extends Component{
constructor(props){ constructor(props){
super(props); super(props);
} }
render(){ render(){
let { let {
data , data ,
id, id,
login, login,
moduleName, moduleName,
current_user, current_user,
}=this.props; }=this.props;
let is_current=this.props.is_current; let is_current=this.props.is_current;
let {username}= this.props.match.params; let {username}= this.props.match.params;
let {pathname}=this.props.location; let {pathname}=this.props.location;
moduleName=pathname.split("/")[3]; moduleName=pathname.split("/")[3];
console.log(is_current) return(
return( <div className="bannerPanel mb60">
<div className="bannerPanel mb60"> <div className="educontent">
<div className="educontent"> <div className="clearfix color-white mb25">
<div className="clearfix color-white mb25"> <p className="myPhoto mr20 fl"><img alt="头像" src={data && `${getImageUrl('images/'+data.avatar_url)}`}/></p>
<p className="myPhoto mr20 fl"><img alt="头像" src={data && `${getImageUrl('images/'+data.avatar_url)}`}/></p> <div className="fl">
<div className="fl"> <p className="clearfix mt20">
<p className="clearfix mt20"> <span className="username task-hide" style={{"maxWidth":'370px'}}>{data && data.name}</span>
<span className="username task-hide" style={{"maxWidth":'370px'}}>{data && data.name}</span> {
{ data && is_current == false && data.identity =="学生" ? "" :
data && is_current == false && data.identity =="学生" ? "" : <span className="userpost"><label>{data && data.identity}</label></span>
<span className="userpost"><label>{data && data.identity}</label></span> }
} </p>
</p> <p className="mt15">
<p className="mt15"> <Tooltip placement='bottom' title={ data && data.professional_certification ?"已职业认证":"未职业认证"}>
<Tooltip placement='bottom' title={ data && data.professional_certification ?"已职业认证":"未职业认证"}> <i className={ data && data.professional_certification ? "iconfont icon-shenfenzhenghaomaguizheng font-18 user-colorgrey-green mr20 ml2":"iconfont icon-shenfenzhenghaomaguizheng font-18 user-colorgrey-B8 mr20 ml2"}></i>
<i className={ data && data.professional_certification ? "iconfont icon-shenfenzhenghaomaguizheng font-18 user-colorgrey-green mr20 ml2":"iconfont icon-shenfenzhenghaomaguizheng font-18 user-colorgrey-B8 mr20 ml2"}></i> </Tooltip>
</Tooltip> <Tooltip placement='bottom' title={ data && data.authentication ?"已实名认证":"未实名认证"}>
<Tooltip placement='bottom' title={ data && data.authentication ?"已实名认证":"未实名认证"}> <i className={ data && data.authentication ? "iconfont icon-renzhengshangjia font-18 user-colorgrey-green":"iconfont icon-renzhengshangjia font-18 user-colorgrey-B8"}></i>
<i className={ data && data.authentication ? "iconfont icon-renzhengshangjia font-18 user-colorgrey-green":"iconfont icon-renzhengshangjia font-18 user-colorgrey-B8"}></i> </Tooltip>
</Tooltip> </p>
</p> </div>
</div> <div className="fr">
<div className="fr"> <div class="fl headtab mt20">
<div class="fl headtab mt20"> <span>{is_current ? "我":"TA"}的经验值</span>
<span>{is_current ? "我":"TA"}的经验值</span> <a style={{"cursor":"default"}}>{data && data.experience}</a>
<a style={{"cursor":"default"}}>{data && data.experience}</a> </div>
</div> <div class="fl headtab mt20 pr leftTransform pl20">
<div class="fl headtab mt20 pr leftTransform pl20"> <span>{is_current ? "我":"TA"}的金币</span>
<span>{is_current ? "我":"TA"}的金币</span> <a style={{"cursor":"default"}}>{data && data.grade}</a>
<a style={{"cursor":"default"}}>{data && data.grade}</a> </div>
</div> {
{ is_current ?
is_current ? <span className="fl mt35 ml60">
<span className="fl mt35 ml60"> {
{ data && data.attendance_signed ?
data && data.attendance_signed ? <span className="user_default_btn user_grey_btn font-18">已签到</span>
<span className="user_default_btn user_grey_btn font-18">已签到</span> :
: <a herf="javascript:void(0);" onClick={this.props.signFor} className="user_default_btn user_yellow_btn fl font-18">签到</a>
<a herf="javascript:void(0);" onClick={this.props.signFor} className="user_default_btn user_yellow_btn fl font-18">签到</a> }
} </span>
</span> :
: <span className="fl mt35 ml60">
<span className="fl mt35 ml60"> <LinkAfterLogin
<LinkAfterLogin {...this.props}
{...this.props} {...this.state}
{...this.state} className="user_default_btn user_yellow_btn fl font-18"
className="user_default_btn user_yellow_btn fl font-18" to={`/messages/${login}/message_detail?target_ids=${id}`}
to={`/messages/${login}/message_detail?target_ids=${id}`} >
> 私信
私信 </LinkAfterLogin>
</LinkAfterLogin> </span>
</span> }
} </div>
</div> </div>
</div> <div className="userNav">
<div className="userNav"> <li className={`${moduleName == 'courses' ||moduleName == undefined ? 'active' : '' }`}>
<li className={`${moduleName == 'courses' ||moduleName == undefined ? 'active' : '' }`}> <Link
<Link onClick={() => this.setState({moduleName: 'courses'})}
onClick={() => this.setState({moduleName: 'courses'})} to={`/users/${username}/courses`}>翻转课堂</Link>
to={`/users/${username}/courses`}>翻转课堂</Link> </li>
</li> <li className={`${moduleName == 'shixuns' ? 'active' : '' }`}>
<li className={`${moduleName == 'shixuns' ? 'active' : '' }`}> <Link
<Link onClick={() => this.setState({moduleName: 'shixuns'})}
onClick={() => this.setState({moduleName: 'shixuns'})} to={`/users/${username}/shixuns`}>实训项目</Link>
to={`/users/${username}/shixuns`}>开发社区</Link> </li>
</li> <li className={`${moduleName == 'paths' ? 'active' : '' }`}>
<li className={`${moduleName == 'paths' ? 'active' : '' }`}> <Link
<Link onClick={() => this.setState({moduleName: 'paths'})}
onClick={() => this.setState({moduleName: 'paths'})} to={`/users/${username}/paths`}>实践课程</Link>
to={`/users/${username}/paths`}>实践课程</Link> </li>
</li> <li className={`${moduleName == 'projects' ? 'active' : '' }`}>
<li className={`${moduleName == 'projects' ? 'active' : '' }`}> <Link
<Link onClick={() => this.setState({moduleName: 'projects'})}
onClick={() => this.setState({moduleName: 'projects'})} to={`/users/${username}/projects`}>开发项目</Link>
to={`/users/${username}/projects`}>项目</Link> </li>
</li> <li className={`${moduleName == 'package' ? 'active' : '' }`}>
<li className={`${moduleName == 'package' ? 'active' : '' }`}> <Link
<Link onClick={() => this.setState({moduleName: 'package'})}
onClick={() => this.setState({moduleName: 'package'})} to={`/users/${username}/package`}>众包</Link>
to={`/users/${username}/package`}>众包</Link> </li>
</li> {((is_current && current_user && current_user.is_teacher ) || current_user && current_user.admin)
{((is_current && current_user && current_user.is_teacher ) || current_user && current_user.admin) && <li className={`${moduleName == 'videos' ? 'active' : '' }`}>
&& <li className={`${moduleName == 'videos' ? 'active' : '' }`}> <Link
<Link onClick={() => this.setState({moduleName: 'videos'})}
onClick={() => this.setState({moduleName: 'videos'})} to={`/users/${username}/videos`}>视频</Link>
to={`/users/${username}/videos`}>视频</Link> </li>}
</li>}
</div>
{((is_current && current_user && current_user.is_teacher ) || current_user && current_user.admin) </div>
&& <li className={`${moduleName == 'videos' ? 'active' : '' }`}> </div>
<Link )
onClick={() => this.setState({moduleName: 'videos'})} }
to={`/users/${username}/videos`}>题库</Link> }
</li>}
</div>
</div>
</div>
)
}
}
export default InfosBanner; export default InfosBanner;

@ -538,6 +538,27 @@ a.edu-greyline-btn:hover,a.edu-greyshallowline-btn:hover{border:1px solid #B2B2B
font-weight: 400; font-weight: 400;
color: rgba(255,255,255,1); color: rgba(255,255,255,1);
} }
/*删除按钮*/
.delectshixuncdbtn{
display: block;
border: 1px solid #CDCDCD;
background-color: #fafafa;
color: #999!important;
width: 120px;
text-align: center;
height: 30px;
line-height: 30px;
border-radius: 2px;
width: 130px;
height: 40px;
background: rgba(77,124,254,0);
border-radius: 4px;
line-height: 40px;
font-size: 16px;
font-family: MicrosoftYaHei;
font-weight: 400;
}
.defalutSubmitbtn:hover{background-color: #459BE6;border: 1px solid #459BE6;} .defalutSubmitbtn:hover{background-color: #459BE6;border: 1px solid #459BE6;}
/*-------------------------------------------公用按钮以white-btn(或者edu-default-btn无padding)为基础宽度和高度可以用padding填充颜色用edu-color-btnend-----------------------------------------*/ /*-------------------------------------------公用按钮以white-btn(或者edu-default-btn无padding)为基础宽度和高度可以用padding填充颜色用edu-color-btnend-----------------------------------------*/

Loading…
Cancel
Save