Merge branches 'dev_aliyun', 'develop' and 'master' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_forum
杨树林 6 years ago
commit c4cba31292

@ -442,12 +442,18 @@ class ApplicationController < ActionController::Base
shixun.shixun_service_configs.each do |config|
mirror = config.mirror_repository
if mirror.name.present?
# 资源限制没有就传默认值。
cpu_limit = config.cpu_limit.presence || 1
cpu_request = config.lower_cpu_limit.presence || 0.1
memory_limit = config.memory_limit.presence || 1024
request_limit = config.resource_limit.presence || 10
resource_limit = config.resource_limit.presence || 10000
container << {:image => mirror.name,
:cpuLimit => config.cpu_limit,
:cpuRequest => config.lower_cpu_limit,
:memoryLimit => "#{config.memory_limit}M",
:memoryRequest => "#{config.request_limit}M",
:resourceLimit => "#{config.resource_limit}K",
:cpuLimit => cpu_limit,
:cpuRequest => cpu_request,
:memoryLimit => "#{memory_limit}M",
:memoryRequest => "#{request_limit}M",
:resourceLimit => "#{resource_limit}K",
:type => mirror.try(:main_type) == "1" ? "main" : "sub"}
end
end

@ -1,5 +1,5 @@
class EduSettingsController < ApplicationController
# before_action :require_admin
before_action :require_admin
before_action :set_edu_setting, only: [:show, :edit, :update, :destroy]
# GET /edu_settings

@ -896,13 +896,31 @@ class PollsController < ApplicationController
def commit_poll
ActiveRecord::Base.transaction do
begin
poll_user_current = @poll.poll_users.find_by_group_ids(current_user.id).first
poll_user_params = {
:commit_status => 1,
:end_at => Time.now
}
poll_user_current.update_attributes(poll_user_params)
normal_status(0, "问卷提交成功!")
@poll_multi_questions = @poll.poll_questions.where(question_type:2).select(:id,:max_choices,:min_choices,:question_number)
error_question = []
@poll_multi_questions.each do |q|
poll_user_votes = current_user.poll_votes.where(poll_question_id:q.id)&.size
if q.max_choices.present? && (poll_user_votes > q.max_choices)
error_messages = "#{q.question_number}题:超过最大选项限制"
elsif q.min_choices.present? && (poll_user_votes < q.min_choices)
error_messages = "#{q.question_number}题:不得少于最小选项限制"
else
error_messages = nil
end
error_question.push(error_messages)
end
error_question = error_question.reject(&:blank?)
if error_question.reject(&:blank?).length > 0
normal_status(-1, "#{error_question.join("\n")}")
else
poll_user_current = @poll.poll_users.find_by_group_ids(current_user.id).first
poll_user_params = {
:commit_status => 1,
:end_at => Time.now
}
poll_user_current.update_attributes(poll_user_params)
normal_status(0, "问卷提交成功!")
end
## 需添加发送消息的接口,稍后添加
rescue Exception => e
uid_logger_error(e.message)

@ -297,6 +297,7 @@ class BoardsNew extends Component{
.courseForm .noBorder {
border-bottom: none;
}
`}</style>
<div className="edu-class-container edu-position courseForm">
<CBreadcrumb items={[

@ -370,7 +370,7 @@ class NewWork extends Component{
<span>{pageType==="new"?"新建":"编辑"}</span>
</p> */}
<CBreadcrumb items={[
{ to: current_user.first_category_url, name: this.state.course_name},
{ to: current_user && current_user.first_category_url, name: this.state.course_name},
{ to: `/courses/${courseId}/${moduleEngName}/${category && category.category_id ? category.category_id : ''}`
, name: category && category.category_name },
{ name: `${ this.isEdit ? '编辑' : '新建'}` }
@ -388,7 +388,7 @@ class NewWork extends Component{
</p>
<div>
{/* onSubmit={this.handleSubmit} */}
<Form >
<Form className="courseForm">
<Form.Item
label="标题"
className="AboutInputForm"

@ -36,6 +36,17 @@ class ModalWrapper extends Component{
className={className || ''}
keyboard={false}
>
{
visible == true ? <style>
{
`
body {
overflow: hidden !important;
}
`
}
</style>:""
}
<div className="newupload_conbox clearfix">
{this.props.children}
{this.props.checkBoxValuestype===true?<div className={"mt10 color-red"}>

@ -984,6 +984,26 @@ samp {
line-height: 40px;
}
.courseForm .ant-input-group > .ant-input:first-child, .ant-input-group-addon:first-child {
height: 40px;
}
.courseForm .ant-select-selection, .courseForm .ant-select-selection-selected-value {
height: 40px;
line-height: 40px;
}
.courseForm .ant-input-affix-wrapper .ant-input {
height: 40px;
}
.courseForm .ant-select-auto-complete.ant-select .ant-input {
height: 40px;
}
.courseForm .ant-select-auto-complete.ant-select .ant-select-selection__rendered {
line-height: 40px;
}
.courseForm .ant-select-auto-complete.ant-select .ant-input {
height: 40px;
}
/*新建课堂*/

@ -135,8 +135,8 @@ class shixunAnswer extends Component{
let url=`/exercise_questions/${this.props.questionType.question_id}/adjust_score.json`
const list = Object.assign({}, this.state.dataCopy[key])
console.log("111111111111111111111111");
console.log(this.props);
// console.log("111111111111111111111111");
// console.log(this.props);
// 调分值为0且和第一次的数据相同则不修改
if(parseInt(e.target.value)==parseInt(list.my_score)){
return;

@ -93,13 +93,14 @@ class AddStudentModal extends Component{
}
onSendOk = () => {
this.setState({
isSpin:true
})
if(!this.state.checkBoxValues || this.state.checkBoxValues.length == 0) {
this.props.showNotification('请从列表中先选择用户。')
return;
}
this.setState({
isSpin:true
})
const courseId = this.props.match.params.coursesId
const url = `/courses/${courseId}/add_students_by_search.json`
const params = {
@ -159,7 +160,7 @@ class AddStudentModal extends Component{
title={`添加${moduleName}`}
{...this.props }
onOk={this.onOk}
className="addStudentModal"
className="addStudentModal courseForm"
>
<style>
{`

@ -196,7 +196,7 @@ class AddTeacherModal extends Component{
title={`添加${moduleName}`}
{...this.props }
onOk={this.onOk}
className="addTeacherModal"
className="addTeacherModal courseForm"
>
<AddGraduationGroupModal ref="addGraduationGroupModal"
{...this.props} onOk={this.onAddGraduationGroupOk}

@ -459,6 +459,11 @@ class CoursesNew extends Component {
width: 280px;
margin-left: 10px;
}
.construction .ant-select-selection__placeholder, .ant-select-search__field__placeholder {
line-height: 28px;
z-index: 2000;
}
`}
</style>
@ -641,7 +646,7 @@ class CoursesNew extends Component {
</Form.Item>
</div>
<div className="stud-class-set padding10200 coursenavbox mb20">
<div className="stud-class-set padding10200 mb20">
<Form.Item label="课堂所属单位">
{getFieldDecorator('school', {
rules: [{required: true, message: "不能为空"}],

@ -464,7 +464,7 @@ class Poll extends Component{
modalsBottomval,
loadtype
}=this.state;
console.log(this.props);
// console.log(this.props);
let {child}=this.props;
let {coursesId,Id}=this.props.match.params
const isAdmin = this.props.isAdmin()

@ -34,7 +34,7 @@ class PollDetailIndex extends Component{
}
getPollInfo=()=>{
console.log(this.props);
// console.log(this.props);
let pollId=this.props.match.params.pollId;
let url=`/polls/${pollId}/common_header.json`
axios.get(url).then((result)=>{
@ -123,7 +123,7 @@ class PollDetailIndex extends Component{
/>
<div className="educontent mt10 mb50">
<p className="clearfix mb20">
<WordsBtn style="grey" className="fl" to={current_user.first_category_url}>{this.props.coursedata.name}</WordsBtn>
<WordsBtn style="grey" className="fl" to={current_user && current_user.first_category_url}>{this.props.coursedata.name}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span>
<WordsBtn style="grey" className="fl" to={`/courses/${this.props.match.params.coursesId}/polls/${user_permission && user_permission.left_banner_id}`}>问卷</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span>

@ -66,7 +66,7 @@ class PollDetailTabSecond extends Component{
<span className="font-16 clearfix">
<span className="color-blue fl">{parseInt(page-1)*parseInt(limit)+(key+1)}{map[item.question.question_type]}</span>
{ item.question.is_necessary==1 ? <span className="mustAnswer fl ml10 mr10 mt6">必答</span>:"" }
{ item.question.question_type == 2 ?
{ item.question.question_type == 2 && item.question.min_choices && item.question.max_choice ?
<span className="color-grey-9">
{
item.question.min_choices == item.question.max_choices ? "可选"+item.question.max_choices+"项" :
@ -127,9 +127,9 @@ class PollDetailTabSecond extends Component{
<span className="color-green">{options.answer_users_count}</span>
<span>
<p className="percentForm fl mr15">
<span className="percentValue" style={{"width":`${parseFloat(options.answer_percent ? options.answer_percent : 0 ).toFixed(2)*100}%`}}></span>
<span className="percentValue" style={{"width":`${(options.answer_percent * 100).toFixed(1)}%`}}></span>
</p>
<font className="color-grey-9">{parseFloat(options.answer_percent ? options.answer_percent : 0 ).toFixed(2)*100} %</font>
<font className="color-grey-9">{(options.answer_percent * 100).toFixed(1)}%</font>
</span>
</ul>
{

@ -315,7 +315,7 @@ class PollInfo extends Component{
></Modals>
<div className="educontent mt10 mb50">
<p className="clearfix mb20">
<WordsBtn style="grey" className="fl" to={current_user.first_category_url}>{courseName}</WordsBtn>
<WordsBtn style="grey" className="fl" to={current_user && current_user.first_category_url}>{courseName}</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span>
<WordsBtn style="grey" className="fl" to={`/courses/${this.props.match.params.coursesId}/polls/${poll && poll.left_banner_id}`}>问卷</WordsBtn>
<span className="color-grey-9 fl ml3 mr3">&gt;</span>

@ -2325,7 +2325,7 @@ class PollNew extends Component {
gotohome=()=>{
const { current_user} = this.props
this.props.history.push(current_user.first_category_url);
this.props.history.push(current_user && current_user.first_category_url);
// let courseId=this.props.match.params.coursesId;

File diff suppressed because it is too large Load Diff

@ -42,7 +42,7 @@ class TPMNav extends Component {
className={`${match.url.indexOf('ranking_list') != -1 ? 'active' : ''} fl`}>排行榜</Link>
{/* target="_blank"*/}
<a
href={`/shixuns/${shixunId}/settings`} className="fr"
href={`/shixuns/${shixunId}/settings`} className="edu-default-btn edu-blueline-btn ml20 fr"
style={{display: this.props.identity >4||this.props.identity===undefined ? "none" : 'block'}}
>配置</a>
</div>

@ -14,7 +14,7 @@ class AccountNav extends Component {
}
render() {
let { basicInfo } = this.props
console.log(this.props);
// console.log(this.props);
const path = window.location.pathname
const isBasic = path.indexOf('profile') != -1 || path == "/account"
const isCertification = path.indexOf('certification') != -1

Loading…
Cancel
Save