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

dev_hs
杨树林 6 years ago
commit c83d82c986

@ -240,7 +240,7 @@ class ApplicationController < ActionController::Base
uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous"))
if !User.current.logged? && Rails.env.development?
User.current = User.find 12
User.current = User.find 1
end

@ -357,20 +357,20 @@ class ExerciseQuestionsController < ApplicationController
#当试卷已发布时(试卷的总状态),当标准答案修改时,如有已提交的学生,需重新计算分数.
if standard_answer_change && @exercise.exercise_status >= Exercise::PUBLISHED
ex_users_committed = @exercise.exercise_users.exercise_user_committed
if ex_users_committed.size > 0
ex_users_committed.each do |ex_user|
update_objective_score = update_single_score(@exercise_question,ex_user.user_id,standard_answer)
if update_objective_score != 0
objective_score = ex_user.objective_score
new_objective_score = objective_score + update_objective_score
total_score = ex_user.score + update_objective_score
total_score = total_score < 0.0 ? 0.0 : total_score
ex_user.update_attributes(objective_score:new_objective_score,score:total_score)
end
end
end
normal_status(0,"试卷更新成功,因标准答案修改,需重新计算学生成绩!")
# ex_users_committed = @exercise.exercise_users.exercise_user_committed
# if ex_users_committed.size > 0
# ex_users_committed.each do |ex_user|
# update_objective_score = update_single_score(@exercise_question,ex_user.user_id,standard_answer)
# if update_objective_score != 0
# objective_score = ex_user.objective_score
# new_objective_score = objective_score + update_objective_score
# total_score = ex_user.score + update_objective_score
# total_score = total_score < 0.0 ? 0.0 : total_score
# ex_user.update_attributes(objective_score:new_objective_score,score:total_score)
# end
# end
# end
normal_status(3,"修改了标准答案\n是否重新计算学生答题的成绩?")
else
normal_status(0,"试卷更新成功!")
end
@ -383,6 +383,31 @@ class ExerciseQuestionsController < ApplicationController
end
end
def update_scores
ActiveRecord::Base.transaction do
begin
standard_answer = params[:standard_answers]
ex_users_committed = @exercise.exercise_users.exercise_user_committed
if ex_users_committed.size > 0
ex_users_committed.each do |ex_user|
update_objective_score = update_single_score(@exercise_question,ex_user.user_id,standard_answer)
if update_objective_score != 0
objective_score = ex_user.objective_score
new_objective_score = objective_score + update_objective_score
total_score = ex_user.score + update_objective_score
total_score = total_score < 0.0 ? 0.0 : total_score
ex_user.update_attributes(objective_score:new_objective_score,score:total_score)
end
end
end
normal_status(0,"学生成绩更新成功")
rescue Exception => e
uid_logger_error(e.message)
tip_exception("答案删除失败!")
end
end
end
# 试卷问题的上下移动
def up_down
ActiveRecord::Base.transaction do

@ -992,13 +992,15 @@ class HomeworkCommonsController < ApplicationController
@total_count = @subjects.size
if reorder != "myshixun_count"
@subjects = @subjects.page(page).per(limit).includes(:shixuns, user: [user_extension: :school])
# @subjects = @subjects.page(page).per(limit).includes(:shixuns, user: [user_extension: :school])
@subjects = @subjects.page(page).per(limit).includes(:shixuns)
else
@subjects = @subjects[offset, limit]
unless @subjects.blank?
subject_ids = @subjects.pluck(:id)
order_ids = subject_ids.size > 0 ? subject_ids.join(',') : -1
@subjects = Subject.where(id: subject_ids).order("field(id,#{order_ids})").includes(:shixuns, user: [user_extension: :school])
# @subjects = Subject.where(id: subject_ids).order("field(id,#{order_ids})").includes(:shixuns, user: [user_extension: :school])
@subjects = Subject.where(id: subject_ids).order("field(id,#{order_ids})").includes(:shixuns)
end
end
end

@ -87,14 +87,6 @@ class SubjectsController < ApplicationController
@courses = @subject.courses if @subject.excellent
@members = @subject.subject_members.includes(:user)
shixuns = @subject.shixuns.published.pluck(:id)
challenge_ids = Challenge.where(shixun_id: shixuns).pluck(:id)
# 实训路径中的所有实训标签
@tags = ChallengeTag.where(challenge_id: challenge_ids).pluck(:name).uniq
# 用户获取的实训标签
# @user_tags = @subject.shixuns.map(&:user_tags_name).flatten.uniq
@user_tags = user_shixun_tags challenge_ids, @user.id
@my_subject_progress = @subject.my_subject_progress
# 访问数变更
@subject.increment!(:visits)
end

@ -461,45 +461,50 @@ module ExercisesHelper
end
elsif q.question_type == 5 #实训题时,主观题这里不评分
q.exercise_shixun_challenges&.each do |exercise_cha|
game = Game.user_games(user.id,exercise_cha.challenge_id)&.first #当前用户的关卡
if game.present?
exercise_cha_score = 0.0
answer_status = 0
# if game.status == 2 && game.final_score >= 0
if game.final_score > 0
exercise_cha_score = game.real_score(exercise_cha.question_score)
# exercise_cha_score = exercise_cha.question_score #每一关卡的得分
answer_status = 1
end
ex_shixun_answer_content = answers_content&.where(exercise_shixun_challenge_id: exercise_cha.id)
code = nil
if exercise_cha.challenge&.path.present?
cha_path = challenge_path(exercise_cha.challenge&.path)
game_challenge = game.game_codes.search_challenge_path(cha_path)&.first
if game_challenge.present?
game_code = game_challenge
code = game_code.try(:new_code)
user_shixun_score = exercise_cha&.exercise_shixun_answers&.where(user_id:user.id,exercise_question_id:q.id)
if user_shixun_score.present?
score5 += user_shixun_score&.first.score
else
game = Game.user_games(user.id,exercise_cha.challenge_id)&.first #当前用户的关卡
if game.present?
exercise_cha_score = 0.0
answer_status = 0
# if game.status == 2 && game.final_score >= 0
if game.final_score > 0
exercise_cha_score = game.real_score(exercise_cha.question_score)
# exercise_cha_score = exercise_cha.question_score #每一关卡的得分
answer_status = 1
end
ex_shixun_answer_content = answers_content&.where(exercise_shixun_challenge_id: exercise_cha.id)
code = nil
if exercise_cha.challenge&.path.present?
cha_path = challenge_path(exercise_cha.challenge&.path)
game_challenge = game.game_codes.search_challenge_path(cha_path)&.first
if game_challenge.present?
game_code = game_challenge
code = game_code.try(:new_code)
else
code = git_fle_content(game.myshixun.repo_path,cha_path)
end
end
if ex_shixun_answer_content.blank? #把关卡的答案存入试卷的实训里
### Todo 实训题的_shixun_details里的代码是不是直接从这里取出就可以了涉及到code的多个版本库的修改
sx_option = {
:exercise_question_id => q.id,
:exercise_shixun_challenge_id => exercise_cha.id,
:user_id => user.id,
:score => exercise_cha_score.round(1),
:answer_text => code,
:status => answer_status
}
ExerciseShixunAnswer.create(sx_option)
else
code = git_fle_content(game.myshixun.repo_path,cha_path)
ex_shixun_answer_content.first.update_attributes(score:exercise_cha_score.round(1),answer_text:code)
end
end
if ex_shixun_answer_content.blank? #把关卡的答案存入试卷的实训里
### Todo 实训题的_shixun_details里的代码是不是直接从这里取出就可以了涉及到code的多个版本库的修改
sx_option = {
:exercise_question_id => q.id,
:exercise_shixun_challenge_id => exercise_cha.id,
:user_id => user.id,
:score => exercise_cha_score.round(1),
:answer_text => code,
:status => answer_status
}
ExerciseShixunAnswer.create(sx_option)
score5 += exercise_cha_score
else
ex_shixun_answer_content.first.update_attributes(score:exercise_cha_score.round(1),answer_text:code)
score5 += 0.0
end
score5 += exercise_cha_score
else
score5 += 0.0
end
end
end

@ -0,0 +1,21 @@
class CreateStudentWorkJob < ApplicationJob
queue_as :default
def perform(homework_id)
homework = HomeworkCommon.find_by(id: homework_id)
course = homework&.course
return if homework.blank? || course.blank?
attrs = %i[homework_common_id user_id created_at updated_at]
same_attrs = {homework_common_id: homework.id}
StudentWork.bulk_insert(*attrs) do |worker|
student_ids = course.students.pluck(:user_id)
student_ids.each do |user_id|
worker.add same_attrs.merge(user_id: user_id)
end
end
end
end

@ -0,0 +1,2 @@
class OldMessageDetail < ApplicationRecord
end

@ -39,9 +39,10 @@ class Subject < ApplicationRecord
courses.pluck(:end_date).max
end
# 挑战过路径的成员数
# 挑战过路径的成员数(金课统计去重后的报名人数)
def member_count
shixuns.pluck(:myshixuns_count).sum
excellent && CourseMember.where(role: 4, course_id: courses.pluck(:id)).pluck(:user_id).uniq.length > shixuns.pluck(:myshixuns_count).sum ?
CourseMember.where(role: 4, course_id: courses.pluck(:id)).pluck(:user_id).uniq.length : shixuns.pluck(:myshixuns_count).sum
end
def all_score

@ -15,7 +15,8 @@ class HomeworksService
homework_detail_manual.save! if homework_detail_manual
HomeworkCommonsShixun.create!(homework_common_id: homework.id, shixun_id: shixun.id)
HomeworksService.new.create_shixun_homework_cha_setting(homework, shixun)
HomeworksService.new.create_works_list(homework, course)
CreateStudentWorkJob.perform_later(homework.id)
# HomeworksService.new.create_works_list(homework, course)
end
homework
end

@ -6,12 +6,12 @@ end
json.subject_list @subjects do |subject|
json.subject_id subject.id
json.subject_name subject.name
json.challenge_tags subject.shixun_tags
# json.challenge_tags subject.shixun_tags
json.shixun_count subject.shixuns.unhidden.size
json.myshixun_count subject.shixuns.pluck(:myshixuns_count).sum
json.creator subject.user&.full_name
json.creator_login subject.user&.login
json.school subject.user&.school_name
# json.creator subject.user&.full_name
# json.creator_login subject.user&.login
# json.school subject.user&.school_name
end
json.subjects_count @total_count

@ -23,26 +23,4 @@ if @subject.excellent
json.course_identity @user.course_identity(course)
json.course_status subject_course_status course
end
end
json.members @members do |member|
json.partial! 'subject_member', locals: { user: member.user }
json.role member.role
end
# 技能标签
json.tags @tags do |tag|
unless tag.blank?
json.tag_name tag
json.status @user_tags.include?(tag)
end
end
# 我的进展
json.progress do
json.my_score @subject.my_subject_score
json.all_score @subject.all_score
json.learned @subject.my_subject_progress
json.time @subject.my_consume_time
end

@ -603,6 +603,7 @@ Rails.application.routes.draw do
post :up_down
post :delete_answer
post :adjust_score
post :update_scores
end
resource :exercise_answers,only:[:create,:destroy]
end

@ -1,19 +1,39 @@
class AddExerciseUserUpdate < ActiveRecord::Migration[5.2]
include ExercisesHelper
def change
# exs = Exercise.all.is_exercise_published.where("publish_time > ?",(Time.now - 2.months)).includes(:exercise_questions,:exercise_users)
# exs.each do |ex|
# ex_users = ex.exercise_users.exercise_user_committed.where("end_at is not null and end_at > ?",(Time.now - 2.months))
# if ex_users.present?
# ex_users.each do |ex_user|
# calculate_score = calculate_student_score(ex,ex_user.user)[:total_score]
# subjective_score = ex_user.subjective_score
# total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score
# total_score = calculate_score + total_score_subjective_score
# ex_user.update_attributes(score:total_score,objective_score:calculate_score)
# puts ex_user.id
# end
# end
# end
end
# include ExercisesHelper
# def change
# #2019,8,22添加
# two_months = Time.now - 2.months
# exs = Exercise.all.is_exercise_published.where("publish_time > ?",two_months).includes(:exercise_questions,:exercise_users)
# exs.each do |ex|
# if ex.exercise_questions.where("created_at < ?",Time.now - 1.month).pluck(:question_type).include?(1) #含有多选题,且是1个月前创建的才更新
# ex_users = ex.exercise_users.exercise_user_committed.where("end_at is not null and end_at > ?",two_months)
# if ex_users.exists?
# ex_users.each do |ex_user|
# calculate_score = calculate_student_score(ex,ex_user.user)[:total_score]
# subjective_score = ex_user.subjective_score
# total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score
# total_score = calculate_score + total_score_subjective_score
# ex_user.update_attributes(score:total_score,objective_score:calculate_score)
# puts ex_user.id
# end
# end
# end
# end
#
# #1936的试卷成绩有问题。
# # #https://www.educoder.net/courses/2935/exercises/1936/users/pizfnr5ts
# ex_special = Exercise.find_by_id(1936)
# ex_special_users = ex_special.exercise_users.exercise_user_committed.where("end_at is not null and end_at > ?",two_months)
# if ex_special.present? && ex_special_users.exists?
# ex_special_users.each do |ex_user|
# calculate_score = calculate_student_score(ex_special,ex_user.user)[:total_score]
# subjective_score = ex_user.subjective_score
# total_score_subjective_score = subjective_score < 0.0 ? 0.0 : subjective_score
# total_score = calculate_score + total_score_subjective_score
# ex_user.update_attributes(score:total_score,objective_score:calculate_score)
# puts ex_user.id
# end
# end
# end
end

@ -1,4 +1,5 @@
class ChangeExericse1936Scores < ActiveRecord::Migration[5.2]
include ExercisesHelper
def change
#1936的试卷成绩有问题。
# #https://www.educoder.net/courses/2935/exercises/1936/users/pizfnr5ts

@ -0,0 +1,13 @@
class ModifyContentsForOldMessageDetails < ActiveRecord::Migration[5.2]
def change
messages = Message.where(subject: "新课导语").where.not(parent_id: 0).where("created_on < '2019-08-23 02:00:00'")
messages.find_each do |m|
m.update_column(:is_md, true)
message_detail = m.message_detail
if message_detail
content = OldMessageDetail.find_by_id(message_detail.id)&.content
message_detail.update_column(:content, content)
end
end
end
end

@ -17,6 +17,7 @@ import {getUploadActionUrl, bytesToSize, uploadNameSizeSeperator, appendFileSize
const confirm = Modal.confirm;
const $ = window.$
const { Option } = Select;
const MAX_TITLE_LENGTH = 60
// https://lanhuapp.com/web/#/item/project/board/detail?pid=a3bcd4b1-99ce-4e43-8ead-5b8b0a410807&project_id=a3bcd4b1-99ce-4e43-8ead-5b8b0a410807&image_id=71072679-b925-4824-aceb-4649535e3652
class BoardsNew extends Component{
constructor(props){
@ -27,7 +28,7 @@ class BoardsNew extends Component{
this.state = {
fileList: [],
boards: [],
title_num: 60
title_num: 0
}
}
addSuccess = () => {
@ -95,7 +96,7 @@ class BoardsNew extends Component{
}
})
this.setState({ fileList: _fileList, board_name: data.board_name, title_num: 60 - parseInt(data.subject.length) })
this.setState({ fileList: _fileList, board_name: data.board_name, title_num: parseInt(data.subject.length) })
}
}
})
@ -233,9 +234,15 @@ class BoardsNew extends Component{
changeTitle=(e)=>{
console.log(e.target.value.length);
this.setState({
title_num: 60 - parseInt(e.target.value.length)
title_num: parseInt(e.target.value.length)
})
}
goBack = () => {
// this.props.history.goBack()
const courseId=this.props.match.params.coursesId;
const boardId = this.props.match.params.boardId
this.props.toListPage(courseId, boardId)
}
render() {
let { addGroup, fileList, course_id, title_num } = this.state;
const { getFieldDecorator } = this.props.form;
@ -309,8 +316,8 @@ class BoardsNew extends Component{
<p className="clearfix mt20 mb20">
<span className="fl font-24 color-grey-3">{this.isEdit ? "编辑" : "新建"}帖子</span>
<a href="javascript:void(0)" className="color-grey-6 fr font-16 mr2"
onClick={() => this.props.history.goBack()}>
{/*返回*/}
onClick={this.goBack}>
返回
</a>
</p>
{/* notRequired */}
@ -339,11 +346,11 @@ class BoardsNew extends Component{
rules: [{
required: true, message: '请输入标题',
}, {
max: 60, message: '最大限制为60个字符',
max: MAX_TITLE_LENGTH, message: `最大限制为${MAX_TITLE_LENGTH}个字符`,
}],
})(
<Input placeholder="请输入帖子标题最大限制60个字符" className="searchViewAfter" maxLength="60"
onInput={this.changeTitle} addonAfter={String(title_num)} />
<Input placeholder={`请输入帖子标题,最大限制${MAX_TITLE_LENGTH}个字符 `}className="searchViewAfter" maxLength={MAX_TITLE_LENGTH}
onInput={this.changeTitle} addonAfter={`${title_num}/${MAX_TITLE_LENGTH}`} />
)}
</Form.Item>

@ -75,15 +75,15 @@ class CommonWorkDetailIndex extends Component{
})
}
goback = () => {
// let workId=this.props.match.params.workId;
let workId=this.props.match.params.workId;
//
// if ( window.location.pathname.indexOf('appraise') == -1) {
// let category_id= this.state.category.category_id;
// this.props.toListPage(this.props.match.params, category_id)
// } else {
// this.props.toWorkListPage(this.props.match.params, workId)
// }
this.props.history.goBack()
if ( window.location.pathname.indexOf('appraise') == -1) {
let category_id= this.state.category.category_id;
this.props.toListPage(this.props.match.params, category_id)
} else {
this.props.toWorkListPage(this.props.match.params, workId)
}
// this.props.history.goBack()
}
// 补交附件

@ -9,6 +9,7 @@ import CBreadcrumb from '../common/CBreadcrumb'
const confirm = Modal.confirm;
const $ = window.$
const MAX_TITLE_LENGTH = 60;
class NewWork extends Component{
constructor(props){
super(props);
@ -17,7 +18,7 @@ class NewWork extends Component{
this.state={
title_value:"",
title_num:60,
title_num: 0,
contentFileList: [],
answerFileList: [],
workLoaded: false,
@ -91,7 +92,7 @@ class NewWork extends Component{
// course_id: data.course_id,
// course_name: data.course_name,
// category: data.category,
title_num: 60 - parseInt(data.name.length),
title_num: parseInt(data.name.length),
workLoaded: true,
init_min_num: data.min_num,
init_max_num: data.max_num,
@ -125,7 +126,7 @@ class NewWork extends Component{
changeTitle=(e)=>{
console.log(e.target.value.length);
this.setState({
title_num: 60 - parseInt(e.target.value.length)
title_num: parseInt(e.target.value.length)
})
}
handleSubmit = () => {
@ -398,7 +399,7 @@ class NewWork extends Component{
required: true, message: '请输入标题'
}],
})(
<Input placeholder="请输入作业标题最大限制60个字符" onInput={this.changeTitle} className="searchView searchViewAfter" style={{"width":"100%"}} maxLength="60" addonAfter={String(title_num)}/>
<Input placeholder="请输入作业标题最大限制60个字符" onInput={this.changeTitle} className="searchView searchViewAfter" style={{"width":"100%"}} maxLength={MAX_TITLE_LENGTH} addonAfter={`${String(title_num)}/${MAX_TITLE_LENGTH}`}/>
)}
</Form.Item>
<style>{`

@ -652,10 +652,10 @@ class CoursesBanner extends Component {
`}
</style>
<Breadcrumb separator="|" className={"mt5"}>
<Breadcrumb.Item onClick={()=>this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/teachers")}>
<Breadcrumb.Item onClick={()=>this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/teachers")} className={"pointer"}>
<span className="color-grey-c font-16"><span className={"mr10"}>教师</span> <span className={"mr10"}>{coursedata.teacher_count}</span></span>
</Breadcrumb.Item>
<Breadcrumb.Item onClick={()=>this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/students")}>
<Breadcrumb.Item onClick={()=>this.setHistoryFun("/courses/"+this.props.match.params.coursesId+"/students")} className={"pointer"}>
<span className="color-grey-c font-16"><span className={"mr10 ml10"}>学生</span> <span className={"mr10"}>{coursedata.student_count}</span></span>
</Breadcrumb.Item>
<Breadcrumb.Item>{coursedata.credit===null?"":

@ -34,7 +34,7 @@ const { TextArea } = Input;
const confirm = Modal.confirm;
const $ = window.$
const { Option } = Select;
const TITLE_MAX_LENGTH = 60;
class ExerciceNew extends Component{
constructor(props){
super(props);
@ -418,7 +418,8 @@ class ExerciceNew extends Component{
<p className="clearfix mt20 mb20">
<span className="fl font-24 color-grey-3">{this.isEdit ? "编辑" : "新建"}试卷</span>
<a href="javascript:void(0)" className="color-grey-6 fr font-16 mr2"
onClick={() => this.props.history.length == 1 ? this.props.history.push(`/courses/${courseId}/exercises/${left_banner_id}`): this.props.history.goBack()}>
// () => this.props.history.length == 1 ? : this.props.history.goBack()
onClick={() => this.props.history.push(`/courses/${courseId}/exercises/${left_banner_id}`)}>
返回
</a>
</p>
@ -449,7 +450,9 @@ class ExerciceNew extends Component{
max: 20, message: '最大限制为20个字符',
}],
})( */}
<Input placeholder="请输入试卷标题最大限制60个字符" maxLength="60" className="input-100-40 mt5" value={exercise_name} onChange={this.exercise_name_change}/>
<Input placeholder={`请输入试卷标题,最大限制${TITLE_MAX_LENGTH}个字符`} maxLength={TITLE_MAX_LENGTH} className="input-100-40 mt5" value={exercise_name}
onChange={this.exercise_name_change} addonAfter={`${exercise_name ? exercise_name.length : 0}/${TITLE_MAX_LENGTH}`}
/>
{/* )} */}
</Form.Item>

@ -316,7 +316,7 @@ class shixunAnswer extends Component{
</span>
<span className="fl mt3 font-16">
<span className="font-bd mr15">{item[0].position}</span>
<Link to={"/shixuns/"+item[0].game_identifier+"/challenges"}>
<Link to={ "/tasks/" + item[0].game_identifier }>
<span className={"font-16"}>{item[0].name}</span>
</Link>
</span>

@ -393,7 +393,7 @@ class PathDetailIndex extends Component{
<div className="color-grey-6 clearfix">
<div id="shixuns_propaedeutics" className="new_li fl" style={{"padding":" 0px","textAlign": "justify;"}}>
{detailInfoList === undefined ? "" :detailInfoList.description===null?"":
<div className={"markdown-body"} dangerouslySetInnerHTML={{__html: markdownToHTML(detailInfoList.description).replace(/▁/g,"▁▁▁")}}></div>
<div className={"markdown-body font-14"} dangerouslySetInnerHTML={{__html: markdownToHTML(detailInfoList.description).replace(/▁/g,"▁▁▁")}}></div>
}
</div>
</div>
@ -420,8 +420,8 @@ class PathDetailIndex extends Component{
</p>
<div id="subject_learning_notes" className="color-grey-6 new_li markdown-body editormd-html-preview justify">
{detailInfoList === undefined ? "" :detailInfoList.learning_notes===null?"":
<textarea>{detailInfoList.learning_notes}</textarea>
}
<div className={"markdown-body font-14"} dangerouslySetInnerHTML={{__html: markdownToHTML(detailInfoList.learning_notes).replace(/▁/g,"▁▁▁")}}></div>
}
</div>
</div>
{tags === undefined ? "" :tags === null ? "":

@ -139,8 +139,8 @@ class ShixunPathSearch extends Component{
<div className="mt20 educontent mb20 clearfix">
{/*<a href="javascript:void(0)" className={ order == "publish_time" ? "fl mr20 font-16 bestChoose active" : "fl mr20 font-16 bestChoose"} onClick={ () => this.changeStatus("publish_time")}>全部</a>*/}
{/*<a href="javascript:void(0)" className={ order == "mine" ? "fl mr20 font-16 bestChoose active" : "fl mr20 font-16 bestChoose"} onClick={ () => this.changeStatus("mine")}>我的</a>*/}
<span className={ order == "updated_at" ? "fl mr20 font-16 bestChoose active" : "fl mr20 font-16 bestChoose"} onClick={ () => this.changeStatus("updated_at")}>最新</span>
<span className={ order == "myshixun_count" ? "fl mr20 font-16 bestChoose active" : "fl mr20 font-16 bestChoose"} onClick={ () => this.changeStatus("myshixun_count")}>最热</span>
<span className={ order == "updated_at" ? "fl mr20 font-16 bestChoose active pointer" : "fl mr20 font-16 bestChoose pointer"} onClick={ () => this.changeStatus("updated_at")}>最新</span>
<span className={ order == "myshixun_count" ? "fl mr20 font-16 bestChoose active pointer" : "fl mr20 font-16 bestChoose pointer"} onClick={ () => this.changeStatus("myshixun_count")}>最热</span>
{/*<div className="fr mr5 search-new">*/}
{/*/!* <Search*/}
{/*placeholder="请输入路径名称进行搜索"*/}

@ -3743,4 +3743,12 @@ a.singlepublishtwo{
.square-main p{
margin-bottom: 0em;
}
.bestChoose{
cursor: pointer;
}
.pointer{
cursor: pointer;
}

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe CreateStudentWorkJob, type: :job do
pending "add some examples to (or delete) #{__FILE__}"
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe OldMessageDetail, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end
Loading…
Cancel
Save