diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb index 9b5f0b869..fdaa30305 100644 --- a/app/controllers/challenges_controller.rb +++ b/app/controllers/challenges_controller.rb @@ -230,11 +230,16 @@ class ChallengesController < ApplicationController def crud_answer raise '参考答案不能为空' if params[:challenge_answer].empty? raise '占比之和必须为100%' if params[:challenge_answer].map{|a| a[:score]}.sum != 100 - @challenge.challenge_answers.destroy_all if @challenge.challenge_answers - params[:challenge_answer].each_with_index do |answer, index| - ChallengeAnswer.create(name: answer[:name], contents: answer[:contents], - level: index+1, score: answer[:score], challenge_id: @challenge.id) + ActiveRecord::Base.transaction do + @challenge.challenge_answers.destroy_all if @challenge.challenge_answers + params[:challenge_answer].each_with_index do |answer, index| + # 内容为空不保存 + next if answer[:contents].blank? + ChallengeAnswer.create(name: answer[:name], contents: answer[:contents], + level: index+1, score: answer[:score], challenge_id: @challenge.id) + end end + end # 查看参考答案接口 diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 6042fbc9a..973e73dac 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -315,7 +315,7 @@ class CoursesController < ApplicationController # @users = User.where.not(id: user_ids_of_course_members) @users = User.where(status: User::STATUS_ACTIVE) - @users = @users.where("concat(users.firstname, users.lastname) like '%#{name}%'") if name.present? + @users = @users.where("concat(users.lastname, users.firstname) like '%#{name}%'") if name.present? # REDO:Extension @users = @users.joins(user_extension: :school).where("schools.name like '%#{school_name}%'") if school_name.present? diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 8fab8dad3..cfc1c4ba5 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -1597,6 +1597,7 @@ class HomeworkCommonsController < ApplicationController att = attachment.copy att.author_id = homework_bank.user_id att.copy_from = attachment.id + att.attachtype = attachment.attachtype || 1 homework_bank.attachments << att end homework_bank diff --git a/app/controllers/question_banks_controller.rb b/app/controllers/question_banks_controller.rb index 58fa7a8d4..098c07d1b 100644 --- a/app/controllers/question_banks_controller.rb +++ b/app/controllers/question_banks_controller.rb @@ -154,7 +154,8 @@ class QuestionBanksController < ApplicationController att.container_id = nil att.container_type = nil att.author_id = homework.user_id - att.attachtype = 1 + att.attachtype = attachment.attachtype || 1 + # att.attachtype = 1 att.copy_from = attachment.id att.save! new_homework.attachments << att diff --git a/app/models/game.rb b/app/models/game.rb index ae056a702..d81b794a5 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -31,7 +31,7 @@ class Game < ApplicationRecord # 根据得分比例来算实际得分(试卷、实训作业) def real_score score - (final_score.to_f / challenge.all_score) * score + ((final_score < 0 ? 0 : final_score).to_f / challenge.all_score) * score end # 判断实训是否全部通关 diff --git a/app/views/courses/search_teacher_candidate.json.jbuilder b/app/views/courses/search_teacher_candidate.json.jbuilder index 33bed4100..49109b729 100644 --- a/app/views/courses/search_teacher_candidate.json.jbuilder +++ b/app/views/courses/search_teacher_candidate.json.jbuilder @@ -1,7 +1,7 @@ json.candidates do json.array! @users do |user| json.id user.id - json.name user.firstname + user.lastname + json.name user.real_name json.nickname user.nickname json.school_name user.user_extension.school.try(:name) json.school_id user.user_extension.school.try(:id) diff --git a/app/views/exercise_questions/_exercise_questions.json.jbuilder b/app/views/exercise_questions/_exercise_questions.json.jbuilder index b9565535e..51c30ad92 100644 --- a/app/views/exercise_questions/_exercise_questions.json.jbuilder +++ b/app/views/exercise_questions/_exercise_questions.json.jbuilder @@ -21,7 +21,8 @@ if question.question_type <= 2 #当为选择题或判断题时,只显示选 user_answer_b = user_answer.include?(a.id) json.c_position (index+1) if ex_choice_random_boolean #当选项随机时,选项位置以此为准,否则不出现 json.choice_id a.id - json.choice_text (edit_type.present? || question.question_type == 2) ? a.choice_text : "#{(index+65).chr}.#{a.choice_text}" + # json.choice_text (edit_type.present? || question.question_type == 2) ? a.choice_text : "#{(index+65).chr}.#{a.choice_text}" + json.choice_text a.choice_text json.choice_position a.choice_position if exercise_type == 1 || exercise_type == 4 #1为教师编辑/预览 试卷或问题,2为空白试卷,即标准答案和用户答案都不显示,3为用户开始答题的显示,4为老师评阅试卷或学生在截止后查看试卷 json.standard_boolean standard_answer_b diff --git a/app/views/exercises/exercise_result.json.jbuilder b/app/views/exercises/exercise_result.json.jbuilder index 2c4b3ded7..1ceb8209d 100644 --- a/app/views/exercises/exercise_result.json.jbuilder +++ b/app/views/exercises/exercise_result.json.jbuilder @@ -35,15 +35,16 @@ json.commit_results do if q[:type] != Exercise::PRACTICAL json.ques_details do json.array! q[:ques_details].each_with_index.to_a do |d,index| - if q[:type] <= Exercise::MULTIPLE - ques_index = (index+65).chr - elsif q[:type] == Exercise::JUDGMENT - ques_index = (index+1).to_s - else - ques_index = nil - end + # if q[:type] <= Exercise::MULTIPLE + # ques_index = (index+65).chr + # elsif q[:type] == Exercise::JUDGMENT + # ques_index = (index+1).to_s + # else + # ques_index = nil + # end json.choice_position d[:choice_position] - json.choice_text ques_index.present? ? "#{ques_index}.#{d[:choice_text]}" : d[:choice_text] + # json.choice_text ques_index.present? ? "#{ques_index}.#{d[:choice_text]}" : d[:choice_text] + json.choice_text d[:choice_text] json.choice_users_count d[:choice_users_count] json.choice_percent d[:choice_percent] json.choice_right_boolean d[:right_answer] diff --git a/db/migrate/20190723152256_delete_contents_is_null_for_challenge_answers.rb b/db/migrate/20190723152256_delete_contents_is_null_for_challenge_answers.rb new file mode 100644 index 000000000..a85152894 --- /dev/null +++ b/db/migrate/20190723152256_delete_contents_is_null_for_challenge_answers.rb @@ -0,0 +1,6 @@ +class DeleteContentsIsNullForChallengeAnswers < ActiveRecord::Migration[5.2] + def change + contents = ChallengeAnswer.where("contents = ''") + contents.delete_all + end +end diff --git a/public/images/educoder/nodata.png b/public/images/educoder/nodata.png index 15a9e522f..ad4c76b97 100644 Binary files a/public/images/educoder/nodata.png and b/public/images/educoder/nodata.png differ diff --git a/public/react/src/AppConfig.js b/public/react/src/AppConfig.js index 5721c88a9..003ef5a9b 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -2,7 +2,7 @@ import React from "react"; import axios from 'axios'; import { requestProxy } from "./indexEduplus2RequestProxy"; -import { broadcastChannelOnmessage ,SetAppModel} from 'educoder'; +import { broadcastChannelOnmessage ,SetAppModel, isDev, queryString} from 'educoder'; import { notification } from 'antd'; import './index.css' broadcastChannelOnmessage('refreshPage', () => { @@ -18,10 +18,19 @@ function locationurl(list){ } // TODO 开发期多个身份切换 -const debugType ="" -// window.location.search.indexOf('debug=t') != -1 ? 'teacher' : -// window.location.search.indexOf('debug=s') != -1 ? 'student' : 'admin' -// window._debugType = debugType; +let debugType = "" +if (isDev) { + const _search = window.location.search; + let parsed = {}; + if (_search) { + parsed = queryString.parse(_search); + } + debugType = window.location.search.indexOf('debug=t') != -1 ? 'teacher' : + window.location.search.indexOf('debug=s') != -1 ? 'student' : + window.location.search.indexOf('debug=a') != -1 ? 'admin' : parsed.debug || '' +} + +window._debugType = debugType; export function initAxiosInterceptors(props) { // TODO 避免重复的请求 https://github.com/axios/axios#cancellation @@ -130,6 +139,9 @@ export function initAxiosInterceptors(props) { throw new axios.Cancel('Operation canceled by the user.'); } + // if(response.data.status === 401){ + // console.log("401401401") + // } if (response.data.status === 403) { // props.history.replace('/403') // 这里会分2个情况,1、刚进入页面发请求返回的403;2、进入页面后,其他用户操作触发请求返回的403; @@ -145,16 +157,20 @@ export function initAxiosInterceptors(props) { locationurl('/500'); } + + // if (response.data.status === 402) { // console.log(response.data.status); // console.log(response.data); // // locationurl(402); // } - - if (response.data.status === 401) { - return config; - } + // + // if (response.data.status === 401) { + // console.log("161"); + // console.log(config); + // return config; + // } // if (response.data.status === 407) { // 在app js 中解决 Trialapplication // // diff --git a/public/react/src/modules/comment/Comments.js b/public/react/src/modules/comment/Comments.js index 1b2e2b45a..ce5cc8017 100644 --- a/public/react/src/modules/comment/Comments.js +++ b/public/react/src/modules/comment/Comments.js @@ -574,7 +574,7 @@ class Comments extends Component {
暂时还没有评论~
+暂时还没有相关数据哦!
暂无数据哦~
暂时还没有相关数据哦!
diff --git a/public/react/src/modules/courses/busyWork/CommonWorkSetting.js b/public/react/src/modules/courses/busyWork/CommonWorkSetting.js index 8d752707c..17a944d41 100644 --- a/public/react/src/modules/courses/busyWork/CommonWorkSetting.js +++ b/public/react/src/modules/courses/busyWork/CommonWorkSetting.js @@ -715,18 +715,18 @@ class CommonWorkSetting extends Component{ course_id , unified_setting: unified_setting, // 统一设置 group_settings: group_settings_param, - publish_time: new Date(temp_publish_time), // 发布 - end_time: new Date(temp_end_time), // 截止 + publish_time: temp_end_time ? new Date(temp_publish_time) : temp_end_time, // 发布 + end_time: temp_end_time ? new Date(temp_end_time) : temp_end_time, // 截止 late_penalty: late_penalty, // 迟交扣分 allow_late: allow_late, // 是否允许补交 - late_time: new Date(late_time), // 补交截止时间 + late_time: late_time ? new Date(late_time) : late_time, // 补交截止时间 anonymous_comment: anonymous_comment, // true: 启用匿评 false:未启用匿评 - evaluation_start: new Date(evaluation_start), //匿评开始时间 + evaluation_start: evaluation_start ? new Date(evaluation_start) : evaluation_start, //匿评开始时间 evaluation_end: evaluation_end, evaluation_num: evaluation_num, // 匿评数 absence_penalty: absence_penalty, // 匿评扣分 anonymous_appeal: anonymous_appeal, // true: 启用匿评申诉, false:未启用 - appeal_time: new Date(appeal_time), // 申诉结束时间 + appeal_time: appeal_time ? new Date(appeal_time) : appeal_time, // 申诉结束时间 appeal_penalty: appeal_penalty, // 违规匿评扣分 ta_mode: ta_mode, // 1:普通模式 0:复审模式 final_mode: final_mode, // true: 单项评分优先, false: 多项评分配比 diff --git a/public/react/src/modules/courses/coursesHome/CoursesHome.js b/public/react/src/modules/courses/coursesHome/CoursesHome.js index 3f4b4ad12..962413e54 100644 --- a/public/react/src/modules/courses/coursesHome/CoursesHome.js +++ b/public/react/src/modules/courses/coursesHome/CoursesHome.js @@ -145,7 +145,7 @@ class CoursesHome extends Component{ {coursesHomelist===undefined?"":coursesHomelist.courses.length===0?暂无数据哦~
+暂时还没有相关数据哦!
暂无数据哦~
+暂时还没有相关数据哦!
暂无数据哦~
暂时还没有相关数据哦!
暂无数据哦~
+暂时还没有相关数据哦!